rts-sim-module/examples/test1/tmodel/switch_model.go

58 lines
1.6 KiB
Go
Raw Normal View History

2023-08-24 10:27:50 +08:00
package tmodel
import (
2023-09-21 16:23:03 +08:00
"joylink.club/rtsssimulation/repository/model/proto"
2023-09-22 10:53:51 +08:00
"joylink.club/rtsssimulation/system"
2023-08-24 10:27:50 +08:00
)
2023-09-14 15:03:16 +08:00
// 道岔电路系统中的继电器
type SwitchRelay struct {
//继电器模型
2023-09-22 10:53:51 +08:00
Relay system.IDeviceModel
2023-09-14 15:03:16 +08:00
//该继电器在该道岔电路系统中的组合类型
RelayGroup string
//该继电器在该道岔电路系统中的功能名称
RelayName string
}
2023-08-24 10:27:50 +08:00
// 道岔
type SwitchModel struct {
DeviceModel
2023-09-14 15:03:16 +08:00
//道岔电路系统中的继电器
Relays []SwitchRelay
2023-08-24 10:27:50 +08:00
}
func NewSwitchModel(id string) *SwitchModel {
2023-09-21 16:23:03 +08:00
return &SwitchModel{DeviceModel: DeviceModel{DevId: id, DevType: proto.DeviceType_DeviceType_Turnout}}
2023-08-24 10:27:50 +08:00
}
2023-09-15 10:13:25 +08:00
func (me *SwitchModel) AddRelay(relay *SwitchRelay) {
me.Relays = append(me.Relays, *relay)
}
2023-08-24 10:27:50 +08:00
2023-09-21 15:49:46 +08:00
// FindCircuitRoleById 根据继电器id获取在具体电路中的电路角色
2023-09-14 15:03:16 +08:00
// relayId-继电器id
// relayGroup-继电器组合类型
// relayName-继电器在电路中的名称
// find-true找到false未找到
func (me *SwitchModel) FindCircuitRoleById(relayId string) (relayGroup string, relayName string, find bool) {
for _, sr := range me.Relays {
2023-09-21 16:23:03 +08:00
id := sr.Relay.Id()
2023-09-14 15:03:16 +08:00
if id == relayId {
return sr.RelayGroup, sr.RelayName, true
}
}
return "", "", false
}
2023-09-21 15:49:46 +08:00
// FindRelayModelByCRole 根据继电器具体电路角色来获取继电器设备模型
2023-09-14 15:03:16 +08:00
// relayGroup-继电器组合类型
// relayName-继电器在电路中的名称
2023-09-22 10:53:51 +08:00
func (me *SwitchModel) FindRelayModelByCRole(relayGroup string, relayName string) system.IDeviceModel {
2023-09-14 15:03:16 +08:00
for _, sr := range me.Relays {
if sr.RelayGroup == relayGroup && sr.RelayName == relayName {
return sr.Relay
}
}
return nil
}