| @@ -231,6 +231,8 @@ class AD2USB(object): | |||||
| msg = ExpanderMessage(data) | msg = ExpanderMessage(data) | ||||
| elif header == '!RFX': | elif header == '!RFX': | ||||
| msg = RFMessage(data) | msg = RFMessage(data) | ||||
| elif header == '!LRR': | |||||
| msg = LRRMessage(data) | |||||
| elif data.startswith('!Ready'): | elif data.startswith('!Ready'): | ||||
| self.on_boot() | self.on_boot() | ||||
| @@ -428,4 +430,35 @@ class RFMessage(object): | |||||
| self.raw = data | self.raw = data | ||||
| _, values = data.split(':') | _, values = data.split(':') | ||||
| self.serial_number, self.value = values.split(',') | |||||
| self.serial_number, self.value = values.split(',') | |||||
| class LRRMessage(object): | |||||
| """ | |||||
| Represent a message from a Long Range Radio. | |||||
| """ | |||||
| def __init__(self, data=None): | |||||
| """ | |||||
| Constructor | |||||
| """ | |||||
| self.raw = None | |||||
| self._event_data = None | |||||
| self._partition = None | |||||
| self._event_type = None | |||||
| if data is not None: | |||||
| self._parse_message(data) | |||||
| def __str__(self): | |||||
| """ | |||||
| String conversion operator. | |||||
| """ | |||||
| return 'lrr > {0} @ {1} -- {2}'.format() | |||||
| def _parse_message(self, data): | |||||
| """ | |||||
| Parses the raw message from the device. | |||||
| """ | |||||
| self.raw = data | |||||
| _, values = data.split(':') | |||||
| self._event_data, self._partition, self._event_type = values.split(',') | |||||