12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- #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();
- virtual eLaserStatu GetStatu();
-
- 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
|