task_scheduler.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #ifndef _TASK_SCHEDULER_H
  2. #define _TASK_SCHEDULER_H
  3. #include "stdint.h"
  4. #ifndef TASK_MAX_POINT
  5. #define TASK_MAX_POINT 64
  6. #endif
  7. #ifndef TASK_MAX_TRAJECTORY
  8. #define TASK_MAX_TRAJECTORY 2
  9. #endif
  10. typedef struct
  11. {
  12. uint8_t x;
  13. uint8_t y;
  14. uint8_t z;
  15. uint8_t action;
  16. }point_t;
  17. enum
  18. {
  19. TASK_ACT_NULL = 0x00,
  20. TASK_ACT_PICKUP = 0x01, //托盘取货
  21. TASK_ACT_RELEASE = 0x02, //托盘放货
  22. TASK_ACT_OPEN_CHARGE = 0x03, //开始充电
  23. TASK_ACT_CLOSE_CHARGE = 0x04, //关闭充电
  24. TASK_ACT_STEER_RAMP = 0x05, //换向到坡道
  25. TASK_ACT_TUNNEL = 0x06, //换向到巷道
  26. TASK_ACT_PALLET_CAL_LIFT = 0x09, //托盘校准+托盘顶升
  27. TASK_ACT_ERROR = 0x0a,
  28. };
  29. enum
  30. {
  31. TASK_STATUS_NONE, /* 无任务 */
  32. TASK_STATUS_INIT, /* 任务待命 */
  33. TASK_STATUS_EXE, /* 任务执行中 */
  34. TASK_STATUS_PAUSE, /* 任务暂停 */
  35. TASK_STATUS_DONE, /* 任务完成 */
  36. };
  37. int task_add_trajectory(uint8_t id, uint8_t cnt, point_t *trajectory);
  38. int task_set(uint8_t id, uint8_t target_id);
  39. int task_get(point_t cur_point, point_t *trajectory);
  40. void task_set_status(uint8_t status, point_t cur_point);
  41. uint8_t task_get_status(void);
  42. uint8_t task_get_seg(void);
  43. uint32_t task_get_target(void);
  44. int task_cancel(int force);
  45. #endif /* _TASK_SCHEDULER_H */