@@ -24,18 +24,13 @@ def main(): | |||||
# Set up an event handler and open the device | # Set up an event handler and open the device | ||||
device.on_alarm += handle_alarm | device.on_alarm += handle_alarm | ||||
device.open() | |||||
# Wait for events | |||||
while True: | |||||
time.sleep(1) | |||||
with device.open(): | |||||
while True: | |||||
time.sleep(1) | |||||
except Exception, ex: | except Exception, ex: | ||||
print 'Exception:', ex | print 'Exception:', ex | ||||
finally: | |||||
device.close() | |||||
def handle_alarm(sender, *args, **kwargs): | def handle_alarm(sender, *args, **kwargs): | ||||
""" | """ | ||||
Handles alarm events from the AD2. | Handles alarm events from the AD2. | ||||
@@ -12,18 +12,13 @@ def main(): | |||||
# Set up an event handler and open the device | # Set up an event handler and open the device | ||||
device.on_message += handle_message | device.on_message += handle_message | ||||
device.open() | |||||
# Wait for events. | |||||
while True: | |||||
time.sleep(1) | |||||
with device.open(): | |||||
while True: | |||||
time.sleep(1) | |||||
except Exception, ex: | except Exception, ex: | ||||
print 'Exception:', ex | print 'Exception:', ex | ||||
finally: | |||||
device.close() | |||||
def handle_message(sender, *args, **kwargs): | def handle_message(sender, *args, **kwargs): | ||||
""" | """ | ||||
Handles message events from the AD2. | Handles message events from the AD2. | ||||
@@ -22,18 +22,13 @@ def main(): | |||||
# Set up an event handler and open the device | # Set up an event handler and open the device | ||||
device.on_rfx_message += handle_rfx | device.on_rfx_message += handle_rfx | ||||
device.open() | |||||
# Wait for events. | |||||
while True: | |||||
time.sleep(1) | |||||
with device.open(): | |||||
while True: | |||||
time.sleep(1) | |||||
except Exception, ex: | except Exception, ex: | ||||
print 'Exception:', ex | print 'Exception:', ex | ||||
finally: | |||||
device.close() | |||||
def handle_rfx(sender, *args, **kwargs): | def handle_rfx(sender, *args, **kwargs): | ||||
""" | """ | ||||
Handles RF message events from the AD2. | Handles RF message events from the AD2. | ||||
@@ -16,20 +16,16 @@ def main(): | |||||
# Set up an event handler and open the device | # Set up an event handler and open the device | ||||
device.on_message += handle_message | device.on_message += handle_message | ||||
device.open(baudrate=BAUDRATE) # Override the default SerialDevice | |||||
# baudrate since we're using a USB | |||||
# device over serial in this example. | |||||
# Wait for events. | |||||
while True: | |||||
time.sleep(1) | |||||
# Override the default SerialDevice baudrate since we're using a USB device | |||||
# over serial in this example. | |||||
with device.open(baudrate=BAUDRATE): | |||||
while True: | |||||
time.sleep(1) | |||||
except Exception, ex: | except Exception, ex: | ||||
print 'Exception:', ex | print 'Exception:', ex | ||||
finally: | |||||
device.close() | |||||
def handle_message(sender, *args, **kwargs): | def handle_message(sender, *args, **kwargs): | ||||
""" | """ | ||||
Handles message events from the AD2. | Handles message events from the AD2. | ||||
@@ -17,18 +17,13 @@ def main(): | |||||
# Set up an event handler and open the device | # Set up an event handler and open the device | ||||
device.on_message += handle_message | device.on_message += handle_message | ||||
device.open() | |||||
# Wait for events. | |||||
while True: | |||||
time.sleep(1) | |||||
with device.open(): | |||||
while True: | |||||
time.sleep(1) | |||||
except Exception, ex: | except Exception, ex: | ||||
print 'Exception:', ex | print 'Exception:', ex | ||||
finally: | |||||
device.close() | |||||
def handle_message(sender, *args, **kwargs): | def handle_message(sender, *args, **kwargs): | ||||
""" | """ | ||||
Handles message events from the AD2. | Handles message events from the AD2. | ||||
@@ -31,18 +31,13 @@ def main(): | |||||
# Set up an event handler and open the device | # Set up an event handler and open the device | ||||
device.on_message += handle_message | device.on_message += handle_message | ||||
device.open() | |||||
# Wait for events. | |||||
while True: | |||||
time.sleep(1) | |||||
with device.open(): | |||||
while True: | |||||
time.sleep(1) | |||||
except Exception, ex: | except Exception, ex: | ||||
print 'Exception:', ex | print 'Exception:', ex | ||||
finally: | |||||
device.close() | |||||
def handle_message(sender, *args, **kwargs): | def handle_message(sender, *args, **kwargs): | ||||
""" | """ | ||||
Handles message events from the AD2. | Handles message events from the AD2. | ||||
@@ -34,24 +34,19 @@ def main(): | |||||
device.on_zone_fault += handle_zone_fault | device.on_zone_fault += handle_zone_fault | ||||
device.on_zone_restore += handle_zone_restore | device.on_zone_restore += handle_zone_restore | ||||
device.open() | |||||
with device.open(): | |||||
last_update = time.time() | |||||
while True: | |||||
if time.time() - last_update > WAIT_TIME: | |||||
last_update = time.time() | |||||
# Wait for events. | |||||
last_update = time.time() | |||||
while True: | |||||
if time.time() - last_update > WAIT_TIME: | |||||
last_update = time.time() | |||||
device.fault_zone(TARGET_ZONE) | |||||
device.fault_zone(TARGET_ZONE) | |||||
time.sleep(1) | |||||
time.sleep(1) | |||||
except Exception, ex: | except Exception, ex: | ||||
print 'Exception:', ex | print 'Exception:', ex | ||||
finally: | |||||
device.close() | |||||
def handle_zone_fault(sender, *args, **kwargs): | def handle_zone_fault(sender, *args, **kwargs): | ||||
""" | """ | ||||
Handles zone fault messages. | Handles zone fault messages. | ||||
@@ -85,6 +85,20 @@ class AD2(object): | |||||
self.emulate_lrr = False | self.emulate_lrr = False | ||||
self.deduplicate = False | self.deduplicate = False | ||||
def __enter__(self): | |||||
""" | |||||
Support for context manager __enter__. | |||||
""" | |||||
return self | |||||
def __exit__(self, type, value, traceback): | |||||
""" | |||||
Support for context manager __exit__. | |||||
""" | |||||
self.close() | |||||
return False | |||||
@property | @property | ||||
def id(self): | def id(self): | ||||
""" | """ | ||||
@@ -107,6 +121,8 @@ class AD2(object): | |||||
self._device.open(baudrate=baudrate, no_reader_thread=no_reader_thread) | self._device.open(baudrate=baudrate, no_reader_thread=no_reader_thread) | ||||
self.get_config() | self.get_config() | ||||
return self | |||||
def close(self): | def close(self): | ||||
""" | """ | ||||
Closes the device. | Closes the device. | ||||
@@ -37,6 +37,20 @@ class Device(object): | |||||
self._running = False | self._running = False | ||||
self._read_thread = Device.ReadThread(self) | self._read_thread = Device.ReadThread(self) | ||||
def __enter__(self): | |||||
""" | |||||
Support for context manager __enter__. | |||||
""" | |||||
return self | |||||
def __exit__(self, type, value, traceback): | |||||
""" | |||||
Support for context manager __exit__. | |||||
""" | |||||
self.close() | |||||
return False | |||||
@property | @property | ||||
def id(self): | def id(self): | ||||
""" | """ | ||||
@@ -338,10 +352,12 @@ class USBDevice(Device): | |||||
else: | else: | ||||
self._running = True | self._running = True | ||||
self.on_open() | |||||
if not no_reader_thread: | if not no_reader_thread: | ||||
self._read_thread.start() | self._read_thread.start() | ||||
self.on_open() | |||||
return self | |||||
def close(self): | def close(self): | ||||
""" | """ | ||||
@@ -630,6 +646,8 @@ class SerialDevice(Device): | |||||
if not no_reader_thread: | if not no_reader_thread: | ||||
self._read_thread.start() | self._read_thread.start() | ||||
return self | |||||
def close(self): | def close(self): | ||||
""" | """ | ||||
Closes the device. | Closes the device. | ||||
@@ -890,12 +908,13 @@ class SocketDevice(Device): | |||||
else: | else: | ||||
self._running = True | self._running = True | ||||
self.on_open() | self.on_open() | ||||
if not no_reader_thread: | if not no_reader_thread: | ||||
self._read_thread.start() | self._read_thread.start() | ||||
return self | |||||
def close(self): | def close(self): | ||||
""" | """ | ||||
Closes the device. | Closes the device. | ||||