task.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. /**
  2. * space_server 任务管理。
  3. *
  4. * © 2020 成都河狸智能科技有限责任公司。保留所有权利。
  5. *
  6. * 作者: zhq1229
  7. */
  8. #ifndef __TASK_H__
  9. #define __TASK_H__
  10. #include <space_lib/space_lib.h>
  11. #include "task/map.h"
  12. #include "task/path.h"
  13. using TaskId = unsigned int;
  14. using TaskHandle = bool (*)(Json::Value &sub_task);
  15. namespace task {
  16. enum TaskState {
  17. PEND = 0,
  18. EXECUTE,
  19. DONE,
  20. CANCLE,
  21. REJECT,
  22. };
  23. struct TaskInfo {
  24. TaskInfo():
  25. task_id(0),
  26. name(""),
  27. state(PEND),
  28. progress(0),
  29. info(""),
  30. sub_id(0),
  31. sub_name("") {}
  32. TaskId task_id;
  33. std::string name;
  34. TaskState state;
  35. unsigned int progress;
  36. std::string info;
  37. TaskId sub_id;
  38. std::string sub_name;
  39. Json::Value sub_tasks;
  40. };
  41. /**
  42. * 设置任务
  43. *
  44. * @param data [in] 任务信息
  45. * @return 通用错误码
  46. */
  47. int setTask(Json::Value &data);
  48. /**
  49. * 退出任务
  50. *
  51. * @param info [in] 退出信息
  52. * @return 通用错误码
  53. */
  54. int quitTask(std::string info);
  55. /**
  56. * 检查任务及机器人状态,通常在任务中周期调用
  57. * 检查任务是否被打断、取消等;检查机器人状态是否正常
  58. *
  59. * @return ture-正常 false-异常
  60. */
  61. bool checkState();
  62. /**
  63. * 结束任务前,设置任务信息
  64. *
  65. * @param state [in] 任务结束状态
  66. * @param info [in] 任务结束信息
  67. */
  68. void setTaskOverInfo(TaskState state, std::string info);
  69. /**
  70. * 设置任务结束回调
  71. *
  72. * @param callback [in] 回调函数
  73. * @return 通用错误码
  74. */
  75. int setTaskOverCallback(void (*callback)(TaskInfo task_info));
  76. /**
  77. * 设置子任务处理函数
  78. *
  79. * @param sub_type [in] 子任务类型
  80. * @param task_handle [in] 处理函数
  81. * @return 通用错误码
  82. */
  83. int setTaskHandle(std::string sub_type, TaskHandle task_handle);
  84. /**
  85. * 获取任务信息
  86. *
  87. * @return 任务信息
  88. */
  89. TaskInfo taskInfo();
  90. /**
  91. * 获取任务状态
  92. *
  93. * @return 任务状态
  94. */
  95. TaskState taskState();
  96. /**
  97. * 初始化
  98. *
  99. * @return 通用错误码
  100. */
  101. int init(Json::Value &conf);
  102. /**
  103. * 关闭
  104. *
  105. * @return 通用错误码
  106. */
  107. int shutdown();
  108. } // namespace task
  109. #endif // __TASK_H__