Browse Source

Added basic lrr/panic handling.

pyserial_fix
Scott Petersen 12 years ago
parent
commit
bf98aae391
2 changed files with 31 additions and 2 deletions
  1. +23
    -2
      pyad2usb/ad2usb.py
  2. +8
    -0
      test.py

+ 23
- 2
pyad2usb/ad2usb.py View File

@@ -164,9 +164,11 @@ class AD2USB(object):
on_zone_fault = event.Event('Called when the device detects a zone fault.')
on_zone_restore = event.Event('Called when the device detects that a fault is restored.')
on_low_battery = event.Event('Called when the device detects a low battery.')
on_panic = event.Event('Called when the device detects a panic.')

# Mid-level Events
on_message = event.Event('Called when a message has been received from the device.')
on_lrr_message = event.Event('Called when an LRR message is received.')

# Low-level Events
on_open = event.Event('Called when the device has been opened.')
@@ -193,6 +195,7 @@ class AD2USB(object):
self._armed_status = None
self._fire_status = None
self._battery_status = None
self._panic_status = None

self.address = 18
self.configbits = 0xFF00
@@ -321,7 +324,7 @@ class AD2USB(object):
elif header == '!RFX':
msg = messages.RFMessage(data)
elif header == '!LRR':
msg = messages.LRRMessage(data)
msg = self._handle_lrr(data)
elif data.startswith('!Ready'):
self.on_boot()
elif data.startswith('!CONFIG'):
@@ -329,6 +332,25 @@ class AD2USB(object):

return msg

def _handle_lrr(self, data):
"""
"""
msg = messages.LRRMessage(data)

args = (msg._partition, msg._event_type, msg._event_data)
if msg._event_type == 'ALARM_PANIC':
self._panic_status = True
self.on_panic(args + (True,))

elif msg._event_type == 'CANCEL':
if self._panic_status == True:
self._panic_status = False
self.on_panic(args + (False,))

self.on_lrr_message(args)

return msg

def _handle_config(self, data):
"""
Handles received configuration data.
@@ -405,7 +427,6 @@ class AD2USB(object):

self._update_zone_tracker(message)


def _update_zone_tracker(self, message):
# Retrieve a list of faults.
# NOTE: This only happens on first boot or after exiting programming mode.


+ 8
- 0
test.py View File

@@ -96,6 +96,12 @@ def handle_battery(sender, args):
def handle_fire(sender, args):
print 'FIRE!', args

def handle_lrr(sender, args):
print 'LRR', args

def handle_panic(sender, args):
print 'PANIC!', args

def upload_usb():
dev = pyad2usb.ad2usb.devices.USBDevice()

@@ -246,6 +252,8 @@ def test_socket():
#
a2u.on_fire += handle_fire
a2u.on_low_battery += handle_battery
a2u.on_lrr_message += handle_lrr
a2u.on_panic += handle_panic


a2u.open()


Loading…
Cancel
Save