diff --git a/src/asterx1_gps.cpp b/src/asterx1_gps.cpp index 8db8c9dea0ca0ac6e0d5048bcd0642272901c4de..21cd9a348ed22351a97319ad98c2658253b21cd3 100644 --- a/src/asterx1_gps.cpp +++ b/src/asterx1_gps.cpp @@ -692,7 +692,36 @@ void CasteRx1::process_meas_epoch(unsigned char *data,unsigned short int length) if(gps_meas_epoch_type1.carrier.msb==-128 && gps_meas_epoch_type1.carrier.lsb==0)// the carrier phase is not valid meas_epoch_type1.carrier_phase=0.0; else - meas_epoch_type1.carrier_phase=((double)gps_meas_epoch_type1.carrier.msb)*65.536+((double)gps_meas_epoch_type1.carrier.lsb)/1000.0; + meas_epoch_type1.carrier_phase=(meas_epoch_type1.pseudo_range/299792458.0)+((double)gps_meas_epoch_type1.carrier.msb)*65.536+((double)gps_meas_epoch_type1.carrier.lsb)/1000.0; + switch(meas_epoch_type1.signal_type) + { + case GPS_L1_CA: + case GPS_L1_PY: meas_epoch_type1.carrier_phase+=(meas_epoch_type1.pseudo_range/299792458.0)*1575420000.0; + break; + case GPS_L2_PY: + case GPS_L2C: meas_epoch_type1.carrier_phase+=(meas_epoch_type1.pseudo_range/299792458.0)*1227600000.0; + break; + case GPS_L5: meas_epoch_type1.carrier_phase+=(meas_epoch_type1.pseudo_range/299792458.0)*1176450000.0; + break; + case GLO_L1_CA: + case GLO_L1_P: + case GLO_L2_P: + case GLO_L2_CA: break; + case GAL_L1A: + case GAL_L1BC: meas_epoch_type1.carrier_phase+=(meas_epoch_type1.pseudo_range/299792458.0)*1575420000.0; + break; + case GAL_E6B: + case GAL_E6BC: meas_epoch_type1.carrier_phase+=(meas_epoch_type1.pseudo_range/299792458.0)*1278750000.0; + break; + case GAL_E5a: meas_epoch_type1.carrier_phase+=(meas_epoch_type1.pseudo_range/299792458.0)*1176450000.0; + break; + case GAL_E5b: meas_epoch_type1.carrier_phase+=(meas_epoch_type1.pseudo_range/299792458.0)*1207140000.0; + break; + case GAL_E5: meas_epoch_type1.carrier_phase+=(meas_epoch_type1.pseudo_range/299792458.0)*1191795000.0; + break; + case GEO_L1CA: meas_epoch_type1.carrier_phase+=(meas_epoch_type1.pseudo_range/299792458.0)*1575420000.0; + break; + } meas_epoch_type1.cn0=((double)gps_meas_epoch_type1.cn0)*0.25; if(meas_epoch_type1.signal_type==GPS_L1_PY || meas_epoch_type1.signal_type==GPS_L2_PY) meas_epoch_type1.cn0+=10; @@ -732,6 +761,35 @@ void CasteRx1::process_meas_epoch(unsigned char *data,unsigned short int length) meas_epoch_type2.carrier_phase=0.0; else meas_epoch_type2.carrier_phase=((double)gps_meas_epoch_type2.carrier_msb)*65.536+((double)gps_meas_epoch_type2.carrier_lsb)/1000.0; + switch(meas_epoch_type2.signal_type) + { + case GPS_L1_CA: + case GPS_L1_PY: meas_epoch_type2.carrier_phase+=(meas_epoch_type2.pseudo_range/299792458.0)*1575420000.0; + break; + case GPS_L2_PY: + case GPS_L2C: meas_epoch_type2.carrier_phase+=(meas_epoch_type2.pseudo_range/299792458.0)*1227600000.0; + break; + case GPS_L5: meas_epoch_type2.carrier_phase+=(meas_epoch_type2.pseudo_range/299792458.0)*1176450000.0; + break; + case GLO_L1_CA: + case GLO_L1_P: + case GLO_L2_P: + case GLO_L2_CA: break; + case GAL_L1A: + case GAL_L1BC: meas_epoch_type2.carrier_phase+=(meas_epoch_type2.pseudo_range/299792458.0)*1575420000.0; + break; + case GAL_E6B: + case GAL_E6BC: meas_epoch_type2.carrier_phase+=(meas_epoch_type2.pseudo_range/299792458.0)*1278750000.0; + break; + case GAL_E5a: meas_epoch_type2.carrier_phase+=(meas_epoch_type2.pseudo_range/299792458.0)*1176450000.0; + break; + case GAL_E5b: meas_epoch_type2.carrier_phase+=(meas_epoch_type2.pseudo_range/299792458.0)*1207140000.0; + break; + case GAL_E5: meas_epoch_type2.carrier_phase+=(meas_epoch_type2.pseudo_range/299792458.0)*1191795000.0; + break; + case GEO_L1CA: meas_epoch_type2.carrier_phase+=(meas_epoch_type2.pseudo_range/299792458.0)*1575420000.0; + break; + } if(gps_meas_epoch_type2.info.smoothed==1) meas_epoch_type2.pseudorange_smoothed=true; else