|
|
|
|
|
#ifndef __LIDAR_BRIDGE_H__
|
|
|
|
|
|
#define __LIDAR_BRIDGE_H__
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
|
extern "C" {
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef _WIN32
|
|
|
|
|
|
#define EXPORT_API __declspec(dllexport)
|
|
|
|
|
|
#else
|
|
|
|
|
|
#define EXPORT_API __attribute__((visibility("default")))
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#include <stdint.h>
|
|
|
|
|
|
|
|
|
|
|
|
/* 协议类型 */
|
|
|
|
|
|
#define PROTO_TCP 1
|
|
|
|
|
|
#define PROTO_UDP 2
|
|
|
|
|
|
|
|
|
|
|
|
/* 单点数据 (对应 pavo_response_pcd_t) */
|
|
|
|
|
|
typedef struct {
|
|
|
|
|
|
double x;
|
|
|
|
|
|
double y;
|
|
|
|
|
|
double z;
|
|
|
|
|
|
uint16_t intensity;
|
|
|
|
|
|
} LidarPoint;
|
|
|
|
|
|
|
|
|
|
|
|
/* 帧数据 */
|
|
|
|
|
|
typedef struct {
|
|
|
|
|
|
LidarPoint* points; /* 点数组 */
|
|
|
|
|
|
int count; /* 点数量 */
|
|
|
|
|
|
uint32_t timestamp;
|
|
|
|
|
|
} LidarFrame;
|
|
|
|
|
|
|
|
|
|
|
|
/* ============ 生命周期 ============ */
|
|
|
|
|
|
|
|
|
|
|
|
/** 创建雷达实例,返回不透明句柄 */
|
|
|
|
|
|
EXPORT_API void* lidar_create(void);
|
|
|
|
|
|
|
|
|
|
|
|
/** 销毁实例 */
|
|
|
|
|
|
EXPORT_API void lidar_destroy(void* handle);
|
|
|
|
|
|
|
|
|
|
|
|
/* ============ 配置 ============ */
|
|
|
|
|
|
|
|
|
|
|
|
/** 设置通信协议: PROTO_TCP(1) 或 PROTO_UDP(2) */
|
|
|
|
|
|
EXPORT_API void lidar_set_protocol(void* handle, int proto);
|
|
|
|
|
|
|
|
|
|
|
|
/* ============ 连接 ============ */
|
|
|
|
|
|
|
|
|
|
|
|
/** 连接雷达,timeout_ms=超时毫秒,成功返回1 */
|
|
|
|
|
|
EXPORT_API int lidar_open(void* handle, const char* ip, int port, int timeout_ms);
|
|
|
|
|
|
|
|
|
|
|
|
/** 是否已连接,已连接返回1 */
|
|
|
|
|
|
EXPORT_API int lidar_is_open(void* handle);
|
|
|
|
|
|
|
|
|
|
|
|
/** 断开连接 */
|
|
|
|
|
|
EXPORT_API int lidar_close(void* handle);
|
|
|
|
|
|
|
|
|
|
|
|
/* ============ 数据获取 ============ */
|
|
|
|
|
|
|
|
|
|
|
|
/** 获取一帧点云数据(PCD格式),成功返回1,timeout_ms=0为不等待 */
|
|
|
|
|
|
EXPORT_API int lidar_get_frame(void* handle, LidarFrame* frame, int timeout_ms);
|
|
|
|
|
|
|
|
|
|
|
|
/** 释放 lidar_get_frame 返回的帧内存 */
|
|
|
|
|
|
EXPORT_API void lidar_free_frame(LidarFrame* frame);
|
|
|
|
|
|
|
|
|
|
|
|
/** 启用/禁用数据传输,en=1启用 */
|
|
|
|
|
|
EXPORT_API int lidar_enable_data(void* handle, int en);
|
|
|
|
|
|
|
|
|
|
|
|
/** 获取上一帧后的累计帧数 */
|
|
|
|
|
|
EXPORT_API int lidar_get_scans_available(void* handle);
|
|
|
|
|
|
|
|
|
|
|
|
/* ============ 设备信息 ============ */
|
|
|
|
|
|
|
|
|
|
|
|
/** 获取设备序列号,buf至少64字节 */
|
|
|
|
|
|
EXPORT_API int lidar_get_sn(void* handle, char* buf, int buf_size);
|
|
|
|
|
|
|
|
|
|
|
|
/** 获取设备型号 */
|
|
|
|
|
|
EXPORT_API int lidar_get_pn(void* handle, char* buf, int buf_size);
|
|
|
|
|
|
|
|
|
|
|
|
/** 获取SDK版本 */
|
|
|
|
|
|
EXPORT_API int lidar_get_sdk_ver(void* handle, char* buf, int buf_size);
|
|
|
|
|
|
|
|
|
|
|
|
/** 获取固件版本 */
|
|
|
|
|
|
EXPORT_API int lidar_get_firmware_ver(void* handle, char* buf, int buf_size);
|
|
|
|
|
|
|
|
|
|
|
|
/** 获取错误码 */
|
|
|
|
|
|
EXPORT_API int lidar_get_error_code(void* handle);
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
|
}
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#endif /* __LIDAR_BRIDGE_H__ */
|