123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- /**
- * space_server 任务管理。
- *
- * © 2020 成都河狸智能科技有限责任公司。保留所有权利。
- *
- * 作者: zhq1229
- */
- #ifndef __TASK_H__
- #define __TASK_H__
- #include <space_lib/space_lib.h>
- #include "task/map.h"
- #include "task/path.h"
- using TaskId = unsigned int;
- using TaskHandle = bool (*)(Json::Value &sub_task);
- namespace task {
- enum TaskState {
- PEND = 0,
- EXECUTE,
- DONE,
- CANCLE,
- REJECT,
- };
- struct TaskInfo {
- TaskInfo():
- task_id(0),
- name(""),
- state(PEND),
- progress(0),
- info(""),
- sub_id(0),
- sub_name("") {}
- TaskId task_id;
- std::string name;
- TaskState state;
- unsigned int progress;
- std::string info;
- TaskId sub_id;
- std::string sub_name;
- Json::Value sub_tasks;
- };
- /**
- * 设置任务
- *
- * @param data [in] 任务信息
- * @return 通用错误码
- */
- int setTask(Json::Value &data);
- /**
- * 退出任务
- *
- * @param info [in] 退出信息
- * @return 通用错误码
- */
- int quitTask(std::string info);
- /**
- * 检查任务及机器人状态,通常在任务中周期调用
- * 检查任务是否被打断、取消等;检查机器人状态是否正常
- *
- * @return ture-正常 false-异常
- */
- bool checkState();
- /**
- * 结束任务前,设置任务信息
- *
- * @param state [in] 任务结束状态
- * @param info [in] 任务结束信息
- */
- void setTaskOverInfo(TaskState state, std::string info);
- /**
- * 设置任务结束回调
- *
- * @param callback [in] 回调函数
- * @return 通用错误码
- */
- int setTaskOverCallback(void (*callback)(TaskInfo task_info));
- /**
- * 设置子任务处理函数
- *
- * @param sub_type [in] 子任务类型
- * @param task_handle [in] 处理函数
- * @return 通用错误码
- */
- int setTaskHandle(std::string sub_type, TaskHandle task_handle);
- /**
- * 获取任务信息
- *
- * @return 任务信息
- */
- TaskInfo taskInfo();
- /**
- * 获取任务状态
- *
- * @return 任务状态
- */
- TaskState taskState();
- /**
- * 初始化
- *
- * @return 通用错误码
- */
- int init(Json::Value &conf);
- /**
- * 关闭
- *
- * @return 通用错误码
- */
- int shutdown();
- } // namespace task
- #endif // __TASK_H__
|