/usr/include/nexstar.h is in libnexstar-dev 0.15-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 | /**************************************************************
Celestron NexStar compatible telescope control library
(C)2013-2016 by Rumen G.Bogdanovski
***************************************************************/
#if !defined(__NEXSTAR_H)
#define __NEXSTAR_H
#define NX_TC_TRACK_OFF 0
#define NX_TC_TRACK_ALT_AZ 1
#define NX_TC_TRACK_EQ_NORTH 2
#define NX_TC_TRACK_EQ_SOUTH 3
#define SW_TC_TRACK_OFF 0
#define SW_TC_TRACK_ALT_AZ 1
#define SW_TC_TRACK_EQ 2
#define SW_TC_TRACK_EQ_PEC 3
#define TC_TRACK_OFF 0
#define TC_TRACK_ALT_AZ 1
#define TC_TRACK_EQ_NORTH 2
#define TC_TRACK_EQ_SOUTH 3
#define TC_TRACK_EQ 4
#define TC_TRACK_EQ_PEC 5
#define TC_DIR_POSITIVE 1
#define TC_DIR_NEGATIVE 0
#define TC_AXIS_RA_AZM 1
#define TC_AXIS_DE_ALT 0
#define TC_AXIS_RA TC_AXIS_RA_AZM
#define TC_AXIS_DE TC_AXIS_DE_ALT
#define TC_AXIS_AZM TC_AXIS_RA_AZM
#define TC_AXIS_ALT TC_AXIS_DE_ALT
#define _TC_DIR_POSITIVE 6
#define _TC_DIR_NEGATIVE 7
#define _TC_AXIS_RA_AZM 16
#define _TC_AXIS_DE_ALT 17
/* return codes */
#define RC_OK 0 /* success */
#define RC_FAILED (-1) /* general error */
#define RC_PARAMS (-2) /* invalid parameters */
#define RC_DEVICE (-3) /* no responce from the device */
#define RC_DATA (-4) /* invalid data */
#define RC_UNSUPPORTED (-5) /* Unsupported command */
#define DEG2RAD (3.1415926535897932384626433832795/180.0)
#define RAD2DEG (180.0/3.1415926535897932384626433832795)
/* Supported NexStar protocol versions */
#define VER_1_2 0x10200
#define VER_1_6 0x10600
#define VER_2_2 0x20200
#define VER_2_3 0x20300
#define VER_3_1 0x30100
#define VER_4_10 0x40A00
#define VER_3_37_8 0x32508
#define VER_4_37_8 0x42508
/* All protocol versions */
#define VER_AUX 0xFFFFFF
#define VER_AUTO 0x0
#define VNDR_CELESTRON 0x1
#define VNDR_SKYWATCHER 0x2
#define VNDR_ALL_SUPPORTED (VNDR_CELESTRON | VNDR_SKYWATCHER)
/* There is no way to tell SkyWatcher from Celestron. Unfortunately both share the
same IDs and some Celestron mounts have RTC wile SW does not. That is why the user
should decide. Set nexstar_use_rtc to 1 to enable using the RTC on the mounts that have RTC. */
extern int nexstar_use_rtc;
extern int nexstar_proto_version;
/* version check macros */
#define RELEASE_MASK 0xFF0000
#define REVISION_MASK 0x00FF00
#define PATCH_MASK 0x0000FF
#define GET_RELEASE(ver) ((ver & RELEASE_MASK)>>16)
#define GET_REVISION(ver) ((ver & REVISION_MASK)>>8)
#define GET_PATCH(ver) (ver & PATCH_MASK)
#define REQUIRE_VER(req_ver) { if(req_ver > nexstar_proto_version) return RC_UNSUPPORTED; }
#define REQUIRE_RELEASE(req_ver) { if ((req_ver) > GET_RELEASE(nexstar_proto_version)) return RC_UNSUPPORTED; }
#define REQUIRE_REVISION(req_ver) { if ((req_ver) > GET_REVISION(nexstar_proto_version)) return RC_UNSUPPORTED; }
#define REQUIRE_PATCH(req_ver) { if ((req_ver) > GET_PATCH(nexstar_proto_version)) return RC_UNSUPPORTED; }
extern int nexstar_mount_vendor;
/* vendor check macros */
#define REQUIRE_VENDOR(req_vendor) { if(!(nexstar_mount_vendor & req_vendor)) return RC_UNSUPPORTED; }
#define VENDOR(vendor) (nexstar_mount_vendor & vendor)
#define VENDOR_IS(vendor) (nexstar_mount_vendor == vendor)
#include <time.h>
#include <unistd.h>
#ifdef __cplusplus /* If this is a C++ compiler, use C linkage */
extern "C" {
#endif
/* Telescope communication */
int open_telescope(char *dev_file);
int close_telescope(int dev_fd);
int enforce_protocol_version(int devfd, int ver);
#define write_telescope(dev_fd, buf, size) (write(dev_fd, buf, size))
int _read_telescope(int devfd, char *reply, int len, char vl);
#define read_telescope(devfd, reply, len) (_read_telescope(devfd, reply, len, 0))
#define read_telescope_vl(devfd, reply, len) (_read_telescope(devfd, reply, len, 1))
int guess_mount_vendor(int dev);
int enforce_vendor_protocol(int vendor);
/* Telescope commands */
int tc_check_align(int dev);
int tc_get_orientation(int dev);
int tc_goto_in_progress(int dev);
int tc_goto_cancel(int dev);
int tc_echo(int dev, char ch);
int tc_get_model(int dev);
int tc_get_version(int dev, char *major, char *minor);
int tc_get_tracking_mode(int dev);
int tc_set_tracking_mode(int dev, char mode);
int _tc_get_rade(int dev, double *ra, double *de, char precise);
#define tc_get_rade(dev, ra, de) (_tc_get_rade(dev, ra, de, 0))
#define tc_get_rade_p(dev, ra, de) (_tc_get_rade(dev, ra, de, 1))
int _tc_get_azalt(int dev, double *az, double *alt, char precise);
#define tc_get_azalt(dev, az, alt) (_tc_get_azalt(dev, az, alt, 0))
#define tc_get_azalt_p(dev, az, alt) (_tc_get_azalt(dev, az, alt, 1))
int _tc_goto_rade(int dev, double ra, double de, char precise);
#define tc_goto_rade(dev, ra, de) (_tc_goto_rade(dev, ra, de, 0))
#define tc_goto_rade_p(dev, ra, de) (_tc_goto_rade(dev, ra, de, 1))
int _tc_goto_azalt(int dev, double az, double alt, char precise);
#define tc_goto_azalt(dev, az, alt) (_tc_goto_azalt(dev, az, alt, 0))
#define tc_goto_azalt_p(dev, az, alt) (_tc_goto_azalt(dev, az, alt, 1))
int _tc_sync_rade(int dev, double ra, double de, char precise);
#define tc_sync_rade(dev, ra, de) (_tc_sync_rade(dev, ra, de, 0))
#define tc_sync_rade_p(dev, ra, de) (_tc_sync_rade(dev, ra, de, 1))
int tc_get_location(int dev, double *lon, double *lat);
int tc_set_location(int dev, double lon, double lat);
time_t tc_get_time(int dev, time_t *ttime, int *tz, int *dst);
int tc_set_time(char dev, time_t ttime, int tz, int dst);
int tc_slew_fixed(int dev, char axis, char direction, char rate);
int tc_slew_variable(int dev, char axis, char direction, float rate);
char *get_model_name(int id, char *name, int len);
/* Reverse engineered commands */
/*
int tc_get_guide_rate();
int tc_set_guide_rate_fixed();
int tc_set_guide_rate();
*/
int tc_get_autoguide_rate(int dev, char axis);
int tc_set_autoguide_rate(int dev, char axis, char rate);
int tc_get_backlash(int dev, char axis, char direction);
int tc_set_backlash(int dev, char axis, char direction, char backlash);
int tc_pass_through_cmd(int dev, char msg_len, char dest_id, char cmd_id,
char data1, char data2, char data3, char res_len, char *response);
/* End of reverse engineered commands */
/* nextar turns <=> degrees conversion */
int pnex2dd(char *nex, double *d1, double *d2);
int nex2dd(char *nex, double *d1, double *d2);
int dd2nex(double d1, double d2, char *nex);
int dd2pnex(double d1, double d2, char *nex);
#ifdef __cplusplus /* If this is a C++ compiler, end C linkage */
}
#endif
#endif /* __NEXSTAR_H */
|