2022-12-06 17:34:02 +08:00
|
|
|
#ifndef RTKLIB_H
|
|
|
|
#define RTKLIB_H
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <stdlib.h>
|
|
|
|
#include <stdarg.h>
|
|
|
|
#include <string.h>
|
|
|
|
#include <math.h>
|
|
|
|
#include <time.h>
|
|
|
|
#include <ctype.h>
|
|
|
|
#include <stdint.h>
|
|
|
|
|
2022-12-13 20:15:11 +08:00
|
|
|
#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 */
|
2022-12-06 17:34:02 +08:00
|
|
|
|
2022-12-13 20:15:11 +08:00
|
|
|
#define MAXLEAPS 64 /* max number of leap seconds table */
|
2022-12-06 17:34:02 +08:00
|
|
|
|
|
|
|
|
|
|
|
/* type definitions ----------------------------------------------------------*/
|
|
|
|
typedef struct
|
2022-12-13 20:15:11 +08:00
|
|
|
{ /* time struct */
|
|
|
|
time_t time; /* time (s) expressed by standard time_t */
|
|
|
|
double sec; /* fraction of second under 1 s */
|
2022-12-06 17:34:02 +08:00
|
|
|
} gtime_t;
|
2022-12-13 20:15:11 +08:00
|
|
|
|
|
|
|
typedef struct
|
2022-12-19 17:11:15 +08:00
|
|
|
{ /* sys time struct */
|
2022-12-13 20:15:11 +08:00
|
|
|
gtime_t SYS_UTC_TIME; // typedef TIME from UTC
|
|
|
|
gtime_t SYS_GPST_TIME; // typedef TIME from UTC
|
2022-12-19 17:11:15 +08:00
|
|
|
uint8_t NMEA_GET;
|
2022-12-13 20:15:11 +08:00
|
|
|
} sys_time_t;
|
|
|
|
|
2022-12-06 17:34:02 +08:00
|
|
|
typedef struct
|
|
|
|
{
|
2022-12-13 20:15:11 +08:00
|
|
|
char name[5];
|
2022-12-06 17:34:02 +08:00
|
|
|
uint8_t ready; /*1:ready 0:not ready*/
|
2022-12-13 20:15:11 +08:00
|
|
|
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;
|
|
|
|
|
2022-12-06 17:34:02 +08:00
|
|
|
typedef struct
|
|
|
|
{ /* solution type */
|
2022-12-13 20:15:11 +08:00
|
|
|
gtime_t eventime; /* time of event (GPST) */
|
|
|
|
gtime_t gpsttime; /* time (GPST) */
|
2022-12-06 17:34:02 +08:00
|
|
|
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;
|
|
|
|
|
2022-12-13 20:15:11 +08:00
|
|
|
/* 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);
|
2022-12-06 17:34:02 +08:00
|
|
|
|
2022-12-13 20:15:11 +08:00
|
|
|
extern gtime_t epoch2time(const double *ep);
|
2022-12-06 17:34:02 +08:00
|
|
|
|
|
|
|
|
2022-12-13 20:15:11 +08:00
|
|
|
extern int input_nmea(nmea_t* nmea, const uint8_t data);
|
2022-12-06 17:34:02 +08:00
|
|
|
|
|
|
|
|
|
|
|
#endif /* RTKLIB_H */
|