#ifndef RTKLIB_H #define RTKLIB_H #include #include #include #include #include #include #include #include #define PI 3.1415926535897932 /* pi */ #define D2R (PI/180.0) /* deg to rad */ #define R2D (180.0/PI) /* rad to deg */ #define CLIGHT 299792458.0 /* speed of light (m/s) */ #define SC2RAD 3.1415926535898 /* semi-circle to radian (IS-GPS) */ #define AU 149597870691.0 /* 1 AU (m) */ #define AS2R (D2R/3600.0) /* arc sec to radian */ #define MAXLEAPS 64 /* max number of leap seconds table */ /* type definitions ----------------------------------------------------------*/ typedef struct { /* time struct */ time_t time; /* time (s) expressed by standard time_t */ double sec; /* fraction of second under 1 s */ } gtime_t; typedef struct { /* sys time struct */ gtime_t SYS_UTC_TIME; // typedef TIME from UTC gtime_t SYS_GPST_TIME; // typedef TIME from UTC uint8_t NMEA_GET; } sys_time_t; typedef struct { char name[5]; uint8_t ready; /*1:ready 0:not ready*/ uint8_t lock; /*1:lock 0:unlock*/ uint8_t enable; gtime_t gpstime; /* time (GPST) */ gtime_t utctime; /* time (UTC) */ double IMU_acc[3]; /* acc (x,y,z) */ double IMU_gyro[3]; /* gyro (x,y,z) */ }IMU_mng_t; typedef struct { /* solution type */ gtime_t eventime; /* time of event (GPST) */ gtime_t gpsttime; /* time (GPST) */ gtime_t utctime; double rr[6]; /* position/velocity (m|m/s) */ double dtr[6]; /* receiver clock bias to time systems (s) */ uint8_t type; /* type (0:xyz-ecef,1:enu-baseline) */ uint8_t stat; /* solution status (SOLQ_???) */ uint8_t ns; /* number of valid satellites */ float age; /* age of differential (s) */ float ratio; /* AR ratio factor for valiation */ } sol_t; typedef struct { sol_t sol; int nbyte; /* number of bytes in message buffer */ int len; /* message length (bytes) */ uint8_t buff[256]; /* message buffer */ } nmea_t; /* time */ extern gtime_t timeadd (gtime_t t, double sec); extern double timediff (gtime_t t1, gtime_t t2); extern gtime_t gpst2utc (gtime_t t); extern gtime_t utc2gpst (gtime_t t); extern gtime_t gpst2bdt (gtime_t t); extern gtime_t bdt2gpst (gtime_t t); extern double time2gpst(gtime_t t, int *week); extern gtime_t timeget (void); extern gtime_t epoch2time(const double *ep); extern int input_nmea(nmea_t* nmea, const uint8_t data); #endif /* RTKLIB_H */