adding msc Start Stop to buitin command, but not complate yet
add tud_msc_start_stop_cb() as optional callback
This commit is contained in:
		| @@ -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); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 hathach
					hathach