Custom SCSI commands for CASIO’s USB Mass Storage implementation¶
CASIO makes use of the C0h
to FFh
vendor-specific range to
implement its own SCSI commands.
0xC0
– Poll status¶
This command is a 16-byte command that is run to poll the device’s status. The command format is the following:
Offset |
Size |
Description |
Value |
0 (0x00) |
1 B |
Command code. |
|
1 (0x01) |
15 B |
Reserved. |
Must be set to |
The command prompts the device to answer with a 16-byte device status, with the following format:
Offset |
Size |
Description |
Value |
---|---|---|---|
0 (0x00) |
1 B |
Unknown. |
Set to |
1 (0x01) |
5 B |
Reserved. |
Set to |
6 (0x06) |
2 B |
Amount of available bytes to be requested. |
Big endian 16-bit integer. |
8 (0x08) |
2 B |
Reserved. |
Set to |
10 (0x0A) |
2 B |
Activity status. |
Big endian 16-bit integer. |
12 (0x0C) |
4 B |
Reserved. |
Set to |
0xC1
– Request available data¶
This command is a 16-byte long command that is run to read available data. The command format is the following:
Offset |
Size |
Description |
Value |
0 (0x00) |
1 B |
Command code. |
|
1 (0x01) |
5 B |
Reserved. |
Set to |
6 (0x06) |
2 B |
Requested bytes count. |
Big endian 16-bit integer. |
8 (0x08) |
8 B |
Reserved. |
Set to |
The command prompts the device to answer with the requested data.
0xC2
– Send data¶
This command is a 16-byte long command that is run to write data to the calculator. The command format is the following:
Offset |
Size |
Description |
Value |
0 (0x00) |
1 B |
Command code. |
|
1 (0x01) |
5 B |
Reserved. |
Set to |
6 (0x06) |
2 B |
Bytes count. |
Big endian 16-bit integer. |
8 (0x08) |
8 B |
Reserved. |
Set to |
The command should be accompanied with the data to send.