X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/9b2011455585885748164ab76dfaae76fffb0ff9..d26a9ed5fd6fc60a0dfa61d04f5ae2bd7163a85d:/Projects/Incomplete/StandaloneProgrammer/Lib/PetiteFATFs/diskio.c?ds=sidebyside diff --git a/Projects/Incomplete/StandaloneProgrammer/Lib/PetiteFATFs/diskio.c b/Projects/Incomplete/StandaloneProgrammer/Lib/PetiteFATFs/diskio.c index 0084fa514..bcf1674f9 100644 --- a/Projects/Incomplete/StandaloneProgrammer/Lib/PetiteFATFs/diskio.c +++ b/Projects/Incomplete/StandaloneProgrammer/Lib/PetiteFATFs/diskio.c @@ -1,11 +1,13 @@ /*-----------------------------------------------------------------------*/ -/* Low level disk I/O module skeleton for Petit FatFs (C)ChaN, 2009 */ +/* Low level disk I/O module skeleton for Petit FatFs (C)ChaN, 2010 */ /*-----------------------------------------------------------------------*/ #include "diskio.h" #include +#include #include "../DataflashManager.h" +#include "../../DiskHost.h" /*-----------------------------------------------------------------------*/ /* Initialize Disk Drive */ @@ -13,11 +15,7 @@ DSTATUS disk_initialize (void) { - DSTATUS stat; - - stat = RES_OK; - - return stat; + return RES_OK; } @@ -33,14 +31,29 @@ DRESULT disk_readp ( WORD count /* Byte count (bit15:destination) */ ) { - DRESULT res; - + DRESULT ErrorCode = RES_OK; uint8_t BlockTemp[512]; - DataflashManager_ReadBlocks_RAM(sector, 1, BlockTemp); - memcpy(dest, &BlockTemp[sofs], count); - res = RES_OK; + if (USB_CurrentMode == USB_MODE_HOST) + { + #if defined(USB_CAN_BE_HOST) + if (USB_HostState != HOST_STATE_Configured) + ErrorCode = RES_NOTRDY; + else if (MS_Host_ReadDeviceBlocks(&DiskHost_MS_Interface, 0, sector, 1, 512, BlockTemp)) + ErrorCode = RES_ERROR; + + MS_Host_ReadDeviceBlocks(&DiskHost_MS_Interface, 0, sector, 1, 512, BlockTemp); + #endif + } + else + { + #if defined(USB_CAN_BE_DEVICE) + DataflashManager_ReadBlocks_RAM(sector, 1, BlockTemp); + #endif + } + + memcpy(dest, &BlockTemp[sofs], count); - return res; + return ErrorCode; }