From 1479e8a2a1fea96b0cdc7b9713962b52caf1a127 Mon Sep 17 00:00:00 2001 From: Sandeep Mistry Date: Thu, 13 Apr 2017 11:36:00 -0400 Subject: [PATCH] Add Stream support to SerialFlashFile --- SerialFlash.h | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/SerialFlash.h b/SerialFlash.h index 3c0a5ae..7a134f8 100644 --- a/SerialFlash.h +++ b/SerialFlash.h @@ -73,7 +73,7 @@ class SerialFlashChip extern SerialFlashChip SerialFlash; -class SerialFlashFile +class SerialFlashFile : public Stream { public: SerialFlashFile() : address(0) { @@ -82,6 +82,17 @@ class SerialFlashFile if (address > 0) return true; return false; } + virtual int read() { + byte b; + if (read(&b, sizeof(b)) == 0) return -1; + return b; + } + virtual int peek() { + byte b; + if (offset >= length) return -1; + SerialFlash.read(address + offset, &b, sizeof(b)); + return b; + } uint32_t read(void *buf, uint32_t rdlen) { if (offset + rdlen > length) { if (offset >= length) return 0; @@ -91,6 +102,12 @@ class SerialFlashFile offset += rdlen; return rdlen; } + virtual size_t write(uint8_t b) { + return write(&b, sizeof(b)); + } + virtual size_t write(const uint8_t *buffer, size_t size) { + return write((const void*)buffer, size); + } uint32_t write(const void *buf, uint32_t wrlen) { if (offset + wrlen > length) { if (offset >= length) return 0; @@ -109,12 +126,12 @@ class SerialFlashFile uint32_t size() { return length; } - uint32_t available() { + virtual int available() { if (offset >= length) return 0; return length - offset; } void erase(); - void flush() { + virtual void flush() { } void close() { }