Changeset 6599 in ntrip
- Timestamp:
- Feb 19, 2015, 6:18:47 PM (10 years ago)
- Location:
- trunk/rtcm3torinex/lib
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/rtcm3torinex/lib/rtcm3torinex.c
r6552 r6599 447 447 ge->TOW = 0.9999E9; 448 448 ret = 1019; 449 } 450 break; 451 case RTCM3ID_BDS: 452 { 453 struct bdsephemeris *be; 454 int sv, i, week, tow; 455 be = &handle->ephemerisBDS; 456 memset(be, 0, sizeof(*be)); 457 458 GETBITS(sv, 6) 459 be->satellite += PRN_BDS_START-1; 460 GETBITS(be->BDSweek, 13) 461 GETBITS(be->URAI, 4) 462 GETFLOATSIGN(be->IDOT, 14, 1.0/(double)(1<<30)/(double)(1<<13)) 463 GETBITS(be->AODE, 5) 464 GETBITS(be->TOC, 17) 465 be->TOC <<= 3; 466 GETFLOATSIGN(be->clock_driftrate, 11, 1.0/(double)(1<<30)/(double)(1<<30)/(double)(1<<6)) 467 GETFLOATSIGN(be->clock_drift, 22, 1.0/(double)(1<<30)/(double)(1<<20)) 468 GETFLOATSIGN(be->clock_bias, 24, 1.0/(double)(1<<30)/(double)(1<<3)) 469 GETBITS(be->AODC, 5) 470 GETFLOATSIGN(be->Crs, 18, 1.0/(double)(1<<6)) 471 GETFLOATSIGN(be->Delta_n, 16, 1.0/(double)(1<<30)/(double)(1<<13)) 472 GETFLOATSIGN(be->M0, 32, 1.0/(double)(1<<30)/(double)(1<<1)) 473 GETFLOATSIGN(be->Cuc, 18, 1.0/(double)(1<<30)/(double)(1<<1)) 474 GETFLOAT(be->e, 32, 1.0/(double)(1<<30)/(double)(1<<3)) 475 GETFLOATSIGN(be->Cus, 18, 1.0/(double)(1<<30)/(double)(1<<1)) 476 GETFLOAT(be->sqrt_A, 32, 1.0/(double)(1<<19)) 477 GETBITS(be->TOE, 17) 478 be->TOE <<= 3; 479 GETFLOATSIGN(be->Cic, 18, 1.0/(double)(1<<30)/(double)(1<<1)) 480 GETFLOATSIGN(be->OMEGA0, 32, 1.0/(double)(1<<30)/(double)(1<<1)) 481 GETFLOATSIGN(be->Cis, 18, 1.0/(double)(1<<30)/(double)(1<<1)) 482 GETFLOATSIGN(be->i0, 32, 1.0/(double)(1<<30)/(double)(1<<1)) 483 GETFLOATSIGN(be->Crc, 18, 1.0/(double)(1<<8)) 484 GETFLOATSIGN(be->omega, 32, 1.0/(double)(1<<30)/(double)(1<<1)) 485 GETFLOATSIGN(be->OMEGADOT, 24, 1.0/(double)(1<<30)/(double)(1<<13)) 486 GETFLOATSIGN(be->TGD_B1_B3, 10, 0.000000001) 487 GETFLOATSIGN(be->TGD_B2_B3, 10, 0.000000001) 488 GETBITS(sv, 1) 489 if(sv) 490 be->flags |= BDSEPHF_SATH1; 491 week = 1356+be->BDSweek; 492 tow = 14+be->TOE; 493 if(tow > 7*24*60*60) /* overflow due to leap */ 494 { 495 ++week; 496 tow -= 7*24*60*60; 497 } 498 i = (week - (int)handle->GPSWeek)*7*24*60*60 499 + (tow - (int)handle->GPSTOW) - 2*60*60; 500 if(i > 5*60*60 && i < 8*60*60) 501 { 502 handle->GPSTOW = tow; 503 handle->GPSWeek = week; 504 } 505 ret = RTCM3ID_BDS; 449 506 } 450 507 break; … … 1293 1350 GNSSENTRY_S1NDATA,GNSSDF2_LOCKLOSSL1,GPS_WAVELENGTH_L1,"1X"} 1294 1351 }; 1295 struct CodeData compass[RTCM3_MSM_NUMSIG] =1352 struct CodeData bds[RTCM3_MSM_NUMSIG] = 1296 1353 { 1297 1354 {0,0,0,0,0,0,0}, 1298 1355 {GNSSENTRY_CB1DATA,GNSSENTRY_LB1DATA,GNSSENTRY_DB1DATA, 1299 GNSSENTRY_SB1DATA,GNSSDF2_LOCKLOSSB1, COMPASS_WAVELENGTH_B1,"1I"},1356 GNSSENTRY_SB1DATA,GNSSDF2_LOCKLOSSB1,BDS_WAVELENGTH_B1,"1I"}, 1300 1357 {0,0,0,0,0,0,0}, 1301 1358 {0,0,0,0,0,0,0}, … … 1304 1361 {0,0,0,0,0,0,0}, 1305 1362 {GNSSENTRY_CB3DATA,GNSSENTRY_LB3DATA,GNSSENTRY_DB3DATA, 1306 GNSSENTRY_SB3DATA,GNSSDF2_LOCKLOSSB3, COMPASS_WAVELENGTH_B3,"6I"},1363 GNSSENTRY_SB3DATA,GNSSDF2_LOCKLOSSB3,BDS_WAVELENGTH_B3,"6I"}, 1307 1364 {0,0,0,0,0,0,0}, 1308 1365 {0,0,0,0,0,0,0}, … … 1311 1368 {0,0,0,0,0,0,0}, 1312 1369 {GNSSENTRY_CB2DATA,GNSSENTRY_LB2DATA,GNSSENTRY_DB2DATA, 1313 GNSSENTRY_SB2DATA,GNSSDF2_LOCKLOSSB2, COMPASS_WAVELENGTH_B2,"7I"},1370 GNSSENTRY_SB2DATA,GNSSDF2_LOCKLOSSB2,BDS_WAVELENGTH_B2,"7I"}, 1314 1371 {0,0,0,0,0,0,0}, 1315 1372 {0,0,0,0,0,0,0}, … … 1348 1405 if(type >= 1121) 1349 1406 { 1350 sys = RTCM3_MSM_ COMPASS;1351 start = PRN_ COMPASS_START;1407 sys = RTCM3_MSM_BDS; 1408 start = PRN_BDS_START; 1352 1409 } 1353 1410 else if(type >= 1111) … … 1377 1434 switch(sys) 1378 1435 { 1379 case RTCM3_MSM_ COMPASS:1436 case RTCM3_MSM_BDS: 1380 1437 GETBITS(i,30) 1381 1438 i += 14000; … … 1587 1644 wl = cd.wl; 1588 1645 break; 1589 case RTCM3_MSM_ COMPASS:1590 cd = compass[RTCM3_MSM_NUMSIG-j-1];1646 case RTCM3_MSM_BDS: 1647 cd = bds[RTCM3_MSM_NUMSIG-j-1]; 1591 1648 wl = cd.wl; 1592 1649 break; … … 1848 1905 j = week*(7*24*60*60) + tow + 5*24*60*60; 1849 1906 for(i = 1980; j >= (k = (365+longyear(i,0))*24*60*60); ++i) 1907 j -= k; 1908 c->year = i; 1909 doy = 1+ (j / (24*60*60)); 1910 j %= (24*60*60); 1911 c->hour = j / (60*60); 1912 j %= (60*60); 1913 c->minute = j / 60; 1914 c->second = j % 60; 1915 j = 0; 1916 for(i = 1; j + (k = months[i] + longyear(c->year,i)) < doy; ++i) 1917 j += k; 1918 c->month = i; 1919 c->day = doy - j; 1920 } 1921 1922 void converttimebds(struct converttimeinfo *c, int week, int tow) 1923 { 1924 int i, k, doy, j; /* temporary variables */ 1925 j = week*(7*24*60*60) + tow; 1926 for(i = 2006; j >= (k = (365+longyear(i,0))*24*60*60); ++i) 1850 1927 j -= k; 1851 1928 c->year = i; … … 2118 2195 } 2119 2196 2120 INITFLAGS( COMPASS)2121 CHECKFLAGSNEW( COMPASS, CB1, C2I)2122 CHECKFLAGSNEW( COMPASS, LB1, L2I)2123 CHECKFLAGSNEW( COMPASS, DB1, D2I)2124 CHECKFLAGSNEW( COMPASS, SB1, S2I)2125 CHECKFLAGSNEW( COMPASS, CB2, C7I)2126 CHECKFLAGSNEW( COMPASS, LB2, L7I)2127 CHECKFLAGSNEW( COMPASS, DB2, D7I)2128 CHECKFLAGSNEW( COMPASS, SB2, S7I)2129 CHECKFLAGSNEW( COMPASS, CB3, C6I)2130 CHECKFLAGSNEW( COMPASS, LB3, L6I)2131 CHECKFLAGSNEW( COMPASS, DB3, D6I)2132 CHECKFLAGSNEW( COMPASS, SB3, S6I)2197 INITFLAGS(BDS) 2198 CHECKFLAGSNEW(BDS, CB1, C2I) 2199 CHECKFLAGSNEW(BDS, LB1, L2I) 2200 CHECKFLAGSNEW(BDS, DB1, D2I) 2201 CHECKFLAGSNEW(BDS, SB1, S2I) 2202 CHECKFLAGSNEW(BDS, CB2, C7I) 2203 CHECKFLAGSNEW(BDS, LB2, L7I) 2204 CHECKFLAGSNEW(BDS, DB2, D7I) 2205 CHECKFLAGSNEW(BDS, SB2, S7I) 2206 CHECKFLAGSNEW(BDS, CB3, C6I) 2207 CHECKFLAGSNEW(BDS, LB3, L6I) 2208 CHECKFLAGSNEW(BDS, DB3, D6I) 2209 CHECKFLAGSNEW(BDS, SB3, S6I) 2133 2210 2134 2211 if(modified) … … 2138 2215 i = 1+snprintf(buffer, buffersize, 2139 2216 "C %3d%-52.52s SYS / # / OBS TYPES", 2140 Parser->info[RTCM3_MSM_ COMPASS].numtypes, Parser->fieldbufferCOMPASS);2141 if(Parser->info[RTCM3_MSM_ COMPASS].numtypes>13)2217 Parser->info[RTCM3_MSM_BDS].numtypes, Parser->fieldbufferBDS); 2218 if(Parser->info[RTCM3_MSM_BDS].numtypes>13) 2142 2219 { 2143 2220 i += snprintf(buffer+i-1, buffersize, 2144 "\n %-52.52s SYS / # / OBS TYPES", Parser->fieldbuffer COMPASS+13*4);2221 "\n %-52.52s SYS / # / OBS TYPES", Parser->fieldbufferBDS+13*4); 2145 2222 } 2146 2223 buffer += i; buffersize -= i; … … 2549 2626 while((r = RTCM3Parser(Parser))) 2550 2627 { 2551 if(r == 1020 || r == 1019 || r == 1044 || r == 1043)2628 if(r == 1020 || r == RTCM3ID_BDS || r == 1019 || r == 1044 || r == 1043) 2552 2629 { 2553 2630 FILE *file = 0; … … 2660 2737 file = Parser->qzssfile; 2661 2738 } 2739 else if(r == RTCM3ID_BDS) 2740 { 2741 if(Parser->bdsephemeris) 2742 { 2743 if(!(Parser->bdsfile = fopen(Parser->bdsephemeris, "w"))) 2744 { 2745 RTCM3Error("Could not open BDS ephemeris output file.\n"); 2746 } 2747 else 2748 { 2749 char buffer[100]; 2750 fprintf(Parser->bdsfile, 2751 "%9.2f%11sN: BDS NAV DATA%25sRINEX VERSION / TYPE\n", 2.1, "", ""); 2752 HandleRunBy(buffer, sizeof(buffer), 0, Parser->rinex3); 2753 fprintf(Parser->bdsfile, "%s\n%60sEND OF HEADER\n", buffer, ""); 2754 } 2755 Parser->bdsephemeris = 0; 2756 } 2757 file = Parser->bdsfile; 2758 } 2662 2759 } 2663 2760 if(file) … … 2722 2819 ConvLine(file, "%s%19.12e%19.12e%19.12e%19.12e\n", sep, e->z_pos, 2723 2820 e->z_velocity, e->z_acceleration, (double)e->IODN); 2821 } 2822 else if(r == RTCM3ID_BDS) 2823 { 2824 struct bdsephemeris *e = &Parser->ephemerisBDS; 2825 double d; /* temporary variable */ 2826 struct converttimeinfo cti; 2827 converttimebds(&cti, e->BDSweek, e->TOC); 2828 int num = e->satellite-PRN_BDS_START+1; 2829 2830 if(Parser->rinex3) 2831 { 2832 ConvLine(file, 2833 "C%02d %04d %02d %02d %02d %02d %02d%19.12e%19.12e%19.12e\n", 2834 num, cti.year, cti.month, cti.day, cti.hour, 2835 cti.minute, cti.second, e->clock_bias, e->clock_drift, 2836 e->clock_driftrate); 2837 sep = " "; 2838 } 2839 else 2840 { 2841 ConvLine(file, 2842 "%02d %02d %02d %02d %02d %02d%05.1f%19.12e%19.12e%19.12e\n", 2843 num, cti.year%100, cti.month, cti.day, cti.hour, 2844 cti.minute, (double) cti.second, e->clock_bias, e->clock_drift, 2845 e->clock_driftrate); 2846 } 2847 ConvLine(file, "%s%19.12e%19.12e%19.12e%19.12e\n", sep, 2848 (double)e->AODE, e->Crs, e->Delta_n, e->M0); 2849 ConvLine(file, "%s%19.12e%19.12e%19.12e%19.12e\n", sep, e->Cuc, 2850 e->e, e->Cus, e->sqrt_A); 2851 ConvLine(file, "%s%19.12e%19.12e%19.12e%19.12e\n", sep, 2852 (double) e->TOE, e->Cic, e->OMEGA0, e->Cis); 2853 ConvLine(file, "%s%19.12e%19.12e%19.12e%19.12e\n", sep, e->i0, 2854 e->Crc, e->omega, e->OMEGADOT); 2855 ConvLine(file, "%s%19.12e %19.12e\n", sep, e->IDOT, 2856 (double) e->BDSweek); 2857 if(e->URAI <= 6) /* URA index */ 2858 d = ceil(10.0*pow(2.0, 1.0+((double)e->URAI)/2.0))/10.0; 2859 else 2860 d = ceil(10.0*pow(2.0, ((double)e->URAI)/2.0))/10.0; 2861 /* 15 indicates not to use satellite. We can't handle this special 2862 case, so we create a high "non"-accuracy value. */ 2863 ConvLine(file, "%s%19.12e%19.12e%19.12e%19.12e\n", sep, d, 2864 ((double) (e->flags & BDSEPHF_SATH1)), e->TGD_B1_B3, 2865 e->TGD_B2_B3); 2866 2867 ConvLine(file, "%s%19.12e%19.12e\n", sep, ((double)e->TOW), 2868 (double) e->AODC); 2869 /* TOW, AODC */ 2724 2870 } 2725 2871 else /* if(r == 1019 || r == 1044) */ … … 2783 2929 (i & GPSEPHF_6HOURSFIT) ? (Parser->rinex3 ? 1 : qzss ? 4.0 : 6.0) 2784 2930 : (Parser->rinex3 ? 0 : qzss ? 2.0 : 4.0)); 2785 /* TOW */2931 /* TOW,Fit */ 2786 2932 } 2787 2933 } … … 2872 3018 sys[RTCM3_MSM_QZSS] = 1; 2873 3019 } 2874 else if(Parser->Data.satellites[i] >= PRN_ COMPASS_START2875 && Parser->Data.satellites[i] <= PRN_ COMPASS_END)2876 { 2877 RTCM3Text("C%02d", Parser->Data.satellites[i] - (PRN_ COMPASS_START-1));2878 sys[RTCM3_MSM_ COMPASS] = 1;3020 else if(Parser->Data.satellites[i] >= PRN_BDS_START 3021 && Parser->Data.satellites[i] <= PRN_BDS_END) 3022 { 3023 RTCM3Text("C%02d", Parser->Data.satellites[i] - (PRN_BDS_START-1)); 3024 sys[RTCM3_MSM_BDS] = 1; 2879 3025 } 2880 3026 else if(Parser->Data.satellites[i] >= PRN_SBAS_START … … 2981 3127 } 2982 3128 } 2983 else if(sys[RTCM3_MSM_ COMPASS])2984 { 2985 for(j = 0; j < Parser->info[RTCM3_MSM_ COMPASS].numtypes; ++j)3129 else if(sys[RTCM3_MSM_BDS]) 3130 { 3131 for(j = 0; j < Parser->info[RTCM3_MSM_BDS].numtypes; ++j) 2986 3132 { 2987 long long df = Parser->info[RTCM3_MSM_ COMPASS].flags[j];2988 int pos = Parser->info[RTCM3_MSM_ COMPASS].pos[j];3133 long long df = Parser->info[RTCM3_MSM_BDS].flags[j]; 3134 int pos = Parser->info[RTCM3_MSM_BDS].pos[j]; 2989 3135 if((Parser->Data.dataflags[i] & df) 2990 3136 && !isnan(Parser->Data.measdata[i][pos]) 2991 3137 && !isinf(Parser->Data.measdata[i][pos]) 2992 3138 && (Parser->Data.codetype[i][pos] 2993 && Parser->info[RTCM3_MSM_ COMPASS].type[pos]2994 && Parser->info[RTCM3_MSM_ COMPASS].type[pos]3139 && Parser->info[RTCM3_MSM_BDS].type[pos] 3140 && Parser->info[RTCM3_MSM_BDS].type[pos] 2995 3141 == Parser->Data.codetype[i][pos][1])) 2996 3142 { … … 3177 3323 RTCM3Text("J%02d", Parser->Data.satellites[i] 3178 3324 - (PRN_QZSS_START-1)); 3179 else if(Parser->Data.satellites[i] >= PRN_ COMPASS_START3180 && Parser->Data.satellites[i] <= PRN_ COMPASS_END)3325 else if(Parser->Data.satellites[i] >= PRN_BDS_START 3326 && Parser->Data.satellites[i] <= PRN_BDS_END) 3181 3327 RTCM3Text("C%02d", Parser->Data.satellites[i] 3182 - (PRN_ COMPASS_START-1));3328 - (PRN_BDS_START-1)); 3183 3329 else 3184 3330 RTCM3Text("%3d", Parser->Data.satellites[i]); … … 3214 3360 RTCM3Text("J%02d", Parser->Data.satellites[i] 3215 3361 - (PRN_QZSS_START-1)); 3216 else if(Parser->Data.satellites[i] >= PRN_ COMPASS_START3217 && Parser->Data.satellites[i] <= PRN_ COMPASS_END)3362 else if(Parser->Data.satellites[i] >= PRN_BDS_START 3363 && Parser->Data.satellites[i] <= PRN_BDS_END) 3218 3364 RTCM3Text("C%02d", Parser->Data.satellites[i] 3219 - (PRN_ COMPASS_START-1));3365 - (PRN_BDS_START-1)); 3220 3366 else 3221 3367 RTCM3Text("%3d", Parser->Data.satellites[i]); … … 3377 3523 const char *qzssephemeris; 3378 3524 const char *glonassephemeris; 3525 const char *bdsephemeris; 3379 3526 }; 3380 3527 … … 3392 3539 { "header", required_argument, 0, 'f'}, 3393 3540 { "user", required_argument, 0, 'u'}, 3541 { "bdsephemeris", required_argument, 0, 'C'}, 3394 3542 { "gpsephemeris", required_argument, 0, 'E'}, 3395 3543 { "qzssephemeris", required_argument, 0, 'Q'}, … … 3405 3553 {0,0,0,0}}; 3406 3554 #endif 3407 #define ARGOPT "-d:s:p:r:t:f:u:E: G:B:Q:M:S:R:n:h3O"3555 #define ARGOPT "-d:s:p:r:t:f:u:E:C:G:B:Q:M:S:R:n:h3O" 3408 3556 3409 3557 enum MODE { HTTP = 1, RTSP = 2, NTRIP1 = 3, AUTO = 4, END }; … … 3538 3686 args->sbasephemeris = 0; 3539 3687 args->glonassephemeris = 0; 3688 args->bdsephemeris = 0; 3540 3689 args->rinex3 = 0; 3541 3690 args->nmea = 0; … … 3560 3709 case 'd': args->data = optarg; break; 3561 3710 case 'f': args->headerfile = optarg; break; 3711 case 'C': args->bdsephemeris = optarg; break; 3562 3712 case 'E': args->gpsephemeris = optarg; break; 3563 3713 case 'B': args->sbasephemeris = optarg; break; … … 3636 3786 " -t " LONG_OPT("--timeout ") "timeout in seconds (default 60)\n" 3637 3787 " -u " LONG_OPT("--user ") "the user name\n" 3788 " -C " LONG_OPT("--bdsephemeris ") "output file for BDS ephemeris data\n" 3638 3789 " -E " LONG_OPT("--gpsephemeris ") "output file for GPS ephemeris data\n" 3639 3790 " -G " LONG_OPT("--glonassephemeris ") "output file for GLONASS ephemeris data\n" … … 3744 3895 Parser.glonassephemeris = args.glonassephemeris; 3745 3896 Parser.gpsephemeris = args.gpsephemeris; 3897 Parser.bdsephemeris = args.bdsephemeris; 3746 3898 Parser.qzssephemeris = args.qzssephemeris; 3747 3899 Parser.sbasephemeris = args.sbasephemeris; -
trunk/rtcm3torinex/lib/rtcm3torinex.h
r6329 r6599 40 40 #define PRN_SBAS_START 120 41 41 #define PRN_SBAS_END 141 42 #define PRN_ COMPASS_START16143 #define PRN_ COMPASS_END19042 #define PRN_BDS_START 161 43 #define PRN_BDS_END 190 44 44 #define PRN_QZSS_START 193 45 45 #define PRN_QZSS_END 202 … … 60 60 #define RTCM3_MSM_SBAS 3 61 61 #define RTCM3_MSM_QZSS 4 62 #define RTCM3_MSM_ COMPASS562 #define RTCM3_MSM_BDS 5 63 63 64 64 #define RTCM3_MSM_NUMSYS 6 … … 277 277 #define QZSS_WAVELENGTH_LEX (LIGHTSPEED / QZSS_FREQU_LEX) /* m */ 278 278 279 #define COMPASS_FREQU_B1 1561098000.0 /* Hz */280 #define COMPASS_FREQU_B2 1207140000.0 /* Hz */281 #define COMPASS_FREQU_B3 1268520000.0 /* Hz */282 #define COMPASS_WAVELENGTH_B1 (LIGHTSPEED / COMPASS_FREQU_B1) /* m */283 #define COMPASS_WAVELENGTH_B2 (LIGHTSPEED / COMPASS_FREQU_B2) /* m */284 #define COMPASS_WAVELENGTH_B3 (LIGHTSPEED / COMPASS_FREQU_B3) /* m */279 #define BDS_FREQU_B1 1561098000.0 /* Hz */ 280 #define BDS_FREQU_B2 1207140000.0 /* Hz */ 281 #define BDS_FREQU_B3 1268520000.0 /* Hz */ 282 #define BDS_WAVELENGTH_B1 (LIGHTSPEED / BDS_FREQU_B1) /* m */ 283 #define BDS_WAVELENGTH_B2 (LIGHTSPEED / BDS_FREQU_B2) /* m */ 284 #define BDS_WAVELENGTH_B3 (LIGHTSPEED / BDS_FREQU_B3) /* m */ 285 285 286 286 #define PRN_GIOVE_OFFSET 51 … … 365 365 }; 366 366 367 #define GALEPHF_E5ADINVALID (1<<0) /* E5aDVS set invalid */368 #define GALEPHF_E5BDINVALID (1<<1) /* E5bDVS set invalid */369 #define GALEPHF_INAV (1<<2) /* INAV data */370 #define GALEPHF_FNAV (1<<3) /* FNAV data */371 372 367 #define GLOEPHF_UNHEALTHY (1<<0) /* set if unhealty satellite, f2b78 */ 373 368 #define GLOEPHF_ALMANACHEALTHOK (1<<1) /* set if ALM health is available */ … … 420 415 int URA; /* [bits 35- 38] */ 421 416 }; 417 418 #define GALEPHF_E5ADINVALID (1<<0) /* E5aDVS set invalid */ 419 #define GALEPHF_E5BDINVALID (1<<1) /* E5bDVS set invalid */ 420 #define GALEPHF_INAV (1<<2) /* INAV data */ 421 #define GALEPHF_FNAV (1<<3) /* FNAV data */ 422 422 423 423 struct galileoephemeris { … … 453 453 }; 454 454 455 #define RTCM3ID_BDS 63 456 #define BDSEPHF_SATH1 (1<<0) /* SatH1 is 1 */ 457 458 struct bdsephemeris { 459 int flags; /* BDSEPHF_xxx */ 460 int satellite; /* SV ID */ 461 int AODE; /* */ 462 int URAI; /* [1..15] */ 463 int BDSweek; /* */ 464 int AODC; /* */ 465 int TOW; /* [s] */ 466 int TOC; /* [s] */ 467 int TOE; /* [s] */ 468 double clock_bias; /* [s] */ 469 double clock_drift; /* [s/s] */ 470 double clock_driftrate; /* [s/s^2] */ 471 double Crs; /* [m] */ 472 double Delta_n; /* [rad/s] */ 473 double M0; /* [rad] */ 474 double Cuc; /* [rad] */ 475 double e; /* */ 476 double Cus; /* [rad] */ 477 double sqrt_A; /* [m^0.5] */ 478 double Cic; /* [rad] */ 479 double OMEGA0; /* [rad] */ 480 double Cis; /* [rad] */ 481 double i0; /* [rad] */ 482 double Crc; /* [m] */ 483 double omega; /* [rad] */ 484 double OMEGADOT; /* [rad/s] */ 485 double IDOT; /* [rad/s] */ 486 double TGD_B1_B3; /* [s] */ 487 double TGD_B2_B3; /* [s] */ 488 }; 489 455 490 struct DataInfo { 456 491 long long flags[RINEXENTRY_NUMBER]; … … 472 507 struct glonassephemeris ephemerisGLONASS; 473 508 struct sbasephemeris ephemerisSBAS; 509 struct bdsephemeris ephemerisBDS; 474 510 struct gnssdata DataNew; 475 511 int GLOFreq[PRN_GLONASS_NUM]; /* frequency numbers of GLONASS + 100 */ … … 502 538 char fieldbufferGLONASS[4*RINEXENTRY_NUMBER+1]; 503 539 char fieldbufferGALILEO[4*RINEXENTRY_NUMBER+1]; 504 char fieldbuffer COMPASS[4*RINEXENTRY_NUMBER+1];540 char fieldbufferBDS[4*RINEXENTRY_NUMBER+1]; 505 541 char fieldbufferQZSS[4*RINEXENTRY_NUMBER+1]; 506 542 int numdatafields; /* for RTCM2 */ … … 515 551 const char * qzssephemeris; 516 552 const char * sbasephemeris; 553 const char * bdsephemeris; 517 554 FILE * glonassfile; 518 555 FILE * gpsfile; 519 556 FILE * qzssfile; 520 557 FILE * sbasfile; 558 FILE * bdsfile; 521 559 }; 522 560
Note:
See TracChangeset
for help on using the changeset viewer.