update current project state
This commit is contained in:
@@ -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,开始冷却期
|
||||
|
||||
Reference in New Issue
Block a user