init with spiffs
This commit is contained in:
commit
643a69b72c
|
@ -0,0 +1,4 @@
|
|||
.pio
|
||||
.vscode
|
||||
|
||||
data/*.dat
|
|
@ -0,0 +1,4 @@
|
|||
0123456789
|
||||
-100
|
||||
-50
|
||||
300
|
|
@ -0,0 +1,2 @@
|
|||
0
|
||||
0
|
|
@ -0,0 +1,63 @@
|
|||
#include "VFileSystem.h"
|
||||
#include <FS.h>
|
||||
#include <SPIFFS.h>
|
||||
|
||||
int VFileSystem::Init()
|
||||
{
|
||||
if (!SPIFFS.begin(FORMAT_SPIFFS_IF_FAILED)) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
size_t VFileSystem::TotalSpace()
|
||||
{
|
||||
return SPIFFS.totalBytes();
|
||||
}
|
||||
|
||||
size_t VFileSystem::FreeSpace()
|
||||
{
|
||||
return SPIFFS.totalBytes() - SPIFFS.usedBytes();
|
||||
}
|
||||
|
||||
int VFileSystem::ReadFile(const char* fileName, uint8_t* result, int len)
|
||||
{
|
||||
File file = SPIFFS.open(fileName, FILE_READ);
|
||||
if (!file || file.isDirectory()) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
int filePos = 0;
|
||||
int ret = 0;
|
||||
while (file.available()) {
|
||||
result[filePos] = file.read();
|
||||
filePos++;
|
||||
if (filePos == len) {
|
||||
ret = -2;
|
||||
break;
|
||||
}
|
||||
}
|
||||
file.close();
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int VFileSystem::WriteFile(const char* fileName, const uint8_t* data, int len)
|
||||
{
|
||||
File file = SPIFFS.open(fileName, FILE_WRITE);
|
||||
if (!file) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
int ret = 0;
|
||||
for (int i = 0; i < len; i++) {
|
||||
if (file.write(data[i]) != 1) {
|
||||
ret = -1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
file.close();
|
||||
|
||||
return ret;
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
#pragma once
|
||||
|
||||
#include <Arduino.h>
|
||||
|
||||
#define FORMAT_SPIFFS_IF_FAILED false
|
||||
|
||||
class VFileSystem
|
||||
{
|
||||
public:
|
||||
int Init();
|
||||
size_t TotalSpace();
|
||||
size_t FreeSpace();
|
||||
int ReadFile(const char* fileName, uint8_t* result, int len);
|
||||
int WriteFile(const char* fileName, const uint8_t* data, int len);
|
||||
};
|
|
@ -0,0 +1,6 @@
|
|||
# Name, Type, SubType, Offset, Size, Flags
|
||||
nvs, data, nvs, 0x9000, 0x5000,
|
||||
otadata, data, ota, 0xe000, 0x2000,
|
||||
app0, app, ota_0, 0x10000, 0x3F0000,
|
||||
spiffs, data, spiffs, 0x400000,0xBF0000,
|
||||
coredump, data, coredump,0xFF0000,0x10000,
|
|
|
@ -0,0 +1,18 @@
|
|||
; PlatformIO Project Configuration File
|
||||
;
|
||||
; Build options: build flags, source filter
|
||||
; Upload options: custom upload port, speed and extra flags
|
||||
; Library options: dependencies, extra library storages
|
||||
; Advanced options: extra scripting
|
||||
;
|
||||
; Please visit documentation for the other options and examples
|
||||
; https://docs.platformio.org/page/projectconf.html
|
||||
|
||||
[env:esp32-s2-sensor-recorder]
|
||||
platform = espressif32
|
||||
board = adafruit_metro_esp32s2
|
||||
board_build.flash_mode = qio
|
||||
board_upload.flash_size = 16MB
|
||||
board_build.partitions = partitions_12M_SPIFFS.csv
|
||||
framework = arduino
|
||||
upload_port = COM8
|
|
@ -0,0 +1,46 @@
|
|||
#include <Arduino.h>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#include "VFileSystem.h"
|
||||
|
||||
VFileSystem fs;
|
||||
|
||||
uint8_t testBuf[6 * 1024];
|
||||
|
||||
void setup()
|
||||
{
|
||||
Serial1.begin(115200);
|
||||
Serial1.println("Begin...");
|
||||
|
||||
if (fs.Init()) {
|
||||
Serial1.println("FS Init Failed.");
|
||||
return;
|
||||
}
|
||||
|
||||
Serial1.printf("FreeSpace: %ld\n", fs.FreeSpace());
|
||||
|
||||
Serial1.println("Read File:");
|
||||
|
||||
fs.ReadFile("/rec-0000.dat", testBuf, 6 * 1024);
|
||||
|
||||
for (int i = 0; i < 6 * 1024; i++) {
|
||||
Serial1.printf("%#x ", testBuf[i]);
|
||||
}
|
||||
|
||||
Serial1.println();
|
||||
|
||||
Serial1.println("Write File:");
|
||||
|
||||
for (int i = 0; i < 6 * 1024; i++) {
|
||||
testBuf[i] = i % 2 ? 0x5a : 0x66;
|
||||
}
|
||||
|
||||
fs.WriteFile("/rec-0000.dat", testBuf, 6 * 1024);
|
||||
|
||||
Serial1.println("End.");
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
for i in range(1024):
|
||||
with open(f"../data/rec-{str(i).zfill(4)}.dat", "wb") as f:
|
||||
data = b""
|
||||
for j in range(6144):
|
||||
data += b"\xff"
|
||||
f.write(data)
|
Reference in New Issue