Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 
 
 
 
 

72 rindas
1.7 KiB

  1. #ifndef PLSR_PATH_H
  2. #define PLSR_PATH_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_PATH_ZERO_JUMP_BUDGET (100U)
  10. typedef enum
  11. {
  12. PLSR_PATH_SEGMENT_RUNNING = 0,
  13. PLSR_PATH_WAIT_TIME,
  14. PLSR_PATH_WAIT_SIGNAL,
  15. PLSR_PATH_ACT_PENDING,
  16. PLSR_PATH_ENDED
  17. } PLSR_PATH_PHASE;
  18. typedef enum
  19. {
  20. PLSR_PATH_ACTION_NONE = 0,
  21. PLSR_PATH_ACTION_NEXT_SEGMENT,
  22. PLSR_PATH_ACTION_ENTER_WAIT,
  23. PLSR_PATH_ACTION_JOB_COMPLETE,
  24. PLSR_PATH_ACTION_YIELD,
  25. PLSR_PATH_ACTION_ERROR
  26. } PLSR_PATH_ACTION;
  27. typedef struct
  28. {
  29. PLSR_PATH_PHASE phase;
  30. uint16_t currentSegment;
  31. uint16_t nextSegment;
  32. uint8_t waitCondition;
  33. uint32_t waitRemainingMs;
  34. uint16_t zeroJumpBudget;
  35. uint8_t lastExtLevel;
  36. uint8_t segmentEnded;
  37. uint8_t extActive;
  38. uint8_t actActive;
  39. uint8_t jumpChainPending;
  40. uint8_t jobEnded;
  41. uint8_t waitSignalDevice;
  42. uint32_t waitSignalAddress;
  43. } PLSR_PATH_CONTEXT;
  44. void PlsrPathBegin(PLSR_PATH_CONTEXT *context,
  45. const PLSR_JOB_SNAPSHOT *job,
  46. int64_t logicalPosition);
  47. PLSR_PATH_ACTION PlsrPathOnSegmentDone(PLSR_PATH_CONTEXT *context,
  48. const PLSR_JOB_SNAPSHOT *job,
  49. int64_t logicalPosition);
  50. PLSR_PATH_ACTION PlsrPathTick(PLSR_PATH_CONTEXT *context,
  51. const PLSR_JOB_SNAPSHOT *job,
  52. int64_t logicalPosition);
  53. uint16_t PlsrPathGetCurrentSegment(const PLSR_PATH_CONTEXT *context);
  54. void PlsrPathTerminate(PLSR_PATH_CONTEXT *context);
  55. #ifdef __cplusplus
  56. }
  57. #endif
  58. #endif /* PLSR_PATH_H */