From da8910cdaf3566c17077e4846bde014500115e42 Mon Sep 17 00:00:00 2001 From: Jorj Bauer Date: Fri, 7 Jan 2022 12:50:13 -0500 Subject: [PATCH] add flush method --- filemanager.h | 4 +++- nix/nix-filemanager.cpp | 5 +++++ nix/nix-filemanager.h | 1 + teensy/teensy-filemanager.cpp | 9 +++++++++ teensy/teensy-filemanager.h | 4 +++- 5 files changed, 21 insertions(+), 2 deletions(-) diff --git a/filemanager.h b/filemanager.h index ed1bd75..167f38a 100644 --- a/filemanager.h +++ b/filemanager.h @@ -141,7 +141,9 @@ class FileManager { virtual int write(int8_t fd, const void *buf, int nbyte) = 0; virtual int read(int8_t fd, void *buf, int nbyte) = 0; virtual int lseek(int8_t fd, int offset, int whence) = 0; - + + virtual void flush() = 0; + protected: volatile unsigned long fileSeekPositions[MAXFILES]; char cachedNames[MAXFILES][MAXPATH]; diff --git a/nix/nix-filemanager.cpp b/nix/nix-filemanager.cpp index a1c7e99..c0d686e 100644 --- a/nix/nix-filemanager.cpp +++ b/nix/nix-filemanager.cpp @@ -290,3 +290,8 @@ int NixFileManager::lseek(int8_t fd, int offset, int whence) exit(1); // this is an error condition we need to find and fix if it happens return -1; }; + +void NixFileManager::flush() +{ + // No files are kept open, so there's nothing to flush +} diff --git a/nix/nix-filemanager.h b/nix/nix-filemanager.h index 6300d60..e1aceb1 100644 --- a/nix/nix-filemanager.h +++ b/nix/nix-filemanager.h @@ -26,6 +26,7 @@ class NixFileManager : public FileManager { virtual int read(int8_t fd, void *buf, int nbyte); virtual int lseek(int8_t fd, int offset, int whence); + virtual void flush(); private: int8_t numCached; diff --git a/teensy/teensy-filemanager.cpp b/teensy/teensy-filemanager.cpp index cebba02..7529823 100644 --- a/teensy/teensy-filemanager.cpp +++ b/teensy/teensy-filemanager.cpp @@ -300,3 +300,12 @@ int TeensyFileManager::lseek(int8_t fd, int offset, int whence) return -1; }; +void TeensyFileManager::flush() +{ + if (cacheFd == -1) + return; + + cacheFile.close(); + cacheFd = -1; +} + diff --git a/teensy/teensy-filemanager.h b/teensy/teensy-filemanager.h index 21a7b29..c5d16d1 100644 --- a/teensy/teensy-filemanager.h +++ b/teensy/teensy-filemanager.h @@ -27,7 +27,9 @@ class TeensyFileManager : public FileManager { virtual int write(int8_t fd, const void *buf, int nbyte); virtual int read(int8_t fd, void *buf, int nbyte); virtual int lseek(int8_t fd, int offset, int whence); - + + virtual void flush(); + private: bool _prepCache(int8_t fd);