moved kdeaccessibility kdeaddons kdeadmin kdeartwork kdebindings kdeedu kdegames...
[kdeedu.git] / kstars / kstars / indi / fli / libfli.h
blob351a9e8e2f6b78080adb7fa8e4e9d4a4d3e4f489
1 /*
3 Copyright (c) 2002 Finger Lakes Instrumentation (FLI), L.L.C.
4 All rights reserved.
6 Redistribution and use in source and binary forms, with or without
7 modification, are permitted provided that the following conditions
8 are met:
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
44 #ifndef _LIBFLI_H_
45 #define _LIBFLI_H_
47 #include <sys/types.h>
49 /**
50 An opaque handle used by library functions to refer to FLI
51 hardware.
53 typedef long flidev_t;
55 /**
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}.
63 @see FLIOpen
64 @see FLIList
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)
79 /**
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}.
83 @see FLISetFrameType
85 typedef long fliframe_t;
87 #define FLI_FRAME_TYPE_NORMAL (0)
88 #define FLI_FRAME_TYPE_DARK (1)
90 /**
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}.
94 @see FLISetBitDepth
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)
146 #ifdef WIN32
147 #ifndef LIBFLIAPI
148 #define LIBFLIAPI __declspec(dllimport) long __stdcall
149 #endif
150 #else
151 #define LIBFLIAPI long
152 #endif
154 /* Library API Function prototypes */
156 #ifdef __cplusplus
157 extern "C" { // only need to export C interface if used by C++ source code
158 #endif
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);
210 #ifdef __cplusplus
212 #endif
214 #endif /* _LIBFLI_H_ */