|
- #ifndef PLSR_POSITION_H
- #define PLSR_POSITION_H
-
- #include "plsr_types.h"
- #include <stdint.h>
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- typedef struct
- {
- uint32_t pulsesPerRevolution;
- uint32_t movementPerRevolution;
- uint8_t unitCode;
- } PLSR_EQUIVALENT_CONFIG;
-
- uint8_t PlsrPositionUnitCodeIsValid(uint8_t unitCode);
- uint8_t PlsrPositionUsesEquivalent(const PLSR_EQUIVALENT_CONFIG *config);
- PLSR_RESULT PlsrPositionValidateEquivalent(
- const PLSR_EQUIVALENT_CONFIG *config);
-
- /* 带余数的相对距离换算。remainder/newRemainder 的分母恒为
- * movementPerRevolution,允许负值以保证正反向运动可相互抵消。 */
- PLSR_RESULT PlsrPositionUnitsToPulses(
- const PLSR_EQUIVALENT_CONFIG *config,
- int32_t units,
- int64_t remainder,
- int64_t *pulses,
- int64_t *newRemainder);
-
- PLSR_RESULT PlsrPositionAbsoluteUnitsToPulses(
- const PLSR_EQUIVALENT_CONFIG *config,
- int32_t units,
- int64_t *pulses);
-
- PLSR_RESULT PlsrPositionPulsesToUnits(
- const PLSR_EQUIVALENT_CONFIG *config,
- int64_t pulses,
- int64_t *units);
-
- PLSR_RESULT PlsrPositionSpeedToPulseFrequency(
- const PLSR_EQUIVALENT_CONFIG *config,
- uint32_t speed,
- uint32_t *frequencyHz);
-
- PLSR_RESULT PlsrPositionPulseFrequencyToSpeed(
- const PLSR_EQUIVALENT_CONFIG *config,
- uint32_t frequencyHz,
- uint32_t *speed);
-
- #ifdef __cplusplus
- }
- #endif
-
- #endif /* PLSR_POSITION_H */
|