From c877fd05f63d2b44fdb348b0e5361b4584be2261 Mon Sep 17 00:00:00 2001 From: Samuel 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