From: Dan White Date: Fri, 13 Jul 2012 03:42:43 +0000 (-0500) Subject: cache _cs_cmd because it never changes X-Git-Tag: calibrations~29 X-Git-Url: http://git.whiteaudio.com/gitweb/?a=commitdiff_plain;h=ef67e481a0d066e71d867d72e7f7583581ae2a5a;p=430.git cache _cs_cmd because it never changes --- 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