123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- #ifndef __LIVOX_MID_40_LIDAR__H
- #define __LIVOX_MID_40_LIDAR__H
- #include "Laser.h"
- #include "livox_def.h"
- #include "livox_sdk.h"
- #include <map>
- class CLivoxLaser :public CLaser
- {
- protected:
- typedef enum {
- kDeviceStateDisconnect = 0,
- kDeviceStateConnect = 1,
- kDeviceStateSampling = 2,
- } DeviceState;
- typedef struct {
- uint8_t handle;
- DeviceState device_state;
- DeviceInfo info;
- } DeviceItem;
- public:
- CLivoxLaser(int id, Automatic::stLaserCalibParam laser_param);
- ~CLivoxLaser();
- virtual bool Connect();
- virtual void Disconnect();
- virtual bool Start();
- virtual bool Stop();
- protected:
- virtual bool RecvData(CBinaryData& data);
- virtual DATA_type Data2PointXYZ(CBinaryData* pData, std::vector<CPoint3D>& points);
- virtual bool IsScanComplete();
- virtual void UpdataHandle();
-
- protected:
- static void InitLivox();
- static void LidarDataCallback(uint8_t handle, LivoxEthPacket *data, uint32_t data_num, void *laser);
- static void OnDeviceChange(const DeviceInfo *info, DeviceEvent type);
- static void OnDeviceBroadcast(const BroadcastDeviceInfo *info);
- static void OnSampleCallback(uint8_t status, uint8_t handle, uint8_t response, void *data);
- protected:
- uint8_t m_handle;
- unsigned int m_frame_maxnum;
- threadsafe_queue<CBinaryData*> m_queue_livox_data;
- static DeviceItem g_devices[kMaxLidarCount];
-
- static std::map<uint8_t,std::string> g_handle_sn;
- static std::map<std::string, uint8_t> g_sn_handle;
- static std::map<std::string, CLivoxLaser*> g_sn_laser;
- static CLivoxLaser* g_all_laser[kMaxLidarCount];
- static unsigned int g_count[kMaxLidarCount];
- };
- #endif
|