@@ -176,6 +176,7 @@ def __init__(self, foutname=None):
176176 self .monlevel = 1
177177 self .sysref = - 1
178178 self .nsig_max = 4
179+ self .lock = {}
179180 self .mask_pbias = False
180181
181182 self .nrtk_r = {}
@@ -1179,6 +1180,9 @@ def decode_msm_time(self, sys, week, t):
11791180 tow = (t & 0x7ffffff )* 1e-3
11801181 time = gpst2time (week , tow + dow * 86400.0 )
11811182 time = utc2gpst (timeadd (time , - 10800.0 ))
1183+ elif sys == uGNSS .BDS :
1184+ tow = t * 1e-3
1185+ time = bdt2gpst (gpst2time (week , tow ))
11821186 else :
11831187 tow = t * 1e-3
11841188 time = gpst2time (week , tow )
@@ -1298,13 +1302,14 @@ def decode_msm(self, msg, i):
12981302 rrf [k ] = self .sval (v , 15 , 1e-4 )
12991303
13001304 obs = Obs ()
1301- obs .t = self .time
1305+ obs .time = self .time
13021306
1303- obs .P = np .empty ((0 , self .nsig ), dtype = np .float64 )
1304- obs .L = np .empty ((0 , self .nsig ), dtype = np .float64 )
1305- obs .S = np .empty ((0 , self .nsig ), dtype = np .float64 )
1306- obs .lli = np .empty ((0 , self .nsig ), dtype = np .int32 )
1307- obs .sat = np .empty (0 , dtype = np .int32 )
1307+ obs .P = np .zeros ((self .nsat , self .nsig ), dtype = np .float64 )
1308+ obs .L = np .zeros ((self .nsat , self .nsig ), dtype = np .float64 )
1309+ obs .S = np .zeros ((self .nsat , self .nsig ), dtype = np .float64 )
1310+ obs .D = np .zeros ((self .nsat , self .nsig ), dtype = np .float64 )
1311+ obs .lli = np .zeros ((self .nsat , self .nsig ), dtype = np .int32 )
1312+ obs .sat = np .zeros (self .nsat , dtype = np .int32 )
13081313
13091314 obs .sig = {}
13101315 obs .sig [sys ] = {}
@@ -1334,11 +1339,20 @@ def decode_msm(self, msg, i):
13341339 ll_ [idx ] = lock [j + ofst ]
13351340 ofst += nsig_
13361341
1337- obs .P = np .append (obs .P , pr_ )
1338- obs .L = np .append (obs .L , cp_ )
1339- obs .S = np .append (obs .S , cn_ )
1340- obs .lli = np .append (obs .lli , ll_ )
1341- obs .sat = np .append (obs .sat , sat_ )
1342+ obs .P [k , :] = pr_
1343+ obs .L [k , :] = cp_
1344+ obs .S [k , :] = cn_
1345+ obs .sat [k ] = sat_
1346+
1347+ if sat_ in self .lock :
1348+ for j , ll in enumerate (ll_ ):
1349+ ll_p = self .lock [sat_ ][j ]
1350+ if (ll == 0 & ll_p != 0 ) | ll < ll_p :
1351+ obs .lli [k , j ] = 1
1352+ else :
1353+ obs .lli [k , j ] = 0
1354+
1355+ self .lock [sat_ ] = ll_
13421356
13431357 return i , obs
13441358
@@ -1473,7 +1487,7 @@ def decode_gps_eph(self, msg, i):
14731487
14741488 eph .toe = gpst2time (eph .week , eph .toes )
14751489 eph .toc = gpst2time (eph .week , toc )
1476- eph .ttr = self .time
1490+ eph .tot = self .time
14771491 eph .A = sqrtA * sqrtA
14781492 eph .mode = 0
14791493
@@ -1601,7 +1615,7 @@ def decode_gal_eph(self, msg, i):
16011615
16021616 eph .toe = gpst2time (eph .week , eph .toes )
16031617 eph .toc = gpst2time (eph .week , toc )
1604- eph .ttr = self .time
1618+ eph .tot = self .time
16051619 eph .A = sqrtA * sqrtA
16061620 eph .svh = (hs << 7 )+ (dvs << 6 )
16071621 if self .msgtype == 1046 :
@@ -1656,15 +1670,15 @@ def decode_qzs_eph(self, msg, i):
16561670 eph .week = week
16571671 eph .sva = sva
16581672 eph .svh = svh
1659- eph .tgd = tgd * self .P2_31
1673+ eph .tgd = tgd * rCST .P2_31
16601674 eph .iodc = iodc
16611675 eph .fit = fit
16621676
16631677 eph .week = self .adjustweek (eph .week , self .time )
16641678
16651679 eph .toe = gpst2time (eph .week , eph .toes )
16661680 eph .toc = gpst2time (eph .week , toc )
1667- eph .ttr = self .time
1681+ eph .tot = self .time
16681682 eph .A = sqrtA * sqrtA
16691683 eph .flag = 1
16701684 eph .mode = 0
@@ -1718,7 +1732,7 @@ def decode_bds_eph(self, msg, i):
17181732
17191733 eph .toe = bdt2gpst (bdt2time (eph .week , eph .toes ))
17201734 eph .toc = bdt2gpst (bdt2time (eph .week , toc ))
1721- eph .ttr = self .time
1735+ eph .tot = self .time
17221736 eph .A = sqrtA * sqrtA
17231737 eph .mode = 0
17241738
@@ -1771,7 +1785,7 @@ def decode_irn_eph(self, msg, i):
17711785
17721786 eph .toe = gpst2time (eph .week , eph .toes )
17731787 eph .toc = gpst2time (eph .week , toc )
1774- eph .ttr = self .time
1788+ eph .tot = self .time
17751789 eph .A = sqrtA * sqrtA
17761790 eph .iodc = eph .iode
17771791 eph .mode = 0
@@ -2612,7 +2626,7 @@ def decode(self, msg, subtype=None):
26122626 if self .monlevel > 0 and self .fh is not None :
26132627 self .out_log (obs , eph , geph , seph )
26142628
2615- return i , obs , eph
2629+ return i , obs , eph , geph , seph
26162630
26172631
26182632class rtcme (cssre ):
0 commit comments