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
|
|
|
|
}
|