Files
immich-frame/src/settings.h

89 lines
2.2 KiB
C
Raw Normal View History

#pragma once
#include <Arduino.h>
#include "config.h"
enum class CycleMode : uint8_t {
Random = 0,
Chronological = 1,
ReverseChronological = 2,
FavoritesWeighted = 3,
WeightedChronological = 4,
WeightedReverseChronological = 5
};
enum class ImageQuality : uint8_t {
Preview = 0,
Original = 1
};
enum class MetaPosition : uint8_t {
// Captioned mode (full-width bar)
CaptionBottom = 0,
CaptionTop = 1,
// Overlay mode (corner badge)
OverlayTopLeft = 2,
OverlayTopRight = 3,
OverlayBottomLeft = 4,
OverlayBottomRight = 5
};
// Metadata flags bitmask
constexpr uint8_t META_DATE = 0x01;
constexpr uint8_t META_TIME = 0x20;
constexpr uint8_t META_LOCATION = 0x02;
constexpr uint8_t META_PEOPLE = 0x04;
constexpr uint8_t META_ALBUM = 0x08;
constexpr uint8_t META_CAMERA = 0x10;
struct Settings {
// WiFi
String wifi_ssid;
String wifi_pass;
// Immich
String immich_url;
String immich_key;
// Slideshow
uint8_t interval_min;
CycleMode cycle_mode;
ImageQuality img_quality;
// Display
uint8_t meta_flags;
MetaPosition meta_pos;
String date_fmt; // strftime-style, default "%Y-%m-%d"
String time_fmt; // strftime-style, default "%H:%M:%S"
// Image pipeline
uint8_t pipeline_mode; // 0=dynamic, 1=balanced, 2=none
uint8_t dither_noise; // 1=blue noise dither smoothing ON, 0=OFF
// Device
uint8_t led_brightness;
uint8_t show_battery; // 1 = show battery indicator on display
uint32_t queue_cursor;
String albums_json;
};
class SettingsManager {
public:
void begin();
Settings get();
void save(const Settings& s);
void saveField(const char* key, uint8_t value);
void saveField(const char* key, uint32_t value);
void saveField(const char* key, const char* value);
void factoryReset();
bool isProvisioned();
private:
String readString(const char* key, const char* defaultValue = "");
uint8_t readU8(const char* key, uint8_t defaultValue = 0);
uint32_t readU32(const char* key, uint32_t defaultValue = 0);
void writeString(const char* key, const String& value);
void writeU8(const char* key, uint8_t value);
void writeU32(const char* key, uint32_t value);
};