rts-sim-module/umi/model_umi.go

81 lines
1.7 KiB
Go
Raw Normal View History

2023-08-22 11:00:14 +08:00
package umi
2023-08-23 15:13:06 +08:00
import "joylink.club/rtsssimulation/components/cstate"
2023-08-22 11:00:14 +08:00
// 用户设备模型与仿真底层设备交互定义
2023-08-23 09:54:41 +08:00
// 端口定义,如轨道、区段、道岔的端口
type PortEnum = int8
// 具体端口枚举
const (
A PortEnum = iota
B
C
)
2023-08-22 11:00:14 +08:00
// 仿真底层设备模型定义
// 用户所有设备模型定义须实现该接口
type IDeviceModel interface {
GetId() string
IsSame(other IDeviceModel) bool
GetType() cstate.DeviceType
}
2023-08-23 09:54:41 +08:00
// 仿真底层道岔模型
// 用户所有轨道模型定义须实现该接口
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
}
2023-08-22 11:00:14 +08:00
// 仿真底层道岔模型
// 用户所有道岔模型定义须实现该接口
type ISwitchModel interface {
//道岔转动从0-100耗时单位ms
TurningTime() int64
2023-08-23 09:54:41 +08:00
//道岔A端口连接的轨道
PortALink() ILinkRef
//道岔B端口连接的轨道
PortBLink() ILinkRef
//道岔C端口连接的轨道
PortCLink() ILinkRef
}
// 道岔引用
type ISwitchRef interface {
//被引用的道岔模型
SwitchModel() ISwitchModel
//被引用的道岔的端口
SwitchPort() PortEnum
2023-08-22 11:00:14 +08:00
}
// 仿真底层屏蔽门模型
// 用户所有屏蔽门模型定义须实现该接口
type IPsdModel interface {
//屏蔽门移动从0-100耗时单位ms
MovingTime() int64
2023-08-22 14:37:30 +08:00
//屏蔽门的所有单元门
AllDeviceCells() []IDeviceModel
2023-08-22 11:00:14 +08:00
}