123 lines
2.5 KiB
Go
123 lines
2.5 KiB
Go
package equipment
|
|
|
|
import (
|
|
"sync"
|
|
"time"
|
|
)
|
|
|
|
const (
|
|
ConnStatusUnknown uint8 = iota
|
|
ConnStatusOnline
|
|
ConnStatusOffline
|
|
)
|
|
|
|
func NewSprayEquipment(id string) *SprayEquipment {
|
|
return &SprayEquipment{
|
|
id: id,
|
|
speed1: 0,
|
|
speed2: 0,
|
|
yv1: 0,
|
|
yv2: 0,
|
|
isRunning: false,
|
|
errCode: 0,
|
|
connStatus: ConnStatusUnknown,
|
|
connLostTime: 0,
|
|
}
|
|
}
|
|
|
|
type SprayEquipment struct {
|
|
id string // 设备ID
|
|
speed1 uint8 // 电磁阀1对应的喷雾量(百分比): 0-100
|
|
speed2 uint8 // 电磁阀2对应的喷雾量(百分比): 0-100
|
|
yv1 uint8 // 电磁阀1的状态: 0 停止, 1 启动
|
|
yv2 uint8 // 电磁阀2的状态: 0 停止, 1 启动
|
|
isRunning bool // 是否已启动
|
|
errCode uint8 // 错误代码: 0 无, 1 急停, 2 低水位报警
|
|
connStatus uint8 // 连接状态: 0 未知, 1 在线, 2 离线
|
|
connLostTime time.Duration // 连接丢失时间
|
|
connLostTimeMu sync.RWMutex
|
|
}
|
|
|
|
func (s *SprayEquipment) GetId() string {
|
|
return s.id
|
|
}
|
|
|
|
func (s *SprayEquipment) SetSpeed1(speed uint8) {
|
|
s.speed1 = speed
|
|
}
|
|
|
|
func (s *SprayEquipment) GetSpeed1() uint8 {
|
|
return s.speed1
|
|
}
|
|
|
|
func (s *SprayEquipment) SetSpeed2(speed uint8) {
|
|
s.speed2 = speed
|
|
}
|
|
|
|
func (s *SprayEquipment) GetSpeed2() uint8 {
|
|
return s.speed2
|
|
}
|
|
|
|
func (s *SprayEquipment) SetYv1(yv1 uint8) {
|
|
s.yv1 = yv1
|
|
}
|
|
|
|
func (s *SprayEquipment) GetYv1() uint8 {
|
|
return s.yv1
|
|
}
|
|
|
|
func (s *SprayEquipment) SetYv2(yv2 uint8) {
|
|
s.yv2 = yv2
|
|
}
|
|
|
|
func (s *SprayEquipment) GetYv2() uint8 {
|
|
return s.yv2
|
|
}
|
|
|
|
func (s *SprayEquipment) SetIsRunning(isRunning bool) {
|
|
s.isRunning = isRunning
|
|
}
|
|
|
|
func (s *SprayEquipment) GetIsRunning() bool {
|
|
return s.isRunning
|
|
}
|
|
|
|
func (s *SprayEquipment) SetErrCode(errCode uint8) {
|
|
s.errCode = errCode
|
|
}
|
|
|
|
func (s *SprayEquipment) GetErrCode() uint8 {
|
|
return s.errCode
|
|
}
|
|
|
|
func (s *SprayEquipment) SetConnStatus(status uint8) {
|
|
s.connStatus = status
|
|
}
|
|
|
|
func (s *SprayEquipment) GetConnStatus() uint8 {
|
|
return s.connStatus
|
|
}
|
|
|
|
func (s *SprayEquipment) GetConnLostTime() time.Duration {
|
|
s.connLostTimeMu.RLock()
|
|
defer s.connLostTimeMu.RUnlock()
|
|
|
|
return s.connLostTime
|
|
}
|
|
|
|
func (s *SprayEquipment) IncreaseConnLostTime(d time.Duration) time.Duration {
|
|
s.connLostTimeMu.Lock()
|
|
defer s.connLostTimeMu.Unlock()
|
|
|
|
s.connLostTime = s.connLostTime + d
|
|
return s.connLostTime
|
|
}
|
|
|
|
func (s *SprayEquipment) ResetConnLostTime() {
|
|
s.connLostTimeMu.Lock()
|
|
defer s.connLostTimeMu.Unlock()
|
|
|
|
s.connStatus = ConnStatusOnline
|
|
s.connLostTime = 0
|
|
}
|