mirror of
https://github.com/dingusdev/dingusppc.git
synced 2024-07-08 01:28:55 +00:00
Inquiry cmd fixed
This commit is contained in:
parent
f792b38ea3
commit
2065f3588b
@ -73,7 +73,7 @@ void ScsiHardDisk::process_command(uint8_t* cmd) {
|
|||||||
req_sense(alloc_len);
|
req_sense(alloc_len);
|
||||||
case ScsiCommand::INQUIRY:
|
case ScsiCommand::INQUIRY:
|
||||||
alloc_len = (cmd[3] << 8) + cmd[4];
|
alloc_len = (cmd[3] << 8) + cmd[4];
|
||||||
req_sense(alloc_len);
|
inquiry(alloc_len);
|
||||||
case ScsiCommand::READ_6:
|
case ScsiCommand::READ_6:
|
||||||
lba = ((cmd[1] & 0x1F) << 16) + (cmd[2] << 8) + cmd[3];
|
lba = ((cmd[1] & 0x1F) << 16) + (cmd[2] << 8) + cmd[3];
|
||||||
transfer_len = cmd[4];
|
transfer_len = cmd[4];
|
||||||
@ -123,7 +123,8 @@ int ScsiHardDisk::req_sense(uint16_t alloc_len) {
|
|||||||
return ScsiError::NO_ERROR; // placeholder - no sense
|
return ScsiError::NO_ERROR; // placeholder - no sense
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScsiHardDisk::inquiry() {
|
void ScsiHardDisk::inquiry(uint16_t alloc_len) {
|
||||||
|
if (alloc_len >= 48) {
|
||||||
uint8_t empty_filler[1 << 17] = {0x0};
|
uint8_t empty_filler[1 << 17] = {0x0};
|
||||||
memcpy(img_buffer, empty_filler, (1 << 17));
|
memcpy(img_buffer, empty_filler, (1 << 17));
|
||||||
img_buffer[2] = 0x1;
|
img_buffer[2] = 0x1;
|
||||||
@ -135,6 +136,10 @@ void ScsiHardDisk::inquiry() {
|
|||||||
memcpy(img_buffer + 32, rev_info, 8);
|
memcpy(img_buffer + 32, rev_info, 8);
|
||||||
memcpy(img_buffer + 40, serial_info, 8);
|
memcpy(img_buffer + 40, serial_info, 8);
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
LOG_F(WARNING, "Inappropriate Allocation Length: %d", alloc_len);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int ScsiHardDisk::send_diagnostic() {
|
int ScsiHardDisk::send_diagnostic() {
|
||||||
return 0x0;
|
return 0x0;
|
||||||
|
@ -45,7 +45,7 @@ public:
|
|||||||
|
|
||||||
void mode_sense_6(uint8_t page_code, uint8_t subpage_code, uint8_t alloc_len);
|
void mode_sense_6(uint8_t page_code, uint8_t subpage_code, uint8_t alloc_len);
|
||||||
void format();
|
void format();
|
||||||
void inquiry();
|
void inquiry(uint16_t alloc_len);
|
||||||
void read_capacity_10();
|
void read_capacity_10();
|
||||||
void read(uint32_t lba, uint16_t transfer_len, uint8_t cmd_len);
|
void read(uint32_t lba, uint16_t transfer_len, uint8_t cmd_len);
|
||||||
void write(uint32_t lba, uint16_t transfer_len, uint8_t cmd_len);
|
void write(uint32_t lba, uint16_t transfer_len, uint8_t cmd_len);
|
||||||
|
Loading…
Reference in New Issue
Block a user