50 lines
1.1 KiB
Go
50 lines
1.1 KiB
Go
package standby
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"game-driver/config/wait"
|
|
"game-driver/internal/schema"
|
|
"game-driver/pkg/pjlink"
|
|
"go.uber.org/zap"
|
|
"time"
|
|
)
|
|
|
|
func PJLink(_ schema.WaitItemModel) func(c context.Context) error {
|
|
return func(c context.Context) error {
|
|
cfg := (wait.C).(wait.PJLink)
|
|
pjc := pjlink.NewClient(cfg.Ip, cfg.Port, cfg.Password, cfg.Id)
|
|
|
|
zap.S().Infoln("打开待机投影仪")
|
|
resp, err := pjc.PowerOnSync()
|
|
if err != nil {
|
|
return fmt.Errorf("打开投影仪异常: %w", err)
|
|
}
|
|
zap.S().Infoln("打开投影仪结果:", resp)
|
|
|
|
run := true
|
|
for run {
|
|
select {
|
|
case <-c.Done():
|
|
zap.S().Infoln("关闭待机投影仪")
|
|
resp, err = pjc.PowerOffSync()
|
|
if err != nil {
|
|
return fmt.Errorf("关闭投影仪异常: %w", err)
|
|
}
|
|
zap.S().Infoln("关闭投影仪结果:", resp)
|
|
run = false
|
|
break
|
|
case <-time.After(time.Minute * 30):
|
|
zap.S().Infoln("轮询待机投影仪")
|
|
resp, err = pjc.PowerOnSync()
|
|
if err != nil {
|
|
return fmt.Errorf("轮询投影仪异常: %w", err)
|
|
}
|
|
zap.S().Infoln("轮询投影仪结果:", resp)
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|
|
}
|