?? gps.h
字號:
#define TSIP_VERNUM "7.68a"
#define GPS_PI (3.1415926535898)
#define D2R (GPS_PI/180.0)
#define R2D (180.0/GPS_PI)
#define WEEK (604800.)
#define MAXCHAN (8)
/* control characters for TSIP packets */
#define DLE (0x10)
#define ETX (0x03)
#define MAX_RPTBUF (256)
#define OUTBUFSIZE (1000)
extern char outbuf[OUTBUFSIZE];
/* values of TSIPPKT.status */
#define TSIP_PARSED_EMPTY 0
#define TSIP_PARSED_FULL 1
#define TSIP_PARSED_DLE_1 2
#define TSIP_PARSED_DATA 3
#define TSIP_PARSED_DLE_2 4
typedef struct
{
unsigned char latdir; // 緯度
char lat[15];
unsigned char londir; // 經度
char lon[15];
unsigned char altdir; // 高度,海拔
char alt[15];
}POSITION;
typedef struct
{
unsigned char eastdir;
char evel[15];
unsigned char northdir;
char nvel[15];
unsigned char updir;
char uvel[15];
}VELOCITY;
/* TSIP packets have the following structure, whether report or command. */
typedef struct {
short
counter, /* counter */
len; /* size of buf; < MAX_RPTBUF unsigned chars */
unsigned char
status, /* TSIP packet format/parse status */
code; /* TSIP code */
unsigned char
buf[MAX_RPTBUF]; /* report or command string */
} TSIPPKT;
/* TSIP binary data structures */
typedef struct {
unsigned char
t_oa_raw, SV_health;
float
e, t_oa, i_0, OMEGADOT, sqrt_A,
OMEGA_0, omega, M_0, a_f0, a_f1,
Axis, n, OMEGA_n, ODOT_n, t_zc;
short
weeknum, wn_oa;
} ALM_INFO;
typedef struct { /* Almanac health page (25) parameters */
unsigned char
WN_a, SV_health[32], t_oa;
} ALH_PARMS;
typedef struct { /* Universal Coordinated Time (UTC) parms */
double
A_0;
float
A_1;
short
delta_t_LS;
float
t_ot;
short
WN_t, WN_LSF, DN, delta_t_LSF;
} UTC_INFO;
typedef struct { /* Ionospheric info (float) */
float
alpha_0, alpha_1, alpha_2, alpha_3,
beta_0, beta_1, beta_2, beta_3;
} ION_INFO;
typedef struct { /* Subframe 1 info (float) */
short
weeknum;
unsigned char
codeL2, L2Pdata, SVacc_raw, SV_health;
short
IODC;
float
T_GD, t_oc, a_f2, a_f1, a_f0, SVacc;
} EPHEM_CLOCK;
typedef struct { /* Ephemeris info (float) */
unsigned char
IODE, fit_interval;
float
C_rs, delta_n;
double
M_0;
float
C_uc;
double
e;
float
C_us;
double
sqrt_A;
float
t_oe, C_ic;
double
OMEGA_0;
float
C_is;
double
i_0;
float
C_rc;
double
omega;
float
OMEGADOT, IDOT;
double
Axis, n, r1me2, OMEGA_n, ODOT_n;
} EPHEM_ORBIT;
typedef struct { /* Navigation data structure */
short
sv_number; /* SV number (0 = no entry) */
float
t_ephem; /* time of ephemeris collection */
EPHEM_CLOCK
ephclk; /* subframe 1 data */
EPHEM_ORBIT
ephorb; /* ephemeris data */
} NAV_INFO;
typedef struct {
float
flt1;
unsigned char
chr1, chr2, chr3, chr4;
float
flt2, flt3, flt4, flt5;
unsigned char
chr5;
} TSIP_POS_FILT_PARMS;
typedef struct {
unsigned char
bSubcode,
operating_mode,
dgps_mode,
dyn_code,
trackmode;
float
elev_mask,
cno_mask,
dop_mask,
dop_switch;
unsigned char
dgps_age_limit;
} TSIP_RCVR_CFG;
struct cph1_datablock_struct {
unsigned char prn, flagbyte, reserved;
signed char elev;
short azim;
unsigned char signal_strength;
double pseudorange, carrier_phase;
float Doppler;
};
struct cph1_msg_struct {
unsigned char subcode, preamble;
unsigned short length;
double receive_time, clock_offset;
unsigned char numsvs;
struct cph1_datablock_struct db[MAXCHAN];
unsigned short checksum;
unsigned char postamble;
};
/******************* PROTOYPES *****************/
/******************* PROTOYPES *****************/
/******************* PROTOYPES *****************/
/*
* This routine sends a command to the receiver. It calls a
* function sendb() that must be supplied by the user. All
* calls to this subroutine are within TSIP_IFC.C.
*/
void send_cmd
(TSIPPKT *cmd, short sendb(unsigned char bb));
/* functions to add a byte from the receiver and "unstuffs" it */
void tsip_input_proc (TSIPPKT *rpt, char newbyte);
/**/
/**/
/* prototypes for command-encode primitives with suffix convention: */
/* c = clear, s = set, q = query, e = enable, d = disable */
void cmd_0x1Dc (TSIPPKT *cmd);
void cmd_0x1Ds (TSIPPKT *cmd,
float offset);
void cmd_0x1E (TSIPPKT *cmd,
unsigned char reset_type);
void cmd_0x1F (TSIPPKT *cmd);
void cmd_0x20 (TSIPPKT *cmd, unsigned char sv_prn);
void cmd_0x21 (TSIPPKT *cmd);
void cmd_0x22 (TSIPPKT *cmd,
unsigned char nav_code);
void cmd_0x23 (TSIPPKT *cmd,
float pos_ECEF[3]);
void cmd_0x24 (TSIPPKT *cmd);
void cmd_0x25 (TSIPPKT *cmd);
void cmd_0x26 (TSIPPKT *cmd);
void cmd_0x27 (TSIPPKT *cmd);
void cmd_0x28 (TSIPPKT *cmd);
void cmd_0x29 (TSIPPKT *cmd);
void cmd_0x2As (TSIPPKT *cmd,
float alt);
void cmd_0x2Ad (TSIPPKT *cmd);
void cmd_0x2Aq (TSIPPKT *cmd);
void cmd_0x2B (TSIPPKT *cmd,
float lat,
float lon,
float alt);
void cmd_0x2Cq (TSIPPKT *cmd);
void cmd_0x2Cs (TSIPPKT *cmd,
unsigned char dyn_code,
float elev_mask,
float snr,
float dop_mask,
float dop_switch);
void cmd_0x2D (TSIPPKT *cmd);
void cmd_0x2E (TSIPPKT *cmd,
float time_of_week,
short week_num);
void cmd_0x2F (TSIPPKT *cmd);
void cmd_0x31 (TSIPPKT *cmd,
float ECEF_pos[3]);
void cmd_0x32 (TSIPPKT *cmd,
float lat,
float lon,
float alt);
void cmd_0x35q (TSIPPKT *cmd);
void cmd_0x35s (TSIPPKT *cmd,
unsigned char pos_code,
unsigned char vel_code,
unsigned char time_code,
unsigned char opts_code);
void cmd_0x37 (TSIPPKT *cmd);
void cmd_0x38q (TSIPPKT *cmd,
unsigned char data_type,
unsigned char sv_prn);
void cmd_0x38s (TSIPPKT *cmd,
unsigned char data_type,
unsigned char sv_prn,
unsigned char data_length,
unsigned char *databuf);
void cmd_0x39 (TSIPPKT *cmd,
unsigned char op_code,
unsigned char sv_prn);
void cmd_0x3A (TSIPPKT *cmd,
unsigned char sv_prn);
void cmd_0x3B (TSIPPKT *cmd,
unsigned char sv_prn);
void cmd_0x3C (TSIPPKT *cmd,
unsigned char sv_prn);
void cmd_0x3Dq (TSIPPKT *cmd);
void cmd_0x3Ds (TSIPPKT *cmd,
unsigned char baud_out,
unsigned char baud_inp,
unsigned char char_code,
unsigned char stopbitcode,
unsigned char output_mode,
unsigned char input_mode);
void cmd_0x3E (TSIPPKT *cmd);
void cmd_0x62q (TSIPPKT *cmd);
void cmd_0x62s (TSIPPKT *cmd,
unsigned char dgps_mode);
void cmd_0x65 (TSIPPKT *cmd,
unsigned char sv_prn);
void cmd_0x6Eq (TSIPPKT *cmd,
unsigned char subcode);
void cmd_0x6Ed (TSIPPKT *cmd,
unsigned char subcode);
void cmd_0x6Es (TSIPPKT *cmd,
unsigned char subcode,
unsigned char interval);
void cmd_0x70q (TSIPPKT *cmd);
void cmd_0x70s (TSIPPKT *cmd,
unsigned char dyn_switch,
unsigned char static_switch,
unsigned char alt_switch,
unsigned char extra) ;
void cmd_0x71q (TSIPPKT *cmd);
void cmd_0x71s (TSIPPKT *cmd,
short pf,
TSIP_POS_FILT_PARMS *params);
void cmd_0x73q (TSIPPKT *cmd);
void cmd_0x73c (TSIPPKT *cmd);
void cmd_0x73d (TSIPPKT *cmd);
void cmd_0x73s (TSIPPKT *cmd,
float alt_filter_parm);
void cmd_0x77q (TSIPPKT *cmd);
void cmd_0x77s (TSIPPKT *cmd,
short dgps_max_age);
void cmd_0x7A_0s (TSIPPKT *cmd,
unsigned char nmea_interval,
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -