2026-02-13 16:07:38 -05:00
|
|
|
#include "BookSettings.h"
|
|
|
|
|
|
|
|
|
|
#include <HalStorage.h>
|
2026-02-13 16:27:58 -05:00
|
|
|
#include <Logging.h>
|
2026-02-13 16:07:38 -05:00
|
|
|
#include <Serialization.h>
|
|
|
|
|
|
|
|
|
|
namespace {
|
|
|
|
|
constexpr uint8_t BOOK_SETTINGS_VERSION = 1;
|
|
|
|
|
constexpr uint8_t BOOK_SETTINGS_COUNT = 1; // Number of persisted fields
|
|
|
|
|
} // namespace
|
|
|
|
|
|
|
|
|
|
std::string BookSettings::filePath(const std::string& cachePath) { return cachePath + "/book_settings.bin"; }
|
|
|
|
|
|
|
|
|
|
BookSettings BookSettings::load(const std::string& cachePath) {
|
|
|
|
|
BookSettings settings;
|
|
|
|
|
FsFile f;
|
|
|
|
|
if (!Storage.openFileForRead("BST", filePath(cachePath), f)) {
|
|
|
|
|
return settings;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
uint8_t version;
|
|
|
|
|
serialization::readPod(f, version);
|
|
|
|
|
if (version != BOOK_SETTINGS_VERSION) {
|
|
|
|
|
f.close();
|
|
|
|
|
return settings;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
uint8_t fieldCount;
|
|
|
|
|
serialization::readPod(f, fieldCount);
|
|
|
|
|
|
|
|
|
|
// Read fields that exist (supports older files with fewer fields)
|
|
|
|
|
uint8_t fieldsRead = 0;
|
|
|
|
|
do {
|
|
|
|
|
serialization::readPod(f, settings.letterboxFillOverride);
|
|
|
|
|
if (++fieldsRead >= fieldCount) break;
|
|
|
|
|
// New fields added here for forward compatibility
|
|
|
|
|
} while (false);
|
|
|
|
|
|
|
|
|
|
f.close();
|
2026-02-13 16:27:58 -05:00
|
|
|
LOG_DBG("BST", "Loaded book settings from %s (letterboxFill=%d)", filePath(cachePath).c_str(),
|
|
|
|
|
settings.letterboxFillOverride);
|
2026-02-13 16:07:38 -05:00
|
|
|
return settings;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool BookSettings::save(const std::string& cachePath, const BookSettings& settings) {
|
|
|
|
|
FsFile f;
|
|
|
|
|
if (!Storage.openFileForWrite("BST", filePath(cachePath), f)) {
|
2026-02-13 16:27:58 -05:00
|
|
|
LOG_ERR("BST", "Could not save book settings!");
|
2026-02-13 16:07:38 -05:00
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
serialization::writePod(f, BOOK_SETTINGS_VERSION);
|
|
|
|
|
serialization::writePod(f, BOOK_SETTINGS_COUNT);
|
|
|
|
|
serialization::writePod(f, settings.letterboxFillOverride);
|
|
|
|
|
// New fields added here
|
|
|
|
|
f.close();
|
|
|
|
|
|
2026-02-13 16:27:58 -05:00
|
|
|
LOG_DBG("BST", "Saved book settings to %s", filePath(cachePath).c_str());
|
2026-02-13 16:07:38 -05:00
|
|
|
return true;
|
|
|
|
|
}
|