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