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
|
static const double Pi = 3.14159265358979323846;
/*static const double Degree = Pi/180.0; */
static const double Degree = 1.74532925199e-2;
typedef unsigned char BYTE;
#define MAX_LENGTH 300 /* maximum length of Garmin binary message */
#define MAX_LINE 256 /* data file maximum line length */
/*#define OUTDRIVER "\p.AOut"
#define INDRIVER "\p.AIn" */
/* Garmin message type characters */
#define RTE_NAM 0x1d /* Route name record */
#define RTE_WPT 0x1e /* Route waypoint record */
#define ALM 0x1f /* Almanac record */
#define TRK 0x22 /* Track record */
#define WPT 0x23 /* Waypoint record */
#define GMNID 0x7e /* Request Garmin ID */
/* Transfer types */
#define ALMANAC 0
#define ROUTE 1
#define TRACK 2
#define WAYPOINT 3
enum PROTOCOL {NONE, GARMIN, NMEA};
/* prototypes */
/*
int serialOpen(enum PROTOCOL);
long serialCharsAvail(void);
void serialClose(void);
*/
short getGPSMessage(void);
void sendGPSMessage(BYTE *m, short length);
void getGPSInfo(FILE *refNum, short type);
void sendGPSInfo(FILE *refNum, short type);
void saveFormat(char *, short);
double int2deg(long n);
long deg2int(double x);
char *secs2dt(long secs, short offset);
long dt2secs(char *dt, int offset);
void DegToUTM(double lat, double lon, char *zone, double *x, double *y);
void UTMtoDeg(short zone, short southernHemisphere, double x, double y,
double *lat, double *lon);
void DegToKKJ(double lat, double lon, char *zone, double *x, double *y);
void KKJtoDeg(short zone, short southernHemisphere, double x, double y,
double *lat, double *lon);
void toTM(double lat, double lon, double lat0, double lon0, double k0, double *x, double *y);
void fromTM(double x, double y, double lat0, double lon0, double k0, double *lat, double *lon);
void toUPS(double lat, double lon, double *x, double *y);
void fromUPS(short southernHemisphere, double x, double y, double *lat, double *lon);
void DegToBNG(double lat, double lon, char *zone, double *x, double *y);
void BNGtoDeg(char *zone, double x, double y, double *lat, double *lon);
void DegToITM(double lat, double lon, char *zone, double *x, double *y);
void ITMtoDeg(char *zone, double x, double y, double *lat, double *lon);
void datumParams(short datum, double *a, double *es);
/* Mayko Xmap additions */
int mayko_xmap_format;
/* added prototype functions (to reduce compiler warnings) */
short GetLine(FILE *refNum, char *line, short init);
void InitBarGraph(void);
void SetBarGraph(double value);
void CloseBarGraph(void);
void Message(char *txt);
int CheckGPS(void);
void NotResponding(void);
int serialOpen(enum PROTOCOL p);
void serialClose();
void Error(char *txt);
char *toDMS(double a);
char *toDM(double a);
double DMStoDegrees(char *s);
double DMtoDegrees(char *s);
void translate(short fromWGS84, double *latitude, double *longitude, short datumID);
struct DATUM {
char *name;
short ellipsoid;
short dx;
short dy;
short dz;
};
struct ELLIPSOID {
char *name; /* name of ellipsoid */
double a; /* semi-major axis, meters */
double invf; /* 1/f */
};
/* Messages declarations */
extern BYTE m1[], m2[];
extern BYTE p1[], p2[];
extern BYTE alm1[], alm2[];
extern BYTE trk1[], trk2[];
extern BYTE wpt1[], wpt2[];
extern BYTE rte1[], rte2[], rte3[];
extern BYTE almt[], rtet[], trkt[], wptt[];
extern BYTE gid2[], gid3[], gid4[], gid5[];
extern BYTE off1[], test[];
extern BYTE tim1[];
|