ljxacom 0.1.8

Rust bindings for Keyence LJ-X8000A CommLib
#![allow(non_upper_case_globals)]
#![allow(non_camel_case_types)]
#![allow(non_snake_case)]

include!(concat!(env!("OUT_DIR"), "/bindings.rs"));

pub fn initialize() -> i32 {
    unsafe { LJX8IF_Initialize().try_into().unwrap() }
}
pub fn finalize() -> i32 {
    unsafe { LJX8IF_Finalize().try_into().unwrap() }
}
pub fn open_device(
    device_id: i32,
    ethernet_config: &mut LJX8IF_ETHERNET_CONFIG,
    highspeed_port_no: i32,
) -> i32 {
    unsafe { LJXA_ACQ_OpenDevice(device_id, ethernet_config, highspeed_port_no).into() }
}
pub fn close_device(device_id: i32) {
    unsafe { LJXA_ACQ_CloseDevice(device_id).into() }
}
#[cfg(target_os = "windows")]
pub fn acquire(
    device_id: i32,
    height_image: &mut [u16],
    luminance_image: &mut [u16],
    set_param: &mut LJXA_ACQ_SETPARAM,
    get_param: &mut LJXA_ACQ_GETPARAM,
) -> i32 {
    unsafe {
        LJXA_ACQ_Acquire(
            device_id,
            height_image.as_mut_ptr(),
            luminance_image.as_mut_ptr(),
            set_param,
            get_param,
        )
        .into()
    }
}
#[cfg(target_os = "linux")]
pub fn acquire(
    device_id: i32,
    height_image: &mut [u16],
    luminance_image: &mut [u8],
    set_param: &mut LJXA_ACQ_SETPARAM,
    get_param: &mut LJXA_ACQ_GETPARAM,
) -> i32 {
    unsafe {
        LJXA_ACQ_Acquire(
            device_id,
            height_image.as_mut_ptr(),
            luminance_image.as_mut_ptr(),
            set_param,
            get_param,
        )
        .into()
    }
}
pub fn acquire_start_async(device_id: i32, set_param: &mut LJXA_ACQ_SETPARAM) -> i32 {
    unsafe { LJXA_ACQ_StartAsync(device_id, set_param).into() }
}
#[cfg(target_os = "windows")]
pub fn acquire_async(
    device_id: i32,
    height_image: &mut [u16],
    luminance_image: &mut [u16],
    set_param: &mut LJXA_ACQ_SETPARAM,
    get_param: &mut LJXA_ACQ_GETPARAM,
) -> i32 {
    unsafe {
        LJXA_ACQ_AcquireAsync(
            device_id,
            height_image.as_mut_ptr(),
            luminance_image.as_mut_ptr(),
            set_param,
            get_param,
        )
        .into()
    }
}
#[cfg(target_os = "linux")]
pub fn acquire_async(
    device_id: i32,
    height_image: &mut [u16],
    luminance_image: &mut [u8],
    set_param: &mut LJXA_ACQ_SETPARAM,
    get_param: &mut LJXA_ACQ_GETPARAM,
) -> i32 {
    unsafe {
        LJXA_ACQ_AcquireAsync(
            device_id,
            height_image.as_mut_ptr(),
            luminance_image.as_mut_ptr(),
            set_param,
            get_param,
        )
        .into()
    }
}
#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn it_works() {
        let result = initialize();
        assert_eq!(result, 0);
        let result = finalize();
        assert_eq!(result, 0);
    }
}