@@ -43,9 +43,8 @@ def __init__(self, app):
43
43
44
44
self ._raw_data = None
45
45
self ._parsed_data = None
46
- self .gsv_data = (
47
- []
48
- ) # Holds array of current satellites in view from NMEA GSV sentences
46
+ # Holds array of current satellites in view from NMEA GSV sentences
47
+ self .gsv_data = {}
49
48
self .gsv_log = {} # Holds cumulative log of all satellites seen
50
49
51
50
def process_data (self , raw_data : bytes , parsed_data : object ):
@@ -197,7 +196,7 @@ def _process_GSV(self, data: NMEAMessage):
197
196
"""
198
197
199
198
show_unused = self .__app .frm_settings .config ["unusedsat_b" ]
200
- self .gsv_data = []
199
+ self .gsv_data = {}
201
200
gsv_dict = {}
202
201
now = time ()
203
202
if data .talker == "GA" :
@@ -212,7 +211,7 @@ def _process_GSV(self, data: NMEAMessage):
212
211
gnss = 0 # GPS, SBAS, QZSS
213
212
214
213
for i in range (4 ):
215
- idx = f"_{ i :02d} "
214
+ idx = f"_{ i + 1 :02d} "
216
215
svid = getattr (data , "svid" + idx , "" )
217
216
if svid != "" :
218
217
key = f"{ gnss } -{ svid } "
@@ -232,7 +231,7 @@ def _process_GSV(self, data: NMEAMessage):
232
231
if cno in ("" , "0" , 0 ) and not show_unused : # omit unused sats
233
232
continue
234
233
if now - lastupdate < SAT_EXPIRY : # expire passed sats
235
- self .gsv_data . append (( gnssId , svid , elev , azim , cno ) )
234
+ self .gsv_data [ key ] = ( gnssId , svid , elev , azim , cno )
236
235
237
236
self .__app .gnss_status .siv = len (self .gsv_data )
238
237
self .__app .gnss_status .gsv_data = self .gsv_data
@@ -292,36 +291,22 @@ def _process_UBX03(self, data: NMEAMessage):
292
291
293
292
settings = self .__app .frm_settings .config
294
293
show_unused = settings ["unusedsat_b" ]
295
- self .gsv_data = []
296
- gsv_dict = {}
297
- now = time ()
294
+ self .gsv_data = {}
298
295
for i in range (data .numSv ):
299
- svid = getattr (data , f"svid_{ i + 1 :02} " )
296
+ idx = f"_{ i + 1 :02d} "
297
+ svid = getattr (data , "svid" + idx )
300
298
gnss = svid2gnssid (svid )
299
+ elev = getattr (data , "ele" + idx )
300
+ azim = getattr (data , "azi" + idx )
301
+ cno = str (getattr (data , "cno" + idx ))
301
302
# fudge to make PUBX03 svid numbering consistent with GSV
302
303
if gnss == 2 and svid > 210 : # Galileo
303
304
svid -= 210
304
305
if gnss == 3 and svid > 32 : # Beidou
305
306
svid -= 32
306
- key = f"{ gnss } -{ svid } "
307
- gsv_dict [key ] = (
308
- gnss ,
309
- svid ,
310
- getattr (data , f"ele_{ i + 1 :02} " ),
311
- getattr (data , f"azi_{ i + 1 :02} " ),
312
- str (getattr (data , f"cno_{ i + 1 :02} " )),
313
- now ,
314
- )
315
-
316
- for key in gsv_dict :
317
- self .gsv_log [key ] = gsv_dict [key ]
318
-
319
- for key in self .gsv_log :
320
- gnssId , svid , elev , azim , snr , lastupdate = self .gsv_log [key ]
321
- if snr in ("" , "0" , 0 ) and not show_unused : # omit unused sats
307
+ if cno in ("" , "0" , 0 ) and not show_unused : # omit unused sats
322
308
continue
323
- if now - lastupdate < SAT_EXPIRY : # expire passed sats
324
- self .gsv_data .append ((gnssId , svid , elev , azim , snr ))
309
+ self .gsv_data [f"{ gnss } -{ svid } " ] = (gnss , svid , elev , azim , cno )
325
310
326
311
self .__app .gnss_status .siv = len (self .gsv_data )
327
312
self .__app .gnss_status .gsv_data = self .gsv_data
0 commit comments