Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.
 
 
 
 
 
 

63 рядки
2.0 KiB

  1. #ifndef PLSR_CORE_H
  2. #define PLSR_CORE_H
  3. #include "plsr_job.h"
  4. #include "plsr_types.h"
  5. #include <stdint.h>
  6. #ifdef __cplusplus
  7. extern "C" {
  8. #endif
  9. #define PLSR_PROCESS_STAGE_COUNT (6U)
  10. typedef enum
  11. {
  12. PLSR_PROCESS_STAGE_ACCOUNT_PROTECTION = 0,
  13. PLSR_PROCESS_STAGE_CRITICAL_EVENTS,
  14. PLSR_PROCESS_STAGE_COMMANDS,
  15. PLSR_PROCESS_STAGE_NORMAL_EVENTS,
  16. PLSR_PROCESS_STAGE_TICK_PATH_PROFILE,
  17. PLSR_PROCESS_STAGE_HSD_CHECKPOINT
  18. } PLSR_PROCESS_STAGE;
  19. PLSR_RESULT PlsrInit(void);
  20. void PlsrTask(void *argument);
  21. void PlsrProcess(void);
  22. void PlsrControlTick100us(void);
  23. void PlsrSetControlTickHook(void (*hook)(void));
  24. uint32_t PlsrGetMaxProcessCycles(void);
  25. uint32_t PlsrGetMaxProcessResponseCycles(void);
  26. uint32_t PlsrGetMaxProcessStageCycles(uint8_t stage);
  27. PLSR_RESULT PlsrPostCall(const PLSR_CALL *call);
  28. /* Side-effect-free COMMIT validation. It parses the complete S0/S1/S2/D
  29. * model but does not reserve resources or start an axis. */
  30. PLSR_RESULT PlsrValidateCall(const PLSR_CALL *call,
  31. PLSR_PARSE_DETAIL *detail);
  32. PLSR_RESULT PlsrPostCommand(const PLSR_COMMAND *command);
  33. PLSR_RESULT PlsrPostEvent(uint8_t axis, uint32_t eventMask);
  34. PLSR_RESULT PlsrGetStatus(uint8_t axis, PLSR_STATUS *status);
  35. PLSR_RESULT PlsrGetLastParseDetail(uint8_t axis,
  36. PLSR_PARSE_DETAIL *detail);
  37. #ifdef PLSR_HOST_TEST
  38. /* 仅测试使用的低层启动入口:不解析 S0/S1/S2/D,直接申请资源进入 ACCEL。
  39. * 生产调用必须使用 PlsrPostCall()。 */
  40. PLSR_RESULT PlsrPostStart(const PLSR_START_REQUEST *request);
  41. uint32_t PlsrTestGetProfileRefreshHz(uint8_t axis);
  42. uint8_t PlsrTestGetProfileActive(uint8_t axis);
  43. uint8_t PlsrTestGetJobRefreshCode(uint8_t axis);
  44. uint32_t PlsrTestGetProfileFrequencyHz(uint8_t axis);
  45. #endif
  46. PLSR_RESULT PlsrStateTransition(uint8_t axis,
  47. PLSR_STATE target,
  48. PLSR_TRANSITION_REASON reason);
  49. #ifdef __cplusplus
  50. }
  51. #endif
  52. #endif /* PLSR_CORE_H */