mirror of
https://github.com/hathach/tinyusb.git
synced 2025-02-20 18:40:57 +00:00
Make the disk disappear on Windows after it was ejected
Make the disk disappear on Windows after it was ejected. The device need to be re-inserted or reseted to re-appear again. This doesn't affect Linux where the device can be mounted and unmounted repeatedly. Closes https://github.com/hathach/tinyusb/issues/549
This commit is contained in:
parent
2274740e48
commit
4c99c5ff5c
@ -28,6 +28,8 @@
|
|||||||
|
|
||||||
#if CFG_TUD_MSC
|
#if CFG_TUD_MSC
|
||||||
|
|
||||||
|
static bool ejected = false;
|
||||||
|
|
||||||
// Some MCU doesn't have enough 8KB SRAM to store the whole disk
|
// Some MCU doesn't have enough 8KB SRAM to store the whole disk
|
||||||
// We will use Flash as read-only disk with board that has
|
// We will use Flash as read-only disk with board that has
|
||||||
// CFG_EXAMPLE_MSC_READONLY defined
|
// CFG_EXAMPLE_MSC_READONLY defined
|
||||||
@ -137,7 +139,13 @@ bool tud_msc_test_unit_ready_cb(uint8_t lun)
|
|||||||
{
|
{
|
||||||
(void) lun;
|
(void) lun;
|
||||||
|
|
||||||
return true; // RAM disk is always ready
|
// RAM disk is ready until is not ejected
|
||||||
|
if (ejected) {
|
||||||
|
tud_msc_set_sense(lun, SCSI_SENSE_NOT_READY, 0x3a, 0x00);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Invoked when received SCSI_CMD_READ_CAPACITY_10 and SCSI_CMD_READ_FORMAT_CAPACITY to determine the disk size
|
// Invoked when received SCSI_CMD_READ_CAPACITY_10 and SCSI_CMD_READ_FORMAT_CAPACITY to determine the disk size
|
||||||
@ -166,6 +174,7 @@ bool tud_msc_start_stop_cb(uint8_t lun, uint8_t power_condition, bool start, boo
|
|||||||
}else
|
}else
|
||||||
{
|
{
|
||||||
// unload disk storage
|
// unload disk storage
|
||||||
|
ejected = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user