Files
DemonEditor/main/eparser/satxml.py
2017-10-10 14:13:35 +03:00

70 lines
2.5 KiB
Python

""" Module foe parsing Satellites.xml
Transponder parameters:
polarization: 0 - Horizontal, 1 - Vertical, 2 - Left Circular, 3 - Right Circular
fec_inner: 0 - Auto, 1 - 1/2, 2 - 2_3, 3 - 3/4, 4 - 5/6, 5 - 6/7, 6 - 7/8, 7 - 8/9, 8 - 3/5, 9 - 4/5, 10 - 9/10
modulation: 0 - Auto, 1 - QPSK, 2 - 8PSK, 3 - 16APSK, 5 - 32APSK
rolloff: 0 - 0.35, 1 - 0.25, 2 - 0.20, 3 - Auto
pilot: 0 - Off, 1 - On, 2 - Auto
inversion: 0 = Off, 1 = On, 2 = Auto (default)
system: 0 = DVB-S, 1 = DVB-S2
is_id: 0 - 255
pls_mode: 0 - Root, 1 - Gold, 2 - Combo
pls_code: 0 - 262142
"""
from collections import namedtuple
from xml.dom.minidom import parse
from main.eparser.__constants import Polarization, FEC, SYSTEM, MODULATION, PlsMode
# temporary
__XML_PATH = "../data/satellites.xml"
Satellite = namedtuple("Satellite", ["name", "flags", "position", "transponders"])
Transponder = namedtuple("Transponder", ["frequency", "symbol_rate", "polarization", "fec_inner",
"system", "modulation", "pls_mode", "pls_code", "is_id"])
def get_transponders(path):
return parse_satellites(path)
def parse_transponders(elem):
""" Parsing satellite transponders """
transponders = []
for el in elem.getElementsByTagName("transponder"):
if el.hasAttributes():
atr = el.attributes
tr = Transponder(atr["frequency"].value,
atr["symbol_rate"].value,
Polarization(int(atr["polarization"].value)).name,
FEC[int(atr["fec_inner"].value)],
SYSTEM[int(atr["system"].value)],
MODULATION[int(atr["modulation"].value)],
PlsMode(int(atr["pls_mode"].value)).name if "pls_mode" in atr else None,
atr["pls_code"].value if "pls_code" in atr else None,
atr["is_id"].value if "is_id" in atr else None)
transponders.append(tr)
return transponders
def parse_sat(elem):
""" Parsing satellite """
return Satellite(elem.attributes["name"].value,
elem.attributes["flags"].value,
elem.attributes["position"].value,
parse_transponders(elem))
def parse_satellites(path):
""" Parsing satellites from xml"""
dom = parse(path)
satellites = []
for elem in dom.getElementsByTagName("sat"):
if elem.hasAttributes():
satellites.append(parse_sat(elem))
return satellites
if __name__ == "__main__":
pass