update current project state

This commit is contained in:
gqc
2026-07-03 20:55:15 +08:00
parent 6056b1fdc5
commit 13c4d03055
13 changed files with 1084 additions and 185 deletions
+9 -19
View File
@@ -8,7 +8,6 @@ import (
"time"
"FireLeave_tool/logger"
"FireLeave_tool/reporter"
)
const (
@@ -27,6 +26,7 @@ type GPIOButtonMonitor struct {
lastAlertTime time.Time
cooldownTime time.Duration
cooldownActive bool
onPress func()
}
// NewGPIOButtonMonitor 创建GPIO按钮监视器
@@ -42,6 +42,10 @@ func NewGPIOButtonMonitor(gpioPin int) *GPIOButtonMonitor {
}
}
func (m *GPIOButtonMonitor) SetOnPress(handler func()) {
m.onPress = handler
}
// InitGPIO 初始化GPIO
func (m *GPIOButtonMonitor) InitGPIO() error {
gpioPath := fmt.Sprintf("/sys/class/gpio/gpio%d", m.gpioPin)
@@ -182,28 +186,14 @@ func (m *GPIOButtonMonitor) Start(ctx context.Context) error {
if time.Since(m.lastAlertTime) >= m.cooldownTime {
// 检测到稳定的高电平,切换事件周期
if log := logger.GlobalLoggerManager.GetLogger("gpio"); log != nil {
log.Printf("GPIO %d detected stable high level after debounce, switching event cycle...", m.gpioPin)
log.Printf("GPIO %d detected stable high level after debounce, triggering fire_leave pause...", m.gpioPin)
} else if log := logger.GlobalLoggerManager.GetLogger("reporter"); log != nil {
log.Printf("GPIO %d detected stable high level after debounce, switching event cycle...", m.gpioPin)
log.Printf("GPIO %d detected stable high level after debounce, triggering fire_leave pause...", m.gpioPin)
}
// 切换事件周期
var targetCycle reporter.EventCycle
switch reporter.GetCurrentEventCycle() {
case reporter.EventCycleFireLeave:
targetCycle = reporter.EventCycleFireCheck
case reporter.EventCycleFireCheck:
targetCycle = reporter.EventCycleFireLeave
default:
targetCycle = reporter.EventCycleFireCheck
}
if err := reporter.SwitchEventCycle(targetCycle); err != nil {
if log := logger.GlobalLoggerManager.GetLogger("gpio"); log != nil {
log.Printf("Failed to switch event cycle: %v", err)
} else if log := logger.GlobalLoggerManager.GetLogger("reporter"); log != nil {
log.Printf("Failed to switch event cycle: %v", err)
}
if m.onPress != nil {
m.onPress()
}
// 更新lastAlertTime,开始冷却期