break;\r
}\r
\r
+ SCSI_Request_Sense_Response_t SenseData;\r
+ if (MS_Host_RequestSense(&FlashDisk_MS_Interface, 0, &SenseData) != 0)\r
+ {\r
+ printf("Error retrieving device sense.\r\n");\r
+ LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
+ USB_HostState = HOST_STATE_WaitForDeviceRemoval;\r
+ break;\r
+ }\r
+ \r
+ if (MS_Host_PreventAllowMediumRemoval(&FlashDisk_MS_Interface, 0, true))\r
+ {\r
+ printf("Error setting Prevent Device Removal bit.\r\n");\r
+ LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
+ USB_HostState = HOST_STATE_WaitForDeviceRemoval;\r
+ break;\r
+ }\r
+\r
SCSI_Inquiry_Response_t InquiryData;\r
if (MS_Host_GetInquiryData(&FlashDisk_MS_Interface, &InquiryData))\r
{\r
}\r
while (!(DeviceReady));\r
\r
- puts_P(PSTR("Retrieving Capacity... "));\r
+ printf("Retrieving Capacity... ");\r
\r
SCSI_Capacity_t DiskCapacity;\r
if (MS_Host_ReadDeviceCapacity(&FlashDisk_MS_Interface, 0, &DiskCapacity))\r
\r
printf("%lu blocks of %lu bytes.\r\n", DiskCapacity.Blocks, DiskCapacity.BlockSize);\r
\r
+ uint8_t BlockBuffer[DiskCapacity.BlockSize];\r
+\r
+ if (MS_Host_ReadDeviceBlocks(&FlashDisk_MS_Interface, 0, 0x00000000, 1, DiskCapacity.BlockSize, BlockBuffer))\r
+ {\r
+ printf("Error reading device block.\r\n");\r
+ LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
+ USB_HostState = HOST_STATE_WaitForDeviceRemoval;\r
+ break;\r
+ }\r
+ \r
+ printf("\r\nContents of first block:\r\n");\r
+\r
+ for (uint16_t Chunk = 0; Chunk < (DiskCapacity.BlockSize >> 4); Chunk++)\r
+ {\r
+ uint8_t* ChunkPtr = &BlockBuffer[Chunk << 4];\r
+ \r
+ /* Print out the 16 bytes of the chunk in HEX format */\r
+ for (uint8_t ByteOffset = 0; ByteOffset < (1 << 4); ByteOffset++)\r
+ {\r
+ char CurrByte = *(ChunkPtr + ByteOffset);\r
+ printf_P(PSTR("%.2X "), CurrByte);\r
+ }\r
+ \r
+ printf(" ");\r
+\r
+ /* Print out the 16 bytes of the chunk in ASCII format */\r
+ for (uint8_t ByteOffset = 0; ByteOffset < (1 << 4); ByteOffset++)\r
+ {\r
+ char CurrByte = *(ChunkPtr + ByteOffset);\r
+ putchar(isprint(CurrByte) ? CurrByte : '.');\r
+ }\r
+ \r
+ printf("\r\n");\r
+ }\r
+\r
LEDs_SetAllLEDs(LEDMASK_USB_READY);\r
USB_HostState = HOST_STATE_WaitForDeviceRemoval;\r
break;\r