81 lines
1.7 KiB
Go
81 lines
1.7 KiB
Go
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
|
||
}
|