/*-----------------------------------------------------------------------*/\r
-/* Low level disk I/O module skeleton for FatFs (C)ChaN, 2013 */\r
+/* Low level disk I/O module skeleton for FatFs (C)ChaN, 2016 */\r
/*-----------------------------------------------------------------------*/\r
/* If a working storage control module is available, it should be */\r
/* attached to the FatFs via a glue function rather than modifying it. */\r
/* This is an example of glue functions to attach various exsisting */\r
-/* storage control module to the FatFs module with a defined API. */\r
+/* storage control modules to the FatFs module with a defined API. */\r
/*-----------------------------------------------------------------------*/\r
\r
#include "diskio.h" /* FatFs lower layer API */\r
-#include "usbdisk.h" /* Example: USB drive control */\r
-#include "atadrive.h" /* Example: ATA drive control */\r
-#include "sdcard.h" /* Example: MMC/SDC contorl */\r
\r
-/* Definitions of physical drive number for each media */\r
-#define ATA 0\r
-#define MMC 1\r
-#define USB 2\r
+/* Definitions of physical drive number for each drive */\r
+#define DEV_RAM 0 /* Example: Map Ramdisk to physical drive 0 */\r
+#define DEV_MMC 1 /* Example: Map MMC/SD card to physical drive 1 */\r
+#define DEV_USB 2 /* Example: Map USB MSD to physical drive 2 */\r
\r
\r
/*-----------------------------------------------------------------------*/\r
-/* Inidialize a Drive */\r
+/* Get Drive Status */\r
/*-----------------------------------------------------------------------*/\r
\r
-DSTATUS disk_initialize (\r
- BYTE pdrv /* Physical drive nmuber (0..) */\r
+DSTATUS disk_status (\r
+ BYTE pdrv /* Physical drive nmuber to identify the drive */\r
)\r
{\r
DSTATUS stat;\r
int result;\r
\r
switch (pdrv) {\r
- case ATA :\r
- result = ATA_disk_initialize();\r
+ case DEV_RAM :\r
+ result = RAM_disk_status();\r
\r
// translate the reslut code here\r
\r
return stat;\r
\r
- case MMC :\r
- result = MMC_disk_initialize();\r
+ case DEV_MMC :\r
+ result = MMC_disk_status();\r
\r
// translate the reslut code here\r
\r
return stat;\r
\r
- case USB :\r
- result = USB_disk_initialize();\r
+ case DEV_USB :\r
+ result = USB_disk_status();\r
\r
// translate the reslut code here\r
\r
\r
\r
/*-----------------------------------------------------------------------*/\r
-/* Get Disk Status */\r
+/* Inidialize a Drive */\r
/*-----------------------------------------------------------------------*/\r
\r
-DSTATUS disk_status (\r
- BYTE pdrv /* Physical drive nmuber (0..) */\r
+DSTATUS disk_initialize (\r
+ BYTE pdrv /* Physical drive nmuber to identify the drive */\r
)\r
{\r
DSTATUS stat;\r
int result;\r
\r
switch (pdrv) {\r
- case ATA :\r
- result = ATA_disk_status();\r
+ case DEV_RAM :\r
+ result = RAM_disk_initialize();\r
\r
// translate the reslut code here\r
\r
return stat;\r
\r
- case MMC :\r
- result = MMC_disk_status();\r
+ case DEV_MMC :\r
+ result = MMC_disk_initialize();\r
\r
// translate the reslut code here\r
\r
return stat;\r
\r
- case USB :\r
- result = USB_disk_status();\r
+ case DEV_USB :\r
+ result = USB_disk_initialize();\r
\r
// translate the reslut code here\r
\r
/*-----------------------------------------------------------------------*/\r
\r
DRESULT disk_read (\r
- BYTE pdrv, /* Physical drive nmuber (0..) */\r
+ BYTE pdrv, /* Physical drive nmuber to identify the drive */\r
BYTE *buff, /* Data buffer to store read data */\r
- DWORD sector, /* Sector address (LBA) */\r
- UINT count /* Number of sectors to read (1..128) */\r
+ DWORD sector, /* Start sector in LBA */\r
+ UINT count /* Number of sectors to read */\r
)\r
{\r
DRESULT res;\r
int result;\r
\r
switch (pdrv) {\r
- case ATA :\r
+ case DEV_RAM :\r
// translate the arguments here\r
\r
- result = ATA_disk_read(buff, sector, count);\r
+ result = RAM_disk_read(buff, sector, count);\r
\r
// translate the reslut code here\r
\r
return res;\r
\r
- case MMC :\r
+ case DEV_MMC :\r
// translate the arguments here\r
\r
result = MMC_disk_read(buff, sector, count);\r
\r
return res;\r
\r
- case USB :\r
+ case DEV_USB :\r
// translate the arguments here\r
\r
result = USB_disk_read(buff, sector, count);\r
\r
return res;\r
}\r
+\r
return RES_PARERR;\r
}\r
\r
/* Write Sector(s) */\r
/*-----------------------------------------------------------------------*/\r
\r
-#if _USE_WRITE\r
DRESULT disk_write (\r
- BYTE pdrv, /* Physical drive nmuber (0..) */\r
+ BYTE pdrv, /* Physical drive nmuber to identify the drive */\r
const BYTE *buff, /* Data to be written */\r
- DWORD sector, /* Sector address (LBA) */\r
- UINT count /* Number of sectors to write (1..128) */\r
+ DWORD sector, /* Start sector in LBA */\r
+ UINT count /* Number of sectors to write */\r
)\r
{\r
DRESULT res;\r
int result;\r
\r
switch (pdrv) {\r
- case ATA :\r
+ case DEV_RAM :\r
// translate the arguments here\r
\r
- result = ATA_disk_write(buff, sector, count);\r
+ result = RAM_disk_write(buff, sector, count);\r
\r
// translate the reslut code here\r
\r
return res;\r
\r
- case MMC :\r
+ case DEV_MMC :\r
// translate the arguments here\r
\r
result = MMC_disk_write(buff, sector, count);\r
\r
return res;\r
\r
- case USB :\r
+ case DEV_USB :\r
// translate the arguments here\r
\r
result = USB_disk_write(buff, sector, count);\r
\r
return res;\r
}\r
+\r
return RES_PARERR;\r
}\r
-#endif\r
+\r
\r
\r
/*-----------------------------------------------------------------------*/\r
/* Miscellaneous Functions */\r
/*-----------------------------------------------------------------------*/\r
\r
-#if _USE_IOCTL\r
DRESULT disk_ioctl (\r
BYTE pdrv, /* Physical drive nmuber (0..) */\r
BYTE cmd, /* Control code */\r
int result;\r
\r
switch (pdrv) {\r
- case ATA :\r
- // pre-process here\r
+ case DEV_RAM :\r
\r
- result = ATA_disk_ioctl(cmd, buff);\r
-\r
- // post-process here\r
+ // Process of the command for the RAM drive\r
\r
return res;\r
\r
- case MMC :\r
- // pre-process here\r
-\r
- result = MMC_disk_ioctl(cmd, buff);\r
+ case DEV_MMC :\r
\r
- // post-process here\r
+ // Process of the command for the MMC/SD card\r
\r
return res;\r
\r
- case USB :\r
- // pre-process here\r
-\r
- result = USB_disk_ioctl(cmd, buff);\r
+ case DEV_USB :\r
\r
- // post-process here\r
+ // Process of the command the USB drive\r
\r
return res;\r
}\r
+\r
return RES_PARERR;\r
}\r
-#endif\r
+\r