19#include <condition_variable>
26#include "modules/common_msgs/sensor_msgs/pointcloud.pb.h"
27#include "modules/drivers/lidar/seyond/proto/seyond.pb.h"
29#include "seyond/sdk_common/inno_lidar_api.h"
30#include "seyond/sdk_common/inno_lidar_other_api.h"
31#include "seyond/sdk_common/inno_lidar_packet.h"
32#include "seyond/sdk_common/inno_lidar_packet_utils.h"
54 inno_log_info(
"------------------------------------------------------");
55 inno_log_info(
" Seyond Lidar Parameters ");
56 inno_log_info(
"device_ip: %s",
device_ip.c_str());
57 inno_log_info(
"port: %d",
port);
58 inno_log_info(
"udp_port: %d",
udp_port);
62 inno_log_info(
"max_range: %f",
max_range);
63 inno_log_info(
"min_range: %f",
min_range);
64 inno_log_info(
"log_level: %s",
log_level.c_str());
66 inno_log_info(
"------------------------------------------------------");
76 const InnoDataPacket *pkt) {
77 return (
reinterpret_cast<SeyondDriver *
>(ctx))->data_callback_(pkt);
82 enum InnoMessageLevel level,
83 enum InnoMessageCode code,
84 const char *error_message) {
86 ->message_callback_(from_remote, level, code, error_message);
90 const InnoStatusPacket *pkt) {
91 return (
reinterpret_cast<SeyondDriver *
>(ctx))->status_callback_(pkt);
95 const char *header1,
const char *header2,
97 SeyondDriver::log_cb_s_(
static_cast<int32_t
>(level), header1, msg);
102 const std::function<
void(
const InnoDataPacket *,
bool)>
104 packet_publish_cb_ = callback;
107 const std::function<
void(std::shared_ptr<PointCloud>)> &cloud_callback,
108 const std::function<std::shared_ptr<PointCloud>()> &allocate_callback) {
109 cloud_publish_cb_ = cloud_callback;
110 allocate_cloud_cb_ = allocate_callback;
111 point_cloud_ptr_ = allocate_cloud_cb_();
114 const std::function<
void(int32_t,
const char *,
const char *)>
116 log_cb_s_ = log_callback;
127 enum InnoMessageCode code,
const char *msg);
133 const std::shared_ptr<seyond::SeyondScan> &lidar_packets);
136 template <
typename Po
intType>
138 uint32_t point_num, PointType point_ptr);
147 std::shared_ptr<PointCloud> point_cloud_ptr_{
nullptr};
149 std::function<void(
const InnoDataPacket *,
bool)> packet_publish_cb_;
150 std::function<void(std::shared_ptr<PointCloud>)> cloud_publish_cb_;
151 std::function<std::shared_ptr<PointCloud>()> allocate_cloud_cb_;
153 static std::function<void(int32_t,
const char*,
const char*)> log_cb_s_;
158 std::string lidar_name_{
"seyond_lidar"};
161 uint32_t packets_width_{0};
162 int64_t current_frame_id_{-1};
163 double current_ts_start_;
164 uint64_t frame_points_width_;
165 std::vector<uint8_t> convert_buffer_;
std::vector< char > anglehv_table_
void process_xyz_point_data_(bool is_en_data, bool is_use_refl, uint32_t point_num, PointType point_ptr)
void register_publish_point_callback(const std::function< void(std::shared_ptr< PointCloud >)> &cloud_callback, const std::function< std::shared_ptr< PointCloud >()> &allocate_callback)
static int32_t status_callback_s_(int32_t handle_, void *ctx, const InnoStatusPacket *pkt)
static int32_t data_callback_s_(int32_t handle_, void *ctx, const InnoDataPacket *pkt)
int32_t data_callback_(const InnoDataPacket *pkt)
void register_log_callback(const std::function< void(int32_t, const char *, const char *)> &log_callback)
int32_t process_scan_packet_(const std::shared_ptr< seyond::SeyondScan > &lidar_packets)
bool init(SeyondParam ¶m)
static void log_callback_s_(void *ctx, enum InnoLogLevel level, const char *header1, const char *header2, const char *msg)
void register_publish_packet_callback(const std::function< void(const InnoDataPacket *, bool)> &callback)
void message_callback_(uint32_t from_remote, enum InnoMessageLevel level, enum InnoMessageCode code, const char *msg)
void convert_and_parse_(const InnoDataPacket *pkt)
int32_t process_data_packet_(const InnoDataPacket *pkt)
static void message_callback_s_(int32_t handle_, void *ctx, uint32_t from_remote, enum InnoMessageLevel level, enum InnoMessageCode code, const char *error_message)
void set_log_and_message_level()
int32_t status_callback_(const InnoStatusPacket *pkt)