DRESULT disk_readp ( void* dest, /* Pointer to the destination object */ DWORD sector, /* Sector number (LBA) */ WORD sofs, /* Offset in the sector */ WORD count /* Byte count (bit15:destination) */ ) { DRESULT ErrorCode = RES_OK; uint8_t BlockTemp[512]; 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; #endif } else { #if defined(USB_CAN_BE_DEVICE) DataflashManager_ReadBlocks_RAM(sector, 1, BlockTemp); #endif } memcpy(dest, &BlockTemp[sofs], count); return ErrorCode; }
DRESULT disk_read ( BYTE drv, /* Physical drive number (0..) */ BYTE *buff, /* Data buffer to store read data */ DWORD sector, /* Sector address (LBA) */ BYTE count /* Number of sectors to read (1..255) */ ) { DataflashManager_ReadBlocks_RAM(sector, count, buff); return RES_OK; }
DRESULT disk_readp ( void* dest, /* Pointer to the destination object */ DWORD sector, /* Sector number (LBA) */ WORD sofs, /* Offset in the sector */ WORD count /* Byte count (bit15:destination) */ ) { DRESULT res; uint8_t BlockTemp[512]; DataflashManager_ReadBlocks_RAM(sector, 1, BlockTemp); memcpy(dest, &BlockTemp[sofs], count); res = RES_OK; return res; }