(self, cdb:bytes, rlen:int, send_data:bytes|None)
| 190 | # --- CDB processing (called by MockUSB3.send_batch) --- |
| 191 | |
| 192 | def process_cdb(self, cdb:bytes, rlen:int, send_data:bytes|None) -> bytes|None: |
| 193 | op = cdb[0] |
| 194 | if op == 0xE5: # write byte |
| 195 | self._xram_write_byte(((cdb[2] << 16) | (cdb[3] << 8) | cdb[4]) & 0xFFFF, cdb[1]) |
| 196 | return None |
| 197 | if op == 0xE4: # read |
| 198 | return self._xram_read(((cdb[2] << 16) | (cdb[3] << 8) | cdb[4]) & 0xFFFF, cdb[1]) |
| 199 | if op == 0x8A and send_data is not None and 0xF000 in self._dma_regions: # SCSI write |
| 200 | host_addr, dma_size = self._dma_regions[0xF000] |
| 201 | ctypes.memmove(host_addr, send_data, min(len(send_data), dma_size)) |
| 202 | return None |
| 203 | |
| 204 | class MockUSB3: |
| 205 | @classmethod |
no test coverage detected