Files
immich-frame/src/main.cpp

58 lines
1.4 KiB
C++

#include <Arduino.h>
#include <M5Unified.h>
#include "config.h"
#include "settings.h"
#include "wifi_manager.h"
#include "power_manager.h"
#include "button_handler.h"
SettingsManager settingsManager;
WiFiManager wifiManager;
PowerManager powerManager;
ButtonHandler buttonHandler;
void setup() {
auto cfg = M5.config();
M5.begin(cfg);
Serial.begin(115200);
Serial.println("[main] Immich Frame booting...");
powerManager.begin();
settingsManager.begin();
wifiManager.begin(settingsManager);
buttonHandler.begin(powerManager, settingsManager);
Serial.println("[main] Boot complete");
}
void loop() {
M5.update();
powerManager.updateBatteryLED();
ButtonEvent event = buttonHandler.poll();
switch (event) {
case ButtonEvent::NextPhoto:
Serial.println("[main] → Next photo requested");
break;
case ButtonEvent::RandomPhoto:
Serial.println("[main] → Random photo requested");
break;
case ButtonEvent::PlayPause:
Serial.println("[main] → Play/Pause toggled");
break;
case ButtonEvent::DeepSleep:
case ButtonEvent::FactoryReset:
break; // Handled internally
case ButtonEvent::None:
break;
default: {
ButtonEvent unreachable = event;
(void)unreachable;
break;
}
}
delay(10); // 100Hz poll rate for responsive buttons
}