scsicdrom: improve MODE_SELECT_6 stub.

This commit is contained in:
Maxim Poliakovski 2024-05-07 08:19:56 +02:00
parent 941a405cf8
commit 07304781ea
2 changed files with 15 additions and 11 deletions

View File

@ -307,17 +307,21 @@ void ScsiCdrom::mode_sense_6()
this->switch_phase(ScsiPhase::DATA_IN);
}
int ScsiCdrom::mode_select_6(uint8_t param_len)
void ScsiCdrom::mode_select_6(uint8_t param_len)
{
if (param_len == 0) {
return 0x0;
}
else {
LOG_F(ERROR, "Mode Select calling for param length of: %d", param_len);
this->incoming_size = param_len;
this->switch_phase(ScsiPhase::DATA_OUT);
return param_len;
}
if (!param_len)
return;
this->incoming_size = param_len;
std::memset(&this->data_buf[0], 0, 512);
this->post_xfer_action = [this]() {
// TODO: parse the received mode parameter list here
LOG_F(INFO, "Mode Select: received mode parameter list");
};
this->switch_phase(ScsiPhase::DATA_OUT);
}
void ScsiCdrom::read_toc()

View File

@ -45,7 +45,7 @@ protected:
int test_unit_ready();
void read(uint32_t lba, uint16_t nblocks, uint8_t cmd_len);
void inquiry();
int mode_select_6(uint8_t param_len);
void mode_select_6(uint8_t param_len);
void mode_sense_6();
void read_toc();