]> cloudbase.mooo.com Git - z180-stamp.git/blobdiff - fatfs/source/diskio.c
Import fatfs R0.13b
[z180-stamp.git] / fatfs / source / diskio.c
diff --git a/fatfs/source/diskio.c b/fatfs/source/diskio.c
new file mode 100644 (file)
index 0000000..25f5e53
--- /dev/null
@@ -0,0 +1,225 @@
+/*-----------------------------------------------------------------------*/\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 modules to the FatFs module with a defined API.       */\r
+/*-----------------------------------------------------------------------*/\r
+\r
+#include "diskio.h"            /* FatFs lower layer API */\r
+\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
+/* Get Drive Status                                                      */\r
+/*-----------------------------------------------------------------------*/\r
+\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 DEV_RAM :\r
+               result = RAM_disk_status();\r
+\r
+               // translate the reslut code here\r
+\r
+               return stat;\r
+\r
+       case DEV_MMC :\r
+               result = MMC_disk_status();\r
+\r
+               // translate the reslut code here\r
+\r
+               return stat;\r
+\r
+       case DEV_USB :\r
+               result = USB_disk_status();\r
+\r
+               // translate the reslut code here\r
+\r
+               return stat;\r
+       }\r
+       return STA_NOINIT;\r
+}\r
+\r
+\r
+\r
+/*-----------------------------------------------------------------------*/\r
+/* Inidialize a Drive                                                    */\r
+/*-----------------------------------------------------------------------*/\r
+\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 DEV_RAM :\r
+               result = RAM_disk_initialize();\r
+\r
+               // translate the reslut code here\r
+\r
+               return stat;\r
+\r
+       case DEV_MMC :\r
+               result = MMC_disk_initialize();\r
+\r
+               // translate the reslut code here\r
+\r
+               return stat;\r
+\r
+       case DEV_USB :\r
+               result = USB_disk_initialize();\r
+\r
+               // translate the reslut code here\r
+\r
+               return stat;\r
+       }\r
+       return STA_NOINIT;\r
+}\r
+\r
+\r
+\r
+/*-----------------------------------------------------------------------*/\r
+/* Read Sector(s)                                                        */\r
+/*-----------------------------------------------------------------------*/\r
+\r
+DRESULT disk_read (\r
+       BYTE pdrv,              /* Physical drive nmuber to identify the drive */\r
+       BYTE *buff,             /* Data buffer to store read data */\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 DEV_RAM :\r
+               // translate the arguments here\r
+\r
+               result = RAM_disk_read(buff, sector, count);\r
+\r
+               // translate the reslut code here\r
+\r
+               return res;\r
+\r
+       case DEV_MMC :\r
+               // translate the arguments here\r
+\r
+               result = MMC_disk_read(buff, sector, count);\r
+\r
+               // translate the reslut code here\r
+\r
+               return res;\r
+\r
+       case DEV_USB :\r
+               // translate the arguments here\r
+\r
+               result = USB_disk_read(buff, sector, count);\r
+\r
+               // translate the reslut code here\r
+\r
+               return res;\r
+       }\r
+\r
+       return RES_PARERR;\r
+}\r
+\r
+\r
+\r
+/*-----------------------------------------------------------------------*/\r
+/* Write Sector(s)                                                       */\r
+/*-----------------------------------------------------------------------*/\r
+\r
+DRESULT disk_write (\r
+       BYTE pdrv,                      /* Physical drive nmuber to identify the drive */\r
+       const BYTE *buff,       /* Data to be written */\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 DEV_RAM :\r
+               // translate the arguments here\r
+\r
+               result = RAM_disk_write(buff, sector, count);\r
+\r
+               // translate the reslut code here\r
+\r
+               return res;\r
+\r
+       case DEV_MMC :\r
+               // translate the arguments here\r
+\r
+               result = MMC_disk_write(buff, sector, count);\r
+\r
+               // translate the reslut code here\r
+\r
+               return res;\r
+\r
+       case DEV_USB :\r
+               // translate the arguments here\r
+\r
+               result = USB_disk_write(buff, sector, count);\r
+\r
+               // translate the reslut code here\r
+\r
+               return res;\r
+       }\r
+\r
+       return RES_PARERR;\r
+}\r
+\r
+\r
+\r
+/*-----------------------------------------------------------------------*/\r
+/* Miscellaneous Functions                                               */\r
+/*-----------------------------------------------------------------------*/\r
+\r
+DRESULT disk_ioctl (\r
+       BYTE pdrv,              /* Physical drive nmuber (0..) */\r
+       BYTE cmd,               /* Control code */\r
+       void *buff              /* Buffer to send/receive control data */\r
+)\r
+{\r
+       DRESULT res;\r
+       int result;\r
+\r
+       switch (pdrv) {\r
+       case DEV_RAM :\r
+\r
+               // Process of the command for the RAM drive\r
+\r
+               return res;\r
+\r
+       case DEV_MMC :\r
+\r
+               // Process of the command for the MMC/SD card\r
+\r
+               return res;\r
+\r
+       case DEV_USB :\r
+\r
+               // Process of the command the USB drive\r
+\r
+               return res;\r
+       }\r
+\r
+       return RES_PARERR;\r
+}\r
+\r