Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 
 
 
 

72 wiersze
1.7 KiB

  1. #ifndef PLSR_INTERNAL_H
  2. #define PLSR_INTERNAL_H
  3. #include <stdint.h>
  4. #define PLSR_SEGMENT_COUNT_MAX (10U)
  5. #define PLSR_FINITE_PROFILE_PULSE_LIMIT (1000U)
  6. #define PLSR_PLATFORM_FINITE_STEP_MAX \
  7. (PLSR_SEGMENT_COUNT_MAX + 2U * PLSR_FINITE_PROFILE_PULSE_LIMIT)
  8. #define PLSR_FREQUENCY_MAX_HZ (100000UL)
  9. #define PLSR_OUTPUT_PULSE_DIR (0U)
  10. #define PLSR_OUTPUT_AB (1U)
  11. typedef enum
  12. {
  13. PLSR_EXEC_IDLE = 0,
  14. PLSR_EXEC_STEP_TABLE,
  15. PLSR_EXEC_STREAM,
  16. PLSR_EXEC_AB_LEGACY,
  17. PLSR_EXEC_REPLANNING,
  18. PLSR_EXEC_STOPPING
  19. } PLSR_EXEC_MODE;
  20. #define PLSR_EXEC_RUN_FAILED (0U)
  21. #define PLSR_EXEC_RUN_READY (1U)
  22. #define PLSR_EXEC_RUN_DONE (2U)
  23. typedef struct
  24. {
  25. uint32_t frequencyHz;
  26. int32_t pulses;
  27. uint16_t waitType;
  28. uint16_t waitTimeMs;
  29. uint16_t actTimeMs;
  30. uint16_t jumpSegment;
  31. } PLSR_SEGMENT_CONFIG;
  32. typedef struct
  33. {
  34. uint16_t pulseOutput;
  35. uint16_t directionOutput;
  36. uint16_t waitInput;
  37. uint16_t extInput;
  38. uint16_t sendMode;
  39. uint16_t directionDelayMs;
  40. uint16_t directionNegativeLogic;
  41. uint16_t curveMode;
  42. uint16_t positionMode;
  43. uint16_t segmentCount;
  44. uint16_t startSegment;
  45. uint32_t defaultSpeedHz;
  46. uint32_t startSpeedHz;
  47. uint32_t stopSpeedHz;
  48. uint16_t accelerationTimeMs;
  49. uint16_t decelerationTimeMs;
  50. PLSR_SEGMENT_CONFIG segments[PLSR_SEGMENT_COUNT_MAX];
  51. /* Kept at the end so version-2 persisted configurations remain a prefix. */
  52. uint16_t outputMode;
  53. } PLSR_CONFIG;
  54. typedef struct
  55. {
  56. PLSR_CONFIG config;
  57. int32_t position;
  58. uint8_t positionValid;
  59. uint8_t wasBusy;
  60. uint16_t reserved;
  61. } PLSR_PERSIST_PAYLOAD;
  62. #endif /* PLSR_INTERNAL_H */