refactored

This commit is contained in:
2026-03-25 05:53:06 +01:00
parent 7c1e65253b
commit e5da1b663b
16 changed files with 30 additions and 27 deletions
+50
View File
@@ -0,0 +1,50 @@
from msg_container import MsgContainer
from nmea.listener import NmeaListener
class Gga(NmeaListener):
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):
NmeaListener.__init__(self, name, tid=tid, msg_type="GGA")
self.msg = None
self.data = Gga.Msg()
def on_recv(self, msg: MsgContainer):
data_list = msg.data.split(b',')
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(b'*')[0]
self.data.checksum = data_list[14].split(b'*')[1]
print(f"{self.name}:{self.msg} {self.data}")
+37
View File
@@ -0,0 +1,37 @@
from msg_container import MsgContainer
from nmea.listener import NmeaListener
class Gll(NmeaListener):
class Msg:
def __init__(self):
self.latitude = None
self.ns_indicator = None
self.longitude = None
self.ew_indicator = None
self.utc_time = None
self.status = None
self.mode = None
self.checksum = None
def __repr__(self):
return f"{self.__dict__}"
def __init__(self, name: str, tid: str):
NmeaListener.__init__(self, name, tid=tid, msg_type="GLL")
self.msg = None
self.data = Gll.Msg()
def on_recv(self, msg: MsgContainer):
data_list = msg.data.split(b',')
self.msg = data_list[0]
self.data.latitude = float(data_list[1])/100
self.data.ns_indicator = data_list[2]
self.data.longitude = float(data_list[3])/100
self.data.ew_indicator = data_list[4]
self.data.utc_time = data_list[5]
self.data.status = data_list[6]
self.data.mode = data_list[7].split(b'*')[0]
self.data.checksum = data_list[7].split(b'*')[1]
print(f"{self.name}:{self.msg} {self.data}")
+37
View File
@@ -0,0 +1,37 @@
from msg_container import MsgContainer
from nmea.listener import NmeaListener
class Gsa(NmeaListener):
class Msg:
def __init__(self):
self.mode = None
self.fix_type = None
self.sat_id = None
self.p_dop = None
self.h_dop = None
self.v_dop = None
self.signal_id = None
self.checksum = None
def __repr__(self):
return f"{self.__dict__}"
def __init__(self, name: str, tid: str):
NmeaListener.__init__(self, name, tid=tid, msg_type="GSA")
self.msg = None
self.data = Gsa.Msg()
def on_recv(self, msg: MsgContainer):
data_list = msg.data.split(b',')
self.msg = data_list[0]
self.data.mode = data_list[1]
self.data.fix_type = data_list[2]
self.data.sat_id = data_list[3:15]
self.data.p_dop = float(data_list[15])
self.data.h_dop = float(data_list[16])
self.data.v_dop = float(data_list[17])
self.data.signal_id = data_list[18].split(b'*')[0]
self.data.checksum = data_list[18].split(b'*')[1]
print(f"{self.name}:{self.msg} {self.data}")
+49
View File
@@ -0,0 +1,49 @@
from msg_container import MsgContainer
from nmea.listener import NmeaListener
class Gsv(NmeaListener):
class Msg:
def __init__(self):
self.number_of_msg = None
self.seq_number = None
self.sat_vis = None
self.sat_id = []
self.elevation = []
self.azimuth = []
self.snr = []
self.signal_id = None
self.checksum = None
def __repr__(self):
return f"{self.__dict__}"
def __init__(self, name: str, tid: str):
NmeaListener.__init__(self, name, tid=tid, msg_type="GSV")
self.msg = None
self.data = Gsv.Msg()
def on_recv(self, msg: MsgContainer):
data_list = msg.data.split(b',')
self.msg = data_list[0]
data = self.data
data.number_of_msg = data_list[1]
data.seq_number = data_list[2]
data.sat_vis = data_list[3]
data_set_size = 4
num_sats_in_msg = int(len(data_list[3:-2])/4)
for n in range(num_sats_in_msg):
data.sat_id.append(data_list[data_set_size*n+4])
data.elevation.append(data_list[data_set_size*n+5])
data.azimuth.append(data_list[data_set_size*n+6])
data.snr.append(data_list[data_set_size*n+7])
data.signal_id = data_list[data_set_size*(num_sats_in_msg-1)+8].split(b'*')[0]
data.checksum = data_list[data_set_size*(num_sats_in_msg-1)+8].split(b'*')[1]
if self.data.number_of_msg == self.data.seq_number:
self.data = Gsv.Msg()
print(f"{self.name}:{self.msg} {data}")
+36
View File
@@ -0,0 +1,36 @@
from msg_container import MsgContainer
from nmea.listener import NmeaListener
class Rmc(NmeaListener):
class Msg:
def __init__(self):
pass
def __repr__(self):
return f"{self.__dict__}"
def __init__(self, name: str, tid: str):
NmeaListener.__init__(self, name, tid=tid, msg_type="RMC")
self.msg = None
self.data = Rmc.Msg()
def on_recv(self, msg: MsgContainer):
data_list = msg.data.split(b',')
self.msg = data_list[0]
self.data.utc_time = data_list[1]
self.data.status = data_list[2]
self.data.latitude = float(data_list[3])/100
self.data.ns_indicator = data_list[4]
self.data.longitude = float(data_list[5])/100
self.data.ew_indicator = data_list[6]
self.data.speed = data_list[7]
self.data.course = data_list[8]
self.data.date = data_list[9]
self.data.mag_var = data_list[10]
self.data.mag_var_ew = data_list[11]
self.data.mode = data_list[12]
self.data.nav_status = data_list[13].split(b'*')[0]
self.data.checksum = data_list[13].split(b'*')[1]
print(f"{self.name}:{self.msg} {self.data}")
+5
View File
@@ -0,0 +1,5 @@
from nmea.messages.GGA import Gga
from nmea.messages.GLL import Gll
from nmea.messages.GSA import Gsa
from nmea.messages.GSV import Gsv
from nmea.messages.RMC import Rmc