view 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
line wrap: on
line source

import sys


# Global device list to which devices are registered.
deviceList = {}

def registerDevice(chipId):
   """ Decorator to register a device """
   def wrapper(dev):
      deviceList[chipId] = dev
      return dev
   return wrapper

# Global interface dictionary.
interfaces = {}

def registerInterface(vid_pid):
   def wrapper(iface):
      interfaces[vid_pid] = iface
      return iface
   return wrapper

class Device:
   """
      Base class for a device possibly connected via an interface.
   """
   pass

class Interface:
   """
      Generic interface class. Connected via Usb to a JTAG interface.
      Possibly is connected with a certain chip.
   """
   def getDevice(self):
      """ Try to get the device connected to this interface """
      if self.ChipId in deviceList:
         return deviceList[self.ChipId](self)
      raise STLinkException('No device found!')

class STLinkException(Exception):
   """ Exception used for interfaces and devices """
   pass