Skip to content

Commit

Permalink
- fixed PPP BDS LSB of code bias correction.
Browse files Browse the repository at this point in the history
  • Loading branch information
hirokawa committed Feb 3, 2024
1 parent 7b5bcad commit 181a8c8
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 25 deletions.
38 changes: 25 additions & 13 deletions src/cssrlib/cssr_bds.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ def __init__(self, foutname=None):
self.nsig_max = 8
self.iodp = -1
self.iodp_p = -1
self.cb_blen = 12
self.cb_scl = 0.017

def ssig2rsig(self, sys: sGNSS, utyp: uTYP, ssig):
gps_tbl = {
Expand Down Expand Up @@ -177,9 +179,16 @@ def decode_cssr_mask(self, msg, i):
return i

def decode_cssr_orb_sat(self, msg, i, inet, sat_n):
slot, iodn, iodc, dx, dy, dz, ucls, uval = \
bs.unpack_from('u9u10u3s15s13s13u3u3', msg, i)
i += 69
slot, iodn, iodc = bs.unpack_from('u9u10u3', msg, i)
i += 22

dx, dy, dz = bs.unpack_from('s{:d}s{:d}s{:d}'.format(
self.dorb_blen[0], self.dorb_blen[1], self.dorb_blen[2]), msg, i)
i += self.dorb_blen[0] + self.dorb_blen[1] + self.dorb_blen[2]

ucls, uval = bs.unpack_from('u3u3', msg, i)
i += 6

sys, prn = self.slot2prn(slot)
if sys == uGNSS.NONE:
return i
Expand All @@ -191,9 +200,9 @@ def decode_cssr_orb_sat(self, msg, i, inet, sat_n):
iodn = iodn & 0xff # IODC -> IODE

dorb = np.zeros(3)
dorb[0] = self.sval(dx, 15, self.dorb_scl[0])
dorb[1] = self.sval(dy, 13, self.dorb_scl[1])
dorb[2] = self.sval(dz, 13, self.dorb_scl[2])
dorb[0] = self.sval(dx, self.dorb_blen[0], self.dorb_scl[0])
dorb[1] = self.sval(dy, self.dorb_blen[1], self.dorb_scl[1])
dorb[2] = self.sval(dz, self.dorb_blen[2], self.dorb_scl[2])

self.lc[inet].iode[sat] = iodn
self.lc[inet].iodc[sat] = iodc
Expand All @@ -220,7 +229,7 @@ def decode_cssr_orb(self, msg, i, inet=0):
self.iodssr_c[sCType.ORBIT] = head['iodssr']
self.lc[inet].cstat |= (1 << sCType.ORBIT)

i += 19
i += 19 # reserve
return i

def decode_cssr_cbias(self, msg, i, inet=0):
Expand Down Expand Up @@ -248,10 +257,12 @@ def decode_cssr_cbias(self, msg, i, inet=0):

self.lc[inet].cbias[sat] = {}
for j in range(0, nsig):
sig, cb = bs.unpack_from('u4s12', msg, i)
i += 16
sig, cb = bs.unpack_from(
'u4s{:d}'.format(self.cb_blen), msg, i)
i += 4+self.cb_blen
sig_ = self.ssig2rsig(sys, uTYP.C, sig)
self.lc[inet].cbias[sat][sig_] = self.sval(cb, 12, self.cb_scl)
self.lc[inet].cbias[sat][sig_] = self.sval(
cb, self.cb_blen, self.cb_scl)

self.iodssr_c[sCType.CBIAS] = head['iodssr']
self.lc[inet].cstat |= (1 << sCType.CBIAS)
Expand All @@ -260,16 +271,17 @@ def decode_cssr_cbias(self, msg, i, inet=0):

def decode_cssr_clk_sat(self, msg, i, inet, sat):
""" decode clock correction for satellite """
iodc, dclk = bs.unpack_from('u3s15', msg, i)
i += 18
iodc, dclk = bs.unpack_from('u3s{:d}'.format(self.dclk_blen), msg, i)
i += 3+self.dclk_blen

if sat in self.lc[inet].iodc_c.keys() and \
iodc != self.lc[inet].iodc_c[sat]:
self.lc[inet].iodc_c_p[sat] = self.lc[inet].iodc_c[sat]
self.lc[inet].dclk_p[sat] = self.lc[inet].dclk[sat]
self.lc[inet].iodc_c[sat] = iodc
# note: the sign of the clock correction reversed
self.lc[inet].dclk[sat] = -self.sval(dclk, 15, self.dclk_scl)
self.lc[inet].dclk[sat] = - \
self.sval(dclk, self.dclk_blen, self.dclk_scl)
return i

def decode_cssr_clk(self, msg, i, inet=0):
Expand Down
Loading

0 comments on commit 181a8c8

Please sign in to comment.