libqhyccd-sys 0.1.4

Rust bindings for QHY CCD SDK
Documentation
use std::ffi::c_char;

pub const QHYCCD_PCIE: u32 = 9;
pub const QHYCCD_WINPCAP: u32 = 8;
pub const QHYCCD_QGIGAE: u32 = 7;
pub const QHYCCD_USBSYNC: u32 = 6;
pub const QHYCCD_USBASYNC: u32 = 5;
pub const QHYCCD_COLOR: u32 = 4;
pub const QHYCCD_MONO: u32 = 3;
pub const QHYCCD_COOL: u32 = 2;
pub const QHYCCD_NOTCOO: u32 = 1;
pub const QHYCCD_SUCCESS: u32 = 0;
pub const QHYCCD_ERROR: u32 = u32::MAX;
pub const QHYCCD_ERROR_F64: f64 = u32::MAX as f64;

pub type QhyccdHandle = *const core::ffi::c_void;

#[link(name = "qhyccd", kind = "static")]
extern "C" {

    pub fn InitQHYCCDResource() -> u32;
    pub fn ScanQHYCCD() -> u32;
    pub fn GetQHYCCDSDKVersion(
        year: *mut u32,
        month: *mut u32,
        day: *mut u32,
        subday: *mut u32,
    ) -> u32;
    pub fn GetQHYCCDId(index: u32, id: *mut c_char) -> u32;
    pub fn OpenQHYCCD(id: *const c_char) -> QhyccdHandle;
    pub fn GetQHYCCDFWVersion(h: QhyccdHandle, buf: *mut u8) -> u32;
    pub fn IsQHYCCDControlAvailable(h: QhyccdHandle, controlId: u32) -> u32;
    pub fn SetQHYCCDReadMode(h: QhyccdHandle, mode: u32) -> u32;
    pub fn SetQHYCCDStreamMode(h: QhyccdHandle, mode: u8) -> u32;
    pub fn InitQHYCCD(h: QhyccdHandle) -> u32;
    pub fn GetQHYCCDChipInfo(
        handle: QhyccdHandle,
        chipw: *mut f64,
        chiph: *mut f64,
        imagew: *mut u32,
        imageh: *mut u32,
        pixelw: *mut f64,
        pixelh: *mut f64,
        bpp: *mut u32,
    ) -> u32;
    pub fn SetQHYCCDBitsMode(handle: QhyccdHandle, bits: u32) -> u32;
    pub fn SetQHYCCDDebayerOnOff(handle: QhyccdHandle, onoff: bool) -> u32;
    pub fn SetQHYCCDBinMode(handle: QhyccdHandle, wbin: u32, hbin: u32) -> u32;
    pub fn SetQHYCCDResolution(handle: QhyccdHandle, x: u32, y: u32, xsize: u32, ysize: u32)
        -> u32;
    pub fn GetQHYCCDParam(handle: QhyccdHandle, controlId: u32) -> f64;
    pub fn SetQHYCCDParam(handle: QhyccdHandle, controlId: u32, value: f64) -> u32;
    pub fn BeginQHYCCDLive(handle: QhyccdHandle) -> u32;
    pub fn GetQHYCCDMemLength(handle: QhyccdHandle) -> u32;
    pub fn GetQHYCCDLiveFrame(
        handle: QhyccdHandle,
        w: *mut u32,
        h: *mut u32,
        bpp: *mut u32,
        channels: *mut u32,
        imgdata: *mut u8,
    ) -> u32;
    pub fn StopQHYCCDLive(handle: QhyccdHandle) -> u32;
    pub fn CloseQHYCCD(handle: QhyccdHandle) -> u32;
    pub fn ReleaseQHYCCDResource() -> u32;
    pub fn GetQHYCCDOverScanArea(
        handle: QhyccdHandle,
        startx: *mut u32,
        starty: *mut u32,
        sizex: *mut u32,
        sizey: *mut u32,
    ) -> u32;
    pub fn GetQHYCCDEffectiveArea(
        handle: QhyccdHandle,
        startx: *mut u32,
        starty: *mut u32,
        sizex: *mut u32,
        sizey: *mut u32,
    ) -> u32;
    pub fn ExpQHYCCDSingleFrame(handle: QhyccdHandle) -> u32;
    pub fn GetQHYCCDSingleFrame(
        handle: QhyccdHandle,
        w: *mut u32,
        h: *mut u32,
        bpp: *mut u32,
        channels: *mut u32,
        imgdata: *mut u8,
    ) -> u32;
    pub fn GetQHYCCDNumberOfReadModes(handle: QhyccdHandle, num_modes: *mut u32) -> u32;
    pub fn GetQHYCCDReadModeResolution(
        handle: QhyccdHandle,
        mode: u32,
        width: *mut u32,
        height: *mut u32,
    ) -> u32;
    pub fn GetQHYCCDReadModeName(handle: QhyccdHandle, mode: u32, name: *mut c_char) -> u32;
    pub fn GetQHYCCDReadMode(handle: QhyccdHandle, mode: *mut u32) -> u32;
    pub fn GetQHYCCDModel(handle: QhyccdHandle, model: *mut c_char) -> u32;
    pub fn GetQHYCCDType(handle: QhyccdHandle) -> u32;
    pub fn GetQHYCCDExposureRemaining(handle: QhyccdHandle) -> u32;
    pub fn CancelQHYCCDExposing(handle: QhyccdHandle) -> u32;
    pub fn CancelQHYCCDExposingAndReadout(handle: QhyccdHandle) -> u32;
    pub fn IsQHYCCDCFWPlugged(handle: QhyccdHandle) -> u32;
    pub fn GetQHYCCDParamMinMaxStep(
        handle: QhyccdHandle,
        controlId: u32,
        min: *mut f64,
        max: *mut f64,
        step: *mut f64,
    ) -> u32;
    pub fn GetQHYCCDCFWStatus(handle: QhyccdHandle, status: *mut c_char) -> u32;
    pub fn SendOrder2QHYCCDCFW(handle: QhyccdHandle, order: *const c_char, length: u32) -> u32;
}