Store local ftdi module ref in I2C
authorDan White <dan@whiteaudio.com>
Fri, 2 Nov 2012 23:38:07 +0000 (18:38 -0500)
committerDan White <dan@whiteaudio.com>
Fri, 2 Nov 2012 23:38:07 +0000 (18:38 -0500)
python-lib/usbio.py

index 3fc2668e2bd6d632fd0d3280319635ecb189d82a..e088fce9fcecf14b7d93dd4f4794b3713ad78b11 100644 (file)
@@ -103,24 +103,25 @@ class I2C(object):
         self.DELAY = delay
         self.TIMEOUT = timeout
 
-        self.context = ftdi.new()
-        ftdi.set_interface(self.context, interface)
-        ftdi.write_data_set_chunksize(self.context, 1)
-        ftdi.read_data_set_chunksize(self.context, 1)
+        self.ftdi = ftdi #local reference to speed lookups
+        self.context = self.ftdi.new()
+        self.ftdi.set_interface(self.context, interface)
+        self.ftdi.write_data_set_chunksize(self.context, 1)
+        self.ftdi.read_data_set_chunksize(self.context, 1)
 
         self.io = intbv(0xff)[8:]
         self.io[scl] = 1
         self.io[sda] = 1
         self.port = intbv(0)[8:]
 
-        ftdi.set_bitmode(self.context, int(self.io), ftdi.BITMODE_BITBANG)
+        self.ftdi.set_bitmode(self.context, int(self.io), self.ftdi.BITMODE_BITBANG)
 
-        e = ftdi.usb_open(self.context, vid, pid)
+        e = self.ftdi.usb_open(self.context, vid, pid)
         if e != 0:
             raise Exception, 'Could not open usb device, error: %i' % e
 
-        ftdi.set_baudrate(self.context, 1000)
-        ftdi.usb_purge_buffers(self.context)
+        self.ftdi.set_baudrate(self.context, 1000)
+        self.ftdi.usb_purge_buffers(self.context)
         self.started = False
 
         self.set_pindir(pindir)
@@ -128,15 +129,15 @@ class I2C(object):
 
     def _clear_scl(self):
         self.io[self.scl] = 1
-        ftdi.set_bitmode(self.context, int(self.io), ftdi.BITMODE_BITBANG)
+        self.ftdi.set_bitmode(self.context, int(self.io), self.ftdi.BITMODE_BITBANG)
         self.port[self.scl] = 0
-        ftdi.write_data(self.context, chr(self.port), 1)
+        self.ftdi.write_data(self.context, chr(self.port), 1)
 
     def _read_scl(self):
         if 1:
             self.io[self.scl] = 0
-            ftdi.set_bitmode(self.context, int(self.io), ftdi.BITMODE_BITBANG)
-            port = ftdi.read_pins(self.context)
+            self.ftdi.set_bitmode(self.context, int(self.io), self.ftdi.BITMODE_BITBANG)
+            port = self.ftdi.read_pins(self.context)
             scl = intbv(ord(port[1]))[self.scl]
             if scl:
                 return 1
@@ -145,15 +146,15 @@ class I2C(object):
 
     def _clear_sda(self):
         self.io[self.sda] = 1
-        ftdi.set_bitmode(self.context, int(self.io), ftdi.BITMODE_BITBANG)
+        self.ftdi.set_bitmode(self.context, int(self.io), self.ftdi.BITMODE_BITBANG)
         self.port[self.sda] = 0
-        ftdi.write_data(self.context, chr(self.port), 1)
+        self.ftdi.write_data(self.context, chr(self.port), 1)
 
     def _read_sda(self):
         if 1:
             self.io[self.sda] = 0
-            ftdi.set_bitmode(self.context, int(self.io), ftdi.BITMODE_BITBANG)
-            port = ftdi.read_pins(self.context)
+            self.ftdi.set_bitmode(self.context, int(self.io), self.ftdi.BITMODE_BITBANG)
+            port = self.ftdi.read_pins(self.context)
             sda = intbv(ord(port[1]))[self.sda]
             if sda:
                 return 1
@@ -262,7 +263,7 @@ class I2C(object):
         #print 'io:', b(self.io, 8), '-->',
         self.io[:] = d
         #print b(self.io, 8)
-        ftdi.set_bitmode(self.context, int(self.io), ftdi.BITMODE_BITBANG)
+        self.ftdi.set_bitmode(self.context, int(self.io), self.ftdi.BITMODE_BITBANG)
 
     def set_pinstate(self, bitfield):
         """Set GPIO pins to given bitfield state, ignoring scl/sda pins."""
@@ -272,24 +273,24 @@ class I2C(object):
         #print 'port:', b(self.port, 8), '-->',
         self.port[:] = bits
         #print b(self.port, 8)
-        ftdi.write_data(self.context, chr(self.port), 1)
+        self.ftdi.write_data(self.context, chr(self.port), 1)
 
     def get_pinstate(self):
         """Return the state of all the pins.
         """
-        return ftdi.read_pins(self.context)
+        return self.ftdi.read_pins(self.context)
 
     def RESET(self, value):
         """Set pin connected to RESET line on devboard."""
         reset_pin = 6
         self.port[reset_pin] = intbv(value, max=2**1)
-        ftdi.write_data(self.context, chr(self.port), 1)
+        self.ftdi.write_data(self.context, chr(self.port), 1)
 
     def NCO_CLK(self, value):
         """Set pin connected to NCO_CLK line on devboard."""
         clk_pin = 7
         self.port[clk_pin] = intbv(value, max=2**1)
-        ftdi.write_data(self.context, chr(self.port), 1)
+        self.ftdi.write_data(self.context, chr(self.port), 1)
 
     def dump_config(self):
         """Return a dict suitable for sending to __init__() to restore