task_command_manager.cpp 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. #include "task_command_manager.h"
  2. #include "../wanji_lidar/wanji_manager.h"
  3. #include "../velodyne_lidar/velodyne_manager.h"
  4. //对外的接口函数,所有的任务发送方,都必须使用该函数。
  5. //execute_task在内部解析了Task_Base里面的Task_type,然后转发给具体某个模块的实例对象。
  6. //input:p_task_base 任务单,基类的指针,指向子类的实例,(多态)
  7. Error_manager Task_command_manager::execute_task(Task_Base* p_task_base)
  8. {
  9. Error_manager t_error;
  10. void * tp_tast_receiver = p_task_base->get_tast_receiver();
  11. switch ( p_task_base->get_task_type() )
  12. {
  13. case UNKNOW_TASK:
  14. t_error.error_manager_reset(Error_code::TASK_TYPE_IS_UNKNOW, Error_level::MINOR_ERROR,
  15. " p_task_base->get_task_type() is UNKNOW_TASK ");
  16. break;
  17. case LASER_MANGER_SCAN_TASK:
  18. // if ( tp_tast_receiver != NULL )
  19. // {
  20. // t_error = ((Laser_manager*)tp_tast_receiver)->execute_task(p_task_base);
  21. // }
  22. // else
  23. // {
  24. // t_error = Laser_manager::get_instance_references().execute_task(p_task_base);
  25. // }
  26. break;
  27. case LASER_BASE_SCAN_TASK:
  28. // if ( tp_tast_receiver != NULL )
  29. // {
  30. // t_error = ((Laser_base*)tp_tast_receiver)->execute_task(p_task_base);
  31. // }
  32. // else
  33. // {
  34. // return Error_manager(Error_code::TASK_NO_RECEIVER, Error_level::MINOR_ERROR,
  35. // " Task_command_manager::execute_task have not receiver ");
  36. // }
  37. break;
  38. case LOCATE_MANGER_TASK:
  39. // if ( tp_tast_receiver != NULL )
  40. // {
  41. // t_error = ((Locate_manager*)tp_tast_receiver)->execute_task(p_task_base);
  42. // }
  43. // else
  44. // {
  45. // t_error = Locate_manager::get_instance_references().execute_task(p_task_base);
  46. // }
  47. break;
  48. case PLC_TASK:
  49. ;
  50. break;
  51. case WANJI_MANAGER_TASK:
  52. if ( tp_tast_receiver != NULL )
  53. {
  54. t_error = ((Wanji_manager*)tp_tast_receiver)->execute_task(p_task_base);
  55. }
  56. else
  57. {
  58. t_error = Wanji_manager::get_instance_references().execute_task(p_task_base);
  59. }
  60. break;
  61. case VELODYNE_MANAGER_TASK:
  62. if ( tp_tast_receiver != NULL )
  63. {
  64. t_error = ((Velodyne_manager*)tp_tast_receiver)->execute_task(p_task_base);
  65. }
  66. else
  67. {
  68. t_error = Velodyne_manager::get_instance_references().execute_task(p_task_base);
  69. }
  70. break;
  71. default:
  72. t_error.error_manager_reset(Error_code::TASK_TYPE_IS_UNKNOW, Error_level::MINOR_ERROR,
  73. " p_task_base->get_task_type() is UNKNOW_TASK ");
  74. break;
  75. }
  76. return t_error;
  77. }