mirror of
https://github.com/esp8266/Arduino.git
synced 2025-04-21 10:26:06 +03:00
SD: Implement readBytes (#4931)
This speeds up the ESP8266WebServer::streamFile more than 3 times. Tested on streaming the 800+ Kb file from SD (FAT32), average time without a fix was 9000 ms, with the fix is 2600 ms (maximal possible SPI speed used), which is as fast as streaming the same file from internal SPIFFS. Hardware: WeMos D1 mini.
This commit is contained in:
parent
9c46a81fb6
commit
9bc8ea1b58
@ -95,6 +95,11 @@ int File::read(void *buf, uint16_t nbyte) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t File::readBytes(char *buffer, size_t length) {
|
||||||
|
int result = read(buffer, (uint16_t)length);
|
||||||
|
return result < 0 ? 0 : (size_t)result;
|
||||||
|
}
|
||||||
|
|
||||||
int File::available() {
|
int File::available() {
|
||||||
if (! _file) return 0;
|
if (! _file) return 0;
|
||||||
|
|
||||||
|
@ -34,6 +34,7 @@ public:
|
|||||||
virtual size_t write(uint8_t);
|
virtual size_t write(uint8_t);
|
||||||
virtual size_t write(const uint8_t *buf, size_t size);
|
virtual size_t write(const uint8_t *buf, size_t size);
|
||||||
virtual int read();
|
virtual int read();
|
||||||
|
virtual size_t readBytes(char *buffer, size_t length);
|
||||||
virtual int peek();
|
virtual int peek();
|
||||||
virtual int available();
|
virtual int available();
|
||||||
virtual void flush();
|
virtual void flush();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user