Mercurial > lcfOS
diff python/stlink.py @ 113:1f40be088ee8
Added first start stlink
author | Windel Bouwman |
---|---|
date | Sat, 05 Jan 2013 00:06:27 +0100 |
parents | |
children | f42268da614f |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/python/stlink.py Sat Jan 05 00:06:27 2013 +0100 @@ -0,0 +1,44 @@ +from usb import UsbContext + +class STLinkException(Exception): + pass + +def checkDevice(device): + ST_VID=0x0483 + STLINK2_PID=0x3748 + return device.VendorId == ST_VID and device.ProductId == STLINK2_PID + +XFER_TO_DEV=0 +XFER_FROM_DEV=0x80 + +class STLink(object): + DFU_MODE = 222 + def __init__(self): + self.context = UsbContext() + def open(self): + context = UsbContext() + stlink2s = list(filter(checkDevice, context.DeviceList)) + if not stlink2s: + raise STLinkException('Could not find an ST link') + if len(stlink2s) > 1: + print('More then one stlink2 found, picking first one') + stlink2 = stlink2s[0] + dev = stlink2.open() + if dev.Configuration != 1: + dev.Configuration = 1 + dev.claimInterface(0) + def getCurrentMode(self): + print('get cur mode') + rep_len = 2 + self.fillCommand(self, XFER_FROM_DEV, rep_len) + size = self.send_recv(1, cmd, data) + return self.q_buf[0] + CurrentMode = property(getCurrentMode) + def fillCommand(self, di, rl): + bytes(b'USBC') + pass + def reset(self): + pass + def send_recv(self, txbuf, rxbuf): + pass +