<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def exchange(self, data):
 """ 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 """

        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!')