Changeset 4784 in ntrip for trunk/BNC/src/bncpppclient.cpp
- Timestamp:
- Oct 27, 2012, 12:26:02 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/BNC/src/bncpppclient.cpp
r4416 r4784 157 157 } 158 158 159 // Set Observations GPS 160 // -------------------- 161 if (obs.satSys == 'G') { 162 double C1 = obs.measdata("C1C", 3.0); 163 double P1 = obs.measdata("C1P", 3.0); 164 double P2 = obs.measdata("C2P", 3.0); 165 double L1 = obs.measdata("L1P", 3.0); if (L1 == 0.0) L1 = obs.measdata("L1C", 3.0); 166 double L2 = obs.measdata("L2P", 3.0); if (L2 == 0.0) L2 = obs.measdata("L2C", 3.0); 167 if ( (C1 || P1) && P2 && L1 && L2 ) { 168 double f1 = t_CST::freq1; 169 double f2 = t_CST::freq2; 170 double c1 = f1 * f1 / (f1 * f1 - f2 * f2); 171 double c2 = - f2 * f2 / (f1 * f1 - f2 * f2); 172 if (P1) { 173 satData->P1 = P1 + (bb ? bb->p1 : 0.0); 174 } 175 else { 176 satData->P1 = C1 + (bb ? bb->c1 : 0.0); 177 } 178 satData->P2 = P2 + (bb ? bb->p2 : 0.0); 179 180 satData->L1 = L1 * t_CST::c / f1; 181 satData->L2 = L2 * t_CST::c / f2; 182 satData->P3 = c1 * satData->P1 + c2 * satData->P2; 183 satData->L3 = c1 * satData->L1 + c2 * satData->L2; 184 satData->lambda3 = c1 * t_CST::c / f1 + c2 * t_CST::c / f2; 185 186 _epoData.back()->satData[satData->prn] = satData; 187 } 188 else { 189 delete satData; 190 } 191 } 192 193 // Set Observations GLONASS 194 // ------------------------ 195 else if (obs.satSys == 'R') { 196 double C1 = obs.measdata("C1C", 3.0); 197 double P1 = obs.measdata("C1P", 3.0); 198 double C2 = obs.measdata("C2C", 3.0); 199 double P2 = obs.measdata("C2P", 3.0); 200 double L1 = obs.measdata("L1P", 3.0); if (L1 == 0.0) L1 = obs.measdata("L1C", 3.0); 201 double L2 = obs.measdata("L2P", 3.0); if (L2 == 0.0) L2 = obs.measdata("L2C", 3.0); 202 if ( (P1 || C1) && (P2 || P2) && L1 && L2 ) { 203 double f1 = t_CST::f1(obs.satSys, obs.slotNum); 204 double f2 = t_CST::f2(obs.satSys, obs.slotNum); 205 double c1 = f1 * f1 / (f1 * f1 - f2 * f2); 206 double c2 = - f2 * f2 / (f1 * f1 - f2 * f2); 207 if (P1) { 208 satData->P1 = P1 + (bb ? bb->p1 : 0.0); 209 } 210 else { 211 satData->P1 = C1 + (bb ? bb->c1 : 0.0); 212 } 213 if (P2) { 214 satData->P2 = P2 + (bb ? bb->p2 : 0.0); 215 } 216 else { 217 satData->P2 = C2; 218 } 219 satData->L1 = L1 * t_CST::c / f1; 220 satData->L2 = L2 * t_CST::c / f2; 221 satData->P3 = c1 * satData->P1 + c2 * satData->P2; 222 satData->L3 = c1 * satData->L1 + c2 * satData->L2; 223 satData->lambda3 = c1 * t_CST::c / f1 + c2 * t_CST::c / f2; 224 159 // Set Observations GPS and Glonass 160 // -------------------------------- 161 if (obs.satSys == 'G' || obs.satSys == 'R') { 162 const QByteArray preferedTypes("WPC"); 163 for (int ii = preferedTypes.length()-1; ii >= 0; ii--) { 164 double p1 = obs.measdata("C1" + preferedTypes[ii], 3.0); 165 if (p1 != 0.0) { 166 satData->P1 = p1; 167 if (bb) { 168 satData->P1 += bb->value("1" + preferedTypes[ii]); 169 } 170 } 171 double p2 = obs.measdata("C2" + preferedTypes[ii], 3.0); 172 if (p2 != 0.0) { 173 satData->P2 = p2; 174 if (bb) { 175 satData->P1 += bb->value("2" + preferedTypes[ii]); 176 } 177 } 178 double l1 = obs.measdata("L1" + preferedTypes[ii], 3.0); 179 if (l1 != 0.0) { 180 satData->L1 = l1; 181 } 182 double l2 = obs.measdata("L2" + preferedTypes[ii], 3.0); 183 if (l2 != 0.0) { 184 satData->L2 = l2; 185 } 186 } 187 if (satData->P1 != 0.0 && satData->P2 != 0.0 && 188 satData->L1 != 0.0 && satData->L2 != 0.0 ) { 189 double f1 = t_CST::f1(obs.satSys, obs.slotNum); 190 double f2 = t_CST::f2(obs.satSys, obs.slotNum); 191 double a1 = f1 * f1 / (f1 * f1 - f2 * f2); 192 double a2 = - f2 * f2 / (f1 * f1 - f2 * f2); 193 satData->L1 = satData->L1 * t_CST::c / f1; 194 satData->L2 = satData->L2 * t_CST::c / f2; 195 satData->P3 = a1 * satData->P1 + a2 * satData->P2; 196 satData->L3 = a1 * satData->L1 + a2 * satData->L2; 197 satData->lambda3 = a1 * t_CST::c / f1 + a2 * t_CST::c / f2; 225 198 _epoData.back()->satData[satData->prn] = satData; 226 199 } … … 233 206 // ------------------------ 234 207 else if (obs.satSys == 'E') { 235 double C1 = obs.measdata("C1", 3.0); 236 double L1 = obs.measdata("L1", 3.0); 237 double C5 = obs.measdata("C5", 3.0); 238 double L5 = obs.measdata("L5", 3.0); 239 if ( C1 && C5 && L1 && L5) { 208 satData->P1 = obs.measdata("C1", 3.0); 209 satData->L1 = obs.measdata("L1", 3.0); 210 satData->P5 = obs.measdata("C5", 3.0); 211 satData->L5 = obs.measdata("L5", 3.0); 212 if (satData->P1 != 0.0 && satData->P5 != 0.0 && 213 satData->L1 != 0.0 && satData->L5 != 0.0 ) { 240 214 double f1 = t_CST::freq1; 241 215 double f5 = t_CST::freq5; 242 double c1 = f1 * f1 / (f1 * f1 - f5 * f5); 243 double c5 = - f5 * f5 / (f1 * f1 - f5 * f5); 244 245 satData->P1 = C1; 246 satData->P5 = C5; 247 satData->L1 = L1 * t_CST::c / f1; 248 satData->L5 = L5 * t_CST::c / f5; 249 satData->P3 = c1 * satData->P1 + c5 * satData->P5; 250 satData->L3 = c1 * satData->L1 + c5 * satData->L5; 251 satData->lambda3 = c1 * t_CST::c / f1 + c5 * t_CST::c / f5; 216 double a1 = f1 * f1 / (f1 * f1 - f5 * f5); 217 double a5 = - f5 * f5 / (f1 * f1 - f5 * f5); 218 satData->L1 = satData->L1 * t_CST::c / f1; 219 satData->L5 = satData->L5 * t_CST::c / f5; 220 satData->P3 = a1 * satData->P1 + a5 * satData->P5; 221 satData->L3 = a1 * satData->L1 + a5 * satData->L5; 222 satData->lambda3 = a1 * t_CST::c / f1 + a5 * t_CST::c / f5; 252 223 _epoData.back()->satData[satData->prn] = satData; 253 224 } … … 303 274 _corr[prn] = cc; 304 275 } 305 306 276 cc->readLine(line); 307 277 _corr_tt = cc->tClk; 308 278 } 309 else if ( messageType == BTYPE_GPS ) { 310 279 else if ( messageType == BTYPE_GPS || messageType == BTYPE_GLONASS ) { 311 280 t_bias* bb = 0; 312 281 if (_bias.contains(prn)) { … … 317 286 _bias[prn] = bb; 318 287 } 319 320 bb->tt.set(GPSweek, GPSweeks); 321 322 int numBiases; 323 in >> numBiases; 324 for (int ii = 0; ii < numBiases; ++ii) { 325 int bType; 326 double bValue; 327 in >> bType >> bValue; 328 if (bType == CODETYPEGPS_L1_Z) { 329 bb->p1 = bValue; 330 } 331 else if (bType == CODETYPEGPS_L1_CA) { 332 bb->c1 = bValue; 333 } 334 else if (bType == CODETYPEGPS_L2_Z) { 335 bb->p2 = bValue; 336 } 337 } 288 bb->readLine(line); 338 289 } 339 290 }
Note:
See TracChangeset
for help on using the changeset viewer.