rts-sim-module/umi/model_umi.go
2023-08-23 15:13:06 +08:00

81 lines
1.7 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package umi
import "joylink.club/rtsssimulation/components/cstate"
// 用户设备模型与仿真底层设备交互定义
// 端口定义,如轨道、区段、道岔的端口
type PortEnum = int8
// 具体端口枚举
const (
A PortEnum = iota
B
C
)
// 仿真底层设备模型定义
// 用户所有设备模型定义须实现该接口
type IDeviceModel interface {
GetId() string
IsSame(other IDeviceModel) bool
GetType() cstate.DeviceType
}
// 仿真底层道岔模型
// 用户所有轨道模型定义须实现该接口
type ILinkModel interface {
//获取轨道长度单位mm
Len() int64
//轨道A端连接的道岔
PortASwitch() ISwitchRef
//轨道B端连接的道岔
PortBSwitch() ISwitchRef
}
// 轨道引用
type ILinkRef interface {
//被引用的轨道模型
LinkModel() ILinkModel
//被引用的轨道的端口
LinkPort() PortEnum
}
// 轨道偏移引用
type ILinkOffsetRef interface {
//被引用的轨道模型
LinkModel() ILinkModel
//偏移量单位mm
GetOffset() int64
}
// 仿真底层道岔模型
// 用户所有道岔模型定义须实现该接口
type ISwitchModel interface {
//道岔转动从0-100耗时单位ms
TurningTime() int64
//道岔A端口连接的轨道
PortALink() ILinkRef
//道岔B端口连接的轨道
PortBLink() ILinkRef
//道岔C端口连接的轨道
PortCLink() ILinkRef
}
// 道岔引用
type ISwitchRef interface {
//被引用的道岔模型
SwitchModel() ISwitchModel
//被引用的道岔的端口
SwitchPort() PortEnum
}
// 仿真底层屏蔽门模型
// 用户所有屏蔽门模型定义须实现该接口
type IPsdModel interface {
//屏蔽门移动从0-100耗时单位ms
MovingTime() int64
//屏蔽门的所有单元门
AllDeviceCells() []IDeviceModel
}