From b054a7220f5d6461f9485f18419f27f14708c81c Mon Sep 17 00:00:00 2001 From: Joel Bodenmann Date: Wed, 25 Jun 2014 05:23:57 +0200 Subject: initial implementation - untested --- src/gfile/gfile.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/gfile/gfile.c') diff --git a/src/gfile/gfile.c b/src/gfile/gfile.c index e8ba37c6..7af27cbf 100644 --- a/src/gfile/gfile.c +++ b/src/gfile/gfile.c @@ -97,7 +97,7 @@ GFILE *gfileStdErr; /******************************************************** * The FAT file-system VMT ********************************************************/ -#ifndef GFILE_NEED_FATFS +#if GFILE_NEED_FATFS #include "src/gfile/inc_fatfs.c" #endif -- cgit v1.2.3 From 65602895a59f9e9c79ca65342ee3b843ba37183f Mon Sep 17 00:00:00 2001 From: Joel Bodenmann Date: Fri, 27 Jun 2014 06:10:18 +0200 Subject: FatFS complete implementation --- src/gfile/gfile.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'src/gfile/gfile.c') diff --git a/src/gfile/gfile.c b/src/gfile/gfile.c index 7af27cbf..a410a801 100644 --- a/src/gfile/gfile.c +++ b/src/gfile/gfile.c @@ -56,6 +56,8 @@ typedef struct GFILEVMT { bool_t (*setpos) (GFILE *f, long int pos); long int (*getsize) (GFILE *f); bool_t (*eof) (GFILE *f); + bool_t (*mount) (const char *drive); + bool_t (*unmount) (const char *drive); } GFILEVMT; // The chain of FileSystems @@ -475,6 +477,36 @@ bool_t gfileEOF(GFILE *f) { return f->vmt->eof(f); } +#if GFILE_NEED_FATFS + bool_t gfileMount(char fs, const char* drive) { + const GFILEVMT *p; + + // Find the correct VMT + for(p = FsChain; p; p = p->next) { + if (p->prefix == fs) { + if (!p->mount) + return FALSE; + return p->mount(drive); + } + } + return FALSE; + } + + bool_t gfileUnmount(char fs, const char* drive) { + const GFILEVMT *p; + + // Find the correct VMT + for(p = FsChain; p; p = p->next) { + if (p->prefix == fs) { + if (!p->mount) + return FALSE; + return p->unmount(drive); + } + } + return FALSE; + } +#endif + /******************************************************** * String VMT routines ********************************************************/ -- cgit v1.2.3 From a9f1520e02ed5425abbfb7e621f103053c2e3799 Mon Sep 17 00:00:00 2001 From: inmarket Date: Fri, 27 Jun 2014 23:04:01 +1000 Subject: Fatfs Cleanup --- src/gfile/gfile.c | 44 +++++++++++++++++++++----------------------- 1 file changed, 21 insertions(+), 23 deletions(-) (limited to 'src/gfile/gfile.c') diff --git a/src/gfile/gfile.c b/src/gfile/gfile.c index a410a801..b7ebbc97 100644 --- a/src/gfile/gfile.c +++ b/src/gfile/gfile.c @@ -477,35 +477,33 @@ bool_t gfileEOF(GFILE *f) { return f->vmt->eof(f); } -#if GFILE_NEED_FATFS - bool_t gfileMount(char fs, const char* drive) { - const GFILEVMT *p; - - // Find the correct VMT - for(p = FsChain; p; p = p->next) { - if (p->prefix == fs) { - if (!p->mount) - return FALSE; - return p->mount(drive); - } +bool_t gfileMount(char fs, const char* drive) { + const GFILEVMT *p; + + // Find the correct VMT + for(p = FsChain; p; p = p->next) { + if (p->prefix == fs) { + if (!p->mount) + return FALSE; + return p->mount(drive); } - return FALSE; } + return FALSE; +} - bool_t gfileUnmount(char fs, const char* drive) { - const GFILEVMT *p; +bool_t gfileUnmount(char fs, const char* drive) { + const GFILEVMT *p; - // Find the correct VMT - for(p = FsChain; p; p = p->next) { - if (p->prefix == fs) { - if (!p->mount) - return FALSE; - return p->unmount(drive); - } + // Find the correct VMT + for(p = FsChain; p; p = p->next) { + if (p->prefix == fs) { + if (!p->mount) + return FALSE; + return p->unmount(drive); } - return FALSE; } -#endif + return FALSE; +} /******************************************************** * String VMT routines -- cgit v1.2.3 From 31d85d16e774883b136c89b479b0a0636a97cb95 Mon Sep 17 00:00:00 2001 From: Joel Bodenmann Date: Sat, 28 Jun 2014 06:33:59 +0200 Subject: fatfs update --- src/gfile/gfile.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src/gfile/gfile.c') diff --git a/src/gfile/gfile.c b/src/gfile/gfile.c index b7ebbc97..ba1b2dba 100644 --- a/src/gfile/gfile.c +++ b/src/gfile/gfile.c @@ -535,6 +535,7 @@ bool_t gfileUnmount(char fs, const char* drive) { 0, 0, 0, 0, 0, 0, StringRead, StringWrite, 0, 0, 0, + 0, 0 }; #endif -- cgit v1.2.3 From 5c13e08e76ae1d75240e1e8e46d1e9c3a8ba50cd Mon Sep 17 00:00:00 2001 From: Joel Bodenmann Date: Sun, 29 Jun 2014 16:15:46 +0200 Subject: added gfileSync() and autosync feature --- src/gfile/gfile.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/gfile/gfile.c') diff --git a/src/gfile/gfile.c b/src/gfile/gfile.c index ba1b2dba..6aadda09 100644 --- a/src/gfile/gfile.c +++ b/src/gfile/gfile.c @@ -58,6 +58,7 @@ typedef struct GFILEVMT { bool_t (*eof) (GFILE *f); bool_t (*mount) (const char *drive); bool_t (*unmount) (const char *drive); + bool_t (*sync) (GFILE *f); } GFILEVMT; // The chain of FileSystems @@ -505,6 +506,12 @@ bool_t gfileUnmount(char fs, const char* drive) { return FALSE; } +bool_t gfileSync(GFILE *f) { + if (!f->vmt->sync) + return FALSE; + return f->vmt->sync(f); +} + /******************************************************** * String VMT routines ********************************************************/ -- cgit v1.2.3