diff options
Diffstat (limited to 'stm/fatfs/diskio.c')
-rw-r--r-- | stm/fatfs/diskio.c | 197 |
1 files changed, 0 insertions, 197 deletions
diff --git a/stm/fatfs/diskio.c b/stm/fatfs/diskio.c deleted file mode 100644 index fb39c95946..0000000000 --- a/stm/fatfs/diskio.c +++ /dev/null @@ -1,197 +0,0 @@ -/*-----------------------------------------------------------------------*/ -/* Low level disk I/O module skeleton for FatFs (C)ChaN, 2013 */ -/*-----------------------------------------------------------------------*/ -/* If a working storage control module is available, it should be */ -/* attached to the FatFs via a glue function rather than modifying it. */ -/* This is an example of glue functions to attach various exsisting */ -/* storage control module to the FatFs module with a defined API. */ -/*-----------------------------------------------------------------------*/ - -#include <stdint.h> -#include <stdio.h> -#include "ff.h" /* FatFs lower layer API */ -#include "diskio.h" /* FatFs lower layer API */ -#include "misc.h" -#include "storage.h" -#include "sdcard.h" - -PARTITION VolToPart[] = { - {0, 1}, // Logical drive 0 ==> Physical drive 0, 1st partition - {1, 0}, // Logical drive 1 ==> Physical drive 1 (auto detection) - /* - {0, 2}, // Logical drive 2 ==> Physical drive 0, 2nd partition - {0, 3}, // Logical drive 3 ==> Physical drive 0, 3rd partition - */ -}; - -/* Definitions of physical drive number for each media */ -#define PD_FLASH (0) -#define PD_SDCARD (1) - -/*-----------------------------------------------------------------------*/ -/* Initialize a Drive */ -/*-----------------------------------------------------------------------*/ - -DSTATUS disk_initialize ( - BYTE pdrv /* Physical drive nmuber (0..) */ -) -{ - switch (pdrv) { - case PD_FLASH: - storage_init(); - return 0; - - case PD_SDCARD: - if (!sdcard_power_on()) { - return STA_NODISK; - } - // TODO return STA_PROTECT if SD card is read only - return 0; - } - - return STA_NOINIT; -} - -/*-----------------------------------------------------------------------*/ -/* Get Disk Status */ -/*-----------------------------------------------------------------------*/ - -DSTATUS disk_status ( - BYTE pdrv /* Physical drive nmuber (0..) */ -) -{ - switch (pdrv) { - case PD_FLASH : - // flash is ready - return 0; - - case PD_SDCARD: - // TODO return STA_PROTECT if SD card is read only - return 0; - } - - return STA_NOINIT; -} - -/*-----------------------------------------------------------------------*/ -/* Read Sector(s) */ -/*-----------------------------------------------------------------------*/ - -DRESULT disk_read ( - BYTE pdrv, /* Physical drive nmuber (0..) */ - BYTE *buff, /* Data buffer to store read data */ - DWORD sector, /* Sector address (LBA) */ - UINT count /* Number of sectors to read (1..128) */ -) -{ - switch (pdrv) { - case PD_FLASH: - for (int i = 0; i < count; i++) { - if (!storage_read_block(buff + i * FLASH_BLOCK_SIZE, sector + i)) { - return RES_ERROR; - } - } - return RES_OK; - - case PD_SDCARD: - // TODO have a multi-block read function - for (int i = 0; i < count; i++) { - if (!sdcard_read_block(buff + i * SDCARD_BLOCK_SIZE, sector + i)) { - return RES_ERROR; - } - } - return RES_OK; - } - - return RES_PARERR; -} - -/*-----------------------------------------------------------------------*/ -/* Write Sector(s) */ -/*-----------------------------------------------------------------------*/ - -#if _USE_WRITE -DRESULT disk_write ( - BYTE pdrv, /* Physical drive nmuber (0..) */ - const BYTE *buff, /* Data to be written */ - DWORD sector, /* Sector address (LBA) */ - UINT count /* Number of sectors to write (1..128) */ -) -{ - switch (pdrv) { - case PD_FLASH: - for (int i = 0; i < count; i++) { - if (!storage_write_block(buff + i * FLASH_BLOCK_SIZE, sector + i)) { - return RES_ERROR; - } - } - return RES_OK; - - case PD_SDCARD: - // TODO have a multi-block write function - for (int i = 0; i < count; i++) { - if (!sdcard_write_block(buff + i * SDCARD_BLOCK_SIZE, sector + i)) { - return RES_ERROR; - } - } - return RES_OK; - } - - return RES_PARERR; -} -#endif - - -/*-----------------------------------------------------------------------*/ -/* Miscellaneous Functions */ -/*-----------------------------------------------------------------------*/ - -#if _USE_IOCTL -DRESULT disk_ioctl ( - BYTE pdrv, /* Physical drive nmuber (0..) */ - BYTE cmd, /* Control code */ - void *buff /* Buffer to send/receive control data */ -) -{ - switch (pdrv) { - case PD_FLASH: - switch (cmd) { - case CTRL_SYNC: - storage_flush(); - return RES_OK; - - case GET_BLOCK_SIZE: - *((DWORD*)buff) = 1; // high-level sector erase size in units of the small (512) block size - return RES_OK; - } - break; - - case PD_SDCARD: - switch (cmd) { - case CTRL_SYNC: - return RES_OK; - - case GET_BLOCK_SIZE: - *((DWORD*)buff) = 1; // high-level sector erase size in units of the small (512) block size - return RES_OK; - } - break; - } - - return RES_PARERR; -} -#endif - -DWORD get_fattime ( - void -) -{ - // TODO replace with call to RTC - int year = 2013; - int month = 10; - int day = 12; - int hour = 21; - int minute = 42; - int second = 13; - return ((year - 1980) << 25) | ((month) << 21) | ((day) << 16) | ((hour) << 11) | ((minute) << 5) | (second / 2); -} |