Changeset 8905 in ntrip for trunk/BNC/src/pppMain.cpp


Ignore:
Timestamp:
Mar 18, 2020, 11:13:50 AM (4 years ago)
Author:
stuerze
Message:

some developments regarding PPP, not completed!

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/src/pppMain.cpp

    r8773 r8905  
    109109        }
    110110        delete pppThread;
    111       }
     111     }
    112112#endif
    113113    }
    114114    _pppThreads.clear();
    115   }
     115 }
    116116
    117117  _running = false;
     
    183183      opt->_corrWaitTime = 0;
    184184    }
     185    opt->_obsModelType   = t_pppOptions::IF;
     186    opt->_pseudoObsIono  = false;
     187    opt->_refSatRequired = false;
     188#ifdef USE_PPP
     189    // Pseudo Observations
     190    if      (settings.value("PPP/pseudoObs").toString() == "Ionosphere") {
     191      opt->_pseudoObsIono = true;
     192    }
     193    else if (settings.value("PPP/pseudoObs").toString() == "no") {
     194      opt->_pseudoObsIono = false;
     195    }
     196    // Observation Model
     197    if      (settings.value("PPP/modelObs").toString() == "Ionosphere-free PPP") {
     198      opt->_obsModelType = t_pppOptions::IF;
     199      opt->_pseudoObsIono = false;
     200    }
     201    else if (settings.value("PPP/modelObs").toString() == "PPP-RTK") {
     202      opt->_obsModelType = t_pppOptions::PPPRTK;
     203      opt->_pseudoObsIono = false;
     204    }
     205    else if (settings.value("PPP/modelObs").toString() == "Uncombined PPP") {
     206      opt->_obsModelType = t_pppOptions::UncombPPP;
     207      if (opt->_pseudoObsIono) {
     208        opt->_refSatRequired = true;
     209      }
     210    }
     211    else if (settings.value("PPP/modelObs").toString() == "DCM with Code Biases") {
     212      opt->_obsModelType = t_pppOptions::DCMcodeBias;
     213      opt->_refSatRequired = true;
     214    }
     215    else if (settings.value("PPP/modelObs").toString() == "DCM with Phase Biases") {
     216      opt->_obsModelType = t_pppOptions::DCMphaseBias;
     217      opt->_refSatRequired = true;
     218    }
     219#endif
    185220    // GPS
    186     if      (settings.value("PPP/lcGPS").toString() == "Pi") {
    187       opt->_LCsGPS.push_back(t_lc::c1);
    188       opt->_LCsGPS.push_back(t_lc::c2);
     221    if (settings.value("PPP/lcGPS").toString() == "Pi") {
     222      if (opt->_obsModelType == t_pppOptions::IF) {
     223        opt->_LCsGPS.push_back(t_lc::cIF);
     224      }
     225      else {
     226        opt->_LCsGPS.push_back(t_lc::c1);
     227        opt->_LCsGPS.push_back(t_lc::c2);
     228        if (opt->_pseudoObsIono) {
     229          opt->_LCsGPS.push_back(t_lc::GIM);
     230        }
     231      }
    189232    }
    190233    else if (settings.value("PPP/lcGPS").toString() == "Li") {
    191       opt->_LCsGPS.push_back(t_lc::l1);
    192       opt->_LCsGPS.push_back(t_lc::l2);
     234      if (opt->_obsModelType == t_pppOptions::IF) {
     235        opt->_LCsGPS.push_back(t_lc::lIF);
     236      }
     237      else {
     238        opt->_LCsGPS.push_back(t_lc::l1);
     239        opt->_LCsGPS.push_back(t_lc::l2);
     240        if (opt->_pseudoObsIono) {
     241          opt->_LCsGPS.push_back(t_lc::GIM);
     242        }
     243      }
    193244    }
    194245    else if (settings.value("PPP/lcGPS").toString() == "Pi&Li") {
    195       opt->_LCsGPS.push_back(t_lc::c1);
    196       opt->_LCsGPS.push_back(t_lc::c2);
    197       opt->_LCsGPS.push_back(t_lc::l1);
    198       opt->_LCsGPS.push_back(t_lc::l2);
    199     }
    200     if      (settings.value("PPP/lcGPS").toString() == "P3") {
    201       opt->_LCsGPS.push_back(t_lc::cIF);
    202     }
    203     else if (settings.value("PPP/lcGPS").toString() == "L3") {
    204       opt->_LCsGPS.push_back(t_lc::lIF);
    205     }
    206     else if (settings.value("PPP/lcGPS").toString() == "P3&L3") {
    207       opt->_LCsGPS.push_back(t_lc::cIF);
    208       opt->_LCsGPS.push_back(t_lc::lIF);
     246      if (opt->_obsModelType == t_pppOptions::IF) {
     247        opt->_LCsGPS.push_back(t_lc::cIF);
     248        opt->_LCsGPS.push_back(t_lc::lIF);
     249      }
     250      else {
     251        opt->_LCsGPS.push_back(t_lc::c1);
     252        opt->_LCsGPS.push_back(t_lc::c2);
     253        opt->_LCsGPS.push_back(t_lc::l1);
     254        opt->_LCsGPS.push_back(t_lc::l2);
     255        if (opt->_pseudoObsIono) {
     256          opt->_LCsGPS.push_back(t_lc::GIM);
     257        }
     258      }
    209259    }
    210260    // GLONASS
    211     if      (settings.value("PPP/lcGLONASS").toString() == "Pi") {
    212       opt->_LCsGLONASS.push_back(t_lc::c1);
    213       opt->_LCsGLONASS.push_back(t_lc::c2);
     261    if (settings.value("PPP/lcGLONASS").toString() == "Pi") {
     262      if (opt->_obsModelType == t_pppOptions::IF) {
     263        opt->_LCsGLONASS.push_back(t_lc::cIF);
     264      }
     265      else {
     266        opt->_LCsGLONASS.push_back(t_lc::c1);
     267        opt->_LCsGLONASS.push_back(t_lc::c2);
     268        if (opt->_pseudoObsIono) {
     269          opt->_LCsGLONASS.push_back(t_lc::GIM);
     270        }
     271      }
    214272    }
    215273    else if (settings.value("PPP/lcGLONASS").toString() == "Li") {
    216       opt->_LCsGLONASS.push_back(t_lc::l1);
    217       opt->_LCsGLONASS.push_back(t_lc::l2);
     274      if (opt->_obsModelType == t_pppOptions::IF) {
     275        opt->_LCsGLONASS.push_back(t_lc::lIF);
     276      }
     277      else {
     278        opt->_LCsGLONASS.push_back(t_lc::l1);
     279        opt->_LCsGLONASS.push_back(t_lc::l2);
     280        if (opt->_obsModelType == t_pppOptions::IF) {
     281          opt->_LCsGLONASS.push_back(t_lc::GIM);
     282        }
     283      }
    218284    }
    219285    else if (settings.value("PPP/lcGLONASS").toString() == "Pi&Li") {
    220       opt->_LCsGLONASS.push_back(t_lc::c1);
    221       opt->_LCsGLONASS.push_back(t_lc::c2);
    222       opt->_LCsGLONASS.push_back(t_lc::l1);
    223       opt->_LCsGLONASS.push_back(t_lc::l2);
    224     }
    225     if      (settings.value("PPP/lcGLONASS").toString() == "P3") {
    226       opt->_LCsGLONASS.push_back(t_lc::cIF);
    227     }
    228     else if (settings.value("PPP/lcGLONASS").toString() == "L3") {
    229       opt->_LCsGLONASS.push_back(t_lc::lIF);
    230     }
    231     else if (settings.value("PPP/lcGLONASS").toString() == "P3&L3") {
    232       opt->_LCsGLONASS.push_back(t_lc::cIF);
    233       opt->_LCsGLONASS.push_back(t_lc::lIF);
     286      if (opt->_obsModelType == t_pppOptions::IF) {
     287        opt->_LCsGLONASS.push_back(t_lc::cIF);
     288        opt->_LCsGLONASS.push_back(t_lc::lIF);
     289      }
     290      else {
     291        opt->_LCsGLONASS.push_back(t_lc::c1);
     292        opt->_LCsGLONASS.push_back(t_lc::c2);
     293        opt->_LCsGLONASS.push_back(t_lc::l1);
     294        opt->_LCsGLONASS.push_back(t_lc::l2);
     295        if (opt->_pseudoObsIono) {
     296          opt->_LCsGLONASS.push_back(t_lc::GIM);
     297        }
     298      }
    234299    }
    235300    // Galileo
    236     if      (settings.value("PPP/lcGalileo").toString() == "Pi") {
    237       opt->_LCsGalileo.push_back(t_lc::c1);
    238       opt->_LCsGalileo.push_back(t_lc::c2);
     301    if (settings.value("PPP/lcGalileo").toString() == "Pi") {
     302      if (opt->_obsModelType == t_pppOptions::IF) {
     303        opt->_LCsGalileo.push_back(t_lc::cIF);
     304      }
     305      else {
     306        opt->_LCsGalileo.push_back(t_lc::c1);
     307        opt->_LCsGalileo.push_back(t_lc::c2);
     308        if (opt->_pseudoObsIono) {
     309          opt->_LCsGalileo.push_back(t_lc::GIM);
     310        }
     311      }
    239312    }
    240313    else if (settings.value("PPP/lcGalileo").toString() == "Li") {
    241       opt->_LCsGalileo.push_back(t_lc::l1);
    242       opt->_LCsGalileo.push_back(t_lc::l2);
     314      if (opt->_obsModelType == t_pppOptions::IF) {
     315        opt->_LCsGalileo.push_back(t_lc::lIF);
     316      }
     317      else {
     318        opt->_LCsGalileo.push_back(t_lc::l1);
     319        opt->_LCsGalileo.push_back(t_lc::l2);
     320        if (opt->_pseudoObsIono) {
     321          opt->_LCsGalileo.push_back(t_lc::GIM);
     322        }
     323      }
    243324    }
    244325    else if (settings.value("PPP/lcGalileo").toString() == "Pi&Li") {
    245       opt->_LCsGalileo.push_back(t_lc::c1);
    246       opt->_LCsGalileo.push_back(t_lc::c2);
    247       opt->_LCsGalileo.push_back(t_lc::l1);
    248       opt->_LCsGalileo.push_back(t_lc::l2);
    249     }
    250     if      (settings.value("PPP/lcGalileo").toString() == "P3") {
    251       opt->_LCsGalileo.push_back(t_lc::cIF);
    252     }
    253     else if (settings.value("PPP/lcGalileo").toString() == "L3") {
    254       opt->_LCsGalileo.push_back(t_lc::lIF);
    255     }
    256     else if (settings.value("PPP/lcGalileo").toString() == "P3&L3") {
    257       opt->_LCsGalileo.push_back(t_lc::cIF);
    258       opt->_LCsGalileo.push_back(t_lc::lIF);
     326      if (opt->_obsModelType == t_pppOptions::IF) {
     327        opt->_LCsGalileo.push_back(t_lc::cIF);
     328        opt->_LCsGalileo.push_back(t_lc::lIF);
     329      }
     330      else {
     331        opt->_LCsGalileo.push_back(t_lc::c1);
     332        opt->_LCsGalileo.push_back(t_lc::c2);
     333        opt->_LCsGalileo.push_back(t_lc::l1);
     334        opt->_LCsGalileo.push_back(t_lc::l2);
     335        if (opt->_pseudoObsIono) {
     336          opt->_LCsGalileo.push_back(t_lc::GIM);
     337        }
     338      }
    259339    }
    260340    // BDS
    261     if      (settings.value("PPP/lcBDS").toString() == "Pi") {
    262       opt->_LCsBDS.push_back(t_lc::c1);
    263       opt->_LCsBDS.push_back(t_lc::c2);
     341    if (settings.value("PPP/lcBDS").toString() == "Pi") {
     342      if (opt->_obsModelType == t_pppOptions::IF) {
     343        opt->_LCsBDS.push_back(t_lc::cIF);
     344      }
     345      else {
     346        opt->_LCsBDS.push_back(t_lc::c1);
     347        opt->_LCsBDS.push_back(t_lc::c2);
     348        if (opt->_pseudoObsIono) {
     349          opt->_LCsBDS.push_back(t_lc::GIM);
     350        }
     351      }
    264352    }
    265353    else if (settings.value("PPP/lcBDS").toString() == "Li") {
    266       opt->_LCsBDS.push_back(t_lc::l1);
    267       opt->_LCsBDS.push_back(t_lc::l2);
     354      if (opt->_obsModelType == t_pppOptions::IF) {
     355        opt->_LCsBDS.push_back(t_lc::lIF);
     356      }
     357      else {
     358        opt->_LCsBDS.push_back(t_lc::l1);
     359        opt->_LCsBDS.push_back(t_lc::l2);
     360        if (opt->_pseudoObsIono) {
     361          opt->_LCsBDS.push_back(t_lc::GIM);
     362        }
     363      }
    268364    }
    269365    else if (settings.value("PPP/lcBDS").toString() == "Pi&Li") {
    270       opt->_LCsBDS.push_back(t_lc::c1);
    271       opt->_LCsBDS.push_back(t_lc::c2);
    272       opt->_LCsBDS.push_back(t_lc::l1);
    273       opt->_LCsBDS.push_back(t_lc::l2);
    274     }
    275     if      (settings.value("PPP/lcBDS").toString() == "P3") {
    276       opt->_LCsBDS.push_back(t_lc::cIF);
    277     }
    278     else if (settings.value("PPP/lcBDS").toString() == "L3") {
    279       opt->_LCsBDS.push_back(t_lc::lIF);
    280     }
    281     else if (settings.value("PPP/lcBDS").toString() == "P3&L3") {
    282       opt->_LCsBDS.push_back(t_lc::cIF);
    283       opt->_LCsBDS.push_back(t_lc::lIF);
     366      if (opt->_obsModelType == t_pppOptions::IF) {
     367        opt->_LCsBDS.push_back(t_lc::cIF);
     368        opt->_LCsBDS.push_back(t_lc::lIF);
     369      }
     370      else {
     371        opt->_LCsBDS.push_back(t_lc::c1);
     372        opt->_LCsBDS.push_back(t_lc::c2);
     373        opt->_LCsBDS.push_back(t_lc::l1);
     374        opt->_LCsBDS.push_back(t_lc::l2);
     375        if (opt->_pseudoObsIono) {
     376          opt->_LCsBDS.push_back(t_lc::GIM);
     377        }
     378      }
    284379    }
    285380
     
    316411    // Some default values
    317412    // -------------------
    318     opt->_aprSigAmb   = 1000.0;
    319     opt->_noiseClk    = 1000.0;
     413    opt->_aprSigAmb       = 1000.0;
     414    opt->_aprSigIon       = 1000.0;
     415    opt->_noiseClk        = 1000.0;
     416    opt->_aprSigCodeBias  = 1000.0;
     417    opt->_aprSigPhaseBias = 1000.0;
     418    opt->_noiseIon        = 1.0;
     419    opt->_noiseCodeBias   = 1.0;
     420    opt->_noisePhaseBias  = 0.1;
     421    opt->_sigmaGIMdiff    = 0.05; // pseudo observation GIM: STEC(ref_sat) - STEC(sat)
    320422
    321423    _options << opt;
Note: See TracChangeset for help on using the changeset viewer.