/* * @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 #include #include "../tool/singleton.h" #include "../error_code/error_code.h" class Velodyne_manager : public Singleton { // 子类必须把父类设定为友元函数,这样父类才能使用子类的私有构造函数。 friend class Singleton; //万集管理任务超时时间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