Changeset 11031 in ntrip
- Timestamp:
- Sep 18, 2026, 9:54:17 AM (14 hours ago)
- Location:
- trunk/BNC/src/RTCM3
- Files:
-
- 10 edited
-
RTCM3Decoder.cpp (modified) (2 diffs)
-
RTCM3coDecoder.cpp (modified) (2 diffs)
-
RTCM3coDecoder.h (modified) (1 diff)
-
clock_and_orbit/clock_orbit.h (modified) (3 diffs)
-
clock_and_orbit/clock_orbit_igs.cpp (modified) (6 diffs)
-
clock_and_orbit/clock_orbit_igs.h (modified) (1 diff)
-
clock_and_orbit/clock_orbit_rtcm.cpp (modified) (12 diffs)
-
clock_and_orbit/clock_orbit_rtcm.h (modified) (1 diff)
-
clock_and_orbit/clock_orbit_rtcm_new.cpp (modified) (32 diffs)
-
clock_and_orbit/clock_orbit_rtcm_new.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/BNC/src/RTCM3/RTCM3Decoder.cpp
r11029 r11031 2263 2263 if ((id >= 1057 && id <= 1068) || 2264 2264 (id >= 1240 && id <= 1270) || 2265 //(id > 0 && id <= 100) ||2265 (id > 0 && id <= 100) || 2266 2266 (id == 4076)) { 2267 2267 if (!_coDecoders.contains(_staID.toLatin1())) { … … 2271 2271 } 2272 2272 else { 2273 //_coDecoders[_staID.toLatin1()]->initSsrFormatType(RTCM3coDecoder::RTCMnewssr);2274 _coDecoders[_staID.toLatin1()]->initSsrFormatType(RTCM3coDecoder::RTCMssr); 2273 _coDecoders[_staID.toLatin1()]->initSsrFormatType(RTCM3coDecoder::RTCMnewssr); 2274 // _coDecoders[_staID.toLatin1()]->initSsrFormatType(RTCM3coDecoder::RTCMssr); 2275 2275 } 2276 2276 } -
trunk/BNC/src/RTCM3/RTCM3coDecoder.cpp
r11024 r11031 190 190 struct SsrCorr::VTEC vTECSav; 191 191 struct SsrCorr::MetaData metaDataSav; 192 struct SsrCorr::Antenna antennaSav; 192 193 // save state 193 194 memcpy(&clkOrbSav, &_clkOrb, sizeof(clkOrbSav)); … … 196 197 memcpy(&vTECSav, &_vTEC, sizeof(vTECSav)); 197 198 memcpy(&metaDataSav, &_metaData, sizeof(metaDataSav)); 199 memcpy(&antennaSav, &_antenna, sizeof(antennaSav)); 198 200 199 201 int bytesused = 0; 200 202 201 GCOB_RETURN irc = _ssrCorr->GetSSR(&_clkOrb, &_codeBias, &_vTEC, &_phaseBias, &_metaData, 203 GCOB_RETURN irc = _ssrCorr->GetSSR(&_clkOrb, &_codeBias, &_vTEC, &_phaseBias, &_metaData, &_antenna, 202 204 _buffer.data(), _buffer.size(), &bytesused); 203 205 -
trunk/BNC/src/RTCM3/RTCM3coDecoder.h
r11024 r11031 85 85 SsrCorr::VTEC _vTEC; 86 86 SsrCorr::MetaData _metaData; 87 SsrCorr::Antenna _antenna; 87 88 int _providerID[3]; 88 89 e_type _type; -
trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit.h
r11008 r11031 32 32 CLOCKORBIT_NUMGLONASS = t_prn::MAXPRN_GLONASS, 33 33 CLOCKORBIT_NUMGALILEO = t_prn::MAXPRN_GALILEO, 34 CLOCKORBIT_NUMQZSS = t_prn::MAXPRN_QZSS, 35 CLOCKORBIT_NUMSBAS = t_prn::MAXPRN_SBAS, 36 CLOCKORBIT_NUMBDS = t_prn::MAXPRN_BDS, 37 CLOCKORBIT_NUMBIAS = 150, 38 VTEC_NUMIONOLAYERS = 4, 39 VTEC_MAXIONOORDER = 16, 40 VTEC_MAXIONODEGREE = 16, 41 META_MAXNUMENTRIES = 7 34 CLOCKORBIT_NUMQZSS = t_prn::MAXPRN_QZSS, 35 CLOCKORBIT_NUMSBAS = t_prn::MAXPRN_SBAS, 36 CLOCKORBIT_NUMBDS = t_prn::MAXPRN_BDS, 37 CLOCKORBIT_NUMBIAS = 150, 38 VTEC_NUMIONOLAYERS = 4, 39 VTEC_MAXIONOORDER = 16, 40 VTEC_MAXIONODEGREE = 16, 41 META_MAXNUMENTRIES = 7, 42 ANT_MAXFREQUENCIES = 6, 43 ANT_MAXNADIRDEGREES = 40 42 44 }; 43 45 … … 475 477 }; 476 478 479 struct Antenna { 480 unsigned int SSRProviderID; 481 unsigned int SatelliteAntennaIOD; 482 unsigned int PhaseCenterInformationIndicator; 483 unsigned int GroupDelayInformationIndicator; 484 unsigned int NadirAngleDependentCorrectionIndicator; 485 unsigned int maximumOffNadirAngle; 486 unsigned int NadirAngleDependentCorrectionRangeExtension; 487 unsigned int SatelliteSetIndicator; 488 unsigned int SatelliteMask; 489 struct SatellitePart { 490 unsigned int FrequencySetIndicator; 491 unsigned int GnssFrequencyMask; 492 struct FrequencyPart { 493 unsigned int NadirCorrectionIndicator; 494 int NadirCorrection; 495 int NadirAngleCorrection[ANT_MAXNADIRDEGREES]; 496 } Freq[ANT_MAXFREQUENCIES]; 497 } Sat[CLOCKORBIT_COUNTSAT]; 498 } GNSS[CLOCKORBIT_SATNUM]; 499 477 500 /* return size of resulting data or 0 in case of an error */ 478 501 virtual size_t MakeClockOrbit(const struct ClockOrbit* co, CodeType type, int moremessagesfollow, char* buffer, size_t size) = 0; … … 482 505 /* buffer should point to a RTCM3 block */ 483 506 virtual enum GCOB_RETURN GetSSR(struct ClockOrbit* co, 484 struct CodeBias* b, struct VTEC* v, 507 struct CodeBias* cb, struct VTEC* v, 485 508 struct PhaseBias* pb, 486 509 struct MetaData* md, 510 struct Antenna* a, 487 511 const char* buffer, size_t size, int* bytesused) = 0; 488 512 -
trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit_igs.cpp
r11029 r11031 205 205 } 206 206 207 size_t SsrCorrIgs::MakeCodeBias(const struct CodeBias *b, CodeBiasType type, 207 size_t SsrCorrIgs::MakeCodeBias(const struct CodeBias *cb, CodeBiasType type, 208 208 int moremessagesfollow, char *buffer, size_t size) { 209 209 unsigned int s, i, j; … … 212 212 213 213 for (s = 0; s < CLOCKORBIT_SATNUM; ++s) { 214 if (b->NumberOfSat[s] && (type == CBTYPE_AUTO || type == corbase[s] + COBOFS_CBIAS)) { 214 if (cb->NumberOfSat[s] && (type == CBTYPE_AUTO || type == corbase[s] + COBOFS_CBIAS)) { 215 215 INITBLOCK 216 216 E_RTCM_MESSAGE_NUMBER(RTCM_MESSAGE_NUMBER_IGS) 217 217 E_IGS_SSR_VERSION(IGS_SSR_VERSION) 218 218 E_IGS_MESSAGE_NUMBER(corbase[s] + COBOFS_CBIAS) 219 E_GPS_EPOCH_TIME(b->EpochTime[s]) 220 E_SSR_UPDATE_INTERVAL(b->UpdateInterval) 219 E_GPS_EPOCH_TIME(cb->EpochTime[s]) 220 E_SSR_UPDATE_INTERVAL(cb->UpdateInterval) 221 221 E_MULTIPLE_MESSAGE_INDICATOR(moremessagesfollow ? 1 : 0) 222 E_SSR_IOD(b->SSRIOD) 223 E_SSR_PROVIDER_ID(b->SSRProviderID) 224 E_SSR_SOLUTION_ID(b->SSRSolutionID) 225 E_NO_OF_SATELLITES(b->NumberOfSat[s]) 226 for (i = satoffset[s]; i < satoffset[s] + b->NumberOfSat[s]; ++i) { 227 E_GPS_SATELLITE_ID(b->Sat[i].ID) 228 E_NO_OF_BIASES(b->Sat[i].NumberOfCodeBiases) 229 for (j = 0; j < b->Sat[i].NumberOfCodeBiases; ++j) { 230 E_GNSS_SIGNAL_IDENTIFIER(b->Sat[i].Biases[j].Type) 231 E_CODE_BIAS(b->Sat[i].Biases[j].Bias) 222 E_SSR_IOD(cb->SSRIOD) 223 E_SSR_PROVIDER_ID(cb->SSRProviderID) 224 E_SSR_SOLUTION_ID(cb->SSRSolutionID) 225 E_NO_OF_SATELLITES(cb->NumberOfSat[s]) 226 for (i = satoffset[s]; i < satoffset[s] + cb->NumberOfSat[s]; ++i) { 227 E_GPS_SATELLITE_ID(cb->Sat[i].ID) 228 E_NO_OF_BIASES(cb->Sat[i].NumberOfCodeBiases) 229 for (j = 0; j < cb->Sat[i].NumberOfCodeBiases; ++j) { 230 E_GNSS_SIGNAL_IDENTIFIER(cb->Sat[i].Biases[j].Type) 231 E_CODE_BIAS(cb->Sat[i].Biases[j].Bias) 232 232 } 233 233 } … … 238 238 } 239 239 240 size_t SsrCorrIgs::MakePhaseBias(const struct PhaseBias *b, PhaseBiasType type, 240 size_t SsrCorrIgs::MakePhaseBias(const struct PhaseBias *pb, PhaseBiasType type, 241 241 int moremessagesfollow, char *buffer, size_t size) { 242 242 unsigned int s, i, j; … … 245 245 246 246 for (s = 0; s < CLOCKORBIT_SATNUM; ++s) { 247 if (b->NumberOfSat[s] && (type == PBTYPE_AUTO || type == corbase[s] + COBOFS_PBIAS)) { 247 if (pb->NumberOfSat[s] && (type == PBTYPE_AUTO || type == corbase[s] + COBOFS_PBIAS)) { 248 248 INITBLOCK 249 249 E_RTCM_MESSAGE_NUMBER(RTCM_MESSAGE_NUMBER_IGS) 250 250 E_IGS_SSR_VERSION(IGS_SSR_VERSION) 251 251 E_IGS_MESSAGE_NUMBER(corbase[s] + COBOFS_PBIAS) 252 E_GPS_EPOCH_TIME(b->EpochTime[s]) 253 E_SSR_UPDATE_INTERVAL(b->UpdateInterval) 252 E_GPS_EPOCH_TIME(pb->EpochTime[s]) 253 E_SSR_UPDATE_INTERVAL(pb->UpdateInterval) 254 254 E_MULTIPLE_MESSAGE_INDICATOR(moremessagesfollow ? 1 : 0) 255 E_SSR_IOD(b->SSRIOD) 256 E_SSR_PROVIDER_ID(b->SSRProviderID) 257 E_SSR_SOLUTION_ID(b->SSRSolutionID) 258 E_DISPERSIVE_BIAS_INDICATOR(b->DispersiveBiasConsistencyIndicator ? 1 : 0) 259 E_MW_CONSISTENCY_INDICATOR(b->MWConsistencyIndicator ? 1 : 0) 260 E_NO_OF_SATELLITES(b->NumberOfSat[s]) 261 for (i = satoffset[s]; i < satoffset[s] + b->NumberOfSat[s]; ++i) { 262 E_GPS_SATELLITE_ID(b->Sat[i].ID) 263 E_NO_OF_BIASES(b->Sat[i].NumberOfPhaseBiases) 264 E_YAW_ANGLE(b->Sat[i].YawAngle) 265 E_YAW_RATE(b->Sat[i].YawRate) 266 for (j = 0; j < b->Sat[i].NumberOfPhaseBiases; ++j) { 267 E_GNSS_SIGNAL_IDENTIFIER(b->Sat[i].Biases[j].Type) 268 E_INTEGER_INDICATOR(b->Sat[i].Biases[j].IntegerIndicator ? 1 : 0) 269 E_WIDE_LANE_INDICATOR(b->Sat[i].Biases[j].WidelaneGroupIndicator) 270 E_DISCONTINUITY_COUNTER(b->Sat[i].Biases[j].DiscontinuityCounter) 271 E_PHASE_BIAS_CORRECTION(b->Sat[i].Biases[j].Bias) 255 E_SSR_IOD(pb->SSRIOD) 256 E_SSR_PROVIDER_ID(pb->SSRProviderID) 257 E_SSR_SOLUTION_ID(pb->SSRSolutionID) 258 E_DISPERSIVE_BIAS_INDICATOR(pb->DispersiveBiasConsistencyIndicator ? 1 : 0) 259 E_MW_CONSISTENCY_INDICATOR(pb->MWConsistencyIndicator ? 1 : 0) 260 E_NO_OF_SATELLITES(pb->NumberOfSat[s]) 261 for (i = satoffset[s]; i < satoffset[s] + pb->NumberOfSat[s]; ++i) { 262 E_GPS_SATELLITE_ID(pb->Sat[i].ID) 263 E_NO_OF_BIASES(pb->Sat[i].NumberOfPhaseBiases) 264 E_YAW_ANGLE(pb->Sat[i].YawAngle) 265 E_YAW_RATE(pb->Sat[i].YawRate) 266 for (j = 0; j < pb->Sat[i].NumberOfPhaseBiases; ++j) { 267 E_GNSS_SIGNAL_IDENTIFIER(pb->Sat[i].Biases[j].Type) 268 E_INTEGER_INDICATOR(pb->Sat[i].Biases[j].IntegerIndicator ? 1 : 0) 269 E_WIDE_LANE_INDICATOR(pb->Sat[i].Biases[j].WidelaneGroupIndicator) 270 E_DISCONTINUITY_COUNTER(pb->Sat[i].Biases[j].DiscontinuityCounter) 271 E_PHASE_BIAS_CORRECTION(pb->Sat[i].Biases[j].Bias) 272 272 } 273 273 } … … 314 314 } 315 315 316 enum GCOB_RETURN SsrCorrIgs::GetSSR(struct ClockOrbit *co, struct CodeBias *b,struct VTEC *v, 317 struct PhaseBias *pb, struct MetaData *md, const char *buffer, size_t size, int *bytesused) { 316 enum GCOB_RETURN SsrCorrIgs::GetSSR(struct ClockOrbit *co, struct CodeBias *cb,struct VTEC *v, 317 struct PhaseBias *pb, struct MetaData *md, struct Antenna* a, const char *buffer, size_t size, int *bytesused) { 318 318 int mmi = 0, h, rs; 319 319 unsigned int igstype, pos, i, j, s, nums, id; … … 617 617 } 618 618 else if (corrOffset == COBOFS_CBIAS) { 619 if (!b) 619 if (!cb) 620 620 return GCOBR_NOCODEBIASPARAMETER; 621 b->messageType = igstype; 622 D_GPS_EPOCH_TIME_CHECK(b->EpochTime[s], b->NumberOfSat[s]) 623 D_SSR_UPDATE_INTERVAL(b->UpdateInterval) 621 cb->messageType = igstype; 622 D_GPS_EPOCH_TIME_CHECK(cb->EpochTime[s], cb->NumberOfSat[s]) 623 D_SSR_UPDATE_INTERVAL(cb->UpdateInterval) 624 624 D_MULTIPLE_MESSAGE_INDICATOR(mmi) 625 D_SSR_IOD(b->SSRIOD) 626 D_SSR_PROVIDER_ID(b->SSRProviderID) 627 D_SSR_SOLUTION_ID(b->SSRSolutionID) 625 D_SSR_IOD(cb->SSRIOD) 626 D_SSR_PROVIDER_ID(cb->SSRProviderID) 627 D_SSR_SOLUTION_ID(cb->SSRSolutionID) 628 628 D_NO_OF_SATELLITES(nums) 629 629 #ifdef BNC_DEBUG_SSR 630 630 fprintf(stderr, "epochTime %d ui %d mmi %d sats %d/%d ssrIod %d providerId %d solId %d\n", 631 b->EpochTime[s], b->UpdateInterval,mmi,b->NumberOfSat[s],nums, 632 b->SSRIOD, b->SSRProviderID, b->SSRSolutionID); 631 cb->EpochTime[s], cb->UpdateInterval,mmi,cb->NumberOfSat[s],nums, 632 cb->SSRIOD, cb->SSRProviderID, cb->SSRSolutionID); 633 633 #endif 634 634 for (i = 0; i < nums; ++i) { 635 635 D_GPS_SATELLITE_ID(id) 636 636 for (pos = satoffset[s]; 637 pos < satoffset[s] + b->NumberOfSat[s] && b->Sat[pos].ID != id; 637 pos < satoffset[s] + cb->NumberOfSat[s] && cb->Sat[pos].ID != id; 638 638 ++pos) 639 639 ; 640 640 if (pos >= satoffset[s + 1]) 641 641 return GCOBR_DATAMISMATCH; 642 else if (pos == b->NumberOfSat[s] + satoffset[s]) 643 ++b->NumberOfSat[s]; 644 b->Sat[pos].ID = id; 645 D_NO_OF_BIASES(b->Sat[pos].NumberOfCodeBiases) 642 else if (pos == cb->NumberOfSat[s] + satoffset[s]) 643 ++cb->NumberOfSat[s]; 644 cb->Sat[pos].ID = id; 645 D_NO_OF_BIASES(cb->Sat[pos].NumberOfCodeBiases) 646 646 #ifdef BNC_DEBUG_SSR 647 647 fprintf(stderr, "id %2d #%d ", 648 b->Sat[pos].ID, b->Sat[pos].NumberOfCodeBiases); 649 #endif 650 for (j = 0; j < b->Sat[pos].NumberOfCodeBiases; ++j) { 651 D_GNSS_SIGNAL_IDENTIFIER(b->Sat[pos].Biases[j].Type) 652 D_CODE_BIAS(b->Sat[pos].Biases[j].Bias) 648 cb->Sat[pos].ID, cb->Sat[pos].NumberOfCodeBiases); 649 #endif 650 for (j = 0; j < cb->Sat[pos].NumberOfCodeBiases; ++j) { 651 D_GNSS_SIGNAL_IDENTIFIER(cb->Sat[pos].Biases[j].Type) 652 D_CODE_BIAS(cb->Sat[pos].Biases[j].Bias) 653 653 #ifdef BNC_DEBUG_SSR 654 654 fprintf(stderr, "t%02d b %8.2f ", 655 b->Sat[pos].Biases[j].Type, b->Sat[pos].Biases[j].Bias); 655 cb->Sat[pos].Biases[j].Type, cb->Sat[pos].Biases[j].Bias); 656 656 #endif 657 657 } -
trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit_igs.h
r11004 r11031 221 221 SsrCorr::CodeType rnxTypeToCodeType(char system, std::string type); 222 222 223 size_t MakeClockOrbit(const struct ClockOrbit *co, ClockOrbitType type, 224 int moremessagesfollow, char *buffer, size_t size); 225 size_t MakeCodeBias(const struct CodeBias *b, CodeBiasType type, 226 int moremessagesfollow, char *buffer, size_t size); 227 size_t MakePhaseBias(const struct PhaseBias *b, PhaseBiasType type, 228 int moremessagesfollow, char *buffer, size_t size); 229 size_t MakeVTEC(const struct VTEC *v, int moremessagesfollow, char *buffer, 230 size_t size); 231 enum GCOB_RETURN GetSSR(struct ClockOrbit *co, struct CodeBias *b, 232 struct VTEC *v, struct PhaseBias *pb, struct MetaData *md, 233 const char *buffer, size_t size, int *bytesused); 234 }; 223 size_t MakeClockOrbit(const struct ClockOrbit *co, ClockOrbitType type, int moremessagesfollow, char *buffer, size_t size); 224 size_t MakeCodeBias(const struct CodeBias *b, CodeBiasType type, int moremessagesfollow, char *buffer, size_t size); 225 size_t MakePhaseBias(const struct PhaseBias *b, PhaseBiasType type, int moremessagesfollow, char *buffer, size_t size); 226 size_t MakeVTEC(const struct VTEC *v, int moremessagesfollow, char *buffer, size_t size); 227 size_t MakeMetaData(const struct MetaData *md, char *buffer, size_t size); 228 enum GCOB_RETURN GetSSR(struct ClockOrbit *co, struct CodeBias *cb, struct VTEC *v, 229 struct PhaseBias *pb, struct MetaData *md, struct Antenna* a, 230 const char *buffer, size_t size, int *bytesused); 231 }; 235 232 236 233 #endif /* RTCM3_CLOCK_ORBIT_IGS_H */ -
trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit_rtcm.cpp
r11029 r11031 345 345 } 346 346 347 size_t SsrCorrRtcm::MakeCodeBias(const struct CodeBias *b, CodeBiasType type, 347 size_t SsrCorrRtcm::MakeCodeBias(const struct CodeBias *cb, CodeBiasType type, 348 348 int moremessagesfollow, char *buffer, size_t size) { 349 349 unsigned int s, i, j; … … 352 352 353 353 for (s = 0; s < CLOCKORBIT_SATNUM; ++s) { 354 if (b->NumberOfSat[s] && (type == CBTYPE_AUTO || type == corbase[s] + COBOFS_CBIAS)) { 354 if (cb->NumberOfSat[s] && (type == CBTYPE_AUTO || type == corbase[s] + COBOFS_CBIAS)) { 355 355 INITBLOCK 356 356 E_RTCM_MESSAGE_NUMBER(corbase[s] + COBOFS_CBIAS) … … 361 361 case CLOCKORBIT_SATSBAS: 362 362 case CLOCKORBIT_SATBDS: 363 E_GPS_EPOCH_TIME(b->EpochTime[s]) 363 E_GPS_EPOCH_TIME(cb->EpochTime[s]) 364 364 break; 365 365 case CLOCKORBIT_SATGLONASS: 366 E_GLONASS_EPOCH_TIME(b->EpochTime[s]) 367 break; 368 } 369 E_SSR_UPDATE_INTERVAL(b->UpdateInterval) 366 E_GLONASS_EPOCH_TIME(cb->EpochTime[s]) 367 break; 368 } 369 E_SSR_UPDATE_INTERVAL(cb->UpdateInterval) 370 370 E_MULTIPLE_MESSAGE_INDICATOR(moremessagesfollow ? 1 : 0) 371 E_SSR_IOD(b->SSRIOD) 372 E_SSR_PROVIDER_ID(b->SSRProviderID) 373 E_SSR_SOLUTION_ID(b->SSRSolutionID) 374 E_NO_OF_SATELLITES(b->NumberOfSat[s]) 375 for (i = satoffset[s]; i < satoffset[s] + b->NumberOfSat[s]; ++i) { 371 E_SSR_IOD(cb->SSRIOD) 372 E_SSR_PROVIDER_ID(cb->SSRProviderID) 373 E_SSR_SOLUTION_ID(cb->SSRSolutionID) 374 E_NO_OF_SATELLITES(cb->NumberOfSat[s]) 375 for (i = satoffset[s]; i < satoffset[s] + cb->NumberOfSat[s]; ++i) { 376 376 switch (s) { 377 377 case CLOCKORBIT_SATGPS: … … 379 379 case CLOCKORBIT_SATSBAS: 380 380 case CLOCKORBIT_SATBDS: 381 E_GPS_SATELLITE_ID(b->Sat[i].ID) 381 E_GPS_SATELLITE_ID(cb->Sat[i].ID) 382 382 break; 383 383 case CLOCKORBIT_SATQZSS: 384 E_QZSS_SATELLITE_ID_OLD(b->Sat[i].ID) 384 E_QZSS_SATELLITE_ID_OLD(cb->Sat[i].ID) 385 385 break; 386 386 case CLOCKORBIT_SATGLONASS: 387 E_GLONASS_SATELLITE_ID(b->Sat[i].ID) 387 E_GLONASS_SATELLITE_ID(cb->Sat[i].ID) 388 388 break; 389 389 } 390 E_NO_OF_BIASES(b->Sat[i].NumberOfCodeBiases) 391 for (j = 0; j < b->Sat[i].NumberOfCodeBiases; ++j) { 392 E_GNSS_SIGNAL_IDENTIFIER(b->Sat[i].Biases[j].Type) 393 E_CODE_BIAS(b->Sat[i].Biases[j].Bias) 390 E_NO_OF_BIASES(cb->Sat[i].NumberOfCodeBiases) 391 for (j = 0; j < cb->Sat[i].NumberOfCodeBiases; ++j) { 392 E_GNSS_SIGNAL_IDENTIFIER(cb->Sat[i].Biases[j].Type) 393 E_CODE_BIAS(cb->Sat[i].Biases[j].Bias) 394 394 } 395 395 } … … 400 400 } 401 401 402 size_t SsrCorrRtcm::MakePhaseBias(const struct PhaseBias *b, PhaseBiasType type, 402 size_t SsrCorrRtcm::MakePhaseBias(const struct PhaseBias *pb, PhaseBiasType type, 403 403 int moremessagesfollow, char *buffer, size_t size) { 404 404 unsigned int s, i, j; … … 407 407 408 408 for (s = 0; s < CLOCKORBIT_SATNUM; ++s) { 409 if (b->NumberOfSat[s] && (type == PBTYPE_AUTO || type == s + PBTYPE_BASE)) { 409 if (pb->NumberOfSat[s] && (type == PBTYPE_AUTO || type == s + PBTYPE_BASE)) { 410 410 INITBLOCK 411 411 E_RTCM_MESSAGE_NUMBER(s + PBTYPE_BASE) … … 416 416 case CLOCKORBIT_SATSBAS: 417 417 case CLOCKORBIT_SATBDS: 418 E_GPS_EPOCH_TIME(b->EpochTime[s]) 418 E_GPS_EPOCH_TIME(pb->EpochTime[s]) 419 419 break; 420 420 case CLOCKORBIT_SATGLONASS: 421 E_GLONASS_EPOCH_TIME(b->EpochTime[s]) 422 break; 423 } 424 E_SSR_UPDATE_INTERVAL(b->UpdateInterval) 421 E_GLONASS_EPOCH_TIME(pb->EpochTime[s]) 422 break; 423 } 424 E_SSR_UPDATE_INTERVAL(pb->UpdateInterval) 425 425 E_MULTIPLE_MESSAGE_INDICATOR(moremessagesfollow ? 1 : 0) 426 E_SSR_IOD(b->SSRIOD) 427 E_SSR_PROVIDER_ID(b->SSRProviderID) 428 E_SSR_SOLUTION_ID(b->SSRSolutionID) 429 E_DISPERSIVE_BIAS_INDICATOR(b->DispersiveBiasConsistencyIndicator ? 1 : 0) 430 E_MW_CONSISTENCY_INDICATOR(b->MWConsistencyIndicator ? 1 : 0) 431 E_NO_OF_SATELLITES(b->NumberOfSat[s]) 432 for (i = satoffset[s]; i < satoffset[s] + b->NumberOfSat[s]; ++i) { 426 E_SSR_IOD(pb->SSRIOD) 427 E_SSR_PROVIDER_ID(pb->SSRProviderID) 428 E_SSR_SOLUTION_ID(pb->SSRSolutionID) 429 E_DISPERSIVE_BIAS_INDICATOR(pb->DispersiveBiasConsistencyIndicator ? 1 : 0) 430 E_MW_CONSISTENCY_INDICATOR(pb->MWConsistencyIndicator ? 1 : 0) 431 E_NO_OF_SATELLITES(pb->NumberOfSat[s]) 432 for (i = satoffset[s]; i < satoffset[s] + pb->NumberOfSat[s]; ++i) { 433 433 switch (s) { 434 434 case CLOCKORBIT_SATGPS: … … 436 436 case CLOCKORBIT_SATSBAS: 437 437 case CLOCKORBIT_SATBDS: 438 E_GPS_SATELLITE_ID(b->Sat[i].ID) 438 E_GPS_SATELLITE_ID(pb->Sat[i].ID) 439 439 break; 440 440 case CLOCKORBIT_SATQZSS: 441 E_QZSS_SATELLITE_ID_OLD(b->Sat[i].ID) 441 E_QZSS_SATELLITE_ID_OLD(pb->Sat[i].ID) 442 442 break; 443 443 case CLOCKORBIT_SATGLONASS: 444 E_GLONASS_SATELLITE_ID(b->Sat[i].ID) 444 E_GLONASS_SATELLITE_ID(pb->Sat[i].ID) 445 445 break; 446 446 } 447 E_NO_OF_BIASES(b->Sat[i].NumberOfPhaseBiases) 448 E_YAW_ANGLE(b->Sat[i].YawAngle) 449 E_YAW_RATE(b->Sat[i].YawRate) 450 for (j = 0; j < b->Sat[i].NumberOfPhaseBiases; ++j) { 451 E_GNSS_SIGNAL_IDENTIFIER(b->Sat[i].Biases[j].Type) 452 E_INTEGER_INDICATOR(b->Sat[i].Biases[j].IntegerIndicator ? 1 : 0) 453 E_WIDE_LANE_INDICATOR(b->Sat[i].Biases[j].WidelaneGroupIndicator) 454 E_DISCONTINUITY_COUNTER(b->Sat[i].Biases[j].DiscontinuityCounter) 455 E_PHASE_BIAS_CORRECTION(b->Sat[i].Biases[j].Bias) 447 E_NO_OF_BIASES(pb->Sat[i].NumberOfPhaseBiases) 448 E_YAW_ANGLE(pb->Sat[i].YawAngle) 449 E_YAW_RATE(pb->Sat[i].YawRate) 450 for (j = 0; j < pb->Sat[i].NumberOfPhaseBiases; ++j) { 451 E_GNSS_SIGNAL_IDENTIFIER(pb->Sat[i].Biases[j].Type) 452 E_INTEGER_INDICATOR(pb->Sat[i].Biases[j].IntegerIndicator ? 1 : 0) 453 E_WIDE_LANE_INDICATOR(pb->Sat[i].Biases[j].WidelaneGroupIndicator) 454 E_DISCONTINUITY_COUNTER(pb->Sat[i].Biases[j].DiscontinuityCounter) 455 E_PHASE_BIAS_CORRECTION(pb->Sat[i].Biases[j].Bias) 456 456 } 457 457 } … … 495 495 } 496 496 497 enum GCOB_RETURN SsrCorrRtcm::GetSSR(struct ClockOrbit *co, struct CodeBias *b,struct VTEC *v, 498 struct PhaseBias *pb, struct MetaData *md, const char *buffer, size_t size, int *bytesused) { 497 enum GCOB_RETURN SsrCorrRtcm::GetSSR(struct ClockOrbit *co, struct CodeBias *cb,struct VTEC *v, 498 struct PhaseBias *pb, struct MetaData *md, struct Antenna* a, const char *buffer, size_t size, int *bytesused) { 499 499 int mmi = 0, h, rs; 500 500 unsigned int type, pos, i, j, s, nums, id; … … 1049 1049 } 1050 1050 else if (corrOffset == COBOFS_CBIAS) { 1051 if (!b) 1051 if (!cb) 1052 1052 return GCOBR_NOCODEBIASPARAMETER; 1053 b->messageType = type; 1053 cb->messageType = type; 1054 1054 switch (s) { 1055 1055 case CLOCKORBIT_SATGPS: … … 1058 1058 case CLOCKORBIT_SATSBAS: 1059 1059 case CLOCKORBIT_SATBDS: 1060 D_GPS_EPOCH_TIME_CHECK(b->EpochTime[s], b->NumberOfSat[s]) 1060 D_GPS_EPOCH_TIME_CHECK(cb->EpochTime[s], cb->NumberOfSat[s]) 1061 1061 break; 1062 1062 case CLOCKORBIT_SATGLONASS: 1063 D_GLONASS_EPOCH_TIME_CHECK(b->EpochTime[s], b->NumberOfSat[s]) 1063 D_GLONASS_EPOCH_TIME_CHECK(cb->EpochTime[s], cb->NumberOfSat[s]) 1064 1064 break; 1065 1065 } 1066 D_SSR_UPDATE_INTERVAL(b->UpdateInterval) 1066 D_SSR_UPDATE_INTERVAL(cb->UpdateInterval) 1067 1067 D_MULTIPLE_MESSAGE_INDICATOR(mmi) 1068 D_SSR_IOD(b->SSRIOD) 1069 D_SSR_PROVIDER_ID(b->SSRProviderID) 1070 D_SSR_SOLUTION_ID(b->SSRSolutionID) 1068 D_SSR_IOD(cb->SSRIOD) 1069 D_SSR_PROVIDER_ID(cb->SSRProviderID) 1070 D_SSR_SOLUTION_ID(cb->SSRSolutionID) 1071 1071 D_NO_OF_SATELLITES(nums) 1072 1072 #ifdef BNC_DEBUG_SSR 1073 1073 fprintf(stderr, "epochTime %d ui %d mmi %d sats %d/%d ssrIod %d providerId %d solId %d\n", 1074 b->EpochTime[s], b->UpdateInterval,mmi,b->NumberOfSat[s],nums, 1075 b->SSRIOD, b->SSRProviderID, b->SSRSolutionID); 1074 cb->EpochTime[s], cb->UpdateInterval,mmi,cb->NumberOfSat[s],nums, 1075 cb->SSRIOD, cb->SSRProviderID, cb->SSRSolutionID); 1076 1076 #endif 1077 1077 for (i = 0; i < nums; ++i) { … … 1091 1091 } 1092 1092 for (pos = satoffset[s]; 1093 pos < satoffset[s] + b->NumberOfSat[s] && b->Sat[pos].ID != id; 1093 pos < satoffset[s] + cb->NumberOfSat[s] && cb->Sat[pos].ID != id; 1094 1094 ++pos) 1095 1095 ; 1096 1096 if (pos >= satoffset[s + 1]) 1097 1097 return GCOBR_DATAMISMATCH; 1098 else if (pos == b->NumberOfSat[s] + satoffset[s]) 1099 ++b->NumberOfSat[s]; 1100 b->Sat[pos].ID = id; 1101 D_NO_OF_BIASES(b->Sat[pos].NumberOfCodeBiases) 1098 else if (pos == cb->NumberOfSat[s] + satoffset[s]) 1099 ++cb->NumberOfSat[s]; 1100 cb->Sat[pos].ID = id; 1101 D_NO_OF_BIASES(cb->Sat[pos].NumberOfCodeBiases) 1102 1102 #ifdef BNC_DEBUG_SSR 1103 1103 fprintf(stderr, "id %2d #%d ", 1104 b->Sat[pos].ID, b->Sat[pos].NumberOfCodeBiases); 1105 #endif 1106 for (j = 0; j < b->Sat[pos].NumberOfCodeBiases; ++j) { 1107 D_GNSS_SIGNAL_IDENTIFIER(b->Sat[pos].Biases[j].Type) 1108 D_CODE_BIAS(b->Sat[pos].Biases[j].Bias) 1104 cb->Sat[pos].ID, cb->Sat[pos].NumberOfCodeBiases); 1105 #endif 1106 for (j = 0; j < cb->Sat[pos].NumberOfCodeBiases; ++j) { 1107 D_GNSS_SIGNAL_IDENTIFIER(cb->Sat[pos].Biases[j].Type) 1108 D_CODE_BIAS(cb->Sat[pos].Biases[j].Bias) 1109 1109 #ifdef BNC_DEBUG_SSR 1110 1110 fprintf(stderr, "t%02d b %8.2f ", 1111 b->Sat[pos].Biases[j].Type, b->Sat[pos].Biases[j].Bias); 1111 cb->Sat[pos].Biases[j].Type, cb->Sat[pos].Biases[j].Bias); 1112 1112 #endif 1113 1113 } -
trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit_rtcm.h
r11004 r11031 220 220 SsrCorr::CodeType rnxTypeToCodeType(char system, std::string type); 221 221 222 size_t MakeClockOrbit(const struct ClockOrbit *co, ClockOrbitType type, 223 int moremessagesfollow, char *buffer, size_t size); 224 size_t MakeCodeBias(const struct CodeBias *b, CodeBiasType type, 225 int moremessagesfollow, char *buffer, size_t size); 226 size_t MakePhaseBias(const struct PhaseBias *b, PhaseBiasType type, 227 int moremessagesfollow, char *buffer, size_t size); 228 size_t MakeVTEC(const struct VTEC *v, int moremessagesfollow, char *buffer, 229 size_t size); 230 enum GCOB_RETURN GetSSR(struct ClockOrbit *co, struct CodeBias *b, 231 struct VTEC *v, struct PhaseBias *pb, struct MetaData *md, 232 const char *buffer, size_t size, 233 int *bytesused); 222 size_t MakeClockOrbit(const struct ClockOrbit *co, ClockOrbitType type, int moremessagesfollow, char *buffer, size_t size); 223 size_t MakeCodeBias(const struct CodeBias *b, CodeBiasType type, int moremessagesfollow, char *buffer, size_t size); 224 size_t MakePhaseBias(const struct PhaseBias *b, PhaseBiasType type, int moremessagesfollow, char *buffer, size_t size); 225 size_t MakeVTEC(const struct VTEC *v, int moremessagesfollow, char *buffer, size_t size); 226 size_t MakeMetaData(const struct MetaData *md, char *buffer, size_t size); 227 enum GCOB_RETURN GetSSR(struct ClockOrbit *co, struct CodeBias *cb, struct VTEC *v, 228 struct PhaseBias *pb, struct MetaData *md, struct Antenna* a, 229 const char *buffer, size_t size, int *bytesused); 234 230 }; 235 231 232 236 233 #endif /* RTCM3_CLOCK_ORBIT_RTCM_H */ -
trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit_rtcm_new.cpp
r11008 r11031 70 70 E_RTCM_MESSAGE_NUMBER(corType[s][COBOFS_ORBIT]) 71 71 switch (s) { 72 case CLOCKORBIT_SATGPS: 73 case CLOCKORBIT_SATGALILEO: 74 case CLOCKORBIT_SATQZSS: 75 case CLOCKORBIT_SATSBAS: 76 case CLOCKORBIT_SATBDS: 77 E_GPS_EPOCH_TIME(co->EpochTime[s]) 78 break; 79 case CLOCKORBIT_SATGLONASS: 72 case CLOCKORBIT_SATGPS: 73 case CLOCKORBIT_SATGALILEO: 74 case CLOCKORBIT_SATQZSS: 75 case CLOCKORBIT_SATSBAS: 76 case CLOCKORBIT_SATBDS: 77 E_GPS_EPOCH_TIME(co->EpochTime[s]) 78 break; 79 case CLOCKORBIT_SATGLONASS: 80 80 E_GLONASS_EPOCH_TIME(co->EpochTime[s]) 81 81 break; 82 82 } 83 E_SSR_UPDATE_INTERVAL(co->UpdateInterval) 83 E_SSR_UPDATE_INTERVAL(co->UpdateInterval) 84 84 E_MULTIPLE_MESSAGE_INDICATOR(moremessagesfollow ? 1 : 0) 85 85 E_SATELLITE_REFERENCE_DATUM(co->SatRefDatum) … … 90 90 for (i = satoffset[s]; i < satoffset[s] + co->NumberOfSat[s]; ++i) { 91 91 switch (s) { 92 case CLOCKORBIT_SATGPS: 93 E_GPS_SATELLITE_ID(co->Sat[i].ID) 92 case CLOCKORBIT_SATGPS: 93 E_GPS_SATELLITE_ID(co->Sat[i].ID) 94 94 E_GPS_IODE(co->Sat[i].IOD) 95 95 break; 96 case CLOCKORBIT_SATGLONASS: 97 E_GLONASS_SATELLITE_ID(co->Sat[i].ID) 96 case CLOCKORBIT_SATGLONASS: 97 E_GLONASS_SATELLITE_ID(co->Sat[i].ID) 98 98 E_GLONASS_IOD(co->Sat[i].IOD) 99 99 break; 100 case CLOCKORBIT_SATGALILEO: 101 E_GPS_SATELLITE_ID(co->Sat[i].ID) 100 case CLOCKORBIT_SATGALILEO: 101 E_GPS_SATELLITE_ID(co->Sat[i].ID) 102 102 E_GALILEO_IOD(co->Sat[i].IOD) 103 103 break; 104 case CLOCKORBIT_SATQZSS: 105 E_QZSS_SATELLITE_ID(co->Sat[i].ID) 104 case CLOCKORBIT_SATQZSS: 105 E_QZSS_SATELLITE_ID(co->Sat[i].ID) 106 106 E_GPS_IODE(co->Sat[i].IOD) 107 107 break; 108 case CLOCKORBIT_SATSBAS: 109 E_GPS_SATELLITE_ID(co->Sat[i].ID) 108 case CLOCKORBIT_SATSBAS: 109 E_GPS_SATELLITE_ID(co->Sat[i].ID) 110 110 E_SBAS_T0MOD(co->Sat[i].toe) 111 111 E_SBAS_IODCRC(co->Sat[i].IOD) 112 112 break; 113 case CLOCKORBIT_SATBDS: 114 E_GPS_SATELLITE_ID(co->Sat[i].ID) 113 case CLOCKORBIT_SATBDS: 114 E_GPS_SATELLITE_ID(co->Sat[i].ID) 115 115 E_BDS_IOD(co->Sat[i].IOD) 116 116 break; 117 117 } 118 118 E_DELTA_RADIAL(co->Sat[i].Orbit.DeltaRadial) 119 E_DELTA_ALONG_TRACK(co->Sat[i].Orbit.DeltaAlongTrack)120 E_DELTA_CROSS_TRACK(co->Sat[i].Orbit.DeltaCrossTrack)121 E_DOT_DELTA_RADIAL(co->Sat[i].Orbit.DotDeltaRadial)122 E_DOT_DELTA_ALONG_TRACK(co->Sat[i].Orbit.DotDeltaAlongTrack)123 E_DOT_DELTA_CROSS_TRACK(co->Sat[i].Orbit.DotDeltaCrossTrack)119 E_DELTA_ALONG_TRACK(co->Sat[i].Orbit.DeltaAlongTrack) 120 E_DELTA_CROSS_TRACK(co->Sat[i].Orbit.DeltaCrossTrack) 121 E_DOT_DELTA_RADIAL(co->Sat[i].Orbit.DotDeltaRadial) 122 E_DOT_DELTA_ALONG_TRACK(co->Sat[i].Orbit.DotDeltaAlongTrack) 123 E_DOT_DELTA_CROSS_TRACK(co->Sat[i].Orbit.DotDeltaCrossTrack) 124 124 } 125 125 ENDBLOCK … … 129 129 E_RTCM_MESSAGE_NUMBER(corType[s][COBOFS_CLOCK]) 130 130 switch (s) { 131 case CLOCKORBIT_SATGPS: 132 case CLOCKORBIT_SATGALILEO: 133 case CLOCKORBIT_SATQZSS: 134 case CLOCKORBIT_SATSBAS: 135 case CLOCKORBIT_SATBDS: 136 E_GPS_EPOCH_TIME(co->EpochTime[s]) 137 break; 138 case CLOCKORBIT_SATGLONASS: 139 E_GLONASS_EPOCH_TIME(co->EpochTime[s]) 140 break; 141 } 142 E_SSR_UPDATE_INTERVAL(co->UpdateInterval) 131 case CLOCKORBIT_SATGPS: 132 case CLOCKORBIT_SATGALILEO: 133 case CLOCKORBIT_SATQZSS: 134 case CLOCKORBIT_SATSBAS: 135 case CLOCKORBIT_SATBDS: 136 E_GPS_EPOCH_TIME(co->EpochTime[s]) 137 break; 138 case CLOCKORBIT_SATGLONASS: 139 E_GLONASS_EPOCH_TIME(co->EpochTime[s]) 140 break; 141 } 142 E_SSR_UPDATE_INTERVAL(co->UpdateInterval) 143 143 E_MULTIPLE_MESSAGE_INDICATOR(moremessagesfollow ? 1 : 0) 144 144 E_SSR_IOD(co->SSRIOD) … … 148 148 for (i = satoffset[s]; i < satoffset[s] + co->NumberOfSat[s]; ++i) { 149 149 E_GPS_SATELLITE_ID(co->Sat[i].ID) 150 E_DELTA_CLOCK_C0(co->Sat[i].Clock.DeltaA0)151 E_DELTA_CLOCK_C1(co->Sat[i].Clock.DeltaA1)152 E_DELTA_CLOCK_C2(co->Sat[i].Clock.DeltaA2)150 E_DELTA_CLOCK_C0(co->Sat[i].Clock.DeltaA0) 151 E_DELTA_CLOCK_C1(co->Sat[i].Clock.DeltaA1) 152 E_DELTA_CLOCK_C2(co->Sat[i].Clock.DeltaA2) 153 153 } 154 154 ENDBLOCK … … 170 170 E_RTCM_MESSAGE_NUMBER(corType[s][COBOFS_COMBINED]) 171 171 switch (s) { 172 case CLOCKORBIT_SATGPS: 173 case CLOCKORBIT_SATGALILEO: 174 case CLOCKORBIT_SATQZSS: 175 case CLOCKORBIT_SATSBAS: 176 case CLOCKORBIT_SATBDS: 177 E_GPS_EPOCH_TIME(co->EpochTime[s]) 178 break;179 case CLOCKORBIT_SATGLONASS: 180 E_GLONASS_EPOCH_TIME(co->EpochTime[s]) 172 case CLOCKORBIT_SATGPS: 173 case CLOCKORBIT_SATGALILEO: 174 case CLOCKORBIT_SATQZSS: 175 case CLOCKORBIT_SATSBAS: 176 case CLOCKORBIT_SATBDS: 177 E_GPS_EPOCH_TIME(co->EpochTime[s]) 178 break; 179 case CLOCKORBIT_SATGLONASS: 180 E_GLONASS_EPOCH_TIME(co->EpochTime[s]) 181 181 break; 182 182 } 183 E_SSR_UPDATE_INTERVAL(co->UpdateInterval) 183 E_SSR_UPDATE_INTERVAL(co->UpdateInterval) 184 184 #ifdef SPLITBLOCK 185 185 E_MULTIPLE_MESSAGE_INDICATOR((moremessagesfollow || left) ? 1 : 0) … … 200 200 { 201 201 switch (s) { 202 case CLOCKORBIT_SATGPS: 203 E_GPS_SATELLITE_ID(co->Sat[i].ID) 202 case CLOCKORBIT_SATGPS: 203 E_GPS_SATELLITE_ID(co->Sat[i].ID) 204 204 E_GPS_IODE(co->Sat[i].IOD) 205 205 break; 206 case CLOCKORBIT_SATGLONASS: 207 E_GLONASS_SATELLITE_ID(co->Sat[i].ID) 206 case CLOCKORBIT_SATGLONASS: 207 E_GLONASS_SATELLITE_ID(co->Sat[i].ID) 208 208 E_GLONASS_IOD(co->Sat[i].IOD) 209 209 break; 210 case CLOCKORBIT_SATGALILEO: 211 E_GPS_SATELLITE_ID(co->Sat[i].ID) 210 case CLOCKORBIT_SATGALILEO: 211 E_GPS_SATELLITE_ID(co->Sat[i].ID) 212 212 E_GALILEO_IOD(co->Sat[i].IOD) 213 213 break; 214 case CLOCKORBIT_SATQZSS: 215 E_QZSS_SATELLITE_ID(co->Sat[i].ID) 214 case CLOCKORBIT_SATQZSS: 215 E_QZSS_SATELLITE_ID(co->Sat[i].ID) 216 216 E_GPS_IODE(co->Sat[i].IOD) 217 217 break; 218 case CLOCKORBIT_SATSBAS: 219 E_GPS_SATELLITE_ID(co->Sat[i].ID) 218 case CLOCKORBIT_SATSBAS: 219 E_GPS_SATELLITE_ID(co->Sat[i].ID) 220 220 E_SBAS_T0MOD(co->Sat[i].toe) 221 221 E_SBAS_IODCRC(co->Sat[i].IOD) 222 222 break; 223 case CLOCKORBIT_SATBDS: 224 E_GPS_SATELLITE_ID(co->Sat[i].ID) 223 case CLOCKORBIT_SATBDS: 224 E_GPS_SATELLITE_ID(co->Sat[i].ID) 225 225 E_BDS_IOD(co->Sat[i].IOD) 226 226 break; 227 227 } 228 228 E_DELTA_RADIAL(co->Sat[i].Orbit.DeltaRadial) 229 E_DELTA_ALONG_TRACK(co->Sat[i].Orbit.DeltaAlongTrack)230 E_DELTA_CROSS_TRACK(co->Sat[i].Orbit.DeltaCrossTrack)231 E_DOT_DELTA_RADIAL(co->Sat[i].Orbit.DotDeltaRadial)232 E_DOT_DELTA_ALONG_TRACK(co->Sat[i].Orbit.DotDeltaAlongTrack)233 E_DOT_DELTA_CROSS_TRACK(co->Sat[i].Orbit.DotDeltaCrossTrack)234 E_DELTA_CLOCK_C0(co->Sat[i].Clock.DeltaA0)235 E_DELTA_CLOCK_C1(co->Sat[i].Clock.DeltaA1)236 E_DELTA_CLOCK_C2(co->Sat[i].Clock.DeltaA2)229 E_DELTA_ALONG_TRACK(co->Sat[i].Orbit.DeltaAlongTrack) 230 E_DELTA_CROSS_TRACK(co->Sat[i].Orbit.DeltaCrossTrack) 231 E_DOT_DELTA_RADIAL(co->Sat[i].Orbit.DotDeltaRadial) 232 E_DOT_DELTA_ALONG_TRACK(co->Sat[i].Orbit.DotDeltaAlongTrack) 233 E_DOT_DELTA_CROSS_TRACK(co->Sat[i].Orbit.DotDeltaCrossTrack) 234 E_DELTA_CLOCK_C0(co->Sat[i].Clock.DeltaA0) 235 E_DELTA_CLOCK_C1(co->Sat[i].Clock.DeltaA1) 236 E_DELTA_CLOCK_C2(co->Sat[i].Clock.DeltaA2) 237 237 } 238 238 ENDBLOCK … … 247 247 INITBLOCK 248 248 E_RTCM_MESSAGE_NUMBER(corType[s][COBOFS_HR]) 249 switch (s) {250 case CLOCKORBIT_SATGPS: 251 case CLOCKORBIT_SATGALILEO: 252 case CLOCKORBIT_SATQZSS: 253 case CLOCKORBIT_SATSBAS: 254 case CLOCKORBIT_SATBDS: 255 E_GPS_EPOCH_TIME(co->EpochTime[s]) 256 break; 257 case CLOCKORBIT_SATGLONASS: 258 E_GLONASS_EPOCH_TIME(co->EpochTime[s]) 259 break; 260 } 261 E_SSR_UPDATE_INTERVAL(co->UpdateInterval) 249 switch (s) { 250 case CLOCKORBIT_SATGPS: 251 case CLOCKORBIT_SATGALILEO: 252 case CLOCKORBIT_SATQZSS: 253 case CLOCKORBIT_SATSBAS: 254 case CLOCKORBIT_SATBDS: 255 E_GPS_EPOCH_TIME(co->EpochTime[s]) 256 break; 257 case CLOCKORBIT_SATGLONASS: 258 E_GLONASS_EPOCH_TIME(co->EpochTime[s]) 259 break; 260 } 261 E_SSR_UPDATE_INTERVAL(co->UpdateInterval) 262 262 E_MULTIPLE_MESSAGE_INDICATOR(moremessagesfollow ? 1 : 0) 263 263 E_SSR_IOD(co->SSRIOD) … … 275 275 E_RTCM_MESSAGE_NUMBER(corType[s][COBOFS_URA]) 276 276 switch (s) { 277 case CLOCKORBIT_SATGPS: 278 case CLOCKORBIT_SATGALILEO: 279 case CLOCKORBIT_SATQZSS: 280 case CLOCKORBIT_SATSBAS: 281 case CLOCKORBIT_SATBDS: 282 E_GPS_EPOCH_TIME(co->EpochTime[s]) 283 break; 284 case CLOCKORBIT_SATGLONASS: 285 E_GLONASS_EPOCH_TIME(co->EpochTime[s]) 286 break; 287 } 288 E_SSR_UPDATE_INTERVAL(co->UpdateInterval) 277 case CLOCKORBIT_SATGPS: 278 case CLOCKORBIT_SATGALILEO: 279 case CLOCKORBIT_SATQZSS: 280 case CLOCKORBIT_SATSBAS: 281 case CLOCKORBIT_SATBDS: 282 E_GPS_EPOCH_TIME(co->EpochTime[s]) 283 break; 284 case CLOCKORBIT_SATGLONASS: 285 E_GLONASS_EPOCH_TIME(co->EpochTime[s]) 286 break; 287 } 288 E_SSR_UPDATE_INTERVAL(co->UpdateInterval) 289 289 E_MULTIPLE_MESSAGE_INDICATOR(moremessagesfollow ? 1 : 0) 290 290 E_SSR_IOD(co->SSRIOD) … … 302 302 } 303 303 304 size_t SsrCorrRtcmNew::MakeCodeBias(const struct CodeBias* b, CodeBiasType type, 304 size_t SsrCorrRtcmNew::MakeCodeBias(const struct CodeBias* cb, CodeBiasType type, 305 305 int moremessagesfollow, char* buffer, size_t size) { 306 306 unsigned int s, i, j; … … 309 309 310 310 for (s = 0; s < CLOCKORBIT_SATNUM; ++s) { 311 if (b->NumberOfSat[s] && (type == CBTYPE_AUTO || type == corType[s][COBOFS_CBIAS])) { 311 if (cb->NumberOfSat[s] && (type == CBTYPE_AUTO || type == corType[s][COBOFS_CBIAS])) { 312 312 INITBLOCK 313 313 E_RTCM_MESSAGE_NUMBER(corType[s][COBOFS_CBIAS]) 314 314 switch (s) { 315 case CLOCKORBIT_SATGPS: 316 case CLOCKORBIT_SATGALILEO: 317 case CLOCKORBIT_SATQZSS: 318 case CLOCKORBIT_SATSBAS: 319 case CLOCKORBIT_SATBDS: 320 E_GPS_EPOCH_TIME(b->EpochTime[s]) 315 case CLOCKORBIT_SATGPS: 316 case CLOCKORBIT_SATGALILEO: 317 case CLOCKORBIT_SATQZSS: 318 case CLOCKORBIT_SATSBAS: 319 case CLOCKORBIT_SATBDS: 320 E_GPS_EPOCH_TIME(cb->EpochTime[s]) 321 321 break; 322 case CLOCKORBIT_SATGLONASS: 323 E_GLONASS_EPOCH_TIME(b->EpochTime[s]) 322 case CLOCKORBIT_SATGLONASS: 323 E_GLONASS_EPOCH_TIME(cb->EpochTime[s]) 324 324 break; 325 325 } 326 E_SSR_UPDATE_INTERVAL(b->UpdateInterval) 326 E_SSR_UPDATE_INTERVAL(cb->UpdateInterval) 327 327 E_MULTIPLE_MESSAGE_INDICATOR(moremessagesfollow ? 1 : 0) 328 E_SSR_IOD(b->SSRIOD) 329 E_SSR_PROVIDER_ID(b->SSRProviderID) 330 E_SSR_SOLUTION_ID(b->SSRSolutionID) 331 E_NO_OF_SATELLITES(b->NumberOfSat[s]) 332 for (i = satoffset[s]; i < satoffset[s] + b->NumberOfSat[s]; ++i) { 333 E_GPS_SATELLITE_ID(b->Sat[i].ID) 334 E_NO_OF_BIASES(b->Sat[i].NumberOfCodeBiases)335 for (j = 0; j < b->Sat[i].NumberOfCodeBiases; ++j) {336 E_GNSS_SIGNAL_IDENTIFIER(b->Sat[i].Biases[j].Type)337 E_CODE_BIAS(b->Sat[i].Biases[j].Bias)338 }328 E_SSR_IOD(cb->SSRIOD) 329 E_SSR_PROVIDER_ID(cb->SSRProviderID) 330 E_SSR_SOLUTION_ID(cb->SSRSolutionID) 331 E_NO_OF_SATELLITES(cb->NumberOfSat[s]) 332 for (i = satoffset[s]; i < satoffset[s] + cb->NumberOfSat[s]; ++i) { 333 E_GPS_SATELLITE_ID(cb->Sat[i].ID) 334 E_NO_OF_BIASES(cb->Sat[i].NumberOfCodeBiases) 335 for (j = 0; j < cb->Sat[i].NumberOfCodeBiases; ++j) { 336 E_GNSS_SIGNAL_IDENTIFIER(cb->Sat[i].Biases[j].Type) 337 E_CODE_BIAS(cb->Sat[i].Biases[j].Bias) 338 } 339 339 } 340 340 ENDBLOCK … … 344 344 } 345 345 346 size_t SsrCorrRtcmNew::MakePhaseBias(const struct PhaseBias* b, PhaseBiasType type, 346 size_t SsrCorrRtcmNew::MakePhaseBias(const struct PhaseBias* pb, PhaseBiasType type, 347 347 int moremessagesfollow, char* buffer, size_t size) { 348 348 unsigned int s, i, j; … … 352 352 for (s = 0; s < CLOCKORBIT_SATNUM; ++s) { 353 353 /* Satellite Phase Bias Message */ 354 if (b->NumberOfSat[s] && (type == PBTYPE_AUTO || type == corType[s][COBOFS_PBIAS])) { 354 if (pb->NumberOfSat[s] && (type == PBTYPE_AUTO || type == corType[s][COBOFS_PBIAS])) { 355 355 INITBLOCK 356 356 E_RTCM_MESSAGE_NUMBER(corType[s][COBOFS_PBIAS]) 357 357 switch (s) { 358 case CLOCKORBIT_SATGPS: 359 case CLOCKORBIT_SATGALILEO: 360 case CLOCKORBIT_SATQZSS: 361 case CLOCKORBIT_SATSBAS: 362 case CLOCKORBIT_SATBDS: 363 E_GPS_EPOCH_TIME(b->EpochTime[s]) 358 case CLOCKORBIT_SATGPS: 359 case CLOCKORBIT_SATGALILEO: 360 case CLOCKORBIT_SATQZSS: 361 case CLOCKORBIT_SATSBAS: 362 case CLOCKORBIT_SATBDS: 363 E_GPS_EPOCH_TIME(pb->EpochTime[s]) 364 364 break; 365 case CLOCKORBIT_SATGLONASS: 366 E_GLONASS_EPOCH_TIME(b->EpochTime[s]) 365 case CLOCKORBIT_SATGLONASS: 366 E_GLONASS_EPOCH_TIME(pb->EpochTime[s]) 367 367 break; 368 368 } 369 E_SSR_UPDATE_INTERVAL(b->UpdateInterval) 369 E_SSR_UPDATE_INTERVAL(pb->UpdateInterval) 370 370 E_MULTIPLE_MESSAGE_INDICATOR(moremessagesfollow ? 1 : 0) 371 E_SSR_IOD(b->SSRIOD) 372 E_SSR_PROVIDER_ID(b->SSRProviderID) 373 E_SSR_SOLUTION_ID(b->SSRSolutionID) 374 E_YAW_INFO_INDICATOR(b->SatelliteYawInformationIndicator) 375 E_EXTENDED_PHASE_BIAS_ID(b->ExtendedPhaseBiasPropertyID) 376 E_NO_OF_SATELLITES(b->NumberOfSat[s]) 377 for (i = satoffset[s]; i < satoffset[s] + b->NumberOfSat[s]; ++i) { 378 E_GPS_SATELLITE_ID(b->Sat[i].ID) 379 E_NO_OF_BIASES(b->Sat[i].NumberOfPhaseBiases)380 if (b->SatelliteYawInformationIndicator) {381 E_YAW_ANGLE(b->Sat[i].YawAngle)382 E_YAW_RATE(b->Sat[i].YawRate)383 }384 for (j = 0; j < b->Sat[i].NumberOfPhaseBiases; ++j) { 385 E_GNSS_SIGNAL_IDENTIFIER(b->Sat[i].Biases[j].Type) 386 E_INTEGER_INDICATOR(b->Sat[i].Biases[j].IntegerIndicator ? 1 : 0)387 E_DISCONTINUITY_COUNTER(b->Sat[i].Biases[j].DiscontinuityCounter)388 E_PHASE_BIAS_CORRECTION(b->Sat[i].Biases[j].Bias)371 E_SSR_IOD(pb->SSRIOD) 372 E_SSR_PROVIDER_ID(pb->SSRProviderID) 373 E_SSR_SOLUTION_ID(pb->SSRSolutionID) 374 E_YAW_INFO_INDICATOR(pb->SatelliteYawInformationIndicator) 375 E_EXTENDED_PHASE_BIAS_ID(pb->ExtendedPhaseBiasPropertyID) 376 E_NO_OF_SATELLITES(pb->NumberOfSat[s]) 377 for (i = satoffset[s]; i < satoffset[s] + pb->NumberOfSat[s]; ++i) { 378 E_GPS_SATELLITE_ID(pb->Sat[i].ID) 379 E_NO_OF_BIASES(pb->Sat[i].NumberOfPhaseBiases) 380 if (pb->SatelliteYawInformationIndicator) { 381 E_YAW_ANGLE(pb->Sat[i].YawAngle) 382 E_YAW_RATE(pb->Sat[i].YawRate) 383 } 384 for (j = 0; j < pb->Sat[i].NumberOfPhaseBiases; ++j) { 385 E_GNSS_SIGNAL_IDENTIFIER(pb->Sat[i].Biases[j].Type) 386 E_INTEGER_INDICATOR(pb->Sat[i].Biases[j].IntegerIndicator ? 1 : 0) 387 E_DISCONTINUITY_COUNTER(pb->Sat[i].Biases[j].DiscontinuityCounter) 388 E_PHASE_BIAS_CORRECTION(pb->Sat[i].Biases[j].Bias) 389 389 } 390 390 } … … 396 396 Extended Satellite Phase Bias Message shall be sent BEFORE the corresponding 397 397 Satellite Phase Bias Message VICE VERSA??*/ 398 if (b->NumberOfSat[s] && (type == PBEXTTYPE_AUTO || type == corType[s][COBOFS_PBEXT])) { 398 if (pb->NumberOfSat[s] && (type == PBEXTTYPE_AUTO || type == corType[s][COBOFS_PBEXT])) { 399 399 INITBLOCK 400 400 E_RTCM_MESSAGE_NUMBER(corType[s][COBOFS_PBEXT]) 401 401 switch (s) { 402 case CLOCKORBIT_SATGPS: 403 case CLOCKORBIT_SATGALILEO: 404 case CLOCKORBIT_SATQZSS: 405 case CLOCKORBIT_SATSBAS: 406 case CLOCKORBIT_SATBDS: 407 E_GPS_EPOCH_TIME(b->EpochTime[s]) 402 case CLOCKORBIT_SATGPS: 403 case CLOCKORBIT_SATGALILEO: 404 case CLOCKORBIT_SATQZSS: 405 case CLOCKORBIT_SATSBAS: 406 case CLOCKORBIT_SATBDS: 407 E_GPS_EPOCH_TIME(pb->EpochTime[s]) 408 408 break; 409 case CLOCKORBIT_SATGLONASS: 410 E_GLONASS_EPOCH_TIME(b->EpochTime[s]) 409 case CLOCKORBIT_SATGLONASS: 410 E_GLONASS_EPOCH_TIME(pb->EpochTime[s]) 411 411 break; 412 412 } 413 E_SSR_IOD(b->SSRIOD) 414 E_SSR_PROVIDER_ID(b->SSRProviderID) 415 E_SSR_SOLUTION_ID(b->SSRSolutionID) 416 E_EXTENDED_PHASE_BIAS_ID(b->ExtendedPhaseBiasPropertyID) 417 for (i = satoffset[s]; i < satoffset[s] + b->NumberOfSat[s]; ++i) { 418 for (j = 0; j < b->Sat[i].NumberOfPhaseBiases; ++j) { 419 E_WIDE_LANE_INDICATOR(b->Sat[i].Biases[j].WidelaneGroupIndicator) 413 E_SSR_IOD(pb->SSRIOD) 414 E_SSR_PROVIDER_ID(pb->SSRProviderID) 415 E_SSR_SOLUTION_ID(pb->SSRSolutionID) 416 E_EXTENDED_PHASE_BIAS_ID(pb->ExtendedPhaseBiasPropertyID) 417 for (i = satoffset[s]; i < satoffset[s] + pb->NumberOfSat[s]; ++i) { 418 for (j = 0; j < pb->Sat[i].NumberOfPhaseBiases; ++j) { 419 E_WIDE_LANE_INDICATOR(pb->Sat[i].Biases[j].WidelaneGroupIndicator) 420 420 } 421 421 } … … 431 431 STARTDATA 432 432 INITBLOCK 433 E_RTCM_MESSAGE_NUMBER(VTEC_BASE) 434 E_GPS_EPOCH_TIME(v->EpochTime) 435 E_SSR_UPDATE_INTERVAL(v->UpdateInterval) 436 E_MULTIPLE_MESSAGE_INDICATOR(moremessagesfollow ? 1 : 0) 437 E_SSR_IOD(v->SSRIOD) 438 E_SSR_PROVIDER_ID(v->SSRProviderID) 439 E_SSR_SOLUTION_ID(v->SSRSolutionID) 440 E_VTEC_QUALITY_INDICATOR(v->Quality) 441 E_NO_IONO_LAYERS(v->NumLayers) 442 for (l = 0; l < v->NumLayers; ++l) { 443 E_IONO_HEIGHT(v->Layers[l].Height) 433 E_RTCM_MESSAGE_NUMBER(VTEC_BASE) 434 E_GPS_EPOCH_TIME(v->EpochTime) 435 E_SSR_UPDATE_INTERVAL(v->UpdateInterval) 436 E_MULTIPLE_MESSAGE_INDICATOR(moremessagesfollow ? 1 : 0) 437 E_SSR_IOD(v->SSRIOD) 438 E_SSR_PROVIDER_ID(v->SSRProviderID) 439 E_SSR_SOLUTION_ID(v->SSRSolutionID) 440 E_VTEC_QUALITY_INDICATOR(v->Quality) 441 E_NO_IONO_LAYERS(v->NumLayers) 442 for (l = 0; l < v->NumLayers; ++l) { 443 E_IONO_HEIGHT(v->Layers[l].Height) 444 444 E_IONO_DEGREE(v->Layers[l].Degree) 445 445 E_IONO_ORDER(v->Layers[l].Order) … … 459 459 } 460 460 461 enum GCOB_RETURN SsrCorrRtcmNew::GetSSR(struct ClockOrbit* co, struct CodeBias* b, struct VTEC* v, 462 struct PhaseBias* pb, struct MetaData* md, const char* buffer, size_t size, int* bytesused) { 461 size_t SsrCorrRtcmNew::MakeMetaData(const struct MetaData* md, char* buffer, size_t size) { 462 unsigned int i; 463 464 STARTDATA 465 INITBLOCK 466 E_RTCM_MESSAGE_NUMBER(METADATATYPE_BASE) 467 E_SSR_IOD(md->SSRIOD) 468 E_SSR_PROVIDER_ID(md->SSRProviderID) 469 E_SSR_SOLUTION_ID(md->SSRSolutionID) 470 E_NUMBER_OF_SSR_MODEL_CORRECTION_ENTRIES(md->NumEntries) 471 for (i = 0; i < md->NumEntries; i++) { 472 E_MODEL_CORRECTION_TYPE_INDICATOR(md->Entries[i].TypeIndicator) 473 E_ADDITIONAL_MODEL_PARAMETER_INDICATOR(md->Entries[i].ApplicationIndicator) 474 E_NON_DEFAULT_MODEL_CORRECTION_INDICATOR(md->Entries[i].nonDefaultIndicator) 475 if (md->Entries[i].nonDefaultIndicator) { 476 E_NON_DEFAULT_MODEL_CORRECTION_IDENTIFIER(md->Entries[i].nonDefaultIdentifier) 477 } 478 E_MODEL_CORRECTION_DATA_IOD_INDICATOR(md->Entries[i].DataIODIndicator) 479 if (md->Entries[i].DataIODIndicator) { 480 E_MODEL_CORRECTION_DATA_IOD(md->Entries[i].DataIOD) 481 } 482 if (md->Entries[i].nonDefaultIndicator) { 483 E_ADDITIONAL_MODEL_PARAMETER_INDICATOR(md->Entries[i].additionalParameterIndicator) 484 } 485 if (md->Entries[i].additionalParameterIndicator) { 486 E_NUMBER_OF_ADDITIONAL_MODEL_PARAMETER_BITS(md->Entries[i].additionalParameterNumBits) 487 } 488 if (md->Entries[i].nonDefaultIndicator && 489 md->Entries[i].additionalParameterIndicator) { 490 E_ADDITIONAL_MODEL_PARAMETER_DATA(md->Entries[i].additionalParameterData, md->Entries[i].additionalParameterNumBits) 491 } 492 } 493 ENDBLOCK 494 return ressize; 495 } 496 497 enum GCOB_RETURN SsrCorrRtcmNew::GetSSR(struct ClockOrbit* co, struct CodeBias* cb, struct VTEC* v, 498 struct PhaseBias* pb, struct MetaData* md, struct Antenna* a, const char* buffer, size_t size, int* bytesused) { 463 499 int mmi = 0, h, rs; 464 500 unsigned int type, pos, i, j, s, nums, id; … … 597 633 pb->NumberOfSat[s] = 0; 598 634 switch (s) { 599 case CLOCKORBIT_SATGPS: 600 case CLOCKORBIT_SATGALILEO: 601 case CLOCKORBIT_SATQZSS: 602 case CLOCKORBIT_SATSBAS: 603 case CLOCKORBIT_SATBDS: 604 D_GPS_EPOCH_TIME(pb->EpochTime[s]) 605 break; 606 case CLOCKORBIT_SATGLONASS: 607 D_GLONASS_EPOCH_TIME(pb->EpochTime[s]) 635 case CLOCKORBIT_SATGPS: 636 case CLOCKORBIT_SATGALILEO: 637 case CLOCKORBIT_SATQZSS: 638 case CLOCKORBIT_SATSBAS: 639 case CLOCKORBIT_SATBDS: 640 D_GPS_EPOCH_TIME(pb->EpochTime[s]) 641 break; 642 case CLOCKORBIT_SATGLONASS: 643 D_GLONASS_EPOCH_TIME(pb->EpochTime[s]) 608 644 break; 609 645 } 610 646 D_SSR_UPDATE_INTERVAL(pb->UpdateInterval) 611 D_MULTIPLE_MESSAGE_INDICATOR(mmi)612 D_SSR_IOD(pb->SSRIOD)613 D_SSR_PROVIDER_ID(pb->SSRProviderID)614 D_SSR_SOLUTION_ID(pb->SSRSolutionID)615 D_YAW_INFO_INDICATOR(pb->SatelliteYawInformationIndicator)616 D_EXTENDED_PHASE_BIAS_ID(pb->ExtendedPhaseBiasPropertyID)617 D_NO_OF_SATELLITES(nums)618 #ifdef BNC_DEBUG_SSR 619 fprintf(stderr, "epochTime %d ui %d mmi %d sats %d/%d ssrIod %d providerId %d solId %d yawInd %d extpbInd %d\n",647 D_MULTIPLE_MESSAGE_INDICATOR(mmi) 648 D_SSR_IOD(pb->SSRIOD) 649 D_SSR_PROVIDER_ID(pb->SSRProviderID) 650 D_SSR_SOLUTION_ID(pb->SSRSolutionID) 651 D_YAW_INFO_INDICATOR(pb->SatelliteYawInformationIndicator) 652 D_EXTENDED_PHASE_BIAS_ID(pb->ExtendedPhaseBiasPropertyID) 653 D_NO_OF_SATELLITES(nums) 654 #ifdef BNC_DEBUG_SSR 655 fprintf(stderr, "epochTime %d ui %d mmi %d sats %d/%d ssrIod %d providerId %d solId %d yawInd %d extpbInd %d\n", 620 656 pb->EpochTime[s], pb->UpdateInterval, mmi, pb->NumberOfSat[s], nums, 621 657 pb->SSRIOD, pb->SSRProviderID, pb->SSRSolutionID, … … 625 661 for (i = 0; i < nums; ++i) { 626 662 D_GPS_SATELLITE_ID(id) 627 for (pos = satoffset[s];663 for (pos = satoffset[s]; 628 664 pos < satoffset[s] + pb->NumberOfSat[s] && pb->Sat[pos].ID != id; 629 665 ++pos) … … 635 671 pb->Sat[pos].ID = id; 636 672 D_NO_OF_BIASES(pb->Sat[pos].NumberOfPhaseBiases) 637 if (pb->SatelliteYawInformationIndicator) {638 D_YAW_ANGLE(pb->Sat[pos].YawAngle)639 D_YAW_RATE(pb->Sat[pos].YawRate)640 }673 if (pb->SatelliteYawInformationIndicator) { 674 D_YAW_ANGLE(pb->Sat[pos].YawAngle) 675 D_YAW_RATE(pb->Sat[pos].YawRate) 676 } 641 677 #ifdef BNC_DEBUG_SSR 642 678 fprintf(stderr, "id %2d #%d y %10.6f yr %10.6f ", … … 647 683 for (j = 0; j < pb->Sat[pos].NumberOfPhaseBiases; ++j) { 648 684 D_GNSS_SIGNAL_IDENTIFIER(pb->Sat[pos].Biases[j].Type) 649 D_INTEGER_INDICATOR(pb->Sat[pos].Biases[j].IntegerIndicator)650 D_DISCONTINUITY_COUNTER(pb->Sat[pos].Biases[j].DiscontinuityCounter)651 D_PHASE_BIAS_CORRECTION(pb->Sat[pos].Biases[j].Bias)652 #ifdef BNC_DEBUG_SSR 653 fprintf(stderr, "t %02d int %02d disc %d b %8.4f ",685 D_INTEGER_INDICATOR(pb->Sat[pos].Biases[j].IntegerIndicator) 686 D_DISCONTINUITY_COUNTER(pb->Sat[pos].Biases[j].DiscontinuityCounter) 687 D_PHASE_BIAS_CORRECTION(pb->Sat[pos].Biases[j].Bias) 688 #ifdef BNC_DEBUG_SSR 689 fprintf(stderr, "t %02d int %02d disc %d b %8.4f ", 654 690 pb->Sat[pos].Biases[j].Type, 655 691 pb->Sat[pos].Biases[j].IntegerIndicator, … … 669 705 pb->messageExtType = type; 670 706 switch (s) { 671 case CLOCKORBIT_SATGPS: 672 case CLOCKORBIT_SATGALILEO: 673 case CLOCKORBIT_SATQZSS: 674 case CLOCKORBIT_SATSBAS: 675 case CLOCKORBIT_SATBDS: 676 D_GPS_EPOCH_TIME(EpochTime) 677 break; 678 case CLOCKORBIT_SATGLONASS: 679 D_GLONASS_EPOCH_TIME(EpochTime) 707 case CLOCKORBIT_SATGPS: 708 case CLOCKORBIT_SATGALILEO: 709 case CLOCKORBIT_SATQZSS: 710 case CLOCKORBIT_SATSBAS: 711 case CLOCKORBIT_SATBDS: 712 D_GPS_EPOCH_TIME(EpochTime) 713 break; 714 case CLOCKORBIT_SATGLONASS: 715 D_GLONASS_EPOCH_TIME(EpochTime) 680 716 break; 681 717 } 682 718 D_SSR_IOD(SSRIOD) 683 D_SSR_PROVIDER_ID(SSRProviderID)684 D_SSR_SOLUTION_ID(SSRSolutionID)685 D_EXTENDED_PHASE_BIAS_ID(ExtendedPhaseBiasPropertyID)686 #ifdef BNC_DEBUG_SSR 687 fprintf(stderr, "epochTime %d/%d ssrIod %d/%d providerId %d/%d solId %d/%d extpbInd %d/%d \n",719 D_SSR_PROVIDER_ID(SSRProviderID) 720 D_SSR_SOLUTION_ID(SSRSolutionID) 721 D_EXTENDED_PHASE_BIAS_ID(ExtendedPhaseBiasPropertyID) 722 #ifdef BNC_DEBUG_SSR 723 fprintf(stderr, "epochTime %d/%d ssrIod %d/%d providerId %d/%d solId %d/%d extpbInd %d/%d \n", 688 724 EpochTime, pb->EpochTime[s], 689 725 SSRIOD, pb->SSRIOD, … … 708 744 D_WIDE_LANE_INDICATOR(pb->Sat[pos].Biases[j].WidelaneGroupIndicator) 709 745 #ifdef BNC_DEBUG_SSR 710 fprintf(stderr, "t %02d wl %d ",746 fprintf(stderr, "t %02d wl %d ", 711 747 pb->Sat[pos].Biases[j].Type, 712 748 pb->Sat[pos].Biases[j].WidelaneGroupIndicator); … … 724 760 co->messageType = type; 725 761 switch (s) { 726 case CLOCKORBIT_SATGPS: 727 case CLOCKORBIT_SATGALILEO: 728 case CLOCKORBIT_SATQZSS: 729 case CLOCKORBIT_SATSBAS: 730 case CLOCKORBIT_SATBDS: 731 D_GPS_EPOCH_TIME_CHECK(co->EpochTime[s], co->NumberOfSat[s]) 732 break; 733 case CLOCKORBIT_SATGLONASS: 734 D_GLONASS_EPOCH_TIME_CHECK(co->EpochTime[s], co->NumberOfSat[s]) 762 case CLOCKORBIT_SATGPS: 763 case CLOCKORBIT_SATGALILEO: 764 case CLOCKORBIT_SATQZSS: 765 case CLOCKORBIT_SATSBAS: 766 case CLOCKORBIT_SATBDS: 767 D_GPS_EPOCH_TIME_CHECK(co->EpochTime[s], co->NumberOfSat[s]) 768 break; 769 case CLOCKORBIT_SATGLONASS: 770 D_GLONASS_EPOCH_TIME_CHECK(co->EpochTime[s], co->NumberOfSat[s]) 735 771 break; 736 772 } 737 773 D_SSR_UPDATE_INTERVAL(co->UpdateInterval) 738 D_MULTIPLE_MESSAGE_INDICATOR(mmi)739 D_SATELLITE_REFERENCE_DATUM(co->SatRefDatum)740 D_SSR_IOD(co->SSRIOD)741 D_SSR_PROVIDER_ID(co->SSRProviderID)742 D_SSR_SOLUTION_ID(co->SSRSolutionID)743 D_NO_OF_SATELLITES(nums)744 co->Supplied[COBOFS_ORBIT] |= 1;774 D_MULTIPLE_MESSAGE_INDICATOR(mmi) 775 D_SATELLITE_REFERENCE_DATUM(co->SatRefDatum) 776 D_SSR_IOD(co->SSRIOD) 777 D_SSR_PROVIDER_ID(co->SSRProviderID) 778 D_SSR_SOLUTION_ID(co->SSRSolutionID) 779 D_NO_OF_SATELLITES(nums) 780 co->Supplied[COBOFS_ORBIT] |= 1; 745 781 #ifdef BNC_DEBUG_SSR 746 782 fprintf(stderr, "epochTime %d ui %d mmi %d sats %d/%d rd %d ssrIod %d providerId %d solId %d\n", … … 761 797 762 798 switch (s) { 763 case CLOCKORBIT_SATGPS: 764 case CLOCKORBIT_SATQZSS: 765 D_GPS_IODE(co->Sat[pos].IOD) 766 break;767 case CLOCKORBIT_SATGLONASS: 768 D_GLONASS_IOD(co->Sat[pos].IOD) 769 break; 770 case CLOCKORBIT_SATGALILEO: 771 D_GALILEO_IOD(co->Sat[pos].IOD) 772 break; 773 case CLOCKORBIT_SATSBAS: 774 D_SBAS_T0MOD(co->Sat[pos].toe) 799 case CLOCKORBIT_SATGPS: 800 case CLOCKORBIT_SATQZSS: 801 D_GPS_IODE(co->Sat[pos].IOD) 802 break; 803 case CLOCKORBIT_SATGLONASS: 804 D_GLONASS_IOD(co->Sat[pos].IOD) 805 break; 806 case CLOCKORBIT_SATGALILEO: 807 D_GALILEO_IOD(co->Sat[pos].IOD) 808 break; 809 case CLOCKORBIT_SATSBAS: 810 D_SBAS_T0MOD(co->Sat[pos].toe) 775 811 D_SBAS_IODCRC(co->Sat[pos].IOD) 776 812 break; 777 case CLOCKORBIT_SATBDS: 778 D_GPS_IODE(co->Sat[pos].IOD) 813 case CLOCKORBIT_SATBDS: 814 D_GPS_IODE(co->Sat[pos].IOD) 779 815 break; 780 816 } 781 817 D_DELTA_RADIAL(co->Sat[pos].Orbit.DeltaRadial) 782 D_DELTA_ALONG_TRACK(co->Sat[pos].Orbit.DeltaAlongTrack)783 D_DELTA_CROSS_TRACK(co->Sat[pos].Orbit.DeltaCrossTrack)784 D_DOT_DELTA_RADIAL(co->Sat[pos].Orbit.DotDeltaRadial)785 D_DOT_DELTA_ALONG_TRACK(co->Sat[pos].Orbit.DotDeltaAlongTrack)786 D_DOT_DELTA_CROSS_TRACK(co->Sat[pos].Orbit.DotDeltaCrossTrack)787 #ifdef BNC_DEBUG_SSR 788 fprintf(stderr, "id %2d iod %3d dr %8.4f da %8.4f dc %8.4f dr %8.3f da %8.3f dc %8.3f\n",818 D_DELTA_ALONG_TRACK(co->Sat[pos].Orbit.DeltaAlongTrack) 819 D_DELTA_CROSS_TRACK(co->Sat[pos].Orbit.DeltaCrossTrack) 820 D_DOT_DELTA_RADIAL(co->Sat[pos].Orbit.DotDeltaRadial) 821 D_DOT_DELTA_ALONG_TRACK(co->Sat[pos].Orbit.DotDeltaAlongTrack) 822 D_DOT_DELTA_CROSS_TRACK(co->Sat[pos].Orbit.DotDeltaCrossTrack) 823 #ifdef BNC_DEBUG_SSR 824 fprintf(stderr, "id %2d iod %3d dr %8.4f da %8.4f dc %8.4f dr %8.3f da %8.3f dc %8.3f\n", 789 825 co->Sat[pos].ID, co->Sat[pos].IOD, co->Sat[pos].Orbit.DeltaRadial, 790 826 co->Sat[pos].Orbit.DeltaAlongTrack, co->Sat[pos].Orbit.DeltaCrossTrack, … … 800 836 co->messageType = type; 801 837 switch (s) { 802 case CLOCKORBIT_SATGPS: 803 case CLOCKORBIT_SATGALILEO: 804 case CLOCKORBIT_SATQZSS: 805 case CLOCKORBIT_SATSBAS: 806 case CLOCKORBIT_SATBDS: 807 D_GPS_EPOCH_TIME_CHECK(co->EpochTime[s], co->NumberOfSat[s]) 808 break; 809 case CLOCKORBIT_SATGLONASS: 810 D_GLONASS_EPOCH_TIME_CHECK(co->EpochTime[s], co->NumberOfSat[s]) 838 case CLOCKORBIT_SATGPS: 839 case CLOCKORBIT_SATGALILEO: 840 case CLOCKORBIT_SATQZSS: 841 case CLOCKORBIT_SATSBAS: 842 case CLOCKORBIT_SATBDS: 843 D_GPS_EPOCH_TIME_CHECK(co->EpochTime[s], co->NumberOfSat[s]) 844 break; 845 case CLOCKORBIT_SATGLONASS: 846 D_GLONASS_EPOCH_TIME_CHECK(co->EpochTime[s], co->NumberOfSat[s]) 811 847 break; 812 848 } 813 849 D_SSR_UPDATE_INTERVAL(co->UpdateInterval) 814 D_MULTIPLE_MESSAGE_INDICATOR(mmi)815 D_SSR_IOD(co->SSRIOD)816 D_SSR_PROVIDER_ID(co->SSRProviderID)817 D_SSR_SOLUTION_ID(co->SSRSolutionID)818 D_NO_OF_SATELLITES(nums)819 co->Supplied[COBOFS_CLOCK] |= 1;850 D_MULTIPLE_MESSAGE_INDICATOR(mmi) 851 D_SSR_IOD(co->SSRIOD) 852 D_SSR_PROVIDER_ID(co->SSRProviderID) 853 D_SSR_SOLUTION_ID(co->SSRSolutionID) 854 D_NO_OF_SATELLITES(nums) 855 co->Supplied[COBOFS_CLOCK] |= 1; 820 856 #ifdef BNC_DEBUG_SSR 821 857 fprintf(stderr, "epochTime %d ui %d mmi %d sats %d/%d ssrIod %d providerId %d solId %d\n", 822 858 co->EpochTime[s], co->UpdateInterval, mmi, co->NumberOfSat[s], nums, 823 859 co->SSRIOD, co->SSRProviderID, co->SSRSolutionID); 860 #endif 861 for (i = 0; i < nums; ++i) { 862 D_GPS_SATELLITE_ID(id) 863 for (pos = satoffset[s]; 864 pos < satoffset[s] + co->NumberOfSat[s] && co->Sat[pos].ID != id; 865 ++pos) 866 ; 867 if (pos >= satoffset[s + 1]) 868 return GCOBR_DATAMISMATCH; 869 else if (pos == co->NumberOfSat[s] + satoffset[s]) 870 ++co->NumberOfSat[s]; 871 co->Sat[pos].ID = id; 872 873 D_DELTA_CLOCK_C0(co->Sat[pos].Clock.DeltaA0) 874 D_DELTA_CLOCK_C1(co->Sat[pos].Clock.DeltaA1) 875 D_DELTA_CLOCK_C2(co->Sat[pos].Clock.DeltaA2) 876 #ifdef BNC_DEBUG_SSR 877 fprintf(stderr, "id %2d c0 %8.3f c1 %8.3f c2 %8.3f\n", 878 co->Sat[pos].ID, co->Sat[pos].Clock.DeltaA0, co->Sat[pos].Clock.DeltaA1, 879 co->Sat[pos].Clock.DeltaA2); 880 #endif 881 } 882 } 883 else if (kind == COBOFS_COMBINED) { 884 if (!co) 885 return GCOBR_NOCLOCKORBITPARAMETER; 886 co->messageType = type; 887 switch (s) { 888 case CLOCKORBIT_SATGPS: 889 case CLOCKORBIT_SATGALILEO: 890 case CLOCKORBIT_SATQZSS: 891 case CLOCKORBIT_SATSBAS: 892 case CLOCKORBIT_SATBDS: 893 D_GPS_EPOCH_TIME_CHECK(co->EpochTime[s], co->NumberOfSat[s]) 894 break; 895 case CLOCKORBIT_SATGLONASS: 896 D_GLONASS_EPOCH_TIME_CHECK(co->EpochTime[s], co->NumberOfSat[s]) 897 break; 898 } 899 D_SSR_UPDATE_INTERVAL(co->UpdateInterval) 900 D_MULTIPLE_MESSAGE_INDICATOR(mmi) 901 D_SATELLITE_REFERENCE_DATUM(co->SatRefDatum) 902 D_SSR_IOD(co->SSRIOD) 903 D_SSR_PROVIDER_ID(co->SSRProviderID) 904 D_SSR_SOLUTION_ID(co->SSRSolutionID) 905 D_NO_OF_SATELLITES(nums) 906 co->Supplied[COBOFS_ORBIT] |= 1; 907 co->Supplied[COBOFS_CLOCK] |= 1; 908 #ifdef BNC_DEBUG_SSR 909 fprintf(stderr, "epochTime %d ui %d mmi %d sats %d/%d rd %d ssrIod %d providerId %d solId %d\n", 910 co->EpochTime[s], co->UpdateInterval, mmi, co->NumberOfSat[s], nums, 911 co->SatRefDatum, co->SSRIOD, co->SSRProviderID, co->SSRSolutionID); 824 912 #endif 825 913 for (i = 0; i < nums; ++i) { … … 835 923 co->Sat[pos].ID = id; 836 924 925 switch (s) { 926 case CLOCKORBIT_SATGPS: 927 case CLOCKORBIT_SATQZSS: 928 D_GPS_IODE(co->Sat[pos].IOD) 929 break; 930 case CLOCKORBIT_SATGLONASS: 931 D_GLONASS_IOD(co->Sat[pos].IOD) 932 break; 933 case CLOCKORBIT_SATGALILEO: 934 D_GALILEO_IOD(co->Sat[pos].IOD) 935 break; 936 case CLOCKORBIT_SATSBAS: 937 D_SBAS_T0MOD(co->Sat[pos].toe) 938 D_SBAS_IODCRC(co->Sat[pos].IOD) 939 break; 940 case CLOCKORBIT_SATBDS: 941 D_GPS_IODE(co->Sat[pos].IOD) 942 break; 943 } 944 D_DELTA_RADIAL(co->Sat[pos].Orbit.DeltaRadial) 945 D_DELTA_ALONG_TRACK(co->Sat[pos].Orbit.DeltaAlongTrack) 946 D_DELTA_CROSS_TRACK(co->Sat[pos].Orbit.DeltaCrossTrack) 947 D_DOT_DELTA_RADIAL(co->Sat[pos].Orbit.DotDeltaRadial) 948 D_DOT_DELTA_ALONG_TRACK(co->Sat[pos].Orbit.DotDeltaAlongTrack) 949 D_DOT_DELTA_CROSS_TRACK(co->Sat[pos].Orbit.DotDeltaCrossTrack) 837 950 D_DELTA_CLOCK_C0(co->Sat[pos].Clock.DeltaA0) 838 D_DELTA_CLOCK_C1(co->Sat[pos].Clock.DeltaA1) 839 D_DELTA_CLOCK_C2(co->Sat[pos].Clock.DeltaA2) 840 #ifdef BNC_DEBUG_SSR 841 fprintf(stderr, "id %2d c0 %8.3f c1 %8.3f c2 %8.3f\n", 842 co->Sat[pos].ID, co->Sat[pos].Clock.DeltaA0, co->Sat[pos].Clock.DeltaA1, 843 co->Sat[pos].Clock.DeltaA2); 844 #endif 845 } 846 } 847 else if (kind == COBOFS_COMBINED) { 848 if (!co) 849 return GCOBR_NOCLOCKORBITPARAMETER; 850 co->messageType = type; 851 switch (s) { 852 case CLOCKORBIT_SATGPS: 853 case CLOCKORBIT_SATGALILEO: 854 case CLOCKORBIT_SATQZSS: 855 case CLOCKORBIT_SATSBAS: 856 case CLOCKORBIT_SATBDS: 857 D_GPS_EPOCH_TIME_CHECK(co->EpochTime[s], co->NumberOfSat[s]) 858 break; 859 case CLOCKORBIT_SATGLONASS: 860 D_GLONASS_EPOCH_TIME_CHECK(co->EpochTime[s], co->NumberOfSat[s]) 861 break; 862 } 863 D_SSR_UPDATE_INTERVAL(co->UpdateInterval) 864 D_MULTIPLE_MESSAGE_INDICATOR(mmi) 865 D_SATELLITE_REFERENCE_DATUM(co->SatRefDatum) 866 D_SSR_IOD(co->SSRIOD) 867 D_SSR_PROVIDER_ID(co->SSRProviderID) 868 D_SSR_SOLUTION_ID(co->SSRSolutionID) 869 D_NO_OF_SATELLITES(nums) 870 co->Supplied[COBOFS_ORBIT] |= 1; 871 co->Supplied[COBOFS_CLOCK] |= 1; 872 #ifdef BNC_DEBUG_SSR 873 fprintf(stderr, "epochTime %d ui %d mmi %d sats %d/%d rd %d ssrIod %d providerId %d solId %d\n", 874 co->EpochTime[s], co->UpdateInterval, mmi, co->NumberOfSat[s], nums, 875 co->SatRefDatum, co->SSRIOD, co->SSRProviderID, co->SSRSolutionID); 876 #endif 877 for (i = 0; i < nums; ++i) { 878 D_GPS_SATELLITE_ID(id) 879 for (pos = satoffset[s]; 880 pos < satoffset[s] + co->NumberOfSat[s] && co->Sat[pos].ID != id; 881 ++pos) 882 ; 883 if (pos >= satoffset[s + 1]) 884 return GCOBR_DATAMISMATCH; 885 else if (pos == co->NumberOfSat[s] + satoffset[s]) 886 ++co->NumberOfSat[s]; 887 co->Sat[pos].ID = id; 888 889 switch (s) { 890 case CLOCKORBIT_SATGPS: 891 case CLOCKORBIT_SATQZSS: 892 D_GPS_IODE(co->Sat[pos].IOD) 893 break; 894 case CLOCKORBIT_SATGLONASS: 895 D_GLONASS_IOD(co->Sat[pos].IOD) 896 break; 897 case CLOCKORBIT_SATGALILEO: 898 D_GALILEO_IOD(co->Sat[pos].IOD) 899 break; 900 case CLOCKORBIT_SATSBAS: 901 D_SBAS_T0MOD(co->Sat[pos].toe) 902 D_SBAS_IODCRC(co->Sat[pos].IOD) 903 break; 904 case CLOCKORBIT_SATBDS: 905 D_GPS_IODE(co->Sat[pos].IOD) 906 break; 907 } 908 D_DELTA_RADIAL(co->Sat[pos].Orbit.DeltaRadial) 909 D_DELTA_ALONG_TRACK(co->Sat[pos].Orbit.DeltaAlongTrack) 910 D_DELTA_CROSS_TRACK(co->Sat[pos].Orbit.DeltaCrossTrack) 911 D_DOT_DELTA_RADIAL(co->Sat[pos].Orbit.DotDeltaRadial) 912 D_DOT_DELTA_ALONG_TRACK(co->Sat[pos].Orbit.DotDeltaAlongTrack) 913 D_DOT_DELTA_CROSS_TRACK(co->Sat[pos].Orbit.DotDeltaCrossTrack) 914 D_DELTA_CLOCK_C0(co->Sat[pos].Clock.DeltaA0) 915 D_DELTA_CLOCK_C1(co->Sat[pos].Clock.DeltaA1) 916 D_DELTA_CLOCK_C2(co->Sat[pos].Clock.DeltaA2) 917 #ifdef BNC_DEBUG_SSR 918 fprintf(stderr, "id %2d iod %3d dr %10.6f da %10.6f dc %10.6f dr %10.6f da %10.6f dc %10.6f c0 %10.6f c1 %10.6f c2 %10.6f\n", 951 D_DELTA_CLOCK_C1(co->Sat[pos].Clock.DeltaA1) 952 D_DELTA_CLOCK_C2(co->Sat[pos].Clock.DeltaA2) 953 #ifdef BNC_DEBUG_SSR 954 fprintf(stderr, "id %2d iod %3d dr %10.6f da %10.6f dc %10.6f dr %10.6f da %10.6f dc %10.6f c0 %10.6f c1 %10.6f c2 %10.6f\n", 919 955 co->Sat[pos].ID, co->Sat[pos].IOD, co->Sat[pos].Orbit.DeltaRadial, 920 956 co->Sat[pos].Orbit.DeltaAlongTrack, co->Sat[pos].Orbit.DeltaCrossTrack, … … 930 966 co->messageType = type; 931 967 switch (s) { 932 case CLOCKORBIT_SATGPS: 933 case CLOCKORBIT_SATGALILEO: 934 case CLOCKORBIT_SATQZSS: 935 case CLOCKORBIT_SATSBAS: 936 case CLOCKORBIT_SATBDS: 937 D_GPS_EPOCH_TIME_CHECK(co->EpochTime[s], co->NumberOfSat[s]) 938 break; 939 case CLOCKORBIT_SATGLONASS: 940 D_GLONASS_EPOCH_TIME_CHECK(co->EpochTime[s], co->NumberOfSat[s]) 968 case CLOCKORBIT_SATGPS: 969 case CLOCKORBIT_SATGALILEO: 970 case CLOCKORBIT_SATQZSS: 971 case CLOCKORBIT_SATSBAS: 972 case CLOCKORBIT_SATBDS: 973 D_GPS_EPOCH_TIME_CHECK(co->EpochTime[s], co->NumberOfSat[s]) 974 break; 975 case CLOCKORBIT_SATGLONASS: 976 D_GLONASS_EPOCH_TIME_CHECK(co->EpochTime[s], co->NumberOfSat[s]) 941 977 break; 942 978 } 943 979 D_SSR_UPDATE_INTERVAL(co->UpdateInterval) 944 D_MULTIPLE_MESSAGE_INDICATOR(mmi)945 D_SSR_IOD(co->SSRIOD)946 D_SSR_PROVIDER_ID(co->SSRProviderID)947 D_SSR_SOLUTION_ID(co->SSRSolutionID)948 D_NO_OF_SATELLITES(nums)949 co->Supplied[COBOFS_URA] |= 1;980 D_MULTIPLE_MESSAGE_INDICATOR(mmi) 981 D_SSR_IOD(co->SSRIOD) 982 D_SSR_PROVIDER_ID(co->SSRProviderID) 983 D_SSR_SOLUTION_ID(co->SSRSolutionID) 984 D_NO_OF_SATELLITES(nums) 985 co->Supplied[COBOFS_URA] |= 1; 950 986 #ifdef BNC_DEBUG_SSR 951 987 fprintf(stderr, "epochTime %d ui %d mmi %d sats %d/%d ssrIod %d providerId %d solId %d\n", … … 955 991 for (i = 0; i < nums; ++i) { 956 992 D_GPS_SATELLITE_ID(id) 957 for (pos = satoffset[s];993 for (pos = satoffset[s]; 958 994 pos < satoffset[s] + co->NumberOfSat[s] && co->Sat[pos].ID != id; 959 995 ++pos) … … 966 1002 D_SSR_URA(co->Sat[pos].UserRangeAccuracy) 967 1003 #ifdef BNC_DEBUG_SSR 968 fprintf(stderr, "id %2d ura %8.3f \n",1004 fprintf(stderr, "id %2d ura %8.3f \n", 969 1005 co->Sat[pos].ID, co->Sat[pos].UserRangeAccuracy); 970 1006 #endif … … 976 1012 co->messageType = type; 977 1013 switch (s) { 978 case CLOCKORBIT_SATGPS:/* Phase specific part of GNSS phase bias message */ 979 case CLOCKORBIT_SATGALILEO: 980 case CLOCKORBIT_SATQZSS: 981 case CLOCKORBIT_SATSBAS: 982 case CLOCKORBIT_SATBDS: 983 D_GPS_EPOCH_TIME_CHECK(co->EpochTime[s], co->NumberOfSat[s]) 984 break; 985 case CLOCKORBIT_SATGLONASS: 986 D_GLONASS_EPOCH_TIME_CHECK(co->EpochTime[s], co->NumberOfSat[s]) 1014 case CLOCKORBIT_SATGPS:/* Phase specific part of GNSS phase bias message */ 1015 case CLOCKORBIT_SATGALILEO: 1016 case CLOCKORBIT_SATQZSS: 1017 case CLOCKORBIT_SATSBAS: 1018 case CLOCKORBIT_SATBDS: 1019 D_GPS_EPOCH_TIME_CHECK(co->EpochTime[s], co->NumberOfSat[s]) 1020 break; 1021 case CLOCKORBIT_SATGLONASS: 1022 D_GLONASS_EPOCH_TIME_CHECK(co->EpochTime[s], co->NumberOfSat[s]) 987 1023 break; 988 1024 } 989 1025 D_SSR_UPDATE_INTERVAL(co->UpdateInterval) 990 D_MULTIPLE_MESSAGE_INDICATOR(mmi)991 D_SSR_IOD(co->SSRIOD)992 D_SSR_PROVIDER_ID(co->SSRProviderID)993 D_SSR_SOLUTION_ID(co->SSRSolutionID)994 D_NO_OF_SATELLITES(nums)995 co->Supplied[COBOFS_HR] |= 1;1026 D_MULTIPLE_MESSAGE_INDICATOR(mmi) 1027 D_SSR_IOD(co->SSRIOD) 1028 D_SSR_PROVIDER_ID(co->SSRProviderID) 1029 D_SSR_SOLUTION_ID(co->SSRSolutionID) 1030 D_NO_OF_SATELLITES(nums) 1031 co->Supplied[COBOFS_HR] |= 1; 996 1032 #ifdef BNC_DEBUG_SSR 997 1033 fprintf(stderr, "epochTime %d ui %d mmi %d sats %d/%d ssrIod %d providerId %d solId %d\n", … … 1001 1037 for (i = 0; i < nums; ++i) { 1002 1038 D_GPS_SATELLITE_ID(id) 1003 for (pos = satoffset[s];1039 for (pos = satoffset[s]; 1004 1040 pos < satoffset[s] + co->NumberOfSat[s] && co->Sat[pos].ID != id; 1005 1041 ++pos) … … 1012 1048 D_HR_CLOCK_CORRECTION(co->Sat[pos].hrclock) 1013 1049 #ifdef BNC_DEBUG_SSR 1014 fprintf(stderr, "id %2d hrClock %8.3f \n",1050 fprintf(stderr, "id %2d hrClock %8.3f \n", 1015 1051 co->Sat[pos].ID, co->Sat[pos].hrclock); 1016 1052 #endif … … 1018 1054 } 1019 1055 else if (kind == COBOFS_CBIAS) { 1020 if (!b) 1056 if (!cb) 1021 1057 return GCOBR_NOCODEBIASPARAMETER; 1022 b->messageType = type; 1058 cb->messageType = type; 1023 1059 switch (s) { 1024 case CLOCKORBIT_SATGPS: 1025 case CLOCKORBIT_SATGALILEO: 1026 case CLOCKORBIT_SATQZSS: 1027 case CLOCKORBIT_SATSBAS: 1028 case CLOCKORBIT_SATBDS: 1029 D_GPS_EPOCH_TIME_CHECK(b->EpochTime[s], b->NumberOfSat[s]) 1030 break; 1031 case CLOCKORBIT_SATGLONASS: 1032 D_GLONASS_EPOCH_TIME_CHECK(b->EpochTime[s], b->NumberOfSat[s]) 1033 break; 1034 } 1035 D_SSR_UPDATE_INTERVAL(b->UpdateInterval) 1036 D_MULTIPLE_MESSAGE_INDICATOR(mmi)1037 D_SSR_IOD(b->SSRIOD)1038 D_SSR_PROVIDER_ID(b->SSRProviderID)1039 D_SSR_SOLUTION_ID(b->SSRSolutionID)1040 D_NO_OF_SATELLITES(nums)1041 #ifdef BNC_DEBUG_SSR 1042 fprintf(stderr, "epochTime %d ui %d mmi %d sats %d/%d ssrIod %d providerId %d solId %d\n",1043 b->EpochTime[s], b->UpdateInterval, mmi, b->NumberOfSat[s], nums, 1044 b->SSRIOD, b->SSRProviderID, b->SSRSolutionID); 1060 case CLOCKORBIT_SATGPS: 1061 case CLOCKORBIT_SATGALILEO: 1062 case CLOCKORBIT_SATQZSS: 1063 case CLOCKORBIT_SATSBAS: 1064 case CLOCKORBIT_SATBDS: 1065 D_GPS_EPOCH_TIME_CHECK(cb->EpochTime[s], cb->NumberOfSat[s]) 1066 break; 1067 case CLOCKORBIT_SATGLONASS: 1068 D_GLONASS_EPOCH_TIME_CHECK(cb->EpochTime[s], cb->NumberOfSat[s]) 1069 break; 1070 } 1071 D_SSR_UPDATE_INTERVAL(cb->UpdateInterval) 1072 D_MULTIPLE_MESSAGE_INDICATOR(mmi) 1073 D_SSR_IOD(cb->SSRIOD) 1074 D_SSR_PROVIDER_ID(cb->SSRProviderID) 1075 D_SSR_SOLUTION_ID(cb->SSRSolutionID) 1076 D_NO_OF_SATELLITES(nums) 1077 #ifdef BNC_DEBUG_SSR 1078 fprintf(stderr, "epochTime %d ui %d mmi %d sats %d/%d ssrIod %d providerId %d solId %d\n", 1079 cb->EpochTime[s], cb->UpdateInterval, mmi, cb->NumberOfSat[s], nums, 1080 cb->SSRIOD, cb->SSRProviderID, cb->SSRSolutionID); 1045 1081 #endif 1046 1082 for (i = 0; i < nums; ++i) { 1047 1083 D_GPS_SATELLITE_ID(id) 1048 for (pos = satoffset[s];1049 pos < satoffset[s] + b->NumberOfSat[s] && b->Sat[pos].ID != id; 1084 for (pos = satoffset[s]; 1085 pos < satoffset[s] + cb->NumberOfSat[s] && cb->Sat[pos].ID != id; 1050 1086 ++pos) 1051 1087 ; 1052 1088 if (pos >= satoffset[s + 1]) 1053 1089 return GCOBR_DATAMISMATCH; 1054 else if (pos == b->NumberOfSat[s] + satoffset[s]) 1055 ++b->NumberOfSat[s]; 1056 b->Sat[pos].ID = id; 1057 D_NO_OF_BIASES(b->Sat[pos].NumberOfCodeBiases) 1090 else if (pos == cb->NumberOfSat[s] + satoffset[s]) 1091 ++cb->NumberOfSat[s]; 1092 cb->Sat[pos].ID = id; 1093 D_NO_OF_BIASES(cb->Sat[pos].NumberOfCodeBiases) 1058 1094 #ifdef BNC_DEBUG_SSR 1059 1095 fprintf(stderr, "id %2d #%d ", 1060 b->Sat[pos].ID, b->Sat[pos].NumberOfCodeBiases); 1061 #endif 1062 for (j = 0; j < b->Sat[pos].NumberOfCodeBiases; ++j) { 1063 D_GNSS_SIGNAL_IDENTIFIER(b->Sat[pos].Biases[j].Type) 1064 D_CODE_BIAS(b->Sat[pos].Biases[j].Bias)1065 #ifdef BNC_DEBUG_SSR 1066 fprintf(stderr, "t %02d b %8.2f ",1067 b->Sat[pos].Biases[j].Type, b->Sat[pos].Biases[j].Bias); 1096 cb->Sat[pos].ID, cb->Sat[pos].NumberOfCodeBiases); 1097 #endif 1098 for (j = 0; j < cb->Sat[pos].NumberOfCodeBiases; ++j) { 1099 D_GNSS_SIGNAL_IDENTIFIER(cb->Sat[pos].Biases[j].Type) 1100 D_CODE_BIAS(cb->Sat[pos].Biases[j].Bias) 1101 #ifdef BNC_DEBUG_SSR 1102 fprintf(stderr, "t %02d b %8.2f ", 1103 cb->Sat[pos].Biases[j].Type, cb->Sat[pos].Biases[j].Bias); 1068 1104 #endif 1069 1105 } -
trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit_rtcm_new.h
r11004 r11031 278 278 size_t MakePhaseBias(const struct PhaseBias *b, PhaseBiasType type, int moremessagesfollow, char *buffer, size_t size); 279 279 size_t MakeVTEC(const struct VTEC *v, int moremessagesfollow, char *buffer, size_t size); 280 enum GCOB_RETURN GetSSR(struct ClockOrbit *co, struct CodeBias *b, struct VTEC *v, 281 struct PhaseBias *pb, struct MetaData *md, 280 size_t MakeMetaData(const struct MetaData *md, char *buffer, size_t size); 281 enum GCOB_RETURN GetSSR(struct ClockOrbit *co, struct CodeBias *cb, struct VTEC *v, 282 struct PhaseBias *pb, struct MetaData *md, struct Antenna* a, 282 283 const char *buffer, size_t size, int *bytesused); 283 284 };
Note:
See TracChangeset
for help on using the changeset viewer.
