mirror of
https://github.com/seriousm4x/UpSnap.git
synced 2026-07-23 05:53:55 -04:00
32 lines
607 B
Go
32 lines
607 B
Go
package networking
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
|
|
"github.com/pocketbase/pocketbase/models"
|
|
"github.com/seriousm4x/upsnap/logger"
|
|
)
|
|
|
|
func WakeDevice(device *models.Record) error {
|
|
logger.Info.Println("wake triggered for", device.GetString("name"))
|
|
err := SendMagicPacket(device)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
// check state every second for 2 min
|
|
start := time.Now()
|
|
for {
|
|
time.Sleep(1 * time.Second)
|
|
isOnline := PingDevice(device)
|
|
if isOnline {
|
|
return nil
|
|
}
|
|
if time.Since(start) >= 2*time.Minute {
|
|
break
|
|
}
|
|
}
|
|
return fmt.Errorf(device.GetString("name"), "not online after 2 min")
|
|
}
|