|
|
@@ -152,6 +152,26 @@ void tud_msc_capacity_cb(uint8_t lun, uint32_t* block_count, uint16_t* block_siz
|
|
|
*block_size = DISK_BLOCK_SIZE;
|
|
|
}
|
|
|
|
|
|
+// Invoked when received Start Stop Unit command
|
|
|
+// - Start = 0 : stopped power mode, if load_eject = 1 : unload disk storage
|
|
|
+// - Start = 1 : active mode, if load_eject = 1 : load disk storage
|
|
|
+void tud_msc_start_stop_cb(uint8_t lun, uint8_t power_condition, bool start, bool load_eject)
|
|
|
+{
|
|
|
+ (void) lun;
|
|
|
+ (void) power_condition;
|
|
|
+
|
|
|
+ if ( load_eject )
|
|
|
+ {
|
|
|
+ if (start)
|
|
|
+ {
|
|
|
+ // load disk storage
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ // unload disk storage
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
// Callback invoked when received READ10 command.
|
|
|
// Copy disk's data to buffer (up to bufsize) and return number of copied bytes.
|
|
|
int32_t tud_msc_read10_cb(uint8_t lun, uint32_t lba, uint32_t offset, void* buffer, uint32_t bufsize)
|
|
|
@@ -200,18 +220,6 @@ int32_t tud_msc_scsi_cb (uint8_t lun, uint8_t const scsi_cmd[16], void* buffer,
|
|
|
resplen = 0;
|
|
|
break;
|
|
|
|
|
|
- case SCSI_CMD_START_STOP_UNIT:
|
|
|
- // Host try to eject/safe remove/poweroff us. We could safely disconnect with disk storage, or go into lower power
|
|
|
- /* scsi_start_stop_unit_t const * start_stop = (scsi_start_stop_unit_t const *) scsi_cmd;
|
|
|
- // Start bit = 0 : low power mode, if load_eject = 1 : unmount disk storage as well
|
|
|
- // Start bit = 1 : Ready mode, if load_eject = 1 : mount disk storage
|
|
|
- start_stop->start;
|
|
|
- start_stop->load_eject;
|
|
|
- */
|
|
|
- resplen = 0;
|
|
|
- break;
|
|
|
-
|
|
|
-
|
|
|
default:
|
|
|
// Set Sense = Invalid Command Operation
|
|
|
tud_msc_set_sense(lun, SCSI_SENSE_ILLEGAL_REQUEST, 0x20, 0x00);
|