Mercurial > lcfOS
comparison python/stlink.py @ 113:1f40be088ee8
Added first start stlink
author | Windel Bouwman |
---|---|
date | Sat, 05 Jan 2013 00:06:27 +0100 |
parents | |
children | f42268da614f |
comparison
equal
deleted
inserted
replaced
112:056face59ee7 | 113:1f40be088ee8 |
---|---|
1 from usb import UsbContext | |
2 | |
3 class STLinkException(Exception): | |
4 pass | |
5 | |
6 def checkDevice(device): | |
7 ST_VID=0x0483 | |
8 STLINK2_PID=0x3748 | |
9 return device.VendorId == ST_VID and device.ProductId == STLINK2_PID | |
10 | |
11 XFER_TO_DEV=0 | |
12 XFER_FROM_DEV=0x80 | |
13 | |
14 class STLink(object): | |
15 DFU_MODE = 222 | |
16 def __init__(self): | |
17 self.context = UsbContext() | |
18 def open(self): | |
19 context = UsbContext() | |
20 stlink2s = list(filter(checkDevice, context.DeviceList)) | |
21 if not stlink2s: | |
22 raise STLinkException('Could not find an ST link') | |
23 if len(stlink2s) > 1: | |
24 print('More then one stlink2 found, picking first one') | |
25 stlink2 = stlink2s[0] | |
26 dev = stlink2.open() | |
27 if dev.Configuration != 1: | |
28 dev.Configuration = 1 | |
29 dev.claimInterface(0) | |
30 def getCurrentMode(self): | |
31 print('get cur mode') | |
32 rep_len = 2 | |
33 self.fillCommand(self, XFER_FROM_DEV, rep_len) | |
34 size = self.send_recv(1, cmd, data) | |
35 return self.q_buf[0] | |
36 CurrentMode = property(getCurrentMode) | |
37 def fillCommand(self, di, rl): | |
38 bytes(b'USBC') | |
39 pass | |
40 def reset(self): | |
41 pass | |
42 def send_recv(self, txbuf, rxbuf): | |
43 pass | |
44 |