aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW
diff options
context:
space:
mode:
authorAvi Levkovich <avi@twine-s.com>2018-03-19 14:34:14 +0200
committerAvi Levkovich <avi@twine-s.com>2018-03-19 14:34:14 +0200
commitace16e89b777d94d9a655fef27aa58c763f5b378 (patch)
treeb67890385896cc1c0ff3ff020fbaceac93d7bcde /Software/Embedded_SW
parent47d8c850e03797475c3bcd99bdd3d1a0e115413b (diff)
downloadTango-ace16e89b777d94d9a655fef27aa58c763f5b378.tar.gz
Tango-ace16e89b777d94d9a655fef27aa58c763f5b378.zip
Commit Avi Embedded_SW
Diffstat (limited to 'Software/Embedded_SW')
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Common/ErrorCode.pb-c.c39
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Common/ErrorCode.pb-c.h47
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Common/KeepAliveRequest.pb-c.c72
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Common/KeepAliveRequest.pb-c.h70
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Common/KeepAliveResponse.pb-c.c72
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Common/KeepAliveResponse.pb-c.h70
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Common/MessageContainer.pb-c.c170
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Common/MessageContainer.pb-c.h85
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Common/MessageType.pb-c.c237
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Common/MessageType.pb-c.h143
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Debugging/DebugLogCategory.pb-c.c43
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Debugging/DebugLogCategory.pb-c.h46
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Debugging/DebugLogRequest.pb-c.c72
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Debugging/DebugLogRequest.pb-c.h70
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Debugging/DebugLogResponse.pb-c.c157
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Debugging/DebugLogResponse.pb-c.h81
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareConfiguration.pb-c.c144
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareConfiguration.pb-c.h85
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareDancer.pb-c.c144
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareDancer.pb-c.h81
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareDancerType.pb-c.c39
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareDancerType.pb-c.h44
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareDispenser.pb-c.c274
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareDispenser.pb-c.h101
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareDispenserType.pb-c.c35
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareDispenserType.pb-c.h42
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareMotor.pb-c.c274
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareMotor.pb-c.h101
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareMotorType.pb-c.c41
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareMotorType.pb-c.h45
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwarePidControl.pb-c.c274
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwarePidControl.pb-c.h101
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwarePidControlType.pb-c.c61
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwarePidControlType.pb-c.h55
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareWinder.pb-c.c105
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareWinder.pb-c.h75
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareWinderType.pb-c.c35
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareWinderType.pb-c.h42
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Hardware/UploadHardwareConfigurationRequest.pb-c.c92
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Hardware/UploadHardwareConfigurationRequest.pb-c.h72
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Hardware/UploadHardwareConfigurationResponse.pb-c.c72
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Hardware/UploadHardwareConfigurationResponse.pb-c.h70
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Printing/AbortJobRequest.pb-c.c72
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Printing/AbortJobRequest.pb-c.h70
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Printing/AbortJobResponse.pb-c.c72
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Printing/AbortJobResponse.pb-c.h70
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Printing/DispenserLiquidType.pb-c.c47
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Printing/DispenserLiquidType.pb-c.h48
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Printing/DispenserStepDivision.pb-c.c51
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Printing/DispenserStepDivision.pb-c.h50
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobBrushStop.pb-c.c131
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobBrushStop.pb-c.h79
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobDispenser.pb-c.c196
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobDispenser.pb-c.h90
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobRequest.pb-c.c92
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobRequest.pb-c.h72
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobResponse.pb-c.c105
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobResponse.pb-c.h74
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobSegment.pb-c.c118
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobSegment.pb-c.h76
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobSpool.pb-c.c170
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobSpool.pb-c.h85
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobSpoolType.pb-c.c35
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobSpoolType.pb-c.h42
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobStatus.pb-c.c118
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobStatus.pb-c.h75
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobTicket.pb-c.c183
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobTicket.pb-c.h87
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobWindingMethod.pb-c.c37
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobWindingMethod.pb-c.h43
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Printing/ProcessParameters.pb-c.c287
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Printing/ProcessParameters.pb-c.h102
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Printing/UploadProcessParametersRequest.pb-c.c92
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Printing/UploadProcessParametersRequest.pb-c.h72
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Printing/UploadProcessParametersResponse.pb-c.c72
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Printing/UploadProcessParametersResponse.pb-c.h70
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/CalculateRequest.pb-c.c105
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/CalculateRequest.pb-c.h74
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/CalculateResponse.pb-c.c92
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/CalculateResponse.pb-c.h72
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/ProgressRequest.pb-c.c105
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/ProgressRequest.pb-c.h74
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/ProgressResponse.pb-c.c92
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/ProgressResponse.pb-c.h72
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubCartridgeReadRequest.pb-c.c92
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubCartridgeReadRequest.pb-c.h75
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubCartridgeReadResponse.pb-c.c170
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubCartridgeReadResponse.pb-c.h89
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubCartridgeWriteRequest.pb-c.c144
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubCartridgeWriteRequest.pb-c.h88
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubCartridgeWriteResponse.pb-c.c118
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubCartridgeWriteResponse.pb-c.h81
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubDispenserRequest.pb-c.c144
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubDispenserRequest.pb-c.h92
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubDispenserResponse.pb-c.c144
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubDispenserResponse.pb-c.h93
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubExtFlashReadRequest.pb-c.c92
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubExtFlashReadRequest.pb-c.h75
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubExtFlashReadResponse.pb-c.c170
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubExtFlashReadResponse.pb-c.h99
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubExtFlashWriteRequest.pb-c.c144
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubExtFlashWriteRequest.pb-c.h95
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubExtFlashWriteResponse.pb-c.c105
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubExtFlashWriteResponse.pb-c.h79
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubF3Gpo01WriteRequest.pb-c.c235
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubF3Gpo01WriteRequest.pb-c.h100
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubF3Gpo01WriteResponse.pb-c.c105
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubF3Gpo01WriteResponse.pb-c.h79
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubFPGAReadBackRegRequest.pb-c.c105
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubFPGAReadBackRegRequest.pb-c.h80
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubFPGAReadBackRegResponse.pb-c.c132
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubFPGAReadBackRegResponse.pb-c.h89
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubFPGAReadVersionRequest.pb-c.c92
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubFPGAReadVersionRequest.pb-c.h75
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubFPGAReadVersionResponse.pb-c.c170
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubFPGAReadVersionResponse.pb-c.h92
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOInputSetupRequest.pb-c.c131
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOInputSetupRequest.pb-c.h89
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOInputSetupResponse.pb-c.c131
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOInputSetupResponse.pb-c.h88
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOReadBitRequest.pb-c.c131
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOReadBitRequest.pb-c.h89
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOReadBitResponse.pb-c.c144
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOReadBitResponse.pb-c.h90
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOReadByteRequest.pb-c.c92
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOReadByteRequest.pb-c.h74
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOReadByteResponse.pb-c.c131
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOReadByteResponse.pb-c.h85
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOWriteBitRequest.pb-c.c118
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOWriteBitRequest.pb-c.h81
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOWriteBitResponse.pb-c.c131
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOWriteBitResponse.pb-c.h88
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOWriteByteRequest.pb-c.c106
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOWriteByteRequest.pb-c.h76
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOWriteByteResponse.pb-c.c118
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOWriteByteResponse.pb-c.h83
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubHWVersionRequest.pb-c.c72
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubHWVersionRequest.pb-c.h70
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubHWVersionResponse.pb-c.c131
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubHWVersionResponse.pb-c.h83
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubHeaterRequest.pb-c.c118
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubHeaterRequest.pb-c.h82
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubHeaterResponse.pb-c.c131
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubHeaterResponse.pb-c.h86
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubL6470DriverRequest.pb-c.c339
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubL6470DriverRequest.pb-c.h110
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubL6470DriverResponse.pb-c.c274
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubL6470DriverResponse.pb-c.h105
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorEncoderRequest.pb-c.c131
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorEncoderRequest.pb-c.h87
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorEncoderResponse.pb-c.c157
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorEncoderResponse.pb-c.h93
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorInitRequest.pb-c.c196
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorInitRequest.pb-c.h91
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorInitResponse.pb-c.c105
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorInitResponse.pb-c.h74
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorMovRequest.pb-c.c118
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorMovRequest.pb-c.h76
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorMovResponse.pb-c.c170
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorMovResponse.pb-c.h90
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorPositionRequest.pb-c.c92
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorPositionRequest.pb-c.h72
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorPositionResponse.pb-c.c105
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorPositionResponse.pb-c.h74
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorRunRequest.pb-c.c118
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorRunRequest.pb-c.h76
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorRunResponse.pb-c.c183
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorRunResponse.pb-c.h92
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorSpeedRequest.pb-c.c92
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorSpeedRequest.pb-c.h72
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorSpeedResponse.pb-c.c105
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorSpeedResponse.pb-c.h74
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorStatusRequest.pb-c.c105
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorStatusRequest.pb-c.h74
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorStatusResponse.pb-c.c287
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorStatusResponse.pb-c.h102
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorStopRequest.pb-c.c105
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorStopRequest.pb-c.h77
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorStopResponse.pb-c.c131
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorStopResponse.pb-c.h84
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubOptLimitSwitchRequest.pb-c.c105
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubOptLimitSwitchRequest.pb-c.h80
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubOptLimitSwitchResponse.pb-c.c131
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubOptLimitSwitchResponse.pb-c.h88
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubSteperMotorRequest.pb-c.c144
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubSteperMotorRequest.pb-c.h95
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubSteperMotorResponse.pb-c.c131
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubSteperMotorResponse.pb-c.h88
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubValveRequest.pb-c.c118
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubValveRequest.pb-c.h85
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubValveResponse.pb-c.c105
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubValveResponse.pb-c.h79
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/Danser_SSI/SSI_Comm.c176
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/Danser_SSI/SSI_Comm.h4
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c101
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.h9
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_Comm.h886
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c281
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/FPGA/Moters_Driver/L6470.c706
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/FPGA/Moters_Driver/L6470.h341
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/SPI/SPI_Comm.c1036
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/SPI/SPI_Comm.h18
-rw-r--r--Software/Embedded_SW/Embedded/Main.c24
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Container.c39
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/DataDef.h57
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_FPGAReadBackReg.c69
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_FPGAReadBackReg.h11
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_FPGAReadVersion.c81
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_FPGAReadVersion.h6
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_HW_Version.c95
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_HW_Version.h6
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_L6470.c133
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_L6470.h3
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Motor.c453
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Motor.h7
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/temperature_sensor.c264
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/temperature_sensor.h1
217 files changed, 24523 insertions, 8 deletions
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Common/ErrorCode.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Common/ErrorCode.pb-c.c
new file mode 100644
index 000000000..d5690d60f
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Common/ErrorCode.pb-c.c
@@ -0,0 +1,39 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: ErrorCode.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "ErrorCode.pb-c.h"
+static const ProtobufCEnumValue error_code__enum_values_by_number[3] =
+{
+ { "NONE", "ERROR_CODE__NONE", 0 },
+ { "BAD_CRC", "ERROR_CODE__BAD_CRC", 1 },
+ { "INVALID_DIGITAL_PIN_NUMBER", "ERROR_CODE__INVALID_DIGITAL_PIN_NUMBER", 2 },
+};
+static const ProtobufCIntRange error_code__value_ranges[] = {
+{0, 0},{0, 3}
+};
+static const ProtobufCEnumValueIndex error_code__enum_values_by_name[3] =
+{
+ { "BAD_CRC", 1 },
+ { "INVALID_DIGITAL_PIN_NUMBER", 2 },
+ { "NONE", 0 },
+};
+const ProtobufCEnumDescriptor error_code__descriptor =
+{
+ PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
+ "ErrorCode",
+ "ErrorCode",
+ "ErrorCode",
+ "",
+ 3,
+ error_code__enum_values_by_number,
+ 3,
+ error_code__enum_values_by_name,
+ 1,
+ error_code__value_ranges,
+ NULL,NULL,NULL,NULL /* reserved[1234] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Common/ErrorCode.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Common/ErrorCode.pb-c.h
new file mode 100644
index 000000000..feb3bf249
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Common/ErrorCode.pb-c.h
@@ -0,0 +1,47 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: ErrorCode.proto */
+
+#ifndef PROTOBUF_C_ErrorCode_2eproto__INCLUDED
+#define PROTOBUF_C_ErrorCode_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+
+
+/* --- enums --- */
+
+typedef enum _ErrorCode {
+ ERROR_CODE__NONE = 0,
+ ERROR_CODE__BAD_CRC = 1,
+ /*
+ *Can be returned by SetDigitalOutResponse.
+ */
+ ERROR_CODE__INVALID_DIGITAL_PIN_NUMBER = 2
+ PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(ERROR_CODE)
+} ErrorCode;
+
+/* --- messages --- */
+
+/* --- per-message closures --- */
+
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCEnumDescriptor error_code__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_ErrorCode_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Common/KeepAliveRequest.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Common/KeepAliveRequest.pb-c.c
new file mode 100644
index 000000000..70fca2425
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Common/KeepAliveRequest.pb-c.c
@@ -0,0 +1,72 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: KeepAliveRequest.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "KeepAliveRequest.pb-c.h"
+void keep_alive_request__init
+ (KeepAliveRequest *message)
+{
+ static const KeepAliveRequest init_value = KEEP_ALIVE_REQUEST__INIT;
+ *message = init_value;
+}
+size_t keep_alive_request__get_packed_size
+ (const KeepAliveRequest *message)
+{
+ assert(message->base.descriptor == &keep_alive_request__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t keep_alive_request__pack
+ (const KeepAliveRequest *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &keep_alive_request__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t keep_alive_request__pack_to_buffer
+ (const KeepAliveRequest *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &keep_alive_request__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+KeepAliveRequest *
+ keep_alive_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (KeepAliveRequest *)
+ protobuf_c_message_unpack (&keep_alive_request__descriptor,
+ allocator, len, data);
+}
+void keep_alive_request__free_unpacked
+ (KeepAliveRequest *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &keep_alive_request__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+#define keep_alive_request__field_descriptors NULL
+#define keep_alive_request__field_indices_by_name NULL
+#define keep_alive_request__number_ranges NULL
+const ProtobufCMessageDescriptor keep_alive_request__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "KeepAliveRequest",
+ "KeepAliveRequest",
+ "KeepAliveRequest",
+ "",
+ sizeof(KeepAliveRequest),
+ 0,
+ keep_alive_request__field_descriptors,
+ keep_alive_request__field_indices_by_name,
+ 0, keep_alive_request__number_ranges,
+ (ProtobufCMessageInit) keep_alive_request__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Common/KeepAliveRequest.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Common/KeepAliveRequest.pb-c.h
new file mode 100644
index 000000000..379aa6caa
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Common/KeepAliveRequest.pb-c.h
@@ -0,0 +1,70 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: KeepAliveRequest.proto */
+
+#ifndef PROTOBUF_C_KeepAliveRequest_2eproto__INCLUDED
+#define PROTOBUF_C_KeepAliveRequest_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _KeepAliveRequest KeepAliveRequest;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _KeepAliveRequest
+{
+ ProtobufCMessage base;
+};
+#define KEEP_ALIVE_REQUEST__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&keep_alive_request__descriptor) \
+ }
+
+
+/* KeepAliveRequest methods */
+void keep_alive_request__init
+ (KeepAliveRequest *message);
+size_t keep_alive_request__get_packed_size
+ (const KeepAliveRequest *message);
+size_t keep_alive_request__pack
+ (const KeepAliveRequest *message,
+ uint8_t *out);
+size_t keep_alive_request__pack_to_buffer
+ (const KeepAliveRequest *message,
+ ProtobufCBuffer *buffer);
+KeepAliveRequest *
+ keep_alive_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void keep_alive_request__free_unpacked
+ (KeepAliveRequest *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*KeepAliveRequest_Closure)
+ (const KeepAliveRequest *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor keep_alive_request__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_KeepAliveRequest_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Common/KeepAliveResponse.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Common/KeepAliveResponse.pb-c.c
new file mode 100644
index 000000000..9bae1f119
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Common/KeepAliveResponse.pb-c.c
@@ -0,0 +1,72 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: KeepAliveResponse.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "KeepAliveResponse.pb-c.h"
+void keep_alive_response__init
+ (KeepAliveResponse *message)
+{
+ static const KeepAliveResponse init_value = KEEP_ALIVE_RESPONSE__INIT;
+ *message = init_value;
+}
+size_t keep_alive_response__get_packed_size
+ (const KeepAliveResponse *message)
+{
+ assert(message->base.descriptor == &keep_alive_response__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t keep_alive_response__pack
+ (const KeepAliveResponse *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &keep_alive_response__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t keep_alive_response__pack_to_buffer
+ (const KeepAliveResponse *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &keep_alive_response__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+KeepAliveResponse *
+ keep_alive_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (KeepAliveResponse *)
+ protobuf_c_message_unpack (&keep_alive_response__descriptor,
+ allocator, len, data);
+}
+void keep_alive_response__free_unpacked
+ (KeepAliveResponse *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &keep_alive_response__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+#define keep_alive_response__field_descriptors NULL
+#define keep_alive_response__field_indices_by_name NULL
+#define keep_alive_response__number_ranges NULL
+const ProtobufCMessageDescriptor keep_alive_response__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "KeepAliveResponse",
+ "KeepAliveResponse",
+ "KeepAliveResponse",
+ "",
+ sizeof(KeepAliveResponse),
+ 0,
+ keep_alive_response__field_descriptors,
+ keep_alive_response__field_indices_by_name,
+ 0, keep_alive_response__number_ranges,
+ (ProtobufCMessageInit) keep_alive_response__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Common/KeepAliveResponse.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Common/KeepAliveResponse.pb-c.h
new file mode 100644
index 000000000..a29f79c99
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Common/KeepAliveResponse.pb-c.h
@@ -0,0 +1,70 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: KeepAliveResponse.proto */
+
+#ifndef PROTOBUF_C_KeepAliveResponse_2eproto__INCLUDED
+#define PROTOBUF_C_KeepAliveResponse_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _KeepAliveResponse KeepAliveResponse;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _KeepAliveResponse
+{
+ ProtobufCMessage base;
+};
+#define KEEP_ALIVE_RESPONSE__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&keep_alive_response__descriptor) \
+ }
+
+
+/* KeepAliveResponse methods */
+void keep_alive_response__init
+ (KeepAliveResponse *message);
+size_t keep_alive_response__get_packed_size
+ (const KeepAliveResponse *message);
+size_t keep_alive_response__pack
+ (const KeepAliveResponse *message,
+ uint8_t *out);
+size_t keep_alive_response__pack_to_buffer
+ (const KeepAliveResponse *message,
+ ProtobufCBuffer *buffer);
+KeepAliveResponse *
+ keep_alive_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void keep_alive_response__free_unpacked
+ (KeepAliveResponse *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*KeepAliveResponse_Closure)
+ (const KeepAliveResponse *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor keep_alive_response__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_KeepAliveResponse_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Common/MessageContainer.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Common/MessageContainer.pb-c.c
new file mode 100644
index 000000000..de74c4054
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Common/MessageContainer.pb-c.c
@@ -0,0 +1,170 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: MessageContainer.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "MessageContainer.pb-c.h"
+void message_container__init
+ (MessageContainer *message)
+{
+ static const MessageContainer init_value = MESSAGE_CONTAINER__INIT;
+ *message = init_value;
+}
+size_t message_container__get_packed_size
+ (const MessageContainer *message)
+{
+ assert(message->base.descriptor == &message_container__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t message_container__pack
+ (const MessageContainer *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &message_container__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t message_container__pack_to_buffer
+ (const MessageContainer *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &message_container__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+MessageContainer *
+ message_container__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (MessageContainer *)
+ protobuf_c_message_unpack (&message_container__descriptor,
+ allocator, len, data);
+}
+void message_container__free_unpacked
+ (MessageContainer *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &message_container__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor message_container__field_descriptors[7] =
+{
+ {
+ "Type",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_ENUM,
+ offsetof(MessageContainer, has_type),
+ offsetof(MessageContainer, type),
+ &message_type__descriptor,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Token",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_STRING,
+ 0, /* quantifier_offset */
+ offsetof(MessageContainer, token),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Continuous",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(MessageContainer, has_continuous),
+ offsetof(MessageContainer, continuous),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Completed",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(MessageContainer, has_completed),
+ offsetof(MessageContainer, completed),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Data",
+ 5,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BYTES,
+ offsetof(MessageContainer, has_data),
+ offsetof(MessageContainer, data),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "CRC",
+ 6,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(MessageContainer, has_crc),
+ offsetof(MessageContainer, crc),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Error",
+ 7,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_ENUM,
+ offsetof(MessageContainer, has_error),
+ offsetof(MessageContainer, error),
+ &error_code__descriptor,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned message_container__field_indices_by_name[] = {
+ 5, /* field[5] = CRC */
+ 3, /* field[3] = Completed */
+ 2, /* field[2] = Continuous */
+ 4, /* field[4] = Data */
+ 6, /* field[6] = Error */
+ 1, /* field[1] = Token */
+ 0, /* field[0] = Type */
+};
+static const ProtobufCIntRange message_container__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 7 }
+};
+const ProtobufCMessageDescriptor message_container__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "MessageContainer",
+ "MessageContainer",
+ "MessageContainer",
+ "",
+ sizeof(MessageContainer),
+ 7,
+ message_container__field_descriptors,
+ message_container__field_indices_by_name,
+ 1, message_container__number_ranges,
+ (ProtobufCMessageInit) message_container__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Common/MessageContainer.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Common/MessageContainer.pb-c.h
new file mode 100644
index 000000000..edb24d775
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Common/MessageContainer.pb-c.h
@@ -0,0 +1,85 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: MessageContainer.proto */
+
+#ifndef PROTOBUF_C_MessageContainer_2eproto__INCLUDED
+#define PROTOBUF_C_MessageContainer_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+#include "MessageType.pb-c.h"
+#include "ErrorCode.pb-c.h"
+
+typedef struct _MessageContainer MessageContainer;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _MessageContainer
+{
+ ProtobufCMessage base;
+ protobuf_c_boolean has_type;
+ MessageType type;
+ char *token;
+ protobuf_c_boolean has_continuous;
+ protobuf_c_boolean continuous;
+ protobuf_c_boolean has_completed;
+ protobuf_c_boolean completed;
+ protobuf_c_boolean has_data;
+ ProtobufCBinaryData data;
+ protobuf_c_boolean has_crc;
+ uint32_t crc;
+ protobuf_c_boolean has_error;
+ ErrorCode error;
+};
+#define MESSAGE_CONTAINER__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&message_container__descriptor) \
+ , 0, MESSAGE_TYPE__None, NULL, 0, 0, 0, 0, 0, {0,NULL}, 0, 0, 0, ERROR_CODE__NONE }
+
+
+/* MessageContainer methods */
+void message_container__init
+ (MessageContainer *message);
+size_t message_container__get_packed_size
+ (const MessageContainer *message);
+size_t message_container__pack
+ (const MessageContainer *message,
+ uint8_t *out);
+size_t message_container__pack_to_buffer
+ (const MessageContainer *message,
+ ProtobufCBuffer *buffer);
+MessageContainer *
+ message_container__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void message_container__free_unpacked
+ (MessageContainer *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*MessageContainer_Closure)
+ (const MessageContainer *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor message_container__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_MessageContainer_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Common/MessageType.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Common/MessageType.pb-c.c
new file mode 100644
index 000000000..b193ae3e1
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Common/MessageType.pb-c.c
@@ -0,0 +1,237 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: MessageType.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "MessageType.pb-c.h"
+static const ProtobufCEnumValue message_type__enum_values_by_number[102] =
+{
+ { "None", "MESSAGE_TYPE__None", 0 },
+ { "CalculateRequest", "MESSAGE_TYPE__CalculateRequest", 3 },
+ { "CalculateResponse", "MESSAGE_TYPE__CalculateResponse", 4 },
+ { "ProgressRequest", "MESSAGE_TYPE__ProgressRequest", 5 },
+ { "ProgressResponse", "MESSAGE_TYPE__ProgressResponse", 6 },
+ { "StubCartridgeReadRequest", "MESSAGE_TYPE__StubCartridgeReadRequest", 7 },
+ { "StubCartridgeReadResponse", "MESSAGE_TYPE__StubCartridgeReadResponse", 8 },
+ { "StubCartridgeWriteRequest", "MESSAGE_TYPE__StubCartridgeWriteRequest", 9 },
+ { "StubCartridgeWriteResponse", "MESSAGE_TYPE__StubCartridgeWriteResponse", 10 },
+ { "StubDispenserRequest", "MESSAGE_TYPE__StubDispenserRequest", 11 },
+ { "StubDispenserResponse", "MESSAGE_TYPE__StubDispenserResponse", 12 },
+ { "StubGPIOInputSetupRequest", "MESSAGE_TYPE__StubGPIOInputSetupRequest", 13 },
+ { "StubGPIOInputSetupResponse", "MESSAGE_TYPE__StubGPIOInputSetupResponse", 14 },
+ { "StubGPIOReadBitRequest", "MESSAGE_TYPE__StubGPIOReadBitRequest", 15 },
+ { "StubGPIOReadBitResponse", "MESSAGE_TYPE__StubGPIOReadBitResponse", 16 },
+ { "StubGPIOReadByteRequest", "MESSAGE_TYPE__StubGPIOReadByteRequest", 17 },
+ { "StubGPIOReadByteResponse", "MESSAGE_TYPE__StubGPIOReadByteResponse", 18 },
+ { "StubGPIOWriteBitRequest", "MESSAGE_TYPE__StubGPIOWriteBitRequest", 19 },
+ { "StubGPIOWriteBitResponse", "MESSAGE_TYPE__StubGPIOWriteBitResponse", 20 },
+ { "StubGPIOWriteByteRequest", "MESSAGE_TYPE__StubGPIOWriteByteRequest", 21 },
+ { "StubGPIOWriteByteResponse", "MESSAGE_TYPE__StubGPIOWriteByteResponse", 22 },
+ { "StubHeaterRequest", "MESSAGE_TYPE__StubHeaterRequest", 23 },
+ { "StubHeaterResponse", "MESSAGE_TYPE__StubHeaterResponse", 24 },
+ { "StubMotorEncoderRequest", "MESSAGE_TYPE__StubMotorEncoderRequest", 25 },
+ { "StubMotorEncoderResponse", "MESSAGE_TYPE__StubMotorEncoderResponse", 26 },
+ { "StubOptLimitSwitchRequest", "MESSAGE_TYPE__StubOptLimitSwitchRequest", 27 },
+ { "StubOptLimitSwitchResponse", "MESSAGE_TYPE__StubOptLimitSwitchResponse", 28 },
+ { "StubSteperMotorRequest", "MESSAGE_TYPE__StubSteperMotorRequest", 29 },
+ { "StubSteperMotorResponse", "MESSAGE_TYPE__StubSteperMotorResponse", 30 },
+ { "StubValveRequest", "MESSAGE_TYPE__StubValveRequest", 31 },
+ { "StubValveResponse", "MESSAGE_TYPE__StubValveResponse", 32 },
+ { "StubExtFlashReadRequest", "MESSAGE_TYPE__StubExtFlashReadRequest", 33 },
+ { "StubExtFlashReadResponse", "MESSAGE_TYPE__StubExtFlashReadResponse", 34 },
+ { "StubExtFlashWriteRequest", "MESSAGE_TYPE__StubExtFlashWriteRequest", 35 },
+ { "StubExtFlashWriteResponse", "MESSAGE_TYPE__StubExtFlashWriteResponse", 36 },
+ { "StubFPGAReadBackRegRequest", "MESSAGE_TYPE__StubFPGAReadBackRegRequest", 37 },
+ { "StubFPGAReadBackRegResponse", "MESSAGE_TYPE__StubFPGAReadBackRegResponse", 38 },
+ { "StubFPGAReadVersionRequest", "MESSAGE_TYPE__StubFPGAReadVersionRequest", 39 },
+ { "StubFPGAReadVersionResponse", "MESSAGE_TYPE__StubFPGAReadVersionResponse", 40 },
+ { "StubL6470DriverRequest", "MESSAGE_TYPE__StubL6470DriverRequest", 41 },
+ { "StubL6470DriverResponse", "MESSAGE_TYPE__StubL6470DriverResponse", 42 },
+ { "StubMotorInitRequest", "MESSAGE_TYPE__StubMotorInitRequest", 43 },
+ { "StubMotorInitResponse", "MESSAGE_TYPE__StubMotorInitResponse", 44 },
+ { "StubMotorRunRequest", "MESSAGE_TYPE__StubMotorRunRequest", 45 },
+ { "StubMotorRunResponse", "MESSAGE_TYPE__StubMotorRunResponse", 46 },
+ { "StubMotorStopRequest", "MESSAGE_TYPE__StubMotorStopRequest", 47 },
+ { "StubMotorStopResponse", "MESSAGE_TYPE__StubMotorStopResponse", 48 },
+ { "StubMotorStatusRequest", "MESSAGE_TYPE__StubMotorStatusRequest", 49 },
+ { "StubMotorStatusResponse", "MESSAGE_TYPE__StubMotorStatusResponse", 50 },
+ { "StubMotorMovRequest", "MESSAGE_TYPE__StubMotorMovRequest", 51 },
+ { "StubMotorMovResponse", "MESSAGE_TYPE__StubMotorMovResponse", 52 },
+ { "StubMotorSpeedRequest", "MESSAGE_TYPE__StubMotorSpeedRequest", 53 },
+ { "StubMotorSpeedResponse", "MESSAGE_TYPE__StubMotorSpeedResponse", 54 },
+ { "StubMotorPositionRequest", "MESSAGE_TYPE__StubMotorPositionRequest", 55 },
+ { "StubMotorPositionResponse", "MESSAGE_TYPE__StubMotorPositionResponse", 56 },
+ { "StubHWVersionRequest", "MESSAGE_TYPE__StubHWVersionRequest", 57 },
+ { "StubHWVersionResponse", "MESSAGE_TYPE__StubHWVersionResponse", 58 },
+ { "StubF3Gpo01WriteRequest", "MESSAGE_TYPE__StubF3Gpo01WriteRequest", 59 },
+ { "StubF3Gpo01WriteResponse", "MESSAGE_TYPE__StubF3Gpo01WriteResponse", 60 },
+ { "ExternalBridgeUdpDiscoveryPacket", "MESSAGE_TYPE__ExternalBridgeUdpDiscoveryPacket", 1000 },
+ { "ExternalClientLoginRequest", "MESSAGE_TYPE__ExternalClientLoginRequest", 1001 },
+ { "ExternalClientLoginResponse", "MESSAGE_TYPE__ExternalClientLoginResponse", 1002 },
+ { "DirectSynchronizationRequest", "MESSAGE_TYPE__DirectSynchronizationRequest", 1003 },
+ { "DirectSynchronizationResponse", "MESSAGE_TYPE__DirectSynchronizationResponse", 1004 },
+ { "OverrideDataBaseRequest", "MESSAGE_TYPE__OverrideDataBaseRequest", 1005 },
+ { "OverrideDataBaseResponse", "MESSAGE_TYPE__OverrideDataBaseResponse", 1006 },
+ { "KeepAliveRequest", "MESSAGE_TYPE__KeepAliveRequest", 1007 },
+ { "KeepAliveResponse", "MESSAGE_TYPE__KeepAliveResponse", 1008 },
+ { "PushDiagnosticsRequest", "MESSAGE_TYPE__PushDiagnosticsRequest", 2000 },
+ { "PushDiagnosticsResponse", "MESSAGE_TYPE__PushDiagnosticsResponse", 2001 },
+ { "MotorAbortHomingRequest", "MESSAGE_TYPE__MotorAbortHomingRequest", 2002 },
+ { "MotorAbortHomingResponse", "MESSAGE_TYPE__MotorAbortHomingResponse", 2003 },
+ { "MotorHomingRequest", "MESSAGE_TYPE__MotorHomingRequest", 2004 },
+ { "MotorHomingResponse", "MESSAGE_TYPE__MotorHomingResponse", 2005 },
+ { "MotorJoggingRequest", "MESSAGE_TYPE__MotorJoggingRequest", 2006 },
+ { "MotorJoggingResponse", "MESSAGE_TYPE__MotorJoggingResponse", 2007 },
+ { "MotorAbortJoggingRequest", "MESSAGE_TYPE__MotorAbortJoggingRequest", 2008 },
+ { "MotorAbortJoggingResponse", "MESSAGE_TYPE__MotorAbortJoggingResponse", 2009 },
+ { "DispenserAbortHomingRequest", "MESSAGE_TYPE__DispenserAbortHomingRequest", 2010 },
+ { "DispenserAbortHomingResponse", "MESSAGE_TYPE__DispenserAbortHomingResponse", 2011 },
+ { "DispenserHomingRequest", "MESSAGE_TYPE__DispenserHomingRequest", 2012 },
+ { "DispenserHomingResponse", "MESSAGE_TYPE__DispenserHomingResponse", 2013 },
+ { "DispenserJoggingRequest", "MESSAGE_TYPE__DispenserJoggingRequest", 2014 },
+ { "DispenserJoggingResponse", "MESSAGE_TYPE__DispenserJoggingResponse", 2015 },
+ { "DispenserAbortJoggingRequest", "MESSAGE_TYPE__DispenserAbortJoggingRequest", 2016 },
+ { "DispenserAbortJoggingResponse", "MESSAGE_TYPE__DispenserAbortJoggingResponse", 2017 },
+ { "SetDigitalOutRequest", "MESSAGE_TYPE__SetDigitalOutRequest", 2018 },
+ { "SetDigitalOutResponse", "MESSAGE_TYPE__SetDigitalOutResponse", 2019 },
+ { "ThreadJoggingRequest", "MESSAGE_TYPE__ThreadJoggingRequest", 2020 },
+ { "ThreadJoggingResponse", "MESSAGE_TYPE__ThreadJoggingResponse", 2021 },
+ { "ThreadAbortJoggingRequest", "MESSAGE_TYPE__ThreadAbortJoggingRequest", 2022 },
+ { "ThreadAbortJoggingResponse", "MESSAGE_TYPE__ThreadAbortJoggingResponse", 2023 },
+ { "JobRequest", "MESSAGE_TYPE__JobRequest", 3000 },
+ { "JobResponse", "MESSAGE_TYPE__JobResponse", 3001 },
+ { "AbortJobRequest", "MESSAGE_TYPE__AbortJobRequest", 3002 },
+ { "AbortJobResponse", "MESSAGE_TYPE__AbortJobResponse", 3003 },
+ { "UploadProcessParametersRequest", "MESSAGE_TYPE__UploadProcessParametersRequest", 3004 },
+ { "UploadProcessParametersResponse", "MESSAGE_TYPE__UploadProcessParametersResponse", 3005 },
+ { "DebugLogRequest", "MESSAGE_TYPE__DebugLogRequest", 4000 },
+ { "DebugLogResponse", "MESSAGE_TYPE__DebugLogResponse", 4001 },
+ { "UploadHardwareConfigurationRequest", "MESSAGE_TYPE__UploadHardwareConfigurationRequest", 5000 },
+ { "UploadHardwareConfigurationResponse", "MESSAGE_TYPE__UploadHardwareConfigurationResponse", 5001 },
+};
+static const ProtobufCIntRange message_type__value_ranges[] = {
+{0, 0},{3, 1},{1000, 59},{2000, 68},{3000, 92},{4000, 98},{5000, 100},{0, 102}
+};
+static const ProtobufCEnumValueIndex message_type__enum_values_by_name[102] =
+{
+ { "AbortJobRequest", 94 },
+ { "AbortJobResponse", 95 },
+ { "CalculateRequest", 1 },
+ { "CalculateResponse", 2 },
+ { "DebugLogRequest", 98 },
+ { "DebugLogResponse", 99 },
+ { "DirectSynchronizationRequest", 62 },
+ { "DirectSynchronizationResponse", 63 },
+ { "DispenserAbortHomingRequest", 78 },
+ { "DispenserAbortHomingResponse", 79 },
+ { "DispenserAbortJoggingRequest", 84 },
+ { "DispenserAbortJoggingResponse", 85 },
+ { "DispenserHomingRequest", 80 },
+ { "DispenserHomingResponse", 81 },
+ { "DispenserJoggingRequest", 82 },
+ { "DispenserJoggingResponse", 83 },
+ { "ExternalBridgeUdpDiscoveryPacket", 59 },
+ { "ExternalClientLoginRequest", 60 },
+ { "ExternalClientLoginResponse", 61 },
+ { "JobRequest", 92 },
+ { "JobResponse", 93 },
+ { "KeepAliveRequest", 66 },
+ { "KeepAliveResponse", 67 },
+ { "MotorAbortHomingRequest", 70 },
+ { "MotorAbortHomingResponse", 71 },
+ { "MotorAbortJoggingRequest", 76 },
+ { "MotorAbortJoggingResponse", 77 },
+ { "MotorHomingRequest", 72 },
+ { "MotorHomingResponse", 73 },
+ { "MotorJoggingRequest", 74 },
+ { "MotorJoggingResponse", 75 },
+ { "None", 0 },
+ { "OverrideDataBaseRequest", 64 },
+ { "OverrideDataBaseResponse", 65 },
+ { "ProgressRequest", 3 },
+ { "ProgressResponse", 4 },
+ { "PushDiagnosticsRequest", 68 },
+ { "PushDiagnosticsResponse", 69 },
+ { "SetDigitalOutRequest", 86 },
+ { "SetDigitalOutResponse", 87 },
+ { "StubCartridgeReadRequest", 5 },
+ { "StubCartridgeReadResponse", 6 },
+ { "StubCartridgeWriteRequest", 7 },
+ { "StubCartridgeWriteResponse", 8 },
+ { "StubDispenserRequest", 9 },
+ { "StubDispenserResponse", 10 },
+ { "StubExtFlashReadRequest", 31 },
+ { "StubExtFlashReadResponse", 32 },
+ { "StubExtFlashWriteRequest", 33 },
+ { "StubExtFlashWriteResponse", 34 },
+ { "StubF3Gpo01WriteRequest", 57 },
+ { "StubF3Gpo01WriteResponse", 58 },
+ { "StubFPGAReadBackRegRequest", 35 },
+ { "StubFPGAReadBackRegResponse", 36 },
+ { "StubFPGAReadVersionRequest", 37 },
+ { "StubFPGAReadVersionResponse", 38 },
+ { "StubGPIOInputSetupRequest", 11 },
+ { "StubGPIOInputSetupResponse", 12 },
+ { "StubGPIOReadBitRequest", 13 },
+ { "StubGPIOReadBitResponse", 14 },
+ { "StubGPIOReadByteRequest", 15 },
+ { "StubGPIOReadByteResponse", 16 },
+ { "StubGPIOWriteBitRequest", 17 },
+ { "StubGPIOWriteBitResponse", 18 },
+ { "StubGPIOWriteByteRequest", 19 },
+ { "StubGPIOWriteByteResponse", 20 },
+ { "StubHWVersionRequest", 55 },
+ { "StubHWVersionResponse", 56 },
+ { "StubHeaterRequest", 21 },
+ { "StubHeaterResponse", 22 },
+ { "StubL6470DriverRequest", 39 },
+ { "StubL6470DriverResponse", 40 },
+ { "StubMotorEncoderRequest", 23 },
+ { "StubMotorEncoderResponse", 24 },
+ { "StubMotorInitRequest", 41 },
+ { "StubMotorInitResponse", 42 },
+ { "StubMotorMovRequest", 49 },
+ { "StubMotorMovResponse", 50 },
+ { "StubMotorPositionRequest", 53 },
+ { "StubMotorPositionResponse", 54 },
+ { "StubMotorRunRequest", 43 },
+ { "StubMotorRunResponse", 44 },
+ { "StubMotorSpeedRequest", 51 },
+ { "StubMotorSpeedResponse", 52 },
+ { "StubMotorStatusRequest", 47 },
+ { "StubMotorStatusResponse", 48 },
+ { "StubMotorStopRequest", 45 },
+ { "StubMotorStopResponse", 46 },
+ { "StubOptLimitSwitchRequest", 25 },
+ { "StubOptLimitSwitchResponse", 26 },
+ { "StubSteperMotorRequest", 27 },
+ { "StubSteperMotorResponse", 28 },
+ { "StubValveRequest", 29 },
+ { "StubValveResponse", 30 },
+ { "ThreadAbortJoggingRequest", 90 },
+ { "ThreadAbortJoggingResponse", 91 },
+ { "ThreadJoggingRequest", 88 },
+ { "ThreadJoggingResponse", 89 },
+ { "UploadHardwareConfigurationRequest", 100 },
+ { "UploadHardwareConfigurationResponse", 101 },
+ { "UploadProcessParametersRequest", 96 },
+ { "UploadProcessParametersResponse", 97 },
+};
+const ProtobufCEnumDescriptor message_type__descriptor =
+{
+ PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
+ "MessageType",
+ "MessageType",
+ "MessageType",
+ "",
+ 102,
+ message_type__enum_values_by_number,
+ 102,
+ message_type__enum_values_by_name,
+ 7,
+ message_type__value_ranges,
+ NULL,NULL,NULL,NULL /* reserved[1234] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Common/MessageType.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Common/MessageType.pb-c.h
new file mode 100644
index 000000000..f5e6eb785
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Common/MessageType.pb-c.h
@@ -0,0 +1,143 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: MessageType.proto */
+
+#ifndef PROTOBUF_C_MessageType_2eproto__INCLUDED
+#define PROTOBUF_C_MessageType_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+
+
+/* --- enums --- */
+
+typedef enum _MessageType {
+ MESSAGE_TYPE__None = 0,
+ MESSAGE_TYPE__CalculateRequest = 3,
+ MESSAGE_TYPE__CalculateResponse = 4,
+ MESSAGE_TYPE__ProgressRequest = 5,
+ MESSAGE_TYPE__ProgressResponse = 6,
+ MESSAGE_TYPE__StubCartridgeReadRequest = 7,
+ MESSAGE_TYPE__StubCartridgeReadResponse = 8,
+ MESSAGE_TYPE__StubCartridgeWriteRequest = 9,
+ MESSAGE_TYPE__StubCartridgeWriteResponse = 10,
+ MESSAGE_TYPE__StubDispenserRequest = 11,
+ MESSAGE_TYPE__StubDispenserResponse = 12,
+ MESSAGE_TYPE__StubGPIOInputSetupRequest = 13,
+ MESSAGE_TYPE__StubGPIOInputSetupResponse = 14,
+ MESSAGE_TYPE__StubGPIOReadBitRequest = 15,
+ MESSAGE_TYPE__StubGPIOReadBitResponse = 16,
+ MESSAGE_TYPE__StubGPIOReadByteRequest = 17,
+ MESSAGE_TYPE__StubGPIOReadByteResponse = 18,
+ MESSAGE_TYPE__StubGPIOWriteBitRequest = 19,
+ MESSAGE_TYPE__StubGPIOWriteBitResponse = 20,
+ MESSAGE_TYPE__StubGPIOWriteByteRequest = 21,
+ MESSAGE_TYPE__StubGPIOWriteByteResponse = 22,
+ MESSAGE_TYPE__StubHeaterRequest = 23,
+ MESSAGE_TYPE__StubHeaterResponse = 24,
+ MESSAGE_TYPE__StubMotorEncoderRequest = 25,
+ MESSAGE_TYPE__StubMotorEncoderResponse = 26,
+ MESSAGE_TYPE__StubOptLimitSwitchRequest = 27,
+ MESSAGE_TYPE__StubOptLimitSwitchResponse = 28,
+ MESSAGE_TYPE__StubSteperMotorRequest = 29,
+ MESSAGE_TYPE__StubSteperMotorResponse = 30,
+ MESSAGE_TYPE__StubValveRequest = 31,
+ MESSAGE_TYPE__StubValveResponse = 32,
+ MESSAGE_TYPE__StubExtFlashReadRequest = 33,
+ MESSAGE_TYPE__StubExtFlashReadResponse = 34,
+ MESSAGE_TYPE__StubExtFlashWriteRequest = 35,
+ MESSAGE_TYPE__StubExtFlashWriteResponse = 36,
+ MESSAGE_TYPE__StubFPGAReadBackRegRequest = 37,
+ MESSAGE_TYPE__StubFPGAReadBackRegResponse = 38,
+ MESSAGE_TYPE__StubFPGAReadVersionRequest = 39,
+ MESSAGE_TYPE__StubFPGAReadVersionResponse = 40,
+ MESSAGE_TYPE__StubL6470DriverRequest = 41,
+ MESSAGE_TYPE__StubL6470DriverResponse = 42,
+ MESSAGE_TYPE__StubMotorInitRequest = 43,
+ MESSAGE_TYPE__StubMotorInitResponse = 44,
+ MESSAGE_TYPE__StubMotorRunRequest = 45,
+ MESSAGE_TYPE__StubMotorRunResponse = 46,
+ MESSAGE_TYPE__StubMotorStopRequest = 47,
+ MESSAGE_TYPE__StubMotorStopResponse = 48,
+ MESSAGE_TYPE__StubMotorStatusRequest = 49,
+ MESSAGE_TYPE__StubMotorStatusResponse = 50,
+ MESSAGE_TYPE__StubMotorMovRequest = 51,
+ MESSAGE_TYPE__StubMotorMovResponse = 52,
+ MESSAGE_TYPE__StubMotorSpeedRequest = 53,
+ MESSAGE_TYPE__StubMotorSpeedResponse = 54,
+ MESSAGE_TYPE__StubMotorPositionRequest = 55,
+ MESSAGE_TYPE__StubMotorPositionResponse = 56,
+ MESSAGE_TYPE__StubHWVersionRequest = 57,
+ MESSAGE_TYPE__StubHWVersionResponse = 58,
+ MESSAGE_TYPE__StubF3Gpo01WriteRequest = 59,
+ MESSAGE_TYPE__StubF3Gpo01WriteResponse = 60,
+ MESSAGE_TYPE__ExternalBridgeUdpDiscoveryPacket = 1000,
+ MESSAGE_TYPE__ExternalClientLoginRequest = 1001,
+ MESSAGE_TYPE__ExternalClientLoginResponse = 1002,
+ MESSAGE_TYPE__DirectSynchronizationRequest = 1003,
+ MESSAGE_TYPE__DirectSynchronizationResponse = 1004,
+ MESSAGE_TYPE__OverrideDataBaseRequest = 1005,
+ MESSAGE_TYPE__OverrideDataBaseResponse = 1006,
+ MESSAGE_TYPE__KeepAliveRequest = 1007,
+ MESSAGE_TYPE__KeepAliveResponse = 1008,
+ MESSAGE_TYPE__PushDiagnosticsRequest = 2000,
+ MESSAGE_TYPE__PushDiagnosticsResponse = 2001,
+ MESSAGE_TYPE__MotorAbortHomingRequest = 2002,
+ MESSAGE_TYPE__MotorAbortHomingResponse = 2003,
+ MESSAGE_TYPE__MotorHomingRequest = 2004,
+ MESSAGE_TYPE__MotorHomingResponse = 2005,
+ MESSAGE_TYPE__MotorJoggingRequest = 2006,
+ MESSAGE_TYPE__MotorJoggingResponse = 2007,
+ MESSAGE_TYPE__MotorAbortJoggingRequest = 2008,
+ MESSAGE_TYPE__MotorAbortJoggingResponse = 2009,
+ MESSAGE_TYPE__DispenserAbortHomingRequest = 2010,
+ MESSAGE_TYPE__DispenserAbortHomingResponse = 2011,
+ MESSAGE_TYPE__DispenserHomingRequest = 2012,
+ MESSAGE_TYPE__DispenserHomingResponse = 2013,
+ MESSAGE_TYPE__DispenserJoggingRequest = 2014,
+ MESSAGE_TYPE__DispenserJoggingResponse = 2015,
+ MESSAGE_TYPE__DispenserAbortJoggingRequest = 2016,
+ MESSAGE_TYPE__DispenserAbortJoggingResponse = 2017,
+ MESSAGE_TYPE__SetDigitalOutRequest = 2018,
+ MESSAGE_TYPE__SetDigitalOutResponse = 2019,
+ MESSAGE_TYPE__ThreadJoggingRequest = 2020,
+ MESSAGE_TYPE__ThreadJoggingResponse = 2021,
+ MESSAGE_TYPE__ThreadAbortJoggingRequest = 2022,
+ MESSAGE_TYPE__ThreadAbortJoggingResponse = 2023,
+ MESSAGE_TYPE__JobRequest = 3000,
+ MESSAGE_TYPE__JobResponse = 3001,
+ MESSAGE_TYPE__AbortJobRequest = 3002,
+ MESSAGE_TYPE__AbortJobResponse = 3003,
+ MESSAGE_TYPE__UploadProcessParametersRequest = 3004,
+ MESSAGE_TYPE__UploadProcessParametersResponse = 3005,
+ MESSAGE_TYPE__DebugLogRequest = 4000,
+ MESSAGE_TYPE__DebugLogResponse = 4001,
+ MESSAGE_TYPE__UploadHardwareConfigurationRequest = 5000,
+ MESSAGE_TYPE__UploadHardwareConfigurationResponse = 5001
+ PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(MESSAGE_TYPE)
+} MessageType;
+
+/* --- messages --- */
+
+/* --- per-message closures --- */
+
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCEnumDescriptor message_type__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_MessageType_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Debugging/DebugLogCategory.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Debugging/DebugLogCategory.pb-c.c
new file mode 100644
index 000000000..ebb901ba8
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Debugging/DebugLogCategory.pb-c.c
@@ -0,0 +1,43 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: DebugLogCategory.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "DebugLogCategory.pb-c.h"
+static const ProtobufCEnumValue debug_log_category__enum_values_by_number[5] =
+{
+ { "Info", "DEBUG_LOG_CATEGORY__Info", 0 },
+ { "Warning", "DEBUG_LOG_CATEGORY__Warning", 1 },
+ { "Error", "DEBUG_LOG_CATEGORY__Error", 2 },
+ { "Critical", "DEBUG_LOG_CATEGORY__Critical", 3 },
+ { "Debug", "DEBUG_LOG_CATEGORY__Debug", 4 },
+};
+static const ProtobufCIntRange debug_log_category__value_ranges[] = {
+{0, 0},{0, 5}
+};
+static const ProtobufCEnumValueIndex debug_log_category__enum_values_by_name[5] =
+{
+ { "Critical", 3 },
+ { "Debug", 4 },
+ { "Error", 2 },
+ { "Info", 0 },
+ { "Warning", 1 },
+};
+const ProtobufCEnumDescriptor debug_log_category__descriptor =
+{
+ PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
+ "DebugLogCategory",
+ "DebugLogCategory",
+ "DebugLogCategory",
+ "",
+ 5,
+ debug_log_category__enum_values_by_number,
+ 5,
+ debug_log_category__enum_values_by_name,
+ 1,
+ debug_log_category__value_ranges,
+ NULL,NULL,NULL,NULL /* reserved[1234] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Debugging/DebugLogCategory.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Debugging/DebugLogCategory.pb-c.h
new file mode 100644
index 000000000..d97b42d33
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Debugging/DebugLogCategory.pb-c.h
@@ -0,0 +1,46 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: DebugLogCategory.proto */
+
+#ifndef PROTOBUF_C_DebugLogCategory_2eproto__INCLUDED
+#define PROTOBUF_C_DebugLogCategory_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+
+
+/* --- enums --- */
+
+typedef enum _DebugLogCategory {
+ DEBUG_LOG_CATEGORY__Info = 0,
+ DEBUG_LOG_CATEGORY__Warning = 1,
+ DEBUG_LOG_CATEGORY__Error = 2,
+ DEBUG_LOG_CATEGORY__Critical = 3,
+ DEBUG_LOG_CATEGORY__Debug = 4
+ PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(DEBUG_LOG_CATEGORY)
+} DebugLogCategory;
+
+/* --- messages --- */
+
+/* --- per-message closures --- */
+
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCEnumDescriptor debug_log_category__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_DebugLogCategory_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Debugging/DebugLogRequest.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Debugging/DebugLogRequest.pb-c.c
new file mode 100644
index 000000000..e8faeddcb
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Debugging/DebugLogRequest.pb-c.c
@@ -0,0 +1,72 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: DebugLogRequest.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "DebugLogRequest.pb-c.h"
+void debug_log_request__init
+ (DebugLogRequest *message)
+{
+ static const DebugLogRequest init_value = DEBUG_LOG_REQUEST__INIT;
+ *message = init_value;
+}
+size_t debug_log_request__get_packed_size
+ (const DebugLogRequest *message)
+{
+ assert(message->base.descriptor == &debug_log_request__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t debug_log_request__pack
+ (const DebugLogRequest *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &debug_log_request__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t debug_log_request__pack_to_buffer
+ (const DebugLogRequest *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &debug_log_request__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+DebugLogRequest *
+ debug_log_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (DebugLogRequest *)
+ protobuf_c_message_unpack (&debug_log_request__descriptor,
+ allocator, len, data);
+}
+void debug_log_request__free_unpacked
+ (DebugLogRequest *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &debug_log_request__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+#define debug_log_request__field_descriptors NULL
+#define debug_log_request__field_indices_by_name NULL
+#define debug_log_request__number_ranges NULL
+const ProtobufCMessageDescriptor debug_log_request__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "DebugLogRequest",
+ "DebugLogRequest",
+ "DebugLogRequest",
+ "",
+ sizeof(DebugLogRequest),
+ 0,
+ debug_log_request__field_descriptors,
+ debug_log_request__field_indices_by_name,
+ 0, debug_log_request__number_ranges,
+ (ProtobufCMessageInit) debug_log_request__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Debugging/DebugLogRequest.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Debugging/DebugLogRequest.pb-c.h
new file mode 100644
index 000000000..2507b3068
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Debugging/DebugLogRequest.pb-c.h
@@ -0,0 +1,70 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: DebugLogRequest.proto */
+
+#ifndef PROTOBUF_C_DebugLogRequest_2eproto__INCLUDED
+#define PROTOBUF_C_DebugLogRequest_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _DebugLogRequest DebugLogRequest;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _DebugLogRequest
+{
+ ProtobufCMessage base;
+};
+#define DEBUG_LOG_REQUEST__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&debug_log_request__descriptor) \
+ }
+
+
+/* DebugLogRequest methods */
+void debug_log_request__init
+ (DebugLogRequest *message);
+size_t debug_log_request__get_packed_size
+ (const DebugLogRequest *message);
+size_t debug_log_request__pack
+ (const DebugLogRequest *message,
+ uint8_t *out);
+size_t debug_log_request__pack_to_buffer
+ (const DebugLogRequest *message,
+ ProtobufCBuffer *buffer);
+DebugLogRequest *
+ debug_log_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void debug_log_request__free_unpacked
+ (DebugLogRequest *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*DebugLogRequest_Closure)
+ (const DebugLogRequest *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor debug_log_request__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_DebugLogRequest_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Debugging/DebugLogResponse.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Debugging/DebugLogResponse.pb-c.c
new file mode 100644
index 000000000..36e08e981
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Debugging/DebugLogResponse.pb-c.c
@@ -0,0 +1,157 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: DebugLogResponse.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "DebugLogResponse.pb-c.h"
+void debug_log_response__init
+ (DebugLogResponse *message)
+{
+ static const DebugLogResponse init_value = DEBUG_LOG_RESPONSE__INIT;
+ *message = init_value;
+}
+size_t debug_log_response__get_packed_size
+ (const DebugLogResponse *message)
+{
+ assert(message->base.descriptor == &debug_log_response__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t debug_log_response__pack
+ (const DebugLogResponse *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &debug_log_response__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t debug_log_response__pack_to_buffer
+ (const DebugLogResponse *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &debug_log_response__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+DebugLogResponse *
+ debug_log_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (DebugLogResponse *)
+ protobuf_c_message_unpack (&debug_log_response__descriptor,
+ allocator, len, data);
+}
+void debug_log_response__free_unpacked
+ (DebugLogResponse *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &debug_log_response__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor debug_log_response__field_descriptors[6] =
+{
+ {
+ "Category",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_ENUM,
+ offsetof(DebugLogResponse, has_category),
+ offsetof(DebugLogResponse, category),
+ &debug_log_category__descriptor,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "FileName",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_STRING,
+ 0, /* quantifier_offset */
+ offsetof(DebugLogResponse, filename),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "LineNumber",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(DebugLogResponse, has_linenumber),
+ offsetof(DebugLogResponse, linenumber),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Filter",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(DebugLogResponse, has_filter),
+ offsetof(DebugLogResponse, filter),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Message",
+ 5,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_STRING,
+ 0, /* quantifier_offset */
+ offsetof(DebugLogResponse, message),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "ModuleId",
+ 6,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(DebugLogResponse, has_moduleid),
+ offsetof(DebugLogResponse, moduleid),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned debug_log_response__field_indices_by_name[] = {
+ 0, /* field[0] = Category */
+ 1, /* field[1] = FileName */
+ 3, /* field[3] = Filter */
+ 2, /* field[2] = LineNumber */
+ 4, /* field[4] = Message */
+ 5, /* field[5] = ModuleId */
+};
+static const ProtobufCIntRange debug_log_response__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 6 }
+};
+const ProtobufCMessageDescriptor debug_log_response__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "DebugLogResponse",
+ "DebugLogResponse",
+ "DebugLogResponse",
+ "",
+ sizeof(DebugLogResponse),
+ 6,
+ debug_log_response__field_descriptors,
+ debug_log_response__field_indices_by_name,
+ 1, debug_log_response__number_ranges,
+ (ProtobufCMessageInit) debug_log_response__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Debugging/DebugLogResponse.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Debugging/DebugLogResponse.pb-c.h
new file mode 100644
index 000000000..414c07188
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Debugging/DebugLogResponse.pb-c.h
@@ -0,0 +1,81 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: DebugLogResponse.proto */
+
+#ifndef PROTOBUF_C_DebugLogResponse_2eproto__INCLUDED
+#define PROTOBUF_C_DebugLogResponse_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+#include "DebugLogCategory.pb-c.h"
+
+typedef struct _DebugLogResponse DebugLogResponse;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _DebugLogResponse
+{
+ ProtobufCMessage base;
+ protobuf_c_boolean has_category;
+ DebugLogCategory category;
+ char *filename;
+ protobuf_c_boolean has_linenumber;
+ uint32_t linenumber;
+ protobuf_c_boolean has_filter;
+ uint32_t filter;
+ char *message;
+ protobuf_c_boolean has_moduleid;
+ uint32_t moduleid;
+};
+#define DEBUG_LOG_RESPONSE__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&debug_log_response__descriptor) \
+ , 0, DEBUG_LOG_CATEGORY__Info, NULL, 0, 0, 0, 0, NULL, 0, 0 }
+
+
+/* DebugLogResponse methods */
+void debug_log_response__init
+ (DebugLogResponse *message);
+size_t debug_log_response__get_packed_size
+ (const DebugLogResponse *message);
+size_t debug_log_response__pack
+ (const DebugLogResponse *message,
+ uint8_t *out);
+size_t debug_log_response__pack_to_buffer
+ (const DebugLogResponse *message,
+ ProtobufCBuffer *buffer);
+DebugLogResponse *
+ debug_log_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void debug_log_response__free_unpacked
+ (DebugLogResponse *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*DebugLogResponse_Closure)
+ (const DebugLogResponse *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor debug_log_response__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_DebugLogResponse_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareConfiguration.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareConfiguration.pb-c.c
new file mode 100644
index 000000000..6ba4d7fc9
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareConfiguration.pb-c.c
@@ -0,0 +1,144 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: HardwareConfiguration.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "HardwareConfiguration.pb-c.h"
+void hardware_configuration__init
+ (HardwareConfiguration *message)
+{
+ static const HardwareConfiguration init_value = HARDWARE_CONFIGURATION__INIT;
+ *message = init_value;
+}
+size_t hardware_configuration__get_packed_size
+ (const HardwareConfiguration *message)
+{
+ assert(message->base.descriptor == &hardware_configuration__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t hardware_configuration__pack
+ (const HardwareConfiguration *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &hardware_configuration__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t hardware_configuration__pack_to_buffer
+ (const HardwareConfiguration *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &hardware_configuration__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+HardwareConfiguration *
+ hardware_configuration__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (HardwareConfiguration *)
+ protobuf_c_message_unpack (&hardware_configuration__descriptor,
+ allocator, len, data);
+}
+void hardware_configuration__free_unpacked
+ (HardwareConfiguration *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &hardware_configuration__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor hardware_configuration__field_descriptors[5] =
+{
+ {
+ "Dancers",
+ 1,
+ PROTOBUF_C_LABEL_REPEATED,
+ PROTOBUF_C_TYPE_MESSAGE,
+ offsetof(HardwareConfiguration, n_dancers),
+ offsetof(HardwareConfiguration, dancers),
+ &hardware_dancer__descriptor,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Dispensers",
+ 2,
+ PROTOBUF_C_LABEL_REPEATED,
+ PROTOBUF_C_TYPE_MESSAGE,
+ offsetof(HardwareConfiguration, n_dispensers),
+ offsetof(HardwareConfiguration, dispensers),
+ &hardware_dispenser__descriptor,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Motors",
+ 3,
+ PROTOBUF_C_LABEL_REPEATED,
+ PROTOBUF_C_TYPE_MESSAGE,
+ offsetof(HardwareConfiguration, n_motors),
+ offsetof(HardwareConfiguration, motors),
+ &hardware_motor__descriptor,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "PidControls",
+ 4,
+ PROTOBUF_C_LABEL_REPEATED,
+ PROTOBUF_C_TYPE_MESSAGE,
+ offsetof(HardwareConfiguration, n_pidcontrols),
+ offsetof(HardwareConfiguration, pidcontrols),
+ &hardware_pid_control__descriptor,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Winders",
+ 5,
+ PROTOBUF_C_LABEL_REPEATED,
+ PROTOBUF_C_TYPE_MESSAGE,
+ offsetof(HardwareConfiguration, n_winders),
+ offsetof(HardwareConfiguration, winders),
+ &hardware_winder__descriptor,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned hardware_configuration__field_indices_by_name[] = {
+ 0, /* field[0] = Dancers */
+ 1, /* field[1] = Dispensers */
+ 2, /* field[2] = Motors */
+ 3, /* field[3] = PidControls */
+ 4, /* field[4] = Winders */
+};
+static const ProtobufCIntRange hardware_configuration__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 5 }
+};
+const ProtobufCMessageDescriptor hardware_configuration__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "HardwareConfiguration",
+ "HardwareConfiguration",
+ "HardwareConfiguration",
+ "",
+ sizeof(HardwareConfiguration),
+ 5,
+ hardware_configuration__field_descriptors,
+ hardware_configuration__field_indices_by_name,
+ 1, hardware_configuration__number_ranges,
+ (ProtobufCMessageInit) hardware_configuration__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareConfiguration.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareConfiguration.pb-c.h
new file mode 100644
index 000000000..d9818c891
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareConfiguration.pb-c.h
@@ -0,0 +1,85 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: HardwareConfiguration.proto */
+
+#ifndef PROTOBUF_C_HardwareConfiguration_2eproto__INCLUDED
+#define PROTOBUF_C_HardwareConfiguration_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+#include "HardwareDancer.pb-c.h"
+#include "HardwareDispenser.pb-c.h"
+#include "HardwareMotor.pb-c.h"
+#include "HardwarePidControl.pb-c.h"
+#include "HardwareWinder.pb-c.h"
+
+typedef struct _HardwareConfiguration HardwareConfiguration;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _HardwareConfiguration
+{
+ ProtobufCMessage base;
+ size_t n_dancers;
+ HardwareDancer **dancers;
+ size_t n_dispensers;
+ HardwareDispenser **dispensers;
+ size_t n_motors;
+ HardwareMotor **motors;
+ size_t n_pidcontrols;
+ HardwarePidControl **pidcontrols;
+ size_t n_winders;
+ HardwareWinder **winders;
+};
+#define HARDWARE_CONFIGURATION__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&hardware_configuration__descriptor) \
+ , 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL }
+
+
+/* HardwareConfiguration methods */
+void hardware_configuration__init
+ (HardwareConfiguration *message);
+size_t hardware_configuration__get_packed_size
+ (const HardwareConfiguration *message);
+size_t hardware_configuration__pack
+ (const HardwareConfiguration *message,
+ uint8_t *out);
+size_t hardware_configuration__pack_to_buffer
+ (const HardwareConfiguration *message,
+ ProtobufCBuffer *buffer);
+HardwareConfiguration *
+ hardware_configuration__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void hardware_configuration__free_unpacked
+ (HardwareConfiguration *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*HardwareConfiguration_Closure)
+ (const HardwareConfiguration *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor hardware_configuration__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_HardwareConfiguration_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareDancer.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareDancer.pb-c.c
new file mode 100644
index 000000000..b838e1382
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareDancer.pb-c.c
@@ -0,0 +1,144 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: HardwareDancer.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "HardwareDancer.pb-c.h"
+void hardware_dancer__init
+ (HardwareDancer *message)
+{
+ static const HardwareDancer init_value = HARDWARE_DANCER__INIT;
+ *message = init_value;
+}
+size_t hardware_dancer__get_packed_size
+ (const HardwareDancer *message)
+{
+ assert(message->base.descriptor == &hardware_dancer__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t hardware_dancer__pack
+ (const HardwareDancer *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &hardware_dancer__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t hardware_dancer__pack_to_buffer
+ (const HardwareDancer *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &hardware_dancer__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+HardwareDancer *
+ hardware_dancer__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (HardwareDancer *)
+ protobuf_c_message_unpack (&hardware_dancer__descriptor,
+ allocator, len, data);
+}
+void hardware_dancer__free_unpacked
+ (HardwareDancer *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &hardware_dancer__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor hardware_dancer__field_descriptors[5] =
+{
+ {
+ "HardwareDancerType",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_ENUM,
+ offsetof(HardwareDancer, has_hardwaredancertype),
+ offsetof(HardwareDancer, hardwaredancertype),
+ &hardware_dancer_type__descriptor,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Gradual",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(HardwareDancer, has_gradual),
+ offsetof(HardwareDancer, gradual),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "K",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(HardwareDancer, has_k),
+ offsetof(HardwareDancer, k),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "X",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(HardwareDancer, has_x),
+ offsetof(HardwareDancer, x),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "PulsePerMmSpring",
+ 5,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(HardwareDancer, has_pulsepermmspring),
+ offsetof(HardwareDancer, pulsepermmspring),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned hardware_dancer__field_indices_by_name[] = {
+ 1, /* field[1] = Gradual */
+ 0, /* field[0] = HardwareDancerType */
+ 2, /* field[2] = K */
+ 4, /* field[4] = PulsePerMmSpring */
+ 3, /* field[3] = X */
+};
+static const ProtobufCIntRange hardware_dancer__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 5 }
+};
+const ProtobufCMessageDescriptor hardware_dancer__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "HardwareDancer",
+ "HardwareDancer",
+ "HardwareDancer",
+ "",
+ sizeof(HardwareDancer),
+ 5,
+ hardware_dancer__field_descriptors,
+ hardware_dancer__field_indices_by_name,
+ 1, hardware_dancer__number_ranges,
+ (ProtobufCMessageInit) hardware_dancer__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareDancer.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareDancer.pb-c.h
new file mode 100644
index 000000000..19bd4d967
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareDancer.pb-c.h
@@ -0,0 +1,81 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: HardwareDancer.proto */
+
+#ifndef PROTOBUF_C_HardwareDancer_2eproto__INCLUDED
+#define PROTOBUF_C_HardwareDancer_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+#include "HardwareDancerType.pb-c.h"
+
+typedef struct _HardwareDancer HardwareDancer;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _HardwareDancer
+{
+ ProtobufCMessage base;
+ protobuf_c_boolean has_hardwaredancertype;
+ HardwareDancerType hardwaredancertype;
+ protobuf_c_boolean has_gradual;
+ protobuf_c_boolean gradual;
+ protobuf_c_boolean has_k;
+ double k;
+ protobuf_c_boolean has_x;
+ double x;
+ protobuf_c_boolean has_pulsepermmspring;
+ int32_t pulsepermmspring;
+};
+#define HARDWARE_DANCER__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&hardware_dancer__descriptor) \
+ , 0, HARDWARE_DANCER_TYPE__RightDancer, 0, 0, 0, 0, 0, 0, 0, 0 }
+
+
+/* HardwareDancer methods */
+void hardware_dancer__init
+ (HardwareDancer *message);
+size_t hardware_dancer__get_packed_size
+ (const HardwareDancer *message);
+size_t hardware_dancer__pack
+ (const HardwareDancer *message,
+ uint8_t *out);
+size_t hardware_dancer__pack_to_buffer
+ (const HardwareDancer *message,
+ ProtobufCBuffer *buffer);
+HardwareDancer *
+ hardware_dancer__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void hardware_dancer__free_unpacked
+ (HardwareDancer *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*HardwareDancer_Closure)
+ (const HardwareDancer *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor hardware_dancer__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_HardwareDancer_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareDancerType.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareDancerType.pb-c.c
new file mode 100644
index 000000000..2f73b763a
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareDancerType.pb-c.c
@@ -0,0 +1,39 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: HardwareDancerType.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "HardwareDancerType.pb-c.h"
+static const ProtobufCEnumValue hardware_dancer_type__enum_values_by_number[3] =
+{
+ { "RightDancer", "HARDWARE_DANCER_TYPE__RightDancer", 0 },
+ { "MiddleDancer", "HARDWARE_DANCER_TYPE__MiddleDancer", 1 },
+ { "LeftDancer", "HARDWARE_DANCER_TYPE__LeftDancer", 2 },
+};
+static const ProtobufCIntRange hardware_dancer_type__value_ranges[] = {
+{0, 0},{0, 3}
+};
+static const ProtobufCEnumValueIndex hardware_dancer_type__enum_values_by_name[3] =
+{
+ { "LeftDancer", 2 },
+ { "MiddleDancer", 1 },
+ { "RightDancer", 0 },
+};
+const ProtobufCEnumDescriptor hardware_dancer_type__descriptor =
+{
+ PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
+ "HardwareDancerType",
+ "HardwareDancerType",
+ "HardwareDancerType",
+ "",
+ 3,
+ hardware_dancer_type__enum_values_by_number,
+ 3,
+ hardware_dancer_type__enum_values_by_name,
+ 1,
+ hardware_dancer_type__value_ranges,
+ NULL,NULL,NULL,NULL /* reserved[1234] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareDancerType.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareDancerType.pb-c.h
new file mode 100644
index 000000000..ddee709ad
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareDancerType.pb-c.h
@@ -0,0 +1,44 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: HardwareDancerType.proto */
+
+#ifndef PROTOBUF_C_HardwareDancerType_2eproto__INCLUDED
+#define PROTOBUF_C_HardwareDancerType_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+
+
+/* --- enums --- */
+
+typedef enum _HardwareDancerType {
+ HARDWARE_DANCER_TYPE__RightDancer = 0,
+ HARDWARE_DANCER_TYPE__MiddleDancer = 1,
+ HARDWARE_DANCER_TYPE__LeftDancer = 2
+ PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(HARDWARE_DANCER_TYPE)
+} HardwareDancerType;
+
+/* --- messages --- */
+
+/* --- per-message closures --- */
+
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCEnumDescriptor hardware_dancer_type__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_HardwareDancerType_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareDispenser.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareDispenser.pb-c.c
new file mode 100644
index 000000000..1691150ab
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareDispenser.pb-c.c
@@ -0,0 +1,274 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: HardwareDispenser.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "HardwareDispenser.pb-c.h"
+void hardware_dispenser__init
+ (HardwareDispenser *message)
+{
+ static const HardwareDispenser init_value = HARDWARE_DISPENSER__INIT;
+ *message = init_value;
+}
+size_t hardware_dispenser__get_packed_size
+ (const HardwareDispenser *message)
+{
+ assert(message->base.descriptor == &hardware_dispenser__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t hardware_dispenser__pack
+ (const HardwareDispenser *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &hardware_dispenser__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t hardware_dispenser__pack_to_buffer
+ (const HardwareDispenser *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &hardware_dispenser__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+HardwareDispenser *
+ hardware_dispenser__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (HardwareDispenser *)
+ protobuf_c_message_unpack (&hardware_dispenser__descriptor,
+ allocator, len, data);
+}
+void hardware_dispenser__free_unpacked
+ (HardwareDispenser *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &hardware_dispenser__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor hardware_dispenser__field_descriptors[15] =
+{
+ {
+ "HardwareDispenserType",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_ENUM,
+ offsetof(HardwareDispenser, has_hardwaredispensertype),
+ offsetof(HardwareDispenser, hardwaredispensertype),
+ &hardware_dispenser_type__descriptor,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "NlPerPulse",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(HardwareDispenser, has_nlperpulse),
+ offsetof(HardwareDispenser, nlperpulse),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Capacity",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(HardwareDispenser, has_capacity),
+ offsetof(HardwareDispenser, capacity),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "MinFrequency",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(HardwareDispenser, has_minfrequency),
+ offsetof(HardwareDispenser, minfrequency),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "MaxFrequency",
+ 5,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(HardwareDispenser, has_maxfrequency),
+ offsetof(HardwareDispenser, maxfrequency),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "MinMicroStep",
+ 6,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(HardwareDispenser, has_minmicrostep),
+ offsetof(HardwareDispenser, minmicrostep),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "MaxMicroStep",
+ 7,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(HardwareDispenser, has_maxmicrostep),
+ offsetof(HardwareDispenser, maxmicrostep),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "CorrectionGain",
+ 8,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(HardwareDispenser, has_correctiongain),
+ offsetof(HardwareDispenser, correctiongain),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "RatioToDryerSpeed",
+ 9,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(HardwareDispenser, has_ratiotodryerspeed),
+ offsetof(HardwareDispenser, ratiotodryerspeed),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Kp",
+ 10,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(HardwareDispenser, has_kp),
+ offsetof(HardwareDispenser, kp),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Ki",
+ 11,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(HardwareDispenser, has_ki),
+ offsetof(HardwareDispenser, ki),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Kd",
+ 12,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(HardwareDispenser, has_kd),
+ offsetof(HardwareDispenser, kd),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "ChangeSlope",
+ 13,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(HardwareDispenser, has_changeslope),
+ offsetof(HardwareDispenser, changeslope),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "HighLengthMicroSecond",
+ 14,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(HardwareDispenser, has_highlengthmicrosecond),
+ offsetof(HardwareDispenser, highlengthmicrosecond),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "ControlTiming",
+ 15,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(HardwareDispenser, has_controltiming),
+ offsetof(HardwareDispenser, controltiming),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned hardware_dispenser__field_indices_by_name[] = {
+ 2, /* field[2] = Capacity */
+ 12, /* field[12] = ChangeSlope */
+ 14, /* field[14] = ControlTiming */
+ 7, /* field[7] = CorrectionGain */
+ 0, /* field[0] = HardwareDispenserType */
+ 13, /* field[13] = HighLengthMicroSecond */
+ 11, /* field[11] = Kd */
+ 10, /* field[10] = Ki */
+ 9, /* field[9] = Kp */
+ 4, /* field[4] = MaxFrequency */
+ 6, /* field[6] = MaxMicroStep */
+ 3, /* field[3] = MinFrequency */
+ 5, /* field[5] = MinMicroStep */
+ 1, /* field[1] = NlPerPulse */
+ 8, /* field[8] = RatioToDryerSpeed */
+};
+static const ProtobufCIntRange hardware_dispenser__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 15 }
+};
+const ProtobufCMessageDescriptor hardware_dispenser__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "HardwareDispenser",
+ "HardwareDispenser",
+ "HardwareDispenser",
+ "",
+ sizeof(HardwareDispenser),
+ 15,
+ hardware_dispenser__field_descriptors,
+ hardware_dispenser__field_indices_by_name,
+ 1, hardware_dispenser__number_ranges,
+ (ProtobufCMessageInit) hardware_dispenser__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareDispenser.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareDispenser.pb-c.h
new file mode 100644
index 000000000..bde6bad40
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareDispenser.pb-c.h
@@ -0,0 +1,101 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: HardwareDispenser.proto */
+
+#ifndef PROTOBUF_C_HardwareDispenser_2eproto__INCLUDED
+#define PROTOBUF_C_HardwareDispenser_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+#include "HardwareDispenserType.pb-c.h"
+
+typedef struct _HardwareDispenser HardwareDispenser;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _HardwareDispenser
+{
+ ProtobufCMessage base;
+ protobuf_c_boolean has_hardwaredispensertype;
+ HardwareDispenserType hardwaredispensertype;
+ protobuf_c_boolean has_nlperpulse;
+ double nlperpulse;
+ protobuf_c_boolean has_capacity;
+ double capacity;
+ protobuf_c_boolean has_minfrequency;
+ int32_t minfrequency;
+ protobuf_c_boolean has_maxfrequency;
+ int32_t maxfrequency;
+ protobuf_c_boolean has_minmicrostep;
+ int32_t minmicrostep;
+ protobuf_c_boolean has_maxmicrostep;
+ int32_t maxmicrostep;
+ protobuf_c_boolean has_correctiongain;
+ double correctiongain;
+ protobuf_c_boolean has_ratiotodryerspeed;
+ double ratiotodryerspeed;
+ protobuf_c_boolean has_kp;
+ double kp;
+ protobuf_c_boolean has_ki;
+ double ki;
+ protobuf_c_boolean has_kd;
+ double kd;
+ protobuf_c_boolean has_changeslope;
+ double changeslope;
+ protobuf_c_boolean has_highlengthmicrosecond;
+ double highlengthmicrosecond;
+ protobuf_c_boolean has_controltiming;
+ int32_t controltiming;
+};
+#define HARDWARE_DISPENSER__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&hardware_dispenser__descriptor) \
+ , 0, HARDWARE_DISPENSER_TYPE__StandardDispenser, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+
+
+/* HardwareDispenser methods */
+void hardware_dispenser__init
+ (HardwareDispenser *message);
+size_t hardware_dispenser__get_packed_size
+ (const HardwareDispenser *message);
+size_t hardware_dispenser__pack
+ (const HardwareDispenser *message,
+ uint8_t *out);
+size_t hardware_dispenser__pack_to_buffer
+ (const HardwareDispenser *message,
+ ProtobufCBuffer *buffer);
+HardwareDispenser *
+ hardware_dispenser__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void hardware_dispenser__free_unpacked
+ (HardwareDispenser *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*HardwareDispenser_Closure)
+ (const HardwareDispenser *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor hardware_dispenser__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_HardwareDispenser_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareDispenserType.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareDispenserType.pb-c.c
new file mode 100644
index 000000000..723d41bc3
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareDispenserType.pb-c.c
@@ -0,0 +1,35 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: HardwareDispenserType.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "HardwareDispenserType.pb-c.h"
+static const ProtobufCEnumValue hardware_dispenser_type__enum_values_by_number[1] =
+{
+ { "StandardDispenser", "HARDWARE_DISPENSER_TYPE__StandardDispenser", 0 },
+};
+static const ProtobufCIntRange hardware_dispenser_type__value_ranges[] = {
+{0, 0},{0, 1}
+};
+static const ProtobufCEnumValueIndex hardware_dispenser_type__enum_values_by_name[1] =
+{
+ { "StandardDispenser", 0 },
+};
+const ProtobufCEnumDescriptor hardware_dispenser_type__descriptor =
+{
+ PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
+ "HardwareDispenserType",
+ "HardwareDispenserType",
+ "HardwareDispenserType",
+ "",
+ 1,
+ hardware_dispenser_type__enum_values_by_number,
+ 1,
+ hardware_dispenser_type__enum_values_by_name,
+ 1,
+ hardware_dispenser_type__value_ranges,
+ NULL,NULL,NULL,NULL /* reserved[1234] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareDispenserType.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareDispenserType.pb-c.h
new file mode 100644
index 000000000..cd6319f60
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareDispenserType.pb-c.h
@@ -0,0 +1,42 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: HardwareDispenserType.proto */
+
+#ifndef PROTOBUF_C_HardwareDispenserType_2eproto__INCLUDED
+#define PROTOBUF_C_HardwareDispenserType_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+
+
+/* --- enums --- */
+
+typedef enum _HardwareDispenserType {
+ HARDWARE_DISPENSER_TYPE__StandardDispenser = 0
+ PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(HARDWARE_DISPENSER_TYPE)
+} HardwareDispenserType;
+
+/* --- messages --- */
+
+/* --- per-message closures --- */
+
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCEnumDescriptor hardware_dispenser_type__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_HardwareDispenserType_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareMotor.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareMotor.pb-c.c
new file mode 100644
index 000000000..68b02ae76
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareMotor.pb-c.c
@@ -0,0 +1,274 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: HardwareMotor.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "HardwareMotor.pb-c.h"
+void hardware_motor__init
+ (HardwareMotor *message)
+{
+ static const HardwareMotor init_value = HARDWARE_MOTOR__INIT;
+ *message = init_value;
+}
+size_t hardware_motor__get_packed_size
+ (const HardwareMotor *message)
+{
+ assert(message->base.descriptor == &hardware_motor__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t hardware_motor__pack
+ (const HardwareMotor *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &hardware_motor__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t hardware_motor__pack_to_buffer
+ (const HardwareMotor *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &hardware_motor__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+HardwareMotor *
+ hardware_motor__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (HardwareMotor *)
+ protobuf_c_message_unpack (&hardware_motor__descriptor,
+ allocator, len, data);
+}
+void hardware_motor__free_unpacked
+ (HardwareMotor *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &hardware_motor__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor hardware_motor__field_descriptors[15] =
+{
+ {
+ "HardwareMotorType",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_ENUM,
+ offsetof(HardwareMotor, has_hardwaremotortype),
+ offsetof(HardwareMotor, hardwaremotortype),
+ &hardware_motor_type__descriptor,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "MinFrequency",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(HardwareMotor, has_minfrequency),
+ offsetof(HardwareMotor, minfrequency),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "MaxFrequency",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(HardwareMotor, has_maxfrequency),
+ offsetof(HardwareMotor, maxfrequency),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "MinMicroStep",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(HardwareMotor, has_minmicrostep),
+ offsetof(HardwareMotor, minmicrostep),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "MaxMicroStep",
+ 5,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(HardwareMotor, has_maxmicrostep),
+ offsetof(HardwareMotor, maxmicrostep),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "LinearRatio",
+ 6,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(HardwareMotor, has_linearratio),
+ offsetof(HardwareMotor, linearratio),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "MedianPosition",
+ 7,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(HardwareMotor, has_medianposition),
+ offsetof(HardwareMotor, medianposition),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "CorrectionGain",
+ 8,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(HardwareMotor, has_correctiongain),
+ offsetof(HardwareMotor, correctiongain),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "RatioToDryerSpeed",
+ 9,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(HardwareMotor, has_ratiotodryerspeed),
+ offsetof(HardwareMotor, ratiotodryerspeed),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Kp",
+ 10,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(HardwareMotor, has_kp),
+ offsetof(HardwareMotor, kp),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Ki",
+ 11,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(HardwareMotor, has_ki),
+ offsetof(HardwareMotor, ki),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Kd",
+ 12,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(HardwareMotor, has_kd),
+ offsetof(HardwareMotor, kd),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "ChangeSlope",
+ 13,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(HardwareMotor, has_changeslope),
+ offsetof(HardwareMotor, changeslope),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "HighLengthMicroSecond",
+ 14,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(HardwareMotor, has_highlengthmicrosecond),
+ offsetof(HardwareMotor, highlengthmicrosecond),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "SpeedMaster",
+ 15,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(HardwareMotor, has_speedmaster),
+ offsetof(HardwareMotor, speedmaster),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned hardware_motor__field_indices_by_name[] = {
+ 12, /* field[12] = ChangeSlope */
+ 7, /* field[7] = CorrectionGain */
+ 0, /* field[0] = HardwareMotorType */
+ 13, /* field[13] = HighLengthMicroSecond */
+ 11, /* field[11] = Kd */
+ 10, /* field[10] = Ki */
+ 9, /* field[9] = Kp */
+ 5, /* field[5] = LinearRatio */
+ 2, /* field[2] = MaxFrequency */
+ 4, /* field[4] = MaxMicroStep */
+ 6, /* field[6] = MedianPosition */
+ 1, /* field[1] = MinFrequency */
+ 3, /* field[3] = MinMicroStep */
+ 8, /* field[8] = RatioToDryerSpeed */
+ 14, /* field[14] = SpeedMaster */
+};
+static const ProtobufCIntRange hardware_motor__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 15 }
+};
+const ProtobufCMessageDescriptor hardware_motor__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "HardwareMotor",
+ "HardwareMotor",
+ "HardwareMotor",
+ "",
+ sizeof(HardwareMotor),
+ 15,
+ hardware_motor__field_descriptors,
+ hardware_motor__field_indices_by_name,
+ 1, hardware_motor__number_ranges,
+ (ProtobufCMessageInit) hardware_motor__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareMotor.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareMotor.pb-c.h
new file mode 100644
index 000000000..50c29e576
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareMotor.pb-c.h
@@ -0,0 +1,101 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: HardwareMotor.proto */
+
+#ifndef PROTOBUF_C_HardwareMotor_2eproto__INCLUDED
+#define PROTOBUF_C_HardwareMotor_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+#include "HardwareMotorType.pb-c.h"
+
+typedef struct _HardwareMotor HardwareMotor;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _HardwareMotor
+{
+ ProtobufCMessage base;
+ protobuf_c_boolean has_hardwaremotortype;
+ HardwareMotorType hardwaremotortype;
+ protobuf_c_boolean has_minfrequency;
+ int32_t minfrequency;
+ protobuf_c_boolean has_maxfrequency;
+ int32_t maxfrequency;
+ protobuf_c_boolean has_minmicrostep;
+ int32_t minmicrostep;
+ protobuf_c_boolean has_maxmicrostep;
+ int32_t maxmicrostep;
+ protobuf_c_boolean has_linearratio;
+ double linearratio;
+ protobuf_c_boolean has_medianposition;
+ int32_t medianposition;
+ protobuf_c_boolean has_correctiongain;
+ double correctiongain;
+ protobuf_c_boolean has_ratiotodryerspeed;
+ double ratiotodryerspeed;
+ protobuf_c_boolean has_kp;
+ double kp;
+ protobuf_c_boolean has_ki;
+ double ki;
+ protobuf_c_boolean has_kd;
+ double kd;
+ protobuf_c_boolean has_changeslope;
+ double changeslope;
+ protobuf_c_boolean has_highlengthmicrosecond;
+ double highlengthmicrosecond;
+ protobuf_c_boolean has_speedmaster;
+ protobuf_c_boolean speedmaster;
+};
+#define HARDWARE_MOTOR__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&hardware_motor__descriptor) \
+ , 0, HARDWARE_MOTOR_TYPE__FeederMotor, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+
+
+/* HardwareMotor methods */
+void hardware_motor__init
+ (HardwareMotor *message);
+size_t hardware_motor__get_packed_size
+ (const HardwareMotor *message);
+size_t hardware_motor__pack
+ (const HardwareMotor *message,
+ uint8_t *out);
+size_t hardware_motor__pack_to_buffer
+ (const HardwareMotor *message,
+ ProtobufCBuffer *buffer);
+HardwareMotor *
+ hardware_motor__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void hardware_motor__free_unpacked
+ (HardwareMotor *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*HardwareMotor_Closure)
+ (const HardwareMotor *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor hardware_motor__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_HardwareMotor_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareMotorType.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareMotorType.pb-c.c
new file mode 100644
index 000000000..70f2b41fd
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareMotorType.pb-c.c
@@ -0,0 +1,41 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: HardwareMotorType.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "HardwareMotorType.pb-c.h"
+static const ProtobufCEnumValue hardware_motor_type__enum_values_by_number[4] =
+{
+ { "FeederMotor", "HARDWARE_MOTOR_TYPE__FeederMotor", 0 },
+ { "DryerMotor", "HARDWARE_MOTOR_TYPE__DryerMotor", 1 },
+ { "PoolerMotor", "HARDWARE_MOTOR_TYPE__PoolerMotor", 2 },
+ { "WinderMotor", "HARDWARE_MOTOR_TYPE__WinderMotor", 3 },
+};
+static const ProtobufCIntRange hardware_motor_type__value_ranges[] = {
+{0, 0},{0, 4}
+};
+static const ProtobufCEnumValueIndex hardware_motor_type__enum_values_by_name[4] =
+{
+ { "DryerMotor", 1 },
+ { "FeederMotor", 0 },
+ { "PoolerMotor", 2 },
+ { "WinderMotor", 3 },
+};
+const ProtobufCEnumDescriptor hardware_motor_type__descriptor =
+{
+ PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
+ "HardwareMotorType",
+ "HardwareMotorType",
+ "HardwareMotorType",
+ "",
+ 4,
+ hardware_motor_type__enum_values_by_number,
+ 4,
+ hardware_motor_type__enum_values_by_name,
+ 1,
+ hardware_motor_type__value_ranges,
+ NULL,NULL,NULL,NULL /* reserved[1234] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareMotorType.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareMotorType.pb-c.h
new file mode 100644
index 000000000..a72ba2d7c
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareMotorType.pb-c.h
@@ -0,0 +1,45 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: HardwareMotorType.proto */
+
+#ifndef PROTOBUF_C_HardwareMotorType_2eproto__INCLUDED
+#define PROTOBUF_C_HardwareMotorType_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+
+
+/* --- enums --- */
+
+typedef enum _HardwareMotorType {
+ HARDWARE_MOTOR_TYPE__FeederMotor = 0,
+ HARDWARE_MOTOR_TYPE__DryerMotor = 1,
+ HARDWARE_MOTOR_TYPE__PoolerMotor = 2,
+ HARDWARE_MOTOR_TYPE__WinderMotor = 3
+ PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(HARDWARE_MOTOR_TYPE)
+} HardwareMotorType;
+
+/* --- messages --- */
+
+/* --- per-message closures --- */
+
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCEnumDescriptor hardware_motor_type__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_HardwareMotorType_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwarePidControl.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwarePidControl.pb-c.c
new file mode 100644
index 000000000..8eb96d16d
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwarePidControl.pb-c.c
@@ -0,0 +1,274 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: HardwarePidControl.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "HardwarePidControl.pb-c.h"
+void hardware_pid_control__init
+ (HardwarePidControl *message)
+{
+ static const HardwarePidControl init_value = HARDWARE_PID_CONTROL__INIT;
+ *message = init_value;
+}
+size_t hardware_pid_control__get_packed_size
+ (const HardwarePidControl *message)
+{
+ assert(message->base.descriptor == &hardware_pid_control__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t hardware_pid_control__pack
+ (const HardwarePidControl *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &hardware_pid_control__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t hardware_pid_control__pack_to_buffer
+ (const HardwarePidControl *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &hardware_pid_control__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+HardwarePidControl *
+ hardware_pid_control__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (HardwarePidControl *)
+ protobuf_c_message_unpack (&hardware_pid_control__descriptor,
+ allocator, len, data);
+}
+void hardware_pid_control__free_unpacked
+ (HardwarePidControl *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &hardware_pid_control__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor hardware_pid_control__field_descriptors[15] =
+{
+ {
+ "HardwarePidControlType",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_ENUM,
+ offsetof(HardwarePidControl, has_hardwarepidcontroltype),
+ offsetof(HardwarePidControl, hardwarepidcontroltype),
+ &hardware_pid_control_type__descriptor,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "OutputProportionalPowerLimit",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(HardwarePidControl, has_outputproportionalpowerlimit),
+ offsetof(HardwarePidControl, outputproportionalpowerlimit),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "OutputProportionalBand",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(HardwarePidControl, has_outputproportionalband),
+ offsetof(HardwarePidControl, outputproportionalband),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "IntegralTime",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(HardwarePidControl, has_integraltime),
+ offsetof(HardwarePidControl, integraltime),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "DerivativeTime",
+ 5,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(HardwarePidControl, has_derivativetime),
+ offsetof(HardwarePidControl, derivativetime),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "SensorCorrectionAdjustment",
+ 6,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(HardwarePidControl, has_sensorcorrectionadjustment),
+ offsetof(HardwarePidControl, sensorcorrectionadjustment),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "SensorMinValue",
+ 7,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(HardwarePidControl, has_sensorminvalue),
+ offsetof(HardwarePidControl, sensorminvalue),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "SensorMaxValue",
+ 8,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(HardwarePidControl, has_sensormaxvalue),
+ offsetof(HardwarePidControl, sensormaxvalue),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "SetPointRampRateorSoftStartRamp",
+ 9,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(HardwarePidControl, has_setpointramprateorsoftstartramp),
+ offsetof(HardwarePidControl, setpointramprateorsoftstartramp),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "SetPointControlOutputRate",
+ 10,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(HardwarePidControl, has_setpointcontroloutputrate),
+ offsetof(HardwarePidControl, setpointcontroloutputrate),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "ControlOutputType",
+ 11,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(HardwarePidControl, has_controloutputtype),
+ offsetof(HardwarePidControl, controloutputtype),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "SsrControlOutputType",
+ 12,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(HardwarePidControl, has_ssrcontroloutputtype),
+ offsetof(HardwarePidControl, ssrcontroloutputtype),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "OutputOnOffHysteresisValue",
+ 13,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(HardwarePidControl, has_outputonoffhysteresisvalue),
+ offsetof(HardwarePidControl, outputonoffhysteresisvalue),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "ProcessVariableSamplingRate",
+ 14,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(HardwarePidControl, has_processvariablesamplingrate),
+ offsetof(HardwarePidControl, processvariablesamplingrate),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "PvInputFilterFactorMode",
+ 15,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(HardwarePidControl, has_pvinputfilterfactormode),
+ offsetof(HardwarePidControl, pvinputfilterfactormode),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned hardware_pid_control__field_indices_by_name[] = {
+ 10, /* field[10] = ControlOutputType */
+ 4, /* field[4] = DerivativeTime */
+ 0, /* field[0] = HardwarePidControlType */
+ 3, /* field[3] = IntegralTime */
+ 12, /* field[12] = OutputOnOffHysteresisValue */
+ 2, /* field[2] = OutputProportionalBand */
+ 1, /* field[1] = OutputProportionalPowerLimit */
+ 13, /* field[13] = ProcessVariableSamplingRate */
+ 14, /* field[14] = PvInputFilterFactorMode */
+ 5, /* field[5] = SensorCorrectionAdjustment */
+ 7, /* field[7] = SensorMaxValue */
+ 6, /* field[6] = SensorMinValue */
+ 9, /* field[9] = SetPointControlOutputRate */
+ 8, /* field[8] = SetPointRampRateorSoftStartRamp */
+ 11, /* field[11] = SsrControlOutputType */
+};
+static const ProtobufCIntRange hardware_pid_control__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 15 }
+};
+const ProtobufCMessageDescriptor hardware_pid_control__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "HardwarePidControl",
+ "HardwarePidControl",
+ "HardwarePidControl",
+ "",
+ sizeof(HardwarePidControl),
+ 15,
+ hardware_pid_control__field_descriptors,
+ hardware_pid_control__field_indices_by_name,
+ 1, hardware_pid_control__number_ranges,
+ (ProtobufCMessageInit) hardware_pid_control__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwarePidControl.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwarePidControl.pb-c.h
new file mode 100644
index 000000000..2a316b5ab
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwarePidControl.pb-c.h
@@ -0,0 +1,101 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: HardwarePidControl.proto */
+
+#ifndef PROTOBUF_C_HardwarePidControl_2eproto__INCLUDED
+#define PROTOBUF_C_HardwarePidControl_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+#include "HardwarePidControlType.pb-c.h"
+
+typedef struct _HardwarePidControl HardwarePidControl;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _HardwarePidControl
+{
+ ProtobufCMessage base;
+ protobuf_c_boolean has_hardwarepidcontroltype;
+ HardwarePidControlType hardwarepidcontroltype;
+ protobuf_c_boolean has_outputproportionalpowerlimit;
+ int32_t outputproportionalpowerlimit;
+ protobuf_c_boolean has_outputproportionalband;
+ int32_t outputproportionalband;
+ protobuf_c_boolean has_integraltime;
+ int32_t integraltime;
+ protobuf_c_boolean has_derivativetime;
+ int32_t derivativetime;
+ protobuf_c_boolean has_sensorcorrectionadjustment;
+ int32_t sensorcorrectionadjustment;
+ protobuf_c_boolean has_sensorminvalue;
+ int32_t sensorminvalue;
+ protobuf_c_boolean has_sensormaxvalue;
+ int32_t sensormaxvalue;
+ protobuf_c_boolean has_setpointramprateorsoftstartramp;
+ int32_t setpointramprateorsoftstartramp;
+ protobuf_c_boolean has_setpointcontroloutputrate;
+ int32_t setpointcontroloutputrate;
+ protobuf_c_boolean has_controloutputtype;
+ int32_t controloutputtype;
+ protobuf_c_boolean has_ssrcontroloutputtype;
+ int32_t ssrcontroloutputtype;
+ protobuf_c_boolean has_outputonoffhysteresisvalue;
+ int32_t outputonoffhysteresisvalue;
+ protobuf_c_boolean has_processvariablesamplingrate;
+ int32_t processvariablesamplingrate;
+ protobuf_c_boolean has_pvinputfilterfactormode;
+ int32_t pvinputfilterfactormode;
+};
+#define HARDWARE_PID_CONTROL__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&hardware_pid_control__descriptor) \
+ , 0, HARDWARE_PID_CONTROL_TYPE__DryerHeater1000w, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+
+
+/* HardwarePidControl methods */
+void hardware_pid_control__init
+ (HardwarePidControl *message);
+size_t hardware_pid_control__get_packed_size
+ (const HardwarePidControl *message);
+size_t hardware_pid_control__pack
+ (const HardwarePidControl *message,
+ uint8_t *out);
+size_t hardware_pid_control__pack_to_buffer
+ (const HardwarePidControl *message,
+ ProtobufCBuffer *buffer);
+HardwarePidControl *
+ hardware_pid_control__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void hardware_pid_control__free_unpacked
+ (HardwarePidControl *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*HardwarePidControl_Closure)
+ (const HardwarePidControl *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor hardware_pid_control__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_HardwarePidControl_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwarePidControlType.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwarePidControlType.pb-c.c
new file mode 100644
index 000000000..a64913666
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwarePidControlType.pb-c.c
@@ -0,0 +1,61 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: HardwarePidControlType.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "HardwarePidControlType.pb-c.h"
+static const ProtobufCEnumValue hardware_pid_control_type__enum_values_by_number[14] =
+{
+ { "DryerHeater1000w", "HARDWARE_PID_CONTROL_TYPE__DryerHeater1000w", 0 },
+ { "DryerHeater200w1", "HARDWARE_PID_CONTROL_TYPE__DryerHeater200w1", 1 },
+ { "DryerHeater200w2", "HARDWARE_PID_CONTROL_TYPE__DryerHeater200w2", 2 },
+ { "HeadHeaterZ1", "HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ1", 3 },
+ { "HeadHeaterZ2", "HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ2", 4 },
+ { "HeadHeaterZ3", "HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ3", 5 },
+ { "HeadHeaterZ4", "HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ4", 6 },
+ { "MixerHeater", "HARDWARE_PID_CONTROL_TYPE__MixerHeater", 7 },
+ { "WasteControl", "HARDWARE_PID_CONTROL_TYPE__WasteControl", 8 },
+ { "MotorDryer", "HARDWARE_PID_CONTROL_TYPE__MotorDryer", 9 },
+ { "MotorFeeder", "HARDWARE_PID_CONTROL_TYPE__MotorFeeder", 10 },
+ { "MotorPooler", "HARDWARE_PID_CONTROL_TYPE__MotorPooler", 11 },
+ { "MotorWinder", "HARDWARE_PID_CONTROL_TYPE__MotorWinder", 12 },
+ { "DryerHeater400", "HARDWARE_PID_CONTROL_TYPE__DryerHeater400", 13 },
+};
+static const ProtobufCIntRange hardware_pid_control_type__value_ranges[] = {
+{0, 0},{0, 14}
+};
+static const ProtobufCEnumValueIndex hardware_pid_control_type__enum_values_by_name[14] =
+{
+ { "DryerHeater1000w", 0 },
+ { "DryerHeater200w1", 1 },
+ { "DryerHeater200w2", 2 },
+ { "DryerHeater400", 13 },
+ { "HeadHeaterZ1", 3 },
+ { "HeadHeaterZ2", 4 },
+ { "HeadHeaterZ3", 5 },
+ { "HeadHeaterZ4", 6 },
+ { "MixerHeater", 7 },
+ { "MotorDryer", 9 },
+ { "MotorFeeder", 10 },
+ { "MotorPooler", 11 },
+ { "MotorWinder", 12 },
+ { "WasteControl", 8 },
+};
+const ProtobufCEnumDescriptor hardware_pid_control_type__descriptor =
+{
+ PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
+ "HardwarePidControlType",
+ "HardwarePidControlType",
+ "HardwarePidControlType",
+ "",
+ 14,
+ hardware_pid_control_type__enum_values_by_number,
+ 14,
+ hardware_pid_control_type__enum_values_by_name,
+ 1,
+ hardware_pid_control_type__value_ranges,
+ NULL,NULL,NULL,NULL /* reserved[1234] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwarePidControlType.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwarePidControlType.pb-c.h
new file mode 100644
index 000000000..8bcea3bd0
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwarePidControlType.pb-c.h
@@ -0,0 +1,55 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: HardwarePidControlType.proto */
+
+#ifndef PROTOBUF_C_HardwarePidControlType_2eproto__INCLUDED
+#define PROTOBUF_C_HardwarePidControlType_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+
+
+/* --- enums --- */
+
+typedef enum _HardwarePidControlType {
+ HARDWARE_PID_CONTROL_TYPE__DryerHeater1000w = 0,
+ HARDWARE_PID_CONTROL_TYPE__DryerHeater200w1 = 1,
+ HARDWARE_PID_CONTROL_TYPE__DryerHeater200w2 = 2,
+ HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ1 = 3,
+ HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ2 = 4,
+ HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ3 = 5,
+ HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ4 = 6,
+ HARDWARE_PID_CONTROL_TYPE__MixerHeater = 7,
+ HARDWARE_PID_CONTROL_TYPE__WasteControl = 8,
+ HARDWARE_PID_CONTROL_TYPE__MotorDryer = 9,
+ HARDWARE_PID_CONTROL_TYPE__MotorFeeder = 10,
+ HARDWARE_PID_CONTROL_TYPE__MotorPooler = 11,
+ HARDWARE_PID_CONTROL_TYPE__MotorWinder = 12,
+ HARDWARE_PID_CONTROL_TYPE__DryerHeater400 = 13
+ PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(HARDWARE_PID_CONTROL_TYPE)
+} HardwarePidControlType;
+
+/* --- messages --- */
+
+/* --- per-message closures --- */
+
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCEnumDescriptor hardware_pid_control_type__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_HardwarePidControlType_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareWinder.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareWinder.pb-c.c
new file mode 100644
index 000000000..2ed95d9a5
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareWinder.pb-c.c
@@ -0,0 +1,105 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: HardwareWinder.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "HardwareWinder.pb-c.h"
+void hardware_winder__init
+ (HardwareWinder *message)
+{
+ static const HardwareWinder init_value = HARDWARE_WINDER__INIT;
+ *message = init_value;
+}
+size_t hardware_winder__get_packed_size
+ (const HardwareWinder *message)
+{
+ assert(message->base.descriptor == &hardware_winder__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t hardware_winder__pack
+ (const HardwareWinder *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &hardware_winder__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t hardware_winder__pack_to_buffer
+ (const HardwareWinder *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &hardware_winder__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+HardwareWinder *
+ hardware_winder__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (HardwareWinder *)
+ protobuf_c_message_unpack (&hardware_winder__descriptor,
+ allocator, len, data);
+}
+void hardware_winder__free_unpacked
+ (HardwareWinder *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &hardware_winder__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor hardware_winder__field_descriptors[2] =
+{
+ {
+ "HardwareWinderType",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_ENUM,
+ offsetof(HardwareWinder, has_hardwarewindertype),
+ offsetof(HardwareWinder, hardwarewindertype),
+ &hardware_winder_type__descriptor,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "MillimeterPerRotation",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(HardwareWinder, has_millimeterperrotation),
+ offsetof(HardwareWinder, millimeterperrotation),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned hardware_winder__field_indices_by_name[] = {
+ 0, /* field[0] = HardwareWinderType */
+ 1, /* field[1] = MillimeterPerRotation */
+};
+static const ProtobufCIntRange hardware_winder__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 2 }
+};
+const ProtobufCMessageDescriptor hardware_winder__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "HardwareWinder",
+ "HardwareWinder",
+ "HardwareWinder",
+ "",
+ sizeof(HardwareWinder),
+ 2,
+ hardware_winder__field_descriptors,
+ hardware_winder__field_indices_by_name,
+ 1, hardware_winder__number_ranges,
+ (ProtobufCMessageInit) hardware_winder__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareWinder.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareWinder.pb-c.h
new file mode 100644
index 000000000..1595e4313
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareWinder.pb-c.h
@@ -0,0 +1,75 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: HardwareWinder.proto */
+
+#ifndef PROTOBUF_C_HardwareWinder_2eproto__INCLUDED
+#define PROTOBUF_C_HardwareWinder_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+#include "HardwareWinderType.pb-c.h"
+
+typedef struct _HardwareWinder HardwareWinder;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _HardwareWinder
+{
+ ProtobufCMessage base;
+ protobuf_c_boolean has_hardwarewindertype;
+ HardwareWinderType hardwarewindertype;
+ protobuf_c_boolean has_millimeterperrotation;
+ int32_t millimeterperrotation;
+};
+#define HARDWARE_WINDER__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&hardware_winder__descriptor) \
+ , 0, HARDWARE_WINDER_TYPE__InternalWinder, 0, 0 }
+
+
+/* HardwareWinder methods */
+void hardware_winder__init
+ (HardwareWinder *message);
+size_t hardware_winder__get_packed_size
+ (const HardwareWinder *message);
+size_t hardware_winder__pack
+ (const HardwareWinder *message,
+ uint8_t *out);
+size_t hardware_winder__pack_to_buffer
+ (const HardwareWinder *message,
+ ProtobufCBuffer *buffer);
+HardwareWinder *
+ hardware_winder__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void hardware_winder__free_unpacked
+ (HardwareWinder *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*HardwareWinder_Closure)
+ (const HardwareWinder *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor hardware_winder__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_HardwareWinder_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareWinderType.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareWinderType.pb-c.c
new file mode 100644
index 000000000..ed168e14d
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareWinderType.pb-c.c
@@ -0,0 +1,35 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: HardwareWinderType.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "HardwareWinderType.pb-c.h"
+static const ProtobufCEnumValue hardware_winder_type__enum_values_by_number[1] =
+{
+ { "InternalWinder", "HARDWARE_WINDER_TYPE__InternalWinder", 0 },
+};
+static const ProtobufCIntRange hardware_winder_type__value_ranges[] = {
+{0, 0},{0, 1}
+};
+static const ProtobufCEnumValueIndex hardware_winder_type__enum_values_by_name[1] =
+{
+ { "InternalWinder", 0 },
+};
+const ProtobufCEnumDescriptor hardware_winder_type__descriptor =
+{
+ PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
+ "HardwareWinderType",
+ "HardwareWinderType",
+ "HardwareWinderType",
+ "",
+ 1,
+ hardware_winder_type__enum_values_by_number,
+ 1,
+ hardware_winder_type__enum_values_by_name,
+ 1,
+ hardware_winder_type__value_ranges,
+ NULL,NULL,NULL,NULL /* reserved[1234] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareWinderType.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareWinderType.pb-c.h
new file mode 100644
index 000000000..952c9ea12
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareWinderType.pb-c.h
@@ -0,0 +1,42 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: HardwareWinderType.proto */
+
+#ifndef PROTOBUF_C_HardwareWinderType_2eproto__INCLUDED
+#define PROTOBUF_C_HardwareWinderType_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+
+
+/* --- enums --- */
+
+typedef enum _HardwareWinderType {
+ HARDWARE_WINDER_TYPE__InternalWinder = 0
+ PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(HARDWARE_WINDER_TYPE)
+} HardwareWinderType;
+
+/* --- messages --- */
+
+/* --- per-message closures --- */
+
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCEnumDescriptor hardware_winder_type__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_HardwareWinderType_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/UploadHardwareConfigurationRequest.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/UploadHardwareConfigurationRequest.pb-c.c
new file mode 100644
index 000000000..160c02c0b
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/UploadHardwareConfigurationRequest.pb-c.c
@@ -0,0 +1,92 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: UploadHardwareConfigurationRequest.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "UploadHardwareConfigurationRequest.pb-c.h"
+void upload_hardware_configuration_request__init
+ (UploadHardwareConfigurationRequest *message)
+{
+ static const UploadHardwareConfigurationRequest init_value = UPLOAD_HARDWARE_CONFIGURATION_REQUEST__INIT;
+ *message = init_value;
+}
+size_t upload_hardware_configuration_request__get_packed_size
+ (const UploadHardwareConfigurationRequest *message)
+{
+ assert(message->base.descriptor == &upload_hardware_configuration_request__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t upload_hardware_configuration_request__pack
+ (const UploadHardwareConfigurationRequest *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &upload_hardware_configuration_request__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t upload_hardware_configuration_request__pack_to_buffer
+ (const UploadHardwareConfigurationRequest *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &upload_hardware_configuration_request__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+UploadHardwareConfigurationRequest *
+ upload_hardware_configuration_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (UploadHardwareConfigurationRequest *)
+ protobuf_c_message_unpack (&upload_hardware_configuration_request__descriptor,
+ allocator, len, data);
+}
+void upload_hardware_configuration_request__free_unpacked
+ (UploadHardwareConfigurationRequest *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &upload_hardware_configuration_request__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor upload_hardware_configuration_request__field_descriptors[1] =
+{
+ {
+ "HardwareConfiguration",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_MESSAGE,
+ 0, /* quantifier_offset */
+ offsetof(UploadHardwareConfigurationRequest, hardwareconfiguration),
+ &hardware_configuration__descriptor,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned upload_hardware_configuration_request__field_indices_by_name[] = {
+ 0, /* field[0] = HardwareConfiguration */
+};
+static const ProtobufCIntRange upload_hardware_configuration_request__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 1 }
+};
+const ProtobufCMessageDescriptor upload_hardware_configuration_request__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "UploadHardwareConfigurationRequest",
+ "UploadHardwareConfigurationRequest",
+ "UploadHardwareConfigurationRequest",
+ "",
+ sizeof(UploadHardwareConfigurationRequest),
+ 1,
+ upload_hardware_configuration_request__field_descriptors,
+ upload_hardware_configuration_request__field_indices_by_name,
+ 1, upload_hardware_configuration_request__number_ranges,
+ (ProtobufCMessageInit) upload_hardware_configuration_request__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/UploadHardwareConfigurationRequest.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/UploadHardwareConfigurationRequest.pb-c.h
new file mode 100644
index 000000000..6e715a378
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/UploadHardwareConfigurationRequest.pb-c.h
@@ -0,0 +1,72 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: UploadHardwareConfigurationRequest.proto */
+
+#ifndef PROTOBUF_C_UploadHardwareConfigurationRequest_2eproto__INCLUDED
+#define PROTOBUF_C_UploadHardwareConfigurationRequest_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+#include "HardwareConfiguration.pb-c.h"
+
+typedef struct _UploadHardwareConfigurationRequest UploadHardwareConfigurationRequest;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _UploadHardwareConfigurationRequest
+{
+ ProtobufCMessage base;
+ HardwareConfiguration *hardwareconfiguration;
+};
+#define UPLOAD_HARDWARE_CONFIGURATION_REQUEST__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&upload_hardware_configuration_request__descriptor) \
+ , NULL }
+
+
+/* UploadHardwareConfigurationRequest methods */
+void upload_hardware_configuration_request__init
+ (UploadHardwareConfigurationRequest *message);
+size_t upload_hardware_configuration_request__get_packed_size
+ (const UploadHardwareConfigurationRequest *message);
+size_t upload_hardware_configuration_request__pack
+ (const UploadHardwareConfigurationRequest *message,
+ uint8_t *out);
+size_t upload_hardware_configuration_request__pack_to_buffer
+ (const UploadHardwareConfigurationRequest *message,
+ ProtobufCBuffer *buffer);
+UploadHardwareConfigurationRequest *
+ upload_hardware_configuration_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void upload_hardware_configuration_request__free_unpacked
+ (UploadHardwareConfigurationRequest *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*UploadHardwareConfigurationRequest_Closure)
+ (const UploadHardwareConfigurationRequest *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor upload_hardware_configuration_request__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_UploadHardwareConfigurationRequest_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/UploadHardwareConfigurationResponse.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/UploadHardwareConfigurationResponse.pb-c.c
new file mode 100644
index 000000000..56aff3176
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/UploadHardwareConfigurationResponse.pb-c.c
@@ -0,0 +1,72 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: UploadHardwareConfigurationResponse.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "UploadHardwareConfigurationResponse.pb-c.h"
+void upload_hardware_configuration_response__init
+ (UploadHardwareConfigurationResponse *message)
+{
+ static const UploadHardwareConfigurationResponse init_value = UPLOAD_HARDWARE_CONFIGURATION_RESPONSE__INIT;
+ *message = init_value;
+}
+size_t upload_hardware_configuration_response__get_packed_size
+ (const UploadHardwareConfigurationResponse *message)
+{
+ assert(message->base.descriptor == &upload_hardware_configuration_response__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t upload_hardware_configuration_response__pack
+ (const UploadHardwareConfigurationResponse *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &upload_hardware_configuration_response__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t upload_hardware_configuration_response__pack_to_buffer
+ (const UploadHardwareConfigurationResponse *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &upload_hardware_configuration_response__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+UploadHardwareConfigurationResponse *
+ upload_hardware_configuration_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (UploadHardwareConfigurationResponse *)
+ protobuf_c_message_unpack (&upload_hardware_configuration_response__descriptor,
+ allocator, len, data);
+}
+void upload_hardware_configuration_response__free_unpacked
+ (UploadHardwareConfigurationResponse *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &upload_hardware_configuration_response__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+#define upload_hardware_configuration_response__field_descriptors NULL
+#define upload_hardware_configuration_response__field_indices_by_name NULL
+#define upload_hardware_configuration_response__number_ranges NULL
+const ProtobufCMessageDescriptor upload_hardware_configuration_response__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "UploadHardwareConfigurationResponse",
+ "UploadHardwareConfigurationResponse",
+ "UploadHardwareConfigurationResponse",
+ "",
+ sizeof(UploadHardwareConfigurationResponse),
+ 0,
+ upload_hardware_configuration_response__field_descriptors,
+ upload_hardware_configuration_response__field_indices_by_name,
+ 0, upload_hardware_configuration_response__number_ranges,
+ (ProtobufCMessageInit) upload_hardware_configuration_response__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/UploadHardwareConfigurationResponse.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/UploadHardwareConfigurationResponse.pb-c.h
new file mode 100644
index 000000000..7f754f3bf
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/UploadHardwareConfigurationResponse.pb-c.h
@@ -0,0 +1,70 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: UploadHardwareConfigurationResponse.proto */
+
+#ifndef PROTOBUF_C_UploadHardwareConfigurationResponse_2eproto__INCLUDED
+#define PROTOBUF_C_UploadHardwareConfigurationResponse_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _UploadHardwareConfigurationResponse UploadHardwareConfigurationResponse;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _UploadHardwareConfigurationResponse
+{
+ ProtobufCMessage base;
+};
+#define UPLOAD_HARDWARE_CONFIGURATION_RESPONSE__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&upload_hardware_configuration_response__descriptor) \
+ }
+
+
+/* UploadHardwareConfigurationResponse methods */
+void upload_hardware_configuration_response__init
+ (UploadHardwareConfigurationResponse *message);
+size_t upload_hardware_configuration_response__get_packed_size
+ (const UploadHardwareConfigurationResponse *message);
+size_t upload_hardware_configuration_response__pack
+ (const UploadHardwareConfigurationResponse *message,
+ uint8_t *out);
+size_t upload_hardware_configuration_response__pack_to_buffer
+ (const UploadHardwareConfigurationResponse *message,
+ ProtobufCBuffer *buffer);
+UploadHardwareConfigurationResponse *
+ upload_hardware_configuration_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void upload_hardware_configuration_response__free_unpacked
+ (UploadHardwareConfigurationResponse *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*UploadHardwareConfigurationResponse_Closure)
+ (const UploadHardwareConfigurationResponse *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor upload_hardware_configuration_response__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_UploadHardwareConfigurationResponse_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/AbortJobRequest.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/AbortJobRequest.pb-c.c
new file mode 100644
index 000000000..a2b2826c0
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/AbortJobRequest.pb-c.c
@@ -0,0 +1,72 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: AbortJobRequest.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "AbortJobRequest.pb-c.h"
+void abort_job_request__init
+ (AbortJobRequest *message)
+{
+ static const AbortJobRequest init_value = ABORT_JOB_REQUEST__INIT;
+ *message = init_value;
+}
+size_t abort_job_request__get_packed_size
+ (const AbortJobRequest *message)
+{
+ assert(message->base.descriptor == &abort_job_request__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t abort_job_request__pack
+ (const AbortJobRequest *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &abort_job_request__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t abort_job_request__pack_to_buffer
+ (const AbortJobRequest *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &abort_job_request__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+AbortJobRequest *
+ abort_job_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (AbortJobRequest *)
+ protobuf_c_message_unpack (&abort_job_request__descriptor,
+ allocator, len, data);
+}
+void abort_job_request__free_unpacked
+ (AbortJobRequest *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &abort_job_request__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+#define abort_job_request__field_descriptors NULL
+#define abort_job_request__field_indices_by_name NULL
+#define abort_job_request__number_ranges NULL
+const ProtobufCMessageDescriptor abort_job_request__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "AbortJobRequest",
+ "AbortJobRequest",
+ "AbortJobRequest",
+ "",
+ sizeof(AbortJobRequest),
+ 0,
+ abort_job_request__field_descriptors,
+ abort_job_request__field_indices_by_name,
+ 0, abort_job_request__number_ranges,
+ (ProtobufCMessageInit) abort_job_request__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/AbortJobRequest.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/AbortJobRequest.pb-c.h
new file mode 100644
index 000000000..1635e0458
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/AbortJobRequest.pb-c.h
@@ -0,0 +1,70 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: AbortJobRequest.proto */
+
+#ifndef PROTOBUF_C_AbortJobRequest_2eproto__INCLUDED
+#define PROTOBUF_C_AbortJobRequest_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _AbortJobRequest AbortJobRequest;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _AbortJobRequest
+{
+ ProtobufCMessage base;
+};
+#define ABORT_JOB_REQUEST__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&abort_job_request__descriptor) \
+ }
+
+
+/* AbortJobRequest methods */
+void abort_job_request__init
+ (AbortJobRequest *message);
+size_t abort_job_request__get_packed_size
+ (const AbortJobRequest *message);
+size_t abort_job_request__pack
+ (const AbortJobRequest *message,
+ uint8_t *out);
+size_t abort_job_request__pack_to_buffer
+ (const AbortJobRequest *message,
+ ProtobufCBuffer *buffer);
+AbortJobRequest *
+ abort_job_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void abort_job_request__free_unpacked
+ (AbortJobRequest *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*AbortJobRequest_Closure)
+ (const AbortJobRequest *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor abort_job_request__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_AbortJobRequest_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/AbortJobResponse.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/AbortJobResponse.pb-c.c
new file mode 100644
index 000000000..7a6f4e341
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/AbortJobResponse.pb-c.c
@@ -0,0 +1,72 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: AbortJobResponse.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "AbortJobResponse.pb-c.h"
+void abort_job_response__init
+ (AbortJobResponse *message)
+{
+ static const AbortJobResponse init_value = ABORT_JOB_RESPONSE__INIT;
+ *message = init_value;
+}
+size_t abort_job_response__get_packed_size
+ (const AbortJobResponse *message)
+{
+ assert(message->base.descriptor == &abort_job_response__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t abort_job_response__pack
+ (const AbortJobResponse *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &abort_job_response__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t abort_job_response__pack_to_buffer
+ (const AbortJobResponse *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &abort_job_response__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+AbortJobResponse *
+ abort_job_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (AbortJobResponse *)
+ protobuf_c_message_unpack (&abort_job_response__descriptor,
+ allocator, len, data);
+}
+void abort_job_response__free_unpacked
+ (AbortJobResponse *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &abort_job_response__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+#define abort_job_response__field_descriptors NULL
+#define abort_job_response__field_indices_by_name NULL
+#define abort_job_response__number_ranges NULL
+const ProtobufCMessageDescriptor abort_job_response__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "AbortJobResponse",
+ "AbortJobResponse",
+ "AbortJobResponse",
+ "",
+ sizeof(AbortJobResponse),
+ 0,
+ abort_job_response__field_descriptors,
+ abort_job_response__field_indices_by_name,
+ 0, abort_job_response__number_ranges,
+ (ProtobufCMessageInit) abort_job_response__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/AbortJobResponse.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/AbortJobResponse.pb-c.h
new file mode 100644
index 000000000..66c887250
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/AbortJobResponse.pb-c.h
@@ -0,0 +1,70 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: AbortJobResponse.proto */
+
+#ifndef PROTOBUF_C_AbortJobResponse_2eproto__INCLUDED
+#define PROTOBUF_C_AbortJobResponse_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _AbortJobResponse AbortJobResponse;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _AbortJobResponse
+{
+ ProtobufCMessage base;
+};
+#define ABORT_JOB_RESPONSE__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&abort_job_response__descriptor) \
+ }
+
+
+/* AbortJobResponse methods */
+void abort_job_response__init
+ (AbortJobResponse *message);
+size_t abort_job_response__get_packed_size
+ (const AbortJobResponse *message);
+size_t abort_job_response__pack
+ (const AbortJobResponse *message,
+ uint8_t *out);
+size_t abort_job_response__pack_to_buffer
+ (const AbortJobResponse *message,
+ ProtobufCBuffer *buffer);
+AbortJobResponse *
+ abort_job_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void abort_job_response__free_unpacked
+ (AbortJobResponse *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*AbortJobResponse_Closure)
+ (const AbortJobResponse *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor abort_job_response__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_AbortJobResponse_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/DispenserLiquidType.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/DispenserLiquidType.pb-c.c
new file mode 100644
index 000000000..15fe539f2
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/DispenserLiquidType.pb-c.c
@@ -0,0 +1,47 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: DispenserLiquidType.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "DispenserLiquidType.pb-c.h"
+static const ProtobufCEnumValue dispenser_liquid_type__enum_values_by_number[7] =
+{
+ { "Cyan", "DISPENSER_LIQUID_TYPE__Cyan", 0 },
+ { "Magenta", "DISPENSER_LIQUID_TYPE__Magenta", 1 },
+ { "Yellow", "DISPENSER_LIQUID_TYPE__Yellow", 2 },
+ { "Black", "DISPENSER_LIQUID_TYPE__Black", 3 },
+ { "TransparentInk", "DISPENSER_LIQUID_TYPE__TransparentInk", 4 },
+ { "Lubricant", "DISPENSER_LIQUID_TYPE__Lubricant", 5 },
+ { "Red", "DISPENSER_LIQUID_TYPE__Red", 7 },
+};
+static const ProtobufCIntRange dispenser_liquid_type__value_ranges[] = {
+{0, 0},{7, 6},{0, 7}
+};
+static const ProtobufCEnumValueIndex dispenser_liquid_type__enum_values_by_name[7] =
+{
+ { "Black", 3 },
+ { "Cyan", 0 },
+ { "Lubricant", 5 },
+ { "Magenta", 1 },
+ { "Red", 6 },
+ { "TransparentInk", 4 },
+ { "Yellow", 2 },
+};
+const ProtobufCEnumDescriptor dispenser_liquid_type__descriptor =
+{
+ PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
+ "DispenserLiquidType",
+ "DispenserLiquidType",
+ "DispenserLiquidType",
+ "",
+ 7,
+ dispenser_liquid_type__enum_values_by_number,
+ 7,
+ dispenser_liquid_type__enum_values_by_name,
+ 2,
+ dispenser_liquid_type__value_ranges,
+ NULL,NULL,NULL,NULL /* reserved[1234] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/DispenserLiquidType.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/DispenserLiquidType.pb-c.h
new file mode 100644
index 000000000..a6ae3e867
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/DispenserLiquidType.pb-c.h
@@ -0,0 +1,48 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: DispenserLiquidType.proto */
+
+#ifndef PROTOBUF_C_DispenserLiquidType_2eproto__INCLUDED
+#define PROTOBUF_C_DispenserLiquidType_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+
+
+/* --- enums --- */
+
+typedef enum _DispenserLiquidType {
+ DISPENSER_LIQUID_TYPE__Cyan = 0,
+ DISPENSER_LIQUID_TYPE__Magenta = 1,
+ DISPENSER_LIQUID_TYPE__Yellow = 2,
+ DISPENSER_LIQUID_TYPE__Black = 3,
+ DISPENSER_LIQUID_TYPE__TransparentInk = 4,
+ DISPENSER_LIQUID_TYPE__Lubricant = 5,
+ DISPENSER_LIQUID_TYPE__Red = 7
+ PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(DISPENSER_LIQUID_TYPE)
+} DispenserLiquidType;
+
+/* --- messages --- */
+
+/* --- per-message closures --- */
+
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCEnumDescriptor dispenser_liquid_type__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_DispenserLiquidType_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/DispenserStepDivision.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/DispenserStepDivision.pb-c.c
new file mode 100644
index 000000000..38da8a46b
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/DispenserStepDivision.pb-c.c
@@ -0,0 +1,51 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: DispenserStepDivision.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "DispenserStepDivision.pb-c.h"
+static const ProtobufCEnumValue dispenser_step_division__enum_values_by_number[9] =
+{
+ { "Auto", "DISPENSER_STEP_DIVISION__Auto", 0 },
+ { "D1", "DISPENSER_STEP_DIVISION__D1", 1 },
+ { "D2", "DISPENSER_STEP_DIVISION__D2", 2 },
+ { "D4", "DISPENSER_STEP_DIVISION__D4", 4 },
+ { "D8", "DISPENSER_STEP_DIVISION__D8", 8 },
+ { "D16", "DISPENSER_STEP_DIVISION__D16", 16 },
+ { "D32", "DISPENSER_STEP_DIVISION__D32", 32 },
+ { "D64", "DISPENSER_STEP_DIVISION__D64", 64 },
+ { "D128", "DISPENSER_STEP_DIVISION__D128", 128 },
+};
+static const ProtobufCIntRange dispenser_step_division__value_ranges[] = {
+{0, 0},{4, 3},{8, 4},{16, 5},{32, 6},{64, 7},{128, 8},{0, 9}
+};
+static const ProtobufCEnumValueIndex dispenser_step_division__enum_values_by_name[9] =
+{
+ { "Auto", 0 },
+ { "D1", 1 },
+ { "D128", 8 },
+ { "D16", 5 },
+ { "D2", 2 },
+ { "D32", 6 },
+ { "D4", 3 },
+ { "D64", 7 },
+ { "D8", 4 },
+};
+const ProtobufCEnumDescriptor dispenser_step_division__descriptor =
+{
+ PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
+ "DispenserStepDivision",
+ "DispenserStepDivision",
+ "DispenserStepDivision",
+ "",
+ 9,
+ dispenser_step_division__enum_values_by_number,
+ 9,
+ dispenser_step_division__enum_values_by_name,
+ 7,
+ dispenser_step_division__value_ranges,
+ NULL,NULL,NULL,NULL /* reserved[1234] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/DispenserStepDivision.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/DispenserStepDivision.pb-c.h
new file mode 100644
index 000000000..42e340daa
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/DispenserStepDivision.pb-c.h
@@ -0,0 +1,50 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: DispenserStepDivision.proto */
+
+#ifndef PROTOBUF_C_DispenserStepDivision_2eproto__INCLUDED
+#define PROTOBUF_C_DispenserStepDivision_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+
+
+/* --- enums --- */
+
+typedef enum _DispenserStepDivision {
+ DISPENSER_STEP_DIVISION__Auto = 0,
+ DISPENSER_STEP_DIVISION__D1 = 1,
+ DISPENSER_STEP_DIVISION__D2 = 2,
+ DISPENSER_STEP_DIVISION__D4 = 4,
+ DISPENSER_STEP_DIVISION__D8 = 8,
+ DISPENSER_STEP_DIVISION__D16 = 16,
+ DISPENSER_STEP_DIVISION__D32 = 32,
+ DISPENSER_STEP_DIVISION__D64 = 64,
+ DISPENSER_STEP_DIVISION__D128 = 128
+ PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(DISPENSER_STEP_DIVISION)
+} DispenserStepDivision;
+
+/* --- messages --- */
+
+/* --- per-message closures --- */
+
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCEnumDescriptor dispenser_step_division__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_DispenserStepDivision_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobBrushStop.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobBrushStop.pb-c.c
new file mode 100644
index 000000000..45e10394b
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobBrushStop.pb-c.c
@@ -0,0 +1,131 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: JobBrushStop.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "JobBrushStop.pb-c.h"
+void job_brush_stop__init
+ (JobBrushStop *message)
+{
+ static const JobBrushStop init_value = JOB_BRUSH_STOP__INIT;
+ *message = init_value;
+}
+size_t job_brush_stop__get_packed_size
+ (const JobBrushStop *message)
+{
+ assert(message->base.descriptor == &job_brush_stop__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t job_brush_stop__pack
+ (const JobBrushStop *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &job_brush_stop__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t job_brush_stop__pack_to_buffer
+ (const JobBrushStop *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &job_brush_stop__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+JobBrushStop *
+ job_brush_stop__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (JobBrushStop *)
+ protobuf_c_message_unpack (&job_brush_stop__descriptor,
+ allocator, len, data);
+}
+void job_brush_stop__free_unpacked
+ (JobBrushStop *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &job_brush_stop__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor job_brush_stop__field_descriptors[4] =
+{
+ {
+ "Index",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(JobBrushStop, has_index),
+ offsetof(JobBrushStop, index),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "OffsetPercent",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(JobBrushStop, has_offsetpercent),
+ offsetof(JobBrushStop, offsetpercent),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "OffsetMeters",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(JobBrushStop, has_offsetmeters),
+ offsetof(JobBrushStop, offsetmeters),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Dispensers",
+ 4,
+ PROTOBUF_C_LABEL_REPEATED,
+ PROTOBUF_C_TYPE_MESSAGE,
+ offsetof(JobBrushStop, n_dispensers),
+ offsetof(JobBrushStop, dispensers),
+ &job_dispenser__descriptor,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned job_brush_stop__field_indices_by_name[] = {
+ 3, /* field[3] = Dispensers */
+ 0, /* field[0] = Index */
+ 2, /* field[2] = OffsetMeters */
+ 1, /* field[1] = OffsetPercent */
+};
+static const ProtobufCIntRange job_brush_stop__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 4 }
+};
+const ProtobufCMessageDescriptor job_brush_stop__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "JobBrushStop",
+ "JobBrushStop",
+ "JobBrushStop",
+ "",
+ sizeof(JobBrushStop),
+ 4,
+ job_brush_stop__field_descriptors,
+ job_brush_stop__field_indices_by_name,
+ 1, job_brush_stop__number_ranges,
+ (ProtobufCMessageInit) job_brush_stop__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobBrushStop.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobBrushStop.pb-c.h
new file mode 100644
index 000000000..6e887a448
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobBrushStop.pb-c.h
@@ -0,0 +1,79 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: JobBrushStop.proto */
+
+#ifndef PROTOBUF_C_JobBrushStop_2eproto__INCLUDED
+#define PROTOBUF_C_JobBrushStop_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+#include "JobDispenser.pb-c.h"
+
+typedef struct _JobBrushStop JobBrushStop;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _JobBrushStop
+{
+ ProtobufCMessage base;
+ protobuf_c_boolean has_index;
+ int32_t index;
+ protobuf_c_boolean has_offsetpercent;
+ double offsetpercent;
+ protobuf_c_boolean has_offsetmeters;
+ double offsetmeters;
+ size_t n_dispensers;
+ JobDispenser **dispensers;
+};
+#define JOB_BRUSH_STOP__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&job_brush_stop__descriptor) \
+ , 0, 0, 0, 0, 0, 0, 0,NULL }
+
+
+/* JobBrushStop methods */
+void job_brush_stop__init
+ (JobBrushStop *message);
+size_t job_brush_stop__get_packed_size
+ (const JobBrushStop *message);
+size_t job_brush_stop__pack
+ (const JobBrushStop *message,
+ uint8_t *out);
+size_t job_brush_stop__pack_to_buffer
+ (const JobBrushStop *message,
+ ProtobufCBuffer *buffer);
+JobBrushStop *
+ job_brush_stop__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void job_brush_stop__free_unpacked
+ (JobBrushStop *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*JobBrushStop_Closure)
+ (const JobBrushStop *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor job_brush_stop__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_JobBrushStop_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobDispenser.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobDispenser.pb-c.c
new file mode 100644
index 000000000..f868d121e
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobDispenser.pb-c.c
@@ -0,0 +1,196 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: JobDispenser.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "JobDispenser.pb-c.h"
+void job_dispenser__init
+ (JobDispenser *message)
+{
+ static const JobDispenser init_value = JOB_DISPENSER__INIT;
+ *message = init_value;
+}
+size_t job_dispenser__get_packed_size
+ (const JobDispenser *message)
+{
+ assert(message->base.descriptor == &job_dispenser__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t job_dispenser__pack
+ (const JobDispenser *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &job_dispenser__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t job_dispenser__pack_to_buffer
+ (const JobDispenser *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &job_dispenser__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+JobDispenser *
+ job_dispenser__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (JobDispenser *)
+ protobuf_c_message_unpack (&job_dispenser__descriptor,
+ allocator, len, data);
+}
+void job_dispenser__free_unpacked
+ (JobDispenser *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &job_dispenser__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor job_dispenser__field_descriptors[9] =
+{
+ {
+ "Index",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(JobDispenser, has_index),
+ offsetof(JobDispenser, index),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Volume",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(JobDispenser, has_volume),
+ offsetof(JobDispenser, volume),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "DispenserStepDivision",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_ENUM,
+ offsetof(JobDispenser, has_dispenserstepdivision),
+ offsetof(JobDispenser, dispenserstepdivision),
+ &dispenser_step_division__descriptor,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "NanolitterPerSecond",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(JobDispenser, has_nanolitterpersecond),
+ offsetof(JobDispenser, nanolitterpersecond),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "NanoliterPerCentimeter",
+ 5,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(JobDispenser, has_nanoliterpercentimeter),
+ offsetof(JobDispenser, nanoliterpercentimeter),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "PulsePerSecond",
+ 6,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(JobDispenser, has_pulsepersecond),
+ offsetof(JobDispenser, pulsepersecond),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "DispenserLiquidType",
+ 7,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_ENUM,
+ offsetof(JobDispenser, has_dispenserliquidtype),
+ offsetof(JobDispenser, dispenserliquidtype),
+ &dispenser_liquid_type__descriptor,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "LiquidMaxNanoliterPerCentimeter",
+ 8,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(JobDispenser, has_liquidmaxnanoliterpercentimeter),
+ offsetof(JobDispenser, liquidmaxnanoliterpercentimeter),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "NanoliterPerPulse",
+ 9,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(JobDispenser, has_nanoliterperpulse),
+ offsetof(JobDispenser, nanoliterperpulse),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned job_dispenser__field_indices_by_name[] = {
+ 6, /* field[6] = DispenserLiquidType */
+ 2, /* field[2] = DispenserStepDivision */
+ 0, /* field[0] = Index */
+ 7, /* field[7] = LiquidMaxNanoliterPerCentimeter */
+ 4, /* field[4] = NanoliterPerCentimeter */
+ 8, /* field[8] = NanoliterPerPulse */
+ 3, /* field[3] = NanolitterPerSecond */
+ 5, /* field[5] = PulsePerSecond */
+ 1, /* field[1] = Volume */
+};
+static const ProtobufCIntRange job_dispenser__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 9 }
+};
+const ProtobufCMessageDescriptor job_dispenser__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "JobDispenser",
+ "JobDispenser",
+ "JobDispenser",
+ "",
+ sizeof(JobDispenser),
+ 9,
+ job_dispenser__field_descriptors,
+ job_dispenser__field_indices_by_name,
+ 1, job_dispenser__number_ranges,
+ (ProtobufCMessageInit) job_dispenser__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobDispenser.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobDispenser.pb-c.h
new file mode 100644
index 000000000..2b21e265c
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobDispenser.pb-c.h
@@ -0,0 +1,90 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: JobDispenser.proto */
+
+#ifndef PROTOBUF_C_JobDispenser_2eproto__INCLUDED
+#define PROTOBUF_C_JobDispenser_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+#include "DispenserStepDivision.pb-c.h"
+#include "DispenserLiquidType.pb-c.h"
+
+typedef struct _JobDispenser JobDispenser;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _JobDispenser
+{
+ ProtobufCMessage base;
+ protobuf_c_boolean has_index;
+ int32_t index;
+ protobuf_c_boolean has_volume;
+ double volume;
+ protobuf_c_boolean has_dispenserstepdivision;
+ DispenserStepDivision dispenserstepdivision;
+ protobuf_c_boolean has_nanolitterpersecond;
+ double nanolitterpersecond;
+ protobuf_c_boolean has_nanoliterpercentimeter;
+ double nanoliterpercentimeter;
+ protobuf_c_boolean has_pulsepersecond;
+ double pulsepersecond;
+ protobuf_c_boolean has_dispenserliquidtype;
+ DispenserLiquidType dispenserliquidtype;
+ protobuf_c_boolean has_liquidmaxnanoliterpercentimeter;
+ double liquidmaxnanoliterpercentimeter;
+ protobuf_c_boolean has_nanoliterperpulse;
+ double nanoliterperpulse;
+};
+#define JOB_DISPENSER__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&job_dispenser__descriptor) \
+ , 0, 0, 0, 0, 0, DISPENSER_STEP_DIVISION__Auto, 0, 0, 0, 0, 0, 0, 0, DISPENSER_LIQUID_TYPE__Cyan, 0, 0, 0, 0 }
+
+
+/* JobDispenser methods */
+void job_dispenser__init
+ (JobDispenser *message);
+size_t job_dispenser__get_packed_size
+ (const JobDispenser *message);
+size_t job_dispenser__pack
+ (const JobDispenser *message,
+ uint8_t *out);
+size_t job_dispenser__pack_to_buffer
+ (const JobDispenser *message,
+ ProtobufCBuffer *buffer);
+JobDispenser *
+ job_dispenser__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void job_dispenser__free_unpacked
+ (JobDispenser *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*JobDispenser_Closure)
+ (const JobDispenser *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor job_dispenser__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_JobDispenser_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobRequest.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobRequest.pb-c.c
new file mode 100644
index 000000000..d1e101dfd
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobRequest.pb-c.c
@@ -0,0 +1,92 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: JobRequest.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "JobRequest.pb-c.h"
+void job_request__init
+ (JobRequest *message)
+{
+ static const JobRequest init_value = JOB_REQUEST__INIT;
+ *message = init_value;
+}
+size_t job_request__get_packed_size
+ (const JobRequest *message)
+{
+ assert(message->base.descriptor == &job_request__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t job_request__pack
+ (const JobRequest *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &job_request__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t job_request__pack_to_buffer
+ (const JobRequest *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &job_request__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+JobRequest *
+ job_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (JobRequest *)
+ protobuf_c_message_unpack (&job_request__descriptor,
+ allocator, len, data);
+}
+void job_request__free_unpacked
+ (JobRequest *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &job_request__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor job_request__field_descriptors[1] =
+{
+ {
+ "JobTicket",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_MESSAGE,
+ 0, /* quantifier_offset */
+ offsetof(JobRequest, jobticket),
+ &job_ticket__descriptor,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned job_request__field_indices_by_name[] = {
+ 0, /* field[0] = JobTicket */
+};
+static const ProtobufCIntRange job_request__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 1 }
+};
+const ProtobufCMessageDescriptor job_request__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "JobRequest",
+ "JobRequest",
+ "JobRequest",
+ "",
+ sizeof(JobRequest),
+ 1,
+ job_request__field_descriptors,
+ job_request__field_indices_by_name,
+ 1, job_request__number_ranges,
+ (ProtobufCMessageInit) job_request__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobRequest.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobRequest.pb-c.h
new file mode 100644
index 000000000..224db64af
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobRequest.pb-c.h
@@ -0,0 +1,72 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: JobRequest.proto */
+
+#ifndef PROTOBUF_C_JobRequest_2eproto__INCLUDED
+#define PROTOBUF_C_JobRequest_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+#include "JobTicket.pb-c.h"
+
+typedef struct _JobRequest JobRequest;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _JobRequest
+{
+ ProtobufCMessage base;
+ JobTicket *jobticket;
+};
+#define JOB_REQUEST__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&job_request__descriptor) \
+ , NULL }
+
+
+/* JobRequest methods */
+void job_request__init
+ (JobRequest *message);
+size_t job_request__get_packed_size
+ (const JobRequest *message);
+size_t job_request__pack
+ (const JobRequest *message,
+ uint8_t *out);
+size_t job_request__pack_to_buffer
+ (const JobRequest *message,
+ ProtobufCBuffer *buffer);
+JobRequest *
+ job_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void job_request__free_unpacked
+ (JobRequest *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*JobRequest_Closure)
+ (const JobRequest *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor job_request__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_JobRequest_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobResponse.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobResponse.pb-c.c
new file mode 100644
index 000000000..692f2df66
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobResponse.pb-c.c
@@ -0,0 +1,105 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: JobResponse.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "JobResponse.pb-c.h"
+void job_response__init
+ (JobResponse *message)
+{
+ static const JobResponse init_value = JOB_RESPONSE__INIT;
+ *message = init_value;
+}
+size_t job_response__get_packed_size
+ (const JobResponse *message)
+{
+ assert(message->base.descriptor == &job_response__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t job_response__pack
+ (const JobResponse *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &job_response__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t job_response__pack_to_buffer
+ (const JobResponse *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &job_response__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+JobResponse *
+ job_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (JobResponse *)
+ protobuf_c_message_unpack (&job_response__descriptor,
+ allocator, len, data);
+}
+void job_response__free_unpacked
+ (JobResponse *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &job_response__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor job_response__field_descriptors[2] =
+{
+ {
+ "Status",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_MESSAGE,
+ 0, /* quantifier_offset */
+ offsetof(JobResponse, status),
+ &job_status__descriptor,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Canceled",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(JobResponse, has_canceled),
+ offsetof(JobResponse, canceled),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned job_response__field_indices_by_name[] = {
+ 1, /* field[1] = Canceled */
+ 0, /* field[0] = Status */
+};
+static const ProtobufCIntRange job_response__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 2 }
+};
+const ProtobufCMessageDescriptor job_response__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "JobResponse",
+ "JobResponse",
+ "JobResponse",
+ "",
+ sizeof(JobResponse),
+ 2,
+ job_response__field_descriptors,
+ job_response__field_indices_by_name,
+ 1, job_response__number_ranges,
+ (ProtobufCMessageInit) job_response__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobResponse.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobResponse.pb-c.h
new file mode 100644
index 000000000..56efcd106
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobResponse.pb-c.h
@@ -0,0 +1,74 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: JobResponse.proto */
+
+#ifndef PROTOBUF_C_JobResponse_2eproto__INCLUDED
+#define PROTOBUF_C_JobResponse_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+#include "JobStatus.pb-c.h"
+
+typedef struct _JobResponse JobResponse;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _JobResponse
+{
+ ProtobufCMessage base;
+ JobStatus *status;
+ protobuf_c_boolean has_canceled;
+ protobuf_c_boolean canceled;
+};
+#define JOB_RESPONSE__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&job_response__descriptor) \
+ , NULL, 0, 0 }
+
+
+/* JobResponse methods */
+void job_response__init
+ (JobResponse *message);
+size_t job_response__get_packed_size
+ (const JobResponse *message);
+size_t job_response__pack
+ (const JobResponse *message,
+ uint8_t *out);
+size_t job_response__pack_to_buffer
+ (const JobResponse *message,
+ ProtobufCBuffer *buffer);
+JobResponse *
+ job_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void job_response__free_unpacked
+ (JobResponse *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*JobResponse_Closure)
+ (const JobResponse *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor job_response__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_JobResponse_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobSegment.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobSegment.pb-c.c
new file mode 100644
index 000000000..8b1710079
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobSegment.pb-c.c
@@ -0,0 +1,118 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: JobSegment.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "JobSegment.pb-c.h"
+void job_segment__init
+ (JobSegment *message)
+{
+ static const JobSegment init_value = JOB_SEGMENT__INIT;
+ *message = init_value;
+}
+size_t job_segment__get_packed_size
+ (const JobSegment *message)
+{
+ assert(message->base.descriptor == &job_segment__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t job_segment__pack
+ (const JobSegment *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &job_segment__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t job_segment__pack_to_buffer
+ (const JobSegment *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &job_segment__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+JobSegment *
+ job_segment__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (JobSegment *)
+ protobuf_c_message_unpack (&job_segment__descriptor,
+ allocator, len, data);
+}
+void job_segment__free_unpacked
+ (JobSegment *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &job_segment__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor job_segment__field_descriptors[3] =
+{
+ {
+ "Name",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_STRING,
+ 0, /* quantifier_offset */
+ offsetof(JobSegment, name),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Length",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(JobSegment, has_length),
+ offsetof(JobSegment, length),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "BrushStops",
+ 3,
+ PROTOBUF_C_LABEL_REPEATED,
+ PROTOBUF_C_TYPE_MESSAGE,
+ offsetof(JobSegment, n_brushstops),
+ offsetof(JobSegment, brushstops),
+ &job_brush_stop__descriptor,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned job_segment__field_indices_by_name[] = {
+ 2, /* field[2] = BrushStops */
+ 1, /* field[1] = Length */
+ 0, /* field[0] = Name */
+};
+static const ProtobufCIntRange job_segment__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 3 }
+};
+const ProtobufCMessageDescriptor job_segment__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "JobSegment",
+ "JobSegment",
+ "JobSegment",
+ "",
+ sizeof(JobSegment),
+ 3,
+ job_segment__field_descriptors,
+ job_segment__field_indices_by_name,
+ 1, job_segment__number_ranges,
+ (ProtobufCMessageInit) job_segment__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobSegment.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobSegment.pb-c.h
new file mode 100644
index 000000000..2c077abaa
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobSegment.pb-c.h
@@ -0,0 +1,76 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: JobSegment.proto */
+
+#ifndef PROTOBUF_C_JobSegment_2eproto__INCLUDED
+#define PROTOBUF_C_JobSegment_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+#include "JobBrushStop.pb-c.h"
+
+typedef struct _JobSegment JobSegment;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _JobSegment
+{
+ ProtobufCMessage base;
+ char *name;
+ protobuf_c_boolean has_length;
+ double length;
+ size_t n_brushstops;
+ JobBrushStop **brushstops;
+};
+#define JOB_SEGMENT__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&job_segment__descriptor) \
+ , NULL, 0, 0, 0,NULL }
+
+
+/* JobSegment methods */
+void job_segment__init
+ (JobSegment *message);
+size_t job_segment__get_packed_size
+ (const JobSegment *message);
+size_t job_segment__pack
+ (const JobSegment *message,
+ uint8_t *out);
+size_t job_segment__pack_to_buffer
+ (const JobSegment *message,
+ ProtobufCBuffer *buffer);
+JobSegment *
+ job_segment__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void job_segment__free_unpacked
+ (JobSegment *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*JobSegment_Closure)
+ (const JobSegment *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor job_segment__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_JobSegment_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobSpool.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobSpool.pb-c.c
new file mode 100644
index 000000000..329c9e701
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobSpool.pb-c.c
@@ -0,0 +1,170 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: JobSpool.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "JobSpool.pb-c.h"
+void job_spool__init
+ (JobSpool *message)
+{
+ static const JobSpool init_value = JOB_SPOOL__INIT;
+ *message = init_value;
+}
+size_t job_spool__get_packed_size
+ (const JobSpool *message)
+{
+ assert(message->base.descriptor == &job_spool__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t job_spool__pack
+ (const JobSpool *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &job_spool__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t job_spool__pack_to_buffer
+ (const JobSpool *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &job_spool__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+JobSpool *
+ job_spool__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (JobSpool *)
+ protobuf_c_message_unpack (&job_spool__descriptor,
+ allocator, len, data);
+}
+void job_spool__free_unpacked
+ (JobSpool *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &job_spool__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor job_spool__field_descriptors[7] =
+{
+ {
+ "JobSpoolType",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_ENUM,
+ offsetof(JobSpool, has_jobspooltype),
+ offsetof(JobSpool, jobspooltype),
+ &job_spool_type__descriptor,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Length",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(JobSpool, has_length),
+ offsetof(JobSpool, length),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Weight",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(JobSpool, has_weight),
+ offsetof(JobSpool, weight),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Diameter",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(JobSpool, has_diameter),
+ offsetof(JobSpool, diameter),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "StartOffsetPulses",
+ 5,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(JobSpool, has_startoffsetpulses),
+ offsetof(JobSpool, startoffsetpulses),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "BackingRate",
+ 6,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(JobSpool, has_backingrate),
+ offsetof(JobSpool, backingrate),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "SegmentOffsetPulses",
+ 7,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(JobSpool, has_segmentoffsetpulses),
+ offsetof(JobSpool, segmentoffsetpulses),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned job_spool__field_indices_by_name[] = {
+ 5, /* field[5] = BackingRate */
+ 3, /* field[3] = Diameter */
+ 0, /* field[0] = JobSpoolType */
+ 1, /* field[1] = Length */
+ 6, /* field[6] = SegmentOffsetPulses */
+ 4, /* field[4] = StartOffsetPulses */
+ 2, /* field[2] = Weight */
+};
+static const ProtobufCIntRange job_spool__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 7 }
+};
+const ProtobufCMessageDescriptor job_spool__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "JobSpool",
+ "JobSpool",
+ "JobSpool",
+ "",
+ sizeof(JobSpool),
+ 7,
+ job_spool__field_descriptors,
+ job_spool__field_indices_by_name,
+ 1, job_spool__number_ranges,
+ (ProtobufCMessageInit) job_spool__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobSpool.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobSpool.pb-c.h
new file mode 100644
index 000000000..38e9236ce
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobSpool.pb-c.h
@@ -0,0 +1,85 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: JobSpool.proto */
+
+#ifndef PROTOBUF_C_JobSpool_2eproto__INCLUDED
+#define PROTOBUF_C_JobSpool_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+#include "JobSpoolType.pb-c.h"
+
+typedef struct _JobSpool JobSpool;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _JobSpool
+{
+ ProtobufCMessage base;
+ protobuf_c_boolean has_jobspooltype;
+ JobSpoolType jobspooltype;
+ protobuf_c_boolean has_length;
+ double length;
+ protobuf_c_boolean has_weight;
+ double weight;
+ protobuf_c_boolean has_diameter;
+ double diameter;
+ protobuf_c_boolean has_startoffsetpulses;
+ int32_t startoffsetpulses;
+ protobuf_c_boolean has_backingrate;
+ int32_t backingrate;
+ protobuf_c_boolean has_segmentoffsetpulses;
+ int32_t segmentoffsetpulses;
+};
+#define JOB_SPOOL__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&job_spool__descriptor) \
+ , 0, JOB_SPOOL_TYPE__StandardSpool, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+
+
+/* JobSpool methods */
+void job_spool__init
+ (JobSpool *message);
+size_t job_spool__get_packed_size
+ (const JobSpool *message);
+size_t job_spool__pack
+ (const JobSpool *message,
+ uint8_t *out);
+size_t job_spool__pack_to_buffer
+ (const JobSpool *message,
+ ProtobufCBuffer *buffer);
+JobSpool *
+ job_spool__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void job_spool__free_unpacked
+ (JobSpool *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*JobSpool_Closure)
+ (const JobSpool *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor job_spool__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_JobSpool_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobSpoolType.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobSpoolType.pb-c.c
new file mode 100644
index 000000000..aa72dc2c9
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobSpoolType.pb-c.c
@@ -0,0 +1,35 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: JobSpoolType.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "JobSpoolType.pb-c.h"
+static const ProtobufCEnumValue job_spool_type__enum_values_by_number[1] =
+{
+ { "StandardSpool", "JOB_SPOOL_TYPE__StandardSpool", 0 },
+};
+static const ProtobufCIntRange job_spool_type__value_ranges[] = {
+{0, 0},{0, 1}
+};
+static const ProtobufCEnumValueIndex job_spool_type__enum_values_by_name[1] =
+{
+ { "StandardSpool", 0 },
+};
+const ProtobufCEnumDescriptor job_spool_type__descriptor =
+{
+ PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
+ "JobSpoolType",
+ "JobSpoolType",
+ "JobSpoolType",
+ "",
+ 1,
+ job_spool_type__enum_values_by_number,
+ 1,
+ job_spool_type__enum_values_by_name,
+ 1,
+ job_spool_type__value_ranges,
+ NULL,NULL,NULL,NULL /* reserved[1234] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobSpoolType.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobSpoolType.pb-c.h
new file mode 100644
index 000000000..2cfab4ae8
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobSpoolType.pb-c.h
@@ -0,0 +1,42 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: JobSpoolType.proto */
+
+#ifndef PROTOBUF_C_JobSpoolType_2eproto__INCLUDED
+#define PROTOBUF_C_JobSpoolType_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+
+
+/* --- enums --- */
+
+typedef enum _JobSpoolType {
+ JOB_SPOOL_TYPE__StandardSpool = 0
+ PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(JOB_SPOOL_TYPE)
+} JobSpoolType;
+
+/* --- messages --- */
+
+/* --- per-message closures --- */
+
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCEnumDescriptor job_spool_type__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_JobSpoolType_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobStatus.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobStatus.pb-c.c
new file mode 100644
index 000000000..c7682cdb2
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobStatus.pb-c.c
@@ -0,0 +1,118 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: JobStatus.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "JobStatus.pb-c.h"
+void job_status__init
+ (JobStatus *message)
+{
+ static const JobStatus init_value = JOB_STATUS__INIT;
+ *message = init_value;
+}
+size_t job_status__get_packed_size
+ (const JobStatus *message)
+{
+ assert(message->base.descriptor == &job_status__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t job_status__pack
+ (const JobStatus *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &job_status__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t job_status__pack_to_buffer
+ (const JobStatus *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &job_status__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+JobStatus *
+ job_status__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (JobStatus *)
+ protobuf_c_message_unpack (&job_status__descriptor,
+ allocator, len, data);
+}
+void job_status__free_unpacked
+ (JobStatus *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &job_status__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor job_status__field_descriptors[3] =
+{
+ {
+ "Message",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_STRING,
+ 0, /* quantifier_offset */
+ offsetof(JobStatus, message),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Progress",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(JobStatus, has_progress),
+ offsetof(JobStatus, progress),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "CurrentSegmentIndex",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(JobStatus, has_currentsegmentindex),
+ offsetof(JobStatus, currentsegmentindex),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned job_status__field_indices_by_name[] = {
+ 2, /* field[2] = CurrentSegmentIndex */
+ 0, /* field[0] = Message */
+ 1, /* field[1] = Progress */
+};
+static const ProtobufCIntRange job_status__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 3 }
+};
+const ProtobufCMessageDescriptor job_status__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "JobStatus",
+ "JobStatus",
+ "JobStatus",
+ "",
+ sizeof(JobStatus),
+ 3,
+ job_status__field_descriptors,
+ job_status__field_indices_by_name,
+ 1, job_status__number_ranges,
+ (ProtobufCMessageInit) job_status__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobStatus.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobStatus.pb-c.h
new file mode 100644
index 000000000..abfb9d71f
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobStatus.pb-c.h
@@ -0,0 +1,75 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: JobStatus.proto */
+
+#ifndef PROTOBUF_C_JobStatus_2eproto__INCLUDED
+#define PROTOBUF_C_JobStatus_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _JobStatus JobStatus;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _JobStatus
+{
+ ProtobufCMessage base;
+ char *message;
+ protobuf_c_boolean has_progress;
+ double progress;
+ protobuf_c_boolean has_currentsegmentindex;
+ int32_t currentsegmentindex;
+};
+#define JOB_STATUS__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&job_status__descriptor) \
+ , NULL, 0, 0, 0, 0 }
+
+
+/* JobStatus methods */
+void job_status__init
+ (JobStatus *message);
+size_t job_status__get_packed_size
+ (const JobStatus *message);
+size_t job_status__pack
+ (const JobStatus *message,
+ uint8_t *out);
+size_t job_status__pack_to_buffer
+ (const JobStatus *message,
+ ProtobufCBuffer *buffer);
+JobStatus *
+ job_status__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void job_status__free_unpacked
+ (JobStatus *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*JobStatus_Closure)
+ (const JobStatus *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor job_status__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_JobStatus_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobTicket.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobTicket.pb-c.c
new file mode 100644
index 000000000..c9f1e859f
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobTicket.pb-c.c
@@ -0,0 +1,183 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: JobTicket.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "JobTicket.pb-c.h"
+void job_ticket__init
+ (JobTicket *message)
+{
+ static const JobTicket init_value = JOB_TICKET__INIT;
+ *message = init_value;
+}
+size_t job_ticket__get_packed_size
+ (const JobTicket *message)
+{
+ assert(message->base.descriptor == &job_ticket__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t job_ticket__pack
+ (const JobTicket *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &job_ticket__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t job_ticket__pack_to_buffer
+ (const JobTicket *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &job_ticket__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+JobTicket *
+ job_ticket__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (JobTicket *)
+ protobuf_c_message_unpack (&job_ticket__descriptor,
+ allocator, len, data);
+}
+void job_ticket__free_unpacked
+ (JobTicket *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &job_ticket__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor job_ticket__field_descriptors[8] =
+{
+ {
+ "Name",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_STRING,
+ 0, /* quantifier_offset */
+ offsetof(JobTicket, name),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "EnableInterSegment",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(JobTicket, has_enableintersegment),
+ offsetof(JobTicket, enableintersegment),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "InterSegmentLength",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(JobTicket, has_intersegmentlength),
+ offsetof(JobTicket, intersegmentlength),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Length",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(JobTicket, has_length),
+ offsetof(JobTicket, length),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "ProcessParameters",
+ 5,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_MESSAGE,
+ 0, /* quantifier_offset */
+ offsetof(JobTicket, processparameters),
+ &process_parameters__descriptor,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "WindingMethod",
+ 6,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_ENUM,
+ offsetof(JobTicket, has_windingmethod),
+ offsetof(JobTicket, windingmethod),
+ &job_winding_method__descriptor,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Spool",
+ 7,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_MESSAGE,
+ 0, /* quantifier_offset */
+ offsetof(JobTicket, spool),
+ &job_spool__descriptor,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Segments",
+ 8,
+ PROTOBUF_C_LABEL_REPEATED,
+ PROTOBUF_C_TYPE_MESSAGE,
+ offsetof(JobTicket, n_segments),
+ offsetof(JobTicket, segments),
+ &job_segment__descriptor,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned job_ticket__field_indices_by_name[] = {
+ 1, /* field[1] = EnableInterSegment */
+ 2, /* field[2] = InterSegmentLength */
+ 3, /* field[3] = Length */
+ 0, /* field[0] = Name */
+ 4, /* field[4] = ProcessParameters */
+ 7, /* field[7] = Segments */
+ 6, /* field[6] = Spool */
+ 5, /* field[5] = WindingMethod */
+};
+static const ProtobufCIntRange job_ticket__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 8 }
+};
+const ProtobufCMessageDescriptor job_ticket__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "JobTicket",
+ "JobTicket",
+ "JobTicket",
+ "",
+ sizeof(JobTicket),
+ 8,
+ job_ticket__field_descriptors,
+ job_ticket__field_indices_by_name,
+ 1, job_ticket__number_ranges,
+ (ProtobufCMessageInit) job_ticket__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobTicket.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobTicket.pb-c.h
new file mode 100644
index 000000000..b20d1db3c
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobTicket.pb-c.h
@@ -0,0 +1,87 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: JobTicket.proto */
+
+#ifndef PROTOBUF_C_JobTicket_2eproto__INCLUDED
+#define PROTOBUF_C_JobTicket_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+#include "JobSegment.pb-c.h"
+#include "ProcessParameters.pb-c.h"
+#include "JobWindingMethod.pb-c.h"
+#include "JobSpool.pb-c.h"
+
+typedef struct _JobTicket JobTicket;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _JobTicket
+{
+ ProtobufCMessage base;
+ char *name;
+ protobuf_c_boolean has_enableintersegment;
+ protobuf_c_boolean enableintersegment;
+ protobuf_c_boolean has_intersegmentlength;
+ double intersegmentlength;
+ protobuf_c_boolean has_length;
+ double length;
+ ProcessParameters *processparameters;
+ protobuf_c_boolean has_windingmethod;
+ JobWindingMethod windingmethod;
+ JobSpool *spool;
+ size_t n_segments;
+ JobSegment **segments;
+};
+#define JOB_TICKET__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&job_ticket__descriptor) \
+ , NULL, 0, 0, 0, 0, 0, 0, NULL, 0, JOB_WINDING_METHOD__Embroidery, NULL, 0,NULL }
+
+
+/* JobTicket methods */
+void job_ticket__init
+ (JobTicket *message);
+size_t job_ticket__get_packed_size
+ (const JobTicket *message);
+size_t job_ticket__pack
+ (const JobTicket *message,
+ uint8_t *out);
+size_t job_ticket__pack_to_buffer
+ (const JobTicket *message,
+ ProtobufCBuffer *buffer);
+JobTicket *
+ job_ticket__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void job_ticket__free_unpacked
+ (JobTicket *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*JobTicket_Closure)
+ (const JobTicket *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor job_ticket__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_JobTicket_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobWindingMethod.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobWindingMethod.pb-c.c
new file mode 100644
index 000000000..89ca011a3
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobWindingMethod.pb-c.c
@@ -0,0 +1,37 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: JobWindingMethod.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "JobWindingMethod.pb-c.h"
+static const ProtobufCEnumValue job_winding_method__enum_values_by_number[2] =
+{
+ { "Embroidery", "JOB_WINDING_METHOD__Embroidery", 0 },
+ { "Calibration", "JOB_WINDING_METHOD__Calibration", 1 },
+};
+static const ProtobufCIntRange job_winding_method__value_ranges[] = {
+{0, 0},{0, 2}
+};
+static const ProtobufCEnumValueIndex job_winding_method__enum_values_by_name[2] =
+{
+ { "Calibration", 1 },
+ { "Embroidery", 0 },
+};
+const ProtobufCEnumDescriptor job_winding_method__descriptor =
+{
+ PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC,
+ "JobWindingMethod",
+ "JobWindingMethod",
+ "JobWindingMethod",
+ "",
+ 2,
+ job_winding_method__enum_values_by_number,
+ 2,
+ job_winding_method__enum_values_by_name,
+ 1,
+ job_winding_method__value_ranges,
+ NULL,NULL,NULL,NULL /* reserved[1234] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobWindingMethod.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobWindingMethod.pb-c.h
new file mode 100644
index 000000000..a762ae2c5
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobWindingMethod.pb-c.h
@@ -0,0 +1,43 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: JobWindingMethod.proto */
+
+#ifndef PROTOBUF_C_JobWindingMethod_2eproto__INCLUDED
+#define PROTOBUF_C_JobWindingMethod_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+
+
+/* --- enums --- */
+
+typedef enum _JobWindingMethod {
+ JOB_WINDING_METHOD__Embroidery = 0,
+ JOB_WINDING_METHOD__Calibration = 1
+ PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(JOB_WINDING_METHOD)
+} JobWindingMethod;
+
+/* --- messages --- */
+
+/* --- per-message closures --- */
+
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCEnumDescriptor job_winding_method__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_JobWindingMethod_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/ProcessParameters.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/ProcessParameters.pb-c.c
new file mode 100644
index 000000000..a6c9b8f08
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/ProcessParameters.pb-c.c
@@ -0,0 +1,287 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: ProcessParameters.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "ProcessParameters.pb-c.h"
+void process_parameters__init
+ (ProcessParameters *message)
+{
+ static const ProcessParameters init_value = PROCESS_PARAMETERS__INIT;
+ *message = init_value;
+}
+size_t process_parameters__get_packed_size
+ (const ProcessParameters *message)
+{
+ assert(message->base.descriptor == &process_parameters__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t process_parameters__pack
+ (const ProcessParameters *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &process_parameters__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t process_parameters__pack_to_buffer
+ (const ProcessParameters *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &process_parameters__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+ProcessParameters *
+ process_parameters__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (ProcessParameters *)
+ protobuf_c_message_unpack (&process_parameters__descriptor,
+ allocator, len, data);
+}
+void process_parameters__free_unpacked
+ (ProcessParameters *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &process_parameters__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor process_parameters__field_descriptors[16] =
+{
+ {
+ "DyeingSpeed",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(ProcessParameters, has_dyeingspeed),
+ offsetof(ProcessParameters, dyeingspeed),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "MixerTemp",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(ProcessParameters, has_mixertemp),
+ offsetof(ProcessParameters, mixertemp),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "DryerBufferLength",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(ProcessParameters, has_dryerbufferlength),
+ offsetof(ProcessParameters, dryerbufferlength),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "MinInkUptake",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(ProcessParameters, has_mininkuptake),
+ offsetof(ProcessParameters, mininkuptake),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "HeadZone1Temp",
+ 5,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(ProcessParameters, has_headzone1temp),
+ offsetof(ProcessParameters, headzone1temp),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "DryerZone1Temp",
+ 6,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(ProcessParameters, has_dryerzone1temp),
+ offsetof(ProcessParameters, dryerzone1temp),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "FeederTension",
+ 7,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(ProcessParameters, has_feedertension),
+ offsetof(ProcessParameters, feedertension),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "DryerZone2Temp",
+ 8,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(ProcessParameters, has_dryerzone2temp),
+ offsetof(ProcessParameters, dryerzone2temp),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "HeadZone2Temp",
+ 9,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(ProcessParameters, has_headzone2temp),
+ offsetof(ProcessParameters, headzone2temp),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "PullerTension",
+ 10,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(ProcessParameters, has_pullertension),
+ offsetof(ProcessParameters, pullertension),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "HeadZone3Temp",
+ 11,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(ProcessParameters, has_headzone3temp),
+ offsetof(ProcessParameters, headzone3temp),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "DryerZone3Temp",
+ 12,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(ProcessParameters, has_dryerzone3temp),
+ offsetof(ProcessParameters, dryerzone3temp),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "WinderTension",
+ 13,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(ProcessParameters, has_windertension),
+ offsetof(ProcessParameters, windertension),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "HeadAirFlow",
+ 14,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(ProcessParameters, has_headairflow),
+ offsetof(ProcessParameters, headairflow),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "DryerAirFlow",
+ 15,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(ProcessParameters, has_dryerairflow),
+ offsetof(ProcessParameters, dryerairflow),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "TableIndex",
+ 16,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(ProcessParameters, has_tableindex),
+ offsetof(ProcessParameters, tableindex),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned process_parameters__field_indices_by_name[] = {
+ 14, /* field[14] = DryerAirFlow */
+ 2, /* field[2] = DryerBufferLength */
+ 5, /* field[5] = DryerZone1Temp */
+ 7, /* field[7] = DryerZone2Temp */
+ 11, /* field[11] = DryerZone3Temp */
+ 0, /* field[0] = DyeingSpeed */
+ 6, /* field[6] = FeederTension */
+ 13, /* field[13] = HeadAirFlow */
+ 4, /* field[4] = HeadZone1Temp */
+ 8, /* field[8] = HeadZone2Temp */
+ 10, /* field[10] = HeadZone3Temp */
+ 3, /* field[3] = MinInkUptake */
+ 1, /* field[1] = MixerTemp */
+ 9, /* field[9] = PullerTension */
+ 15, /* field[15] = TableIndex */
+ 12, /* field[12] = WinderTension */
+};
+static const ProtobufCIntRange process_parameters__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 16 }
+};
+const ProtobufCMessageDescriptor process_parameters__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "ProcessParameters",
+ "ProcessParameters",
+ "ProcessParameters",
+ "",
+ sizeof(ProcessParameters),
+ 16,
+ process_parameters__field_descriptors,
+ process_parameters__field_indices_by_name,
+ 1, process_parameters__number_ranges,
+ (ProtobufCMessageInit) process_parameters__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/ProcessParameters.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/ProcessParameters.pb-c.h
new file mode 100644
index 000000000..00be2df93
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/ProcessParameters.pb-c.h
@@ -0,0 +1,102 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: ProcessParameters.proto */
+
+#ifndef PROTOBUF_C_ProcessParameters_2eproto__INCLUDED
+#define PROTOBUF_C_ProcessParameters_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _ProcessParameters ProcessParameters;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _ProcessParameters
+{
+ ProtobufCMessage base;
+ protobuf_c_boolean has_dyeingspeed;
+ double dyeingspeed;
+ protobuf_c_boolean has_mixertemp;
+ double mixertemp;
+ protobuf_c_boolean has_dryerbufferlength;
+ double dryerbufferlength;
+ protobuf_c_boolean has_mininkuptake;
+ double mininkuptake;
+ protobuf_c_boolean has_headzone1temp;
+ double headzone1temp;
+ protobuf_c_boolean has_dryerzone1temp;
+ double dryerzone1temp;
+ protobuf_c_boolean has_feedertension;
+ double feedertension;
+ protobuf_c_boolean has_dryerzone2temp;
+ double dryerzone2temp;
+ protobuf_c_boolean has_headzone2temp;
+ double headzone2temp;
+ protobuf_c_boolean has_pullertension;
+ double pullertension;
+ protobuf_c_boolean has_headzone3temp;
+ double headzone3temp;
+ protobuf_c_boolean has_dryerzone3temp;
+ double dryerzone3temp;
+ 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;
+};
+#define PROCESS_PARAMETERS__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&process_parameters__descriptor) \
+ , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+
+
+/* ProcessParameters methods */
+void process_parameters__init
+ (ProcessParameters *message);
+size_t process_parameters__get_packed_size
+ (const ProcessParameters *message);
+size_t process_parameters__pack
+ (const ProcessParameters *message,
+ uint8_t *out);
+size_t process_parameters__pack_to_buffer
+ (const ProcessParameters *message,
+ ProtobufCBuffer *buffer);
+ProcessParameters *
+ process_parameters__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void process_parameters__free_unpacked
+ (ProcessParameters *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*ProcessParameters_Closure)
+ (const ProcessParameters *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor process_parameters__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_ProcessParameters_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/UploadProcessParametersRequest.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/UploadProcessParametersRequest.pb-c.c
new file mode 100644
index 000000000..bae09c741
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/UploadProcessParametersRequest.pb-c.c
@@ -0,0 +1,92 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: UploadProcessParametersRequest.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "UploadProcessParametersRequest.pb-c.h"
+void upload_process_parameters_request__init
+ (UploadProcessParametersRequest *message)
+{
+ static const UploadProcessParametersRequest init_value = UPLOAD_PROCESS_PARAMETERS_REQUEST__INIT;
+ *message = init_value;
+}
+size_t upload_process_parameters_request__get_packed_size
+ (const UploadProcessParametersRequest *message)
+{
+ assert(message->base.descriptor == &upload_process_parameters_request__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t upload_process_parameters_request__pack
+ (const UploadProcessParametersRequest *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &upload_process_parameters_request__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t upload_process_parameters_request__pack_to_buffer
+ (const UploadProcessParametersRequest *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &upload_process_parameters_request__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+UploadProcessParametersRequest *
+ upload_process_parameters_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (UploadProcessParametersRequest *)
+ protobuf_c_message_unpack (&upload_process_parameters_request__descriptor,
+ allocator, len, data);
+}
+void upload_process_parameters_request__free_unpacked
+ (UploadProcessParametersRequest *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &upload_process_parameters_request__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor upload_process_parameters_request__field_descriptors[1] =
+{
+ {
+ "ProcessParameters",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_MESSAGE,
+ 0, /* quantifier_offset */
+ offsetof(UploadProcessParametersRequest, processparameters),
+ &process_parameters__descriptor,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned upload_process_parameters_request__field_indices_by_name[] = {
+ 0, /* field[0] = ProcessParameters */
+};
+static const ProtobufCIntRange upload_process_parameters_request__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 1 }
+};
+const ProtobufCMessageDescriptor upload_process_parameters_request__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "UploadProcessParametersRequest",
+ "UploadProcessParametersRequest",
+ "UploadProcessParametersRequest",
+ "",
+ sizeof(UploadProcessParametersRequest),
+ 1,
+ upload_process_parameters_request__field_descriptors,
+ upload_process_parameters_request__field_indices_by_name,
+ 1, upload_process_parameters_request__number_ranges,
+ (ProtobufCMessageInit) upload_process_parameters_request__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/UploadProcessParametersRequest.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/UploadProcessParametersRequest.pb-c.h
new file mode 100644
index 000000000..c39ee4174
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/UploadProcessParametersRequest.pb-c.h
@@ -0,0 +1,72 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: UploadProcessParametersRequest.proto */
+
+#ifndef PROTOBUF_C_UploadProcessParametersRequest_2eproto__INCLUDED
+#define PROTOBUF_C_UploadProcessParametersRequest_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+#include "ProcessParameters.pb-c.h"
+
+typedef struct _UploadProcessParametersRequest UploadProcessParametersRequest;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _UploadProcessParametersRequest
+{
+ ProtobufCMessage base;
+ ProcessParameters *processparameters;
+};
+#define UPLOAD_PROCESS_PARAMETERS_REQUEST__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&upload_process_parameters_request__descriptor) \
+ , NULL }
+
+
+/* UploadProcessParametersRequest methods */
+void upload_process_parameters_request__init
+ (UploadProcessParametersRequest *message);
+size_t upload_process_parameters_request__get_packed_size
+ (const UploadProcessParametersRequest *message);
+size_t upload_process_parameters_request__pack
+ (const UploadProcessParametersRequest *message,
+ uint8_t *out);
+size_t upload_process_parameters_request__pack_to_buffer
+ (const UploadProcessParametersRequest *message,
+ ProtobufCBuffer *buffer);
+UploadProcessParametersRequest *
+ upload_process_parameters_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void upload_process_parameters_request__free_unpacked
+ (UploadProcessParametersRequest *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*UploadProcessParametersRequest_Closure)
+ (const UploadProcessParametersRequest *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor upload_process_parameters_request__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_UploadProcessParametersRequest_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/UploadProcessParametersResponse.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/UploadProcessParametersResponse.pb-c.c
new file mode 100644
index 000000000..2503df80d
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/UploadProcessParametersResponse.pb-c.c
@@ -0,0 +1,72 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: UploadProcessParametersResponse.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "UploadProcessParametersResponse.pb-c.h"
+void upload_process_parameters_response__init
+ (UploadProcessParametersResponse *message)
+{
+ static const UploadProcessParametersResponse init_value = UPLOAD_PROCESS_PARAMETERS_RESPONSE__INIT;
+ *message = init_value;
+}
+size_t upload_process_parameters_response__get_packed_size
+ (const UploadProcessParametersResponse *message)
+{
+ assert(message->base.descriptor == &upload_process_parameters_response__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t upload_process_parameters_response__pack
+ (const UploadProcessParametersResponse *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &upload_process_parameters_response__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t upload_process_parameters_response__pack_to_buffer
+ (const UploadProcessParametersResponse *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &upload_process_parameters_response__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+UploadProcessParametersResponse *
+ upload_process_parameters_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (UploadProcessParametersResponse *)
+ protobuf_c_message_unpack (&upload_process_parameters_response__descriptor,
+ allocator, len, data);
+}
+void upload_process_parameters_response__free_unpacked
+ (UploadProcessParametersResponse *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &upload_process_parameters_response__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+#define upload_process_parameters_response__field_descriptors NULL
+#define upload_process_parameters_response__field_indices_by_name NULL
+#define upload_process_parameters_response__number_ranges NULL
+const ProtobufCMessageDescriptor upload_process_parameters_response__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "UploadProcessParametersResponse",
+ "UploadProcessParametersResponse",
+ "UploadProcessParametersResponse",
+ "",
+ sizeof(UploadProcessParametersResponse),
+ 0,
+ upload_process_parameters_response__field_descriptors,
+ upload_process_parameters_response__field_indices_by_name,
+ 0, upload_process_parameters_response__number_ranges,
+ (ProtobufCMessageInit) upload_process_parameters_response__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/UploadProcessParametersResponse.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/UploadProcessParametersResponse.pb-c.h
new file mode 100644
index 000000000..4089217d2
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/UploadProcessParametersResponse.pb-c.h
@@ -0,0 +1,70 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: UploadProcessParametersResponse.proto */
+
+#ifndef PROTOBUF_C_UploadProcessParametersResponse_2eproto__INCLUDED
+#define PROTOBUF_C_UploadProcessParametersResponse_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _UploadProcessParametersResponse UploadProcessParametersResponse;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _UploadProcessParametersResponse
+{
+ ProtobufCMessage base;
+};
+#define UPLOAD_PROCESS_PARAMETERS_RESPONSE__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&upload_process_parameters_response__descriptor) \
+ }
+
+
+/* UploadProcessParametersResponse methods */
+void upload_process_parameters_response__init
+ (UploadProcessParametersResponse *message);
+size_t upload_process_parameters_response__get_packed_size
+ (const UploadProcessParametersResponse *message);
+size_t upload_process_parameters_response__pack
+ (const UploadProcessParametersResponse *message,
+ uint8_t *out);
+size_t upload_process_parameters_response__pack_to_buffer
+ (const UploadProcessParametersResponse *message,
+ ProtobufCBuffer *buffer);
+UploadProcessParametersResponse *
+ upload_process_parameters_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void upload_process_parameters_response__free_unpacked
+ (UploadProcessParametersResponse *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*UploadProcessParametersResponse_Closure)
+ (const UploadProcessParametersResponse *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor upload_process_parameters_response__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_UploadProcessParametersResponse_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/CalculateRequest.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/CalculateRequest.pb-c.c
new file mode 100644
index 000000000..68134c1f8
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/CalculateRequest.pb-c.c
@@ -0,0 +1,105 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: CalculateRequest.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "CalculateRequest.pb-c.h"
+void calculate_request__init
+ (CalculateRequest *message)
+{
+ static const CalculateRequest init_value = CALCULATE_REQUEST__INIT;
+ *message = init_value;
+}
+size_t calculate_request__get_packed_size
+ (const CalculateRequest *message)
+{
+ assert(message->base.descriptor == &calculate_request__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t calculate_request__pack
+ (const CalculateRequest *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &calculate_request__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t calculate_request__pack_to_buffer
+ (const CalculateRequest *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &calculate_request__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+CalculateRequest *
+ calculate_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (CalculateRequest *)
+ protobuf_c_message_unpack (&calculate_request__descriptor,
+ allocator, len, data);
+}
+void calculate_request__free_unpacked
+ (CalculateRequest *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &calculate_request__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor calculate_request__field_descriptors[2] =
+{
+ {
+ "A",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(CalculateRequest, has_a),
+ offsetof(CalculateRequest, a),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "B",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(CalculateRequest, has_b),
+ offsetof(CalculateRequest, b),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned calculate_request__field_indices_by_name[] = {
+ 0, /* field[0] = A */
+ 1, /* field[1] = B */
+};
+static const ProtobufCIntRange calculate_request__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 2 }
+};
+const ProtobufCMessageDescriptor calculate_request__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "CalculateRequest",
+ "CalculateRequest",
+ "CalculateRequest",
+ "",
+ sizeof(CalculateRequest),
+ 2,
+ calculate_request__field_descriptors,
+ calculate_request__field_indices_by_name,
+ 1, calculate_request__number_ranges,
+ (ProtobufCMessageInit) calculate_request__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/CalculateRequest.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/CalculateRequest.pb-c.h
new file mode 100644
index 000000000..4ad015493
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/CalculateRequest.pb-c.h
@@ -0,0 +1,74 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: CalculateRequest.proto */
+
+#ifndef PROTOBUF_C_CalculateRequest_2eproto__INCLUDED
+#define PROTOBUF_C_CalculateRequest_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _CalculateRequest CalculateRequest;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _CalculateRequest
+{
+ ProtobufCMessage base;
+ protobuf_c_boolean has_a;
+ double a;
+ protobuf_c_boolean has_b;
+ double b;
+};
+#define CALCULATE_REQUEST__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&calculate_request__descriptor) \
+ , 0, 0, 0, 0 }
+
+
+/* CalculateRequest methods */
+void calculate_request__init
+ (CalculateRequest *message);
+size_t calculate_request__get_packed_size
+ (const CalculateRequest *message);
+size_t calculate_request__pack
+ (const CalculateRequest *message,
+ uint8_t *out);
+size_t calculate_request__pack_to_buffer
+ (const CalculateRequest *message,
+ ProtobufCBuffer *buffer);
+CalculateRequest *
+ calculate_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void calculate_request__free_unpacked
+ (CalculateRequest *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*CalculateRequest_Closure)
+ (const CalculateRequest *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor calculate_request__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_CalculateRequest_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/CalculateResponse.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/CalculateResponse.pb-c.c
new file mode 100644
index 000000000..920356a05
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/CalculateResponse.pb-c.c
@@ -0,0 +1,92 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: CalculateResponse.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "CalculateResponse.pb-c.h"
+void calculate_response__init
+ (CalculateResponse *message)
+{
+ static const CalculateResponse init_value = CALCULATE_RESPONSE__INIT;
+ *message = init_value;
+}
+size_t calculate_response__get_packed_size
+ (const CalculateResponse *message)
+{
+ assert(message->base.descriptor == &calculate_response__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t calculate_response__pack
+ (const CalculateResponse *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &calculate_response__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t calculate_response__pack_to_buffer
+ (const CalculateResponse *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &calculate_response__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+CalculateResponse *
+ calculate_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (CalculateResponse *)
+ protobuf_c_message_unpack (&calculate_response__descriptor,
+ allocator, len, data);
+}
+void calculate_response__free_unpacked
+ (CalculateResponse *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &calculate_response__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor calculate_response__field_descriptors[1] =
+{
+ {
+ "Sum",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(CalculateResponse, has_sum),
+ offsetof(CalculateResponse, sum),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned calculate_response__field_indices_by_name[] = {
+ 0, /* field[0] = Sum */
+};
+static const ProtobufCIntRange calculate_response__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 1 }
+};
+const ProtobufCMessageDescriptor calculate_response__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "CalculateResponse",
+ "CalculateResponse",
+ "CalculateResponse",
+ "",
+ sizeof(CalculateResponse),
+ 1,
+ calculate_response__field_descriptors,
+ calculate_response__field_indices_by_name,
+ 1, calculate_response__number_ranges,
+ (ProtobufCMessageInit) calculate_response__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/CalculateResponse.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/CalculateResponse.pb-c.h
new file mode 100644
index 000000000..05bdf2b52
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/CalculateResponse.pb-c.h
@@ -0,0 +1,72 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: CalculateResponse.proto */
+
+#ifndef PROTOBUF_C_CalculateResponse_2eproto__INCLUDED
+#define PROTOBUF_C_CalculateResponse_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _CalculateResponse CalculateResponse;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _CalculateResponse
+{
+ ProtobufCMessage base;
+ protobuf_c_boolean has_sum;
+ double sum;
+};
+#define CALCULATE_RESPONSE__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&calculate_response__descriptor) \
+ , 0, 0 }
+
+
+/* CalculateResponse methods */
+void calculate_response__init
+ (CalculateResponse *message);
+size_t calculate_response__get_packed_size
+ (const CalculateResponse *message);
+size_t calculate_response__pack
+ (const CalculateResponse *message,
+ uint8_t *out);
+size_t calculate_response__pack_to_buffer
+ (const CalculateResponse *message,
+ ProtobufCBuffer *buffer);
+CalculateResponse *
+ calculate_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void calculate_response__free_unpacked
+ (CalculateResponse *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*CalculateResponse_Closure)
+ (const CalculateResponse *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor calculate_response__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_CalculateResponse_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/ProgressRequest.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/ProgressRequest.pb-c.c
new file mode 100644
index 000000000..9e074f376
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/ProgressRequest.pb-c.c
@@ -0,0 +1,105 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: ProgressRequest.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "ProgressRequest.pb-c.h"
+void progress_request__init
+ (ProgressRequest *message)
+{
+ static const ProgressRequest init_value = PROGRESS_REQUEST__INIT;
+ *message = init_value;
+}
+size_t progress_request__get_packed_size
+ (const ProgressRequest *message)
+{
+ assert(message->base.descriptor == &progress_request__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t progress_request__pack
+ (const ProgressRequest *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &progress_request__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t progress_request__pack_to_buffer
+ (const ProgressRequest *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &progress_request__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+ProgressRequest *
+ progress_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (ProgressRequest *)
+ protobuf_c_message_unpack (&progress_request__descriptor,
+ allocator, len, data);
+}
+void progress_request__free_unpacked
+ (ProgressRequest *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &progress_request__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor progress_request__field_descriptors[2] =
+{
+ {
+ "Amount",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(ProgressRequest, has_amount),
+ offsetof(ProgressRequest, amount),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Delay",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(ProgressRequest, has_delay),
+ offsetof(ProgressRequest, delay),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned progress_request__field_indices_by_name[] = {
+ 0, /* field[0] = Amount */
+ 1, /* field[1] = Delay */
+};
+static const ProtobufCIntRange progress_request__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 2 }
+};
+const ProtobufCMessageDescriptor progress_request__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "ProgressRequest",
+ "ProgressRequest",
+ "ProgressRequest",
+ "",
+ sizeof(ProgressRequest),
+ 2,
+ progress_request__field_descriptors,
+ progress_request__field_indices_by_name,
+ 1, progress_request__number_ranges,
+ (ProtobufCMessageInit) progress_request__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/ProgressRequest.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/ProgressRequest.pb-c.h
new file mode 100644
index 000000000..1ce2b6d6b
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/ProgressRequest.pb-c.h
@@ -0,0 +1,74 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: ProgressRequest.proto */
+
+#ifndef PROTOBUF_C_ProgressRequest_2eproto__INCLUDED
+#define PROTOBUF_C_ProgressRequest_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _ProgressRequest ProgressRequest;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _ProgressRequest
+{
+ ProtobufCMessage base;
+ protobuf_c_boolean has_amount;
+ int32_t amount;
+ protobuf_c_boolean has_delay;
+ int32_t delay;
+};
+#define PROGRESS_REQUEST__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&progress_request__descriptor) \
+ , 0, 0, 0, 0 }
+
+
+/* ProgressRequest methods */
+void progress_request__init
+ (ProgressRequest *message);
+size_t progress_request__get_packed_size
+ (const ProgressRequest *message);
+size_t progress_request__pack
+ (const ProgressRequest *message,
+ uint8_t *out);
+size_t progress_request__pack_to_buffer
+ (const ProgressRequest *message,
+ ProtobufCBuffer *buffer);
+ProgressRequest *
+ progress_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void progress_request__free_unpacked
+ (ProgressRequest *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*ProgressRequest_Closure)
+ (const ProgressRequest *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor progress_request__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_ProgressRequest_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/ProgressResponse.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/ProgressResponse.pb-c.c
new file mode 100644
index 000000000..9e54fb5d6
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/ProgressResponse.pb-c.c
@@ -0,0 +1,92 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: ProgressResponse.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "ProgressResponse.pb-c.h"
+void progress_response__init
+ (ProgressResponse *message)
+{
+ static const ProgressResponse init_value = PROGRESS_RESPONSE__INIT;
+ *message = init_value;
+}
+size_t progress_response__get_packed_size
+ (const ProgressResponse *message)
+{
+ assert(message->base.descriptor == &progress_response__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t progress_response__pack
+ (const ProgressResponse *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &progress_response__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t progress_response__pack_to_buffer
+ (const ProgressResponse *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &progress_response__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+ProgressResponse *
+ progress_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (ProgressResponse *)
+ protobuf_c_message_unpack (&progress_response__descriptor,
+ allocator, len, data);
+}
+void progress_response__free_unpacked
+ (ProgressResponse *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &progress_response__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor progress_response__field_descriptors[1] =
+{
+ {
+ "Progress",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(ProgressResponse, has_progress),
+ offsetof(ProgressResponse, progress),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned progress_response__field_indices_by_name[] = {
+ 0, /* field[0] = Progress */
+};
+static const ProtobufCIntRange progress_response__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 1 }
+};
+const ProtobufCMessageDescriptor progress_response__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "ProgressResponse",
+ "ProgressResponse",
+ "ProgressResponse",
+ "",
+ sizeof(ProgressResponse),
+ 1,
+ progress_response__field_descriptors,
+ progress_response__field_indices_by_name,
+ 1, progress_response__number_ranges,
+ (ProtobufCMessageInit) progress_response__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/ProgressResponse.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/ProgressResponse.pb-c.h
new file mode 100644
index 000000000..de5201ee5
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/ProgressResponse.pb-c.h
@@ -0,0 +1,72 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: ProgressResponse.proto */
+
+#ifndef PROTOBUF_C_ProgressResponse_2eproto__INCLUDED
+#define PROTOBUF_C_ProgressResponse_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _ProgressResponse ProgressResponse;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _ProgressResponse
+{
+ ProtobufCMessage base;
+ protobuf_c_boolean has_progress;
+ double progress;
+};
+#define PROGRESS_RESPONSE__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&progress_response__descriptor) \
+ , 0, 0 }
+
+
+/* ProgressResponse methods */
+void progress_response__init
+ (ProgressResponse *message);
+size_t progress_response__get_packed_size
+ (const ProgressResponse *message);
+size_t progress_response__pack
+ (const ProgressResponse *message,
+ uint8_t *out);
+size_t progress_response__pack_to_buffer
+ (const ProgressResponse *message,
+ ProtobufCBuffer *buffer);
+ProgressResponse *
+ progress_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void progress_response__free_unpacked
+ (ProgressResponse *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*ProgressResponse_Closure)
+ (const ProgressResponse *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor progress_response__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_ProgressResponse_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubCartridgeReadRequest.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubCartridgeReadRequest.pb-c.c
new file mode 100644
index 000000000..6ecf34fcd
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubCartridgeReadRequest.pb-c.c
@@ -0,0 +1,92 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubCartridgeReadRequest.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubCartridgeReadRequest.pb-c.h"
+void stub_cartridge_read_request__init
+ (StubCartridgeReadRequest *message)
+{
+ static const StubCartridgeReadRequest init_value = STUB_CARTRIDGE_READ_REQUEST__INIT;
+ *message = init_value;
+}
+size_t stub_cartridge_read_request__get_packed_size
+ (const StubCartridgeReadRequest *message)
+{
+ assert(message->base.descriptor == &stub_cartridge_read_request__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_cartridge_read_request__pack
+ (const StubCartridgeReadRequest *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_cartridge_read_request__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_cartridge_read_request__pack_to_buffer
+ (const StubCartridgeReadRequest *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_cartridge_read_request__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubCartridgeReadRequest *
+ stub_cartridge_read_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubCartridgeReadRequest *)
+ protobuf_c_message_unpack (&stub_cartridge_read_request__descriptor,
+ allocator, len, data);
+}
+void stub_cartridge_read_request__free_unpacked
+ (StubCartridgeReadRequest *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_cartridge_read_request__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_cartridge_read_request__field_descriptors[1] =
+{
+ {
+ "CartridgeId",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubCartridgeReadRequest, has_cartridgeid),
+ offsetof(StubCartridgeReadRequest, cartridgeid),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_cartridge_read_request__field_indices_by_name[] = {
+ 0, /* field[0] = CartridgeId */
+};
+static const ProtobufCIntRange stub_cartridge_read_request__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 1 }
+};
+const ProtobufCMessageDescriptor stub_cartridge_read_request__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubCartridgeReadRequest",
+ "StubCartridgeReadRequest",
+ "StubCartridgeReadRequest",
+ "",
+ sizeof(StubCartridgeReadRequest),
+ 1,
+ stub_cartridge_read_request__field_descriptors,
+ stub_cartridge_read_request__field_indices_by_name,
+ 1, stub_cartridge_read_request__number_ranges,
+ (ProtobufCMessageInit) stub_cartridge_read_request__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubCartridgeReadRequest.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubCartridgeReadRequest.pb-c.h
new file mode 100644
index 000000000..12ea3b514
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubCartridgeReadRequest.pb-c.h
@@ -0,0 +1,75 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubCartridgeReadRequest.proto */
+
+#ifndef PROTOBUF_C_StubCartridgeReadRequest_2eproto__INCLUDED
+#define PROTOBUF_C_StubCartridgeReadRequest_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubCartridgeReadRequest StubCartridgeReadRequest;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubCartridgeReadRequest
+{
+ ProtobufCMessage base;
+ /*
+ *0..7
+ */
+ protobuf_c_boolean has_cartridgeid;
+ uint32_t cartridgeid;
+};
+#define STUB_CARTRIDGE_READ_REQUEST__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_cartridge_read_request__descriptor) \
+ , 0, 0 }
+
+
+/* StubCartridgeReadRequest methods */
+void stub_cartridge_read_request__init
+ (StubCartridgeReadRequest *message);
+size_t stub_cartridge_read_request__get_packed_size
+ (const StubCartridgeReadRequest *message);
+size_t stub_cartridge_read_request__pack
+ (const StubCartridgeReadRequest *message,
+ uint8_t *out);
+size_t stub_cartridge_read_request__pack_to_buffer
+ (const StubCartridgeReadRequest *message,
+ ProtobufCBuffer *buffer);
+StubCartridgeReadRequest *
+ stub_cartridge_read_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_cartridge_read_request__free_unpacked
+ (StubCartridgeReadRequest *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubCartridgeReadRequest_Closure)
+ (const StubCartridgeReadRequest *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_cartridge_read_request__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubCartridgeReadRequest_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubCartridgeReadResponse.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubCartridgeReadResponse.pb-c.c
new file mode 100644
index 000000000..125ec15e2
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubCartridgeReadResponse.pb-c.c
@@ -0,0 +1,170 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubCartridgeReadResponse.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubCartridgeReadResponse.pb-c.h"
+void stub_cartridge_read_response__init
+ (StubCartridgeReadResponse *message)
+{
+ static const StubCartridgeReadResponse init_value = STUB_CARTRIDGE_READ_RESPONSE__INIT;
+ *message = init_value;
+}
+size_t stub_cartridge_read_response__get_packed_size
+ (const StubCartridgeReadResponse *message)
+{
+ assert(message->base.descriptor == &stub_cartridge_read_response__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_cartridge_read_response__pack
+ (const StubCartridgeReadResponse *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_cartridge_read_response__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_cartridge_read_response__pack_to_buffer
+ (const StubCartridgeReadResponse *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_cartridge_read_response__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubCartridgeReadResponse *
+ stub_cartridge_read_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubCartridgeReadResponse *)
+ protobuf_c_message_unpack (&stub_cartridge_read_response__descriptor,
+ allocator, len, data);
+}
+void stub_cartridge_read_response__free_unpacked
+ (StubCartridgeReadResponse *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_cartridge_read_response__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_cartridge_read_response__field_descriptors[7] =
+{
+ {
+ "CartridgeId",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubCartridgeReadResponse, has_cartridgeid),
+ offsetof(StubCartridgeReadResponse, cartridgeid),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "CartridgeColor",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubCartridgeReadResponse, has_cartridgecolor),
+ offsetof(StubCartridgeReadResponse, cartridgecolor),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "CartridgeVersion",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubCartridgeReadResponse, has_cartridgeversion),
+ offsetof(StubCartridgeReadResponse, cartridgeversion),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "CartridgeData",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(StubCartridgeReadResponse, has_cartridgedata),
+ offsetof(StubCartridgeReadResponse, cartridgedata),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "CartridgeUsed",
+ 5,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubCartridgeReadResponse, has_cartridgeused),
+ offsetof(StubCartridgeReadResponse, cartridgeused),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Status",
+ 6,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_STRING,
+ 0, /* quantifier_offset */
+ offsetof(StubCartridgeReadResponse, status),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "StatusWord",
+ 7,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubCartridgeReadResponse, has_statusword),
+ offsetof(StubCartridgeReadResponse, statusword),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_cartridge_read_response__field_indices_by_name[] = {
+ 1, /* field[1] = CartridgeColor */
+ 3, /* field[3] = CartridgeData */
+ 0, /* field[0] = CartridgeId */
+ 4, /* field[4] = CartridgeUsed */
+ 2, /* field[2] = CartridgeVersion */
+ 5, /* field[5] = Status */
+ 6, /* field[6] = StatusWord */
+};
+static const ProtobufCIntRange stub_cartridge_read_response__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 7 }
+};
+const ProtobufCMessageDescriptor stub_cartridge_read_response__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubCartridgeReadResponse",
+ "StubCartridgeReadResponse",
+ "StubCartridgeReadResponse",
+ "",
+ sizeof(StubCartridgeReadResponse),
+ 7,
+ stub_cartridge_read_response__field_descriptors,
+ stub_cartridge_read_response__field_indices_by_name,
+ 1, stub_cartridge_read_response__number_ranges,
+ (ProtobufCMessageInit) stub_cartridge_read_response__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubCartridgeReadResponse.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubCartridgeReadResponse.pb-c.h
new file mode 100644
index 000000000..06a173e8b
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubCartridgeReadResponse.pb-c.h
@@ -0,0 +1,89 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubCartridgeReadResponse.proto */
+
+#ifndef PROTOBUF_C_StubCartridgeReadResponse_2eproto__INCLUDED
+#define PROTOBUF_C_StubCartridgeReadResponse_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubCartridgeReadResponse StubCartridgeReadResponse;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubCartridgeReadResponse
+{
+ ProtobufCMessage base;
+ protobuf_c_boolean has_cartridgeid;
+ uint32_t cartridgeid;
+ protobuf_c_boolean has_cartridgecolor;
+ uint32_t cartridgecolor;
+ protobuf_c_boolean has_cartridgeversion;
+ uint32_t cartridgeversion;
+ protobuf_c_boolean has_cartridgedata;
+ int32_t cartridgedata;
+ protobuf_c_boolean has_cartridgeused;
+ protobuf_c_boolean cartridgeused;
+ /*
+ * Passed/Failed
+ */
+ char *status;
+ /*
+ * Error number/bit when the status is Failed
+ */
+ protobuf_c_boolean has_statusword;
+ uint32_t statusword;
+};
+#define STUB_CARTRIDGE_READ_RESPONSE__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_cartridge_read_response__descriptor) \
+ , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, 0, 0 }
+
+
+/* StubCartridgeReadResponse methods */
+void stub_cartridge_read_response__init
+ (StubCartridgeReadResponse *message);
+size_t stub_cartridge_read_response__get_packed_size
+ (const StubCartridgeReadResponse *message);
+size_t stub_cartridge_read_response__pack
+ (const StubCartridgeReadResponse *message,
+ uint8_t *out);
+size_t stub_cartridge_read_response__pack_to_buffer
+ (const StubCartridgeReadResponse *message,
+ ProtobufCBuffer *buffer);
+StubCartridgeReadResponse *
+ stub_cartridge_read_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_cartridge_read_response__free_unpacked
+ (StubCartridgeReadResponse *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubCartridgeReadResponse_Closure)
+ (const StubCartridgeReadResponse *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_cartridge_read_response__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubCartridgeReadResponse_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubCartridgeWriteRequest.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubCartridgeWriteRequest.pb-c.c
new file mode 100644
index 000000000..fe528a34e
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubCartridgeWriteRequest.pb-c.c
@@ -0,0 +1,144 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubCartridgeWriteRequest.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubCartridgeWriteRequest.pb-c.h"
+void stub_cartridge_write_request__init
+ (StubCartridgeWriteRequest *message)
+{
+ static const StubCartridgeWriteRequest init_value = STUB_CARTRIDGE_WRITE_REQUEST__INIT;
+ *message = init_value;
+}
+size_t stub_cartridge_write_request__get_packed_size
+ (const StubCartridgeWriteRequest *message)
+{
+ assert(message->base.descriptor == &stub_cartridge_write_request__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_cartridge_write_request__pack
+ (const StubCartridgeWriteRequest *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_cartridge_write_request__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_cartridge_write_request__pack_to_buffer
+ (const StubCartridgeWriteRequest *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_cartridge_write_request__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubCartridgeWriteRequest *
+ stub_cartridge_write_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubCartridgeWriteRequest *)
+ protobuf_c_message_unpack (&stub_cartridge_write_request__descriptor,
+ allocator, len, data);
+}
+void stub_cartridge_write_request__free_unpacked
+ (StubCartridgeWriteRequest *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_cartridge_write_request__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_cartridge_write_request__field_descriptors[5] =
+{
+ {
+ "CartridgeId",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubCartridgeWriteRequest, has_cartridgeid),
+ offsetof(StubCartridgeWriteRequest, cartridgeid),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "CartridgeColor",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubCartridgeWriteRequest, has_cartridgecolor),
+ offsetof(StubCartridgeWriteRequest, cartridgecolor),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "CartridgeVersion",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubCartridgeWriteRequest, has_cartridgeversion),
+ offsetof(StubCartridgeWriteRequest, cartridgeversion),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "CartridgeData",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubCartridgeWriteRequest, has_cartridgedata),
+ offsetof(StubCartridgeWriteRequest, cartridgedata),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "CartridgeUsed",
+ 5,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubCartridgeWriteRequest, has_cartridgeused),
+ offsetof(StubCartridgeWriteRequest, cartridgeused),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_cartridge_write_request__field_indices_by_name[] = {
+ 1, /* field[1] = CartridgeColor */
+ 3, /* field[3] = CartridgeData */
+ 0, /* field[0] = CartridgeId */
+ 4, /* field[4] = CartridgeUsed */
+ 2, /* field[2] = CartridgeVersion */
+};
+static const ProtobufCIntRange stub_cartridge_write_request__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 5 }
+};
+const ProtobufCMessageDescriptor stub_cartridge_write_request__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubCartridgeWriteRequest",
+ "StubCartridgeWriteRequest",
+ "StubCartridgeWriteRequest",
+ "",
+ sizeof(StubCartridgeWriteRequest),
+ 5,
+ stub_cartridge_write_request__field_descriptors,
+ stub_cartridge_write_request__field_indices_by_name,
+ 1, stub_cartridge_write_request__number_ranges,
+ (ProtobufCMessageInit) stub_cartridge_write_request__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubCartridgeWriteRequest.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubCartridgeWriteRequest.pb-c.h
new file mode 100644
index 000000000..ead0d6b2d
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubCartridgeWriteRequest.pb-c.h
@@ -0,0 +1,88 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubCartridgeWriteRequest.proto */
+
+#ifndef PROTOBUF_C_StubCartridgeWriteRequest_2eproto__INCLUDED
+#define PROTOBUF_C_StubCartridgeWriteRequest_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubCartridgeWriteRequest StubCartridgeWriteRequest;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubCartridgeWriteRequest
+{
+ ProtobufCMessage base;
+ /*
+ *0..7
+ */
+ protobuf_c_boolean has_cartridgeid;
+ uint32_t cartridgeid;
+ /*
+ */
+ protobuf_c_boolean has_cartridgecolor;
+ uint32_t cartridgecolor;
+ protobuf_c_boolean has_cartridgeversion;
+ uint32_t cartridgeversion;
+ protobuf_c_boolean has_cartridgedata;
+ uint32_t cartridgedata;
+ /*
+ * 0 - new 1- used
+ */
+ protobuf_c_boolean has_cartridgeused;
+ protobuf_c_boolean cartridgeused;
+};
+#define STUB_CARTRIDGE_WRITE_REQUEST__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_cartridge_write_request__descriptor) \
+ , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+
+
+/* StubCartridgeWriteRequest methods */
+void stub_cartridge_write_request__init
+ (StubCartridgeWriteRequest *message);
+size_t stub_cartridge_write_request__get_packed_size
+ (const StubCartridgeWriteRequest *message);
+size_t stub_cartridge_write_request__pack
+ (const StubCartridgeWriteRequest *message,
+ uint8_t *out);
+size_t stub_cartridge_write_request__pack_to_buffer
+ (const StubCartridgeWriteRequest *message,
+ ProtobufCBuffer *buffer);
+StubCartridgeWriteRequest *
+ stub_cartridge_write_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_cartridge_write_request__free_unpacked
+ (StubCartridgeWriteRequest *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubCartridgeWriteRequest_Closure)
+ (const StubCartridgeWriteRequest *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_cartridge_write_request__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubCartridgeWriteRequest_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubCartridgeWriteResponse.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubCartridgeWriteResponse.pb-c.c
new file mode 100644
index 000000000..aa271df59
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubCartridgeWriteResponse.pb-c.c
@@ -0,0 +1,118 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubCartridgeWriteResponse.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubCartridgeWriteResponse.pb-c.h"
+void stub_cartridge_write_response__init
+ (StubCartridgeWriteResponse *message)
+{
+ static const StubCartridgeWriteResponse init_value = STUB_CARTRIDGE_WRITE_RESPONSE__INIT;
+ *message = init_value;
+}
+size_t stub_cartridge_write_response__get_packed_size
+ (const StubCartridgeWriteResponse *message)
+{
+ assert(message->base.descriptor == &stub_cartridge_write_response__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_cartridge_write_response__pack
+ (const StubCartridgeWriteResponse *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_cartridge_write_response__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_cartridge_write_response__pack_to_buffer
+ (const StubCartridgeWriteResponse *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_cartridge_write_response__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubCartridgeWriteResponse *
+ stub_cartridge_write_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubCartridgeWriteResponse *)
+ protobuf_c_message_unpack (&stub_cartridge_write_response__descriptor,
+ allocator, len, data);
+}
+void stub_cartridge_write_response__free_unpacked
+ (StubCartridgeWriteResponse *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_cartridge_write_response__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_cartridge_write_response__field_descriptors[3] =
+{
+ {
+ "CartridgeId",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubCartridgeWriteResponse, has_cartridgeid),
+ offsetof(StubCartridgeWriteResponse, cartridgeid),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Status",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_STRING,
+ 0, /* quantifier_offset */
+ offsetof(StubCartridgeWriteResponse, status),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "StatusWord",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubCartridgeWriteResponse, has_statusword),
+ offsetof(StubCartridgeWriteResponse, statusword),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_cartridge_write_response__field_indices_by_name[] = {
+ 0, /* field[0] = CartridgeId */
+ 1, /* field[1] = Status */
+ 2, /* field[2] = StatusWord */
+};
+static const ProtobufCIntRange stub_cartridge_write_response__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 3 }
+};
+const ProtobufCMessageDescriptor stub_cartridge_write_response__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubCartridgeWriteResponse",
+ "StubCartridgeWriteResponse",
+ "StubCartridgeWriteResponse",
+ "",
+ sizeof(StubCartridgeWriteResponse),
+ 3,
+ stub_cartridge_write_response__field_descriptors,
+ stub_cartridge_write_response__field_indices_by_name,
+ 1, stub_cartridge_write_response__number_ranges,
+ (ProtobufCMessageInit) stub_cartridge_write_response__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubCartridgeWriteResponse.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubCartridgeWriteResponse.pb-c.h
new file mode 100644
index 000000000..dab3d46fb
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubCartridgeWriteResponse.pb-c.h
@@ -0,0 +1,81 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubCartridgeWriteResponse.proto */
+
+#ifndef PROTOBUF_C_StubCartridgeWriteResponse_2eproto__INCLUDED
+#define PROTOBUF_C_StubCartridgeWriteResponse_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubCartridgeWriteResponse StubCartridgeWriteResponse;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubCartridgeWriteResponse
+{
+ ProtobufCMessage base;
+ protobuf_c_boolean has_cartridgeid;
+ uint32_t cartridgeid;
+ /*
+ * Passed/Failed
+ */
+ char *status;
+ /*
+ * Error number/bit when the status is Failed
+ */
+ protobuf_c_boolean has_statusword;
+ uint32_t statusword;
+};
+#define STUB_CARTRIDGE_WRITE_RESPONSE__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_cartridge_write_response__descriptor) \
+ , 0, 0, NULL, 0, 0 }
+
+
+/* StubCartridgeWriteResponse methods */
+void stub_cartridge_write_response__init
+ (StubCartridgeWriteResponse *message);
+size_t stub_cartridge_write_response__get_packed_size
+ (const StubCartridgeWriteResponse *message);
+size_t stub_cartridge_write_response__pack
+ (const StubCartridgeWriteResponse *message,
+ uint8_t *out);
+size_t stub_cartridge_write_response__pack_to_buffer
+ (const StubCartridgeWriteResponse *message,
+ ProtobufCBuffer *buffer);
+StubCartridgeWriteResponse *
+ stub_cartridge_write_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_cartridge_write_response__free_unpacked
+ (StubCartridgeWriteResponse *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubCartridgeWriteResponse_Closure)
+ (const StubCartridgeWriteResponse *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_cartridge_write_response__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubCartridgeWriteResponse_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubDispenserRequest.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubDispenserRequest.pb-c.c
new file mode 100644
index 000000000..d8cdbdd8b
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubDispenserRequest.pb-c.c
@@ -0,0 +1,144 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubDispenserRequest.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubDispenserRequest.pb-c.h"
+void stub_dispenser_request__init
+ (StubDispenserRequest *message)
+{
+ static const StubDispenserRequest init_value = STUB_DISPENSER_REQUEST__INIT;
+ *message = init_value;
+}
+size_t stub_dispenser_request__get_packed_size
+ (const StubDispenserRequest *message)
+{
+ assert(message->base.descriptor == &stub_dispenser_request__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_dispenser_request__pack
+ (const StubDispenserRequest *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_dispenser_request__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_dispenser_request__pack_to_buffer
+ (const StubDispenserRequest *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_dispenser_request__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubDispenserRequest *
+ stub_dispenser_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubDispenserRequest *)
+ protobuf_c_message_unpack (&stub_dispenser_request__descriptor,
+ allocator, len, data);
+}
+void stub_dispenser_request__free_unpacked
+ (StubDispenserRequest *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_dispenser_request__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_dispenser_request__field_descriptors[5] =
+{
+ {
+ "DispenserId",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubDispenserRequest, has_dispenserid),
+ offsetof(StubDispenserRequest, dispenserid),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Start",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubDispenserRequest, has_start),
+ offsetof(StubDispenserRequest, start),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "SetDirection",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubDispenserRequest, has_setdirection),
+ offsetof(StubDispenserRequest, setdirection),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "SetMicrostepDivision",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubDispenserRequest, has_setmicrostepdivision),
+ offsetof(StubDispenserRequest, setmicrostepdivision),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "SetSpeed",
+ 5,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(StubDispenserRequest, has_setspeed),
+ offsetof(StubDispenserRequest, setspeed),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_dispenser_request__field_indices_by_name[] = {
+ 0, /* field[0] = DispenserId */
+ 2, /* field[2] = SetDirection */
+ 3, /* field[3] = SetMicrostepDivision */
+ 4, /* field[4] = SetSpeed */
+ 1, /* field[1] = Start */
+};
+static const ProtobufCIntRange stub_dispenser_request__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 5 }
+};
+const ProtobufCMessageDescriptor stub_dispenser_request__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubDispenserRequest",
+ "StubDispenserRequest",
+ "StubDispenserRequest",
+ "",
+ sizeof(StubDispenserRequest),
+ 5,
+ stub_dispenser_request__field_descriptors,
+ stub_dispenser_request__field_indices_by_name,
+ 1, stub_dispenser_request__number_ranges,
+ (ProtobufCMessageInit) stub_dispenser_request__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubDispenserRequest.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubDispenserRequest.pb-c.h
new file mode 100644
index 000000000..8f99287a9
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubDispenserRequest.pb-c.h
@@ -0,0 +1,92 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubDispenserRequest.proto */
+
+#ifndef PROTOBUF_C_StubDispenserRequest_2eproto__INCLUDED
+#define PROTOBUF_C_StubDispenserRequest_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubDispenserRequest StubDispenserRequest;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubDispenserRequest
+{
+ ProtobufCMessage base;
+ /*
+ * 0..7
+ */
+ protobuf_c_boolean has_dispenserid;
+ uint32_t dispenserid;
+ /*
+ * 1-start 0-stop
+ */
+ protobuf_c_boolean has_start;
+ protobuf_c_boolean start;
+ /*
+ * 1-cw 0-ccw
+ */
+ protobuf_c_boolean has_setdirection;
+ protobuf_c_boolean setdirection;
+ /*
+ * No. of steps for 360 deg.
+ */
+ protobuf_c_boolean has_setmicrostepdivision;
+ uint32_t setmicrostepdivision;
+ protobuf_c_boolean has_setspeed;
+ int32_t setspeed;
+};
+#define STUB_DISPENSER_REQUEST__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_dispenser_request__descriptor) \
+ , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+
+
+/* StubDispenserRequest methods */
+void stub_dispenser_request__init
+ (StubDispenserRequest *message);
+size_t stub_dispenser_request__get_packed_size
+ (const StubDispenserRequest *message);
+size_t stub_dispenser_request__pack
+ (const StubDispenserRequest *message,
+ uint8_t *out);
+size_t stub_dispenser_request__pack_to_buffer
+ (const StubDispenserRequest *message,
+ ProtobufCBuffer *buffer);
+StubDispenserRequest *
+ stub_dispenser_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_dispenser_request__free_unpacked
+ (StubDispenserRequest *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubDispenserRequest_Closure)
+ (const StubDispenserRequest *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_dispenser_request__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubDispenserRequest_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubDispenserResponse.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubDispenserResponse.pb-c.c
new file mode 100644
index 000000000..cbfd886ec
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubDispenserResponse.pb-c.c
@@ -0,0 +1,144 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubDispenserResponse.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubDispenserResponse.pb-c.h"
+void stub_dispenser_response__init
+ (StubDispenserResponse *message)
+{
+ static const StubDispenserResponse init_value = STUB_DISPENSER_RESPONSE__INIT;
+ *message = init_value;
+}
+size_t stub_dispenser_response__get_packed_size
+ (const StubDispenserResponse *message)
+{
+ assert(message->base.descriptor == &stub_dispenser_response__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_dispenser_response__pack
+ (const StubDispenserResponse *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_dispenser_response__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_dispenser_response__pack_to_buffer
+ (const StubDispenserResponse *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_dispenser_response__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubDispenserResponse *
+ stub_dispenser_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubDispenserResponse *)
+ protobuf_c_message_unpack (&stub_dispenser_response__descriptor,
+ allocator, len, data);
+}
+void stub_dispenser_response__free_unpacked
+ (StubDispenserResponse *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_dispenser_response__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_dispenser_response__field_descriptors[5] =
+{
+ {
+ "DispenserId",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubDispenserResponse, has_dispenserid),
+ offsetof(StubDispenserResponse, dispenserid),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "DispenserPosition",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubDispenserResponse, has_dispenserposition),
+ offsetof(StubDispenserResponse, dispenserposition),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "InkWorningLevel",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubDispenserResponse, has_inkworninglevel),
+ offsetof(StubDispenserResponse, inkworninglevel),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Status",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_STRING,
+ 0, /* quantifier_offset */
+ offsetof(StubDispenserResponse, status),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "StatusWord",
+ 5,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubDispenserResponse, has_statusword),
+ offsetof(StubDispenserResponse, statusword),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_dispenser_response__field_indices_by_name[] = {
+ 0, /* field[0] = DispenserId */
+ 1, /* field[1] = DispenserPosition */
+ 2, /* field[2] = InkWorningLevel */
+ 3, /* field[3] = Status */
+ 4, /* field[4] = StatusWord */
+};
+static const ProtobufCIntRange stub_dispenser_response__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 5 }
+};
+const ProtobufCMessageDescriptor stub_dispenser_response__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubDispenserResponse",
+ "StubDispenserResponse",
+ "StubDispenserResponse",
+ "",
+ sizeof(StubDispenserResponse),
+ 5,
+ stub_dispenser_response__field_descriptors,
+ stub_dispenser_response__field_indices_by_name,
+ 1, stub_dispenser_response__number_ranges,
+ (ProtobufCMessageInit) stub_dispenser_response__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubDispenserResponse.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubDispenserResponse.pb-c.h
new file mode 100644
index 000000000..14d55b18e
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubDispenserResponse.pb-c.h
@@ -0,0 +1,93 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubDispenserResponse.proto */
+
+#ifndef PROTOBUF_C_StubDispenserResponse_2eproto__INCLUDED
+#define PROTOBUF_C_StubDispenserResponse_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubDispenserResponse StubDispenserResponse;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubDispenserResponse
+{
+ ProtobufCMessage base;
+ /*
+ * 0..7
+ */
+ protobuf_c_boolean has_dispenserid;
+ uint32_t dispenserid;
+ /*
+ */
+ protobuf_c_boolean has_dispenserposition;
+ uint32_t dispenserposition;
+ /*
+ * 1- critical 2- level 3- overflow
+ */
+ protobuf_c_boolean has_inkworninglevel;
+ uint32_t inkworninglevel;
+ /*
+ * Passed/Failed
+ */
+ char *status;
+ /*
+ * Error number/bit when the status is Failed
+ */
+ protobuf_c_boolean has_statusword;
+ uint32_t statusword;
+};
+#define STUB_DISPENSER_RESPONSE__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_dispenser_response__descriptor) \
+ , 0, 0, 0, 0, 0, 0, NULL, 0, 0 }
+
+
+/* StubDispenserResponse methods */
+void stub_dispenser_response__init
+ (StubDispenserResponse *message);
+size_t stub_dispenser_response__get_packed_size
+ (const StubDispenserResponse *message);
+size_t stub_dispenser_response__pack
+ (const StubDispenserResponse *message,
+ uint8_t *out);
+size_t stub_dispenser_response__pack_to_buffer
+ (const StubDispenserResponse *message,
+ ProtobufCBuffer *buffer);
+StubDispenserResponse *
+ stub_dispenser_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_dispenser_response__free_unpacked
+ (StubDispenserResponse *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubDispenserResponse_Closure)
+ (const StubDispenserResponse *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_dispenser_response__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubDispenserResponse_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubExtFlashReadRequest.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubExtFlashReadRequest.pb-c.c
new file mode 100644
index 000000000..e5f22797a
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubExtFlashReadRequest.pb-c.c
@@ -0,0 +1,92 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubExtFlashReadRequest.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubExtFlashReadRequest.pb-c.h"
+void stub_ext_flash_read_request__init
+ (StubExtFlashReadRequest *message)
+{
+ static const StubExtFlashReadRequest init_value = STUB_EXT_FLASH_READ_REQUEST__INIT;
+ *message = init_value;
+}
+size_t stub_ext_flash_read_request__get_packed_size
+ (const StubExtFlashReadRequest *message)
+{
+ assert(message->base.descriptor == &stub_ext_flash_read_request__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_ext_flash_read_request__pack
+ (const StubExtFlashReadRequest *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_ext_flash_read_request__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_ext_flash_read_request__pack_to_buffer
+ (const StubExtFlashReadRequest *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_ext_flash_read_request__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubExtFlashReadRequest *
+ stub_ext_flash_read_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubExtFlashReadRequest *)
+ protobuf_c_message_unpack (&stub_ext_flash_read_request__descriptor,
+ allocator, len, data);
+}
+void stub_ext_flash_read_request__free_unpacked
+ (StubExtFlashReadRequest *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_ext_flash_read_request__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_ext_flash_read_request__field_descriptors[1] =
+{
+ {
+ "Number_Of_Words",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubExtFlashReadRequest, has_number_of_words),
+ offsetof(StubExtFlashReadRequest, number_of_words),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_ext_flash_read_request__field_indices_by_name[] = {
+ 0, /* field[0] = Number_Of_Words */
+};
+static const ProtobufCIntRange stub_ext_flash_read_request__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 1 }
+};
+const ProtobufCMessageDescriptor stub_ext_flash_read_request__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubExtFlashReadRequest",
+ "StubExtFlashReadRequest",
+ "StubExtFlashReadRequest",
+ "",
+ sizeof(StubExtFlashReadRequest),
+ 1,
+ stub_ext_flash_read_request__field_descriptors,
+ stub_ext_flash_read_request__field_indices_by_name,
+ 1, stub_ext_flash_read_request__number_ranges,
+ (ProtobufCMessageInit) stub_ext_flash_read_request__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubExtFlashReadRequest.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubExtFlashReadRequest.pb-c.h
new file mode 100644
index 000000000..0345c7c86
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubExtFlashReadRequest.pb-c.h
@@ -0,0 +1,75 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubExtFlashReadRequest.proto */
+
+#ifndef PROTOBUF_C_StubExtFlashReadRequest_2eproto__INCLUDED
+#define PROTOBUF_C_StubExtFlashReadRequest_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubExtFlashReadRequest StubExtFlashReadRequest;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubExtFlashReadRequest
+{
+ ProtobufCMessage base;
+ /*
+ *Max 5 at this test
+ */
+ protobuf_c_boolean has_number_of_words;
+ uint32_t number_of_words;
+};
+#define STUB_EXT_FLASH_READ_REQUEST__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_ext_flash_read_request__descriptor) \
+ , 0, 0 }
+
+
+/* StubExtFlashReadRequest methods */
+void stub_ext_flash_read_request__init
+ (StubExtFlashReadRequest *message);
+size_t stub_ext_flash_read_request__get_packed_size
+ (const StubExtFlashReadRequest *message);
+size_t stub_ext_flash_read_request__pack
+ (const StubExtFlashReadRequest *message,
+ uint8_t *out);
+size_t stub_ext_flash_read_request__pack_to_buffer
+ (const StubExtFlashReadRequest *message,
+ ProtobufCBuffer *buffer);
+StubExtFlashReadRequest *
+ stub_ext_flash_read_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_ext_flash_read_request__free_unpacked
+ (StubExtFlashReadRequest *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubExtFlashReadRequest_Closure)
+ (const StubExtFlashReadRequest *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_ext_flash_read_request__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubExtFlashReadRequest_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubExtFlashReadResponse.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubExtFlashReadResponse.pb-c.c
new file mode 100644
index 000000000..57045730d
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubExtFlashReadResponse.pb-c.c
@@ -0,0 +1,170 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubExtFlashReadResponse.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubExtFlashReadResponse.pb-c.h"
+void stub_ext_flash_read_response__init
+ (StubExtFlashReadResponse *message)
+{
+ static const StubExtFlashReadResponse init_value = STUB_EXT_FLASH_READ_RESPONSE__INIT;
+ *message = init_value;
+}
+size_t stub_ext_flash_read_response__get_packed_size
+ (const StubExtFlashReadResponse *message)
+{
+ assert(message->base.descriptor == &stub_ext_flash_read_response__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_ext_flash_read_response__pack
+ (const StubExtFlashReadResponse *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_ext_flash_read_response__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_ext_flash_read_response__pack_to_buffer
+ (const StubExtFlashReadResponse *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_ext_flash_read_response__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubExtFlashReadResponse *
+ stub_ext_flash_read_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubExtFlashReadResponse *)
+ protobuf_c_message_unpack (&stub_ext_flash_read_response__descriptor,
+ allocator, len, data);
+}
+void stub_ext_flash_read_response__free_unpacked
+ (StubExtFlashReadResponse *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_ext_flash_read_response__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_ext_flash_read_response__field_descriptors[7] =
+{
+ {
+ "ReadWord_1",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(StubExtFlashReadResponse, has_readword_1),
+ offsetof(StubExtFlashReadResponse, readword_1),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "ReadWord_2",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(StubExtFlashReadResponse, has_readword_2),
+ offsetof(StubExtFlashReadResponse, readword_2),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "ReadWord_3",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(StubExtFlashReadResponse, has_readword_3),
+ offsetof(StubExtFlashReadResponse, readword_3),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "ReadWord_4",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(StubExtFlashReadResponse, has_readword_4),
+ offsetof(StubExtFlashReadResponse, readword_4),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "ReadWord_5",
+ 5,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(StubExtFlashReadResponse, has_readword_5),
+ offsetof(StubExtFlashReadResponse, readword_5),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Status",
+ 6,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_STRING,
+ 0, /* quantifier_offset */
+ offsetof(StubExtFlashReadResponse, status),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "StatusWord",
+ 7,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubExtFlashReadResponse, has_statusword),
+ offsetof(StubExtFlashReadResponse, statusword),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_ext_flash_read_response__field_indices_by_name[] = {
+ 0, /* field[0] = ReadWord_1 */
+ 1, /* field[1] = ReadWord_2 */
+ 2, /* field[2] = ReadWord_3 */
+ 3, /* field[3] = ReadWord_4 */
+ 4, /* field[4] = ReadWord_5 */
+ 5, /* field[5] = Status */
+ 6, /* field[6] = StatusWord */
+};
+static const ProtobufCIntRange stub_ext_flash_read_response__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 7 }
+};
+const ProtobufCMessageDescriptor stub_ext_flash_read_response__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubExtFlashReadResponse",
+ "StubExtFlashReadResponse",
+ "StubExtFlashReadResponse",
+ "",
+ sizeof(StubExtFlashReadResponse),
+ 7,
+ stub_ext_flash_read_response__field_descriptors,
+ stub_ext_flash_read_response__field_indices_by_name,
+ 1, stub_ext_flash_read_response__number_ranges,
+ (ProtobufCMessageInit) stub_ext_flash_read_response__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubExtFlashReadResponse.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubExtFlashReadResponse.pb-c.h
new file mode 100644
index 000000000..c0bfdd88c
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubExtFlashReadResponse.pb-c.h
@@ -0,0 +1,99 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubExtFlashReadResponse.proto */
+
+#ifndef PROTOBUF_C_StubExtFlashReadResponse_2eproto__INCLUDED
+#define PROTOBUF_C_StubExtFlashReadResponse_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubExtFlashReadResponse StubExtFlashReadResponse;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubExtFlashReadResponse
+{
+ ProtobufCMessage base;
+ /*
+ */
+ protobuf_c_boolean has_readword_1;
+ int32_t readword_1;
+ /*
+ */
+ protobuf_c_boolean has_readword_2;
+ int32_t readword_2;
+ /*
+ */
+ protobuf_c_boolean has_readword_3;
+ int32_t readword_3;
+ /*
+ */
+ protobuf_c_boolean has_readword_4;
+ int32_t readword_4;
+ /*
+ */
+ protobuf_c_boolean has_readword_5;
+ int32_t readword_5;
+ /*
+ * Passed/Failed
+ */
+ char *status;
+ /*
+ * Error number/bit when the status is Failed
+ */
+ protobuf_c_boolean has_statusword;
+ uint32_t statusword;
+};
+#define STUB_EXT_FLASH_READ_RESPONSE__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_ext_flash_read_response__descriptor) \
+ , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, 0, 0 }
+
+
+/* StubExtFlashReadResponse methods */
+void stub_ext_flash_read_response__init
+ (StubExtFlashReadResponse *message);
+size_t stub_ext_flash_read_response__get_packed_size
+ (const StubExtFlashReadResponse *message);
+size_t stub_ext_flash_read_response__pack
+ (const StubExtFlashReadResponse *message,
+ uint8_t *out);
+size_t stub_ext_flash_read_response__pack_to_buffer
+ (const StubExtFlashReadResponse *message,
+ ProtobufCBuffer *buffer);
+StubExtFlashReadResponse *
+ stub_ext_flash_read_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_ext_flash_read_response__free_unpacked
+ (StubExtFlashReadResponse *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubExtFlashReadResponse_Closure)
+ (const StubExtFlashReadResponse *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_ext_flash_read_response__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubExtFlashReadResponse_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubExtFlashWriteRequest.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubExtFlashWriteRequest.pb-c.c
new file mode 100644
index 000000000..e74bb57de
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubExtFlashWriteRequest.pb-c.c
@@ -0,0 +1,144 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubExtFlashWriteRequest.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubExtFlashWriteRequest.pb-c.h"
+void stub_ext_flash_write_request__init
+ (StubExtFlashWriteRequest *message)
+{
+ static const StubExtFlashWriteRequest init_value = STUB_EXT_FLASH_WRITE_REQUEST__INIT;
+ *message = init_value;
+}
+size_t stub_ext_flash_write_request__get_packed_size
+ (const StubExtFlashWriteRequest *message)
+{
+ assert(message->base.descriptor == &stub_ext_flash_write_request__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_ext_flash_write_request__pack
+ (const StubExtFlashWriteRequest *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_ext_flash_write_request__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_ext_flash_write_request__pack_to_buffer
+ (const StubExtFlashWriteRequest *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_ext_flash_write_request__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubExtFlashWriteRequest *
+ stub_ext_flash_write_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubExtFlashWriteRequest *)
+ protobuf_c_message_unpack (&stub_ext_flash_write_request__descriptor,
+ allocator, len, data);
+}
+void stub_ext_flash_write_request__free_unpacked
+ (StubExtFlashWriteRequest *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_ext_flash_write_request__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_ext_flash_write_request__field_descriptors[5] =
+{
+ {
+ "WordToWrite1",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(StubExtFlashWriteRequest, has_wordtowrite1),
+ offsetof(StubExtFlashWriteRequest, wordtowrite1),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "WordToWrite2",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(StubExtFlashWriteRequest, has_wordtowrite2),
+ offsetof(StubExtFlashWriteRequest, wordtowrite2),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "WordToWrite3",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(StubExtFlashWriteRequest, has_wordtowrite3),
+ offsetof(StubExtFlashWriteRequest, wordtowrite3),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "WordToWrite4",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(StubExtFlashWriteRequest, has_wordtowrite4),
+ offsetof(StubExtFlashWriteRequest, wordtowrite4),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "WordToWrite5",
+ 5,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(StubExtFlashWriteRequest, has_wordtowrite5),
+ offsetof(StubExtFlashWriteRequest, wordtowrite5),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_ext_flash_write_request__field_indices_by_name[] = {
+ 0, /* field[0] = WordToWrite1 */
+ 1, /* field[1] = WordToWrite2 */
+ 2, /* field[2] = WordToWrite3 */
+ 3, /* field[3] = WordToWrite4 */
+ 4, /* field[4] = WordToWrite5 */
+};
+static const ProtobufCIntRange stub_ext_flash_write_request__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 5 }
+};
+const ProtobufCMessageDescriptor stub_ext_flash_write_request__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubExtFlashWriteRequest",
+ "StubExtFlashWriteRequest",
+ "StubExtFlashWriteRequest",
+ "",
+ sizeof(StubExtFlashWriteRequest),
+ 5,
+ stub_ext_flash_write_request__field_descriptors,
+ stub_ext_flash_write_request__field_indices_by_name,
+ 1, stub_ext_flash_write_request__number_ranges,
+ (ProtobufCMessageInit) stub_ext_flash_write_request__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubExtFlashWriteRequest.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubExtFlashWriteRequest.pb-c.h
new file mode 100644
index 000000000..91453d218
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubExtFlashWriteRequest.pb-c.h
@@ -0,0 +1,95 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubExtFlashWriteRequest.proto */
+
+#ifndef PROTOBUF_C_StubExtFlashWriteRequest_2eproto__INCLUDED
+#define PROTOBUF_C_StubExtFlashWriteRequest_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubExtFlashWriteRequest StubExtFlashWriteRequest;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubExtFlashWriteRequest
+{
+ ProtobufCMessage base;
+ /*
+ *0..255
+ */
+ protobuf_c_boolean has_wordtowrite1;
+ int32_t wordtowrite1;
+ /*
+ *0..255
+ */
+ protobuf_c_boolean has_wordtowrite2;
+ int32_t wordtowrite2;
+ /*
+ *0..255
+ */
+ protobuf_c_boolean has_wordtowrite3;
+ int32_t wordtowrite3;
+ /*
+ *0..255
+ */
+ protobuf_c_boolean has_wordtowrite4;
+ int32_t wordtowrite4;
+ /*
+ *0..255
+ */
+ protobuf_c_boolean has_wordtowrite5;
+ int32_t wordtowrite5;
+};
+#define STUB_EXT_FLASH_WRITE_REQUEST__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_ext_flash_write_request__descriptor) \
+ , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+
+
+/* StubExtFlashWriteRequest methods */
+void stub_ext_flash_write_request__init
+ (StubExtFlashWriteRequest *message);
+size_t stub_ext_flash_write_request__get_packed_size
+ (const StubExtFlashWriteRequest *message);
+size_t stub_ext_flash_write_request__pack
+ (const StubExtFlashWriteRequest *message,
+ uint8_t *out);
+size_t stub_ext_flash_write_request__pack_to_buffer
+ (const StubExtFlashWriteRequest *message,
+ ProtobufCBuffer *buffer);
+StubExtFlashWriteRequest *
+ stub_ext_flash_write_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_ext_flash_write_request__free_unpacked
+ (StubExtFlashWriteRequest *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubExtFlashWriteRequest_Closure)
+ (const StubExtFlashWriteRequest *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_ext_flash_write_request__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubExtFlashWriteRequest_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubExtFlashWriteResponse.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubExtFlashWriteResponse.pb-c.c
new file mode 100644
index 000000000..33a3b7e98
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubExtFlashWriteResponse.pb-c.c
@@ -0,0 +1,105 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubExtFlashWriteResponse.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubExtFlashWriteResponse.pb-c.h"
+void stub_ext_flash_write_response__init
+ (StubExtFlashWriteResponse *message)
+{
+ static const StubExtFlashWriteResponse init_value = STUB_EXT_FLASH_WRITE_RESPONSE__INIT;
+ *message = init_value;
+}
+size_t stub_ext_flash_write_response__get_packed_size
+ (const StubExtFlashWriteResponse *message)
+{
+ assert(message->base.descriptor == &stub_ext_flash_write_response__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_ext_flash_write_response__pack
+ (const StubExtFlashWriteResponse *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_ext_flash_write_response__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_ext_flash_write_response__pack_to_buffer
+ (const StubExtFlashWriteResponse *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_ext_flash_write_response__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubExtFlashWriteResponse *
+ stub_ext_flash_write_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubExtFlashWriteResponse *)
+ protobuf_c_message_unpack (&stub_ext_flash_write_response__descriptor,
+ allocator, len, data);
+}
+void stub_ext_flash_write_response__free_unpacked
+ (StubExtFlashWriteResponse *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_ext_flash_write_response__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_ext_flash_write_response__field_descriptors[2] =
+{
+ {
+ "Status",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_STRING,
+ 0, /* quantifier_offset */
+ offsetof(StubExtFlashWriteResponse, status),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "StatusWord",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubExtFlashWriteResponse, has_statusword),
+ offsetof(StubExtFlashWriteResponse, statusword),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_ext_flash_write_response__field_indices_by_name[] = {
+ 0, /* field[0] = Status */
+ 1, /* field[1] = StatusWord */
+};
+static const ProtobufCIntRange stub_ext_flash_write_response__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 2 }
+};
+const ProtobufCMessageDescriptor stub_ext_flash_write_response__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubExtFlashWriteResponse",
+ "StubExtFlashWriteResponse",
+ "StubExtFlashWriteResponse",
+ "",
+ sizeof(StubExtFlashWriteResponse),
+ 2,
+ stub_ext_flash_write_response__field_descriptors,
+ stub_ext_flash_write_response__field_indices_by_name,
+ 1, stub_ext_flash_write_response__number_ranges,
+ (ProtobufCMessageInit) stub_ext_flash_write_response__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubExtFlashWriteResponse.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubExtFlashWriteResponse.pb-c.h
new file mode 100644
index 000000000..50d2f94d4
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubExtFlashWriteResponse.pb-c.h
@@ -0,0 +1,79 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubExtFlashWriteResponse.proto */
+
+#ifndef PROTOBUF_C_StubExtFlashWriteResponse_2eproto__INCLUDED
+#define PROTOBUF_C_StubExtFlashWriteResponse_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubExtFlashWriteResponse StubExtFlashWriteResponse;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubExtFlashWriteResponse
+{
+ ProtobufCMessage base;
+ /*
+ * Passed/Failed
+ */
+ char *status;
+ /*
+ * Error number/bit when the status is Failed
+ */
+ protobuf_c_boolean has_statusword;
+ uint32_t statusword;
+};
+#define STUB_EXT_FLASH_WRITE_RESPONSE__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_ext_flash_write_response__descriptor) \
+ , NULL, 0, 0 }
+
+
+/* StubExtFlashWriteResponse methods */
+void stub_ext_flash_write_response__init
+ (StubExtFlashWriteResponse *message);
+size_t stub_ext_flash_write_response__get_packed_size
+ (const StubExtFlashWriteResponse *message);
+size_t stub_ext_flash_write_response__pack
+ (const StubExtFlashWriteResponse *message,
+ uint8_t *out);
+size_t stub_ext_flash_write_response__pack_to_buffer
+ (const StubExtFlashWriteResponse *message,
+ ProtobufCBuffer *buffer);
+StubExtFlashWriteResponse *
+ stub_ext_flash_write_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_ext_flash_write_response__free_unpacked
+ (StubExtFlashWriteResponse *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubExtFlashWriteResponse_Closure)
+ (const StubExtFlashWriteResponse *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_ext_flash_write_response__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubExtFlashWriteResponse_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubF3Gpo01WriteRequest.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubF3Gpo01WriteRequest.pb-c.c
new file mode 100644
index 000000000..69466269b
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubF3Gpo01WriteRequest.pb-c.c
@@ -0,0 +1,235 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubF3Gpo01WriteRequest.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubF3Gpo01WriteRequest.pb-c.h"
+void stub_f3_gpo01_write_request__init
+ (StubF3Gpo01WriteRequest *message)
+{
+ static const StubF3Gpo01WriteRequest init_value = STUB_F3_GPO01_WRITE_REQUEST__INIT;
+ *message = init_value;
+}
+size_t stub_f3_gpo01_write_request__get_packed_size
+ (const StubF3Gpo01WriteRequest *message)
+{
+ assert(message->base.descriptor == &stub_f3_gpo01_write_request__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_f3_gpo01_write_request__pack
+ (const StubF3Gpo01WriteRequest *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_f3_gpo01_write_request__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_f3_gpo01_write_request__pack_to_buffer
+ (const StubF3Gpo01WriteRequest *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_f3_gpo01_write_request__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubF3Gpo01WriteRequest *
+ stub_f3_gpo01_write_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubF3Gpo01WriteRequest *)
+ protobuf_c_message_unpack (&stub_f3_gpo01_write_request__descriptor,
+ allocator, len, data);
+}
+void stub_f3_gpo01_write_request__free_unpacked
+ (StubF3Gpo01WriteRequest *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_f3_gpo01_write_request__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_f3_gpo01_write_request__field_descriptors[12] =
+{
+ {
+ "F3_GPO_LED4",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubF3Gpo01WriteRequest, has_f3_gpo_led4),
+ offsetof(StubF3Gpo01WriteRequest, f3_gpo_led4),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Write_F3_GPO_LED4",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubF3Gpo01WriteRequest, has_write_f3_gpo_led4),
+ offsetof(StubF3Gpo01WriteRequest, write_f3_gpo_led4),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "F3_GPO_LED3",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubF3Gpo01WriteRequest, has_f3_gpo_led3),
+ offsetof(StubF3Gpo01WriteRequest, f3_gpo_led3),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Write_F3_GPO_LED3",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubF3Gpo01WriteRequest, has_write_f3_gpo_led3),
+ offsetof(StubF3Gpo01WriteRequest, write_f3_gpo_led3),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "F3_GPO_LED2",
+ 5,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubF3Gpo01WriteRequest, has_f3_gpo_led2),
+ offsetof(StubF3Gpo01WriteRequest, f3_gpo_led2),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Write_F3_GPO_LED2",
+ 6,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubF3Gpo01WriteRequest, has_write_f3_gpo_led2),
+ offsetof(StubF3Gpo01WriteRequest, write_f3_gpo_led2),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "F3_GPO_LED1",
+ 7,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubF3Gpo01WriteRequest, has_f3_gpo_led1),
+ offsetof(StubF3Gpo01WriteRequest, f3_gpo_led1),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Write_F3_GPO_LED1",
+ 8,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubF3Gpo01WriteRequest, has_write_f3_gpo_led1),
+ offsetof(StubF3Gpo01WriteRequest, write_f3_gpo_led1),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "F3_GPO_EXTWINDER_SSR11_CTRL",
+ 9,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubF3Gpo01WriteRequest, has_f3_gpo_extwinder_ssr11_ctrl),
+ offsetof(StubF3Gpo01WriteRequest, f3_gpo_extwinder_ssr11_ctrl),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Write_F3_GPO_EXTWINDER_SSR11_CTRL",
+ 10,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubF3Gpo01WriteRequest, has_write_f3_gpo_extwinder_ssr11_ctrl),
+ offsetof(StubF3Gpo01WriteRequest, write_f3_gpo_extwinder_ssr11_ctrl),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "F3_GPO_BUZZER",
+ 11,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubF3Gpo01WriteRequest, has_f3_gpo_buzzer),
+ offsetof(StubF3Gpo01WriteRequest, f3_gpo_buzzer),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Write_F3_GPO_BUZZER",
+ 12,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubF3Gpo01WriteRequest, has_write_f3_gpo_buzzer),
+ offsetof(StubF3Gpo01WriteRequest, write_f3_gpo_buzzer),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_f3_gpo01_write_request__field_indices_by_name[] = {
+ 10, /* field[10] = F3_GPO_BUZZER */
+ 8, /* field[8] = F3_GPO_EXTWINDER_SSR11_CTRL */
+ 6, /* field[6] = F3_GPO_LED1 */
+ 4, /* field[4] = F3_GPO_LED2 */
+ 2, /* field[2] = F3_GPO_LED3 */
+ 0, /* field[0] = F3_GPO_LED4 */
+ 11, /* field[11] = Write_F3_GPO_BUZZER */
+ 9, /* field[9] = Write_F3_GPO_EXTWINDER_SSR11_CTRL */
+ 7, /* field[7] = Write_F3_GPO_LED1 */
+ 5, /* field[5] = Write_F3_GPO_LED2 */
+ 3, /* field[3] = Write_F3_GPO_LED3 */
+ 1, /* field[1] = Write_F3_GPO_LED4 */
+};
+static const ProtobufCIntRange stub_f3_gpo01_write_request__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 12 }
+};
+const ProtobufCMessageDescriptor stub_f3_gpo01_write_request__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubF3Gpo01WriteRequest",
+ "StubF3Gpo01WriteRequest",
+ "StubF3Gpo01WriteRequest",
+ "",
+ sizeof(StubF3Gpo01WriteRequest),
+ 12,
+ stub_f3_gpo01_write_request__field_descriptors,
+ stub_f3_gpo01_write_request__field_indices_by_name,
+ 1, stub_f3_gpo01_write_request__number_ranges,
+ (ProtobufCMessageInit) stub_f3_gpo01_write_request__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubF3Gpo01WriteRequest.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubF3Gpo01WriteRequest.pb-c.h
new file mode 100644
index 000000000..1dec7e478
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubF3Gpo01WriteRequest.pb-c.h
@@ -0,0 +1,100 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubF3Gpo01WriteRequest.proto */
+
+#ifndef PROTOBUF_C_StubF3Gpo01WriteRequest_2eproto__INCLUDED
+#define PROTOBUF_C_StubF3Gpo01WriteRequest_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubF3Gpo01WriteRequest StubF3Gpo01WriteRequest;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubF3Gpo01WriteRequest
+{
+ ProtobufCMessage base;
+ /*
+ *value
+ */
+ protobuf_c_boolean has_f3_gpo_led4;
+ protobuf_c_boolean f3_gpo_led4;
+ /*
+ *write
+ */
+ protobuf_c_boolean has_write_f3_gpo_led4;
+ protobuf_c_boolean write_f3_gpo_led4;
+ protobuf_c_boolean has_f3_gpo_led3;
+ protobuf_c_boolean f3_gpo_led3;
+ protobuf_c_boolean has_write_f3_gpo_led3;
+ protobuf_c_boolean write_f3_gpo_led3;
+ protobuf_c_boolean has_f3_gpo_led2;
+ protobuf_c_boolean f3_gpo_led2;
+ protobuf_c_boolean has_write_f3_gpo_led2;
+ protobuf_c_boolean write_f3_gpo_led2;
+ protobuf_c_boolean has_f3_gpo_led1;
+ protobuf_c_boolean f3_gpo_led1;
+ protobuf_c_boolean has_write_f3_gpo_led1;
+ protobuf_c_boolean write_f3_gpo_led1;
+ protobuf_c_boolean has_f3_gpo_extwinder_ssr11_ctrl;
+ protobuf_c_boolean f3_gpo_extwinder_ssr11_ctrl;
+ protobuf_c_boolean has_write_f3_gpo_extwinder_ssr11_ctrl;
+ protobuf_c_boolean write_f3_gpo_extwinder_ssr11_ctrl;
+ protobuf_c_boolean has_f3_gpo_buzzer;
+ protobuf_c_boolean f3_gpo_buzzer;
+ protobuf_c_boolean has_write_f3_gpo_buzzer;
+ protobuf_c_boolean write_f3_gpo_buzzer;
+};
+#define STUB_F3_GPO01_WRITE_REQUEST__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_f3_gpo01_write_request__descriptor) \
+ , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+
+
+/* StubF3Gpo01WriteRequest methods */
+void stub_f3_gpo01_write_request__init
+ (StubF3Gpo01WriteRequest *message);
+size_t stub_f3_gpo01_write_request__get_packed_size
+ (const StubF3Gpo01WriteRequest *message);
+size_t stub_f3_gpo01_write_request__pack
+ (const StubF3Gpo01WriteRequest *message,
+ uint8_t *out);
+size_t stub_f3_gpo01_write_request__pack_to_buffer
+ (const StubF3Gpo01WriteRequest *message,
+ ProtobufCBuffer *buffer);
+StubF3Gpo01WriteRequest *
+ stub_f3_gpo01_write_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_f3_gpo01_write_request__free_unpacked
+ (StubF3Gpo01WriteRequest *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubF3Gpo01WriteRequest_Closure)
+ (const StubF3Gpo01WriteRequest *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_f3_gpo01_write_request__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubF3Gpo01WriteRequest_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubF3Gpo01WriteResponse.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubF3Gpo01WriteResponse.pb-c.c
new file mode 100644
index 000000000..4b852987e
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubF3Gpo01WriteResponse.pb-c.c
@@ -0,0 +1,105 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubF3Gpo01WriteResponse.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubF3Gpo01WriteResponse.pb-c.h"
+void stub_f3_gpo01_write_response__init
+ (StubF3Gpo01WriteResponse *message)
+{
+ static const StubF3Gpo01WriteResponse init_value = STUB_F3_GPO01_WRITE_RESPONSE__INIT;
+ *message = init_value;
+}
+size_t stub_f3_gpo01_write_response__get_packed_size
+ (const StubF3Gpo01WriteResponse *message)
+{
+ assert(message->base.descriptor == &stub_f3_gpo01_write_response__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_f3_gpo01_write_response__pack
+ (const StubF3Gpo01WriteResponse *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_f3_gpo01_write_response__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_f3_gpo01_write_response__pack_to_buffer
+ (const StubF3Gpo01WriteResponse *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_f3_gpo01_write_response__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubF3Gpo01WriteResponse *
+ stub_f3_gpo01_write_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubF3Gpo01WriteResponse *)
+ protobuf_c_message_unpack (&stub_f3_gpo01_write_response__descriptor,
+ allocator, len, data);
+}
+void stub_f3_gpo01_write_response__free_unpacked
+ (StubF3Gpo01WriteResponse *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_f3_gpo01_write_response__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_f3_gpo01_write_response__field_descriptors[2] =
+{
+ {
+ "Status",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_STRING,
+ 0, /* quantifier_offset */
+ offsetof(StubF3Gpo01WriteResponse, status),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "StatusWord",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubF3Gpo01WriteResponse, has_statusword),
+ offsetof(StubF3Gpo01WriteResponse, statusword),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_f3_gpo01_write_response__field_indices_by_name[] = {
+ 0, /* field[0] = Status */
+ 1, /* field[1] = StatusWord */
+};
+static const ProtobufCIntRange stub_f3_gpo01_write_response__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 2 }
+};
+const ProtobufCMessageDescriptor stub_f3_gpo01_write_response__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubF3Gpo01WriteResponse",
+ "StubF3Gpo01WriteResponse",
+ "StubF3Gpo01WriteResponse",
+ "",
+ sizeof(StubF3Gpo01WriteResponse),
+ 2,
+ stub_f3_gpo01_write_response__field_descriptors,
+ stub_f3_gpo01_write_response__field_indices_by_name,
+ 1, stub_f3_gpo01_write_response__number_ranges,
+ (ProtobufCMessageInit) stub_f3_gpo01_write_response__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubF3Gpo01WriteResponse.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubF3Gpo01WriteResponse.pb-c.h
new file mode 100644
index 000000000..c245016a4
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubF3Gpo01WriteResponse.pb-c.h
@@ -0,0 +1,79 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubF3Gpo01WriteResponse.proto */
+
+#ifndef PROTOBUF_C_StubF3Gpo01WriteResponse_2eproto__INCLUDED
+#define PROTOBUF_C_StubF3Gpo01WriteResponse_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubF3Gpo01WriteResponse StubF3Gpo01WriteResponse;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubF3Gpo01WriteResponse
+{
+ ProtobufCMessage base;
+ /*
+ * Passed/Failed
+ */
+ char *status;
+ /*
+ * Error number/bit when the status is Failed
+ */
+ protobuf_c_boolean has_statusword;
+ uint32_t statusword;
+};
+#define STUB_F3_GPO01_WRITE_RESPONSE__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_f3_gpo01_write_response__descriptor) \
+ , NULL, 0, 0 }
+
+
+/* StubF3Gpo01WriteResponse methods */
+void stub_f3_gpo01_write_response__init
+ (StubF3Gpo01WriteResponse *message);
+size_t stub_f3_gpo01_write_response__get_packed_size
+ (const StubF3Gpo01WriteResponse *message);
+size_t stub_f3_gpo01_write_response__pack
+ (const StubF3Gpo01WriteResponse *message,
+ uint8_t *out);
+size_t stub_f3_gpo01_write_response__pack_to_buffer
+ (const StubF3Gpo01WriteResponse *message,
+ ProtobufCBuffer *buffer);
+StubF3Gpo01WriteResponse *
+ stub_f3_gpo01_write_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_f3_gpo01_write_response__free_unpacked
+ (StubF3Gpo01WriteResponse *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubF3Gpo01WriteResponse_Closure)
+ (const StubF3Gpo01WriteResponse *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_f3_gpo01_write_response__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubF3Gpo01WriteResponse_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubFPGAReadBackRegRequest.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubFPGAReadBackRegRequest.pb-c.c
new file mode 100644
index 000000000..60519632e
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubFPGAReadBackRegRequest.pb-c.c
@@ -0,0 +1,105 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubFPGAReadBackRegRequest.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubFPGAReadBackRegRequest.pb-c.h"
+void stub_fpgaread_back_reg_request__init
+ (StubFPGAReadBackRegRequest *message)
+{
+ static const StubFPGAReadBackRegRequest init_value = STUB_FPGAREAD_BACK_REG_REQUEST__INIT;
+ *message = init_value;
+}
+size_t stub_fpgaread_back_reg_request__get_packed_size
+ (const StubFPGAReadBackRegRequest *message)
+{
+ assert(message->base.descriptor == &stub_fpgaread_back_reg_request__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_fpgaread_back_reg_request__pack
+ (const StubFPGAReadBackRegRequest *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_fpgaread_back_reg_request__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_fpgaread_back_reg_request__pack_to_buffer
+ (const StubFPGAReadBackRegRequest *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_fpgaread_back_reg_request__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubFPGAReadBackRegRequest *
+ stub_fpgaread_back_reg_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubFPGAReadBackRegRequest *)
+ protobuf_c_message_unpack (&stub_fpgaread_back_reg_request__descriptor,
+ allocator, len, data);
+}
+void stub_fpgaread_back_reg_request__free_unpacked
+ (StubFPGAReadBackRegRequest *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_fpgaread_back_reg_request__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_fpgaread_back_reg_request__field_descriptors[2] =
+{
+ {
+ "FPGAId",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubFPGAReadBackRegRequest, has_fpgaid),
+ offsetof(StubFPGAReadBackRegRequest, fpgaid),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Value",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubFPGAReadBackRegRequest, has_value),
+ offsetof(StubFPGAReadBackRegRequest, value),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_fpgaread_back_reg_request__field_indices_by_name[] = {
+ 0, /* field[0] = FPGAId */
+ 1, /* field[1] = Value */
+};
+static const ProtobufCIntRange stub_fpgaread_back_reg_request__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 2 }
+};
+const ProtobufCMessageDescriptor stub_fpgaread_back_reg_request__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubFPGAReadBackRegRequest",
+ "StubFPGAReadBackRegRequest",
+ "StubFPGAReadBackRegRequest",
+ "",
+ sizeof(StubFPGAReadBackRegRequest),
+ 2,
+ stub_fpgaread_back_reg_request__field_descriptors,
+ stub_fpgaread_back_reg_request__field_indices_by_name,
+ 1, stub_fpgaread_back_reg_request__number_ranges,
+ (ProtobufCMessageInit) stub_fpgaread_back_reg_request__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubFPGAReadBackRegRequest.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubFPGAReadBackRegRequest.pb-c.h
new file mode 100644
index 000000000..e4ae69f1f
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubFPGAReadBackRegRequest.pb-c.h
@@ -0,0 +1,80 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubFPGAReadBackRegRequest.proto */
+
+#ifndef PROTOBUF_C_StubFPGAReadBackRegRequest_2eproto__INCLUDED
+#define PROTOBUF_C_StubFPGAReadBackRegRequest_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubFPGAReadBackRegRequest StubFPGAReadBackRegRequest;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubFPGAReadBackRegRequest
+{
+ ProtobufCMessage base;
+ /*
+ * 0..2
+ */
+ protobuf_c_boolean has_fpgaid;
+ uint32_t fpgaid;
+ /*
+ * 16 bit
+ */
+ protobuf_c_boolean has_value;
+ uint32_t value;
+};
+#define STUB_FPGAREAD_BACK_REG_REQUEST__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_fpgaread_back_reg_request__descriptor) \
+ , 0, 0, 0, 0 }
+
+
+/* StubFPGAReadBackRegRequest methods */
+void stub_fpgaread_back_reg_request__init
+ (StubFPGAReadBackRegRequest *message);
+size_t stub_fpgaread_back_reg_request__get_packed_size
+ (const StubFPGAReadBackRegRequest *message);
+size_t stub_fpgaread_back_reg_request__pack
+ (const StubFPGAReadBackRegRequest *message,
+ uint8_t *out);
+size_t stub_fpgaread_back_reg_request__pack_to_buffer
+ (const StubFPGAReadBackRegRequest *message,
+ ProtobufCBuffer *buffer);
+StubFPGAReadBackRegRequest *
+ stub_fpgaread_back_reg_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_fpgaread_back_reg_request__free_unpacked
+ (StubFPGAReadBackRegRequest *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubFPGAReadBackRegRequest_Closure)
+ (const StubFPGAReadBackRegRequest *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_fpgaread_back_reg_request__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubFPGAReadBackRegRequest_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubFPGAReadBackRegResponse.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubFPGAReadBackRegResponse.pb-c.c
new file mode 100644
index 000000000..e222b3b24
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubFPGAReadBackRegResponse.pb-c.c
@@ -0,0 +1,132 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubFPGAReadBackRegResponse.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubFPGAReadBackRegResponse.pb-c.h"
+void stub_fpgaread_back_reg_response__init
+ (StubFPGAReadBackRegResponse *message)
+{
+ static const StubFPGAReadBackRegResponse init_value = STUB_FPGAREAD_BACK_REG_RESPONSE__INIT;
+ *message = init_value;
+}
+size_t stub_fpgaread_back_reg_response__get_packed_size
+ (const StubFPGAReadBackRegResponse *message)
+{
+ assert(message->base.descriptor == &stub_fpgaread_back_reg_response__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_fpgaread_back_reg_response__pack
+ (const StubFPGAReadBackRegResponse *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_fpgaread_back_reg_response__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_fpgaread_back_reg_response__pack_to_buffer
+ (const StubFPGAReadBackRegResponse *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_fpgaread_back_reg_response__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubFPGAReadBackRegResponse *
+ stub_fpgaread_back_reg_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubFPGAReadBackRegResponse *)
+ protobuf_c_message_unpack (&stub_fpgaread_back_reg_response__descriptor,
+ allocator, len, data);
+}
+void stub_fpgaread_back_reg_response__free_unpacked
+ (StubFPGAReadBackRegResponse *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_fpgaread_back_reg_response__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_fpgaread_back_reg_response__field_descriptors[4] =
+{
+ {
+ "FPGAId",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubFPGAReadBackRegResponse, has_fpgaid),
+ offsetof(StubFPGAReadBackRegResponse, fpgaid),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "ReadBackValue",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubFPGAReadBackRegResponse, has_readbackvalue),
+ offsetof(StubFPGAReadBackRegResponse, readbackvalue),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Status",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_STRING,
+ 0, /* quantifier_offset */
+ offsetof(StubFPGAReadBackRegResponse, status),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "StatusWord",
+ 5,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubFPGAReadBackRegResponse, has_statusword),
+ offsetof(StubFPGAReadBackRegResponse, statusword),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_fpgaread_back_reg_response__field_indices_by_name[] = {
+ 0, /* field[0] = FPGAId */
+ 1, /* field[1] = ReadBackValue */
+ 2, /* field[2] = Status */
+ 3, /* field[3] = StatusWord */
+};
+static const ProtobufCIntRange stub_fpgaread_back_reg_response__number_ranges[2 + 1] =
+{
+ { 1, 0 },
+ { 4, 2 },
+ { 0, 4 }
+};
+const ProtobufCMessageDescriptor stub_fpgaread_back_reg_response__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubFPGAReadBackRegResponse",
+ "StubFPGAReadBackRegResponse",
+ "StubFPGAReadBackRegResponse",
+ "",
+ sizeof(StubFPGAReadBackRegResponse),
+ 4,
+ stub_fpgaread_back_reg_response__field_descriptors,
+ stub_fpgaread_back_reg_response__field_indices_by_name,
+ 2, stub_fpgaread_back_reg_response__number_ranges,
+ (ProtobufCMessageInit) stub_fpgaread_back_reg_response__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubFPGAReadBackRegResponse.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubFPGAReadBackRegResponse.pb-c.h
new file mode 100644
index 000000000..234017433
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubFPGAReadBackRegResponse.pb-c.h
@@ -0,0 +1,89 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubFPGAReadBackRegResponse.proto */
+
+#ifndef PROTOBUF_C_StubFPGAReadBackRegResponse_2eproto__INCLUDED
+#define PROTOBUF_C_StubFPGAReadBackRegResponse_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubFPGAReadBackRegResponse StubFPGAReadBackRegResponse;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubFPGAReadBackRegResponse
+{
+ ProtobufCMessage base;
+ /*
+ * 0..2
+ */
+ protobuf_c_boolean has_fpgaid;
+ uint32_t fpgaid;
+ /*
+ * 16 bit
+ */
+ protobuf_c_boolean has_readbackvalue;
+ uint32_t readbackvalue;
+ /*
+ * Passed/Failed
+ */
+ char *status;
+ /*
+ * Error number/bit when the status is Failed
+ */
+ protobuf_c_boolean has_statusword;
+ uint32_t statusword;
+};
+#define STUB_FPGAREAD_BACK_REG_RESPONSE__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_fpgaread_back_reg_response__descriptor) \
+ , 0, 0, 0, 0, NULL, 0, 0 }
+
+
+/* StubFPGAReadBackRegResponse methods */
+void stub_fpgaread_back_reg_response__init
+ (StubFPGAReadBackRegResponse *message);
+size_t stub_fpgaread_back_reg_response__get_packed_size
+ (const StubFPGAReadBackRegResponse *message);
+size_t stub_fpgaread_back_reg_response__pack
+ (const StubFPGAReadBackRegResponse *message,
+ uint8_t *out);
+size_t stub_fpgaread_back_reg_response__pack_to_buffer
+ (const StubFPGAReadBackRegResponse *message,
+ ProtobufCBuffer *buffer);
+StubFPGAReadBackRegResponse *
+ stub_fpgaread_back_reg_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_fpgaread_back_reg_response__free_unpacked
+ (StubFPGAReadBackRegResponse *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubFPGAReadBackRegResponse_Closure)
+ (const StubFPGAReadBackRegResponse *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_fpgaread_back_reg_response__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubFPGAReadBackRegResponse_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubFPGAReadVersionRequest.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubFPGAReadVersionRequest.pb-c.c
new file mode 100644
index 000000000..5381c462a
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubFPGAReadVersionRequest.pb-c.c
@@ -0,0 +1,92 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubFPGAReadVersionRequest.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubFPGAReadVersionRequest.pb-c.h"
+void stub_fpgaread_version_request__init
+ (StubFPGAReadVersionRequest *message)
+{
+ static const StubFPGAReadVersionRequest init_value = STUB_FPGAREAD_VERSION_REQUEST__INIT;
+ *message = init_value;
+}
+size_t stub_fpgaread_version_request__get_packed_size
+ (const StubFPGAReadVersionRequest *message)
+{
+ assert(message->base.descriptor == &stub_fpgaread_version_request__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_fpgaread_version_request__pack
+ (const StubFPGAReadVersionRequest *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_fpgaread_version_request__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_fpgaread_version_request__pack_to_buffer
+ (const StubFPGAReadVersionRequest *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_fpgaread_version_request__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubFPGAReadVersionRequest *
+ stub_fpgaread_version_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubFPGAReadVersionRequest *)
+ protobuf_c_message_unpack (&stub_fpgaread_version_request__descriptor,
+ allocator, len, data);
+}
+void stub_fpgaread_version_request__free_unpacked
+ (StubFPGAReadVersionRequest *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_fpgaread_version_request__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_fpgaread_version_request__field_descriptors[1] =
+{
+ {
+ "FPGAId",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubFPGAReadVersionRequest, has_fpgaid),
+ offsetof(StubFPGAReadVersionRequest, fpgaid),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_fpgaread_version_request__field_indices_by_name[] = {
+ 0, /* field[0] = FPGAId */
+};
+static const ProtobufCIntRange stub_fpgaread_version_request__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 1 }
+};
+const ProtobufCMessageDescriptor stub_fpgaread_version_request__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubFPGAReadVersionRequest",
+ "StubFPGAReadVersionRequest",
+ "StubFPGAReadVersionRequest",
+ "",
+ sizeof(StubFPGAReadVersionRequest),
+ 1,
+ stub_fpgaread_version_request__field_descriptors,
+ stub_fpgaread_version_request__field_indices_by_name,
+ 1, stub_fpgaread_version_request__number_ranges,
+ (ProtobufCMessageInit) stub_fpgaread_version_request__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubFPGAReadVersionRequest.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubFPGAReadVersionRequest.pb-c.h
new file mode 100644
index 000000000..54db77bad
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubFPGAReadVersionRequest.pb-c.h
@@ -0,0 +1,75 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubFPGAReadVersionRequest.proto */
+
+#ifndef PROTOBUF_C_StubFPGAReadVersionRequest_2eproto__INCLUDED
+#define PROTOBUF_C_StubFPGAReadVersionRequest_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubFPGAReadVersionRequest StubFPGAReadVersionRequest;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubFPGAReadVersionRequest
+{
+ ProtobufCMessage base;
+ /*
+ * 0..2
+ */
+ protobuf_c_boolean has_fpgaid;
+ uint32_t fpgaid;
+};
+#define STUB_FPGAREAD_VERSION_REQUEST__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_fpgaread_version_request__descriptor) \
+ , 0, 0 }
+
+
+/* StubFPGAReadVersionRequest methods */
+void stub_fpgaread_version_request__init
+ (StubFPGAReadVersionRequest *message);
+size_t stub_fpgaread_version_request__get_packed_size
+ (const StubFPGAReadVersionRequest *message);
+size_t stub_fpgaread_version_request__pack
+ (const StubFPGAReadVersionRequest *message,
+ uint8_t *out);
+size_t stub_fpgaread_version_request__pack_to_buffer
+ (const StubFPGAReadVersionRequest *message,
+ ProtobufCBuffer *buffer);
+StubFPGAReadVersionRequest *
+ stub_fpgaread_version_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_fpgaread_version_request__free_unpacked
+ (StubFPGAReadVersionRequest *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubFPGAReadVersionRequest_Closure)
+ (const StubFPGAReadVersionRequest *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_fpgaread_version_request__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubFPGAReadVersionRequest_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubFPGAReadVersionResponse.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubFPGAReadVersionResponse.pb-c.c
new file mode 100644
index 000000000..79c25d9a5
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubFPGAReadVersionResponse.pb-c.c
@@ -0,0 +1,170 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubFPGAReadVersionResponse.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubFPGAReadVersionResponse.pb-c.h"
+void stub_fpgaread_version_response__init
+ (StubFPGAReadVersionResponse *message)
+{
+ static const StubFPGAReadVersionResponse init_value = STUB_FPGAREAD_VERSION_RESPONSE__INIT;
+ *message = init_value;
+}
+size_t stub_fpgaread_version_response__get_packed_size
+ (const StubFPGAReadVersionResponse *message)
+{
+ assert(message->base.descriptor == &stub_fpgaread_version_response__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_fpgaread_version_response__pack
+ (const StubFPGAReadVersionResponse *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_fpgaread_version_response__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_fpgaread_version_response__pack_to_buffer
+ (const StubFPGAReadVersionResponse *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_fpgaread_version_response__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubFPGAReadVersionResponse *
+ stub_fpgaread_version_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubFPGAReadVersionResponse *)
+ protobuf_c_message_unpack (&stub_fpgaread_version_response__descriptor,
+ allocator, len, data);
+}
+void stub_fpgaread_version_response__free_unpacked
+ (StubFPGAReadVersionResponse *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_fpgaread_version_response__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_fpgaread_version_response__field_descriptors[7] =
+{
+ {
+ "FPGAId",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubFPGAReadVersionResponse, has_fpgaid),
+ offsetof(StubFPGAReadVersionResponse, fpgaid),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Day",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubFPGAReadVersionResponse, has_day),
+ offsetof(StubFPGAReadVersionResponse, day),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Month",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubFPGAReadVersionResponse, has_month),
+ offsetof(StubFPGAReadVersionResponse, month),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Year",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubFPGAReadVersionResponse, has_year),
+ offsetof(StubFPGAReadVersionResponse, year),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Ver_num",
+ 5,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubFPGAReadVersionResponse, has_ver_num),
+ offsetof(StubFPGAReadVersionResponse, ver_num),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Status",
+ 6,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_STRING,
+ 0, /* quantifier_offset */
+ offsetof(StubFPGAReadVersionResponse, status),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "StatusWord",
+ 7,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubFPGAReadVersionResponse, has_statusword),
+ offsetof(StubFPGAReadVersionResponse, statusword),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_fpgaread_version_response__field_indices_by_name[] = {
+ 1, /* field[1] = Day */
+ 0, /* field[0] = FPGAId */
+ 2, /* field[2] = Month */
+ 5, /* field[5] = Status */
+ 6, /* field[6] = StatusWord */
+ 4, /* field[4] = Ver_num */
+ 3, /* field[3] = Year */
+};
+static const ProtobufCIntRange stub_fpgaread_version_response__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 7 }
+};
+const ProtobufCMessageDescriptor stub_fpgaread_version_response__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubFPGAReadVersionResponse",
+ "StubFPGAReadVersionResponse",
+ "StubFPGAReadVersionResponse",
+ "",
+ sizeof(StubFPGAReadVersionResponse),
+ 7,
+ stub_fpgaread_version_response__field_descriptors,
+ stub_fpgaread_version_response__field_indices_by_name,
+ 1, stub_fpgaread_version_response__number_ranges,
+ (ProtobufCMessageInit) stub_fpgaread_version_response__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubFPGAReadVersionResponse.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubFPGAReadVersionResponse.pb-c.h
new file mode 100644
index 000000000..360f7faac
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubFPGAReadVersionResponse.pb-c.h
@@ -0,0 +1,92 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubFPGAReadVersionResponse.proto */
+
+#ifndef PROTOBUF_C_StubFPGAReadVersionResponse_2eproto__INCLUDED
+#define PROTOBUF_C_StubFPGAReadVersionResponse_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubFPGAReadVersionResponse StubFPGAReadVersionResponse;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubFPGAReadVersionResponse
+{
+ ProtobufCMessage base;
+ /*
+ * 0..2
+ */
+ protobuf_c_boolean has_fpgaid;
+ uint32_t fpgaid;
+ protobuf_c_boolean has_day;
+ uint32_t day;
+ protobuf_c_boolean has_month;
+ uint32_t month;
+ protobuf_c_boolean has_year;
+ uint32_t year;
+ protobuf_c_boolean has_ver_num;
+ uint32_t ver_num;
+ /*
+ * Passed/Failed
+ */
+ char *status;
+ /*
+ * Error number/bit when the status is Failed
+ */
+ protobuf_c_boolean has_statusword;
+ uint32_t statusword;
+};
+#define STUB_FPGAREAD_VERSION_RESPONSE__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_fpgaread_version_response__descriptor) \
+ , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, 0, 0 }
+
+
+/* StubFPGAReadVersionResponse methods */
+void stub_fpgaread_version_response__init
+ (StubFPGAReadVersionResponse *message);
+size_t stub_fpgaread_version_response__get_packed_size
+ (const StubFPGAReadVersionResponse *message);
+size_t stub_fpgaread_version_response__pack
+ (const StubFPGAReadVersionResponse *message,
+ uint8_t *out);
+size_t stub_fpgaread_version_response__pack_to_buffer
+ (const StubFPGAReadVersionResponse *message,
+ ProtobufCBuffer *buffer);
+StubFPGAReadVersionResponse *
+ stub_fpgaread_version_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_fpgaread_version_response__free_unpacked
+ (StubFPGAReadVersionResponse *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubFPGAReadVersionResponse_Closure)
+ (const StubFPGAReadVersionResponse *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_fpgaread_version_response__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubFPGAReadVersionResponse_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOInputSetupRequest.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOInputSetupRequest.pb-c.c
new file mode 100644
index 000000000..9ea597eeb
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOInputSetupRequest.pb-c.c
@@ -0,0 +1,131 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubGPIOInputSetupRequest.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubGPIOInputSetupRequest.pb-c.h"
+void stub_gpioinput_setup_request__init
+ (StubGPIOInputSetupRequest *message)
+{
+ static const StubGPIOInputSetupRequest init_value = STUB_GPIOINPUT_SETUP_REQUEST__INIT;
+ *message = init_value;
+}
+size_t stub_gpioinput_setup_request__get_packed_size
+ (const StubGPIOInputSetupRequest *message)
+{
+ assert(message->base.descriptor == &stub_gpioinput_setup_request__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_gpioinput_setup_request__pack
+ (const StubGPIOInputSetupRequest *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_gpioinput_setup_request__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_gpioinput_setup_request__pack_to_buffer
+ (const StubGPIOInputSetupRequest *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_gpioinput_setup_request__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubGPIOInputSetupRequest *
+ stub_gpioinput_setup_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubGPIOInputSetupRequest *)
+ protobuf_c_message_unpack (&stub_gpioinput_setup_request__descriptor,
+ allocator, len, data);
+}
+void stub_gpioinput_setup_request__free_unpacked
+ (StubGPIOInputSetupRequest *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_gpioinput_setup_request__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_gpioinput_setup_request__field_descriptors[4] =
+{
+ {
+ "PortId",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_STRING,
+ 0, /* quantifier_offset */
+ offsetof(StubGPIOInputSetupRequest, portid),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "PinId",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubGPIOInputSetupRequest, has_pinid),
+ offsetof(StubGPIOInputSetupRequest, pinid),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "SetInput",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubGPIOInputSetupRequest, has_setinput),
+ offsetof(StubGPIOInputSetupRequest, setinput),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "SetPullUP",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubGPIOInputSetupRequest, has_setpullup),
+ offsetof(StubGPIOInputSetupRequest, setpullup),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_gpioinput_setup_request__field_indices_by_name[] = {
+ 1, /* field[1] = PinId */
+ 0, /* field[0] = PortId */
+ 2, /* field[2] = SetInput */
+ 3, /* field[3] = SetPullUP */
+};
+static const ProtobufCIntRange stub_gpioinput_setup_request__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 4 }
+};
+const ProtobufCMessageDescriptor stub_gpioinput_setup_request__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubGPIOInputSetupRequest",
+ "StubGPIOInputSetupRequest",
+ "StubGPIOInputSetupRequest",
+ "",
+ sizeof(StubGPIOInputSetupRequest),
+ 4,
+ stub_gpioinput_setup_request__field_descriptors,
+ stub_gpioinput_setup_request__field_indices_by_name,
+ 1, stub_gpioinput_setup_request__number_ranges,
+ (ProtobufCMessageInit) stub_gpioinput_setup_request__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOInputSetupRequest.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOInputSetupRequest.pb-c.h
new file mode 100644
index 000000000..3e515a650
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOInputSetupRequest.pb-c.h
@@ -0,0 +1,89 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubGPIOInputSetupRequest.proto */
+
+#ifndef PROTOBUF_C_StubGPIOInputSetupRequest_2eproto__INCLUDED
+#define PROTOBUF_C_StubGPIOInputSetupRequest_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubGPIOInputSetupRequest StubGPIOInputSetupRequest;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubGPIOInputSetupRequest
+{
+ ProtobufCMessage base;
+ /*
+ * A..
+ */
+ char *portid;
+ /*
+ * 0..7
+ */
+ protobuf_c_boolean has_pinid;
+ uint32_t pinid;
+ /*
+ * 0 - Set OUTPUT, 1 - Set INPUT,
+ */
+ protobuf_c_boolean has_setinput;
+ uint32_t setinput;
+ /*
+ *0 - Down, 1 - Up
+ */
+ protobuf_c_boolean has_setpullup;
+ uint32_t setpullup;
+};
+#define STUB_GPIOINPUT_SETUP_REQUEST__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_gpioinput_setup_request__descriptor) \
+ , NULL, 0, 0, 0, 0, 0, 0 }
+
+
+/* StubGPIOInputSetupRequest methods */
+void stub_gpioinput_setup_request__init
+ (StubGPIOInputSetupRequest *message);
+size_t stub_gpioinput_setup_request__get_packed_size
+ (const StubGPIOInputSetupRequest *message);
+size_t stub_gpioinput_setup_request__pack
+ (const StubGPIOInputSetupRequest *message,
+ uint8_t *out);
+size_t stub_gpioinput_setup_request__pack_to_buffer
+ (const StubGPIOInputSetupRequest *message,
+ ProtobufCBuffer *buffer);
+StubGPIOInputSetupRequest *
+ stub_gpioinput_setup_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_gpioinput_setup_request__free_unpacked
+ (StubGPIOInputSetupRequest *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubGPIOInputSetupRequest_Closure)
+ (const StubGPIOInputSetupRequest *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_gpioinput_setup_request__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubGPIOInputSetupRequest_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOInputSetupResponse.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOInputSetupResponse.pb-c.c
new file mode 100644
index 000000000..a7ad8a8e5
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOInputSetupResponse.pb-c.c
@@ -0,0 +1,131 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubGPIOInputSetupResponse.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubGPIOInputSetupResponse.pb-c.h"
+void stub_gpioinput_setup_response__init
+ (StubGPIOInputSetupResponse *message)
+{
+ static const StubGPIOInputSetupResponse init_value = STUB_GPIOINPUT_SETUP_RESPONSE__INIT;
+ *message = init_value;
+}
+size_t stub_gpioinput_setup_response__get_packed_size
+ (const StubGPIOInputSetupResponse *message)
+{
+ assert(message->base.descriptor == &stub_gpioinput_setup_response__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_gpioinput_setup_response__pack
+ (const StubGPIOInputSetupResponse *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_gpioinput_setup_response__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_gpioinput_setup_response__pack_to_buffer
+ (const StubGPIOInputSetupResponse *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_gpioinput_setup_response__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubGPIOInputSetupResponse *
+ stub_gpioinput_setup_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubGPIOInputSetupResponse *)
+ protobuf_c_message_unpack (&stub_gpioinput_setup_response__descriptor,
+ allocator, len, data);
+}
+void stub_gpioinput_setup_response__free_unpacked
+ (StubGPIOInputSetupResponse *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_gpioinput_setup_response__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_gpioinput_setup_response__field_descriptors[4] =
+{
+ {
+ "PortId",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_STRING,
+ 0, /* quantifier_offset */
+ offsetof(StubGPIOInputSetupResponse, portid),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "PinId",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubGPIOInputSetupResponse, has_pinid),
+ offsetof(StubGPIOInputSetupResponse, pinid),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Status",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_STRING,
+ 0, /* quantifier_offset */
+ offsetof(StubGPIOInputSetupResponse, status),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "StatusWord",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubGPIOInputSetupResponse, has_statusword),
+ offsetof(StubGPIOInputSetupResponse, statusword),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_gpioinput_setup_response__field_indices_by_name[] = {
+ 1, /* field[1] = PinId */
+ 0, /* field[0] = PortId */
+ 2, /* field[2] = Status */
+ 3, /* field[3] = StatusWord */
+};
+static const ProtobufCIntRange stub_gpioinput_setup_response__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 4 }
+};
+const ProtobufCMessageDescriptor stub_gpioinput_setup_response__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubGPIOInputSetupResponse",
+ "StubGPIOInputSetupResponse",
+ "StubGPIOInputSetupResponse",
+ "",
+ sizeof(StubGPIOInputSetupResponse),
+ 4,
+ stub_gpioinput_setup_response__field_descriptors,
+ stub_gpioinput_setup_response__field_indices_by_name,
+ 1, stub_gpioinput_setup_response__number_ranges,
+ (ProtobufCMessageInit) stub_gpioinput_setup_response__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOInputSetupResponse.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOInputSetupResponse.pb-c.h
new file mode 100644
index 000000000..7a93c3048
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOInputSetupResponse.pb-c.h
@@ -0,0 +1,88 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubGPIOInputSetupResponse.proto */
+
+#ifndef PROTOBUF_C_StubGPIOInputSetupResponse_2eproto__INCLUDED
+#define PROTOBUF_C_StubGPIOInputSetupResponse_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubGPIOInputSetupResponse StubGPIOInputSetupResponse;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubGPIOInputSetupResponse
+{
+ ProtobufCMessage base;
+ /*
+ * A..
+ */
+ char *portid;
+ /*
+ * 0..7
+ */
+ protobuf_c_boolean has_pinid;
+ uint32_t pinid;
+ /*
+ * Passed/Failed
+ */
+ char *status;
+ /*
+ * Error number/bit when the status is Failed
+ */
+ protobuf_c_boolean has_statusword;
+ uint32_t statusword;
+};
+#define STUB_GPIOINPUT_SETUP_RESPONSE__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_gpioinput_setup_response__descriptor) \
+ , NULL, 0, 0, NULL, 0, 0 }
+
+
+/* StubGPIOInputSetupResponse methods */
+void stub_gpioinput_setup_response__init
+ (StubGPIOInputSetupResponse *message);
+size_t stub_gpioinput_setup_response__get_packed_size
+ (const StubGPIOInputSetupResponse *message);
+size_t stub_gpioinput_setup_response__pack
+ (const StubGPIOInputSetupResponse *message,
+ uint8_t *out);
+size_t stub_gpioinput_setup_response__pack_to_buffer
+ (const StubGPIOInputSetupResponse *message,
+ ProtobufCBuffer *buffer);
+StubGPIOInputSetupResponse *
+ stub_gpioinput_setup_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_gpioinput_setup_response__free_unpacked
+ (StubGPIOInputSetupResponse *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubGPIOInputSetupResponse_Closure)
+ (const StubGPIOInputSetupResponse *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_gpioinput_setup_response__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubGPIOInputSetupResponse_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOReadBitRequest.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOReadBitRequest.pb-c.c
new file mode 100644
index 000000000..68826631e
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOReadBitRequest.pb-c.c
@@ -0,0 +1,131 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubGPIOReadBitRequest.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubGPIOReadBitRequest.pb-c.h"
+void stub_gpioread_bit_request__init
+ (StubGPIOReadBitRequest *message)
+{
+ static const StubGPIOReadBitRequest init_value = STUB_GPIOREAD_BIT_REQUEST__INIT;
+ *message = init_value;
+}
+size_t stub_gpioread_bit_request__get_packed_size
+ (const StubGPIOReadBitRequest *message)
+{
+ assert(message->base.descriptor == &stub_gpioread_bit_request__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_gpioread_bit_request__pack
+ (const StubGPIOReadBitRequest *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_gpioread_bit_request__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_gpioread_bit_request__pack_to_buffer
+ (const StubGPIOReadBitRequest *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_gpioread_bit_request__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubGPIOReadBitRequest *
+ stub_gpioread_bit_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubGPIOReadBitRequest *)
+ protobuf_c_message_unpack (&stub_gpioread_bit_request__descriptor,
+ allocator, len, data);
+}
+void stub_gpioread_bit_request__free_unpacked
+ (StubGPIOReadBitRequest *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_gpioread_bit_request__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_gpioread_bit_request__field_descriptors[4] =
+{
+ {
+ "PortId",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_STRING,
+ 0, /* quantifier_offset */
+ offsetof(StubGPIOReadBitRequest, portid),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "PinId",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubGPIOReadBitRequest, has_pinid),
+ offsetof(StubGPIOReadBitRequest, pinid),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Polling",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubGPIOReadBitRequest, has_polling),
+ offsetof(StubGPIOReadBitRequest, polling),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "PollExpValue",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubGPIOReadBitRequest, has_pollexpvalue),
+ offsetof(StubGPIOReadBitRequest, pollexpvalue),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_gpioread_bit_request__field_indices_by_name[] = {
+ 1, /* field[1] = PinId */
+ 3, /* field[3] = PollExpValue */
+ 2, /* field[2] = Polling */
+ 0, /* field[0] = PortId */
+};
+static const ProtobufCIntRange stub_gpioread_bit_request__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 4 }
+};
+const ProtobufCMessageDescriptor stub_gpioread_bit_request__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubGPIOReadBitRequest",
+ "StubGPIOReadBitRequest",
+ "StubGPIOReadBitRequest",
+ "",
+ sizeof(StubGPIOReadBitRequest),
+ 4,
+ stub_gpioread_bit_request__field_descriptors,
+ stub_gpioread_bit_request__field_indices_by_name,
+ 1, stub_gpioread_bit_request__number_ranges,
+ (ProtobufCMessageInit) stub_gpioread_bit_request__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOReadBitRequest.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOReadBitRequest.pb-c.h
new file mode 100644
index 000000000..263fb539e
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOReadBitRequest.pb-c.h
@@ -0,0 +1,89 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubGPIOReadBitRequest.proto */
+
+#ifndef PROTOBUF_C_StubGPIOReadBitRequest_2eproto__INCLUDED
+#define PROTOBUF_C_StubGPIOReadBitRequest_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubGPIOReadBitRequest StubGPIOReadBitRequest;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubGPIOReadBitRequest
+{
+ ProtobufCMessage base;
+ /*
+ * A..
+ */
+ char *portid;
+ /*
+ * 0..7
+ */
+ protobuf_c_boolean has_pinid;
+ uint32_t pinid;
+ /*
+ * 1 - Polling
+ */
+ protobuf_c_boolean has_polling;
+ protobuf_c_boolean polling;
+ /*
+ * 0/1
+ */
+ protobuf_c_boolean has_pollexpvalue;
+ protobuf_c_boolean pollexpvalue;
+};
+#define STUB_GPIOREAD_BIT_REQUEST__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_gpioread_bit_request__descriptor) \
+ , NULL, 0, 0, 0, 0, 0, 0 }
+
+
+/* StubGPIOReadBitRequest methods */
+void stub_gpioread_bit_request__init
+ (StubGPIOReadBitRequest *message);
+size_t stub_gpioread_bit_request__get_packed_size
+ (const StubGPIOReadBitRequest *message);
+size_t stub_gpioread_bit_request__pack
+ (const StubGPIOReadBitRequest *message,
+ uint8_t *out);
+size_t stub_gpioread_bit_request__pack_to_buffer
+ (const StubGPIOReadBitRequest *message,
+ ProtobufCBuffer *buffer);
+StubGPIOReadBitRequest *
+ stub_gpioread_bit_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_gpioread_bit_request__free_unpacked
+ (StubGPIOReadBitRequest *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubGPIOReadBitRequest_Closure)
+ (const StubGPIOReadBitRequest *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_gpioread_bit_request__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubGPIOReadBitRequest_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOReadBitResponse.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOReadBitResponse.pb-c.c
new file mode 100644
index 000000000..bc5bc2e84
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOReadBitResponse.pb-c.c
@@ -0,0 +1,144 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubGPIOReadBitResponse.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubGPIOReadBitResponse.pb-c.h"
+void stub_gpioread_bit_response__init
+ (StubGPIOReadBitResponse *message)
+{
+ static const StubGPIOReadBitResponse init_value = STUB_GPIOREAD_BIT_RESPONSE__INIT;
+ *message = init_value;
+}
+size_t stub_gpioread_bit_response__get_packed_size
+ (const StubGPIOReadBitResponse *message)
+{
+ assert(message->base.descriptor == &stub_gpioread_bit_response__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_gpioread_bit_response__pack
+ (const StubGPIOReadBitResponse *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_gpioread_bit_response__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_gpioread_bit_response__pack_to_buffer
+ (const StubGPIOReadBitResponse *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_gpioread_bit_response__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubGPIOReadBitResponse *
+ stub_gpioread_bit_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubGPIOReadBitResponse *)
+ protobuf_c_message_unpack (&stub_gpioread_bit_response__descriptor,
+ allocator, len, data);
+}
+void stub_gpioread_bit_response__free_unpacked
+ (StubGPIOReadBitResponse *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_gpioread_bit_response__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_gpioread_bit_response__field_descriptors[5] =
+{
+ {
+ "PortId",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_STRING,
+ 0, /* quantifier_offset */
+ offsetof(StubGPIOReadBitResponse, portid),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "PinId",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubGPIOReadBitResponse, has_pinid),
+ offsetof(StubGPIOReadBitResponse, pinid),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "BitValue",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubGPIOReadBitResponse, has_bitvalue),
+ offsetof(StubGPIOReadBitResponse, bitvalue),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Status",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_STRING,
+ 0, /* quantifier_offset */
+ offsetof(StubGPIOReadBitResponse, status),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "StatusWord",
+ 5,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubGPIOReadBitResponse, has_statusword),
+ offsetof(StubGPIOReadBitResponse, statusword),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_gpioread_bit_response__field_indices_by_name[] = {
+ 2, /* field[2] = BitValue */
+ 1, /* field[1] = PinId */
+ 0, /* field[0] = PortId */
+ 3, /* field[3] = Status */
+ 4, /* field[4] = StatusWord */
+};
+static const ProtobufCIntRange stub_gpioread_bit_response__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 5 }
+};
+const ProtobufCMessageDescriptor stub_gpioread_bit_response__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubGPIOReadBitResponse",
+ "StubGPIOReadBitResponse",
+ "StubGPIOReadBitResponse",
+ "",
+ sizeof(StubGPIOReadBitResponse),
+ 5,
+ stub_gpioread_bit_response__field_descriptors,
+ stub_gpioread_bit_response__field_indices_by_name,
+ 1, stub_gpioread_bit_response__number_ranges,
+ (ProtobufCMessageInit) stub_gpioread_bit_response__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOReadBitResponse.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOReadBitResponse.pb-c.h
new file mode 100644
index 000000000..ebbdc199d
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOReadBitResponse.pb-c.h
@@ -0,0 +1,90 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubGPIOReadBitResponse.proto */
+
+#ifndef PROTOBUF_C_StubGPIOReadBitResponse_2eproto__INCLUDED
+#define PROTOBUF_C_StubGPIOReadBitResponse_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubGPIOReadBitResponse StubGPIOReadBitResponse;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubGPIOReadBitResponse
+{
+ ProtobufCMessage base;
+ /*
+ * A..
+ */
+ char *portid;
+ /*
+ * 0..7
+ */
+ protobuf_c_boolean has_pinid;
+ uint32_t pinid;
+ protobuf_c_boolean has_bitvalue;
+ protobuf_c_boolean bitvalue;
+ /*
+ * Passed/Failed
+ */
+ char *status;
+ /*
+ * Error number/bit when the status is Failed
+ */
+ protobuf_c_boolean has_statusword;
+ uint32_t statusword;
+};
+#define STUB_GPIOREAD_BIT_RESPONSE__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_gpioread_bit_response__descriptor) \
+ , NULL, 0, 0, 0, 0, NULL, 0, 0 }
+
+
+/* StubGPIOReadBitResponse methods */
+void stub_gpioread_bit_response__init
+ (StubGPIOReadBitResponse *message);
+size_t stub_gpioread_bit_response__get_packed_size
+ (const StubGPIOReadBitResponse *message);
+size_t stub_gpioread_bit_response__pack
+ (const StubGPIOReadBitResponse *message,
+ uint8_t *out);
+size_t stub_gpioread_bit_response__pack_to_buffer
+ (const StubGPIOReadBitResponse *message,
+ ProtobufCBuffer *buffer);
+StubGPIOReadBitResponse *
+ stub_gpioread_bit_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_gpioread_bit_response__free_unpacked
+ (StubGPIOReadBitResponse *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubGPIOReadBitResponse_Closure)
+ (const StubGPIOReadBitResponse *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_gpioread_bit_response__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubGPIOReadBitResponse_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOReadByteRequest.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOReadByteRequest.pb-c.c
new file mode 100644
index 000000000..6707d7a6f
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOReadByteRequest.pb-c.c
@@ -0,0 +1,92 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubGPIOReadByteRequest.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubGPIOReadByteRequest.pb-c.h"
+void stub_gpioread_byte_request__init
+ (StubGPIOReadByteRequest *message)
+{
+ static const StubGPIOReadByteRequest init_value = STUB_GPIOREAD_BYTE_REQUEST__INIT;
+ *message = init_value;
+}
+size_t stub_gpioread_byte_request__get_packed_size
+ (const StubGPIOReadByteRequest *message)
+{
+ assert(message->base.descriptor == &stub_gpioread_byte_request__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_gpioread_byte_request__pack
+ (const StubGPIOReadByteRequest *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_gpioread_byte_request__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_gpioread_byte_request__pack_to_buffer
+ (const StubGPIOReadByteRequest *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_gpioread_byte_request__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubGPIOReadByteRequest *
+ stub_gpioread_byte_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubGPIOReadByteRequest *)
+ protobuf_c_message_unpack (&stub_gpioread_byte_request__descriptor,
+ allocator, len, data);
+}
+void stub_gpioread_byte_request__free_unpacked
+ (StubGPIOReadByteRequest *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_gpioread_byte_request__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_gpioread_byte_request__field_descriptors[1] =
+{
+ {
+ "PortId",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_STRING,
+ 0, /* quantifier_offset */
+ offsetof(StubGPIOReadByteRequest, portid),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_gpioread_byte_request__field_indices_by_name[] = {
+ 0, /* field[0] = PortId */
+};
+static const ProtobufCIntRange stub_gpioread_byte_request__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 1 }
+};
+const ProtobufCMessageDescriptor stub_gpioread_byte_request__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubGPIOReadByteRequest",
+ "StubGPIOReadByteRequest",
+ "StubGPIOReadByteRequest",
+ "",
+ sizeof(StubGPIOReadByteRequest),
+ 1,
+ stub_gpioread_byte_request__field_descriptors,
+ stub_gpioread_byte_request__field_indices_by_name,
+ 1, stub_gpioread_byte_request__number_ranges,
+ (ProtobufCMessageInit) stub_gpioread_byte_request__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOReadByteRequest.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOReadByteRequest.pb-c.h
new file mode 100644
index 000000000..53e49de7f
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOReadByteRequest.pb-c.h
@@ -0,0 +1,74 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubGPIOReadByteRequest.proto */
+
+#ifndef PROTOBUF_C_StubGPIOReadByteRequest_2eproto__INCLUDED
+#define PROTOBUF_C_StubGPIOReadByteRequest_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubGPIOReadByteRequest StubGPIOReadByteRequest;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubGPIOReadByteRequest
+{
+ ProtobufCMessage base;
+ /*
+ * A..
+ */
+ char *portid;
+};
+#define STUB_GPIOREAD_BYTE_REQUEST__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_gpioread_byte_request__descriptor) \
+ , NULL }
+
+
+/* StubGPIOReadByteRequest methods */
+void stub_gpioread_byte_request__init
+ (StubGPIOReadByteRequest *message);
+size_t stub_gpioread_byte_request__get_packed_size
+ (const StubGPIOReadByteRequest *message);
+size_t stub_gpioread_byte_request__pack
+ (const StubGPIOReadByteRequest *message,
+ uint8_t *out);
+size_t stub_gpioread_byte_request__pack_to_buffer
+ (const StubGPIOReadByteRequest *message,
+ ProtobufCBuffer *buffer);
+StubGPIOReadByteRequest *
+ stub_gpioread_byte_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_gpioread_byte_request__free_unpacked
+ (StubGPIOReadByteRequest *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubGPIOReadByteRequest_Closure)
+ (const StubGPIOReadByteRequest *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_gpioread_byte_request__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubGPIOReadByteRequest_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOReadByteResponse.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOReadByteResponse.pb-c.c
new file mode 100644
index 000000000..b43726c3e
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOReadByteResponse.pb-c.c
@@ -0,0 +1,131 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubGPIOReadByteResponse.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubGPIOReadByteResponse.pb-c.h"
+void stub_gpioread_byte_response__init
+ (StubGPIOReadByteResponse *message)
+{
+ static const StubGPIOReadByteResponse init_value = STUB_GPIOREAD_BYTE_RESPONSE__INIT;
+ *message = init_value;
+}
+size_t stub_gpioread_byte_response__get_packed_size
+ (const StubGPIOReadByteResponse *message)
+{
+ assert(message->base.descriptor == &stub_gpioread_byte_response__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_gpioread_byte_response__pack
+ (const StubGPIOReadByteResponse *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_gpioread_byte_response__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_gpioread_byte_response__pack_to_buffer
+ (const StubGPIOReadByteResponse *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_gpioread_byte_response__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubGPIOReadByteResponse *
+ stub_gpioread_byte_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubGPIOReadByteResponse *)
+ protobuf_c_message_unpack (&stub_gpioread_byte_response__descriptor,
+ allocator, len, data);
+}
+void stub_gpioread_byte_response__free_unpacked
+ (StubGPIOReadByteResponse *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_gpioread_byte_response__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_gpioread_byte_response__field_descriptors[4] =
+{
+ {
+ "PortId",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_STRING,
+ 0, /* quantifier_offset */
+ offsetof(StubGPIOReadByteResponse, portid),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "ByteValue",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubGPIOReadByteResponse, has_bytevalue),
+ offsetof(StubGPIOReadByteResponse, bytevalue),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Status",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_STRING,
+ 0, /* quantifier_offset */
+ offsetof(StubGPIOReadByteResponse, status),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "StatusWord",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubGPIOReadByteResponse, has_statusword),
+ offsetof(StubGPIOReadByteResponse, statusword),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_gpioread_byte_response__field_indices_by_name[] = {
+ 1, /* field[1] = ByteValue */
+ 0, /* field[0] = PortId */
+ 2, /* field[2] = Status */
+ 3, /* field[3] = StatusWord */
+};
+static const ProtobufCIntRange stub_gpioread_byte_response__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 4 }
+};
+const ProtobufCMessageDescriptor stub_gpioread_byte_response__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubGPIOReadByteResponse",
+ "StubGPIOReadByteResponse",
+ "StubGPIOReadByteResponse",
+ "",
+ sizeof(StubGPIOReadByteResponse),
+ 4,
+ stub_gpioread_byte_response__field_descriptors,
+ stub_gpioread_byte_response__field_indices_by_name,
+ 1, stub_gpioread_byte_response__number_ranges,
+ (ProtobufCMessageInit) stub_gpioread_byte_response__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOReadByteResponse.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOReadByteResponse.pb-c.h
new file mode 100644
index 000000000..dad405984
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOReadByteResponse.pb-c.h
@@ -0,0 +1,85 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubGPIOReadByteResponse.proto */
+
+#ifndef PROTOBUF_C_StubGPIOReadByteResponse_2eproto__INCLUDED
+#define PROTOBUF_C_StubGPIOReadByteResponse_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubGPIOReadByteResponse StubGPIOReadByteResponse;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubGPIOReadByteResponse
+{
+ ProtobufCMessage base;
+ /*
+ * A..
+ */
+ char *portid;
+ protobuf_c_boolean has_bytevalue;
+ uint32_t bytevalue;
+ /*
+ * Passed/Failed
+ */
+ char *status;
+ /*
+ * Error number/bit when the status is Failed
+ */
+ protobuf_c_boolean has_statusword;
+ uint32_t statusword;
+};
+#define STUB_GPIOREAD_BYTE_RESPONSE__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_gpioread_byte_response__descriptor) \
+ , NULL, 0, 0, NULL, 0, 0 }
+
+
+/* StubGPIOReadByteResponse methods */
+void stub_gpioread_byte_response__init
+ (StubGPIOReadByteResponse *message);
+size_t stub_gpioread_byte_response__get_packed_size
+ (const StubGPIOReadByteResponse *message);
+size_t stub_gpioread_byte_response__pack
+ (const StubGPIOReadByteResponse *message,
+ uint8_t *out);
+size_t stub_gpioread_byte_response__pack_to_buffer
+ (const StubGPIOReadByteResponse *message,
+ ProtobufCBuffer *buffer);
+StubGPIOReadByteResponse *
+ stub_gpioread_byte_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_gpioread_byte_response__free_unpacked
+ (StubGPIOReadByteResponse *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubGPIOReadByteResponse_Closure)
+ (const StubGPIOReadByteResponse *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_gpioread_byte_response__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubGPIOReadByteResponse_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOWriteBitRequest.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOWriteBitRequest.pb-c.c
new file mode 100644
index 000000000..0e8670609
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOWriteBitRequest.pb-c.c
@@ -0,0 +1,118 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubGPIOWriteBitRequest.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubGPIOWriteBitRequest.pb-c.h"
+void stub_gpiowrite_bit_request__init
+ (StubGPIOWriteBitRequest *message)
+{
+ static const StubGPIOWriteBitRequest init_value = STUB_GPIOWRITE_BIT_REQUEST__INIT;
+ *message = init_value;
+}
+size_t stub_gpiowrite_bit_request__get_packed_size
+ (const StubGPIOWriteBitRequest *message)
+{
+ assert(message->base.descriptor == &stub_gpiowrite_bit_request__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_gpiowrite_bit_request__pack
+ (const StubGPIOWriteBitRequest *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_gpiowrite_bit_request__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_gpiowrite_bit_request__pack_to_buffer
+ (const StubGPIOWriteBitRequest *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_gpiowrite_bit_request__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubGPIOWriteBitRequest *
+ stub_gpiowrite_bit_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubGPIOWriteBitRequest *)
+ protobuf_c_message_unpack (&stub_gpiowrite_bit_request__descriptor,
+ allocator, len, data);
+}
+void stub_gpiowrite_bit_request__free_unpacked
+ (StubGPIOWriteBitRequest *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_gpiowrite_bit_request__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_gpiowrite_bit_request__field_descriptors[3] =
+{
+ {
+ "PortId",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_STRING,
+ 0, /* quantifier_offset */
+ offsetof(StubGPIOWriteBitRequest, portid),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "PinId",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubGPIOWriteBitRequest, has_pinid),
+ offsetof(StubGPIOWriteBitRequest, pinid),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "BitToWrite",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubGPIOWriteBitRequest, has_bittowrite),
+ offsetof(StubGPIOWriteBitRequest, bittowrite),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_gpiowrite_bit_request__field_indices_by_name[] = {
+ 2, /* field[2] = BitToWrite */
+ 1, /* field[1] = PinId */
+ 0, /* field[0] = PortId */
+};
+static const ProtobufCIntRange stub_gpiowrite_bit_request__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 3 }
+};
+const ProtobufCMessageDescriptor stub_gpiowrite_bit_request__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubGPIOWriteBitRequest",
+ "StubGPIOWriteBitRequest",
+ "StubGPIOWriteBitRequest",
+ "",
+ sizeof(StubGPIOWriteBitRequest),
+ 3,
+ stub_gpiowrite_bit_request__field_descriptors,
+ stub_gpiowrite_bit_request__field_indices_by_name,
+ 1, stub_gpiowrite_bit_request__number_ranges,
+ (ProtobufCMessageInit) stub_gpiowrite_bit_request__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOWriteBitRequest.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOWriteBitRequest.pb-c.h
new file mode 100644
index 000000000..705ca7d38
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOWriteBitRequest.pb-c.h
@@ -0,0 +1,81 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubGPIOWriteBitRequest.proto */
+
+#ifndef PROTOBUF_C_StubGPIOWriteBitRequest_2eproto__INCLUDED
+#define PROTOBUF_C_StubGPIOWriteBitRequest_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubGPIOWriteBitRequest StubGPIOWriteBitRequest;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubGPIOWriteBitRequest
+{
+ ProtobufCMessage base;
+ /*
+ * A..
+ */
+ char *portid;
+ /*
+ * 0..7
+ */
+ protobuf_c_boolean has_pinid;
+ uint32_t pinid;
+ protobuf_c_boolean has_bittowrite;
+ protobuf_c_boolean bittowrite;
+};
+#define STUB_GPIOWRITE_BIT_REQUEST__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_gpiowrite_bit_request__descriptor) \
+ , NULL, 0, 0, 0, 0 }
+
+
+/* StubGPIOWriteBitRequest methods */
+void stub_gpiowrite_bit_request__init
+ (StubGPIOWriteBitRequest *message);
+size_t stub_gpiowrite_bit_request__get_packed_size
+ (const StubGPIOWriteBitRequest *message);
+size_t stub_gpiowrite_bit_request__pack
+ (const StubGPIOWriteBitRequest *message,
+ uint8_t *out);
+size_t stub_gpiowrite_bit_request__pack_to_buffer
+ (const StubGPIOWriteBitRequest *message,
+ ProtobufCBuffer *buffer);
+StubGPIOWriteBitRequest *
+ stub_gpiowrite_bit_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_gpiowrite_bit_request__free_unpacked
+ (StubGPIOWriteBitRequest *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubGPIOWriteBitRequest_Closure)
+ (const StubGPIOWriteBitRequest *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_gpiowrite_bit_request__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubGPIOWriteBitRequest_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOWriteBitResponse.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOWriteBitResponse.pb-c.c
new file mode 100644
index 000000000..ef26dbf57
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOWriteBitResponse.pb-c.c
@@ -0,0 +1,131 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubGPIOWriteBitResponse.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubGPIOWriteBitResponse.pb-c.h"
+void stub_gpiowrite_bit_response__init
+ (StubGPIOWriteBitResponse *message)
+{
+ static const StubGPIOWriteBitResponse init_value = STUB_GPIOWRITE_BIT_RESPONSE__INIT;
+ *message = init_value;
+}
+size_t stub_gpiowrite_bit_response__get_packed_size
+ (const StubGPIOWriteBitResponse *message)
+{
+ assert(message->base.descriptor == &stub_gpiowrite_bit_response__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_gpiowrite_bit_response__pack
+ (const StubGPIOWriteBitResponse *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_gpiowrite_bit_response__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_gpiowrite_bit_response__pack_to_buffer
+ (const StubGPIOWriteBitResponse *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_gpiowrite_bit_response__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubGPIOWriteBitResponse *
+ stub_gpiowrite_bit_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubGPIOWriteBitResponse *)
+ protobuf_c_message_unpack (&stub_gpiowrite_bit_response__descriptor,
+ allocator, len, data);
+}
+void stub_gpiowrite_bit_response__free_unpacked
+ (StubGPIOWriteBitResponse *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_gpiowrite_bit_response__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_gpiowrite_bit_response__field_descriptors[4] =
+{
+ {
+ "PortId",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_STRING,
+ 0, /* quantifier_offset */
+ offsetof(StubGPIOWriteBitResponse, portid),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "PinId",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubGPIOWriteBitResponse, has_pinid),
+ offsetof(StubGPIOWriteBitResponse, pinid),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Status",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_STRING,
+ 0, /* quantifier_offset */
+ offsetof(StubGPIOWriteBitResponse, status),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "StatusWord",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubGPIOWriteBitResponse, has_statusword),
+ offsetof(StubGPIOWriteBitResponse, statusword),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_gpiowrite_bit_response__field_indices_by_name[] = {
+ 1, /* field[1] = PinId */
+ 0, /* field[0] = PortId */
+ 2, /* field[2] = Status */
+ 3, /* field[3] = StatusWord */
+};
+static const ProtobufCIntRange stub_gpiowrite_bit_response__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 4 }
+};
+const ProtobufCMessageDescriptor stub_gpiowrite_bit_response__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubGPIOWriteBitResponse",
+ "StubGPIOWriteBitResponse",
+ "StubGPIOWriteBitResponse",
+ "",
+ sizeof(StubGPIOWriteBitResponse),
+ 4,
+ stub_gpiowrite_bit_response__field_descriptors,
+ stub_gpiowrite_bit_response__field_indices_by_name,
+ 1, stub_gpiowrite_bit_response__number_ranges,
+ (ProtobufCMessageInit) stub_gpiowrite_bit_response__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOWriteBitResponse.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOWriteBitResponse.pb-c.h
new file mode 100644
index 000000000..831732f4a
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOWriteBitResponse.pb-c.h
@@ -0,0 +1,88 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubGPIOWriteBitResponse.proto */
+
+#ifndef PROTOBUF_C_StubGPIOWriteBitResponse_2eproto__INCLUDED
+#define PROTOBUF_C_StubGPIOWriteBitResponse_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubGPIOWriteBitResponse StubGPIOWriteBitResponse;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubGPIOWriteBitResponse
+{
+ ProtobufCMessage base;
+ /*
+ * A..
+ */
+ char *portid;
+ /*
+ * 0..7
+ */
+ protobuf_c_boolean has_pinid;
+ uint32_t pinid;
+ /*
+ * Passed/Failed
+ */
+ char *status;
+ /*
+ * Error number/bit when the status is Failed
+ */
+ protobuf_c_boolean has_statusword;
+ uint32_t statusword;
+};
+#define STUB_GPIOWRITE_BIT_RESPONSE__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_gpiowrite_bit_response__descriptor) \
+ , NULL, 0, 0, NULL, 0, 0 }
+
+
+/* StubGPIOWriteBitResponse methods */
+void stub_gpiowrite_bit_response__init
+ (StubGPIOWriteBitResponse *message);
+size_t stub_gpiowrite_bit_response__get_packed_size
+ (const StubGPIOWriteBitResponse *message);
+size_t stub_gpiowrite_bit_response__pack
+ (const StubGPIOWriteBitResponse *message,
+ uint8_t *out);
+size_t stub_gpiowrite_bit_response__pack_to_buffer
+ (const StubGPIOWriteBitResponse *message,
+ ProtobufCBuffer *buffer);
+StubGPIOWriteBitResponse *
+ stub_gpiowrite_bit_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_gpiowrite_bit_response__free_unpacked
+ (StubGPIOWriteBitResponse *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubGPIOWriteBitResponse_Closure)
+ (const StubGPIOWriteBitResponse *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_gpiowrite_bit_response__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubGPIOWriteBitResponse_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOWriteByteRequest.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOWriteByteRequest.pb-c.c
new file mode 100644
index 000000000..fe4fe1981
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOWriteByteRequest.pb-c.c
@@ -0,0 +1,106 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubGPIOWriteByteRequest.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubGPIOWriteByteRequest.pb-c.h"
+void stub_gpiowrite_byte_request__init
+ (StubGPIOWriteByteRequest *message)
+{
+ static const StubGPIOWriteByteRequest init_value = STUB_GPIOWRITE_BYTE_REQUEST__INIT;
+ *message = init_value;
+}
+size_t stub_gpiowrite_byte_request__get_packed_size
+ (const StubGPIOWriteByteRequest *message)
+{
+ assert(message->base.descriptor == &stub_gpiowrite_byte_request__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_gpiowrite_byte_request__pack
+ (const StubGPIOWriteByteRequest *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_gpiowrite_byte_request__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_gpiowrite_byte_request__pack_to_buffer
+ (const StubGPIOWriteByteRequest *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_gpiowrite_byte_request__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubGPIOWriteByteRequest *
+ stub_gpiowrite_byte_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubGPIOWriteByteRequest *)
+ protobuf_c_message_unpack (&stub_gpiowrite_byte_request__descriptor,
+ allocator, len, data);
+}
+void stub_gpiowrite_byte_request__free_unpacked
+ (StubGPIOWriteByteRequest *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_gpiowrite_byte_request__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_gpiowrite_byte_request__field_descriptors[2] =
+{
+ {
+ "PortId",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_STRING,
+ 0, /* quantifier_offset */
+ offsetof(StubGPIOWriteByteRequest, portid),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "DataToWrite",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubGPIOWriteByteRequest, has_datatowrite),
+ offsetof(StubGPIOWriteByteRequest, datatowrite),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_gpiowrite_byte_request__field_indices_by_name[] = {
+ 1, /* field[1] = DataToWrite */
+ 0, /* field[0] = PortId */
+};
+static const ProtobufCIntRange stub_gpiowrite_byte_request__number_ranges[2 + 1] =
+{
+ { 1, 0 },
+ { 3, 1 },
+ { 0, 2 }
+};
+const ProtobufCMessageDescriptor stub_gpiowrite_byte_request__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubGPIOWriteByteRequest",
+ "StubGPIOWriteByteRequest",
+ "StubGPIOWriteByteRequest",
+ "",
+ sizeof(StubGPIOWriteByteRequest),
+ 2,
+ stub_gpiowrite_byte_request__field_descriptors,
+ stub_gpiowrite_byte_request__field_indices_by_name,
+ 2, stub_gpiowrite_byte_request__number_ranges,
+ (ProtobufCMessageInit) stub_gpiowrite_byte_request__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOWriteByteRequest.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOWriteByteRequest.pb-c.h
new file mode 100644
index 000000000..a69934e01
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOWriteByteRequest.pb-c.h
@@ -0,0 +1,76 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubGPIOWriteByteRequest.proto */
+
+#ifndef PROTOBUF_C_StubGPIOWriteByteRequest_2eproto__INCLUDED
+#define PROTOBUF_C_StubGPIOWriteByteRequest_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubGPIOWriteByteRequest StubGPIOWriteByteRequest;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubGPIOWriteByteRequest
+{
+ ProtobufCMessage base;
+ /*
+ * A..
+ */
+ char *portid;
+ protobuf_c_boolean has_datatowrite;
+ uint32_t datatowrite;
+};
+#define STUB_GPIOWRITE_BYTE_REQUEST__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_gpiowrite_byte_request__descriptor) \
+ , NULL, 0, 0 }
+
+
+/* StubGPIOWriteByteRequest methods */
+void stub_gpiowrite_byte_request__init
+ (StubGPIOWriteByteRequest *message);
+size_t stub_gpiowrite_byte_request__get_packed_size
+ (const StubGPIOWriteByteRequest *message);
+size_t stub_gpiowrite_byte_request__pack
+ (const StubGPIOWriteByteRequest *message,
+ uint8_t *out);
+size_t stub_gpiowrite_byte_request__pack_to_buffer
+ (const StubGPIOWriteByteRequest *message,
+ ProtobufCBuffer *buffer);
+StubGPIOWriteByteRequest *
+ stub_gpiowrite_byte_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_gpiowrite_byte_request__free_unpacked
+ (StubGPIOWriteByteRequest *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubGPIOWriteByteRequest_Closure)
+ (const StubGPIOWriteByteRequest *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_gpiowrite_byte_request__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubGPIOWriteByteRequest_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOWriteByteResponse.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOWriteByteResponse.pb-c.c
new file mode 100644
index 000000000..ab6b357d9
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOWriteByteResponse.pb-c.c
@@ -0,0 +1,118 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubGPIOWriteByteResponse.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubGPIOWriteByteResponse.pb-c.h"
+void stub_gpiowrite_byte_response__init
+ (StubGPIOWriteByteResponse *message)
+{
+ static const StubGPIOWriteByteResponse init_value = STUB_GPIOWRITE_BYTE_RESPONSE__INIT;
+ *message = init_value;
+}
+size_t stub_gpiowrite_byte_response__get_packed_size
+ (const StubGPIOWriteByteResponse *message)
+{
+ assert(message->base.descriptor == &stub_gpiowrite_byte_response__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_gpiowrite_byte_response__pack
+ (const StubGPIOWriteByteResponse *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_gpiowrite_byte_response__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_gpiowrite_byte_response__pack_to_buffer
+ (const StubGPIOWriteByteResponse *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_gpiowrite_byte_response__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubGPIOWriteByteResponse *
+ stub_gpiowrite_byte_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubGPIOWriteByteResponse *)
+ protobuf_c_message_unpack (&stub_gpiowrite_byte_response__descriptor,
+ allocator, len, data);
+}
+void stub_gpiowrite_byte_response__free_unpacked
+ (StubGPIOWriteByteResponse *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_gpiowrite_byte_response__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_gpiowrite_byte_response__field_descriptors[3] =
+{
+ {
+ "PortId",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_STRING,
+ 0, /* quantifier_offset */
+ offsetof(StubGPIOWriteByteResponse, portid),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Status",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_STRING,
+ 0, /* quantifier_offset */
+ offsetof(StubGPIOWriteByteResponse, status),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "StatusWord",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubGPIOWriteByteResponse, has_statusword),
+ offsetof(StubGPIOWriteByteResponse, statusword),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_gpiowrite_byte_response__field_indices_by_name[] = {
+ 0, /* field[0] = PortId */
+ 1, /* field[1] = Status */
+ 2, /* field[2] = StatusWord */
+};
+static const ProtobufCIntRange stub_gpiowrite_byte_response__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 3 }
+};
+const ProtobufCMessageDescriptor stub_gpiowrite_byte_response__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubGPIOWriteByteResponse",
+ "StubGPIOWriteByteResponse",
+ "StubGPIOWriteByteResponse",
+ "",
+ sizeof(StubGPIOWriteByteResponse),
+ 3,
+ stub_gpiowrite_byte_response__field_descriptors,
+ stub_gpiowrite_byte_response__field_indices_by_name,
+ 1, stub_gpiowrite_byte_response__number_ranges,
+ (ProtobufCMessageInit) stub_gpiowrite_byte_response__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOWriteByteResponse.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOWriteByteResponse.pb-c.h
new file mode 100644
index 000000000..6995dbc15
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubGPIOWriteByteResponse.pb-c.h
@@ -0,0 +1,83 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubGPIOWriteByteResponse.proto */
+
+#ifndef PROTOBUF_C_StubGPIOWriteByteResponse_2eproto__INCLUDED
+#define PROTOBUF_C_StubGPIOWriteByteResponse_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubGPIOWriteByteResponse StubGPIOWriteByteResponse;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubGPIOWriteByteResponse
+{
+ ProtobufCMessage base;
+ /*
+ * A..
+ */
+ char *portid;
+ /*
+ * Passed/Failed
+ */
+ char *status;
+ /*
+ * Error number/bit when the status is Failed
+ */
+ protobuf_c_boolean has_statusword;
+ uint32_t statusword;
+};
+#define STUB_GPIOWRITE_BYTE_RESPONSE__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_gpiowrite_byte_response__descriptor) \
+ , NULL, NULL, 0, 0 }
+
+
+/* StubGPIOWriteByteResponse methods */
+void stub_gpiowrite_byte_response__init
+ (StubGPIOWriteByteResponse *message);
+size_t stub_gpiowrite_byte_response__get_packed_size
+ (const StubGPIOWriteByteResponse *message);
+size_t stub_gpiowrite_byte_response__pack
+ (const StubGPIOWriteByteResponse *message,
+ uint8_t *out);
+size_t stub_gpiowrite_byte_response__pack_to_buffer
+ (const StubGPIOWriteByteResponse *message,
+ ProtobufCBuffer *buffer);
+StubGPIOWriteByteResponse *
+ stub_gpiowrite_byte_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_gpiowrite_byte_response__free_unpacked
+ (StubGPIOWriteByteResponse *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubGPIOWriteByteResponse_Closure)
+ (const StubGPIOWriteByteResponse *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_gpiowrite_byte_response__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubGPIOWriteByteResponse_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubHWVersionRequest.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubHWVersionRequest.pb-c.c
new file mode 100644
index 000000000..fba567238
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubHWVersionRequest.pb-c.c
@@ -0,0 +1,72 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubHWVersionRequest.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubHWVersionRequest.pb-c.h"
+void stub_hwversion_request__init
+ (StubHWVersionRequest *message)
+{
+ static const StubHWVersionRequest init_value = STUB_HWVERSION_REQUEST__INIT;
+ *message = init_value;
+}
+size_t stub_hwversion_request__get_packed_size
+ (const StubHWVersionRequest *message)
+{
+ assert(message->base.descriptor == &stub_hwversion_request__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_hwversion_request__pack
+ (const StubHWVersionRequest *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_hwversion_request__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_hwversion_request__pack_to_buffer
+ (const StubHWVersionRequest *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_hwversion_request__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubHWVersionRequest *
+ stub_hwversion_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubHWVersionRequest *)
+ protobuf_c_message_unpack (&stub_hwversion_request__descriptor,
+ allocator, len, data);
+}
+void stub_hwversion_request__free_unpacked
+ (StubHWVersionRequest *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_hwversion_request__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+#define stub_hwversion_request__field_descriptors NULL
+#define stub_hwversion_request__field_indices_by_name NULL
+#define stub_hwversion_request__number_ranges NULL
+const ProtobufCMessageDescriptor stub_hwversion_request__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubHWVersionRequest",
+ "StubHWVersionRequest",
+ "StubHWVersionRequest",
+ "",
+ sizeof(StubHWVersionRequest),
+ 0,
+ stub_hwversion_request__field_descriptors,
+ stub_hwversion_request__field_indices_by_name,
+ 0, stub_hwversion_request__number_ranges,
+ (ProtobufCMessageInit) stub_hwversion_request__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubHWVersionRequest.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubHWVersionRequest.pb-c.h
new file mode 100644
index 000000000..017aa8cd2
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubHWVersionRequest.pb-c.h
@@ -0,0 +1,70 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubHWVersionRequest.proto */
+
+#ifndef PROTOBUF_C_StubHWVersionRequest_2eproto__INCLUDED
+#define PROTOBUF_C_StubHWVersionRequest_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubHWVersionRequest StubHWVersionRequest;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubHWVersionRequest
+{
+ ProtobufCMessage base;
+};
+#define STUB_HWVERSION_REQUEST__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_hwversion_request__descriptor) \
+ }
+
+
+/* StubHWVersionRequest methods */
+void stub_hwversion_request__init
+ (StubHWVersionRequest *message);
+size_t stub_hwversion_request__get_packed_size
+ (const StubHWVersionRequest *message);
+size_t stub_hwversion_request__pack
+ (const StubHWVersionRequest *message,
+ uint8_t *out);
+size_t stub_hwversion_request__pack_to_buffer
+ (const StubHWVersionRequest *message,
+ ProtobufCBuffer *buffer);
+StubHWVersionRequest *
+ stub_hwversion_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_hwversion_request__free_unpacked
+ (StubHWVersionRequest *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubHWVersionRequest_Closure)
+ (const StubHWVersionRequest *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_hwversion_request__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubHWVersionRequest_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubHWVersionResponse.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubHWVersionResponse.pb-c.c
new file mode 100644
index 000000000..4aec291a0
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubHWVersionResponse.pb-c.c
@@ -0,0 +1,131 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubHWVersionResponse.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubHWVersionResponse.pb-c.h"
+void stub_hwversion_response__init
+ (StubHWVersionResponse *message)
+{
+ static const StubHWVersionResponse init_value = STUB_HWVERSION_RESPONSE__INIT;
+ *message = init_value;
+}
+size_t stub_hwversion_response__get_packed_size
+ (const StubHWVersionResponse *message)
+{
+ assert(message->base.descriptor == &stub_hwversion_response__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_hwversion_response__pack
+ (const StubHWVersionResponse *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_hwversion_response__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_hwversion_response__pack_to_buffer
+ (const StubHWVersionResponse *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_hwversion_response__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubHWVersionResponse *
+ stub_hwversion_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubHWVersionResponse *)
+ protobuf_c_message_unpack (&stub_hwversion_response__descriptor,
+ allocator, len, data);
+}
+void stub_hwversion_response__free_unpacked
+ (StubHWVersionResponse *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_hwversion_response__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_hwversion_response__field_descriptors[4] =
+{
+ {
+ "BRD_ID",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubHWVersionResponse, has_brd_id),
+ offsetof(StubHWVersionResponse, brd_id),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "ASSY_ID",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubHWVersionResponse, has_assy_id),
+ offsetof(StubHWVersionResponse, assy_id),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Status",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_STRING,
+ 0, /* quantifier_offset */
+ offsetof(StubHWVersionResponse, status),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "StatusWord",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubHWVersionResponse, has_statusword),
+ offsetof(StubHWVersionResponse, statusword),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_hwversion_response__field_indices_by_name[] = {
+ 1, /* field[1] = ASSY_ID */
+ 0, /* field[0] = BRD_ID */
+ 2, /* field[2] = Status */
+ 3, /* field[3] = StatusWord */
+};
+static const ProtobufCIntRange stub_hwversion_response__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 4 }
+};
+const ProtobufCMessageDescriptor stub_hwversion_response__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubHWVersionResponse",
+ "StubHWVersionResponse",
+ "StubHWVersionResponse",
+ "",
+ sizeof(StubHWVersionResponse),
+ 4,
+ stub_hwversion_response__field_descriptors,
+ stub_hwversion_response__field_indices_by_name,
+ 1, stub_hwversion_response__number_ranges,
+ (ProtobufCMessageInit) stub_hwversion_response__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubHWVersionResponse.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubHWVersionResponse.pb-c.h
new file mode 100644
index 000000000..349ff1452
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubHWVersionResponse.pb-c.h
@@ -0,0 +1,83 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubHWVersionResponse.proto */
+
+#ifndef PROTOBUF_C_StubHWVersionResponse_2eproto__INCLUDED
+#define PROTOBUF_C_StubHWVersionResponse_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubHWVersionResponse StubHWVersionResponse;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubHWVersionResponse
+{
+ ProtobufCMessage base;
+ protobuf_c_boolean has_brd_id;
+ uint32_t brd_id;
+ protobuf_c_boolean has_assy_id;
+ uint32_t assy_id;
+ /*
+ * Passed/Failed
+ */
+ char *status;
+ /*
+ * Error number/bit when the status is Failed
+ */
+ protobuf_c_boolean has_statusword;
+ uint32_t statusword;
+};
+#define STUB_HWVERSION_RESPONSE__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_hwversion_response__descriptor) \
+ , 0, 0, 0, 0, NULL, 0, 0 }
+
+
+/* StubHWVersionResponse methods */
+void stub_hwversion_response__init
+ (StubHWVersionResponse *message);
+size_t stub_hwversion_response__get_packed_size
+ (const StubHWVersionResponse *message);
+size_t stub_hwversion_response__pack
+ (const StubHWVersionResponse *message,
+ uint8_t *out);
+size_t stub_hwversion_response__pack_to_buffer
+ (const StubHWVersionResponse *message,
+ ProtobufCBuffer *buffer);
+StubHWVersionResponse *
+ stub_hwversion_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_hwversion_response__free_unpacked
+ (StubHWVersionResponse *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubHWVersionResponse_Closure)
+ (const StubHWVersionResponse *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_hwversion_response__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubHWVersionResponse_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubHeaterRequest.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubHeaterRequest.pb-c.c
new file mode 100644
index 000000000..f77207045
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubHeaterRequest.pb-c.c
@@ -0,0 +1,118 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubHeaterRequest.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubHeaterRequest.pb-c.h"
+void stub_heater_request__init
+ (StubHeaterRequest *message)
+{
+ static const StubHeaterRequest init_value = STUB_HEATER_REQUEST__INIT;
+ *message = init_value;
+}
+size_t stub_heater_request__get_packed_size
+ (const StubHeaterRequest *message)
+{
+ assert(message->base.descriptor == &stub_heater_request__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_heater_request__pack
+ (const StubHeaterRequest *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_heater_request__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_heater_request__pack_to_buffer
+ (const StubHeaterRequest *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_heater_request__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubHeaterRequest *
+ stub_heater_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubHeaterRequest *)
+ protobuf_c_message_unpack (&stub_heater_request__descriptor,
+ allocator, len, data);
+}
+void stub_heater_request__free_unpacked
+ (StubHeaterRequest *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_heater_request__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_heater_request__field_descriptors[3] =
+{
+ {
+ "HeaterGroupId",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubHeaterRequest, has_heatergroupid),
+ offsetof(StubHeaterRequest, heatergroupid),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "HeaterGroupOn",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubHeaterRequest, has_heatergroupon),
+ offsetof(StubHeaterRequest, heatergroupon),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "HeaterTemperatureReq",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubHeaterRequest, has_heatertemperaturereq),
+ offsetof(StubHeaterRequest, heatertemperaturereq),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_heater_request__field_indices_by_name[] = {
+ 0, /* field[0] = HeaterGroupId */
+ 1, /* field[1] = HeaterGroupOn */
+ 2, /* field[2] = HeaterTemperatureReq */
+};
+static const ProtobufCIntRange stub_heater_request__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 3 }
+};
+const ProtobufCMessageDescriptor stub_heater_request__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubHeaterRequest",
+ "StubHeaterRequest",
+ "StubHeaterRequest",
+ "",
+ sizeof(StubHeaterRequest),
+ 3,
+ stub_heater_request__field_descriptors,
+ stub_heater_request__field_indices_by_name,
+ 1, stub_heater_request__number_ranges,
+ (ProtobufCMessageInit) stub_heater_request__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubHeaterRequest.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubHeaterRequest.pb-c.h
new file mode 100644
index 000000000..6d220df5d
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubHeaterRequest.pb-c.h
@@ -0,0 +1,82 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubHeaterRequest.proto */
+
+#ifndef PROTOBUF_C_StubHeaterRequest_2eproto__INCLUDED
+#define PROTOBUF_C_StubHeaterRequest_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubHeaterRequest StubHeaterRequest;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubHeaterRequest
+{
+ ProtobufCMessage base;
+ /*
+ *0..2
+ */
+ protobuf_c_boolean has_heatergroupid;
+ uint32_t heatergroupid;
+ /*
+ * 1-On 0-Off
+ */
+ protobuf_c_boolean has_heatergroupon;
+ protobuf_c_boolean heatergroupon;
+ protobuf_c_boolean has_heatertemperaturereq;
+ uint32_t heatertemperaturereq;
+};
+#define STUB_HEATER_REQUEST__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_heater_request__descriptor) \
+ , 0, 0, 0, 0, 0, 0 }
+
+
+/* StubHeaterRequest methods */
+void stub_heater_request__init
+ (StubHeaterRequest *message);
+size_t stub_heater_request__get_packed_size
+ (const StubHeaterRequest *message);
+size_t stub_heater_request__pack
+ (const StubHeaterRequest *message,
+ uint8_t *out);
+size_t stub_heater_request__pack_to_buffer
+ (const StubHeaterRequest *message,
+ ProtobufCBuffer *buffer);
+StubHeaterRequest *
+ stub_heater_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_heater_request__free_unpacked
+ (StubHeaterRequest *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubHeaterRequest_Closure)
+ (const StubHeaterRequest *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_heater_request__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubHeaterRequest_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubHeaterResponse.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubHeaterResponse.pb-c.c
new file mode 100644
index 000000000..f45ed51b6
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubHeaterResponse.pb-c.c
@@ -0,0 +1,131 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubHeaterResponse.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubHeaterResponse.pb-c.h"
+void stub_heater_response__init
+ (StubHeaterResponse *message)
+{
+ static const StubHeaterResponse init_value = STUB_HEATER_RESPONSE__INIT;
+ *message = init_value;
+}
+size_t stub_heater_response__get_packed_size
+ (const StubHeaterResponse *message)
+{
+ assert(message->base.descriptor == &stub_heater_response__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_heater_response__pack
+ (const StubHeaterResponse *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_heater_response__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_heater_response__pack_to_buffer
+ (const StubHeaterResponse *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_heater_response__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubHeaterResponse *
+ stub_heater_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubHeaterResponse *)
+ protobuf_c_message_unpack (&stub_heater_response__descriptor,
+ allocator, len, data);
+}
+void stub_heater_response__free_unpacked
+ (StubHeaterResponse *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_heater_response__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_heater_response__field_descriptors[4] =
+{
+ {
+ "HeaterGroupId",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubHeaterResponse, has_heatergroupid),
+ offsetof(StubHeaterResponse, heatergroupid),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "HeaterTemperatureSensor",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubHeaterResponse, has_heatertemperaturesensor),
+ offsetof(StubHeaterResponse, heatertemperaturesensor),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Status",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_STRING,
+ 0, /* quantifier_offset */
+ offsetof(StubHeaterResponse, status),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "StatusWord",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubHeaterResponse, has_statusword),
+ offsetof(StubHeaterResponse, statusword),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_heater_response__field_indices_by_name[] = {
+ 0, /* field[0] = HeaterGroupId */
+ 1, /* field[1] = HeaterTemperatureSensor */
+ 2, /* field[2] = Status */
+ 3, /* field[3] = StatusWord */
+};
+static const ProtobufCIntRange stub_heater_response__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 4 }
+};
+const ProtobufCMessageDescriptor stub_heater_response__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubHeaterResponse",
+ "StubHeaterResponse",
+ "StubHeaterResponse",
+ "",
+ sizeof(StubHeaterResponse),
+ 4,
+ stub_heater_response__field_descriptors,
+ stub_heater_response__field_indices_by_name,
+ 1, stub_heater_response__number_ranges,
+ (ProtobufCMessageInit) stub_heater_response__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubHeaterResponse.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubHeaterResponse.pb-c.h
new file mode 100644
index 000000000..fd37a5ae7
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubHeaterResponse.pb-c.h
@@ -0,0 +1,86 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubHeaterResponse.proto */
+
+#ifndef PROTOBUF_C_StubHeaterResponse_2eproto__INCLUDED
+#define PROTOBUF_C_StubHeaterResponse_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubHeaterResponse StubHeaterResponse;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubHeaterResponse
+{
+ ProtobufCMessage base;
+ /*
+ *0..2
+ */
+ protobuf_c_boolean has_heatergroupid;
+ uint32_t heatergroupid;
+ protobuf_c_boolean has_heatertemperaturesensor;
+ uint32_t heatertemperaturesensor;
+ /*
+ * Passed/Failed
+ */
+ char *status;
+ /*
+ * Error number/bit when the status is Failed
+ */
+ protobuf_c_boolean has_statusword;
+ uint32_t statusword;
+};
+#define STUB_HEATER_RESPONSE__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_heater_response__descriptor) \
+ , 0, 0, 0, 0, NULL, 0, 0 }
+
+
+/* StubHeaterResponse methods */
+void stub_heater_response__init
+ (StubHeaterResponse *message);
+size_t stub_heater_response__get_packed_size
+ (const StubHeaterResponse *message);
+size_t stub_heater_response__pack
+ (const StubHeaterResponse *message,
+ uint8_t *out);
+size_t stub_heater_response__pack_to_buffer
+ (const StubHeaterResponse *message,
+ ProtobufCBuffer *buffer);
+StubHeaterResponse *
+ stub_heater_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_heater_response__free_unpacked
+ (StubHeaterResponse *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubHeaterResponse_Closure)
+ (const StubHeaterResponse *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_heater_response__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubHeaterResponse_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubL6470DriverRequest.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubL6470DriverRequest.pb-c.c
new file mode 100644
index 000000000..3771b60a9
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubL6470DriverRequest.pb-c.c
@@ -0,0 +1,339 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubL6470DriverRequest.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubL6470DriverRequest.pb-c.h"
+void stub_l6470_driver_request__init
+ (StubL6470DriverRequest *message)
+{
+ static const StubL6470DriverRequest init_value = STUB_L6470_DRIVER_REQUEST__INIT;
+ *message = init_value;
+}
+size_t stub_l6470_driver_request__get_packed_size
+ (const StubL6470DriverRequest *message)
+{
+ assert(message->base.descriptor == &stub_l6470_driver_request__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_l6470_driver_request__pack
+ (const StubL6470DriverRequest *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_l6470_driver_request__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_l6470_driver_request__pack_to_buffer
+ (const StubL6470DriverRequest *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_l6470_driver_request__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubL6470DriverRequest *
+ stub_l6470_driver_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubL6470DriverRequest *)
+ protobuf_c_message_unpack (&stub_l6470_driver_request__descriptor,
+ allocator, len, data);
+}
+void stub_l6470_driver_request__free_unpacked
+ (StubL6470DriverRequest *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_l6470_driver_request__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_l6470_driver_request__field_descriptors[20] =
+{
+ {
+ "Run_Value",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubL6470DriverRequest, has_run_value),
+ offsetof(StubL6470DriverRequest, run_value),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Mov_Value",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubL6470DriverRequest, has_mov_value),
+ offsetof(StubL6470DriverRequest, mov_value),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Direction",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubL6470DriverRequest, has_direction),
+ offsetof(StubL6470DriverRequest, direction),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Time_2_Change_Direction",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubL6470DriverRequest, has_time_2_change_direction),
+ offsetof(StubL6470DriverRequest, time_2_change_direction),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Display_Tx_ON_LCD",
+ 5,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubL6470DriverRequest, has_display_tx_on_lcd),
+ offsetof(StubL6470DriverRequest, display_tx_on_lcd),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Display_Rx_on_LCD",
+ 6,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubL6470DriverRequest, has_display_rx_on_lcd),
+ offsetof(StubL6470DriverRequest, display_rx_on_lcd),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Init_MicroStep",
+ 7,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubL6470DriverRequest, has_init_microstep),
+ offsetof(StubL6470DriverRequest, init_microstep),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Init_Acc",
+ 8,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubL6470DriverRequest, has_init_acc),
+ offsetof(StubL6470DriverRequest, init_acc),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Init_Dec",
+ 9,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubL6470DriverRequest, has_init_dec),
+ offsetof(StubL6470DriverRequest, init_dec),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "TestBool_1",
+ 10,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubL6470DriverRequest, has_testbool_1),
+ offsetof(StubL6470DriverRequest, testbool_1),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "TestBool_2",
+ 11,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubL6470DriverRequest, has_testbool_2),
+ offsetof(StubL6470DriverRequest, testbool_2),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "TestBool_3",
+ 12,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubL6470DriverRequest, has_testbool_3),
+ offsetof(StubL6470DriverRequest, testbool_3),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "TestBool_4",
+ 13,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubL6470DriverRequest, has_testbool_4),
+ offsetof(StubL6470DriverRequest, testbool_4),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "TestBool_5",
+ 14,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubL6470DriverRequest, has_testbool_5),
+ offsetof(StubL6470DriverRequest, testbool_5),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "TestUint32_1",
+ 15,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubL6470DriverRequest, has_testuint32_1),
+ offsetof(StubL6470DriverRequest, testuint32_1),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "TestUint32_2",
+ 16,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubL6470DriverRequest, has_testuint32_2),
+ offsetof(StubL6470DriverRequest, testuint32_2),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "TestUint32_3",
+ 17,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubL6470DriverRequest, has_testuint32_3),
+ offsetof(StubL6470DriverRequest, testuint32_3),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "TestUint32_4",
+ 18,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubL6470DriverRequest, has_testuint32_4),
+ offsetof(StubL6470DriverRequest, testuint32_4),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "TestUint32_5",
+ 19,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubL6470DriverRequest, has_testuint32_5),
+ offsetof(StubL6470DriverRequest, testuint32_5),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "TestUint32_6",
+ 20,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubL6470DriverRequest, has_testuint32_6),
+ offsetof(StubL6470DriverRequest, testuint32_6),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_l6470_driver_request__field_indices_by_name[] = {
+ 2, /* field[2] = Direction */
+ 5, /* field[5] = Display_Rx_on_LCD */
+ 4, /* field[4] = Display_Tx_ON_LCD */
+ 7, /* field[7] = Init_Acc */
+ 8, /* field[8] = Init_Dec */
+ 6, /* field[6] = Init_MicroStep */
+ 1, /* field[1] = Mov_Value */
+ 0, /* field[0] = Run_Value */
+ 9, /* field[9] = TestBool_1 */
+ 10, /* field[10] = TestBool_2 */
+ 11, /* field[11] = TestBool_3 */
+ 12, /* field[12] = TestBool_4 */
+ 13, /* field[13] = TestBool_5 */
+ 14, /* field[14] = TestUint32_1 */
+ 15, /* field[15] = TestUint32_2 */
+ 16, /* field[16] = TestUint32_3 */
+ 17, /* field[17] = TestUint32_4 */
+ 18, /* field[18] = TestUint32_5 */
+ 19, /* field[19] = TestUint32_6 */
+ 3, /* field[3] = Time_2_Change_Direction */
+};
+static const ProtobufCIntRange stub_l6470_driver_request__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 20 }
+};
+const ProtobufCMessageDescriptor stub_l6470_driver_request__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubL6470DriverRequest",
+ "StubL6470DriverRequest",
+ "StubL6470DriverRequest",
+ "",
+ sizeof(StubL6470DriverRequest),
+ 20,
+ stub_l6470_driver_request__field_descriptors,
+ stub_l6470_driver_request__field_indices_by_name,
+ 1, stub_l6470_driver_request__number_ranges,
+ (ProtobufCMessageInit) stub_l6470_driver_request__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubL6470DriverRequest.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubL6470DriverRequest.pb-c.h
new file mode 100644
index 000000000..ee4e261c9
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubL6470DriverRequest.pb-c.h
@@ -0,0 +1,110 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubL6470DriverRequest.proto */
+
+#ifndef PROTOBUF_C_StubL6470DriverRequest_2eproto__INCLUDED
+#define PROTOBUF_C_StubL6470DriverRequest_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubL6470DriverRequest StubL6470DriverRequest;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubL6470DriverRequest
+{
+ ProtobufCMessage base;
+ protobuf_c_boolean has_run_value;
+ uint32_t run_value;
+ protobuf_c_boolean has_mov_value;
+ uint32_t mov_value;
+ protobuf_c_boolean has_direction;
+ protobuf_c_boolean direction;
+ protobuf_c_boolean has_time_2_change_direction;
+ uint32_t time_2_change_direction;
+ protobuf_c_boolean has_display_tx_on_lcd;
+ protobuf_c_boolean display_tx_on_lcd;
+ protobuf_c_boolean has_display_rx_on_lcd;
+ protobuf_c_boolean display_rx_on_lcd;
+ protobuf_c_boolean has_init_microstep;
+ uint32_t init_microstep;
+ protobuf_c_boolean has_init_acc;
+ uint32_t init_acc;
+ protobuf_c_boolean has_init_dec;
+ uint32_t init_dec;
+ protobuf_c_boolean has_testbool_1;
+ protobuf_c_boolean testbool_1;
+ protobuf_c_boolean has_testbool_2;
+ protobuf_c_boolean testbool_2;
+ protobuf_c_boolean has_testbool_3;
+ protobuf_c_boolean testbool_3;
+ protobuf_c_boolean has_testbool_4;
+ protobuf_c_boolean testbool_4;
+ protobuf_c_boolean has_testbool_5;
+ protobuf_c_boolean testbool_5;
+ protobuf_c_boolean has_testuint32_1;
+ uint32_t testuint32_1;
+ protobuf_c_boolean has_testuint32_2;
+ uint32_t testuint32_2;
+ protobuf_c_boolean has_testuint32_3;
+ uint32_t testuint32_3;
+ protobuf_c_boolean has_testuint32_4;
+ uint32_t testuint32_4;
+ protobuf_c_boolean has_testuint32_5;
+ uint32_t testuint32_5;
+ protobuf_c_boolean has_testuint32_6;
+ uint32_t testuint32_6;
+};
+#define STUB_L6470_DRIVER_REQUEST__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_l6470_driver_request__descriptor) \
+ , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+
+
+/* StubL6470DriverRequest methods */
+void stub_l6470_driver_request__init
+ (StubL6470DriverRequest *message);
+size_t stub_l6470_driver_request__get_packed_size
+ (const StubL6470DriverRequest *message);
+size_t stub_l6470_driver_request__pack
+ (const StubL6470DriverRequest *message,
+ uint8_t *out);
+size_t stub_l6470_driver_request__pack_to_buffer
+ (const StubL6470DriverRequest *message,
+ ProtobufCBuffer *buffer);
+StubL6470DriverRequest *
+ stub_l6470_driver_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_l6470_driver_request__free_unpacked
+ (StubL6470DriverRequest *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubL6470DriverRequest_Closure)
+ (const StubL6470DriverRequest *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_l6470_driver_request__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubL6470DriverRequest_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubL6470DriverResponse.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubL6470DriverResponse.pb-c.c
new file mode 100644
index 000000000..b129bb930
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubL6470DriverResponse.pb-c.c
@@ -0,0 +1,274 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubL6470DriverResponse.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubL6470DriverResponse.pb-c.h"
+void stub_l6470_driver_response__init
+ (StubL6470DriverResponse *message)
+{
+ static const StubL6470DriverResponse init_value = STUB_L6470_DRIVER_RESPONSE__INIT;
+ *message = init_value;
+}
+size_t stub_l6470_driver_response__get_packed_size
+ (const StubL6470DriverResponse *message)
+{
+ assert(message->base.descriptor == &stub_l6470_driver_response__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_l6470_driver_response__pack
+ (const StubL6470DriverResponse *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_l6470_driver_response__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_l6470_driver_response__pack_to_buffer
+ (const StubL6470DriverResponse *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_l6470_driver_response__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubL6470DriverResponse *
+ stub_l6470_driver_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubL6470DriverResponse *)
+ protobuf_c_message_unpack (&stub_l6470_driver_response__descriptor,
+ allocator, len, data);
+}
+void stub_l6470_driver_response__free_unpacked
+ (StubL6470DriverResponse *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_l6470_driver_response__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_l6470_driver_response__field_descriptors[15] =
+{
+ {
+ "Run_Value",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubL6470DriverResponse, has_run_value),
+ offsetof(StubL6470DriverResponse, run_value),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Mov_Value",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubL6470DriverResponse, has_mov_value),
+ offsetof(StubL6470DriverResponse, mov_value),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "TestBool_1",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubL6470DriverResponse, has_testbool_1),
+ offsetof(StubL6470DriverResponse, testbool_1),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "TestBool_2",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubL6470DriverResponse, has_testbool_2),
+ offsetof(StubL6470DriverResponse, testbool_2),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "TestBool_3",
+ 5,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubL6470DriverResponse, has_testbool_3),
+ offsetof(StubL6470DriverResponse, testbool_3),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "TestBool_4",
+ 6,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubL6470DriverResponse, has_testbool_4),
+ offsetof(StubL6470DriverResponse, testbool_4),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "TestBool_5",
+ 7,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubL6470DriverResponse, has_testbool_5),
+ offsetof(StubL6470DriverResponse, testbool_5),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "TestUint32_1",
+ 8,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubL6470DriverResponse, has_testuint32_1),
+ offsetof(StubL6470DriverResponse, testuint32_1),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "TestUint32_2",
+ 9,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubL6470DriverResponse, has_testuint32_2),
+ offsetof(StubL6470DriverResponse, testuint32_2),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "TestUint32_3",
+ 10,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubL6470DriverResponse, has_testuint32_3),
+ offsetof(StubL6470DriverResponse, testuint32_3),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "TestUint32_4",
+ 11,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubL6470DriverResponse, has_testuint32_4),
+ offsetof(StubL6470DriverResponse, testuint32_4),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "TestUint32_5",
+ 12,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubL6470DriverResponse, has_testuint32_5),
+ offsetof(StubL6470DriverResponse, testuint32_5),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "TestUint32_6",
+ 13,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubL6470DriverResponse, has_testuint32_6),
+ offsetof(StubL6470DriverResponse, testuint32_6),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Status",
+ 14,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_STRING,
+ 0, /* quantifier_offset */
+ offsetof(StubL6470DriverResponse, status),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "StatusWord",
+ 15,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubL6470DriverResponse, has_statusword),
+ offsetof(StubL6470DriverResponse, statusword),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_l6470_driver_response__field_indices_by_name[] = {
+ 1, /* field[1] = Mov_Value */
+ 0, /* field[0] = Run_Value */
+ 13, /* field[13] = Status */
+ 14, /* field[14] = StatusWord */
+ 2, /* field[2] = TestBool_1 */
+ 3, /* field[3] = TestBool_2 */
+ 4, /* field[4] = TestBool_3 */
+ 5, /* field[5] = TestBool_4 */
+ 6, /* field[6] = TestBool_5 */
+ 7, /* field[7] = TestUint32_1 */
+ 8, /* field[8] = TestUint32_2 */
+ 9, /* field[9] = TestUint32_3 */
+ 10, /* field[10] = TestUint32_4 */
+ 11, /* field[11] = TestUint32_5 */
+ 12, /* field[12] = TestUint32_6 */
+};
+static const ProtobufCIntRange stub_l6470_driver_response__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 15 }
+};
+const ProtobufCMessageDescriptor stub_l6470_driver_response__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubL6470DriverResponse",
+ "StubL6470DriverResponse",
+ "StubL6470DriverResponse",
+ "",
+ sizeof(StubL6470DriverResponse),
+ 15,
+ stub_l6470_driver_response__field_descriptors,
+ stub_l6470_driver_response__field_indices_by_name,
+ 1, stub_l6470_driver_response__number_ranges,
+ (ProtobufCMessageInit) stub_l6470_driver_response__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubL6470DriverResponse.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubL6470DriverResponse.pb-c.h
new file mode 100644
index 000000000..ca18da2a9
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubL6470DriverResponse.pb-c.h
@@ -0,0 +1,105 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubL6470DriverResponse.proto */
+
+#ifndef PROTOBUF_C_StubL6470DriverResponse_2eproto__INCLUDED
+#define PROTOBUF_C_StubL6470DriverResponse_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubL6470DriverResponse StubL6470DriverResponse;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubL6470DriverResponse
+{
+ ProtobufCMessage base;
+ protobuf_c_boolean has_run_value;
+ uint32_t run_value;
+ protobuf_c_boolean has_mov_value;
+ uint32_t mov_value;
+ protobuf_c_boolean has_testbool_1;
+ protobuf_c_boolean testbool_1;
+ protobuf_c_boolean has_testbool_2;
+ protobuf_c_boolean testbool_2;
+ protobuf_c_boolean has_testbool_3;
+ protobuf_c_boolean testbool_3;
+ protobuf_c_boolean has_testbool_4;
+ protobuf_c_boolean testbool_4;
+ protobuf_c_boolean has_testbool_5;
+ protobuf_c_boolean testbool_5;
+ protobuf_c_boolean has_testuint32_1;
+ uint32_t testuint32_1;
+ protobuf_c_boolean has_testuint32_2;
+ uint32_t testuint32_2;
+ protobuf_c_boolean has_testuint32_3;
+ uint32_t testuint32_3;
+ protobuf_c_boolean has_testuint32_4;
+ uint32_t testuint32_4;
+ protobuf_c_boolean has_testuint32_5;
+ uint32_t testuint32_5;
+ protobuf_c_boolean has_testuint32_6;
+ uint32_t testuint32_6;
+ /*
+ * Passed/Failed
+ */
+ char *status;
+ /*
+ * Error number/bit when the status is Failed
+ */
+ protobuf_c_boolean has_statusword;
+ uint32_t statusword;
+};
+#define STUB_L6470_DRIVER_RESPONSE__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_l6470_driver_response__descriptor) \
+ , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, 0, 0 }
+
+
+/* StubL6470DriverResponse methods */
+void stub_l6470_driver_response__init
+ (StubL6470DriverResponse *message);
+size_t stub_l6470_driver_response__get_packed_size
+ (const StubL6470DriverResponse *message);
+size_t stub_l6470_driver_response__pack
+ (const StubL6470DriverResponse *message,
+ uint8_t *out);
+size_t stub_l6470_driver_response__pack_to_buffer
+ (const StubL6470DriverResponse *message,
+ ProtobufCBuffer *buffer);
+StubL6470DriverResponse *
+ stub_l6470_driver_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_l6470_driver_response__free_unpacked
+ (StubL6470DriverResponse *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubL6470DriverResponse_Closure)
+ (const StubL6470DriverResponse *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_l6470_driver_response__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubL6470DriverResponse_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorEncoderRequest.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorEncoderRequest.pb-c.c
new file mode 100644
index 000000000..cb95c4718
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorEncoderRequest.pb-c.c
@@ -0,0 +1,131 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubMotorEncoderRequest.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubMotorEncoderRequest.pb-c.h"
+void stub_motor_encoder_request__init
+ (StubMotorEncoderRequest *message)
+{
+ static const StubMotorEncoderRequest init_value = STUB_MOTOR_ENCODER_REQUEST__INIT;
+ *message = init_value;
+}
+size_t stub_motor_encoder_request__get_packed_size
+ (const StubMotorEncoderRequest *message)
+{
+ assert(message->base.descriptor == &stub_motor_encoder_request__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_motor_encoder_request__pack
+ (const StubMotorEncoderRequest *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_motor_encoder_request__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_motor_encoder_request__pack_to_buffer
+ (const StubMotorEncoderRequest *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_motor_encoder_request__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubMotorEncoderRequest *
+ stub_motor_encoder_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubMotorEncoderRequest *)
+ protobuf_c_message_unpack (&stub_motor_encoder_request__descriptor,
+ allocator, len, data);
+}
+void stub_motor_encoder_request__free_unpacked
+ (StubMotorEncoderRequest *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_motor_encoder_request__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_motor_encoder_request__field_descriptors[4] =
+{
+ {
+ "MotorId",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubMotorEncoderRequest, has_motorid),
+ offsetof(StubMotorEncoderRequest, motorid),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "ReadEncSpeed",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubMotorEncoderRequest, has_readencspeed),
+ offsetof(StubMotorEncoderRequest, readencspeed),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "ReadDirection",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubMotorEncoderRequest, has_readdirection),
+ offsetof(StubMotorEncoderRequest, readdirection),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Motion_Control",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubMotorEncoderRequest, has_motion_control),
+ offsetof(StubMotorEncoderRequest, motion_control),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_motor_encoder_request__field_indices_by_name[] = {
+ 3, /* field[3] = Motion_Control */
+ 0, /* field[0] = MotorId */
+ 2, /* field[2] = ReadDirection */
+ 1, /* field[1] = ReadEncSpeed */
+};
+static const ProtobufCIntRange stub_motor_encoder_request__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 4 }
+};
+const ProtobufCMessageDescriptor stub_motor_encoder_request__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubMotorEncoderRequest",
+ "StubMotorEncoderRequest",
+ "StubMotorEncoderRequest",
+ "",
+ sizeof(StubMotorEncoderRequest),
+ 4,
+ stub_motor_encoder_request__field_descriptors,
+ stub_motor_encoder_request__field_indices_by_name,
+ 1, stub_motor_encoder_request__number_ranges,
+ (ProtobufCMessageInit) stub_motor_encoder_request__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorEncoderRequest.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorEncoderRequest.pb-c.h
new file mode 100644
index 000000000..ba7151b89
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorEncoderRequest.pb-c.h
@@ -0,0 +1,87 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubMotorEncoderRequest.proto */
+
+#ifndef PROTOBUF_C_StubMotorEncoderRequest_2eproto__INCLUDED
+#define PROTOBUF_C_StubMotorEncoderRequest_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubMotorEncoderRequest StubMotorEncoderRequest;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubMotorEncoderRequest
+{
+ ProtobufCMessage base;
+ /*
+ *0..8
+ */
+ protobuf_c_boolean has_motorid;
+ uint32_t motorid;
+ protobuf_c_boolean has_readencspeed;
+ protobuf_c_boolean readencspeed;
+ /*
+ * 1-cw 0-ccw
+ */
+ protobuf_c_boolean has_readdirection;
+ protobuf_c_boolean readdirection;
+ /*
+ * close loop using the encoder
+ */
+ protobuf_c_boolean has_motion_control;
+ protobuf_c_boolean motion_control;
+};
+#define STUB_MOTOR_ENCODER_REQUEST__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_motor_encoder_request__descriptor) \
+ , 0, 0, 0, 0, 0, 0, 0, 0 }
+
+
+/* StubMotorEncoderRequest methods */
+void stub_motor_encoder_request__init
+ (StubMotorEncoderRequest *message);
+size_t stub_motor_encoder_request__get_packed_size
+ (const StubMotorEncoderRequest *message);
+size_t stub_motor_encoder_request__pack
+ (const StubMotorEncoderRequest *message,
+ uint8_t *out);
+size_t stub_motor_encoder_request__pack_to_buffer
+ (const StubMotorEncoderRequest *message,
+ ProtobufCBuffer *buffer);
+StubMotorEncoderRequest *
+ stub_motor_encoder_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_motor_encoder_request__free_unpacked
+ (StubMotorEncoderRequest *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubMotorEncoderRequest_Closure)
+ (const StubMotorEncoderRequest *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_motor_encoder_request__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubMotorEncoderRequest_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorEncoderResponse.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorEncoderResponse.pb-c.c
new file mode 100644
index 000000000..5204790a0
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorEncoderResponse.pb-c.c
@@ -0,0 +1,157 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubMotorEncoderResponse.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubMotorEncoderResponse.pb-c.h"
+void stub_motor_encoder_response__init
+ (StubMotorEncoderResponse *message)
+{
+ static const StubMotorEncoderResponse init_value = STUB_MOTOR_ENCODER_RESPONSE__INIT;
+ *message = init_value;
+}
+size_t stub_motor_encoder_response__get_packed_size
+ (const StubMotorEncoderResponse *message)
+{
+ assert(message->base.descriptor == &stub_motor_encoder_response__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_motor_encoder_response__pack
+ (const StubMotorEncoderResponse *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_motor_encoder_response__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_motor_encoder_response__pack_to_buffer
+ (const StubMotorEncoderResponse *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_motor_encoder_response__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubMotorEncoderResponse *
+ stub_motor_encoder_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubMotorEncoderResponse *)
+ protobuf_c_message_unpack (&stub_motor_encoder_response__descriptor,
+ allocator, len, data);
+}
+void stub_motor_encoder_response__free_unpacked
+ (StubMotorEncoderResponse *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_motor_encoder_response__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_motor_encoder_response__field_descriptors[6] =
+{
+ {
+ "EncoderId",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubMotorEncoderResponse, has_encoderid),
+ offsetof(StubMotorEncoderResponse, encoderid),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "EncoderVersion",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubMotorEncoderResponse, has_encoderversion),
+ offsetof(StubMotorEncoderResponse, encoderversion),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "MotorSpeed",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(StubMotorEncoderResponse, has_motorspeed),
+ offsetof(StubMotorEncoderResponse, motorspeed),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "MotorDirection",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubMotorEncoderResponse, has_motordirection),
+ offsetof(StubMotorEncoderResponse, motordirection),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Status",
+ 5,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_STRING,
+ 0, /* quantifier_offset */
+ offsetof(StubMotorEncoderResponse, status),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "StatusWord",
+ 6,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubMotorEncoderResponse, has_statusword),
+ offsetof(StubMotorEncoderResponse, statusword),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_motor_encoder_response__field_indices_by_name[] = {
+ 0, /* field[0] = EncoderId */
+ 1, /* field[1] = EncoderVersion */
+ 3, /* field[3] = MotorDirection */
+ 2, /* field[2] = MotorSpeed */
+ 4, /* field[4] = Status */
+ 5, /* field[5] = StatusWord */
+};
+static const ProtobufCIntRange stub_motor_encoder_response__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 6 }
+};
+const ProtobufCMessageDescriptor stub_motor_encoder_response__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubMotorEncoderResponse",
+ "StubMotorEncoderResponse",
+ "StubMotorEncoderResponse",
+ "",
+ sizeof(StubMotorEncoderResponse),
+ 6,
+ stub_motor_encoder_response__field_descriptors,
+ stub_motor_encoder_response__field_indices_by_name,
+ 1, stub_motor_encoder_response__number_ranges,
+ (ProtobufCMessageInit) stub_motor_encoder_response__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorEncoderResponse.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorEncoderResponse.pb-c.h
new file mode 100644
index 000000000..d1e150306
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorEncoderResponse.pb-c.h
@@ -0,0 +1,93 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubMotorEncoderResponse.proto */
+
+#ifndef PROTOBUF_C_StubMotorEncoderResponse_2eproto__INCLUDED
+#define PROTOBUF_C_StubMotorEncoderResponse_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubMotorEncoderResponse StubMotorEncoderResponse;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubMotorEncoderResponse
+{
+ ProtobufCMessage base;
+ /*
+ *0..8
+ */
+ protobuf_c_boolean has_encoderid;
+ uint32_t encoderid;
+ protobuf_c_boolean has_encoderversion;
+ uint32_t encoderversion;
+ protobuf_c_boolean has_motorspeed;
+ int32_t motorspeed;
+ /*
+ * 1-cw 0-ccw
+ */
+ protobuf_c_boolean has_motordirection;
+ protobuf_c_boolean motordirection;
+ /*
+ * Passed/Failed
+ */
+ char *status;
+ /*
+ * Error number/bit when the status is Failed
+ */
+ protobuf_c_boolean has_statusword;
+ uint32_t statusword;
+};
+#define STUB_MOTOR_ENCODER_RESPONSE__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_motor_encoder_response__descriptor) \
+ , 0, 0, 0, 0, 0, 0, 0, 0, NULL, 0, 0 }
+
+
+/* StubMotorEncoderResponse methods */
+void stub_motor_encoder_response__init
+ (StubMotorEncoderResponse *message);
+size_t stub_motor_encoder_response__get_packed_size
+ (const StubMotorEncoderResponse *message);
+size_t stub_motor_encoder_response__pack
+ (const StubMotorEncoderResponse *message,
+ uint8_t *out);
+size_t stub_motor_encoder_response__pack_to_buffer
+ (const StubMotorEncoderResponse *message,
+ ProtobufCBuffer *buffer);
+StubMotorEncoderResponse *
+ stub_motor_encoder_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_motor_encoder_response__free_unpacked
+ (StubMotorEncoderResponse *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubMotorEncoderResponse_Closure)
+ (const StubMotorEncoderResponse *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_motor_encoder_response__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubMotorEncoderResponse_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorInitRequest.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorInitRequest.pb-c.c
new file mode 100644
index 000000000..0f01b16d4
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorInitRequest.pb-c.c
@@ -0,0 +1,196 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubMotorInitRequest.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubMotorInitRequest.pb-c.h"
+void stub_motor_init_request__init
+ (StubMotorInitRequest *message)
+{
+ static const StubMotorInitRequest init_value = STUB_MOTOR_INIT_REQUEST__INIT;
+ *message = init_value;
+}
+size_t stub_motor_init_request__get_packed_size
+ (const StubMotorInitRequest *message)
+{
+ assert(message->base.descriptor == &stub_motor_init_request__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_motor_init_request__pack
+ (const StubMotorInitRequest *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_motor_init_request__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_motor_init_request__pack_to_buffer
+ (const StubMotorInitRequest *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_motor_init_request__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubMotorInitRequest *
+ stub_motor_init_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubMotorInitRequest *)
+ protobuf_c_message_unpack (&stub_motor_init_request__descriptor,
+ allocator, len, data);
+}
+void stub_motor_init_request__free_unpacked
+ (StubMotorInitRequest *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_motor_init_request__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_motor_init_request__field_descriptors[9] =
+{
+ {
+ "Motor_ID",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubMotorInitRequest, has_motor_id),
+ offsetof(StubMotorInitRequest, motor_id),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Micro_Steps",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubMotorInitRequest, has_micro_steps),
+ offsetof(StubMotorInitRequest, micro_steps),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Set_Micro_Steps",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubMotorInitRequest, has_set_micro_steps),
+ offsetof(StubMotorInitRequest, set_micro_steps),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "ACC",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubMotorInitRequest, has_acc),
+ offsetof(StubMotorInitRequest, acc),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Set_ACC",
+ 5,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubMotorInitRequest, has_set_acc),
+ offsetof(StubMotorInitRequest, set_acc),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "DEC",
+ 6,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubMotorInitRequest, has_dec),
+ offsetof(StubMotorInitRequest, dec),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Set_Dec",
+ 7,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubMotorInitRequest, has_set_dec),
+ offsetof(StubMotorInitRequest, set_dec),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Max_Speed",
+ 8,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubMotorInitRequest, has_max_speed),
+ offsetof(StubMotorInitRequest, max_speed),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Set_Max_Speed",
+ 9,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubMotorInitRequest, has_set_max_speed),
+ offsetof(StubMotorInitRequest, set_max_speed),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_motor_init_request__field_indices_by_name[] = {
+ 3, /* field[3] = ACC */
+ 5, /* field[5] = DEC */
+ 7, /* field[7] = Max_Speed */
+ 1, /* field[1] = Micro_Steps */
+ 0, /* field[0] = Motor_ID */
+ 4, /* field[4] = Set_ACC */
+ 6, /* field[6] = Set_Dec */
+ 8, /* field[8] = Set_Max_Speed */
+ 2, /* field[2] = Set_Micro_Steps */
+};
+static const ProtobufCIntRange stub_motor_init_request__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 9 }
+};
+const ProtobufCMessageDescriptor stub_motor_init_request__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubMotorInitRequest",
+ "StubMotorInitRequest",
+ "StubMotorInitRequest",
+ "",
+ sizeof(StubMotorInitRequest),
+ 9,
+ stub_motor_init_request__field_descriptors,
+ stub_motor_init_request__field_indices_by_name,
+ 1, stub_motor_init_request__number_ranges,
+ (ProtobufCMessageInit) stub_motor_init_request__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorInitRequest.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorInitRequest.pb-c.h
new file mode 100644
index 000000000..29b1f6036
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorInitRequest.pb-c.h
@@ -0,0 +1,91 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubMotorInitRequest.proto */
+
+#ifndef PROTOBUF_C_StubMotorInitRequest_2eproto__INCLUDED
+#define PROTOBUF_C_StubMotorInitRequest_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubMotorInitRequest StubMotorInitRequest;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubMotorInitRequest
+{
+ ProtobufCMessage base;
+ protobuf_c_boolean has_motor_id;
+ uint32_t motor_id;
+ /*
+ * 1/2/4/8/16/32/64/128
+ */
+ protobuf_c_boolean has_micro_steps;
+ uint32_t micro_steps;
+ protobuf_c_boolean has_set_micro_steps;
+ protobuf_c_boolean set_micro_steps;
+ protobuf_c_boolean has_acc;
+ uint32_t acc;
+ protobuf_c_boolean has_set_acc;
+ protobuf_c_boolean set_acc;
+ protobuf_c_boolean has_dec;
+ uint32_t dec;
+ protobuf_c_boolean has_set_dec;
+ protobuf_c_boolean set_dec;
+ protobuf_c_boolean has_max_speed;
+ uint32_t max_speed;
+ protobuf_c_boolean has_set_max_speed;
+ protobuf_c_boolean set_max_speed;
+};
+#define STUB_MOTOR_INIT_REQUEST__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_motor_init_request__descriptor) \
+ , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+
+
+/* StubMotorInitRequest methods */
+void stub_motor_init_request__init
+ (StubMotorInitRequest *message);
+size_t stub_motor_init_request__get_packed_size
+ (const StubMotorInitRequest *message);
+size_t stub_motor_init_request__pack
+ (const StubMotorInitRequest *message,
+ uint8_t *out);
+size_t stub_motor_init_request__pack_to_buffer
+ (const StubMotorInitRequest *message,
+ ProtobufCBuffer *buffer);
+StubMotorInitRequest *
+ stub_motor_init_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_motor_init_request__free_unpacked
+ (StubMotorInitRequest *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubMotorInitRequest_Closure)
+ (const StubMotorInitRequest *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_motor_init_request__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubMotorInitRequest_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorInitResponse.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorInitResponse.pb-c.c
new file mode 100644
index 000000000..17c436fa3
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorInitResponse.pb-c.c
@@ -0,0 +1,105 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubMotorInitResponse.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubMotorInitResponse.pb-c.h"
+void stub_motor_init_response__init
+ (StubMotorInitResponse *message)
+{
+ static const StubMotorInitResponse init_value = STUB_MOTOR_INIT_RESPONSE__INIT;
+ *message = init_value;
+}
+size_t stub_motor_init_response__get_packed_size
+ (const StubMotorInitResponse *message)
+{
+ assert(message->base.descriptor == &stub_motor_init_response__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_motor_init_response__pack
+ (const StubMotorInitResponse *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_motor_init_response__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_motor_init_response__pack_to_buffer
+ (const StubMotorInitResponse *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_motor_init_response__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubMotorInitResponse *
+ stub_motor_init_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubMotorInitResponse *)
+ protobuf_c_message_unpack (&stub_motor_init_response__descriptor,
+ allocator, len, data);
+}
+void stub_motor_init_response__free_unpacked
+ (StubMotorInitResponse *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_motor_init_response__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_motor_init_response__field_descriptors[2] =
+{
+ {
+ "Motor_ID",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubMotorInitResponse, has_motor_id),
+ offsetof(StubMotorInitResponse, motor_id),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Status",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubMotorInitResponse, has_status),
+ offsetof(StubMotorInitResponse, status),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_motor_init_response__field_indices_by_name[] = {
+ 0, /* field[0] = Motor_ID */
+ 1, /* field[1] = Status */
+};
+static const ProtobufCIntRange stub_motor_init_response__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 2 }
+};
+const ProtobufCMessageDescriptor stub_motor_init_response__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubMotorInitResponse",
+ "StubMotorInitResponse",
+ "StubMotorInitResponse",
+ "",
+ sizeof(StubMotorInitResponse),
+ 2,
+ stub_motor_init_response__field_descriptors,
+ stub_motor_init_response__field_indices_by_name,
+ 1, stub_motor_init_response__number_ranges,
+ (ProtobufCMessageInit) stub_motor_init_response__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorInitResponse.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorInitResponse.pb-c.h
new file mode 100644
index 000000000..c4f825818
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorInitResponse.pb-c.h
@@ -0,0 +1,74 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubMotorInitResponse.proto */
+
+#ifndef PROTOBUF_C_StubMotorInitResponse_2eproto__INCLUDED
+#define PROTOBUF_C_StubMotorInitResponse_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubMotorInitResponse StubMotorInitResponse;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubMotorInitResponse
+{
+ ProtobufCMessage base;
+ protobuf_c_boolean has_motor_id;
+ uint32_t motor_id;
+ protobuf_c_boolean has_status;
+ uint32_t status;
+};
+#define STUB_MOTOR_INIT_RESPONSE__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_motor_init_response__descriptor) \
+ , 0, 0, 0, 0 }
+
+
+/* StubMotorInitResponse methods */
+void stub_motor_init_response__init
+ (StubMotorInitResponse *message);
+size_t stub_motor_init_response__get_packed_size
+ (const StubMotorInitResponse *message);
+size_t stub_motor_init_response__pack
+ (const StubMotorInitResponse *message,
+ uint8_t *out);
+size_t stub_motor_init_response__pack_to_buffer
+ (const StubMotorInitResponse *message,
+ ProtobufCBuffer *buffer);
+StubMotorInitResponse *
+ stub_motor_init_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_motor_init_response__free_unpacked
+ (StubMotorInitResponse *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubMotorInitResponse_Closure)
+ (const StubMotorInitResponse *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_motor_init_response__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubMotorInitResponse_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorMovRequest.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorMovRequest.pb-c.c
new file mode 100644
index 000000000..ed5152830
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorMovRequest.pb-c.c
@@ -0,0 +1,118 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubMotorMovRequest.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubMotorMovRequest.pb-c.h"
+void stub_motor_mov_request__init
+ (StubMotorMovRequest *message)
+{
+ static const StubMotorMovRequest init_value = STUB_MOTOR_MOV_REQUEST__INIT;
+ *message = init_value;
+}
+size_t stub_motor_mov_request__get_packed_size
+ (const StubMotorMovRequest *message)
+{
+ assert(message->base.descriptor == &stub_motor_mov_request__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_motor_mov_request__pack
+ (const StubMotorMovRequest *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_motor_mov_request__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_motor_mov_request__pack_to_buffer
+ (const StubMotorMovRequest *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_motor_mov_request__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubMotorMovRequest *
+ stub_motor_mov_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubMotorMovRequest *)
+ protobuf_c_message_unpack (&stub_motor_mov_request__descriptor,
+ allocator, len, data);
+}
+void stub_motor_mov_request__free_unpacked
+ (StubMotorMovRequest *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_motor_mov_request__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_motor_mov_request__field_descriptors[3] =
+{
+ {
+ "Motor_ID",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubMotorMovRequest, has_motor_id),
+ offsetof(StubMotorMovRequest, motor_id),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Direction",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubMotorMovRequest, has_direction),
+ offsetof(StubMotorMovRequest, direction),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Position",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubMotorMovRequest, has_position),
+ offsetof(StubMotorMovRequest, position),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_motor_mov_request__field_indices_by_name[] = {
+ 1, /* field[1] = Direction */
+ 0, /* field[0] = Motor_ID */
+ 2, /* field[2] = Position */
+};
+static const ProtobufCIntRange stub_motor_mov_request__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 3 }
+};
+const ProtobufCMessageDescriptor stub_motor_mov_request__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubMotorMovRequest",
+ "StubMotorMovRequest",
+ "StubMotorMovRequest",
+ "",
+ sizeof(StubMotorMovRequest),
+ 3,
+ stub_motor_mov_request__field_descriptors,
+ stub_motor_mov_request__field_indices_by_name,
+ 1, stub_motor_mov_request__number_ranges,
+ (ProtobufCMessageInit) stub_motor_mov_request__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorMovRequest.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorMovRequest.pb-c.h
new file mode 100644
index 000000000..8957b336a
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorMovRequest.pb-c.h
@@ -0,0 +1,76 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubMotorMovRequest.proto */
+
+#ifndef PROTOBUF_C_StubMotorMovRequest_2eproto__INCLUDED
+#define PROTOBUF_C_StubMotorMovRequest_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubMotorMovRequest StubMotorMovRequest;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubMotorMovRequest
+{
+ ProtobufCMessage base;
+ protobuf_c_boolean has_motor_id;
+ uint32_t motor_id;
+ protobuf_c_boolean has_direction;
+ protobuf_c_boolean direction;
+ protobuf_c_boolean has_position;
+ uint32_t position;
+};
+#define STUB_MOTOR_MOV_REQUEST__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_motor_mov_request__descriptor) \
+ , 0, 0, 0, 0, 0, 0 }
+
+
+/* StubMotorMovRequest methods */
+void stub_motor_mov_request__init
+ (StubMotorMovRequest *message);
+size_t stub_motor_mov_request__get_packed_size
+ (const StubMotorMovRequest *message);
+size_t stub_motor_mov_request__pack
+ (const StubMotorMovRequest *message,
+ uint8_t *out);
+size_t stub_motor_mov_request__pack_to_buffer
+ (const StubMotorMovRequest *message,
+ ProtobufCBuffer *buffer);
+StubMotorMovRequest *
+ stub_motor_mov_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_motor_mov_request__free_unpacked
+ (StubMotorMovRequest *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubMotorMovRequest_Closure)
+ (const StubMotorMovRequest *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_motor_mov_request__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubMotorMovRequest_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorMovResponse.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorMovResponse.pb-c.c
new file mode 100644
index 000000000..e0da6c0b3
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorMovResponse.pb-c.c
@@ -0,0 +1,170 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubMotorMovResponse.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubMotorMovResponse.pb-c.h"
+void stub_motor_mov_response__init
+ (StubMotorMovResponse *message)
+{
+ static const StubMotorMovResponse init_value = STUB_MOTOR_MOV_RESPONSE__INIT;
+ *message = init_value;
+}
+size_t stub_motor_mov_response__get_packed_size
+ (const StubMotorMovResponse *message)
+{
+ assert(message->base.descriptor == &stub_motor_mov_response__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_motor_mov_response__pack
+ (const StubMotorMovResponse *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_motor_mov_response__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_motor_mov_response__pack_to_buffer
+ (const StubMotorMovResponse *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_motor_mov_response__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubMotorMovResponse *
+ stub_motor_mov_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubMotorMovResponse *)
+ protobuf_c_message_unpack (&stub_motor_mov_response__descriptor,
+ allocator, len, data);
+}
+void stub_motor_mov_response__free_unpacked
+ (StubMotorMovResponse *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_motor_mov_response__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_motor_mov_response__field_descriptors[7] =
+{
+ {
+ "Motor_ID",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubMotorMovResponse, has_motor_id),
+ offsetof(StubMotorMovResponse, motor_id),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Position",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubMotorMovResponse, has_position),
+ offsetof(StubMotorMovResponse, position),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Status_Reg",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubMotorMovResponse, has_status_reg),
+ offsetof(StubMotorMovResponse, status_reg),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Direction",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubMotorMovResponse, has_direction),
+ offsetof(StubMotorMovResponse, direction),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Mot_Status",
+ 5,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubMotorMovResponse, has_mot_status),
+ offsetof(StubMotorMovResponse, mot_status),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "STEP_LOSS_A",
+ 6,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubMotorMovResponse, has_step_loss_a),
+ offsetof(StubMotorMovResponse, step_loss_a),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "STEP_LOSS_B",
+ 7,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubMotorMovResponse, has_step_loss_b),
+ offsetof(StubMotorMovResponse, step_loss_b),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_motor_mov_response__field_indices_by_name[] = {
+ 3, /* field[3] = Direction */
+ 4, /* field[4] = Mot_Status */
+ 0, /* field[0] = Motor_ID */
+ 1, /* field[1] = Position */
+ 5, /* field[5] = STEP_LOSS_A */
+ 6, /* field[6] = STEP_LOSS_B */
+ 2, /* field[2] = Status_Reg */
+};
+static const ProtobufCIntRange stub_motor_mov_response__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 7 }
+};
+const ProtobufCMessageDescriptor stub_motor_mov_response__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubMotorMovResponse",
+ "StubMotorMovResponse",
+ "StubMotorMovResponse",
+ "",
+ sizeof(StubMotorMovResponse),
+ 7,
+ stub_motor_mov_response__field_descriptors,
+ stub_motor_mov_response__field_indices_by_name,
+ 1, stub_motor_mov_response__number_ranges,
+ (ProtobufCMessageInit) stub_motor_mov_response__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorMovResponse.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorMovResponse.pb-c.h
new file mode 100644
index 000000000..cd80996ed
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorMovResponse.pb-c.h
@@ -0,0 +1,90 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubMotorMovResponse.proto */
+
+#ifndef PROTOBUF_C_StubMotorMovResponse_2eproto__INCLUDED
+#define PROTOBUF_C_StubMotorMovResponse_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubMotorMovResponse StubMotorMovResponse;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubMotorMovResponse
+{
+ ProtobufCMessage base;
+ protobuf_c_boolean has_motor_id;
+ uint32_t motor_id;
+ protobuf_c_boolean has_position;
+ uint32_t position;
+ protobuf_c_boolean has_status_reg;
+ uint32_t status_reg;
+ /*
+ * Reverse / Forward
+ */
+ protobuf_c_boolean has_direction;
+ protobuf_c_boolean direction;
+ /*
+ *Stopped / Acceleration / Deceleration / Constant speed
+ */
+ protobuf_c_boolean has_mot_status;
+ uint32_t mot_status;
+ protobuf_c_boolean has_step_loss_a;
+ protobuf_c_boolean step_loss_a;
+ protobuf_c_boolean has_step_loss_b;
+ protobuf_c_boolean step_loss_b;
+};
+#define STUB_MOTOR_MOV_RESPONSE__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_motor_mov_response__descriptor) \
+ , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+
+
+/* StubMotorMovResponse methods */
+void stub_motor_mov_response__init
+ (StubMotorMovResponse *message);
+size_t stub_motor_mov_response__get_packed_size
+ (const StubMotorMovResponse *message);
+size_t stub_motor_mov_response__pack
+ (const StubMotorMovResponse *message,
+ uint8_t *out);
+size_t stub_motor_mov_response__pack_to_buffer
+ (const StubMotorMovResponse *message,
+ ProtobufCBuffer *buffer);
+StubMotorMovResponse *
+ stub_motor_mov_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_motor_mov_response__free_unpacked
+ (StubMotorMovResponse *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubMotorMovResponse_Closure)
+ (const StubMotorMovResponse *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_motor_mov_response__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubMotorMovResponse_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorPositionRequest.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorPositionRequest.pb-c.c
new file mode 100644
index 000000000..08f43e778
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorPositionRequest.pb-c.c
@@ -0,0 +1,92 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubMotorPositionRequest.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubMotorPositionRequest.pb-c.h"
+void stub_motor_position_request__init
+ (StubMotorPositionRequest *message)
+{
+ static const StubMotorPositionRequest init_value = STUB_MOTOR_POSITION_REQUEST__INIT;
+ *message = init_value;
+}
+size_t stub_motor_position_request__get_packed_size
+ (const StubMotorPositionRequest *message)
+{
+ assert(message->base.descriptor == &stub_motor_position_request__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_motor_position_request__pack
+ (const StubMotorPositionRequest *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_motor_position_request__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_motor_position_request__pack_to_buffer
+ (const StubMotorPositionRequest *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_motor_position_request__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubMotorPositionRequest *
+ stub_motor_position_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubMotorPositionRequest *)
+ protobuf_c_message_unpack (&stub_motor_position_request__descriptor,
+ allocator, len, data);
+}
+void stub_motor_position_request__free_unpacked
+ (StubMotorPositionRequest *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_motor_position_request__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_motor_position_request__field_descriptors[1] =
+{
+ {
+ "Motor_ID",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubMotorPositionRequest, has_motor_id),
+ offsetof(StubMotorPositionRequest, motor_id),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_motor_position_request__field_indices_by_name[] = {
+ 0, /* field[0] = Motor_ID */
+};
+static const ProtobufCIntRange stub_motor_position_request__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 1 }
+};
+const ProtobufCMessageDescriptor stub_motor_position_request__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubMotorPositionRequest",
+ "StubMotorPositionRequest",
+ "StubMotorPositionRequest",
+ "",
+ sizeof(StubMotorPositionRequest),
+ 1,
+ stub_motor_position_request__field_descriptors,
+ stub_motor_position_request__field_indices_by_name,
+ 1, stub_motor_position_request__number_ranges,
+ (ProtobufCMessageInit) stub_motor_position_request__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorPositionRequest.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorPositionRequest.pb-c.h
new file mode 100644
index 000000000..439a0f31d
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorPositionRequest.pb-c.h
@@ -0,0 +1,72 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubMotorPositionRequest.proto */
+
+#ifndef PROTOBUF_C_StubMotorPositionRequest_2eproto__INCLUDED
+#define PROTOBUF_C_StubMotorPositionRequest_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubMotorPositionRequest StubMotorPositionRequest;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubMotorPositionRequest
+{
+ ProtobufCMessage base;
+ protobuf_c_boolean has_motor_id;
+ uint32_t motor_id;
+};
+#define STUB_MOTOR_POSITION_REQUEST__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_motor_position_request__descriptor) \
+ , 0, 0 }
+
+
+/* StubMotorPositionRequest methods */
+void stub_motor_position_request__init
+ (StubMotorPositionRequest *message);
+size_t stub_motor_position_request__get_packed_size
+ (const StubMotorPositionRequest *message);
+size_t stub_motor_position_request__pack
+ (const StubMotorPositionRequest *message,
+ uint8_t *out);
+size_t stub_motor_position_request__pack_to_buffer
+ (const StubMotorPositionRequest *message,
+ ProtobufCBuffer *buffer);
+StubMotorPositionRequest *
+ stub_motor_position_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_motor_position_request__free_unpacked
+ (StubMotorPositionRequest *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubMotorPositionRequest_Closure)
+ (const StubMotorPositionRequest *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_motor_position_request__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubMotorPositionRequest_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorPositionResponse.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorPositionResponse.pb-c.c
new file mode 100644
index 000000000..4354eb2da
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorPositionResponse.pb-c.c
@@ -0,0 +1,105 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubMotorPositionResponse.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubMotorPositionResponse.pb-c.h"
+void stub_motor_position_response__init
+ (StubMotorPositionResponse *message)
+{
+ static const StubMotorPositionResponse init_value = STUB_MOTOR_POSITION_RESPONSE__INIT;
+ *message = init_value;
+}
+size_t stub_motor_position_response__get_packed_size
+ (const StubMotorPositionResponse *message)
+{
+ assert(message->base.descriptor == &stub_motor_position_response__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_motor_position_response__pack
+ (const StubMotorPositionResponse *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_motor_position_response__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_motor_position_response__pack_to_buffer
+ (const StubMotorPositionResponse *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_motor_position_response__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubMotorPositionResponse *
+ stub_motor_position_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubMotorPositionResponse *)
+ protobuf_c_message_unpack (&stub_motor_position_response__descriptor,
+ allocator, len, data);
+}
+void stub_motor_position_response__free_unpacked
+ (StubMotorPositionResponse *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_motor_position_response__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_motor_position_response__field_descriptors[2] =
+{
+ {
+ "Motor_ID",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubMotorPositionResponse, has_motor_id),
+ offsetof(StubMotorPositionResponse, motor_id),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Position",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubMotorPositionResponse, has_position),
+ offsetof(StubMotorPositionResponse, position),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_motor_position_response__field_indices_by_name[] = {
+ 0, /* field[0] = Motor_ID */
+ 1, /* field[1] = Position */
+};
+static const ProtobufCIntRange stub_motor_position_response__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 2 }
+};
+const ProtobufCMessageDescriptor stub_motor_position_response__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubMotorPositionResponse",
+ "StubMotorPositionResponse",
+ "StubMotorPositionResponse",
+ "",
+ sizeof(StubMotorPositionResponse),
+ 2,
+ stub_motor_position_response__field_descriptors,
+ stub_motor_position_response__field_indices_by_name,
+ 1, stub_motor_position_response__number_ranges,
+ (ProtobufCMessageInit) stub_motor_position_response__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorPositionResponse.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorPositionResponse.pb-c.h
new file mode 100644
index 000000000..13c7c3c95
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorPositionResponse.pb-c.h
@@ -0,0 +1,74 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubMotorPositionResponse.proto */
+
+#ifndef PROTOBUF_C_StubMotorPositionResponse_2eproto__INCLUDED
+#define PROTOBUF_C_StubMotorPositionResponse_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubMotorPositionResponse StubMotorPositionResponse;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubMotorPositionResponse
+{
+ ProtobufCMessage base;
+ protobuf_c_boolean has_motor_id;
+ uint32_t motor_id;
+ protobuf_c_boolean has_position;
+ uint32_t position;
+};
+#define STUB_MOTOR_POSITION_RESPONSE__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_motor_position_response__descriptor) \
+ , 0, 0, 0, 0 }
+
+
+/* StubMotorPositionResponse methods */
+void stub_motor_position_response__init
+ (StubMotorPositionResponse *message);
+size_t stub_motor_position_response__get_packed_size
+ (const StubMotorPositionResponse *message);
+size_t stub_motor_position_response__pack
+ (const StubMotorPositionResponse *message,
+ uint8_t *out);
+size_t stub_motor_position_response__pack_to_buffer
+ (const StubMotorPositionResponse *message,
+ ProtobufCBuffer *buffer);
+StubMotorPositionResponse *
+ stub_motor_position_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_motor_position_response__free_unpacked
+ (StubMotorPositionResponse *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubMotorPositionResponse_Closure)
+ (const StubMotorPositionResponse *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_motor_position_response__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubMotorPositionResponse_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorRunRequest.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorRunRequest.pb-c.c
new file mode 100644
index 000000000..30cf9ccf2
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorRunRequest.pb-c.c
@@ -0,0 +1,118 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubMotorRunRequest.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubMotorRunRequest.pb-c.h"
+void stub_motor_run_request__init
+ (StubMotorRunRequest *message)
+{
+ static const StubMotorRunRequest init_value = STUB_MOTOR_RUN_REQUEST__INIT;
+ *message = init_value;
+}
+size_t stub_motor_run_request__get_packed_size
+ (const StubMotorRunRequest *message)
+{
+ assert(message->base.descriptor == &stub_motor_run_request__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_motor_run_request__pack
+ (const StubMotorRunRequest *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_motor_run_request__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_motor_run_request__pack_to_buffer
+ (const StubMotorRunRequest *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_motor_run_request__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubMotorRunRequest *
+ stub_motor_run_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubMotorRunRequest *)
+ protobuf_c_message_unpack (&stub_motor_run_request__descriptor,
+ allocator, len, data);
+}
+void stub_motor_run_request__free_unpacked
+ (StubMotorRunRequest *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_motor_run_request__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_motor_run_request__field_descriptors[3] =
+{
+ {
+ "Motor_ID",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubMotorRunRequest, has_motor_id),
+ offsetof(StubMotorRunRequest, motor_id),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Direction",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubMotorRunRequest, has_direction),
+ offsetof(StubMotorRunRequest, direction),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Speed",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(StubMotorRunRequest, has_speed),
+ offsetof(StubMotorRunRequest, speed),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_motor_run_request__field_indices_by_name[] = {
+ 1, /* field[1] = Direction */
+ 0, /* field[0] = Motor_ID */
+ 2, /* field[2] = Speed */
+};
+static const ProtobufCIntRange stub_motor_run_request__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 3 }
+};
+const ProtobufCMessageDescriptor stub_motor_run_request__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubMotorRunRequest",
+ "StubMotorRunRequest",
+ "StubMotorRunRequest",
+ "",
+ sizeof(StubMotorRunRequest),
+ 3,
+ stub_motor_run_request__field_descriptors,
+ stub_motor_run_request__field_indices_by_name,
+ 1, stub_motor_run_request__number_ranges,
+ (ProtobufCMessageInit) stub_motor_run_request__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorRunRequest.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorRunRequest.pb-c.h
new file mode 100644
index 000000000..5c4ce2efd
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorRunRequest.pb-c.h
@@ -0,0 +1,76 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubMotorRunRequest.proto */
+
+#ifndef PROTOBUF_C_StubMotorRunRequest_2eproto__INCLUDED
+#define PROTOBUF_C_StubMotorRunRequest_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubMotorRunRequest StubMotorRunRequest;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubMotorRunRequest
+{
+ ProtobufCMessage base;
+ protobuf_c_boolean has_motor_id;
+ uint32_t motor_id;
+ protobuf_c_boolean has_direction;
+ protobuf_c_boolean direction;
+ protobuf_c_boolean has_speed;
+ double speed;
+};
+#define STUB_MOTOR_RUN_REQUEST__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_motor_run_request__descriptor) \
+ , 0, 0, 0, 0, 0, 0 }
+
+
+/* StubMotorRunRequest methods */
+void stub_motor_run_request__init
+ (StubMotorRunRequest *message);
+size_t stub_motor_run_request__get_packed_size
+ (const StubMotorRunRequest *message);
+size_t stub_motor_run_request__pack
+ (const StubMotorRunRequest *message,
+ uint8_t *out);
+size_t stub_motor_run_request__pack_to_buffer
+ (const StubMotorRunRequest *message,
+ ProtobufCBuffer *buffer);
+StubMotorRunRequest *
+ stub_motor_run_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_motor_run_request__free_unpacked
+ (StubMotorRunRequest *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubMotorRunRequest_Closure)
+ (const StubMotorRunRequest *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_motor_run_request__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubMotorRunRequest_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorRunResponse.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorRunResponse.pb-c.c
new file mode 100644
index 000000000..4d437ab7e
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorRunResponse.pb-c.c
@@ -0,0 +1,183 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubMotorRunResponse.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubMotorRunResponse.pb-c.h"
+void stub_motor_run_response__init
+ (StubMotorRunResponse *message)
+{
+ static const StubMotorRunResponse init_value = STUB_MOTOR_RUN_RESPONSE__INIT;
+ *message = init_value;
+}
+size_t stub_motor_run_response__get_packed_size
+ (const StubMotorRunResponse *message)
+{
+ assert(message->base.descriptor == &stub_motor_run_response__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_motor_run_response__pack
+ (const StubMotorRunResponse *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_motor_run_response__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_motor_run_response__pack_to_buffer
+ (const StubMotorRunResponse *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_motor_run_response__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubMotorRunResponse *
+ stub_motor_run_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubMotorRunResponse *)
+ protobuf_c_message_unpack (&stub_motor_run_response__descriptor,
+ allocator, len, data);
+}
+void stub_motor_run_response__free_unpacked
+ (StubMotorRunResponse *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_motor_run_response__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_motor_run_response__field_descriptors[8] =
+{
+ {
+ "Motor_ID",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubMotorRunResponse, has_motor_id),
+ offsetof(StubMotorRunResponse, motor_id),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Speed",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(StubMotorRunResponse, has_speed),
+ offsetof(StubMotorRunResponse, speed),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Status_Reg",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubMotorRunResponse, has_status_reg),
+ offsetof(StubMotorRunResponse, status_reg),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Direction",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubMotorRunResponse, has_direction),
+ offsetof(StubMotorRunResponse, direction),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Mot_Status",
+ 5,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubMotorRunResponse, has_mot_status),
+ offsetof(StubMotorRunResponse, mot_status),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "STEP_LOSS_A",
+ 6,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubMotorRunResponse, has_step_loss_a),
+ offsetof(StubMotorRunResponse, step_loss_a),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "STEP_LOSS_B",
+ 7,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubMotorRunResponse, has_step_loss_b),
+ offsetof(StubMotorRunResponse, step_loss_b),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "BUSY",
+ 8,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubMotorRunResponse, has_busy),
+ offsetof(StubMotorRunResponse, busy),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_motor_run_response__field_indices_by_name[] = {
+ 7, /* field[7] = BUSY */
+ 3, /* field[3] = Direction */
+ 4, /* field[4] = Mot_Status */
+ 0, /* field[0] = Motor_ID */
+ 5, /* field[5] = STEP_LOSS_A */
+ 6, /* field[6] = STEP_LOSS_B */
+ 1, /* field[1] = Speed */
+ 2, /* field[2] = Status_Reg */
+};
+static const ProtobufCIntRange stub_motor_run_response__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 8 }
+};
+const ProtobufCMessageDescriptor stub_motor_run_response__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubMotorRunResponse",
+ "StubMotorRunResponse",
+ "StubMotorRunResponse",
+ "",
+ sizeof(StubMotorRunResponse),
+ 8,
+ stub_motor_run_response__field_descriptors,
+ stub_motor_run_response__field_indices_by_name,
+ 1, stub_motor_run_response__number_ranges,
+ (ProtobufCMessageInit) stub_motor_run_response__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorRunResponse.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorRunResponse.pb-c.h
new file mode 100644
index 000000000..9c80cd28d
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorRunResponse.pb-c.h
@@ -0,0 +1,92 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubMotorRunResponse.proto */
+
+#ifndef PROTOBUF_C_StubMotorRunResponse_2eproto__INCLUDED
+#define PROTOBUF_C_StubMotorRunResponse_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubMotorRunResponse StubMotorRunResponse;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubMotorRunResponse
+{
+ ProtobufCMessage base;
+ protobuf_c_boolean has_motor_id;
+ uint32_t motor_id;
+ protobuf_c_boolean has_speed;
+ double speed;
+ protobuf_c_boolean has_status_reg;
+ uint32_t status_reg;
+ /*
+ * Reverse / Forward
+ */
+ protobuf_c_boolean has_direction;
+ protobuf_c_boolean direction;
+ /*
+ *Stopped / Acceleration / Deceleration / Constant speed
+ */
+ protobuf_c_boolean has_mot_status;
+ uint32_t mot_status;
+ protobuf_c_boolean has_step_loss_a;
+ protobuf_c_boolean step_loss_a;
+ protobuf_c_boolean has_step_loss_b;
+ protobuf_c_boolean step_loss_b;
+ protobuf_c_boolean has_busy;
+ protobuf_c_boolean busy;
+};
+#define STUB_MOTOR_RUN_RESPONSE__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_motor_run_response__descriptor) \
+ , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+
+
+/* StubMotorRunResponse methods */
+void stub_motor_run_response__init
+ (StubMotorRunResponse *message);
+size_t stub_motor_run_response__get_packed_size
+ (const StubMotorRunResponse *message);
+size_t stub_motor_run_response__pack
+ (const StubMotorRunResponse *message,
+ uint8_t *out);
+size_t stub_motor_run_response__pack_to_buffer
+ (const StubMotorRunResponse *message,
+ ProtobufCBuffer *buffer);
+StubMotorRunResponse *
+ stub_motor_run_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_motor_run_response__free_unpacked
+ (StubMotorRunResponse *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubMotorRunResponse_Closure)
+ (const StubMotorRunResponse *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_motor_run_response__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubMotorRunResponse_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorSpeedRequest.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorSpeedRequest.pb-c.c
new file mode 100644
index 000000000..c8acbfdfd
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorSpeedRequest.pb-c.c
@@ -0,0 +1,92 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubMotorSpeedRequest.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubMotorSpeedRequest.pb-c.h"
+void stub_motor_speed_request__init
+ (StubMotorSpeedRequest *message)
+{
+ static const StubMotorSpeedRequest init_value = STUB_MOTOR_SPEED_REQUEST__INIT;
+ *message = init_value;
+}
+size_t stub_motor_speed_request__get_packed_size
+ (const StubMotorSpeedRequest *message)
+{
+ assert(message->base.descriptor == &stub_motor_speed_request__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_motor_speed_request__pack
+ (const StubMotorSpeedRequest *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_motor_speed_request__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_motor_speed_request__pack_to_buffer
+ (const StubMotorSpeedRequest *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_motor_speed_request__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubMotorSpeedRequest *
+ stub_motor_speed_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubMotorSpeedRequest *)
+ protobuf_c_message_unpack (&stub_motor_speed_request__descriptor,
+ allocator, len, data);
+}
+void stub_motor_speed_request__free_unpacked
+ (StubMotorSpeedRequest *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_motor_speed_request__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_motor_speed_request__field_descriptors[1] =
+{
+ {
+ "Motor_ID",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubMotorSpeedRequest, has_motor_id),
+ offsetof(StubMotorSpeedRequest, motor_id),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_motor_speed_request__field_indices_by_name[] = {
+ 0, /* field[0] = Motor_ID */
+};
+static const ProtobufCIntRange stub_motor_speed_request__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 1 }
+};
+const ProtobufCMessageDescriptor stub_motor_speed_request__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubMotorSpeedRequest",
+ "StubMotorSpeedRequest",
+ "StubMotorSpeedRequest",
+ "",
+ sizeof(StubMotorSpeedRequest),
+ 1,
+ stub_motor_speed_request__field_descriptors,
+ stub_motor_speed_request__field_indices_by_name,
+ 1, stub_motor_speed_request__number_ranges,
+ (ProtobufCMessageInit) stub_motor_speed_request__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorSpeedRequest.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorSpeedRequest.pb-c.h
new file mode 100644
index 000000000..537ca4da6
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorSpeedRequest.pb-c.h
@@ -0,0 +1,72 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubMotorSpeedRequest.proto */
+
+#ifndef PROTOBUF_C_StubMotorSpeedRequest_2eproto__INCLUDED
+#define PROTOBUF_C_StubMotorSpeedRequest_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubMotorSpeedRequest StubMotorSpeedRequest;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubMotorSpeedRequest
+{
+ ProtobufCMessage base;
+ protobuf_c_boolean has_motor_id;
+ uint32_t motor_id;
+};
+#define STUB_MOTOR_SPEED_REQUEST__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_motor_speed_request__descriptor) \
+ , 0, 0 }
+
+
+/* StubMotorSpeedRequest methods */
+void stub_motor_speed_request__init
+ (StubMotorSpeedRequest *message);
+size_t stub_motor_speed_request__get_packed_size
+ (const StubMotorSpeedRequest *message);
+size_t stub_motor_speed_request__pack
+ (const StubMotorSpeedRequest *message,
+ uint8_t *out);
+size_t stub_motor_speed_request__pack_to_buffer
+ (const StubMotorSpeedRequest *message,
+ ProtobufCBuffer *buffer);
+StubMotorSpeedRequest *
+ stub_motor_speed_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_motor_speed_request__free_unpacked
+ (StubMotorSpeedRequest *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubMotorSpeedRequest_Closure)
+ (const StubMotorSpeedRequest *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_motor_speed_request__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubMotorSpeedRequest_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorSpeedResponse.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorSpeedResponse.pb-c.c
new file mode 100644
index 000000000..34d826880
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorSpeedResponse.pb-c.c
@@ -0,0 +1,105 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubMotorSpeedResponse.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubMotorSpeedResponse.pb-c.h"
+void stub_motor_speed_response__init
+ (StubMotorSpeedResponse *message)
+{
+ static const StubMotorSpeedResponse init_value = STUB_MOTOR_SPEED_RESPONSE__INIT;
+ *message = init_value;
+}
+size_t stub_motor_speed_response__get_packed_size
+ (const StubMotorSpeedResponse *message)
+{
+ assert(message->base.descriptor == &stub_motor_speed_response__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_motor_speed_response__pack
+ (const StubMotorSpeedResponse *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_motor_speed_response__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_motor_speed_response__pack_to_buffer
+ (const StubMotorSpeedResponse *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_motor_speed_response__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubMotorSpeedResponse *
+ stub_motor_speed_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubMotorSpeedResponse *)
+ protobuf_c_message_unpack (&stub_motor_speed_response__descriptor,
+ allocator, len, data);
+}
+void stub_motor_speed_response__free_unpacked
+ (StubMotorSpeedResponse *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_motor_speed_response__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_motor_speed_response__field_descriptors[2] =
+{
+ {
+ "Motor_ID",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubMotorSpeedResponse, has_motor_id),
+ offsetof(StubMotorSpeedResponse, motor_id),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Speed",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_DOUBLE,
+ offsetof(StubMotorSpeedResponse, has_speed),
+ offsetof(StubMotorSpeedResponse, speed),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_motor_speed_response__field_indices_by_name[] = {
+ 0, /* field[0] = Motor_ID */
+ 1, /* field[1] = Speed */
+};
+static const ProtobufCIntRange stub_motor_speed_response__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 2 }
+};
+const ProtobufCMessageDescriptor stub_motor_speed_response__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubMotorSpeedResponse",
+ "StubMotorSpeedResponse",
+ "StubMotorSpeedResponse",
+ "",
+ sizeof(StubMotorSpeedResponse),
+ 2,
+ stub_motor_speed_response__field_descriptors,
+ stub_motor_speed_response__field_indices_by_name,
+ 1, stub_motor_speed_response__number_ranges,
+ (ProtobufCMessageInit) stub_motor_speed_response__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorSpeedResponse.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorSpeedResponse.pb-c.h
new file mode 100644
index 000000000..d113e02d9
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorSpeedResponse.pb-c.h
@@ -0,0 +1,74 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubMotorSpeedResponse.proto */
+
+#ifndef PROTOBUF_C_StubMotorSpeedResponse_2eproto__INCLUDED
+#define PROTOBUF_C_StubMotorSpeedResponse_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubMotorSpeedResponse StubMotorSpeedResponse;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubMotorSpeedResponse
+{
+ ProtobufCMessage base;
+ protobuf_c_boolean has_motor_id;
+ uint32_t motor_id;
+ protobuf_c_boolean has_speed;
+ double speed;
+};
+#define STUB_MOTOR_SPEED_RESPONSE__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_motor_speed_response__descriptor) \
+ , 0, 0, 0, 0 }
+
+
+/* StubMotorSpeedResponse methods */
+void stub_motor_speed_response__init
+ (StubMotorSpeedResponse *message);
+size_t stub_motor_speed_response__get_packed_size
+ (const StubMotorSpeedResponse *message);
+size_t stub_motor_speed_response__pack
+ (const StubMotorSpeedResponse *message,
+ uint8_t *out);
+size_t stub_motor_speed_response__pack_to_buffer
+ (const StubMotorSpeedResponse *message,
+ ProtobufCBuffer *buffer);
+StubMotorSpeedResponse *
+ stub_motor_speed_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_motor_speed_response__free_unpacked
+ (StubMotorSpeedResponse *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubMotorSpeedResponse_Closure)
+ (const StubMotorSpeedResponse *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_motor_speed_response__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubMotorSpeedResponse_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorStatusRequest.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorStatusRequest.pb-c.c
new file mode 100644
index 000000000..21ff45bab
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorStatusRequest.pb-c.c
@@ -0,0 +1,105 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubMotorStatusRequest.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubMotorStatusRequest.pb-c.h"
+void stub_motor_status_request__init
+ (StubMotorStatusRequest *message)
+{
+ static const StubMotorStatusRequest init_value = STUB_MOTOR_STATUS_REQUEST__INIT;
+ *message = init_value;
+}
+size_t stub_motor_status_request__get_packed_size
+ (const StubMotorStatusRequest *message)
+{
+ assert(message->base.descriptor == &stub_motor_status_request__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_motor_status_request__pack
+ (const StubMotorStatusRequest *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_motor_status_request__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_motor_status_request__pack_to_buffer
+ (const StubMotorStatusRequest *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_motor_status_request__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubMotorStatusRequest *
+ stub_motor_status_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubMotorStatusRequest *)
+ protobuf_c_message_unpack (&stub_motor_status_request__descriptor,
+ allocator, len, data);
+}
+void stub_motor_status_request__free_unpacked
+ (StubMotorStatusRequest *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_motor_status_request__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_motor_status_request__field_descriptors[2] =
+{
+ {
+ "Motor_ID",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubMotorStatusRequest, has_motor_id),
+ offsetof(StubMotorStatusRequest, motor_id),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "ClearStatus",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubMotorStatusRequest, has_clearstatus),
+ offsetof(StubMotorStatusRequest, clearstatus),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_motor_status_request__field_indices_by_name[] = {
+ 1, /* field[1] = ClearStatus */
+ 0, /* field[0] = Motor_ID */
+};
+static const ProtobufCIntRange stub_motor_status_request__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 2 }
+};
+const ProtobufCMessageDescriptor stub_motor_status_request__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubMotorStatusRequest",
+ "StubMotorStatusRequest",
+ "StubMotorStatusRequest",
+ "",
+ sizeof(StubMotorStatusRequest),
+ 2,
+ stub_motor_status_request__field_descriptors,
+ stub_motor_status_request__field_indices_by_name,
+ 1, stub_motor_status_request__number_ranges,
+ (ProtobufCMessageInit) stub_motor_status_request__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorStatusRequest.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorStatusRequest.pb-c.h
new file mode 100644
index 000000000..84fbd6080
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorStatusRequest.pb-c.h
@@ -0,0 +1,74 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubMotorStatusRequest.proto */
+
+#ifndef PROTOBUF_C_StubMotorStatusRequest_2eproto__INCLUDED
+#define PROTOBUF_C_StubMotorStatusRequest_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubMotorStatusRequest StubMotorStatusRequest;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubMotorStatusRequest
+{
+ ProtobufCMessage base;
+ protobuf_c_boolean has_motor_id;
+ uint32_t motor_id;
+ protobuf_c_boolean has_clearstatus;
+ protobuf_c_boolean clearstatus;
+};
+#define STUB_MOTOR_STATUS_REQUEST__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_motor_status_request__descriptor) \
+ , 0, 0, 0, 0 }
+
+
+/* StubMotorStatusRequest methods */
+void stub_motor_status_request__init
+ (StubMotorStatusRequest *message);
+size_t stub_motor_status_request__get_packed_size
+ (const StubMotorStatusRequest *message);
+size_t stub_motor_status_request__pack
+ (const StubMotorStatusRequest *message,
+ uint8_t *out);
+size_t stub_motor_status_request__pack_to_buffer
+ (const StubMotorStatusRequest *message,
+ ProtobufCBuffer *buffer);
+StubMotorStatusRequest *
+ stub_motor_status_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_motor_status_request__free_unpacked
+ (StubMotorStatusRequest *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubMotorStatusRequest_Closure)
+ (const StubMotorStatusRequest *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_motor_status_request__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubMotorStatusRequest_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorStatusResponse.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorStatusResponse.pb-c.c
new file mode 100644
index 000000000..9236abdea
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorStatusResponse.pb-c.c
@@ -0,0 +1,287 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubMotorStatusResponse.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubMotorStatusResponse.pb-c.h"
+void stub_motor_status_response__init
+ (StubMotorStatusResponse *message)
+{
+ static const StubMotorStatusResponse init_value = STUB_MOTOR_STATUS_RESPONSE__INIT;
+ *message = init_value;
+}
+size_t stub_motor_status_response__get_packed_size
+ (const StubMotorStatusResponse *message)
+{
+ assert(message->base.descriptor == &stub_motor_status_response__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_motor_status_response__pack
+ (const StubMotorStatusResponse *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_motor_status_response__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_motor_status_response__pack_to_buffer
+ (const StubMotorStatusResponse *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_motor_status_response__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubMotorStatusResponse *
+ stub_motor_status_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubMotorStatusResponse *)
+ protobuf_c_message_unpack (&stub_motor_status_response__descriptor,
+ allocator, len, data);
+}
+void stub_motor_status_response__free_unpacked
+ (StubMotorStatusResponse *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_motor_status_response__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_motor_status_response__field_descriptors[16] =
+{
+ {
+ "Motor_ID",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubMotorStatusResponse, has_motor_id),
+ offsetof(StubMotorStatusResponse, motor_id),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "SCK_MOD",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubMotorStatusResponse, has_sck_mod),
+ offsetof(StubMotorStatusResponse, sck_mod),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "STEP_LOSS_B",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubMotorStatusResponse, has_step_loss_b),
+ offsetof(StubMotorStatusResponse, step_loss_b),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "STEP_LOSS_A",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubMotorStatusResponse, has_step_loss_a),
+ offsetof(StubMotorStatusResponse, step_loss_a),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "OCD",
+ 5,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubMotorStatusResponse, has_ocd),
+ offsetof(StubMotorStatusResponse, ocd),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "TH_SD",
+ 6,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubMotorStatusResponse, has_th_sd),
+ offsetof(StubMotorStatusResponse, th_sd),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "TH_WRN",
+ 7,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubMotorStatusResponse, has_th_wrn),
+ offsetof(StubMotorStatusResponse, th_wrn),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "UVLO",
+ 8,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubMotorStatusResponse, has_uvlo),
+ offsetof(StubMotorStatusResponse, uvlo),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "WRONG_CMD",
+ 9,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubMotorStatusResponse, has_wrong_cmd),
+ offsetof(StubMotorStatusResponse, wrong_cmd),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "NOTPERF_CMD",
+ 10,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubMotorStatusResponse, has_notperf_cmd),
+ offsetof(StubMotorStatusResponse, notperf_cmd),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "MOT_STATUS",
+ 11,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubMotorStatusResponse, has_mot_status),
+ offsetof(StubMotorStatusResponse, mot_status),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "DIR",
+ 12,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubMotorStatusResponse, has_dir),
+ offsetof(StubMotorStatusResponse, dir),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "SW_EVN",
+ 13,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubMotorStatusResponse, has_sw_evn),
+ offsetof(StubMotorStatusResponse, sw_evn),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "SW_F",
+ 14,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubMotorStatusResponse, has_sw_f),
+ offsetof(StubMotorStatusResponse, sw_f),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "BUSY",
+ 15,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubMotorStatusResponse, has_busy),
+ offsetof(StubMotorStatusResponse, busy),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "HiZ",
+ 16,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubMotorStatusResponse, has_hiz),
+ offsetof(StubMotorStatusResponse, hiz),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_motor_status_response__field_indices_by_name[] = {
+ 14, /* field[14] = BUSY */
+ 11, /* field[11] = DIR */
+ 15, /* field[15] = HiZ */
+ 10, /* field[10] = MOT_STATUS */
+ 0, /* field[0] = Motor_ID */
+ 9, /* field[9] = NOTPERF_CMD */
+ 4, /* field[4] = OCD */
+ 1, /* field[1] = SCK_MOD */
+ 3, /* field[3] = STEP_LOSS_A */
+ 2, /* field[2] = STEP_LOSS_B */
+ 12, /* field[12] = SW_EVN */
+ 13, /* field[13] = SW_F */
+ 5, /* field[5] = TH_SD */
+ 6, /* field[6] = TH_WRN */
+ 7, /* field[7] = UVLO */
+ 8, /* field[8] = WRONG_CMD */
+};
+static const ProtobufCIntRange stub_motor_status_response__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 16 }
+};
+const ProtobufCMessageDescriptor stub_motor_status_response__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubMotorStatusResponse",
+ "StubMotorStatusResponse",
+ "StubMotorStatusResponse",
+ "",
+ sizeof(StubMotorStatusResponse),
+ 16,
+ stub_motor_status_response__field_descriptors,
+ stub_motor_status_response__field_indices_by_name,
+ 1, stub_motor_status_response__number_ranges,
+ (ProtobufCMessageInit) stub_motor_status_response__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorStatusResponse.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorStatusResponse.pb-c.h
new file mode 100644
index 000000000..440830b3b
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorStatusResponse.pb-c.h
@@ -0,0 +1,102 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubMotorStatusResponse.proto */
+
+#ifndef PROTOBUF_C_StubMotorStatusResponse_2eproto__INCLUDED
+#define PROTOBUF_C_StubMotorStatusResponse_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubMotorStatusResponse StubMotorStatusResponse;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubMotorStatusResponse
+{
+ ProtobufCMessage base;
+ protobuf_c_boolean has_motor_id;
+ uint32_t motor_id;
+ protobuf_c_boolean has_sck_mod;
+ protobuf_c_boolean sck_mod;
+ protobuf_c_boolean has_step_loss_b;
+ protobuf_c_boolean step_loss_b;
+ protobuf_c_boolean has_step_loss_a;
+ protobuf_c_boolean step_loss_a;
+ protobuf_c_boolean has_ocd;
+ protobuf_c_boolean ocd;
+ protobuf_c_boolean has_th_sd;
+ protobuf_c_boolean th_sd;
+ protobuf_c_boolean has_th_wrn;
+ protobuf_c_boolean th_wrn;
+ protobuf_c_boolean has_uvlo;
+ protobuf_c_boolean uvlo;
+ protobuf_c_boolean has_wrong_cmd;
+ protobuf_c_boolean wrong_cmd;
+ protobuf_c_boolean has_notperf_cmd;
+ protobuf_c_boolean notperf_cmd;
+ protobuf_c_boolean has_mot_status;
+ uint32_t mot_status;
+ protobuf_c_boolean has_dir;
+ protobuf_c_boolean dir;
+ protobuf_c_boolean has_sw_evn;
+ protobuf_c_boolean sw_evn;
+ protobuf_c_boolean has_sw_f;
+ protobuf_c_boolean sw_f;
+ protobuf_c_boolean has_busy;
+ protobuf_c_boolean busy;
+ protobuf_c_boolean has_hiz;
+ protobuf_c_boolean hiz;
+};
+#define STUB_MOTOR_STATUS_RESPONSE__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_motor_status_response__descriptor) \
+ , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+
+
+/* StubMotorStatusResponse methods */
+void stub_motor_status_response__init
+ (StubMotorStatusResponse *message);
+size_t stub_motor_status_response__get_packed_size
+ (const StubMotorStatusResponse *message);
+size_t stub_motor_status_response__pack
+ (const StubMotorStatusResponse *message,
+ uint8_t *out);
+size_t stub_motor_status_response__pack_to_buffer
+ (const StubMotorStatusResponse *message,
+ ProtobufCBuffer *buffer);
+StubMotorStatusResponse *
+ stub_motor_status_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_motor_status_response__free_unpacked
+ (StubMotorStatusResponse *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubMotorStatusResponse_Closure)
+ (const StubMotorStatusResponse *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_motor_status_response__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubMotorStatusResponse_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorStopRequest.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorStopRequest.pb-c.c
new file mode 100644
index 000000000..1bcdca7be
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorStopRequest.pb-c.c
@@ -0,0 +1,105 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubMotorStopRequest.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubMotorStopRequest.pb-c.h"
+void stub_motor_stop_request__init
+ (StubMotorStopRequest *message)
+{
+ static const StubMotorStopRequest init_value = STUB_MOTOR_STOP_REQUEST__INIT;
+ *message = init_value;
+}
+size_t stub_motor_stop_request__get_packed_size
+ (const StubMotorStopRequest *message)
+{
+ assert(message->base.descriptor == &stub_motor_stop_request__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_motor_stop_request__pack
+ (const StubMotorStopRequest *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_motor_stop_request__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_motor_stop_request__pack_to_buffer
+ (const StubMotorStopRequest *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_motor_stop_request__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubMotorStopRequest *
+ stub_motor_stop_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubMotorStopRequest *)
+ protobuf_c_message_unpack (&stub_motor_stop_request__descriptor,
+ allocator, len, data);
+}
+void stub_motor_stop_request__free_unpacked
+ (StubMotorStopRequest *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_motor_stop_request__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_motor_stop_request__field_descriptors[2] =
+{
+ {
+ "Motor_ID",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubMotorStopRequest, has_motor_id),
+ offsetof(StubMotorStopRequest, motor_id),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Stop_CMD",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubMotorStopRequest, has_stop_cmd),
+ offsetof(StubMotorStopRequest, stop_cmd),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_motor_stop_request__field_indices_by_name[] = {
+ 0, /* field[0] = Motor_ID */
+ 1, /* field[1] = Stop_CMD */
+};
+static const ProtobufCIntRange stub_motor_stop_request__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 2 }
+};
+const ProtobufCMessageDescriptor stub_motor_stop_request__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubMotorStopRequest",
+ "StubMotorStopRequest",
+ "StubMotorStopRequest",
+ "",
+ sizeof(StubMotorStopRequest),
+ 2,
+ stub_motor_stop_request__field_descriptors,
+ stub_motor_stop_request__field_indices_by_name,
+ 1, stub_motor_stop_request__number_ranges,
+ (ProtobufCMessageInit) stub_motor_stop_request__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorStopRequest.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorStopRequest.pb-c.h
new file mode 100644
index 000000000..2c89fc185
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorStopRequest.pb-c.h
@@ -0,0 +1,77 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubMotorStopRequest.proto */
+
+#ifndef PROTOBUF_C_StubMotorStopRequest_2eproto__INCLUDED
+#define PROTOBUF_C_StubMotorStopRequest_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubMotorStopRequest StubMotorStopRequest;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubMotorStopRequest
+{
+ ProtobufCMessage base;
+ protobuf_c_boolean has_motor_id;
+ uint32_t motor_id;
+ /*
+ * 1 - Hard_Stop/ 2 - Soft_Stop/ 3 - Hard_Hiz/ 4 - Soft_Hiz
+ */
+ protobuf_c_boolean has_stop_cmd;
+ uint32_t stop_cmd;
+};
+#define STUB_MOTOR_STOP_REQUEST__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_motor_stop_request__descriptor) \
+ , 0, 0, 0, 0 }
+
+
+/* StubMotorStopRequest methods */
+void stub_motor_stop_request__init
+ (StubMotorStopRequest *message);
+size_t stub_motor_stop_request__get_packed_size
+ (const StubMotorStopRequest *message);
+size_t stub_motor_stop_request__pack
+ (const StubMotorStopRequest *message,
+ uint8_t *out);
+size_t stub_motor_stop_request__pack_to_buffer
+ (const StubMotorStopRequest *message,
+ ProtobufCBuffer *buffer);
+StubMotorStopRequest *
+ stub_motor_stop_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_motor_stop_request__free_unpacked
+ (StubMotorStopRequest *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubMotorStopRequest_Closure)
+ (const StubMotorStopRequest *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_motor_stop_request__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubMotorStopRequest_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorStopResponse.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorStopResponse.pb-c.c
new file mode 100644
index 000000000..60cacfcb7
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorStopResponse.pb-c.c
@@ -0,0 +1,131 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubMotorStopResponse.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubMotorStopResponse.pb-c.h"
+void stub_motor_stop_response__init
+ (StubMotorStopResponse *message)
+{
+ static const StubMotorStopResponse init_value = STUB_MOTOR_STOP_RESPONSE__INIT;
+ *message = init_value;
+}
+size_t stub_motor_stop_response__get_packed_size
+ (const StubMotorStopResponse *message)
+{
+ assert(message->base.descriptor == &stub_motor_stop_response__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_motor_stop_response__pack
+ (const StubMotorStopResponse *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_motor_stop_response__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_motor_stop_response__pack_to_buffer
+ (const StubMotorStopResponse *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_motor_stop_response__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubMotorStopResponse *
+ stub_motor_stop_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubMotorStopResponse *)
+ protobuf_c_message_unpack (&stub_motor_stop_response__descriptor,
+ allocator, len, data);
+}
+void stub_motor_stop_response__free_unpacked
+ (StubMotorStopResponse *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_motor_stop_response__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_motor_stop_response__field_descriptors[4] =
+{
+ {
+ "Motor_ID",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubMotorStopResponse, has_motor_id),
+ offsetof(StubMotorStopResponse, motor_id),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Mot_Status",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubMotorStopResponse, has_mot_status),
+ offsetof(StubMotorStopResponse, mot_status),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "HiZ",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubMotorStopResponse, has_hiz),
+ offsetof(StubMotorStopResponse, hiz),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "BUSY",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubMotorStopResponse, has_busy),
+ offsetof(StubMotorStopResponse, busy),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_motor_stop_response__field_indices_by_name[] = {
+ 3, /* field[3] = BUSY */
+ 2, /* field[2] = HiZ */
+ 1, /* field[1] = Mot_Status */
+ 0, /* field[0] = Motor_ID */
+};
+static const ProtobufCIntRange stub_motor_stop_response__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 4 }
+};
+const ProtobufCMessageDescriptor stub_motor_stop_response__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubMotorStopResponse",
+ "StubMotorStopResponse",
+ "StubMotorStopResponse",
+ "",
+ sizeof(StubMotorStopResponse),
+ 4,
+ stub_motor_stop_response__field_descriptors,
+ stub_motor_stop_response__field_indices_by_name,
+ 1, stub_motor_stop_response__number_ranges,
+ (ProtobufCMessageInit) stub_motor_stop_response__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorStopResponse.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorStopResponse.pb-c.h
new file mode 100644
index 000000000..1a41f11ef
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubMotorStopResponse.pb-c.h
@@ -0,0 +1,84 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubMotorStopResponse.proto */
+
+#ifndef PROTOBUF_C_StubMotorStopResponse_2eproto__INCLUDED
+#define PROTOBUF_C_StubMotorStopResponse_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubMotorStopResponse StubMotorStopResponse;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubMotorStopResponse
+{
+ ProtobufCMessage base;
+ protobuf_c_boolean has_motor_id;
+ uint32_t motor_id;
+ /*
+ * Stopped / Acceleration / Deceleration / Constant speed
+ */
+ protobuf_c_boolean has_mot_status;
+ uint32_t mot_status;
+ /*
+ * 1 - high impedance state.
+ */
+ protobuf_c_boolean has_hiz;
+ protobuf_c_boolean hiz;
+ protobuf_c_boolean has_busy;
+ protobuf_c_boolean busy;
+};
+#define STUB_MOTOR_STOP_RESPONSE__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_motor_stop_response__descriptor) \
+ , 0, 0, 0, 0, 0, 0, 0, 0 }
+
+
+/* StubMotorStopResponse methods */
+void stub_motor_stop_response__init
+ (StubMotorStopResponse *message);
+size_t stub_motor_stop_response__get_packed_size
+ (const StubMotorStopResponse *message);
+size_t stub_motor_stop_response__pack
+ (const StubMotorStopResponse *message,
+ uint8_t *out);
+size_t stub_motor_stop_response__pack_to_buffer
+ (const StubMotorStopResponse *message,
+ ProtobufCBuffer *buffer);
+StubMotorStopResponse *
+ stub_motor_stop_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_motor_stop_response__free_unpacked
+ (StubMotorStopResponse *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubMotorStopResponse_Closure)
+ (const StubMotorStopResponse *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_motor_stop_response__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubMotorStopResponse_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubOptLimitSwitchRequest.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubOptLimitSwitchRequest.pb-c.c
new file mode 100644
index 000000000..bd4187588
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubOptLimitSwitchRequest.pb-c.c
@@ -0,0 +1,105 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubOptLimitSwitchRequest.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubOptLimitSwitchRequest.pb-c.h"
+void stub_opt_limit_switch_request__init
+ (StubOptLimitSwitchRequest *message)
+{
+ static const StubOptLimitSwitchRequest init_value = STUB_OPT_LIMIT_SWITCH_REQUEST__INIT;
+ *message = init_value;
+}
+size_t stub_opt_limit_switch_request__get_packed_size
+ (const StubOptLimitSwitchRequest *message)
+{
+ assert(message->base.descriptor == &stub_opt_limit_switch_request__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_opt_limit_switch_request__pack
+ (const StubOptLimitSwitchRequest *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_opt_limit_switch_request__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_opt_limit_switch_request__pack_to_buffer
+ (const StubOptLimitSwitchRequest *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_opt_limit_switch_request__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubOptLimitSwitchRequest *
+ stub_opt_limit_switch_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubOptLimitSwitchRequest *)
+ protobuf_c_message_unpack (&stub_opt_limit_switch_request__descriptor,
+ allocator, len, data);
+}
+void stub_opt_limit_switch_request__free_unpacked
+ (StubOptLimitSwitchRequest *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_opt_limit_switch_request__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_opt_limit_switch_request__field_descriptors[2] =
+{
+ {
+ "LimitSwitchrId",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubOptLimitSwitchRequest, has_limitswitchrid),
+ offsetof(StubOptLimitSwitchRequest, limitswitchrid),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "LimitSwitchrDisable",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubOptLimitSwitchRequest, has_limitswitchrdisable),
+ offsetof(StubOptLimitSwitchRequest, limitswitchrdisable),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_opt_limit_switch_request__field_indices_by_name[] = {
+ 1, /* field[1] = LimitSwitchrDisable */
+ 0, /* field[0] = LimitSwitchrId */
+};
+static const ProtobufCIntRange stub_opt_limit_switch_request__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 2 }
+};
+const ProtobufCMessageDescriptor stub_opt_limit_switch_request__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubOptLimitSwitchRequest",
+ "StubOptLimitSwitchRequest",
+ "StubOptLimitSwitchRequest",
+ "",
+ sizeof(StubOptLimitSwitchRequest),
+ 2,
+ stub_opt_limit_switch_request__field_descriptors,
+ stub_opt_limit_switch_request__field_indices_by_name,
+ 1, stub_opt_limit_switch_request__number_ranges,
+ (ProtobufCMessageInit) stub_opt_limit_switch_request__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubOptLimitSwitchRequest.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubOptLimitSwitchRequest.pb-c.h
new file mode 100644
index 000000000..2008bf5f9
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubOptLimitSwitchRequest.pb-c.h
@@ -0,0 +1,80 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubOptLimitSwitchRequest.proto */
+
+#ifndef PROTOBUF_C_StubOptLimitSwitchRequest_2eproto__INCLUDED
+#define PROTOBUF_C_StubOptLimitSwitchRequest_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubOptLimitSwitchRequest StubOptLimitSwitchRequest;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubOptLimitSwitchRequest
+{
+ ProtobufCMessage base;
+ /*
+ *0..16
+ */
+ protobuf_c_boolean has_limitswitchrid;
+ uint32_t limitswitchrid;
+ /*
+ * 0 - Enable 1 - Disable
+ */
+ protobuf_c_boolean has_limitswitchrdisable;
+ protobuf_c_boolean limitswitchrdisable;
+};
+#define STUB_OPT_LIMIT_SWITCH_REQUEST__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_opt_limit_switch_request__descriptor) \
+ , 0, 0, 0, 0 }
+
+
+/* StubOptLimitSwitchRequest methods */
+void stub_opt_limit_switch_request__init
+ (StubOptLimitSwitchRequest *message);
+size_t stub_opt_limit_switch_request__get_packed_size
+ (const StubOptLimitSwitchRequest *message);
+size_t stub_opt_limit_switch_request__pack
+ (const StubOptLimitSwitchRequest *message,
+ uint8_t *out);
+size_t stub_opt_limit_switch_request__pack_to_buffer
+ (const StubOptLimitSwitchRequest *message,
+ ProtobufCBuffer *buffer);
+StubOptLimitSwitchRequest *
+ stub_opt_limit_switch_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_opt_limit_switch_request__free_unpacked
+ (StubOptLimitSwitchRequest *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubOptLimitSwitchRequest_Closure)
+ (const StubOptLimitSwitchRequest *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_opt_limit_switch_request__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubOptLimitSwitchRequest_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubOptLimitSwitchResponse.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubOptLimitSwitchResponse.pb-c.c
new file mode 100644
index 000000000..1f8445842
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubOptLimitSwitchResponse.pb-c.c
@@ -0,0 +1,131 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubOptLimitSwitchResponse.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubOptLimitSwitchResponse.pb-c.h"
+void stub_opt_limit_switch_response__init
+ (StubOptLimitSwitchResponse *message)
+{
+ static const StubOptLimitSwitchResponse init_value = STUB_OPT_LIMIT_SWITCH_RESPONSE__INIT;
+ *message = init_value;
+}
+size_t stub_opt_limit_switch_response__get_packed_size
+ (const StubOptLimitSwitchResponse *message)
+{
+ assert(message->base.descriptor == &stub_opt_limit_switch_response__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_opt_limit_switch_response__pack
+ (const StubOptLimitSwitchResponse *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_opt_limit_switch_response__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_opt_limit_switch_response__pack_to_buffer
+ (const StubOptLimitSwitchResponse *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_opt_limit_switch_response__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubOptLimitSwitchResponse *
+ stub_opt_limit_switch_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubOptLimitSwitchResponse *)
+ protobuf_c_message_unpack (&stub_opt_limit_switch_response__descriptor,
+ allocator, len, data);
+}
+void stub_opt_limit_switch_response__free_unpacked
+ (StubOptLimitSwitchResponse *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_opt_limit_switch_response__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_opt_limit_switch_response__field_descriptors[4] =
+{
+ {
+ "LimitSwitchrId",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubOptLimitSwitchResponse, has_limitswitchrid),
+ offsetof(StubOptLimitSwitchResponse, limitswitchrid),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "LimitSwitchDitection",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubOptLimitSwitchResponse, has_limitswitchditection),
+ offsetof(StubOptLimitSwitchResponse, limitswitchditection),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Status",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_STRING,
+ 0, /* quantifier_offset */
+ offsetof(StubOptLimitSwitchResponse, status),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "StatusWord",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubOptLimitSwitchResponse, has_statusword),
+ offsetof(StubOptLimitSwitchResponse, statusword),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_opt_limit_switch_response__field_indices_by_name[] = {
+ 1, /* field[1] = LimitSwitchDitection */
+ 0, /* field[0] = LimitSwitchrId */
+ 2, /* field[2] = Status */
+ 3, /* field[3] = StatusWord */
+};
+static const ProtobufCIntRange stub_opt_limit_switch_response__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 4 }
+};
+const ProtobufCMessageDescriptor stub_opt_limit_switch_response__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubOptLimitSwitchResponse",
+ "StubOptLimitSwitchResponse",
+ "StubOptLimitSwitchResponse",
+ "",
+ sizeof(StubOptLimitSwitchResponse),
+ 4,
+ stub_opt_limit_switch_response__field_descriptors,
+ stub_opt_limit_switch_response__field_indices_by_name,
+ 1, stub_opt_limit_switch_response__number_ranges,
+ (ProtobufCMessageInit) stub_opt_limit_switch_response__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubOptLimitSwitchResponse.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubOptLimitSwitchResponse.pb-c.h
new file mode 100644
index 000000000..74ebe93d8
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubOptLimitSwitchResponse.pb-c.h
@@ -0,0 +1,88 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubOptLimitSwitchResponse.proto */
+
+#ifndef PROTOBUF_C_StubOptLimitSwitchResponse_2eproto__INCLUDED
+#define PROTOBUF_C_StubOptLimitSwitchResponse_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubOptLimitSwitchResponse StubOptLimitSwitchResponse;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubOptLimitSwitchResponse
+{
+ ProtobufCMessage base;
+ /*
+ *0..19
+ */
+ protobuf_c_boolean has_limitswitchrid;
+ uint32_t limitswitchrid;
+ /*
+ */
+ protobuf_c_boolean has_limitswitchditection;
+ protobuf_c_boolean limitswitchditection;
+ /*
+ * Passed/Failed
+ */
+ char *status;
+ /*
+ * Error number/bit when the status is Failed
+ */
+ protobuf_c_boolean has_statusword;
+ uint32_t statusword;
+};
+#define STUB_OPT_LIMIT_SWITCH_RESPONSE__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_opt_limit_switch_response__descriptor) \
+ , 0, 0, 0, 0, NULL, 0, 0 }
+
+
+/* StubOptLimitSwitchResponse methods */
+void stub_opt_limit_switch_response__init
+ (StubOptLimitSwitchResponse *message);
+size_t stub_opt_limit_switch_response__get_packed_size
+ (const StubOptLimitSwitchResponse *message);
+size_t stub_opt_limit_switch_response__pack
+ (const StubOptLimitSwitchResponse *message,
+ uint8_t *out);
+size_t stub_opt_limit_switch_response__pack_to_buffer
+ (const StubOptLimitSwitchResponse *message,
+ ProtobufCBuffer *buffer);
+StubOptLimitSwitchResponse *
+ stub_opt_limit_switch_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_opt_limit_switch_response__free_unpacked
+ (StubOptLimitSwitchResponse *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubOptLimitSwitchResponse_Closure)
+ (const StubOptLimitSwitchResponse *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_opt_limit_switch_response__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubOptLimitSwitchResponse_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubSteperMotorRequest.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubSteperMotorRequest.pb-c.c
new file mode 100644
index 000000000..7328bb692
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubSteperMotorRequest.pb-c.c
@@ -0,0 +1,144 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubSteperMotorRequest.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubSteperMotorRequest.pb-c.h"
+void stub_steper_motor_request__init
+ (StubSteperMotorRequest *message)
+{
+ static const StubSteperMotorRequest init_value = STUB_STEPER_MOTOR_REQUEST__INIT;
+ *message = init_value;
+}
+size_t stub_steper_motor_request__get_packed_size
+ (const StubSteperMotorRequest *message)
+{
+ assert(message->base.descriptor == &stub_steper_motor_request__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_steper_motor_request__pack
+ (const StubSteperMotorRequest *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_steper_motor_request__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_steper_motor_request__pack_to_buffer
+ (const StubSteperMotorRequest *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_steper_motor_request__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubSteperMotorRequest *
+ stub_steper_motor_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubSteperMotorRequest *)
+ protobuf_c_message_unpack (&stub_steper_motor_request__descriptor,
+ allocator, len, data);
+}
+void stub_steper_motor_request__free_unpacked
+ (StubSteperMotorRequest *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_steper_motor_request__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_steper_motor_request__field_descriptors[5] =
+{
+ {
+ "MotorId",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubSteperMotorRequest, has_motorid),
+ offsetof(StubSteperMotorRequest, motorid),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Start",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubSteperMotorRequest, has_start),
+ offsetof(StubSteperMotorRequest, start),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "SetDirection",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubSteperMotorRequest, has_setdirection),
+ offsetof(StubSteperMotorRequest, setdirection),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "SetMicrostepDivision",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubSteperMotorRequest, has_setmicrostepdivision),
+ offsetof(StubSteperMotorRequest, setmicrostepdivision),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "SetSpeed",
+ 5,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_INT32,
+ offsetof(StubSteperMotorRequest, has_setspeed),
+ offsetof(StubSteperMotorRequest, setspeed),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_steper_motor_request__field_indices_by_name[] = {
+ 0, /* field[0] = MotorId */
+ 2, /* field[2] = SetDirection */
+ 3, /* field[3] = SetMicrostepDivision */
+ 4, /* field[4] = SetSpeed */
+ 1, /* field[1] = Start */
+};
+static const ProtobufCIntRange stub_steper_motor_request__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 5 }
+};
+const ProtobufCMessageDescriptor stub_steper_motor_request__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubSteperMotorRequest",
+ "StubSteperMotorRequest",
+ "StubSteperMotorRequest",
+ "",
+ sizeof(StubSteperMotorRequest),
+ 5,
+ stub_steper_motor_request__field_descriptors,
+ stub_steper_motor_request__field_indices_by_name,
+ 1, stub_steper_motor_request__number_ranges,
+ (ProtobufCMessageInit) stub_steper_motor_request__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubSteperMotorRequest.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubSteperMotorRequest.pb-c.h
new file mode 100644
index 000000000..a7a771172
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubSteperMotorRequest.pb-c.h
@@ -0,0 +1,95 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubSteperMotorRequest.proto */
+
+#ifndef PROTOBUF_C_StubSteperMotorRequest_2eproto__INCLUDED
+#define PROTOBUF_C_StubSteperMotorRequest_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubSteperMotorRequest StubSteperMotorRequest;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubSteperMotorRequest
+{
+ ProtobufCMessage base;
+ /*
+ *0..19
+ */
+ protobuf_c_boolean has_motorid;
+ uint32_t motorid;
+ /*
+ * 1-start 0-stop
+ */
+ protobuf_c_boolean has_start;
+ protobuf_c_boolean start;
+ /*
+ * 1-cw 0-ccw
+ */
+ protobuf_c_boolean has_setdirection;
+ protobuf_c_boolean setdirection;
+ /*
+ * No. of steps for 360 deg.
+ */
+ protobuf_c_boolean has_setmicrostepdivision;
+ uint32_t setmicrostepdivision;
+ /*
+ * ?
+ */
+ protobuf_c_boolean has_setspeed;
+ int32_t setspeed;
+};
+#define STUB_STEPER_MOTOR_REQUEST__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_steper_motor_request__descriptor) \
+ , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+
+
+/* StubSteperMotorRequest methods */
+void stub_steper_motor_request__init
+ (StubSteperMotorRequest *message);
+size_t stub_steper_motor_request__get_packed_size
+ (const StubSteperMotorRequest *message);
+size_t stub_steper_motor_request__pack
+ (const StubSteperMotorRequest *message,
+ uint8_t *out);
+size_t stub_steper_motor_request__pack_to_buffer
+ (const StubSteperMotorRequest *message,
+ ProtobufCBuffer *buffer);
+StubSteperMotorRequest *
+ stub_steper_motor_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_steper_motor_request__free_unpacked
+ (StubSteperMotorRequest *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubSteperMotorRequest_Closure)
+ (const StubSteperMotorRequest *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_steper_motor_request__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubSteperMotorRequest_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubSteperMotorResponse.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubSteperMotorResponse.pb-c.c
new file mode 100644
index 000000000..1d13edf23
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubSteperMotorResponse.pb-c.c
@@ -0,0 +1,131 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubSteperMotorResponse.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubSteperMotorResponse.pb-c.h"
+void stub_steper_motor_response__init
+ (StubSteperMotorResponse *message)
+{
+ static const StubSteperMotorResponse init_value = STUB_STEPER_MOTOR_RESPONSE__INIT;
+ *message = init_value;
+}
+size_t stub_steper_motor_response__get_packed_size
+ (const StubSteperMotorResponse *message)
+{
+ assert(message->base.descriptor == &stub_steper_motor_response__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_steper_motor_response__pack
+ (const StubSteperMotorResponse *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_steper_motor_response__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_steper_motor_response__pack_to_buffer
+ (const StubSteperMotorResponse *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_steper_motor_response__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubSteperMotorResponse *
+ stub_steper_motor_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubSteperMotorResponse *)
+ protobuf_c_message_unpack (&stub_steper_motor_response__descriptor,
+ allocator, len, data);
+}
+void stub_steper_motor_response__free_unpacked
+ (StubSteperMotorResponse *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_steper_motor_response__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_steper_motor_response__field_descriptors[4] =
+{
+ {
+ "MotorId",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubSteperMotorResponse, has_motorid),
+ offsetof(StubSteperMotorResponse, motorid),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "MotorVersion",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubSteperMotorResponse, has_motorversion),
+ offsetof(StubSteperMotorResponse, motorversion),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Status",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_STRING,
+ 0, /* quantifier_offset */
+ offsetof(StubSteperMotorResponse, status),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "StatusWord",
+ 4,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubSteperMotorResponse, has_statusword),
+ offsetof(StubSteperMotorResponse, statusword),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_steper_motor_response__field_indices_by_name[] = {
+ 0, /* field[0] = MotorId */
+ 1, /* field[1] = MotorVersion */
+ 2, /* field[2] = Status */
+ 3, /* field[3] = StatusWord */
+};
+static const ProtobufCIntRange stub_steper_motor_response__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 4 }
+};
+const ProtobufCMessageDescriptor stub_steper_motor_response__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubSteperMotorResponse",
+ "StubSteperMotorResponse",
+ "StubSteperMotorResponse",
+ "",
+ sizeof(StubSteperMotorResponse),
+ 4,
+ stub_steper_motor_response__field_descriptors,
+ stub_steper_motor_response__field_indices_by_name,
+ 1, stub_steper_motor_response__number_ranges,
+ (ProtobufCMessageInit) stub_steper_motor_response__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubSteperMotorResponse.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubSteperMotorResponse.pb-c.h
new file mode 100644
index 000000000..fbe1f63ef
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubSteperMotorResponse.pb-c.h
@@ -0,0 +1,88 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubSteperMotorResponse.proto */
+
+#ifndef PROTOBUF_C_StubSteperMotorResponse_2eproto__INCLUDED
+#define PROTOBUF_C_StubSteperMotorResponse_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubSteperMotorResponse StubSteperMotorResponse;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubSteperMotorResponse
+{
+ ProtobufCMessage base;
+ /*
+ *0..19
+ */
+ protobuf_c_boolean has_motorid;
+ uint32_t motorid;
+ /*
+ */
+ protobuf_c_boolean has_motorversion;
+ uint32_t motorversion;
+ /*
+ * Passed / Failed
+ */
+ char *status;
+ /*
+ * Error number/bit when the status is Failed
+ */
+ protobuf_c_boolean has_statusword;
+ uint32_t statusword;
+};
+#define STUB_STEPER_MOTOR_RESPONSE__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_steper_motor_response__descriptor) \
+ , 0, 0, 0, 0, NULL, 0, 0 }
+
+
+/* StubSteperMotorResponse methods */
+void stub_steper_motor_response__init
+ (StubSteperMotorResponse *message);
+size_t stub_steper_motor_response__get_packed_size
+ (const StubSteperMotorResponse *message);
+size_t stub_steper_motor_response__pack
+ (const StubSteperMotorResponse *message,
+ uint8_t *out);
+size_t stub_steper_motor_response__pack_to_buffer
+ (const StubSteperMotorResponse *message,
+ ProtobufCBuffer *buffer);
+StubSteperMotorResponse *
+ stub_steper_motor_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_steper_motor_response__free_unpacked
+ (StubSteperMotorResponse *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubSteperMotorResponse_Closure)
+ (const StubSteperMotorResponse *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_steper_motor_response__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubSteperMotorResponse_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubValveRequest.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubValveRequest.pb-c.c
new file mode 100644
index 000000000..6e1bc168f
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubValveRequest.pb-c.c
@@ -0,0 +1,118 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubValveRequest.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubValveRequest.pb-c.h"
+void stub_valve_request__init
+ (StubValveRequest *message)
+{
+ static const StubValveRequest init_value = STUB_VALVE_REQUEST__INIT;
+ *message = init_value;
+}
+size_t stub_valve_request__get_packed_size
+ (const StubValveRequest *message)
+{
+ assert(message->base.descriptor == &stub_valve_request__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_valve_request__pack
+ (const StubValveRequest *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_valve_request__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_valve_request__pack_to_buffer
+ (const StubValveRequest *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_valve_request__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubValveRequest *
+ stub_valve_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubValveRequest *)
+ protobuf_c_message_unpack (&stub_valve_request__descriptor,
+ allocator, len, data);
+}
+void stub_valve_request__free_unpacked
+ (StubValveRequest *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_valve_request__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_valve_request__field_descriptors[3] =
+{
+ {
+ "ValveId",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubValveRequest, has_valveid),
+ offsetof(StubValveRequest, valveid),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "Inkflow",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubValveRequest, has_inkflow),
+ offsetof(StubValveRequest, inkflow),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "ValveOn",
+ 3,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_BOOL,
+ offsetof(StubValveRequest, has_valveon),
+ offsetof(StubValveRequest, valveon),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_valve_request__field_indices_by_name[] = {
+ 1, /* field[1] = Inkflow */
+ 0, /* field[0] = ValveId */
+ 2, /* field[2] = ValveOn */
+};
+static const ProtobufCIntRange stub_valve_request__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 3 }
+};
+const ProtobufCMessageDescriptor stub_valve_request__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubValveRequest",
+ "StubValveRequest",
+ "StubValveRequest",
+ "",
+ sizeof(StubValveRequest),
+ 3,
+ stub_valve_request__field_descriptors,
+ stub_valve_request__field_indices_by_name,
+ 1, stub_valve_request__number_ranges,
+ (ProtobufCMessageInit) stub_valve_request__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubValveRequest.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubValveRequest.pb-c.h
new file mode 100644
index 000000000..9a730b4d0
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubValveRequest.pb-c.h
@@ -0,0 +1,85 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubValveRequest.proto */
+
+#ifndef PROTOBUF_C_StubValveRequest_2eproto__INCLUDED
+#define PROTOBUF_C_StubValveRequest_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubValveRequest StubValveRequest;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubValveRequest
+{
+ ProtobufCMessage base;
+ /*
+ * 0..19
+ */
+ protobuf_c_boolean has_valveid;
+ uint32_t valveid;
+ /*
+ *0 - Min
+ */
+ protobuf_c_boolean has_inkflow;
+ uint32_t inkflow;
+ /*
+ *0-Off 1-On
+ */
+ protobuf_c_boolean has_valveon;
+ protobuf_c_boolean valveon;
+};
+#define STUB_VALVE_REQUEST__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_valve_request__descriptor) \
+ , 0, 0, 0, 0, 0, 0 }
+
+
+/* StubValveRequest methods */
+void stub_valve_request__init
+ (StubValveRequest *message);
+size_t stub_valve_request__get_packed_size
+ (const StubValveRequest *message);
+size_t stub_valve_request__pack
+ (const StubValveRequest *message,
+ uint8_t *out);
+size_t stub_valve_request__pack_to_buffer
+ (const StubValveRequest *message,
+ ProtobufCBuffer *buffer);
+StubValveRequest *
+ stub_valve_request__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_valve_request__free_unpacked
+ (StubValveRequest *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubValveRequest_Closure)
+ (const StubValveRequest *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_valve_request__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubValveRequest_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubValveResponse.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubValveResponse.pb-c.c
new file mode 100644
index 000000000..4556cc4d2
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubValveResponse.pb-c.c
@@ -0,0 +1,105 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubValveResponse.proto */
+
+/* Do not generate deprecated warnings for self */
+#ifndef PROTOBUF_C__NO_DEPRECATED
+#define PROTOBUF_C__NO_DEPRECATED
+#endif
+
+#include "StubValveResponse.pb-c.h"
+void stub_valve_response__init
+ (StubValveResponse *message)
+{
+ static const StubValveResponse init_value = STUB_VALVE_RESPONSE__INIT;
+ *message = init_value;
+}
+size_t stub_valve_response__get_packed_size
+ (const StubValveResponse *message)
+{
+ assert(message->base.descriptor == &stub_valve_response__descriptor);
+ return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message));
+}
+size_t stub_valve_response__pack
+ (const StubValveResponse *message,
+ uint8_t *out)
+{
+ assert(message->base.descriptor == &stub_valve_response__descriptor);
+ return protobuf_c_message_pack ((const ProtobufCMessage*)message, out);
+}
+size_t stub_valve_response__pack_to_buffer
+ (const StubValveResponse *message,
+ ProtobufCBuffer *buffer)
+{
+ assert(message->base.descriptor == &stub_valve_response__descriptor);
+ return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer);
+}
+StubValveResponse *
+ stub_valve_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data)
+{
+ return (StubValveResponse *)
+ protobuf_c_message_unpack (&stub_valve_response__descriptor,
+ allocator, len, data);
+}
+void stub_valve_response__free_unpacked
+ (StubValveResponse *message,
+ ProtobufCAllocator *allocator)
+{
+ if(!message)
+ return;
+ assert(message->base.descriptor == &stub_valve_response__descriptor);
+ protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator);
+}
+static const ProtobufCFieldDescriptor stub_valve_response__field_descriptors[2] =
+{
+ {
+ "Status",
+ 1,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_STRING,
+ 0, /* quantifier_offset */
+ offsetof(StubValveResponse, status),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+ {
+ "StatusWord",
+ 2,
+ PROTOBUF_C_LABEL_OPTIONAL,
+ PROTOBUF_C_TYPE_UINT32,
+ offsetof(StubValveResponse, has_statusword),
+ offsetof(StubValveResponse, statusword),
+ NULL,
+ NULL,
+ 0, /* flags */
+ 0,NULL,NULL /* reserved1,reserved2, etc */
+ },
+};
+static const unsigned stub_valve_response__field_indices_by_name[] = {
+ 0, /* field[0] = Status */
+ 1, /* field[1] = StatusWord */
+};
+static const ProtobufCIntRange stub_valve_response__number_ranges[1 + 1] =
+{
+ { 1, 0 },
+ { 0, 2 }
+};
+const ProtobufCMessageDescriptor stub_valve_response__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "StubValveResponse",
+ "StubValveResponse",
+ "StubValveResponse",
+ "",
+ sizeof(StubValveResponse),
+ 2,
+ stub_valve_response__field_descriptors,
+ stub_valve_response__field_indices_by_name,
+ 1, stub_valve_response__number_ranges,
+ (ProtobufCMessageInit) stub_valve_response__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubValveResponse.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubValveResponse.pb-c.h
new file mode 100644
index 000000000..3b1512450
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Stubs/StubValveResponse.pb-c.h
@@ -0,0 +1,79 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: StubValveResponse.proto */
+
+#ifndef PROTOBUF_C_StubValveResponse_2eproto__INCLUDED
+#define PROTOBUF_C_StubValveResponse_2eproto__INCLUDED
+
+#include <protobuf-c/protobuf-c.h>
+
+PROTOBUF_C__BEGIN_DECLS
+
+#if PROTOBUF_C_VERSION_NUMBER < 1003000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
+#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+
+typedef struct _StubValveResponse StubValveResponse;
+
+
+/* --- enums --- */
+
+
+/* --- messages --- */
+
+struct _StubValveResponse
+{
+ ProtobufCMessage base;
+ /*
+ * Passed/Failed
+ */
+ char *status;
+ /*
+ * Error number/bit when the status is Failed
+ */
+ protobuf_c_boolean has_statusword;
+ uint32_t statusword;
+};
+#define STUB_VALVE_RESPONSE__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&stub_valve_response__descriptor) \
+ , NULL, 0, 0 }
+
+
+/* StubValveResponse methods */
+void stub_valve_response__init
+ (StubValveResponse *message);
+size_t stub_valve_response__get_packed_size
+ (const StubValveResponse *message);
+size_t stub_valve_response__pack
+ (const StubValveResponse *message,
+ uint8_t *out);
+size_t stub_valve_response__pack_to_buffer
+ (const StubValveResponse *message,
+ ProtobufCBuffer *buffer);
+StubValveResponse *
+ stub_valve_response__unpack
+ (ProtobufCAllocator *allocator,
+ size_t len,
+ const uint8_t *data);
+void stub_valve_response__free_unpacked
+ (StubValveResponse *message,
+ ProtobufCAllocator *allocator);
+/* --- per-message closures --- */
+
+typedef void (*StubValveResponse_Closure)
+ (const StubValveResponse *message,
+ void *closure_data);
+
+/* --- services --- */
+
+
+/* --- descriptors --- */
+
+extern const ProtobufCMessageDescriptor stub_valve_response__descriptor;
+
+PROTOBUF_C__END_DECLS
+
+
+#endif /* PROTOBUF_C_StubValveResponse_2eproto__INCLUDED */
diff --git a/Software/Embedded_SW/Embedded/Drivers/Danser_SSI/SSI_Comm.c b/Software/Embedded_SW/Embedded/Drivers/Danser_SSI/SSI_Comm.c
new file mode 100644
index 000000000..f4be2a24c
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Drivers/Danser_SSI/SSI_Comm.c
@@ -0,0 +1,176 @@
+// RLS Orbis BR10SCB14B12CH00
+//RLS Orbis
+//BR10
+//SC - SSI
+//B - Start bit and idle data line 1 (standard)
+//14B - 14 bits per revolution
+//12 - Magnet type compatibility
+//C - - 0 °C to +85 °C
+//H - Soldering pads with through holes
+//00 - No special requirements
+
+
+#include <stdbool.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <string.h>
+
+#include "inc/hw_memmap.h"
+#include "driverlib/gpio.h"
+#include "driverlib/pin_map.h"
+#include "driverlib/ssi.h"
+#include "driverlib/sysctl.h"
+#include "utils/uartstdio.h"
+
+#include <driverlib/rom.h>
+#include <driverlib/rom_map.h>
+#include <Stubs_Handler/DataDef.h>
+
+typedef struct // 24bit
+{
+ unsigned char Det_status:8;
+ unsigned char Gen_status:2;
+ unsigned short Position:14;
+}SSI_ENC;
+
+SSI_ENC SSI_enc;
+
+void SSI1_Init()
+{
+ #if defined(TARGET_IS_TM4C129_RA0) || \
+ defined(TARGET_IS_TM4C129_RA1) || \
+ defined(TARGET_IS_TM4C129_RA2)
+ uint32_t ui32SysClock;
+ #endif
+
+ //
+ // Set the clocking to run directly from the external crystal/oscillator.
+ // TODO: The SYSCTL_XTAL_ value must be changed to match the value of the
+ // crystal on your board.
+ //
+ #if defined(TARGET_IS_TM4C129_RA0) || \
+ defined(TARGET_IS_TM4C129_RA1) || \
+ defined(TARGET_IS_TM4C129_RA2)
+
+ ui32SysClock = MAP_SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ |
+ SYSCTL_OSC_MAIN | SYSCTL_USE_PLL |
+ SYSCTL_CFG_VCO_480), 120000000);
+ #else
+ SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |
+ SYSCTL_XTAL_16MHZ);
+ #endif
+
+ // The SSI1 peripheral must be enabled for use.
+ //
+ SysCtlPeripheralReset(SYSCTL_PERIPH_SSI1);
+ SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI1);
+
+ //
+ // For this example SSI1 is used with PortG[7:4]. GPIO port G needs to be
+ // enabled so these pins can be used.
+ //
+ SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
+ SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
+ SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
+
+ /* Configure pad settings */ // AVI
+ GPIOPadConfigSet(GPIO_PORTE_BASE,
+ GPIO_PIN_4,
+ GPIO_STRENGTH_4MA, GPIO_PIN_TYPE_STD);
+
+ GPIOPadConfigSet(GPIO_PORTE_BASE,
+ GPIO_PIN_5,
+ GPIO_STRENGTH_4MA, GPIO_PIN_TYPE_STD_WPU);
+
+ GPIOPadConfigSet(GPIO_PORTB_BASE,
+ GPIO_PIN_4 | GPIO_PIN_5,
+ GPIO_STRENGTH_4MA, GPIO_PIN_TYPE_STD);
+
+ //
+ // Configure the pin muxing for SSI1 functions
+ // This step is not necessary if your part does not support pin muxing.
+ //
+
+ GPIOPinConfigure(GPIO_PB5_SSI1CLK);
+ GPIOPinConfigure(GPIO_PB4_SSI1FSS);
+ GPIOPinConfigure(GPIO_PE4_SSI1XDAT0);
+ GPIOPinConfigure(GPIO_PE5_SSI1XDAT1);
+
+ //
+ // Configure the GPIO settings for the SSI pins. This function also gives
+ // control of these pins to the SSI hardware. Consult the data sheet to
+ // see which functions are allocated per pin.
+ // The pins are assigned as follows:
+ // PE4 - SSI1Tx
+ // PE5 - SSI1Rx
+ // PB4 - SSI1Fss
+ // PB5 - SSI1CLK
+ //SSI0XDAT0......SSI0TX in Legacy SSI Mode....which is MOSI in your terms
+ //SSI0XDAT1......SSI0RX in Legacy SSI Mode....which is MISO in your terms
+ //
+ GPIOPinTypeSSI(GPIO_PORTB_BASE, GPIO_PIN_4 | GPIO_PIN_5);
+ //GPIOPinTypeSSI(GPIO_PORTD_BASE, GPIO_PIN_4 | GPIO_PIN_5);
+ GPIOPinTypeSSI(GPIO_PORTE_BASE, GPIO_PIN_4 | GPIO_PIN_5);
+
+ //
+ // Configure and enable the SSI1 port for SPI Master mode.
+ //
+
+ SSIConfigSetExpClk(SSI1_BASE, ui32SysClock, SSI_FRF_NMW,
+ SSI_MODE_MASTER, 500000, 16); // to receive Clock period 2uSec, Clock frequency 500KHz
+ //SSI_MODE_MASTER send 24 bits 0x00 (dummy) 0x7f 0xff -> create clock of 24 bits for SSI
+
+ SSIAdvModeSet(SSI1_BASE,SSI_ADV_MODE_READ_WRITE ); // ??? Acording to Silicon Errata - SSI1 can Only be Used in Legacy Mode !!!
+ //
+ // Disable the SSI1 module.
+ //
+ SSIDisable(SSI1_BASE);
+ //----------------------------------------------------------------
+
+}
+
+uint32_t Write_Dummy_Byte()
+{
+ //Transmit a dummy set of words to get the SPI to generate a certain number of clocks
+ uint8_t WByte = 0x00; // Dummy Byte
+ uint32_t RByte = 0x00;
+
+ SSIDataPut(SSI1_BASE, WByte);
+
+ while(SSIBusy(SSI1_BASE)){};
+
+ SSIDataGet(SSI1_BASE, &RByte);// 24 bytes
+
+ return (RByte & 0xffffff);// 24 bytes
+
+}
+
+void Read_Dancer_Position ()
+{
+ uint32_t ENC_SSI_Data = 0;
+
+ SSIEnable(SSI1_BASE);
+
+ ENC_SSI_Data = Write_Dummy_Byte();
+
+ SSI_enc.Det_status = ENC_SSI_Data & 0xFF;
+ ENC_SSI_Data = ENC_SSI_Data >> 8;
+ SSI_enc.Gen_status = ENC_SSI_Data & 0x3;
+ ENC_SSI_Data = ENC_SSI_Data >> 2;
+ SSI_enc.Position = ENC_SSI_Data & 0x3FFF;
+
+ SSIDisable(SSI1_BASE);
+}
+
+void Loop_SSI()
+{
+ while(1)
+ {
+ Read_Dancer_Position();
+ SysCtlDelay(1000); // Min 1000 (Pause time > 20uSec)
+ }
+
+}
+
+
diff --git a/Software/Embedded_SW/Embedded/Drivers/Danser_SSI/SSI_Comm.h b/Software/Embedded_SW/Embedded/Drivers/Danser_SSI/SSI_Comm.h
new file mode 100644
index 000000000..1f24b49bf
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Drivers/Danser_SSI/SSI_Comm.h
@@ -0,0 +1,4 @@
+void SSI1_Init();
+void Read_Dancer_Position ();
+
+void Loop_SSI();
diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c
new file mode 100644
index 000000000..968e55390
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c
@@ -0,0 +1,101 @@
+#include <stdbool.h>
+#include <stdlib.h>
+#include <stdint.h>
+
+#include "FPGA_COMM.h"
+#include "Stubs_Handler/DataDef.h"
+#include "driverlib/sysctl.h" //for SysCtlDelay
+
+unsigned short GPO_01_Reg;
+
+int test_FPGA()
+{
+ GP_Out_01 Gpo_01;
+
+ Gpo_01.bits.F3_GPO_LED4 = 1;
+ Gpo_01.bits.F3_GPO_LED3 = 1;
+ Gpo_01.bits.F3_GPO_LED2 = 0;
+ Gpo_01.bits.F3_GPO_LED1 = 1;
+ Gpo_01.bits.F3_GPO_EXTWINDER_SSR11_CTRL = 1;
+ Gpo_01.bits.F3_GPO_BUZZER = 0;
+ Gpo_01.bits.F3_SPARE2_ROTENC_CLK = 1;
+ Gpo_01.bits.F3_SPARE1_ROTENC_CLK = 1;
+ Gpo_01.bits.RESERVE = 0xF5;
+
+ GPO_01_Reg = Gpo_01.ushort;
+
+ return 0;
+}
+
+int Test_FPGA_ReadBack(unsigned char FPGA_NUM, unsigned short Value, unsigned short *ReadBackValue)// = 0x1234)
+{
+
+ //TODO to update the deley
+
+ if(FPGA_NUM == 1)
+ {
+ F1_Test = Value;
+ SysCtlDelay(100);
+ *ReadBackValue = F1_Test;
+ if(Value == !F1_Test)
+ return PASSED;
+ }
+
+ if(FPGA_NUM == 2)
+ {
+ F2_Test = Value;
+ SysCtlDelay(100);
+ *ReadBackValue = F2_Test;
+ if(Value == !F2_Test)
+ return PASSED;
+ }
+
+ if(FPGA_NUM == 3)
+ {
+ F3_Test = Value;
+ SysCtlDelay(100);
+ *ReadBackValue = F3_Test;
+ if(Value == !F3_Test)
+ return PASSED;
+ }
+
+ return FAILED;
+}
+
+
+int FPGA_ReadVersion(unsigned char FPGA_NUM, unsigned char *Version, unsigned char *Year, unsigned char *Month, unsigned char *Day)
+{
+ VER1 Ver1;
+ VER2 Ver2;
+
+ switch(FPGA_NUM)
+ {
+ case 1:
+ Ver1.ushort = F1_Ver1_D;
+ Ver2.ushort = F1_Ver2_D;
+ break;
+ case 2:
+ Ver1.ushort = F2_Ver1_D;
+ Ver2.ushort = F2_Ver2_D;
+ break;
+ case 3:
+ Ver1.ushort = F3_Ver1_D;
+ Ver2.ushort = F3_Ver2_D;
+ break;
+ default:
+ break;
+ }
+
+ if( (Ver1.bytes.Month > 12) || (Ver1.bytes.Day > 31) || (Ver2.bytes.Year < 17) )
+ {
+ return FAILED;
+ }
+
+
+ *Month = Ver1.bytes.Month;
+ *Day = Ver1.bytes.Day;
+ *Year = Ver2.bytes.Year; // to check how many digits is needed
+ *Version = Ver2.bytes.Ver_num;
+
+ return PASSED;
+}
diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.h b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.h
new file mode 100644
index 000000000..a0e845296
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.h
@@ -0,0 +1,9 @@
+#ifndef FPGA_H
+#define FPGA_H
+
+int test_FPGA();
+int Test_FPGA_ReadBack(unsigned char FPGA_NUM, unsigned short Value, unsigned short *ReadBackValue);
+int FPGA_ReadVersion(unsigned char FPGA_NUM, unsigned char *Version, unsigned char *Year, unsigned char *Month, unsigned char *Day);
+
+
+#endif //FPGA_H
diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_Comm.h b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_Comm.h
new file mode 100644
index 000000000..12c43dae6
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_Comm.h
@@ -0,0 +1,886 @@
+#include <stdbool.h>
+
+//Address is = 16 Bit : 4bit_base , 3bit_fpga_base , 9bit_Address (Word1OrByte2)
+//Base Address 0X000
+
+#define BASE 0x00 << 12
+#define FPGA1_BASE (BASE | (0x00 << 0x09))
+#define FPGA2_BASE (BASE | (0x01 << 0x09))
+#define FPGA3_BASE (BASE | (0x02 << 0x09))
+
+//TODO update the addresses Word1OrByte2 !!!
+#define Word1OrByte2 0x01//0x01 for Word, 0x02 for Byte
+
+//Registers definitions
+
+// * * * * * * * * * * * * * * * * FPGA 1 * * * * * * * * * * * * * * * * //
+
+//Version1
+#define F1_Ver1_D (*((volatile short *)(FPGA1_BASE | (0x0 * Word1OrByte2)))) //Version of Fpga is held here
+
+//Version2
+#define F1_Ver2_D (*((volatile short *)(FPGA1_BASE | (0x8 * Word1OrByte2)))) //Version of Fpga is held here
+
+//GPI shorterrupt LS_01 Registers
+#define F1_GPI_LS1_D (*((volatile short *)(FPGA1_BASE | (0x10 * Word1OrByte2)))) //Reads the direct values that are currently being sent to the fpga.
+#define F1_GPI_LS1_L (*((volatile short *)(FPGA1_BASE | (0x11 * Word1OrByte2)))) //Value of the latched shorterrupts that have occurred
+#define F1_GPI_LS1_M (*((volatile short *)(FPGA1_BASE | (0x12 * Word1OrByte2)))) //Value of the shorterrupt mask, Default is 0x0000
+
+//GPI shorterrupt LS_02 Registers
+#define F1_GPI_LS2_D (*((volatile short *)(FPGA1_BASE | (0x18 * Word1OrByte2)))) //Reads the direct values that are currently being sent to the fpga.
+#define F1_GPI_LS2_L (*((volatile short *)(FPGA1_BASE | (0x19 * Word1OrByte2)))) //Value of the latched shorterrupts that have occurred
+#define F1_GPI_LS2_M (*((volatile short *)(FPGA1_BASE | (0x1a * Word1OrByte2)))) //Value of the shorterrupt mask, Default is 0x0000
+
+//GPI shorterrupt LS_03 Registers
+#define F1_GPI_LS3_D (*((volatile short *)(FPGA1_BASE | (0x20 * Word1OrByte2)))) //Reads the direct values that are currently being sent to the fpga.
+#define F1_GPI_LS3_L (*((volatile short *)(FPGA1_BASE | (0x21 * Word1OrByte2)))) //Value of the latched shorterrupts that have occurred
+#define F1_GPI_LS3_M (*((volatile short *)(FPGA1_BASE | (0x22 * Word1OrByte2)))) //Value of the shorterrupt mask, Default is 0x0000
+
+//Moto_Driver_NBUSY_register1
+#define F1_Moto_Driver_NBUSY1_D (*((volatile short *)(FPGA1_BASE | (0x28 * Word1OrByte2)))) //Reads the direct values that are currently being sent to the fpga.
+#define F1_Moto_Driver_NBUSY1_L (*((volatile short *)(FPGA1_BASE | (0x29 * Word1OrByte2)))) //Value of the latched shorterrupts that have occurred
+#define F1_Moto_Driver_NBUSY1_M (*((volatile short *)(FPGA1_BASE | (0x2a * Word1OrByte2)))) //Value of the shorterrupt mask, Default is 0x0000
+
+//Moto_Driver_NBUSY_register2
+#define F1_Moto_Driver_NBUSY2_D (*((volatile short *)(FPGA1_BASE | (0x30 * Word1OrByte2)))) //Reads the direct values that are currently being sent to the fpga.
+#define F1_Moto_Driver_NBUSY2_L (*((volatile short *)(FPGA1_BASE | (0x31 * Word1OrByte2)))) //Value of the latched shorterrupts that have occurred
+#define F1_Moto_Driver_NBUSY2_M (*((volatile short *)(FPGA1_BASE | (0x32 * Word1OrByte2)))) //Value of the shorterrupt mask, Default is 0x0000
+
+//GPI_EXTWINDER_and_TFEED_BRK
+#define F1_GPI_EXTWINDER_D (*((volatile short *)(FPGA1_BASE | (0x38 * Word1OrByte2)))) //Reads the direct values that are currently being sent to the fpga.
+#define F1_GPI_EXTWINDER_L (*((volatile short *)(FPGA1_BASE | (0x39 * Word1OrByte2)))) //Value of the latched shorterrupts that have occurred
+#define F1_GPI_EXTWINDER_M (*((volatile short *)(FPGA1_BASE | (0x3a * Word1OrByte2)))) //Value of the shorterrupt mask, Default is 0x0000
+
+//SPI_Busy_register1
+#define F1_SPI_Busy1_D (*((volatile short *)(FPGA1_BASE | (0x048 * Word1OrByte2)))) //Reads the direct values that are currently being sent to the fpga.
+#define F1_SPI_Busy1_L (*((volatile short *)(FPGA1_BASE | (0x049 * Word1OrByte2)))) //Value of the latched shorterrupts that have occurred
+#define F1_SPI_Busy1_M (*((volatile short *)(FPGA1_BASE | (0x04a * Word1OrByte2)))) //Value of the shorterrupt mask, Default is 0x0000
+
+//SPI_Busy_register2
+#define F1_SPI_Busy2_D (*((volatile short *)(FPGA1_BASE | (0x050 * Word1OrByte2)))) //Reads the direct values that are currently being sent to the fpga.
+#define F1_SPI_Busy2_L (*((volatile short *)(FPGA1_BASE | (0x051 * Word1OrByte2)))) //Value of the latched shorterrupts that have occurred
+#define F1_SPI_Busy2_M (*((volatile short *)(FPGA1_BASE | (0x052 * Word1OrByte2)))) //Value of the shorterrupt mask, Default is 0x0000
+
+//Moto_Driver_NSTBYRST_register1
+#define F1_Moto_Driver_NSTBYRST1 (*((volatile short *)(FPGA1_BASE | (0x059 * Word1OrByte2)))) //Writes to values. Readback thevaluessthat are currently in the GPO register
+
+//Moto_Driver_NSTBYRST_register2
+#define F1_Moto_Driver_NSTBYRST2 (*((volatile short *)(FPGA1_BASE | (0x061 * Word1OrByte2)))) //Writes to values. Readback thevaluessthat are currently in the GPO register
+
+//Moto_Driver_SW_register1
+#define F1_Moto_Driver_SW1 (*((volatile short *)(FPGA1_BASE | (0x069 * Word1OrByte2)))) //Writes to values. Readback thevaluessthat are currently in the GPO register
+
+//Moto_Driver_SW_register2
+#define F1_Moto_Driver_SW2 (*((volatile short *)(FPGA1_BASE | (0x071 * Word1OrByte2)))) //Writes to values. Readback thevaluessthat are currently in the GPO register
+
+//QEI_SCREW_ROTENC
+#define F1_SCREW_ROTENC_L (*((volatile short *)(FPGA1_BASE | (0x080 * Word1OrByte2)))) //Value of the lsb of the QEI register
+#define F1_SCREW_ROTENC_M (*((volatile short *)(FPGA1_BASE | (0x081 * Word1OrByte2)))) //10bits Value of the Msb of the QEI register, 1bit Direction of movement, 5bits Reserved
+#define F1_SCREW_ROTENC_I (*((volatile short *)(FPGA1_BASE | (0x082 * Word1OrByte2)))) //value of index counter
+
+//QEI_RSPARE_ROTENC
+#define F1_RSPARE_ROTENC_L (*((volatile short *)(FPGA1_BASE | (0x088 * Word1OrByte2)))) //Value of the lsb of the QEI register
+#define F1_RSPARE_ROTENC_M (*((volatile short *)(FPGA1_BASE | (0x089 * Word1OrByte2)))) //10bits Value of the Msb of the QEI register, 1bit Direction of movement, 5bits Reserved
+#define F1_RSPARE_ROTENC_I (*((volatile short *)(FPGA1_BASE | (0x08a * Word1OrByte2)))) //value of index counter
+
+//QEI_LSPARE1_ROTENC
+#define F1_LSPARE1_ROTENC_L (*((volatile short *)(FPGA1_BASE | (0x090 * Word1OrByte2)))) //Value of the lsb of the QEI register
+#define F1_LSPARE1_ROTENC_M (*((volatile short *)(FPGA1_BASE | (0x091 * Word1OrByte2)))) //10bits Value of the Msb of the QEI register, 1bit Direction of movement, 5bits Reserved
+#define F1_LSPARE1_ROTENC_I (*((volatile short *)(FPGA1_BASE | (0x092 * Word1OrByte2)))) //value of index counter
+
+//QEI_RSPEEDSENS_ROTENC
+#define F1_RSPEEDSENS_ROTENC_L (*((volatile short *)(FPGA1_BASE | (0x098 * Word1OrByte2)))) //Value of the lsb of the QEI register
+#define F1_RSPEEDSENS_ROTENC_M (*((volatile short *)(FPGA1_BASE | (0x099 * Word1OrByte2)))) //10bits Value of the Msb of the QEI register, 1bit Direction of movement, 5bits Reserved
+#define F1_RSPEEDSENS_ROTENC_I (*((volatile short *)(FPGA1_BASE | (0x09a * Word1OrByte2)))) //value of index counter
+
+//QEI_LSPARE2_ROTENC
+#define F1_LSPARE2_ROTENC_L (*((volatile short *)(FPGA1_BASE | (0x0A0 * Word1OrByte2)))) //Value of the lsb of the QEI register
+#define F1_LSPARE2_ROTENC_M (*((volatile short *)(FPGA1_BASE | (0x0A1 * Word1OrByte2)))) //10bits Value of the Msb of the QEI register, 1bit Direction of movement, 5bits Reserved
+#define F1_LSPARE2_ROTENC_I (*((volatile short *)(FPGA1_BASE | (0x0A2 * Word1OrByte2)))) //value of index counter
+
+//QEI_DRYER_LOADARM_ROTENC
+#define F1_DRYER_LOADARM_ROTENC_L (*((volatile short *)(FPGA1_BASE | (0x0a8 * Word1OrByte2)))) //Value of the lsb of the QEI register
+#define F1_DRYER_LOADARM_ROTENC_M (*((volatile short *)(FPGA1_BASE | (0x0a9 * Word1OrByte2)))) //10bits Value of the Msb of the QEI register, 1bit Direction of movement, 5bits Reserved
+#define F1_DRYER_LOADARM_ROTENC_I (*((volatile short *)(FPGA1_BASE | (0x0aa * Word1OrByte2)))) //value of index counter
+
+//SPI_MOTO_RLOADING_A1
+#define F1_MOTO_RLOADING_A1_TX_00 (*((volatile short *)(FPGA1_BASE | (0x100 * Word1OrByte2)))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F1_MOTO_RLOADING_A1_TX_01 (*((volatile short *)(FPGA1_BASE | (0x101 * Word1OrByte2)))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F1_MOTO_RLOADING_A1_RX_00 (*((volatile short *)(FPGA1_BASE | (0x102 * Word1OrByte2)))) //The 8 msb bits of the shifted in bits. The 8 msb bits of this register are zeros.
+#define F1_MOTO_RLOADING_A1_RX_01 (*((volatile short *)(FPGA1_BASE | (0x103 * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F1_MOTO_RLOADING_A1_WORDS (*((volatile short *)(FPGA1_BASE | (0x104 * Word1OrByte2)))) //The amount of spi words (usually byte sized) per transmission.
+
+//SPI_MOTO_RDRIVING_A1
+#define F1_MOTO_RDRIVING_A1_TX_00 (*((volatile short *)(FPGA1_BASE | (0x108 * Word1OrByte2)))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F1_MOTO_RDRIVING_A1_TX_01 (*((volatile short *)(FPGA1_BASE | (0x109 * Word1OrByte2)))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F1_MOTO_RDRIVING_A1_RX_00 (*((volatile short *)(FPGA1_BASE | (0x10A * Word1OrByte2)))) //The 8 msb bits of the shifted in bits. The 8 msb bits of this register are zeros.
+#define F1_MOTO_RDRIVING_A1_RX_01 (*((volatile short *)(FPGA1_BASE | (0x10B * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F1_MOTO_RDRIVING_A1_WORDS (*((volatile short *)(FPGA1_BASE | (0x10C * Word1OrByte2)))) //The amount of spi words (usually byte sized) per transmission.
+
+//SPI_F1_MOTO_LDRIVING_A1
+#define F1_MOTO_LDRIVING_A1_TX_00 (*((volatile short *)(FPGA1_BASE | (0x110 * Word1OrByte2)))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F1_MOTO_LDRIVING_A1_TX_01 (*((volatile short *)(FPGA1_BASE | (0x111 * Word1OrByte2)))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F1_MOTO_LDRIVING_A1_RX_00 (*((volatile short *)(FPGA1_BASE | (0x112 * Word1OrByte2)))) //The 8 msb bits of the shifted in bits. The 8 msb bits of this register are zeros.
+#define F1_MOTO_LDRIVING_A1_RX_01 (*((volatile short *)(FPGA1_BASE | (0x113 * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F1_MOTO_LDRIVING_A1_WORDS (*((volatile short *)(FPGA1_BASE | (0x114 * Word1OrByte2)))) //The amount of spi words (usually byte sized) per transmission.
+
+//SPI_F1_MOTO_LLOADING_A1
+#define F1_MOTO_LLOADING_A1_TX_00 (*((volatile short *)(FPGA1_BASE | (0x118 * Word1OrByte2)))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F1_MOTO_LLOADING_A1_TX_01 (*((volatile short *)(FPGA1_BASE | (0x119 * Word1OrByte2)))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F1_MOTO_LLOADING_A1_RX_00 (*((volatile short *)(FPGA1_BASE | (0x11A * Word1OrByte2)))) //The 8 msb bits of the shifted in bits. The 8 msb bits of this register are zeros.
+#define F1_MOTO_LLOADING_A1_RX_01 (*((volatile short *)(FPGA1_BASE | (0x11B * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F1_MOTO_LLOADING_A1_WORDS (*((volatile short *)(FPGA1_BASE | (0x11C * Word1OrByte2)))) //The amount of spi words (usually byte sized) per transmission.
+
+//SPI_F1_MOTO_DRYER_LOADARM_A1
+#define F1_MOTO_DRYER_LOADARM_A1_TX_00 (*((volatile short *)(FPGA1_BASE | (0x120 * Word1OrByte2)))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F1_MOTO_DRYER_LOADARM_A1_TX_01 (*((volatile short *)(FPGA1_BASE | (0x121 * Word1OrByte2)))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F1_MOTO_DRYER_LOADARM_A1_RX_00 (*((volatile short *)(FPGA1_BASE | (0x122 * Word1OrByte2)))) //The 8 msb bits of the shifted in bits. The 8 msb bits of this register are zeros.
+#define F1_MOTO_DRYER_LOADARM_A1_RX_01 (*((volatile short *)(FPGA1_BASE | (0x123 * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F1_MOTO_DRYER_LOADARM_A1_WORDS (*((volatile short *)(FPGA1_BASE | (0x124 * Word1OrByte2)))) //The amount of spi words (usually byte sized) per transmission.
+
+//SPI_F1_MOTO_DRYER_DRIVING_A1
+#define F1_MOTO_DRYER_DRIVING_A1_TX_00 (*((volatile short *)(FPGA1_BASE | (0x128 * Word1OrByte2)))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F1_MOTO_DRYER_DRIVING_A1_TX_01 (*((volatile short *)(FPGA1_BASE | (0x129 * Word1OrByte2)))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F1_MOTO_DRYER_DRIVING_A1_RX_00 (*((volatile short *)(FPGA1_BASE | (0x12A * Word1OrByte2)))) //The 8 msb bits of the shifted in bits. The 8 msb bits of this register are zeros.
+#define F1_MOTO_DRYER_DRIVING_A1_RX_01 (*((volatile short *)(FPGA1_BASE | (0x12B * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F1_MOTO_DRYER_DRIVING_A1_WORDS (*((volatile short *)(FPGA1_BASE | (0x12C * Word1OrByte2)))) //The amount of spi words (usually byte sized) per transmission.
+
+//SPI_F1_MOTO_DH_CLEANHEAD_A1
+#define F1_MOTO_DH_CLEANHEAD_A1_TX_00 (*((volatile short *)(FPGA1_BASE | (0x130 * Word1OrByte2)))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F1_MOTO_DH_CLEANHEAD_A1_TX_01 (*((volatile short *)(FPGA1_BASE | (0x131 * Word1OrByte2)))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F1_MOTO_DH_CLEANHEAD_A1_RX_00 (*((volatile short *)(FPGA1_BASE | (0x132 * Word1OrByte2)))) //The 8 msb bits of the shifted in bits. The 8 msb bits of this register are zeros.
+#define F1_MOTO_DH_CLEANHEAD_A1_RX_01 (*((volatile short *)(FPGA1_BASE | (0x133 * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F1_MOTO_DH_CLEANHEAD_A1_WORDS (*((volatile short *)(FPGA1_BASE | (0x134 * Word1OrByte2)))) //The amount of spi words (usually byte sized) per transmission.
+
+//SPI_F1_MOTO_DH_CLEANMECH_A1
+#define F1_MOTO_DH_CLEANMECH_A1_TX_00 (*((volatile short *)(FPGA1_BASE | (0x138 * Word1OrByte2)))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F1_MOTO_DH_CLEANMECH_A1_TX_01 (*((volatile short *)(FPGA1_BASE | (0x139 * Word1OrByte2)))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F1_MOTO_DH_CLEANMECH_A1_RX_00 (*((volatile short *)(FPGA1_BASE | (0x13A * Word1OrByte2)))) //The 8 msb bits of the shifted in bits. The 8 msb bits of this register are zeros.
+#define F1_MOTO_DH_CLEANMECH_A1_RX_01 (*((volatile short *)(FPGA1_BASE | (0x13B * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F1_MOTO_DH_CLEANMECH_A1_WORDS (*((volatile short *)(FPGA1_BASE | (0x13C * Word1OrByte2)))) //The amount of spi words (usually byte sized) per transmission.
+
+//SPI_F1_MOTO_SCREW_A1
+#define F1_MOTO_SCREW_A1_TX_00 (*((volatile short *)(FPGA1_BASE | (0x140 * Word1OrByte2)))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F1_MOTO_SCREW_A1_TX_01 (*((volatile short *)(FPGA1_BASE | (0x141 * Word1OrByte2)))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F1_MOTO_SCREW_A1_RX_00 (*((volatile short *)(FPGA1_BASE | (0x142 * Word1OrByte2)))) //The 8 msb bits of the shifted in bits. The 8 msb bits of this register are zeros.
+#define F1_MOTO_SCREW_A1_RX_01 (*((volatile short *)(FPGA1_BASE | (0x143 * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F1_MOTO_SCREW_A1_WORDS (*((volatile short *)(FPGA1_BASE | (0x144 * Word1OrByte2)))) //The amount of spi words (usually byte sized) per transmission.
+
+//SPI_F1_MOTO_WINDER_A1
+#define F1_MOTO_WINDER_A1_TX_00 (*((volatile short *)(FPGA1_BASE | (0x148 * Word1OrByte2)))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F1_MOTO_WINDER_A1_TX_01 (*((volatile short *)(FPGA1_BASE | (0x149 * Word1OrByte2)))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F1_MOTO_WINDER_A1_RX_00 (*((volatile short *)(FPGA1_BASE | (0x14A * Word1OrByte2)))) //The 8 msb bits of the shifted in bits. The 8 msb bits of this register are zeros.
+#define F1_MOTO_WINDER_A1_RX_01 (*((volatile short *)(FPGA1_BASE | (0x14B * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F1_MOTO_WINDER_A1_WORDS (*((volatile short *)(FPGA1_BASE | (0x14C * Word1OrByte2)))) //The amount of spi words (usually byte sized) per transmission.
+
+//SPI_MOTO_RLOADARM_A1
+#define F1_MOTO_RLOADARM_A1_TX_00 (*((volatile short *)(FPGA1_BASE | (0x150 * Word1OrByte2)))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F1_MOTO_RLOADARM_A1_TX_01 (*((volatile short *)(FPGA1_BASE | (0x151 * Word1OrByte2)))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F1_MOTO_RLOADARM_A1_RX_00 (*((volatile short *)(FPGA1_BASE | (0x152 * Word1OrByte2)))) //The 8 msb bits of the shifted in bits. The 8 msb bits of this register are zeros.
+#define F1_MOTO_RLOADARM_A1_RX_01 (*((volatile short *)(FPGA1_BASE | (0x153 * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F1_MOTO_RLOADARM_A1_WORDS (*((volatile short *)(FPGA1_BASE | (0x154 * Word1OrByte2)))) //The amount of spi words (usually byte sized) per transmission.
+
+//SPI_MOTO_RDANCER_A1
+#define F1_MOTO_RDANCER_A1_TX_00 (*((volatile short *)(FPGA1_BASE | (0x158 * Word1OrByte2)))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F1_MOTO_RDANCER_A1_TX_01 (*((volatile short *)(FPGA1_BASE | (0x159 * Word1OrByte2)))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F1_MOTO_RDANCER_A1_RX_00 (*((volatile short *)(FPGA1_BASE | (0x15A * Word1OrByte2)))) //The 8 msb bits of the shifted in bits. The 8 msb bits of this register are zeros.
+#define F1_MOTO_RDANCER_A1_RX_01 (*((volatile short *)(FPGA1_BASE | (0x15B * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F1_MOTO_RDANCER_A1_WORDS (*((volatile short *)(FPGA1_BASE | (0x15C * Word1OrByte2)))) //The amount of spi words (usually byte sized) per transmission.
+
+//SPI_MOTO_LDANCER1_A1
+#define F1_MOTO_LDANCER1_A1_TX_00 (*((volatile short *)(FPGA1_BASE | (0x160 * Word1OrByte2)))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F1_MOTO_LDANCER1_A1_TX_01 (*((volatile short *)(FPGA1_BASE | (0x161 * Word1OrByte2)))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F1_MOTO_LDANCER1_A1_RX_00 (*((volatile short *)(FPGA1_BASE | (0x162 * Word1OrByte2)))) //The 8 msb bits of the shifted in bits. The 8 msb bits of this register are zeros.
+#define F1_MOTO_LDANCER1_A1_RX_01 (*((volatile short *)(FPGA1_BASE | (0x163 * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F1_MOTO_LDANCER1_A1_WORDS (*((volatile short *)(FPGA1_BASE | (0x164 * Word1OrByte2)))) //The amount of spi words (usually byte sized) per transmission.
+
+//SPI_MOTO_LDANCER2_A1
+#define F1_MOTO_LDANCER2_A1_TX_00 (*((volatile short *)(FPGA1_BASE | (0x168 * Word1OrByte2)))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F1_MOTO_LDANCER2_A1_TX_01 (*((volatile short *)(FPGA1_BASE | (0x169 * Word1OrByte2)))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F1_MOTO_LDANCER2_A1_RX_00 (*((volatile short *)(FPGA1_BASE | (0x16A * Word1OrByte2)))) //The 8 msb bits of the shifted in bits. The 8 msb bits of this register are zeros.
+#define F1_MOTO_LDANCER2_A1_RX_01 (*((volatile short *)(FPGA1_BASE | (0x16B * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F1_MOTO_LDANCER2_A1_WORDS (*((volatile short *)(FPGA1_BASE | (0x16C * Word1OrByte2)))) //The amount of spi words (usually byte sized) per transmission.
+
+//SPI_MOTO_DRYER_LID_A1
+#define F1_MOTO_DRYER_LID_A1_TX_00 (*((volatile short *)(FPGA1_BASE | (0x170 * Word1OrByte2)))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F1_MOTO_DRYER_LID_A1_TX_01 (*((volatile short *)(FPGA1_BASE | (0x171 * Word1OrByte2)))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F1_MOTO_DRYER_LID_A1_RX_00 (*((volatile short *)(FPGA1_BASE | (0x172 * Word1OrByte2)))) //The 8 msb bits of the shifted in bits. The 8 msb bits of this register are zeros.
+#define F1_MOTO_DRYER_LID_A1_RX_01 (*((volatile short *)(FPGA1_BASE | (0x173 * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F1_MOTO_DRYER_LID_A1_WORDS (*((volatile short *)(FPGA1_BASE | (0x174 * Word1OrByte2)))) //The amount of spi words (usually byte sized) per transmission.
+
+//SPI_MOTO_DH_LID_A1
+#define F1_MOTO_DH_LID_A1_TX_00 (*((volatile short *)(FPGA1_BASE | (0x178 * Word1OrByte2)))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F1_MOTO_DH_LID_A1_TX_01 (*((volatile short *)(FPGA1_BASE | (0x179 * Word1OrByte2)))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F1_MOTO_DH_LID_A1_RX_00 (*((volatile short *)(FPGA1_BASE | (0x17A * Word1OrByte2)))) //The 8 msb bits of the shifted in bits. The 8 msb bits of this register are zeros.
+#define F1_MOTO_DH_LID_A1_RX_01 (*((volatile short *)(FPGA1_BASE | (0x17B * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F1_MOTO_DH_LID_A1_WORDS (*((volatile short *)(FPGA1_BASE | (0x17C * Word1OrByte2)))) //The amount of spi words (usually byte sized) per transmission.
+
+//SPI_MOTO_LPIVOT1_A1
+#define F1_MOTO_LPIVOT1_A1_TX_00 (*((volatile short *)(FPGA1_BASE | (0x180 * Word1OrByte2)))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F1_MOTO_LPIVOT1_A1_TX_01 (*((volatile short *)(FPGA1_BASE | (0x181 * Word1OrByte2)))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F1_MOTO_LPIVOT1_A1_RX_00 (*((volatile short *)(FPGA1_BASE | (0x182 * Word1OrByte2)))) //The 8 msb bits of the shifted in bits. The 8 msb bits of this register are zeros.
+#define F1_MOTO_LPIVOT1_A1_RX_01 (*((volatile short *)(FPGA1_BASE | (0x183 * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F1_MOTO_LPIVOT1_A1_WORDS (*((volatile short *)(FPGA1_BASE | (0x184 * Word1OrByte2)))) //The amount of spi words (usually byte sized) per transmission.
+
+//SSI
+#define F1_LDANCER1_ROTENC_DATA_p_RX_msb (*((volatile short *)(FPGA1_BASE | (0x190 * Word1OrByte2)))) //16 bit MSB if nessesary
+#define F1_LDANCER1_ROTENC_DATA_p_RX_lsb (*((volatile short *)(FPGA1_BASE | (0x191 * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F1_LDANCER1_ROTENC_DATA_p_TX (*((volatile short *)(FPGA1_BASE | (0x197 * Word1OrByte2)))) //This register triggers a TX transmission
+
+#define F1_LDANCER2_ROTENC_DATA_p_RX_msb (*((volatile short *)(FPGA1_BASE | (0x198 * Word1OrByte2)))) //16 bit MSB if nessesary
+#define F1_LDANCER2_ROTENC_DATA_p_RX_lsb (*((volatile short *)(FPGA1_BASE | (0x199 * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F1_LDANCER2_ROTENC_DATA_p_TX (*((volatile short *)(FPGA1_BASE | (0x19F * Word1OrByte2)))) //This register triggers a TX transmission
+
+#define F1_LSPARE_ROTENC_DATA_p_RX_msb (*((volatile short *)(FPGA1_BASE | (0x1a0 * Word1OrByte2)))) //16 bit MSB if nessesary
+#define F1_LSPARE_ROTENC_DATA_p_RX_lsb (*((volatile short *)(FPGA1_BASE | (0x1a1 * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F1_LSPARE_ROTENC_DATA_p_TX (*((volatile short *)(FPGA1_BASE | (0x1A7 * Word1OrByte2)))) //This register triggers a TX transmission
+
+#define F1_RDANCER_ROTENC_DATA_p_RX_msb (*((volatile short *)(FPGA1_BASE | (0x1a8 * Word1OrByte2)))) //16 bit MSB if nessesary
+#define F1_RDANCER_ROTENC_DATA_p_RX_lsb (*((volatile short *)(FPGA1_BASE | (0x1a9 * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F1_RDANCER_ROTENC_DATA_p_TX (*((volatile short *)(FPGA1_BASE | (0x1AF * Word1OrByte2)))) //This register triggers a TX transmission
+
+#define F1_RSPARE_ROTENC_DATA_p_RX_msb (*((volatile short *)(FPGA1_BASE | (0x1b0 * Word1OrByte2)))) //16 bit MSB if nessesary
+#define F1_RSPARE_ROTENC_DATA_p_RX_lsb (*((volatile short *)(FPGA1_BASE | (0x1b1 * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F1_RSPARE_ROTENC_DATA_p_TX (*((volatile short *)(FPGA1_BASE | (0x1B7 * Word1OrByte2)))) //This register triggers a TX transmission
+
+#define F1_Tacho_reg0 (*((volatile short *)(FPGA1_BASE | (0x1E0 * Word1OrByte2)))) //This Register stores the Tacho counter
+#define F1_Tacho_reg1 (*((volatile short *)(FPGA1_BASE | (0x1E1 * Word1OrByte2)))) //This Register stores the Tacho counter
+#define F1_Tacho_reg2 (*((volatile short *)(FPGA1_BASE | (0x1E2 * Word1OrByte2)))) //This Register stores the Tacho counter
+#define F1_Tacho_reg3 (*((volatile short *)(FPGA1_BASE | (0x1E3 * Word1OrByte2)))) //This Register stores the Tacho counter
+#define F1_Tacho_reg4 (*((volatile short *)(FPGA1_BASE | (0x1E4 * Word1OrByte2)))) //This Register stores the Tacho counter
+#define F1_Tacho_reg5 (*((volatile short *)(FPGA1_BASE | (0x1E5 * Word1OrByte2)))) //This Register stores the Tacho counter
+#define F1_Tacho_reg6 (*((volatile short *)(FPGA1_BASE | (0x1E6 * Word1OrByte2)))) //This Register stores the Tacho counter
+#define F1_Tacho_reg7 (*((volatile short *)(FPGA1_BASE | (0x1E7 * Word1OrByte2)))) //This Register stores the Tacho counter
+
+//Prescaler
+#define F1_Prescaler1_reg1 (*((volatile short *)(FPGA1_BASE | (0x1F0 * Word1OrByte2)))) //Parameter for prescaler divisions - 6bit ssi high duty cycle value for prescaler
+#define F1_Prescaler1_reg2 (*((volatile short *)(FPGA1_BASE | (0x1F1 * Word1OrByte2)))) //Parameter for prescaler divisions - 6bit ssi low duty cycle value for prescaler
+#define F1_Prescaler1_reg3 (*((volatile short *)(FPGA1_BASE | (0x1F2 * Word1OrByte2)))) //Parameter for prescaler divisions - 3bit spi moto low duty cycle value for pmw
+#define F1_Prescaler1_reg4 (*((volatile short *)(FPGA1_BASE | (0x1F3 * Word1OrByte2)))) //Parameter for prescaler divisions - 3bit spi moto high duty cycle value for pmw
+#define F1_Prescaler1_reg5 (*((volatile short *)(FPGA1_BASE | (0x1F4 * Word1OrByte2)))) //Parameter for prescaler divisions - amount of prescaled clocks for counter of signal All Tachos
+#define F1_Prescaler1_reg6 (*((volatile short *)(FPGA1_BASE | (0x1F5 * Word1OrByte2)))) //Parameter for prescaler divisions
+#define F1_Prescaler1_reg7 (*((volatile short *)(FPGA1_BASE | (0x1F6 * Word1OrByte2)))) //Parameter for prescaler divisions
+#define F1_Prescaler1_reg8 (*((volatile short *)(FPGA1_BASE | (0x1F7 * Word1OrByte2)))) //Parameter for prescaler divisions
+
+//Test
+#define F1_Test (*((volatile short *)(FPGA1_BASE | (0x1f8 * Word1OrByte2)))) //Readback not -gives the inverse of the written to value
+
+// * * * * * * * * * * * * * * * * FPGA 2 * * * * * * * * * * * * * * * * //
+//Version1
+#define F2_Ver1_D (*((volatile short *)(FPGA2_BASE | (0x00 * Word1OrByte2)))) //Version of Fpga is held here
+
+//Version2
+#define F2_Ver2_D (*((volatile short *)(FPGA2_BASE | (0x08 * Word1OrByte2)))) //Version of Fpga is held here
+
+//GPI shorterrupt LS_01 Registers
+#define F2_GPI_LS1_D (*((volatile short *)(FPGA2_BASE | (0x10 * Word1OrByte2)))) //Reads the direct values that are currently being sent to the fpga.
+#define F2_GPI_LS1_L (*((volatile short *)(FPGA2_BASE | (0x11 * Word1OrByte2)))) //Value of the latched shorterrupts that have occurred
+#define F2_GPI_LS1_M (*((volatile short *)(FPGA2_BASE | (0x12 * Word1OrByte2)))) //Value of the shorterrupt mask, Default is 0x0000
+
+//GPI shorterrupt LS_02 Registers
+#define F2_GPI_LS2_D (*((volatile short *)(FPGA2_BASE | (0x18 * Word1OrByte2)))) //Reads the direct values that are currently being sent to the fpga.
+#define F2_GPI_LS2_L (*((volatile short *)(FPGA2_BASE | (0x19 * Word1OrByte2)))) //Value of the latched shorterrupts that have occurred
+#define F2_GPI_LS2_M (*((volatile short *)(FPGA2_BASE | (0x1a * Word1OrByte2)))) //Value of the shorterrupt mask, Default is 0x0000
+
+//GPI shorterrupt LS_03 Registers
+#define F2_GPI_LS3_D (*((volatile short *)(FPGA2_BASE | (0x20 * Word1OrByte2)))) //Reads the direct values that are currently being sent to the fpga.
+#define F2_GPI_LS3_L (*((volatile short *)(FPGA2_BASE | (0x21 * Word1OrByte2)))) //Value of the latched shorterrupts that have occurred
+#define F2_GPI_LS3_M (*((volatile short *)(FPGA2_BASE | (0x22 * Word1OrByte2)))) //Value of the shorterrupt mask, Default is 0x0000
+
+//Moto_Driver_NBUSY_register1
+#define F2_Moto_Driver_NBUSY1_D (*((volatile short *)(FPGA2_BASE | (0x28 * Word1OrByte2)))) //Reads the direct values that are currently being sent to the fpga.
+#define F2_Moto_Driver_NBUSY1_L (*((volatile short *)(FPGA2_BASE | (0x29 * Word1OrByte2)))) //Value of the latched shorterrupts that have occurred
+#define F2_Moto_Driver_NBUSY1_M (*((volatile short *)(FPGA2_BASE | (0x2a * Word1OrByte2)))) //Value of the shorterrupt mask, Default is 0x0000
+
+//DISPENSER_VALVE_IN
+#define F2_DISPENSER_VALVE_IN_Direct (*((volatile short *)(FPGA2_BASE | (0x030 * Word1OrByte2)))) //Reads the direct values that are currently being sent to the fpga.
+#define F2_DISPENSER_VALVE_IN_Latched (*((volatile short *)(FPGA2_BASE | (0x031 * Word1OrByte2)))) //Value of the latched shorterrupts that have occurred
+#define F2_DISPENSER_VALVE_IN_Mask (*((volatile short *)(FPGA2_BASE | (0x032 * Word1OrByte2)))) //Value of the shorterrupt mask, Default is 0x0000
+
+//GPI_REGISTER1
+#define F2_GPI_REGISTER1_Direct (*((volatile short *)(FPGA2_BASE | (0x038 * Word1OrByte2)))) //Reads the direct values that are currently being sent to the fpga.
+#define F2_GPI_REGISTER1_Latched (*((volatile short *)(FPGA2_BASE | (0x039 * Word1OrByte2)))) //Value of the latched shorterrupts that have occurred
+#define F2_GPI_REGISTER1_Mask (*((volatile short *)(FPGA2_BASE | (0x03A * Word1OrByte2)))) //Value of the shorterrupt mask, Default is 0x0000
+
+//LS_04
+#define F2_LS_04_Direct (*((volatile short *)(FPGA2_BASE | (0x040 * Word1OrByte2)))) //Version of Fpga is held here
+#define F2_LS_04_Latched (*((volatile short *)(FPGA2_BASE | (0x041 * Word1OrByte2)))) //Value of the latched shorterrupts that have occurred
+#define F2_LS_04_Mask (*((volatile short *)(FPGA2_BASE | (0x042 * Word1OrByte2)))) //Value of the shorterrupt mask, Default is 0x0000
+
+//SPI_Busy_register1
+#define F2_SPI_Busy1_Direct (*((volatile short *)(FPGA2_BASE | (0x048 * Word1OrByte2)))) //Reads the direct values that are currently being sent to the fpga.
+#define F2_SPI_Busy1_Latched (*((volatile short *)(FPGA2_BASE | (0x049 * Word1OrByte2)))) //Value of the latched shorterrupts that have occurred
+#define F2_SPI_Busy1_Mask (*((volatile short *)(FPGA2_BASE | (0x04a * Word1OrByte2)))) //Value of the shorterrupt mask, Default is 0x0000
+
+//SPI_Busy_register2
+#define F2_SPI_Busy2_Direct (*((volatile short *)(FPGA2_BASE | (0x050 * Word1OrByte2)))) //Reads the direct values that are currently being sent to the fpga.
+#define F2_SPI_Busy2_Latched (*((volatile short *)(FPGA2_BASE | (0x051 * Word1OrByte2)))) //Value of the latched shorterrupts that have occurred
+#define F2_SPI_Busy2_Mask (*((volatile short *)(FPGA2_BASE | (0x052 * Word1OrByte2)))) //Value of the shorterrupt mask, Default is 0x0000
+
+//Moto_Driver_NSTBYRST_register1
+#define F2_Moto_Driver_NSTBYRST1 (*((volatile short *)(FPGA2_BASE | (0x059 * Word1OrByte2)))) //Writes to values. Readback thevaluessthat are currently in the GPO register
+
+//DISPENSER_VALVE_OUT
+#define F2_DISPENSER_VALVE_OUT (*((volatile short *)(FPGA2_BASE | (0x061 * Word1OrByte2)))) //Writes to values. Readback thevaluessthat are currently in the GPO register
+
+//Moto_Driver_SW_register1
+#define F2_Moto_Driver_SW1 (*((volatile short *)(FPGA2_BASE | (0x069 * Word1OrByte2)))) //Writes to values. Readback thevaluessthat are currently in the GPO register
+
+//CTRL
+#define F2_CTRL (*((volatile short *)(FPGA2_BASE | (0x071 * Word1OrByte2)))) //Writes to values. Readback thevaluessthat are currently in the GPO register
+
+//GPO_REGISTER
+#define F2_GPO_REGISTER (*((volatile short *)(FPGA2_BASE | (0x079 * Word1OrByte2)))) //Writes to values. Readback thevaluessthat are currently in the GPO register
+#define F2_Prescaler1_reg9 (*((volatile short *)(FPGA2_BASE | (0x081 * Word1OrByte2)))) //Parameter for prescaler divisions -amount of prescaled clocks for counter of signal Blower Tacho.
+#define F2_Prescaler1_reg10 (*((volatile short *)(FPGA2_BASE | (0x089 * Word1OrByte2)))) //Parameter for prescaler divisions -amount of prescaled clocks clk input of pwm of signal F2_GPO_BLOWER_PWM. 8bits
+#define F2_VALVE_VALUE (*((volatile short *)(FPGA2_BASE | (0x091 * Word1OrByte2)))) //This register holds the vlave values for the vlave pulse counter
+
+//SSI
+#define F2_DISPENSER_ROTENC_DATA_p_1_RX_msb (*((volatile short *)(FPGA2_BASE | (0x0C0 * Word1OrByte2)))) //16 bit MSB if nessesary
+#define F2_DISPENSER_ROTENC_DATA_p_1_RX_lsb (*((volatile short *)(FPGA2_BASE | (0x0C1 * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F2_DISPENSER_ROTENC_DATA_p_1_TX (*((volatile short *)(FPGA2_BASE | (0x0C7 * Word1OrByte2)))) //This register triggers a TX transmission
+
+#define F2_DISPENSER_ROTENC_DATA_p_2_RX_msb (*((volatile short *)(FPGA2_BASE | (0x0C8 * Word1OrByte2)))) //16 bit MSB if nessesary
+#define F2_DISPENSER_ROTENC_DATA_p_2_RX_lsb (*((volatile short *)(FPGA2_BASE | (0x0C9 * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F2_DISPENSER_ROTENC_DATA_p_2_TX (*((volatile short *)(FPGA2_BASE | (0x0Cf * Word1OrByte2)))) //This register triggers a TX transmission
+
+#define F2_DISPENSER_ROTENC_DATA_p_3_RX_msb (*((volatile short *)(FPGA2_BASE | (0x0D0 * Word1OrByte2)))) //16 bit MSB if nessesary
+#define F2_DISPENSER_ROTENC_DATA_p_3_RX_lsb (*((volatile short *)(FPGA2_BASE | (0x0D1 * Word1OrByte2)))) //16 bit MSB if nessesary
+#define F2_DISPENSER_ROTENC_DATA_p_3_TX (*((volatile short *)(FPGA2_BASE | (0x0D7 * Word1OrByte2)))) //This register triggers a TX transmission
+
+#define F2_DISPENSER_ROTENC_DATA_p_4_RX_msb (*((volatile short *)(FPGA2_BASE | (0x0D8 * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F2_DISPENSER_ROTENC_DATA_p_4_RX_lsb (*((volatile short *)(FPGA2_BASE | (0x0D9 * Word1OrByte2)))) //16 bit MSB if nessesary
+#define F2_DISPENSER_ROTENC_DATA_p_4_TX (*((volatile short *)(FPGA2_BASE | (0x0DF * Word1OrByte2)))) //This register triggers a TX transmission
+
+#define F2_DISPENSER_ROTENC_DATA_p_5_RX_msb (*((volatile short *)(FPGA2_BASE | (0x0E0 * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F2_DISPENSER_ROTENC_DATA_p_5_RX_lsb (*((volatile short *)(FPGA2_BASE | (0x0E1 * Word1OrByte2)))) //16 bit MSB if nessesary
+#define F2_DISPENSER_ROTENC_DATA_p_5_TX (*((volatile short *)(FPGA2_BASE | (0x0E7 * Word1OrByte2)))) //This register triggers a TX transmission
+
+#define F2_DISPENSER_ROTENC_DATA_p_6_RX_msb (*((volatile short *)(FPGA2_BASE | (0x0E8 * Word1OrByte2)))) //16 bit MSB if nessesary
+#define F2_DISPENSER_ROTENC_DATA_p_6_RX_lsb (*((volatile short *)(FPGA2_BASE | (0x0E9 * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F2_DISPENSER_ROTENC_DATA_p_6_TX (*((volatile short *)(FPGA2_BASE | (0x0EF * Word1OrByte2)))) //This register triggers a TX transmission
+
+#define F2_DISPENSER_ROTENC_DATA_p_7_RX_msb (*((volatile short *)(FPGA2_BASE | (0x0F0 * Word1OrByte2)))) //16 bit MSB if nessesary
+#define F2_DISPENSER_ROTENC_DATA_p_7_RX_lsb (*((volatile short *)(FPGA2_BASE | (0x0F1 * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F2_DISPENSER_ROTENC_DATA_p_7_TX (*((volatile short *)(FPGA2_BASE | (0x0F7 * Word1OrByte2)))) //This register triggers a TX transmission
+
+#define F2_DISPENSER_ROTENC_DATA_p_8_RX_msb (*((volatile short *)(FPGA2_BASE | (0x0F8 * Word1OrByte2)))) //16 bit MSB if nessesary
+#define F2_DISPENSER_ROTENC_DATA_p_8_RX_lsb (*((volatile short *)(FPGA2_BASE | (0x0F9 * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F2_DISPENSER_ROTENC_DATA_p_8_TX (*((volatile short *)(FPGA2_BASE | (0x0FF * Word1OrByte2)))) //This register triggers a TX transmission
+
+//ANALOG_DYEINGH_TEMP1_1
+#define F2_ANALOG_DYEINGH_TEMP1_1_TX_00 (*((volatile short *)(FPGA2_BASE | (0x100 * Word1OrByte2)))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F2_ANALOG_DYEINGH_TEMP1_1_TX_01 (*((volatile short *)(FPGA2_BASE | (0x101 * Word1OrByte2)))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F2_ANALOG_DYEINGH_TEMP1_1_RX_00 (*((volatile short *)(FPGA2_BASE | (0x102 * Word1OrByte2)))) //The 8 msb bits of the shifted in bits. The 8 msb bits of this register are zeros.
+#define F2_ANALOG_DYEINGH_TEMP1_1_RX_01 (*((volatile short *)(FPGA2_BASE | (0x103 * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F2_ANALOG_DYEINGH_TEMP1_1_WORDS (*((volatile short *)(FPGA1_BASE | (0x104 * Word1OrByte2)))) //The amount of spi words (usually byte sized) per transmission.
+
+//AN_ENCLOSURETEMP1_1
+#define F2_AN_ENCLOSURETEMP1_1_TX_00 (*((volatile short *)(FPGA2_BASE | (0x108 * Word1OrByte2)))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F2_AN_ENCLOSURETEMP1_1_TX_01 (*((volatile short *)(FPGA2_BASE | (0x109 * Word1OrByte2)))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F2_AN_ENCLOSURETEMP1_1_RX_00 (*((volatile short *)(FPGA2_BASE | (0x10A * Word1OrByte2)))) //The 8 msb bits of the shifted in bits. The 8 msb bits of this register are zeros.
+#define F2_AN_ENCLOSURETEMP1_1_RX_01 (*((volatile short *)(FPGA2_BASE | (0x10B * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F2_AN_ENCLOSURETEMP1_1_WORDS (*((volatile short *)(FPGA1_BASE | (0x10C * Word1OrByte2)))) //The amount of spi words (usually byte sized) per transmission.
+
+//ANALOG_DYEINGH_TEMP2
+#define F2_ANALOG_DYEINGH_TEMP2_TX_00 (*((volatile short *)(FPGA2_BASE | (0x110 * Word1OrByte2)))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F2_ANALOG_DYEINGH_TEMP2_TX_01 (*((volatile short *)(FPGA2_BASE | (0x111 * Word1OrByte2)))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F2_ANALOG_DYEINGH_TEMP2_RX_00 (*((volatile short *)(FPGA2_BASE | (0x112 * Word1OrByte2)))) //The 8 msb bits of the shifted in bits. The 8 msb bits of this register are zeros.
+#define F2_ANALOG_DYEINGH_TEMP2_RX_01 (*((volatile short *)(FPGA2_BASE | (0x113 * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F2_ANALOG_DYEINGH_TEMP2_WORDS (*((volatile short *)(FPGA1_BASE | (0x104 * Word1OrByte2)))) //The amount of spi words (usually byte sized) per transmission.
+
+//AN_ENCLOSURETEMP2_1
+#define F2_AN_ENCLOSURETEMP2_1_TX_00 (*((volatile short *)(FPGA2_BASE | (0x118 * Word1OrByte2)))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F2_AN_ENCLOSURETEMP2_1_TX_01 (*((volatile short *)(FPGA2_BASE | (0x119 * Word1OrByte2)))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F2_AN_ENCLOSURETEMP2_1_RX_00 (*((volatile short *)(FPGA2_BASE | (0x11A * Word1OrByte2)))) //The 8 msb bits of the shifted in bits. The 8 msb bits of this register are zeros.
+#define F2_AN_ENCLOSURETEMP2_1_RX_01 (*((volatile short *)(FPGA2_BASE | (0x11B * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F2_AN_ENCLOSURETEMP2_1_WORDS (*((volatile short *)(FPGA1_BASE | (0x11C * Word1OrByte2)))) //The amount of spi words (usually byte sized) per transmission.
+
+//ANALOG_DYEINGH_TEMP3
+#define F2_ANALOG_DYEINGH_TEMP3_1_TX_00 (*((volatile short *)(FPGA2_BASE | (0x120 * Word1OrByte2)))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F2_ANALOG_DYEINGH_TEMP3_1_TX_01 (*((volatile short *)(FPGA2_BASE | (0x121 * Word1OrByte2)))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F2_ANALOG_DYEINGH_TEMP3_1_RX_00 (*((volatile short *)(FPGA2_BASE | (0x122 * Word1OrByte2)))) //The 8 msb bits of the shifted in bits. The 8 msb bits of this register are zeros.
+#define F2_ANALOG_DYEINGH_TEMP3_1_RX_01 (*((volatile short *)(FPGA2_BASE | (0x123 * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F2_ANALOG_DYEINGH_TEMP3_1_WORDS (*((volatile short *)(FPGA1_BASE | (0x124 * Word1OrByte2)))) //The amount of spi words (usually byte sized) per transmission.
+
+//AN_ENCLOSURETEMP3_1
+#define F2_AN_ENCLOSURETEMP3_1_TX_00 (*((volatile short *)(FPGA2_BASE | (0x128 * Word1OrByte2)))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F2_AN_ENCLOSURETEMP3_1_TX_01 (*((volatile short *)(FPGA2_BASE | (0x129 * Word1OrByte2)))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F2_AN_ENCLOSURETEMP3_1_RX_00 (*((volatile short *)(FPGA2_BASE | (0x12A * Word1OrByte2)))) //The 8 msb bits of the shifted in bits. The 8 msb bits of this register are zeros.
+#define F2_AN_ENCLOSURETEMP3_1_RX_01 (*((volatile short *)(FPGA2_BASE | (0x12B * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F2_AN_ENCLOSURETEMP3_1_WORDS (*((volatile short *)(FPGA1_BASE | (0x12C * Word1OrByte2)))) //The amount of spi words (usually byte sized) per transmission.
+
+//ANALOG_DYEINGH_TEMP4
+#define F2_ANALOG_DYEINGH_TEMP4_1_TX_00 (*((volatile short *)(FPGA2_BASE | (0x130 * Word1OrByte2)))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F2_ANALOG_DYEINGH_TEMP4_1_TX_01 (*((volatile short *)(FPGA2_BASE | (0x131 * Word1OrByte2)))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F2_ANALOG_DYEINGH_TEMP4_1_RX_00 (*((volatile short *)(FPGA2_BASE | (0x132 * Word1OrByte2)))) //The 8 msb bits of the shifted in bits. The 8 msb bits of this register are zeros.
+#define F2_ANALOG_DYEINGH_TEMP4_1_RX_01 (*((volatile short *)(FPGA2_BASE | (0x133 * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F2_ANALOG_DYEINGH_TEMP4_1_WORDS (*((volatile short *)(FPGA1_BASE | (0x134 * Word1OrByte2)))) //The amount of spi words (usually byte sized) per transmission.
+
+//ANALOG_DRYER_TEMP1
+#define F2_ANALOG_DRYER_TEMP1_1_TX_00 (*((volatile short *)(FPGA2_BASE | (0x138 * Word1OrByte2)))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F2_ANALOG_DRYER_TEMP1_1_TX_01 (*((volatile short *)(FPGA2_BASE | (0x139 * Word1OrByte2)))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F2_ANALOG_DRYER_TEMP1_1_RX_00 (*((volatile short *)(FPGA2_BASE | (0x13A * Word1OrByte2)))) //The 8 msb bits of the shifted in bits. The 8 msb bits of this register are zeros.
+#define F2_ANALOG_DRYER_TEMP1_1_RX_01 (*((volatile short *)(FPGA2_BASE | (0x13B * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F2_ANALOG_DRYER_TEMP1_1_WORDS (*((volatile short *)(FPGA1_BASE | (0x13C * Word1OrByte2)))) //The amount of spi words (usually byte sized) per transmission.
+
+
+//ANALOG_DYEINGH_TEMP5
+#define F2_ANALOG_DYEINGH_TEMP5_1_TX_00 (*((volatile short *)(FPGA2_BASE | (0x140 * Word1OrByte2)))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F2_ANALOG_DYEINGH_TEMP5_1_TX_01 (*((volatile short *)(FPGA2_BASE | (0x141 * Word1OrByte2)))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F2_ANALOG_DYEINGH_TEMP5_1_RX_00 (*((volatile short *)(FPGA2_BASE | (0x142 * Word1OrByte2)))) //The 8 msb bits of the shifted in bits. The 8 msb bits of this register are zeros.
+#define F2_ANALOG_DYEINGH_TEMP5_1_RX_01 (*((volatile short *)(FPGA2_BASE | (0x143 * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F2_ANALOG_DYEINGH_TEMP5_1_WORDS (*((volatile short *)(FPGA1_BASE | (0x144 * Word1OrByte2)))) //The amount of spi words (usually byte sized) per transmission.
+
+//ANALOG_DRYER_TEMP2
+#define F2_ANALOG_DRYER_TEMP2_1_TX_00 (*((volatile short *)(FPGA2_BASE | (0x148 * Word1OrByte2)))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F2_ANALOG_DRYER_TEMP2_1_TX_01 (*((volatile short *)(FPGA2_BASE | (0x149 * Word1OrByte2)))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F2_ANALOG_DRYER_TEMP2_1_RX_00 (*((volatile short *)(FPGA2_BASE | (0x14A * Word1OrByte2)))) //The 8 msb bits of the shifted in bits. The 8 msb bits of this register are zeros.
+#define F2_ANALOG_DRYER_TEMP2_1_RX_01 (*((volatile short *)(FPGA2_BASE | (0x14B * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F2_ANALOG_DRYER_TEMP2_1_WORDS (*((volatile short *)(FPGA1_BASE | (0x14C * Word1OrByte2)))) //The amount of spi words (usually byte sized) per transmission.
+
+//ANALOG_MIXCHIP_TEMP
+#define F2_ANALOG_MIXCHIP_TEMP_1_TX_00 (*((volatile short *)(FPGA2_BASE | (0x150 * Word1OrByte2)))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F2_ANALOG_MIXCHIP_TEMP_1_TX_01 (*((volatile short *)(FPGA2_BASE | (0x151 * Word1OrByte2)))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F2_ANALOG_MIXCHIP_TEMP_1_RX_00 (*((volatile short *)(FPGA2_BASE | (0x152 * Word1OrByte2)))) //The 8 msb bits of the shifted in bits. The 8 msb bits of this register are zeros.
+#define F2_ANALOG_MIXCHIP_TEMP_1_RX_01 (*((volatile short *)(FPGA2_BASE | (0x153 * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F2_ANALOG_MIXCHIP_TEMP_1_WORDS (*((volatile short *)(FPGA1_BASE | (0x154 * Word1OrByte2)))) //The amount of spi words (usually byte sized) per transmission.
+
+//ANALOG_DRYER_TEMP3
+#define F2_ANALOG_DRYER_TEMP3_1_TX_00 (*((volatile short *)(FPGA2_BASE | (0x158 * Word1OrByte2)))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F2_ANALOG_DRYER_TEMP3_1_TX_01 (*((volatile short *)(FPGA2_BASE | (0x159 * Word1OrByte2)))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F2_ANALOG_DRYER_TEMP3_1_RX_00 (*((volatile short *)(FPGA2_BASE | (0x15A * Word1OrByte2)))) //The 8 msb bits of the shifted in bits. The 8 msb bits of this register are zeros.
+#define F2_ANALOG_DRYER_TEMP3_1_RX_01 (*((volatile short *)(FPGA2_BASE | (0x15B * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F2_ANALOG_DRYER_TEMP3_1_WORDS (*((volatile short *)(FPGA1_BASE | (0x15C * Word1OrByte2)))) //The amount of spi words (usually byte sized) per transmission.
+
+//MOTO_DISPENSER_A1
+#define F2_MOTO_DISPENSER_A1_1_TX_00 (*((volatile short *)(FPGA2_BASE | (0x190 * Word1OrByte2)))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F2_MOTO_DISPENSER_A1_1_TX_01 (*((volatile short *)(FPGA2_BASE | (0x191 * Word1OrByte2)))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F2_MOTO_DISPENSER_A1_1_RX_00 (*((volatile short *)(FPGA2_BASE | (0x192 * Word1OrByte2)))) //The 8 msb bits of the shifted in bits. The 8 msb bits of this register are zeros.
+#define F2_MOTO_DISPENSER_A1_1_RX_01 (*((volatile short *)(FPGA2_BASE | (0x193 * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F2_MOTO_DISPENSER_A1_1_WORDS (*((volatile short *)(FPGA1_BASE | (0x194 * Word1OrByte2)))) //The amount of spi words (usually byte sized) per transmission.
+
+//MOTO_DISPENSER_A1_2
+#define F2_MOTO_DISPENSER_A1_2_TX_00 (*((volatile short *)(FPGA2_BASE | (0x198 * Word1OrByte2)))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F2_MOTO_DISPENSER_A1_2_TX_01 (*((volatile short *)(FPGA2_BASE | (0x199 * Word1OrByte2)))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F2_MOTO_DISPENSER_A1_2_RX_00 (*((volatile short *)(FPGA2_BASE | (0x19A * Word1OrByte2)))) //The 8 msb bits of the shifted in bits. The 8 msb bits of this register are zeros.
+#define F2_MOTO_DISPENSER_A1_2_RX_01 (*((volatile short *)(FPGA2_BASE | (0x19B * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F2_MOTO_DISPENSER_A1_2_WORDS (*((volatile short *)(FPGA1_BASE | (0x19C * Word1OrByte2)))) //The amount of spi words (usually byte sized) per transmission.
+
+//MOTO_DISPENSER_A1_3
+#define F2_MOTO_DISPENSER_A1_3_TX_00 (*((volatile short *)(FPGA2_BASE | (0x1A0 * Word1OrByte2)))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F2_MOTO_DISPENSER_A1_3_TX_01 (*((volatile short *)(FPGA2_BASE | (0x1A1 * Word1OrByte2)))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F2_MOTO_DISPENSER_A1_3_RX_00 (*((volatile short *)(FPGA2_BASE | (0x1A2 * Word1OrByte2)))) //The 8 msb bits of the shifted in bits. The 8 msb bits of this register are zeros.
+#define F2_MOTO_DISPENSER_A1_3_RX_01 (*((volatile short *)(FPGA2_BASE | (0x1A3 * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F2_MOTO_DISPENSER_A1_3_WORDS (*((volatile short *)(FPGA1_BASE | (0x1A4 * Word1OrByte2)))) //The amount of spi words (usually byte sized) per transmission.
+
+//MOTO_DISPENSER_A1_4
+#define F2_MOTO_DISPENSER_A1_4_TX_00 (*((volatile short *)(FPGA2_BASE | (0x1A8 * Word1OrByte2)))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F2_MOTO_DISPENSER_A1_4_TX_01 (*((volatile short *)(FPGA2_BASE | (0x1A9 * Word1OrByte2)))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F2_MOTO_DISPENSER_A1_4_RX_00 (*((volatile short *)(FPGA2_BASE | (0x1AA * Word1OrByte2)))) //The 8 msb bits of the shifted in bits. The 8 msb bits of this register are zeros.
+#define F2_MOTO_DISPENSER_A1_4_RX_01 (*((volatile short *)(FPGA2_BASE | (0x1AB * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F2_MOTO_DISPENSER_A1_4_WORDS (*((volatile short *)(FPGA1_BASE | (0x1AC * Word1OrByte2)))) //The amount of spi words (usually byte sized) per transmission.
+
+//MOTO_DISPENSER_A1_5
+#define F2_MOTO_DISPENSER_A1_5_TX_00 (*((volatile short *)(FPGA2_BASE | (0x1B0 * Word1OrByte2)))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F2_MOTO_DISPENSER_A1_5_TX_01 (*((volatile short *)(FPGA2_BASE | (0x1B1 * Word1OrByte2)))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F2_MOTO_DISPENSER_A1_5_RX_00 (*((volatile short *)(FPGA2_BASE | (0x1B2 * Word1OrByte2)))) //The 8 msb bits of the shifted in bits. The 8 msb bits of this register are zeros.
+#define F2_MOTO_DISPENSER_A1_5_RX_01 (*((volatile short *)(FPGA2_BASE | (0x1B3 * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F2_MOTO_DISPENSER_A1_5_WORDS (*((volatile short *)(FPGA1_BASE | (0x1B4 * Word1OrByte2)))) //The amount of spi words (usually byte sized) per transmission.
+
+//MOTO_DISPENSER_A1_6
+#define F2_MOTO_DISPENSER_A1_6_TX_00 (*((volatile short *)(FPGA2_BASE | (0x1B8 * Word1OrByte2)))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F2_MOTO_DISPENSER_A1_6_TX_01 (*((volatile short *)(FPGA2_BASE | (0x1B9 * Word1OrByte2)))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F2_MOTO_DISPENSER_A1_6_RX_00 (*((volatile short *)(FPGA2_BASE | (0x1BA * Word1OrByte2)))) //The 8 msb bits of the shifted in bits. The 8 msb bits of this register are zeros.
+#define F2_MOTO_DISPENSER_A1_6_RX_01 (*((volatile short *)(FPGA2_BASE | (0x1BB * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F2_MOTO_DISPENSER_A1_6_WORDS (*((volatile short *)(FPGA1_BASE | (0x1BC * Word1OrByte2)))) //The amount of spi words (usually byte sized) per transmission.
+
+//MOTO_DISPENSER_A1_7
+#define F2_MOTO_DISPENSER_A1_7_TX_00 (*((volatile short *)(FPGA2_BASE | (0x1C0 * Word1OrByte2)))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F2_MOTO_DISPENSER_A1_7_TX_01 (*((volatile short *)(FPGA2_BASE | (0x1C1 * Word1OrByte2)))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F2_MOTO_DISPENSER_A1_7_RX_00 (*((volatile short *)(FPGA2_BASE | (0x1C2 * Word1OrByte2)))) //The 8 msb bits of the shifted in bits. The 8 msb bits of this register are zeros.
+#define F2_MOTO_DISPENSER_A1_7_RX_01 (*((volatile short *)(FPGA2_BASE | (0x1C3 * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F2_MOTO_DISPENSER_A1_7_WORDS (*((volatile short *)(FPGA1_BASE | (0x1C4 * Word1OrByte2)))) //The amount of spi words (usually byte sized) per transmission.
+
+//MOTO_DISPENSER_A1_8
+#define F2_MOTO_DISPENSER_A1_8_TX_00 (*((volatile short *)(FPGA2_BASE | (0x1C8 * Word1OrByte2)))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F2_MOTO_DISPENSER_A1_8_TX_01 (*((volatile short *)(FPGA2_BASE | (0x1C9 * Word1OrByte2)))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F2_MOTO_DISPENSER_A1_8_RX_00 (*((volatile short *)(FPGA2_BASE | (0x1CA * Word1OrByte2)))) //The 8 msb bits of the shifted in bits. The 8 msb bits of this register are zeros.
+#define F2_MOTO_DISPENSER_A1_8_RX_01 (*((volatile short *)(FPGA2_BASE | (0x1CB * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F2_MOTO_DISPENSER_A1_8_WORDS (*((volatile short *)(FPGA1_BASE | (0x1CC * Word1OrByte2)))) //The amount of spi words (usually byte sized) per transmission.
+
+#define F2_Tacho_reg0 (*((volatile short *)(FPGA1_BASE | (0x1E0 * Word1OrByte2)))) //This Register stores the Tacho counter
+
+//Prescaler
+#define F2_Prescaler1_reg0 (*((volatile short *)(FPGA1_BASE | (0x1F0 * Word1OrByte2)))) //Parameter for prescaler divisions - 6bit ssi high duty cycle value for prescaler
+#define F2_Prescaler1_reg1 (*((volatile short *)(FPGA1_BASE | (0x1F1 * Word1OrByte2)))) //Parameter for prescaler divisions - 6bit ssi low duty cycle value for prescaler
+#define F2_Prescaler1_reg2 (*((volatile short *)(FPGA1_BASE | (0x1F2 * Word1OrByte2)))) //Parameter for prescaler divisions - 3bit spi temp low duty cycle value for pmw
+#define F2_Prescaler1_reg3 (*((volatile short *)(FPGA1_BASE | (0x1F3 * Word1OrByte2)))) //Parameter for prescaler divisions - 3bit spi temp high duty cycle value for pmw
+#define F2_Prescaler1_reg4 (*((volatile short *)(FPGA1_BASE | (0x1F4 * Word1OrByte2)))) //Parameter for prescaler divisions - 3bit spi moto low duty cycle value for pmw
+#define F2_Prescaler1_reg5 (*((volatile short *)(FPGA1_BASE | (0x1F5 * Word1OrByte2)))) //Parameter for prescaler divisions - 3bit spi moto high duty cycle value for pmw
+#define F2_Prescaler1_reg6 (*((volatile short *)(FPGA1_BASE | (0x1F6 * Word1OrByte2)))) //Parameter for prescaler divisions - 8bit BLOWER low duty cycle value for pmw
+#define F2_Prescaler1_reg7 (*((volatile short *)(FPGA1_BASE | (0x1F7 * Word1OrByte2)))) //Parameter for prescaler divisions - 8bit BLOWER high duty cycle value for pmw
+
+//Test
+#define F2_Test (*((volatile short *)(FPGA2_BASE | (0x1F8 * Word1OrByte2)))) //Readback not - gives the inverse of the written to value
+
+// * * * * * * * * * * * * * * * * FPGA 3 * * * * * * * * * * * * * * * * //
+
+//Version1
+#define F3_Ver1_D (*((volatile short *)(FPGA3_BASE | (0x0 * Word1OrByte2)))) //Version of Fpga is held here
+
+//Version2
+#define F3_Ver2_D (*((volatile short *)(FPGA3_BASE | (0x8 * Word1OrByte2)))) //Version of Fpga is held here
+
+//GPI 01
+#define F3_GPI_01_D (*((volatile short *)(FPGA3_BASE | (0x10 * Word1OrByte2)))) //Reads the direct values that are currently being sent to the fpga.
+#define F3_GPI_01_L (*((volatile short *)(FPGA3_BASE | (0x11 * Word1OrByte2)))) //Value of the latched shorterrupts that have occurred
+#define F3_GPI_01_M (*((volatile short *)(FPGA3_BASE | (0x12 * Word1OrByte2)))) //Value of the shorterrupt mask, Default is 0x0000
+
+//MIDTANK 01
+#define F3_MIDTANK_01_Direct (*((volatile short *)(FPGA3_BASE | (0x018 * Word1OrByte2)))) //Reads the direct values that are currently being sent to the fpga.
+#define F3_MIDTANK_01_Latched (*((volatile short *)(FPGA3_BASE | (0x019 * Word1OrByte2)))) //Value of the latched shorterrupts that have occurred
+#define F3_MIDTANK_01_Mask (*((volatile short *)(FPGA3_BASE | (0x01a * Word1OrByte2)))) //Value of the shorterrupt mask, Default is 0x0000
+
+//MIDTANK 02
+#define F3_MIDTANK_02_Direct (*((volatile short *)(FPGA3_BASE | (0x020 * Word1OrByte2)))) //Reads the direct values that are currently being sent to the fpga.
+#define F3_MIDTANK_02_Latched (*((volatile short *)(FPGA3_BASE | (0x021 * Word1OrByte2)))) //Value of the latched shorterrupts that have occurred
+#define F3_MIDTANK_02_Mask (*((volatile short *)(FPGA3_BASE | (0x022 * Word1OrByte2)))) //Value of the shorterrupt mask, Default is 0x0000
+
+//DISPENSER_ROTENC_IN
+#define F3_DISPENSER_ROTENC_IN_Direct (*((volatile short *)(FPGA3_BASE | (0x028 * Word1OrByte2)))) //Reads the direct values that are currently being sent to the fpga.
+#define F3_DISPENSER_ROTENC_IN_Latched (*((volatile short *)(FPGA3_BASE | (0x029 * Word1OrByte2)))) //Value of the latched shorterrupts that have occurred
+#define F3_DISPENSER_ROTENC_IN_Mask (*((volatile short *)(FPGA3_BASE | (0x02A * Word1OrByte2)))) //Value of the shorterrupt mask, Default is 0x0000
+
+//Moto_Driver_NBUSY_register1
+#define F3_Moto_Driver_NBUSY1_Direct (*((volatile short *)(FPGA3_BASE | (0x030 * Word1OrByte2)))) //Reads the direct values that are currently being sent to the fpga.
+#define F3_Moto_Driver_NBUSY1_Latched (*((volatile short *)(FPGA3_BASE | (0x031 * Word1OrByte2)))) //Value of the latched shorterrupts that have occurred
+#define F3_Moto_Driver_NBUSY1_Mask (*((volatile short *)(FPGA3_BASE | (0x032 * Word1OrByte2)))) //Value of the shorterrupt mask, Default is 0x0000
+
+//CARTx_PRES
+#define F3_CARTx_PRES_02_Direct (*((volatile short *)(FPGA3_BASE | (0x038 * Word1OrByte2)))) //Reads the direct values that are currently being sent to the fpga.
+#define F3_CARTx_PRES_02_Latched (*((volatile short *)(FPGA3_BASE | (0x039 * Word1OrByte2)))) //Value of the latched shorterrupts that have occurred
+#define F3_CARTx_PRES_02_Mask (*((volatile short *)(FPGA3_BASE | (0x03A * Word1OrByte2)))) //Value of the shorterrupt mask, Default is 0x0000
+
+//LS_01
+#define F3_LS_01_Direct (*((volatile short *)(FPGA3_BASE | (0x040 * Word1OrByte2)))) //Reads the direct values that are currently being sent to the fpga.
+#define F3_LS_01_Latched (*((volatile short *)(FPGA3_BASE | (0x041 * Word1OrByte2)))) //Value of the latched shorterrupts that have occurred
+#define F3_LS_01_Mask (*((volatile short *)(FPGA3_BASE | (0x042 * Word1OrByte2)))) //Value of the shorterrupt mask, Default is 0x0000
+
+//Spi_Busy_01
+#define F3_busy_01_Direct (*((volatile short *)(FPGA3_BASE | (0x050 * Word1OrByte2)))) //Reads the direct values that are currently being sent to the fpga.
+#define F3_busy_01_Latched (*((volatile short *)(FPGA3_BASE | (0x051 * Word1OrByte2)))) //Value of the latched shorterrupts that have occurred
+#define F3_busy_01_Mask (*((volatile short *)(FPGA3_BASE | (0x052 * Word1OrByte2)))) //Value of the shorterrupt mask, Default is 0x0000
+
+//Moto_Driver_NSTBYRST_register1
+#define F3_Moto_Driver_NSTBYRST1 (*((volatile short *)(FPGA3_BASE | (0x059 * Word1OrByte2)))) //Writes to values. Readback thevaluessthat are currently in the GPO register
+
+//GPO_01
+#define F3_GPO_01_bus (*((volatile short *)(FPGA3_BASE | (0x061 * Word1OrByte2)))) //Writes to values. Readback thevaluessthat are currently in the GPO register
+
+//Moto_Driver_SW_register1
+#define F3_Moto_Driver_SW1 (*((volatile short *)(FPGA3_BASE | (0x069 * Word1OrByte2)))) //Writes to values. Readback thevaluessthat are currently in the GPO register
+
+//VALVE_OUT
+#define F3_VALVE_OUT (*((volatile short *)(FPGA3_BASE | (0x071 * Word1OrByte2)))) //Writes to values. Readback thevaluessthat are currently in the GPO register
+
+//DISPENSER_ROTENC_OUT
+#define F3_DISPENSER_ROTENC_OUT (*((volatile short *)(FPGA3_BASE | (0x079 * Word1OrByte2)))) //Writes to values. Readback thevaluessthat are currently in the GPO register
+
+//QEI_SCREW_ROTENC
+#define F3_SPARE1_ROTENC_lsb (*((volatile short *)(FPGA3_BASE | (0x080 * Word1OrByte2)))) //Value of the lsb of the QEI register
+#define F3_SPARE1_ROTENC_msb (*((volatile short *)(FPGA3_BASE | (0x081 * Word1OrByte2)))) //10bits Value of the Msb of the QEI register, 1bit Direction of movement, 5bits Reserved
+#define F3_SPARE1_ROTENC_index (*((volatile short *)(FPGA3_BASE | (0x082 * Word1OrByte2)))) //value of index counter
+
+//QEI_RSPARE_ROTENC
+#define F3_RSPARE_ROTENC_lsb (*((volatile short *)(FPGA3_BASE | (0x088 * Word1OrByte2)))) //Value of the lsb of the QEI register
+#define F3_RSPARE_ROTENC_msb (*((volatile short *)(FPGA3_BASE | (0x089 * Word1OrByte2)))) //10bits Value of the Msb of the QEI register, 1bit Direction of movement, 5bits Reserved
+#define F3_RSPARE_ROTENC_index (*((volatile short *)(FPGA3_BASE | (0x08a * Word1OrByte2)))) //value of index counter
+
+//SPI_MOTO_RLOADING_A1
+#define F3_MOTO_SPARE1_1_A1_TX_00 (*((volatile short *)(FPGA3_BASE | (0x100 * Word1OrByte2)))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F3_MOTO_SPARE1_1_A1_TX_01 (*((volatile short *)(FPGA3_BASE | (0x101 * Word1OrByte2)))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F3_MOTO_SPARE1_1_A1_RX_00 (*((volatile short *)(FPGA3_BASE | (0x102 * Word1OrByte2)))) //The 8 msb bits of the shifted in bits. The 8 msb bits of this register are zeros.
+#define F3_MOTO_SPARE1_1_A1_RX_01 (*((volatile short *)(FPGA3_BASE | (0x103 * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F3_MOTO_SPARE1_1_A1_WORDS (*((volatile short *)(FPGA1_BASE | (0x104 * Word1OrByte2)))) //The amount of spi words (usually byte sized) per transmission.
+
+//SPI_MOTO_RDRIVING_A1
+#define F3_MOTO_SPARE1_2_A1_TX_00 (*((volatile short *)(FPGA3_BASE | (0x108 * Word1OrByte2)))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F3_MOTO_SPARE1_2_A1_TX_01 (*((volatile short *)(FPGA3_BASE | (0x109 * Word1OrByte2)))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F3_MOTO_SPARE1_2_A1_RX_00 (*((volatile short *)(FPGA3_BASE | (0x10A * Word1OrByte2)))) //The 8 msb bits of the shifted in bits. The 8 msb bits of this register are zeros.
+#define F3_MOTO_SPARE1_2_A1_RX_01 (*((volatile short *)(FPGA3_BASE | (0x10B * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F3_MOTO_SPARE1_2_A1_WORDS (*((volatile short *)(FPGA1_BASE | (0x10C * Word1OrByte2)))) //The amount of spi words (usually byte sized) per transmission.
+
+//SPI_F1_MOTO_LDRIVING_A1
+#define F3_MOTO_SPARE2_1_A1_TX_00 (*((volatile short *)(FPGA3_BASE | (0x110 * Word1OrByte2)))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F3_MOTO_SPARE2_1_A1_TX_01 (*((volatile short *)(FPGA3_BASE | (0x111 * Word1OrByte2)))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F3_MOTO_SPARE2_1_A1_RX_00 (*((volatile short *)(FPGA3_BASE | (0x112 * Word1OrByte2)))) //The 8 msb bits of the shifted in bits. The 8 msb bits of this register are zeros.
+#define F3_MOTO_SPARE2_1_A1_RX_01 (*((volatile short *)(FPGA3_BASE | (0x113 * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F3_MOTO_SPARE2_1_A1_WORDS (*((volatile short *)(FPGA1_BASE | (0x114 * Word1OrByte2)))) //The amount of spi words (usually byte sized) per transmission.
+
+//SPI_F1_MOTO_LLOADING_A1
+#define F3_MOTO_SPARE2_2_A1_TX_00 (*((volatile short *)(FPGA3_BASE | (0x118 * Word1OrByte2)))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F3_MOTO_SPARE2_2_A1_TX_01 (*((volatile short *)(FPGA3_BASE | (0x119 * Word1OrByte2)))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F3_MOTO_SPARE2_2_A1_RX_00 (*((volatile short *)(FPGA3_BASE | (0x11A * Word1OrByte2)))) //The 8 msb bits of the shifted in bits. The 8 msb bits of this register are zeros.
+#define F3_MOTO_SPARE2_2_A1_RX_01 (*((volatile short *)(FPGA3_BASE | (0x11B * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F3_MOTO_SPARE2_2_A1_WORDS (*((volatile short *)(FPGA1_BASE | (0x11C * Word1OrByte2)))) //The amount of spi words (usually byte sized) per transmission.
+
+#define F3_MOTO_SPARE3_1_A1_TX_00 (*((volatile short *)(FPGA3_BASE | (0x120 * Word1OrByte2)))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F3_MOTO_SPARE3_1_A1_TX_01 (*((volatile short *)(FPGA3_BASE | (0x120 * Word1OrByte2)))) //The first register to be shifted out of the spi. The msb bit of this register is shifted out first.
+#define F3_MOTO_SPARE3_1_A1_RX_00 (*((volatile short *)(FPGA3_BASE | (0x122 * Word1OrByte2)))) //The 8 msb bits of the shifted in bits. The 8 msb bits of this register are zeros.
+#define F3_MOTO_SPARE3_1_A1_RX_01 (*((volatile short *)(FPGA3_BASE | (0x123 * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F3_MOTO_SPARE3_1_A1_WORDS (*((volatile short *)(FPGA1_BASE | (0x124 * Word1OrByte2)))) //The amount of spi words (usually byte sized) per transmission.
+
+//SSI
+#define F3_SPARE1_ROTENC_DATA_p_1_RX_msb (*((volatile short *)(FPGA3_BASE | (0x160 * Word1OrByte2)))) //16 bit MSB if nessesary
+#define F3_SPARE1_ROTENC_DATA_p_1_RX_lsb (*((volatile short *)(FPGA3_BASE | (0x161 * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F3_SPARE1_ROTENC_DATA_p_1_TX (*((volatile short *)(FPGA3_BASE | (0x167 * Word1OrByte2)))) //This register triggers a TX transmission
+
+#define F3_SPARE2_ROTENC_DATA_p_2_RX_msb (*((volatile short *)(FPGA3_BASE | (0x168 * Word1OrByte2)))) //16 bit MSB if nessesary
+#define F3_SPARE2_ROTENC_DATA_p_2_RX_lsb (*((volatile short *)(FPGA3_BASE | (0x169 * Word1OrByte2)))) //The 16 Lsb bits of the shifted in data.
+#define F3_SPARE2_ROTENC_DATA_p_1_TX (*((volatile short *)(FPGA3_BASE | (0x16F * Word1OrByte2)))) //This register triggers a TX transmission
+
+#define F3_SW_RESET_reg (*((volatile short *)(FPGA3_BASE | (0x1E8 * Word1OrByte2)))) //This register resets the MCU
+
+//Prescaler
+#define F3_Prescaler1_reg1 (*((volatile short *)(FPGA3_BASE | (0x1F0 * Word1OrByte2)))) //Parameter for prescaler divisions - 6bit ssi high duty cycle value for prescale
+#define F3_Prescaler1_reg2 (*((volatile short *)(FPGA3_BASE | (0x1F1 * Word1OrByte2)))) //Parameter for prescaler divisions - 6bit ssi low duty cycle value for prescaler
+#define F3_Prescaler1_reg3 (*((volatile short *)(FPGA3_BASE | (0x1F2 * Word1OrByte2)))) //Parameter for prescaler divisions - 3bit spi moto low duty cycle value for pmw
+#define F3_Prescaler1_reg4 (*((volatile short *)(FPGA3_BASE | (0x1F3 * Word1OrByte2)))) //Parameter for prescaler divisions - 3bit spi moto high duty cycle value for pmw
+
+#define F3_Prescaler1_reg5 (*((volatile short *)(FPGA3_BASE | (0x1F4 * Word1OrByte2)))) //Parameter for prescaler divisions
+#define F3_Prescaler1_reg6 (*((volatile short *)(FPGA3_BASE | (0x1F5 * Word1OrByte2)))) //Parameter for prescaler divisions
+#define F3_Prescaler1_reg7 (*((volatile short *)(FPGA3_BASE | (0x1F6 * Word1OrByte2)))) //Parameter for prescaler divisions
+#define F3_Prescaler1_reg8 (*((volatile short *)(FPGA3_BASE | (0x1F7 * Word1OrByte2)))) //Parameter for prescaler divisions
+//Test
+#define F3_Test (*((volatile short *)(FPGA3_BASE | (0x1F8 * Word1OrByte2)))) //Readback not - gives the inverse of the written to value
+
+//1 Version1_Direct
+typedef union
+{
+ struct
+ {
+ unsigned char Month; //0-7
+ unsigned char Day; //8-15
+ }bytes;
+ unsigned short ushort;
+}VER1;
+
+//4 Version2_Direct
+typedef union
+{
+ struct
+ {
+ unsigned char Ver_num; //0-7
+ unsigned char Year; //8-15
+ }bytes;
+ unsigned short ushort;
+}VER2;
+
+//16 Moto_Driver_NBUSY_register1
+typedef union
+{
+ struct
+ {
+ bool F1_MOTO_LPIVOT1_A1_NBUSY : 1; //0
+ bool F1_MOTO_LLOADING_A1_NBUSY : 1; //1
+ bool F1_MOTO_LDRIVING_A1_NBUSY : 1; //2
+ bool F1_MOTO_LDANCER2_A1_NBUSY : 1; //3
+ bool F1_MOTO_LDANCER1_A1_NBUSY : 1; //4
+ bool F1_MOTO_DRYER_LOADARM_A1_NBUSY : 1; //5
+ bool F1_MOTO_DRYER_LID_A1_NBUSY : 1; //6
+ bool F1_MOTO_DRYER_DRIVING_A1_NBUSY : 1; //7
+ bool F1_MOTO_DH_LID_A1_NBUSY : 1; //8
+ bool F1_MOTO_DH_CLEANMECH_A1_NBUSY : 1; //9
+ bool F1_MOTO_DH_CLEANHEAD_A1_NBUSY : 1; //10
+ unsigned char RESERVE:5; //11-15
+ }bits;
+ unsigned short ushort;
+}Mot_NBUSY1;
+
+//19 Moto_Driver_NBUSY_register2
+typedef union
+{
+ struct
+ {
+ bool F1_MOTO_WINDER_A1_NBUSY : 1; //0
+ bool F1_MOTO_SCREW_A1_NBUSY : 1; //1
+ bool F1_MOTO_RLOADING_A1_NBUSY : 1; //2
+ bool F1_MOTO_RLOADARM_A1_NBUSY : 1; //3
+ bool F1_MOTO_RDRIVING_A1_NBUSY : 1; //4
+ bool F1_MOTO_RDANCER_A1_NBUSY : 1; //5
+ unsigned char RESERVE1 : 2; // 6-7
+ unsigned char RESERVE2; // 8-15
+ }bits;
+ unsigned short ushort;
+}Mot_NBUSY2;
+
+
+//29 + 32 SPI_Busy_register1 + SPI_Busy_register2
+typedef union
+{
+ struct
+ {
+ unsigned char SPI_Busy_1_D;
+ unsigned char SPI_Busy_2_D;
+ }ushort;
+ unsigned int uint;
+}SPI_BUSY;
+
+//35 Moto_Driver_NSTBYRST1
+typedef union
+{
+ struct
+ {
+ bool LPIVOT1 : 1; //0
+ bool LLOADING : 1; //1
+ bool LDRIVING : 1; //2
+ bool LDANCER2 : 1; //3
+ bool LDANCER1 : 1; //4
+ bool DRYER_LOADARM : 1; //5
+ bool DRYER_LID : 1; //6
+ bool DRYER_DRIVING : 1; //7
+ bool DH_LID : 1; //8
+ bool DH_CLEANMECH : 1; //9
+ bool DH_CLEANHEAD : 1; //10
+ unsigned char RESERVE:5; //11-15
+ }bits;
+ unsigned short ushort;
+}MOT_NSTBYRST1;
+
+
+
+//36 Moto_Driver_NSTBYRST2
+typedef union
+{
+ struct
+ {
+ bool WINDER : 1; //0
+ bool SCREW : 1; //1
+ bool RLOADING : 1; //2
+ bool RLOADARM : 1; //3
+ bool RDRIVING : 1; //4
+ bool RDANCER : 1; //5
+ unsigned char RESERVE1:2; // 6-7
+ unsigned char RESERVE2; // 8-15
+ }bits;
+ unsigned short ushort;
+}MOT_NSTBYRST2;
+
+//37 Moto_Driver_SW_register1 - Moto_Driver_SW1
+typedef union
+{
+ struct
+ {
+ bool LPIVOT1 : 1; //0
+ bool LLOADING : 1; //1
+ bool LDRIVING : 1; //2
+ bool LDANCER2 : 1; //3
+ bool LDANCER1 : 1; //4
+ bool DRYER_LOADARM : 1; //5
+ bool DRYER_LID : 1; //6
+ bool DRYER_DRIVING; //7
+ bool DH_LID : 1; //8
+ bool DH_CLEANMECH : 1; //9
+ bool DH_CLEANHEAD : 1; //10
+ bool GPO_TFEED_BREAK_1 : 1; //11
+ bool GPO_TFEED_BREAK_2 : 1; //12
+ unsigned char RESERVE:3; // 13-15
+ }bits;
+ unsigned short ushort;
+}MOT_SW1;
+
+//38 Moto_Driver_SW_register2 - Moto_Driver_SW2
+typedef union
+{
+ struct
+ {
+ bool F1_MOTO_WINDER_A1_SW : 1; //0
+ bool F1_MOTO_SCREW_A1_SW : 1; //1
+ bool F1_MOTO_RLOADING_A1_SW : 1; //2
+ bool F1_MOTO_RLOADARM_A1_SW : 1; //3
+ bool F1_MOTO_RDRIVING_A1_SW : 1; //4
+ bool F1_MOTO_RDANCER_A1_SW : 1; //5
+ unsigned char RESERVE1:2; // 6-7
+ unsigned char RESERVE2; // 8-15
+ }bits;
+ unsigned short ushort;
+}MOT_SW2;
+
+
+
+//308 GPO_01
+typedef union
+{
+ struct
+ {
+ bool F3_GPO_LED4 : 1; //0
+ bool F3_GPO_LED3 : 1; //1
+ bool F3_GPO_LED2 : 1; //2
+ bool F3_GPO_LED1 : 1; //3
+ bool F3_GPO_EXTWINDER_SSR11_CTRL : 1; //4
+ bool F3_GPO_BUZZER : 1; //4
+ bool F3_SPARE2_ROTENC_CLK : 1; //6
+ bool F3_SPARE1_ROTENC_CLK : 1; //7
+ unsigned char RESERVE; // 8-15
+ }bits;
+ unsigned short ushort;
+}GP_Out_01;
+
+
+
+//------------------------------ MOTOR DRIVER L_6470 ------------------------------
+
+typedef union
+{
+ struct
+ {
+ unsigned short LSB;
+ unsigned short MSB;
+ }ushort;
+ unsigned int uint;
+}INT2SHORT;//16->32
+
+enum
+{
+ RLOADING,
+ RDRIVING,
+ F1_LDRIVING,
+ F1_LLOADING,
+ F1_DRYER_LOADARM,
+ F1_DRYER_DRIVING,
+ F1_DH_CLEANHEAD,
+ F1_DH_CLEANMECH,
+ F1_SCREW,
+ F1_WINDER,
+ RLOADARM,
+ RDANCER,
+ LDANCER1,
+ LDANCER2,
+ DRYER_LID,
+ DH_LID,
+ LPIVOT1,
+}SPI_TYPE;
+
+//SPI
+typedef struct //S_SPI
+{
+ unsigned char Type;
+ unsigned int TX_MOSI; //32bit (Master Output Slave Input )
+ unsigned int RX_MISO; //24bit (Master Input Slave Output)
+ //unsigned int BUSY; //32bit
+
+}SPI;//SPI
+
+/*
+#define L6470_MOSI (*((volatile short *)(BASE | 0x0100)))
+#define L6470_MISO (*((volatile short *)(BASE | 0x0200)))
+#define L6470_CS (*((volatile short *)(BASE | 0x0300)))
+#define L6470_CLK (*((volatile short *)(BASE | 0x0400)))
+#define L6470_BUSY (*((volatile short *)(BASE | 0x0500)))
+#define L6470_RESET (*((volatile short *)(BASE | 0x0600)))
+#define L6470_TX (*((volatile char *)(BASE | 0x0700)))
+#define L6470_RX (*((volatile char *)(BASE | 0x0800)))
+*/
+
+//L6470_MOSI = 0x00;
diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c
new file mode 100644
index 000000000..ede011df6
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c
@@ -0,0 +1,281 @@
+
+#include <stdint.h>
+#include <stdbool.h>
+#include <drivers/FPGA/FPGA_Comm.h>
+#include "Stubs_Handler/DataDef.h"
+
+uint8_t SPI_Transnit(SPI Spi)
+{
+
+ INT2SHORT Int2Short;
+
+ //Check Busy register and see if the SPI desired is available
+ while((F1_SPI_Busy1_D != NOTBUSY ) || (F1_SPI_Busy2_D != NOTBUSY ));
+
+ Int2Short.uint = Spi.TX_MOSI;
+
+ switch(Spi.Type)
+ {
+ case RLOADING:
+ F1_MOTO_RLOADING_A1_TX_01 = Int2Short.ushort.MSB;
+ //Read the TX_01 register and make sure that the value was written properly.
+ while( Int2Short.ushort.MSB != F1_MOTO_RLOADING_A1_TX_01);
+
+ //Send a write to TX_00
+ F1_MOTO_RLOADING_A1_TX_00 = Int2Short.ushort.LSB;
+ //Read the TX_00 register and make sure that the value was written properly.
+ while( Int2Short.ushort.LSB != F1_MOTO_RLOADING_A1_TX_00);
+ break;
+ case RDRIVING:
+ F1_MOTO_RDRIVING_A1_TX_01 = Int2Short.ushort.MSB;
+ //Read the TX_01 register and make sure that the value was written properly.
+ while( Int2Short.ushort.MSB != F1_MOTO_RDRIVING_A1_TX_01);
+
+ //Send a write to TX_00
+ F1_MOTO_RDRIVING_A1_TX_00 = Int2Short.ushort.LSB;
+ //Read the TX_00 register and make sure that the value was written properly.
+ while( Int2Short.ushort.LSB != F1_MOTO_RDRIVING_A1_TX_00);
+ break;
+ case F1_LDRIVING:
+ F1_MOTO_LDRIVING_A1_TX_01 = Int2Short.ushort.MSB;
+ //Read the TX_01 register and make sure that the value was written properly.
+ while( Int2Short.ushort.MSB != F1_MOTO_LDRIVING_A1_TX_01);
+
+ //Send a write to TX_00
+ F1_MOTO_LDRIVING_A1_TX_00 = Int2Short.ushort.LSB;
+ //Read the TX_00 register and make sure that the value was written properly.
+ while( Int2Short.ushort.LSB != F1_MOTO_LDRIVING_A1_TX_00);
+ break;
+ case F1_LLOADING:
+ F1_MOTO_LLOADING_A1_TX_01 = Int2Short.ushort.MSB;
+ //Read the TX_01 register and make sure that the value was written properly.
+ while( Int2Short.ushort.MSB != F1_MOTO_LLOADING_A1_TX_01);
+
+ //Send a write to TX_00
+ F1_MOTO_LLOADING_A1_TX_00 = Int2Short.ushort.LSB;
+ //Read the TX_00 register and make sure that the value was written properly.
+ while( Int2Short.ushort.LSB != F1_MOTO_LLOADING_A1_TX_00);
+ break;
+ case F1_DRYER_LOADARM:
+ F1_MOTO_DRYER_LOADARM_A1_TX_01 = Int2Short.ushort.MSB;
+ //Read the TX_01 register and make sure that the value was written properly.
+ while( Int2Short.ushort.MSB != F1_MOTO_DRYER_LOADARM_A1_TX_01);
+
+ //Send a write to TX_00
+ F1_MOTO_DRYER_LOADARM_A1_TX_00 = Int2Short.ushort.LSB;
+ //Read the TX_00 register and make sure that the value was written properly.
+ while( Int2Short.ushort.LSB != F1_MOTO_DRYER_LOADARM_A1_TX_00);
+ break;
+ case F1_DRYER_DRIVING:
+ F1_MOTO_DRYER_DRIVING_A1_TX_01 = Int2Short.ushort.MSB;
+ //Read the TX_01 register and make sure that the value was written properly.
+ while( Int2Short.ushort.MSB != F1_MOTO_DRYER_DRIVING_A1_TX_01);
+
+ //Send a write to TX_00
+ F1_MOTO_DRYER_DRIVING_A1_TX_00 = Int2Short.ushort.LSB;
+ //Read the TX_00 register and make sure that the value was written properly.
+ while( Int2Short.ushort.LSB != F1_MOTO_DRYER_DRIVING_A1_TX_00);
+ break;
+ case F1_DH_CLEANHEAD:
+ F1_MOTO_DH_CLEANHEAD_A1_TX_01 = Int2Short.ushort.MSB;
+ //Read the TX_01 register and make sure that the value was written properly.
+ while( Int2Short.ushort.MSB != F1_MOTO_DH_CLEANHEAD_A1_TX_01);
+
+ //Send a write to TX_00
+ F1_MOTO_DH_CLEANHEAD_A1_TX_00 = Int2Short.ushort.LSB;
+ //Read the TX_00 register and make sure that the value was written properly.
+ while( Int2Short.ushort.LSB != F1_MOTO_DH_CLEANHEAD_A1_TX_00);
+ break;
+ case F1_DH_CLEANMECH:
+ F1_MOTO_DH_CLEANMECH_A1_TX_01 = Int2Short.ushort.MSB;
+ //Read the TX_01 register and make sure that the value was written properly.
+ while( Int2Short.ushort.MSB != F1_MOTO_DH_CLEANMECH_A1_TX_01);
+
+ //Send a write to TX_00
+ F1_MOTO_DH_CLEANMECH_A1_TX_00 = Int2Short.ushort.LSB;
+ //Read the TX_00 register and make sure that the value was written properly.
+ while( Int2Short.ushort.LSB != F1_MOTO_DH_CLEANMECH_A1_TX_00);
+ break;
+ case F1_SCREW:
+ F1_MOTO_SCREW_A1_TX_01 = Int2Short.ushort.MSB;
+ //Read the TX_01 register and make sure that the value was written properly.
+ while( Int2Short.ushort.MSB != F1_MOTO_SCREW_A1_TX_01);
+
+ //Send a write to TX_00
+ F1_MOTO_SCREW_A1_TX_00 = Int2Short.ushort.LSB;
+ //Read the TX_00 register and make sure that the value was written properly.
+ while( Int2Short.ushort.LSB != F1_MOTO_SCREW_A1_TX_00);
+ break;
+ case F1_WINDER:
+ F1_MOTO_WINDER_A1_TX_01 = Int2Short.ushort.MSB;
+ //Read the TX_01 register and make sure that the value was written properly.
+ while( Int2Short.ushort.MSB != F1_MOTO_WINDER_A1_TX_01);
+
+ //Send a write to TX_00
+ F1_MOTO_WINDER_A1_TX_00 = Int2Short.ushort.LSB;
+ //Read the TX_00 register and make sure that the value was written properly.
+ while( Int2Short.ushort.LSB != F1_MOTO_WINDER_A1_TX_00);
+ break;
+ case RLOADARM:
+ F1_MOTO_RLOADARM_A1_TX_01 = Int2Short.ushort.MSB;
+ //Read the TX_01 register and make sure that the value was written properly.
+ while( Int2Short.ushort.MSB != F1_MOTO_RLOADARM_A1_TX_01);
+
+ //Send a write to TX_00
+ F1_MOTO_RLOADARM_A1_TX_00 = Int2Short.ushort.LSB;
+ //Read the TX_00 register and make sure that the value was written properly.
+ while( Int2Short.ushort.LSB != F1_MOTO_RLOADARM_A1_TX_00);
+ break;
+ case RDANCER:
+ F1_MOTO_RDANCER_A1_TX_01 = Int2Short.ushort.MSB;
+ //Read the TX_01 register and make sure that the value was written properly.
+ while( Int2Short.ushort.MSB != F1_MOTO_RDANCER_A1_TX_01);
+
+ //Send a write to TX_00
+ F1_MOTO_RDANCER_A1_TX_00 = Int2Short.ushort.LSB;
+ //Read the TX_00 register and make sure that the value was written properly.
+ while( Int2Short.ushort.LSB != F1_MOTO_RDANCER_A1_TX_00);
+ break;
+ case LDANCER1:
+ F1_MOTO_LDANCER1_A1_TX_01 = Int2Short.ushort.MSB;
+ //Read the TX_01 register and make sure that the value was written properly.
+ while( Int2Short.ushort.MSB != F1_MOTO_LDANCER1_A1_TX_01);
+
+ //Send a write to TX_00
+ F1_MOTO_LDANCER1_A1_TX_00 = Int2Short.ushort.LSB;
+ //Read the TX_00 register and make sure that the value was written properly.
+ while( Int2Short.ushort.LSB != F1_MOTO_LDANCER1_A1_TX_00);
+ break;
+ case LDANCER2:
+ F1_MOTO_LDANCER2_A1_TX_01 = Int2Short.ushort.MSB;
+ //Read the TX_01 register and make sure that the value was written properly.
+ while( Int2Short.ushort.MSB != F1_MOTO_LDANCER2_A1_TX_01);
+
+ //Send a write to TX_00
+ F1_MOTO_LDANCER2_A1_TX_00 = Int2Short.ushort.LSB;
+ //Read the TX_00 register and make sure that the value was written properly.
+ while( Int2Short.ushort.LSB != F1_MOTO_LDANCER2_A1_TX_00);
+ break;
+ case DRYER_LID:
+ F1_MOTO_DRYER_LID_A1_TX_01 = Int2Short.ushort.MSB;
+ //Read the TX_01 register and make sure that the value was written properly.
+ while( Int2Short.ushort.MSB != F1_MOTO_DRYER_LID_A1_TX_01);
+
+ //Send a write to TX_00
+ F1_MOTO_DRYER_LID_A1_TX_00 = Int2Short.ushort.LSB;
+ //Read the TX_00 register and make sure that the value was written properly.
+ while( Int2Short.ushort.LSB != F1_MOTO_DRYER_LID_A1_TX_00);
+ break;
+ case DH_LID:
+ F1_MOTO_DH_LID_A1_TX_01 = Int2Short.ushort.MSB;
+ //Read the TX_01 register and make sure that the value was written properly.
+ while( Int2Short.ushort.MSB != F1_MOTO_DH_LID_A1_TX_01);
+
+ //Send a write to TX_00
+ F1_MOTO_DH_LID_A1_TX_00 = Int2Short.ushort.LSB;
+ //Read the TX_00 register and make sure that the value was written properly.
+ while( Int2Short.ushort.LSB != F1_MOTO_DH_LID_A1_TX_00);
+ break;
+ case LPIVOT1:
+ F1_MOTO_LPIVOT1_A1_TX_01 = Int2Short.ushort.MSB;
+ //Read the TX_01 register and make sure that the value was written properly.
+ while( Int2Short.ushort.MSB != F1_MOTO_LPIVOT1_A1_TX_01);
+
+ //Send a write to TX_00
+ F1_MOTO_LPIVOT1_A1_TX_00 = Int2Short.ushort.LSB;
+ //Read the TX_00 register and make sure that the value was written properly.
+ while( Int2Short.ushort.LSB != F1_MOTO_LPIVOT1_A1_TX_00);
+ break;
+ default:
+ break;
+ }
+
+ return 0;
+}
+
+uint8_t SPI_Receive (SPI Spi)
+{
+
+ INT2SHORT Int2Short;
+
+ //Check busy before trying to read RX registers.
+ while((F1_SPI_Busy1_D != NOTBUSY ) || (F1_SPI_Busy2_D != NOTBUSY ));
+
+ switch(Spi.Type)
+ {
+ case RLOADING:
+ Int2Short.ushort.LSB = F1_MOTO_RLOADING_A1_RX_00;
+ Int2Short.ushort.MSB = F1_MOTO_RLOADING_A1_RX_01;
+ break;
+ case RDRIVING:
+ Int2Short.ushort.LSB = F1_MOTO_RDRIVING_A1_RX_00;
+ Int2Short.ushort.MSB = F1_MOTO_RDRIVING_A1_RX_01;
+ break;
+ case F1_LDRIVING:
+ Int2Short.ushort.LSB = F1_MOTO_LDRIVING_A1_RX_00;
+ Int2Short.ushort.MSB = F1_MOTO_LDRIVING_A1_RX_01;
+ break;
+ case F1_LLOADING:
+ Int2Short.ushort.LSB = F1_MOTO_LLOADING_A1_RX_00;
+ Int2Short.ushort.MSB = F1_MOTO_LLOADING_A1_RX_01;
+ break;
+ case F1_DRYER_LOADARM:
+ Int2Short.ushort.LSB = F1_MOTO_DRYER_LOADARM_A1_RX_00;
+ Int2Short.ushort.MSB = F1_MOTO_DRYER_LOADARM_A1_RX_01;
+ break;
+ case F1_DRYER_DRIVING:
+ Int2Short.ushort.LSB = F1_MOTO_DRYER_DRIVING_A1_RX_00;
+ Int2Short.ushort.MSB = F1_MOTO_DRYER_DRIVING_A1_RX_01;
+ break;
+ case F1_DH_CLEANHEAD:
+ Int2Short.ushort.LSB = F1_MOTO_DH_CLEANHEAD_A1_RX_00;
+ Int2Short.ushort.MSB = F1_MOTO_DH_CLEANHEAD_A1_RX_01;
+ break;
+ case F1_DH_CLEANMECH:
+ Int2Short.ushort.LSB = F1_MOTO_DH_CLEANMECH_A1_RX_00;
+ Int2Short.ushort.MSB = F1_MOTO_DH_CLEANMECH_A1_RX_01;
+ break;
+ case F1_SCREW:
+ Int2Short.ushort.LSB = F1_MOTO_SCREW_A1_RX_00;
+ Int2Short.ushort.MSB = F1_MOTO_SCREW_A1_RX_01;
+ break;
+ case F1_WINDER:
+ Int2Short.ushort.LSB = F1_MOTO_WINDER_A1_RX_00;
+ Int2Short.ushort.MSB = F1_MOTO_WINDER_A1_RX_01;
+ break;
+ case RLOADARM:
+ Int2Short.ushort.LSB = F1_MOTO_RLOADARM_A1_RX_00;
+ Int2Short.ushort.MSB = F1_MOTO_RLOADARM_A1_RX_01;
+ break;
+ case RDANCER:
+ Int2Short.ushort.LSB = F1_MOTO_RDANCER_A1_RX_00;
+ Int2Short.ushort.MSB = F1_MOTO_RDANCER_A1_RX_01;
+ break;
+ case LDANCER1:
+ Int2Short.ushort.LSB = F1_MOTO_LDANCER1_A1_RX_00;
+ Int2Short.ushort.MSB = F1_MOTO_LDANCER1_A1_RX_01;
+ break;
+ case LDANCER2:
+ Int2Short.ushort.LSB = F1_MOTO_LDANCER2_A1_RX_00;
+ Int2Short.ushort.MSB = F1_MOTO_LDANCER2_A1_RX_01;
+ break;
+ case DRYER_LID:
+ Int2Short.ushort.LSB = F1_MOTO_DRYER_LID_A1_RX_00;
+ Int2Short.ushort.MSB = F1_MOTO_DRYER_LID_A1_RX_01;
+ break;
+ case DH_LID:
+ Int2Short.ushort.LSB = F1_MOTO_DH_LID_A1_RX_00;
+ Int2Short.ushort.MSB = F1_MOTO_DH_LID_A1_RX_01;
+ break;
+ case LPIVOT1:
+ Int2Short.ushort.LSB = F1_MOTO_LPIVOT1_A1_RX_00;
+ Int2Short.ushort.MSB = F1_MOTO_LPIVOT1_A1_RX_01;
+ break;
+ default:
+ break;
+ }
+
+ Spi.RX_MISO = Int2Short.uint;
+
+ return 0;
+}
diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/Moters_Driver/L6470.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/Moters_Driver/L6470.c
new file mode 100644
index 000000000..d6f72d726
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/Moters_Driver/L6470.c
@@ -0,0 +1,706 @@
+/*
+* cL6470.cpp
+*
+* Created: 6/22/2016 8:41:00 PM
+* Author: Atif
+*/
+//#include "graphics_adapter.h"
+//#include "Embedded/include.h"
+#include <stdint.h>
+#include <stdbool.h>
+#include <Stubs_Handler/DataDef.h>
+//#include <drivers/FPGA/FPGA_Comm.h>
+#include "drivers/SPI/SPI_Comm.h"
+#include "inc/hw_memmap.h"
+
+
+
+
+
+//////////////
+//#include "stdafx.h"
+#include "L6470.h"
+//#include "FPGA_Comm.h"
+// To use time library of C
+#include <time.h>
+
+//int volatile * const MOSI_Reg = (int *)MOSI_BASE;
+//int volatile * const MISO_Reg = (int *)MISO_BASE;
+//int volatile * const CS_Reg = (int *)CS_BASE;
+//int volatile * const CLK_Reg = (int *)CLK_BASE;
+//int volatile * const BUSY_Reg = (int *)BUSY_BASE;
+//int volatile * const RESET_Reg = (int *)RESET_BASE;
+//char volatile * const TX_Reg = (char *)TX_BASE;
+//char volatile * const RX_Reg = (char *)RX_BASE;
+
+
+
+
+//void cL6470(int MOSI, int MISO, int CS, int CLK, int BUSY, int RESET)
+//{
+// _Set_MISO(MISO);
+// _Set_MOSI(MOSI);
+// _Set_CS(CS);
+// _Set_CLK(CLK);
+// _Set_BUSY(BUSY);
+// _Set_RESET(RESET);
+//
+//}
+/*
+void delay(int number_of_seconds)
+{
+ // Converting time into milli_seconds
+ int milli_seconds = 1000 * number_of_seconds;
+
+ // Stroing start time
+ clock_t start_time = clock();
+
+ // looping till required time is not acheived
+ while (clock() < start_time + milli_seconds);
+}
+*/
+
+/*
+void init()
+{
+ //pinMode(_CS, OUTPUT);
+ //digitalWrite(_CS, HIGH);
+ L6470_CS = HIGH;
+ //pinMode(_MOSI, OUTPUT);
+ //pinMode(_MISO, INPUT);
+ //pinMode(_CLK, OUTPUT);
+ //pinMode(_BUSY, INPUT);
+ //pinMode(_RESET, OUTPUT);
+
+ //digitalWrite(_RESET, HIGH);
+ L6470_RESET = HIGH;
+ //AVI : TODO add deley
+ delay(1);
+ //digitalWrite(_RESET, LOW);
+ L6470_RESET = LOW;
+ delay(1);
+ //digitalWrite(_RESET, HIGH);
+ L6470_RESET = HIGH;
+ delay(1);
+
+ //SPI.begin();
+ //SPI.setBitOrder(MSBFIRST);
+ //SPI.setClockDivider(SPI_CLOCK_DIV16); // or 2, 8, 16, 32, 64
+ //SPI.setDataMode(SPI_MODE3);
+}
+*/
+
+void SetParam(byte param, unsigned long value)
+{
+ Data_To_Transfer(x_SET_PARAM | param);
+ ParamHandler(param, value);
+}
+
+
+unsigned long GetParam(byte param)
+{
+ Data_To_Transfer(x_GET_PARAM | param);
+ return ParamHandler(param, 0);
+}
+
+// Enable or disable the low-speed optimization option. If enabling,
+// the other 12 bits of
+void SetLSPDOpt(boolean enable)
+{
+ Data_To_Transfer(x_SET_PARAM | x_MIN_SPEED);
+
+ if (enable)
+ Param(0x1000, 13);
+ else
+ Param(0, 13);
+}
+
+// RUN sets the motor spinning in a direction (defined by the constants
+// FWD and REV). Maximum speed and minimum speed are defined
+// by the MAX_SPEED and MIN_SPEED registers; exceeding the FS_SPD value
+// will switch the device into full-step mode.
+// The SpdCalc() function is provided to convert steps/s values into
+// appropriate integer values for this function.
+void Run(byte dir, unsigned long spd)
+{
+ Data_To_Transfer(x_RUN | dir);
+ if (spd > 0xFFFFF) spd = 0xFFFFF;
+ Data_To_Transfer((byte)((spd >> 16)&0xFF));
+ Data_To_Transfer((byte)((spd >> 8)&0xFF));
+ Data_To_Transfer((byte)((spd)&0xFF));
+}
+byte Write_Byte(uint8_t WByte);
+void Run_tx_test(byte dir, unsigned long spd)
+{
+ uint32_t temp = 0;
+ uint32_t rx = 0;
+
+ temp = Write_Byte(x_RUN | dir);
+ rx |= (temp & 0xFF) << 24;
+
+ temp = Write_Byte((spd >> 16)&0xFF);
+ rx |= (temp & 0xFF) << 16;
+
+ temp = Write_Byte((spd >> 8)&0xFF);
+ rx |= (temp & 0xFF) << 8;
+
+ temp = Write_Byte((spd)&0xFF);
+ rx |= temp & 0xFF;
+
+ //return rx;
+}
+
+// STEP_CLOCK puts the device in external step clocking mode. When active,
+// pin 25, STCK, becomes the step clock for the device, and steps it in
+// the direction (set by the FWD and REV constants) imposed by the call
+// of this function. Motion commands (RUN, MOVE, etc) will cause the device
+// to exit step clocking mode.
+void Step_Clock(byte dir)
+{
+ Data_To_Transfer(x_STEP_CLOCK | dir);
+}
+
+// MOVE will send the motor n_step steps (size based on step mode) in the
+// direction imposed by dir (FWD or REV constants may be used). The motor
+// will accelerate according the acceleration and deceleration curves, and
+// will run at MAX_SPEED. Stepping mode will adhere to FS_SPD value, as well.
+void Move(byte dir, unsigned long n_step)
+{
+ Data_To_Transfer(x_MOVE | dir);
+ if (n_step > 0x3FFFFF) n_step = 0x3FFFFF;
+ Data_To_Transfer((byte)(n_step >> 16));
+ Data_To_Transfer((byte)(n_step >> 8));
+ Data_To_Transfer((byte)(n_step));
+}
+
+// GOTO operates much like MOVE, except it produces absolute motion instead
+// of relative motion. The motor will be moved to the indicated position
+// in the shortest possible fashion.
+void GoTo(unsigned long pos)
+{
+
+ Data_To_Transfer(x_GOTO);
+ if (pos > 0x3FFFFF) pos = 0x3FFFFF;
+ Data_To_Transfer((byte)(pos >> 16));
+ Data_To_Transfer((byte)(pos >> 8));
+ Data_To_Transfer((byte)(pos));
+}
+
+// Same as GOTO, but with user constrained rotational direction.
+void GoTo_DIR(byte dir, unsigned long pos)
+{
+
+ Data_To_Transfer(x_GOTO_DIR);
+ if (pos > 0x3FFFFF) pos = 0x3FFFFF;
+ Data_To_Transfer((byte)(pos >> 16));
+ Data_To_Transfer((byte)(pos >> 8));
+ Data_To_Transfer((byte)(pos));
+}
+
+// GoUntil will set the motor running with direction dir (REV or
+// FWD) until a falling edge is detected on the SW pin. Depending
+// on bit SW_MODE in CONFIG, either a hard stop or a soft stop is
+// performed at the falling edge, and depending on the value of
+// act (either RESET or COPY) the value in the ABS_POS register is
+// either RESET to 0 or COPY-ed into the MARK register.
+void GoUntil(byte act, byte dir, unsigned long spd)
+{
+ Data_To_Transfer(x_GO_UNTIL | act | dir);
+ if (spd > 0x3FFFFF) spd = 0x3FFFFF;
+ Data_To_Transfer((byte)(spd >> 16));
+ Data_To_Transfer((byte)(spd >> 8));
+ Data_To_Transfer((byte)(spd));
+}
+
+// Similar in nature to GoUntil, ReleaseSW produces motion at the
+// higher of two speeds: the value in MIN_SPEED or 5 steps/s.
+// The motor continues to run at this speed until a rising edge
+// is detected on the switch input, then a hard stop is performed
+// and the ABS_POS register is either COPY-ed into MARK or RESET to
+// 0, depending on whether RESET or COPY was passed to the function
+// for act.
+void ReleaseSW(byte act, byte dir)
+{
+ Data_To_Transfer(x_RELEASE_SW | act | dir);
+}
+
+// GoHome is equivalent to GoTo(0), but requires less time to send.
+// Note that no direction is provided; motion occurs through shortest
+// path. If a direction is required, use GoTo_DIR().
+void GoHome()
+{
+ Data_To_Transfer(x_GO_HOME);
+}
+
+// GoMark is equivalent to GoTo(MARK), but requires less time to send.
+// Note that no direction is provided; motion occurs through shortest
+// path. If a direction is required, use GoTo_DIR().
+void GoMark()
+{
+ Data_To_Transfer(x_GO_MARK);
+}
+
+// Sets the ABS_POS register to 0, effectively declaring the current
+// position to be "HOME".
+void ResetPos()
+{
+ byte value = x_RESET_POS;
+ Data_To_Transfer(value);
+}
+
+// Reset device to power up conditions. Equivalent to toggling the STBY
+// pin or cycling power.
+void ResetDev()
+{
+ byte value = x_RESET_DEVICE;
+ Data_To_Transfer(value);
+}
+
+// Bring the motor to a halt using the deceleration curve.
+void SoftStop()
+{
+ byte value = x_SOFT_STOP;
+ Data_To_Transfer(value);
+}
+
+// Stop the motor with infinite deceleration.
+void HardStop()
+{
+ byte value = x_HARD_STOP;
+ Data_To_Transfer(value);
+}
+
+// Decelerate the motor and put the bridges in Hi-Z state.
+void SoftHiZ()
+{
+ byte value = x_SOFT_HIZ;
+ Data_To_Transfer(value);
+}
+
+// Put the bridges in Hi-Z state immediately with no deceleration.
+void HardHiZ()
+{
+ byte value = x_HARD_HIZ;
+ Data_To_Transfer(value);
+}
+
+// Fetch and return the 16-bit value in the STATUS register. Resets
+// any warning flags and exits any error states. Using GetParam()
+// to read STATUS does not clear these values.
+int GetStatus()
+{
+ int temp = 0;
+ Data_To_Transfer(x_GET_STATUS);
+ temp = Data_To_Transfer(0) << 8;
+ temp |= Data_To_Transfer(0);
+ return temp;
+}
+
+
+
+
+unsigned long AccCalc(float stepsPerSecPerSec)
+{
+ float temp = (float)(stepsPerSecPerSec * 0.137438);
+ if ( ((unsigned long) ( (long)(temp) )) > 0x00000FFF )
+ return 0x00000FFF;
+ else return (unsigned long) (long)(temp);
+}
+
+// The calculation for DEC is the same as for ACC. Value is 0x08A on boot.
+// This is a 12-bit value, so we need to make sure the value is at or below 0xFFF.
+unsigned long DecCalc(float stepsPerSecPerSec)
+{
+ float temp = (float)(stepsPerSecPerSec * 0.137438);
+ if ((unsigned long) (long)(temp) > 0x00000FFF) return 0x00000FFF;
+ else return (unsigned long) (long)(temp);
+}
+
+// The value in the MAX_SPD register is [(steps/s)*(tick)]/(2^-18) where tick is
+// 250ns (datasheet value)- 0x041 on boot.
+// Multiply desired steps/s by .065536 to get an appropriate value for this register
+// This is a 10-bit value, so we need to make sure it remains at or below 0x3FF
+unsigned long MaxSpdCalc(float stepsPerSec)
+{
+ float temp = (float)(stepsPerSec * .065536);
+ if ((unsigned long) (long)(temp) > 0x000003FF) return 0x000003FF;
+ else return (unsigned long) (long)(temp);
+}
+
+// The value in the MIN_SPD register is [(steps/s)*(tick)]/(2^-24) where tick is
+// 250ns (datasheet value)- 0x000 on boot.
+// Multiply desired steps/s by 4.1943 to get an appropriate value for this register
+// This is a 12-bit value, so we need to make sure the value is at or below 0xFFF.
+unsigned long MinSpdCalc(float stepsPerSec)
+{
+ float temp = (float)(stepsPerSec * 4.1943);
+ if ((unsigned long) (long)(temp) > 0x00000FFF) return 0x00000FFF;
+ else return (unsigned long) (long)(temp);
+}
+
+// The value in the FS_SPD register is ([(steps/s)*(tick)]/(2^-18))-0.5 where tick is
+// 250ns (datasheet value)- 0x027 on boot.
+// Multiply desired steps/s by .065536 and subtract .5 to get an appropriate value for this register
+// This is a 10-bit value, so we need to make sure the value is at or below 0x3FF.
+unsigned long FSCalc(float stepsPerSec)
+{
+ float temp = (float)((stepsPerSec * .065536) - .5);
+ if ((unsigned long) (long)(temp) > 0x000003FF) return 0x000003FF;
+ else return (unsigned long) (long)(temp);
+}
+
+// The value in the INT_SPD register is [(steps/s)*(tick)]/(2^-24) where tick is
+// 250ns (datasheet value)- 0x408 on boot.
+// Multiply desired steps/s by 4.1943 to get an appropriate value for this register
+// This is a 14-bit value, so we need to make sure the value is at or below 0x3FFF.
+unsigned long IntSpdCalc(float stepsPerSec)
+{
+ float temp = (float)(stepsPerSec * 4.1943);
+ if ((unsigned long) (long)(temp) > 0x00003FFF) return 0x00003FFF;
+ else return (unsigned long) (long)(temp);
+}
+
+// When issuing RUN command, the 20-bit speed is [(steps/s)*(tick)]/(2^-28) where tick is
+// 250ns (datasheet value).
+// Multiply desired steps/s by 67.106 to get an appropriate value for this register
+// This is a 20-bit value, so we need to make sure the value is at or below 0xFFFFF.
+uint32_t SpdCalc(float stepsPerSec)// for run request
+{
+ /*float temp = (float)(stepsPerSec * 67.106);
+ if ((unsigned long) (long)(temp) > 0x000FFFFF) return 0x000FFFFF;
+ else return (unsigned long)temp;*/
+ uint32_t temp = 67106 * stepsPerSec;
+ uint32_t stepspertick = temp/1000 ;
+ if(stepspertick > 0xFFFFF)
+ stepspertick = 0xFFFFF;
+ return stepspertick;
+}
+float CurrentSpdCalc(uint32_t stepspertick)// for Speed response
+{
+ /*float temp = (float)(stepspertick);
+ float stepsPerSec = (float)(temp / 67.106);
+ if(stepsPerSec>15625) stepsPerSec = 15625;*/
+ uint32_t temp = stepspertick *1000;
+ float stepsPerSec = (float)(temp/67106);
+ if(stepsPerSec>15625) stepsPerSec = 15625;
+ return stepsPerSec;
+}
+
+
+
+// This simple function shifts a byte out over SPI and receives a byte over
+// SPI. Unusually for SPI devices, the x requires a toggling of the
+// CS (slaveSelect) pin after each byte sent. That makes this function
+// a bit more reasonable, because we can include more functionality in it.
+byte Data_To_Transfer(byte data)
+{
+
+ //while(SSIBusy(SSI2_BASE)){};
+ //while(Check_SPI_Busy() == BUSY){};
+
+ byte data_out = 0;
+ /*
+ //digitalWrite(_CS, LOW);
+ L6470_CS = LOW;
+ //data_out = SPI.transfer(data);
+ L6470_TX = data;
+ data_out = L6470_RX;
+
+ //digitalWrite(_CS, HIGH);
+ L6470_CS = HIGH;
+ return data_out;
+ */
+
+ data_out = Transfer_tx(data/*, &data_out*/ );
+ return data_out;
+}
+
+
+// the register will be automatically zero.
+// When disabling, the value will have to be explicitly written by
+// the user with a SetParam() call. See the datasheet for further
+// information about low-speed optimization.// Much of the functionality between "get parameter" and "set parameter" is
+// very similar, so we deal with that by putting all of it in one function
+// here to save memory space and simplify the program.
+unsigned long ParamHandler(byte param, unsigned long value)
+{
+ unsigned long ret_val = 0; // This is a temp for the value to return.
+ // This switch structure handles the appropriate action for each register.
+ // This is necessary since not all registers are of the same length, either
+ // bit-wise or byte-wise, so we want to make sure we mask out any spurious
+ // bits and do the right number of transfers. That is handled by the x_Param()
+ // function, in most cases, but for 1-byte or smaller transfers, we call
+ // Data_To_Transfer() directly.
+ switch (param)
+ {
+ // ABS_POS is the current absolute offset from home. It is a 22 bit number expressed
+ // in two's complement. At power up, this value is 0. It cannot be written when
+ // the motor is running, but at any other time, it can be updated to change the
+ // interpreted position of the motor.
+ case x_ABS_POS:
+ ret_val = Param(value, 22);
+ break;
+ // EL_POS is the current electrical position in the step generation cycle. It can
+ // be set when the motor is not in motion. Value is 0 on power up.
+ case x_EL_POS:
+ ret_val = Param(value, 9);
+ break;
+ // MARK is a second position other than 0 that the motor can be told to go to. As
+ // with ABS_POS, it is 22-bit two's complement. Value is 0 on power up.
+ case x_MARK:
+ ret_val = Param(value, 22);
+ break;
+ // SPEED contains information about the current speed. It is read-only. It does
+ // NOT provide direction information.
+ case x_SPEED:
+ ret_val = Param(0, 32);
+// writeLine("ParamHandler: ");
+// writeFloat(ret_val);
+ break;
+ // ACC and DEC set the acceleration and deceleration rates. Set ACC to 0xFFF
+ // to get infinite acceleration/decelaeration- there is no way to get infinite
+ // deceleration w/o infinite acceleration (except the HARD STOP command).
+ // Cannot be written while motor is running. Both default to 0x08A on power up.
+ // AccCalc() and DecCalc() functions exist to convert steps/s/s values into
+ // 12-bit values for these two registers.
+ case x_ACC:
+ ret_val = Param(value, 12);
+ break;
+ case x_DEC:
+ ret_val = Param(value, 12);
+ break;
+ // MAX_SPEED is just what it says- any command which attempts to set the speed
+ // of the motor above this value will simply cause the motor to turn at this
+ // speed. Value is 0x041 on power up.
+ // MaxSpdCalc() function exists to convert steps/s value into a 10-bit value
+ // for this register.
+ case x_MAX_SPEED:
+ ret_val = Param(value, 10);
+ break;
+ // MIN_SPEED controls two things- the activation of the low-speed optimization
+ // feature and the lowest speed the motor will be allowed to operate at. LSPD_OPT
+ // is the 13th bit, and when it is set, the minimum allowed speed is automatically
+ // set to zero. This value is 0 on startup.
+ // MinSpdCalc() function exists to convert steps/s value into a 12-bit value for this
+ // register. SetLSPDOpt() function exists to enable/disable the optimization feature.
+ case x_MIN_SPEED:
+ ret_val = Param(value, 12);
+ break;
+ // FS_SPD register contains a threshold value above which microstepping is disabled
+ // and the x operates in full-step mode. Defaults to 0x027 on power up.
+ // FSCalc() function exists to convert steps/s value into 10-bit integer for this
+ // register.
+ case x_FS_SPD:
+ ret_val = Param(value, 10);
+ break;
+ // KVAL is the maximum voltage of the PWM outputs. These 8-bit values are ratiometric
+ // representations: 255 for full output voltage, 128 for half, etc. Default is 0x29.
+ // The implications of different KVAL settings is too complex to dig into here, but
+ // it will usually work to max the value for RUN, ACC, and DEC. Maxing the value for
+ // HOLD may result in excessive power dissipation when the motor is not running.
+ case x_KVAL_HOLD:
+ ret_val = Data_To_Transfer((byte)value);
+ break;
+ case x_KVAL_RUN:
+ ret_val = Data_To_Transfer((byte)value);
+ break;
+ case x_KVAL_ACC:
+ ret_val = Data_To_Transfer((byte)value);
+ break;
+ case x_KVAL_DEC:
+ ret_val = Data_To_Transfer((byte)value);
+ break;
+ // INT_SPD, ST_SLP, FN_SLP_ACC and FN_SLP_DEC are all related to the back EMF
+ // compensation functionality. Please see the datasheet for details of this
+ // function- it is too complex to discuss here. Default values seem to work
+ // well enough.
+ case x_INT_SPD:
+ ret_val = Param(value, 14);
+ break;
+ case x_ST_SLP:
+ ret_val = Data_To_Transfer((byte)value);
+ break;
+ case x_FN_SLP_ACC:
+ ret_val = Data_To_Transfer((byte)value);
+ break;
+ case x_FN_SLP_DEC:
+ ret_val = Data_To_Transfer((byte)value);
+ break;
+ // K_THERM is motor winding thermal drift compensation. Please see the datasheet
+ // for full details on operation- the default value should be okay for most users.
+ case x_K_THERM:
+ ret_val = Data_To_Transfer((byte)value & 0x0F);
+ break;
+ // ADC_OUT is a read-only register containing the result of the ADC measurements.
+ // This is less useful than it sounds; see the datasheet for more information.
+ case x_ADC_OUT:
+ ret_val = Data_To_Transfer(0);
+ break;
+ // Set the overcurrent threshold. Ranges from 375mA to 6A in steps of 375mA.
+ // A set of defined constants is provided for the user's convenience. Default
+ // value is 3.375A- 0x08. This is a 4-bit value.
+ case x_OCD_TH:
+ ret_val = Data_To_Transfer((byte)value & 0x0F);
+ break;
+ // Stall current threshold. Defaults to 0x40, or 2.03A. Value is from 31.25mA to
+ // 4A in 31.25mA steps. This is a 7-bit value.
+ case x_STALL_TH:
+ ret_val = Data_To_Transfer((byte)value & 0x7F);
+ break;
+ // STEP_MODE controls the microstepping settings, as well as the generation of an
+ // output signal from the x. Bits 2:0 control the number of microsteps per
+ // step the part will generate. Bit 7 controls whether the BUSY/SYNC pin outputs
+ // a BUSY signal or a step synchronization signal. Bits 6:4 control the frequency
+ // of the output signal relative to the full-step frequency; see datasheet for
+ // that relationship as it is too complex to reproduce here.
+ // Most likely, only the microsteps per step value will be needed; there is a set
+ // of constants provided for ease of use of these values.
+ case x_STEP_MODE:
+ ret_val = Data_To_Transfer((byte)value);
+ break;
+ // ALARM_EN controls which alarms will cause the FLAG pin to fall. A set of constants
+ // is provided to make this easy to interpret. By default, ALL alarms will trigger the
+ // FLAG pin.
+ case x_ALARM_EN:
+ ret_val = Data_To_Transfer((byte)value);
+ break;
+ // CONFIG contains some assorted configuration bits and fields. A fairly comprehensive
+ // set of reasonably self-explanatory constants is provided, but users should refer
+ // to the datasheet before modifying the contents of this register to be certain they
+ // understand the implications of their modifications. Value on boot is 0x2E88; this
+ // can be a useful way to verify proper start up and operation of the x chip.
+ case x_CONFIG:
+ ret_val = Param(value, 16);
+ break;
+ // STATUS contains read-only information about the current condition of the chip. A
+ // comprehensive set of constants for masking and testing this register is provided, but
+ // users should refer to the datasheet to ensure that they fully understand each one of
+ // the bits in the register.
+ case x_STATUS: // STATUS is a read-only register
+ ret_val = Param(0, 16);
+ break;
+ default:
+ ret_val = Data_To_Transfer((byte)(value));
+ break;
+ }
+ return ret_val;
+}
+
+// Generalization of the subsections of the register read/write functionality.
+// We want the end user to just write the value without worrying about length,
+// so we pass a bit length parameter from the calling function.
+unsigned long Param(unsigned long value, byte bit_len)
+{
+ unsigned long ret_val = 0; // We'll return this to generalize this function
+ // for both read and write of registers.
+ byte byte_len = bit_len / 8; // How many BYTES do we have?
+ if (bit_len % 8 > 0) byte_len++; // Make sure not to lose any partial byte values.
+ // Let's make sure our value has no spurious bits set, and if the value was too
+ // high, max it out.
+ unsigned long mask = 0xffffffff >> (32 - bit_len);
+ if (value > mask)
+ value = mask;
+ // The following three if statements handle the various possible byte length
+ // transfers- it'll be no less than 1 but no more than 3 bytes of data.
+ // Data_To_Transfer() sends a byte out through SPI and returns a byte received
+ // over SPI- when calling it, we typecast a shifted version of the masked
+ // value, then we shift the received value back by the same amount and
+ // store it until return time.
+ if (byte_len == 3) {
+ ret_val |= Data_To_Transfer((byte)(value >> 16)) << 16;
+ //Serial.println(ret_val, HEX);
+ }
+ if (byte_len >= 2) {
+ ret_val |= Data_To_Transfer((byte)(value >> 8)) << 8;
+ //Serial.println(ret_val, HEX);
+ }
+ if (byte_len >= 1) {
+ //Serial.print("Value = ");
+ //Serial.println(value);
+ //Serial.print("ret_val = ");
+ //Serial.println(ret_val);
+
+ ret_val |= Data_To_Transfer((byte)value);
+
+ //Serial.print("ret_val = ");
+ //Serial.println(ret_val);
+
+ //Serial.println(ret_val, HEX);
+ }
+ // Return the received values. Mask off any unnecessary bits, just for
+ // the sake of thoroughness- we don't EXPECT to see anything outside
+ // the bit length range but better to be safe than sorry.
+ return (ret_val & mask);
+}
+
+// This simple function shifts a byte out over SPI and receives a byte over
+// SPI. Unusually for SPI devices, the x requires a toggling of the
+// CS (slaveSelect) pin after each byte sent. That makes this function
+// a bit more reasonable, because we can include more functionality in it.
+
+//
+//void Set_MOSI(int MOSI)
+//
+//{
+// _MOSI = MOSI;
+//}
+//
+//void Set_MISO(int MISO)
+//
+//{
+// _MISO = MISO;
+//}
+//
+//void Set_CS(int CS)
+//
+//{
+// _CS = CS;
+//}
+//
+//void Set_CLK(int CLK)
+//
+//{
+// _CLK = CLK;
+//}
+//
+//void Set_BUSY(int BUSY)
+//
+//{
+// _BUSY = BUSY;
+//}
+//
+//void Set_RESET(int RESET)
+//
+//{
+// _RESET = RESET;
+//}
+//
+//int Get_MOSI()
+//{
+// return MOSI;
+//}
+//
+//int Get_MISO()
+//{
+// return MISO;
+//}
+//
+//int Get_CS()
+//{
+// return CS;
+//}
+//int Get_CLK()
+//{
+// return CLK;
+//}
+//
+//int Get_BUSY()
+//{
+// return BUSY;
+//}
+//int Get_RESET()
+//{
+// return RESET;
+//}
+
+
diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/Moters_Driver/L6470.h b/Software/Embedded_SW/Embedded/Drivers/FPGA/Moters_Driver/L6470.h
new file mode 100644
index 000000000..4838e305a
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/Moters_Driver/L6470.h
@@ -0,0 +1,341 @@
+/*
+* cL6470.h
+*
+* Created: 6/22/2016 8:40:34 PM
+* Author: Atif
+*/
+
+
+#ifndef CL6470_H_
+#define CL6470_H_
+
+//#include <Arduino.h>
+//#include <SPI.h>
+
+//
+
+//
+
+// constant definitions for overcurrent thresholds. Write these values to
+// register x_OCD_TH to set the level at which an overcurrent even occurs.
+#define x_OCD_TH_375mA 0x00
+#define x_OCD_TH_750mA 0x01
+#define x_OCD_TH_1125mA 0x02
+#define x_OCD_TH_1500mA 0x03
+#define x_OCD_TH_1875mA 0x04
+#define x_OCD_TH_2250mA 0x05
+#define x_OCD_TH_2625mA 0x06
+#define x_OCD_TH_3000mA 0x07
+#define x_OCD_TH_3375mA 0x08
+#define x_OCD_TH_3750mA 0x09
+#define x_OCD_TH_4125mA 0x0A
+#define x_OCD_TH_4500mA 0x0B
+#define x_OCD_TH_4875mA 0x0C
+#define x_OCD_TH_5250mA 0x0D
+#define x_OCD_TH_5625mA 0x0E
+#define x_OCD_TH_6000mA 0x0F
+
+// STEP_MODE option values.
+// First comes the "microsteps per step" options...
+#define x_STEP_MODE_STEP_SEL 0x07 // Mask for these bits only.
+#define x_STEP_SEL_1 0x00
+#define x_STEP_SEL_1_2 0x01
+#define x_STEP_SEL_1_4 0x02
+#define x_STEP_SEL_1_8 0x03
+#define x_STEP_SEL_1_16 0x04
+#define x_STEP_SEL_1_32 0x05
+#define x_STEP_SEL_1_64 0x06
+#define x_STEP_SEL_1_128 0x07
+
+// ...next, define the SYNC_EN bit. When set, the BUSYN pin will instead
+// output a clock related to the full-step frequency as defined by the
+// SYNC_SEL bits below.
+#define x_STEP_MODE_SYNC_EN 0x80 // Mask for this bit
+#define x_SYNC_EN 0x80
+
+// ...last, define the SYNC_SEL modes. The clock output is defined by
+// the full-step frequency and the value in these bits- see the datasheet
+// for a matrix describing that relationship (page 46).
+#define x_STEP_MODE_SYNC_SEL 0x70
+#define x_SYNC_SEL_1_2 0x00
+#define x_SYNC_SEL_1 0x10
+#define x_SYNC_SEL_2 0x20
+#define x_SYNC_SEL_4 0x30
+#define x_SYNC_SEL_8 0x40
+#define x_SYNC_SEL_16 0x50
+#define x_SYNC_SEL_32 0x60
+#define x_SYNC_SEL_64 0x70
+
+// Bit names for the ALARM_EN register.
+// Each of these bits defines one potential alarm condition.
+// When one of these conditions occurs and the respective bit in ALARM_EN is set,
+// the FLAG pin will go low. The register must be queried to determine which event
+// caused the alarm.
+#define x_ALARM_EN_OVERCURRENT 0x01
+#define x_ALARM_EN_THERMAL_SHUTDOWN 0x02
+#define x_ALARM_EN_THERMAL_WARNING 0x04
+#define x_ALARM_EN_UNDER_VOLTAGE 0x08
+#define x_ALARM_EN_STALL_DET_A 0x10
+#define x_ALARM_EN_STALL_DET_B 0x20
+#define x_ALARM_EN_SW_TURN_ON 0x40
+#define x_ALARM_EN_WRONG_NPERF_CMD 0x80
+
+// CONFIG register renames.
+
+// Oscillator options.
+// The x needs to know what the clock frequency is because it uses that for some
+// calculations during operation.
+#define x_CONFIG_OSC_SEL 0x000F // Mask for this bit field.
+#define x_CONFIG_INT_16MHZ 0x0000 // Internal 16MHz, no output
+#define x_CONFIG_INT_16MHZ_OSCOUT_2MHZ 0x0008 // Default; internal 16MHz, 2MHz output
+#define x_CONFIG_INT_16MHZ_OSCOUT_4MHZ 0x0009 // Internal 16MHz, 4MHz output
+#define x_CONFIG_INT_16MHZ_OSCOUT_8MHZ 0x000A // Internal 16MHz, 8MHz output
+#define x_CONFIG_INT_16MHZ_OSCOUT_16MHZ 0x000B // Internal 16MHz, 16MHz output
+#define x_CONFIG_EXT_8MHZ_XTAL_DRIVE 0x0004 // External 8MHz crystal
+#define x_CONFIG_EXT_16MHZ_XTAL_DRIVE 0x0005 // External 16MHz crystal
+#define x_CONFIG_EXT_24MHZ_XTAL_DRIVE 0x0006 // External 24MHz crystal
+#define x_CONFIG_EXT_32MHZ_XTAL_DRIVE 0x0007 // External 32MHz crystal
+#define x_CONFIG_EXT_8MHZ_OSCOUT_INVERT 0x000C // External 8MHz crystal, output inverted
+#define x_CONFIG_EXT_16MHZ_OSCOUT_INVERT 0x000D // External 16MHz crystal, output inverted
+#define x_CONFIG_EXT_24MHZ_OSCOUT_INVERT 0x000E // External 24MHz crystal, output inverted
+#define x_CONFIG_EXT_32MHZ_OSCOUT_INVERT 0x000F // External 32MHz crystal, output inverted
+
+// Configure the functionality of the external switch input
+#define x_CONFIG_SW_MODE 0x0010 // Mask for this bit.
+#define x_CONFIG_SW_HARD_STOP 0x0000 // Default; hard stop motor on switch.
+#define x_CONFIG_SW_USER 0x0010 // Tie to the GoUntil and ReleaseSW
+// commands to provide jog function.
+// See page 25 of datasheet.
+
+// Configure the motor voltage compensation mode (see page 34 of datasheet)
+#define x_CONFIG_EN_VSCOMP 0x0020 // Mask for this bit.
+#define x_CONFIG_VS_COMP_DISABLE 0x0000 // Disable motor voltage compensation.
+#define x_CONFIG_VS_COMP_ENABLE 0x0020 // Enable motor voltage compensation.
+
+// Configure overcurrent detection event handling
+#define x_CONFIG_OC_SD 0x0080 // Mask for this bit.
+#define x_CONFIG_OC_SD_DISABLE 0x0000 // Bridges do NOT shutdown on OC detect
+#define x_CONFIG_OC_SD_ENABLE 0x0080 // Bridges shutdown on OC detect
+
+// Configure the slew rate of the power bridge output
+#define x_CONFIG_POW_SR 0x0300 // Mask for this bit field.
+#define x_CONFIG_SR_180V_us 0x0000 // 180V/us
+#define x_CONFIG_SR_290V_us 0x0200 // 290V/us
+#define x_CONFIG_SR_530V_us 0x0300 // 530V/us
+
+// Integer divisors for PWM sinewave generation
+// See page 32 of the datasheet for more information on this.
+#define x_CONFIG_F_PWM_DEC 0x1C00 // mask for this bit field
+#define x_CONFIG_PWM_MUL_0_625 (0x00)<<10
+#define x_CONFIG_PWM_MUL_0_75 (0x01)<<10
+#define x_CONFIG_PWM_MUL_0_875 (0x02)<<10
+#define x_CONFIG_PWM_MUL_1 (0x03)<<10
+#define x_CONFIG_PWM_MUL_1_25 (0x04)<<10
+#define x_CONFIG_PWM_MUL_1_5 (0x05)<<10
+#define x_CONFIG_PWM_MUL_1_75 (0x06)<<10
+#define x_CONFIG_PWM_MUL_2 (0x07)<<10
+
+// Multiplier for the PWM sinewave frequency
+#define x_CONFIG_F_PWM_INT 0xE000 // mask for this bit field.
+#define x_CONFIG_PWM_DIV_1 (0x00)<<13
+#define x_CONFIG_PWM_DIV_2 (0x01)<<13
+#define x_CONFIG_PWM_DIV_3 (0x02)<<13
+#define x_CONFIG_PWM_DIV_4 (0x03)<<13
+#define x_CONFIG_PWM_DIV_5 (0x04)<<13
+#define x_CONFIG_PWM_DIV_6 (0x05)<<13
+#define x_CONFIG_PWM_DIV_7 (0x06)<<13
+
+// Status register bit renames- read-only bits conferring information about the
+// device to the user.
+#define x_STATUS_HIZ 0x0001 // high when bridges are in HiZ mode
+#define x_STATUS_BUSY 0x0002 // mirrors BUSY pin
+#define x_STATUS_SW_F 0x0004 // low when switch open, high when closed
+#define x_STATUS_SW_EVN 0x0008 // active high, set on switch falling edge,
+// cleared by reading STATUS
+#define x_STATUS_DIR 0x0010 // Indicates current motor direction.
+// High is FWD, Low is REV.
+#define x_STATUS_NOTPERF_CMD 0x0080 // Last command not performed.
+#define x_STATUS_WRONG_CMD 0x0100 // Last command not valid.
+#define x_STATUS_UVLO 0x0200 // Undervoltage lockout is active
+#define x_STATUS_TH_WRN 0x0400 // Thermal warning
+#define x_STATUS_TH_SD 0x0800 // Thermal shutdown
+#define x_STATUS_OCD 0x1000 // Overcurrent detected
+#define x_STATUS_STEP_LOSS_A 0x2000 // Stall detected on A bridge
+#define x_STATUS_STEP_LOSS_B 0x4000 // Stall detected on B bridge
+#define x_STATUS_SCK_MOD 0x8000 // Step clock mode is active
+
+// Status register motor status field
+#define x_STATUS_MOT_STATUS 0x0060 // field mask
+#define x_STATUS_MOT_STATUS_STOPPED (0x0000)<<13 // Motor stopped
+#define x_STATUS_MOT_STATUS_ACCELERATION (0x0001)<<13 // Motor accelerating
+#define x_STATUS_MOT_STATUS_DECELERATION (0x0002)<<13 // Motor decelerating
+#define x_STATUS_MOT_STATUS_CONST_SPD (0x0003)<<13 // Motor at constant speed
+
+// Register address redefines.
+// See the x_Param_Handler() function for more info about these.
+#define x_ABS_POS 0x01
+#define x_EL_POS 0x02
+#define x_MARK 0x03
+#define x_SPEED 0x04
+#define x_ACC 0x05
+#define x_DEC 0x06
+#define x_MAX_SPEED 0x07
+#define x_MIN_SPEED 0x08
+#define x_FS_SPD 0x15
+#define x_KVAL_HOLD 0x09
+#define x_KVAL_RUN 0x0A
+#define x_KVAL_ACC 0x0B
+#define x_KVAL_DEC 0x0C
+#define x_INT_SPD 0x0D
+#define x_ST_SLP 0x0E
+#define x_FN_SLP_ACC 0x0F
+#define x_FN_SLP_DEC 0x10
+#define x_K_THERM 0x11
+#define x_ADC_OUT 0x12
+#define x_OCD_TH 0x13
+#define x_STALL_TH 0x14
+#define x_STEP_MODE 0x16
+#define x_ALARM_EN 0x17
+#define x_CONFIG 0x18
+#define x_STATUS 0x19
+
+//x commands
+#define x_NOP 0x00
+#define x_SET_PARAM 0x00
+#define x_GET_PARAM 0x20
+#define x_RUN 0x50
+#define x_STEP_CLOCK 0x58
+#define x_MOVE 0x40
+#define x_GOTO 0x60
+#define x_GOTO_DIR 0x68
+#define x_GO_UNTIL 0x82
+#define x_RELEASE_SW 0x92
+#define x_GO_HOME 0x70
+#define x_GO_MARK 0x78
+#define x_RESET_POS 0xD8
+#define x_RESET_DEVICE 0xC0
+#define x_SOFT_STOP 0xB0
+#define x_HARD_STOP 0xB8
+#define x_SOFT_HIZ 0xA0
+#define x_HARD_HIZ 0xA8
+#define x_GET_STATUS 0xD0 // use Get_and_Clear_Status
+
+/* x direction options */
+#define FWD 0x01
+#define REV 0x00
+
+/* x action options */
+#define ACTION_RESET 0x00
+#define ACTION_COPY 0x01
+
+
+
+//class cL6470 {
+//public:
+
+//Default constuctot
+//cL6470();
+
+//Overload Constructor
+//@param int MOSI, int MISO, int CS, int CLK, int BUSY, int RESET
+//cL6470(int, int, int, int, int, int);
+
+#include "Stubs_Handler/DataDef.h"
+
+void init();
+unsigned long GetParam(byte);
+byte Data_To_Transfer(byte);
+unsigned long ParamHandler(byte, unsigned long);
+void SetParam(byte, unsigned long);
+unsigned long Param(unsigned long, byte);
+int GetStatus();
+uint32_t SpdCalc(float);
+unsigned long IntSpdCalc(float);
+unsigned long FSCalc(float);
+unsigned long MinSpdCalc(float);
+unsigned long MaxSpdCalc(float);
+unsigned long DecCalc(float);
+unsigned long AccCalc(float);
+void SetLSPDOpt(boolean);
+void Run(byte, unsigned long);
+void Step_Clock(byte);
+void Move(byte, unsigned long);
+void GoTo(unsigned long);
+void GoTo_DIR(byte, unsigned long);
+void GoUntil(byte, byte, unsigned long);
+void ReleaseSW(byte, byte);
+void GoHome();
+void GoMark();
+void ResetPos();
+void ResetDev();
+void SoftStop();
+void HardStop();
+void SoftHiZ();
+void HardHiZ();
+float CurrentSpdCalc(uint32_t stepspertick);// for Speed response
+void delay(int number_of_seconds);
+void Run_tx_test(byte dir, unsigned long spd);
+////TODO update the addresses
+//#define MOSI_BASE 0x00000001 //
+//#define MISO_BASE 0x00000002 //
+//#define CS_BASE 0x00000003 //
+//#define CLK_BASE 0x00000004 //
+//#define BUSY_BASE 0x00000005 //
+//#define RESET_BASE 0x00000006 //
+//#define TX_BASE 0x00000006 //
+//#define RX_BASE 0x00000007 //
+
+
+//extern int volatile * const MOSI_Reg;
+//extern int volatile * const MISO_Reg;
+//extern int volatile * const CS_Reg;
+//extern int volatile * const CLK_Reg;
+//extern int volatile * const BUSY_Reg;
+//extern int volatile * const RESET_Reg;
+//extern char volatile * const TX_Reg;
+//extern char volatile * const RX_Reg;
+
+//*MOSI = value; /* write to port */
+//value = *MOSI; /* read from port */
+
+
+
+///////////////
+
+
+////@param int MOSI
+//void Set_MOSI(int);
+////@param int MISO
+//void Set_MISO(int);
+////@param int CS
+//void Set_CS(int);
+////@param int CLK
+//void Set_CLK(int);
+////@param int BUSY
+//void Set_BUSY(int);
+////@param int RESET
+//void Set_RESET(int);
+
+
+
+//int Get_MOSI();
+//int Get_MISO();
+//int Get_CS();
+//int Get_CLK();
+//int Get_BUSY();
+//int Get_RESET();
+
+
+//private:
+// Member Variable
+
+//int MOSI = 0;
+//int MISO = 0;
+//int CS = 0;
+//int CLK = 0;
+//int BUSY = 0;
+//int RESET = 0;
+//};
+
+
+#endif /* CL6470_H_ */
diff --git a/Software/Embedded_SW/Embedded/Drivers/SPI/SPI_Comm.c b/Software/Embedded_SW/Embedded/Drivers/SPI/SPI_Comm.c
new file mode 100644
index 000000000..17f2f549b
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Drivers/SPI/SPI_Comm.c
@@ -0,0 +1,1036 @@
+
+#include <stdbool.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <string.h>
+
+#include "inc/hw_memmap.h"
+#include "driverlib/gpio.h"
+#include "driverlib/pin_map.h"
+#include "driverlib/ssi.h"
+#include "driverlib/sysctl.h"
+#include "utils/uartstdio.h"
+
+//#include "graphics_adapter.h"
+#include "drivers/FPGA/Moters_Driver/L6470.h"
+
+//#include "drivers/FPGA/FPGA_Comm.h"
+
+#include <driverlib/rom.h>
+#include <driverlib/rom_map.h>
+#include <PMR/Stubs/StubMotorInitRequest.pb-c.h>
+#include <Stubs_Handler/DataDef.h>
+
+void temp_init_spi2();
+void temp_setup();
+
+void Avi_test_get_speed();
+//uint32_t Get_Param_Status(byte param);
+uint32_t Get_and_Clear_Status();
+
+uint32_t Get_Param(byte param);
+unsigned long MaxSpdCalc(float stepsPerSec);
+
+extern unsigned long Run_Value ;
+extern unsigned long Mov_Value ;
+extern unsigned long Pos_Value;
+extern bool Direction ;
+extern unsigned long Time_2_Change_Direction ;
+extern bool Display_Tx_ON_LCD;
+extern bool Display_Rx_on_LCD;
+extern unsigned long Init_MicroStep ;
+extern unsigned long Init_Acc;
+extern unsigned long Init_Dec;
+extern bool TestBool_1;
+extern bool TestBool_2;
+extern bool TestBool_3;
+extern bool TestBool_4;
+extern bool TestBool_5;
+extern unsigned long TestUint32_1;
+extern unsigned long TestUint32_2;
+extern unsigned long TestUint32_3;
+extern unsigned long TestUint32_4;
+extern unsigned long TestUint32_5;
+extern unsigned long TestUint32_6;
+
+extern unsigned char Stop_Command;
+
+//#define SPI_EVA_LCD_ENABLED
+
+
+void SPI2_Init()
+{
+ #if defined(TARGET_IS_TM4C129_RA0) || \
+ defined(TARGET_IS_TM4C129_RA1) || \
+ defined(TARGET_IS_TM4C129_RA2)
+ uint32_t ui32SysClock;
+ #endif
+
+
+
+ //
+ // Set the clocking to run directly from the external crystal/oscillator.
+ // TODO: The SYSCTL_XTAL_ value must be changed to match the value of the
+ // crystal on your board.
+ //
+ #if defined(TARGET_IS_TM4C129_RA0) || \
+ defined(TARGET_IS_TM4C129_RA1) || \
+ defined(TARGET_IS_TM4C129_RA2)
+ /*ui32SysClock = SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ |
+ SYSCTL_OSC_MAIN |
+ SYSCTL_USE_OSC), 25000000);*/
+ ui32SysClock = MAP_SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ |
+ SYSCTL_OSC_MAIN | SYSCTL_USE_PLL |
+ SYSCTL_CFG_VCO_480), 120000000);
+ #else
+ SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |
+ SYSCTL_XTAL_16MHZ);
+ #endif
+#ifdef SPI_EVA_LCD_ENABLED
+ writeLine("SSI:");
+ writeLine(" Mode: SPI");
+ writeLine(" Data: 8-bit");
+#endif
+
+ // The SSI2 peripheral must be enabled for use.
+ //
+ SysCtlPeripheralReset(SYSCTL_PERIPH_SSI2);
+ SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI2);
+
+ //
+ // For this example SSI2 is used with PortG[7:4]. GPIO port G needs to be
+ // enabled so these pins can be used.
+ //
+ SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOG);
+
+
+
+ /* Configure pad settings */ // AVI
+ GPIOPadConfigSet(GPIO_PORTG_BASE,
+ GPIO_PIN_7 | GPIO_PIN_5,
+ GPIO_STRENGTH_4MA, GPIO_PIN_TYPE_STD);
+
+
+ GPIOPadConfigSet(GPIO_PORTG_BASE,
+ GPIO_PIN_4,
+ GPIO_STRENGTH_4MA, GPIO_PIN_TYPE_STD_WPU);
+
+ GPIOPadConfigSet(GPIO_PORTG_BASE,
+ GPIO_PIN_6,
+ GPIO_STRENGTH_4MA, GPIO_PIN_TYPE_STD);
+
+
+ //
+ // Configure the pin muxing for SSI2 functions on port G4, G5, G6 and G7.
+ // This step is not necessary if your part does not support pin muxing.
+
+
+ #define GPIO_PG4_SSI2TX GPIO_PG4_SSI2XDAT1 // AVI
+ #define GPIO_PG5_SSI2RX GPIO_PG5_SSI2XDAT0 // AVI
+
+ //
+ GPIOPinConfigure(GPIO_PG7_SSI2CLK);
+ GPIOPinConfigure(GPIO_PG6_SSI2FSS);
+ GPIOPinConfigure(GPIO_PG5_SSI2RX);
+ GPIOPinConfigure(GPIO_PG4_SSI2TX);
+
+ //
+ // Configure the GPIO settings for the SSI pins. This function also gives
+ // control of these pins to the SSI hardware. Consult the data sheet to
+ // see which functions are allocated per pin.
+ // The pins are assigned as follows:
+ // PG4 - SSI2Tx
+ // PG5 - SSI2Rx
+ // PG6 - SSI2Fss
+ // PG7 - SSI2CLK
+ //
+ GPIOPinTypeSSI(GPIO_PORTG_BASE, GPIO_PIN_7 | GPIO_PIN_6 | GPIO_PIN_5 |
+ GPIO_PIN_4);
+
+ //
+ // Configure and enable the SSI2 port for SPI Master mode.
+ //
+ #if defined(TARGET_IS_TM4C129_RA0) || \
+ defined(TARGET_IS_TM4C129_RA1) || \
+ defined(TARGET_IS_TM4C129_RA2)
+ SSIConfigSetExpClk(SSI2_BASE, ui32SysClock, SSI_FRF_MOTO_MODE_0,
+ SSI_MODE_MASTER, 1000000, 8);
+ #else
+ SSIConfigSetExpClk(SSI2_BASE, SysCtlClockGet(), SSI_FRF_MOTO_MODE_0,
+ SSI_MODE_MASTER, 1000000, 8);
+ #endif
+
+ SSIAdvModeSet(SSI2_BASE,SSI_ADV_MODE_READ_WRITE);//data is written to and read from the slave // AVI
+ //
+ // Enable the SSI2 module.
+ //
+ SSIEnable(SSI2_BASE);
+ //----------------------------------------------------------------
+
+}
+
+void init_BUSY_Pin(void)
+{
+ MAP_GPIOPinTypeGPIOInput(GPIO_PORTG_BASE, GPIO_PIN_0); // Enable pin for GPIOInput
+ SysCtlDelay(10000);
+ GPIOPadConfigSet(GPIO_PORTG_BASE,GPIO_PIN_0,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPU );//Configure GPIO PULL UP resistors. NOTE: does not work if ROM_GPIOPinTypeGPIOInput() isnt called before.
+}
+
+bool Check_SPI_Busy(void)
+{
+
+ if(ROM_GPIOPinRead(GPIO_PORTG_BASE, GPIO_PIN_0) == GPIO_PIN_0)
+ return NOTBUSY;
+ else
+ return BUSY;
+}
+
+bool Polling_SPI_Busy(void)
+{
+ uint32_t timeout = 10000; // todo - check this value
+ char temp;
+
+ do
+ {
+ timeout--;
+ temp = ROM_GPIOPinRead(GPIO_PORTG_BASE, GPIO_PIN_0);
+ } while(( temp != GPIO_PIN_0) && (timeout));
+
+ if(temp != GPIO_PIN_0)
+ return BUSY;//After time out
+ else
+ return NOTBUSY;
+}
+
+void SPI_TX(unsigned int SSI_BASE,uint32_t *pui32DataTx, uint32_t *pui32DataRx, unsigned int Num_SSI_Data)
+{
+ uint32_t ui32Index;
+ //
+ // Read any residual data from the SSI port. This makes sure the receive
+ // FIFOs are empty, so we don't read any unwanted junk. This is done here
+ // because the SPI SSI mode is full-duplex, which allows you to send and
+ // receive at the same time. The SSIDataGetNonBlocking function returns
+ // "true" when data was returned, and "false" when no data was returned.
+ // The "non-blocking" function checks if there is any data in the receive
+ // FIFO and does not "hang" if there isn't.
+ //
+ while(SSIDataGetNonBlocking(SSI_BASE, &pui32DataRx[0]))
+ {
+ }
+
+
+ //
+ // Display indication that the SSI is transmitting data.
+ //
+ //UARTprintf("Sent:\n ");
+#ifdef SPI_EVA_LCD_ENABLED
+ writeLine("Sent: ");
+#endif
+ //
+ // Send 3 bytes of data.
+ //
+
+ for(ui32Index = 0; ui32Index < Num_SSI_Data; ui32Index++)
+ {
+ #ifdef SPI_EVA_LCD_ENABLED
+#ifdef SPI_EVA_LCD_ENABLED
+ // Display the data that SSI is transferring.
+ writeFloat (pui32DataTx[ui32Index]);
+ writeString(" ");
+#endif
+ #endif
+
+
+ //
+ // Send the data using the "blocking" put function. This function
+ // will wait until there is room in the send FIFO before returning.
+ // This allows you to assure that all the data you send makes it into
+ // the send FIFO.
+ //
+ SSIDataPut(SSI_BASE, pui32DataTx[ui32Index]);
+ }
+
+ //
+ // Wait until SSI2 is done transferring all the data in the transmit FIFO.
+ //
+ while(SSIBusy(SSI_BASE))
+ {
+ }
+}
+
+void SPI_RX(unsigned int SSI_Bsae, uint32_t* RxBuf, uint32_t NumOfWords)
+{
+
+/*
+ uint32_t ui32Index;
+#define DUMMY_BYTE 0x00
+
+ NumOfWords = 2;
+
+ writeLine("Starting Read Operations...");
+
+ for(ui32Index=0;ui32Index<NumOfWords-1;ui32Index++)
+ {
+ SSIDataPut(SSI_Bsae,DUMMY_BYTE);
+ SSIDataGet(SSI_Bsae,&RxBuf[ui32Index]);
+ }
+ SSIAdvDataPutFrameEnd(SSI_Bsae,DUMMY_BYTE);
+ SSIDataGet(SSI_Bsae,&RxBuf[NumOfWords-1]);
+
+
+ writeFloat (RxBuf[0]);
+ writeFloat (RxBuf[1]);
+//
+ writeLine("Read Completed...");
+
+*/
+
+ uint32_t ui32Index;
+#ifdef SPI_EVA_LCD_ENABLED
+ // Display indication that the SSI is receiving data.
+ writeLine("Received: ");
+#endif
+ //
+ // Receive 3 bytes of data.
+
+// while(SSIBusy(SSI_Bsae))
+// {
+// }
+ //
+ unsigned char Num_SSI_Data = 1;
+ uint32_t pui32DataRx[1];
+
+ for(ui32Index = 0; ui32Index < Num_SSI_Data; ui32Index++)
+ {
+ //
+ // Receive the data using the "blocking" Get function. This function
+ // will wait until there is data in the receive FIFO before returning.
+ //
+ SSIDataGet(SSI_Bsae, &pui32DataRx[ui32Index]);
+
+// writeLine("SPI_RX: ");
+// writeFloat (pui32DataRx[ui32Index]);
+// writeString(" ");
+
+
+ //
+ // Since we are using 8-bit data, mask off the MSB.
+ //
+ pui32DataRx[ui32Index] &= 0x00FF;
+
+ //
+ // Display the data that SSI2 received.
+ //
+ //UARTprintf("'%c' ", pui32DataRx[ui32Index]);
+
+ //temp[0] = pui32DataRx[ui32Index];
+ //writeString(temp);
+//#ifdef SPI_EVA_LCD_ENABLED
+// writeFloat (pui32DataRx[ui32Index]);
+// writeString(" ");
+//#endif
+ }
+
+ RxBuf[0] = pui32DataRx[0];
+
+ //
+ // Return no errors
+ //
+
+
+}
+
+///////////////
+
+void setup(StubMotorInitRequest* request)
+//void setup()
+{
+
+ unsigned long read_status, NOP;
+
+ // // Standard serial port initialization for debugging.
+ //Serial.begin(9600);
+ //Serial.setTimeout(50);
+ //delay(500);
+
+ //if (GetParam(x_CONFIG) == 0x2E88) // the default value of the CONFIG register
+ // The following function calls are for this demo application-
+ // you will need to adjust them for your particular
+ // application, and you may need to configure additional
+ // registers.
+
+ // First, let's set the step mode register:
+ // - x_SYNC_EN controls whether the BUSY/SYNC pin reflects
+ // the step frequency or the BUSY status of the chip. We
+ // want it to be the BUSY status.
+ // - x_STEP_SEL_x is the microstepping rate- we'll go full
+ // step.
+ // - x_SYNC_SEL_x is the ratio of (micro)steps to toggles
+ // on the BUSY/SYNC pin (when that pin is used for SYNC).
+ // Make it 1:1, despite not using that pin.
+
+
+ //Step mode can only be changed when bridges are disabled:
+ HardHiZ();
+ read_status = Get_Param(x_STATUS);
+ while((read_status & x_STATUS_HIZ) != x_STATUS_HIZ)
+ {
+ NOP++;
+ }
+
+ while(SSIBusy(SSI2_BASE)){};
+
+ if(request->set_micro_steps)
+ {
+ SetParam(x_STEP_MODE,
+ !x_SYNC_EN |
+ request->micro_steps |
+ x_SYNC_SEL_1);
+ }
+ else
+ {
+ SetParam(x_STEP_MODE,
+ !x_SYNC_EN |
+ x_STEP_SEL_1_8 |
+ x_SYNC_SEL_1);
+ }
+
+ // Configure the MAX_SPEED register- this is the maximum number
+ // of (micro)steps per second allowed. You'll want to mess
+ // around with your desired application to see how far you can
+ // push it before the motor starts to slip. The ACTUAL
+ // parameter passed to this function is in steps/tick;
+ // MaxSpdCalc() will convert a number of steps/s into an
+ // appropriate value for this function. Note that for any move
+ // or goto type function where no speed is specified, this
+ // value will be used.
+ while(SSIBusy(SSI2_BASE)){};
+
+ if(request->set_max_speed)
+ {
+ SetParam(x_MAX_SPEED, MaxSpdCalc(request->max_speed));
+ }
+ else
+ {
+ SetParam(x_MAX_SPEED, MaxSpdCalc(1120));
+ }
+
+
+ // Configure the FS_SPD register- this is the speed at which the
+ // driver ceases microstepping and goes to full stepping.
+ // FSCalc() converts a value in steps/s to a value suitable for
+ // this register; to disable full-step switching, you can pass
+ // 0x3FF to this register.
+ while(SSIBusy(SSI2_BASE)){};
+ SetParam(x_FS_SPD, FSCalc(0x3FF));
+
+ //STALL threshold
+ while(SSIBusy(SSI2_BASE)){};
+ //RMS=sqrt((I*I)*dutycycle)
+ SetParam(x_STALL_TH, 0x1F);//1A Reset Value 0x40 (2.03A) ---------------------
+
+
+ // Configure the acceleration rate, in steps/tick/tick. There is
+ // also a DEC register; both of them have a function (AccCalc()
+ // and DecCalc() respectively) that convert from steps/s/s into
+ // the appropriate value for the register. Writing ACC to 0xfff
+ // sets the acceleration and deceleration to 'infinite' (or as
+ // near as the driver can manage). If ACC is set to 0xfff, DEC
+ // is ignored. To get infinite deceleration without infinite
+ // acceleration, only hard stop will work.
+
+ //SoftStop(); // ACC + DEC writable only when motor is stopped
+ //SysCtlDelay(10000000);
+ while(SSIBusy(SSI2_BASE)){};
+
+ HardHiZ();
+ read_status = Get_Param(x_STATUS);
+ while((read_status & x_STATUS_HIZ) != x_STATUS_HIZ)
+ {
+ SysCtlDelay(1000000);
+ read_status = Get_Param(x_STATUS);
+ }
+ // ACC + DEC writable only when motor is stopped
+
+ if(request->set_acc)
+ {
+ SetParam(x_ACC, request->acc);//roll-over after 0x7F - 7 bit ??? (should be 12 bit) AVI
+ }
+ else
+ {
+ SetParam(x_ACC, 0x8A);//roll-over after 0x7F - 7 bit ??? (should be 12 bit) AVI
+ }
+
+ while(SSIBusy(SSI2_BASE)){};
+
+ if(request->set_dec)
+ {
+ SetParam(x_ACC, request->dec);//roll-over after 0x7F - 7 bit ??? (should be 12 bit) AVI
+ }
+ else
+ {
+ SetParam(x_DEC, 0x8A);//roll-over after 0x7F - 7 bit ??? (should be 12 bit) AVI
+ }
+
+
+
+ // Configure the overcurrent detection threshold. The constants
+ // for this are defined in the L6470.h file.
+ while(SSIBusy(SSI2_BASE)){};
+ SetParam(x_OCD_TH, x_OCD_TH_1500mA);
+
+ // Set up the CONFIG register as follows:
+ // PWM frequency divisor = 1
+ // PWM frequency multiplier = 2 (62.5kHz PWM frequency)
+ // Slew rate is 290V/us
+ // Do NOT shut down bridges on overcurrent
+ // Disable motor voltage compensation
+ // Hard stop on switch low
+ // 16MHz internal oscillator, nothing on output
+
+ //Get_Param(x_STATUS); //High impedance state
+ //while(SSIBusy(SSI2_BASE)){};
+ //GetStatus();
+ //SysCtlDelay(10000000);
+ while(SSIBusy(SSI2_BASE)){};
+
+ HardHiZ();
+ read_status = Get_Param(x_STATUS);
+ while((read_status & x_STATUS_HIZ) != x_STATUS_HIZ)
+ {
+ SysCtlDelay(1000000);
+ read_status = Get_Param(x_STATUS);
+ }
+
+ //writable only when outputs are in high impedance:
+ SetParam(x_CONFIG,
+ x_CONFIG_PWM_DIV_1 |
+ x_CONFIG_PWM_MUL_2 |
+ x_CONFIG_SR_180V_us |
+ x_CONFIG_OC_SD_ENABLE |
+ x_CONFIG_VS_COMP_DISABLE |
+ x_CONFIG_SW_HARD_STOP |
+ x_CONFIG_INT_16MHZ);
+
+ while(SSIBusy(SSI2_BASE)){};
+
+ SetParam(x_ALARM_EN,0xFF);
+ //----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Special Section <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+
+ // Configure the RUN KVAL. This defines the duty cycle of the
+ // PWM of the bridges during running. 0xFF means that they are
+ // essentially NOT PWMed during run; this MAY result in more
+ // power being dissipated than you actually need for the task.
+ // Setting this value too low may result in failure to turn.
+ // There are ACC, DEC, and HOLD KVAL registers as well; you may
+ // need to play with those values to get acceptable performance
+ // for a given application.
+ SetParam(x_KVAL_HOLD, /*0x0B);// */ 0x05);
+ SetParam(x_KVAL_RUN, /*0x4B);// */ 0x23);
+ SetParam(x_KVAL_ACC, /*0x4B);// */ 0x23);
+ SetParam(x_KVAL_DEC, /*0x4B);// */ 0x23);
+ SetParam(x_ST_SLP, 0x18);
+ SetParam(x_INT_SPD, /*0x1A13);// */ 0x3550);
+ SetParam(x_FN_SLP_ACC, /*0x48);// */ 0x23);
+ SetParam(x_FN_SLP_DEC, /*0x48);// */ 0x23);
+
+ //https://www.youtube.com/watch?v=8C7qdjPbhlg MIN 2:20
+
+ //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+
+ // Calling GetStatus() clears the UVLO bit in the status
+ // register, which is set by default on power-up. The driver
+ // may not run without that bit cleared by this read operation.
+ GetStatus();
+
+ // Now we're going to set up a counter to track pulses from an
+ // encoder, to verify against the expected values.
+ //TCCR1A = 0; // No waveform generation stuff.
+ //TCCR1B = B00000110; // Clock on falling edge, T1 pin.
+ //TCNT1 = 0; // Clear the count.
+}
+
+void Mot_Run()
+{
+ //while(SSIBusy(SSI2_BASE)){};
+ Run(Direction,Run_Value );
+ //Run_tx_test(Direction,Run_Value );
+}
+
+void Mot_Mov()
+{
+ while(SSIBusy(SSI2_BASE)){};
+ Move(Direction,Pos_Value );
+}
+
+
+
+void Mot_Stop()
+{
+ while(SSIBusy(SSI2_BASE)){};
+ switch(Stop_Command)
+ {
+ case 0:
+ SoftHiZ();
+ break;
+ case 1:
+ HardHiZ();
+ break;
+ case 2:
+ SoftStop();
+ break;
+ case 3:
+ HardStop();
+ break;
+ default:
+ break;
+ }
+}
+
+void loop()
+{
+ GetStatus(); // Clear the error
+
+ //unsigned long i;
+ //unsigned long ReadSpeed;
+// ResetPos();
+// SoftStop();
+// SysCtlDelay(17500000);
+
+// HardStop();
+ // writeLine("Received: ");
+ //while(1)
+ {
+
+ ResetPos();
+ //for(i=0;i<0x3FFFFF;i++)
+// {
+// Run(FWD,i );
+// HardStop();
+// writeLine("Tx ");
+// writeFloat(i);
+// SysCtlDelay(5000000);
+// }
+ //i = 100000;
+
+ unsigned long Read_Speed,
+ //Read_MaxSpeed,
+ //Read_Acc,
+ //Read_Dec,
+ //speed,
+ Read_pos,
+ //Pos_Value,
+ //Read_ELpos,
+ read_status;
+ //unsigned long SpeedStepPerSec,
+ // MaxSpeedStepPerSec;
+
+ //Direction = FWD;
+ //Run_Value = 0x10625; // 1000 step/sec
+ //Pos_Value = 0x111111; // 1000 step/sec
+ unsigned k = 1;
+
+ //SetParam(x_MAX_SPEED, MaxSpdCalc(1100)); // >1000 step/sec
+ //SetParam(x_MAX_SPEED, 0x10680); // >1000 step/sec
+
+ while(k)
+ {
+
+ while(SSIBusy(SSI2_BASE)){};
+ //Avi_test_get_speed(); //OK !!!
+ Read_Speed = Get_Param(x_SPEED);
+/* writeLine("Read_Speed: ");
+ writeFloat(Read_Speed);*/
+
+ while(SSIBusy(SSI2_BASE)){};
+ //SysCtlDelay(17500000);
+ Read_pos = Get_Param(x_ABS_POS);
+ //writeLine("Read_pos: ");
+ //writeFloat(Read_pos);
+ while(SSIBusy(SSI2_BASE)){};
+
+/* Read_ELpos = Get_Param(x_EL_POS);
+ writeLine("Read_EL_pos: ");
+ writeFloat(Read_ELpos);
+ while(SSIBusy(SSI2_BASE)){};*/
+
+
+ //writeLine("Tx ");
+ //writeFloat(Run_Value);
+ Run(Direction,Run_Value );
+
+ switch(Stop_Command)
+ {
+ case 1:
+ HardStop();
+ break;
+ case 2:
+ SoftStop();
+ break;
+ case 3:
+ HardHiZ();
+ break;
+ case 4:
+ SoftHiZ();
+ break;
+ default:
+ break;
+ }
+
+/* if(k>5)
+ Move(Direction,Pos_Value );
+ else
+ //GoTo_DIR(Direction,Pos_Value );
+ GoTo(Pos_Value );*/
+
+ read_status = Get_Param(x_STATUS);
+/*
+ switch((read_status & x_STATUS_MOT_STATUS)>>5)
+ {
+ case 0://Stopped
+ writeLine("-");
+ break;
+ case 1://Acceleration
+ if(read_status & x_STATUS_DIR)
+ writeLine(">>>");
+ else
+ writeLine("<<<");
+ break;
+ case 2://Deceleration
+ if(read_status & x_STATUS_DIR)
+ writeLine(">");
+ else
+ writeLine("<");
+ break;
+ case 3://Constant speed
+ if(read_status & x_STATUS_DIR)
+ //writeLine(">>");
+ else
+ writeLine("<<");
+ break;
+ }
+ */
+ //read_status = GetStatus();
+ //read_status = Get_Param_Status( x_GET_STATUS); // The GetStatus command resets the STATUS register warning flags.
+ read_status = Get_and_Clear_Status();
+
+ if((read_status & x_STATUS_UVLO)==0)
+ //writeLine("Undervoltage");
+
+ Get_Param(x_STEP_MODE);
+
+ /*
+ //speed = Get_Param(x_SPEED);
+ speed = GetParam(x_SPEED);
+ if(speed & 0xfffff == Run_Value )
+ writeLine(" XXXXXXX ");
+ writeLine(" Speed: ");
+ writeFloat(speed);
+ */
+ //SysCtlDelay(17500000);
+ ///while(SSIBusy(SSI2_BASE)){};
+ //Avi_test_get_speed(); //OK !!!
+ // Get_Param(x_SPEED);
+
+ // while(SSIBusy(SSI2_BASE)){};
+ //SysCtlDelay(17500000);
+ // Get_Param(x_ABS_POS);
+ //SysCtlDelay(17500000);
+ //GetParam(x_SPEED); // wrong value;
+
+
+ //unsigned long read_status;
+/*
+ if(k<2)
+ {
+ HardHiZ();
+ read_status = Get_Param(x_STATUS);
+ while((read_status & x_STATUS_HIZ) != x_STATUS_HIZ)
+ {
+ read_status = Get_Param(x_STATUS);
+ SysCtlDelay(1000000);
+ }
+
+
+ Read_Acc = Get_Param(x_ACC);
+ writeLine("x_ACC: ");
+ writeFloat(Read_Acc);
+
+
+ // while(SSIBusy(SSI2_BASE)){};
+
+ Read_Dec = Get_Param(x_DEC);
+ writeLine("x_ACC: ");
+ writeFloat(Read_Dec);
+
+ while(SSIBusy(SSI2_BASE)){};
+
+ Get_Param(x_CONFIG);
+ }*/
+ //Get_Param(x_ALARM_EN);
+ k--;
+ }
+
+
+
+
+
+//
+// Read_MaxSpeed = Get_Param(x_MAX_SPEED);
+// writeLine("Max Speed: ");
+// writeFloat(Read_MaxSpeed);
+//
+// MaxSpeedStepPerSec = MaxSpdCalc(Read_MaxSpeed);
+//
+// writeLine("Max Speed (Step Per Sec): ");
+// writeFloat(MaxSpeedStepPerSec);
+
+
+
+/*
+ Read_KvalAcc = Get_Param(x_KVAL_ACC);
+ writeLine("x_KVAL_ACC: ");
+ writeFloat(Read_KvalAcc);
+
+ Read_KvalDec = Get_Param(x_KVAL_DEC);
+ writeLine("x_KVAL_DEC: ");
+ writeFloat(Read_KvalDec);
+*/
+
+ /* while (1)
+ {
+ //Run(Direction,Run_Value );
+
+ writeLine("Tx ");
+ writeFloat(Run_Value);
+
+ SysCtlDelay(7500000);
+ Read_Speed = Get_Param(x_SPEED);
+ writeLine("Speed: ");
+ writeFloat(Read_Speed);
+
+ SpeedStepPerSec = MaxSpdCalc(Read_Speed);
+
+ writeLine("Speed (Step Per Sec): ");
+ writeFloat(SpeedStepPerSec);
+ }
+*/
+
+/*
+
+ //for(i=0xFFFFF;i>0;i--)
+ //{
+
+ //Move(FWD, 25600);
+
+ //Move(FWD, 25600);
+
+ Run(FWD, 0xFFFFF);
+ //while (digitalRead(Get_BUSY()) == LOW); // Until the movement completes, the
+ //while(L6470_BUSY == LOW){} // BUSYN pin will be low.
+ //SetParam(x_MAX_SPEED, MaxSpdCalc(1)); // Change the Speed
+ // SetParam(x_MIN_SPEED, MinSpdCalc(300));
+
+ //writeLine("Tx ");
+ // writeFloat(i);
+ // writeLine("Rx ");
+ //delay(5);
+ //SysCtlDelay(7500000); // need #include "driverlib/sysctl.h"
+ //ReadSpeed = GetParam(x_SPEED);
+
+ //writeFloat(ReadSpeed);
+
+
+ //SysCtlDelay(17500000);
+ SysCtlDelay(10000000); // need #include "driverlib/sysctl.h"
+ //SoftStop();
+ // HardStop();
+// }
+// //SetParam(x_MAX_SPEED, MaxSpdCalc(300)); // Change the Speed
+// //delay(5);
+// // for(i=0;i<10;i++)
+// {
+// //Move(REV, 25600);
+ //Move(REV, 25600);
+
+ Run(REV, 0xFFFFF);
+
+ //SetParam(x_MAX_SPEED, MaxSpdCalc(30)); // Change the Speed
+ SysCtlDelay(10000000);
+ //SoftStop();
+// //while (digitalRead(Get_BUSY()) == LOW); // Until the movement completes, the
+// //while (*BUSY_Reg == LOW){} // BUSYN pin will be low.
+// //SetParam(x_MAX_SPEED, MaxSpdCalc(50)); // Change the Speed
+// //delay(5);
+ // HardStop();
+// }
+
+ //GoHome();
+
+ // SysCtlDelay(17500000);
+ //for(i=0;i<10;i++);
+*/
+ }
+}
+///////////////
+
+int SPI_Control(bool Init)
+{
+ if(Init == INIT)
+ {
+ SPI2_Init();
+ init_BUSY_Pin();
+ //setup();
+ setup(NULL);
+ }
+ loop();
+
+ return(0);
+}
+
+byte Transfer_tx(byte data/*, byte data_out*/ )
+{
+ #define NUM_SSI_DATA 1
+ byte data_out;
+
+ uint32_t pui32DataTx[NUM_SSI_DATA];
+ uint32_t pui32DataRx[NUM_SSI_DATA];
+
+ pui32DataTx[0] = data;
+ //pui32DataRx[0] = data_out;
+
+ SPI_TX(SSI2_BASE, &pui32DataTx, &pui32DataRx, NUM_SSI_DATA );
+
+ SPI_RX(SSI2_BASE, &pui32DataRx, NUM_SSI_DATA );
+
+ //writeLine("Transfer_tx: ");
+ //writeFloat(pui32DataRx[0]);
+
+ data_out = pui32DataRx[0];
+
+ return data_out;
+
+}
+
+
+byte Write_Byte(uint8_t WByte)
+{
+ uint32_t RByte;
+
+ SSIDataPut(SSI2_BASE, WByte);
+
+ while(SSIBusy(SSI2_BASE))
+ {
+ }
+
+ while(Check_SPI_Busy() == BUSY)
+ {
+ }
+
+ SSIDataGet(SSI2_BASE, &RByte);
+
+ return (RByte & 0xff);
+
+}
+
+uint32_t Get_Param(byte param)//OK
+{
+ uint32_t temp = 0;
+ uint32_t rx = 0;
+ //while(SSIBusy(SSI2_BASE)){};
+ // while(Check_SPI_Busy() == BUSY){};
+ /* Send GetParam operation code to dSPIN */
+ temp = Write_Byte((uint8_t)x_GET_PARAM | (uint8_t)param);
+ /* MSB which should be 0 */
+ rx |= (temp & 0xFF) << 24;
+ switch (param)
+ {
+ case x_ABS_POS: ;
+ case x_MARK: ;
+ case x_SPEED:
+ //while(SSIBusy(SSI2_BASE)){};
+ //while(Check_SPI_Busy() == BUSY){};
+ temp = Write_Byte((uint8_t)(0x00));
+ rx |= (temp & 0xFF) << 16;
+ case x_EL_POS: ;
+ case x_ACC: ;
+ case x_DEC: ;
+ case x_MAX_SPEED: ;
+ case x_MIN_SPEED: ;
+ case x_FS_SPD: ;
+ case x_INT_SPD: ;
+ case x_CONFIG: ;
+ case x_STATUS:
+ //while(SSIBusy(SSI2_BASE)){};
+ //while(Check_SPI_Busy() == BUSY){};
+ temp = Write_Byte((uint8_t)(0x00));
+ rx |= (temp & 0xFF) << 8;
+ default:
+ //while(SSIBusy(SSI2_BASE)){};
+ //while(Check_SPI_Busy() == BUSY){};
+ temp = Write_Byte((uint8_t)(0x00));
+ rx |= temp & 0xFF;
+ }
+
+ return rx;
+}
+/*
+void Avi_test_get_speed()// Working as expected read the speed
+{
+
+ unsigned char i;
+
+ uint32_t pui32DataRx[10];
+
+ while(SSIDataGetNonBlocking(SSI2_BASE, &pui32DataRx[0]))
+ {
+ }
+
+ SSIDataPut(SSI2_BASE, 0x24);//get speed
+
+ while(SSIBusy(SSI2_BASE))
+ {
+ }
+
+ writeLine("Received: ");
+
+
+ for(i = 0; i < 4; i++)
+ {
+ if(i>0)
+ SSIDataPut(SSI2_BASE, 0x00);
+
+ while(SSIBusy(SSI2_BASE))
+ {
+ }
+
+ SSIDataGet(SSI2_BASE, &pui32DataRx[i]);
+
+ pui32DataRx[i] &= 0x00FF;
+
+ writeFloat (pui32DataRx[i]);
+ writeString(" ");
+ }
+
+}
+
+*/
+uint32_t Get_and_Clear_Status()// Tested OK AVI
+{
+ uint32_t temp = 0;
+ uint32_t rx = 0;
+
+ /* Send GetParam operation code to dSPIN */
+ temp = Write_Byte(x_GET_STATUS);
+ /* MSB which should be 0 */
+ rx |= (temp & 0xFF) << 24;
+
+ temp = Write_Byte((uint8_t)(0x00));
+ rx |= (temp & 0xFF) << 8;
+
+ temp = Write_Byte((uint8_t)(0x00));
+ rx |= temp & 0xFF;
+
+ return rx;
+}
diff --git a/Software/Embedded_SW/Embedded/Drivers/SPI/SPI_Comm.h b/Software/Embedded_SW/Embedded/Drivers/SPI/SPI_Comm.h
new file mode 100644
index 000000000..5b57e44ee
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Drivers/SPI/SPI_Comm.h
@@ -0,0 +1,18 @@
+int SPI_Control(bool Init);
+
+byte Transfer_tx(byte data/*, byte data_out*/ );
+uint32_t Get_Param(byte param);
+void SPI2_Init();
+
+//void temp_init_spi2();
+void Mot_Mov();
+void Mot_Run();
+
+void Mot_Stop();
+uint32_t Get_and_Clear_Status();
+void setup();
+void init_BUSY_Pin(void);
+#include <PMR/Stubs/StubMotorInitRequest.pb-c.h>
+void setup(StubMotorInitRequest* request);
+bool Check_SPI_Busy(void);
+
diff --git a/Software/Embedded_SW/Embedded/Main.c b/Software/Embedded_SW/Embedded/Main.c
index dc0755406..185d11a21 100644
--- a/Software/Embedded_SW/Embedded/Main.c
+++ b/Software/Embedded_SW/Embedded/Main.c
@@ -33,6 +33,10 @@
#include "Modules/Heaters/Heaters_ex.h"
#include "StateMachines/Printing/PrintingSTM.h"
extern Semaphore_Handle sdCardSem;
+#define Stub_Mode 1
+
+#include "drivers/Danser_SSI/SSI_Comm.h"
+#include "drivers/SPI/SPI_Comm.h"
//#define WATCHDOG
//*****************************************************************************
//
@@ -65,13 +69,27 @@ void SysTickHandler(void)
g_ui32SysTickCount++;
}
+void Init_stubs()
+{
+
+ //Danser_ENC:
+ SSI1_Init(); // Read dancer ENC SSI
+ //Loop_SSI(); // while(1) can't use with usb
+
+ //MOTOR Driver L6470 SPI
+ SPI2_Init();
+ init_BUSY_Pin();
+
+}
+
int main(void)
{
// Enable interrupts to the processor.
//
ROM_IntMasterDisable();
//Set the clock 120MHz
- uint32_t ui32SysClock = SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480), SYS_CLK_FREQ);
+ uint32_t ui32SysClock = MAP_SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480), SYS_CLK_FREQ);
+
// Set the system clock to run at 120MHz from the PLL.
// Save the PLL rate used by this application.
@@ -131,6 +149,10 @@ int main(void)
//
ROM_IntMasterEnable();
+ #ifdef Stub_Mode
+ Init_stubs();
+ #endif
+
BIOS_start();
return (0);
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Container.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Container.c
index 1014c08fc..49ddb757c 100644
--- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Container.c
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Container.c
@@ -15,6 +15,12 @@
#include "Stub_SteperMotor.h"
#include "Stub_Valve.h"
#include "Stub_ExtFlash.h"
+#include "Stub_FPGAReadBackReg.h"
+#include "Stub_FPGAReadVersion.h"
+#include "Stub_L6470.h"
+#include "Stub_Motor.h"
+#include "Stub_HW_Version.h"
+
#include "General/GeneralHardware.h"
#include "heaters/heaters_ex.h"
#include "Drivers/USB_Communication/USBCDCD.h"
@@ -111,6 +117,39 @@ void receive_callback(char* buffer, size_t length)
case MESSAGE_TYPE__StubExtFlashWriteRequest:
Stub_ExtFlashWriteRequest(requestContainer);
break;
+ case MESSAGE_TYPE__StubFPGAReadBackRegRequest:
+ Stub_FPGAReadBackRegRequest(requestContainer);
+ break;
+ case MESSAGE_TYPE__StubFPGAReadVersionRequest:
+ Stub_FPGAReadVersionRequest(requestContainer);
+ break;
+ case MESSAGE_TYPE__StubL6470DriverRequest:
+ Stub_L6470DriverRequest(requestContainer);
+ break;
+ case MESSAGE_TYPE__StubMotorInitRequest:
+ Stub_MotorInitRequest(requestContainer);
+ break;
+ case MESSAGE_TYPE__StubMotorRunRequest:
+ Stub_MotorRunRequest(requestContainer);
+ break;
+ case MESSAGE_TYPE__StubMotorStopRequest:
+ Stub_MotorStopRequest(requestContainer);
+ break;
+ case MESSAGE_TYPE__StubMotorStatusRequest:
+ Stub_MotorStatusRequest(requestContainer);
+ break;
+ case MESSAGE_TYPE__StubMotorPositionRequest:
+ Stub_MotorPositionRequest(requestContainer);
+ break;
+ case MESSAGE_TYPE__StubMotorSpeedRequest:
+ Stub_MotorSpeedRequest(requestContainer);
+ break;
+ case MESSAGE_TYPE__StubMotorMovRequest:
+ Stub_MotorMovRequest(requestContainer);
+ break;
+ case MESSAGE_TYPE__StubHWVersionRequest:
+ Stub_HWVersionRequest(requestContainer);
+ break;
case MESSAGE_TYPE__DebugLogRequest:
ReportInitMessage(requestContainer);
break;
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/DataDef.h b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/DataDef.h
index 08da87c09..67c509d33 100644
--- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/DataDef.h
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/DataDef.h
@@ -25,18 +25,23 @@ enum
#define NEW 0
#define USED 1
-#define START 1
-#define STOP 0
+#define START 0
+#define STOP 1
+#define NOSTOP 2
+#define CONTINUE 2
+#define NOTBUSY 0
+#define BUSY 1
+//
// motor direction
-#define CW 1 // clockwise
-#define CCW 0 // counter clockwise
+#define CW 0 // clockwise
+#define CCW 1 // counter clockwise
#define TRUE 1
#define FALSE 0
-#define INPUT 1
-#define OUTPUT 0
+#define INPUT 0x0
+#define OUTPUT 0x1
#define PULLDOWN 0
#define PULLUP 1
@@ -44,6 +49,41 @@ enum
#define TX 0
#define RX 1
#define TXRX 2
+#define ODD 0
+#define EVEN 1
+
+#define READY 0
+#define NOTREADY 1
+#define WAIT 2
+
+#define LOW 0x0
+#define HIGH 0x1
+
+#define WR 0
+#define RD 1
+
+#define FLAGSTART 1
+#define FLAGSET 1
+#define FLAGCLEAR 0
+
+#define IN 2
+#define OUT 3
+
+#define INIT 1
+#define SKIP_INIT 0
+
+#define byte uint8_t//char
+#define boolean bool
+
+#define SERIAL 0x0
+#define DISPLAY 0x1
+
+#define LSBFIRST 0
+#define MSBFIRST 1
+
+#define CHANGE 1
+#define FALLING 2
+#define RISING 3
//---------------------------------------------------------------------
#pragma diag_suppress 169 /* Avoid warnings on VOID * conversions (protobuf issue)
@@ -56,7 +96,10 @@ The warning:
or in the environment add command line:
Project -> properties ->
-
+Press on show advanced settings
+CCS Build ->
+Advanced Options ->
+Diagnistic Options ->
Add the warning number in
Supports diagnostic <id> (--diag_suppress, - pds)
169
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_FPGAReadBackReg.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_FPGAReadBackReg.c
new file mode 100644
index 000000000..13df055d6
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_FPGAReadBackReg.c
@@ -0,0 +1,69 @@
+
+#include <PMR/Stubs/StubFPGAReadBackRegRequest.pb-c.h>
+#include <PMR/Stubs/StubFPGAReadBackRegResponse.pb-c.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <string.h>
+#include <Stubs_Handler/DataDef.h>
+#include "inc/hw_memmap.h"
+#include "inc/hw_types.h"
+#include "inc/hw_uart.h"
+
+#include "Drivers/USB_Communication/USBCDCD.h"
+#include "drivers/twine_graphicslib/graphics_adapter.h"
+
+#include "MessageContainer.pb-c.h"
+
+#include "Container.h"
+#include "Stub_Status.h"
+#include "drivers/FPGA/FPGA.h"
+
+void Stub_FPGAReadBackRegRequest(MessageContainer* requestContainer)
+{
+ uint32_t status = FAILED;
+
+ unsigned short ReadBack_Value;
+
+ MessageContainer responseContainer;
+
+ StubFPGAReadBackRegRequest* request = stub_fpgaread_back_reg_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data);
+
+ writeLine("ReadBack Request: ");
+
+ writeFloat(request->fpgaid);
+ writeString(", ");
+ writeFloat(request->value);
+
+ status = Test_FPGA_ReadBack((unsigned char) request->fpgaid, (unsigned short) request->value, &ReadBack_Value);
+
+ StubFPGAReadBackRegResponse response = STUB_FPGAREAD_BACK_REG_RESPONSE__INIT;
+
+ status_response(status,&response.status, &response.statusword ,&response.has_statusword);
+
+ response.fpgaid = request->fpgaid;
+ response.has_fpgaid = true;
+ response.readbackvalue = ReadBack_Value;
+ response.has_readbackvalue = true;
+
+ responseContainer = createContainer(MESSAGE_TYPE__StubFPGAReadBackRegResponse, requestContainer->token, true, &response, &stub_fpgaread_back_reg_response__pack, &stub_fpgaread_back_reg_response__get_packed_size);
+
+ writeLine("Sending Response: ");
+
+ writeFloat(response.fpgaid);
+ writeString(", ");
+ writeFloat(response.readbackvalue);
+ writeString(", ");
+
+ Write_status_response(status);
+
+ free(request);
+ //-------------------------------------------------------------------------------------------
+ uint8_t* container_buffer = malloc(message_container__get_packed_size(&responseContainer));
+ size_t container_size = message_container__pack(&responseContainer, container_buffer);
+ SendChars((char*)container_buffer, container_size);
+ free(container_buffer);
+ free(requestContainer);
+
+}
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_FPGAReadBackReg.h b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_FPGAReadBackReg.h
new file mode 100644
index 000000000..14e245225
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_FPGAReadBackReg.h
@@ -0,0 +1,11 @@
+#ifndef STUB_READBACK_H
+#define STUB_READBACK_H
+
+void Stub_FPGAReadBackRegRequest(MessageContainer* requestContainer);
+
+#endif //STUB_READBACK_H
+
+
+
+
+
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_FPGAReadVersion.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_FPGAReadVersion.c
new file mode 100644
index 000000000..71ec6fc0a
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_FPGAReadVersion.c
@@ -0,0 +1,81 @@
+
+#include <PMR/Stubs/StubFPGAReadVersionResponse.pb-c.h>
+#include <PMR/Stubs/StubFPGAReadVersionRequest.pb-c.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <string.h>
+#include <Stubs_Handler/DataDef.h>
+#include "inc/hw_memmap.h"
+#include "inc/hw_types.h"
+#include "inc/hw_uart.h"
+
+#include "Drivers/USB_Communication/USBCDCD.h"
+#include "drivers/twine_graphicslib/graphics_adapter.h"
+
+#include "MessageContainer.pb-c.h"
+
+#include "Container.h"
+#include "Stub_Status.h"
+#include "drivers/FPGA/FPGA.h"
+
+void Stub_FPGAReadVersionRequest(MessageContainer* requestContainer)
+{
+ uint32_t status = FAILED;
+ unsigned char Version = 0;
+ unsigned char Year = 0 ;
+ unsigned char Month = 0;
+ unsigned char Day = 0;
+
+ MessageContainer responseContainer;
+
+ StubFPGAReadVersionRequest* request = stub_fpgaread_version_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data);
+
+ writeLine("ReadBack Request: ");
+
+ writeFloat(request->fpgaid);
+
+ status = FPGA_ReadVersion((unsigned char)request->fpgaid, &Version, &Year, &Month, &Day);
+
+ StubFPGAReadVersionResponse response = STUB_FPGAREAD_VERSION_RESPONSE__INIT;
+
+ status_response(status,&response.status, &response.statusword ,&response.has_statusword);
+
+ response.fpgaid = request->fpgaid;
+ response.has_fpgaid = true;
+ response.day = Day;
+ response.has_day = true;
+ response.month = Month;
+ response.has_month = true;
+ response.year = Year;
+ response.has_year = true;
+ response.ver_num = Version;
+ response.has_ver_num = true;
+
+ responseContainer = createContainer(MESSAGE_TYPE__StubFPGAReadVersionResponse, requestContainer->token, true, &response, &stub_fpgaread_version_response__pack, &stub_fpgaread_version_response__get_packed_size);
+
+ writeLine("Sending Response: ");
+
+ writeFloat(response.fpgaid);
+ writeString(", ");
+ writeFloat(response.day);
+ writeString(", ");
+ writeFloat(response.month);
+ writeString(", ");
+ writeFloat(response.year);
+ writeString(", ");
+ writeFloat(response.ver_num);
+ writeString(", ");
+
+ Write_status_response(status);
+
+ free(request);
+ //-------------------------------------------------------------------------------------------
+ uint8_t* container_buffer = malloc(message_container__get_packed_size(&responseContainer));
+ size_t container_size = message_container__pack(&responseContainer, container_buffer);
+ SendChars((char*)container_buffer, container_size);
+ free(container_buffer);
+ free(requestContainer);
+
+}
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_FPGAReadVersion.h b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_FPGAReadVersion.h
new file mode 100644
index 000000000..d9c33b8b8
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_FPGAReadVersion.h
@@ -0,0 +1,6 @@
+#ifndef STUB_FPGAVER_H
+#define STUB_FPGAVER_H
+
+void Stub_FPGAReadVersionRequest(MessageContainer* requestContainer);
+
+#endif //STUB_FPGAVER_H
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_HW_Version.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_HW_Version.c
new file mode 100644
index 000000000..72d935b83
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_HW_Version.c
@@ -0,0 +1,95 @@
+
+#include <PMR/Stubs/StubHWVersionResponse.pb-c.h>
+#include <PMR/Stubs/StubHWVersionRequest.pb-c.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <string.h>
+#include <Stubs_Handler/DataDef.h>
+#include "inc/hw_memmap.h"
+#include "inc/hw_types.h"
+#include "inc/hw_uart.h"
+#include "driverlib/gpio.h"
+#include "Drivers/USB_Communication/USBCDCD.h"
+#include "drivers/twine_graphicslib/graphics_adapter.h"
+
+#include "MessageContainer.pb-c.h"
+
+#include "Container.h"
+#include "Stub_Status.h"
+#include "drivers/FPGA/FPGA.h"
+#include "driverlib/rom_map.h"
+#include "driverlib/rom.h"
+
+
+char Read_HW_Version(unsigned char *Brd_ID, unsigned char *Assy_ID)
+{
+ //TODO Move in GPIO Initialisation
+
+ // ----------- Set HW Version GPIO as Input -----------
+ MAP_GPIOPinTypeGPIOInput(GPIO_PORTS_BASE, GPIO_PIN_3 | GPIO_PIN_2 | GPIO_PIN_1);
+ MAP_GPIOPinTypeGPIOInput(GPIO_PORTJ_BASE, GPIO_PIN_5 | GPIO_PIN_4 | GPIO_PIN_7);
+ MAP_GPIOPinTypeGPIOInput(GPIO_PORTP_BASE, GPIO_PIN_3 | GPIO_PIN_5);
+
+ //Set HW Version GPIO to Pull down
+ GPIOPadConfigSet(GPIO_PORTS_BASE, GPIO_PIN_3 | GPIO_PIN_2 | GPIO_PIN_1, GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPD );
+ GPIOPadConfigSet(GPIO_PORTJ_BASE, GPIO_PIN_5 | GPIO_PIN_4 | GPIO_PIN_7, GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPD );
+ GPIOPadConfigSet(GPIO_PORTP_BASE, GPIO_PIN_3 | GPIO_PIN_5, GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPD );
+ // ------------------------------------------------------
+
+ if (ROM_GPIOPinRead(GPIO_PORTS_BASE, GPIO_PIN_3) == GPIO_PIN_3)
+ *Brd_ID |= 0x08;
+ if (ROM_GPIOPinRead(GPIO_PORTS_BASE, GPIO_PIN_2) == GPIO_PIN_2)
+ *Brd_ID |= 0x04;
+ if (ROM_GPIOPinRead(GPIO_PORTJ_BASE, GPIO_PIN_5) == GPIO_PIN_5)
+ *Brd_ID |= 0x02;
+ if (ROM_GPIOPinRead(GPIO_PORTJ_BASE, GPIO_PIN_4) == GPIO_PIN_4)
+ *Brd_ID |= 0x01;
+
+ if (ROM_GPIOPinRead(GPIO_PORTP_BASE, GPIO_PIN_3) == GPIO_PIN_3)
+ *Assy_ID |= 0x08;
+ if (ROM_GPIOPinRead(GPIO_PORTP_BASE, GPIO_PIN_5) == GPIO_PIN_5)
+ *Assy_ID |= 0x04;
+ if (ROM_GPIOPinRead(GPIO_PORTS_BASE, GPIO_PIN_1) == GPIO_PIN_1)
+ *Assy_ID |= 0x02;
+ if (ROM_GPIOPinRead(GPIO_PORTJ_BASE, GPIO_PIN_7) == GPIO_PIN_7)
+ *Assy_ID |= 0x01;
+
+ return PASSED;
+}
+
+void Stub_HWVersionRequest(MessageContainer* requestContainer)
+{
+ uint32_t status = FAILED;
+ unsigned char Brd_ID = 0;
+ unsigned char Assy_ID = 0;
+
+ MessageContainer responseContainer;
+
+ StubHWVersionRequest* request = stub_hwversion_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data);
+
+ status = Read_HW_Version(&Brd_ID, &Assy_ID);
+
+ StubHWVersionResponse response = STUB_HWVERSION_RESPONSE__INIT;
+
+ status_response(status,&response.status, &response.statusword ,&response.has_statusword);
+
+ response.brd_id = Brd_ID ;
+ response.has_brd_id = true;
+ response.assy_id = Assy_ID;
+ response.has_assy_id = true;
+
+ responseContainer = createContainer(MESSAGE_TYPE__StubHWVersionResponse, requestContainer->token, true, &response, &stub_hwversion_response__pack, &stub_hwversion_response__get_packed_size);
+
+ Write_status_response(status);
+
+ free(request);
+ //-------------------------------------------------------------------------------------------
+ uint8_t* container_buffer = malloc(message_container__get_packed_size(&responseContainer));
+ size_t container_size = message_container__pack(&responseContainer, container_buffer);
+ SendChars((char*)container_buffer, container_size);
+ free(container_buffer);
+ free(requestContainer);
+
+}
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_HW_Version.h b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_HW_Version.h
new file mode 100644
index 000000000..b1bc504a3
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_HW_Version.h
@@ -0,0 +1,6 @@
+#ifndef STUB_HWVER_H
+#define STUB_HWVER_H
+
+void Stub_HWVersionRequest(MessageContainer* requestContainer);
+
+#endif //STUB_HWVER_H
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_L6470.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_L6470.c
new file mode 100644
index 000000000..4b9f016de
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_L6470.c
@@ -0,0 +1,133 @@
+
+#include <PMR/Stubs/StubL6470DriverResponse.pb-c.h>
+#include <PMR/Stubs/StubL6470DriverRequest.pb-c.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <string.h>
+#include <Stubs_Handler/DataDef.h>
+#include "inc/hw_memmap.h"
+#include "inc/hw_types.h"
+#include "inc/hw_uart.h"
+
+#include "Drivers/USB_Communication/USBCDCD.h"
+#include "drivers/twine_graphicslib/graphics_adapter.h"
+
+#include "MessageContainer.pb-c.h"
+
+#include "Container.h"
+#include "Stub_Status.h"
+//#include "drivers/FPGA/FPGA.h"
+#include "drivers/SPI/SPI_Comm.h"
+
+#include "drivers/FPGA/Moters_Driver/L6470.h"
+
+#include "driverlib/ssi.h"
+
+ unsigned long Run_Value = 136902 ;
+ unsigned long Pos_Value;
+ unsigned long Mov_Value ;
+ bool Direction ;
+ unsigned long Time_2_Change_Direction ;
+ bool Display_Tx_ON_LCD;
+ bool Display_Rx_on_LCD;
+ unsigned long Init_MicroStep ;
+ unsigned long Init_Acc;
+ unsigned long Init_Dec;
+ bool TestBool_1;
+ bool TestBool_2;
+ bool TestBool_3;
+ bool TestBool_4;
+ bool TestBool_5;
+ unsigned long TestUint32_1;
+ unsigned long TestUint32_2;
+ unsigned long TestUint32_3;
+ unsigned long TestUint32_4;
+ unsigned long TestUint32_5;
+ unsigned long TestUint32_6;
+
+void Stub_L6470DriverRequest(MessageContainer* requestContainer)
+{
+ uint32_t status = PASSED;
+
+ MessageContainer responseContainer;
+
+ StubL6470DriverRequest* request = stub_l6470_driver_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data);
+
+ Run_Value = request->run_value;
+ Mov_Value = request->mov_value;
+ Direction = request->direction;
+ Time_2_Change_Direction = request->time_2_change_direction;
+ Display_Tx_ON_LCD = request->display_tx_on_lcd;
+ Display_Rx_on_LCD = request->display_rx_on_lcd;
+ Init_MicroStep = request->init_microstep;
+ Init_Acc = request->init_acc;
+ Init_Dec = request->init_dec;
+ TestBool_1 = request->testbool_1;
+ TestBool_2 = request->testbool_2;
+ TestBool_3 = request->testbool_3;
+ TestBool_4 = request->testbool_4;
+ TestBool_5 = request->testbool_5;
+ TestUint32_1 = request->testuint32_1;
+ TestUint32_2 = request->testuint32_2;
+ TestUint32_3 = request->testuint32_3;
+ TestUint32_4 = request->testuint32_4;
+ TestUint32_5 = request->testuint32_5;
+ TestUint32_6 = request->testuint32_6;
+
+ writeLine("L6470 Request: ");
+
+ writeFloat(request->run_value);
+
+ //status = FPGA_ReadVersion((unsigned char)request->fpgaid, &Version, &Year, &Month, &Day);
+ SPI_Control(INIT);
+
+ //temp_init_spi2();
+
+
+ StubL6470DriverResponse response = STUB_L6470_DRIVER_RESPONSE__INIT;
+
+ status_response(status,&response.status, &response.statusword ,&response.has_statusword);
+
+ //response.run_value = Get_Param(x_SPEED);
+ /*
+ response.mov_value = ;
+ response.day = Day;
+ response.has_day = true;
+ response.month = Month;
+ response.has_month = true;
+ response.year = Year;
+ response.has_year = true;
+ response.ver_num = Version;
+ response.has_ver_num = true;
+*/
+ responseContainer = createContainer(MESSAGE_TYPE__StubL6470DriverResponse, requestContainer->token, true, &response, &stub_l6470_driver_response__pack, &stub_l6470_driver_response__get_packed_size);
+
+ writeLine("Sending Response: ");
+
+ writeFloat(response.run_value);
+ /*
+ writeString(", ");
+ writeFloat(response.day);
+ writeString(", ");
+ writeFloat(response.month);
+ writeString(", ");
+ writeFloat(response.year);
+ writeString(", ");
+ writeFloat(response.ver_num);
+ writeString(", ");
+*/
+ Write_status_response(status);
+
+ free(request);
+ //-------------------------------------------------------------------------------------------
+ uint8_t* container_buffer = malloc(message_container__get_packed_size(&responseContainer));
+ size_t container_size = message_container__pack(&responseContainer, container_buffer);
+ SendChars((char*)container_buffer, container_size);
+ free(container_buffer);
+ free(requestContainer);
+
+
+ //StartUSB(ui32SysClock); //todo to test the USB comm problem after using 6470
+}
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_L6470.h b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_L6470.h
new file mode 100644
index 000000000..0b4702861
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_L6470.h
@@ -0,0 +1,3 @@
+void Stub_L6470DriverRequest(MessageContainer* requestContainer);
+
+void temp_init_spi2();
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Motor.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Motor.c
new file mode 100644
index 000000000..c16e33a99
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Motor.c
@@ -0,0 +1,453 @@
+
+#include <PMR/Stubs/StubMotorInitRequest.pb-c.h>
+#include <PMR/Stubs/StubMotorInitResponse.pb-c.h>
+#include <PMR/Stubs/StubMotorRunRequest.pb-c.h>
+#include <PMR/Stubs/StubMotorRunResponse.pb-c.h>
+#include <PMR/Stubs/StubMotorStopRequest.pb-c.h>
+#include <PMR/Stubs/StubMotorStopResponse.pb-c.h>
+#include <PMR/Stubs/StubMotorStatusRequest.pb-c.h>
+#include <PMR/Stubs/StubMotorStatusResponse.pb-c.h>
+#include <PMR/Stubs/StubMotorSpeedResponse.pb-c.h>
+#include <PMR/Stubs/StubMotorSpeedRequest.pb-c.h>
+#include <PMR/Stubs/StubMotorPositionRequest.pb-c.h>
+#include <PMR/Stubs/StubMotorPositionResponse.pb-c.h>
+#include <PMR/Stubs/StubMotorMovRequest.pb-c.h>
+#include <PMR/Stubs/StubMotorMovResponse.pb-c.h>
+
+#include <stdbool.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <string.h>
+#include <Stubs_Handler/DataDef.h>
+#include "inc/hw_memmap.h"
+#include "inc/hw_types.h"
+#include "inc/hw_uart.h"
+
+#include "Drivers/USB_Communication/USBCDCD.h"
+#include "drivers/twine_graphicslib/graphics_adapter.h"
+
+#include "MessageContainer.pb-c.h"
+
+#include "Container.h"
+#include "Stub_Status.h"
+#include "drivers/FPGA/FPGA.h"
+#include "drivers/SPI/SPI_Comm.h"
+
+#include "drivers/FPGA/Moters_Driver/L6470.h"
+
+#include "driverlib/ssi.h"
+
+
+extern unsigned long Run_Value ;
+extern unsigned long Pos_Value ;
+extern bool Direction ;
+unsigned char Stop_Command = 0 ;
+
+
+
+void Stub_MotorInitRequest(MessageContainer* requestContainer)
+{
+ //uint32_t status = FAILED;
+
+ MessageContainer responseContainer;
+
+ StubMotorInitRequest* request = stub_motor_init_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data);
+
+ //SPI_Control(INIT);
+
+ SPI2_Init();
+ init_BUSY_Pin();
+ //while(SSIBusy(SSI2_BASE)){};
+ //init_BUSY_Pin();
+
+
+ setup(request);
+ //setup();
+
+ //init_BUSY_Pin();
+ //while(SSIBusy(SSI2_BASE)){};
+ //ResetPos();
+ //while(SSIBusy(SSI2_BASE)){};
+
+ //Run_Value = request->run_value;
+ //Mov_Value = request->mov_value;
+ //Direction = request->direction;
+
+
+ //writeLine("L6470 Request: ");
+
+ //writeFloat(request->run_value);
+
+ //status = FPGA_ReadVersion((unsigned char)request->fpgaid, &Version, &Year, &Month, &Day);
+ //SPI_Control();
+
+ //temp_init_spi2();
+
+
+ StubMotorInitResponse response = STUB_MOTOR_INIT_RESPONSE__INIT;
+
+ // status_response(status,&response.status, &response.statusword ,&response.has_statusword);
+
+
+ response.motor_id = request->motor_id;
+ response.has_motor_id = true;
+ response.status = 0;
+
+ responseContainer = createContainer(MESSAGE_TYPE__StubMotorInitResponse, requestContainer->token, true, &response, &stub_motor_init_response__pack, &stub_motor_init_response__get_packed_size);
+
+ writeLine("Sending Response: ");
+
+ writeFloat(response.motor_id);
+ writeString(", ");
+ writeFloat(response.status);
+
+ //writeString(", ");
+ //
+ //Write_status_response(status);
+
+ free(request);
+ //-------------------------------------------------------------------------------------------
+ uint8_t* container_buffer = malloc(message_container__get_packed_size(&responseContainer));
+ size_t container_size = message_container__pack(&responseContainer, container_buffer);
+ SendChars((char*)container_buffer, container_size);
+ free(container_buffer);
+ free(requestContainer);
+}
+
+
+void Stub_MotorRunRequest(MessageContainer* requestContainer)
+{
+ //uint32_t status = FAILED;
+
+ uint32_t read_status;
+
+ MessageContainer responseContainer;
+
+ StubMotorRunRequest* request = stub_motor_run_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data);
+
+ float temp = (float)request->speed;
+ Run_Value = SpdCalc(temp);
+ Direction = request->direction;
+
+ //SPI_Control(SKIP_INIT);
+ Mot_Run();
+
+ //writeLine("L6470 Request: ");
+
+ //writeFloat(request->run_value);
+
+ //status = FPGA_ReadVersion((unsigned char)request->fpgaid, &Version, &Year, &Month, &Day);
+
+
+
+ StubMotorRunResponse response = STUB_MOTOR_RUN_RESPONSE__INIT;
+
+ // status_response(status,&response.status, &response.statusword ,&response.has_statusword);
+
+
+ response.motor_id = request->motor_id;
+ response.has_motor_id = true;
+
+ read_status = Get_and_Clear_Status();
+
+ response.speed = (double)(CurrentSpdCalc(Get_Param(x_SPEED)));
+ response.has_speed = true;
+
+ response.status_reg = read_status;
+ response.has_status_reg = true;
+
+ response.direction = ((read_status & x_STATUS_DIR)>>4);
+ response.has_direction = true;
+
+ response.step_loss_a = ((read_status & x_STATUS_STEP_LOSS_A)>>13);
+ response.has_step_loss_a = true;
+ response.step_loss_b = ((read_status & x_STATUS_STEP_LOSS_B)>>14);
+ response.has_step_loss_b = true;
+
+
+ response.mot_status = ((read_status & x_STATUS_MOT_STATUS)>>5);
+ response.has_mot_status = true;
+
+ response.busy = ((read_status & x_STATUS_BUSY)>>1);
+ response.has_busy = true;
+
+
+ responseContainer = createContainer(MESSAGE_TYPE__StubMotorRunResponse, requestContainer->token, true, &response, &stub_motor_run_response__pack, &stub_motor_run_response__get_packed_size);
+
+ writeLine("Sending Response: ");
+
+ writeFloat(response.motor_id);
+
+ //writeString(", ");
+ //writeFloat(response.day);
+
+ //Write_status_response(status);
+
+ free(request);
+ //-------------------------------------------------------------------------------------------
+ uint8_t* container_buffer = malloc(message_container__get_packed_size(&responseContainer));
+ size_t container_size = message_container__pack(&responseContainer, container_buffer);
+ SendChars((char*)container_buffer, container_size);
+ free(container_buffer);
+ free(requestContainer);
+}
+
+
+void Stub_MotorStopRequest(MessageContainer* requestContainer)
+{
+ uint32_t read_status;
+ //uint32_t status = FAILED;
+
+ MessageContainer responseContainer;
+
+ StubMotorStopRequest* request = stub_motor_stop_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data);
+
+
+ Stop_Command = request->stop_cmd;
+
+ //SPI_Control(SKIP_INIT);
+ Mot_Stop();
+
+ //writeLine("L6470 Request: ");
+
+ //writeFloat(request->run_value);
+
+ //status = FPGA_ReadVersion((unsigned char)request->fpgaid, &Version, &Year, &Month, &Day);
+
+
+
+ StubMotorStopResponse response = STUB_MOTOR_STOP_RESPONSE__INIT;
+
+ // status_response(status,&response.status, &response.statusword ,&response.has_statusword);
+
+
+ response.motor_id = request->motor_id;
+ response.has_motor_id = true;
+
+ read_status = Get_and_Clear_Status();
+
+ response.mot_status = ((read_status & x_STATUS_MOT_STATUS)>>5);
+ response.has_mot_status = true;
+
+ response.hiz = (read_status & x_STATUS_HIZ);
+ response.has_hiz = true;
+
+ response.busy = ((read_status & x_STATUS_BUSY)>>1);
+ response.has_busy = true;
+
+ responseContainer = createContainer(MESSAGE_TYPE__StubMotorStopResponse, requestContainer->token, true, &response, &stub_motor_stop_response__pack, &stub_motor_stop_response__get_packed_size);
+
+ writeLine("Sending Response: ");
+
+ writeFloat(response.motor_id);
+
+ //writeString(", ");
+ //writeFloat(response.day);
+
+ //Write_status_response(status);
+
+ free(request);
+ //-------------------------------------------------------------------------------------------
+ uint8_t* container_buffer = malloc(message_container__get_packed_size(&responseContainer));
+ size_t container_size = message_container__pack(&responseContainer, container_buffer);
+ SendChars((char*)container_buffer, container_size);
+ free(container_buffer);
+ free(requestContainer);
+}
+
+
+
+void Stub_MotorStatusRequest(MessageContainer* requestContainer)
+{
+ uint32_t read_status;
+
+ MessageContainer responseContainer;
+
+ StubMotorStatusRequest* request = stub_motor_status_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data);
+
+
+ if(request->clearstatus)
+ {
+ read_status = Get_and_Clear_Status();
+ }
+ else
+ {
+ read_status = Get_Param(x_STATUS);
+ }
+
+ StubMotorStatusResponse response = STUB_MOTOR_STATUS_RESPONSE__INIT;
+
+ response.motor_id = request->motor_id;
+ response.has_motor_id = true;
+
+ response.sck_mod = ((read_status & x_STATUS_SCK_MOD)>>15);
+ response.has_sck_mod = true;
+
+ response.step_loss_b = ((read_status & x_STATUS_STEP_LOSS_B)>>14);
+ response.has_step_loss_b = true;
+
+ response.step_loss_a = ((read_status & x_STATUS_STEP_LOSS_A)>>13);
+ response.has_step_loss_a = true;
+
+ response.ocd = ((read_status & x_STATUS_OCD)>>12);
+ response.has_ocd = true;
+
+ response.th_sd = ((read_status & x_STATUS_TH_SD)>>11);
+ response.has_th_sd = true;
+
+ response.th_wrn = ((read_status & x_STATUS_TH_WRN)>>10);
+ response.has_th_wrn = true;
+
+ response.uvlo = ((read_status & x_STATUS_UVLO)>>9);
+ response.has_uvlo = true;
+
+ response.wrong_cmd = ((read_status & x_STATUS_WRONG_CMD)>>8);
+ response.has_wrong_cmd = true;
+
+ response.notperf_cmd = ((read_status & x_STATUS_NOTPERF_CMD)>>7);
+ response.has_notperf_cmd = true;
+
+ response.mot_status = ((read_status & x_STATUS_MOT_STATUS)>>5);
+ response.has_mot_status = true;
+
+ response.dir = ((read_status & x_STATUS_DIR)>>4);
+ response.has_dir = true;
+
+ response.sw_evn = ((read_status & x_STATUS_SW_EVN)>>3);
+ response.has_sw_evn = true;
+
+ response.sw_f = ((read_status & x_STATUS_SW_F)>>2);
+ response.has_sw_f = true;
+
+ response.busy = ((read_status & x_STATUS_BUSY)>>1);
+ response.has_busy = true;
+
+ response.hiz = (read_status & x_STATUS_HIZ);
+ response.has_hiz = true;
+
+ responseContainer = createContainer(MESSAGE_TYPE__StubMotorStatusResponse, requestContainer->token, true, &response, &stub_motor_status_response__pack, &stub_motor_status_response__get_packed_size);
+
+ writeLine("Sending Response: ");
+
+ writeFloat(response.motor_id);
+
+
+ free(request);
+ //-------------------------------------------------------------------------------------------
+ uint8_t* container_buffer = malloc(message_container__get_packed_size(&responseContainer));
+ size_t container_size = message_container__pack(&responseContainer, container_buffer);
+ SendChars((char*)container_buffer, container_size);
+ free(container_buffer);
+ free(requestContainer);
+}
+
+
+void Stub_MotorSpeedRequest(MessageContainer* requestContainer)
+{
+
+ MessageContainer responseContainer;
+
+ StubMotorSpeedRequest* request = stub_motor_speed_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data);
+
+ StubMotorSpeedResponse response = STUB_MOTOR_SPEED_RESPONSE__INIT;
+
+ response.motor_id = request->motor_id;
+ response.has_motor_id = true;
+
+ //response.speed = Get_Param(x_SPEED);
+ response.speed = (double)(CurrentSpdCalc(Get_Param(x_SPEED)));
+ response.has_speed = true;
+
+ responseContainer = createContainer(MESSAGE_TYPE__StubMotorSpeedResponse, requestContainer->token, true, &response, &stub_motor_speed_response__pack, &stub_motor_speed_response__get_packed_size);
+
+ free(request);
+ //-------------------------------------------------------------------------------------------
+ uint8_t* container_buffer = malloc(message_container__get_packed_size(&responseContainer));
+ size_t container_size = message_container__pack(&responseContainer, container_buffer);
+ SendChars((char*)container_buffer, container_size);
+ free(container_buffer);
+ free(requestContainer);
+}
+
+
+void Stub_MotorPositionRequest(MessageContainer* requestContainer)
+{
+
+ MessageContainer responseContainer;
+
+ StubMotorPositionRequest* request = stub_motor_position_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data);
+
+ StubMotorPositionResponse response = STUB_MOTOR_POSITION_RESPONSE__INIT;
+
+ response.motor_id = request->motor_id;
+ response.has_motor_id = true;
+
+ response.position = Get_Param(x_ABS_POS);
+ response.has_position = true;
+
+ responseContainer = createContainer(MESSAGE_TYPE__StubMotorPositionResponse, requestContainer->token, true, &response, &stub_motor_position_response__pack, &stub_motor_position_response__get_packed_size);
+
+ free(request);
+ //-------------------------------------------------------------------------------------------
+ uint8_t* container_buffer = malloc(message_container__get_packed_size(&responseContainer));
+ size_t container_size = message_container__pack(&responseContainer, container_buffer);
+ SendChars((char*)container_buffer, container_size);
+ free(container_buffer);
+ free(requestContainer);
+}
+
+
+void Stub_MotorMovRequest(MessageContainer* requestContainer)
+{
+ uint32_t read_status;
+
+ MessageContainer responseContainer;
+
+ StubMotorMovRequest* request = stub_motor_mov_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data);
+
+ Pos_Value = request->position;
+ Direction = request->direction;
+
+ Mot_Mov();
+
+ StubMotorMovResponse response = STUB_MOTOR_MOV_RESPONSE__INIT;
+
+ response.motor_id = request->motor_id;
+ response.has_motor_id = true;
+
+
+ response.position = Get_Param(x_ABS_POS);
+ response.has_position = true;
+
+ while(SSIBusy(SSI2_BASE)){};
+
+ read_status = Get_and_Clear_Status();
+
+
+ response.status_reg = read_status;
+ response.has_status_reg = true;
+
+ response.direction = ((read_status & x_STATUS_DIR)>>4);
+ response.has_direction = true;
+
+ response.step_loss_a = ((read_status & x_STATUS_STEP_LOSS_A)>>13);
+ response.has_step_loss_a = true;
+ response.step_loss_b = ((read_status & x_STATUS_STEP_LOSS_B)>>14);
+ response.has_step_loss_b = true;
+
+
+ response.mot_status = ((read_status & x_STATUS_MOT_STATUS)>>5);
+ response.has_mot_status = true;
+
+ responseContainer = createContainer(MESSAGE_TYPE__StubMotorMovResponse, requestContainer->token, true, &response, &stub_motor_mov_response__pack, &stub_motor_mov_response__get_packed_size);
+
+ free(request);
+ //-------------------------------------------------------------------------------------------
+ uint8_t* container_buffer = malloc(message_container__get_packed_size(&responseContainer));
+ size_t container_size = message_container__pack(&responseContainer, container_buffer);
+ SendChars((char*)container_buffer, container_size);
+ free(container_buffer);
+ free(requestContainer);
+}
+
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Motor.h b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Motor.h
new file mode 100644
index 000000000..95f82353f
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Motor.h
@@ -0,0 +1,7 @@
+void Stub_MotorInitRequest(MessageContainer* requestContainer);
+void Stub_MotorRunRequest(MessageContainer* requestContainer);
+void Stub_MotorStopRequest(MessageContainer* requestContainer);
+void Stub_MotorStatusRequest(MessageContainer* requestContainer);
+void Stub_MotorSpeedRequest(MessageContainer* requestContainer);
+void Stub_MotorPositionRequest(MessageContainer* requestContainer);
+void Stub_MotorMovRequest(MessageContainer* requestContainer);
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/temperature_sensor.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/temperature_sensor.c
new file mode 100644
index 000000000..994f6d84f
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/temperature_sensor.c
@@ -0,0 +1,264 @@
+//*****************************************************************************
+//
+// temperature_sensor.c - Example demonstrating the internal ADC temperature
+// sensor.
+//
+// Copyright (c) 2010-2014 Texas Instruments Incorporated. All rights reserved.
+// Software License Agreement
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+//
+// Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//
+// Redistributions in binary form must reproduce the above copyright
+// notice, this list of conditions and the following disclaimer in the
+// documentation and/or other materials provided with the
+// distribution.
+//
+// Neither the name of Texas Instruments Incorporated nor the names of
+// its contributors may be used to endorse or promote products derived
+// from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// This is part of revision 2.1.0.12573 of the Tiva Firmware Development Package.
+//
+//*****************************************************************************
+/*
+ * This code was made to show a simple ADC read.
+ *
+ * It was made from the example provided by TivaWare but it was a some modifications
+ * like the math
+ *
+ *
+ * Lu?s Afonso
+ * https://sites.google.com/site/luiselectronicprojects/tutorials/tiva-tutorials/tiva-adc/internal-temperature-sensor
+ *
+ */
+
+#include <stdint.h>
+#include <stdbool.h>
+#include "stdlib.h"
+#include "inc/hw_ints.h"
+#include "inc/hw_memmap.h"
+#include "inc/hw_uart.h"
+#include "inc/hw_gpio.h"
+#include "inc/hw_pwm.h"
+#include "inc/hw_types.h"
+#include "driverlib/adc.h"
+#include "driverlib/timer.h"
+#include "driverlib/gpio.h"
+#include "driverlib/interrupt.h"
+#include "driverlib/pin_map.h"
+#include "driverlib/rom.h"
+#include "driverlib/rom_map.h"
+#include "driverlib/sysctl.h"
+#include "driverlib/uart.h"
+#include "driverlib/udma.h"
+#include "driverlib/pwm.h"
+#include "driverlib/ssi.h"
+#include "driverlib/systick.h"
+#include "driverlib/adc.h"
+#include "utils/uartstdio.h"
+#include "utils/uartstdio.c"
+#include <string.h>
+
+#include "Drivers/USB_Communication/USBCDCD.h"
+#include "drivers/twine_graphicslib/graphics_adapter.h"
+
+//*****************************************************************************
+//
+// This function sets up UART0 to be used for a console to display information
+// as the example is running.
+//
+//*****************************************************************************
+void
+InitConsole(void)
+{
+ //
+ // Enable GPIO port A which is used for UART0 pins.
+ // TODO: change this to whichever GPIO port you are using.
+ //
+ SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
+
+ //
+ // Configure the pin muxing for UART0 functions on port A0 and A1.
+ // This step is not necessary if your part does not support pin muxing.
+ // TODO: change this to select the port/pin you are using.
+ //
+ GPIOPinConfigure(GPIO_PA0_U0RX);
+ GPIOPinConfigure(GPIO_PA1_U0TX);
+
+ //
+ // Enable UART0 so that we can configure the clock.
+ //
+ SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);
+
+ //
+ // Use the internal 16MHz oscillator as the UART clock source.
+ //
+ UARTClockSourceSet(UART0_BASE, UART_CLOCK_PIOSC);
+
+ //
+ // Select the alternate (UART) function for these pins.
+ // TODO: change this to select the port/pin you are using.
+ //
+ GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);
+
+ //
+ // Initialize the UART for console I/O.
+ //
+ UARTStdioConfig(0, 115200, 16000000);
+}
+
+int temperature_main(){
+ SysCtlClockSet(SYSCTL_SYSDIV_2_5|SYSCTL_USE_PLL|SYSCTL_OSC_MAIN|SYSCTL_XTAL_16MHZ);
+ InitConsole();
+ //
+ // This array is used for storing the data read from the ADC FIFO. It
+ // must be as large as the FIFO for the sequencer in use. This example
+ // uses sequence 3 which has a FIFO depth of 1. If another sequence
+ // was used with a deeper FIFO, then the array size must be changed.
+ //
+ uint32_t ADCValues[1];
+
+ //
+ // These variables are used to store the temperature conversions for
+ // Celsius and Fahrenheit.
+ //
+ uint32_t TempValueC ;
+ uint32_t TempValueF ;
+
+
+ //
+ // Display the setup on the console.
+ //
+ UARTprintf("ADC ->\n");
+ UARTprintf(" Type: Internal Temperature Sensor\n");
+ UARTprintf(" Samples: One\n");
+ UARTprintf(" Update Rate: 250ms\n");
+ UARTprintf(" Input Pin: Internal temperature sensor\n\n");
+
+ writeLine("ADC ->\n");
+ writeLine(" Type: Internal Temperature Sensor\n");
+ writeLine(" Samples: One\n");
+ writeLine(" Update Rate: 250ms\n");
+ writeLine(" Input Pin: Internal temperature sensor\n\n");
+
+ //
+ // The ADC0 peripheral must be enabled for use.
+ //
+ SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0);
+ SysCtlDelay(3);//3 wait cycles after enabling a clock on a peripheral
+
+ //
+ // Enable sample sequence 3 with a processor signal trigger. Sequence 3
+ // will do a single sample when the processor sends a singal to start the
+ // conversion. Each ADC module has 4 programmable sequences, sequence 0
+ // to sequence 3. This example is arbitrarily using sequence 3.
+ //
+ ADCSequenceConfigure(ADC0_BASE, 3, ADC_TRIGGER_PROCESSOR, 0);
+
+ //
+ // Configure step 0 on sequence 3. Sample the temperature sensor
+ // (ADC_CTL_TS) and configure the interrupt flag (ADC_CTL_IE) to be set
+ // when the sample is done. Tell the ADC logic that this is the last
+ // conversion on sequence 3 (ADC_CTL_END). Sequence 3 has only one
+ // programmable step. Sequence 1 and 2 have 4 steps, and sequence 0 has
+ // 8 programmable steps. Since we are only doing a single conversion using
+ // sequence 3 we will only configure step 0. For more information on the
+ // ADC sequences and steps, reference the datasheet.
+ //
+ ADCSequenceStepConfigure(ADC0_BASE, 3, 0, ADC_CTL_TS | ADC_CTL_IE |
+ ADC_CTL_END);
+
+ //ADCHardwareOversampleConfigure(ADC0_BASE,64);//This will configure to do averages of 64 values (powers of 2, from 2 to 64 )
+
+ //
+ // Since sample sequence 3 is now configured, it must be enabled.
+ //
+ ADCSequenceEnable(ADC0_BASE, 3);
+
+ //
+ // Clear the interrupt status flag. This is done to make sure the
+ // interrupt flag is cleared before we sample.
+ //
+ ADCIntClear(ADC0_BASE, 3);
+
+ //
+ // Sample the temperature sensor forever. Display the value on the
+ // console.
+ //
+ while(1)
+ {
+ //
+ // Trigger the ADC conversion.
+ //
+ ADCProcessorTrigger(ADC0_BASE, 3);
+
+ //
+ // Wait for conversion to be completed.
+ //
+ while(!ADCIntStatus(ADC0_BASE, 3, false))
+ {
+ }
+
+ //
+ // Clear the ADC interrupt flag.
+ //
+ ADCIntClear(ADC0_BASE, 3);
+
+ //
+ // Read ADC Value.
+ //
+ ADCSequenceDataGet(ADC0_BASE, 3, ADCValues);
+
+ //
+ // Use non-calibrated conversion provided in the data sheet. I use floats in intermediate
+ // math but you could use intergers with multiplied by powers of 10 and divide on the end
+ // Make sure you divide last to avoid dropout.
+ //
+ TempValueC = (uint32_t)(147.5 - ((75.0*3.3 *(float)ADCValues[0])) / 4096.0);
+
+ //float Temaraure_C = 147.5 - ((75.0*3.3 *(float)ADCValues[0])) / 4096.0;
+
+ //
+ // Get Fahrenheit value. Make sure you divide last to avoid dropout.
+ //
+ TempValueF = ((TempValueC * 9) + 160) / 5;
+
+ //
+ // Display the temperature value on the console.
+ //
+ UARTprintf("Temperature = %3d*C or %3d*F\r", TempValueC,
+ TempValueF);
+
+ writeLine("Temperature(Celsius): ");
+ writeFloat(TempValueC);
+
+ //
+ // This function provides a means of generating a constant length
+ // delay. The function delay (in cycles) = 3 * parameter. Delay
+ // 250ms arbitrarily.
+ //
+ SysCtlDelay(80000000 / 12);
+
+ ///SysCtlDelay(80000000);
+ }
+
+
+
+}
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/temperature_sensor.h b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/temperature_sensor.h
new file mode 100644
index 000000000..6368cf744
--- /dev/null
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/temperature_sensor.h
@@ -0,0 +1 @@
+int temperature_main();