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_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_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_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 # Mid-level Events
on_message = event.Event('Called when a message has been received from the device.') 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 # Low-level Events
on_open = event.Event('Called when the device has been opened.') on_open = event.Event('Called when the device has been opened.')
@@ -193,6 +195,7 @@ class AD2USB(object):
self._armed_status = None self._armed_status = None
self._fire_status = None self._fire_status = None
self._battery_status = None self._battery_status = None
self._panic_status = None


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


return msg 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): def _handle_config(self, data):
""" """
Handles received configuration data. Handles received configuration data.
@@ -405,7 +427,6 @@ class AD2USB(object):


self._update_zone_tracker(message) self._update_zone_tracker(message)



def _update_zone_tracker(self, message): def _update_zone_tracker(self, message):
# Retrieve a list of faults. # Retrieve a list of faults.
# NOTE: This only happens on first boot or after exiting programming mode. # 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): def handle_fire(sender, args):
print 'FIRE!', args print 'FIRE!', args


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

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

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


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




a2u.open() a2u.open()


Loading…
Cancel
Save