├── GPS_BD2_source_v1.2 ├── cfg.h ├── main.c ├── inc │ ├── ichnl.h │ ├── init.h │ ├── isrc.h │ ├── sat_typ.h │ ├── LLA2CGS.h │ ├── frm.h │ ├── GEO_loc.h │ ├── GPS_loc.h │ ├── MEO_Loc.h │ ├── inco.h │ ├── eph.h │ ├── ioc.h │ ├── CGS.h │ ├── type.h │ ├── iloc.h │ ├── FCW.h │ ├── GPS_fmt.h │ ├── MEO_fmt.h │ └── GEO_fmt.h ├── src │ ├── init.c │ ├── iloc.c │ ├── LLA2CGS.c │ ├── frm.c │ ├── MEO_loc.c │ ├── GPS_loc.c │ ├── GEO_loc.c │ ├── ioc.c │ ├── FCW.c │ └── eph.c └── cfg.c ├── .gitattributes └── .gitignore /GPS_BD2_source_v1.2/cfg.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whc2uestc/GPS-BD2source/HEAD/GPS_BD2_source_v1.2/cfg.h -------------------------------------------------------------------------------- /GPS_BD2_source_v1.2/main.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whc2uestc/GPS-BD2source/HEAD/GPS_BD2_source_v1.2/main.c -------------------------------------------------------------------------------- /GPS_BD2_source_v1.2/inc/ichnl.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whc2uestc/GPS-BD2source/HEAD/GPS_BD2_source_v1.2/inc/ichnl.h -------------------------------------------------------------------------------- /GPS_BD2_source_v1.2/inc/init.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whc2uestc/GPS-BD2source/HEAD/GPS_BD2_source_v1.2/inc/init.h -------------------------------------------------------------------------------- /GPS_BD2_source_v1.2/inc/isrc.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whc2uestc/GPS-BD2source/HEAD/GPS_BD2_source_v1.2/inc/isrc.h -------------------------------------------------------------------------------- /GPS_BD2_source_v1.2/src/init.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whc2uestc/GPS-BD2source/HEAD/GPS_BD2_source_v1.2/src/init.c -------------------------------------------------------------------------------- /GPS_BD2_source_v1.2/inc/sat_typ.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whc2uestc/GPS-BD2source/HEAD/GPS_BD2_source_v1.2/inc/sat_typ.h -------------------------------------------------------------------------------- /GPS_BD2_source_v1.2/inc/LLA2CGS.h: -------------------------------------------------------------------------------- 1 | /* 2 | * LLA2CGS.h 3 | * 4 | * Created on: 2013-11-21 5 | * Author: whc 6 | */ 7 | 8 | #ifndef LLA2CGS_H_ 9 | #define LLA2CGS_H_ 10 | 11 | #include "iloc.h" 12 | 13 | void LLA2CGS(User_Loc *loc); 14 | 15 | #endif /* LLA2CGS_H_ */ 16 | -------------------------------------------------------------------------------- /GPS_BD2_source_v1.2/inc/frm.h: -------------------------------------------------------------------------------- 1 | /* 2 | * frm.h 3 | * 4 | * Created on: 2013-11-24 5 | * Author: whc 6 | */ 7 | 8 | #ifndef FRM_H_ 9 | #define FRM_H_ 10 | 11 | #include "ichnl.h" 12 | 13 | void frm_frame(ChPrms *chnlH,QUAD ID); 14 | void read_data(FILE *fp,BYTE bit[32]); 15 | 16 | #endif /* FRM_FRAME_H_ */ 17 | -------------------------------------------------------------------------------- /GPS_BD2_source_v1.2/inc/GEO_loc.h: -------------------------------------------------------------------------------- 1 | /* 2 | * GEO_loc.h 3 | * 4 | * Created on: 2013-11-21 5 | * Author: whc 6 | */ 7 | 8 | #ifndef GEO_LOC_H_ 9 | #define GEO_LOC_H_ 10 | 11 | #include "GEO_fmt.h" 12 | #include "iloc.h" 13 | 14 | void GEO_get_satLoc(GEO_Bsc bsc,LDOUB tsnd,Sat_Loc *loc); 15 | 16 | #endif /* GEO_LOC_H_ */ 17 | -------------------------------------------------------------------------------- /GPS_BD2_source_v1.2/inc/GPS_loc.h: -------------------------------------------------------------------------------- 1 | /* 2 | * GPS_loc.h 3 | * 4 | * Created on: 2013-12-23 5 | * Author: whc 6 | */ 7 | 8 | #ifndef GPS_LOC_H_ 9 | #define GPS_LOC_H_ 10 | 11 | #include "GPS_fmt.h" 12 | #include "iloc.h" 13 | 14 | void GPS_get_satLoc(GPS_Bsc bsc,LDOUB tsnd,Sat_Loc *loc); 15 | 16 | #endif /* GPS_LOC_H_ */ 17 | -------------------------------------------------------------------------------- /GPS_BD2_source_v1.2/inc/MEO_Loc.h: -------------------------------------------------------------------------------- 1 | /* 2 | * MEO_LOc.h 3 | * 4 | * Created on: 2013-11-21 5 | * Author: whc 6 | */ 7 | 8 | #ifndef MEO_LOC_H_ 9 | #define MEO_LOC_H_ 10 | 11 | #include "MEO_fmt.h" 12 | #include "iloc.h" 13 | 14 | void MEO_get_satLoc(MEO_Bsc bsc,LDOUB tsnd,Sat_Loc *loc); 15 | 16 | #endif /* MEO_LOC_H_ */ 17 | -------------------------------------------------------------------------------- /GPS_BD2_source_v1.2/inc/inco.h: -------------------------------------------------------------------------------- 1 | /* 2 | * inco.h 3 | * 4 | * Created on: 2013-11-21 5 | * Author: whc 6 | */ 7 | 8 | #ifndef INCO_H_ 9 | #define INCO_H_ 10 | 11 | #include "type.h" 12 | 13 | typedef struct nco 14 | { 15 | DOUB fs; 16 | DOUB fo; 17 | UQUAD fcw; 18 | UQUAD phs; 19 | UQUAD dphs; 20 | }Nco; 21 | 22 | #endif /* INCO_H_ */ 23 | -------------------------------------------------------------------------------- /GPS_BD2_source_v1.2/inc/eph.h: -------------------------------------------------------------------------------- 1 | /* 2 | * eph.h 3 | * 4 | * Created on: 2013-11-18 5 | * Author: whc 6 | */ 7 | 8 | #ifndef EPH_H_ 9 | #define EPH_H_ 10 | 11 | #include "GPS_fmt.h" 12 | #include "GEO_fmt.h" 13 | #include "MEO_fmt.h" 14 | 15 | extern const GEO_Bsc GEO_EPH[4]; 16 | extern const MEO_Bsc MEO_EPH[1]; 17 | extern const GPS_Bsc GPS_EPH[31]; 18 | 19 | 20 | #endif /* EPH_H_ */ 21 | -------------------------------------------------------------------------------- /GPS_BD2_source_v1.2/inc/ioc.h: -------------------------------------------------------------------------------- 1 | /* 2 | * ioc.h 3 | * 4 | * Created on: 2013-11-17 5 | * Author: whc 6 | */ 7 | 8 | #ifndef IOC_H_ 9 | #define IOC_H_ 10 | 11 | #include 12 | 13 | #include "isrc.h" 14 | 15 | #define I_WGN CHNLNUM 16 | #define O_DAT CHNLNUM+1 17 | #define IO_NM CHNLNUM+2 18 | 19 | void open(SrcSys *sysH); 20 | void close(); 21 | 22 | extern FILE *FP[]; 23 | 24 | #endif /* IOC_H_ */ 25 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | 7 | # Standard to msysgit 8 | *.doc diff=astextplain 9 | *.DOC diff=astextplain 10 | *.docx diff=astextplain 11 | *.DOCX diff=astextplain 12 | *.dot diff=astextplain 13 | *.DOT diff=astextplain 14 | *.pdf diff=astextplain 15 | *.PDF diff=astextplain 16 | *.rtf diff=astextplain 17 | *.RTF diff=astextplain 18 | -------------------------------------------------------------------------------- /GPS_BD2_source_v1.2/inc/CGS.h: -------------------------------------------------------------------------------- 1 | /* 2 | * CGS.h 3 | * 4 | * Created on: 2013-11-21 5 | * Author: whc 6 | */ 7 | 8 | #ifndef CGS_H_ 9 | #define CGS_H_ 10 | 11 | #define MA 6378137.0 12 | #define MU 3.986004418e+14 13 | #define MU_G 3.986005e+14 14 | #define F 1/298.257222101 15 | #define Fe -4.442807633e-10 16 | #define OMGE 7.292115e-5 17 | #define OMGE_G 7.2921151467e-5 18 | #define C 299792458 19 | #define PI 3.1415926535898 20 | #define a 6378137 21 | 22 | #endif /* CGS_H_ */ 23 | -------------------------------------------------------------------------------- /GPS_BD2_source_v1.2/inc/type.h: -------------------------------------------------------------------------------- 1 | /* 2 | * type.h 3 | * 4 | * Created on: 2013-11-29 5 | * Author: whc 6 | */ 7 | 8 | #ifndef TYPE_H_ 9 | #define TYPE_H_ 10 | 11 | typedef char BYTE ; 12 | typedef short WORD ; 13 | typedef int QUAD ; 14 | typedef long LONG ; 15 | typedef double DOUB ; 16 | 17 | typedef unsigned char UBYTE ; 18 | typedef unsigned short UWORD ; 19 | typedef unsigned int UQUAD ; 20 | typedef unsigned long ULONG ; 21 | typedef long long LLONG ; 22 | typedef long double LDOUB ; 23 | 24 | #endif /* TYPE_H_ */ 25 | -------------------------------------------------------------------------------- /GPS_BD2_source_v1.2/src/iloc.c: -------------------------------------------------------------------------------- 1 | /* 2 | * iloc.c 3 | * 4 | * Created on: 2013-11-18 5 | * Author: whc 6 | */ 7 | 8 | #ifndef ILOC_C_ 9 | #define ILOC_C_ 10 | #include 11 | 12 | #include "../inc/type.h" 13 | 14 | /****************************************/ 15 | /* get E with recursive method */ 16 | /****************************************/ 17 | LDOUB get_Ek(LDOUB e, LDOUB M0) 18 | { 19 | LDOUB E; 20 | int i; 21 | E = M0; 22 | for (i = 0; i < 10; i++) { 23 | E = M0 + e * sin(E); 24 | } 25 | return E; 26 | } 27 | #endif /* ILOC_C_ */ 28 | -------------------------------------------------------------------------------- /GPS_BD2_source_v1.2/src/LLA2CGS.c: -------------------------------------------------------------------------------- 1 | /* 2 | * LLA2CGS.c 3 | * 4 | * Created on: 2013-11-21 5 | * Author: whc 6 | */ 7 | #include "math.h" 8 | 9 | #include "../inc/iloc.h" 10 | #include "../inc/CGS.h" 11 | 12 | void LLA2CGS(User_Loc *loc) 13 | { 14 | DOUB pow_e,N,b,l,h; 15 | 16 | b = loc->B/360.0*2*PI; //lastitude 17 | l = loc->L/360.0*2*PI; //longitude 18 | h = loc->H; //high 19 | 20 | pow_e = F*(2-F); 21 | N = MA / sqrt(1-pow_e*sin(b)*sin(b)); 22 | loc->X = (N+h)*cos(b)*cos(l); 23 | loc->Y = (N+h)*cos(b)*sin(l); 24 | loc->Z = (N*(1-pow_e)+h)*sin(b); 25 | } 26 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Windows image file caches 2 | Thumbs.db 3 | ehthumbs.db 4 | 5 | # Folder config file 6 | Desktop.ini 7 | 8 | # Recycle Bin used on file shares 9 | $RECYCLE.BIN/ 10 | 11 | # Windows Installer files 12 | *.cab 13 | *.msi 14 | *.msm 15 | *.msp 16 | 17 | # Windows shortcuts 18 | *.lnk 19 | 20 | # ========================= 21 | # Operating System Files 22 | # ========================= 23 | 24 | # OSX 25 | # ========================= 26 | 27 | .DS_Store 28 | .AppleDouble 29 | .LSOverride 30 | 31 | # Thumbnails 32 | ._* 33 | 34 | # Files that might appear on external disk 35 | .Spotlight-V100 36 | .Trashes 37 | 38 | # Directories potentially created on remote AFP share 39 | .AppleDB 40 | .AppleDesktop 41 | Network Trash Folder 42 | Temporary Items 43 | .apdisk 44 | -------------------------------------------------------------------------------- /GPS_BD2_source_v1.2/inc/iloc.h: -------------------------------------------------------------------------------- 1 | /* 2 | * iloc.h 3 | * 4 | * Created on: 2013-11-18 5 | * Author: whc 6 | */ 7 | 8 | #ifndef ILOC_H_ 9 | #define ILOC_H_ 10 | 11 | #include "type.h" 12 | 13 | typedef struct Loction 14 | { 15 | DOUB dt ; 16 | DOUB X ; 17 | DOUB Y ; 18 | DOUB Z ; 19 | DOUB Ek ; 20 | }Sat_Loc; 21 | 22 | typedef struct UserLoc 23 | { 24 | DOUB B ; //latitude 25 | DOUB L ; //longitude 26 | DOUB H ; //high 27 | DOUB X ; 28 | DOUB Y ; 29 | DOUB Z ; 30 | DOUB Vx ; 31 | DOUB Vy ; 32 | DOUB Vz ; 33 | DOUB Ax ; 34 | DOUB Ay ; 35 | DOUB Az ; 36 | }User_Loc; 37 | typedef struct angle 38 | { 39 | UBYTE ID; 40 | DOUB El; 41 | DOUB Az; 42 | DOUB de; 43 | DOUB dn; 44 | DOUB du; 45 | DOUB X; 46 | DOUB Y; 47 | DOUB Z; 48 | DOUB Ek; 49 | DOUB dt; 50 | }Angle; 51 | LDOUB get_Ek(LDOUB e, LDOUB M0); 52 | #endif /* ILOC_H_ */ 53 | -------------------------------------------------------------------------------- /GPS_BD2_source_v1.2/inc/FCW.h: -------------------------------------------------------------------------------- 1 | /* 2 | * FCW.h 3 | * 4 | * Created on: 2013-11-22 5 | * Author: whc 6 | */ 7 | 8 | #ifndef FCW_H_ 9 | #define FCW_H_ 10 | 11 | #include 12 | 13 | #include "CGS.h" 14 | #include "iloc.h" 15 | #include "isrc.h" 16 | #include "ichnl.h" 17 | #include "GPS_fmt.h" 18 | #include "GEO_fmt.h" 19 | #include "MEO_fmt.h" 20 | 21 | #define GET_DT(USERLOC,SATLOC) sqrt(pow(USERLOC->X-SATLOC.X,2)+pow(USERLOC->Y-SATLOC.Y,2)+pow(USERLOC->Z-SATLOC.Z,2))/C 22 | 23 | void rota_modify(Sat_Loc *locH,DOUB dt); 24 | void get_FCW(ChPrms *chnlH,DOUB dt); 25 | void ref_loc(User_Loc *locH,QUAD i); 26 | void adjust_FCW(User_Loc *locH,SrcSys *sysH); 27 | 28 | void BD2_get_initial_phase(ChPrms *chnlH,DOUB navbitlen); 29 | void GPS_get_initial_phase(ChPrms *chnlH,DOUB navbitlen); 30 | 31 | DOUB GPS_clock_difference_correction(GPS_Bsc bsc,ChPrms chnl,DOUB dt); 32 | DOUB GEO_clock_difference_correction(GEO_Bsc bsc,ChPrms chnl,DOUB dt); 33 | DOUB MEO_clock_difference_correction(MEO_Bsc bsc,ChPrms chnl,DOUB dt); 34 | 35 | #endif /* FCW_H_ */ 36 | -------------------------------------------------------------------------------- /GPS_BD2_source_v1.2/inc/GPS_fmt.h: -------------------------------------------------------------------------------- 1 | /* 2 | * GPS_fmt.h 3 | * 4 | * Created on: 2013-12-17 5 | * Author: whc 6 | */ 7 | 8 | #ifndef GPS_FMT_H_ 9 | #define GPS_FMT_H_ 10 | 11 | #include "./type.h" 12 | 13 | typedef struct GPS_basic{ 14 | BYTE SID ; 15 | UQUAD TOW ; //6 16 | UBYTE ATF ; 17 | UBYTE ASF ; 18 | UWORD WN ; 19 | UBYTE URA ; 20 | UBYTE SVH ; 21 | UWORD IODC; 22 | DOUB TGD ; //-31 23 | QUAD toc ; //+4 24 | DOUB af2 ; //-55 25 | DOUB af1 ; //-43 26 | DOUB af0 ; //-31 27 | UBYTE IOD1; 28 | DOUB Crs ; //-5 29 | DOUB dn ; //-43 divide pi 30 | DOUB M0 ; //-31 divide pi 31 | DOUB Cuc ; //-29 32 | DOUB e ; //-33 33 | DOUB Cus ; //-29 34 | DOUB srA ; //-19 35 | UQUAD toe ; //+4 36 | DOUB Cic ; //-29 37 | DOUB Omge; //-31 divide pi 38 | DOUB Cis ; //-29 39 | DOUB i0 ; //-31 divide pi 40 | DOUB Crc ; //-5 41 | DOUB omg ; //-31 divide pi 42 | DOUB Omgd; //-43 divide pi 43 | UBYTE IOD2; 44 | DOUB IDOT; //-43 divide pi 45 | }GPS_Bsc; 46 | 47 | #endif /* GPS_FMT_H_ */ 48 | -------------------------------------------------------------------------------- /GPS_BD2_source_v1.2/src/frm.c: -------------------------------------------------------------------------------- 1 | /* 2 | * frm.c 3 | * 4 | * Created on: 2013-11-24 5 | * Author: whc 6 | */ 7 | #include 8 | 9 | #include "../inc/ichnl.h" 10 | #include "../inc/ioc.h" 11 | 12 | void read_data(FILE *fp,BYTE bit[32]) 13 | { 14 | QUAD i,navbit; 15 | fscanf(fp,"%d",&navbit); 16 | for(i=31;i>=0;i--) 17 | { 18 | bit[i] = (navbit>>i) & 0x01; 19 | bit[i] = bit[i]?-1:1; 20 | } 21 | } 22 | 23 | void frm_frame(ChPrms *chnlH,QUAD ID) 24 | { 25 | UQUAD old_phase; 26 | Nco *ncoH1,*ncoH2; 27 | 28 | ncoH1 = &chnlH->carNco; 29 | ncoH2 = &chnlH->cacNco; 30 | 31 | ncoH1->phs += ncoH1->fcw; 32 | 33 | old_phase = ncoH2->phs; 34 | ncoH2->phs += ncoH2->fcw; 35 | if(old_phase > ncoH2->phs) 36 | { 37 | chnlH->cacphs++; 38 | if(chnlH->cacphs >= chnlH->maxcaphs) 39 | { 40 | chnlH->cacphs -= chnlH->maxcaphs; 41 | chnlH->Cntms ++; 42 | if(chnlH->Cntms >= chnlH->Maxms) 43 | { 44 | chnlH->Cntms -= chnlH->Maxms; 45 | chnlH->CntNav --; 46 | if(chnlH->navflg == 1) 47 | { 48 | chnlH->navdata = chnlH->navbit[chnlH->CntNav]; 49 | } 50 | if(chnlH->CntNav == 0) 51 | { 52 | chnlH->navflg = 1; 53 | read_data(FP[ID],chnlH->navbit); 54 | chnlH->CntNav = 32; 55 | } 56 | } 57 | } 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /GPS_BD2_source_v1.2/inc/MEO_fmt.h: -------------------------------------------------------------------------------- 1 | /* 2 | * bd2_frmfmt.h 3 | * 4 | * Created on: Aug 29, 2013 5 | * Author: whc 6 | */ 7 | 8 | #ifndef MEO_FMT_H_ 9 | #define MEO_FMT_H_ 10 | 11 | #include "./type.h" 12 | 13 | typedef struct MEO_basic{ 14 | BYTE SID ; 15 | UQUAD SOW ; 16 | UBYTE SH1 ; 17 | UBYTE IOD ; 18 | UBYTE URA ; 19 | UQUAD WN ; 20 | UQUAD toc ; // + 3 21 | DOUB TG1 ; // 0.1 22 | DOUB TG2 ; // 0.1 23 | DOUB al0 ; // -30 24 | DOUB al1 ; // -27 multiply pi 25 | DOUB al2 ; // -24 multiply pi * pi 26 | DOUB al3 ; // -24 multiply pi * pi *pi 27 | DOUB bt0 ; // +11 28 | DOUB bt1 ; // +14 multiply pi 29 | DOUB bt2 ; // +16 multiply pi * pi 30 | DOUB bt3 ; // +16 multiply pi * pi *pi 31 | DOUB a2 ; // -33 32 | DOUB a0 ; // -50 33 | DOUB a1 ; // -66 34 | UBYTE AOD ; 35 | DOUB dn ; // -43 divide pi 36 | DOUB Cuc ; // -31 37 | DOUB M0 ; // -31 divide pi 38 | DOUB e ; // -33 39 | DOUB Cus ; // -31 40 | DOUB Crc ; // - 6 41 | DOUB Crs ; // - 6 42 | DOUB srA ; // -19 43 | UQUAD toe ; // + 3 44 | DOUB i0 ; // -31 divide pi 45 | DOUB Cic ; // -31 46 | DOUB Omg ; // -43 divide pi 47 | DOUB Cis ; // -31 48 | DOUB IDT ; // -43 divide pi 49 | DOUB Om0 ; // -31 divide pi 50 | DOUB omg ; // -31 divide pi 51 | } MEO_Bsc; 52 | 53 | #endif /* MEO_FMT_H_ */ 54 | -------------------------------------------------------------------------------- /GPS_BD2_source_v1.2/inc/GEO_fmt.h: -------------------------------------------------------------------------------- 1 | /* 2 | * fmt.h 3 | * 4 | * Created on: Oct 26, 2013 5 | * Author: whc 6 | */ 7 | 8 | #ifndef GEO_FMT_H_ 9 | #define GEO_FMT_H_ 10 | 11 | #include "type.h" 12 | 13 | typedef struct GEO_basic { 14 | BYTE SID ; 15 | UQUAD SOW ; 16 | UBYTE SH1 ; 17 | UBYTE IOD ; 18 | UBYTE URA ; 19 | UQUAD WN ; 20 | UQUAD toc ; // + 3 21 | DOUB TG1 ; // 0.1 22 | DOUB TG2 ; // 0.1 23 | UBYTE A1 ; // 2 24 | DOUB al0 ; // -30 25 | DOUB al1 ; // -27 multiply pi 26 | DOUB al2 ; // -24 multiply pi * pi 27 | DOUB al3 ; // -24 multiply pi * pi * pi 28 | DOUB bt0 ; // +11 29 | DOUB bt1 ; // +14 multiply pi 30 | DOUB bt2 ; // +16 multiply pi * pi 31 | DOUB bt3 ; // +17 multiply pi * pi * pi 32 | DOUB gm0 ; // + 6 33 | DOUB gm1 ; // +11 multiply pi * pi *pi 34 | DOUB gm2 ; // +14 multiply pi * pi *pi 35 | DOUB gm3 ; // +15 multiply pi * pi *pi 36 | UBYTE B ; // 7 multiply pi 37 | DOUB a0 ; // -33 38 | DOUB a1 ; // -50 39 | DOUB a2 ; // -66 40 | UBYTE AOD ; 41 | DOUB dn ; // -43 divide pi 42 | DOUB Cuc ; // -31 43 | DOUB M0 ; // -31 divide pi 44 | DOUB Cus ; // -31 45 | DOUB e ; // -33 46 | DOUB srA ; // -19 47 | DOUB Cic ; // -31 48 | DOUB Cis ; // -31 49 | UQUAD toe ; // + 3 50 | DOUB i0 ; // -31 divide pi 51 | DOUB Crc ; // - 6 52 | DOUB Crs ; // - 6 53 | DOUB Omg ; // -43 divide pi 54 | DOUB Om0 ; // -31 divide pi 55 | DOUB omg ; // -31 divide pi 56 | DOUB IDT ; // -43 divide pi 57 | } GEO_Bsc; 58 | 59 | #endif /* GEO_FMT_H_ */ 60 | -------------------------------------------------------------------------------- /GPS_BD2_source_v1.2/cfg.c: -------------------------------------------------------------------------------- 1 | /* 2 | * cfg.c 3 | * 4 | * Created on: 2011-12-15 5 | * Author: ah 6 | */ 7 | #include "./cfg.h" 8 | #include "./inc/sat_typ.h" 9 | 10 | 11 | 12 | const SatType SATTYPE[CHNLNUM] = { 13 | TP_GPS, //ch1 satellite type 14 | TP_GPS, //ch2 satellite type 15 | TP_GPS, //ch3 satellite type 16 | TP_GPS, //ch4 satellite type 17 | TP_GPS, //ch5 satellite type 18 | TP_GPS, 19 | TP_GPS, 20 | TP_GPS, 21 | TP_GPS, 22 | TP_GPS, 23 | TP_GPS, 24 | TP_GPS, 25 | TP_GPS, 26 | TP_GPS, 27 | TP_GPS, 28 | TP_GPS, 29 | TP_GPS, 30 | TP_GPS, 31 | TP_GPS, 32 | TP_GPS, 33 | TP_GPS, 34 | TP_GPS, 35 | TP_GPS, 36 | TP_GPS, 37 | TP_GPS, 38 | TP_GPS, 39 | TP_GPS, 40 | TP_GPS, 41 | TP_GPS, 42 | TP_GPS, 43 | TP_GPS, 44 | TP_GEO, 45 | TP_GEO, 46 | TP_GEO, 47 | TP_GEO, 48 | TP_MEO 49 | }; 50 | -------------------------------------------------------------------------------- /GPS_BD2_source_v1.2/src/MEO_loc.c: -------------------------------------------------------------------------------- 1 | /* 2 | * MEO_loc.c 3 | * 4 | * Created on: 2013-11-18 5 | * Author: whc 6 | */ 7 | #include 8 | 9 | #include "../inc/CGS.h" 10 | #include "../inc/iloc.h" 11 | #include "../inc/MEO_fmt.h" 12 | 13 | 14 | void MEO_get_satLoc(MEO_Bsc bsc,LDOUB tsnd,Sat_Loc *loc) 15 | { 16 | LDOUB A,n,M,E,v,u,r,i,x,y,n0,tk,v1,v2,du,dr,di,phi,OMG; 17 | 18 | LDOUB e,dn,i0,M0,srA,toe,omg,Cus,Cuc,Crs,Crc,Cis,Cic,Omg,idot,Omg0; 19 | 20 | // get parameters from Basic navigation information 21 | e = bsc.e ; dn = bsc.dn ; 22 | i0 = bsc.i0 ; M0 = bsc.M0 ; 23 | srA = bsc.srA ; toe = bsc.toe ; 24 | omg = bsc.omg ; Cus = bsc.Cus ; 25 | Cuc = bsc.Cuc ; Crs = bsc.Crs ; 26 | Crc = bsc.Crc ; Cis = bsc.Cis ; 27 | Cic = bsc.Cic ; Omg = bsc.Omg ; 28 | idot = bsc.IDT ; Omg0 = bsc.Om0 ; 29 | 30 | // temporary parameters 31 | A = srA * srA ; n0 = sqrt(MU/(A*A*A)) ; 32 | tk = tsnd - toe ; n = n0 + dn ; 33 | tk = ( tk > +302400 ) ? ( tk - 604800 ) : 34 | ( tk < -302400 ) ? ( tk + 604800 ) : tk; 35 | M = M0 + n*tk ; E = get_Ek(e,M) ; 36 | loc->Ek = E; 37 | 38 | v1 = asin((sqrt(1-e*e)*sin(E))/(1-e*cos(E))); 39 | v2 = acos((cos(E)-e)/(1-e*cos(E))) ; 40 | v = ( v1 > 0 ) ? v2 : -v2 ; 41 | 42 | phi = v + omg; 43 | du = Cus*sin(2*phi) + Cuc*cos(2*phi); 44 | dr = Crs*sin(2*phi) + Crc*cos(2*phi); 45 | di = Cis*sin(2*phi) + Cic*cos(2*phi); 46 | 47 | u = phi + du ; 48 | r = A*(1-e*cos(E)) + dr ; 49 | i = i0 + idot * tk + di ; 50 | 51 | x = r * cos(u); 52 | y = r * sin(u); 53 | 54 | OMG = Omg0 + (Omg-OMGE)*tk - OMGE*toe; 55 | 56 | loc->Z = y*sin(i); 57 | loc->Y = x*sin(OMG) + y*cos(i)*cos(OMG); 58 | loc->X = x*cos(OMG) - y*cos(i)*sin(OMG); 59 | } 60 | -------------------------------------------------------------------------------- /GPS_BD2_source_v1.2/src/GPS_loc.c: -------------------------------------------------------------------------------- 1 | /* 2 | * GPS_loc.c 3 | * 4 | * Created on: 2013-12-22 5 | * Author: whc 6 | */ 7 | 8 | #include 9 | 10 | #include "../inc/CGS.h" 11 | #include "../inc/iloc.h" 12 | #include "../inc/GPS_fmt.h" 13 | 14 | 15 | void GPS_get_satLoc(GPS_Bsc bsc,LDOUB tsnd,Sat_Loc *loc) 16 | { 17 | LDOUB A,n,M,E,v,u,r,i,x,y,n0,tk,v1,v2,du,dr,di,phi,OMG; 18 | 19 | LDOUB e,dn,i0,M0,srA,toe,omg,Cus,Cuc,Crs,Crc,Cis,Cic,Omg,idot,Omg0; 20 | 21 | // get parameters from Basic navigation information 22 | e = bsc.e ; dn = bsc.dn ; 23 | i0 = bsc.i0 ; M0 = bsc.M0 ; 24 | srA = bsc.srA ; toe = bsc.toe ; 25 | omg = bsc.omg ; Cus = bsc.Cus ; 26 | Cuc = bsc.Cuc ; Crs = bsc.Crs ; 27 | Crc = bsc.Crc ; Cis = bsc.Cis ; 28 | Cic = bsc.Cic ; Omg = bsc.Omgd ; 29 | idot = bsc.IDOT ; Omg0 = bsc.Omge ; 30 | 31 | // temporary parameters 32 | A = srA * srA ; n0 = sqrt(MU_G/(A*A*A)) ; 33 | tk = tsnd - toe ; n = n0 + dn ; 34 | tk = ( tk > +302400 ) ? ( tk - 604800 ) : 35 | ( tk < -302400 ) ? ( tk + 604800 ) : tk; 36 | M = M0 + n*tk ; E = get_Ek(e,M) ; 37 | loc->Ek = E; 38 | 39 | v1 = asin((sqrt(1-e*e)*sin(E))/(1-e*cos(E))); 40 | v2 = acos((cos(E)-e)/(1-e*cos(E))) ; 41 | v = ( v1 > 0 ) ? v2 : -v2 ; 42 | 43 | phi = v + omg; 44 | du = Cus*sin(2*phi) + Cuc*cos(2*phi); 45 | dr = Crs*sin(2*phi) + Crc*cos(2*phi); 46 | di = Cis*sin(2*phi) + Cic*cos(2*phi); 47 | 48 | u = phi + du ; 49 | r = A*(1-e*cos(E)) + dr ; 50 | i = i0 + idot * tk + di ; 51 | 52 | x = r * cos(u); 53 | y = r * sin(u); 54 | 55 | OMG = Omg0 + (Omg-OMGE_G)*tk - OMGE_G*toe; 56 | 57 | loc->Z = y*sin(i); 58 | loc->Y = x*sin(OMG) + y*cos(i)*cos(OMG); 59 | loc->X = x*cos(OMG) - y*cos(i)*sin(OMG); 60 | } 61 | -------------------------------------------------------------------------------- /GPS_BD2_source_v1.2/src/GEO_loc.c: -------------------------------------------------------------------------------- 1 | /* 2 | * GEO_loc.c 3 | * 4 | * Created on: 2013-11-21 5 | * Author: whc 6 | */ 7 | #define _USE_MATH_DEFINES 8 | #include 9 | #include "../inc/CGS.h" 10 | #include "../inc/iloc.h" 11 | #include "../inc/GEO_fmt.h" 12 | 13 | void GEO_get_satLoc(GEO_Bsc bsc,LDOUB tsnd,Sat_Loc *loc) 14 | { 15 | LDOUB A, n, M, E, v, u, r, i, x, y, n0, tk, v1, v2, du, dr, di, phi, OMG, 16 | xk, yk, zk,theta; 17 | 18 | LDOUB e,dn,i0,M0,srA,toe,omg,Cus,Cuc,Crs,Crc,Cis,Cic,Omg,idot,Omg0; 19 | 20 | // get parameters from Basic navigation information 21 | e = bsc.e ; dn = bsc.dn ; 22 | i0 = bsc.i0 ; M0 = bsc.M0 ; 23 | srA = bsc.srA ; toe = bsc.toe ; 24 | omg = bsc.omg ; Cus = bsc.Cus ; 25 | Cuc = bsc.Cuc ; Crs = bsc.Crs ; 26 | Crc = bsc.Crc ; Cis = bsc.Cis ; 27 | Cic = bsc.Cic ; Omg = bsc.Omg ; 28 | idot = bsc.IDT ; Omg0 = bsc.Om0 ; 29 | 30 | // temporary parameters 31 | A = srA * srA; 32 | n0 = sqrt(MU / (A * A * A)); 33 | tk = tsnd - toe; 34 | n = n0 + dn; 35 | tk = (tk > +302400) ? (tk - 604800) : (tk < -302400) ? (tk + 604800) : tk; 36 | M = M0 + n * tk; 37 | E = get_Ek(e, M); 38 | loc->Ek = E; 39 | 40 | v1 = asin((sqrt(1 - e * e) * sin(E)) / (1 - e * cos(E))); 41 | v2 = acos((cos(E) - e) / (1 - e * cos(E))); 42 | v = (v1 > 0) ? v2 : -v2; 43 | 44 | phi = v + omg; 45 | du = Cus * sin(2 * phi) + Cuc * cos(2 * phi); 46 | dr = Crs * sin(2 * phi) + Crc * cos(2 * phi); 47 | di = Cis * sin(2 * phi) + Cic * cos(2 * phi); 48 | 49 | u = phi + du; 50 | r = A * (1 - e * cos(E)) + dr; 51 | i = i0 + idot * tk + di; 52 | 53 | x = r * cos(u); 54 | y = r * sin(u); 55 | 56 | OMG = Omg0 + Omg * tk - OMGE * toe; 57 | zk = y * sin(i); 58 | yk = x * sin(OMG) + y * cos(i) * cos(OMG); 59 | xk = x * cos(OMG) - y * cos(i) * sin(OMG); 60 | 61 | theta = -5.0 / 180 * M_PI; 62 | 63 | loc->X = xk * cos(OMGE * tk) + yk * sin(OMGE * tk) * cos(theta) 64 | + zk * sin(OMGE * tk) * sin(theta); 65 | loc->Y = -xk * sin(OMGE * tk) + yk * cos(OMGE * tk) * cos(theta) 66 | + zk * cos(OMGE * tk) * sin(theta); 67 | loc->Z = -yk * sin(theta) + zk * cos(theta); 68 | } 69 | -------------------------------------------------------------------------------- /GPS_BD2_source_v1.2/src/ioc.c: -------------------------------------------------------------------------------- 1 | /* 2 | * ioc.c 3 | * 4 | * Created on: 2013-11-17 5 | * Author: whc 6 | */ 7 | #include 8 | #include 9 | 10 | #include "../cfg.h" 11 | #include "../inc/ioc.h" 12 | #include "../inc/type.h" 13 | 14 | FILE *FP[IO_NM]; 15 | 16 | BYTE FILES_PATH[CHNLNUM][20] ={ 17 | "navbit/XXX_NOXX.txt", 18 | "navbit/XXX_NOXX.txt", 19 | "navbit/XXX_NOXX.txt", 20 | "navbit/XXX_NOXX.txt", 21 | "navbit/XXX_NOXX.txt", 22 | "navbit/XXX_NOXX.txt", 23 | "navbit/XXX_NOXX.txt", 24 | "navbit/XXX_NOXX.txt", 25 | "navbit/XXX_NOXX.txt", 26 | "navbit/XXX_NOXX.txt", 27 | "navbit/XXX_NOXX.txt", 28 | "navbit/XXX_NOXX.txt", 29 | "navbit/XXX_NOXX.txt", 30 | "navbit/XXX_NOXX.txt", 31 | "navbit/XXX_NOXX.txt", 32 | "navbit/XXX_NOXX.txt", 33 | "navbit/XXX_NOXX.txt", 34 | "navbit/XXX_NOXX.txt", 35 | "navbit/XXX_NOXX.txt", 36 | "navbit/XXX_NOXX.txt", 37 | "navbit/XXX_NOXX.txt", 38 | "navbit/XXX_NOXX.txt", 39 | "navbit/XXX_NOXX.txt", 40 | "navbit/XXX_NOXX.txt", 41 | "navbit/XXX_NOXX.txt", 42 | "navbit/XXX_NOXX.txt", 43 | "navbit/XXX_NOXX.txt", 44 | "navbit/XXX_NOXX.txt", 45 | "navbit/XXX_NOXX.txt", 46 | "navbit/XXX_NOXX.txt", 47 | "navbit/XXX_NOXX.txt", 48 | "navbit/XXX_NOXX.txt", 49 | "navbit/XXX_NOXX.txt", 50 | "navbit/XXX_NOXX.txt", 51 | "navbit/XXX_NOXX.txt", 52 | "navbit/XXX_NOXX.txt" 53 | }; 54 | 55 | void open(SrcSys *sysH) 56 | { 57 | QUAD i; 58 | 59 | for(i=0;iSatNM;i++) 60 | { 61 | if(sysH->chnls[i].sattype == TP_GPS) 62 | { 63 | FILES_PATH[i][7 ] = 'G'; 64 | FILES_PATH[i][8 ] = 'P'; 65 | FILES_PATH[i][9 ] = 'S'; 66 | FILES_PATH[i][13] = (QUAD)(sysH->chnls[i].satID / 10) +'0'; 67 | FILES_PATH[i][14] = (QUAD)(sysH->chnls[i].satID % 10) +'0'; 68 | 69 | FP[i] = fopen(FILES_PATH[i],"r"); 70 | if( FP[i] == NULL ){ 71 | printf("can't open files"); 72 | exit( 0 ); 73 | } 74 | } 75 | else 76 | { 77 | FILES_PATH[i][7 ] = 'B'; 78 | FILES_PATH[i][8 ] = 'D'; 79 | FILES_PATH[i][9 ] = '2'; 80 | FILES_PATH[i][13] = (QUAD)(sysH->chnls[i].satID / 10) +'0'; 81 | FILES_PATH[i][14] = (QUAD)(sysH->chnls[i].satID % 10) +'0'; 82 | 83 | FP[i] = fopen(FILES_PATH[i],"r"); 84 | if( FP[i] == NULL ){ 85 | printf("can't open files"); 86 | exit( 0 ); 87 | } 88 | } 89 | } 90 | 91 | FP[I_WGN] = fopen("wgn.txt","r"); 92 | if( FP[I_WGN] == NULL ){ 93 | printf("can't open wgn.txt"); 94 | exit( 0 ); 95 | } 96 | 97 | FP[O_DAT] = fopen("E:/luoxuan.bin","wb"); 98 | if( FP[O_DAT] == NULL ){ 99 | printf("can't creat data.txt"); 100 | exit( 0 ); 101 | } 102 | setbuf(FP[O_DAT],NULL); 103 | } 104 | 105 | void close() 106 | { 107 | fclose(FP[O_DAT]);fflush(FP[O_DAT]); 108 | } 109 | -------------------------------------------------------------------------------- /GPS_BD2_source_v1.2/src/FCW.c: -------------------------------------------------------------------------------- 1 | /* 2 | * FCW.c 3 | * 4 | * Created on: 2013-11-22 5 | * Author: whc 6 | */ 7 | #define _USE_MATH_DEFINES 8 | #include 9 | 10 | #include "../inc/CGS.h" 11 | #include "../inc/eph.h" 12 | #include "../inc/FCW.h" 13 | #include "../inc/iloc.h" 14 | #include "../inc/ioc.h" 15 | #include "../inc/frm.h" 16 | #include "../inc/init.h" 17 | #include "../inc/isrc.h" 18 | #include "../inc/ichnl.h" 19 | #include "../inc/GPS_loc.h" 20 | #include "../inc/GEO_loc.h" 21 | #include "../inc/MEO_loc.h" 22 | #include "../inc/LLA2CGS.h" 23 | 24 | void rota_modify(Sat_Loc *locH,DOUB dt) 25 | { 26 | DOUB x,y; 27 | x = locH->X; 28 | y = locH->Y; 29 | 30 | locH->X = x*cos(OMGE*dt) + y*sin(OMGE*dt); 31 | locH->Y = -x*sin(OMGE*dt) + y*cos(OMGE*dt); 32 | } 33 | 34 | DOUB GPS_clock_difference_correction(GPS_Bsc bsc,ChPrms chnl,DOUB dt) 35 | { 36 | DOUB e,srA,a0,a1,a2,Ek,TGD,toc,t,dts,dtr; 37 | 38 | a0 = bsc.af0; 39 | a1 = bsc.af1; 40 | a2 = bsc.af2; 41 | e = bsc.e; 42 | TGD= bsc.TGD; 43 | srA= bsc.srA; 44 | toc= bsc.toc; 45 | t = chnl.timer - dt; 46 | Ek = chnl.loc.Ek; 47 | 48 | dtr = Fe * e * srA * sin(Ek); 49 | dts = a0 + a1 * (t-toc) + a2 * (t-toc) * (t-toc) - TGD + dtr; 50 | 51 | return (dt - dts); 52 | } 53 | 54 | DOUB GEO_clock_difference_correction(GEO_Bsc bsc,ChPrms chnl,DOUB dt) 55 | { 56 | DOUB e,srA,a0,a1,a2,Ek,TG1,toc,t,dts,dtr; 57 | 58 | a0 = bsc.a0; 59 | a1 = bsc.a1; 60 | a2 = bsc.a2; 61 | e = bsc.e; 62 | TG1= bsc.TG1; 63 | srA= bsc.srA; 64 | toc= bsc.toc; 65 | t = chnl.timer - dt; 66 | Ek = chnl.loc.Ek; 67 | 68 | dtr = Fe * e * srA * sin(Ek); 69 | dts = a0 + a1 * (t-toc) + a2 * (t-toc) * (t-toc) - TG1 + dtr; 70 | 71 | return (dt - dts); 72 | } 73 | 74 | DOUB MEO_clock_difference_correction(MEO_Bsc bsc,ChPrms chnl,DOUB dt) 75 | { 76 | DOUB e,srA,a0,a1,a2,Ek,TG1,toc,t,dts,dtr; 77 | 78 | a0 = bsc.a0; 79 | a1 = bsc.a1; 80 | a2 = bsc.a2; 81 | e = bsc.e; 82 | TG1= bsc.TG1; 83 | srA= bsc.srA; 84 | toc= bsc.toc; 85 | t = chnl.timer - dt; 86 | Ek = chnl.loc.Ek; 87 | 88 | dtr = Fe * e * srA * sin(Ek); 89 | dts = a0 + a1 * (t-toc) + a2 * (t-toc) * (t-toc) - TG1 + dtr; 90 | 91 | return (dt - dts); 92 | } 93 | 94 | void GPS_get_initial_phase(ChPrms *chnlH,DOUB navbitlen) 95 | { 96 | DOUB dt,carrier_dely,cacode_dely; 97 | 98 | dt = -chnlH->loc.dt; 99 | 100 | carrier_dely = dt * GPS_CARFRQ; //carrier NCO initial phase 101 | chnlH->carNco.phs = (carrier_dely-floor(carrier_dely)) * pow(2,32); 102 | 103 | chnlH->CntNav = -floor(dt / navbitlen); //navigation bit dely at the beginning 104 | dt = dt + chnlH->CntNav * navbitlen; //modify the dely in one navigation 105 | chnlH->CntNav--; //(dt is large than 0,but small than navbitlen) 106 | 107 | chnlH->Cntms = (UQUAD)(dt*1000.0); //the cacode cycle in one navigation bit 108 | dt = dt - chnlH->Cntms/1000.0; 109 | 110 | cacode_dely = dt * GPS_CACFRQ; //cacode initial phase 111 | chnlH->cacphs = (UQUAD)cacode_dely; 112 | 113 | chnlH->cacNco.phs = (cacode_dely - (QUAD)cacode_dely) * pow(2,32); //cacode NCO initial phase 114 | } 115 | 116 | void BD2_get_initial_phase(ChPrms *chnlH,DOUB navbitlen) 117 | { 118 | DOUB dt,carrier_dely,cacode_dely; 119 | 120 | dt = -chnlH->loc.dt; 121 | 122 | carrier_dely = dt * BD2_CARFRQ; //carrier NCO initial phase 123 | chnlH->carNco.phs = (carrier_dely-floor(carrier_dely)) * pow(2,32); 124 | 125 | chnlH->CntNav = -floor(dt / navbitlen); //navigation bit dely at the beginning 126 | dt = dt + chnlH->CntNav * navbitlen; //modify the dely in one navigation 127 | chnlH->CntNav--; //(dt is large than 0,but small than navbitlen) 128 | 129 | chnlH->Cntms = (UQUAD)(dt*1000.0); //NH phase for GEO,but for MEO ,it must be 0 or 1 130 | dt = dt - chnlH->Cntms/1000.0; 131 | 132 | cacode_dely = dt * BD2_CACFRQ; //cacode initial phase 133 | chnlH->cacphs = (UQUAD)cacode_dely; 134 | 135 | chnlH->cacNco.phs = (cacode_dely - (QUAD)cacode_dely) * pow(2,32); //cacode NCO initial phase 136 | } 137 | 138 | void get_FCW(ChPrms *chnlH,DOUB dt) 139 | { 140 | DOUB early_dt; 141 | DOUB car_fcw,cac_fcw; 142 | 143 | early_dt = chnlH->loc.dt; 144 | // early_dt = dt; 145 | 146 | if(chnlH->sattype == TP_GPS) 147 | { 148 | car_fcw = chnlH->carNco.fo/chnlH->carNco.fs + (early_dt-dt)*GPS_CARFRQ/chnlH->carNco.fs/INTEVAL; 149 | cac_fcw = chnlH->cacNco.fo/chnlH->cacNco.fs + (early_dt-dt)*GPS_CACFRQ/chnlH->carNco.fs/INTEVAL; 150 | } 151 | else 152 | { 153 | car_fcw = chnlH->carNco.fo/chnlH->carNco.fs + (early_dt-dt)*BD2_CARFRQ/chnlH->carNco.fs/INTEVAL; 154 | cac_fcw = chnlH->cacNco.fo/chnlH->cacNco.fs + (early_dt-dt)*BD2_CACFRQ/chnlH->carNco.fs/INTEVAL; 155 | } 156 | 157 | 158 | chnlH->carNco.fcw = (UQUAD)(car_fcw*pow(2,32)); 159 | chnlH->cacNco.fcw = (UQUAD)(cac_fcw*pow(2,32)); 160 | 161 | chnlH->carNco.dphs = (UQUAD)((car_fcw*pow(2,32)-chnlH->carNco.fcw)*INTEVAL*chnlH->carNco.fs); 162 | chnlH->cacNco.dphs = (UQUAD)((cac_fcw*pow(2,32)-chnlH->cacNco.fcw)*INTEVAL*chnlH->cacNco.fs); 163 | } 164 | 165 | //void ref_loc(User_Loc *locH,QUAD i) 166 | //{ 167 | // locH->B += 180.0*100*INTEVAL / ((MA+locH->H)*M_PI)*sin(2*M_PI*i/T/1000); 168 | // locH->L += 180.0*100*INTEVAL / ((MA+locH->H)*M_PI)*cos(2*M_PI*i/T/1000); 169 | // LLA2CGS(locH); 170 | //} 171 | 172 | void ref_loc(User_Loc *locH,QUAD i) 173 | { 174 | DOUB N,vx,vy,pow_e; 175 | //locH->X = 100 * sin(2*M_PI*i/T/1000); 176 | //locH->Y = 100 * cos(2*M_PI*i/T/1000); 177 | //locH->Z = locH->Z + INTEVAL * 10; 178 | vx = sin(2*M_PI*i/T/1000); 179 | vy = cos(2*M_PI*i/T/1000); 180 | locH->L = locH->L + vx*0.00001; 181 | locH->B = locH->B + vy*0.00001; 182 | pow_e = F*(2-F); 183 | N=MA/sqrt(1-pow_e*pow(sin(locH->B),2)); 184 | locH->X=(N+locH->H)*cos(locH->B)*cos(locH->L); 185 | locH->Y=(N+locH->H)*cos(locH->B)*sin(locH->L); 186 | locH->Z=(N*(1-pow_e)+locH->H)*sin(locH->B); 187 | } 188 | 189 | void adjust_FCW(User_Loc *locH,SrcSys *sysH) 190 | { 191 | QUAD i; 192 | DOUB dt; 193 | UQUAD old_phase; 194 | 195 | for(i=0;iSatNM;i++) 196 | { 197 | old_phase = sysH->chnls[i].cacNco.phs; 198 | sysH->chnls[i].carNco.phs += sysH->chnls[i].carNco.dphs; 199 | sysH->chnls[i].cacNco.phs += sysH->chnls[i].cacNco.dphs; 200 | 201 | if(old_phase > sysH->chnls[i].cacNco.phs) 202 | { 203 | sysH->chnls[i].cacphs++; 204 | if(sysH->chnls[i].cacphs >= sysH->chnls[i].maxcaphs) 205 | { 206 | sysH->chnls[i].cacphs -= sysH->chnls[i].maxcaphs; 207 | sysH->chnls[i].Cntms ++; 208 | if(sysH->chnls[i].Cntms >= sysH->chnls[i].Maxms) 209 | { 210 | sysH->chnls[i].Cntms -= sysH->chnls[i].Maxms; 211 | sysH->chnls[i].CntNav --; 212 | if(sysH->chnls[i].navflg == 1) 213 | { 214 | sysH->chnls[i].navdata = sysH->chnls[i].navbit[sysH->chnls[i].CntNav]; 215 | } 216 | if(sysH->chnls[i].CntNav == 0) 217 | { 218 | sysH->chnls[i].navflg = 1; 219 | read_data(FP[i],sysH->chnls[i].navbit); 220 | sysH->chnls[i].CntNav = 32; 221 | } 222 | } 223 | } 224 | } 225 | 226 | if(sysH->chnls[i].sattype == TP_GPS) 227 | { 228 | 229 | //last 2ms satellite location and transport time 230 | sysH->chnls[i].timer += INTEVAL; 231 | GPS_get_satLoc(SAT_EPH[i].gps_eph,sysH->chnls[i].timer,&sysH->chnls[i].loc); 232 | dt = GET_DT(locH,sysH->chnls[i].loc); 233 | GPS_get_satLoc(SAT_EPH[i].gps_eph,sysH->chnls[i].timer-dt,&sysH->chnls[i].loc); 234 | rota_modify(&sysH->chnls[i].loc,dt); 235 | dt = GET_DT(locH,sysH->chnls[i].loc); 236 | dt = GPS_clock_difference_correction(SAT_EPH[i].gps_eph,sysH->chnls[i],dt); 237 | 238 | get_FCW(&sysH->chnls[i],dt); 239 | sysH->chnls[i].loc.dt = dt; 240 | } 241 | else if(sysH->chnls[i].sattype == TP_GEO) 242 | { 243 | //last 2ms satellite location and transport time 244 | sysH->chnls[i].timer += INTEVAL; 245 | GEO_get_satLoc(SAT_EPH[i].geo_eph,sysH->chnls[i].timer,&sysH->chnls[i].loc); 246 | dt = GET_DT(locH,sysH->chnls[i].loc); 247 | GEO_get_satLoc(SAT_EPH[i].geo_eph,sysH->chnls[i].timer-dt,&sysH->chnls[i].loc); 248 | rota_modify(&sysH->chnls[i].loc,dt); 249 | dt = GET_DT(locH,sysH->chnls[i].loc); 250 | dt = GEO_clock_difference_correction(SAT_EPH[i].geo_eph,sysH->chnls[i],dt); 251 | 252 | get_FCW(&sysH->chnls[i],dt); 253 | sysH->chnls[i].loc.dt = dt; 254 | } 255 | else 256 | { 257 | //last 2ms satellite location and transport time 258 | sysH->chnls[i].timer += INTEVAL; 259 | MEO_get_satLoc(SAT_EPH[i].meo_eph,sysH->chnls[i].timer,&sysH->chnls[i].loc); 260 | dt = GET_DT(locH,sysH->chnls[i].loc); 261 | MEO_get_satLoc(SAT_EPH[i].meo_eph,sysH->chnls[i].timer-dt,&sysH->chnls[i].loc); 262 | rota_modify(&sysH->chnls[i].loc,dt); 263 | dt = GET_DT(locH,sysH->chnls[i].loc); 264 | dt = MEO_clock_difference_correction(SAT_EPH[i].meo_eph,sysH->chnls[i],dt); 265 | 266 | get_FCW(&sysH->chnls[i],dt); 267 | sysH->chnls[i].loc.dt = dt; 268 | } 269 | } 270 | } 271 | -------------------------------------------------------------------------------- /GPS_BD2_source_v1.2/src/eph.c: -------------------------------------------------------------------------------- 1 | /* 2 | * eph.c 3 | * 4 | * Created on: 2013-11-18 5 | * Author: whc 6 | */ 7 | #include 8 | #include 9 | #include 10 | 11 | #include "../inc/GPS_fmt.h" 12 | #include "../inc/GEO_fmt.h" 13 | #include "../inc/MEO_fmt.h" 14 | 15 | //sow=518490 for GEO,it's the beginning of a new sunframe 1 16 | const GEO_Bsc GEO_EPH[4] ={ 17 | { 18 | 1, //SID 19 | 518460, //SOW 20 | 0, //SH1 21 | 1, //IOD 22 | 0, //URA 23 | 87, //WN 24 | 518400, //toc 25 | 0.0, //TG1 26 | 0.0, //TG2 27 | 0, //A1 28 | 6.5192580223e-009, //a10 29 | 4.7431869236e-009, //a11 30 | -6.0392131592e-009, //a12 31 | -3.8446825067e-009, //a13 32 | 77824, //bt0 33 | 1.0430378350e+004, //bt1 34 | -6.6401850912e+003, //bt2 35 | -8.4545462425e+003, //bt3 36 | 0.0, //gm0 37 | 0.0, //gm1 38 | 0.0, //gm2 39 | 0.0, //gm3 40 | 0, //B 41 | 3.1604373362e-004, //a0 42 | 0.0, //a1 43 | 0.0, //a2 44 | 1, //AOD 45 | 5.3102211920e-009, //dn 46 | -1.9557774067e-008, //Cuc 47 | 1.0465597443e-001, //M0 48 | -2.7939677238e-009, //Cus 49 | 9.9991320167e-004, //e 50 | 6.4933940163e+003, //srA 51 | 1.9092112780e-008, //Cic 52 | -6.1932951212e-008, //Cis 53 | 518400, //toe 54 | 8.7779138502e-002, //i0 55 | -5.6250000000e-001, //Crc 56 | -9.3750000000e-002, //Crs 57 | 1.0857595120e-010, //Omg 58 | -3.0438550294e+000, //Om0 59 | -7.9451893243e-001, //omg 60 | 5.0716398256e-011 //IDT 61 | }, 62 | { 63 | 2, //SID 64 | 518460, //SOW 65 | 0, //SH1 66 | 1, //IOD 67 | 0, //URA 68 | 87, //WN 69 | 518400, //toc 70 | 0.0, //TG1 71 | 0.0, //TG2 72 | 0, //A1 73 | 6.5192580223e-009, //a10 74 | 4.7431869236e-009, //a11 75 | -6.0392131592e-009, //a12 76 | -3.8446825067e-009, //a13 77 | 77824, //bt0 78 | 1.0430378350e+004, //bt1 79 | -6.6401850912e+003, //bt2 80 | -8.4545462425e+003, //bt3 81 | 0.0, //gm0 82 | 0.0, //gm1 83 | 0.0, //gm2 84 | 0.0, //gm3 85 | 0, //B 86 | 2.1304178517e-004, //a0 87 | 0.0, //a1 88 | 0.0, //a2 89 | 1, //AOD 90 | 6.3213347375e-009, //dn 91 | 9.7788870335e-009, //Cuc 92 | 1.0465576669e-001, //M0 93 | 2.6077032089e-008, //Cus 94 | 9.9989888258e-004, //e 95 | 6.4933939590e+003, //srA 96 | 3.9581209421e-008, //Cic 97 | 6.1467289925e-008, //Cis 98 | 518400, //toe 99 | 8.7777476627e-002, //i0 100 | 7.8125000000e-002, //Crc 101 | 5.7812500000e-001, //Crs 102 | -9.0682348712e-010, //Omg 103 | -3.0438419100e+000, //Om0 104 | -1.8417294309e+000, //omg 105 | 2.7858303267e-011 //IDT 106 | }, 107 | { 108 | 3, //SID 109 | 518460, //SOW 110 | 0, //SH1 111 | 1, //IOD 112 | 0, //URA 113 | 87, //WN 114 | 518400, //toc 115 | 0.0, //TG1 116 | 0.0, //TG2 117 | 0, //A1 118 | 6.5192580223e-009, //a10 119 | 4.7431869236e-009, //a11 120 | -6.0392131592e-009, //a12 121 | -3.8446825067e-009, //a13 122 | 77824, //bt0 123 | 1.0430378350e+004, //bt1 124 | -6.6401850912e+003, //bt2 125 | -8.4545462425e+003, //bt3 126 | 0.0, //gm0 127 | 0.0, //gm1 128 | 0.0, //gm2 129 | 0.0, //gm3 130 | 0, //B 131 | 2.1304178517e-004, //a0 132 | 0.0, //a1 133 | 0.0, //a2 134 | 1, //AOD 135 | 5.8802449358e-009, //dn 136 | -1.5366822481e-008, //Cuc 137 | 1.0465626262e-001, //M0 138 | 1.8626451492e-008, //Cus 139 | 9.9990412127e-004, //e 140 | 6.4933939819e+003, //srA 141 | -7.1246176958e-008, //Cic 142 | 9.3132257462e-009, //Cis 143 | 518400, //toe 144 | 8.7777960853e-002, //i0 145 | -4.2187500000e-001, //Crc 146 | 3.9062500000e-001, //Crs 147 | -4.6394789672e-010, //Omg 148 | -3.0438540493e+000, //Om0 149 | -1.3093924252e+000, //omg 150 | 6.5002707624e-011 //IDT 151 | }, 152 | { 153 | 4, //SID 154 | 518460, //SOW 155 | 0, //SH1 156 | 1, //IOD 157 | 0, //URA 158 | 87, //WN 159 | 518400, //toc 160 | 0.0, //TG1 161 | 0.0, //TG2 162 | 0, //A1 163 | 6.5192580223e-009, //a10 164 | 4.7431869236e-009, //a11 165 | -6.0392131592e-009, //a12 166 | -3.8446825067e-009, //a13 167 | 77824, //bt0 168 | 1.0430378350e+004, //bt1 169 | -6.6401850912e+003, //bt2 170 | -8.4545462425e+003, //bt3 171 | 0.0, //gm0 172 | 0.0, //gm1 173 | 0.0, //gm2 174 | 0.0, //gm3 175 | 0, //B 176 | 1.6043777578e-005, //a0 177 | 0.0, //a1 178 | 0.0, //a2 179 | 1, //AOD 180 | 5.1352139023e-009, //dn 181 | -1.2572854757e-008, //Cuc 182 | 1.0465894415e-001, //M0 183 | -1.2107193470e-008, //Cus 184 | 9.9991145544e-004, //e 185 | 6.4933940144e+003, //srA 186 | 5.9604644775e-008, //Cic 187 | 9.3132257462e-009, //Cis 188 | 518400, //toe 189 | 8.7779700263e-002, //i0 190 | -4.3750000000e-001, //Crc 191 | -4.3750000000e-001, //Crs 192 | 2.8465471415e-010, //Omg 193 | -3.0438480835e+000, //Om0 194 | -4.4546289561e-001, //omg 195 | 1.7500728976e-011 //IDT 196 | } 197 | }; 198 | 199 | const MEO_Bsc MEO_EPH[1] = {{ 200 | 6, //SID 201 | 518460, //SOW 202 | 0, //SH1 203 | 1, //IOD 204 | 0, //URA 205 | 87, //WN 206 | 518400, //toc 207 | 0.0, //TG1 208 | 0.0, //TG2 209 | 6.5192580223e-009, //a10 210 | 4.7431869236e-009, //a11 211 | -6.0392131592e-009, //a12 212 | -3.8446825067e-009, //a13 213 | 77824, //bt0 214 | 1.0430378350e+004, //bt1 215 | -6.6401850912e+003, //bt2 216 | -6.3409096818e+003, //bt3 217 | 0.0, //a2 218 | 1.6043777578e-005, //a0 219 | 0.0, //a1 220 | 1, //AOD 221 | 8.7753655292e-010, //dn 222 | -2.7753412724e-007, //Cuc 223 | 2.1959211763e+000, //M0 224 | 1.0000236798e-003, //e 225 | 6.2864273787e-008, //Cus 226 | -3.1250000000e-001, //Crc 227 | 5.0000000000e-001, //Crs 228 | 6.4933921318e+003, //srA 229 | 5.1840000000e+005, //toe 230 | 9.5935898360e-001, //i0 231 | -1.2107193470e-008, //Cic 232 | -1.7257861716e-009, //Omg 233 | 2.4493783712e-007, //Cis 234 | -1.3357699259e-010, //IDT 235 | -3.3689805236e-002, //Om0 236 | -5.6995288368e-005, //omg 237 | }}; 238 | //const GPS_Bsc GPS_EPH[1] = {{ 239 | // 13, //SID 240 | // 201606, //TOW 241 | // 0, //ATF 242 | // 1, //ASF 243 | // 571, //WN 244 | // 0, //URA 245 | // 0, //SVH 246 | // 47, //IODC 247 | // -8.8475644588470409e-009, //TGD 248 | // 360000, //toc 249 | // 0, //af2 250 | // 3.9790393202565602e-012, //af1 251 | // 7.5184274464845617e-005, //af0 252 | // 47, //IOD1 253 | // 45.9375, //Crs 254 | // 4.0780270090508933e-009, //dn 255 | // -0.56386718397152302, //M0 256 | // 2.3711472749710121e-006, //Cuc 257 | // 0.0053626035805791703, //e 258 | // 3.2875686883926442e-006, //Cus 259 | // 5153.7658176422119, //srA 260 | // 360000, //toe 261 | // 3.9115548133850157e-008, //Cic 262 | // 0.25766406851412194, //Omge 263 | // 4.8428773880004962e-008, //Cis 264 | // 0.98586162152797974, //i0 265 | // 329, //Crc 266 | // -2.1454180608623155, //omg 267 | // -8.1206954024163758e-009, //Omg 268 | // 47, //IOD2 269 | // -9.1075222220001575e-011, //IDOT 270 | // }}; 271 | const GPS_Bsc GPS_EPH[31] = { 272 | { 273 | 2, //SID 274 | 518460, //TOW 275 | 0, //ATF 276 | 1, //ASF 277 | 641, //WN 278 | 0, //URA 279 | 0, //SVH 280 | 0, //IODC 281 | 0.0, //TGD 282 | 201600, //toc 283 | 0, //af2 284 | 0.3637978807E-011, //af1 285 | 0.2994537354E-003, //af0 286 | 0, //IOD1 287 | 0.0, //Crs 288 | 0.0, //dn 289 | -0.2444908142E+001, //M0 290 | 0.0, //Cuc 291 | 0.9747505188E-002, //e 292 | 0.0, //Cus 293 | 5153.597656, //srA 294 | 589824, //toe 295 | 0.0, //Cic 296 | 0.2874727130E+001, //Omge 297 | 0.0, //Cis 298 | 0.9397754669, //i0 299 | 0.0, //Crc 300 | -3.136598229, //omg 301 | -0.8123606676E-008, //Omgd 302 | 0, //IOD2 303 | 0.0 //IDOT 304 | }, 305 | { 306 | 3, //SID 307 | 518460, //TOW 308 | 0, //ATF 309 | 1, //ASF 310 | 641, //WN 311 | 0, //URA 312 | 0, //SVH 313 | 0, //IODC 314 | 0.0, //TGD 315 | 201600, //toc 316 | 0, //af2 317 | 0.3637978807E-011, //af1 318 | 0.6284713745E-003, //af0 319 | 0, //IOD1 320 | 0.0, //Crs 321 | 0.0, //dn 322 | -0.2557083845E+001, //M0 323 | 0.0, //Cuc 324 | 0.1380777359E-001, //e 325 | 0.0, //Cus 326 | 5153.560547, //srA 327 | 589824, //toe 328 | 0.0, //Cic 329 | 0.1719913840E+001, //Omge 330 | 0.0, //Cis 331 | 0.9274616241, //i0 332 | 0.0, //Crc 333 | 1.053089738, //omg 334 | -0.8167262422E-008, //Omgd 335 | 0, //IOD2 336 | 0.0, //IDOT 337 | }, 338 | { 339 | 4, //SID 340 | 518460, //TOW 341 | 0, //ATF 342 | 1, //ASF 343 | 641, //WN 344 | 0, //URA 345 | 0, //SVH 346 | 0, //IODC 347 | 0.0, //TGD 348 | 201600, //toc 349 | 0, //af2 350 | 0.1091393642E-010, //af1 351 | 0.2069473267E-003, //af0 352 | 0, //IOD1 353 | 0.0, //Crs 354 | 0.0, //dn 355 | 0.5374141932E+000, //M0 356 | 0.0, //Cuc 357 | 0.9437561035E-002, //e 358 | 0.0, //Cus 359 | 5153.713379, //srA 360 | 589824, //toe 361 | 0.0, //Cic 362 | 0.2892387033E+001, //Omge 363 | 0.0, //Cis 364 | 0.9388999939, //i0 365 | 0.0, //Crc 366 | 0.665797114, //omg 367 | -0.8127244655E-008, //Omgd 368 | 0, //IOD2 369 | 0.0 //IDOT 370 | }, 371 | { 372 | 5, //SID 373 | 518460, //TOW 374 | 0, //ATF 375 | 1, //ASF 376 | 641, //WN 377 | 0, //URA 378 | 0, //SVH 379 | 0, //IODC 380 | 0.0, //TGD 381 | 201600, //toc 382 | 0, //af2 383 | -0.7275957614E-011, //af1 384 | -0.6008148193E-004, //af0 385 | 0, //IOD1 386 | 0.0, //Crs 387 | 0.0, //dn 388 | -0.7601069212E+000, //M0 389 | 0.0, //Cuc 390 | 0.1991748810E-002, //e 391 | 0.0, //Cus 392 | 5153.494629, //srA 393 | 589824, //toe 394 | 0.0, //Cic 395 | -0.2348082662E+001, //Omge 396 | 0.0, //Cis 397 | 0.9566364288, //i0 398 | 0.0, //Crc 399 | 0.169808626, //omg 400 | -0.8065399015E-008, //Omgd 401 | 0, //IOD2 402 | 0.0 //IDOT 403 | }, 404 | { 405 | 6, //SID 406 | 518460, //TOW 407 | 0, //ATF 408 | 1, //ASF 409 | 641, //WN 410 | 0, //URA 411 | 0, //SVH 412 | 0, //IODC 413 | 0.0, //TGD 414 | 201600, //toc 415 | 0, //af2 416 | -0.1455191523E-010, //af1 417 | 0.4367828369E-003, //af0 418 | 0, //IOD1 419 | 0.0, //Crs 420 | 0.0, //dn 421 | -0.4012011290E+000, //M0 422 | 0.0, //Cuc 423 | 0.6165027618E-002, //e 424 | 0.0, //Cus 425 | 5153.600098, //srA 426 | 589824, //toe 427 | 0.0, //Cic 428 | 0.1791853189E+001, //Omge 429 | 0.0, //Cis 430 | 0.9347248077, //i0 431 | 0.0, //Crc 432 | -0.922420979, //omg 433 | -0.8090864867E-008, //Omgd 434 | 0, //IOD2 435 | 0.0 //IDOT 436 | }, 437 | { 438 | 7, //SID 439 | 518460, //TOW 440 | 0, //ATF 441 | 1, //ASF 442 | 641, //WN 443 | 0, //URA 444 | 0, //SVH 445 | 0, //IODC 446 | 0.0, //TGD 447 | 201600, //toc 448 | 0, //af2 449 | 0.0, //af1 450 | -0.9536743164E-006, //af0 451 | 0, //IOD1 452 | 0.0, //Crs 453 | 0.0, //dn 454 | 0.2122774720E+001, //M0 455 | 0.0, //Cuc 456 | 0.4165172577E-002, //e 457 | 0.0, //Cus 458 | 5153.638672, //srA 459 | 589824, //toe 460 | 0.0, //Cic 461 | -0.2450546026E+000, //Omge 462 | 0.0, //Cis 463 | 0.9732704163, //i0 464 | 0.0, //Crc 465 | 3.139667273, //omg 466 | -0.7981725503E-008, //Omgd 467 | 0, //IOD2 468 | 0.0 //IDOT 469 | }, 470 | { 471 | 8, //SID 472 | 518460, //TOW 473 | 0, //ATF 474 | 1, //ASF 475 | 641, //WN 476 | 0, //URA 477 | 0, //SVH 478 | 0, //IODC 479 | 0.0, //TGD 480 | 201600, //toc 481 | 0, //af2 482 | 0.0, //af1 483 | 0.6675720215E-005, //af0 484 | 0, //IOD1 485 | 0.0, //Crs 486 | 0.0, //dn 487 | 0.1555524707E+001, //M0 488 | 0.0, //Cuc 489 | 0.1153230667E-001, //e 490 | 0.0, //Cus 491 | 5153.609375, //srA 492 | 589824, //toe 493 | 0.0, //Cic 494 | -0.1739319563E+000, //Omge 495 | 0.0, //Cis 496 | 0.9948005676, //i0 497 | 0.0, //Crc 498 | -3.122617841, //omg 499 | -0.7756170817E-008, //Omgd 500 | 0, //IOD2 501 | 0.0 //IDOT 502 | }, 503 | { 504 | 9, //SID 505 | 518460, //TOW 506 | 0, //ATF 507 | 1, //ASF 508 | 641, //WN 509 | 0, //URA 510 | 0, //SVH 511 | 0, //IODC 512 | 0.0, //TGD 513 | 201600, //toc 514 | 0, //af2 515 | 0.3637978807E-011, //af1 516 | 0.3910064697E-004, //af0 517 | 0, //IOD1 518 | 0.0, //Crs 519 | 0.0, //dn 520 | 0.1434115171E+001, //M0 521 | 0.0, //Cuc 522 | 0.1696825027E-001, //e 523 | 0.0, //Cus 524 | 5153.653320, //srA 525 | 589824, //toe 526 | 0.0, //Cic 527 | -0.2750593424E+000, //Omge 528 | 0.0, //Cis 529 | 0.9822769165, //i0 530 | 0.0, //Crc 531 | 1.553143144, //omg 532 | -0.7981725503E-008, //Omgd 533 | 0, //IOD2 534 | 0.0 //IDOT 535 | }, 536 | { 537 | 10, //SID 538 | 518460, //TOW 539 | 0, //ATF 540 | 1, //ASF 541 | 641, //WN 542 | 0, //URA 543 | 0, //SVH 544 | 0, //IODC 545 | 0.0, //TGD 546 | 201600, //toc 547 | 0, //af2 548 | 0.0, //af1 549 | -0.5626678467E-004, //af0 550 | 0, //IOD1 551 | 0.0, //Crs 552 | 0.0, //dn 553 | -0.6010047197E+000, //M0 554 | 0.0, //Cuc 555 | 0.9538173676E-002, //e 556 | 0.0, //Cus 557 | 5153.476074, //srA 558 | 589824, //toe 559 | 0.0, //Cic 560 | -0.2323206782E+001, //Omge 561 | 0.0, //Cis 562 | 0.9516029358, //i0 563 | 0.0, //Crc 564 | 0.666795492, //omg 565 | -0.8116330719E-008, //Omgd 566 | 0, //IOD2 567 | 0.0 //IDOT 568 | }, 569 | { 570 | 11, //SID 571 | 518460, //TOW 572 | 0, //ATF 573 | 1, //ASF 574 | 641, //WN 575 | 0, //URA 576 | 0, //SVH 577 | 0, //IODC 578 | 0.0, //TGD 579 | 201600, //toc 580 | 0, //af2 581 | -0.3637978807E-011, //af1 582 | -0.1001358032E-003, //af0 583 | 0, //IOD1 584 | 0.0, //Crs 585 | 0.0, //dn 586 | 0.2029073119E+001, //M0 587 | 0.0, //Cuc 588 | 0.1135063171E-001, //e 589 | 0.0, //Cus 590 | 5153.404297, //srA 591 | 589824, //toe 592 | 0.0, //Cic 593 | 0.2648281455E+001, //Omge 594 | 0.0, //Cis 595 | 0.8883399963, //i0 596 | 0.0, //Crc 597 | 0.871668100, //omg 598 | -0.8596543921E-008, //Omgd 599 | 0, //IOD2 600 | 0.0 //IDOT 601 | }, 602 | { 603 | 12, //SID 604 | 518460, //TOW 605 | 0, //ATF 606 | 1, //ASF 607 | 641, //WN 608 | 0, //URA 609 | 0, //SVH 610 | 0, //IODC 611 | 0.0, //TGD 612 | 201600, //toc 613 | 0, //af2 614 | 0.3637978807E-01, //af1 615 | -0.5817413330E-004, //af0 616 | 0, //IOD1 617 | 0.0, //Crs 618 | 0.0, //dn 619 | 0.2153477907E+001, //M0 620 | 0.0, //Cuc 621 | 0.3325462341E-002, //e 622 | 0.0, //Cus 623 | 5153.527344, //srA 624 | 589824, //toe 625 | 0.0, //Cic 626 | 0.8087359667E+000, //Omge 627 | 0.0, //Cis 628 | 0.9725875854, //i0 629 | 0.0, //Crc 630 | -0.319431305, //omg 631 | -0.7978087524E-008, //Omgd 632 | 0, //IOD2 633 | 0.0 //IDOT 634 | }, 635 | { 636 | 13, //SID 637 | 518460, //TOW 638 | 0, //ATF 639 | 1, //ASF 640 | 641, //WN 641 | 0, //URA 642 | 0, //SVH 643 | 0, //IODC 644 | 0.0, //TGD 645 | 201600, //toc 646 | 0, //af2 647 | 0.0, //af1 648 | 0.2937316895E-003, //af0 649 | 0, //IOD1 650 | 0.0, //Crs 651 | 0.0, //dn 652 | -0.1705832005E+001, //M0 653 | 0.0, //Cuc 654 | 0.4290103912E-002, //e 655 | 0.0, //Cus 656 | 5153.649414, //srA 657 | 589824, //toe 658 | 0.0, //Cic 659 | -0.1223392725E+001, //Omge 660 | 0.0, //Cis 661 | 0.9914093018, //i0 662 | 0.0, //Crc 663 | 1.809063673, //omg 664 | -0.7614289643E-008, //Omgd 665 | 0, //IOD2 666 | 0.0 //IDOT 667 | }, 668 | { 669 | 14, //SID 670 | 518460, //TOW 671 | 0, //ATF 672 | 1, //ASF 673 | 641, //WN 674 | 0, //URA 675 | 0, //SVH 676 | 0, //IODC 677 | 0.0, //TGD 678 | 201600, //toc 679 | 0, //af2 680 | 0.3637978807E-011, //af1 681 | 0.1029968262E-003, //af0 682 | 0, //IOD1 683 | 0.0, //Crs 684 | 0.0, //dn 685 | -0.1748034000E+001, //M0 686 | 0.0, //Cuc 687 | 0.5740642548E-002, //e 688 | 0.0, //Cus 689 | 5153.548340, //srA 690 | 589824, //toe 691 | 0.0, //Cic 692 | -0.1246221185E+001, //Omge 693 | 0.0, //Cis 694 | 0.9845600128, //i0 695 | 0.0, //Crc 696 | -2.102375031, //omg 697 | -0.7687049219E-008, //Omgd 698 | 0, //IOD2 699 | 0.0 //IDOT 700 | }, 701 | { 702 | 15, //SID 703 | 518460, //TOW 704 | 0, //ATF 705 | 1, //ASF 706 | 641, //WN 707 | 0, //URA 708 | 0, //SVH 709 | 0, //IODC 710 | 0.0, //TGD 711 | 201600, //toc 712 | 0, //af2 713 | 0.3637978807E-011, //af1 714 | -0.1888275146E-003, //af0 715 | 0, //IOD1 716 | 0.0, //Crs 717 | 0.0, //dn 718 | -0.1925170183E+001, //M0 719 | 0.0, //Cuc 720 | 0.2923965454E-002, //e 721 | 0.0, //Cus 722 | 5153.791504, //srA 723 | 589824, //toe 724 | 0.0, //Cic 725 | -0.1315321445E+001, //Omge 726 | 0.0, //Cis 727 | 0.9519691467, //i0 728 | 0.0, //Crc 729 | -0.206881762, //omg 730 | -0.8014467312E-008, //Omgd 731 | 0, //IOD2 732 | 0.0 //IDOT 733 | }, 734 | { 735 | 16, //SID 736 | 518460, //TOW 737 | 0, //ATF 738 | 1, //ASF 739 | 641, //WN 740 | 0, //URA 741 | 0, //SVH 742 | 0, //IODC 743 | 0.0, //TGD 744 | 201600, //toc 745 | 0, //af2 746 | -0.3637978807E-011, //af1 747 | -0.1220703125E-003, //af0 748 | 0, //IOD1 749 | 0.0, //Crs 750 | 0.0, //dn 751 | -0.1874318123E+000, //M0 752 | 0.0, //Cuc 753 | 0.5852222443E-002, //e 754 | 0.0, //Cus 755 | 5153.633789, //srA 756 | 589824, //toe 757 | 0.0, //Cic 758 | 0.8263460398E+000, //Omge 759 | 0.0, //Cis 760 | 0.9737091064, //i0 761 | 0.0, //Crc 762 | -0.159074068, //omg 763 | -0.7963535609E-008, //Omgd 764 | 0, //IOD2 765 | 0.0 //IDOT 766 | }, 767 | { 768 | 17, //SID 769 | 518460, //TOW 770 | 0, //ATF 771 | 1, //ASF 772 | 641, //WN 773 | 0, //URA 774 | 0, //SVH 775 | 0, //IODC 776 | 0.0, //TGD 777 | 201600, //toc 778 | 0, //af2 779 | 0.0, //af1 780 | 0.1754760742E-003, //af0 781 | 0, //IOD1 782 | 0.0, //Crs 783 | 0.0, //dn 784 | -0.1216653824E+001, //M0 785 | 0.0, //Cuc 786 | 0.5674362183E-002, //e 787 | 0.0, //Cus 788 | 5153.625488, //srA 789 | 589824, //toe 790 | 0.0, //Cic 791 | 0.1869584799E+001, //Omge 792 | 0.0, //Cis 793 | 0.9602622986, //i0 794 | 0.0, //Crc 795 | -2.510759950, //omg 796 | -0.7810740499E-008, //Omgd 797 | 0, //IOD2 798 | 0.0 //IDOT 799 | }, 800 | { 801 | 18, //SID 802 | 518460, //TOW 803 | 0, //ATF 804 | 1, //ASF 805 | 641, //WN 806 | 0, //URA 807 | 0, //SVH 808 | 0, //IODC 809 | 0.0, //TGD 810 | 201600, //toc 811 | 0, //af2 812 | 0.3637978807E-011, //af1 813 | 0.1020431519E-003, //af0 814 | 0, //IOD1 815 | 0.0, //Crs 816 | 0.0, //dn 817 | 0.1169672012E+000, //M0 818 | 0.0, //Cuc 819 | 0.1184463501E-001, //e 820 | 0.0, //Cus 821 | 5153.678711, //srA 822 | 589824, //toe 823 | 0.0, //Cic 824 | -0.2325624228E+001, //Omge 825 | 0.0, //Cis 826 | 0.9355506897, //i0 827 | 0.0, //Crc 828 | -2.285047531, //omg 829 | -0.8258211892E-008, //Omgd 830 | 0, //IOD2 831 | 0.0 //IDOT 832 | }, 833 | { 834 | 19, //SID 835 | 518460, //TOW 836 | 0, //ATF 837 | 1, //ASF 838 | 641, //WN 839 | 0, //URA 840 | 0, //SVH 841 | 0, //IODC 842 | 0.0, //TGD 843 | 201600, //toc 844 | 0, //af2 845 | -0.3637978807E-011, //af1 846 | -0.7915496826E-004, //af0 847 | 0, //IOD1 848 | 0.0, //Crs 849 | 0.0, //dn 850 | -0.2068529248E+001, //M0 851 | 0.0, //Cuc 852 | 0.6733417511E-002, //e 853 | 0.0, //Cus 854 | 5153.534668, //srA 855 | 589824, //toe 856 | 0.0, //Cic 857 | 0.1924222708E+001, //Omge 858 | 0.0, //Cis 859 | 0.9578533173, //i0 860 | 0.0, //Crc 861 | -0.033198118, //omg 862 | -0.7821654435E-008, //Omgd 863 | 0, //IOD2 864 | 0.0 //IDOT 865 | }, 866 | { 867 | 20, //SID 868 | 518460, //TOW 869 | 0, //ATF 870 | 1, //ASF 871 | 641, //WN 872 | 0, //URA 873 | 0, //SVH 874 | 0, //IODC 875 | 0.0, //TGD 876 | 201600, //toc 877 | 0, //af2 878 | 0.0, //af1 879 | 0.4959106445E-004, //af0 880 | 0, //IOD1 881 | 0.0, //Crs 882 | 0.0, //dn 883 | 0.4967768192E+000, //M0 884 | 0.0, //Cuc 885 | 0.4326343536E-002, //e 886 | 0.0, //Cus 887 | 5153.740234, //srA 888 | 589824, //toe 889 | 0.0, //Cic 890 | -0.2379576802E+001, //Omge 891 | 0.0, //Cis 892 | 0.9355869293, //i0 893 | 0.0, //Crc 894 | 1.264283657, //omg 895 | -0.8301867638E-008, //Omgd 896 | 0, //IOD2 897 | 0.0 //IDOT 898 | }, 899 | { 900 | 21, //SID 901 | 518460, //TOW 902 | 0, //ATF 903 | 1, //ASF 904 | 641, //WN 905 | 0, //URA 906 | 0, //SVH 907 | 0, //IODC 908 | 0.0, //TGD 909 | 201600, //toc 910 | 0, //af2 911 | -0.3637978807E-011, //af1 912 | -0.9918212891E-004, //af0 913 | 0, //IOD1 914 | 0.0, //Crs 915 | 0.0, //dn 916 | 0.1310940862E+001, //M0 917 | 0.0, //Cuc 918 | 0.1692390442E-001, //e 919 | 0.0, //Cus 920 | 5153.558594, //srA 921 | 589824, //toe 922 | 0.0, //Cic 923 | 0.2902109623E+001, //Omge 924 | 0.0, //Cis 925 | 0.9324836731, //i0 926 | 0.0, //Crc 927 | -2.436156631, //omg 928 | -0.8218194125E-008, //Omgd 929 | 0, //IOD2 930 | 0.0 //IDOT 931 | }, 932 | { 933 | 22, //SID 934 | 518460, //TOW 935 | 0, //ATF 936 | 1, //ASF 937 | 641, //WN 938 | 0, //URA 939 | 0, //SVH 940 | 0, //IODC 941 | 0.0, //TGD 942 | 201600, //toc 943 | 0, //af2 944 | 0.0, //af1 945 | 0.1602172852E-003, //af0 946 | 0, //IOD1 947 | 0.0, //Crs 948 | 0.0, //dn 949 | -0.7759081125E+000, //M0 950 | 0.0, //Cuc 951 | 0.5541324615E-002, //e 952 | 0.0, //Cus 953 | 5153.659180, //srA 954 | 589824, //toe 955 | 0.0, //Cic 956 | -0.2321046233E+001, //Omge 957 | 0.0, //Cis 958 | 0.9332447052, //i0 959 | 0.0, //Crc 960 | -1.928426623, //omg 961 | -0.8283677744E-008, //Omgd 962 | 0, //IOD2 963 | 0.0 //IDOT 964 | }, 965 | { 966 | 23, //SID 967 | 518460, //TOW 968 | 0, //ATF 969 | 1, //ASF 970 | 641, //WN 971 | 0, //URA 972 | 0, //SVH 973 | 0, //IODC 974 | 0.0, //TGD 975 | 201600, //toc 976 | 0, //af2 977 | -0.3637978807E-011, //af1 978 | 0.3461837769E-003, //af0 979 | 0, //IOD1 980 | 0.0, //Crs 981 | 0.0, //dn 982 | -0.2518003941E+001, //M0 983 | 0.0, //Cuc 984 | 0.6980419159E-002, //e 985 | 0.0, //Cus 986 | 5153.583008, //srA 987 | 589824, //toe 988 | 0.0, //Cic 989 | -0.1287976861E+001, //Omge 990 | 0.0, //Cis 991 | 0.9663143158, //i0 992 | 0.0, //Crc 993 | 3.123965740, //omg 994 | -0.7865310181E-008, //Omgd 995 | 0, //IOD2 996 | 0.0 //IDOT 997 | }, 998 | { 999 | 24, //SID 1000 | 518460, //TOW 1001 | 0, //ATF 1002 | 1, //ASF 1003 | 641, //WN 1004 | 0, //URA 1005 | 0, //SVH 1006 | 0, //IODC 1007 | 0.0, //TGD 1008 | 201600, //toc 1009 | 0, //af2 1010 | 0.3637978807E-011, //af1 1011 | 0.3347396851E-003, //af0 1012 | 0, //IOD1 1013 | 0.0, //Crs 1014 | 0.0, //dn 1015 | -0.2647304058E+001, //M0 1016 | 0.0, //Cuc 1017 | 0.5775451660E-002, //e 1018 | 0.0, //Cus 1019 | 5154.691895, //srA 1020 | 589824, //toe 1021 | 0.0, //Cic 1022 | 0.2943342090E+001, //Omge 1023 | 0.0, //Cis 1024 | 0.9491233826, //i0 1025 | 0.0, //Crc 1026 | -0.335407734, //omg 1027 | -0.8018105291E-008, //Omgd 1028 | 0, //IOD2 1029 | 0.0 //IDOT 1030 | }, 1031 | { 1032 | 25, //SID 1033 | 518460, //TOW 1034 | 0, //ATF 1035 | 1, //ASF 1036 | 641, //WN 1037 | 0, //URA 1038 | 0, //SVH 1039 | 0, //IODC 1040 | 0.0, //TGD 1041 | 201600, //toc 1042 | 0, //af2 1043 | -0.3637978807E-011, //af1 1044 | -0.4863739014E-004, //af0 1045 | 0, //IOD1 1046 | 0.0, //Crs 1047 | 0.0, //dn 1048 | -0.6250106096E+000, //M0 1049 | 0.0, //Cuc 1050 | 0.6771087646E-003, //e 1051 | 0.0, //Cus 1052 | 5153.699707, //srA 1053 | 589824, //toe 1054 | 0.0, //Cic 1055 | 0.7813504934E+000, //Omge 1056 | 0.0, //Cis 1057 | 0.9613285065, //i0 1058 | 0.0, //Crc 1059 | 1.926251411, //omg 1060 | -0.8094502846E-008, //Omgd 1061 | 0, //IOD2 1062 | 0.0 //IDOT 1063 | }, 1064 | { 1065 | 26, //SID 1066 | 518460, //TOW 1067 | 0, //ATF 1068 | 1, //ASF 1069 | 641, //WN 1070 | 0, //URA 1071 | 0, //SVH 1072 | 0, //IODC 1073 | 0.0, //TGD 1074 | 201600, //toc 1075 | 0, //af2 1076 | -0.7275957614E-011, //af1 1077 | -0.4005432129E-004, //af0 1078 | 0, //IOD1 1079 | 0.0, //Crs 1080 | 0.0, //dn 1081 | -0.2787245750E+001, //M0 1082 | 0.0, //Cuc 1083 | 0.1986265182E-001, //e 1084 | 0.0, //Cus 1085 | 5153.601562, //srA 1086 | 589824, //toe 1087 | 0.0, //Cic 1088 | -0.1227417588E+001, //Omge 1089 | 0.0, //Cis 1090 | 0.9890899658, //i0 1091 | 0.0, //Crc 1092 | 1.114207149, //omg 1093 | -0.7668859325E-008, //Omgd 1094 | 0, //IOD2 1095 | 0.0 //IDOT 1096 | }, 1097 | { 1098 | 27, //SID 1099 | 518460, //TOW 1100 | 0, //ATF 1101 | 1, //ASF 1102 | 641, //WN 1103 | 0, //URA 1104 | 0, //SVH 1105 | 0, //IODC 1106 | 0.0, //TGD 1107 | 201600, //toc 1108 | 0, //af2 1109 | 0.3637978807E-011, //af1 1110 | 0.2031326294E-003, //af0 1111 | 0, //IOD1 1112 | 0.0, //Crs 1113 | 0.0, //dn 1114 | -0.1647512197E+001, //M0 1115 | 0.0, //Cuc 1116 | 0.2170991898E-001, //e 1117 | 0.0, //Cus 1118 | 5153.516602, //srA 1119 | 589824, //toe 1120 | 0.0, //Cic 1121 | -0.3004441261E+000, //Omge 1122 | 0.0, //Cis 1123 | 0.9798984528, //i0 1124 | 0.0, //Crc 1125 | -1.355318427, //omg 1126 | -0.7858034223E-008, //Omgd 1127 | 0, //IOD2 1128 | 0.0 //IDOT 1129 | }, 1130 | { 1131 | 28, //SID 1132 | 518460, //TOW 1133 | 0, //ATF 1134 | 1, //ASF 1135 | 641, //WN 1136 | 0, //URA 1137 | 0, //SVH 1138 | 0, //IODC 1139 | 0.0, //TGD 1140 | 201600, //toc 1141 | 0, //af2 1142 | 0.0, //af1 1143 | 0.2861022949E-005, //af0 1144 | 0, //IOD1 1145 | 0.0, //Crs 1146 | 0.0, //dn 1147 | -0.6234830618E+000, //M0 1148 | 0.0, //Cuc 1149 | 0.1634073257E-001, //e 1150 | 0.0, //Cus 1151 | 5153.634277, //srA 1152 | 589824, //toe 1153 | 0.0, //Cic 1154 | 0.8338571787E+000, //Omge 1155 | 0.0, //Cis 1156 | 0.9719657898, //i0 1157 | 0.0, //Crc 1158 | -1.941480756, //omg 1159 | -0.7945345715E-008, //Omgd 1160 | 0, //IOD2 1161 | 0.0 //IDOT 1162 | }, 1163 | { 1164 | 29, //SID 1165 | 518460, //TOW 1166 | 0, //ATF 1167 | 1, //ASF 1168 | 641, //WN 1169 | 0, //URA 1170 | 0, //SVH 1171 | 0, //IODC 1172 | 0.0, //TGD 1173 | 201600, //toc 1174 | 0, //af2 1175 | 0.3637978807E-011, //af1 1176 | 0.1602172852E-003, //af0 1177 | 0, //IOD1 1178 | 0.0, //Crs 1179 | 0.0, //dn 1180 | 0.1431249738E+001, //M0 1181 | 0.0, //Cuc 1182 | 0.2537727356E-002, //e 1183 | 0.0, //Cus 1184 | 5153.592285, //srA 1185 | 589824, //toe 1186 | 0.0, //Cic 1187 | 0.1877903700E+001, //Omge 1188 | 0.0, //Cis 1189 | 0.9606399536, //i0 1190 | 0.0, //Crc 1191 | -1.246526003, //omg 1192 | -0.7796188584E-008, //Omgd 1193 | 0, //IOD2 1194 | 0.0 //IDOT 1195 | }, 1196 | { 1197 | 30, //SID 1198 | 518460, //TOW 1199 | 0, //ATF 1200 | 1, //ASF 1201 | 641, //WN 1202 | 0, //URA 1203 | 0, //SVH 1204 | 0, //IODC 1205 | 0.0, //TGD 1206 | 201600, //toc 1207 | 0, //af2 1208 | 0.3637978807E-011, //af1 1209 | 0.2918243408E-003, //af0 1210 | 0, //IOD1 1211 | 0.0, //Crs 1212 | 0.0, //dn 1213 | -0.6286317110E+000, //M0 1214 | 0.0, //Cuc 1215 | 0.1311111450E-001, //e 1216 | 0.0, //Cus 1217 | 5155.292969, //srA 1218 | 589824, //toe 1219 | 0.0, //Cic 1220 | 0.7527695894E+000, //Omge 1221 | 0.0, //Cis 1222 | 0.9579982758, //i0 1223 | 0.0, //Crc 1224 | 1.553256989, //omg 1225 | -0.8101778803E-008, //Omgd 1226 | 0, //IOD2 1227 | 0.0 //IDOT 1228 | }, 1229 | { 1230 | 31, //SID 1231 | 518460, //TOW 1232 | 0, //ATF 1233 | 1, //ASF 1234 | 641, //WN 1235 | 0, //URA 1236 | 0, //SVH 1237 | 0, //IODC 1238 | 0.0, //TGD 1239 | 201600, //toc 1240 | 0, //af2 1241 | 0.3637978807E-011, //af1 1242 | 0.3814697266E-005, //af0 1243 | 0, //IOD1 1244 | 0.0, //Crs 1245 | 0.0, //dn 1246 | 0.2117628217E+001, //M0 1247 | 0.0, //Cuc 1248 | 0.7525444031E-002, //e 1249 | 0.0, //Cus 1250 | 5153.745117, //srA 1251 | 589824, //toe 1252 | 0.0, //Cic 1253 | -0.2447403669E+000, //Omge 1254 | 0.0, //Cis 1255 | 0.9784774780, //i0 1256 | 0.0, //Crc 1257 | -1.051251769, //omg 1258 | -0.7927155821E-008, //Omgd 1259 | 0, //IOD2 1260 | 0.0 //IDOT 1261 | }, 1262 | { 1263 | 32, //SID 1264 | 518460, //TOW 1265 | 0, //ATF 1266 | 1, //ASF 1267 | 641, //WN 1268 | 0, //URA 1269 | 0, //SVH 1270 | 0, //IODC 1271 | 0.0, //TGD 1272 | 201600, //toc 1273 | 0, //af2 1274 | -0.7275957614E-011, //af1 1275 | -0.1201629639E-003, //af0 1276 | 0, //IOD1 1277 | 0.0, //Crs 1278 | 0.0, //dn 1279 | 0.2943591952E+001, //M0 1280 | 0.0, //Cuc 1281 | 0.1263332367E-001, //e 1282 | 0.0, //Cus 1283 | 5153.536133, //srA 1284 | 589824, //toe 1285 | 0.0, //Cic 1286 | -0.2259065747E+001, //Omge 1287 | 0.0, //Cis 1288 | 0.9573688507, //i0 1289 | 0.0, //Crc 1290 | -0.903733730, //omg 1291 | -0.8036295185E-008, //Omgd 1292 | 0, //IOD2 1293 | 0.0 //IDOT 1294 | } 1295 | }; 1296 | 1297 | --------------------------------------------------------------------------------