Fix write protected MSC. The bits were flipped.

This commit is contained in:
Scott Shawcroft 2019-02-20 15:12:36 -08:00
parent 29b49199be
commit c870efffc0
No known key found for this signature in database
GPG Key ID: FD0EDC4B6C53CA59
2 changed files with 14 additions and 1 deletions

View File

@ -284,8 +284,8 @@ typedef struct ATTR_PACKED
{
uint8_t data_len;
uint8_t medium_type;
bool write_protected : 1;
uint8_t reserved : 7;
bool write_protected : 1;
uint8_t block_descriptor_len;
} scsi_mode_sense6_resp_t;

View File

@ -594,6 +594,19 @@ static void proc_read10_cmd(uint8_t rhport, mscd_interface_t* p_msc)
static void proc_write10_cmd(uint8_t rhport, mscd_interface_t* p_msc)
{
msc_cbw_t const * p_cbw = &p_msc->cbw;
bool writable = true;
if (tud_msc_is_writable_cb) {
writable = tud_msc_is_writable_cb(p_cbw->lun);
}
if (!writable) {
msc_csw_t* p_csw = &p_msc->csw;
p_csw->data_residue = p_cbw->total_bytes;
p_csw->status = MSC_CSW_STATUS_FAILED;
tud_msc_set_sense(p_cbw->lun, SCSI_SENSE_DATA_PROTECT, 0x27, 0x00); // Sense = Write protected
dcd_edpt_stall(rhport, p_msc->ep_out);
return;
}
// remaining bytes capped at class buffer
int32_t nbytes = (int32_t) tu_min32(sizeof(_mscd_buf), p_cbw->total_bytes-p_msc->xferred_len);