mirror of
				https://github.com/mfulz/qmk_firmware.git
				synced 2025-10-31 05:12:33 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			58 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*-----------------------------------------------------------------------*/
 | |
| /* Low level disk I/O module skeleton for Petit FatFs (C)ChaN, 2009      */
 | |
| /*-----------------------------------------------------------------------*/
 | |
| 
 | |
| #include "diskio.h"
 | |
| 
 | |
| #include <string.h>
 | |
| #include <LUFA/Drivers/USB/Class/MassStorage.h>
 | |
| #include "../DataflashManager.h"
 | |
| #include "../../DiskHost.h"
 | |
| 
 | |
| /*-----------------------------------------------------------------------*/
 | |
| /* Initialize Disk Drive                                                 */
 | |
| /*-----------------------------------------------------------------------*/
 | |
| 
 | |
| DSTATUS disk_initialize (void)
 | |
| {
 | |
| 	return RES_OK;
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| /*-----------------------------------------------------------------------*/
 | |
| /* Read Partial Sector                                                   */
 | |
| /*-----------------------------------------------------------------------*/
 | |
| 
 | |
| DRESULT disk_readp (
 | |
| 	BYTE* 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;
 | |
| }
 | |
| 
 | 
