def _parse_attribute(self, attribute_str):
"""Parses a attribute string and updates the CANBus
Args:
attribute_str: String with attribute
"""
pattern = 'BA_\s+"(?P<attr_name>\S+)"\s*(?P<node>BU_)?(?P<msg>BO_)?(?P<sig>SG_)?\s*'
pattern += '(?P<can_id>\d*)?\s*(?P<name>\S*)?\s+(?P<value>\S+)\s*;'
reg = re.search(pattern, attribute_str)
can_object = self._can_network
if reg.group('node'):
can_object = self._can_network.nodes[reg.group('name')]
elif reg.group('msg'):
can_object = self._can_network.get_message(int(reg.group('can_id')))
elif reg.group('sig'):
can_object = self._can_network.get_signal(int(reg.group('can_id')), reg.group('name'))
cad = self._can_network.attributes.definitions[reg.group('attr_name')]
can_object.attributes.add(CANAttribute(cad, value=self._parse_attribute_value(cad, reg.group('value'))))
评论列表
文章目录