code: def exchange(self, data):
          
          self._usbiss.write_data([self._usbiss.SPI_CMD] + data)
          response = self._usbiss.read_data(1 + len(data))
          if len(response) != 0:
              response = self._usbiss.decode(response)
              status = response.pop(0)
              if status == 0:
                  raise USBISSError('SPI Transmission Error')
              return response
          else:
              raise USBISSError('SPI Transmission Error: No bytes received!')
docs: Perform SPI transaction.
  
          The first received byte is either ACK or NACK.
  
          :TODO: enforce rule that up to 63 bytes of data can be sent.
          :TODO: enforce rule that there is no gaps in data bytes (what define a gap?)
  
          :param data: List of bytes
          :returns: List of bytes
          :rtype: List of bytes