"""Helpers for IEC 60870-5-104 Beremiz plugin (CS104 server runtime generation)."""
from __future__ import absolute_import
from six.moves import xrange
def GetCTVal(child, index):
"""Return attribute value from first XSD element by child index order."""
return child.GetParamsAttributes()[0]["children"][index]["value"]
def GetCTValByName(child, elem_name, attr_name):
"""Fetch attribute value by element name and attribute name."""
for element in child.GetParamsAttributes():
if element["name"] != elem_name:
for ch in element["children"]:
if ch["name"] == attr_name:
raise KeyError((elem_name, attr_name))
def iec_iec_type_to_bind_kind(iec_type):
"""Maps PLC located variable IEC type to iec60870_bind_kind (see iec60870_runtime.c)."""
return m.get(iec_type, 0)