Mercurial > lcfOS
comparison python/devices.py @ 128:51cc127648e4
Splitup in interface and device
author | Windel Bouwman |
---|---|
date | Sun, 13 Jan 2013 17:31:35 +0100 |
parents | |
children | 9e350a7dde98 |
comparison
equal
deleted
inserted
replaced
127:ec1f2cc04d95 | 128:51cc127648e4 |
---|---|
1 import sys | |
2 | |
3 | |
4 # Global device list to which devices are registered. | |
5 deviceList = {} | |
6 | |
7 def registerDevice(chipId): | |
8 """ Decorator to register a device """ | |
9 def wrapper(dev): | |
10 deviceList[chipId] = dev | |
11 return dev | |
12 return wrapper | |
13 | |
14 # Global interface dictionary. | |
15 interfaces = {} | |
16 | |
17 def registerInterface(vid_pid): | |
18 def wrapper(iface): | |
19 interfaces[vid_pid] = iface | |
20 return iface | |
21 return wrapper | |
22 | |
23 class Device: | |
24 """ | |
25 Base class for a device possibly connected via an interface. | |
26 """ | |
27 pass | |
28 | |
29 class Interface: | |
30 """ | |
31 Generic interface class. Connected via Usb to a JTAG interface. | |
32 Possibly is connected with a certain chip. | |
33 """ | |
34 def getDevice(self): | |
35 """ Try to get the device connected to this interface """ | |
36 if self.ChipId in deviceList: | |
37 return deviceList[self.ChipId](self) | |
38 raise STLinkException('No device found!') | |
39 | |
40 class STLinkException(Exception): | |
41 """ Exception used for interfaces and devices """ | |
42 pass | |
43 |