feat: button handler with press detection and combo support

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-03 10:51:29 -04:00
parent 437aab90c0
commit ac6893210c
3 changed files with 176 additions and 4 deletions

View File

@@ -4,10 +4,12 @@
#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();
@@ -19,15 +21,37 @@ void setup() {
powerManager.begin();
settingsManager.begin();
wifiManager.begin(settingsManager);
buttonHandler.begin(powerManager, settingsManager);
Serial.printf("[main] Battery: %d%%, Charging: %s\n",
powerManager.getBatteryPercent(),
powerManager.isCharging() ? "yes" : "no");
Serial.println("[main] Boot complete");
}
void loop() {
M5.update();
powerManager.updateBatteryLED();
delay(1000);
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
}