pub mod ethernet;
pub mod sdk_packet;
use core::ffi;
use zerocopy::{Immutable, KnownLayout};
#[derive(KnownLayout, Immutable)]
#[repr(u8)]
pub enum ProtocolType {
LidarSdk,
Rsvd1,
ProtocolUndef,
}
#[repr(C)]
pub enum LogType {
RealTimeLog = 0,
ExceptionLog = 0x01,
}
#[repr(C)]
pub enum LidarStatus {
SendFailed = -9,
HandlerImplNotExist = -8,
InvalidHandle = -7,
ChannelNotExist = -6,
NotEnoughMemory = -5,
Timeout = -4,
NotSupported = -3,
NotConnected = -2,
Failure = -1,
Success = 0,
}
#[repr(C)]
pub struct AsyncControlResponse {
pub ret_code: u8,
pub error_key: u16,
}
#[repr(C)]
pub struct InfoResponse {
pub ret_code: u8,
pub lidar_info: *const ffi::c_char,
}
#[repr(C)]
pub enum WorkMode {
Normal = 0x01,
WakeUp = 0x02,
Sleep = 0x03,
Error = 0x04,
PowerOnSelfTest = 0x05,
MotorStarting = 0x06,
MotorStoping = 0x07,
Upgrade = 0x08,
}
#[repr(C)]
pub enum WorkModeAfterBoot {
AfterBootDefault = 0x00,
AfterBootNormal = 0x01,
AfterBootWakeUp = 0x02,
}
pub struct DirectLidarStateInfo {
pub pcl_data_type: u8, pub pattern_mode: u8, pub dual_emit_en: u8, pub point_send_en: u8, pub lidar_ipcfg: LivoxLidarIpInfo, pub host_state_info: HostStateInfoIpInfo, pub pointcloud_host_ipcfg: HostPointIPInfo, pub imu_host_ipcfg: HostImuDataIPInfo, pub ctl_host_ipcfg: LivoxIpCfg, pub log_host_ipcfg: LivoxIpCfg,
pub vehicle_speed: i32, pub environment_temp: i32, pub install_attitude: LivoxLidarInstallAttitude, pub blind_spot_set: u32, pub frame_rate: u8, pub fov_cfg0: FovCfg, pub fov_cfg1: FovCfg, pub fov_cfg_en: u8, pub detect_mode: u8, pub func_io_cfg: [u8; 4], pub work_tgt_mode: u8, pub glass_heat: u8, pub imu_data_en: u8, pub fusa_en: u8,
pub sn: [u8; 16], pub product_info: [u8; 64], pub version_app: [u8; 4], pub version_loader: [u8; 4], pub version_hardware: [u8; 4], pub mac: [u8; 6], pub cur_work_state: u8, pub core_temp: i32, pub powerup_cnt: u32, pub local_time_now: u64, pub last_sync_time: u64, pub time_offset: i64, pub time_sync_type: u8, pub status_code: [u8; 32], pub lidar_diag_status: u16, pub lidar_flash_status: u8, pub fw_type: u8, pub hms_code: u32, pub roi_mode: u8, }
pub struct LivoxLidarIpInfo {
pub ip_addr: [u8; 16],
pub net_mask: [u8; 16],
pub gw_addr: [u8; 16],
}
pub struct HostStateInfoIpInfo {
pub host_ip_addr: [u8; 16],
pub host_state_info_port: u16,
pub lidar_state_info_port: u16,
}
pub struct HostPointIPInfo {
pub host_ip_addr: [u8; 16],
pub host_point_data_port: u16,
pub lidar_point_data_port: u16,
}
pub struct HostImuDataIPInfo {
pub host_ip_addr: [u8; 16],
pub host_imu_data_port: u16,
pub lidar_imu_data_port: u16,
}
pub struct LivoxIpCfg {
pub ip_addr: [u8; 16],
pub dst_port: u16,
pub src_port: u16,
}
pub struct LivoxLidarStateInfo {
pub pcl_data_type: u8,
pub pattern_mode: u8,
pub dual_emit_en: u8,
pub point_send_en: u8,
pub lidar_ip_info: LivoxLidarIpInfo,
pub host_point_ip_info: HostPointIPInfo,
pub host_imu_ip_info: HostImuDataIPInfo,
pub install_attitude: LivoxLidarInstallAttitude,
pub blind_spot_set: u32,
pub work_mode: u8,
pub glass_heat: u8,
pub imu_data_en: u8,
pub fusa_en: u8,
pub sn: [u8; 16],
pub product_info: [u8; 64],
pub version_app: [u8; 4],
pub version_load: [u8; 4],
pub version_hardware: [u8; 4],
pub mac: [u8; 6],
pub cur_work_state: u8,
pub status_code: u64,
}
pub struct LivoxLidarInstallAttitude {
pub roll_deg: f32,
pub pitch_deg: f32,
pub yaw_deg: f32,
pub x: i32,
pub y: i32,
pub z: i32,
}
pub struct FovCfg {
pub yaw_start: i32,
pub yaw_stop: i32,
pub pitch_start: i32,
pub pitch_stop: i32,
pub rsvd: u32,
}