Sends a packet to the grizzly, requesting information. Reads back
        the data requested.
        
        Packet format looks like:
        Byte 0:           Register
        Byte 1 (bit 6:0): Length of data to read/write
        Byte 1 (bit 7):   R/W flag (1 = write)
        Byte 2-15:        Data
        
        The length of the read indicates how many registers you want to read from
        sequentially

def exchange_bytes(self, cmd):
        """Sends a packet to the grizzly, requesting information. Reads back
        the data requested.
        
        Packet format looks like:
        Byte 0:           Register
        Byte 1 (bit 6:0): Length of data to read/write
        Byte 1 (bit 7):   R/W flag (1 = write)
        Byte 2-15:        Data
        
        The length of the read indicates how many registers you want to read from
        sequentially"""
        assert len(cmd) == 16, "Must send 16 bytes"
        self._dev.ctrl_transfer(0x21, 0x09, 0x0300, 0, cmd)
        numBytes = ord(cmd[1]) & 0x7f
        return self._dev.ctrl_transfer(0xa1, 0x01, 0x0301, 0, numBytes + 1)[1::]