aboutsummaryrefslogtreecommitdiff
path: root/src/fatfs/diskio.c
diff options
context:
space:
mode:
authorJesse Talavera-Greenberg <jesse@jesse.tg>2023-10-11 11:20:05 -0400
committerGitHub <noreply@github.com>2023-10-11 17:20:05 +0200
commitd4e51f80601f57399db49f1010c45427bd2bf3c4 (patch)
tree206985e7bedfc1755941eeba26d6605d4e03fa0a /src/fatfs/diskio.c
parentb2fcff97c186cc9db263089acd4810ea7d58517d (diff)
Refactor DSi_NAND (#1844)
* Refactor diskio's contents - Change ff_disk_read_cb/write_cb into a std::function instead of a raw pointer - Add const specifiers as needed * Refactor DSi_NAND to manage the file system's mounted lifetime with RAII * Split NANDMount into NANDMount and NANDImage - NANDImage is used for information about the NAND that doesn't require decryption or filesystem access - NANDMount is used to actually access the file system - Both classes manage their respective resources (the NAND file handle and the NAND's mount) with RAII - Also split the file loading into another function that I will remove in a later PR * Make NANDMount immovable * Remove NAND-loading code that I had sectioned off into a function - Incomplete copypasta - I must have gotten distracted * Tidy up NANDImage's initialization - Don't unmount the disk image if the constructor fails (that's NANDMount's job now) - Only assign CurFile if the constructor succeeds * Add some const-correctness * Move DSi NAND initialization to the frontend - The NANDImage is now installed via a unique_ptr in DSi * Remove Platform::DSi_NANDPath - Not Config::DSiNANDPath; that can still be configured as usual - The core no longer needs to care
Diffstat (limited to 'src/fatfs/diskio.c')
-rw-r--r--src/fatfs/diskio.c153
1 files changed, 0 insertions, 153 deletions
diff --git a/src/fatfs/diskio.c b/src/fatfs/diskio.c
deleted file mode 100644
index 5b5c054..0000000
--- a/src/fatfs/diskio.c
+++ /dev/null
@@ -1,153 +0,0 @@
-/*-----------------------------------------------------------------------*/
-/* Low level disk I/O module SKELETON for FatFs (C)ChaN, 2019 */
-/*-----------------------------------------------------------------------*/
-/* 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 modules to the FatFs module with a defined API. */
-/*-----------------------------------------------------------------------*/
-
-#include "ff.h" /* Obtains integer types */
-#include "diskio.h" /* Declarations of disk functions */
-
-
-static ff_disk_read_cb ReadCb;
-static ff_disk_write_cb WriteCb;
-static LBA_t SectorCount;
-static DSTATUS Status = STA_NOINIT | STA_NODISK;
-
-
-void ff_disk_open(ff_disk_read_cb readcb, ff_disk_write_cb writecb, LBA_t seccnt)
-{
- if (!readcb) return;
-
- ReadCb = readcb;
- WriteCb = writecb;
- SectorCount = seccnt;
-
- Status &= ~STA_NODISK;
- if (!writecb) Status |= STA_PROTECT;
- else Status &= ~STA_PROTECT;
-}
-
-void ff_disk_close(void)
-{
- ReadCb = (void*)0;
- WriteCb = (void*)0;
- SectorCount = 0;
-
- Status &= ~STA_PROTECT;
- Status |= STA_NODISK;
-}
-
-
-/*-----------------------------------------------------------------------*/
-/* Get Drive Status */
-/*-----------------------------------------------------------------------*/
-
-DSTATUS disk_status (
- BYTE pdrv /* Physical drive nmuber to identify the drive */
-)
-{
- return Status;
-}
-
-
-
-/*-----------------------------------------------------------------------*/
-/* Inidialize a Drive */
-/*-----------------------------------------------------------------------*/
-
-DSTATUS disk_initialize (
- BYTE pdrv /* Physical drive nmuber to identify the drive */
-)
-{
- Status &= ~STA_NOINIT;
- return Status;
-}
-
-
-
-/*-----------------------------------------------------------------------*/
-/* Read Sector(s) */
-/*-----------------------------------------------------------------------*/
-
-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 */
-)
-{
- if (Status & (STA_NOINIT | STA_NODISK)) return RES_NOTRDY;
- if (!ReadCb) return RES_ERROR;
-
- UINT res = ReadCb(buff, sector, count);
- if (res != count) return RES_ERROR;
- return RES_OK;
-}
-
-
-
-/*-----------------------------------------------------------------------*/
-/* Write Sector(s) */
-/*-----------------------------------------------------------------------*/
-
-#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 */
-)
-{
- if (Status & (STA_NOINIT | STA_NODISK)) return RES_NOTRDY;
- if (Status & STA_PROTECT) return RES_WRPRT;
- if (!WriteCb) return RES_ERROR;
-
- UINT res = WriteCb(buff, sector, count);
- if (res != count) return RES_ERROR;
- return RES_OK;
-}
-
-#endif
-
-
-/*-----------------------------------------------------------------------*/
-/* Miscellaneous Functions */
-/*-----------------------------------------------------------------------*/
-
-DRESULT disk_ioctl (
- BYTE pdrv, /* Physical drive nmuber (0..) */
- BYTE cmd, /* Control code */
- void *buff /* Buffer to send/receive control data */
-)
-{
- switch (cmd)
- {
- case CTRL_SYNC:
- // TODO: fflush?
- return RES_OK;
-
- case GET_SECTOR_COUNT:
- *(LBA_t*)buff = SectorCount;
- return RES_OK;
-
- case GET_SECTOR_SIZE:
- *(WORD*)buff = 0x200;
- return RES_OK;
-
- case GET_BLOCK_SIZE:
- *(DWORD*)buff = 1;
- return RES_OK;
-
- case CTRL_TRIM:
- // TODO??
- return RES_OK;
- }
-
- //printf("FatFS: unknown disk_ioctl(%02X, %02X, %p)\n", pdrv, cmd, buff);
- return RES_PARERR;
-}
-