#ifndef __LIVOX_HORIZON__H
#define __LIVOX_HORIZON__H

#include "Laser.h"
#include "livox_def.h"
#include "livox_sdk.h"
#include <map>
#include "LivoxLaser.h"




//大疆livox雷达，从Laser_base继承。
class CHorizonLaser :public CLivoxLaser
{

public:
	CHorizonLaser() = delete;
	CHorizonLaser(const CHorizonLaser& other) = delete;
	//唯一的构造函数，按照设备名称和雷达参数来创建实例。
	//input：id： 雷达设备的id，（唯一索引）
	//input：laser_param：雷达的参数，
	//注：利用protobuf创建 laser_parameter 类，然后从文件读取参数
	CHorizonLaser(int id, Laser_proto::laser_parameter laser_param);
	~CHorizonLaser();
    //雷达的启动接口函数， 让雷达进行扫描，一般需要子类重载，不同的雷达开始方式不同。
    virtual Error_manager start_scan();

	//将二进制消息转化为三维点云的功能函数，并将其存入 任务单 , 每次只转化一个CBinaryData，
	// 纯虚函数，必须由子类重载，
	virtual Buf_type transform_buf_to_points(Binary_buf* p_binary_buf, std::vector<CPoint3D>& point3D_cloud);
};








#endif
