⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eph.h

📁 GPS_OEM程序用于接收、辨别、发送和校验GPS信息。支持nov协议
💻 H
字号:
/*****************************************************************
*                                                                *
*                  NAV Technology Co., Ltd.                      *
*                      Copyright 2005                            *
*                                                                *
*      Copying is prohibited except by written permission.       *
*                                                                *
******************************************************************/
/*Header file*/

#ifndef _EPH_DEF_H_
#define _EPH_DEF_H_

#include "nvdef.h"


#if(PC_SIM==1)
    #ifdef EPH_DEF
       #define EXTERN_YY
    #else
        #define EXTERN_YY extern
    #endif
#else
    #ifdef EPH_DEF 
	    #define EXTERN_YY far  
    #else
	    #define EXTERN_YY extern far
    #endif
#endif


#define EPH_REQUEST_INTERVAL	(30)

/*EPHEMERIS DATA 
 CONSTANT DEFINITION needed to scale ephemeris value as per ICD_GPS_200 */
// WORD 3 SUBFRAME 1               
#define IODC_2_MSB_DELTA (double)(256.0)                                    /* 2.0 ** (+8) */
#define SV_ACCURACY_DELTA (double)(1.0)
#define WN_DELTA (double)(1.0)

// WORD 7 SUBFRAME 1
#define TGD_DELTA (double)(1/((double)(1ul<<31)))                           /* 2.0 ** (-31) */

// WORD 8 SUBFRAME 1
#define TOC_DELTA (double)(16.0)
#define IODC_8_LSB_DELTA (double)(1.0)

// WORD 9 SUBFRAME 1       
#define AF2_DELTA (double)(1/((double)(1ul<<30)*(double)(1ul<<25)))         /* 2.0 ** (-55) */
#define AF1_DELTA (double)(1/((double)(1ul<<20)*(double)(1ul<<23)))         /* 2.0 ** (-43) */

// WORD 10 SUBFRAME 1                                                     
#define SCALE_UP_AF0 (unsigned int)(1ul<<10)
#define AF0_DELTA (double)(1/((double)(1ul<<31)* (SCALE_UP_AF0)))           /* 2.0**(-31)   */

/* SUBFRAME 2  */

// WORD 3 SUBFRAME 2
#define CRS_DELTA (double)(1/((double)(1ul<<5)))                            /* 2.0 ** ( - 5) */

// WORD 4 SUBFRAME 2 
#define DEL_N_DELTA (double)(PI/((double)(1ul<<20)*(double)(1ul<<23)))      /* 2.0 ** ( - 43) */ 

// WORD 5 SUBFRAME 2
#define M0_24_LSB_DELTA (double)(PI/((double)(1ul<<31)))                    /* 2.0 ** ( - 31) */

// WORD 6 SUBFRAME 2  
#define CUC_DELTA (double)(1/((double)(1ul<<29)))                           /* 2.0 ** ( - 29) */ 

// WORD 7 SUBFRAME 2 
#define E_24_LSB_DELTA (double)(1/((double)(1ul<<30)*(double)(1ul<<3)))     /* 2.0 ** ( - 33) */

// WORD 8 SUBFRAME 2         
#define ROOT_A_8_MSB_DELTA (double)(32.0)                                   /* 2.0 ** ( + 5) */
#define CUS_DELTA (double)(1/((double)(1ul<<29)))                           /* 2.0 ** ( - 29) */ 

// WORD 9 SUBFRAME 2
#define ROOT_A_24_LSB_DELTA (double)(1/((double)(1ul<<19)))                 /* 2.0 ** ( - 19) */

// WORD 10 SUBFRAME 2        
#define TOE_DELTA (double)(16.0)


/* SUBFRAME 3*/

// WORD 3 SUBFRAME 3 
#define CIC_DELTA (double)(1/((double)(1ul<<29)))                           /* 2.0 ** ( - 29) */
#define OMEGA_0_8_MSB_DELTA (double)(1/((double)(1ul<<7)))                  /* 2.0 ** ( - 7)  */

// WORD 4 SUBFRAME 3
#define OMEGA_0_24_LSB_DELTA (double)(PI/((double)(1ul<<31)))               /* 2.0 ** ( - 31) */

// WORD 5 SUBFRAME 3
#define CIS_DELTA (double)(1/((double)(1ul<<29)))                           /* 2.0 ** ( - 29)*/
#define I0_8_MSB_DELTA (double)(1/((double)(1ul<<7)))                       /* 2.0 ** ( - 7) */

// WORD 6 SUBFRAME 3 
#define I0_24_LSB_DELTA (double)(PI/((double)(1ul<<31)))                    /* 2.0 ** ( - 31) */

// WORD 7 SUBFRAME 3
#define CRC_DELTA (double)(1/((double)(1ul<<5)))                            /* 2.0 ** ( - 5) */
#define W_8_MSB_DELTA (double)(1/((double)(1ul<<7)))                        /* 2.0 ** ( - 7) */

// WORD 8 SUBFRAME 3
#define W_24_LSB_DELTA (double)(PI/((double)(1ul<<31)))                     /* 2.0 ** ( - 31) */

// WORD 9 SUBFRAME 3  
#define SCALE_UP_OMEGA_DOT (unsigned int)(1ul<<8)
#define OMEGA_DOT_DELTA (double)(PI/((double)(1ul<<23)*(double)(1ul<<20)\
                        *(double)(SCALE_UP_OMEGA_DOT)))                     /* 2.0 ** ( - 43) */

// WORD 10  SUBFRAME 3 
#define I_DOT_DELTA (double)(PI/((double)(1ul<<23)*(double)(1ul<<20)))      /* 2.0 ** ( - 43) */



typedef struct 
{
    unsigned char  Svs;
    unsigned char  Bytes[72];
}RAW_EPHEM_TYPE;

typedef struct 
{
    unsigned int Wd3_10[8];
}SUBFRAME_ARRAY_TYPE;

typedef struct 
{
    double X;
    double Y;
    double Z;
}SV_XYZ_POS_TYPE;

typedef enum 
{
    NO_DATA = 0,
    ALMANAC = 1,
    EPHEMERID = 2
}SV_DSRC_TYPE;

typedef struct 
{
    double         Root_A;
    double         N;
    double         C0;
    double         Sin_W; 
    double         Cos_W; 
    double         I_Dot;
    double         Omega;
    double         Omega_Dot;
    double         Crc;
    double         I_0;
    double         Cis;
    double         Omega_0;
    double         Cic;
    double         Toe;
    double         Cus;
    double         E;
    double         Cuc;
    double         M0;
    double         Crs;
    unsigned char  Curve_Interval;
    SV_DSRC_TYPE   SV_Data_Source;
    unsigned int   IODE;
    unsigned char  Valid_Ephem_Decoded;
    double         Nav_Delta_T_Rel;
} ORBIT_PARAM_TYPE;

typedef struct 
{
    double Af0;
    double Af1;
    double Af2;
    double Toc;
    double Tgd;
} CLOCK_PARAM_TYPE;

typedef struct
{
    CLOCK_PARAM_TYPE Clk_Param[MAX_SATS_NUM];
    ORBIT_PARAM_TYPE Orbt_Param[MAX_SATS_NUM];
    unsigned char Ephem_Valid[MAX_SATS_NUM];
    unsigned char Ephem_Request;
    unsigned char Ephem_Request_PRN;
    unsigned int  Seconds_After_Request;
}GNSS_EPHEM_TYPE;

//#pragma pack (pop)

EXTERN_YY void readRawEphemMeas( RAW_EPHEM_TYPE blks, GNSS_EPHEM_TYPE *ephem);

#undef EXTERN_YY
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -