66 lines
1.9 KiB
Go
66 lines
1.9 KiB
Go
package axle_device
|
|
|
|
import (
|
|
"joylink.club/bj-rtsts-server/config"
|
|
"joylink.club/bj-rtsts-server/third_party/message"
|
|
"log/slog"
|
|
)
|
|
|
|
//联锁集中站计轴与联锁通信管理
|
|
|
|
type AxleMessageManager interface {
|
|
GetLineAllRsspAxleCfgs() []config.RsspAxleConfig
|
|
//HandleSectionCmdMsg 计轴设备接收到联锁发送来的控制命令
|
|
HandleSectionCmdMsg(city string, lineId string, centralizedStation string, msg *message.SectionCmdMsgPack)
|
|
//CollectSectionStatus 收集仿真中计轴区段状态
|
|
CollectSectionStatus(city string, lineId string, centralizedStation string) ([]*message.SectionStatusMsg, error)
|
|
}
|
|
|
|
var allRsspAxleServices []RsspAxle
|
|
|
|
func StartLineAllRsspAxleServices(ram AxleMessageManager) {
|
|
allRsspAxleServices = nil
|
|
cfgs := ram.GetLineAllRsspAxleCfgs()
|
|
//cfgs = getTestConfig() //测试用
|
|
for _, cfg := range cfgs {
|
|
if cfg.Open {
|
|
as := InitRsspAxle(&cfg)
|
|
allRsspAxleServices = append(allRsspAxleServices, as)
|
|
as.Start(ram)
|
|
slog.Debug("启动计轴设备", "city", cfg.City, "lineId", cfg.LineId, "CentralizedStation", cfg.CentralizedStation)
|
|
}
|
|
}
|
|
}
|
|
func StopLineAllRsspAxleServices() {
|
|
for _, as := range allRsspAxleServices {
|
|
as.Stop()
|
|
}
|
|
}
|
|
|
|
// 测试用
|
|
func getTestConfig() []config.RsspAxleConfig {
|
|
cfg := &config.RsspAxleConfig{}
|
|
cfg.Open = true
|
|
cfg.City = "北京"
|
|
cfg.LineId = "12"
|
|
cfg.CentralizedStation = "酒仙桥"
|
|
cfg.RsspCfg.SrcAddr = 0x02
|
|
cfg.RsspCfg.DstAddr = 0x01
|
|
cfg.RsspCfg.DataVer1 = 0x0011
|
|
cfg.RsspCfg.DataVer2 = 0x0012
|
|
cfg.RsspCfg.SID1 = 0x10000000
|
|
cfg.RsspCfg.SID2 = 0x00000001
|
|
cfg.RsspCfg.SINIT1 = 0x01
|
|
cfg.RsspCfg.SINIT2 = 0x02
|
|
cfg.RsspCfg.SendingPeriod = 500
|
|
cfg.RsspCfg.SsrRsspTimeout = 3
|
|
cfg.RsspCfg.Mtv = 3
|
|
cfg.RsspCfg.DeviceA = false
|
|
cfg.RsspCfg.PicType = message.PIC_MASTER
|
|
cfg.RsspCfg.RemoteIp = "192.168.3.5"
|
|
cfg.RsspCfg.RemoteUdpPort = 7777
|
|
cfg.RsspCfg.LocalUdpPort = 6666
|
|
//
|
|
return []config.RsspAxleConfig{*cfg}
|
|
}
|