From ef67e481a0d066e71d867d72e7f7583581ae2a5a Mon Sep 17 00:00:00 2001 From: Dan White Date: Thu, 12 Jul 2012 22:42:43 -0500 Subject: [PATCH] cache _cs_cmd because it never changes --- python-lib/usbio.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/python-lib/usbio.py b/python-lib/usbio.py index 9257b93..ead50e7 100644 --- a/python-lib/usbio.py +++ b/python-lib/usbio.py @@ -370,6 +370,12 @@ class SPI(object): self._mode = mode #hack to get an initial value self.set_pins(pinstate, pindir) self.set_mode(mode) + + #cs doesn't (shouldn't) change, cache the values for SPEED + self._cs_cmd_cache = {} + for dev in self.cs.keys(): + self._cs_cmd_cache[dev] = self._cs_cmd(dev) + self.ftdi.usb_purge_buffers(self.context) def _raw_write(self, data): @@ -567,16 +573,17 @@ class SPI(object): The device is used to select the desired CS pin state as cs_active = self.cs[device]. """ - cmd = (self._cs_cmd(device) + self._write_cmd(data) + - self._cs_cmd('_idle')) + cmd = (self._cs_cmd_cache[device] + + self._write_cmd(data) + + self._cs_cmd_cache['_idle']) self._raw_write(cmd) def read(self, n, device): """Read data from the selected device, DO pin stays in its last state. """ - cmd = (self._cs_cmd(device) + self._read_cmd(n) + - self._cs_cmd('_idle')) + cmd = (self._cs_cmd_cache[device] + self._read_cmd(n) + + self._cs_cmd_cache['_idle']) self._raw_write(cmd) return self._raw_read(n) @@ -585,8 +592,9 @@ class SPI(object): the current SPI mode. The device is used to select the desired CS pin state as cs_active = self.cs[device]. """ - cmd = (self._cs_cmd(device) + self._exchange_cmd(data) + - self._cs_cmd('_idle')) + cmd = (self._cs_cmd_cache[device] + + self._exchange_cmd(data) + + self._cs_cmd_cache['_idle']) self._raw_write(cmd) return self._raw_read(len(data)) @@ -1178,7 +1186,7 @@ class DAC8568(object): return b def send(self): - self.bus.exchange(str(self), 'dac') + self.bus.write(str(self), 'dac') # # internal functions to help construct a command -- 2.25.1