PickupProcessTask.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. //
  2. // Created by zx on 2020/7/7.
  3. //
  4. #ifndef NNXX_TESTS_TAKEPROCESS_H
  5. #define NNXX_TESTS_TAKEPROCESS_H
  6. #include <parkspace_allocation_message.pb.h>
  7. #include "process_message.pb.h"
  8. #include "error_code.h"
  9. #include "TaskQueue/BaseTask.h"
  10. #include "dispatch_communicator.h"
  11. class PickupProcessTask :public tq::BaseTask{
  12. public:
  13. PickupProcessTask(unsigned int terminal_id);
  14. virtual ~PickupProcessTask();
  15. Error_manager init_task(message::Command_info command_info,message::Car_info car_info);
  16. /*
  17. * 检查当前任务是否处于空闲准备状态
  18. */
  19. bool is_ready();
  20. /*
  21. * 查询车位
  22. */
  23. Error_manager search_space();
  24. protected:
  25. virtual void Main();
  26. /*
  27. * 执行取车动作请求,并等待执行完成
  28. */
  29. Error_manager pickup_step();
  30. /*
  31. * 等待车辆离开
  32. */
  33. Error_manager wait_for_leave_step();
  34. /*
  35. * 清除车位表中对应的车位
  36. */
  37. Error_manager release_space_step();
  38. /*
  39. * reset 进度信息
  40. */
  41. void reset_process_statu();
  42. /*
  43. * 发布进度
  44. */
  45. static void publish_thread_func(PickupProcessTask* p_commander);
  46. void publish_step_status();
  47. void reset_recv_msg();
  48. protected:
  49. message::Command_info m_command_info;
  50. unsigned int m_terminor_id;
  51. message::Car_info m_car_info; //当前流程的车辆信息
  52. std::thread* m_publish_statu_thread; //广播状态线程
  53. Thread_condition m_publish_exit_condition; //发送的条件变量
  54. private:
  55. //查询到的车位信息
  56. message::Parkspace_search_response_msg m_parcspace_search_response_msg;
  57. //取车调度反馈信息
  58. message::Dispatch_response_msg m_dispatch_response_msg;
  59. //取车车位的进度状态
  60. std::mutex m_picking_statu_lock;
  61. message::Picking_process_statu_msg m_picking_process_statu_msg;
  62. };
  63. #endif //NNXX_TESTS_TAKEPROCESS_H