code: def ecuc_extract_signal(signal_node, ns):
      # type: (_Element, str) -> canmatrix.Signal
      
      attributes = signal_node.findall(".//" + ns + "DEFINITION-REF")  # type: typing.Sequence[_Element]
      start_bit = None
      size = 0
      is_little = False
      # endianness = None
      # init_value = 0
      # signal_type = None
      # timeout = 0
      for attribute in attributes:
          if attribute.text.endswith("ComBitPosition"):
              start_bit = int(attribute.getparent().find(".//" + ns + "VALUE").text)
          if attribute.text.endswith("ComBitSize"):
              size = int(attribute.getparent().find(".//" + ns + "VALUE").text)
          if attribute.text.endswith("ComSignalEndianness"):
              endianness = attribute.getparent().find(".//" + ns + "VALUE").text
              is_little = "LITTLE_ENDIAN" in endianness
          if attribute.text.endswith("ComSignalInitValue"):
              init_value = int(attribute.getparent().find(".//" + ns + "VALUE").text)
          if attribute.text.endswith("ComSignalType"):
              signal_type = attribute.getparent().find(".//" + ns + "VALUE").text
          if attribute.text.endswith("ComTimeout"):
              timeout = int(attribute.getparent().find(".//" + ns + "VALUE").text)
      return canmatrix.Signal(get_element_name(signal_node, ns), start_bit=start_bit, size=size, is_little_endian=is_little)
docs: Extract signal from ECUc file.