openmv/usr/openmv.py
iabdalkader 5ea84e8c20 Move openmv code to separate python module
* Add openmv module which has USB debug functions
* Update IDE and FB viewer to use openmv module
2014-02-10 03:14:14 +02:00

56 lines
1.3 KiB
Python

#!/usr/bin/env python
import sys
import usb.core
import usb.util
# USB Debug commands
__USBDBG_DUMP_FB=1
__USBDBG_EXEC_SCRIPT=2
__USBDBG_READ_SCRIPT=3
__USBDBG_WRITE_SCRIPT=4
# Debug __INTERFACE
__INTERFACE = 2;
__ALTSETTING= 1;
__dev = None
def init():
global __dev
# find USB __device
__dev = usb.core.find(idVendor=0x0483, idProduct=0x5740)
if __dev is None:
raise ValueError('__device not found')
# detach kernel driver
if __dev.is_kernel_driver_active(__INTERFACE):
__dev.detach_kernel_driver(__INTERFACE)
# claim __INTERFACE
usb.util.claim_interface(__dev, __INTERFACE)
# set FB debug alt setting
__dev.set_interface_altsetting(__INTERFACE, __ALTSETTING)
def release():
global __dev
# release __INTERFACE
usb.util.release_interface(__dev, __INTERFACE)
# reattach kernel driver
__dev.attach_kernel_driver(__INTERFACE)
def dump_fb():
global __dev
# request snapshot
__dev.ctrl_transfer(0xC1, __USBDBG_DUMP_FB, 0, __INTERFACE, None, 2000)
# read framebuffer
return __dev.read(0x83, 160*120*2, __INTERFACE, 5000)
def exec_script(buf):
__dev.ctrl_transfer(0x41, __USBDBG_EXEC_SCRIPT, len(buf), __INTERFACE, None, 2000)
__dev.write(0x03, buf, __INTERFACE, 10000)