The incomplete StandaloneProgrammer project now uses Host and Device Mass storage...
[pub/USBasp.git] / Projects / Incomplete / StandaloneProgrammer / Lib / PetiteFATFs / diskio.c
index 0084fa5..013467c 100644 (file)
@@ -5,7 +5,9 @@
 #include "diskio.h"\r
 \r
 #include <string.h>\r
+#include <LUFA/Drivers/USB/Class/MassStorage.h>\r
 #include "../DataflashManager.h"\r
+#include "../../DiskHost.h"\r
 \r
 /*-----------------------------------------------------------------------*/\r
 /* Initialize Disk Drive                                                 */\r
@@ -33,14 +35,29 @@ DRESULT disk_readp (
        WORD count                      /* Byte count (bit15:destination) */\r
 )\r
 {\r
-       DRESULT res;\r
-\r
+       DRESULT ErrorCode = RES_OK;\r
        uint8_t BlockTemp[512];\r
-       DataflashManager_ReadBlocks_RAM(sector, 1, BlockTemp);\r
-       memcpy(dest, &BlockTemp[sofs], count);\r
 \r
-       res = RES_OK;\r
+       if (USB_CurrentMode == USB_MODE_HOST)\r
+       {\r
+               #if defined(USB_CAN_BE_HOST)\r
+               if (USB_HostState != HOST_STATE_Configured)\r
+                 ErrorCode = RES_NOTRDY;\r
+               else if (MS_Host_ReadDeviceBlocks(&DiskHost_MS_Interface, 0, sector, 1, 512, BlockTemp))\r
+                 ErrorCode = RES_ERROR;\r
+\r
+               printf("BLOCK READ #%lu Ret %d\r\n", sector, MS_Host_ReadDeviceBlocks(&DiskHost_MS_Interface, 0, sector, 1, 512, BlockTemp));\r
+               #endif\r
+       }\r
+       else\r
+       {\r
+               #if defined(USB_CAN_BE_DEVICE)\r
+               DataflashManager_ReadBlocks_RAM(sector, 1, BlockTemp);\r
+               #endif\r
+       }\r
+\r
+       memcpy(dest, &BlockTemp[sofs], count);\r
 \r
-       return res;\r
+       return ErrorCode;\r
 }\r
 \r