64 lines
2.2 KiB
Python
64 lines
2.2 KiB
Python
|
|
'''
|
|
Platzhalter WIP
|
|
- ausprogrammieren nach Bedarf
|
|
Geräteliste
|
|
- wird regelmäßig aktualisiert
|
|
|
|
'''
|
|
|
|
import time
|
|
import struct
|
|
|
|
class Device():
|
|
|
|
def __init__(self, address):
|
|
#WIP
|
|
#Felder können sich noch ändern!
|
|
self.address = address
|
|
self.instance = 0 # default 0
|
|
self.sysinstance = 0 # used with bridged networks, default 0
|
|
self.lastseen = time.time()
|
|
self.uniqueid = None
|
|
self.manufacturercode = None
|
|
self.industrygroup = None
|
|
self.name = None # User defined device name
|
|
self.product = None # Product name
|
|
self.productcode = None # Product code
|
|
self.devicefunction = None
|
|
self.deviceclass = None
|
|
self.serial = None
|
|
self.modelvers = None # Hardware Version
|
|
self.softvers = None # Current Software Version
|
|
self.n2kvers = None # NMEA2000 Network Message Database Version
|
|
self.certlevel = None # NMEA2000 Certification Level
|
|
self.loadequiv = None # NMEA2000 LEN
|
|
|
|
# Configuration Info
|
|
self.instdesc1 = None
|
|
self.instdesc2 = None
|
|
self.manufinfo = None
|
|
|
|
def getName(self):
|
|
# NAME errechnen aus den Claim-Daten
|
|
# TODO Das hier ist noch fehlerhaft!
|
|
data = bytearray()
|
|
data.append((self.deviceclass << 4) | (self.devicefunction & 0x0f))
|
|
data.extend(struct.pack('<L', self.uniqueid))
|
|
data.extend(struct.pack('<L', self.manufacturercode))
|
|
data.extend(struct.pack('<L', self.industrygroup))
|
|
return data
|
|
|
|
def __str__(self):
|
|
out = f"Device: {self.address} : '{self.product}'\n"
|
|
out += f" Instance: {self.instance}\n"
|
|
out += f" Product Code: {self.productcode}\n"
|
|
out += f" Product: {self.product}\n"
|
|
out += f" Serial: {self.serial}\n"
|
|
out += f" Model Version: {self.modelvers}\n"
|
|
out += f" Software Version: {self.softvers}\n"
|
|
out += f" NMEA2000 Version: {self.n2kvers}\n"
|
|
out += f" Cert-Level: {self.certlevel}\n"
|
|
out += f" LEN: {self.loadequiv}"
|
|
return out
|