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}