mirror of
https://github.com/openmv/openmv.git
synced 2025-11-04 14:49:50 +08:00
* Add openmv module which has USB debug functions * Update IDE and FB viewer to use openmv module
56 lines
1.3 KiB
Python
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)
|
|
|