Files
lighthub/lighthub/flashstream.h
2021-10-05 22:46:57 +03:00

89 lines
2.1 KiB
C++

#pragma once
//#ifndef _FLASHSTREAM_H_
//#define _FLASHSTREAM_H_
#include <Stream.h>
#include <Arduino.h>
#include "seekablestream.h"
//#include "config.h"
#if defined(FS_STORAGE)
#include <FS.h>
#include <SPIFFS.h>
#endif
#define FN_CONFIG_JSON 1
#define FN_CONFIG_BIN 2
#if defined(FS_STORAGE)
class flashStream : public seekableStream
{
private:
String filename;
char openedMode;
File fs;
public:
flashStream():seekableStream(65535)
{
openedMode='\0';
filename = "";
};
virtual int open(String _filename, char mode) override;
virtual int available() override;
virtual int read();
virtual int peek();
virtual unsigned int seek (unsigned int _pos = 0) override;
virtual void close() override;
virtual void flush() override;
virtual size_t write(uint8_t ch);
using Print::write;
virtual ~flashStream ();
};
#else
#define MAX_STREAM_SIZE 4096
class flashStream : public seekableStream
{
protected:
unsigned int pos;
unsigned int startPos;
public:
flashStream():seekableStream(MAX_STREAM_SIZE){};
void setSize(unsigned int _size);
int open(short fileNum, char mode='\0') ;
virtual int open(String _filename, char mode='\0') override;
/*
virtual int open(unsigned int _startPos=0, unsigned int _size=4096 char mode='\0')
{
pos = 0;
startPos = _startPos;
streamSize = _size;
return 1;
};
*/
virtual unsigned int seek(unsigned int _pos = 0);
virtual int available() override;
virtual int read() ;
virtual int peek() ;
virtual void flush();
virtual size_t write(uint8_t ch) ;
#if defined(__SAM3X8E__)
virtual size_t write(const uint8_t *buffer, size_t size) override;
#else
using Print::write;//(const uint8_t *buffer, size_t size);
#endif
#if defined(ESP8266) || defined(ESP32)
virtual void putEOF() override ;
#endif
virtual void close() override;
};
#endif
//#endif