mirror of
				https://github.com/mfulz/qmk_firmware.git
				synced 2025-11-04 07: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;
 | 
						|
}
 | 
						|
 |