source: BAORadio/libindi/v1.0.1/drivers/telescope/lx200driver.h @ 614

Last change on this file since 614 was 490, checked in by campagne, 14 years ago

import libindi (JEC)

File size: 10.4 KB
Line 
1/*
2    LX200 Driver
3    Copyright (C) 2003 Jasem Mutlaq (mutlaqja@ikarustech.com)
4
5    This library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Lesser General Public
7    License as published by the Free Software Foundation; either
8    version 2.1 of the License, or (at your option) any later version.
9
10    This library is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    Lesser General Public License for more details.
14
15    You should have received a copy of the GNU Lesser General Public
16    License along with this library; if not, write to the Free Software
17    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
18
19*/
20
21#ifndef LX200DRIVER_H
22#define LX200DRIVER_H
23
24  /* Slew speeds */
25enum TSlew { LX200_SLEW_MAX, LX200_SLEW_FIND, LX200_SLEW_CENTER, LX200_SLEW_GUIDE};
26  /* Alignment modes */
27enum TAlign {  LX200_ALIGN_POLAR, LX200_ALIGN_ALTAZ, LX200_ALIGN_LAND };
28  /* Directions */
29enum TDirection { LX200_NORTH, LX200_WEST, LX200_EAST, LX200_SOUTH, LX200_ALL};
30  /* Formats of Right ascention and Declenation */
31enum TFormat { LX200_SHORT_FORMAT, LX200_LONG_FORMAT};
32  /* Time Format */
33enum TTimeFormat { LX200_24, LX200_AM, LX200_PM};
34  /* Focus operation */
35enum TFocusMotion { LX200_FOCUSIN, LX200_FOCUSOUT };
36enum TFocusSpeed  { LX200_HALTFOCUS = 0, LX200_FOCUSSLOW, LX200_FOCUSFAST};
37  /* Library catalogs */
38enum TCatalog { LX200_STAR_C, LX200_DEEPSKY_C};
39  /* Frequency mode */
40enum StarCatalog { LX200_STAR, LX200_SAO, LX200_GCVS };
41  /* Deep Sky Catalogs */
42enum DeepSkyCatalog { LX200_NGC, LX200_IC, LX200_UGC, LX200_CALDWELL, LX200_ARP, LX200_ABELL, LX200_MESSIER_C};
43  /* Mount tracking frequency, in Hz */
44enum TFreq { LX200_TRACK_DEFAULT, LX200_TRACK_LUNAR, LX200_TRACK_MANUAL};
45
46#define MaxReticleDutyCycle             15
47#define MaxFocuserSpeed                 4
48
49/* GET formatted sexagisemal value from device, return as double */
50#define getLX200RA(fd, x)                               getCommandSexa(fd, x, "#:GR#")
51#define getLX200DEC(fd, x)                              getCommandSexa(fd, x, "#:GD#")
52#define getObjectRA(fd, x)                              getCommandSexa(fd, x, "#:Gr#")
53#define getObjectDEC(fd, x)                             getCommandSexa(fd, x, "#:Gd#")
54#define getLocalTime12(fd, x)                           getCommandSexa(fd, x, "#:Ga#")
55#define getLocalTime24(fd, x)                           getCommandSexa(fd, x, "#:GL#")
56#define getSDTime(fd, x)                                getCommandSexa(fd, x, "#:GS#")
57#define getLX200Alt(fd, x)                              getCommandSexa(fd, x, "#:GA#")
58#define getLX200Az(fd, x)                               getCommandSexa(fd, x, "#:GZ#")
59
60/* GET String from device and store in supplied buffer x */
61#define getObjectInfo(fd, x)                            getCommandString(fd, x, "#:LI#")
62#define getVersionDate(fd, x)                           getCommandString(fd, x, "#:GVD#")
63#define getVersionTime(fd, x)                           getCommandString(fd, x, "#:GVT#")
64#define getFullVersion(fd, x)                           getCommandString(fd, x, "#:GVF#")
65#define getVersionNumber(fd, x)                         getCommandString(fd, x, "#:GVN#")
66#define getProductName(fd, x)                           getCommandString(fd, x, "#:GVP#")
67#define turnGPS_StreamOn(fd)                            getCommandString(fd, x, "#:gps#")
68
69/* GET Int from device and store in supplied pointer to integer x */
70#define getUTCOffset(fd, x)                             getCommandInt(fd, x, "#:GG#")
71#define getMaxElevationLimit(fd, x)                     getCommandInt(fd, x, "#:Go#")
72#define getMinElevationLimit(fd, x)                     getCommandInt(fd, x, "#:Gh#")
73
74/* Generic set, x is an integer */
75#define setReticleDutyFlashCycle(fd, x)                 setCommandInt(fd, x, "#:BD")
76#define setReticleFlashRate(fd, x)                      setCommandInt(fd, x, "#:B")
77#define setFocuserSpeed(fd, x)                          setCommandInt(fd, x, "#:F")
78#define setSlewSpeed(fd, x)                             setCommandInt(fd, x, "#:Sw")
79
80/* Set X:Y:Z */
81#define setLocalTime(fd, x,y,z)                         setCommandXYZ(fd, x,y,z, "#:SL")
82#define setSDTime(fd, x,y,z)                            setCommandXYZ(fd, x,y,z, "#:SS")
83
84/* GPS Specefic */
85#define turnGPSOn(fd)                                   write(fd, "#:g+#", 5)
86#define turnGPSOff(fd)                                  write(fd, "#:g-#", 5)
87#define alignGPSScope(fd)                               write(fd, "#:Aa#", 5)
88#define gpsSleep(fd)                                    write(fd, "#:hN#", 5)
89#define gpsWakeUp(fd)                                   write(fd, "#:hW#", 5);
90#define gpsRestart(fd)                                  write(fd, "#:I#", 4);
91#define updateGPS_System(fd)                            setStandardProcedure(fd, "#:gT#")
92#define enableDecAltPec(fd)                             write(fd, "#:QA+#", 6)
93#define disableDecAltPec(fd)                            write(fd, "#:QA-#", 6)
94#define enableRaAzPec(fd)                               write(fd, "#:QZ+#", 6)
95#define disableRaAzPec(fd)                              write(fd, "#:QZ-#", 6)
96#define activateAltDecAntiBackSlash(fd)                 write(fd, "#$BAdd#", 7)
97#define activateAzRaAntiBackSlash(fd)                   write(fd, "#$BZdd#", 7)
98#define SelenographicSync(fd)                           write(fd, "#:CL#", 5);
99
100#define slewToAltAz(fd)                                 setStandardProcedure(fd, "#:MA#")
101#define toggleTimeFormat(fd)                            write(fd, "#:H#", 4)
102#define increaseReticleBrightness(fd)                   write(fd, "#:B+#", 5)
103#define decreaseReticleBrightness(fd)                   write(fd, "#:B-#", 5)
104#define turnFanOn(fd)                                   write(fd, "#:f+#", 5)
105#define turnFanOff(fd)                                  write(fd, "#:f-#", 5)
106#define seekHomeAndSave(fd)                             write(fd, "#:hS#", 5)
107#define seekHomeAndSet(fd)                              write(fd, "#:hF#", 5)
108#define turnFieldDeRotatorOn(fd)                        write(fd, "#:r+#", 5)
109#define turnFieldDeRotatorOff(fd)                       write(fd, "#:r-#", 5)
110#define slewToPark(fd)                                  write(fd, "#:hP#", 5)
111
112#ifdef __cplusplus
113extern "C" {
114#endif
115
116/**************************************************************************
117 Basic I/O - OBSELETE
118**************************************************************************/
119/*int openPort(const char *portID);
120int portRead(char *buf, int nbytes, int timeout);
121int portWrite(const char * buf);
122int LX200readOut(int timeout);
123int Connect(const char* device);
124void Disconnect();*/
125
126/**************************************************************************
127 Diagnostics
128 **************************************************************************/
129char ACK(int fd);
130/*int testTelescope();
131int testAP();*/
132int check_lx200_connection(int fd);
133
134/**************************************************************************
135 Get Commands: store data in the supplied buffer. Return 0 on success or -1 on failure
136 **************************************************************************/
137 
138/* Get Double from Sexagisemal */
139int getCommandSexa(int fd, double *value, const char *cmd);
140/* Get String */
141int getCommandString(int fd, char *data, const char* cmd);
142/* Get Int */
143int getCommandInt(int fd, int *value, const char* cmd);
144/* Get tracking frequency */
145int getTrackFreq(int fd, double * value);
146/* Get site Latitude */
147int getSiteLatitude(int fd, int *dd, int *mm);
148/* Get site Longitude */
149int getSiteLongitude(int fd, int *ddd, int *mm);
150/* Get Calender data */
151int getCalenderDate(int fd, char *date);
152/* Get site Name */
153int getSiteName(int fd, char *siteName, int siteNum);
154/* Get Number of Bars */
155int getNumberOfBars(int fd, int *value);
156/* Get Home Search Status */
157int getHomeSearchStatus(int fd, int *status);
158/* Get OTA Temperature */
159int getOTATemp(int fd, double * value);
160/* Get time format: 12 or 24 */
161int getTimeFormat(int fd, int *format);
162/* Get RA, DEC from Sky Commander controller */
163int updateSkyCommanderCoord(int fd, double *ra, double *dec);
164/* Get RA, DEC from Intelliscope/SkyWizard controllers */
165int updateIntelliscopeCoord (int fd, double *ra, double *dec);
166
167/**************************************************************************
168 Set Commands
169 **************************************************************************/
170
171/* Set Int */
172int setCommandInt(int fd, int data, const char *cmd);
173/* Set Sexigesimal */
174int setCommandXYZ(int fd, int x, int y, int z, const char *cmd);
175/* Common routine for Set commands */
176int setStandardProcedure(int fd, char * writeData);
177/* Set Slew Mode */
178int setSlewMode(int fd, int slewMode);
179/* Set Alignment mode */
180int setAlignmentMode(int fd, unsigned int alignMode);
181/* Set Object RA */
182int setObjectRA(int fd, double ra);
183/* set Object DEC */
184int setObjectDEC(int fd, double dec);
185/* Set Calender date */
186int setCalenderDate(int fd, int dd, int mm, int yy);
187/* Set UTC offset */
188int setUTCOffset(int fd, double hours);
189/* Set Track Freq */
190int setTrackFreq(int fd, double trackF);
191/* Set current site longitude */
192int setSiteLongitude(int fd, double Long);
193/* Set current site latitude */
194int setSiteLatitude(int fd, double Lat);
195/* Set Object Azimuth */
196int setObjAz(int fd, double az);
197/* Set Object Altitude */
198int setObjAlt(int fd, double alt);
199/* Set site name */
200int setSiteName(int fd, char * siteName, int siteNum);
201/* Set maximum slew rate */
202int setMaxSlewRate(int fd, int slewRate);
203/* Set focuser motion */
204int setFocuserMotion(int fd, int motionType);
205/* SET GPS Focuser raneg (1 to 4) */
206int setGPSFocuserSpeed (int fd, int speed);
207/* Set focuser speed mode */
208int setFocuserSpeedMode (int fd, int speedMode);
209/* Set minimum elevation limit */
210int setMinElevationLimit(int fd, int min);
211/* Set maximum elevation limit */
212int setMaxElevationLimit(int fd, int max);
213
214/**************************************************************************
215 Motion Commands
216 **************************************************************************/
217/* Slew to the selected coordinates */
218int Slew(int fd);
219/* Synchronize to the selected coordinates and return the matching object if any */
220int Sync(int fd, char *matchedObject);
221/* Abort slew in all axes */
222int abortSlew(int fd);
223/* Move into one direction, two valid directions can be stacked */
224int MoveTo(int fd, int direction);
225/* Halt movement in a particular direction */
226int HaltMovement(int fd, int direction);
227/* Select the tracking mode */
228int selectTrackingMode(int fd, int trackMode);
229/* Select Astro-Physics tracking mode */
230int selectAPTrackingMode(int fd, int trackMode);
231/* Send Pulse-Guide command (timed guide move), two valid directions can be stacked */
232int SendPulseCmd(int fd, int direction, int duration_msec);
233
234/**************************************************************************
235 Other Commands
236 **************************************************************************/
237 /* Ensures LX200 RA/DEC format is long */
238int checkLX200Format(int fd);
239/* Select a site from the LX200 controller */
240int selectSite(int fd, int siteNum);
241/* Select a catalog object */
242int selectCatalogObject(int fd, int catalog, int NNNN);
243/* Select a sub catalog */
244int selectSubCatalog(int fd, int catalog, int subCatalog);
245
246#ifdef __cplusplus
247}
248#endif
249
250#endif
Note: See TracBrowser for help on using the repository browser.