Xteink-X4-crosspoint-reader/lib/hal/HalStorage.h
Xuan Son Nguyen 9cd9dc1f99 clang format
2026-02-01 23:51:12 +01:00

52 lines
2.0 KiB
C++

#pragma once
#include <SDCardManager.h>
#include <vector>
using File = FsFile;
class HalStorage {
public:
HalStorage();
bool begin();
bool ready() const;
std::vector<String> listFiles(const char* path = "/", int maxFiles = 200);
// Read the entire file at `path` into a String. Returns empty string on failure.
String readFile(const char* path);
// Low-memory helpers:
// Stream the file contents to a `Print` (e.g. `Serial`, or any `Print`-derived object).
// Returns true on success, false on failure.
bool readFileToStream(const char* path, Print& out, size_t chunkSize = 256);
// Read up to `bufferSize-1` bytes into `buffer`, null-terminating it. Returns bytes read.
size_t readFileToBuffer(const char* path, char* buffer, size_t bufferSize, size_t maxBytes = 0);
// Write a string to `path` on the SD card. Overwrites existing file.
// Returns true on success.
bool writeFile(const char* path, const String& content);
// Ensure a directory exists, creating it if necessary. Returns true on success.
bool ensureDirectoryExists(const char* path);
File open(const char* path, const oflag_t oflag = O_RDONLY);
bool mkdir(const char* path, const bool pFlag = true);
bool exists(const char* path);
bool remove(const char* path);
bool rmdir(const char* path);
bool openFileForRead(const char* moduleName, const char* path, File& file);
bool openFileForRead(const char* moduleName, const std::string& path, File& file);
bool openFileForRead(const char* moduleName, const String& path, File& file);
bool openFileForWrite(const char* moduleName, const char* path, File& file);
bool openFileForWrite(const char* moduleName, const std::string& path, File& file);
bool openFileForWrite(const char* moduleName, const String& path, File& file);
bool removeDir(const char* path);
static HalStorage& getInstance() { return instance; }
private:
static HalStorage instance;
bool initialized = false;
};
#define Storage HalStorage::getInstance()