|
|
@@ -1,400 +0,0 @@ |
|
|
|
#!/usr/bin/env python |
|
|
|
|
|
|
|
import pyad2usb.ad2usb |
|
|
|
import time |
|
|
|
import signal |
|
|
|
import traceback |
|
|
|
import sys |
|
|
|
import logging |
|
|
|
from OpenSSL import SSL |
|
|
|
|
|
|
|
running = True |
|
|
|
|
|
|
|
def signal_handler(signal, frame): |
|
|
|
global running |
|
|
|
|
|
|
|
running = False |
|
|
|
|
|
|
|
def handle_open(sender, args): |
|
|
|
print 'O', args |
|
|
|
|
|
|
|
def handle_close(sender, args): |
|
|
|
print 'C', args |
|
|
|
|
|
|
|
def handle_read(sender, args): |
|
|
|
print '<', args |
|
|
|
|
|
|
|
def handle_write(sender, args): |
|
|
|
print '>', args |
|
|
|
|
|
|
|
def handle_attached(sender, args): |
|
|
|
print '+', args |
|
|
|
|
|
|
|
def handle_detached(sender, args): |
|
|
|
print '-', args |
|
|
|
|
|
|
|
def handle_power_changed(sender, args): |
|
|
|
print 'power changed', args |
|
|
|
|
|
|
|
def handle_alarm_bell(sender, args): |
|
|
|
print 'alarm', args |
|
|
|
|
|
|
|
def handle_bypass(sender, args): |
|
|
|
print 'bypass', args |
|
|
|
|
|
|
|
def handle_message(sender, args): |
|
|
|
print args |
|
|
|
|
|
|
|
def handle_arm(sender, args): |
|
|
|
print 'armed', args |
|
|
|
|
|
|
|
def handle_disarm(sender, args): |
|
|
|
print 'disarmed', args |
|
|
|
|
|
|
|
def handle_firmware(stage): |
|
|
|
if stage == pyad2usb.ad2usb.util.Firmware.STAGE_START: |
|
|
|
handle_firmware.wait_tick = 0 |
|
|
|
handle_firmware.upload_tick = 0 |
|
|
|
elif stage == pyad2usb.ad2usb.util.Firmware.STAGE_WAITING: |
|
|
|
if handle_firmware.wait_tick == 0: |
|
|
|
sys.stdout.write('Waiting for device.') |
|
|
|
handle_firmware.wait_tick += 1 |
|
|
|
|
|
|
|
sys.stdout.write('.') |
|
|
|
sys.stdout.flush() |
|
|
|
elif stage == pyad2usb.ad2usb.util.Firmware.STAGE_BOOT: |
|
|
|
if handle_firmware.wait_tick > 0: print "" |
|
|
|
print "Rebooting device.." |
|
|
|
elif stage == pyad2usb.ad2usb.util.Firmware.STAGE_LOAD: |
|
|
|
print 'Waiting for boot loader..' |
|
|
|
elif stage == pyad2usb.ad2usb.util.Firmware.STAGE_UPLOADING: |
|
|
|
if handle_firmware.upload_tick == 0: |
|
|
|
sys.stdout.write('Uploading firmware.') |
|
|
|
|
|
|
|
handle_firmware.upload_tick += 1 |
|
|
|
|
|
|
|
if handle_firmware.upload_tick % 30 == 0: |
|
|
|
sys.stdout.write('.') |
|
|
|
sys.stdout.flush() |
|
|
|
elif stage == pyad2usb.ad2usb.util.Firmware.STAGE_DONE: |
|
|
|
print "\r\nDone!" |
|
|
|
|
|
|
|
def handle_boot(sender, args): |
|
|
|
print 'boot', args |
|
|
|
|
|
|
|
def handle_config(sender, args): |
|
|
|
print 'config', args |
|
|
|
|
|
|
|
def handle_fault(sender, args): |
|
|
|
print 'zone fault', args |
|
|
|
|
|
|
|
def handle_restore(sender, args): |
|
|
|
print 'zone restored', args |
|
|
|
|
|
|
|
def handle_battery(sender, args): |
|
|
|
print 'low battery', 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 handle_rfx(sender, args): |
|
|
|
print 'RFX', args |
|
|
|
|
|
|
|
def handle_relay(sender, args): |
|
|
|
print 'RELAY', args |
|
|
|
|
|
|
|
def upload_usb(): |
|
|
|
dev = pyad2usb.ad2usb.devices.USBDevice() |
|
|
|
|
|
|
|
dev.open(no_reader_thread=True) |
|
|
|
#pyad2usb.ad2usb.util.Firmware.upload(dev, 'tmp/ademcoemu_V2_2a_6.hex', handle_firmware) |
|
|
|
dev.close() |
|
|
|
|
|
|
|
def upload_serial(): |
|
|
|
dev = pyad2usb.ad2usb.devices.SerialDevice(interface='/dev/ttyUSB0') |
|
|
|
|
|
|
|
dev.open(no_reader_thread=True) |
|
|
|
pyad2usb.ad2usb.util.Firmware.upload(dev, 'tmp/ademcoemu_V2_2a_6.hex', handle_firmware) |
|
|
|
#pyad2usb.ad2usb.util.Firmware.upload(dev, 'tmp/ademcoemu-V2-2a-5-beta20-C4.hex', handle_firmware) |
|
|
|
dev.close() |
|
|
|
|
|
|
|
def upload_usb_serial(): |
|
|
|
dev = pyad2usb.ad2usb.devices.SerialDevice(interface='/dev/ttyUSB5') |
|
|
|
|
|
|
|
dev.open(baudrate=115200) |
|
|
|
pyad2usb.ad2usb.util.Firmware.upload(dev, 'tmp/ademcoemu_V2_2a_6.hex', handle_firmware) |
|
|
|
dev.close() |
|
|
|
|
|
|
|
def upload_socket(): |
|
|
|
dev = pyad2usb.ad2usb.devices.SocketDevice(interface=('localhost', 10000)) |
|
|
|
|
|
|
|
dev.open() |
|
|
|
pyad2usb.ad2usb.util.Firmware.upload(dev, 'tmp/ademcoemu_V2_2a_6.hex', handle_firmware) |
|
|
|
dev.close() |
|
|
|
|
|
|
|
def test_usb(): |
|
|
|
global running |
|
|
|
|
|
|
|
dev = pyad2usb.ad2usb.devices.USBDevice(interface=(0, 0)) |
|
|
|
|
|
|
|
a2u = pyad2usb.ad2usb.AD2USB(dev) |
|
|
|
a2u.on_open += handle_open |
|
|
|
a2u.on_close += handle_close |
|
|
|
#a2u.on_read += handle_read |
|
|
|
#a2u.on_write += handle_write |
|
|
|
a2u.on_message += handle_message |
|
|
|
a2u.on_zone_fault += handle_fault |
|
|
|
a2u.on_zone_restore += handle_restore |
|
|
|
|
|
|
|
#a2u.on_power_changed += handle_power_changed |
|
|
|
#a2u.on_alarm += handle_alarm_bell |
|
|
|
#a2u.on_bypass += handle_bypass |
|
|
|
|
|
|
|
a2u.open() |
|
|
|
|
|
|
|
print dev.id |
|
|
|
|
|
|
|
while running: |
|
|
|
time.sleep(0.1) |
|
|
|
|
|
|
|
a2u.close() |
|
|
|
|
|
|
|
def test_serial(): |
|
|
|
dev = pyad2usb.ad2usb.devices.SerialDevice(interface='/dev/ttyUSB2') |
|
|
|
|
|
|
|
a2u = pyad2usb.ad2usb.AD2USB(dev) |
|
|
|
a2u.on_open += handle_open |
|
|
|
a2u.on_close += handle_close |
|
|
|
#a2u.on_read += handle_read |
|
|
|
#a2u.on_write += handle_write |
|
|
|
|
|
|
|
a2u.on_message += handle_message |
|
|
|
a2u.on_power_changed += handle_power_changed |
|
|
|
a2u.on_alarm += handle_alarm_bell |
|
|
|
a2u.on_bypass += handle_bypass |
|
|
|
|
|
|
|
a2u.open(no_reader_thread=False) |
|
|
|
print a2u._device._device |
|
|
|
#print a2u._device.read_line() |
|
|
|
#dev.open() |
|
|
|
|
|
|
|
print dev._id |
|
|
|
|
|
|
|
time.sleep(1) |
|
|
|
|
|
|
|
a2u.send('V') |
|
|
|
|
|
|
|
while running: |
|
|
|
time.sleep(0.1) |
|
|
|
|
|
|
|
a2u.close() |
|
|
|
#dev.close() |
|
|
|
|
|
|
|
def test_usb_serial(): |
|
|
|
dev = pyad2usb.ad2usb.devices.SerialDevice(interface='/dev/ttyUSB1') |
|
|
|
|
|
|
|
#a2u = pyad2usb.ad2usb.AD2USB(dev) |
|
|
|
dev.on_open += handle_open |
|
|
|
dev.on_close += handle_close |
|
|
|
dev.on_read += handle_read |
|
|
|
dev.on_write += handle_write |
|
|
|
|
|
|
|
dev.open(baudrate=115200) |
|
|
|
print dev._id |
|
|
|
|
|
|
|
while running: |
|
|
|
time.sleep(0.1) |
|
|
|
|
|
|
|
dev.close() |
|
|
|
|
|
|
|
def test_factory(): |
|
|
|
a2u = pyad2usb.ad2usb.Overseer.create() |
|
|
|
|
|
|
|
a2u.on_open += handle_open |
|
|
|
a2u.on_close += handle_close |
|
|
|
a2u.on_read += handle_read |
|
|
|
a2u.on_write += handle_write |
|
|
|
|
|
|
|
a2u.open() |
|
|
|
|
|
|
|
while running: |
|
|
|
time.sleep(0.1) |
|
|
|
|
|
|
|
a2u.close() |
|
|
|
|
|
|
|
def test_factory_watcher(): |
|
|
|
overseer = pyad2usb.ad2usb.Overseer(attached_event=handle_attached, detached_event=handle_detached) |
|
|
|
|
|
|
|
a2u = overseer.get_device() |
|
|
|
|
|
|
|
a2u.on_open += handle_open |
|
|
|
a2u.on_close += handle_close |
|
|
|
a2u.on_read += handle_read |
|
|
|
a2u.on_write += handle_write |
|
|
|
|
|
|
|
a2u.open() |
|
|
|
|
|
|
|
while running: |
|
|
|
time.sleep(0.1) |
|
|
|
|
|
|
|
a2u.close() |
|
|
|
overseer.close() |
|
|
|
|
|
|
|
def test_socket(): |
|
|
|
dev = pyad2usb.ad2usb.devices.SocketDevice(interface=("10.10.0.1", 10000)) |
|
|
|
dev.ssl = True |
|
|
|
dev.ssl_certificate = '../certs-temp/client.pem' |
|
|
|
dev.ssl_key = '../certs-temp/client.key' |
|
|
|
dev.ssl_ca = '../certs-temp/ca.pem' |
|
|
|
|
|
|
|
a2u = pyad2usb.ad2usb.AD2USB(dev) |
|
|
|
a2u.on_open += handle_open |
|
|
|
a2u.on_close += handle_close |
|
|
|
a2u.on_read += handle_read |
|
|
|
#a2u.on_write += handle_write |
|
|
|
# |
|
|
|
a2u.on_message += handle_message |
|
|
|
#a2u.on_power_changed += handle_power_changed |
|
|
|
#a2u.on_alarm += handle_alarm_bell |
|
|
|
#a2u.on_bypass += handle_bypass |
|
|
|
#a2u.on_boot += handle_boot |
|
|
|
#a2u.on_config_received += handle_config |
|
|
|
#a2u.on_arm += handle_arm |
|
|
|
#a2u.on_disarm += handle_disarm |
|
|
|
a2u.on_zone_fault += handle_fault |
|
|
|
a2u.on_zone_restore += handle_restore |
|
|
|
a2u.on_rfx_message += handle_rfx |
|
|
|
a2u.on_relay_changed += handle_relay |
|
|
|
# |
|
|
|
#a2u.on_fire += handle_fire |
|
|
|
#a2u.on_low_battery += handle_battery |
|
|
|
#a2u.on_lrr_message += handle_lrr |
|
|
|
#a2u.on_panic += handle_panic |
|
|
|
|
|
|
|
|
|
|
|
a2u.open() |
|
|
|
#a2u.save_config() |
|
|
|
#a2u.reboot() |
|
|
|
#a2u.get_config() |
|
|
|
|
|
|
|
#a2u.address = 18 |
|
|
|
#a2u.configbits = 0xff00 |
|
|
|
#a2u.address_mask = 0xFFFFFFFF |
|
|
|
#a2u.emulate_zone[0] = False |
|
|
|
#a2u.emulate_relay[0] = False |
|
|
|
#a2u.emulate_lrr = False |
|
|
|
#a2u.deduplicate = False |
|
|
|
|
|
|
|
time.sleep(3) |
|
|
|
|
|
|
|
a2u.get_config() |
|
|
|
#a2u.emulate_zone[1] = False |
|
|
|
#a2u.save_config() |
|
|
|
|
|
|
|
#time.sleep(1) |
|
|
|
#a2u.fault_zone(17, True) |
|
|
|
|
|
|
|
#time.sleep(15) |
|
|
|
#a2u.clear_zone(17) |
|
|
|
|
|
|
|
#time.sleep(1) |
|
|
|
#a2u.fault_zone((2, 2), True) |
|
|
|
|
|
|
|
|
|
|
|
while running: |
|
|
|
time.sleep(0.1) |
|
|
|
|
|
|
|
a2u.close() |
|
|
|
|
|
|
|
def test_no_read_thread(): |
|
|
|
#a2u = pyad2usb.ad2usb.Overseer.create() |
|
|
|
|
|
|
|
|
|
|
|
#a2u.on_open += handle_open |
|
|
|
#a2u.on_close += handle_close |
|
|
|
#a2u.on_read += handle_read |
|
|
|
#a2u.on_write += handle_write |
|
|
|
|
|
|
|
#a2u.open(no_reader_thread=True) |
|
|
|
|
|
|
|
dev = pyad2usb.ad2usb.devices.SerialDevice(interface='/dev/ttyUSB0') |
|
|
|
dev.open(no_reader_thread=True) |
|
|
|
|
|
|
|
#print 'alive?', a2u._device._read_thread.is_alive() |
|
|
|
while 1: |
|
|
|
line = dev.read_line(timeout=5) |
|
|
|
print line |
|
|
|
line = dev.read_line(timeout=5) |
|
|
|
print line |
|
|
|
#time.sleep(0.1) |
|
|
|
|
|
|
|
dev.close() |
|
|
|
|
|
|
|
def test_serial_grep(): |
|
|
|
re = pyad2usb.devices.SerialDevice.find_all(pattern='VID:PID=0403:6001') |
|
|
|
print 'serial' |
|
|
|
for x in re: |
|
|
|
print x |
|
|
|
|
|
|
|
print 'usb' |
|
|
|
re = pyad2usb.devices.USBDevice.find_all() |
|
|
|
for x in re: |
|
|
|
print x |
|
|
|
|
|
|
|
def test_double_panel_write(): |
|
|
|
dev = pyad2usb.ad2usb.devices.SerialDevice(interface='/dev/ttyUSB4') |
|
|
|
dev2 = pyad2usb.ad2usb.devices.SerialDevice(interface='/dev/ttyUSB5') |
|
|
|
|
|
|
|
dev.open(no_reader_thread=True) |
|
|
|
print dev._device |
|
|
|
|
|
|
|
dev2.open(no_reader_thread=True) |
|
|
|
print dev2._device |
|
|
|
#print a2u._device.read_line() |
|
|
|
#dev.open() |
|
|
|
|
|
|
|
print 'Writing characters..' |
|
|
|
dev.write('*****') |
|
|
|
dev2.write('*****') |
|
|
|
|
|
|
|
print 'Reading..' |
|
|
|
|
|
|
|
dev_res = dev.read_line() |
|
|
|
print dev.id, dev_res |
|
|
|
|
|
|
|
dev2_res = dev2.read_line() |
|
|
|
print dev2.id, dev2_res |
|
|
|
|
|
|
|
dev.close() |
|
|
|
dev2.close() |
|
|
|
|
|
|
|
try: |
|
|
|
logging.basicConfig(level=logging.DEBUG) |
|
|
|
signal.signal(signal.SIGINT, signal_handler) |
|
|
|
|
|
|
|
test_serial() |
|
|
|
#upload_serial() |
|
|
|
|
|
|
|
#test_usb() |
|
|
|
#test_usb_serial() |
|
|
|
#test_factory() |
|
|
|
#test_factory_watcher() |
|
|
|
#upload_usb() |
|
|
|
#upload_usb_serial() |
|
|
|
|
|
|
|
#test_socket() |
|
|
|
#upload_socket() |
|
|
|
|
|
|
|
#test_no_read_thread() |
|
|
|
#test_serial_grep() |
|
|
|
|
|
|
|
#test_double_panel_write() |
|
|
|
|
|
|
|
except Exception, err: |
|
|
|
traceback.print_exc(err) |