Browse Source

Merge branch 'dev' of git.corp.nutech.com:ad2usb/pyad2usb into dev

pyserial_fix
Scott Petersen 8 years ago
parent
commit
db1e40cfb3
1 changed files with 38 additions and 0 deletions
  1. +38
    -0
      alarmdecoder/decoder.py

+ 38
- 0
alarmdecoder/decoder.py View File

@@ -87,6 +87,14 @@ class AlarmDecoder(object):
mode = ADEMCO mode = ADEMCO
"""The panel mode that the AlarmDecoder is in. Currently supports ADEMCO and DSC.""" """The panel mode that the AlarmDecoder is in. Currently supports ADEMCO and DSC."""


#Version Information
serial_number = 0xFFFFFFFF
"""The device serial number"""
version_number = 'Unknown'
"""The device firmware version"""
version_flags = ""
"""Device flags enabled"""

def __init__(self, device): def __init__(self, device):
""" """
Constructor Constructor
@@ -119,6 +127,10 @@ class AlarmDecoder(object):
self.deduplicate = False self.deduplicate = False
self.mode = ADEMCO self.mode = ADEMCO


self.serial_number = 0xFFFFFFFF
self.version_number = 'Unknown'
self.version_flags = ""

def __enter__(self): def __enter__(self):
""" """
Support for context manager __enter__. Support for context manager __enter__.
@@ -266,6 +278,12 @@ class AlarmDecoder(object):


return '&'.join(['='.join(t) for t in config_entries]) return '&'.join(['='.join(t) for t in config_entries])


def get_version(self):
"""
Retrieves the version string from the device. Called automatically by :py:meth:`_on_open`.
"""
self.send("V\r")

def reboot(self): def reboot(self):
""" """
Reboots the device. Reboots the device.
@@ -354,6 +372,9 @@ class AlarmDecoder(object):
elif data.startswith('!CONFIG'): elif data.startswith('!CONFIG'):
self._handle_config(data) self._handle_config(data)


elif data.startswith('!VER'):
self._handle_version(data)

elif data.startswith('!Sending'): elif data.startswith('!Sending'):
self._handle_sending(data) self._handle_sending(data)


@@ -432,6 +453,21 @@ class AlarmDecoder(object):


return msg return msg


def _handle_version(self, data):
"""
Handles received version data.
:param data: Version string to parse
:type data: string
"""

_, version_string = data.split(':')
version_parts = version_string.split(',')

self.serial_number = version_parts[0]
self.version_number = version_parts[1]
self.version_flags = version_parts[2]

def _handle_config(self, data): def _handle_config(self, data):
""" """
Handles received configuration data. Handles received configuration data.
@@ -656,6 +692,8 @@ class AlarmDecoder(object):
""" """
self.get_config() self.get_config()


self.get_version()

self.on_open() self.on_open()


def _on_close(self, sender, *args, **kwargs): def _on_close(self, sender, *args, **kwargs):


Loading…
Cancel
Save