#ifndef MODULES_THREAD_THREAD_H_ #define MODULES_THREAD_THREAD_H_ #include "PMR/common/MessageContainer.pb-c.h" #include "PMR/Hardware/HardwareMotor.pb-c.h" #include "PMR/Hardware/HardwareMotorType.pb-c.h" #include "PMR/Hardware/HardwareDancer.pb-c.h" #include "PMR/Hardware/HardwareDancerType.pb-c.h" #include "PMR/Hardware/HardwareWinder.pb-c.h" #include "PMR/Printing/JobSpool.pb-c.h" #include "PMR/Printing/JobSpoolType.pb-c.h" typedef struct { HardwareMotorType id; uint32_t minfreq; uint32_t maxfreq; uint32_t minmicrostep; uint32_t maxmicrostep; double linearratio; uint32_t medianposition; double correctiongain; double ratio2dryerspeed; double kp; double ki; double kd; double changeslope; double hightimeoutusec; }MotorConfigStruc; typedef struct { uint32_t startoffsetpulses; uint32_t spoolbackingrate; uint32_t segmentoffsetpulses; uint32_t milimetersperrotation; }InternalWinderConfigStruc; typedef struct { bool fixorgradual; double k; double x; int32_t pulsepermmspring; int id; //HardwareDancerType }DancerConfigStruc; typedef enum threadMotorsEnum { FEEDER_MOTOR, DRYER_MOTOR, POOLER_MOTOR, WINDER_MOTOR, SCREW_MOTOR, MAX_THREAD_MOTORS_NUM }threadMotorsEnum; extern uint32_t ThreadMotorIdToMotorId[MAX_THREAD_MOTORS_NUM]; extern MotorConfigStruc MotorsCfg[MAX_THREAD_MOTORS_NUM]; extern InternalWinderConfigStruc InternalWinderCfg; uint32_t InternalWinderConfigMessage(HardwareWinder* request); uint32_t MotorsConfigMessage(HardwareMotor * request); uint32_t InternalWindingConfigMessage(JobSpool* request); uint32_t DancerConfigMessage(HardwareDancer * request); #endif //MODULES_THREAD_THREAD_H_