From c877fd05f63d2b44fdb348b0e5361b4584be2261 Mon Sep 17 00:00:00 2001
From: Samuel <samuel.kay@poivron-robotique.fr>
Date: Thu, 12 Jun 2025 18:39:09 +0200
Subject: [PATCH] =?UTF-8?q?utilisation=20de=20diskio.c=20pour=20r=C3=A9par?=
 =?UTF-8?q?tir=20les=20commandes=20en=20fonction=20du=20support?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .vscode/c_cpp_properties.json                |   2 +-
 .vscode/settings.json                        |   7 +-
 CMakeLists.txt                               |   8 +-
 diskio_USB.c                                 | 122 +++++++++++++++
 lib/{ => FatFs}/LICENSE.txt                  |   0
 lib/{ => FatFs}/documents/00index_e.html     |   0
 lib/{ => FatFs}/documents/css_e.css          |   0
 lib/{ => FatFs}/documents/doc/appnote.html   |   0
 lib/{ => FatFs}/documents/doc/chdir.html     |   0
 lib/{ => FatFs}/documents/doc/chdrive.html   |   0
 lib/{ => FatFs}/documents/doc/chmod.html     |   0
 lib/{ => FatFs}/documents/doc/close.html     |   0
 lib/{ => FatFs}/documents/doc/closedir.html  |   0
 lib/{ => FatFs}/documents/doc/config.html    |   0
 lib/{ => FatFs}/documents/doc/dinit.html     |   0
 lib/{ => FatFs}/documents/doc/dioctl.html    |   0
 lib/{ => FatFs}/documents/doc/dread.html     |   0
 lib/{ => FatFs}/documents/doc/dstat.html     |   0
 lib/{ => FatFs}/documents/doc/dwrite.html    |   0
 lib/{ => FatFs}/documents/doc/eof.html       |   0
 lib/{ => FatFs}/documents/doc/error.html     |   0
 lib/{ => FatFs}/documents/doc/expand.html    |   0
 lib/{ => FatFs}/documents/doc/fattime.html   |   0
 lib/{ => FatFs}/documents/doc/fdisk.html     |   0
 lib/{ => FatFs}/documents/doc/filename.html  |   0
 lib/{ => FatFs}/documents/doc/findfirst.html |   0
 lib/{ => FatFs}/documents/doc/findnext.html  |   0
 lib/{ => FatFs}/documents/doc/forward.html   |   0
 lib/{ => FatFs}/documents/doc/getcwd.html    |   0
 lib/{ => FatFs}/documents/doc/getfree.html   |   0
 lib/{ => FatFs}/documents/doc/getlabel.html  |   0
 lib/{ => FatFs}/documents/doc/gets.html      |   0
 lib/{ => FatFs}/documents/doc/lseek.html     |   0
 lib/{ => FatFs}/documents/doc/mkdir.html     |   0
 lib/{ => FatFs}/documents/doc/mkfs.html      |   0
 lib/{ => FatFs}/documents/doc/mount.html     |   0
 lib/{ => FatFs}/documents/doc/open.html      |   0
 lib/{ => FatFs}/documents/doc/opendir.html   |   0
 lib/{ => FatFs}/documents/doc/printf.html    |   0
 lib/{ => FatFs}/documents/doc/putc.html      |   0
 lib/{ => FatFs}/documents/doc/puts.html      |   0
 lib/{ => FatFs}/documents/doc/rc.html        |   0
 lib/{ => FatFs}/documents/doc/read.html      |   0
 lib/{ => FatFs}/documents/doc/readdir.html   |   0
 lib/{ => FatFs}/documents/doc/rename.html    |   0
 lib/{ => FatFs}/documents/doc/sdir.html      |   0
 lib/{ => FatFs}/documents/doc/setcp.html     |   0
 lib/{ => FatFs}/documents/doc/setlabel.html  |   0
 lib/{ => FatFs}/documents/doc/sfatfs.html    |   0
 lib/{ => FatFs}/documents/doc/sfile.html     |   0
 lib/{ => FatFs}/documents/doc/sfileinfo.html |   0
 lib/{ => FatFs}/documents/doc/size.html      |   0
 lib/{ => FatFs}/documents/doc/stat.html      |   0
 lib/{ => FatFs}/documents/doc/sync.html      |   0
 lib/{ => FatFs}/documents/doc/tell.html      |   0
 lib/{ => FatFs}/documents/doc/truncate.html  |   0
 lib/{ => FatFs}/documents/doc/unlink.html    |   0
 lib/{ => FatFs}/documents/doc/utime.html     |   0
 lib/{ => FatFs}/documents/doc/write.html     |   0
 lib/{ => FatFs}/documents/res/app1.c         |   0
 lib/{ => FatFs}/documents/res/app2.c         |   0
 lib/{ => FatFs}/documents/res/app3.c         |   0
 lib/{ => FatFs}/documents/res/app4.c         |   0
 lib/{ => FatFs}/documents/res/app5.c         |   0
 lib/{ => FatFs}/documents/res/app6.c         |   0
 lib/{ => FatFs}/documents/res/f1.png         | Bin
 lib/{ => FatFs}/documents/res/f2.png         | Bin
 lib/{ => FatFs}/documents/res/f3.png         | Bin
 lib/{ => FatFs}/documents/res/f4.png         | Bin
 lib/{ => FatFs}/documents/res/f5.png         | Bin
 lib/{ => FatFs}/documents/res/f6.png         | Bin
 lib/{ => FatFs}/documents/res/f7.png         | Bin
 lib/{ => FatFs}/documents/res/funcs.png      | Bin
 lib/{ => FatFs}/documents/res/layers.png     | Bin
 lib/{ => FatFs}/documents/res/layers1.png    | Bin
 lib/{ => FatFs}/documents/res/layers2.png    | Bin
 lib/{ => FatFs}/documents/res/layers3.png    | Bin
 lib/{ => FatFs}/documents/res/mkfatimg.zip   | Bin
 lib/{ => FatFs}/documents/res/mkfs.xlsx      | Bin
 lib/{ => FatFs}/documents/res/modules.png    | Bin
 lib/{ => FatFs}/documents/res/rwtest1.png    | Bin
 lib/{ => FatFs}/documents/res/rwtest2.png    | Bin
 lib/{ => FatFs}/documents/res/rwtest3.png    | Bin
 lib/{ => FatFs}/documents/res/uniconv.zip    | Bin
 lib/{ => FatFs}/documents/updates.html       |   0
 lib/{ => FatFs}/source/00history.txt         |   0
 lib/{ => FatFs}/source/00readme.txt          |   0
 lib/{ => FatFs}/source/diskio.c              | 153 +++++--------------
 lib/{ => FatFs}/source/diskio.h              |   6 +
 lib/{ => FatFs}/source/ff.c                  |   0
 lib/{ => FatFs}/source/ff.h                  |   5 +
 lib/{ => FatFs}/source/ffconf.h              |   0
 lib/{ => FatFs}/source/ffsystem.c            |   0
 lib/{ => FatFs}/source/ffunicode.c           |   0
 msc_app.c                                    | 117 --------------
 95 files changed, 184 insertions(+), 236 deletions(-)
 create mode 100644 diskio_USB.c
 rename lib/{ => FatFs}/LICENSE.txt (100%)
 rename lib/{ => FatFs}/documents/00index_e.html (100%)
 rename lib/{ => FatFs}/documents/css_e.css (100%)
 rename lib/{ => FatFs}/documents/doc/appnote.html (100%)
 rename lib/{ => FatFs}/documents/doc/chdir.html (100%)
 rename lib/{ => FatFs}/documents/doc/chdrive.html (100%)
 rename lib/{ => FatFs}/documents/doc/chmod.html (100%)
 rename lib/{ => FatFs}/documents/doc/close.html (100%)
 rename lib/{ => FatFs}/documents/doc/closedir.html (100%)
 rename lib/{ => FatFs}/documents/doc/config.html (100%)
 rename lib/{ => FatFs}/documents/doc/dinit.html (100%)
 rename lib/{ => FatFs}/documents/doc/dioctl.html (100%)
 rename lib/{ => FatFs}/documents/doc/dread.html (100%)
 rename lib/{ => FatFs}/documents/doc/dstat.html (100%)
 rename lib/{ => FatFs}/documents/doc/dwrite.html (100%)
 rename lib/{ => FatFs}/documents/doc/eof.html (100%)
 rename lib/{ => FatFs}/documents/doc/error.html (100%)
 rename lib/{ => FatFs}/documents/doc/expand.html (100%)
 rename lib/{ => FatFs}/documents/doc/fattime.html (100%)
 rename lib/{ => FatFs}/documents/doc/fdisk.html (100%)
 rename lib/{ => FatFs}/documents/doc/filename.html (100%)
 rename lib/{ => FatFs}/documents/doc/findfirst.html (100%)
 rename lib/{ => FatFs}/documents/doc/findnext.html (100%)
 rename lib/{ => FatFs}/documents/doc/forward.html (100%)
 rename lib/{ => FatFs}/documents/doc/getcwd.html (100%)
 rename lib/{ => FatFs}/documents/doc/getfree.html (100%)
 rename lib/{ => FatFs}/documents/doc/getlabel.html (100%)
 rename lib/{ => FatFs}/documents/doc/gets.html (100%)
 rename lib/{ => FatFs}/documents/doc/lseek.html (100%)
 rename lib/{ => FatFs}/documents/doc/mkdir.html (100%)
 rename lib/{ => FatFs}/documents/doc/mkfs.html (100%)
 rename lib/{ => FatFs}/documents/doc/mount.html (100%)
 rename lib/{ => FatFs}/documents/doc/open.html (100%)
 rename lib/{ => FatFs}/documents/doc/opendir.html (100%)
 rename lib/{ => FatFs}/documents/doc/printf.html (100%)
 rename lib/{ => FatFs}/documents/doc/putc.html (100%)
 rename lib/{ => FatFs}/documents/doc/puts.html (100%)
 rename lib/{ => FatFs}/documents/doc/rc.html (100%)
 rename lib/{ => FatFs}/documents/doc/read.html (100%)
 rename lib/{ => FatFs}/documents/doc/readdir.html (100%)
 rename lib/{ => FatFs}/documents/doc/rename.html (100%)
 rename lib/{ => FatFs}/documents/doc/sdir.html (100%)
 rename lib/{ => FatFs}/documents/doc/setcp.html (100%)
 rename lib/{ => FatFs}/documents/doc/setlabel.html (100%)
 rename lib/{ => FatFs}/documents/doc/sfatfs.html (100%)
 rename lib/{ => FatFs}/documents/doc/sfile.html (100%)
 rename lib/{ => FatFs}/documents/doc/sfileinfo.html (100%)
 rename lib/{ => FatFs}/documents/doc/size.html (100%)
 rename lib/{ => FatFs}/documents/doc/stat.html (100%)
 rename lib/{ => FatFs}/documents/doc/sync.html (100%)
 rename lib/{ => FatFs}/documents/doc/tell.html (100%)
 rename lib/{ => FatFs}/documents/doc/truncate.html (100%)
 rename lib/{ => FatFs}/documents/doc/unlink.html (100%)
 rename lib/{ => FatFs}/documents/doc/utime.html (100%)
 rename lib/{ => FatFs}/documents/doc/write.html (100%)
 rename lib/{ => FatFs}/documents/res/app1.c (100%)
 rename lib/{ => FatFs}/documents/res/app2.c (100%)
 rename lib/{ => FatFs}/documents/res/app3.c (100%)
 rename lib/{ => FatFs}/documents/res/app4.c (100%)
 rename lib/{ => FatFs}/documents/res/app5.c (100%)
 rename lib/{ => FatFs}/documents/res/app6.c (100%)
 rename lib/{ => FatFs}/documents/res/f1.png (100%)
 rename lib/{ => FatFs}/documents/res/f2.png (100%)
 rename lib/{ => FatFs}/documents/res/f3.png (100%)
 rename lib/{ => FatFs}/documents/res/f4.png (100%)
 rename lib/{ => FatFs}/documents/res/f5.png (100%)
 rename lib/{ => FatFs}/documents/res/f6.png (100%)
 rename lib/{ => FatFs}/documents/res/f7.png (100%)
 rename lib/{ => FatFs}/documents/res/funcs.png (100%)
 rename lib/{ => FatFs}/documents/res/layers.png (100%)
 rename lib/{ => FatFs}/documents/res/layers1.png (100%)
 rename lib/{ => FatFs}/documents/res/layers2.png (100%)
 rename lib/{ => FatFs}/documents/res/layers3.png (100%)
 rename lib/{ => FatFs}/documents/res/mkfatimg.zip (100%)
 rename lib/{ => FatFs}/documents/res/mkfs.xlsx (100%)
 rename lib/{ => FatFs}/documents/res/modules.png (100%)
 rename lib/{ => FatFs}/documents/res/rwtest1.png (100%)
 rename lib/{ => FatFs}/documents/res/rwtest2.png (100%)
 rename lib/{ => FatFs}/documents/res/rwtest3.png (100%)
 rename lib/{ => FatFs}/documents/res/uniconv.zip (100%)
 rename lib/{ => FatFs}/documents/updates.html (100%)
 rename lib/{ => FatFs}/source/00history.txt (100%)
 rename lib/{ => FatFs}/source/00readme.txt (100%)
 rename lib/{ => FatFs}/source/diskio.c (59%)
 rename lib/{ => FatFs}/source/diskio.h (90%)
 rename lib/{ => FatFs}/source/ff.c (100%)
 rename lib/{ => FatFs}/source/ff.h (99%)
 rename lib/{ => FatFs}/source/ffconf.h (100%)
 rename lib/{ => FatFs}/source/ffsystem.c (100%)
 rename lib/{ => FatFs}/source/ffunicode.c (100%)

diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json
index c4f03aa..890144b 100644
--- a/.vscode/c_cpp_properties.json
+++ b/.vscode/c_cpp_properties.json
@@ -6,7 +6,7 @@
             "${workspaceFolder}/build/generated/pico_base",
             "${env:PICO_SDK_PATH}/src/**/include",
             "${env:PICO_SDK_PATH}/lib/**/src",
-            "${workspaceFolder}/lib/source"
+            "${workspaceFolder}/lib/FatFs/source"
             
         ],
         "myCompilerPath": "/usr/bin/arm-none-eabi-gcc"
diff --git a/.vscode/settings.json b/.vscode/settings.json
index a173292..8b1d923 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -4,6 +4,11 @@
         "tusb.h": "c",
         "inttypes.h": "c",
         "stdlib.h": "c",
-        "cdefs.h": "c"
+        "cdefs.h": "c",
+        "tusb_fifo.h": "c",
+        "tusb_common.h": "c",
+        "diskio.h": "c",
+        "ff.h": "c",
+        "time.h": "c"
     }
 }
\ No newline at end of file
diff --git a/CMakeLists.txt b/CMakeLists.txt
index cab12eb..38698a9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -18,14 +18,16 @@ target_sources(host_cdc_msc_hid PUBLIC
         main.c
         msc_app.c
         cdc_app.c
-        lib/source/ff.c
-        lib/source/ffsystem.c
+        diskio_USB.c
+        lib/FatFs/source/ff.c
+        lib/FatFs/source/ffsystem.c
+        lib/FatFs/source/diskio.c
         )
 
 # Make sure TinyUSB can find tusb_config.h
 target_include_directories(host_cdc_msc_hid PUBLIC
         ${CMAKE_CURRENT_LIST_DIR}
-        ${CMAKE_CURRENT_LIST_DIR}/lib/source/)
+        ${CMAKE_CURRENT_LIST_DIR}/lib/FatFs/source/)
 
 # In addition to pico_stdlib required for common PicoSDK functionality, add dependency on tinyusb_host
 # for TinyUSB device support and tinyusb_board for the additional board support library used by the example
diff --git a/diskio_USB.c b/diskio_USB.c
new file mode 100644
index 0000000..30fd8eb
--- /dev/null
+++ b/diskio_USB.c
@@ -0,0 +1,122 @@
+#include "ff.h"			/* Obtains integer types */
+#include "tusb.h"
+#include "diskio.h"
+
+static volatile bool _disk_busy[CFG_TUH_DEVICE_MAX];
+
+//--------------------------------------------------------------------+
+// DiskIO
+//--------------------------------------------------------------------+
+
+static void wait_for_disk_io(BYTE pdrv)
+{
+  while(_disk_busy[pdrv])
+  {
+    tuh_task();
+  }
+}
+
+static bool disk_io_complete(uint8_t dev_addr, tuh_msc_complete_data_t const * cb_data)
+{
+  (void) dev_addr; (void) cb_data;
+  _disk_busy[dev_addr-1] = false;
+  return true;
+}
+
+DSTATUS USB_disk_status (
+	BYTE pdrv		/* Physical drive nmuber to identify the drive */
+)
+{
+  uint8_t dev_addr = pdrv + 1;
+  return tuh_msc_mounted(dev_addr) ? 0 : STA_NODISK;
+}
+
+DSTATUS USB_disk_initialize (
+	BYTE pdrv				/* Physical drive nmuber to identify the drive */
+)
+{
+  (void) pdrv;
+	return 0; // nothing to do
+}
+
+DRESULT USB_disk_read (
+	BYTE pdrv,		/* Physical drive nmuber to identify the drive */
+	BYTE *buff,		/* Data buffer to store read data */
+	LBA_t sector,	/* Start sector in LBA */
+	UINT count		/* Number of sectors to read */
+)
+{
+	uint8_t const dev_addr = pdrv + 1;
+	uint8_t const lun = 0;
+
+	_disk_busy[pdrv] = true;
+	tuh_msc_read10(dev_addr, lun, buff, sector, (uint16_t) count, disk_io_complete, 0);
+	wait_for_disk_io(pdrv);
+
+	return RES_OK;
+}
+
+#if FF_FS_READONLY == 0
+
+DRESULT USB_disk_write (
+	BYTE pdrv,			/* Physical drive nmuber to identify the drive */
+	const BYTE *buff,	/* Data to be written */
+	LBA_t sector,		/* Start sector in LBA */
+	UINT count			/* Number of sectors to write */
+)
+{
+	uint8_t const dev_addr = pdrv + 1;
+	uint8_t const lun = 0;
+
+	_disk_busy[pdrv] = true;
+	tuh_msc_write10(dev_addr, lun, buff, sector, (uint16_t) count, disk_io_complete, 0);
+	wait_for_disk_io(pdrv);
+
+	return RES_OK;
+}
+
+#endif
+
+DRESULT USB_disk_ioctl (
+	BYTE pdrv,		/* Physical drive nmuber (0..) */
+	BYTE cmd,		/* Control code */
+	void *buff		/* Buffer to send/receive control data */
+)
+{
+  uint8_t const dev_addr = pdrv + 1;
+  uint8_t const lun = 0;
+  switch ( cmd )
+  {
+    case CTRL_SYNC:
+      // nothing to do since we do blocking
+      return RES_OK;
+
+    case GET_SECTOR_COUNT:
+      *((DWORD*) buff) = (WORD) tuh_msc_get_block_count(dev_addr, lun);
+      return RES_OK;
+
+    case GET_SECTOR_SIZE:
+      *((WORD*) buff) = (WORD) tuh_msc_get_block_size(dev_addr, lun);
+      return RES_OK;
+
+    case GET_BLOCK_SIZE:
+      *((DWORD*) buff) = 1;    // erase block size in units of sector size
+      return RES_OK;
+
+    default:
+      return RES_PARERR;
+  }
+
+	return RES_OK;
+}
+
+DWORD get_fattime (void){
+  return 
+    (2025-1970) << 25 |   // Année
+    6 << 21 |             // Mois
+    7 << 16 |             // jour du mois
+    17 << 11 |            // Heures
+    29 << 5 |             // Minutes
+    30 << 0               // Secondes
+    ;
+}
\ No newline at end of file
diff --git a/lib/LICENSE.txt b/lib/FatFs/LICENSE.txt
similarity index 100%
rename from lib/LICENSE.txt
rename to lib/FatFs/LICENSE.txt
diff --git a/lib/documents/00index_e.html b/lib/FatFs/documents/00index_e.html
similarity index 100%
rename from lib/documents/00index_e.html
rename to lib/FatFs/documents/00index_e.html
diff --git a/lib/documents/css_e.css b/lib/FatFs/documents/css_e.css
similarity index 100%
rename from lib/documents/css_e.css
rename to lib/FatFs/documents/css_e.css
diff --git a/lib/documents/doc/appnote.html b/lib/FatFs/documents/doc/appnote.html
similarity index 100%
rename from lib/documents/doc/appnote.html
rename to lib/FatFs/documents/doc/appnote.html
diff --git a/lib/documents/doc/chdir.html b/lib/FatFs/documents/doc/chdir.html
similarity index 100%
rename from lib/documents/doc/chdir.html
rename to lib/FatFs/documents/doc/chdir.html
diff --git a/lib/documents/doc/chdrive.html b/lib/FatFs/documents/doc/chdrive.html
similarity index 100%
rename from lib/documents/doc/chdrive.html
rename to lib/FatFs/documents/doc/chdrive.html
diff --git a/lib/documents/doc/chmod.html b/lib/FatFs/documents/doc/chmod.html
similarity index 100%
rename from lib/documents/doc/chmod.html
rename to lib/FatFs/documents/doc/chmod.html
diff --git a/lib/documents/doc/close.html b/lib/FatFs/documents/doc/close.html
similarity index 100%
rename from lib/documents/doc/close.html
rename to lib/FatFs/documents/doc/close.html
diff --git a/lib/documents/doc/closedir.html b/lib/FatFs/documents/doc/closedir.html
similarity index 100%
rename from lib/documents/doc/closedir.html
rename to lib/FatFs/documents/doc/closedir.html
diff --git a/lib/documents/doc/config.html b/lib/FatFs/documents/doc/config.html
similarity index 100%
rename from lib/documents/doc/config.html
rename to lib/FatFs/documents/doc/config.html
diff --git a/lib/documents/doc/dinit.html b/lib/FatFs/documents/doc/dinit.html
similarity index 100%
rename from lib/documents/doc/dinit.html
rename to lib/FatFs/documents/doc/dinit.html
diff --git a/lib/documents/doc/dioctl.html b/lib/FatFs/documents/doc/dioctl.html
similarity index 100%
rename from lib/documents/doc/dioctl.html
rename to lib/FatFs/documents/doc/dioctl.html
diff --git a/lib/documents/doc/dread.html b/lib/FatFs/documents/doc/dread.html
similarity index 100%
rename from lib/documents/doc/dread.html
rename to lib/FatFs/documents/doc/dread.html
diff --git a/lib/documents/doc/dstat.html b/lib/FatFs/documents/doc/dstat.html
similarity index 100%
rename from lib/documents/doc/dstat.html
rename to lib/FatFs/documents/doc/dstat.html
diff --git a/lib/documents/doc/dwrite.html b/lib/FatFs/documents/doc/dwrite.html
similarity index 100%
rename from lib/documents/doc/dwrite.html
rename to lib/FatFs/documents/doc/dwrite.html
diff --git a/lib/documents/doc/eof.html b/lib/FatFs/documents/doc/eof.html
similarity index 100%
rename from lib/documents/doc/eof.html
rename to lib/FatFs/documents/doc/eof.html
diff --git a/lib/documents/doc/error.html b/lib/FatFs/documents/doc/error.html
similarity index 100%
rename from lib/documents/doc/error.html
rename to lib/FatFs/documents/doc/error.html
diff --git a/lib/documents/doc/expand.html b/lib/FatFs/documents/doc/expand.html
similarity index 100%
rename from lib/documents/doc/expand.html
rename to lib/FatFs/documents/doc/expand.html
diff --git a/lib/documents/doc/fattime.html b/lib/FatFs/documents/doc/fattime.html
similarity index 100%
rename from lib/documents/doc/fattime.html
rename to lib/FatFs/documents/doc/fattime.html
diff --git a/lib/documents/doc/fdisk.html b/lib/FatFs/documents/doc/fdisk.html
similarity index 100%
rename from lib/documents/doc/fdisk.html
rename to lib/FatFs/documents/doc/fdisk.html
diff --git a/lib/documents/doc/filename.html b/lib/FatFs/documents/doc/filename.html
similarity index 100%
rename from lib/documents/doc/filename.html
rename to lib/FatFs/documents/doc/filename.html
diff --git a/lib/documents/doc/findfirst.html b/lib/FatFs/documents/doc/findfirst.html
similarity index 100%
rename from lib/documents/doc/findfirst.html
rename to lib/FatFs/documents/doc/findfirst.html
diff --git a/lib/documents/doc/findnext.html b/lib/FatFs/documents/doc/findnext.html
similarity index 100%
rename from lib/documents/doc/findnext.html
rename to lib/FatFs/documents/doc/findnext.html
diff --git a/lib/documents/doc/forward.html b/lib/FatFs/documents/doc/forward.html
similarity index 100%
rename from lib/documents/doc/forward.html
rename to lib/FatFs/documents/doc/forward.html
diff --git a/lib/documents/doc/getcwd.html b/lib/FatFs/documents/doc/getcwd.html
similarity index 100%
rename from lib/documents/doc/getcwd.html
rename to lib/FatFs/documents/doc/getcwd.html
diff --git a/lib/documents/doc/getfree.html b/lib/FatFs/documents/doc/getfree.html
similarity index 100%
rename from lib/documents/doc/getfree.html
rename to lib/FatFs/documents/doc/getfree.html
diff --git a/lib/documents/doc/getlabel.html b/lib/FatFs/documents/doc/getlabel.html
similarity index 100%
rename from lib/documents/doc/getlabel.html
rename to lib/FatFs/documents/doc/getlabel.html
diff --git a/lib/documents/doc/gets.html b/lib/FatFs/documents/doc/gets.html
similarity index 100%
rename from lib/documents/doc/gets.html
rename to lib/FatFs/documents/doc/gets.html
diff --git a/lib/documents/doc/lseek.html b/lib/FatFs/documents/doc/lseek.html
similarity index 100%
rename from lib/documents/doc/lseek.html
rename to lib/FatFs/documents/doc/lseek.html
diff --git a/lib/documents/doc/mkdir.html b/lib/FatFs/documents/doc/mkdir.html
similarity index 100%
rename from lib/documents/doc/mkdir.html
rename to lib/FatFs/documents/doc/mkdir.html
diff --git a/lib/documents/doc/mkfs.html b/lib/FatFs/documents/doc/mkfs.html
similarity index 100%
rename from lib/documents/doc/mkfs.html
rename to lib/FatFs/documents/doc/mkfs.html
diff --git a/lib/documents/doc/mount.html b/lib/FatFs/documents/doc/mount.html
similarity index 100%
rename from lib/documents/doc/mount.html
rename to lib/FatFs/documents/doc/mount.html
diff --git a/lib/documents/doc/open.html b/lib/FatFs/documents/doc/open.html
similarity index 100%
rename from lib/documents/doc/open.html
rename to lib/FatFs/documents/doc/open.html
diff --git a/lib/documents/doc/opendir.html b/lib/FatFs/documents/doc/opendir.html
similarity index 100%
rename from lib/documents/doc/opendir.html
rename to lib/FatFs/documents/doc/opendir.html
diff --git a/lib/documents/doc/printf.html b/lib/FatFs/documents/doc/printf.html
similarity index 100%
rename from lib/documents/doc/printf.html
rename to lib/FatFs/documents/doc/printf.html
diff --git a/lib/documents/doc/putc.html b/lib/FatFs/documents/doc/putc.html
similarity index 100%
rename from lib/documents/doc/putc.html
rename to lib/FatFs/documents/doc/putc.html
diff --git a/lib/documents/doc/puts.html b/lib/FatFs/documents/doc/puts.html
similarity index 100%
rename from lib/documents/doc/puts.html
rename to lib/FatFs/documents/doc/puts.html
diff --git a/lib/documents/doc/rc.html b/lib/FatFs/documents/doc/rc.html
similarity index 100%
rename from lib/documents/doc/rc.html
rename to lib/FatFs/documents/doc/rc.html
diff --git a/lib/documents/doc/read.html b/lib/FatFs/documents/doc/read.html
similarity index 100%
rename from lib/documents/doc/read.html
rename to lib/FatFs/documents/doc/read.html
diff --git a/lib/documents/doc/readdir.html b/lib/FatFs/documents/doc/readdir.html
similarity index 100%
rename from lib/documents/doc/readdir.html
rename to lib/FatFs/documents/doc/readdir.html
diff --git a/lib/documents/doc/rename.html b/lib/FatFs/documents/doc/rename.html
similarity index 100%
rename from lib/documents/doc/rename.html
rename to lib/FatFs/documents/doc/rename.html
diff --git a/lib/documents/doc/sdir.html b/lib/FatFs/documents/doc/sdir.html
similarity index 100%
rename from lib/documents/doc/sdir.html
rename to lib/FatFs/documents/doc/sdir.html
diff --git a/lib/documents/doc/setcp.html b/lib/FatFs/documents/doc/setcp.html
similarity index 100%
rename from lib/documents/doc/setcp.html
rename to lib/FatFs/documents/doc/setcp.html
diff --git a/lib/documents/doc/setlabel.html b/lib/FatFs/documents/doc/setlabel.html
similarity index 100%
rename from lib/documents/doc/setlabel.html
rename to lib/FatFs/documents/doc/setlabel.html
diff --git a/lib/documents/doc/sfatfs.html b/lib/FatFs/documents/doc/sfatfs.html
similarity index 100%
rename from lib/documents/doc/sfatfs.html
rename to lib/FatFs/documents/doc/sfatfs.html
diff --git a/lib/documents/doc/sfile.html b/lib/FatFs/documents/doc/sfile.html
similarity index 100%
rename from lib/documents/doc/sfile.html
rename to lib/FatFs/documents/doc/sfile.html
diff --git a/lib/documents/doc/sfileinfo.html b/lib/FatFs/documents/doc/sfileinfo.html
similarity index 100%
rename from lib/documents/doc/sfileinfo.html
rename to lib/FatFs/documents/doc/sfileinfo.html
diff --git a/lib/documents/doc/size.html b/lib/FatFs/documents/doc/size.html
similarity index 100%
rename from lib/documents/doc/size.html
rename to lib/FatFs/documents/doc/size.html
diff --git a/lib/documents/doc/stat.html b/lib/FatFs/documents/doc/stat.html
similarity index 100%
rename from lib/documents/doc/stat.html
rename to lib/FatFs/documents/doc/stat.html
diff --git a/lib/documents/doc/sync.html b/lib/FatFs/documents/doc/sync.html
similarity index 100%
rename from lib/documents/doc/sync.html
rename to lib/FatFs/documents/doc/sync.html
diff --git a/lib/documents/doc/tell.html b/lib/FatFs/documents/doc/tell.html
similarity index 100%
rename from lib/documents/doc/tell.html
rename to lib/FatFs/documents/doc/tell.html
diff --git a/lib/documents/doc/truncate.html b/lib/FatFs/documents/doc/truncate.html
similarity index 100%
rename from lib/documents/doc/truncate.html
rename to lib/FatFs/documents/doc/truncate.html
diff --git a/lib/documents/doc/unlink.html b/lib/FatFs/documents/doc/unlink.html
similarity index 100%
rename from lib/documents/doc/unlink.html
rename to lib/FatFs/documents/doc/unlink.html
diff --git a/lib/documents/doc/utime.html b/lib/FatFs/documents/doc/utime.html
similarity index 100%
rename from lib/documents/doc/utime.html
rename to lib/FatFs/documents/doc/utime.html
diff --git a/lib/documents/doc/write.html b/lib/FatFs/documents/doc/write.html
similarity index 100%
rename from lib/documents/doc/write.html
rename to lib/FatFs/documents/doc/write.html
diff --git a/lib/documents/res/app1.c b/lib/FatFs/documents/res/app1.c
similarity index 100%
rename from lib/documents/res/app1.c
rename to lib/FatFs/documents/res/app1.c
diff --git a/lib/documents/res/app2.c b/lib/FatFs/documents/res/app2.c
similarity index 100%
rename from lib/documents/res/app2.c
rename to lib/FatFs/documents/res/app2.c
diff --git a/lib/documents/res/app3.c b/lib/FatFs/documents/res/app3.c
similarity index 100%
rename from lib/documents/res/app3.c
rename to lib/FatFs/documents/res/app3.c
diff --git a/lib/documents/res/app4.c b/lib/FatFs/documents/res/app4.c
similarity index 100%
rename from lib/documents/res/app4.c
rename to lib/FatFs/documents/res/app4.c
diff --git a/lib/documents/res/app5.c b/lib/FatFs/documents/res/app5.c
similarity index 100%
rename from lib/documents/res/app5.c
rename to lib/FatFs/documents/res/app5.c
diff --git a/lib/documents/res/app6.c b/lib/FatFs/documents/res/app6.c
similarity index 100%
rename from lib/documents/res/app6.c
rename to lib/FatFs/documents/res/app6.c
diff --git a/lib/documents/res/f1.png b/lib/FatFs/documents/res/f1.png
similarity index 100%
rename from lib/documents/res/f1.png
rename to lib/FatFs/documents/res/f1.png
diff --git a/lib/documents/res/f2.png b/lib/FatFs/documents/res/f2.png
similarity index 100%
rename from lib/documents/res/f2.png
rename to lib/FatFs/documents/res/f2.png
diff --git a/lib/documents/res/f3.png b/lib/FatFs/documents/res/f3.png
similarity index 100%
rename from lib/documents/res/f3.png
rename to lib/FatFs/documents/res/f3.png
diff --git a/lib/documents/res/f4.png b/lib/FatFs/documents/res/f4.png
similarity index 100%
rename from lib/documents/res/f4.png
rename to lib/FatFs/documents/res/f4.png
diff --git a/lib/documents/res/f5.png b/lib/FatFs/documents/res/f5.png
similarity index 100%
rename from lib/documents/res/f5.png
rename to lib/FatFs/documents/res/f5.png
diff --git a/lib/documents/res/f6.png b/lib/FatFs/documents/res/f6.png
similarity index 100%
rename from lib/documents/res/f6.png
rename to lib/FatFs/documents/res/f6.png
diff --git a/lib/documents/res/f7.png b/lib/FatFs/documents/res/f7.png
similarity index 100%
rename from lib/documents/res/f7.png
rename to lib/FatFs/documents/res/f7.png
diff --git a/lib/documents/res/funcs.png b/lib/FatFs/documents/res/funcs.png
similarity index 100%
rename from lib/documents/res/funcs.png
rename to lib/FatFs/documents/res/funcs.png
diff --git a/lib/documents/res/layers.png b/lib/FatFs/documents/res/layers.png
similarity index 100%
rename from lib/documents/res/layers.png
rename to lib/FatFs/documents/res/layers.png
diff --git a/lib/documents/res/layers1.png b/lib/FatFs/documents/res/layers1.png
similarity index 100%
rename from lib/documents/res/layers1.png
rename to lib/FatFs/documents/res/layers1.png
diff --git a/lib/documents/res/layers2.png b/lib/FatFs/documents/res/layers2.png
similarity index 100%
rename from lib/documents/res/layers2.png
rename to lib/FatFs/documents/res/layers2.png
diff --git a/lib/documents/res/layers3.png b/lib/FatFs/documents/res/layers3.png
similarity index 100%
rename from lib/documents/res/layers3.png
rename to lib/FatFs/documents/res/layers3.png
diff --git a/lib/documents/res/mkfatimg.zip b/lib/FatFs/documents/res/mkfatimg.zip
similarity index 100%
rename from lib/documents/res/mkfatimg.zip
rename to lib/FatFs/documents/res/mkfatimg.zip
diff --git a/lib/documents/res/mkfs.xlsx b/lib/FatFs/documents/res/mkfs.xlsx
similarity index 100%
rename from lib/documents/res/mkfs.xlsx
rename to lib/FatFs/documents/res/mkfs.xlsx
diff --git a/lib/documents/res/modules.png b/lib/FatFs/documents/res/modules.png
similarity index 100%
rename from lib/documents/res/modules.png
rename to lib/FatFs/documents/res/modules.png
diff --git a/lib/documents/res/rwtest1.png b/lib/FatFs/documents/res/rwtest1.png
similarity index 100%
rename from lib/documents/res/rwtest1.png
rename to lib/FatFs/documents/res/rwtest1.png
diff --git a/lib/documents/res/rwtest2.png b/lib/FatFs/documents/res/rwtest2.png
similarity index 100%
rename from lib/documents/res/rwtest2.png
rename to lib/FatFs/documents/res/rwtest2.png
diff --git a/lib/documents/res/rwtest3.png b/lib/FatFs/documents/res/rwtest3.png
similarity index 100%
rename from lib/documents/res/rwtest3.png
rename to lib/FatFs/documents/res/rwtest3.png
diff --git a/lib/documents/res/uniconv.zip b/lib/FatFs/documents/res/uniconv.zip
similarity index 100%
rename from lib/documents/res/uniconv.zip
rename to lib/FatFs/documents/res/uniconv.zip
diff --git a/lib/documents/updates.html b/lib/FatFs/documents/updates.html
similarity index 100%
rename from lib/documents/updates.html
rename to lib/FatFs/documents/updates.html
diff --git a/lib/source/00history.txt b/lib/FatFs/source/00history.txt
similarity index 100%
rename from lib/source/00history.txt
rename to lib/FatFs/source/00history.txt
diff --git a/lib/source/00readme.txt b/lib/FatFs/source/00readme.txt
similarity index 100%
rename from lib/source/00readme.txt
rename to lib/FatFs/source/00readme.txt
diff --git a/lib/source/diskio.c b/lib/FatFs/source/diskio.c
similarity index 59%
rename from lib/source/diskio.c
rename to lib/FatFs/source/diskio.c
index 179e387..e767fe6 100644
--- a/lib/source/diskio.c
+++ b/lib/FatFs/source/diskio.c
@@ -11,9 +11,7 @@
 #include "diskio.h"		/* Declarations of disk functions */
 
 /* Definitions of physical drive number for each drive */
-#define DEV_RAM		0	/* Example: Map Ramdisk to physical drive 0 */
-#define DEV_MMC		1	/* Example: Map MMC/SD card to physical drive 1 */
-#define DEV_USB		2	/* Example: Map USB MSD to physical drive 2 */
+
 
 
 /*-----------------------------------------------------------------------*/
@@ -27,28 +25,16 @@ DSTATUS disk_status (
 	DSTATUS stat;
 	int result;
 
-	switch (pdrv) {
-	case DEV_RAM :
-		result = RAM_disk_status();
-
-		// translate the reslut code here
-
-		return stat;
-
-	case DEV_MMC :
-		result = MMC_disk_status();
-
-		// translate the reslut code here
-
-		return stat;
-
-	case DEV_USB :
-		result = USB_disk_status();
-
-		// translate the reslut code here
-
-		return stat;
+	if(pdrv >= DEV_SDIO_MIN && pdrv <= DEV_SDIO_MAX){
+		
+		return 0; // OK
 	}
+
+	if(pdrv >= DEV_USB_MIN && pdrv <= DEV_USB_MAX){
+		USB_disk_status(pdrv - DEV_USB_MIN);
+		return 0; // OK
+	}
+
 	return STA_NOINIT;
 }
 
@@ -64,28 +50,14 @@ DSTATUS disk_initialize (
 {
 	DSTATUS stat;
 	int result;
+	if(pdrv >= DEV_SDIO_MIN && pdrv <= DEV_SDIO_MAX){
+		
+		return 0; // OK
+	}
 
-	switch (pdrv) {
-	case DEV_RAM :
-		result = RAM_disk_initialize();
-
-		// translate the reslut code here
-
-		return stat;
-
-	case DEV_MMC :
-		result = MMC_disk_initialize();
-
-		// translate the reslut code here
-
-		return stat;
-
-	case DEV_USB :
-		result = USB_disk_initialize();
-
-		// translate the reslut code here
-
-		return stat;
+	if(pdrv >= DEV_USB_MIN && pdrv <= DEV_USB_MAX){
+		USB_disk_initialize(pdrv - DEV_USB_MIN);
+		return 0; // OK
 	}
 	return STA_NOINIT;
 }
@@ -106,33 +78,14 @@ DRESULT disk_read (
 	DRESULT res;
 	int result;
 
-	switch (pdrv) {
-	case DEV_RAM :
-		// translate the arguments here
+	if(pdrv >= DEV_SDIO_MIN && pdrv <= DEV_SDIO_MAX){
+		
+		return 0; // OK
+	}
 
-		result = RAM_disk_read(buff, sector, count);
-
-		// translate the reslut code here
-
-		return res;
-
-	case DEV_MMC :
-		// translate the arguments here
-
-		result = MMC_disk_read(buff, sector, count);
-
-		// translate the reslut code here
-
-		return res;
-
-	case DEV_USB :
-		// translate the arguments here
-
-		result = USB_disk_read(buff, sector, count);
-
-		// translate the reslut code here
-
-		return res;
+	if(pdrv >= DEV_USB_MIN && pdrv <= DEV_USB_MAX){
+		USB_disk_read(pdrv - DEV_USB_MIN, buff, sector, count);
+		return 0; // OK
 	}
 
 	return RES_PARERR;
@@ -156,35 +109,16 @@ DRESULT disk_write (
 	DRESULT res;
 	int result;
 
-	switch (pdrv) {
-	case DEV_RAM :
-		// translate the arguments here
-
-		result = RAM_disk_write(buff, sector, count);
-
-		// translate the reslut code here
-
-		return res;
-
-	case DEV_MMC :
-		// translate the arguments here
-
-		result = MMC_disk_write(buff, sector, count);
-
-		// translate the reslut code here
-
-		return res;
-
-	case DEV_USB :
-		// translate the arguments here
-
-		result = USB_disk_write(buff, sector, count);
-
-		// translate the reslut code here
-
-		return res;
+	if(pdrv >= DEV_SDIO_MIN && pdrv <= DEV_SDIO_MAX){
+		
+		return 0; // OK
 	}
 
+	if(pdrv >= DEV_USB_MIN && pdrv <= DEV_USB_MAX){
+		result = USB_disk_write(pdrv - DEV_USB_MIN, buff, sector, count);
+		return 0; // OK
+	}
+	
 	return RES_PARERR;
 }
 
@@ -204,24 +138,15 @@ DRESULT disk_ioctl (
 	DRESULT res;
 	int result;
 
-	switch (pdrv) {
-	case DEV_RAM :
 
-		// Process of the command for the RAM drive
+	if(pdrv >= DEV_SDIO_MIN && pdrv <= DEV_SDIO_MAX){
+		
+		return 0; // OK
+	}
 
-		return res;
-
-	case DEV_MMC :
-
-		// Process of the command for the MMC/SD card
-
-		return res;
-
-	case DEV_USB :
-
-		// Process of the command the USB drive
-
-		return res;
+	if(pdrv >= DEV_USB_MIN && pdrv <= DEV_USB_MAX){
+		USB_disk_ioctl(pdrv - DEV_USB_MIN, cmd, buff);
+		return 0; // OK
 	}
 
 	return RES_PARERR;
diff --git a/lib/source/diskio.h b/lib/FatFs/source/diskio.h
similarity index 90%
rename from lib/source/diskio.h
rename to lib/FatFs/source/diskio.h
index e4ead78..5ab2231 100644
--- a/lib/source/diskio.h
+++ b/lib/FatFs/source/diskio.h
@@ -32,6 +32,12 @@ DRESULT disk_read (BYTE pdrv, BYTE* buff, LBA_t sector, UINT count);
 DRESULT disk_write (BYTE pdrv, const BYTE* buff, LBA_t sector, UINT count);
 DRESULT disk_ioctl (BYTE pdrv, BYTE cmd, void* buff);
 
+DSTATUS USB_disk_initialize (BYTE pdrv);
+DSTATUS USB_disk_status (BYTE pdrv);
+DRESULT USB_disk_read (BYTE pdrv, BYTE* buff, LBA_t sector, UINT count);
+DRESULT USB_disk_write (BYTE pdrv, const BYTE* buff, LBA_t sector, UINT count);
+DRESULT USB_disk_ioctl (BYTE pdrv, BYTE cmd, void* buff);
+
 
 /* Disk Status Bits (DSTATUS) */
 
diff --git a/lib/source/ff.c b/lib/FatFs/source/ff.c
similarity index 100%
rename from lib/source/ff.c
rename to lib/FatFs/source/ff.c
diff --git a/lib/source/ff.h b/lib/FatFs/source/ff.h
similarity index 99%
rename from lib/source/ff.h
rename to lib/FatFs/source/ff.h
index a3eb2eb..dccc0f9 100644
--- a/lib/source/ff.h
+++ b/lib/FatFs/source/ff.h
@@ -22,6 +22,11 @@
 #ifndef FF_DEFINED
 #define FF_DEFINED	5380	/* Revision ID */
 
+#define DEV_SDIO_MIN		0
+#define DEV_SDIO_MAX		1
+#define DEV_USB_MIN			2
+#define DEV_USB_MAX			9
+
 #ifdef __cplusplus
 extern "C" {
 #endif
diff --git a/lib/source/ffconf.h b/lib/FatFs/source/ffconf.h
similarity index 100%
rename from lib/source/ffconf.h
rename to lib/FatFs/source/ffconf.h
diff --git a/lib/source/ffsystem.c b/lib/FatFs/source/ffsystem.c
similarity index 100%
rename from lib/source/ffsystem.c
rename to lib/FatFs/source/ffsystem.c
diff --git a/lib/source/ffunicode.c b/lib/FatFs/source/ffunicode.c
similarity index 100%
rename from lib/source/ffunicode.c
rename to lib/FatFs/source/ffunicode.c
diff --git a/msc_app.c b/msc_app.c
index b76efb0..9dc57f8 100644
--- a/msc_app.c
+++ b/msc_app.c
@@ -36,7 +36,6 @@ static scsi_inquiry_resp_t inquiry_resp;
 
 //------------- Elm Chan FatFS -------------//
 static FATFS fatfs[CFG_TUH_DEVICE_MAX]; // for simplicity only support 1 LUN per device
-static volatile bool _disk_busy[CFG_TUH_DEVICE_MAX];
 
 bool file_accessible = false;
 FIL fp;
@@ -161,119 +160,3 @@ void tuh_msc_umount_cb(uint8_t dev_addr)
 }
 
 
-//--------------------------------------------------------------------+
-// DiskIO
-//--------------------------------------------------------------------+
-
-static void wait_for_disk_io(BYTE pdrv)
-{
-  while(_disk_busy[pdrv])
-  {
-    tuh_task();
-  }
-}
-
-static bool disk_io_complete(uint8_t dev_addr, tuh_msc_complete_data_t const * cb_data)
-{
-  (void) dev_addr; (void) cb_data;
-  _disk_busy[dev_addr-1] = false;
-  return true;
-}
-
-DSTATUS disk_status (
-	BYTE pdrv		/* Physical drive nmuber to identify the drive */
-)
-{
-  uint8_t dev_addr = pdrv + 1;
-  return tuh_msc_mounted(dev_addr) ? 0 : STA_NODISK;
-}
-
-DSTATUS disk_initialize (
-	BYTE pdrv				/* Physical drive nmuber to identify the drive */
-)
-{
-  (void) pdrv;
-	return 0; // nothing to do
-}
-
-DRESULT disk_read (
-	BYTE pdrv,		/* Physical drive nmuber to identify the drive */
-	BYTE *buff,		/* Data buffer to store read data */
-	LBA_t sector,	/* Start sector in LBA */
-	UINT count		/* Number of sectors to read */
-)
-{
-	uint8_t const dev_addr = pdrv + 1;
-	uint8_t const lun = 0;
-
-	_disk_busy[pdrv] = true;
-	tuh_msc_read10(dev_addr, lun, buff, sector, (uint16_t) count, disk_io_complete, 0);
-	wait_for_disk_io(pdrv);
-
-	return RES_OK;
-}
-
-#if FF_FS_READONLY == 0
-
-DRESULT disk_write (
-	BYTE pdrv,			/* Physical drive nmuber to identify the drive */
-	const BYTE *buff,	/* Data to be written */
-	LBA_t sector,		/* Start sector in LBA */
-	UINT count			/* Number of sectors to write */
-)
-{
-	uint8_t const dev_addr = pdrv + 1;
-	uint8_t const lun = 0;
-
-	_disk_busy[pdrv] = true;
-	tuh_msc_write10(dev_addr, lun, buff, sector, (uint16_t) count, disk_io_complete, 0);
-	wait_for_disk_io(pdrv);
-
-	return RES_OK;
-}
-
-#endif
-
-DRESULT disk_ioctl (
-	BYTE pdrv,		/* Physical drive nmuber (0..) */
-	BYTE cmd,		/* Control code */
-	void *buff		/* Buffer to send/receive control data */
-)
-{
-  uint8_t const dev_addr = pdrv + 1;
-  uint8_t const lun = 0;
-  switch ( cmd )
-  {
-    case CTRL_SYNC:
-      // nothing to do since we do blocking
-      return RES_OK;
-
-    case GET_SECTOR_COUNT:
-      *((DWORD*) buff) = (WORD) tuh_msc_get_block_count(dev_addr, lun);
-      return RES_OK;
-
-    case GET_SECTOR_SIZE:
-      *((WORD*) buff) = (WORD) tuh_msc_get_block_size(dev_addr, lun);
-      return RES_OK;
-
-    case GET_BLOCK_SIZE:
-      *((DWORD*) buff) = 1;    // erase block size in units of sector size
-      return RES_OK;
-
-    default:
-      return RES_PARERR;
-  }
-
-	return RES_OK;
-}
-
-DWORD get_fattime (void){
-  return 
-    (2025-1970) << 25 |   // Année
-    6 << 21 |             // Mois
-    7 << 16 |             // jour du mois
-    17 << 11 |            // Heures
-    29 << 5 |             // Minutes
-    30 << 0               // Secondes
-    ;
-}
\ No newline at end of file