@@ -245,10 +245,8 @@ def decode_gal_fnav(self, week, time, sat, type_, msg):
245
245
return None
246
246
247
247
buff = self .gal_fnav [prn - 1 ]
248
- i = 0
249
248
for k in range (31 ): # copy 244bits
250
- buff [(sid - 1 )* 31 + k ] = bs .unpack_from ('u8' , msg , i )[0 ]
251
- i += 8
249
+ buff [(sid - 1 )* 31 + k ] = msg [k ]
252
250
253
251
buff = bytes (buff )
254
252
sid1 , svid1 , iodnav1 = bs .unpack_from ('u6u6u10' , buff , 0 )
@@ -300,18 +298,8 @@ def decode_gal_fnav(self, week, time, sat, type_, msg):
300
298
eph .iodc = iodnav1
301
299
302
300
eph .sva = self .sisa2sva (sisa )
303
-
304
- if type_ == 0 :
305
- eph .code = 1
306
- elif type_ == 1 :
307
- eph .code = 2
308
- elif type_ == 2 :
309
- eph .code = 4
310
-
311
- if type_ == 0 or type_ == 2 : # INAV E1B, E5B
312
- eph .code |= (1 << 9 ) # toc/af0-2, SISA are for E5b, E1
313
- elif type_ == 1 : # FNAV E1B, R5A
314
- eph .code |= (1 << 8 ) # toc/af0-2, SISA are for E5a, E1
301
+ eph .code = 2 # FNAV
302
+ eph .code |= (1 << 8 ) # toc/af0-2, SISA are for E5a, E1
315
303
316
304
eph .toe = gst2time (week_gst , eph .toes )
317
305
eph .toc = gst2time (week_gst , toc )
@@ -342,7 +330,7 @@ def decode_gps_lnav(self, week, time, sat, msg):
342
330
return None
343
331
344
332
sid = bs .unpack_from ('u3' , msg , 53 )[0 ]
345
- buff [(sid - 1 )* 40 :(sid - 1 )* 40 + 40 ] = msg
333
+ buff [(sid - 1 )* 40 :(sid - 1 )* 40 + 40 ] = msg [ 0 : 40 ]
346
334
347
335
id1 = bs .unpack_from ('u3' , buff , 53 )[0 ]
348
336
id2 = bs .unpack_from ('u3' , buff , 320 + 53 )[0 ]
@@ -477,10 +465,10 @@ def decode_gps_cnav(self, week, time, sat, msg):
477
465
return None
478
466
479
467
if sid in (10 , 11 ): # ephemeris
480
- buff [(sid - 10 )* 38 :(sid - 10 )* 38 + 38 ] = msg
468
+ buff [(sid - 10 )* 38 :(sid - 10 )* 38 + 38 ] = msg [ 0 : 38 ]
481
469
elif (sid >= 30 and sid <= 37 ) or \
482
470
(sys == uGNSS .QZS and sid == 61 ): # clock
483
- buff [2 * 38 :2 * 38 + 38 ] = msg
471
+ buff [2 * 38 :2 * 38 + 38 ] = msg [ 0 : 38 ]
484
472
elif sid == 12 : # QZSS reduced almanac
485
473
None
486
474
elif sid == 15 : # Text
@@ -810,11 +798,11 @@ def decode_bds_cnav_sisai(self, msg, eph, i):
810
798
i += 22
811
799
return i
812
800
813
- def decode_bds_b1c (self , week , time_ , prn , msg ):
801
+ def decode_bds_b1c (self , week , time_ , sat , msg ):
814
802
""" BDS B1C (B-CNAV1 message decoder) [4] """
815
803
816
804
eph = Eph ()
817
- eph .sat = prn2sat ( uGNSS . BDS , prn )
805
+ eph .sat = sat
818
806
eph .sisai = np .zeros (4 , dtype = int )
819
807
eph .isc = np .zeros (6 )
820
808
# data2: 600b, errCorr2: 8b, data3: 264b, soh: 8b
@@ -873,7 +861,9 @@ def decode_bds_b2a(self, week, time_, sat, msg):
873
861
msg_t = {10 : 0 , 11 : 1 , 30 : 2 , 34 : 3 , 40 : 4 }
874
862
mid = msg_t [sid ]
875
863
buff = self .bds_cnv2 [prn - 1 ]
876
- buff [mid * 40 :mid * 40 + 40 ] = msg
864
+
865
+ for k in range (len (msg )):
866
+ buff [mid * 40 + k ] = msg [k ]
877
867
878
868
id1 , sow1 = bs .unpack_from ('u6u18' , buff , 6 )
879
869
id2 , sow2 = bs .unpack_from ('u6u18' , buff , 320 + 6 )
@@ -933,23 +923,24 @@ def decode_bds_b2a(self, week, time_, sat, msg):
933
923
934
924
return eph
935
925
936
- def decode_bds_b2b (self , week , time_ , sat , msg ):
926
+ def decode_bds_b2b (self , week , time_ , sat , msg , ofst = 12 ):
937
927
""" BDS B2b (B-CNAV3 message decoder) [4] """
938
928
939
929
sys , prn = sat2prn (sat )
940
- sid , sow = bs .unpack_from ('u6u20' , msg , 12 )
930
+ sid , sow = bs .unpack_from ('u6u20' , msg , ofst )
941
931
942
932
if sid not in (10 , 30 , 40 ):
943
933
return None
944
934
945
935
msg_t = {10 : 0 , 30 : 1 , 40 : 2 }
946
936
mid = msg_t [sid ]
947
937
buff = self .bds_cnv3 [prn - 1 ]
948
- buff [mid * 64 :mid * 64 + 64 ] = msg
938
+ for k in range (len (msg )):
939
+ buff [mid * 64 + k ] = msg [k ]
949
940
950
- id1 , sow1 = bs .unpack_from ('u6u20' , buff , 12 )
951
- id2 , sow2 = bs .unpack_from ('u6u20' , buff , 512 + 12 )
952
- id3 , sow3 = bs .unpack_from ('u6u20' , buff , 512 * 2 + 12 )
941
+ id1 , sow1 = bs .unpack_from ('u6u20' , buff , ofst )
942
+ id2 , sow2 = bs .unpack_from ('u6u20' , buff , 512 + ofst )
943
+ id3 , sow3 = bs .unpack_from ('u6u20' , buff , 512 * 2 + ofst )
953
944
954
945
if id1 != 10 or id2 != 30 :
955
946
return None
@@ -962,15 +953,15 @@ def decode_bds_b2b(self, week, time_, sat, msg):
962
953
eph .isc = np .zeros (6 )
963
954
964
955
# decode MT10
965
- i = 12 + 30
956
+ i = ofst + 30
966
957
i = self .decode_bds_cnav_eph1 (buff , eph , i )
967
958
i = self .decode_bds_cnav_eph2 (buff , eph , i )
968
959
969
960
eph .integ , eph .sismai = bs .unpack_from ('u3u4' , buff , i )
970
961
i += 7
971
962
972
963
# decode MT30
973
- i = 512 + 12 + 26
964
+ i = 512 + ofst + 26
974
965
eph .week = bs .unpack_from ('u13' , buff , i )[0 ]
975
966
i += 13 + 4
976
967
i = self .decode_bds_cnav_clk (buff , eph , i )
@@ -1000,7 +991,7 @@ def decode_bds_d1(self, week, time, sat, msg):
1000
991
return None
1001
992
1002
993
buff = self .bds_d12 [prn - 1 ]
1003
- buff [(sid - 1 )* 40 :(sid - 1 )* 40 + 40 ] = msg
994
+ buff [(sid - 1 )* 40 :(sid - 1 )* 40 + 40 ] = msg [ 0 : 40 ]
1004
995
1005
996
id1 = bs .unpack_from ('u3' , buff , 15 )[0 ]
1006
997
id2 = bs .unpack_from ('u3' , buff , 320 + 15 )[0 ]
@@ -1088,7 +1079,7 @@ def decode_bds_d2(self, week, time, sat, msg):
1088
1079
1089
1080
if frame == 1 and (page >= 1 and page <= 10 ):
1090
1081
buff = self .bds_d12 [prn - 1 ]
1091
- buff [(page - 1 )* 20 :(page - 1 )* 20 + 20 ] = msg
1082
+ buff [(page - 1 )* 20 :(page - 1 )* 20 + 20 ] = msg [ 0 : 20 ]
1092
1083
else :
1093
1084
return None
1094
1085
@@ -1204,7 +1195,7 @@ def decode_irn_lnav(self, week, time, sat, msg):
1204
1195
i += 30
1205
1196
1206
1197
buff = self .irn_nav [prn - 1 ]
1207
- buff [sid * 40 :sid * 40 + 40 ] = msg
1198
+ buff [sid * 40 :sid * 40 + 40 ] = msg [ 0 : 40 ]
1208
1199
1209
1200
if sid > 2 :
1210
1201
return None
@@ -1300,7 +1291,7 @@ def decode_glo_fdma(self, week, time, sat, msg, freq=0):
1300
1291
for sid_ in range (4 ):
1301
1292
buff [sid_ * 12 :sid_ * 12 + 12 ] = bytearray (12 )
1302
1293
1303
- buff [(sid - 1 )* 12 :(sid - 1 )* 12 + 12 ] = msg
1294
+ buff [(sid - 1 )* 12 :(sid - 1 )* 12 + 12 ] = msg [ 0 : 12 ]
1304
1295
1305
1296
id1 = bs .unpack_from ('u4' , buff , 1 )[0 ]
1306
1297
id2 = bs .unpack_from ('u4' , buff , 96 + 1 )[0 ]
0 commit comments