diff --git a/network_backend.py b/network_backend.py index d7aae71..9893b60 100644 --- a/network_backend.py +++ b/network_backend.py @@ -9,6 +9,7 @@ from a_backend import ABackend from nmea.GLL import Gll from nmea.GSA import Gsa from nmea.GSV import Gsv +from nmea.GGA import Gga class NetworkBackend(ABackend): def __init__(self, servers: list[dict]): @@ -93,7 +94,8 @@ if __name__ == "__main__": rx_list = [ Gll(grm, '--'), Gsa(grm, '--'), - Gsv(grm, '--') + Gsv(grm, '--'), + Gga(grm, '--') ] # Topology # Receiver-0.0 \ diff --git a/nmea/GGA.py b/nmea/GGA.py index 8e68454..7b6074a 100644 --- a/nmea/GGA.py +++ b/nmea/GGA.py @@ -1,11 +1,52 @@ from msg_container import MsgContainer -from receiver import Nmea +from nmea.receiver import 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): Nmea.__init__(self, name, tid=tid, msg_type="GGA") + self.msg = None + self.data = Gga.Msg() def on_recv(self, msg: MsgContainer): 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}") diff --git a/nmea/GLL.py b/nmea/GLL.py index 67c61c3..7ae617b 100644 --- a/nmea/GLL.py +++ b/nmea/GLL.py @@ -14,7 +14,7 @@ class Gll(Nmea): self.checksum = None 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): Nmea.__init__(self, name, tid=tid, msg_type="GLL") @@ -33,4 +33,4 @@ class Gll(Nmea): self.data.status = data_list[6] self.data.checksum = data_list[7] - print(f"{self.name}: {data}") + print(f"{self.name}:{self.msg} {self.data}") diff --git a/nmea/GSA.py b/nmea/GSA.py index b8dd049..0f9a0b8 100644 --- a/nmea/GSA.py +++ b/nmea/GSA.py @@ -14,7 +14,7 @@ class Gsa(Nmea): self.checksum = None 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): 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.checksum = data_list[18] - print(f"{self.name}: {data}") + print(f"{self.name}:{self.msg} {self.data}") diff --git a/nmea/GSV.py b/nmea/GSV.py index 5aa06e5..bb811d1 100644 --- a/nmea/GSV.py +++ b/nmea/GSV.py @@ -15,7 +15,7 @@ class Gsv(Nmea): self.checksum = None 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): 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: self.data = Gsv.Msg() - print(f"{self.name}: {data}") + print(f"{self.name}:{self.msg} {data}")