1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- /*
- * @Description: velodyne多线雷达管理类
- * @Author: yct
- * @Date: 2021-07-23 16:37:33
- * @LastEditTime: 2021-07-27 16:04:00
- * @LastEditors: yct
- */
- #ifndef VELODYNE_MANAGER_HH
- #define VELODYNE_MANAGER_HH
- #include <thread>
- #include <map>
- #include "../tool/singleton.h"
- #include "../error_code/error_code.h"
- class Velodyne_manager : public Singleton<Velodyne_manager>
- {
- // 子类必须把父类设定为友元函数,这样父类才能使用子类的私有构造函数。
- friend class Singleton<Velodyne_manager>;
- //万集管理任务超时时间1000ms,
- #define VELODYNE_MANAGER_EXECUTE_TIMEOUT_MS 1000
- //万集配置参数的默认路径
- #define VELODYNE_MANAGER_PARAMETER_PATH "../setting/velodyne_manager.prototxt"
- //雷达管理的状态
- enum Velodyne_manager_status
- {
- E_UNKNOWN = 0, //未知
- E_READY = 1, //准备,待机
- E_BUSY = 2, //工作正忙
- E_ISSUED_SCAN = 3, //下发任务, 获取点云
- E_WAIT_SCAN = 4, //等待任务, 扫描点云
- E_ISSUED_DETECT = 5, //下发任务, 算法预测
- E_WAIT_DETECT = 6, //等待任务, 算法预测
- E_FAULT = 10, //故障
- };
- public:
- // 必须关闭拷贝构造和赋值构造,只能通过 get_instance 函数来进行操作唯一的实例。
- Velodyne_manager(const Velodyne_manager &) = delete;
- Velodyne_manager &operator=(const Velodyne_manager &) = delete;
- ~Velodyne_manager() = default;
- //初始化 雷达 管理模块。如下三选一
- Error_manager velodyne_manager_init();
- //初始化 雷达 管理模块。从文件读取
- Error_manager velodyne_manager_init_from_protobuf(std::string prototxt_path);
- //初始化 雷达 管理模块。从protobuf读取
- Error_manager velodyne_manager_init_from_protobuf(wj::wjManagerParams& velodyne_parameters);
- // 反初始化
- Error_manager Velodyne_manager_uninit();
- private:
- // 父类的构造函数必须保护,子类的构造函数必须私有。
- Velodyne_manager() = default;
-
- };
- #endif // !VELODYNE_MANAGER_HH
|