#pragma once #include typedef enum { EVT_BUTTON, // GPIO edge: gpio, level, ts_us EVT_HOLD_EXPIRE, // per-button hold timer fired: btn_idx EVT_COMBO_SLEEP, // all-4 held 5s EVT_COMBO_SETTINGS, // fwd+back held 1s EVT_BATT_TICK, // 500ms periodic EVT_PEER_TICK, // 1s periodic EVT_AUTOSAVE, // one-shot 30s: flush NVS EVT_LIFE_DELTA_EXP, // one-shot: clear life delta overlay EVT_RESET_CMD_EXP, // one-shot: end reset_cmd broadcast EVT_IDLE_SLEEP, // one-shot: idle timeout EVT_LED_BREATHE, // 10ms periodic: breathing animation } evt_type_t; typedef struct { evt_type_t type; int gpio; // EVT_BUTTON only int level; // EVT_BUTTON only: 0=pressed 1=released int64_t ts_us; // EVT_BUTTON only int btn_idx; // EVT_HOLD_EXPIRE only: 0=fwd 1=left 2=right 3=back } app_event_t; #define BTN_IDX_FWD 0 #define BTN_IDX_LEFT 1 #define BTN_IDX_RIGHT 2 #define BTN_IDX_BACK 3