- added GGA

- print messages as dict
This commit is contained in:
2026-03-15 17:47:16 +01:00
parent 62a93a2cdc
commit 5435a07405
5 changed files with 52 additions and 9 deletions
+3 -1
View File
@@ -9,6 +9,7 @@ from a_backend import ABackend
from nmea.GLL import Gll from nmea.GLL import Gll
from nmea.GSA import Gsa from nmea.GSA import Gsa
from nmea.GSV import Gsv from nmea.GSV import Gsv
from nmea.GGA import Gga
class NetworkBackend(ABackend): class NetworkBackend(ABackend):
def __init__(self, servers: list[dict]): def __init__(self, servers: list[dict]):
@@ -93,7 +94,8 @@ if __name__ == "__main__":
rx_list = [ rx_list = [
Gll(grm, '--'), Gll(grm, '--'),
Gsa(grm, '--'), Gsa(grm, '--'),
Gsv(grm, '--') Gsv(grm, '--'),
Gga(grm, '--')
] ]
# Topology # Topology
# Receiver-0.0 \ # Receiver-0.0 \
+43 -2
View File
@@ -1,11 +1,52 @@
from msg_container import MsgContainer from msg_container import MsgContainer
from receiver import Nmea from nmea.receiver import Nmea
class Gga(Nmea): class Gga(Nmea):
class Msg:
def __init__(self):
self.utc_time = None
self.latitude = None
self.ns_indicator = None
self.longitude = None
self.ew_indicator = None
self.quality = None
self.nsv = None
self.h_dop = None
self.orthometric_height = None
self.orthometric_height_unit = None
self.geoid_separation = None
self.diff_age = None
self.ref_id = None
self.checksum = None
def __repr__(self):
return f"{self.__dict__}"
def __init__(self, name: str, tid: str): def __init__(self, name: str, tid: str):
Nmea.__init__(self, name, tid=tid, msg_type="GGA") Nmea.__init__(self, name, tid=tid, msg_type="GGA")
self.msg = None
self.data = Gga.Msg()
def on_recv(self, msg: MsgContainer): def on_recv(self, msg: MsgContainer):
data = msg.data.decode(encoding="utf-8") data = msg.data.decode(encoding="utf-8")
print(f"{self.name}: {data}") data_list = data.split(',')
self.msg = data_list[0]
self.data.utc_time = data_list[1]
self.data.latitude = data_list[2]
self.data.ns_indicator = data_list[3]
self.data.longitude = data_list[4]
self.data.ew_indicator = data_list[5]
self.data.quality = data_list[6]
self.data.nsv = data_list[7]
self.data.h_dop = float(data_list[8])
self.data.orthometric_height = data_list[9]
self.data.orthometric_height_unit = data_list[10]
self.data.geoid_separation = data_list[11]
self.data.geoid_separation_unit = data_list[12]
self.data.diff_age = data_list[13]
self.data.ref_id = data_list[14].split('*')[0]
self.data.checksum = data_list[14].split('*')[1]
print(f"{self.name}:{self.msg} {self.data}")
+2 -2
View File
@@ -14,7 +14,7 @@ class Gll(Nmea):
self.checksum = None self.checksum = None
def __repr__(self): def __repr__(self):
return f"{self.latitude:.8f}{self.ns_indicator},{self.longitude:.8f}{self.ew_indicator}" return f"{self.__dict__}"
def __init__(self, name: str, tid: str): def __init__(self, name: str, tid: str):
Nmea.__init__(self, name, tid=tid, msg_type="GLL") Nmea.__init__(self, name, tid=tid, msg_type="GLL")
@@ -33,4 +33,4 @@ class Gll(Nmea):
self.data.status = data_list[6] self.data.status = data_list[6]
self.data.checksum = data_list[7] self.data.checksum = data_list[7]
print(f"{self.name}: {data}") print(f"{self.name}:{self.msg} {self.data}")
+2 -2
View File
@@ -14,7 +14,7 @@ class Gsa(Nmea):
self.checksum = None self.checksum = None
def __repr__(self): def __repr__(self):
return f"mode: {self.mode}, fix_type: {self.mode}, sat_id: {self.sat_id}, p-dop: {self.p_dop:.3f}, h-dop: {self.h_dop:.3f}, v-dop: {self.v_dop:.3f}" return f"{self.__dict__}"
def __init__(self, name: str, tid: str): def __init__(self, name: str, tid: str):
Nmea.__init__(self, name, tid=tid, msg_type="GSA") Nmea.__init__(self, name, tid=tid, msg_type="GSA")
@@ -33,4 +33,4 @@ class Gsa(Nmea):
self.data.v_dop = float(data_list[17]) self.data.v_dop = float(data_list[17])
self.data.checksum = data_list[18] self.data.checksum = data_list[18]
print(f"{self.name}: {data}") print(f"{self.name}:{self.msg} {self.data}")
+2 -2
View File
@@ -15,7 +15,7 @@ class Gsv(Nmea):
self.checksum = None self.checksum = None
def __repr__(self): def __repr__(self):
return f"sat_vis: {self.sat_vis}, sat_id: {self.sat_id}, elevation: {self.elevation}, azimuth: {self.azimuth}, snr: {self.snr}" return f"{self.__dict__}"
def __init__(self, name: str, tid: str): def __init__(self, name: str, tid: str):
Nmea.__init__(self, name, tid=tid, msg_type="GSV") Nmea.__init__(self, name, tid=tid, msg_type="GSV")
@@ -44,5 +44,5 @@ class Gsv(Nmea):
if self.data.number_of_msg == self.data.seq_number: if self.data.number_of_msg == self.data.seq_number:
self.data = Gsv.Msg() self.data = Gsv.Msg()
print(f"{self.name}: {data}") print(f"{self.name}:{self.msg} {data}")