34 lines
686 B
Go
34 lines
686 B
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"time"
|
|
)
|
|
|
|
func updateKeepOpenDoor(newKeepOpenTime time.Time) {
|
|
// is there one active?
|
|
if keepDoorOpen.timer != nil {
|
|
keepDoorOpen.timer.Stop()
|
|
keepDoorOpen = KeepDoorOpen{}
|
|
}
|
|
|
|
if newKeepOpenTime.After(time.Now()) {
|
|
log.Printf("Keeping door open until %v", newKeepOpenTime)
|
|
OpenDoor(wiegand)
|
|
timer := time.AfterFunc(time.Until(newKeepOpenTime), handleKeepDoorOpenCloseCleanup)
|
|
keepDoorOpen = KeepDoorOpen{
|
|
timer: timer,
|
|
until: newKeepOpenTime,
|
|
}
|
|
} else {
|
|
CloseDoor(wiegand)
|
|
}
|
|
}
|
|
|
|
func handleKeepDoorOpenCloseCleanup() {
|
|
fmt.Println("Keep door open time is reached!")
|
|
CloseDoor(wiegand)
|
|
keepDoorOpen = KeepDoorOpen{}
|
|
}
|