libqhyccd_sys/
lib.rs

1use std::ffi::c_char;
2
3pub const QHYCCD_PCIE: u32 = 9;
4pub const QHYCCD_WINPCAP: u32 = 8;
5pub const QHYCCD_QGIGAE: u32 = 7;
6pub const QHYCCD_USBSYNC: u32 = 6;
7pub const QHYCCD_USBASYNC: u32 = 5;
8pub const QHYCCD_COLOR: u32 = 4;
9pub const QHYCCD_MONO: u32 = 3;
10pub const QHYCCD_COOL: u32 = 2;
11pub const QHYCCD_NOTCOO: u32 = 1;
12pub const QHYCCD_SUCCESS: u32 = 0;
13pub const QHYCCD_ERROR: u32 = u32::MAX;
14pub const QHYCCD_ERROR_F64: f64 = u32::MAX as f64;
15
16pub type QhyccdHandle = *const core::ffi::c_void;
17
18#[link(name = "qhyccd", kind = "static")]
19extern "C" {
20
21    pub fn InitQHYCCDResource() -> u32;
22    pub fn ScanQHYCCD() -> u32;
23    pub fn GetQHYCCDSDKVersion(
24        year: *mut u32,
25        month: *mut u32,
26        day: *mut u32,
27        subday: *mut u32,
28    ) -> u32;
29    pub fn GetQHYCCDId(index: u32, id: *mut c_char) -> u32;
30    pub fn OpenQHYCCD(id: *const c_char) -> QhyccdHandle;
31    pub fn GetQHYCCDFWVersion(h: QhyccdHandle, buf: *mut u8) -> u32;
32    pub fn IsQHYCCDControlAvailable(h: QhyccdHandle, controlId: u32) -> u32;
33    pub fn SetQHYCCDReadMode(h: QhyccdHandle, mode: u32) -> u32;
34    pub fn SetQHYCCDStreamMode(h: QhyccdHandle, mode: u8) -> u32;
35    pub fn InitQHYCCD(h: QhyccdHandle) -> u32;
36    pub fn GetQHYCCDChipInfo(
37        handle: QhyccdHandle,
38        chipw: *mut f64,
39        chiph: *mut f64,
40        imagew: *mut u32,
41        imageh: *mut u32,
42        pixelw: *mut f64,
43        pixelh: *mut f64,
44        bpp: *mut u32,
45    ) -> u32;
46    pub fn SetQHYCCDBitsMode(handle: QhyccdHandle, bits: u32) -> u32;
47    pub fn SetQHYCCDDebayerOnOff(handle: QhyccdHandle, onoff: bool) -> u32;
48    pub fn SetQHYCCDBinMode(handle: QhyccdHandle, wbin: u32, hbin: u32) -> u32;
49    pub fn SetQHYCCDResolution(handle: QhyccdHandle, x: u32, y: u32, xsize: u32, ysize: u32)
50        -> u32;
51    pub fn GetQHYCCDParam(handle: QhyccdHandle, controlId: u32) -> f64;
52    pub fn SetQHYCCDParam(handle: QhyccdHandle, controlId: u32, value: f64) -> u32;
53    pub fn BeginQHYCCDLive(handle: QhyccdHandle) -> u32;
54    pub fn GetQHYCCDMemLength(handle: QhyccdHandle) -> u32;
55    pub fn GetQHYCCDLiveFrame(
56        handle: QhyccdHandle,
57        w: *mut u32,
58        h: *mut u32,
59        bpp: *mut u32,
60        channels: *mut u32,
61        imgdata: *mut u8,
62    ) -> u32;
63    pub fn StopQHYCCDLive(handle: QhyccdHandle) -> u32;
64    pub fn CloseQHYCCD(handle: QhyccdHandle) -> u32;
65    pub fn ReleaseQHYCCDResource() -> u32;
66    pub fn GetQHYCCDOverScanArea(
67        handle: QhyccdHandle,
68        startx: *mut u32,
69        starty: *mut u32,
70        sizex: *mut u32,
71        sizey: *mut u32,
72    ) -> u32;
73    pub fn GetQHYCCDEffectiveArea(
74        handle: QhyccdHandle,
75        startx: *mut u32,
76        starty: *mut u32,
77        sizex: *mut u32,
78        sizey: *mut u32,
79    ) -> u32;
80    pub fn ExpQHYCCDSingleFrame(handle: QhyccdHandle) -> u32;
81    pub fn GetQHYCCDSingleFrame(
82        handle: QhyccdHandle,
83        w: *mut u32,
84        h: *mut u32,
85        bpp: *mut u32,
86        channels: *mut u32,
87        imgdata: *mut u8,
88    ) -> u32;
89    pub fn GetQHYCCDNumberOfReadModes(handle: QhyccdHandle, num_modes: *mut u32) -> u32;
90    pub fn GetQHYCCDReadModeResolution(
91        handle: QhyccdHandle,
92        mode: u32,
93        width: *mut u32,
94        height: *mut u32,
95    ) -> u32;
96    pub fn GetQHYCCDReadModeName(handle: QhyccdHandle, mode: u32, name: *mut c_char) -> u32;
97    pub fn GetQHYCCDReadMode(handle: QhyccdHandle, mode: *mut u32) -> u32;
98    pub fn GetQHYCCDModel(handle: QhyccdHandle, model: *mut c_char) -> u32;
99    pub fn GetQHYCCDType(handle: QhyccdHandle) -> u32;
100    pub fn GetQHYCCDExposureRemaining(handle: QhyccdHandle) -> u32;
101    pub fn CancelQHYCCDExposing(handle: QhyccdHandle) -> u32;
102    pub fn CancelQHYCCDExposingAndReadout(handle: QhyccdHandle) -> u32;
103    pub fn IsQHYCCDCFWPlugged(handle: QhyccdHandle) -> u32;
104    pub fn GetQHYCCDParamMinMaxStep(
105        handle: QhyccdHandle,
106        controlId: u32,
107        min: *mut f64,
108        max: *mut f64,
109        step: *mut f64,
110    ) -> u32;
111    pub fn GetQHYCCDCFWStatus(handle: QhyccdHandle, status: *mut c_char) -> u32;
112    pub fn SendOrder2QHYCCDCFW(handle: QhyccdHandle, order: *const c_char, length: u32) -> u32;
113}