#ifndef _TASK_SCHEDULER_H #define _TASK_SCHEDULER_H #include "stdint.h" #ifndef TASK_MAX_POINT #define TASK_MAX_POINT 64 #endif #ifndef TASK_MAX_TRAJECTORY #define TASK_MAX_TRAJECTORY 2 #endif typedef struct { uint8_t x; uint8_t y; uint8_t z; uint8_t action; }point_t; enum { TASK_ACT_NULL = 0x00, TASK_ACT_PICKUP = 0x01, //托盘取货 TASK_ACT_RELEASE = 0x02, //托盘放货 TASK_ACT_OPEN_CHARGE = 0x03, //开始充电 TASK_ACT_CLOSE_CHARGE = 0x04, //关闭充电 TASK_ACT_STEER_RAMP = 0x05, //换向到坡道 TASK_ACT_TUNNEL = 0x06, //换向到巷道 TASK_ACT_PALLET_CAL_LIFT = 0x09, //托盘校准+托盘顶升 TASK_ACT_ERROR = 0x0a, }; enum { TASK_STATUS_NONE, /* 无任务 */ TASK_STATUS_INIT, /* 任务待命 */ TASK_STATUS_EXE, /* 任务执行中 */ TASK_STATUS_PAUSE, /* 任务暂停 */ TASK_STATUS_DONE, /* 任务完成 */ }; int task_add_trajectory(uint8_t id, uint8_t cnt, point_t *trajectory); int task_set(uint8_t id, uint8_t target_id); int task_get(point_t cur_point, point_t *trajectory); void task_set_status(uint8_t status, point_t cur_point); uint8_t task_get_status(void); uint8_t task_get_seg(void); uint32_t task_get_target(void); int task_cancel(int force); #endif /* _TASK_SCHEDULER_H */