68 lines
2.1 KiB
Python
68 lines
2.1 KiB
Python
"""
|
|
Generische Applikationsdaten
|
|
|
|
"""
|
|
|
|
import os
|
|
from tracker import Tracker
|
|
|
|
class AppData():
|
|
|
|
def __init__(self):
|
|
self.shutdown = False # Globaler Ausschalter
|
|
self.track = Tracker('NONE')
|
|
self.frontend = None
|
|
self.bv_lat = None
|
|
self.bv_lon = None
|
|
|
|
# Für u.a. Header-Indikatoren
|
|
# TODO
|
|
self.status = {
|
|
'AP': False, # Accesspoint
|
|
'WIFI': False, # Wireless Client
|
|
'TCP': False, # TCP Network
|
|
'N2K': False, # NMEA2000
|
|
'183': False, # NMEA0183
|
|
'USB': False, # USB Datenverbindung
|
|
'GPS': False, # GPS-Fix und -daten
|
|
'TRK': False # Tracker
|
|
}
|
|
|
|
def setFrontend(self, frontend):
|
|
self.frontend = frontend # Referenz zur GUI
|
|
self.bv_lat = frontend.boatdata.getRef("LAT")
|
|
self.bv_lon = frontend.boatdata.getRef("LON")
|
|
|
|
def refreshStatus(self):
|
|
self.status['AP'] = False # nicht implementiert
|
|
|
|
self.status['TCP'] = False
|
|
self.status['WIFI'] = False
|
|
for intf in os.listdir('/sys/class/net'):
|
|
statefile = os.path.join('/sys/class/net', intf, 'operstate')
|
|
wififile = os.path.join('/sys/class/net', intf, 'wireless')
|
|
if os.path.exists(statefile):
|
|
with open(statefile) as fh:
|
|
state = fh.read().strip()
|
|
if state == 'up':
|
|
if os.path.exists(wififile):
|
|
self.status['WIFI'] = True
|
|
else:
|
|
self.status['TCP'] = True
|
|
|
|
# TODO NMEA2000
|
|
# can-Interface can0 im Netzwerk. Identifikation?
|
|
|
|
# TODO NMEA0183 tty auf Konfiguration
|
|
# enabled in Konfiguration
|
|
# port muß gültige Schnittstelle sein
|
|
|
|
# TODO USB /dev/ttyUSB0?
|
|
|
|
# GPS
|
|
# Kann ein Empfänger am USB sein. Siehe Konfiguration
|
|
self.status['GPS'] = self.bv_lat and self.bv_lon and self.bv_lat.valid and self.bv_lon.valid
|
|
|
|
# Tracker
|
|
self.status['TRK'] = self.track.is_active()
|