diff options
Diffstat (limited to 'kstars/kstars/indi/lx200driver.h')
-rw-r--r-- | kstars/kstars/indi/lx200driver.h | 247 |
1 files changed, 247 insertions, 0 deletions
diff --git a/kstars/kstars/indi/lx200driver.h b/kstars/kstars/indi/lx200driver.h new file mode 100644 index 00000000..06b8017f --- /dev/null +++ b/kstars/kstars/indi/lx200driver.h @@ -0,0 +1,247 @@ +/* + LX200 Driver + Copyright (C) 2003 Jasem Mutlaq (mutlaqja@ikarustech.com) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + +#ifndef LX200DRIVER_H +#define LX200DRIVER_H + + /* Slew speeds */ +enum TSlew { LX200_SLEW_MAX, LX200_SLEW_FIND, LX200_SLEW_CENTER, LX200_SLEW_GUIDE}; + /* Alignment modes */ +enum TAlign { LX200_ALIGN_POLAR, LX200_ALIGN_ALTAZ, LX200_ALIGN_LAND }; + /* Directions */ +enum TDirection { LX200_NORTH, LX200_WEST, LX200_EAST, LX200_SOUTH, LX200_ALL}; + /* Formats of Right ascention and Declenation */ +enum TFormat { LX200_FORMAT_SHORT, LX200_FORMAT_LONG}; + /* Time Format */ +enum TTimeFormat { LX200_24, LX200_AM, LX200_PM}; + /* Focus operation */ +enum TFocusMotion { LX200_FOCUSIN, LX200_FOCUSOUT }; +enum TFocusSpeed { LX200_HALTFOCUS = 0, LX200_FOCUSFAST, LX200_FOCUSMEDIUM, LX200_FOCUSSLOW }; + /* Library catalogs */ +enum TCatalog { LX200_STAR_C, LX200_DEEPSKY_C}; + /* Frequency mode */ +enum StarCatalog { LX200_STAR, LX200_SAO, LX200_GCVS }; + /* Deep Sky Catalogs */ +enum DeepSkyCatalog { LX200_NGC, LX200_IC, LX200_UGC, LX200_CALDWELL, LX200_ARP, LX200_ABELL, LX200_MESSIER_C}; + /* Mount tracking frequency, in Hz */ +enum TFreq { LX200_TRACK_DEFAULT, LX200_TRACK_LUNAR, LX200_TRACK_MANUAL}; + +#define MaxReticleDutyCycle 15 +#define MaxFocuserSpeed 4 + +/* GET formatted sexagisemal value from device, return as double */ +#define getLX200RA(x) getCommandSexa(x, "#:GR#") +#define getLX200DEC(x) getCommandSexa(x, "#:GD#") +#define getObjectRA(x) getCommandSexa(x, "#:Gr#") +#define getObjectDEC(x) getCommandSexa(x, "#:Gd#") +#define getLocalTime12(x) getCommandSexa(x, "#:Ga#") +#define getLocalTime24(x) getCommandSexa(x, "#:GL#") +#define getSDTime(x) getCommandSexa(x, "#:GS#") +#define getLX200Alt(x) getCommandSexa(x, "#:GA#") +#define getLX200Az(x) getCommandSexa(x, "#:GZ#") + +/* GET String from device and store in supplied buffer x */ +#define getObjectInfo(x) getCommandString(x, "#:LI#") +#define getVersionDate(x) getCommandString(x, "#:GVD#") +#define getVersionTime(x) getCommandString(x, "#:GVT#") +#define getFullVersion(x) getCommandString(x, "#:GVF#") +#define getVersionNumber(x) getCommandString(x, "#:GVN#") +#define getProductName(x) getCommandString(x, "#:GVP#") +#define turnGPS_StreamOn() getCommandString(x, "#:gps#") + +/* GET Int from device and store in supplied pointer to integer x */ +#define getUTCOffset(x) getCommandInt(x, "#:GG#") +#define getMaxElevationLimit(x) getCommandInt(x, "#:Go#") +#define getMinElevationLimit(x) getCommandInt(x, "#:Gh#") + +/* Generic set, x is an integer */ +#define setReticleDutyFlashCycle(x) setCommandInt(x, "#:BD") +#define setReticleFlashRate(x) setCommandInt(x, "#:B") +#define setFocuserSpeed(x) setCommandInt(x, "#:F") +#define setSlewSpeed(x) setCommandInt(x, "#:Sw") + +/* Set X:Y:Z */ +#define setLocalTime(x,y,z) setCommandXYZ(x,y,z, "#:SL") +#define setSDTime(x,y,z) setCommandXYZ(x,y,z, "#:SS") + +/* GPS Specefic */ +#define turnGPSOn() portWrite("#:g+#") +#define turnGPSOff() portWrite("#:g-#") +#define alignGPSScope() portWrite("#:Aa#") +#define gpsSleep() portWrite("#:hN#") +#define gpsWakeUp() portWrite("#:hW#") +#define gpsRestart() portWrite("#:I#") +#define updateGPS_System() setStandardProcedure("#:gT#") +#define enableDecAltPec() portWrite("#:QA+#") +#define disableDecAltPec() portWrite("#:QA-#") +#define enableRaAzPec() portWrite("#:QZ+#") +#define disableRaAzPec() portWrite("#:QZ-#") +#define activateAltDecAntiBackSlash() portWrite("#$BAdd#") +#define activateAzRaAntiBackSlash() portWrite("#$BZdd#") +#define SelenographicSync() portWrite("#:CL#") + +#define slewToAltAz() setStandardProcedure("#:MA#") +#define toggleTimeFormat() portWrite("#:H#") +#define increaseReticleBrightness() portWrite("#:B+#") +#define decreaseReticleBrightness() portWrite("#:B-#") +#define turnFanOn() portWrite("#:f+#") +#define turnFanOff() portWrite("#:f-#") +#define seekHomeAndSave() portWrite("#:hS#") +#define seekHomeAndSet() portWrite("#:hF#") +#define turnFieldDeRotatorOn() portWrite("#:r+#") +#define turnFieldDeRotatorOff() portWrite("#:r-#") +#define slewToPark() portWrite("#:hP#") + +/* Astro-Physics specific */ +#define APPark() portWrite("#:KA#") +#define APUnpark() portWrite("#:PO#"); + +#ifdef __cplusplus +extern "C" { +#endif + +/************************************************************************** + Basic I/O +**************************************************************************/ +int openPort(const char *portID); +int portRead(char *buf, int nbytes, int timeout); +int portWrite(const char * buf); +int LX200readOut(int timeout); + +int Connect(const char* device); +void Disconnect(); + +/************************************************************************** + Diagnostics + **************************************************************************/ +char ACK(); +int testTelescope(); +int testAP(); + +/************************************************************************** + Get Commands: store data in the supplied buffer. Return 0 on success or -1 on failure + **************************************************************************/ + +/* Get Double from Sexagisemal */ +int getCommandSexa(double *value, const char *cmd); +/* Get String */ +int getCommandString(char *data, const char* cmd); +/* Get Int */ +int getCommandInt(int *value, const char* cmd); +/* Get tracking frequency */ +int getTrackFreq(double * value); +/* Get site Latitude */ +int getSiteLatitude(int *dd, int *mm); +/* Get site Longitude */ +int getSiteLongitude(int *ddd, int *mm); +/* Get Calender data */ +int getCalenderDate(char *date); +/* Get site Name */ +int getSiteName(char *siteName, int siteNum); +/* Get Number of Bars */ +int getNumberOfBars(int *value); +/* Get Home Search Status */ +int getHomeSearchStatus(int *status); +/* Get OTA Temperature */ +int getOTATemp(double * value); +/* Get time format: 12 or 24 */ +int getTimeFormat(int *format); +/* Get RA, DEC from Sky Commander controller */ +int updateSkyCommanderCoord(double *ra, double *dec); +/************************************************************************** + Set Commands + **************************************************************************/ + +/* Set Int */ +int setCommandInt(int data, const char *cmd); +/* Set Sexigesimal */ +int setCommandXYZ( int x, int y, int z, const char *cmd); +/* Common routine for Set commands */ +int setStandardProcedure(char * writeData); +/* Set Slew Mode */ +int setSlewMode(int slewMode); +/* Set Alignment mode */ +int setAlignmentMode(unsigned int alignMode); +/* Set Object RA */ +int setObjectRA(double ra); +/* set Object DEC */ +int setObjectDEC(double dec); +/* Set Calender date */ +int setCalenderDate(int dd, int mm, int yy); +/* Set UTC offset */ +int setUTCOffset(double hours); +/* Set Track Freq */ +int setTrackFreq(double trackF); +/* Set current site longitude */ +int setSiteLongitude(double Long); +/* Set current site latitude */ +int setSiteLatitude(double Lat); +/* Set Object Azimuth */ +int setObjAz(double az); +/* Set Object Altitude */ +int setObjAlt(double alt); +/* Set site name */ +int setSiteName(char * siteName, int siteNum); +/* Set maximum slew rate */ +int setMaxSlewRate(int slewRate); +/* Set focuser motion */ +int setFocuserMotion(int motionType); +/* Set focuser speed mode */ +int setFocuserSpeedMode (int speedMode); +/* Set minimum elevation limit */ +int setMinElevationLimit(int min); +/* Set maximum elevation limit */ +int setMaxElevationLimit(int max); + +/************************************************************************** + Motion Commands + **************************************************************************/ +/* Slew to the selected coordinates */ +int Slew(); +/* Synchronize to the selected coordinates and return the matching object if any */ +int Sync(char *matchedObject); +/* Abort slew in all axes */ +int abortSlew(); +/* Move into one direction, two valid directions can be stacked */ +int MoveTo(int direction); +/* Half movement in a particular direction */ +int HaltMovement(int direction); +/* Select the tracking mode */ +int selectTrackingMode(int trackMode); +/* Select Astro-Physics tracking mode */ +int selectAPTrackingMode(int trackMode); + +/************************************************************************** + Other Commands + **************************************************************************/ + /* Ensures LX200 RA/DEC format is long */ +int checkLX200Format(); +/* Select a site from the LX200 controller */ +int selectSite(int siteNum); +/* Select a catalog object */ +int selectCatalogObject(int catalog, int NNNN); +/* Select a sub catalog */ +int selectSubCatalog(int catalog, int subCatalog); + +#ifdef __cplusplus +} +#endif + +#endif |