IMU_DUAL/nmea/rtklib.h

88 lines
2.6 KiB
C
Raw Normal View History

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>
#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
#define MAXLEAPS 64 /* max number of leap seconds table */
2022-12-06 17:34:02 +08:00
/* type definitions ----------------------------------------------------------*/
typedef struct
{ /* 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;
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;
2022-12-06 17:34:02 +08:00
typedef struct
{
char name[5];
2022-12-06 17:34:02 +08:00
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;
2022-12-06 17:34:02 +08:00
typedef struct
{ /* solution type */
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;
/* 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
extern gtime_t epoch2time(const double *ep);
2022-12-06 17:34:02 +08:00
extern int input_nmea(nmea_t* nmea, const uint8_t data);
2022-12-06 17:34:02 +08:00
#endif /* RTKLIB_H */