feat: button handler with press detection and combo support
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
32
src/main.cpp
32
src/main.cpp
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user