XEphem/GUI/xephem/tools/lx200xed/liblx200.h

224 lines
9.4 KiB
C

#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif
#define LX200_FALSE -1
#define LX200_TRUE 1
#define LX200_EMULATE_FALSE 0
#define LX200_EMULATE_TRUE 1
#define LX200_EMULATE_FD 5000
/*Setable values for options*/
#define LX200_OPT_LONG_FORMAT 1
#define LX200_OPT_SHORT_FORMAT 2
#define LX200_OPT_CLOCK24 3
#define LX200_OPT_CLOCK12 4
#define LX200_OPT_CONTINOUS 5
#define LX200_OPT_FLASH50 6
#define LX200_OPT_FLASH25 7
#define LX200_OPT_FLASH10 8
/*Object type bit masks*/
#define LX200_TYPE_GALAXIES 0x00
#define LX200_TYPE_PLANETARY 0x01
#define LX200_TYPE_DIFFUSE 0x02
#define LX200_TYPE_GLOBULAR 0x04
#define LX200_TYPE_OPEN 0x08
/*telescope modes*/
#define LX200_MODE_ALTAZ 1
#define LX200_MODE_LAND 2
#define LX200_MODE_POLAR 3
#define LX200_MODE_GPOLAR 4
#define BAUDRATE B9600
#define TELESCOPE "/dev/ttyS0"
#define DEBUG
#define _POSIX_SOURCE 1
#define LX200_INITIATOR ":"
#define LX200_TERMINATOR "#"
#define LX200_INITIATOR_C ':'
#define LX200_TERMINATOR_C '#'
#define LX200_DEGREE 223
#define LX200_RETURN_OK '0'
/* Catalogs */
#define LX200_ALIGN_CATALOG 0
#define LX200_SAO_CATALOG 1
#define LX200_GCVS_CATALOG 2
#define LX200_MESSIER_CATALOG 3
#define LX200_NGC_CATALOG 4
#define LX200_IC_CATALOG 5
#define LX200_UGC_CATALOG 6
/*Some code clarifiers*/
#define private
#define public
/*Pre-defines*/
private char lx200_read_one(int);
private int lx200_fmt_number(int, int, char, char *);
/*The _get_ macros */
#define lx200_get(x,y,z,s) lx200_get_generic(x,y,z,s)
#define lx200_get_ra(x,y) lx200_get(x,"GR",y,"05:55:3")
#define lx200_get_dec(x,y) lx200_get(x,"GD",y,"+07:23:26")
#define lx200_get_alt(x,y) lx200_get(x,"GA",y,"62:06:29")
#define lx200_get_ax(x,y) lx200_get(x,"GZ",y,"206:57:17")
#define lx200_get_sidereal(x,y) lx200_get(x,"GS",y,"01:30:15")
#define lx200_get_local12(x,y) lx200_get(x,"Ga",y,"01:30:15")
#define lx200_get_local24(x,y) lx200_get(x,"GL",y,"21:30:15")
#define lx200_get_date(x,y) lx200_get(x,"GC",y,"11/25/99")
#define lx200_get_latitude(x,y) lx200_get(x,"Gt",y,"+32:47:09")
#define lx200_get_longitude(x,y) lx200_get(x,"Gg",y,"+96:47:37")
#define lx200_get_GMT_offset(x,y) lx200_get(x,"GG",y,"+06")
#define lx200_get_obj_RA(x,y) lx200_get(x,"Gr",y,"+06:08:44")
#define lx200_get_obj_dec(x,y) lx200_get(x,"Gd",y,"+24:15:18")
#define lx200_get_filter_type(x,y) lx200_get(x,"Gy",y,"GPDC")
#define lx200_get_filter_quality(x,y) lx200_get(x,"Gq",y,"EX")
#define lx200_get_filter_horizon(x,y) lx200_get(x,"Gh",y,"00")
#define lx200_get_filter_minmag(x,y) lx200_get(x,"Gb",y,"+20.0")
#define lx200_get_filter_maxmag(x,y) lx200_get(x,"Gf",y,"-01.0")
#define lx200_get_filter_minsize(x,y) lx200_get(x,"GI",y,"000'")
#define lx200_get_filter_maxsize(x,y) lx200_get(x,"Gs",y,"200'")
#define lx200_get_field_radius(x,y) lx200_get(x,"GF",y,"015'")
#define lx200_get_field_info(x,y) lx200_get(x,"Lf",y,"004 CNGC1976 SU DNEB MAG 3,9 SZ 66.0'")
#define lx200_get_obj_field(x,y) lx200_get(x,"LI",y,"CNGC1976 SU DNEB MAG 3,9 SZ 66.0'")
#define lx200_get_track(x,y) lx200_get(x,"GT",y,"60.1")
#define lx200_get_status(x,y) lx200_get(x,"D",y,"24")
/*The _fset_ marcos*/
#define lx200_set(x,y,z) lx200_set_generic(x,y,z)
#define lx200_fset_sidereal(x,y) lx200_set(x,"SS",y)
#define lx200_fset_local24(x,y) lx200_set(x,"SL",y)
#define lx200_fset_latitude(x,y) lx200_set(x,"St",y)
#define lx200_fset_longitude(x,y) lx200_set(x,"Sg",y)
#define lx200_fset_GMT_offset(x,y) lx200_set(x,"SG",y)
#define lx200_fset_obj_RA(x,y) lx200_set(x,"Sr",y)
#define lx200_fset_obj_dec(x,y) lx200_set(x,"Sd",y)
#define lx200_fset_filter_type(x,y) lx200_set(x,"Sy",y)
#define lx200_fset_filter_horizon(x,y) lx200_set(x,"Sh",y)
#define lx200_fset_filter_minmag(x,y) lx200_set(x,"Sb",y)
#define lx200_fset_filter_maxmag(x,y) lx200_set(x,"Sf",y)
#define lx200_fset_filter_minsize(x,y) lx200_set(x,"SI",y)
#define lx200_fset_filter_maxsize(x,y) lx200_set(x,"Ss",y)
#define lx200_fset_field_radius(x,y) lx200_set(x,"SF",y)
#define lx200_fset_track_freq(x,y) lx200_set(x,"ST",y)
#define lx200_fset_star_catalog(x,y) lx200_set(x,"Ls",y)
#define lx200_fset_ext_catalog(x,y) lx200_set(x,"Lo",y)
#define lx200_fset_star(x,y) lx200_set(x,"LS",y)
#define lx200_fset_messier(x,y) lx200_set(x,"LM",y)
#define lx200_fset_ext(x,y) lx200_set(x,"LC",y)
/*A few shorthanders to make code easier to read*/
#define lx200_set_ext_ngc(x) lx200_fset_ext_catalog(x,"0")
#define lx200_set_ext_ic(x) lx200_fset_ext_catalog(x,"1")
#define lx200_set_ext_ugc(x) lx200_fset_ext_catalog(x,"2")
/*Commands that the scope doesn't return a reply*/
#define lx200_cmd(x,y) lx200_send_command(x,y)
#define lx200_toggle_format(x) lx200_cmd(x,"U")
#define lx200_move_north(x) lx200_cmd(x,"Mn")
#define lx200_move_south(x) lx200_cmd(x,"Ms")
#define lx200_move_east(x) lx200_cmd(x,"Me")
#define lx200_move_west(x) lx200_cmd(x,"Mw")
#define lx200_stop_north(x) lx200_cmd(x,"Qn")
#define lx200_stop_south(x) lx200_cmd(x,"Qs")
#define lx200_stop_east(x) lx200_cmd(x,"Qe")
#define lx200_stop_west(x) lx200_cmd(x,"Qw")
#define lx200_stop_slew(x) lx200_cmd(x,"Q")
#define lx200_set_speed_guide(x) lx200_cmd(x,"RG")
#define lx200_set_speed_center(x) lx200_cmd(x,"RC")
#define lx200_set_speed_find(x) lx200_cmd(x,"RM")
#define lx200_set_speed_slew(x) lx200_cmd(x,"RS")
#define lx200_step_quality(x) lx200_cmd(x,"Sq")
#define lx200_find_start(x) lx200_cmd(x,"LF")
#define lx200_find_next(x) lx200_cmd(x,"LN")
#define lx200_find_prev(x) lx200_cmd(x,"LB")
#define lx200_reticle_brighter(x) lx200_cmd(x,"B+")
#define lx200_reticle_dimmer(x) lx200_cmd(x,"B-")
#define lx200_focus_out(x) lx200_cmd(x,"F+")
#define lx200_focus_in(x) lx200_cmd(x,"F-")
#define lx200_focus_stop(x) lx200_cmd(x,"FQ");
#define lx200_set_focus_fast(x) lx200_cmd(x,"FF");
#define lx200_set_focus_slow(x) lx200_cmd(x,"FS");
#define lx200_set_track_manual(x) lx200_cmd(x,"TM")
#define lx200_set_track_quartz(x) lx200_cmd(x,"TQ")
#define lx200_track_increment(x) lx200_cmd(x,"T+")
#define lx200_track_decrement(x) lx200_cmd(x,"T-")
#define lx200_toggle_clock_format(x) lx200_cmd(x,"H")
#define lx200_toggle_smart_learn(x) lx200_cmd(x,"Q1")
#define lx200_toggle_smart_update(x) lx200_cmd(x,"Q2")
#define lx200_toggle_smart_erase(x) lx200_cmd(x,"Q3")
#define lx200_toggle_smart_dlearn(x) lx200_cms(x,"Q4")
#define lx200_toggle_smart_dcorrect(x) lx200_cms(x,"Q5")
/*Format macros*/
#define lx200_format_messier(y,x) lx200_fmt_number(y,3,'\0',x)
#define lx200_format_ngc(y,x) lx200_fmt_number(y,4,'\0',x)
#define lx200_format_ic(y,x) lx200_fmt_number(y,4,'\0',x)
#define lx200_format_ugc(y,x) lx200_fmt_number(y,5,'\0',x)
#define lx200_format_date(M,D,Y,x) lx200_fmt_time(M,D,Y,'/','/',FALSE,x)
#define lx200_format_latitude(D,M,S,x) lx200_fmt_time(D,M,S,LX200_DEGREE,';',TRUE,x)
#define lx200_format_longitude(D,M,S,x) lx200_fmt_coord(D,M,S,LX200_DEGREE,';',TRUE,x)
#define lx200_format_GMT_offset(H,x) lx200_fmt_hour(H,TRUE,NULL,x)
#define lx200_format_RA(H,M,S,x) lx200_fmt_time(H,M,S,':',':',FALSE,x)
#define lx200_format_dec(D,M,S,x) lx200_fmt_time(D,M,S,LX200_DEGREE,':',TRUE,x)
#define lx200_format_horizon(D,x) lx200_fmt_hour(H,FALSE,LX200_DEGREE,x)
#define lx200_format_magnitude(M,x) lx200_fmt_magnitude(M,TRUE,x)
#define lx200_format_size(y,x) lx200_fmt_number(y,3,'\0',x)
#define lx200_format_radius(y,x) lx200_fmt_number(y,3,'\'',x)
#define lx200_format_track_freq(y,x) lx200_fmt_magnitude(y,FALSE,x)
/*Predecs*/
int lx200_open_scope(char *);
int lx200_close_scope(int);
int lx200_read_ok(int);
char lx200_read_one(int);
int lx200_read_two(int, char *);
int lx200_write_to_scope(int, char *);
int lx200_send_ACK(int);
int lx200_read_from_scope(int, char *);
int lx200_get_generic(int, char *, char *, char *);
int lx200_get_mode(int);
int lx200_get_site_name(int, char *, int);
int lx200_get_clock_format(int);
int lx200_goto(int);
int lx200_set_generic(int, char *, char *);
int lx200_send_command(int, char *);
int lx200_fset_date(int, char *);
int lx200_set_reticle_flash(int, int);
int lx200_obj_sync(int, char *);
int lx200_set_site_name(int, char *, int);
int lx200_goto_star(int, int, int);
int lx200_goto_RADec(int, char *, char *);
int lx200_goto_ext(int, int, int);
int lx200_set_format(int, int);
int lx200_set_filter_type(int, int);
int lx200_set_site_number(int, int);
int lx200_convert_RA(char *, int *, int *, int *);
int lx200_convert_Dec(char *, int *, int *, int *);
int lx200_map_planet_id(char *);
int lx200_fmt_number(int, int, char, char *);
int lx200_fmt_time(int, int, int, char, char, int, char *);
int lx200_fmt_coord(int, int, int, char, char, char *);
int lx200_fmt_hour(int, int, char, char *);
int lx200_fmt_magnitude(double, int, char *);
int lx200_get_lib_version(char *);
int lx200_set_lib_emulate(int, int);