#!/usr/bin/env python3

# apt-get install python3-usb
import sys, usb.core

dev = usb.core.find(idVendor=0x1a86, idProduct=0xe010)
if dev is None:
    sys.exit("No Panic button found in the system");

try:
    if dev.is_kernel_driver_active(0) is True:
        dev.detach_kernel_driver(0)
except usb.core.USBError as e:
    sys.exit("Kernel driver won't give up control over device: %s" % str(e))

try:
    dev.set_configuration()
    dev.reset()
except usb.core.USBError as e:
    sys.exit("Cannot set configuration the device: %s" % str(e))

print ("dev = ", dev);
endpoint = dev[0][(0,0)][0]
#print ("endpoint = ", dev[0][(0,0)][1])

# set speed to 9600
#dev.ctrl_transfer( 0x21, 0x09, 0x0200, 0x0000, b"\xff\xc7\x82\xb2\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" );

gpio = dev.ctrl_transfer( 160, 1, 256, 0, 32 );
print("gpip", gpio)

#dev.write( 2, "\x04pero" ) # writes to serial port
while 1:
    try:
        data = dev.read(endpoint.bEndpointAddress, endpoint.wMaxPacketSize,
                        timeout=10000)
        print(endpoint.bEndpointAddress, endpoint.wMaxPacketSize, data)
        gpio = dev.ctrl_transfer( 160, 1, 256, 0, 32 );
        print("gpip", gpio)
    except usb.core.USBError as e:
        if e.errno != 110: # 110 is a timeout.
            sys.exit("Error readin data: %s" % str(e))
