3 Copyright (c) 2002 Finger Lakes Instrumentation (FLI), L.L.C.
6 Redistribution and use in source and binary forms, with or without
7 modification, are permitted provided that the following conditions
10 Redistributions of source code must retain the above copyright
11 notice, this list of conditions and the following disclaimer.
13 Redistributions in binary form must reproduce the above
14 copyright notice, this list of conditions and the following
15 disclaimer in the documentation and/or other materials
16 provided with the distribution.
18 Neither the name of Finger Lakes Instrumentation (FLI), LLC
19 nor the names of its contributors may be used to endorse or
20 promote products derived from this software without specific
21 prior written permission.
23 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24 ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
26 FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
27 REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
28 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
29 BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
30 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
31 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32 LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
33 ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34 POSSIBILITY OF SUCH DAMAGE.
36 ======================================================================
38 Finger Lakes Instrumentation, L.L.C. (FLI)
39 web: http://www.fli-cam.com
40 email: support@fli-cam.com
47 #include <sys/types.h>
50 An opaque handle used by library functions to refer to FLI
53 typedef long flidev_t
;
56 The domain of an FLI device. This consists of a bitwise ORed
57 combination of interface method and device type. Valid interfaces
58 are \texttt{FLIDOMAIN_PARALLEL_PORT}, \texttt{FLIDOMAIN_USB},
59 \texttt{FLIDOMAIN_SERIAL}, and \texttt{FLIDOMAIN_INET}. Valid
60 device types are \texttt{FLIDEVICE_CAMERA},
61 \texttt{FLIDOMAIN_FILTERWHEEL}, and \texttt{FLIDOMAIN_FOCUSER}.
66 typedef long flidomain_t
;
68 #define FLIDOMAIN_NONE (0x00)
69 #define FLIDOMAIN_PARALLEL_PORT (0x01)
70 #define FLIDOMAIN_USB (0x02)
71 #define FLIDOMAIN_SERIAL (0x03)
72 #define FLIDOMAIN_INET (0x04)
74 #define FLIDEVICE_NONE (0x000)
75 #define FLIDEVICE_CAMERA (0x100)
76 #define FLIDEVICE_FILTERWHEEL (0x200)
77 #define FLIDEVICE_FOCUSER (0x300)
80 The frame type for an FLI CCD camera device. Valid frame types are
81 \texttt{FLI_FRAME_TYPE_NORMAL} and \texttt{FLI_FRAME_TYPE_DARK}.
85 typedef long fliframe_t
;
87 #define FLI_FRAME_TYPE_NORMAL (0)
88 #define FLI_FRAME_TYPE_DARK (1)
91 The gray-scale bit depth for an FLI camera device. Valid bit
92 depths are \texttt{FLI_MODE_8BIT} and \texttt{FLI_MODE_16BIT}.
96 typedef long flibitdepth_t
;
98 #define FLI_MODE_8BIT (0)
99 #define FLI_MODE_16BIT (1)
102 Type used for shutter operations for an FLI camera device. Valid
103 shutter types are \texttt{FLI_SHUTTER_CLOSE},
104 \texttt{FLI_SHUTTER_OPEN},
105 \texttt{FLI_SHUTTER_EXTERNAL_TRIGGER},
106 \texttt{FLI_SHUTTER_EXTERNAL_TRIGGER_LOW}, and
107 \texttt{FLI_SHUTTER_EXTERNAL_TRIGGER_HIGH}.
109 @see FLIControlShutter
111 typedef long flishutter_t
;
113 #define FLI_SHUTTER_CLOSE (0x0000)
114 #define FLI_SHUTTER_OPEN (0x0001)
115 #define FLI_SHUTTER_EXTERNAL_TRIGGER (0x0002)
116 #define FLI_SHUTTER_EXTERNAL_TRIGGER_LOW (0x0002)
117 #define FLI_SHUTTER_EXTERNAL_TRIGGER_HIGH (0x0004)
120 Type used for background flush operations for an FLI camera device. Valid
121 bgflush types are \texttt{FLI_BGFLUSH_STOP} and
122 \texttt{FLI_BGFLUSH_START}.
124 @see FLIControlBackgroundFlush
126 typedef long flibgflush_t
;
128 #define FLI_BGFLUSH_STOP (0x0000)
129 #define FLI_BGFLUSH_START (0x0001)
132 Type specifying library debug levels. Valid debug levels are
133 \texttt{FLIDEBUG_NONE}, \texttt{FLIDEBUG_INFO},
134 \texttt{FLIDEBUG_WARN}, and \texttt{FLIDEBUG_FAIL}.
136 @see FLISetDebugLevel
138 typedef long flidebug_t
;
140 #define FLIDEBUG_NONE (0x00)
141 #define FLIDEBUG_INFO (0x01)
142 #define FLIDEBUG_WARN (0x02)
143 #define FLIDEBUG_FAIL (0x04)
144 #define FLIDEBUG_ALL (FLIDEBUG_INFO | FLIDEBUG_WARN | FLIDEBUG_FAIL)
148 #define LIBFLIAPI __declspec(dllimport) long __stdcall
151 #define LIBFLIAPI long
154 /* Library API Function prototypes */
157 extern "C" { // only need to export C interface if used by C++ source code
160 LIBFLIAPI
FLIOpen(flidev_t
*dev
, char *name
, flidomain_t domain
);
161 LIBFLIAPI
FLISetDebugLevel(char *host
, flidebug_t level
);
162 LIBFLIAPI
FLIClose(flidev_t dev
);
163 LIBFLIAPI
FLIGetLibVersion(char* ver
, size_t len
);
164 LIBFLIAPI
FLIGetModel(flidev_t dev
, char* model
, size_t len
);
165 LIBFLIAPI
FLIGetPixelSize(flidev_t dev
, double *pixel_x
, double *pixel_y
);
166 LIBFLIAPI
FLIGetHWRevision(flidev_t dev
, long *hwrev
);
167 LIBFLIAPI
FLIGetFWRevision(flidev_t dev
, long *fwrev
);
168 LIBFLIAPI
FLIGetArrayArea(flidev_t dev
, long* ul_x
, long* ul_y
,
169 long* lr_x
, long* lr_y
);
170 LIBFLIAPI
FLIGetVisibleArea(flidev_t dev
, long* ul_x
, long* ul_y
,
171 long* lr_x
, long* lr_y
);
172 LIBFLIAPI
FLISetExposureTime(flidev_t dev
, long exptime
);
173 LIBFLIAPI
FLISetImageArea(flidev_t dev
, long ul_x
, long ul_y
,
174 long lr_x
, long lr_y
);
175 LIBFLIAPI
FLISetHBin(flidev_t dev
, long hbin
);
176 LIBFLIAPI
FLISetVBin(flidev_t dev
, long vbin
);
177 LIBFLIAPI
FLISetFrameType(flidev_t dev
, fliframe_t frametype
);
178 LIBFLIAPI
FLICancelExposure(flidev_t dev
);
179 LIBFLIAPI
FLIGetExposureStatus(flidev_t dev
, long *timeleft
);
180 LIBFLIAPI
FLISetTemperature(flidev_t dev
, double temperature
);
181 LIBFLIAPI
FLIGetTemperature(flidev_t dev
, double *temperature
);
182 LIBFLIAPI
FLIGrabRow(flidev_t dev
, void *buff
, size_t width
);
183 LIBFLIAPI
FLIExposeFrame(flidev_t dev
);
184 LIBFLIAPI
FLIFlushRow(flidev_t dev
, long rows
, long repeat
);
185 LIBFLIAPI
FLISetNFlushes(flidev_t dev
, long nflushes
);
186 LIBFLIAPI
FLISetBitDepth(flidev_t dev
, flibitdepth_t bitdepth
);
187 LIBFLIAPI
FLIReadIOPort(flidev_t dev
, long *ioportset
);
188 LIBFLIAPI
FLIWriteIOPort(flidev_t dev
, long ioportset
);
189 LIBFLIAPI
FLIConfigureIOPort(flidev_t dev
, long ioportset
);
190 LIBFLIAPI
FLILockDevice(flidev_t dev
);
191 LIBFLIAPI
FLIUnlockDevice(flidev_t dev
);
192 LIBFLIAPI
FLIControlShutter(flidev_t dev
, flishutter_t shutter
);
193 LIBFLIAPI
FLIControlBackgroundFlush(flidev_t dev
, flibgflush_t bgflush
);
194 LIBFLIAPI
FLIList(flidomain_t domain
, char ***names
);
195 LIBFLIAPI
FLIFreeList(char **names
);
196 LIBFLIAPI
FLISetFilterPos(flidev_t dev
, long filter
);
197 LIBFLIAPI
FLIGetFilterPos(flidev_t dev
, long *filter
);
198 LIBFLIAPI
FLIGetFilterCount(flidev_t dev
, long *filter
);
199 LIBFLIAPI
FLIStepMotor(flidev_t dev
, long steps
);
200 LIBFLIAPI
FLIGetStepperPosition(flidev_t dev
, long *position
);
201 LIBFLIAPI
FLIHomeFocuser(flidev_t dev
);
202 LIBFLIAPI
FLICreateList(flidomain_t domain
);
203 LIBFLIAPI
FLIDeleteList(void);
204 LIBFLIAPI
FLIListFirst(flidomain_t
*domain
, char *filename
,
205 size_t fnlen
, char *name
, size_t namelen
);
206 LIBFLIAPI
FLIListNext(flidomain_t
*domain
, char *filename
,
207 size_t fnlen
, char *name
, size_t namelen
);
214 #endif /* _LIBFLI_H_ */