14 Commits

Author SHA1 Message Date
lh b7967155d5 数据提交 2026-08-31 16:01:09 +08:00
lh 6271ef3310 仲裁组包增加CPUID 2026-08-29 17:28:34 +08:00
lh 2b9c6c8c83 1.4线模式和仲裁模式的通用接口封装
2.离线系拉低主地/备地为离线地
3.修复仲裁IP配置错误
2026-08-27 14:46:23 +08:00
lh ca6366a59b 组播接收后做2取交互,组播接收的数据不作用于通信状态判断 2026-08-25 20:05:05 +08:00
lh f70644f743 等待时间使用宏定义 2026-08-24 17:14:17 +08:00
lh 2bd874bd40 1.增加阶段时间打印
2.修改超时接收逻辑
3.增加未知地->离线地逻辑
2026-08-24 16:25:16 +08:00
lh 7dd0b7aa68 一主三备完成 2026-08-21 19:43:34 +08:00
lh e0b03e011f 通信bug修复 2026-08-21 17:22:07 +08:00
lh 18003863ae bug修改中 2026-08-21 16:15:59 +08:00
lh 8e7cd0ea12 同时上电,一主三备正常,待遍历异常场景 2026-08-21 15:05:48 +08:00
lh eb5bdc8177 状态转换开发中 2026-08-20 18:54:04 +08:00
lh c7c357249a 仲裁版本开发,第一次提交,剩余状态转换功能 2026-08-19 19:47:55 +08:00
lh 6f48be84e9 9.3.1首版首轮基线版本 2026-08-13 18:58:25 +08:00
lh 65594a600d [9.3.1] 9.3.1首版首轮代码,基线版本 2026-06-30 11:09:21 +08:00
284 changed files with 23368 additions and 59968 deletions
+5 -2
View File
@@ -109,12 +109,15 @@ INCLUDES += -I ./src/APP \
-I ./src/MSCP/SFM \ -I ./src/MSCP/SFM \
-I ./src/MSCP/PFM \ -I ./src/MSCP/PFM \
-I ./src/MSCP_CFG \ -I ./src/MSCP_CFG \
-I ./src/MSCP/Area\
-I ./src/MSCP/OFM\
-I ./src/MSCP/Arb
#LIBS += -L/path/to/my/lib/$(PLATFORM)/usr/lib -lmylib #LIBS += -L/path/to/my/lib/$(PLATFORM)/usr/lib -lmylib
#LIBS += -L../mylib/$(OUTPUT_DIR) -lmylib #LIBS += -L../mylib/$(OUTPUT_DIR) -lmylib
#Compiler flags for build profiles #Compiler flags for build profiles
CCFLAGS_release += -O0 CCFLAGS_release += -O2
#CCFLAGS_release += -g -O2
CCFLAGS_debug += -g -O0 -fno-builtin CCFLAGS_debug += -g -O0 -fno-builtin
CCFLAGS_coverage += -g -O0 -ftest-coverage -fprofile-arcs -nopipe -Wc,-auxbase-strip,$@ CCFLAGS_coverage += -g -O0 -ftest-coverage -fprofile-arcs -nopipe -Wc,-auxbase-strip,$@
LDFLAGS_coverage += -ftest-coverage -fprofile-arcs LDFLAGS_coverage += -ftest-coverage -fprofile-arcs
+231 -35
View File
@@ -226,7 +226,7 @@ void APP_API_Data_Init()
UINT8 funcRetVal = 0U; UINT8 funcRetVal = 0U;
funcRetVal = dquGetFSVersion(DataPath, szFSFILEVersionFS); funcRetVal = dquGetFSVersion(DataPath, szFSFILEVersionFS);
#if (kPLATFORM==kVXWORKS) #if 0//(kPLATFORM==kVXWORKS)
/*文件配置*/ /*文件配置*/
STRU_APP_CFG_T AppCfgInterface = { STRU_APP_CFG_T AppCfgInterface = {
.FS_NAME = "RCI.FS", /**< FS文件名称 */ .FS_NAME = "RCI.FS", /**< FS文件名称 */
@@ -238,16 +238,16 @@ void APP_API_Data_Init()
.M_InnetSafe_Enable = 0x55, /**< 内网安全通信功能开关 */ .M_InnetSafe_Enable = 0x55, /**< 内网安全通信功能开关 */
.M_InnetRaw_Enable = 0xAA, /**< 内网透传通信功能开关 */ .M_InnetRaw_Enable = 0xAA, /**< 内网透传通信功能开关 */
.M_OutnetSafe_Enable = 0x55,/**< 外网安全通信功能开关 */ .M_OutnetSafe_Enable = 0x55,/**< 外网安全通信功能开关 */
.M_OutnetRaw_Enable = 0xAA, /**< 外网透传通信功能开关 */ .M_OutnetRaw_Enable = 0x55, /**< 外网透传通信功能开关 */
.M_CpuUsageGet_Enable = 0x55,/**< 获取cpu使用率功能开关 */ .M_CpuUsageGet_Enable = 0xAA,/**< 获取cpu使用率功能开关 */
.M_RemoteUpdate_Enable = 0x55,/**< 远程部署内网安全通信功能开关 */ .M_RemoteUpdate_Enable = 0x55,/**< 远程部署内网安全通信功能开关 */
.ID_Maintenance = DEVICE_TYPE_AIM, .ID_Maintenance = DEVICE_TYPE_AIM,
.Start_Path = "/emmc1", /**< 程序启动路径 */ .Start_Path = "/emmc1", /**< 程序启动路径 */
.reboot_replycount = 10, /**< 重启确认报文回复次数 */ .reboot_replycount = 10, /**< 重启确认报文回复次数 */
.M_AutoReboot_Count = 3, /**< 自动重启次数 */ .M_AutoReboot_Count = 0, /**< 自动重启次数 */
.M_AutoClear_Days = 1, /**< 连续运行多久清空宕机次数的天数 */ .M_AutoClear_Days = 1, /**< 连续运行多久清空宕机次数的天数 */
.CPU[0].IP_2oo2 = "192.168.0.11", /**< 2oo2通信IP */ .CPU[0].IP_2oo2 = "192.168.0.11", /**< 2oo2通信IP */
.CPU[0].IP_2x2 = "192.168.1.62", /**< 2x2通信IP */ // .CPU[0].IP_2x2 = "192.168.1.62", /**< 2x2通信IP */
.CPU[0].IP_Out = "192.168.1.62", /**< 外网通信IP */ .CPU[0].IP_Out = "192.168.1.62", /**< 外网通信IP */
.CPU[0].IP_Maintain = "192.168.146.101", /**< 维护通信IP */ .CPU[0].IP_Maintain = "192.168.146.101", /**< 维护通信IP */
/*适用透传通道-选配*/ /*适用透传通道-选配*/
@@ -257,7 +257,7 @@ void APP_API_Data_Init()
.CPU[0].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */ .CPU[0].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */
.CPU[1].IP_2oo2 = "192.168.0.12", /**< 2oo2通信IP */ .CPU[1].IP_2oo2 = "192.168.0.12", /**< 2oo2通信IP */
.CPU[1].IP_2x2 = "192.168.2.62", /**< 2x2通信IP */ // .CPU[1].IP_2x2 = "192.168.2.62", /**< 2x2通信IP */
.CPU[1].IP_Out = "192.168.2.62", /**< 外网通信IP */ .CPU[1].IP_Out = "192.168.2.62", /**< 外网通信IP */
.CPU[1].IP_Maintain = "192.168.18.102", /**< 维护通信IP */ .CPU[1].IP_Maintain = "192.168.18.102", /**< 维护通信IP */
/*适用透传通道-选配*/ /*适用透传通道-选配*/
@@ -267,7 +267,7 @@ void APP_API_Data_Init()
.CPU[1].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */ .CPU[1].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */
.CPU[2].IP_2oo2 = "192.168.0.21", /**< 2oo2通信IP */ .CPU[2].IP_2oo2 = "192.168.0.21", /**< 2oo2通信IP */
.CPU[2].IP_2x2 = "192.168.1.64", /**< 2x2通信IP */ // .CPU[2].IP_2x2 = "192.168.1.64", /**< 2x2通信IP */
.CPU[2].IP_Out = "192.168.1.64", /**< 外网通信IP */ .CPU[2].IP_Out = "192.168.1.64", /**< 外网通信IP */
.CPU[2].IP_Maintain = "192.168.146.103", /**< 维护通信IP */ .CPU[2].IP_Maintain = "192.168.146.103", /**< 维护通信IP */
/*适用透传通道-选配*/ /*适用透传通道-选配*/
@@ -277,7 +277,7 @@ void APP_API_Data_Init()
.CPU[2].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */ .CPU[2].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */
.CPU[3].IP_2oo2 = "192.168.0.22", /**< 2oo2通信IP */ .CPU[3].IP_2oo2 = "192.168.0.22", /**< 2oo2通信IP */
.CPU[3].IP_2x2 = "192.168.2.64", /**< 2x2通信IP */ // .CPU[3].IP_2x2 = "192.168.2.64", /**< 2x2通信IP */
.CPU[3].IP_Out = "192.168.2.64", /**< 外网通信IP */ .CPU[3].IP_Out = "192.168.2.64", /**< 外网通信IP */
.CPU[3].IP_Maintain = "192.168.18.104", /**< 维护通信IP */ .CPU[3].IP_Maintain = "192.168.18.104", /**< 维护通信IP */
/*适用透传通道-选配*/ /*适用透传通道-选配*/
@@ -338,6 +338,204 @@ void APP_API_Data_Init()
.INNET_COM_CFG[0].Port_Safe_P = 55003, /**< 紫网安全端口 */ .INNET_COM_CFG[0].Port_Safe_P = 55003, /**< 紫网安全端口 */
}; };
MSCP_Set_APP_ConfigData(&AppCfgInterface); MSCP_Set_APP_ConfigData(&AppCfgInterface);
#else
/*↑↑用户初始化代码↑↑*/
/*↓↓基本数据初始化配置示例↓↓*/
STRU_APP_CFG_T AppCfgInterface = {
.FS_NAME = "RCI.FS", /**< FS文件名称 */
.APP_NAME = "RCOCI", /**< 应用文件名称 */
.CYC_TIME = 300, /**< 系统周期(ms */
.app_num = 1, /**< app任务数1-4 */
.M_2oo2_Enable = 0x55, /**< 2oo2功能开关,开0x55,关0xAA */
.M_2x2_Enable = 0x55, /**< 2x2功能开关,开0x55,关0xAA*/
.M_4x2_Enable = 0x55, /**< 4x2功能开关,开0x55,关0xAA*/
.M_Arb_Enable = 0x55, /**< 仲裁功能开关 */
.M_2x2_Com_Cfg = 0x00, /**< 2x2通信功能配置,串口0x00,网卡0x01*/
.M_InnetSafe_Enable = 0x55, /**< 内网安全通信功能开关,开0x55,关0xAA */
.M_InnetRaw_Enable = 0x55, /**< 内网透传通信功能开关,开0x55,关0xAA */
.M_OutnetSafe_Enable = 0x55,/**< 外网安全通信功能开关,开0x55,关0xAA */
.M_OutnetRaw_Enable = 0x55, /**< 外网透传通信功能开关,开0x55,关0xAA */
.M_CpuUsageGet_Enable = 0xAA,/**< 外网透传通信功能开关,开0x55,关0xAA */
.M_RemoteUpdate_Enable = 0xAA,/**< 远程部署内网安全通信功能开关,开0x55,关0xAA */
.ID_Maintenance = 0xF800, /**< 设置维护终端ID */
.Start_Path = "./emmc1", /**< 程序启动路径 */
.reboot_replycount = 10, /**< 重启确认报文回复次数 */
.M_AutoReboot_Count = 0, /**< 自动重启次数 */
.M_AutoClear_Days = 1, /**< 连续运行多久清空宕机次数的天数 */
/*CPU1-1 IP配置*/
.CPU[0].IP_2oo2 = "192.168.0.11", /**< 2oo2通信IP */
.CPU[0].IP_4x2 = "192.168.1.62", /**< 2x2通信IP */
.CPU[0].IP_Out = "192.168.1.62", /**< 外网通信IP */
.CPU[0].IP_Maintain = "192.168.146.101", /**< 维护通信IP */
.CPU[0].IP_Area = "10.3.1.61", /**< 4x2通信IP */
.CPU[0].IP_Sync_Time_A = "192.168.1.62", /**< 时间同步网络A网IP */
.CPU[0].IP_Sync_Time_B = "10.3.1.61", /**< 时间同步网络B网IP */
/*CPU1-1适用透传通道-选配*/
.CPU[0].IP_Com = "192.168.1.62", /**< 通用通信IP */
.CPU[0].IP_Com_Extend = "192.168.1.62",/**< 通用通信扩展IP */
.CPU[0].Logger_PortBase = 55011, /**< 明文日志记录发送端口 */
.CPU[0].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */
/*CPU1-2 IP配置*/
.CPU[1].IP_2oo2 = "192.168.0.12", /**< 2oo2通信IP */
.CPU[1].IP_4x2 = "192.168.2.62", /**< 2x2通信IP */
.CPU[1].IP_Out = "192.168.2.62", /**< 外网通信IP */
.CPU[1].IP_Maintain = "192.168.18.102", /**< 维护通信IP */
.CPU[1].IP_Area = "10.3.1.63", /**< 4x2通信IP */
.CPU[1].IP_Sync_Time_A = "192.168.2.62", /**< 时间同步网络A网IP */
.CPU[1].IP_Sync_Time_B = "10.3.1.63", /**< 时间同步网络B网IP */
/*CPU1-2适用透传通道-选配*/
.CPU[1].IP_Com = "192.168.2.62", /**< 通用通信IP */
.CPU[1].IP_Com_Extend = "192.168.2.62",/**< 通用通信扩展IP */
.CPU[1].Logger_PortBase = 55012, /**< 明文日志记录发送端口 */
.CPU[1].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */
/*CPU2-1 IP配置*/
.CPU[2].IP_2oo2 = "192.168.0.11", /**< 2oo2通信IP */
.CPU[2].IP_4x2 = "192.168.1.64", /**< 2x2通信IP */
.CPU[2].IP_Out = "192.168.1.64", /**< 外网通信IP */
.CPU[2].IP_Maintain = "192.168.146.103", /**< 维护通信IP */
.CPU[2].IP_Area = "10.4.1.62", /**< 4x2通信IP */
.CPU[2].IP_Sync_Time_A = "192.168.1.64", /**< 时间同步网络A网IP */
.CPU[2].IP_Sync_Time_B = "10.4.1.62", /**< 时间同步网络B网IP */
/*CPU2-1适用透传通道-选配*/
.CPU[2].IP_Com = "192.168.1.64", /**< 通用通信IP */
.CPU[2].IP_Com_Extend = "192.168.1.64",/**< 通用通信扩展IP */
.CPU[2].Logger_PortBase = 55021, /**< 明文日志记录发送端口 */
.CPU[2].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */
/*CPU2-2 IP配置*/
.CPU[3].IP_2oo2 = "192.168.0.12", /**< 2oo2通信IP */
.CPU[3].IP_4x2 = "192.168.2.64", /**< 2x2通信IP */
.CPU[3].IP_Out = "192.168.2.64", /**< 外网通信IP */
.CPU[3].IP_Maintain = "192.168.18.104", /**< 维护通信IP */
.CPU[3].IP_Area = "10.4.1.64", /**< 4x2通信IP */
.CPU[3].IP_Sync_Time_A = "192.168.2.64", /**< 时间同步网络A网IP */
.CPU[3].IP_Sync_Time_B = "10.4.1.64", /**< 时间同步网络B网IP */
/*CPU2-2适用透传通道-选配*/
.CPU[3].IP_Com = "192.168.2.64", /**< 通用通信IP */
.CPU[3].IP_Com_Extend = "192.168.2.64",/**< 通用通信扩展IP */
.CPU[3].Logger_PortBase = 55022, /**< 明文日志记录发送端口 */
.CPU[3].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */
/*CPU3-1 IP配置*/
.CPU[4].IP_2oo2 = "192.168.0.11", /**< 2oo2通信IP */
.CPU[4].IP_4x2 = "192.168.1.162", /**< 2x2通信IP */
.CPU[4].IP_Out = "192.168.1.162", /**< 外网通信IP */
.CPU[4].IP_Maintain = "192.168.146.201", /**< 维护通信IP */
.CPU[4].IP_Area = "10.3.1.161", /**< 4x2通信IP */
.CPU[4].IP_Sync_Time_A = "192.168.1.162", /**< 时间同步网络A网IP */
.CPU[4].IP_Sync_Time_B = "10.3.1.161", /**< 时间同步网络B网IP */
/*CPU3-1适用透传通道-选配*/
.CPU[4].IP_Com = "192.168.1.162", /**< 通用通信IP */
.CPU[4].IP_Com_Extend = "192.168.1.162",/**< 通用通信扩展IP */
.CPU[4].Logger_PortBase = 55031, /**< 明文日志记录发送端口 */
.CPU[4].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */
/*CPU3-2 IP配置*/
.CPU[5].IP_2oo2 = "192.168.0.12", /**< 2oo2通信IP */
.CPU[5].IP_4x2 = "192.168.2.162", /**< 2x2通信IP */
.CPU[5].IP_Out = "192.168.2.162", /**< 外网通信IP */
.CPU[5].IP_Maintain = "192.168.18.202", /**< 维护通信IP */
.CPU[5].IP_Area = "10.3.1.163", /**< 4x2通信IP */
.CPU[5].IP_Sync_Time_A = "192.168.2.162", /**< 时间同步网络A网IP */
.CPU[5].IP_Sync_Time_B = "10.3.1.163", /**< 时间同步网络B网IP */
/*CPU3-2适用透传通道-选配*/
.CPU[5].IP_Com = "192.168.2.162", /**< 通用通信IP */
.CPU[5].IP_Com_Extend = "192.168.2.162",/**< 通用通信扩展IP */
.CPU[5].Logger_PortBase = 55032, /**< 明文日志记录发送端口 */
.CPU[5].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */
/*CPU4-1 IP配置*/
.CPU[6].IP_2oo2 = "192.168.0.11", /**< 2oo2通信IP */
.CPU[6].IP_4x2 = "192.168.1.164", /**< 2x2通信IP */
.CPU[6].IP_Out = "192.168.1.164", /**< 外网通信IP */
.CPU[6].IP_Maintain = "192.168.146.203", /**< 维护通信IP */
.CPU[6].IP_Area = "10.4.1.162", /**< 4x2通信IP */
.CPU[6].IP_Sync_Time_A = "192.168.1.164", /**< 时间同步网络A网IP */
.CPU[6].IP_Sync_Time_B = "10.4.1.162", /**< 时间同步网络B网IP */
/*CPU4-1适用透传通道-选配*/
.CPU[6].IP_Com = "192.168.1.164", /**< 通用通信IP */
.CPU[6].IP_Com_Extend = "192.168.1.164",/**< 通用通信扩展IP */
.CPU[6].Logger_PortBase = 55041, /**< 明文日志记录发送端口 */
.CPU[6].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */
/*CPU4-2 IP配置*/
.CPU[7].IP_2oo2 = "192.168.0.12", /**< 2oo2通信IP */
.CPU[7].IP_4x2 = "192.168.2.164", /**< 2x2通信IP */
.CPU[7].IP_Out = "192.168.2.164", /**< 外网通信IP */
.CPU[7].IP_Maintain = "192.168.18.204", /**< 维护通信IP */
.CPU[7].IP_Area = "10.4.1.164", /**< 4x2通信IP */
.CPU[7].IP_Sync_Time_A = "192.168.2.164", /**< 时间同步网络A网IP */
.CPU[7].IP_Sync_Time_B = "10.4.1.164", /**< 时间同步网络B网IP */
/*CPU4-2适用透传通道-选配*/
.CPU[7].IP_Com = "192.168.2.164", /**< 通用通信IP */
.CPU[7].IP_Com_Extend = "192.168.2.164",/**< 通用通信扩展IP */
.CPU[7].Logger_PortBase = 55042, /**< 明文日志记录发送端口 */
.CPU[7].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */
/*组播地址配置*/
.IP_Area_G_Multicast = "239.0.0.10", /**< 组播通信IP */
.IP_Area_P_Multicast = "239.0.0.20", /**< 组播通信IP */
.Multicast_Flag = 1u, /**< 单播:0 组播:1 */
/*通用端口配置,平台固定通信端口禁止使用:51001、51002、51003、52001、52002、52003*/
.Port_Outnet_Safe = 54001, /**< 外网安全通信端口 */
.Port_Innet_Safe = 53001, /**< 内网安全通信端口 */
.Port_Outnet_Raw = 54002, /**< 外网透明传输端口 */
.Port_Remote_Update = 50000, /**< 远程部署通信端口 */
/*透传配置-选配*/
.Port_Innet_Raw_Num = 1, /**< 内网透传端口数量0-9 */
.Port_Innet_Raw_Extend_Num = 1, /**< 内网透传扩展端口数量0-9 */
/*透传通道-Number 1根据数量两个通道的数量,按序号累加以此类推(0-17)*/
.Innet_Raw_Parameter[0].Port_Innet_Raw = 3956, /**< 内网透明传输端口 */
.Innet_Raw_Parameter[0].Port_Type_Enable = RAW_COM_UDP, /**< 内网透明UDP传输模式 */
.Innet_Raw_Parameter[0].Server_DevId = 0, /**< 服务端设备类型和id */
.Innet_Raw_Parameter[0].TIME_STAMP_ENABLE = 0XAA, /**< 2取2乘时间戳使能开关 */
.Innet_Raw_Parameter[0].INNET_2oo2_RAW = 0X55, /**< 透传通道2取开关,开0x55,关0xAA */
.Innet_Raw_Parameter[0].INNET_2x2_RAW = 0XAA, /**< 透传通道2乘开关,开0x55,关0xAA */
.Innet_Raw_Parameter[0].IP_InnetRaw_maddr = "224.0.0.31",/**< 内网透传的组播IP */
/*扩展通道-Number 1 根据数量两个通道的数量,按序号累加以此类推(0-17)*/
.Innet_Raw_Parameter[1].Port_Innet_Raw = 3957, /**< 内网透明传输端口 */
.Innet_Raw_Parameter[1].Port_Type_Enable = RAW_COM_BROADCAST, /**< 内网透明广播传输模式 */
.Innet_Raw_Parameter[1].Server_DevId = 0, /**< 服务端设备类型和id */
.Innet_Raw_Parameter[1].TIME_STAMP_ENABLE = 0XAA, /**< 2取2乘时间戳使能开关 */
.Innet_Raw_Parameter[1].INNET_2oo2_RAW = 0X55, /**< 透传通道2取开关,开0x55,关0xAA */
.Innet_Raw_Parameter[1].INNET_2x2_RAW = 0XAA, /**< 透传通道2乘开关,开0x55,关0xAA */
.Innet_Raw_Parameter[1].IP_InnetRaw_maddr = "224.0.0.32",/**< 内网透传的组播IP */
/*外网通信配置-红网*/
.OutNetRed.CC_G_IP_A = "192.168.1.60", /**< 通控的内网IP */
.OutNetRed.CC_P_IP_A = "192.168.2.60", /**< 通控的内网IP */
.OutNetRed.CC_G_IP_B = "192.168.1.160", /**< 通控的内网IP */
.OutNetRed.CC_P_IP_B = "192.168.2.160", /**< 通控的内网IP */
.OutNetRed.EXTEND_G_IP_A = "192.168.1.70", /**< 扩展板卡的内网IP */
.OutNetRed.EXTEND_P_IP_A = "192.168.2.70", /**< 扩展板卡的内网IP */
.OutNetRed.EXTEND_G_IP_B = "192.168.1.71", /**< 扩展板卡的内网IP */
.OutNetRed.EXTEND_P_IP_B = "192.168.2.71", /**< 扩展板卡的内网IP */
.OutNetRed.OutnetSafe_Port = 54001, /**< 外网安全通信端口 */
.OutNetRed.OutnetRaw_Port = 54002, /**< 外网透传通信端口 */
/*外网通信配置-蓝网*/
.OutNetBlue.CC_G_IP_A = "192.168.1.61", /**< 通控的内网IP */
.OutNetBlue.CC_P_IP_A = "192.168.2.61", /**< 通控的内网IP */
.OutNetBlue.CC_G_IP_B = "192.168.1.161", /**< 通控的内网IP */
.OutNetBlue.CC_P_IP_B = "192.168.2.161", /**< 通控的内网IP */
.OutNetBlue.EXTEND_G_IP_A = "192.168.1.170", /**< 扩展板卡的内网IP */
.OutNetBlue.EXTEND_P_IP_A = "192.168.2.170", /**< 扩展板卡的内网IP */
.OutNetBlue.EXTEND_G_IP_B = "192.168.1.171", /**< 扩展板卡的内网IP */
.OutNetBlue.EXTEND_P_IP_B = "192.168.2.171", /**< 扩展板卡的内网IP */
.OutNetBlue.OutnetSafe_Port = 54001, /**< 外网安全通信端口 */
.OutNetBlue.OutnetRaw_Port = 54002, /**< 外网透传通信端口 */
/*日志记录目标设备IP配置*/
.Logger_G_IP_A = "192.168.146.100", /**< A地绿网日志记录IP */
.Logger_P_IP_A = "192.168.18.100", /**< A地紫网日志记录IP */
.Logger_G_IP_B = "192.168.146.200", /**< B地绿网日志记录IP */
.Logger_P_IP_B = "192.168.18.200", /**< B地绿网日志记录IP */
/*内网通信设备注册最大支持0-255,注意:IP配置方式比较特别,与前面配置区分*/
.INNET_COM_NUM = 1, /**< 内网通信设备数量0-255 */
.INNET_COM_CFG[0].InnetID = 0xF800, /**< 内网通信ID */
.INNET_COM_CFG[0].IP_G = (CM_UINT32)inet_addr("172.25.0.100"),/**< 绿网IP*/
.INNET_COM_CFG[0].Port_Raw_G = 55003, /**< 绿网透传端口 */
.INNET_COM_CFG[0].Port_Safe_G = 55004, /**< 绿网安全端口 */
.INNET_COM_CFG[0].IP_P = (CM_UINT32)inet_addr("172.17.0.100"),/**< 紫网IP */
.INNET_COM_CFG[0].Port_Raw_P = 55003, /**< 紫网透传端口 */
.INNET_COM_CFG[0].Port_Safe_P = 55004, /**< 紫网安全端口 */
/*第三方仲裁通信配置*/
.Arb_CFG.IP_Arb_G = "10.3.1.200",
.Arb_CFG.IP_Arb_P = "10.4.1.200",
};
/*调用参数设置初始化接口*/
MSCP_Set_APP_ConfigData(&AppCfgInterface);
#endif #endif
/*组FS版本号*/ /*组FS版本号*/
@@ -349,10 +547,10 @@ void APP_API_Data_Init()
/*组软件版本号*/ /*组软件版本号*/
ii = 0U; ii = 0U;
appVersBuffer[ii++] = VER_INTE_PROJECT; appVersBuffer[ii++] = VER_SOFT_PRODUCT;
appVersBuffer[ii++] = VER_INTE_PRODUCT >> 2U; appVersBuffer[ii++] = VER_SOFT_MODUAL_APP >> 2U;
appVersBuffer[ii++] = (VER_INTE_PRODUCT << 6U) + (VER_INTE_EXE & (UINT8)0x3F); appVersBuffer[ii++] = (VER_SOFT_MODUAL_APP << 6U) + (VER_SOFT_MIANVERSION & (UINT8)0x3F);
appVersBuffer[ii++] = VER_INTE_TIME; appVersBuffer[ii++] = VER_SOFT_SUBVERSION;
/*设置平台调用获取外网信息函数*/ /*设置平台调用获取外网信息函数*/
MSCP_SetSrcId(SetOutNetPara); MSCP_SetSrcId(SetOutNetPara);
/*设置内网参数*/ /*设置内网参数*/
@@ -366,16 +564,16 @@ void APP_API_Data_Init()
* - ENUM_CM_TRUE 成功 * - ENUM_CM_TRUE 成功
* - ENUM_CM_FALSE 失败(平台立即宕机) * - ENUM_CM_FALSE 失败(平台立即宕机)
* @details * @details
* 当本系热备状态为:ENUM_2x2_SHUTDOWN,时 * 当本系热备状态为:ENUM_4x2_SHUTDOWN,时
* 本函数不执行; * 本函数不执行;
* 当本系热备状态为:ENUM_2x2_OFFLINEENUM_2x2_PRE_MASTERENUM_2x2_SLAVE,时 * 当本系热备状态为:ENUM_4x2_OFFLINEENUM_4x2_PRE_MASTERENUM_4x2_SLAVE,时
* 本函数被周期执行,但 ENUM_MSG_OUTNET_SAFE 报文不会真实输出; * 本函数被周期执行,但 ENUM_MSG_OUTNET_SAFE 报文不会真实输出;
* 当本系热备状态为:ENUM_2x2_MASTER,时 * 当本系热备状态为:ENUM_4x2_MASTER,时
* 本函数被周期执行,并且所有输出信息被真实输出。 * 本函数被周期执行,并且所有输出信息被真实输出。
*/ */
ENUM_CM_RETURN APP_API_MainFunc(void) ENUM_CM_RETURN APP_API_MainFunc(void)
{ {
ENUM_CM_RETURN retVal = ENUM_CM_NULL; ENUM_CM_RETURN retVal = ENUM_CM_FALSE;
CM_UINT64 startCycTick = 0u; CM_UINT64 startCycTick = 0u;
CM_UINT64 endCycTick = 0u; CM_UINT64 endCycTick = 0u;
@@ -393,8 +591,9 @@ ENUM_CM_RETURN APP_API_MainFunc(void)
endCycTick = MSCP_GetTick(); endCycTick = MSCP_GetTick();
debug_infor_printf("app proc end at %llu us,used %d us\n", endCycTick, (CM_INT32)((endCycTick - startCycTick) / 1000)); debug_infor_printf("app proc end at %llu us,used %d us\n", endCycTick, (CM_INT32)((endCycTick - startCycTick) / 1000));
gFollowDataLen = GetCiAppData(gFollowData); //gFollowDataLen = GetCiAppData(gFollowData);
MSCP_SetFollowData(gFollowData, gFollowDataLen); memset(gFollowData,0x02,1024*500);
MSCP_SetFollowData(gFollowData, 1024*500);
return retVal; return retVal;
} }
@@ -405,11 +604,11 @@ ENUM_CM_RETURN APP_API_MainFunc(void)
* - ENUM_CM_TRUE 成功 * - ENUM_CM_TRUE 成功
* - ENUM_CM_FALSE 失败(平台立即宕机) * - ENUM_CM_FALSE 失败(平台立即宕机)
* @details * @details
* 当本系热备状态为:ENUM_2x2_SHUTDOWN,时 * 当本系热备状态为:ENUM_4x2_SHUTDOWN,时
* 本函数不执行; * 本函数不执行;
* 当本系热备状态为:ENUM_2x2_OFFLINEENUM_2x2_PRE_MASTERENUM_2x2_SLAVE,时 * 当本系热备状态为:ENUM_4x2_OFFLINEENUM_4x2_PRE_MASTERENUM_4x2_SLAVE,时
* 本函数被周期执行,但 ENUM_MSG_OUTNET_SAFE 报文不会真实输出; * 本函数被周期执行,但 ENUM_MSG_OUTNET_SAFE 报文不会真实输出;
* 当本系热备状态为:ENUM_2x2_MASTER,时 * 当本系热备状态为:ENUM_4x2_MASTER,时
* 本函数被周期执行,并且所有输出信息被真实输出。 * 本函数被周期执行,并且所有输出信息被真实输出。
*/ */
ENUM_CM_RETURN APP_API_MainFunc2(void) ENUM_CM_RETURN APP_API_MainFunc2(void)
@@ -425,11 +624,11 @@ ENUM_CM_RETURN APP_API_MainFunc2(void)
* - ENUM_CM_TRUE 成功 * - ENUM_CM_TRUE 成功
* - ENUM_CM_FALSE 失败(平台立即宕机) * - ENUM_CM_FALSE 失败(平台立即宕机)
* @details * @details
* 当本系热备状态为:ENUM_2x2_SHUTDOWN,时 * 当本系热备状态为:ENUM_4x2_SHUTDOWN,时
* 本函数不执行; * 本函数不执行;
* 当本系热备状态为:ENUM_2x2_OFFLINEENUM_2x2_PRE_MASTERENUM_2x2_SLAVE,时 * 当本系热备状态为:ENUM_4x2_OFFLINEENUM_4x2_PRE_MASTERENUM_4x2_SLAVE,时
* 本函数被周期执行,但 ENUM_MSG_OUTNET_SAFE 报文不会真实输出; * 本函数被周期执行,但 ENUM_MSG_OUTNET_SAFE 报文不会真实输出;
* 当本系热备状态为:ENUM_2x2_MASTER,时 * 当本系热备状态为:ENUM_4x2_MASTER,时
* 本函数被周期执行,并且所有输出信息被真实输出。 * 本函数被周期执行,并且所有输出信息被真实输出。
*/ */
ENUM_CM_RETURN APP_API_MainFunc3(void) ENUM_CM_RETURN APP_API_MainFunc3(void)
@@ -452,11 +651,11 @@ ENUM_CM_RETURN APP_API_MainFunc4(void)
* - ENUM_CM_TRUE 成功 * - ENUM_CM_TRUE 成功
* - ENUM_CM_FALSE 失败(平台立即宕机) * - ENUM_CM_FALSE 失败(平台立即宕机)
* @details * @details
* 当本系热备状态为:ENUM_2x2_SHUTDOWN,时 * 当本系热备状态为:ENUM_4x2_SHUTDOWN,时
* 本函数不执行; * 本函数不执行;
* 当本系热备状态为:ENUM_2x2_OFFLINEENUM_2x2_PRE_MASTERENUM_2x2_SLAVE,时 * 当本系热备状态为:ENUM_4x2_OFFLINEENUM_4x2_PRE_MASTERENUM_4x2_SLAVE,时
* 本函数被周期执行,但 ENUM_MSG_OUTNET_SAFE 报文不会真实输出; * 本函数被周期执行,但 ENUM_MSG_OUTNET_SAFE 报文不会真实输出;
* 当本系热备状态为:ENUM_2x2_MASTER,时 * 当本系热备状态为:ENUM_4x2_MASTER,时
* 本函数被周期执行,并且所有输出信息被真实输出。 * 本函数被周期执行,并且所有输出信息被真实输出。
*/ */
ENUM_CM_RETURN APP_API_MainFunc5(void) ENUM_CM_RETURN APP_API_MainFunc5(void)
@@ -494,7 +693,7 @@ ENUM_CM_RETURN APP_API_InputFunc(void)
* - ENUM_CM_TRUE 成功 * - ENUM_CM_TRUE 成功
* - ENUM_CM_FALSE 失败(平台立即宕机) * - ENUM_CM_FALSE 失败(平台立即宕机)
* @details * @details
* 当本系热备状态为:ENUM_2x2_OFFLINEENUM_2x2_SLAVE,且收到了邻系正确的跟随数据时 * 当本系热备状态为:ENUM_4x2_OFFLINEENUM_4x2_SLAVE,且收到了邻系正确的跟随数据时
* 本函数将在APP_API_MainFunc()之前执行; * 本函数将在APP_API_MainFunc()之前执行;
* 否则,本函数不执行。 * 否则,本函数不执行。
* 应用跟随数据的最大长度不得超过1024*1000字节 * 应用跟随数据的最大长度不得超过1024*1000字节
@@ -505,7 +704,8 @@ ENUM_CM_RETURN APP_API_FollowUp(IN const CM_UINT8 Data[MSCP_FOLLOW_BUFF_SIZE], I
ENUM_CM_RETURN retVal = ENUM_CM_FALSE; ENUM_CM_RETURN retVal = ENUM_CM_FALSE;
UINT8 setRtn = 0u; UINT8 setRtn = 0u;
setRtn = SetCiAppData(Data, Len); //setRtn = SetCiAppData(Data, Len);
setRtn = 1;
if (1u == setRtn) if (1u == setRtn)
{ {
retVal = ENUM_CM_TRUE; retVal = ENUM_CM_TRUE;
@@ -559,10 +759,6 @@ ENUM_CM_RECCUSEB Is_Send_ExtendBoard(IN const CM_UINT16 dstDevTypeId)
{ {
retVal = ENUM_CM_SEB; retVal = ENUM_CM_SEB;
} }
else if (CI_SYSTEM_TYPE_ITE == devType)
{
retVal = ENUM_CM_CCSEB;
}
else else
{ {
retVal = ENUM_CM_CC; retVal = ENUM_CM_CC;
@@ -624,8 +820,8 @@ void SetOutNetPara(UINT8* pRxBuf, UINT32 dwLen, ENUM_OUTNET_CHN_T chOutNetType,
tempLen = *pCurLen; tempLen = *pCurLen;
if ((TRANSMIT_OBJECT_SUM_MAX * TRANSMIT_OBJECT_DEVICE_SUM_MAX) > (tempLen + objLen)) if ((TRANSMIT_OBJECT_SUM_MAX * TRANSMIT_OBJECT_DEVICE_SUM_MAX) > (tempLen + objLen))
{ {
CommonMemCpy((void*)&pOutBuf[tempLen], objLen * sizeof(UINT16), \ CommonMemCpy(&pOutBuf[tempLen], objLen * sizeof(UINT16), \
(const void*)gTransmitObjTypeId, objLen * sizeof(UINT16)); gTransmitObjTypeId, objLen * sizeof(UINT16));
*pCurLen = tempLen + objLen; *pCurLen = tempLen + objLen;
debug_infor_printf("outnet in type len :%d", chOutNetType, objLen); debug_infor_printf("outnet in type len :%d", chOutNetType, objLen);
debug_out_array(0xAA, gTransmitObjTypeId, objLen * sizeof(UINT16)); debug_out_array(0xAA, gTransmitObjTypeId, objLen * sizeof(UINT16));
+3 -3
View File
@@ -40,11 +40,11 @@ extern "C" {
* - ENUM_CM_TRUE 成功 * - ENUM_CM_TRUE 成功
* - ENUM_CM_FALSE 失败(平台立即宕机) * - ENUM_CM_FALSE 失败(平台立即宕机)
* @note * @note
* 当本系热备状态为:ENUM_2x2_SHUTDOWN,时 * 当本系热备状态为:ENUM_4x2_SHUTDOWN,时
* 本函数不执行; * 本函数不执行;
* 当本系热备状态为:ENUM_2x2_OFFLINEENUM_2x2_PRE_MASTERENUM_2x2_SLAVE,时 * 当本系热备状态为:ENUM_4x2_OFFLINEENUM_4x2_PRE_MASTERENUM_4x2_SLAVE,时
* 本函数被周期执行,但 ENUM_MSG_OUTNET_SAFE 报文不会真实输出; * 本函数被周期执行,但 ENUM_MSG_OUTNET_SAFE 报文不会真实输出;
* 当本系热备状态为:ENUM_2x2_MASTER,时 * 当本系热备状态为:ENUM_4x2_MASTER,时
* 本函数被周期执行,并且所有输出信息被真实输出。 * 本函数被周期执行,并且所有输出信息被真实输出。
*/ */
ENUM_CM_RETURN APP_API_MainFunc(void); ENUM_CM_RETURN APP_API_MainFunc(void);
@@ -30,6 +30,6 @@
#define VER_INTE_PROJECT 220 /*项目编号*/ #define VER_INTE_PROJECT 220 /*项目编号*/
#define VER_INTE_PRODUCT 40 /*产品编号*/ #define VER_INTE_PRODUCT 40 /*产品编号*/
#define VER_INTE_EXE 1 /*可执行编号*/ #define VER_INTE_EXE 1 /*可执行编号*/
#define VER_INTE_TIME 118 /*集成次数编号*/ #define VER_INTE_TIME 77 /*集成次数编号*/
#endif/*endif of #define _CI_INTEGRATE_CONFIG_H*/ #endif/*endif of #define _CI_INTEGRATE_CONFIG_H*/
+14 -489
View File
@@ -16,7 +16,6 @@
#include "NonAutoReturnDataManage.h" #include "NonAutoReturnDataManage.h"
#include "DynamicRouteDataManage.h" #include "DynamicRouteDataManage.h"
#include "../Deployment/DeploymentExtern.h" #include "../Deployment/DeploymentExtern.h"
#include "SpeedLimitSecDataManage.h"
/*交换变量*/ /*交换变量*/
extern UINT16 TransmitStateDataCurSum; /*通信关系状态数据当前总数*/ extern UINT16 TransmitStateDataCurSum; /*通信关系状态数据当前总数*/
extern UINT8 ComCycNumForCiToAts; /*联锁到ATS通信周期记录*/ extern UINT8 ComCycNumForCiToAts; /*联锁到ATS通信周期记录*/
@@ -689,9 +688,6 @@ UINT32 GetCiAppData(UINT8 *pCiAppDataPointer)
UINT32 curIndex = 0u; /*记录移动下标*/ UINT32 curIndex = 0u; /*记录移动下标*/
UINT32 curResult = 0u; /*拷贝结构中有效的id数据*/ UINT32 curResult = 0u; /*拷贝结构中有效的id数据*/
UINT8 ii= 0u; UINT8 ii= 0u;
UINT32 crcIndex = 0u; /*用于计算CRC的下标*/
UINT32 crcLength = 0u; /*用于计算CRC的长度*/
UINT32 crcResult = 0u; /*用于存放CRC值*/
if (NULL != pCiAppDataPointer) if (NULL != pCiAppDataPointer)
{ {
@@ -732,20 +728,10 @@ UINT32 GetCiAppData(UINT8 *pCiAppDataPointer)
(void)memcpy(pCiAppDataPointer + curIndex, &g_AllSnowModel, sizeof(UINT8)); (void)memcpy(pCiAppDataPointer + curIndex, &g_AllSnowModel, sizeof(UINT8));
curIndex = curIndex + (UINT32)sizeof(UINT8); curIndex = curIndex + (UINT32)sizeof(UINT8);
/*拷贝全线湿轨级别*/
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT8), (const void*)(&g_AllSnowLevel), (UINT32)sizeof(UINT8));
curIndex = curIndex + (UINT32)sizeof(UINT8);
/*拷贝应急盘继电器有效周期*/ /*拷贝应急盘继电器有效周期*/
(void)memcpy(pCiAppDataPointer + curIndex, &JkjRelayValidCycNum, sizeof(UINT32)); (void)memcpy(pCiAppDataPointer + curIndex, &JkjRelayValidCycNum, sizeof(UINT32));
curIndex = curIndex + (UINT32)sizeof(UINT32); curIndex = curIndex + (UINT32)sizeof(UINT32);
/*计算一次CRC*/
crcLength = curIndex - crcIndex;
crcResult = Tioc_CommonCrc32(pCiAppDataPointer + crcIndex, crcLength);
debug_infor_printf((const)"2oo2 AllSignalBrightFlag-JkjRelayValidCycNum CRC:%x, Length:%d\n", crcResult, crcLength);
crcIndex = curIndex;
/*拷贝总复位状态有效周期*/ /*拷贝总复位状态有效周期*/
(void)memcpy(pCiAppDataPointer + curIndex, &ZFWValidCycNum, sizeof(UINT32)); (void)memcpy(pCiAppDataPointer + curIndex, &ZFWValidCycNum, sizeof(UINT32));
curIndex = curIndex + (UINT32)sizeof(UINT32); curIndex = curIndex + (UINT32)sizeof(UINT32);
@@ -786,12 +772,6 @@ UINT32 GetCiAppData(UINT8 *pCiAppDataPointer)
(void)memcpy(pCiAppDataPointer + curIndex, &SendCiCmdDataStruCurSum, sizeof(UINT16)); (void)memcpy(pCiAppDataPointer + curIndex, &SendCiCmdDataStruCurSum, sizeof(UINT16));
curIndex = curIndex + (UINT32)sizeof(UINT16); curIndex = curIndex + (UINT32)sizeof(UINT16);
/*计算一次CRC*/
crcLength = curIndex - crcIndex;
crcResult = Tioc_CommonCrc32(pCiAppDataPointer + crcIndex, crcLength);
debug_infor_printf((const)"2oo2 ZFWValidCycNum-SendCiCmdDataStruCurSum CRC:%x, Length:%d\n", crcResult, crcLength);
crcIndex = curIndex;
/*拷贝与联锁通信的Vobc数目*/ /*拷贝与联锁通信的Vobc数目*/
(void)memcpy(pCiAppDataPointer + curIndex, &VobcToCiSum, sizeof(UINT8)); (void)memcpy(pCiAppDataPointer + curIndex, &VobcToCiSum, sizeof(UINT8));
curIndex = curIndex + (UINT32)sizeof(UINT8); curIndex = curIndex + (UINT32)sizeof(UINT8);
@@ -813,38 +793,14 @@ UINT32 GetCiAppData(UINT8 *pCiAppDataPointer)
(void)memcpy(pCiAppDataPointer + curIndex, &g_cTsrSureFlag, sizeof(UINT8)); (void)memcpy(pCiAppDataPointer + curIndex, &g_cTsrSureFlag, sizeof(UINT8));
curIndex = curIndex + (UINT32)sizeof(UINT8); curIndex = curIndex + (UINT32)sizeof(UINT8);
/*拷贝ZC全线临时限速状态*/ /*拷贝全线临时限速状态*/
(void)memcpy(pCiAppDataPointer + curIndex, &g_AllLineTsrState, sizeof(UINT8)); (void)memcpy(pCiAppDataPointer + curIndex, &g_AllLineTsrState, sizeof(UINT8));
curIndex = curIndex + (UINT32)sizeof(UINT8); curIndex = curIndex + (UINT32)sizeof(UINT8);
/*拷贝ZC全线临时限速速度*/ /*拷贝全线临时限速速度*/
(void)memcpy(pCiAppDataPointer + curIndex, &g_AllLineTsrSpeed, sizeof(UINT8)); (void)memcpy(pCiAppDataPointer + curIndex, &g_AllLineTsrSpeed, sizeof(UINT8));
curIndex = curIndex + (UINT32)sizeof(UINT8); curIndex = curIndex + (UINT32)sizeof(UINT8);
/*拷贝TMC全线限速状态*/
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT8), (const void*)(&gCacheAllSpeedState), (UINT32)sizeof(UINT8));
curIndex = curIndex + (UINT32)sizeof(UINT8);
/*拷贝TMC全线限速速度*/
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT8), (const void*)(&gCacheAllSpeedNum), (UINT32)sizeof(UINT8));
curIndex = curIndex + (UINT32)sizeof(UINT8);
/*拷贝台风限速信息*/
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(TyphoonSpeedDataStruct), (const void*)(&gTyphSpeedInfo), (UINT32)sizeof(TyphoonSpeedDataStruct));
curIndex = curIndex + (UINT32)sizeof(TyphoonSpeedDataStruct);
/*拷贝临时限速数量*/
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_TsrTMCSum), (const void*)(&g_TsrTMCSum), (UINT32)sizeof(UINT8));
curIndex = curIndex + (UINT32)sizeof(UINT8);
/*拷贝临时限速数据结构体*/
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(TsrTMCDataStruct)* TSR_MAX_SUM, (const void*)(&g_TsrTMCDataStru), (UINT32)sizeof(TsrTMCDataStruct)* TSR_MAX_SUM);
curIndex = curIndex + (UINT32)sizeof(TsrTMCDataStruct) * TSR_MAX_SUM;
/*拷贝限速区段信息结构体*/
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(SpeedLimitSecInfo)* MAX_LINE_SEC_NUM, (const void*)(&gSpeedLimitSecData), (UINT32)sizeof(SpeedLimitSecInfo)* MAX_LINE_SEC_NUM);
curIndex = curIndex + (UINT32)sizeof(SpeedLimitSecInfo) * MAX_LINE_SEC_NUM;
/*拷贝进路数据结构体*/ /*拷贝进路数据结构体*/
curResult = CopyValidGetDataStru(pCiAppDataPointer + curIndex, (void *)RouteDataStru, ROUTE_SUM_MAX, (UINT16)sizeof(RouteDataStruct)); curResult = CopyValidGetDataStru(pCiAppDataPointer + curIndex, (void *)RouteDataStru, ROUTE_SUM_MAX, (UINT16)sizeof(RouteDataStruct));
curIndex = curIndex + curResult; curIndex = curIndex + curResult;
@@ -861,12 +817,6 @@ UINT32 GetCiAppData(UINT8 *pCiAppDataPointer)
curResult = CopyValidGetDataStru(pCiAppDataPointer + curIndex, (void *)SwitchDataStru, SWITCH_SUM_MAX, (UINT16)sizeof(SwitchDataStruct)); curResult = CopyValidGetDataStru(pCiAppDataPointer + curIndex, (void *)SwitchDataStru, SWITCH_SUM_MAX, (UINT16)sizeof(SwitchDataStruct));
curIndex = curIndex + curResult; curIndex = curIndex + curResult;
/*计算一次CRC*/
crcLength = curIndex - crcIndex;
crcResult = Tioc_CommonCrc32(pCiAppDataPointer + crcIndex, crcLength);
debug_infor_printf((const)"2oo2 VobcToCiSum-SwitchDataStru CRC:%x, Length:%d\n", crcResult, crcLength);
crcIndex = curIndex;
/*拷贝计轴区段数据结构体*/ /*拷贝计轴区段数据结构体*/
curResult = CopyValidGetDataStru(pCiAppDataPointer + curIndex, (void *)AxisSectionDataStru, AXIS_SECTION_SUM_MAX, (UINT16)sizeof(AxisSectionDataStruct)); curResult = CopyValidGetDataStru(pCiAppDataPointer + curIndex, (void *)AxisSectionDataStru, AXIS_SECTION_SUM_MAX, (UINT16)sizeof(AxisSectionDataStruct));
curIndex = curIndex + curResult; curIndex = curIndex + curResult;
@@ -907,12 +857,6 @@ UINT32 GetCiAppData(UINT8 *pCiAppDataPointer)
(void)memcpy(pCiAppDataPointer + curIndex, NonRouteDataStruArr, NONROUTE_ID_NUM_MAX*sizeof(NonRouteDataStruct)); (void)memcpy(pCiAppDataPointer + curIndex, NonRouteDataStruArr, NONROUTE_ID_NUM_MAX*sizeof(NonRouteDataStruct));
curIndex = curIndex + (UINT32)(NONROUTE_ID_NUM_MAX*sizeof(NonRouteDataStruct)); curIndex = curIndex + (UINT32)(NONROUTE_ID_NUM_MAX*sizeof(NonRouteDataStruct));
/*计算一次CRC*/
crcLength = curIndex - crcIndex;
crcResult = Tioc_CommonCrc32(pCiAppDataPointer + crcIndex, crcLength);
debug_infor_printf((const)"2oo2 AxisSectionDataStru-NonRouteDataStruArr CRC:%x, Length:%d\n", crcResult, crcLength);
crcIndex = curIndex;
/*拷贝指示器数据结构体*/ /*拷贝指示器数据结构体*/
(void)memcpy(pCiAppDataPointer + curIndex, IndicatorDataStru, (INDICATOR_SUM_MAX)*sizeof(IndicatorDataStruct)); (void)memcpy(pCiAppDataPointer + curIndex, IndicatorDataStru, (INDICATOR_SUM_MAX)*sizeof(IndicatorDataStruct));
curIndex = curIndex + (UINT32)((INDICATOR_SUM_MAX)*sizeof(IndicatorDataStruct)); curIndex = curIndex + (UINT32)((INDICATOR_SUM_MAX)*sizeof(IndicatorDataStruct));
@@ -964,12 +908,6 @@ UINT32 GetCiAppData(UINT8 *pCiAppDataPointer)
(void)memcpy(pCiAppDataPointer + curIndex, AllAutoReturnDataStru, (ALL_AUTO_RETURN_SUM_MAX)*sizeof(AllAutoReturnDataStruct)); (void)memcpy(pCiAppDataPointer + curIndex, AllAutoReturnDataStru, (ALL_AUTO_RETURN_SUM_MAX)*sizeof(AllAutoReturnDataStruct));
curIndex = curIndex + (UINT32)((ALL_AUTO_RETURN_SUM_MAX)*sizeof(AllAutoReturnDataStruct)); curIndex = curIndex + (UINT32)((ALL_AUTO_RETURN_SUM_MAX)*sizeof(AllAutoReturnDataStruct));
/*计算一次CRC*/
crcLength = curIndex - crcIndex;
crcResult = Tioc_CommonCrc32(pCiAppDataPointer + crcIndex, crcLength);
debug_infor_printf((const)"2oo2 IndicatorDataStru-AllAutoReturnDataStru CRC:%x, Length:%d\n", crcResult, crcLength);
crcIndex = curIndex;
/*拷贝车库门数据结构体*/ /*拷贝车库门数据结构体*/
(void)memcpy(pCiAppDataPointer + curIndex, GaragedoorDataStru, (GARAGE_DOOR_SUM_MAX)*sizeof(GaragedoorDataStruct)); (void)memcpy(pCiAppDataPointer + curIndex, GaragedoorDataStru, (GARAGE_DOOR_SUM_MAX)*sizeof(GaragedoorDataStruct));
curIndex = curIndex + (UINT32)((GARAGE_DOOR_SUM_MAX)*sizeof(GaragedoorDataStruct)); curIndex = curIndex + (UINT32)((GARAGE_DOOR_SUM_MAX)*sizeof(GaragedoorDataStruct));
@@ -1010,12 +948,6 @@ UINT32 GetCiAppData(UINT8 *pCiAppDataPointer)
(void)memcpy(pCiAppDataPointer + curIndex, ocHLHTHeadCtxs, (OC_SUM_MAX) * sizeof(HLHTHeadContextStru)); (void)memcpy(pCiAppDataPointer + curIndex, ocHLHTHeadCtxs, (OC_SUM_MAX) * sizeof(HLHTHeadContextStru));
curIndex = curIndex + (UINT32)((OC_SUM_MAX) * sizeof(HLHTHeadContextStru)); curIndex = curIndex + (UINT32)((OC_SUM_MAX) * sizeof(HLHTHeadContextStru));
/*计算一次CRC*/
crcLength = curIndex - crcIndex;
crcResult = Tioc_CommonCrc32(pCiAppDataPointer + crcIndex, crcLength);
debug_infor_printf((const)"2oo2 GaragedoorDataStru-ocHLHTHeadCtxs CRC:%x, Length:%d\n", crcResult, crcLength);
crcIndex = curIndex;
/*与本CI通信的TMC系统互联互通报文头上下文数据*/ /*与本CI通信的TMC系统互联互通报文头上下文数据*/
(void)memcpy(pCiAppDataPointer + curIndex, tmcHLHTHeadCtxs, (TMC_SUM_MAX) * sizeof(HLHTHeadContextStru)); (void)memcpy(pCiAppDataPointer + curIndex, tmcHLHTHeadCtxs, (TMC_SUM_MAX) * sizeof(HLHTHeadContextStru));
curIndex = curIndex + (UINT32)((TMC_SUM_MAX) * sizeof(HLHTHeadContextStru)); curIndex = curIndex + (UINT32)((TMC_SUM_MAX) * sizeof(HLHTHeadContextStru));
@@ -1057,12 +989,6 @@ UINT32 GetCiAppData(UINT8 *pCiAppDataPointer)
(void)memcpy(pCiAppDataPointer + curIndex, m_Switches, m_SwitchNum * sizeof(OcDeviceStruct)); (void)memcpy(pCiAppDataPointer + curIndex, m_Switches, m_SwitchNum * sizeof(OcDeviceStruct));
curIndex = curIndex + (UINT32)(m_SwitchNum * sizeof(OcDeviceStruct)); curIndex = curIndex + (UINT32)(m_SwitchNum * sizeof(OcDeviceStruct));
/*计算一次CRC*/
crcLength = curIndex - crcIndex;
crcResult = Tioc_CommonCrc32(pCiAppDataPointer + crcIndex, crcLength);
debug_infor_printf((const)"2oo2 tmcHLHTHeadCtxs-m_Switches CRC:%x, Length:%d\n", crcResult, crcLength);
crcIndex = curIndex;
/*与本CI通信的OC DI上下文数据*/ /*与本CI通信的OC DI上下文数据*/
curIndex += CopyValidGetDataStru(pCiAppDataPointer + curIndex, (void*)m_OcConvertedPtDataArr, (OC_SUM_MAX), (UINT16)sizeof(OcCollBoardDataStruct)); curIndex += CopyValidGetDataStru(pCiAppDataPointer + curIndex, (void*)m_OcConvertedPtDataArr, (OC_SUM_MAX), (UINT16)sizeof(OcCollBoardDataStruct));
@@ -1100,12 +1026,6 @@ UINT32 GetCiAppData(UINT8 *pCiAppDataPointer)
(void)memcpy(pCiAppDataPointer + curIndex, &CiSendBackDataTempStruSum, sizeof(UINT16)); (void)memcpy(pCiAppDataPointer + curIndex, &CiSendBackDataTempStruSum, sizeof(UINT16));
curIndex = curIndex + (UINT32)sizeof(UINT16); curIndex = curIndex + (UINT32)sizeof(UINT16);
/*计算一次CRC*/
crcLength = curIndex - crcIndex;
crcResult = Tioc_CommonCrc32(pCiAppDataPointer + crcIndex, crcLength);
debug_infor_printf((const)"2oo2 m_OcConvertedPtDataArr-CiSendBackDataTempStruSum CRC:%x, Length:%d\n", crcResult, crcLength);
crcIndex = curIndex;
/*拷贝虚拟联锁数据*/ /*拷贝虚拟联锁数据*/
for(ii = 0u;ii<g_VirtualCIStructData.virtualCiNum;ii++) for(ii = 0u;ii<g_VirtualCIStructData.virtualCiNum;ii++)
{ {
@@ -1168,22 +1088,10 @@ UINT32 GetCiAppData(UINT8 *pCiAppDataPointer)
(void)memcpy(pCiAppDataPointer + curIndex, &LocalAreaSnowNum, sizeof(UINT8)); (void)memcpy(pCiAppDataPointer + curIndex, &LocalAreaSnowNum, sizeof(UINT8));
curIndex = curIndex + (UINT32)sizeof(UINT8); curIndex = curIndex + (UINT32)sizeof(UINT8);
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(AreaSnowInfoStruct)* LOCAL_AREA_SNOW_SUM_MAX), (const void*)(szLocalAreaSnow), (UINT32)(sizeof(AreaSnowInfoStruct) * LOCAL_AREA_SNOW_SUM_MAX)); (void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(UINT32)* LOCAL_AREA_SNOW_SUM_MAX), (const void*)(szLocalAreaSnowId), (UINT32)(sizeof(UINT32) * LOCAL_AREA_SNOW_SUM_MAX));
curIndex = curIndex + (UINT32)(sizeof(AreaSnowInfoStruct) * LOCAL_AREA_SNOW_SUM_MAX); curIndex = curIndex + (UINT32)(sizeof(UINT32) * LOCAL_AREA_SNOW_SUM_MAX);
/*拷贝本地区间ITE切除信息*/
pCiAppDataPointer[curIndex] = gLocalAreaIteCutNum;
curIndex += 1U;
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(UINT16) * ALL_AREA_SNOW_SUM_MAX), (const void*)(gSzLocalAreaIteCutId), (UINT32)(sizeof(UINT16) * ALL_AREA_SNOW_SUM_MAX));
curIndex = curIndex + (UINT32)(sizeof(UINT16) * ALL_AREA_SNOW_SUM_MAX);
/*计算一次CRC*/
crcLength = curIndex - crcIndex;
crcResult = Tioc_CommonCrc32(pCiAppDataPointer + crcIndex, crcLength);
debug_infor_printf((const)"2oo2 m_OcConvertedPtDataArr-CiSendBackDataTempStruSum CRC:%x, Length:%d\n", crcResult, crcLength);
crcIndex = curIndex;
#if 1
/* 拷贝排序信息 */ /* 拷贝排序信息 */
curIndex = as_GetTransferData(pCiAppDataPointer, curIndex); curIndex = as_GetTransferData(pCiAppDataPointer, curIndex);
@@ -1218,12 +1126,6 @@ UINT32 GetCiAppData(UINT8 *pCiAppDataPointer)
(void)memcpy(pCiAppDataPointer + curIndex, &gTiocCanntCutReason, sizeof(UINT8)); (void)memcpy(pCiAppDataPointer + curIndex, &gTiocCanntCutReason, sizeof(UINT8));
curIndex = curIndex + (UINT32)sizeof(UINT8); curIndex = curIndex + (UINT32)sizeof(UINT8);
/*计算一次CRC*/
crcLength = curIndex - crcIndex;
crcResult = Tioc_CommonCrc32(pCiAppDataPointer + crcIndex, crcLength);
debug_infor_printf((const)"2oo2 g_CutoffPointDataBuf-gTiocCanntCutReason CRC:%x, Length:%d\n", crcResult, crcLength);
crcIndex = curIndex;
/*拷贝无直轨计轴占用信息*/ /*拷贝无直轨计轴占用信息*/
curIndex = ToaGetTransferData(pCiAppDataPointer, curIndex); curIndex = ToaGetTransferData(pCiAppDataPointer, curIndex);
@@ -1271,16 +1173,6 @@ UINT32 GetCiAppData(UINT8 *pCiAppDataPointer)
curIndex = curIndex + (UINT32)sizeof(g_strAtsDaMsgSnd); curIndex = curIndex + (UINT32)sizeof(g_strAtsDaMsgSnd);
(void)CommonMemCpy((void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_strAtsDaCfmSnd), (const void *)(&g_strAtsDaCfmSnd), (UINT32)sizeof(g_strAtsDaCfmSnd)); (void)CommonMemCpy((void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_strAtsDaCfmSnd), (const void *)(&g_strAtsDaCfmSnd), (UINT32)sizeof(g_strAtsDaCfmSnd));
curIndex = curIndex + (UINT32)sizeof(g_strAtsDaCfmSnd); curIndex = curIndex + (UINT32)sizeof(g_strAtsDaCfmSnd);
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(AtsMsgCfmStru), (const void*)(&g_strSndAtsCfmFst), (UINT32)sizeof(AtsMsgCfmStru));
curIndex = curIndex + (UINT32)sizeof(AtsMsgCfmStru);
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(AtsMsgCfmStru), (const void*)(&g_strSndAtsEaCfmFst), (UINT32)sizeof(AtsMsgCfmStru));
curIndex = curIndex + (UINT32)sizeof(AtsMsgCfmStru);
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(AtsMsgCfmStru), (const void*)(&g_strSndAtsWlbCfmFst), (UINT32)sizeof(AtsMsgCfmStru));
curIndex = curIndex + (UINT32)sizeof(AtsMsgCfmStru);
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(AtsMsgCfmStru), (const void*)(&g_strSndAtsDaCfmFst), (UINT32)sizeof(AtsMsgCfmStru));
curIndex = curIndex + (UINT32)sizeof(AtsMsgCfmStru);
/*拷贝异地试车线SQAJ状态*/ /*拷贝异地试车线SQAJ状态*/
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT8), (const void*)(&comm_Train_Test_SQAJ_SCX_State), (UINT32)sizeof(UINT8)); (void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT8), (const void*)(&comm_Train_Test_SQAJ_SCX_State), (UINT32)sizeof(UINT8));
curIndex = curIndex + (UINT32)sizeof(UINT8); curIndex = curIndex + (UINT32)sizeof(UINT8);
@@ -1301,12 +1193,6 @@ UINT32 GetCiAppData(UINT8 *pCiAppDataPointer)
(void)CommonMemCpy((void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(LeuToCiDataStru), (const void *)LeuToCiDataStru, (UINT32)sizeof(LeuToCiDataStru)); (void)CommonMemCpy((void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(LeuToCiDataStru), (const void *)LeuToCiDataStru, (UINT32)sizeof(LeuToCiDataStru));
curIndex = curIndex + (UINT32)((LEU_TO_CI_SUM_MAX) * sizeof(LeuToCiDataStruct)); curIndex = curIndex + (UINT32)((LEU_TO_CI_SUM_MAX) * sizeof(LeuToCiDataStruct));
/*计算一次CRC*/
crcLength = curIndex - crcIndex;
crcResult = Tioc_CommonCrc32(pCiAppDataPointer + crcIndex, crcLength);
debug_infor_printf((const)"2oo2 ToaGetTransferData-LeuToCiDataStru CRC:%x, Length:%d\n", crcResult, crcLength);
crcIndex = curIndex;
/* 拷贝停止运营信息 */ /* 拷贝停止运营信息 */
curIndex = Deploy_GetTransferData(pCiAppDataPointer, curIndex); curIndex = Deploy_GetTransferData(pCiAppDataPointer, curIndex);
@@ -1319,21 +1205,13 @@ UINT32 GetCiAppData(UINT8 *pCiAppDataPointer)
curIndex = curIndex + (UINT32)sizeof(LineCommTrainStruct); curIndex = curIndex + (UINT32)sizeof(LineCommTrainStruct);
/*同步相邻联锁区间雨雪发送信息*/ /*同步相邻联锁区间雨雪发送信息*/
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(ToCiAreaSnowStruct)* CI_COM_CI_MAX_NUM), (void*)(szSendCiAreaSnow), (UINT32)(sizeof(ToCiAreaSnowStruct)* CI_COM_CI_MAX_NUM)); (void)CommonMemCpy((const void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(ToCiAreaSnowStruct)* CI_COM_CI_MAX_NUM), (void*)(szSendCiAreaSnow), (UINT32)(sizeof(ToCiAreaSnowStruct)* CI_COM_CI_MAX_NUM));
curIndex = curIndex + (UINT32)(sizeof(ToCiAreaSnowStruct) * CI_COM_CI_MAX_NUM); curIndex = curIndex + (UINT32)(sizeof(ToCiAreaSnowStruct) * CI_COM_CI_MAX_NUM);
/*同步相邻联锁区间接收雨雪信息*/ /*同步相邻联锁区间接收雨雪信息*/
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(ToCiAreaSnowStruct)* CI_COM_CI_MAX_NUM), (void*)(szRecvCiAreaSnow), (UINT32)(sizeof(ToCiAreaSnowStruct)* CI_COM_CI_MAX_NUM)); (void)CommonMemCpy((const void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(ToCiAreaSnowStruct)* CI_COM_CI_MAX_NUM), (void*)(szRecvCiAreaSnow), (UINT32)(sizeof(ToCiAreaSnowStruct)* CI_COM_CI_MAX_NUM));
curIndex = curIndex + (UINT32)(sizeof(ToCiAreaSnowStruct) * CI_COM_CI_MAX_NUM); curIndex = curIndex + (UINT32)(sizeof(ToCiAreaSnowStruct) * CI_COM_CI_MAX_NUM);
/*同步相邻联锁区间ITE切除接收信息*/
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(ToCiAreaIteCutStruct)* CI_COM_CI_MAX_NUM), (void*)(szRecvCiAreaIteCut), (UINT32)(sizeof(ToCiAreaIteCutStruct)* CI_COM_CI_MAX_NUM));
curIndex = curIndex + (UINT32)(sizeof(ToCiAreaIteCutStruct) * CI_COM_CI_MAX_NUM);
/*同步相邻联锁区间ITE切除发送信息*/
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(ToCiAreaIteCutStruct)* CI_COM_CI_MAX_NUM), (void*)(szSendCiAreaIteCut), (UINT32)(sizeof(ToCiAreaIteCutStruct)* CI_COM_CI_MAX_NUM));
curIndex = curIndex + (UINT32)(sizeof(ToCiAreaIteCutStruct) * CI_COM_CI_MAX_NUM);
/*拷贝虚拟无人折返信息*/ /*拷贝虚拟无人折返信息*/
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(VirtualZDZFAJDataStruct), (const void*)(&VirtualZDZFAJData), (UINT32)sizeof(VirtualZDZFAJDataStruct)); (void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(VirtualZDZFAJDataStruct), (const void*)(&VirtualZDZFAJData), (UINT32)sizeof(VirtualZDZFAJDataStruct));
curIndex = curIndex + (UINT32)sizeof(VirtualZDZFAJDataStruct); curIndex = curIndex + (UINT32)sizeof(VirtualZDZFAJDataStruct);
@@ -1347,160 +1225,6 @@ UINT32 GetCiAppData(UINT8 *pCiAppDataPointer)
/* 拷贝本地雨雪命令 */ /* 拷贝本地雨雪命令 */
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT8), (const void*)(&g_LocalSnowModel), (UINT32)sizeof(UINT8)); (void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT8), (const void*)(&g_LocalSnowModel), (UINT32)sizeof(UINT8));
curIndex = curIndex + (UINT32)sizeof(UINT8); curIndex = curIndex + (UINT32)sizeof(UINT8);
/*拷贝本地相邻联锁接受命令信息*/
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT16), (const void*)(&RecvCiCmdDataStruCurSum), (UINT32)sizeof(UINT16));
curIndex = curIndex + (UINT32)sizeof(UINT16);
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(ToCiCommandDataStruct)* RECVCI_CMD_DATA_STRU_SUM_MAX), (void*)(&RecvCiCmdDataStru), (UINT32)(sizeof(ToCiCommandDataStruct)* RECVCI_CMD_DATA_STRU_SUM_MAX));
curIndex = curIndex + (UINT32)(sizeof(ToCiCommandDataStruct) * RECVCI_CMD_DATA_STRU_SUM_MAX);
/*拷贝本地相邻联锁发送命令信息*/
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT16), (const void*)(&SendCiCmdDataStruCurSum), (UINT32)sizeof(UINT16));
curIndex = curIndex + (UINT32)sizeof(UINT16);
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(ToCiCommandDataStruct)* RECVCI_CMD_DATA_STRU_SUM_MAX), (void*)(&SendCiCmdDataStru), (UINT32)(sizeof(ToCiCommandDataStruct)* RECVCI_CMD_DATA_STRU_SUM_MAX));
curIndex = curIndex + (UINT32)(sizeof(ToCiCommandDataStruct) * RECVCI_CMD_DATA_STRU_SUM_MAX);
/*拷贝本地相邻联锁接受动态进路命令信息*/
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT8), (const void*)(&RecvCiDrCmdSum), (UINT32)sizeof(UINT8));
curIndex = curIndex + (UINT32)sizeof(UINT8);
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(ToCiDrCmdDataStruct)* RECVCI_CMD_DATA_STRU_SUM_MAX), (void*)(&RecvCiDrCmdDataStru), (UINT32)(sizeof(ToCiDrCmdDataStruct)* RECVCI_CMD_DATA_STRU_SUM_MAX));
curIndex = curIndex + (UINT32)(sizeof(ToCiDrCmdDataStruct) * RECVCI_CMD_DATA_STRU_SUM_MAX);
/*拷贝本地相邻联锁发送动态进路命令信息*/
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT8), (const void*)(&SendCiDrCmdSum), (UINT32)sizeof(UINT8));
curIndex = curIndex + (UINT32)sizeof(UINT8);
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(ToCiDrCmdDataStruct)* RECVCI_CMD_DATA_STRU_SUM_MAX), (void*)(&SendCiDrCmdDataStru), (UINT32)(sizeof(ToCiDrCmdDataStruct)* RECVCI_CMD_DATA_STRU_SUM_MAX));
curIndex = curIndex + (UINT32)(sizeof(ToCiDrCmdDataStruct) * RECVCI_CMD_DATA_STRU_SUM_MAX);
/*拷贝SSKS闪灯稳灯继电器数据*/
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(SsksLightRelayDataStruct) * SSKS_LIGHT_RELAY_SUM_MAX), (void*)(&gSsksLightRelayData), (UINT32)(sizeof(SsksLightRelayDataStruct) * SSKS_LIGHT_RELAY_SUM_MAX));
curIndex = curIndex + (UINT32)(sizeof(SsksLightRelayDataStruct) * SSKS_LIGHT_RELAY_SUM_MAX);
/*拷贝联络线旁路继电器数据*/
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(ConnectOverrideDataStru) * CONNECT_OVERRIDE_RELAY_SUM_MAX), (void*)(&gConnectOverrideData), (UINT32)(sizeof(ConnectOverrideDataStru) * CONNECT_OVERRIDE_RELAY_SUM_MAX));
curIndex = curIndex + (UINT32)(sizeof(ConnectOverrideDataStru) * CONNECT_OVERRIDE_RELAY_SUM_MAX);
/*拷贝接触网信息*/
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(OhlDataStruct)* OHL_MAX_NUM), (void*)(&OhlDataStru), (UINT32)(sizeof(OhlDataStruct)* OHL_MAX_NUM));
curIndex = curIndex + (UINT32)(sizeof(OhlDataStruct) * OHL_MAX_NUM);
/*拷贝全线区段封锁*/
(void)CommonMemCpy(pCiAppDataPointer + curIndex, (UINT32)sizeof(UINT8),&g_AllSecFlockState, (UINT32)sizeof(UINT8));
curIndex = curIndex + (UINT32)sizeof(UINT8);
(void)CommonMemCpy((void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_strAtsAllFlockMsgFst), (const void *)(&g_strAtsAllFlockMsgFst), (UINT32)sizeof(g_strAtsAllFlockMsgFst));
curIndex = curIndex + (UINT32)sizeof(g_strAtsAllFlockMsgFst);
(void)CommonMemCpy((void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_strAtsAllFlockCfmFst), (const void *)(&g_strAtsAllFlockCfmFst), (UINT32)sizeof(g_strAtsAllFlockCfmFst));
curIndex = curIndex + (UINT32)sizeof(g_strAtsAllFlockCfmFst);
(void)CommonMemCpy((void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_strAtsAllFlockMsgSnd), (const void *)(&g_strAtsAllFlockMsgSnd), (UINT32)sizeof(g_strAtsAllFlockMsgSnd));
curIndex = curIndex + (UINT32)sizeof(g_strAtsAllFlockMsgSnd);
(void)CommonMemCpy((void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_strAtsAllFlockCfmSnd), (const void *)(&g_strAtsAllFlockCfmSnd), (UINT32)sizeof(g_strAtsAllFlockCfmSnd));
curIndex = curIndex + (UINT32)sizeof(g_strAtsAllFlockCfmSnd);
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(AtsMsgCfmStru), (const void*)(&g_strSndAtsAllFlockCfmFst), (UINT32)sizeof(AtsMsgCfmStru));
curIndex = curIndex + (UINT32)sizeof(AtsMsgCfmStru);
/*拷贝ECS动态数据*/
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(ECSDataStruct)* ECS_MAX_NUM), (const void*)(&ECSDataStru), (UINT32)(sizeof(ECSDataStruct)* ECS_MAX_NUM));
curIndex = curIndex + (UINT32)(sizeof(ECSDataStruct) * ECS_MAX_NUM); /*计算一次CRC*/
/*二乘拷贝全线牵引加速度信息*/
pCiAppDataPointer[curIndex] = gAllLineAccelerationState;
curIndex += 1U;
pCiAppDataPointer[curIndex] = gAllLineAccelerationValue;
curIndex += 1U;
/*二乘拷贝全线制动率信息*/
pCiAppDataPointer[curIndex] = gAllLineBrakeRateState;
curIndex += 1U;
pCiAppDataPointer[curIndex] = gAllLineBrakeRateValue;
curIndex += 1U;
/*二乘拷贝区间牵引加速度信息*/
pCiAppDataPointer[curIndex] = gLocalAreaAccelerationNum;
curIndex += 1U;
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(AreaAccelerationInfoStruct)* LOCAL_AREA_SNOW_SUM_MAX), (const void*)(gszLocalAreaAcceleration), (UINT32)(sizeof(AreaAccelerationInfoStruct)* LOCAL_AREA_SNOW_SUM_MAX));
curIndex = curIndex + (UINT32)(sizeof(AreaAccelerationInfoStruct) * LOCAL_AREA_SNOW_SUM_MAX);
/*二乘拷贝区间制动率信息*/
pCiAppDataPointer[curIndex] = gLocalAreaBrakeRateNum;
curIndex += 1U;
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(AreaBrakeRateInfoStruct)* LOCAL_AREA_SNOW_SUM_MAX), (const void*)(gszLocalAreaBrakeRate), (UINT32)(sizeof(AreaBrakeRateInfoStruct)* LOCAL_AREA_SNOW_SUM_MAX));
curIndex = curIndex + (UINT32)(sizeof(AreaBrakeRateInfoStruct) * LOCAL_AREA_SNOW_SUM_MAX);
/*拷贝CESB封锁*/
(void)CommonMemCpy(pCiAppDataPointer + curIndex, (UINT32)sizeof(UINT8), &g_CesbFlockState, (UINT32)sizeof(UINT8));
curIndex = curIndex + (UINT32)sizeof(UINT8);
(void)CommonMemCpy(pCiAppDataPointer + curIndex, (UINT32)sizeof(UINT8), &g_ScxCesbData, (UINT32)sizeof(UINT8));
curIndex = curIndex + (UINT32)sizeof(UINT8);
(void)CommonMemCpy(pCiAppDataPointer + curIndex, (UINT32)sizeof(UINT8), &g_ScxCesbCutData, (UINT32)sizeof(UINT8));
curIndex = curIndex + (UINT32)sizeof(UINT8);
/*CESB网关信息*/
(void)CommonMemCpy((void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_strAtsCesbMsgFst), (const void *)(&g_strAtsCesbMsgFst), (UINT32)sizeof(g_strAtsCesbMsgFst));
curIndex = curIndex + (UINT32)sizeof(g_strAtsCesbMsgFst);
(void)CommonMemCpy((void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_strAtsCesbCfmFst), (const void *)(&g_strAtsCesbCfmFst), (UINT32)sizeof(g_strAtsCesbCfmFst));
curIndex = curIndex + (UINT32)sizeof(g_strAtsCesbCfmFst);
(void)CommonMemCpy((void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_strAtsCesbMsgSnd), (const void *)(&g_strAtsCesbMsgSnd), (UINT32)sizeof(g_strAtsCesbMsgSnd));
curIndex = curIndex + (UINT32)sizeof(g_strAtsCesbMsgSnd);
(void)CommonMemCpy((void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_strAtsCesbCfmSnd), (const void *)(&g_strAtsCesbCfmSnd), (UINT32)sizeof(g_strAtsCesbCfmSnd));
curIndex = curIndex + (UINT32)sizeof(g_strAtsCesbCfmSnd);
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(AtsMsgCfmStru), (const void*)(&g_strSndAtsCesbCfmFst), (UINT32)sizeof(AtsMsgCfmStru));
curIndex = curIndex + (UINT32)sizeof(AtsMsgCfmStru);
/*ATS网关下发的解封解锁信息*/
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_JieFengJieSuoMsgFst), (const void*)(&g_JieFengJieSuoMsgFst), (UINT32)sizeof(g_JieFengJieSuoMsgFst));
curIndex = curIndex + (UINT32)sizeof(g_JieFengJieSuoMsgFst);
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_strAtsJieFengJieSuoCfmFst), (const void*)(&g_strAtsJieFengJieSuoCfmFst), (UINT32)sizeof(g_strAtsJieFengJieSuoCfmFst));
curIndex = curIndex + (UINT32)sizeof(g_strAtsJieFengJieSuoCfmFst);
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_JieFengJieSuoMsgSnd), (const void*)(&g_JieFengJieSuoMsgSnd), (UINT32)sizeof(g_JieFengJieSuoMsgSnd));
curIndex = curIndex + (UINT32)sizeof(g_JieFengJieSuoMsgSnd);
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_strAtsJieFengJieSuoCfmSnd), (const void*)(&g_strAtsJieFengJieSuoCfmSnd), (UINT32)sizeof(g_strAtsJieFengJieSuoCfmSnd));
curIndex = curIndex + (UINT32)sizeof(g_strAtsJieFengJieSuoCfmSnd);
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_SndAtsJieFengJieSuoCfmFst), (const void*)(&g_SndAtsJieFengJieSuoCfmFst), (UINT32)sizeof(g_SndAtsJieFengJieSuoCfmFst));
curIndex = curIndex + (UINT32)sizeof(g_SndAtsJieFengJieSuoCfmFst);
/*ATS网关下发的道岔强转信息*/
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_SwitchForceMsgFst), (const void*)(&g_SwitchForceMsgFst), (UINT32)sizeof(g_SwitchForceMsgFst));
curIndex = curIndex + (UINT32)sizeof(g_SwitchForceMsgFst);
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_SwitchForceCfmFst), (const void*)(&g_SwitchForceCfmFst), (UINT32)sizeof(g_SwitchForceCfmFst));
curIndex = curIndex + (UINT32)sizeof(g_SwitchForceCfmFst);
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_SwitchForceMsgSnd), (const void*)(&g_SwitchForceMsgSnd), (UINT32)sizeof(g_SwitchForceMsgSnd));
curIndex = curIndex + (UINT32)sizeof(g_SwitchForceMsgSnd);
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_SwitchForceCfmSnd), (const void*)(&g_SwitchForceCfmSnd), (UINT32)sizeof(g_SwitchForceCfmSnd));
curIndex = curIndex + (UINT32)sizeof(g_SwitchForceCfmSnd);
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_SndAtsSwitchForceCfmFst), (const void*)(&g_SndAtsSwitchForceCfmFst), (UINT32)sizeof(g_SndAtsSwitchForceCfmFst));
curIndex = curIndex + (UINT32)sizeof(g_SndAtsSwitchForceCfmFst);
/*ATS网关下发的计轴预复位信息*/
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_PhyPreResetMsgFst), (const void*)(&g_PhyPreResetMsgFst), (UINT32)sizeof(g_PhyPreResetMsgFst));
curIndex = curIndex + (UINT32)sizeof(g_PhyPreResetMsgFst);
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_PhyPreResetCfmFst), (const void*)(&g_PhyPreResetCfmFst), (UINT32)sizeof(g_PhyPreResetCfmFst));
curIndex = curIndex + (UINT32)sizeof(g_PhyPreResetCfmFst);
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_PhyPreResetMsgSnd), (const void*)(&g_PhyPreResetMsgSnd), (UINT32)sizeof(g_PhyPreResetMsgSnd));
curIndex = curIndex + (UINT32)sizeof(g_PhyPreResetMsgSnd);
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_PhyPreResetCfmSnd), (const void*)(&g_PhyPreResetCfmSnd), (UINT32)sizeof(g_PhyPreResetCfmSnd));
curIndex = curIndex + (UINT32)sizeof(g_PhyPreResetCfmSnd);
(void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_SndAtsPhyPreResetCfmFst), (const void*)(&g_SndAtsPhyPreResetCfmFst), (UINT32)sizeof(g_SndAtsPhyPreResetCfmFst));
curIndex = curIndex + (UINT32)sizeof(g_SndAtsPhyPreResetCfmFst);
/*获取本控区RC和计轴通信中断设置ARB标志*/
pCiAppDataPointer[curIndex] = aam_GetLocalAllAxisSecArbFlag();
curIndex += 1U;
crcLength = curIndex - crcIndex;
crcResult = Tioc_CommonCrc32(pCiAppDataPointer + crcIndex, crcLength);
debug_infor_printf((const)"2oo2 Deploy_GetTransferData-g_SndAtsPhyPreResetCfmFst CRC:%x, Length:%d\n", crcResult, crcLength);
} }
return curIndex; return curIndex;
} }
@@ -1562,10 +1286,6 @@ UINT8 SetCiAppData(const UINT8 *pCiAppDataPointer,const UINT32 len)
(void)memcpy(&g_AllSnowModel, pCiAppDataPointer + curIndex, sizeof(UINT8)); (void)memcpy(&g_AllSnowModel, pCiAppDataPointer + curIndex, sizeof(UINT8));
curIndex = curIndex + (UINT32)sizeof(UINT8); curIndex = curIndex + (UINT32)sizeof(UINT8);
/*同步全线湿轨级别*/
(void)CommonMemCpy((void*)(&g_AllSnowLevel), (UINT32)sizeof(UINT8), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT8));
curIndex = curIndex + (UINT32)sizeof(UINT8);
/*拷贝应急盘继电器有效周期*/ /*拷贝应急盘继电器有效周期*/
(void)memcpy(&JkjRelayValidCycNum, pCiAppDataPointer + curIndex, sizeof(UINT32)); (void)memcpy(&JkjRelayValidCycNum, pCiAppDataPointer + curIndex, sizeof(UINT32));
curIndex = curIndex + (UINT32)sizeof(UINT32); curIndex = curIndex + (UINT32)sizeof(UINT32);
@@ -1631,38 +1351,14 @@ UINT8 SetCiAppData(const UINT8 *pCiAppDataPointer,const UINT32 len)
(void)memcpy(&g_cTsrSureFlag, pCiAppDataPointer + curIndex, sizeof(UINT8)); (void)memcpy(&g_cTsrSureFlag, pCiAppDataPointer + curIndex, sizeof(UINT8));
curIndex = curIndex + (UINT32)sizeof(UINT8); curIndex = curIndex + (UINT32)sizeof(UINT8);
/*拷贝ZC全线临时限速状态*/ /*拷贝全线临时限速状态*/
(void)memcpy(&g_AllLineTsrState, pCiAppDataPointer + curIndex, sizeof(UINT8)); (void)memcpy(&g_AllLineTsrState, pCiAppDataPointer + curIndex, sizeof(UINT8));
curIndex = curIndex + (UINT32)sizeof(UINT8); curIndex = curIndex + (UINT32)sizeof(UINT8);
/*拷贝ZC全线临时限速速度*/ /*拷贝全线临时限速速度*/
(void)memcpy(&g_AllLineTsrSpeed, pCiAppDataPointer + curIndex, sizeof(UINT8)); (void)memcpy(&g_AllLineTsrSpeed, pCiAppDataPointer + curIndex, sizeof(UINT8));
curIndex = curIndex + (UINT32)sizeof(UINT8); curIndex = curIndex + (UINT32)sizeof(UINT8);
/*拷贝TMC全线限速状态*/
(void)CommonMemCpy((void*)(&gCacheAllSpeedState), (UINT32)sizeof(UINT8), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT8));
curIndex = curIndex + (UINT32)sizeof(UINT8);
/*拷贝TMC全线限速速度*/
(void)CommonMemCpy((void*)(&gCacheAllSpeedNum), (UINT32)sizeof(UINT8), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT8));
curIndex = curIndex + (UINT32)sizeof(UINT8);
/*拷贝台风限速信息*/
(void)CommonMemCpy((void*)(&gTyphSpeedInfo), (UINT32)sizeof(TyphoonSpeedDataStruct), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(TyphoonSpeedDataStruct));
curIndex = curIndex + (UINT32)sizeof(TyphoonSpeedDataStruct);
/*拷贝临时限速数量*/
(void)CommonMemCpy((void*)(&g_TsrTMCSum), (UINT32)sizeof(UINT8), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT8));
curIndex = curIndex + (UINT32)sizeof(UINT8);
/*拷贝临时限速数据结构体*/
(void)CommonMemCpy((void*)(g_TsrTMCDataStru), (UINT32)(sizeof(TsrTMCDataStruct)* TSR_MAX_SUM), (const void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(TsrTMCDataStruct)* TSR_MAX_SUM));
curIndex = curIndex + (UINT32)(sizeof(TsrTMCDataStruct) * TSR_MAX_SUM);
/*拷贝限速区段数据结构体*/
(void)CommonMemCpy((void*)(gSpeedLimitSecData), (UINT32)(sizeof(SpeedLimitSecInfo)* MAX_LINE_SEC_NUM), (const void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(SpeedLimitSecInfo)* MAX_LINE_SEC_NUM));
curIndex = curIndex + (UINT32)(sizeof(SpeedLimitSecInfo) * MAX_LINE_SEC_NUM);
/*拷贝进路数据结构体*/ /*拷贝进路数据结构体*/
curResult = CopyValidSetDataStru(pCiAppDataPointer + curIndex, (void *)&RouteDataStru[0], ROUTE_SUM_MAX, (UINT16)sizeof(RouteDataStruct)); curResult = CopyValidSetDataStru(pCiAppDataPointer + curIndex, (void *)&RouteDataStru[0], ROUTE_SUM_MAX, (UINT16)sizeof(RouteDataStruct));
curIndex = curIndex + curResult; curIndex = curIndex + curResult;
@@ -1952,16 +1648,10 @@ UINT8 SetCiAppData(const UINT8 *pCiAppDataPointer,const UINT32 len)
LocalAreaSnowNum = pCiAppDataPointer[curIndex]; LocalAreaSnowNum = pCiAppDataPointer[curIndex];
curIndex += 1U; curIndex += 1U;
(void)CommonMemCpy((const void*)(szLocalAreaSnow), (UINT32)(sizeof(AreaSnowInfoStruct) * LOCAL_AREA_SNOW_SUM_MAX), (const void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(AreaSnowInfoStruct) * LOCAL_AREA_SNOW_SUM_MAX)); (void)CommonMemCpy((const void*)(szLocalAreaSnowId), (UINT32)(sizeof(UINT32) * LOCAL_AREA_SNOW_SUM_MAX), (void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(UINT32) * LOCAL_AREA_SNOW_SUM_MAX));
curIndex = curIndex + (UINT32)(sizeof(AreaSnowInfoStruct) * LOCAL_AREA_SNOW_SUM_MAX); curIndex = curIndex + (UINT32)(sizeof(UINT32) * LOCAL_AREA_SNOW_SUM_MAX);
/*设置本地区间ITE切除信息*/
gLocalAreaIteCutNum = pCiAppDataPointer[curIndex];
curIndex += 1U;
(void)CommonMemCpy((const void*)(gSzLocalAreaIteCutId), (UINT32)(sizeof(UINT16) * ALL_AREA_SNOW_SUM_MAX), (const void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(UINT16) * ALL_AREA_SNOW_SUM_MAX));
curIndex = curIndex + (UINT32)(sizeof(UINT16) * ALL_AREA_SNOW_SUM_MAX);
#if 1
/* 拷贝排序信息 */ /* 拷贝排序信息 */
curIndex = as_SetTransferData(pCiAppDataPointer, curIndex); curIndex = as_SetTransferData(pCiAppDataPointer, curIndex);
@@ -2044,15 +1734,6 @@ UINT8 SetCiAppData(const UINT8 *pCiAppDataPointer,const UINT32 len)
(void)CommonMemCpy((void *)(&g_strAtsDaCfmSnd), (UINT32)sizeof(g_strAtsDaCfmSnd), (const void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_strAtsDaCfmSnd)); (void)CommonMemCpy((void *)(&g_strAtsDaCfmSnd), (UINT32)sizeof(g_strAtsDaCfmSnd), (const void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_strAtsDaCfmSnd));
curIndex = curIndex + (UINT32)sizeof(g_strAtsDaCfmSnd); curIndex = curIndex + (UINT32)sizeof(g_strAtsDaCfmSnd);
(void)CommonMemCpy((void*)(&g_strSndAtsCfmFst), (UINT32)sizeof(AtsMsgCfmStru), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(AtsMsgCfmStru));
curIndex = curIndex + (UINT32)sizeof(AtsMsgCfmStru);
(void)CommonMemCpy((void*)(&g_strSndAtsEaCfmFst), (UINT32)sizeof(AtsMsgCfmStru), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(AtsMsgCfmStru));
curIndex = curIndex + (UINT32)sizeof(AtsMsgCfmStru);
(void)CommonMemCpy((void*)(&g_strSndAtsWlbCfmFst), (UINT32)sizeof(AtsMsgCfmStru), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(AtsMsgCfmStru));
curIndex = curIndex + (UINT32)sizeof(AtsMsgCfmStru);
(void)CommonMemCpy((void*)(&g_strSndAtsDaCfmFst), (UINT32)sizeof(AtsMsgCfmStru), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(AtsMsgCfmStru));
curIndex = curIndex + (UINT32)sizeof(AtsMsgCfmStru);
/*拷贝异地试车线SQAJ状态*/ /*拷贝异地试车线SQAJ状态*/
(void)CommonMemCpy((void*)(&comm_Train_Test_SQAJ_SCX_State), (UINT32)sizeof(UINT8), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT8)); (void)CommonMemCpy((void*)(&comm_Train_Test_SQAJ_SCX_State), (UINT32)sizeof(UINT8), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT8));
curIndex = curIndex + (UINT32)sizeof(UINT8); curIndex = curIndex + (UINT32)sizeof(UINT8);
@@ -2073,6 +1754,7 @@ UINT8 SetCiAppData(const UINT8 *pCiAppDataPointer,const UINT32 len)
(void)CommonMemCpy((void*)(LeuToCiDataStru), (UINT32)sizeof(LeuToCiDataStru), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(LeuToCiDataStru)); (void)CommonMemCpy((void*)(LeuToCiDataStru), (UINT32)sizeof(LeuToCiDataStru), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(LeuToCiDataStru));
curIndex = curIndex + (UINT32)sizeof(LeuToCiDataStru); curIndex = curIndex + (UINT32)sizeof(LeuToCiDataStru);
#endif
/*拷贝停止运营信息*/ /*拷贝停止运营信息*/
curIndex = Deploy_SetTransferData(pCiAppDataPointer, curIndex); curIndex = Deploy_SetTransferData(pCiAppDataPointer, curIndex);
@@ -2092,14 +1774,6 @@ UINT8 SetCiAppData(const UINT8 *pCiAppDataPointer,const UINT32 len)
(void)CommonMemCpy((void*)(szRecvCiAreaSnow), (UINT32)(sizeof(ToCiAreaSnowStruct)* CI_COM_CI_MAX_NUM), (const void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(ToCiAreaSnowStruct)* CI_COM_CI_MAX_NUM)); (void)CommonMemCpy((void*)(szRecvCiAreaSnow), (UINT32)(sizeof(ToCiAreaSnowStruct)* CI_COM_CI_MAX_NUM), (const void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(ToCiAreaSnowStruct)* CI_COM_CI_MAX_NUM));
curIndex = curIndex + (UINT32)(sizeof(ToCiAreaSnowStruct) * CI_COM_CI_MAX_NUM); curIndex = curIndex + (UINT32)(sizeof(ToCiAreaSnowStruct) * CI_COM_CI_MAX_NUM);
/*同步相邻联锁区间ITE切除接收信息*/
(void)CommonMemCpy((void*)(szRecvCiAreaIteCut), (UINT32)(sizeof(ToCiAreaIteCutStruct)* CI_COM_CI_MAX_NUM), (const void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(ToCiAreaIteCutStruct)* CI_COM_CI_MAX_NUM));
curIndex = curIndex + (UINT32)(sizeof(ToCiAreaIteCutStruct) * CI_COM_CI_MAX_NUM);
/*同步相邻联锁区间ITE切除发送信息*/
(void)CommonMemCpy((void*)(szSendCiAreaIteCut), (UINT32)(sizeof(ToCiAreaIteCutStruct)* CI_COM_CI_MAX_NUM), (const void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(ToCiAreaIteCutStruct)* CI_COM_CI_MAX_NUM));
curIndex = curIndex + (UINT32)(sizeof(ToCiAreaIteCutStruct) * CI_COM_CI_MAX_NUM);
/*拷贝虚拟无人折返信息*/ /*拷贝虚拟无人折返信息*/
(void)CommonMemCpy((void*)(&VirtualZDZFAJData), (UINT32)sizeof(VirtualZDZFAJDataStruct), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(VirtualZDZFAJDataStruct)); (void)CommonMemCpy((void*)(&VirtualZDZFAJData), (UINT32)sizeof(VirtualZDZFAJDataStruct), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(VirtualZDZFAJDataStruct));
curIndex = curIndex + (UINT32)sizeof(VirtualZDZFAJDataStruct); curIndex = curIndex + (UINT32)sizeof(VirtualZDZFAJDataStruct);
@@ -2114,156 +1788,7 @@ UINT8 SetCiAppData(const UINT8 *pCiAppDataPointer,const UINT32 len)
/*同步本地雨雪命令*/ /*同步本地雨雪命令*/
(void)CommonMemCpy((void*)(&g_LocalSnowModel), (UINT32)sizeof(UINT8), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT8)); (void)CommonMemCpy((void*)(&g_LocalSnowModel), (UINT32)sizeof(UINT8), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT8));
curIndex = curIndex + (UINT32)sizeof(UINT8); curIndex = curIndex + (UINT32)sizeof(UINT8);
#endif
/*拷贝本地相邻联锁接受命令信息*/
(void)CommonMemCpy((void*)(&RecvCiCmdDataStruCurSum), (UINT32)sizeof(UINT16), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT16));
curIndex = curIndex + (UINT32)sizeof(UINT16);
(void)CommonMemCpy((void*)(&RecvCiCmdDataStru), (UINT32)(sizeof(ToCiCommandDataStruct)* RECVCI_CMD_DATA_STRU_SUM_MAX), (const void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(ToCiCommandDataStruct)* RECVCI_CMD_DATA_STRU_SUM_MAX));
curIndex = curIndex + (UINT32)(sizeof(ToCiCommandDataStruct) * RECVCI_CMD_DATA_STRU_SUM_MAX);
/*拷贝本地相邻联锁发送命令信息*/
(void)CommonMemCpy((void*)(&SendCiCmdDataStruCurSum), (UINT32)sizeof(UINT16), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT16));
curIndex = curIndex + (UINT32)sizeof(UINT16);
(void)CommonMemCpy((void*)(&SendCiCmdDataStru), (UINT32)(sizeof(ToCiCommandDataStruct)* RECVCI_CMD_DATA_STRU_SUM_MAX), (const void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(ToCiCommandDataStruct)* RECVCI_CMD_DATA_STRU_SUM_MAX));
curIndex = curIndex + (UINT32)(sizeof(ToCiCommandDataStruct) * RECVCI_CMD_DATA_STRU_SUM_MAX);
/*拷贝本地相邻联锁接受动态进路命令信息*/
(void)CommonMemCpy((void*)(&RecvCiDrCmdSum), (UINT32)sizeof(UINT8), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT8));
curIndex = curIndex + (UINT32)sizeof(UINT8);
(void)CommonMemCpy((void*)(&RecvCiDrCmdDataStru), (UINT32)(sizeof(ToCiDrCmdDataStruct)* RECVCI_CMD_DATA_STRU_SUM_MAX), (const void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(ToCiDrCmdDataStruct)* RECVCI_CMD_DATA_STRU_SUM_MAX));
curIndex = curIndex + (UINT32)(sizeof(ToCiDrCmdDataStruct) * RECVCI_CMD_DATA_STRU_SUM_MAX);
/*拷贝本地相邻联锁发送动态进路命令信息*/
(void)CommonMemCpy((void*)(&SendCiDrCmdSum), (UINT32)sizeof(UINT8), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT8));
curIndex = curIndex + (UINT32)sizeof(UINT8);
(void)CommonMemCpy((void*)(&SendCiDrCmdDataStru), (UINT32)(sizeof(ToCiDrCmdDataStruct)* RECVCI_CMD_DATA_STRU_SUM_MAX), (const void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(ToCiDrCmdDataStruct)* RECVCI_CMD_DATA_STRU_SUM_MAX));
curIndex = curIndex + (UINT32)(sizeof(ToCiDrCmdDataStruct) * RECVCI_CMD_DATA_STRU_SUM_MAX);
/*同步SSKS闪灯稳灯继电器数据*/
(void)CommonMemCpy((void*)(&gSsksLightRelayData), (UINT32)(sizeof(SsksLightRelayDataStruct)* SSKS_LIGHT_RELAY_SUM_MAX), (const void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(SsksLightRelayDataStruct)* SSKS_LIGHT_RELAY_SUM_MAX));
curIndex = curIndex + (UINT32)(sizeof(SsksLightRelayDataStruct) * SSKS_LIGHT_RELAY_SUM_MAX);
/*拷贝联络线旁路继电器数据*/
(void)CommonMemCpy((void*)(&gConnectOverrideData), (UINT32)(sizeof(ConnectOverrideDataStru)* CONNECT_OVERRIDE_RELAY_SUM_MAX), (const void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(ConnectOverrideDataStru)* CONNECT_OVERRIDE_RELAY_SUM_MAX));
curIndex = curIndex + (UINT32)(sizeof(ConnectOverrideDataStru) * CONNECT_OVERRIDE_RELAY_SUM_MAX);
/*拷贝接触网信息*/
(void)CommonMemCpy((void*)(&OhlDataStru), (UINT32)(sizeof(OhlDataStruct)* OHL_MAX_NUM), (const void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(OhlDataStruct)* OHL_MAX_NUM));
curIndex = curIndex + (UINT32)(sizeof(OhlDataStruct) * OHL_MAX_NUM);
/*设置全线区段封锁标志*/
g_AllSecFlockState = pCiAppDataPointer[curIndex];
curIndex += 1U;
/*设置全线区段封锁信息*/
(void)CommonMemCpy((void *)(&g_strAtsAllFlockMsgFst), (UINT32)sizeof(g_strAtsAllFlockMsgFst), (const void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_strAtsAllFlockMsgFst));
curIndex = curIndex + (UINT32)sizeof(g_strAtsAllFlockMsgFst);
(void)CommonMemCpy((void *)(&g_strAtsAllFlockCfmFst), (UINT32)sizeof(g_strAtsAllFlockCfmFst), (const void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_strAtsAllFlockCfmFst));
curIndex = curIndex + (UINT32)sizeof(g_strAtsAllFlockCfmFst);
(void)CommonMemCpy((void *)(&g_strAtsAllFlockMsgSnd), (UINT32)sizeof(g_strAtsAllFlockMsgSnd), (const void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_strAtsAllFlockMsgSnd));
curIndex = curIndex + (UINT32)sizeof(g_strAtsAllFlockMsgSnd);
(void)CommonMemCpy((void *)(&g_strAtsAllFlockCfmSnd), (UINT32)sizeof(g_strAtsAllFlockCfmSnd), (const void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_strAtsAllFlockCfmSnd));
curIndex = curIndex + (UINT32)sizeof(g_strAtsAllFlockCfmSnd);
(void)CommonMemCpy((void*)(&g_strSndAtsAllFlockCfmFst), (UINT32)sizeof(AtsMsgCfmStru), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(AtsMsgCfmStru));
curIndex = curIndex + (UINT32)sizeof(AtsMsgCfmStru);
/*同步ECS动态数据*/
(void)CommonMemCpy((void*)(&ECSDataStru), (UINT32)(sizeof(ECSDataStruct)* ECS_MAX_NUM), (const void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(ECSDataStruct)* ECS_MAX_NUM));
curIndex = curIndex + (UINT32)(sizeof(ECSDataStruct) * ECS_MAX_NUM);
/*二乘同步全线牵引加速度信息*/
gAllLineAccelerationState = pCiAppDataPointer[curIndex];
curIndex += 1U;
gAllLineAccelerationValue = pCiAppDataPointer[curIndex];
curIndex += 1U;
/*二乘同步全线制动率信息*/
gAllLineBrakeRateState = pCiAppDataPointer[curIndex];
curIndex += 1U;
gAllLineBrakeRateValue = pCiAppDataPointer[curIndex];
curIndex += 1U;
/*二乘同步区间牵引加速度信息*/
gLocalAreaAccelerationNum = pCiAppDataPointer[curIndex];
curIndex += 1U;
(void)CommonMemCpy((void*)(gszLocalAreaAcceleration), (UINT32)(sizeof(AreaAccelerationInfoStruct)* LOCAL_AREA_SNOW_SUM_MAX), (const void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(AreaAccelerationInfoStruct)* LOCAL_AREA_SNOW_SUM_MAX));
curIndex = curIndex + (UINT32)(sizeof(AreaAccelerationInfoStruct) * LOCAL_AREA_SNOW_SUM_MAX);
/*二乘同步区间制动率信息*/
gLocalAreaBrakeRateNum = pCiAppDataPointer[curIndex];
curIndex += 1U;
(void)CommonMemCpy((void*)(gszLocalAreaBrakeRate), (UINT32)(sizeof(AreaBrakeRateInfoStruct)* LOCAL_AREA_SNOW_SUM_MAX), (const void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(AreaBrakeRateInfoStruct)* LOCAL_AREA_SNOW_SUM_MAX));
curIndex = curIndex + (UINT32)(sizeof(AreaBrakeRateInfoStruct) * LOCAL_AREA_SNOW_SUM_MAX);
/*设置CESB状态标志*/
g_CesbFlockState = pCiAppDataPointer[curIndex];
curIndex += 1U;
g_ScxCesbData = pCiAppDataPointer[curIndex];
curIndex += 1U;
g_ScxCesbCutData = pCiAppDataPointer[curIndex];
curIndex += 1U;
/*同步CESB网关消息*/
(void)CommonMemCpy((void *)(&g_strAtsCesbMsgFst), (UINT32)sizeof(g_strAtsCesbMsgFst), (const void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_strAtsCesbMsgFst));
curIndex = curIndex + (UINT32)sizeof(g_strAtsCesbMsgFst);
(void)CommonMemCpy((void *)(&g_strAtsCesbCfmFst), (UINT32)sizeof(g_strAtsCesbCfmFst), (const void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_strAtsCesbCfmFst));
curIndex = curIndex + (UINT32)sizeof(g_strAtsCesbCfmFst);
(void)CommonMemCpy((void *)(&g_strAtsCesbMsgSnd), (UINT32)sizeof(g_strAtsCesbMsgSnd), (const void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_strAtsCesbMsgSnd));
curIndex = curIndex + (UINT32)sizeof(g_strAtsCesbMsgSnd);
(void)CommonMemCpy((void *)(&g_strAtsCesbCfmSnd), (UINT32)sizeof(g_strAtsCesbCfmSnd), (const void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_strAtsCesbCfmSnd));
curIndex = curIndex + (UINT32)sizeof(g_strAtsCesbCfmSnd);
(void)CommonMemCpy((void*)(&g_strSndAtsCesbCfmFst), (UINT32)sizeof(AtsMsgCfmStru), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(AtsMsgCfmStru));
curIndex = curIndex + (UINT32)sizeof(AtsMsgCfmStru);
/*同步ATS网关全站解封解锁消息*/
(void)CommonMemCpy((void*)(&g_JieFengJieSuoMsgFst), (UINT32)sizeof(g_JieFengJieSuoMsgFst), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_JieFengJieSuoMsgFst));
curIndex = curIndex + (UINT32)sizeof(g_JieFengJieSuoMsgFst);
(void)CommonMemCpy((void*)(&g_strAtsJieFengJieSuoCfmFst), (UINT32)sizeof(g_strAtsJieFengJieSuoCfmFst), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_strAtsJieFengJieSuoCfmFst));
curIndex = curIndex + (UINT32)sizeof(g_strAtsJieFengJieSuoCfmFst);
(void)CommonMemCpy((void*)(&g_JieFengJieSuoMsgSnd), (UINT32)sizeof(g_JieFengJieSuoMsgSnd), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_JieFengJieSuoMsgSnd));
curIndex = curIndex + (UINT32)sizeof(g_JieFengJieSuoMsgSnd);
(void)CommonMemCpy((void*)(&g_strAtsJieFengJieSuoCfmSnd), (UINT32)sizeof(g_strAtsJieFengJieSuoCfmSnd), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_strAtsJieFengJieSuoCfmSnd));
curIndex = curIndex + (UINT32)sizeof(g_strAtsJieFengJieSuoCfmSnd);
(void)CommonMemCpy((void*)(&g_SndAtsJieFengJieSuoCfmFst), (UINT32)sizeof(g_SndAtsJieFengJieSuoCfmFst), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_SndAtsJieFengJieSuoCfmFst));
curIndex = curIndex + (UINT32)sizeof(g_SndAtsJieFengJieSuoCfmFst);
/*同步ATS网关道岔强转消息*/
(void)CommonMemCpy((void*)(&g_SwitchForceMsgFst), (UINT32)sizeof(g_SwitchForceMsgFst), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_SwitchForceMsgFst));
curIndex = curIndex + (UINT32)sizeof(g_SwitchForceMsgFst);
(void)CommonMemCpy((void*)(&g_SwitchForceCfmFst), (UINT32)sizeof(g_SwitchForceCfmFst), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_SwitchForceCfmFst));
curIndex = curIndex + (UINT32)sizeof(g_SwitchForceCfmFst);
(void)CommonMemCpy((void*)(&g_SwitchForceMsgSnd), (UINT32)sizeof(g_SwitchForceMsgSnd), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_SwitchForceMsgSnd));
curIndex = curIndex + (UINT32)sizeof(g_SwitchForceMsgSnd);
(void)CommonMemCpy((void*)(&g_SwitchForceCfmSnd), (UINT32)sizeof(g_SwitchForceCfmSnd), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_SwitchForceCfmSnd));
curIndex = curIndex + (UINT32)sizeof(g_SwitchForceCfmSnd);
(void)CommonMemCpy((void*)(&g_SndAtsSwitchForceCfmFst), (UINT32)sizeof(g_SndAtsSwitchForceCfmFst), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_SndAtsSwitchForceCfmFst));
curIndex = curIndex + (UINT32)sizeof(g_SndAtsSwitchForceCfmFst);
/*同步ATS网关计轴预复位消息*/
(void)CommonMemCpy((void*)(&g_PhyPreResetMsgFst), (UINT32)sizeof(g_PhyPreResetMsgFst), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_PhyPreResetMsgFst));
curIndex = curIndex + (UINT32)sizeof(g_PhyPreResetMsgFst);
(void)CommonMemCpy((void*)(&g_PhyPreResetCfmFst), (UINT32)sizeof(g_PhyPreResetCfmFst), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_PhyPreResetCfmFst));
curIndex = curIndex + (UINT32)sizeof(g_PhyPreResetCfmFst);
(void)CommonMemCpy((void*)(&g_PhyPreResetMsgSnd), (UINT32)sizeof(g_PhyPreResetMsgSnd), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_PhyPreResetMsgSnd));
curIndex = curIndex + (UINT32)sizeof(g_PhyPreResetMsgSnd);
(void)CommonMemCpy((void*)(&g_PhyPreResetCfmSnd), (UINT32)sizeof(g_PhyPreResetCfmSnd), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_PhyPreResetCfmSnd));
curIndex = curIndex + (UINT32)sizeof(g_PhyPreResetCfmSnd);
(void)CommonMemCpy((void*)(&g_SndAtsPhyPreResetCfmFst), (UINT32)sizeof(g_SndAtsPhyPreResetCfmFst), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(g_SndAtsPhyPreResetCfmFst));
curIndex = curIndex + (UINT32)sizeof(g_SndAtsPhyPreResetCfmFst);
/*设置本控区RC和计轴通信中断设置ARB标志*/
aam_SetLocalAllAxisSecArbFlag(pCiAppDataPointer[curIndex]);
curIndex += 1U;
rtn = 1u; rtn = 1u;
} }
@@ -56,8 +56,6 @@
#include "../Route/LogicalRouteDataManage.h" #include "../Route/LogicalRouteDataManage.h"
#include "../Route/LongRouteDataManage.h" #include "../Route/LongRouteDataManage.h"
#include "../ReverseCut/ReverseCutDataManage.h" #include "../ReverseCut/ReverseCutDataManage.h"
#include "../SsksLightRelay/SsksLightRelayDataManage.h"
#include "AxisAssertManageAPI.h"
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
File diff suppressed because it is too large Load Diff
@@ -374,10 +374,11 @@ QueueStruct* Get2oo2CiToAxisDataQueue(void);
/* /*
* 功能描述: 将队列中的数据传输出去 * 功能描述: 将队列中的数据传输出去
* 参数说明: * 参数说明: UINT8* thisString, 本周期数据
* 返回值 * 返回值 0: 打印失败
* 1: 打印成功
*/ */
void SendOut_LogBuff(void); void SendOut_LogBuff();
@@ -385,7 +386,7 @@ void SendOut_LogBuff(void);
void debug_infor_printf(char* debug_string, ...); void debug_infor_printf(char* debug_string, ...);
void debug_out_array(UINT8 mode, UINT8* debug_array, UINT16 len); void debug_out_array(UINT8 mode, UINT8* debug_array, UINT16 len);
void DarkInfoPack(UINT16 mode, UINT8* debug_array, UINT16 len);
UINT8 OutnetSafeRecv(UINT16* srcTypeId, UINT16* srcLogicId, UINT8* data, UINT32* dataLen, UINT32 dataMaxLen); UINT8 OutnetSafeRecv(UINT16* srcTypeId, UINT16* srcLogicId, UINT8* data, UINT32* dataLen, UINT32 dataMaxLen);
UINT8 InnetSafeRecv(UINT16* srcTypeId, UINT16* srcLogicId, UINT8* data, UINT32* dataLen, UINT32 dataMaxLen); UINT8 InnetSafeRecv(UINT16* srcTypeId, UINT16* srcLogicId, UINT8* data, UINT32* dataLen, UINT32 dataMaxLen);
@@ -107,13 +107,7 @@ void SetAutoRouteSetFlag(const UINT16 autoRouteId, const UINT8 setState)
} }
} }
/*
* 功能描述:获取自动进路动态数据结构体
* 参数说明:无
* 返 回 值:自动进路动态数据结构体
* Created By LQ 2025.05.26
*/
AutoRouteDataStruct* GetAutoRouteDataStr(void)
{
return AutoRouteDataStru;
}
@@ -56,13 +56,7 @@ UINT8 GetAutoRouteSetFlag(const UINT16 autoRouteId);
*/ */
void SetAutoRouteSetFlag(const UINT16 autoRouteId, const UINT8 setState); void SetAutoRouteSetFlag(const UINT16 autoRouteId, const UINT8 setState);
/*
* 功能描述:获取自动进路动态数据结构体
* 参数说明:无
* 返 回 值:自动进路动态数据结构体
* Created By LQ 2025.05.26
*/
AutoRouteDataStruct* GetAutoRouteDataStr(void);
#ifdef __cplusplus #ifdef __cplusplus
} }
@@ -25,7 +25,6 @@
#define AAM_BAD_NEAR 0x03u /* 坏车接近 */ #define AAM_BAD_NEAR 0x03u /* 坏车接近 */
#define AAM_NO_TRAIN_NEAR 0x04u /* 无车接近 */ #define AAM_NO_TRAIN_NEAR 0x04u /* 无车接近 */
#define AAM_GOOD_OCC 0x05u /* 好车占用 */ #define AAM_GOOD_OCC 0x05u /* 好车占用 */
#define AAM_SLEEP_OCC 0x06u /* 休眠车占用 */
#define AAM_API_AC_ARB 0x01u /* 计轴ARB*/ #define AAM_API_AC_ARB 0x01u /* 计轴ARB*/
@@ -48,10 +47,6 @@
#define AAM_COMM_BAD_ARB_YES (0x55U) /*计轴系统通信中断ARB有效*/ #define AAM_COMM_BAD_ARB_YES (0x55U) /*计轴系统通信中断ARB有效*/
#define AAM_COMM_BAD_ARB_NO (0xAAU) /*计轴系统通信中断ARB无效*/ #define AAM_COMM_BAD_ARB_NO (0xAAU) /*计轴系统通信中断ARB无效*/
#define LOCAL_ALL_AXIS_SEC_ARB_DEFAULT ((UINT8)0xFFU) /*本控区RC和计轴通信中断设置ARB标志-默认*/
#define LOCAL_ALL_AXIS_SEC_ARB_YES ((UINT8)0x55U) /*本控区RC和计轴通信中断设置ARB标志-有效*/
#define LOCAL_ALL_AXIS_SEC_ARB_NO ((UINT8)0xAAU) /*本控区RC和计轴通信中断设置ARB标志-无效*/
/** 定义计轴诊断信息结构体 */ /** 定义计轴诊断信息结构体 */
typedef struct typedef struct
{ {
@@ -64,6 +59,7 @@ typedef struct
UINT8 tailEnterTrainCnt; /* 进入的列车尾数量 */ UINT8 tailEnterTrainCnt; /* 进入的列车尾数量 */
UINT16 tailEnterTrainId[SECTION_REL_ENVELOPE_SUM_MAX]; /* 列车尾进入的计轴 */ UINT16 tailEnterTrainId[SECTION_REL_ENVELOPE_SUM_MAX]; /* 列车尾进入的计轴 */
UINT8 redunOverCanArb; /*冗余结束后能否判为ARB标志 空闲时设置为0x55*/ UINT8 redunOverCanArb; /*冗余结束后能否判为ARB标志 空闲时设置为0x55*/
UINT8 AxisCommBadArbFlag; /*计轴通信中断可判ARB有效标志:0x55-有效,0xAA-无效*/
}AxisAsserStruct; }AxisAsserStruct;
@@ -2,7 +2,6 @@
static AxisAsserStruct gs_AxisAssert[AXIS_SECTION_SUM_MAX] = {0u}; /** 计轴故障诊断数据缓存 */ static AxisAsserStruct gs_AxisAssert[AXIS_SECTION_SUM_MAX] = {0u}; /** 计轴故障诊断数据缓存 */
static UINT8 gs_InitEndlineFlag = AAM_END_LINE_UNINIT; /* 尽头线ARB特殊处理标志 */ static UINT8 gs_InitEndlineFlag = AAM_END_LINE_UNINIT; /* 尽头线ARB特殊处理标志 */
UINT8 gLocalAllAxisSecArbFlag = LOCAL_ALL_AXIS_SEC_ARB_DEFAULT; /*本控区RC和计轴通信中断设置ARB标志-默认*/
/** /**
@@ -541,4 +540,54 @@ void aam_SetAxisRedunCanArbFlag(const UINT16 acIndex, const UINT8 redunOverArbFl
{ {
; /*不做处理*/ ; /*不做处理*/
} }
}
/*
* 功能描述:设置指定ID计轴区段计轴通信中断可判ARB标志
* 参数说明:const UINT16 acIndex 计轴索引
* const UINT8 cCommBadArbFlag 计轴通信中断可判ARB标志
* 返 回 值:无
* Created By LQ 2025.02.24
*/
void aam_SetAxisCommBadArbFlag(const UINT16 acIndex, const UINT8 cCommBadArbFlag)
{
if ((0U != acIndex) && (AXIS_SECTION_SUM_MAX > acIndex))
{
if ((AAM_COMM_BAD_ARB_YES == cCommBadArbFlag) || (AAM_COMM_BAD_ARB_NO == cCommBadArbFlag))
{
gs_AxisAssert[acIndex].AxisCommBadArbFlag = cCommBadArbFlag;
}
else
{
; /*不做处理*/
}
}
else
{
; /*不做处理*/
}
}
/*
* 功能描述:获取指定ID计轴区段计轴通信中断可判ARB标志
* 参数说明:const UINT16 acIndex 计轴索引
* 返 回 值:0x55 有效
* 0xAA 无效
* Created By LQ 2025.02.24
*/
UINT8 aam_GetAxisCommBadArbFlag(const UINT16 acIndex)
{
UINT8 ret = AAM_COMM_BAD_ARB_NO;
if ((0U != acIndex) && (acIndex < AXIS_SECTION_SUM_MAX))
{
ret = gs_AxisAssert[acIndex].AxisCommBadArbFlag;
}
else
{
;
}
return ret;
} }
@@ -7,8 +7,6 @@
#include "AxisAssertDefine.h" #include "AxisAssertDefine.h"
#include "ELMDataPrepare.h" #include "ELMDataPrepare.h"
extern UINT8 gLocalAllAxisSecArbFlag; /*本控区RC和计轴通信中断设置ARB标志-默认*/
/** /**
* @brief 初始化计轴诊断信息 * @brief 初始化计轴诊断信息
* @param[in] * @param[in]
@@ -229,4 +227,22 @@ UINT8 aam_GetAxisRedunCanArbFlag(const UINT16 acIndex);
*/ */
void aam_SetAxisRedunCanArbFlag(const UINT16 acIndex, const UINT8 redunOverArbFlag); void aam_SetAxisRedunCanArbFlag(const UINT16 acIndex, const UINT8 redunOverArbFlag);
/*
* 功能描述:设置指定ID计轴区段计轴通信中断可判ARB标志
* 参数说明:const UINT16 acIndex 计轴索引
* const UINT8 cCommBadArbFlag 计轴通信中断可判ARB标志
* 返 回 值:无
* Created By LQ 2025.02.24
*/
void aam_SetAxisCommBadArbFlag(const UINT16 acIndex, const UINT8 cCommBadArbFlag);
/*
* 功能描述:获取指定ID计轴区段计轴通信中断可判ARB标志
* 参数说明:const UINT16 acIndex 计轴索引
* 返 回 值:0x55 有效
* 0xAA 无效
* Created By LQ 2025.02.24
*/
UINT8 aam_GetAxisCommBadArbFlag(const UINT16 acIndex);
#endif #endif
File diff suppressed because it is too large Load Diff
@@ -10,7 +10,6 @@
#include "EnvelopeDefine.h" #include "EnvelopeDefine.h"
/** /**
* @brief 计轴故障诊断模块初始化 * @brief 计轴故障诊断模块初始化
* @return CI_ERROR 初始化成功 * @return CI_ERROR 初始化成功
@@ -22,10 +21,10 @@ UINT8 aam_Init(void);
/** /**
* @brief 计轴故障诊断模块处理主函数 * @brief 计轴故障诊断模块处理主函数
* @param[in] * @param[in]
* @param[out] * @param[out]
* @return * @return
* @note edit cgh 20260310 * @note
*/ */
void aam_MainProcess(void); void aam_MainProcess(void);
@@ -176,7 +175,7 @@ UINT8 aam_CheckNearbyTrainType(UINT16 ACID);
* 函数功能:计轴子系统通信中断ARB处理 * 函数功能:计轴子系统通信中断ARB处理
* 输入参数:无 * 输入参数:无
* 返回值:无 * 返回值:无
* by cgh 20260309 * Create By LQ 2025.02.23
*/ */
void aam_AxisCommBadArbPro(void); void aam_AxisCommBadArbPro(void);
@@ -185,35 +184,25 @@ void aam_AxisCommBadArbPro(void);
* 输入参数:无 * 输入参数:无
* 返回值:CI_SUCCESS 1 成功 * 返回值:CI_SUCCESS 1 成功
* CI_ERROR 0 失败 * CI_ERROR 0 失败
* by cgh 20260309 * Create By LQ 2025.02.23
*/ */
UINT8 aam_AxisCommBadArbTrainCheck(void); UINT8 aam_AxisCommBadArbTrainCheck(void);
/** /**
* 函数功能:相邻计轴区段列车条件检查 * 函数功能:计轴子系统通信中断ARB处理——区段条件检查
* 输入参数:UINT16 wAxisSecId 计轴区段ID * 输入参数:
* 返回值:CI_SUCCESS 1 成功 * 返回值:CI_SUCCESS 1 成功
* CI_ERROR 0 失败 * CI_ERROR 0 失败
* by cgh 20260309 * Create By LQ 2025.02.23
*/ */
UINT8 aam_AdjacentAcTrainCheck(UINT16 wAxisSecId); UINT8 aam_AxisCommBadArbSecCheck(void);
/**
* 函数功能:检查计轴区段上包络条件是否满足
* 输入参数:UINT16 wAxisSecId 计轴区段ID
* 返回值:CI_SUCCESS 1 成功
* CI_ERROR 0 失败
* by cgh 20260309
*/
UINT8 aam_AxisSecEnvelopeCheck(UINT16 wAxisSecId);
/* /*
* 功能描述:设置集中区内计轴区段状态 * 功能描述:设置集中区内计轴区段ARB
* 参数说明:UINT8 chAxisSecState 待设置的计轴区段状态 * 参数说明:
* 返 回 值:无 * 返 回 值:无
* by cgh 20260310
*/ */
void SetLocalAllAxisSecState(UINT8 chAxisSecState); void SetRcAxleArb(void);
/** /**
* @brief 对外接口:获取计轴诊断状态接口 * @brief 对外接口:获取计轴诊断状态接口
@@ -224,60 +213,4 @@ void SetLocalAllAxisSecState(UINT8 chAxisSecState);
*/ */
UINT8 aam_GetAxisStatusAPI(UINT16 ACID); UINT8 aam_GetAxisStatusAPI(UINT16 ACID);
/**
* 函数功能:检查计轴所在物理区段均无故障车
* 输入参数:UINT16 ACID 计轴区段id
* 返回值:CI_SUCCESS 无故障车
* CI_ERROR 存在故障车
* Create By fan 2025.06 18
*/
UINT8 aam_CheckPhyTrain(UINT16 ACID);
/*
* 函数功能:ARB区段连续占用检查
* 输入参数:UINT16 wAcId 计轴区段ID
* UINT8 cNearAcNum 相邻计轴区段数量
* UINT16 pNearAcId[AC_MAXCNT_IN_SWITCH] 相邻计轴区段ID
* 返 回 值:CI_SUCCESS 1 成功
* CI_ERROR 0 失败
* Created By LQ 2025.08.07
*/
UINT8 aam_ArbContinuousOccCheck(UINT16 wAcId, UINT8 cNearAcNum, UINT16 pNearAcId[AC_MAXCNT_IN_SWITCH]);
/**
* @brief 获取本控区RC和计轴通信中断设置ARB标志
* @param[in] void
* @param[out] 无
* @return 0xFF-默认 0x55U-有效 0xAAU-无效
* by cgh 20260307
*/
UINT8 aam_GetLocalAllAxisSecArbFlag(void);
/**
* @brief 设置本控区RC和计轴通信中断设置ARB标志
* @param[in] chLocalAllAxisSecArbFlag 本控区RC和计轴通信中断设置ARB标志
* @param[out] 无
* @return 无
* by cgh 20260307
*/
void aam_SetLocalAllAxisSecArbFlag(UINT8 chLocalAllAxisSecArbFlag);
/**
* @brief 计轴故障诊断模块正常处理函数
* @param[in]
* @param[out]
* @return
* @note by cgh 20260310
*/
void aam_NormalProcess(void);
/**
* 函数功能:计轴区段空闲检查
* 输入参数:UINT16 wAxisSecId 计轴区段ID
* 返回值:CI_SUCCESS 1 集合C所有区段条件检查通过
* CI_ERROR 0 集合C存在区段条件检查不通过
* by cgh 20260309
*/
UINT8 aam_AxisSecIdleCheck(void);
#endif /*AXIS_ASSERT_MANAGE_API_H_*/ #endif /*AXIS_ASSERT_MANAGE_API_H_*/
@@ -1,177 +0,0 @@
/********************************************************
*
* 文 件 名: ConnectOverrideCfgDataMg.c
* 版权说明: 交控科技股份有限公司
* 创建时间: 2026-3-11
* 作 者: 联锁组
* 功能描述: 联络线旁路继电器相关配置
* 函数包括:
* 使用注意:
* 修改记录:
*
********************************************************/
#include "ConnectOverrideCfgDataMg.h"
ConnectOverrideCfgDataStru gConnectOverrideRelayCfgStr[CONNECT_OVERRIDE_RELAY_SUM_MAX] = { 0U }; /*联络线旁路继电器信息*/
INT16 gConnectOverrideRelaySum = 0; /*联络线旁路继电器数量*/
/*
* 功能描述:获取指定ID的联络线旁路继电器的索引号
* 参数说明:const UINT16 wConnectOverrideId 联络线旁路ID
* 返 回 值:CONNECT_OVERRIDE_RELAY_SUM_MAX 获取数据失败
* < CONNECT_OVERRIDE_RELAY_SUM_MAX 查找成功
* Created By wyd 2026.3.11
*/
UINT16 GetConnectOverrideCfgBufIndex(const UINT16 wConnectOverrideId)
{
UINT16 index = CONNECT_OVERRIDE_RELAY_SUM_MAX;
UINT16 ii = 0U;
for (ii = 0U; ii < gConnectOverrideRelaySum; ii++)
{
if (wConnectOverrideId == gConnectOverrideRelayCfgStr[ii].ConnectOverrideId)
{
index = ii;
break;
}
else
{
/*继续查找*/
}
}
return index;
}
/*
* 功能描述:获取联络线旁路继电器数量
* 参数说明:void
* 返 回 值:联络线旁路继电器数量
* Created By wyd 2026.3.11
*/
UINT16 GetConnectOverrideRelaySum(void)
{
UINT16 retVal = 0U;
if (0 > gConnectOverrideRelaySum)
{
retVal = 0U;
}
else if (CONNECT_OVERRIDE_RELAY_SUM_MAX <= (UINT16)gConnectOverrideRelaySum)
{
retVal = CONNECT_OVERRIDE_RELAY_SUM_MAX;
}
else
{
retVal = (UINT16)gConnectOverrideRelaySum;
}
return retVal;
}
/*
* 功能描述:获取联络线旁路继电器静态数据
* 参数说明:void
* 返 回 值:联络线旁路继电器静态数据
* Created By wyd 2026.3.11
*/
ConnectOverrideCfgDataStru* GetConnectOverrideRelayCfgStr(void)
{
return gConnectOverrideRelayCfgStr;
}
/*
* 功能描述:获取联络线旁路开关采集继电器ID
* 参数说明:wOverrideId 联络线旁路索引编号
* 返 回 值:0:查询失败 其他:联络线旁路开关采集继电器ID
* Created By wyd 2026.3.12
*/
UINT16 GetConnectOverrideRelayId(UINT16 wOverrideId)
{
UINT16 wIndex = CONNECT_OVERRIDE_RELAY_SUM_MAX;
UINT16 retVal = 0u;
wIndex = GetConnectOverrideCfgBufIndex(wOverrideId);
if (CONNECT_OVERRIDE_RELAY_SUM_MAX > wIndex)
{
retVal = gConnectOverrideRelayCfgStr[wIndex].OverrideRelayId;
}
else
{
/*不处理*/
}
return retVal;
}
/*
* 功能描述:获取联络线旁路关联物理区段ID
* 参数说明:wOverrideId 联络线旁路索引编号
* 返 回 值:0:查询失败 其他:联络线旁路关联物理区段ID
* Created By wyd 2026.3.12
*/
UINT16 GetConnectOverridePhySecId(UINT16 wOverrideId)
{
UINT16 wIndex = CONNECT_OVERRIDE_RELAY_SUM_MAX;
UINT16 retVal = 0u;
wIndex = GetConnectOverrideCfgBufIndex(wOverrideId);
if (CONNECT_OVERRIDE_RELAY_SUM_MAX > wIndex)
{
retVal = gConnectOverrideRelayCfgStr[wIndex].RelPhySecId;
}
else
{
/*不处理*/
}
return retVal;
}
/*
* 功能描述:获取联络线旁路关联进路请求继电器ID
* 参数说明:wOverrideId 联络线旁路索引编号
* 返 回 值:0:查询失败 其他:联络线关联进路请求继电器ID
* Created By wyd 2026.3.12
*/
UINT16 GetOverrideRouteRequestRelayId(UINT16 wOverrideId)
{
UINT16 wIndex = CONNECT_OVERRIDE_RELAY_SUM_MAX;
UINT16 retVal = 0u;
wIndex = GetConnectOverrideCfgBufIndex(wOverrideId);
if (CONNECT_OVERRIDE_RELAY_SUM_MAX > wIndex)
{
retVal = gConnectOverrideRelayCfgStr[wIndex].RelRouteRequestRelayId;
}
else
{
/*不处理*/
}
return retVal;
}
/*
* 功能描述:获取联络线旁路关联道岔ID
* 参数说明:wOverrideId 联络线旁路索引编号
* 返 回 值:0:查询失败 其他:联络线旁路关联道岔ID
* Created By wyd 2026.3.12
*/
UINT16 GetConnectOverrideSwitchId(UINT16 wOverrideId)
{
UINT16 wIndex = CONNECT_OVERRIDE_RELAY_SUM_MAX;
UINT16 retVal = 0u;
wIndex = GetConnectOverrideCfgBufIndex(wOverrideId);
if (CONNECT_OVERRIDE_RELAY_SUM_MAX > wIndex)
{
retVal = gConnectOverrideRelayCfgStr[wIndex].RelSwitchId;
}
else
{
/*不处理*/
}
return retVal;
}
@@ -1,101 +0,0 @@
/********************************************************
*
* 文 件 名: ConnectOverrideCfgDataMg.h
* 版权说明: 交控科技股份有限公司
* 创建时间: 2026-3-11
* 作 者: 联锁组
* 功能描述: 联络线旁路继电器相关配置
* 函数包括:
* 使用注意:
* 修改记录:
*
********************************************************/
#ifndef CONNECT_OVERRIDE_CFGDATA_MG_H
#define CONNECT_OVERRIDE_CFGDATA_MG_H
#include "CommonTypes.h"
#include "ConnectOverrideRelayDefine.h"
/*联络线旁路继电器配置数据结构体*/
typedef struct S_ConnectOverrideCfgDataStru
{
UINT16 ConnectOverrideId; /*联络线旁路继电器ID*/
UINT16 BelongOcId; /*继电器所属OC ID*/
UINT8 BelongCiId; /*继电器所属联锁ID*/
UINT16 OverrideRelayId; /*联络线旁路开关采集继电器ID*/
UINT16 RelPhySecId; /*关联物理区段ID*/
UINT16 RelRouteRequestRelayId; /*关联进路请求继电器ID*/
UINT16 RelSwitchId; /*关联道岔ID*/
} ConnectOverrideCfgDataStru;
/*******************************全局变量声明*******************************/
extern ConnectOverrideCfgDataStru gConnectOverrideRelayCfgStr[CONNECT_OVERRIDE_RELAY_SUM_MAX]; /*联络线旁路继电器信息*/
extern INT16 gConnectOverrideRelaySum; /*联络线旁路继电器数量*/
#ifdef __cplusplus
extern "C" {
#endif
/*
* 功能描述:获取指定ID的联络线旁路继电器的索引号
* 参数说明:const UINT16 wConnectOverrideId 联络线旁路ID
* 返 回 值:CONNECT_OVERRIDE_RELAY_SUM_MAX 获取数据失败
* < CONNECT_OVERRIDE_RELAY_SUM_MAX 查找成功
* Created By wyd 2026.3.11
*/
UINT16 GetConnectOverrideCfgBufIndex(const UINT16 wConnectOverrideId);
/*
* 功能描述:获取联络线旁路继电器数量
* 参数说明:void
* 返 回 值:联络线旁路继电器数量
* Created By wyd 2026.3.11
*/
UINT16 GetConnectOverrideRelaySum(void);
/*
* 功能描述:获取联络线旁路继电器静态数据
* 参数说明:void
* 返 回 值:联络线旁路继电器静态数据
* Created By wyd 2026.3.11
*/
ConnectOverrideCfgDataStru* GetConnectOverrideRelayCfgStr(void);
/*
* 功能描述:获取联络线旁路开关采集继电器ID
* 参数说明:wOverrideId 联络线旁路索引编号
* 返 回 值:0:查询失败 其他:联络线旁路开关采集继电器ID
* Created By wyd 2026.3.12
*/
UINT16 GetConnectOverrideRelayId(UINT16 wOverrideId);
/*
* 功能描述:获取联络线旁路关联物理区段ID
* 参数说明:wOverrideId 联络线旁路索引编号
* 返 回 值:0:查询失败 其他:联络线旁路关联物理区段ID
* Created By wyd 2026.3.12
*/
UINT16 GetConnectOverridePhySecId(UINT16 wOverrideId);
/*
* 功能描述:获取联络线旁路关联进路请求继电器ID
* 参数说明:wOverrideId 联络线旁路索引编号
* 返 回 值:0:查询失败 其他:联络线关联进路请求继电器ID
* Created By wyd 2026.3.12
*/
UINT16 GetOverrideRouteRequestRelayId(UINT16 wOverrideId);
/*
* 功能描述:获取联络线旁路关联道岔ID
* 参数说明:wOverrideId 联络线旁路索引编号
* 返 回 值:0:查询失败 其他:联络线旁路关联道岔ID
* Created By wyd 2026.3.12
*/
UINT16 GetConnectOverrideSwitchId(UINT16 wOverrideId);
#ifdef __cplusplus
};
#endif
#endif
File diff suppressed because it is too large Load Diff
@@ -1,91 +0,0 @@
/********************************************************
*
* 文 件 名: ConnectOverrideDataMg.h
* 版权说明: 交控科技股份有限公司
* 创建时间: 2025-12-17
* 作 者: 联锁组
* 功能描述: 联络线旁路继电器相关数据
* 函数包括:
* 使用注意:
* 修改记录:
*
********************************************************/
#ifndef CONNECT_OVERRIDE_DATA_MG_H
#define CONNECT_OVERRIDE_DATA_MG_H
#include "CommonTypes.h"
#include "../System/CiSystemDefine.h"
#include "ConnectOverrideCfgDataMg.h"
/*联络线旁路继电器动态数据结构体*/
typedef struct S_ConnectOverrideDataStru
{
UINT16 ConnectOverrideId; /*联络线旁路继电器ID*/
UINT8 OverrideState; /*旁路状态 0x55:未激活 0xAA:已激活*/
UINT8 OverrideReason; /*每一个bit代表一种条件
bit0=1:逻辑区段占用且未判ARB
bit1=1:区段封锁—ATS设置区段封锁
bit2=1:区段封锁—全线区段封锁
bit3=1:区段封锁—SPKS激活
bit4=1:区段封锁—CESB激活
bit5=1:防护区建立
bit6-bit7:预留
当旁路状态为0xAA(已激活),但旁路条件为0x00(无条件)时,
说明该旁路状态激活时存在某种条件,但目前该条件已不满足,
且无取消条件触发,此时旁路状态仍保留激活状态。*/
UINT32 OverridePressStartCyc; /*采集到旁路按钮正常按下起始周期号(上周期未按下且本周期按下,记录周期号;未按下时清空)*/
UINT32 OverrideErrTrigStartCyc; /*采集到旁路按钮误触发按下起始周期号(上周期未按下且本周期按下,记录周期号;未按下时清空)*/
UINT8 OverrideErrTrigState; /*旁路开关采集继电器异常吸起标志,0x55未异常吸起,0xaa异常吸起
旁路开关正常按下时间达到故障判断时间,或误触发按下时间达到误触发判断时间,设置旁路开关异常吸起标志*/
UINT8 OverrideErrDownState; /*旁路开关采集继电器异常落下状态 0x55:未异常落下 0xAA:异常落下
OC通信异常或两系板卡状态均故障,设置继电器通信异常落下*/
} ConnectOverrideDataStru;
extern ConnectOverrideDataStru gConnectOverrideData[CONNECT_OVERRIDE_RELAY_SUM_MAX]; /* 联络线旁路继电器动态数据 */
#ifdef __cplusplus
extern "C" {
#endif
/*
* 功能描述:获取联络线旁路结构体地址
* 参数说明:void
* 返 回 值:联络线旁路结构体地址
* Created By wyd 20260311
*/
ConnectOverrideDataStru *GetConnectOverrideData(void);
/*
* 功能描述:联络线旁路主处理
* 参数说明:无
* 返 回 值:无
* Created By wyd 20260311
*/
void ConnectOverrideMainProc(void);
/*
* 功能描述:根据物理区段ID查询联络线旁路状态
* 参数说明:const UINT16 wOverrideId 联络线旁路索引编号
* 返 回 值:CONNECT_OVERRIDE_STATE_NO:未旁路
* CONNECT_OVERRIDE_STATE_YES:已旁路
* CI_ERROR:未查询到
* Created By wyd 20260313
*/
UINT8 GetOverrideStateByPhySecId(UINT16 wPhySecId);
/*
* 功能描述:根据逻辑区段ID查询联络线旁路状态
* 参数说明:const UINT16 wOverrideId 联络线旁路索引编号
* 返 回 值:CONNECT_OVERRIDE_STATE_NO:未旁路
* CONNECT_OVERRIDE_STATE_YES:已旁路
* CI_ERROR:未查询到
* Created By wyd 20260313
*/
UINT8 GetOverrideStateByLogSecId(UINT16 wLogSecId);
#ifdef __cplusplus
};
#endif
#endif
@@ -1,45 +0,0 @@
/********************************************************
*
* 文 件 名: ConnectOverrideRelayDefine.h
* 版权说明: 交控科技股份有限公司
* 创建时间: 2026-3-11
* 作 者: 联锁组
* 功能描述: 联络线旁路继电器相关常量定义
* 函数包括:
* 使用注意:
* 修改记录:
*
********************************************************/
#ifndef CONNECT_OVERRIDE_DATA_DEFINE_H
#define CONNECT_OVERRIDE_DATA_DEFINE_H
/*联络线旁路继电器数量最大值*/
#define CONNECT_OVERRIDE_RELAY_SUM_MAX (UINT16)1U
/*联络线旁路激活状态*/
#define CONNECT_OVERRIDE_STATE_NO (UINT8)0x55u /*联络线旁路未激活*/
#define CONNECT_OVERRIDE_STATE_YES (UINT8)0xAAu /*联络线旁路已激活*/
/*联络线旁路开关采集继电器异常落下状态*/
#define CONNECT_OVERRIDE_ERRDOWN_NO (UINT8)0x55u /*联络线旁路开关采集继电器未异常落下*/
#define CONNECT_OVERRIDE_ERRDOWN_YES (UINT8)0xAAu /*联络线旁路开关采集继电器异常落下*/
/*联络线旁路开关采集状态*/
#define CONNECT_OVERRIDE_PRESSED_NO (UINT8)0x55u /*联络线旁路开关未有效按下*/
#define CONNECT_OVERRIDE_PRESSED_YES (UINT8)0xaau /*联络线旁路开关有效按下*/
/*联络线旁路原因*/
#define OVERRIDE_REASON_NONE (UINT8)0x00u /*联络线旁路原因:无原因*/
#define OVERRIDE_REASON_NCT (UINT8)0x01u /*联络线旁路原因:NCT占用且未判ARB*/
#define OVERRIDE_REASON_FLOCK_CMD (UINT8)0x02u /*联络线旁路原因:ATS区段封锁*/
#define OVERRIDE_REASON_FLOCK_ALL (UINT8)0x04u /*联络线旁路原因:ATS全线封锁*/
#define OVERRIDE_REASON_FLOCK_SPKS (UINT8)0x08u /*联络线旁路原因:SPKS激活*/
#define OVERRIDE_REASON_FLOCK_CESB (UINT8)0x10u /*联络线旁路原因:CESB激活*/
#define OVERRIDE_REASON_EA (UINT8)0x20u /*联络线旁路原因:防护区建立*/
/*旁路开关采集继电器异常吸起标志*/
#define CONNECT_OVERRIDE_ERRTRIG_NO ((UINT8)0x55) /*旁路开关异常吸起标志无效*/
#define CONNECT_OVERRIDE_ERRTRIG_YES ((UINT8)0xaa) /*旁路开关异常吸起标志有效*/
#endif
@@ -370,22 +370,27 @@ void CutoffPointOutput(void)
UINT16 wPhySecId = 0u; UINT16 wPhySecId = 0u;
UINT8 chOccState = 0u; UINT8 chOccState = 0u;
UINT8 cDir = 0u; UINT8 cDir = 0u;
UINT8 cTrainDir = 0u;
UINT8 cFunRetVal = CI_ERROR; UINT8 cFunRetVal = CI_ERROR;
TRAIN_SEQUANCE_s strTmp = { 0u };
CfpTrainInfoStru tmpTrainInfo = { 0u }; CfpTrainInfoStru tmpTrainInfo = { 0u };
struct_PathPoint LinkPoint = { 0u }; UINT16 wTrainId = 0u;
UINT32 dwFindLen = 0u;/*信号机点灯防护距离*/ UINT32 dwDis = UINT32_MAX;
UINT32 dwDisTail = UINT32_MAX;
UINT32 dwDisHead = UINT32_MAX;
struct_PathPoint TrainPoint = { 0u };
struct_PathPoint TrainHeadPoint = { 0u };
struct_PathPoint TrainTailPoint = { 0u };
struct_PathPoint CutoffPoint = { 0u };
UINT8 cTrainTailDir = 0U; /*列车安全车尾方向*/
UINT8 cTrainHeadDir = 0U; /*列车安全车头方向*/
UINT32 dwFindLen = 0u;
UINT8 chTrainNum = 0u; UINT8 chTrainNum = 0u;
UINT8 cDirectionPointfirst = 0U; /*方向变化点1*/ UINT8 cDirectionPointfirst = 0U; /*方向变化点1*/
UINT8 cDirectionPointsecond = 0U; /*方向变化点2*/ UINT8 cDirectionPointsecond = 0U; /*方向变化点2*/
UINT16 wOtherCfpId = 0u; /*其他分界点ID*/
UINT8 chLocalId = 0u; /*本联锁id*/
UINT8 chLinkCIId = 0u; /*link所属联锁id*/
UINT8 chOtherFlag = FLAG_UNSET;
UINT8 chBreakFlag = FLAG_UNSET;
UINT32 dwLinkLen = 0U;/*本联锁已计算分界点距离*/
dwFindLen = GetSystemParaValue(SIGNAL_LIGHTUP_SEC_LEN_ID); dwFindLen = GetSystemParaValue(SIGNAL_LIGHTUP_SEC_LEN_ID);
dwFindLen *= 100U; dwFindLen *= 100u;
chLocalId = GetSystemParaLocalCiId();
/* 获取本联锁边界点数量 */ /* 获取本联锁边界点数量 */
wCutoffPointSum = GetCfpSum(); wCutoffPointSum = GetCfpSum();
@@ -400,122 +405,157 @@ void CutoffPointOutput(void)
cDir = GetCfpLocDir(wCutoffPointId); cDir = GetCfpLocDir(wCutoffPointId);
/* 计算边界点的点灯link */ /* 计算边界点的点灯link */
(void)CommonMemSet(wszLinkIdBuf, (UINT32)(sizeof(UINT16)*MAX_CFG_LIGHTUPLINK_NUM), 0U, (UINT32)(sizeof(UINT16)*MAX_CFG_LIGHTUPLINK_NUM));
cFunRetVal = CalCutoffPointOccupyLinkSeq(wCutoffPointId, &wLinkSum, wszLinkIdBuf); cFunRetVal = CalCutoffPointOccupyLinkSeq(wCutoffPointId, &wLinkSum, wszLinkIdBuf);
/*重置计算位置 */ /* 获取边界点信息 */
LinkPoint.wLinkId =0U; CutoffPoint.wLinkId = GetCfpLink(wCutoffPointId);
LinkPoint.dwOffset = 0U; CutoffPoint.dwOffset = GetCfpOffset(wCutoffPointId);
wOtherCfpId = 0U; wTrainId = 0u;
chOtherFlag = FLAG_UNSET; TrainPoint.wLinkId = 0u;
chBreakFlag = FLAG_UNSET; TrainPoint.dwOffset = 0u;
dwLinkLen = 0U;
if ((CI_SUCCESS == cFunRetVal)&&(MAX_CFG_LIGHTUPLINK_NUM>=wLinkSum)) TrainTailPoint.wLinkId = 0U;
TrainTailPoint.dwOffset = 0U;
TrainHeadPoint.wLinkId = 0U;
TrainHeadPoint.dwOffset = 0U;
if (CI_SUCCESS == cFunRetVal)
{ {
/* 区段查找成功,查到区段上的列车 */ /* 区段查找成功,查到区段上的列车 */
for (j = 0u;j < wLinkSum;j++) for (j = 0u;j < wLinkSum;j++)
{ {
wLinkId = wszLinkIdBuf[j]; wLinkId = wszLinkIdBuf[j];
chLinkCIId = (UINT8)GetLinkManageTiocById(wLinkId); wPhySecId = GetLinkRelatedPhySec(wLinkId);
if (chLinkCIId == chLocalId) chOccState = GetPhySecCurOccupyState(wPhySecId);
{ chTrainNum = as_GetLinkTrainNum(wLinkId);
wPhySecId = GetLinkRelatedPhySec(wLinkId);
chOccState = GetPhySecCurOccupyState(wPhySecId);
chTrainNum = as_GetLinkTrainNum(wLinkId);
if ((SECTION_OCCUPY_NO != chOccState) && (0u != chTrainNum))
{
/* 找到有车占用的区段 */
chBreakFlag = FLAG_SET;
}
else
{
;
}
}
else
{
chOtherFlag = FLAG_SET;
}
if (j < wLinkSum)
{
/* 更新已经计算的最远无车位置*/
LinkPoint.wLinkId = wLinkId;
if ((FLAG_SET == chOtherFlag)||(FLAG_SET == chBreakFlag))
{
if (DIR_SAME == cDir)
{
LinkPoint.dwOffset = 0U;
}
else
{
LinkPoint.dwOffset = GetLinkLengthById(wLinkId);
}
}
else
{
if (DIR_SAME == cDir)
{
LinkPoint.dwOffset = GetLinkLengthById(wLinkId);
}
else
{
LinkPoint.dwOffset = 0U;
}
if (j < wLinkSum - 1U)
{ /*检查是否有方向变化点,此处检查,当前link已按既定方向查找完,查下一link,若此时中间有方向变化点,则跨过方向变化点,到下一link改变方向查*/
cDirectionPointfirst = GetLinkLogicDirChangedById(wszLinkIdBuf[j]);
cDirectionPointsecond = GetLinkLogicDirChangedById(wszLinkIdBuf[(j + 1U)]); /*wLinkSum已检查越界*/
if (((LINK_DIRCHANGE_BEGIN == cDirectionPointfirst) || (LINK_DIRCHANGE_END == cDirectionPointfirst))
&& (cDirectionPointsecond == cDirectionPointfirst))
{
cDir = ConvertTrainDir(cDir); /*有方向变化点,转换方向*/
}
else
{
; /*没有反向变换点,不考虑变方向*/
}
}
dwLinkLen += GetLinkLengthById(wLinkId); /*未中断遍历,无车且属于本联锁,更新已计算link总长*/
}
}
else
{
; /*最后一个link 无需更新*/
}
if ((dwFindLen <= dwLinkLen)|| (FLAG_SET == chOtherFlag) || (FLAG_SET == chBreakFlag)) if ((SECTION_OCCUPY_NO != chOccState) && (0u != chTrainNum))
{ {
/*距离足够 或查找到相邻RC,或查找到占用,停止计算*/ /* 找到有车占用的区段 */
break; break;
} }
else else
{ {
; /*无处理*/ ;
}
/*检查是否有方向变化点,此处检查,当前link已按既定方向查找完,查下一link,若此时中间有方向变化点,则跨过方向变化点,到下一link改变方向查*/
if (j < (wLinkSum - 1U))
{
cDirectionPointfirst = GetLinkLogicDirChangedById(wszLinkIdBuf[j]);
cDirectionPointsecond = GetLinkLogicDirChangedById(wszLinkIdBuf[(j + 1U)]); /*todo越界*/
if (((LINK_DIRCHANGE_BEGIN == cDirectionPointfirst) || (LINK_DIRCHANGE_END == cDirectionPointfirst))
&& (cDirectionPointsecond == cDirectionPointfirst))
{
cDir = ConvertTrainDir(cDir); /*有方向变化点,转换方向*/
}
else
{
; /*没有反向变换点,不考虑变方向*/
}
}
else
{
; /*最后一个link不需要考虑方向变化点的问题,防止数组越界*/
} }
} }
/* 获取列车ID 获取距离分界点最近的列车*/ /* 获取列车ID 获取距离分界点最近的列车*/
if ((j < wLinkSum) && (dwFindLen > dwLinkLen)) if (j < wLinkSum)
{ {
if (FLAG_UNSET == chOtherFlag) if (DIR_SAME == cDir)
{ {
CfpTrainInfoCal(LinkPoint.wLinkId, LinkPoint.dwOffset, dwLinkLen, &tmpTrainInfo, cDir); strTmp = as_GetLinkFirstTrain(wLinkId);
} }
else else
{ {
/*找到不属于本联锁link 寻找对应联锁及分界点列车信息*/ strTmp = as_GetLinkLastTrain(wLinkId);
OtherCfpTrainInfoCal(LinkPoint.wLinkId, LinkPoint.dwOffset, dwLinkLen, &tmpTrainInfo);
} }
wTrainId = strTmp.u16TrainID;
} }
else else
{ {
/* 未找到有车占用 或空闲距离足够发送无车 */ ;
}
if (j == wLinkSum)
{
/* 未找到有车占用发送无车 */
tmpTrainInfo.wTrainId = 0u; tmpTrainInfo.wTrainId = 0u;
tmpTrainInfo.chTrainLevel = 0u; tmpTrainInfo.chTrainLevel = 0u;
tmpTrainInfo.dwDis = 0u; tmpTrainInfo.dwDis = 0u;
} }
else
{
/* 存在占用,判断列车类型 */
if (NAME_FAILUREAREA == strTmp.u16TrainID)
{
/* 故障区域 */
tmpTrainInfo.wTrainId = SIZE_MAX_LINETRAIN;
tmpTrainInfo.chTrainLevel = 0u;
/* 获取区域位置 */
TrainPoint.wLinkId = wLinkId;
/*选取link上距离分界点最近的点*/
if (DIR_SAME == cDir)
{
TrainPoint.dwOffset = 0u;
}
else
{
TrainPoint.dwOffset = GetLinkLengthById(wLinkId);
}
/* 查询距离 */
dwDis = DsuAPointToBPoint(&TrainPoint, &CutoffPoint, &cTrainDir);
}
else
{
/* 正常车 */
tmpTrainInfo.wTrainId = strTmp.u16TrainID;
tmpTrainInfo.chTrainLevel = GetTrainLevel(tmpTrainInfo.wTrainId);
/*获取安全车尾点*/
TrainTailPoint.wLinkId = GetTrainSafeTailLink(wTrainId);
TrainTailPoint.dwOffset = GetTrainSafeTailOffset(wTrainId);
/*获取安全车头点*/
TrainHeadPoint.wLinkId = GetTrainSafeHeadLink(wTrainId);
TrainHeadPoint.dwOffset = GetTrainSafeHeadOffset(wTrainId);
/*获取车尾到分界点距离*/
dwDisTail = DsuAPointToBPoint(&TrainTailPoint, &CutoffPoint, &cTrainTailDir);
/*获取车头到分界点距离*/
dwDisHead = DsuAPointToBPoint(&TrainHeadPoint, &CutoffPoint, &cTrainHeadDir);
if (dwDisTail < dwDisHead)
{
dwDis = dwDisTail;
}
else
{
dwDis = dwDisHead;
}
}
if (UINT32_MAX == dwDis)
{
tmpTrainInfo.dwDis = 0u;
}
else if(dwFindLen >= dwDis)
{
tmpTrainInfo.dwDis = dwDis;
}
else
{
/* 超出范围,无车 */
tmpTrainInfo.wTrainId = 0u;
tmpTrainInfo.chTrainLevel = 0u;
tmpTrainInfo.dwDis = 0u;
}
}
} }
else else
{ {
@@ -1591,141 +1631,4 @@ void SetCfpSignalLightUpFlag(const UINT16 wCfpId, const UINT8 cLightUpFlag)
{ {
; ;
} }
}
/*
* 功能描述: 根据其他分界点信息更新本联锁发送分界点列车数据
* 参数说明:UINT16 wLinkId 分界点link ,UINT32 dwOffSet偏移量, UINT32 dwLocalOffSet 本联锁已经查找距离
* [输出参数]: CfpTrainInfoStru* trainInfo 列车数据
* 返回值 :无
* Created By fan 2025.05.26
*/
void OtherCfpTrainInfoCal(UINT16 wLinkId,UINT32 dwOffSet,UINT32 dwLocalOffSet, CfpTrainInfoStru* trainInfo)
{
UINT16 wCfpId = 0U;/*分界点id*/
UINT8 chTransmitStat = TRANSMIT_STATE_BAD;
CfpTrainInfoStru strCfpInfo = { 0u };
UINT8 chLinkTiocId = 0U;
UINT32 dwDdLen = 0U;/*信号机点灯距离*/
UINT32 dwLeftOffset = 0U;/*剩余需计算距离*/
/*数据初始化*/
dwDdLen = GetSystemParaValue(SIGNAL_LIGHTUP_SEC_LEN_ID);
dwDdLen *= 100u;
wCfpId = GetCfpIdByPoint(wLinkId, dwOffSet);
if (NULL != trainInfo)
{
/*初始化为在该分界点存在故障车*/
trainInfo->wTrainId = SIZE_MAX_LINETRAIN;
trainInfo->dwDis = dwLocalOffSet;
trainInfo->chTrainLevel = 0U;
if (dwDdLen > dwLocalOffSet)
{
dwLeftOffset = dwDdLen - dwLocalOffSet;
}
else
{
;/*无处理*/
}
if (0U != wCfpId)
{
chLinkTiocId = (UINT8)GetLinkManageTiocById(wLinkId);
strCfpInfo = GetCfpOtherOcTrainInfo(wCfpId);
chTransmitStat = GetCiTransmitState(CI_SYSTEM_TYPE_CI, chLinkTiocId);
if ((TRANSMIT_STATE_GOOD != chTransmitStat) || (UINT16_MAX == strCfpInfo.wTrainId))
{
;/*通信不良好,或者分界点列车信息获取失败*/
}
else if ((0u == strCfpInfo.wTrainId) ||
((UINT32_MAX != strCfpInfo.dwDis) && (dwLeftOffset < strCfpInfo.dwDis)))
{
/*相邻Tioc无车 或 距离分界点距离大于剩余查找距离*/
trainInfo->wTrainId = 0U;
trainInfo->dwDis = 0U;
trainInfo->chTrainLevel = 0U;
}
else
{
/*传递分界点信息*/
trainInfo->wTrainId = strCfpInfo.wTrainId;
trainInfo->dwDis = strCfpInfo.dwDis + dwLocalOffSet;
trainInfo->chTrainLevel = strCfpInfo.chTrainLevel;
}
}
else
{
;/*分界点获取失败*/
}
}
}
/*
* 功能描述: 本联锁列车数据更新本联锁发送分界点列车数据
* 参数说明:UINT16 wLinkId 分界点link ,UINT32 dwOffSet偏移量, UINT32 dwLocalOffSet 本联锁已经查找距离 UINT8 cDir 方向
* [输出参数]: CfpTrainInfoStru* trainInfo 列车数据
* 返回值 :无
* Created By fan 2025.06.04
*/
void CfpTrainInfoCal(UINT16 wLinkId, UINT32 dwOffSet, UINT32 dwLocalOffSet, CfpTrainInfoStru* trainInfo,UINT8 cDir)
{
TRAIN_SEQUANCE_s strTmp = { 0u };
UINT16 wTrainId = 0u;
UINT32 dwDis = UINT32_MAX;
UINT32 dwDisTail = UINT32_MAX;
UINT32 dwDisHead = UINT32_MAX;
struct_PathPoint TrainHeadPoint = { 0u };
struct_PathPoint TrainTailPoint = { 0u };
struct_PathPoint LinkPoint = { 0u };
UINT8 cTrainTailDir = 0U; /*列车安全车尾方向*/
UINT8 cTrainHeadDir = 0U; /*列车安全车头方向*/
if ((NULL != trainInfo)&&(0U!= wLinkId))
{
LinkPoint.wLinkId = wLinkId;
LinkPoint.dwOffset = dwOffSet;
/*占用link属于本联锁*/
if (DIR_SAME == cDir)
{
strTmp = as_GetLinkFirstTrain(wLinkId);
}
else
{
strTmp = as_GetLinkLastTrain(wLinkId);
}
wTrainId = strTmp.u16TrainID;
/* 存在占用,判断列车类型 */
if (NAME_FAILUREAREA == strTmp.u16TrainID)
{
/* 故障区域 */
trainInfo->wTrainId = SIZE_MAX_LINETRAIN;
trainInfo->chTrainLevel = 0u;
trainInfo->dwDis = dwLocalOffSet;
}
else
{
/* 正常车 */
trainInfo->wTrainId = strTmp.u16TrainID;
trainInfo->chTrainLevel = GetTrainLevel(trainInfo->wTrainId);
/*获取安全车尾点*/
TrainTailPoint.wLinkId = GetTrainSafeTailLink(wTrainId);
TrainTailPoint.dwOffset = GetTrainSafeTailOffset(wTrainId);
/*获取安全车头点*/
TrainHeadPoint.wLinkId = GetTrainSafeHeadLink(wTrainId);
TrainHeadPoint.dwOffset = GetTrainSafeHeadOffset(wTrainId);
/*获取车尾到已计算link最远端距离*/
dwDisTail = DsuAPointToBPoint(&TrainTailPoint, &LinkPoint, &cTrainTailDir);
/*获取车头到已计算link最远端距离*/
dwDisHead = DsuAPointToBPoint(&TrainHeadPoint, &LinkPoint, &cTrainHeadDir);
if (dwDisTail < dwDisHead)
{
dwDis = dwDisTail;
}
else
{
dwDis = dwDisHead;
}
trainInfo->dwDis = dwLocalOffSet + dwDis;
}
}
} }
@@ -350,23 +350,6 @@ UINT8 GetCfpSignalLightUpFlag(const UINT16 wCfpId);
*/ */
void SetCfpSignalLightUpFlag(const UINT16 wCfpId, const UINT8 cLightUpFlag); void SetCfpSignalLightUpFlag(const UINT16 wCfpId, const UINT8 cLightUpFlag);
/*
* 功能描述: 根据其他分界点信息更新本联锁发送分界点列车数据
* 参数说明:UINT16 wLinkId 分界点link ,UINT32 dwOffSet偏移量, UINT32 dwLocalOffSet 本联锁已经查找距离
* [输出参数]: CfpTrainInfoStru* trainInfo 列车数据
* 返回值 CI_ERROR有车 CI_SUCCESS无车
* Created By fan 2025.05.26
*/
void OtherCfpTrainInfoCal(UINT16 wLinkId, UINT32 dwOffSet, UINT32 dwLocalOffSet, CfpTrainInfoStru* trainInfo);
/*
* 功能描述: 本联锁列车数据更新本联锁发送分界点列车数据
* 参数说明:UINT16 wLinkId 分界点link ,UINT32 dwOffSet偏移量, UINT32 dwLocalOffSet 本联锁已经查找距离 UINT8 cDir 方向
* [输出参数]: CfpTrainInfoStru* trainInfo 列车数据
* 返回值 :无
* Created By fan 2025.06.04
*/
void CfpTrainInfoCal(UINT16 wLinkId, UINT32 dwOffSet, UINT32 dwLocalOffSet, CfpTrainInfoStru* trainInfo, UINT8 cDir);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
File diff suppressed because it is too large Load Diff
@@ -15,14 +15,6 @@
#define _DEVICE_DATA_MANAGE_H_ #define _DEVICE_DATA_MANAGE_H_
#include "CommonTypes.h" #include "CommonTypes.h"
/*区间雨雪信息结构体*/
typedef struct S_AreaSnowInfoStruct
{
UINT16 wAreaId; /*区间ID*/
UINT8 cAreaSnowLevel; /*区间湿轨级别*/
} AreaSnowInfoStruct;
#include "../System/CiSystemDefine.h" #include "../System/CiSystemDefine.h"
#include "../error/ErrorDataManage.h" #include "../error/ErrorDataManage.h"
#include "../Transmit/TransmitStateDataManage.h" #include "../Transmit/TransmitStateDataManage.h"
@@ -164,20 +156,6 @@ typedef struct S_LineCommTrainStruct
UINT16 szCommTrainNumID[TRAIN_SUM_MAX]; /*全线通信车ID数组*/ UINT16 szCommTrainNumID[TRAIN_SUM_MAX]; /*全线通信车ID数组*/
}LineCommTrainStruct; }LineCommTrainStruct;
/*区间牵引加速度信息结构体*/
typedef struct S_AreaAccelerationInfoStruct
{
UINT16 wAreaId; /*区间ID*/
UINT8 cAreaAccelerationValue; /*区间牵引加速度值*/
} AreaAccelerationInfoStruct;
/*区间制动率信息结构体*/
typedef struct S_AreaBrakeRateInfoStruct
{
UINT16 wAreaId; /*区间ID*/
UINT8 cAreaBrakeRateValue; /*区间制动率值*/
} AreaBrakeRateInfoStruct;
/*******************************全局变量声明*******************************/ /*******************************全局变量声明*******************************/
extern UINT8 AllSignalBrightFlag; /*全站亮灯标志*/ extern UINT8 AllSignalBrightFlag; /*全站亮灯标志*/
@@ -203,8 +181,6 @@ extern UINT8 g_AllTsrFlag; /*
extern UINT8 g_AllSnowModel; /*全线雨雪模式命令*/ extern UINT8 g_AllSnowModel; /*全线雨雪模式命令*/
extern UINT8 g_AllSnowLevel; /*全线湿轨级别:0-默认值;1-一级;2-二级*/
extern UINT8 g_IteLineCutState; /*ITE全线切除状态:0x55:切除ITE0xAA:使用ITE0xFF:默认值*/ extern UINT8 g_IteLineCutState; /*ITE全线切除状态:0x55:切除ITE0xAA:使用ITE0xFF:默认值*/
extern UINT8 g_AllLineTsrState; /*全线临时限速状态*/ extern UINT8 g_AllLineTsrState; /*全线临时限速状态*/
@@ -243,28 +219,13 @@ extern UINT8 SwitchBlockLinkState; /*
extern CtrlPowerStruct ctrlpowerFlag[VIRTUAL_CI_MAX]; extern CtrlPowerStruct ctrlpowerFlag[VIRTUAL_CI_MAX];
extern UINT8 LocalAreaSnowNum; /*本地区间雨雪站台数量*/ extern UINT8 LocalAreaSnowNum; /*本地区间雨雪站台数量*/
extern AreaSnowInfoStruct szLocalAreaSnow[LOCAL_AREA_SNOW_SUM_MAX]; /*本地区间雨雪数组*/ extern UINT32 szLocalAreaSnowId[LOCAL_AREA_SNOW_SUM_MAX]; /*本地区间雨雪站台ID数组*/
extern LineCommTrainStruct gStrLineCommTrain; /*全线通信车结构体*/ extern LineCommTrainStruct gStrLineCommTrain; /*全线通信车结构体*/
extern UINT32 gFlyProtectOverCyc; /*飞车宕机报警起始周期*/ extern UINT32 gFlyProtectOverCyc; /*飞车宕机报警起始周期*/
extern UINT8 g_LocalSnowModel; /*本地雨雪模式命令*/ extern UINT8 g_LocalSnowModel; /*本地雨雪模式命令*/
extern UINT8 gLocalAreaIteCutNum; /*本地区间ITE切除数量*/
extern UINT16 gSzLocalAreaIteCutId[ALL_AREA_SNOW_SUM_MAX]; /*本地区间ITE切除ID数组*/
extern UINT8 gAllLineAccelerationState; /*全线牵引加速度设置状态:0x55-未设置;0xAA-已设置*/
extern UINT8 gAllLineAccelerationValue; /*全线牵引加速度设置值*/
extern UINT8 gAllLineBrakeRateState; /*全线制动率设置状态:0x55-未设置;0xAA-已设置*/
extern UINT8 gAllLineBrakeRateValue; /*全线制动率设置值*/
extern UINT8 gLocalAreaAccelerationNum; /*本地区间牵引加速度数量*/
extern AreaAccelerationInfoStruct gszLocalAreaAcceleration[LOCAL_AREA_SNOW_SUM_MAX]; /*本地区间牵引加速度数组*/
extern UINT8 gLocalAreaBrakeRateNum; /*本地区间制动率数量*/
extern AreaBrakeRateInfoStruct gszLocalAreaBrakeRate[LOCAL_AREA_SNOW_SUM_MAX]; /*本地区间制动率数组*/
/******************************联锁标志数据管理****************************/ /******************************联锁标志数据管理****************************/
/* /*
@@ -1406,24 +1367,6 @@ extern UINT8 GetAllSnowModel(void);
*/ */
extern void SetAllSnowModel(UINT8 setmodle); extern void SetAllSnowModel(UINT8 setmodle);
/*
* 功能描述:获取全线湿轨等级
* 参数说明:无
* 返 回 值:0 默认值
* 1 湿轨一级
* 2 湿轨二级
* Created By LQ 2025.05.28
*/
UINT8 GetAllSnowLevel(void);
/*
* 功能描述:设置全线湿轨等级
* 参数说明:UINT8 cLevel 湿轨级别
* 返 回 值:无
* Created By LQ 2025.05.28
*/
void SetAllSnowLevel(UINT8 cLevel);
/* /*
* 功能描述:获取ITE全线切除状态 * 功能描述:获取ITE全线切除状态
* 参数说明:void * 参数说明:void
@@ -1767,10 +1710,10 @@ UINT8 GetDiaoCheRouteOpenState(const UINT16 wRouteId);
/* /*
* 功能描述:设置本地区间雨雪站台信息 * 功能描述:设置本地区间雨雪站台信息
* 参数说明:const UINT8 cAreaSnowNum 区间雨雪数量 * 参数说明:const UINT8 cAreaSnowNum 区间雨雪数量
* const AreaSnowInfoStruct pAreaSnowBuf[LOCAL_AREA_SNOW_SUM_MAX] 区间雨雪数组 * const UINT32 pAreaSnowIdBuf[] 区间雨雪ID数组
* 返回值 :无 * 返回值 :无
*/ */
void SetLocalAreaSnowInfo(const UINT8 cAreaSnowNum, const AreaSnowInfoStruct pAreaSnowBuf[LOCAL_AREA_SNOW_SUM_MAX]); void SetLocalAreaSnowInfo(const UINT8 cAreaSnowNum, const UINT32 pAreaSnowIdBuf[]);
/* /*
* 功能描述:获取本地区间雨雪站台数量 * 功能描述:获取本地区间雨雪站台数量
@@ -1780,11 +1723,11 @@ void SetLocalAreaSnowInfo(const UINT8 cAreaSnowNum, const AreaSnowInfoStruct pAr
UINT8 GetLocalAreaSnowNum(void); UINT8 GetLocalAreaSnowNum(void);
/* /*
* 功能描述:获取本地区间雨雪信息 * 功能描述:获取本地区间雨雪站台ID
* 参数说明:无 * 参数说明:无
* 返回值 :区间雨雪信息 * 返回值 :区间雨雪站台ID
*/ */
AreaSnowInfoStruct* GetLocalAreaSnow(void); UINT32* GetLocalAreaSnowId(void);
/* /*
@@ -1794,7 +1737,7 @@ AreaSnowInfoStruct* GetLocalAreaSnow(void);
* 返回值 : 0 第一个锁闭的区段不是故障锁闭 * 返回值 : 0 第一个锁闭的区段不是故障锁闭
* 1 第一个锁闭的区段是故障锁闭 * 1 第一个锁闭的区段是故障锁闭
*/ */
UINT8 RouteFirstLockErrCheck(UINT16 routeId, UINT16 *pPhySecId); UINT8 RouteFirstLockErrCheck(UINT16 routeId);
/* /*
* 功能描述:获取全线通信车数据 * 功能描述:获取全线通信车数据
@@ -1881,204 +1824,4 @@ UINT8 GetSwitchUsingValidState(const UINT16 wSwitchId, const UINT8 chFunctionId,
*/ */
void DefaultCtrlPowerDeal(const UINT8 virtualCiId); void DefaultCtrlPowerDeal(const UINT8 virtualCiId);
/*
* 功能描述:获取本地区间ITE切除数量
* 参数说明:无
* 返 回 值:本地区间ITE切除数量
* Created By LQ 2025.04.15
*/
UINT8 GetLocalAreaIteCutNum(void);
/*
* 功能描述:获取本地区间ITE切除ID数组
* 参数说明:无
* 返 回 值:本地区间ITE切除ID数组
* Created By LQ 2025.04.15
*/
UINT16* GetLocalAreaIteCutId(void);
/*
* 功能描述:清除本地区间ITE切除信息
* 参数说明:无
* 返 回 值:无
* Created By LQ 2025.04.15
*/
void ClearLocalAreaIteCutInfo(void);
/*
* 功能描述:设置本地区间ITE切除信息
* 参数说明:const UINT8 cAreaIteCutNum 区间ITE切除数量
* const UINT16 pAreaIteCutIdBuf[ALL_AREA_SNOW_SUM_MAX] 区间ID数组
* 返 回 值:无
* Created By LQ 2025.04.15
*/
void SetLocalAreaIteCutInfo(const UINT8 cAreaIteCutNum, const UINT16 pAreaIteCutIdBuf[ALL_AREA_SNOW_SUM_MAX]);
/*
* 功能描述:获取进路内第一个锁闭的逻辑区段ID
* 参数说明:UINT16 wRouteId 进路ID
* 返 回 值:0 无锁闭的逻辑区段
* >0 第一个锁闭的逻辑区段ID
* Created By LQ 2025.05.08
*/
UINT16 GetRouteFirstLockedLogSecId(UINT16 wRouteId);
/*
* 功能描述: 道岔单操可动作物理区段检查
* 参数说明: UINT16 phySecId,物理区段Id
* UINT8 oper_src,操作来源
* UINT8 sendLevel,发送级别
* 返回值 CI_SUCCESS: 检查成功
* CI_ERROR: 检查失败
*/
UINT8 GetDanCaoPhySecValidState(UINT16 phySecId, UINT8 oper_src, UINT8 sendLevel);
/*
* 功能描述: 道岔强扳可动作物理区段检查
* 参数说明: UINT16 phySecId,物理区段Id
* UINT8 sendLevel,发送级别
* 返回值 CI_SUCCESS: 检查成功
* CI_ERROR: 检查失败
*/
UINT8 GetForcePhySecValidState(UINT16 phySecId, UINT8 sendLevel);
/*
* 功能描述: 道岔常态位置检查
* 参数说明: UINT16 wSwitchId,道岔Id
* 返回值
*/
void CheckSwitchNomalPosProc(const UINT16 wSwitchId);
/*
* 功能描述: 道岔定反操互斥条件检查
* 参数说明: const UINT16 wSwitchId, 道岔ID
* 返回值 CI_SUCCESS: 检查成功
* CI_ERROR: 检查失败
*/
UINT8 CheckSwitchDFMulValid(const UINT16 wSwitchId, const UINT8 chSwitchPos);
/*
* 功能描述: 道岔常态位置检查道岔封锁和道岔区段(包含额外物理区段)封锁
* 参数说明: UINT16 wSwitchId,道岔Id
* 返回值 CI_ERROR
* CI_SUCCESS
*/
UINT8 GetSwitchAndSecFLockState(const UINT16 wSwitchId);
/*
* 功能描述:获取全线牵引加速度设置状态
* 参数说明:无
* 返 回 值:0x55 未设置
* 0xAA 已设置
* Created By LQ 2026.02.04
*/
UINT8 GetAllLineAccelerationState(void);
/*
* 功能描述:获取全线牵引加速度设置状态
* 参数说明:UINT8 setState 全线牵引加速度设置状态
* 返 回 值:无
* Created By LQ 2026.02.04
*/
void SetAllLineAccelerationState(UINT8 setState);
/*
* 功能描述:获取全线牵引加速度设置值
* 参数说明:无
* 返 回 值:全线牵引加速度设置值
* Created By LQ 2026.02.04
*/
UINT8 GetAllLineAccelerationValue(void);
/*
* 功能描述:设置全线牵引加速度设置值
* 参数说明:UINT8 setValue 全线牵引加速度设置值
* 返 回 值:无
* Created By LQ 2026.02.04
*/
void SetAllLineAccelerationValue(UINT8 setValue);
/*
* 功能描述:获取全线制动率设置状态
* 参数说明:无
* 返 回 值:0x55 未设置
* 0xAA 已设置
* Created By LQ 2026.02.04
*/
UINT8 GetAllLineBrakeRateState(void);
/*
* 功能描述:设置全线制动率设置状态
* 参数说明:UINT8 setState 全线制动率设置状态
* 返 回 值:无
* Created By LQ 2026.02.04
*/
void SetAllLineBrakeRateState(UINT8 setState);
/*
* 功能描述:获取全线牵引加速度设置值
* 参数说明:无
* 返 回 值:全线牵引加速度设置值
* Created By LQ 2026.02.04
*/
UINT8 GetAllLineBrakeRateValue(void);
/*
* 功能描述:设置全线牵引加速度设置值
* 参数说明:UINT8 setValue 全线牵引加速度设置值
* 返 回 值:无
* Created By LQ 2026.02.04
*/
void SetAllLineBrakeRateValue(UINT8 setValue);
/*
* 功能描述:设置本地区间牵引加速度信息
* 参数说明:const UINT8 cAreaNum 区间数量
* const AreaAccelerationInfoStruct pAreaAccBuf[LOCAL_AREA_SNOW_SUM_MAX] 区间牵引加速度数组
* 返 回 值:无
* Created By LQ 2026.02.04
*/
void SetLocalAreaAccelerationInfo(const UINT8 cAreaNum, const AreaAccelerationInfoStruct pAreaAccBuf[LOCAL_AREA_SNOW_SUM_MAX]);
/*
* 功能描述:获取本地区间牵引加速度数量
* 参数说明:无
* 返 回 值:区间牵引加速度数量
* Created By LQ 2026.02.04
*/
UINT8 GetLocalAreaAccelerationNum(void);
/*
* 功能描述:获取本地区间牵引加速度信息
* 参数说明:无
* 返 回 值:区间牵引加速度信息
* Created By LQ 2026.02.04
*/
AreaAccelerationInfoStruct* GetLocalAreaAcceleration(void);
/*
* 功能描述:设置本地区间制动率信息
* 参数说明:const UINT8 cAreaNum 区间数量
* const AreaBrakeRateInfoStruct pAreaBrakeBuf[LOCAL_AREA_SNOW_SUM_MAX] 区间制动率数组
* 返 回 值:无
* Created By LQ 2026.02.04
*/
void SetLocalAreaBrakeRateInfo(const UINT8 cAreaNum, const AreaBrakeRateInfoStruct pAreaBrakeBuf[LOCAL_AREA_SNOW_SUM_MAX]);
/*
* 功能描述:获取本地区间制动率数量
* 参数说明:无
* 返 回 值:区间制动率数量
* Created By LQ 2026.02.04
*/
UINT8 GetLocalAreaBrakeRateNum(void);
/*
* 功能描述:获取本地区间制动率信息
* 参数说明:无
* 返 回 值:区间制动率信息
* Created By LQ 2026.02.04
*/
AreaBrakeRateInfoStruct* GetLocalAreaBrakeRate(void);
#endif #endif
@@ -1,386 +0,0 @@
/********************************************************
*
* 文 件 名: ECSConfigDataManage.c
* 版权说明: 交控科技股份有限公司
* 创建时间: 2026.01.24
* 作 者: 联锁组
* 功能描述: 环境控制系统配置数据
* 函数包括:
* 使用注意:
* 修改记录:
*
********************************************************/
#include "ECSConfigDataManage.h"
ECSConfigDataStruct ECSConfigDataStru[ECS_MAX_NUM] = { 0U }; /*ECS配置数据结构体*/
INT16 ECSCurSum = 0; /*ECS当前总数*/
UINT16 LocalCiECSIdBuf[ECS_MAX_NUM] = { 0U }; /*定义本地联ECS ID数组*/
/*
* 功能描述:获取指定ID ECS索引号
* 参数说明:const UINT16 EcslId ECS ID
* 返 回 值:ECS_MAX_NUM 10 获取数据失败
* 其它 ECS索引号
* Created By LQ 2026.01.24
*/
UINT16 GetEcsConfigBufIndex(const UINT16 EcslId)
{
UINT16 wRetVal = ECS_MAX_NUM;
if ((1U <= EcslId) && (ECS_MAX_NUM > EcslId))
{
wRetVal = EcslId;
}
else
{
/*入参非法,返回失败*/
}
return wRetVal;
}
/*
* 功能描述:获取ECS当前总数
* 参数说明:void
* 返 回 值:ECS当前总数
* Created By LQ 2026.01.24
*/
UINT16 GetEcsCurSum(void)
{
UINT16 wRetVal = 0U;
if ((INT16)ECS_MAX_NUM <= ECSCurSum)
{
wRetVal = ECS_MAX_NUM;
}
else if (0 > ECSCurSum)
{
wRetVal = 0U;
}
else
{
wRetVal = (UINT16)ECSCurSum;
}
return wRetVal;
}
/*
* 功能描述:获取指定数组下标对应的ECS ID
* 参数说明:const UINT16 bufIndex 数组下标
* 返 回 值:0 获取数据失败
* 其它 ECS ID
* Created By LQ 2026.01.24
*/
UINT16 GetEcsId(const UINT16 bufIndex)
{
UINT16 wRetVal = CI_ERROR;
UINT16 wEcsCurNum = 0U;
wEcsCurNum = GetEcsCurSum();
if (bufIndex < wEcsCurNum)
{
wRetVal = LocalCiECSIdBuf[bufIndex];
}
else
{
/*入参非法,返回失败*/
wRetVal = CI_ERROR;
}
return wRetVal;
}
/*
* 功能描述:获取指定ID ECS所属控区ID
* 参数说明:const UINT16 EcslId ECS ID
* 返 回 值:0 获取数据失败
* 其它 控区ID
* Created By LQ 2026.01.24
*/
UINT8 GetEcsBelongCiId(const UINT16 EcslId)
{
UINT16 bufIndex = 0U; /*数组下标*/
UINT8 cRetVal = CI_ERROR;
bufIndex = GetEcsConfigBufIndex(EcslId);
if (ECS_MAX_NUM > bufIndex)
{
cRetVal = ECSConfigDataStru[bufIndex].cBelongCiId;
}
else
{
/*入参非法,返回失败*/
cRetVal = CI_ERROR;
}
return cRetVal;
}
/*
* 功能描述:整理读入的ECS配置数据
* 参数说明:无
* 返 回 值:CI_SUCCESS 1 整理成功
* CI_ERROR 0 整理失败
* Created By LQ 2026.01.27
*/
UINT8 EcsConfigDataManage(void)
{
UINT16 ii = 0U;
UINT16 jj = 0U;
UINT16 wEcsCurSum = 0U; /*ECS配置数据总数*/
UINT8 cLocalCiId = 0U;
UINT8 retVal = CI_ERROR;
wEcsCurSum = GetEcsCurSum();
if (ECS_MAX_NUM > wEcsCurSum)
{
retVal = CI_SUCCESS;
for (ii = 0U; ii < ECS_MAX_NUM; ii++)
{
cLocalCiId = GetSystemParaLocalCiId();
if (ECSConfigDataStru[ii].cBelongCiId == cLocalCiId)
{
if (wEcsCurSum > jj)
{
LocalCiECSIdBuf[jj] = ECSConfigDataStru[ii].wEcsId; /*存储本控区的ECS ID*/
jj++;
}
else
{
break; /*数量超限,停止遍历*/
}
}
else
{
/*继续初始化*/
}
}
}
else
{
retVal = CI_ERROR; /*数据超限,返回失败*/
}
return retVal;
}
/*
* 功能描述:获取指定ID ECS起点linkID
* 参数说明:const UINT16 EcslId ECS ID
* 返 回 值:0 获取数据失败
* 起点linkID
* Created By LQ 2026.01.26
*/
UINT16 GetEcsStartLinkId(const UINT16 EcslId)
{
UINT16 bufIndex = 0U; /*数组下标*/
UINT16 wRetVal = CI_ERROR;
bufIndex = GetEcsConfigBufIndex(EcslId);
if (ECS_MAX_NUM > bufIndex)
{
wRetVal = ECSConfigDataStru[bufIndex].wStartLinkId;
}
else
{
/*入参非法,返回失败*/
wRetVal = CI_ERROR;
}
return wRetVal;
}
/*
* 功能描述:获取指定ID ECS起点link偏移量
* 参数说明:const UINT16 EcslId ECS ID
* 返 回 值:起点link偏移量
* Created By LQ 2026.01.26
*/
UINT32 GetEcsStartLinkOff(const UINT16 EcslId)
{
UINT16 bufIndex = 0U; /*数组下标*/
UINT32 dwRetVal = CI_ERROR;
bufIndex = GetEcsConfigBufIndex(EcslId);
if (ECS_MAX_NUM > bufIndex)
{
dwRetVal = ECSConfigDataStru[bufIndex].dwStartLinkOff;
}
else
{
/*入参非法,返回失败*/
dwRetVal = CI_ERROR;
}
return dwRetVal;
}
/*
* 功能描述:获取指定ID ECS终点linkID
* 参数说明:const UINT16 EcslId ECS ID
* 返 回 值:0 获取数据失败
* 终点linkID
* Created By LQ 2026.01.26
*/
UINT16 GetEcsEndLinkId(const UINT16 EcslId)
{
UINT16 bufIndex = 0U; /*数组下标*/
UINT16 wRetVal = CI_ERROR;
bufIndex = GetEcsConfigBufIndex(EcslId);
if (ECS_MAX_NUM > bufIndex)
{
wRetVal = ECSConfigDataStru[bufIndex].wEndLinkId;
}
else
{
/*入参非法,返回失败*/
wRetVal = CI_ERROR;
}
return wRetVal;
}
/*
* 功能描述:获取指定ID ECS终点link偏移量
* 参数说明:const UINT16 EcslId ECS ID
* 返 回 值:终点link偏移量
* Created By LQ 2026.01.26
*/
UINT32 GetEcsEndLinkOff(const UINT16 EcslId)
{
UINT16 bufIndex = 0U; /*数组下标*/
UINT32 dwRetVal = CI_ERROR;
bufIndex = GetEcsConfigBufIndex(EcslId);
if (ECS_MAX_NUM > bufIndex)
{
dwRetVal = ECSConfigDataStru[bufIndex].dwEndLinkOff;
}
else
{
/*入参非法,返回失败*/
dwRetVal = CI_ERROR;
}
return dwRetVal;
}
/*
* 功能描述:获取指定ID ECS关联的物理区段数量
* 参数说明:const UINT16 EcslId ECS ID
* 返 回 值:0 获取数据失败
* 其它 ECS关联的物理区段数量
* Created By LQ 2026.01.24
*/
UINT8 GetEcsRelPhySecNum(const UINT16 EcslId)
{
UINT16 bufIndex = 0U; /*数组下标*/
UINT8 cRetVal = CI_ERROR;
bufIndex = GetEcsConfigBufIndex(EcslId);
if (ECS_MAX_NUM > bufIndex)
{
cRetVal = ECSConfigDataStru[bufIndex].cRelPhySecNum;
}
else
{
/*入参非法,返回失败*/
cRetVal = CI_ERROR;
}
return cRetVal;
}
/*
* 功能描述:获取指定ID ECS关联的物理区段ID数组
* 参数说明:const UINT16 EcslId ECS ID
* 返 回 值:NULL 获取数据失败
* 其它 ECS关联的物理区段ID数组
* Created By LQ 2026.01.24
*/
UINT16* GetEcsRelPhySecId(const UINT16 EcslId)
{
UINT16 bufIndex = 0U; /*数组下标*/
UINT16* pRetVal = NULL;
bufIndex = GetEcsConfigBufIndex(EcslId);
if (ECS_MAX_NUM > bufIndex)
{
pRetVal = ECSConfigDataStru[bufIndex].szRelPhySecId;
}
else
{
/*入参非法,返回失败*/
pRetVal = NULL;
}
return pRetVal;
}
/*
* 功能描述:获取指定ID ECS关联的风向为逻辑正方向的继电器ID
* 参数说明:const UINT16 EcslId ECS ID
* 返 回 值:0 获取数据失败
* 其它 继电器ID
* Created By LQ 2026.01.24
*/
UINT16 GetEcsRelFanUpRelayId(const UINT16 EcslId)
{
UINT16 bufIndex = 0U; /*数组下标*/
UINT16 wRetVal = CI_ERROR;
bufIndex = GetEcsConfigBufIndex(EcslId);
if (ECS_MAX_NUM > bufIndex)
{
wRetVal = ECSConfigDataStru[bufIndex].wFanUpRelayId;
}
else
{
/*入参非法,返回失败*/
wRetVal = CI_ERROR;
}
return wRetVal;
}
/*
* 功能描述:获取指定ID ECS关联的风向为逻辑反方向的继电器ID
* 参数说明:const UINT16 EcslId ECS ID
* 返 回 值:0 获取数据失败
* 其它 继电器ID
* Created By LQ 2026.01.24
*/
UINT16 GetEcsRelFanDownRelayId(const UINT16 EcslId)
{
UINT16 bufIndex = 0U; /*数组下标*/
UINT16 wRetVal = CI_ERROR;
bufIndex = GetEcsConfigBufIndex(EcslId);
if (ECS_MAX_NUM > bufIndex)
{
wRetVal = ECSConfigDataStru[bufIndex].wFanDownRelayId;
}
else
{
/*入参非法,返回失败*/
wRetVal = CI_ERROR;
}
return wRetVal;
}
@@ -1,163 +0,0 @@
/********************************************************
*
* 文 件 名: ECSConfigDataConfig.h
* 版权说明: 交控科技股份有限公司
* 创建时间: 2026.01.24
* 作 者: 联锁组
* 功能描述: 环境控制系统配置数据
* 函数包括:
* 使用注意:
* 修改记录:
*
********************************************************/
#ifndef _ECS_CONFIG_DATA_MANAGE_H_
#define _ECS_CONFIG_DATA_MANAGE_H_
#include "CommonTypes.h"
#include "ECSDefine.h"
#include "CiSystemDefine.h"
#include "SystemParameterManage.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct S_ECSConfigDataStruct
{
UINT16 wEcsId; /*ECS ID*/
UINT8 cBelongCiId; /*所属CI ID*/
UINT16 wStartLinkId; /*隧道起点link ID*/
UINT32 dwStartLinkOff; /*隧道起点link偏移量*/
UINT16 wEndLinkId; /*隧道终点link ID*/
UINT32 dwEndLinkOff; /*隧道终点link偏移量*/
UINT8 cRelPhySecNum; /*隧道关联物理区段数量*/
UINT16 szRelPhySecId[ECS_REL_PHYSEC_MAX_NUM]; /*隧道关联物理区段ID*/
UINT16 wBelongOcId; /*所属OC ID*/
UINT16 wFanUpRelayId; /*风向为逻辑正方向的继电器ID*/
UINT16 wFanDownRelayId; /*风向为逻辑反方向的继电器ID*/
}ECSConfigDataStruct;
extern ECSConfigDataStruct ECSConfigDataStru[ECS_MAX_NUM]; /*/*ECS配置数据结构体*/
extern INT16 ECSCurSum; /*ECS当前总数*/
extern UINT16 LocalCiECSIdBuf[ECS_MAX_NUM]; /*定义本地联ECS ID数组*/
/*
* 功能描述:获取指定ID ECS索引号
* 参数说明:const UINT16 EcslId ECS ID
* 返 回 值:ECS_MAX_NUM 10 获取数据失败
* 其它 ECS索引号
* Created By LQ 2026.01.24
*/
UINT16 GetEcsConfigBufIndex(const UINT16 EcslId);
/*
* 功能描述:获取ECS当前总数
* 参数说明:void
* 返 回 值:ECS当前总数
* Created By LQ 2026.01.24
*/
UINT16 GetEcsCurSum(void);
/*
* 功能描述:获取指定数组下标对应的ECS ID
* 参数说明:const UINT16 bufIndex 数组下标
* 返 回 值:0 获取数据失败
* 其它 ECS ID
* Created By LQ 2026.01.24
*/
UINT16 GetEcsId(const UINT16 bufIndex);
/*
* 功能描述:获取指定ID ECS所属控区ID
* 参数说明:const UINT16 EcslId ECS ID
* 返 回 值:0 获取数据失败
* 其它 控区ID
* Created By LQ 2026.01.24
*/
UINT8 GetEcsBelongCiId(const UINT16 EcslId);
/*
* 功能描述:整理读入的ECS配置数据
* 参数说明:无
* 返 回 值:CI_SUCCESS 1 整理成功
* CI_ERROR 0 整理失败
* Created By LQ 2026.01.27
*/
UINT8 EcsConfigDataManage(void);
/*
* 功能描述:获取指定ID ECS起点linkID
* 参数说明:const UINT16 EcslId ECS ID
* 返 回 值:0 获取数据失败
* 起点linkID
* Created By LQ 2026.01.26
*/
UINT16 GetEcsStartLinkId(const UINT16 EcslId);
/*
* 功能描述:获取指定ID ECS起点link偏移量
* 参数说明:const UINT16 EcslId ECS ID
* 返 回 值:起点link偏移量
* Created By LQ 2026.01.26
*/
UINT32 GetEcsStartLinkOff(const UINT16 EcslId);
/*
* 功能描述:获取指定ID ECS终点linkID
* 参数说明:const UINT16 EcslId ECS ID
* 返 回 值:0 获取数据失败
* 终点linkID
* Created By LQ 2026.01.26
*/
UINT16 GetEcsEndLinkId(const UINT16 EcslId);
/*
* 功能描述:获取指定ID ECS终点link偏移量
* 参数说明:const UINT16 EcslId ECS ID
* 返 回 值:终点link偏移量
* Created By LQ 2026.01.26
*/
UINT32 GetEcsEndLinkOff(const UINT16 EcslId);
/*
* 功能描述:获取指定ID ECS关联的物理区段数量
* 参数说明:const UINT16 EcslId ECS ID
* 返 回 值:0 获取数据失败
* 其它 ECS关联的物理区段数量
* Created By LQ 2026.01.24
*/
UINT8 GetEcsRelPhySecNum(const UINT16 EcslId);
/*
* 功能描述:获取指定ID ECS关联的物理区段ID数组
* 参数说明:const UINT16 EcslId ECS ID
* 返 回 值:NULL 获取数据失败
* 其它 ECS关联的物理区段ID数组
* Created By LQ 2026.01.24
*/
UINT16* GetEcsRelPhySecId(const UINT16 EcslId);
/*
* 功能描述:获取指定ID ECS关联的风向为逻辑正方向的继电器ID
* 参数说明:const UINT16 EcslId ECS ID
* 返 回 值:0 获取数据失败
* 其它 继电器ID
* Created By LQ 2026.01.24
*/
UINT16 GetEcsRelFanUpRelayId(const UINT16 EcslId);
/*
* 功能描述:获取指定ID ECS关联的风向为逻辑反方向的继电器ID
* 参数说明:const UINT16 EcslId ECS ID
* 返 回 值:0 获取数据失败
* 其它 继电器ID
* Created By LQ 2026.01.24
*/
UINT16 GetEcsRelFanDownRelayId(const UINT16 EcslId);
#ifdef __cplusplus
};
#endif
#endif
File diff suppressed because it is too large Load Diff
-293
View File
@@ -1,293 +0,0 @@
/********************************************************
*
* 文 件 名: ECSDataManage.h
* 版权说明: 交控科技股份有限公司
* 创建时间: 2026.01.24
* 作 者: 联锁组
* 功能描述: 环境控制系统动态数据
* 函数包括:
* 使用注意:
* 修改记录:
*
********************************************************/
#ifndef _ECS_DATA_MANAGE_H_
#define _ECS_DATA_MANAGE_H_
#include "ECSDefine.h"
#include "ECSConfigDataManage.h"
#ifdef __cplusplus
extern "C" {
#endif
/*环境控制系统动态数据结构体*/
typedef struct S_ECSDataStruct
{
UINT16 wEcsId; /*ECS/隧道 ID*/
UINT8 cAutoTrigState; /*ECS自动触发状态:0x55-启用,0xAA-停用*/
UINT16 wRelTrainId; /*隧道关联列车ID*/
UINT32 dwTrainStopStartCycNum; /*关联列车停车起始周期号*/
UINT32 dwTrainMoveStartCycNum; /*关联列车移动起始周期号(通信车使用)*/
UINT8 cJamState; /*隧道拥堵状态:0x55-拥堵,0xAA-不拥堵*/
UINT8 cOccPhySecNum; /*隧道内占用的物理区段数量*/
UINT16 szOccPhySecId[ECS_REL_PHYSEC_MAX_NUM]; /*隧道内占用的物理区段ID数组*/
}ECSDataStruct;
extern ECSDataStruct ECSDataStru[ECS_MAX_NUM]; /*环境控制系统动态数据结构体*/
/*
* 功能描述:获取ECS动态数据结构体
* 参数说明:
* 返 回 值:ECS动态数据结构体
* Created By LQ 2026.01.24
*/
ECSDataStruct* GetEcsData(void);
/*
* 功能描述:设置指定ID ECS自动触发状态
* 参数说明:const UINT16 wEcsId ECS ID
* const UINT8 cState 自动触发状态
* 返 回 值:无
* Created By LQ 2026.01.24
*/
void SetEcsAutoTrigState(const UINT16 wEcsId, const UINT8 cState);
/*
* 功能描述:获取指定ID ECS自动触发状态
* 参数说明:const UINT16 wEcsId ECS ID
* 返 回 值:0 获取数据失败
* 0x55 启用
* 0xAA 停用
* Created By LQ 2026.01.24
*/
UINT8 GetEcsAutoTrigState(const UINT16 wEcsId);
/*
* 功能描述:设置指定ID ECS关联列车ID
* 参数说明:const UINT16 wEcsId ECS ID
* const UINT16 wTrainId 列车ID
* 返 回 值:无
* Created By LQ 2026.01.24
*/
void SetEcsRelTrainId(const UINT16 wEcsId, const UINT16 wTrainId);
/*
* 功能描述:获取指定ID ECS关联列车ID
* 参数说明:const UINT16 wEcsId ECS ID
* 返 回 值:ECS关联列车ID
* Created By LQ 2026.01.24
*/
UINT16 GetEcsRelTrainId(const UINT16 wEcsId);
/*
* 功能描述:设置ECS关联列车停车起始周期
* 参数说明:const UINT16 wEcsId ECS ID
* const UINT32 dwCycNum 周期号
* 返 回 值:无
* Created By LQ 2026.01.24
*/
void SetEcsTrainStopStartCycNum(const UINT16 wEcsId, const UINT32 dwCycNum);
/*
* 功能描述:获取ECS关联列车停车起始周期
* 参数说明:const UINT16 wEcsId ECS ID
* 返 回 值:ECS关联列车停车起始周期
* Created By LQ 2026.01.24
*/
UINT32 GetEcsTrainStopStartCycNum(const UINT16 wEcsId);
/*
* 功能描述:设置ECS关联列车移动起始周期
* 参数说明:const UINT16 wEcsId ECS ID
* const UINT32 dwCycNum 周期号
* 返 回 值:无
* Created By LQ 2026.01.24
*/
void SetEcsTrainMoveStartCycNum(const UINT16 wEcsId, const UINT32 dwCycNum);
/*
* 功能描述:获取ECS关联列车移动起始周期
* 参数说明:const UINT16 wEcsId ECS ID
* 返 回 值:ECS关联列车停车移动周期
* Created By LQ 2026.01.24
*/
UINT32 GetEcsTrainMoveStartCycNum(const UINT16 wEcsId);
/*
* 功能描述:设置指定ID ECS拥堵状态
* 参数说明:const UINT16 wEcsId ECS ID
* const UINT8 cState 拥堵状态
* 返 回 值:无
* Created By LQ 2026.01.24
*/
void SetEcsJamState(const UINT16 wEcsId, const UINT8 cState);
/*
* 功能描述:获取指定ID ECS拥堵状态
* 参数说明:const UINT16 wEcsId ECS ID
* 返 回 值:0 获取数据失败
* 0x55 拥堵
* 0xAA 不拥堵
* Created By LQ 2026.01.24
*/
UINT8 GetEcsJamState(const UINT16 wEcsId);
/*
* 功能描述:更新指定ID ECS当前占用的物理区段信息
* 参数说明:const UINT16 wEcsId ECS ID
* UINT16 pOccPhySecId[ECS_REL_PHYSEC_MAX_NUM] 当前占用的物理区段ID(出参)
* 返 回 值:当前占用的物理区段数量
* Created By LQ 2026.01.25
*/
UINT8 GetEcsCurOccPhySecInfo(const UINT16 wEcsId, UINT16 pOccPhySecId[ECS_REL_PHYSEC_MAX_NUM]);
/*
* 功能描述:清除指定ID ECS占用的物理区段信息
* 参数说明:const UINT16 wEcsId ECS ID
* 返 回 值:无
* Created By LQ 2026.01.25
*/
void ClearEcsOccPhySecInfo(const UINT16 wEcsId);
/*
* 功能描述:更新指定ID ECS占用的物理区段信息
* 参数说明:const UINT16 wEcsId ECS ID
* 返 回 值:无
* Created By LQ 2026.01.25
*/
void UpdateEcsOccPhySecInfo(const UINT16 wEcsId);
/*
* 功能描述:获取指定ID ECS占用的物理区段数量
* 参数说明:const UINT16 wEcsId ECS ID
* 返 回 值:占用的物理区段数量
* Created By LQ 2026.01.25
*/
UINT8 GetEcsOccPhySecNum(const UINT16 wEcsId);
/*
* 功能描述:获取指定ID ECS占用的物理区段ID
* 参数说明:const UINT16 wEcsId ECS ID
* 返 回 值:NULL 获取数据失败
* 非NULL 占用的物理区段ID
* Created By LQ 2026.01.25
*/
UINT16* GetEcsOccPhySecId(const UINT16 wEcsId);
/*
* 功能描述:清除指定ID ECS的动态数据
* 参数说明:const UINT16 wEcsId ECS ID
* 返 回 值:无
* Created By LQ 2026.01.26
*/
void ClearEcsDymData(const UINT16 wEcsId);
/*
* 功能描述:更新ECS关联列车
* 参数说明:无
* 返 回 值:无
* Created By LQ 2026.01.26
*/
void UpdateEcsRelTrain(const UINT16 wEcsId);
/*
* 功能描述:按照通信车监督ECS隧道内列车停车状态
* 参数说明:const UINT16 wEcsId ECS ID
* 返 回 值:无
* Created By LQ 2026.01.26
*/
void MonitorEcsTrainByCommTrain(const UINT16 wEcsId);
/*
* 功能描述:按照非通信车监督ECS隧道内列车停车状态
* 参数说明:const UINT16 wEcsId ECS ID
* 返 回 值:无
* Created By LQ 2026.01.26
*/
void MonitorEcsTrainByBadTrain(const UINT16 wEcsId);
/*
* 功能描述:检查ECS物理区段是否全为非通信车占用
* 参数说明:const UINT16 wEcsId
* 返 回 值:0 全为UT占用
* 1 空闲或存在CT占用
* Created By LQ 2026.01.26
*/
UINT8 EcsPhySecUTOccCheck(const UINT16 wEcsId);
/*
* 功能描述:检查ECS物理区段非通信车占用状态是否发生变化
* 参数说明:const UINT16 wEcsId
* 返 回 值:0 变化
* 1 未变化
* Created By LQ 2026.01.26
*/
UINT8 EcsPhySecUTOccChangeCheck(const UINT16 wEcsId);
/*
* 功能描述:检查ECS物理区段非通信车占用是否连续
* 参数说明:const UINT16 wEcsId ECS ID
* UINT8 cPhySecNum 占用的物理区段数量
* UINT16 pCurOccPhySecId[ECS_REL_PHYSEC_MAX_NUM] 占用的物理区段ID数组
* 返 回 值:0 占用不连续
* 1 占用连续
* Created By LQ 2026.01.26
*/
UINT8 EcsPhySecUTOccContinusCheck(const UINT16 wEcsId, UINT8 cPhySecNum, UINT16 pCurOccPhySecId[ECS_REL_PHYSEC_MAX_NUM]);
/*
* 功能描述:检查ECS外方物理区段占用状态是否变化
* 参数说明:const UINT16 wEcsId ECS ID
* 返 回 值:0 变化
* 1 未变化
* Created By LQ 2026.01.26
*/
UINT8 EcsOutPhySecOccChangeCheck(const UINT16 wEcsId);
/*
* 功能描述:获取覆盖多个物理区段的ECS外方物理区段ID
* 参数说明:const UINT16 wRouteId 进路ID
* const UINT16 wCurPhySecId ECS当前物理区段ID
* const UINT16 wNextPhySecId ECS下一物理区段ID
* UINT16* pEnterPhySecId 驶入ECS隧道的外方物理区段ID(出参)
* UINT16* pGoOutPhySecId 驶出ECS隧道的外方物理区段ID(出参)
* 返 回 值:0 获取失败
* 1 获取成功
* Created By LQ 2026.01.26
*/
UINT8 GetMultipleSecEcsOutPhySec(const UINT16 wRouteId, const UINT16 wCurPhySecId, const UINT16 wNextPhySecId, UINT16* pEnterPhySecId, UINT16* pGoOutPhySecId);
/*
* 功能描述:获取仅覆盖一个物理区段的ECS外方物理区段ID
* 参数说明:const UINT16 wRouteId 进路ID
* const UINT16 wCurPhySecId ECS当前物理区段ID
* UINT16* pEnterPhySecId 驶入ECS隧道的外方物理区段ID(出参)
* UINT16* pGoOutPhySecId 驶出ECS隧道的外方物理区段ID(出参)
* 返 回 值:0 获取失败
* 1 获取成功
* Created By LQ 2026.01.27
*/
UINT8 GetSingleSecEcsOutPhySec(const UINT16 wRouteId, const UINT16 wCurPhySecId, UINT16* pEnterPhySecId, UINT16* pGoOutPhySecId);
/*
* 功能描述:更新ECS隧道拥堵状态
* 参数说明:无
* 返 回 值:无
* Created By LQ 2026.01.26
*/
void UpdateEcsJamState(const UINT16 wEcsId);
/*
* 功能描述:ECS风机继电器驱动处理
* 参数说明:无
* 返 回 值:无
* Created By LQ 2026.01.26
*/
void EcsFanRelayDriveProc(const UINT16 wEcsId);
#ifdef __cplusplus
};
#endif
#endif
-31
View File
@@ -1,31 +0,0 @@
/********************************************************
*
* 文 件 名: ECSDefine.h
* 版权说明: 交控科技股份有限公司
* 创建时间: 2024.01.24
* 作 者: 联锁组
* 功能描述: 环境控制系统相关常量定义
* 函数包括:
* 使用注意:
* 修改记录:
*
********************************************************/
#ifndef _ECS_Define_H_
#define _ECS_Define_H_
#define ECS_MAX_NUM (UINT16)3U /*ECS数量最大值*/
#define ECS_REL_PHYSEC_MAX_NUM (UINT8)20U /*隧道关联物理区段数量最大值*/
#define ECS_REL_LOGSEC_MAX_NUM (UINT8)80U /*隧道关联逻辑区段数量最大值*/
/*ECS自动触发状态*/
#define ECS_AUTOTRIG_YES ((UINT8)0x55U) /*启用*/
#define ECS_AUTOTRIG_NO ((UINT8)0xAAU) /*停用*/
/*ECS拥堵状态*/
#define ECS_JAM_YES ((UINT8)0x55U) /*拥堵*/
#define ECS_JAM_NO ((UINT8)0xAAU) /*不拥堵*/
#endif
+17 -11
View File
@@ -94,16 +94,23 @@ void SetErrorData(const UINT8 FunctionId, const UINT8 DeviceType, const UINT16 D
tempErrorDataIndex = ErrorDataCurSum; tempErrorDataIndex = ErrorDataCurSum;
if (tempErrorDataIndex < ERROR_DATA_SUM_MAX) if (tempErrorDataIndex < ERROR_DATA_SUM_MAX)
{ {
/* 记录新数据 */ if (ETYPE_PS_FLOCK_SPKSCMD_STATE == DeviceStateType)
ErrorDataStru[tempErrorDataIndex].FunctionId = FunctionId; {
ErrorDataStru[tempErrorDataIndex].DeviceType = DeviceType; SetPhySecSpksCmdFlockErrorData(FunctionId, DeviceType, DeviceId, DeviceStateType, DeviceState, SendLevel);
ErrorDataStru[tempErrorDataIndex].DeviceId = DeviceId; }
ErrorDataStru[tempErrorDataIndex].DeviceStateType = DeviceStateType; else
ErrorDataStru[tempErrorDataIndex].DeviceState = DeviceState; {
ErrorDataStru[tempErrorDataIndex].SendLevel = SendLevel; /* 记录新数据 */
ErrorDataStru[tempErrorDataIndex].FunctionId = FunctionId;
ErrorDataStru[tempErrorDataIndex].DeviceType = DeviceType;
ErrorDataStru[tempErrorDataIndex].DeviceId = DeviceId;
ErrorDataStru[tempErrorDataIndex].DeviceStateType = DeviceStateType;
ErrorDataStru[tempErrorDataIndex].DeviceState = DeviceState;
ErrorDataStru[tempErrorDataIndex].SendLevel = SendLevel;
/* 记录未满寻址指向新数据 */ /* 记录未满寻址指向新数据 */
ErrorDataCurSum = (UINT16)(tempErrorDataIndex + 1u); ErrorDataCurSum = (UINT16)(tempErrorDataIndex + 1u);
}
} }
else else
@@ -183,7 +190,7 @@ void SetErrorDataBelongVirCiId(const UINT16 preErrorNum, const UINT8 virCIid)
} }
} }
#if 0
/* /*
* 功能描述: 设置物理区段封锁类型为SPKS按下且命令封锁时的错误数据 * 功能描述: 设置物理区段封锁类型为SPKS按下且命令封锁时的错误数据
* 参数说明: const UINT8 functionId, 函数ID * 参数说明: const UINT8 functionId, 函数ID
@@ -239,7 +246,6 @@ void SetPhySecSpksCmdFlockErrorData(const UINT8 FunctionId, const UINT8 DeviceTy
} }
} }
#endif
@@ -98,7 +98,6 @@ void DeleteErrorData(const UINT16 Index);
* cgh-合并CID-2349-5 * cgh-合并CID-2349-5
*/ */
void SetErrorDataBelongVirCiId(const UINT16 preErrorNum, const UINT8 virCIid); void SetErrorDataBelongVirCiId(const UINT16 preErrorNum, const UINT8 virCIid);
#if 0
/* /*
* 功能描述: 设置物理区段封锁类型为SPKS按下且命令封锁时的错误数据 * 功能描述: 设置物理区段封锁类型为SPKS按下且命令封锁时的错误数据
* 参数说明: const UINT8 functionId, 函数ID * 参数说明: const UINT8 functionId, 函数ID
@@ -113,7 +112,6 @@ void SetErrorDataBelongVirCiId(const UINT16 preErrorNum, const UINT8 virCIid);
void SetPhySecSpksCmdFlockErrorData(const UINT8 FunctionId, const UINT8 DeviceType, const UINT16 DeviceId, void SetPhySecSpksCmdFlockErrorData(const UINT8 FunctionId, const UINT8 DeviceType, const UINT16 DeviceId,
const UINT8 DeviceStateType, const UINT8 DeviceState, const UINT8 DeviceStateType, const UINT8 DeviceState,
const UINT8 SendLevel); const UINT8 SendLevel);
#endif
#ifdef __cplusplus #ifdef __cplusplus
} }
+23 -54
View File
@@ -109,7 +109,6 @@
#define EFUNC_ROUTE_FIRST_LOG_UNLOCK ((UINT8)0x50) /*函数:RouteFirstLogSecAutoUnlockProcess进路第一逻辑区段自动解锁检查*/ #define EFUNC_ROUTE_FIRST_LOG_UNLOCK ((UINT8)0x50) /*函数:RouteFirstLogSecAutoUnlockProcess进路第一逻辑区段自动解锁检查*/
#define EFUNC_SWITCHTESTLOGIC ((UINT8)0x80U) /*函数:SetSwitchTestLogicManage道岔定反位测试*/ #define EFUNC_SWITCHTESTLOGIC ((UINT8)0x80U) /*函数:SetSwitchTestLogicManage道岔定反位测试*/
#define EFUNC_OVERLAP_VALIDMASK_CHECK ((UINT8)0x4A) /*函数:OverlapValidMaskCheck 计算保护区段有效码位检查*/ #define EFUNC_OVERLAP_VALIDMASK_CHECK ((UINT8)0x4A) /*函数:OverlapValidMaskCheck 计算保护区段有效码位检查*/
#define EFUNC_ROUTE_LOCK_DRIVE_SWITCH ((UINT8)0xD2) /*RouteLockDriveSwitch 锁闭道岔*/
/*车辆段联锁逻辑检查*/ /*车辆段联锁逻辑检查*/
#define EFUNC_SET_LEAD_ROUTE_CHECK ((UINT8)0x4B) /*办理引导进路检查*/ #define EFUNC_SET_LEAD_ROUTE_CHECK ((UINT8)0x4B) /*办理引导进路检查*/
@@ -136,6 +135,7 @@
#define EFUNC_CLD_CANCEL_D_TRAIN_ROUTE ((UINT8)0x66) /*取消进路调车*/ #define EFUNC_CLD_CANCEL_D_TRAIN_ROUTE ((UINT8)0x66) /*取消进路调车*/
#define EFUNC_CLD_CLOSE_GARAGEDOOR ((UINT8)0x67) /*关闭车库门*/ #define EFUNC_CLD_CLOSE_GARAGEDOOR ((UINT8)0x67) /*关闭车库门*/
#define EFUNC_CLD_CHECK_GARAGEDOOR_CLOSE ((UINT8)0xc9) /*车库门关闭条件检查(RC模式下)*/ #define EFUNC_CLD_CHECK_GARAGEDOOR_CLOSE ((UINT8)0xc9) /*车库门关闭条件检查(RC模式下)*/
#define EFUNC_CHECK_DIAOCHE_ROUTE_ZRJ ((UINT8)0x68) /* CheckDiaoCheRouteZRJFeasibility 检查调车进路总人解的可行性*/
#define EFUNC_CHECK_OPEN_L_ERR_CLD ((UINT8)0x69) /*OpenLTrainRouteErrP*/ #define EFUNC_CHECK_OPEN_L_ERR_CLD ((UINT8)0x69) /*OpenLTrainRouteErrP*/
#define EFUNC_CHECK_OPEN_D_ERR_CLD ((UINT8)0x6a) #define EFUNC_CHECK_OPEN_D_ERR_CLD ((UINT8)0x6a)
#define EFUNC_KEEP_L_ERR_CLD ((UINT8)0x6b) #define EFUNC_KEEP_L_ERR_CLD ((UINT8)0x6b)
@@ -178,8 +178,6 @@
#define EFUNC_LOGSEC_LAST_SECLOCK ((UINT8)0x92) /* CheckLogRouteLogSecLastSecLock */ #define EFUNC_LOGSEC_LAST_SECLOCK ((UINT8)0x92) /* CheckLogRouteLogSecLastSecLock */
#define EFUNC_ROUTE_ZHONGTUZHEFAN_UNLOCK ((UINT8)0x94) /* CheckRouteZhefanJiesuo */ #define EFUNC_ROUTE_ZHONGTUZHEFAN_UNLOCK ((UINT8)0x94) /* CheckRouteZhefanJiesuo */
#define EFUNC_PART_ROUTE_CMD_PROC ((UINT8)0x95) /*RoutePartApplyLogicManage(正线/试车线部分进路命令处理)*/
#define EFUNC_PART_ROUTE_CMD_PROC_CLD ((UINT8)0x96) /*RoutePartApplyLogicManageCLD(场段部分进路命令处理)*/
/*逻辑进路相关报警函数*/ /*逻辑进路相关报警函数*/
#define EFUNC_LogRouteOpenManage ((UINT8)0xC1) /*EFUNC_LogRouteOpenManage逻辑进路信号开放处理*/ #define EFUNC_LogRouteOpenManage ((UINT8)0xC1) /*EFUNC_LogRouteOpenManage逻辑进路信号开放处理*/
@@ -189,13 +187,6 @@
#define EFUNC_OpenLogRouteSignalProcess ((UINT8)0xC5) /*LogRouteSignalProcess开放逻辑进路信号条件检查*/ #define EFUNC_OpenLogRouteSignalProcess ((UINT8)0xC5) /*LogRouteSignalProcess开放逻辑进路信号条件检查*/
#define EFUNC_LOGROUTE_LOGIC_RES_APP_CHECK ((UINT8)0xC6) /*逻辑进路逻辑区段资源可用性检查*/ #define EFUNC_LOGROUTE_LOGIC_RES_APP_CHECK ((UINT8)0xC6) /*逻辑进路逻辑区段资源可用性检查*/
#define EFUNC_LogRoureUsingStateCheck ((UINT8)0xC7) /*LogRoutePhySecUseLogicProcess*/ #define EFUNC_LogRoureUsingStateCheck ((UINT8)0xC7) /*LogRoutePhySecUseLogicProcess*/
/*联络线相关报警函数*/
#define EFUNC_ConnectOverrideSetProc ((UINT8)0xCA) /*ConnectOverrideSetProc*/
#define EFUNC_ConnectSwitchAlarmProc ((UINT8)0xCB) /*LogSecConnectSwitchAlarmProc*/
#define EFUNC_GetDisneyGJDriveState ((UINT8)0xCC) /*GetDisneyGJDriveState*/
#define EFUNC_DsnConnectOtherCi ((UINT8)0xCD) /*DsnConnectOtherCiValidCheck*/
#define EFUNC_LogSecDsnConnectCheck ((UINT8)0xCE) /*LogSecDsnConnectCheck*/
#define EFUNC_RouteCbtcTiranEnterCheck ((UINT8)0xCF) /*RouteCbtcTiranEnterCheck*/
/*其他函数*/ /*其他函数*/
#define EFUNC_LOGIC_MANAGE_SYETEM ((UINT8)0xF0) /* Logicmanage.c中导致宕机异常 */ #define EFUNC_LOGIC_MANAGE_SYETEM ((UINT8)0xF0) /* Logicmanage.c中导致宕机异常 */
#define EFUNC_CHECK_ROUTE_SEC_FLOCK ((UINT8)0xF1) /* RouteSecFlockVainCheck */ #define EFUNC_CHECK_ROUTE_SEC_FLOCK ((UINT8)0xF1) /* RouteSecFlockVainCheck */
@@ -219,8 +210,6 @@
#define EFUNC_FIRSTLEAVE_LOGSEC_CHECK ((UINT8)0xD1) /*离去逻辑区段检查RouteLeaveLogSecCheck*/ #define EFUNC_FIRSTLEAVE_LOGSEC_CHECK ((UINT8)0xD1) /*离去逻辑区段检查RouteLeaveLogSecCheck*/
#define EFUNC_OVERLAP_ZHAOCHA_CHECK ((UINT8)0xD3) /*保护区段照查条件检查*/
/*************************************************分界线******************************************************************************/ /*************************************************分界线******************************************************************************/
/*************************************************分界线******************************************************************************/ /*************************************************分界线******************************************************************************/
@@ -228,23 +217,19 @@
/* 故障类型*/ /* 故障类型*/
/* 进路故障类型编码 (UINT8)0x01-(UINT8)0x2f */ /* 进路故障类型编码 (UINT8)0x01-(UINT8)0x2f */
/* 设备类型 CI_DEVICE_TYPE_ROUTE */ /* 设备类型 CI_DEVICE_TYPE_ROUTE */
#define ETYPE_ROUTE_LEVEL ((UINT8)0x01) /*进路监督级别*/ #define ETYPE_ROUTE_LEVEL ((UINT8)0x01) /*进路监督级别*/
#define ETYPE_ROUTE_TYPE ((UINT8)0x02) /*进路类型*/ #define ETYPE_ROUTE_TYPE ((UINT8)0x02) /*进路类型*/
#define ETYPE_ROUTE_STATE ((UINT8)0x03) /*进路状态*/ #define ETYPE_ROUTE_STATE ((UINT8)0x03) /*进路状态*/
#define ETYPE_ROUTE_LEAD_PROPERTY ((UINT8)0x04) /*进路引导*/ #define ETYPE_ROUTE_LEAD_PROPERTY ((UINT8)0x04) /*进路引导*/
#define ETYPE_ROUTE_CANCEL ((UINT8)0x05) /*进路取消*/ #define ETYPE_ROUTE_CANCEL ((UINT8)0x05) /*进路取消*/
#define ETYPE_ROUTE_OVERLAP_UNLOCK ((UINT8)0x06) /*Overlap未锁闭*/ #define ETYPE_ROUTE_OVERLAP_UNLOCK ((UINT8)0x06) /*Overlap未锁闭*/
#define ETYPE_ROUTE_OVERLAP_OCCUPY ((UINT8)0x07) /*Overlap占用*/ #define ETYPE_ROUTE_OVERLAP_OCCUPY ((UINT8)0x07) /*Overlap占用*/
#define ETYPE_ROUTE_FLYING_TRAIN ((UINT8)0x08) /*进路飞车*/ #define ETYPE_ROUTE_FLYING_TRAIN ((UINT8)0x08) /*进路飞车*/
#define ETYPE_RETURN_ROUTE_STATE ((UINT8)0x09) /*折返进路状态*/ #define ETYPE_RETURN_ROUTE_STATE ((UINT8)0x09) /*折返进路状态*/
#define ETYPE_ROUTE_FIRST_XUANPAI_OVERTIME ((UINT8)0x0a) /*进路初选排超时*/ #define ETYPE_ROUTE_FIRST_XUANPAI_OVERTIME ((UINT8)0x0a) /*进路初选排超时*/
#define ETYPE_ROUTE_APPLY_SWITCH_CHECK ((UINT8)0x0b) /*进路办理道岔状态检查*/ #define ETYPE_ROUTE_APPLY_SWITCH_CHECK ((UINT8)0x0b) /*进路办理道岔状态检查*/
#define ETYPE_ROUTE_XUANPAI_OVERTIME ((UINT8)0x10) /*进路选排超时*/ #define ETYPE_ROUTE_XUANPAI_OVERTIME ((UINT8)0x10) /*进路选排超时*/
#define ETYPE_GROUP_AUTO_ROUTE_STATE ((UINT8)0x16) /*组合自动进路*/ #define ETYPE_GROUP_AUTO_ROUTE_STATE ((UINT8)0x16) /*组合自动进路*/
#define ETYPE_ROUTE_CONNECT_OVERRIME ((UINT8)0x18) /*(联络线)进路办理超时*/
#define ETYPE_ROUTE_APPLY_SWITCH_MOVE ((UINT8)0xA4) /*进路道岔单操中*/
#define ETYPE_ROUTE_DSNCONNECT ((UINT8)0x19) /*迪士尼联络线联锁条件*/
#define ETYPE_ROUTE_DSNCONNECT_CROSS ((UINT8)0x1A) /*迪士尼联络线跨压*/
#define ETYPE_COMM_WITH_VOBC ((UINT8)0x11) /*与VOBC通信*/ #define ETYPE_COMM_WITH_VOBC ((UINT8)0x11) /*与VOBC通信*/
@@ -311,17 +296,15 @@
/* 道岔类型编码 (UINT8)0x61-(UINT8)0x7f */ /* 道岔类型编码 (UINT8)0x61-(UINT8)0x7f */
/* 设备类型 CI_DEVICE_TYPE_SWITCH */ /* 设备类型 CI_DEVICE_TYPE_SWITCH */
#define ETYPE_SWT_YLOCK_STATE ((UINT8)0x61) /*道岔引导总锁状态*/ #define ETYPE_SWT_YLOCK_STATE ((UINT8)0x61) /*道岔引导总锁状态*/
#define ETYPE_SWT_FLOCK_STATE ((UINT8)0x62) /*道岔封锁状态*/ #define ETYPE_SWT_FLOCK_STATE ((UINT8)0x62) /*道岔封锁状态*/
#define ETYPE_SWT_LOCK_STATUS ((UINT8)0x63) /*道岔锁闭状态*/ #define ETYPE_SWT_LOCK_STATUS ((UINT8)0x63) /*道岔锁闭状态*/
#define ETYPE_SWT_POSTION_STATE ((UINT8)0x64) /*道岔位置*/ #define ETYPE_SWT_POSTION_STATE ((UINT8)0x64) /*道岔位置*/
#define ETYPE_SWT_MOVE_INVALID ((UINT8)0x65) /*道岔不可动*/ #define ETYPE_SWT_MOVE_INVALID ((UINT8)0x65) /*道岔不可动*/
#define ETYPE_SWT_MOVE_OVERTIME ((UINT8)0x66) /*道岔动作锁闭超时*/ #define ETYPE_SWT_MOVE_OVERTIME ((UINT8)0x66) /*道岔动作锁闭超时*/
#define ETYPE_SWT_USE_STATE ((UINT8)0x6aU) /*道岔征用*/ #define ETYPE_SWT_USE_STATE ((UINT8)0x6aU) /*道岔征用*/
#define ETYPE_SWT_MOVE_STATE ((UINT8)0x6bU) /*道岔搬动状态*/ #define ETYPE_SWT_MOVE_STATE ((UINT8)0x6bU) /*道岔搬动状态*/
#define ETYPE_SWT_MOVE_CHECK_RESULT ((UINT8)0x6cU) /*道岔可动性检查结果*/ #define ETYPE_SWT_MOVE_CHECK_RESULT ((UINT8)0x6cU) /*道岔可动性检查结果*/
#define ETYPE_SWT_WAIT_MOVE ((UINT8)0x6dU) /*等待道岔动作完成*/
#define ETYPE_SWT_CONNECT_RET_FAIL ((UINT8)0x6Eu) /* Point failed to move to normal within 20 seconds of the over switch block being cleared */
/* 继电器故障类型编码 (UINT8)0x81-(UINT8)0x8f */ /* 继电器故障类型编码 (UINT8)0x81-(UINT8)0x8f */
/* 设备类型 CI_DEVICE_TYPE_RELAY */ /* 设备类型 CI_DEVICE_TYPE_RELAY */
@@ -330,7 +313,6 @@
#define ETYPE_CANCLE_ZHAOCHA ((UINT8)0x82) /*取消照查继电器*/ #define ETYPE_CANCLE_ZHAOCHA ((UINT8)0x82) /*取消照查继电器*/
#define ETYPE_ZHAOCHA_ROUTE_OVERTIME ((UINT8)0x83) /*进路照查超时*/ #define ETYPE_ZHAOCHA_ROUTE_OVERTIME ((UINT8)0x83) /*进路照查超时*/
#define ETYPE_JKJ_WORK ((UINT8)0x84) /*应急盘有效*/ #define ETYPE_JKJ_WORK ((UINT8)0x84) /*应急盘有效*/
#define ETYPE_ZHAOCHA_OVERLAP_OVERTIME ((UINT8)0x86) /*保护区段照查超时*/
/* 其他联锁条件检查相关故障类型编码 (UINT8)0x91-(UINT8)0x9f */ /* 其他联锁条件检查相关故障类型编码 (UINT8)0x91-(UINT8)0x9f */
/* 设备类型 /* 设备类型
@@ -397,19 +379,6 @@
#define ETYPE_LOGSEC_XIANSU_STATE ((UINT8)0xC5) /*逻辑区段限速设置*/ #define ETYPE_LOGSEC_XIANSU_STATE ((UINT8)0xC5) /*逻辑区段限速设置*/
#define ETYPE_LOGSEC_FIRSTLOCK_STATE ((UINT8)0xC6) /*逻辑区段为第一个锁闭区段检查*/ #define ETYPE_LOGSEC_FIRSTLOCK_STATE ((UINT8)0xC6) /*逻辑区段为第一个锁闭区段检查*/
#define ETYPE_LOGSEC_CBTC_PROPERTY ((UINT8)0xC7) /*逻辑区段CBTC属性检查*/ #define ETYPE_LOGSEC_CBTC_PROPERTY ((UINT8)0xC7) /*逻辑区段CBTC属性检查*/
#define ETYPE_LOGSEC_CONTINUOUS ((UINT8)0xC8) /*逻辑区段连续性检查*/
#define ETYPE_LOGSEC_CT_OVERRIDE_FAIL ((UINT8)0xC9) /*逻辑区段有CT列车占用,旁路无效*/
#define ETYPE_LOGSEC_EA_BUILD ((UINT8)0xCA) /*逻辑区段防护区建立*/
#define ETYPE_LOGSEC_DIRLOC_FAIL ((UINT8)0xCB) /*逻辑区段继电器检查条件不满足(迪士尼联络线)*/
/*动态路径故障类型*/
#define ETYPE_PART_ROUTE_RES ((UINT8)0xD0) /*动态路径资源检查*/
#define ETYPE_PART_ROUTE_MATCH_ROUTE ((UINT8)0xD1) /*动态路径匹配进路检查*/
#define ETYPE_PART_ROUTE_SCREEN ((UINT8)0xD2) /*动态路径列车筛选检查*/
#define ETYPE_PART_ROUTE_REPEAT ((UINT8)0xD3) /*动态路径重复办理检查*/
#define ETYPE_PART_ROUTE_SEC_ATTR ((UINT8)0xD4) /*动态路径区段属性检查*/
#define ETYPE_PART_ROUTE_TRAIN_COMM ((UINT8)0xD5) /*动态路径列车通信状态检查*/
#define ETYPE_PART_ROUTE_TRAIN_POS ((UINT8)0xD6) /*动态路径列车位置检查*/
/* 系统故障 */ /* 系统故障 */
/* 设备类型 EFUNC_LOGIC_MANAGE_SYETEM */ /* 设备类型 EFUNC_LOGIC_MANAGE_SYETEM */
+2 -51
View File
@@ -18,7 +18,8 @@ EsbConfigDataStruct EsbConfigDataStru[ESB_SUM_MAX]; /*
UINT16 LocalCiEsbIdBuf[ESB_SUM_MAX] = {0u}; /*定义本地联锁紧急停车按钮ID映射数组*/ UINT16 LocalCiEsbIdBuf[ESB_SUM_MAX] = {0u}; /*定义本地联锁紧急停车按钮ID映射数组*/
INT16 EsbCurSum = 0; /*ESB当前总数*/ INT16 EsbCurSum = 0; /*ESB当前总数*/
UINT16 totalEsbNum = 0u;/*本联锁和相邻联锁发送给本联锁ESB总数*/ UINT16 totalEsbNum = 0u;/*本联锁和相邻联锁发送给本联锁ESB总数*/
CesbConfigDataStruct LocalCesbConfigDataStru;/*定义本联锁全线紧急制动数据*/
/* /*
@@ -661,54 +662,4 @@ UINT8 CheckEsbBelSendRange(const UINT16 wCheckEsbId)
} }
return retVal; return retVal;
}
/*
* 功能描述: 获取指定ESB ID关联的link编号
* 参数说明: const UINT16 esbId, 紧急停车按钮
* 返回值
*Create fan 2026.02.05
*/
UINT16 GetEsbRelateLinkId(const UINT16 esbId)
{
UINT16 bufIndex = 0U; /*数组下标*/
UINT16 wLinkId = 0U;
bufIndex = GetEsbConfigBufIndex(esbId); /*获取数组下标*/
if (bufIndex < ESB_SUM_MAX)
{
wLinkId = EsbConfigDataStru[bufIndex].wRelateLink;
}
else
{
/*不做处理*/
}
return wLinkId;
}
/*
* 功能描述: 获取指定CESB关联的激活继电器ID
* 参数说明: 无
* 返回值
*Create fan 2026.02.05
*/
UINT16 GetCesbRelayId(void)
{
UINT16 wCesbRelay = 0U;
wCesbRelay = LocalCesbConfigDataStru.wCesbRelayId;
return wCesbRelay;
}
/*
* 功能描述: 获取指定CESB关联的旁路继电器ID
* 参数说明: 无
* 返回值
*Create fan 2026.02.05
*/
UINT16 GetCesbCutRelayId(void)
{
UINT16 wCesbCutRelay = 0U;
wCesbCutRelay = LocalCesbConfigDataStru.wCesbCutRelayId;
return wCesbCutRelay;
} }
+1 -35
View File
@@ -50,24 +50,14 @@ typedef struct S_EsbConfigDataStruct
UINT16 EsbCutoffBuzzRelayId; /*切除蜂鸣器报警继电器ID*/ UINT16 EsbCutoffBuzzRelayId; /*切除蜂鸣器报警继电器ID*/
UINT8 ConfigAtsCiEssSteadyMask; /*是否配置了ATS-CI稳灯状态码位0x55 配置;0xaa未配置*/ UINT8 ConfigAtsCiEssSteadyMask; /*是否配置了ATS-CI稳灯状态码位0x55 配置;0xaa未配置*/
UINT8 ConfigAtsCiEssFlashMask; /*是否配置了ATS-CI闪灯状态码位0x55 配置;0xaa未配置*/ UINT8 ConfigAtsCiEssFlashMask; /*是否配置了ATS-CI闪灯状态码位0x55 配置;0xaa未配置*/
UINT16 wRelateLink;/*电子地图配置中关联LINK标号*/
} EsbConfigDataStruct; } EsbConfigDataStruct;
/*CESB按钮配置数据结构体*/
typedef struct S_CesbConfigDataStruct
{
UINT16 wCesbId; /*全线紧急按钮ID (配置字段)*/
UINT8 BelongCiId; /*所属联锁ID*/
UINT16 wCesbRelayId; /*全线紧急停车按钮关联继电器*/
UINT16 wCesbCutRelayId; /*全线紧急停车旁路按钮关联继电器*/
} CesbConfigDataStruct;
/*******************************全局变量声明*******************************/ /*******************************全局变量声明*******************************/
extern EsbConfigDataStruct EsbConfigDataStru[ESB_SUM_MAX]; /*定义ESB数据配置结构体,cgh-合并CID-2539-1:此处声明不进行初始化,统一放到InitAllStaticDataStr函数中进行初始化,为解决生成内核过大得问题*/ extern EsbConfigDataStruct EsbConfigDataStru[ESB_SUM_MAX]; /*定义ESB数据配置结构体,cgh-合并CID-2539-1:此处声明不进行初始化,统一放到InitAllStaticDataStr函数中进行初始化,为解决生成内核过大得问题*/
extern UINT16 LocalCiEsbIdBuf[ESB_SUM_MAX]; /*定义本地联锁紧急停车按钮ID映射数组*/ extern UINT16 LocalCiEsbIdBuf[ESB_SUM_MAX]; /*定义本地联锁紧急停车按钮ID映射数组*/
extern INT16 EsbCurSum; /*ESB当前总数*/ extern INT16 EsbCurSum; /*ESB当前总数*/
extern UINT16 totalEsbNum;/*本联锁和相邻联锁发送给本联锁ESB总数*/ extern UINT16 totalEsbNum;/*本联锁和相邻联锁发送给本联锁ESB总数*/
extern CesbConfigDataStruct LocalCesbConfigDataStru;/*定义本联锁全线紧急制动数据*/
/* /*
* 功能描述: 获取紧急停车当前总数 * 功能描述: 获取紧急停车当前总数
* 参数说明: void * 参数说明: void
@@ -303,30 +293,6 @@ UINT16 GetEsbCutoffBuzzRelayId(const UINT16 esbId);
*/ */
UINT8 CheckEsbBelSendRange(const UINT16 wCheckEsbId); UINT8 CheckEsbBelSendRange(const UINT16 wCheckEsbId);
/*
* 功能描述: 获取指定ESB ID关联的link编号
* 参数说明: const UINT16 esbId, 紧急停车按钮
* 返回值
*Create fan 2026.02.05
*/
UINT16 GetEsbRelateLinkId(const UINT16 esbId);
/*
* 功能描述: 获取指定CESB关联的激活继电器ID
* 参数说明: 无
* 返回值
*Create fan 2026.02.05
*/
UINT16 GetCesbRelayId(void);
/*
* 功能描述: 获取指定CESB关联的旁路继电器ID
* 参数说明: 无
* 返回值
*Create fan 2026.02.05
*/
UINT16 GetCesbCutRelayId(void);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
+3 -654
View File
@@ -11,12 +11,9 @@
#include "ESBDataManage.h" #include "ESBDataManage.h"
#include "ESBConfigDataManage.h" #include "ESBConfigDataManage.h"
#include "../ParsePack/ParsePackGateWayData.h"
#include "../QueryFiles/dquCIInterFace.h"
EsbDataStruct EsbDataStru[ESB_SUM_MAX]; /*定义ESB数据结构体*/ EsbDataStruct EsbDataStru[ESB_SUM_MAX]; /*定义ESB数据结构体*/
UINT8 g_CesbFlockState = CESB_STATE_VALID_NO; /* 全线区段CESB封锁状态 */
UINT8 g_ScxCesbData = CESB_STATE_VALID_NO; /*试车线CESB状态*/
UINT8 g_ScxCesbCutData = ESB_CUT_NO;/*试车线CESB旁路状态*/
/* /*
* 功能描述: 获取指定ESB数据 * 功能描述: 获取指定ESB数据
@@ -163,17 +160,12 @@ UINT8 EsbDataManageInit(void)
EsbDataStru[esbId].CutStatus = ESB_CUT_NO; /*ESB旁路未按下*/ EsbDataStru[esbId].CutStatus = ESB_CUT_NO; /*ESB旁路未按下*/
EsbDataStru[esbId].EsbRelateRelayDriveState = ESB_PEPUP_ESSUP_INITION_STA; /*PEP和ESS都无效*/ EsbDataStru[esbId].EsbRelateRelayDriveState = ESB_PEPUP_ESSUP_INITION_STA; /*PEP和ESS都无效*/
EsbDataStru[esbId].EsbErrorFlag = ESB_ERROR_FLAG_NO; /*自复式ESB未故障*/ EsbDataStru[esbId].EsbErrorFlag = ESB_ERROR_FLAG_NO; /*自复式ESB未故障*/
EsbDataStru[esbId].EsbRelayDownState = ESB_RELAY_ERROR_DOWN_YES; /*紧急关闭按钮采集继电器落下状态初始化为通信异常落下*/
EsbDataStru[esbId].CancelEsbErrorFlag = ESB_ERROR_FLAG_NO; /*自复式取消ESB未故障*/ EsbDataStru[esbId].CancelEsbErrorFlag = ESB_ERROR_FLAG_NO; /*自复式取消ESB未故障*/
EsbDataStru[esbId].EsbPressCycNum = 0U; /*紧急关闭按钮按下周期*/ EsbDataStru[esbId].EsbPressCycNum = 0U; /*紧急关闭按钮按下周期*/
EsbDataStru[esbId].CancelEsbPressCycNum = 0U; /*取消紧急关闭按钮按下周期*/ EsbDataStru[esbId].CancelEsbPressCycNum = 0U; /*取消紧急关闭按钮按下周期*/
EsbDataStru[esbId].CancelEsbErrTriggerPressCycNum = 0U; /*取消紧急关闭按钮误触发按下周期*/ EsbDataStru[esbId].CancelEsbErrTriggerPressCycNum = 0U; /*取消紧急关闭按钮误触发按下周期*/
EsbDataStru[esbId].CancelEsbValidFlag = ESB_CANCEL_VALID_NO; /*取消紧急关闭按钮有效标志*/ EsbDataStru[esbId].CancelEsbValidFlag = ESB_CANCEL_VALID_NO; /*取消紧急关闭按钮有效标志*/
EsbDataStru[esbId].CancelEsbRelayDownState = ESB_RELAY_ERROR_DOWN_YES; /*取消紧急关闭按钮采集继电器落下状态初始化为通信异常落下*/ EsbDataStru[esbId].CancelEsbRelayDownState = ESB_RELAY_ERROR_DOWN_YES; /*取消紧急关闭按钮采集继电器落下状态初始化为通信异常落下*/
EsbDataStru[esbId].EsbCutPressCycNum = 0U; /*紧急关闭旁路按钮按下周期*/
EsbDataStru[esbId].EsbCutErrTriggerPressCycNum = 0U; /*紧急关闭旁路按钮误触发按下周期*/
EsbDataStru[esbId].EsbCutErrorFlag = ESB_ERROR_FLAG_NO; /*紧急关闭旁路按钮未故障*/
EsbDataStru[esbId].EsbCutRelayDownState = ESB_RELAY_ERROR_DOWN_YES; /*紧急关闭旁路按钮采集继电器落下状态初始化为通信异常落下*/
} }
rtn = CI_SUCCESS; rtn = CI_SUCCESS;
return rtn; return rtn;
@@ -805,647 +797,4 @@ UINT8 GetCancelEsbRelayDownState(const UINT16 esbId)
} }
return reVal; return reVal;
} }
/*
* 功能描述:设置紧急关闭旁路按钮按下周期
* 输入参数:const UINT16 esbId Esb ID
* const UINT32 startCycNum 周期号
* 输出参数:无
* 返 回 值:无
* Cretaed By LQ 2025.03.28
*/
void SetEsbCutPressCycNum(const UINT16 esbId, const UINT32 startCycNum)
{
UINT16 bufIndex = 0U;
bufIndex = GetEsbConfigBufIndex(esbId); /*获取数组下标*/
if (ESB_SUM_MAX > bufIndex)
{
EsbDataStru[bufIndex].EsbCutPressCycNum = startCycNum; /*紧急旁路按钮正常按下起始周期*/
}
else
{
; /*不处理*/
}
}
/*
* 功能描述:获取紧急关闭旁路按钮按下周期
* 输入参数:const UINT16 esbId Esb ID
* 输出参数:无
* 返 回 值:紧急关闭旁路按钮按下周期
* Cretaed By LQ 2025.03.28
*/
UINT32 GetEsbCutPressCycNum(const UINT16 esbId)
{
UINT16 bufIndex = 0u; /*数组下标*/
UINT32 reVal = CI_ERROR;
bufIndex = GetEsbConfigBufIndex(esbId); /*获取数组下标*/
if (ESB_SUM_MAX > bufIndex)
{
reVal = EsbDataStru[bufIndex].EsbCutPressCycNum;
}
else
{
/*下标非法,返回0*/
}
return reVal;
}
/*
* 功能描述:设置紧急关闭旁路按钮误触发按下周期
* 输入参数:const UINT16 esbId Esb ID
* const UINT32 startCycNum 周期号
* 输出参数:无
* 返 回 值:无
* Cretaed By LQ 2025.03.28
*/
void SetEsbCutErrTrigPressCycNum(const UINT16 esbId, const UINT32 startCycNum)
{
UINT16 bufIndex = 0U;
bufIndex = GetEsbConfigBufIndex(esbId); /*获取数组下标*/
if (ESB_SUM_MAX > bufIndex)
{
EsbDataStru[bufIndex].EsbCutErrTriggerPressCycNum = startCycNum; /*紧急旁路按钮误触发按下周期*/
}
else
{
; /*不处理*/
}
}
/*
* 功能描述:获取紧急关闭旁路按钮误触发按下周期
* 输入参数:const UINT16 esbId Esb ID
* 输出参数:无
* 返 回 值:紧急关闭旁路按钮误触发按下周期
* Cretaed By LQ 2025.03.28
*/
UINT32 GetEsbCutErrTrigPressCycNum(const UINT16 esbId)
{
UINT16 bufIndex = 0u; /*数组下标*/
UINT32 reVal = CI_ERROR;
bufIndex = GetEsbConfigBufIndex(esbId); /*获取数组下标*/
if (ESB_SUM_MAX > bufIndex)
{
reVal = EsbDataStru[bufIndex].EsbCutErrTriggerPressCycNum;
}
else
{
/*下标非法,返回0*/
}
return reVal;
}
/*
* 功能描述:设置紧急关闭旁路按钮采集继电器落下状态
* 参数说明:const UINT16 esbId 紧急停车按钮ID
* const UINT8 cRelayDownState 继电器落下状态
* 返回值:无
* Created By LQ 2025.03.28
*/
void SetEsbCutRelayDownState(const UINT16 esbId, const UINT8 cRelayDownState)
{
UINT16 bufIndex = 0U;
bufIndex = GetEsbConfigBufIndex(esbId); /*获取数组下标*/
if (ESB_SUM_MAX > bufIndex)
{
if ((ESB_RELAY_ERROR_DOWN_NO == cRelayDownState) || (ESB_RELAY_ERROR_DOWN_YES == cRelayDownState))
{
EsbDataStru[bufIndex].EsbCutRelayDownState = cRelayDownState;
}
else
{
; /*设置状态不合法,不进项状态更新*/
}
}
else
{
; /*数组下标不合法,不执行状态更新*/
}
}
/*
* 功能描述: 获取紧急关闭旁路按钮采集继电器落下状态
* 参数说明: const UINT16 esbId 紧急停车按钮ID
* 返回值 0: 获取数据失败
* 0x55: 正常落下
* 0xaa: 通信异常落下
* Created By LQ 2025.03.28
*/
UINT8 GetEsbCutRelayDownState(const UINT16 esbId)
{
UINT16 bufIndex = 0U;
UINT8 reVal = CI_ERROR;
bufIndex = GetEsbConfigBufIndex(esbId); /*获取数组下标*/
if (ESB_SUM_MAX > bufIndex)
{
reVal = EsbDataStru[bufIndex].EsbCutRelayDownState;
}
else
{
; /*数组下标不合法,不执行状态更新*/
}
return reVal;
}
/*
* 功能描述:设置指定ID紧急关闭旁路按钮故障标志
* 参数说明:const UINT16 esbId, 紧急关闭按钮ID
* const UINT8 cEsbCutErrFlag 紧急关闭旁路按钮故障标志
* 返回值:无
* Created By LQ 2025.03.28
*/
void SetEsbCutErrFlag(const UINT16 esbId, const UINT8 cEsbCutErrFlag)
{
UINT16 bufIndex = 0U;
bufIndex = GetEsbConfigBufIndex(esbId); /*获取数组下标*/
if (ESB_SUM_MAX > bufIndex)
{
if ((ESB_ERROR_FLAG_NO == cEsbCutErrFlag) || (ESB_ERROR_FLAG_YES == cEsbCutErrFlag))
{
EsbDataStru[bufIndex].EsbCutErrorFlag = cEsbCutErrFlag;
}
else
{
; /*设置状态不合法,不进项状态更新*/
}
}
else
{
; /*数组下标不合法,不执行状态更新*/
}
}
/*
* 功能描述: 获取指定ID紧急关闭旁路按钮故障标志
* 参数说明: const UINT16 esbId, 紧急关闭按钮ID
* 返回值 0: 获取数据失败
* 0x55: 未故障
* 0xaa: 故障
* Created By LQ 2025.03.28
*/
UINT8 GetEsbCutErrFlag(const UINT16 esbId)
{
UINT16 bufIndex = 0U;
UINT8 reVal = CI_ERROR;
bufIndex = GetEsbConfigBufIndex(esbId); /*获取数组下标*/
if (bufIndex < ESB_SUM_MAX)
{
reVal = EsbDataStru[bufIndex].EsbCutErrorFlag;
}
else
{
; /*数组下标不合法,不执行状态更新*/
}
return reVal;
}
/*
* 功能描述:设置紧急停车按钮采集继电器落下状态
* 参数说明:const UINT16 esbId 紧急停车按钮ID
* const UINT8 cRelayDownState 继电器落下状态
* 返回值:无
* Created By LQ 2025.04.01
*/
void SetEsbRelayDownState(const UINT16 esbId, const UINT8 cRelayDownState)
{
UINT16 bufIndex = 0U;
bufIndex = GetEsbConfigBufIndex(esbId); /*获取数组下标*/
if (ESB_SUM_MAX > bufIndex)
{
if ((ESB_RELAY_ERROR_DOWN_NO == cRelayDownState) || (ESB_RELAY_ERROR_DOWN_YES == cRelayDownState))
{
EsbDataStru[bufIndex].EsbRelayDownState = cRelayDownState;
}
else
{
; /*设置状态不合法,不进项状态更新*/
}
}
else
{
; /*数组下标不合法,不执行状态更新*/
}
}
/*
* 功能描述: 获取紧急停车按钮采集继电器落下状态
* 参数说明: const UINT16 esbId, 紧急停车按钮ID
* 返回值 0: 获取数据失败
* 0x55: 正常落下
* 0xaa: 通信异常落下
* Created By LQ 2025.04.01
*/
UINT8 GetEsbRelayDownState(const UINT16 esbId)
{
UINT16 bufIndex = 0U;
UINT8 reVal = CI_ERROR;
bufIndex = GetEsbConfigBufIndex(esbId); /*获取数组下标*/
if (ESB_SUM_MAX > bufIndex)
{
reVal = EsbDataStru[bufIndex].EsbRelayDownState;
}
else
{
; /*数组下标不合法,不执行状态更新*/
}
return reVal;
}
/**
* @brief 设置全线区段CESB封锁全局变量状态
* @param const UINT8 chState 全线区段CESB封锁状态
* @return 无
* @note 当输入参数不合法时,设置全线区段CESB封锁
* Created By fan 2026.02.04
*/
void SetAllSecCesbState(const UINT8 chState)
{
if (CESB_STATE_VALID_NO == chState)
{
g_CesbFlockState = chState;
}
else
{
g_CesbFlockState = CESB_STATE_VALID_YES;
}
}
/**
* @brief 获取全线区段CESB封锁全局变量状态
* @param 无
* @return CESB_STATE_VALID_NO:未全线CESB封锁;CESB_STATE_VALID_YES :全线CESB封锁
* Created By fan 2026.02.04
*/
UINT8 GetAllSecCesbState(void)
{
return g_CesbFlockState;
}
/**
* @brief 全线CEsb封锁取消主处理函数
* @param 无
* @return 无
* Created By fan 2026.02.04
*/
void CancleCesbFlockCmdProc(void)
{
AtsCESBCancleMsgStru * strMsgFst = NULL;
AtsCESBCancleMsgStru * strMsgSnd = NULL;
/*以下消息获取不会返回NULL*/
strMsgFst = GetAtsCesbMsgFst();
strMsgSnd = GetAtsCesbMsgSnd();
if ((strMsgFst->chFlag != FLAG_SET) && (strMsgSnd->chFlag != FLAG_SET))
{
; /* 没有消息,什么也不做 */
}
else if ((strMsgFst->chFlag == FLAG_SET) && (strMsgSnd->chFlag != FLAG_SET))
{/* 一次消息 */
CancelCesbFlockAtsCmdFst();
}
else
{/* 二次消息 */
CancelCesbFlockAtsCmdSnd();
}
}
/**
* @brief 全线CESB首次命令处理函数
* @param 无
* @return 无
* Created By fan 2026.02.04
*/
void CancelCesbFlockAtsCmdFst(void)
{
AtsCESBCancleMsgStru * strMsgFst = NULL;
AtsMsgCfmStru * strCfmFst = NULL;
UINT32 dwCycle = 0u;
UINT8 chLocalId = 0u;
UINT8 szCrcTmp[1024] = { 0u };
UINT32 ii = 0u;
UINT8 chFunRtn = CI_TIME_OUT;
UINT8 chState = 0U; /*全线区段CESB封锁状态*/
UINT16 wCesbRelayId = 0u;/*CESB继电器*/
UINT8 chCesbState = 0U;/*CESB激活状态*/
UINT16 wCesbCutRelayId = 0u;/*CESB旁路继电器*/
UINT8 chCesbCutState = 0U;/*CESB旁路状态*/
UINT8 localCiType = 0U;/*联锁类型*/
chLocalId = GetSystemParaLocalCiId();
dwCycle = Get2oo2CurCycleNum();
/*以下消息获取不会返回NULL*/
strMsgFst = GetAtsCesbMsgFst();
strCfmFst = GetAtsCesbCfmFst();
chState = GetAllSecCesbState();
if (strMsgFst->dwCycle == dwCycle)
{
strCfmFst->chFlag = FLAG_SET;
strCfmFst->chTiocId = chLocalId;
strCfmFst->chStation = strMsgFst->chStation;
strCfmFst->wIndex = strMsgFst->wIndex;
strCfmFst->dwTime = dwCycle;
/* 取消全线区段CESB封锁 */
if (CESB_STATE_VALID_NO == chState)
{/* 当前未设置 */
strCfmFst->chOpStatus = CONFIRM_CANCLE_CESB_FST_UNSET;
}
else
{
localCiType = GetLocalCiType();/*获取联锁类型*/
if (CI_TYPE_SCX == localCiType)
{
/*获取试车线旁路及激活命令状态*/
chCesbState = GetScxCesbCmdState();
chCesbCutState = GetScxCesbCutCmdState();
/*旁路或未激活*/
if ((CESB_STATE_VALID_NO == chCesbState) || (ESB_CUT_YES == chCesbCutState))
{
strCfmFst->chOpStatus = CONFIRM_CANCLE_CESB_FST_SUCCESS;
}
else
{
strCfmFst->chOpStatus = CONFIRM_CANCLE_CESB_RELAY_ACTIVE;
}
}
else
{
wCesbRelayId = GetCesbRelayId();
chCesbState = GetRelayCollState(wCesbRelayId);
wCesbCutRelayId = GetCesbCutRelayId();
chCesbCutState = GetRelayCollState(wCesbCutRelayId);
if ((RELAY_STATE_UP == chCesbCutState) || (RELAY_STATE_UP == chCesbState))
{
strCfmFst->chOpStatus = CONFIRM_CANCLE_CESB_FST_SUCCESS;
}
else
{
strCfmFst->chOpStatus = CONFIRM_CANCLE_CESB_RELAY_ACTIVE;
}
}
}
szCrcTmp[ii] = strMsgFst->chAtsId;
ii++;
szCrcTmp[ii] = strMsgFst->chStation;
ii++;
ShortToChar(strMsgFst->wIndex, &szCrcTmp[ii]);
ii += 2U;
LongToChar(strMsgFst->dwTime, &szCrcTmp[ii]);
ii += 4u;
strCfmFst->dwCrc32 = Tioc_CommonCrc32(szCrcTmp, ii); /* ATS编号、车站编号、操作站编号、下发时间、命令类型计算CRC */
if (CONFIRM_CANCLE_CESB_FST_SUCCESS != strCfmFst->chOpStatus)
{
ClearAtsCesbMsgFirst(); /*处理不成功,需清除一次命令 */
}
else
{
;
}
}
else
{/* 接收到ATS一次消息非本周期,超时判断 */
chFunRtn = SystemOverTimeCheck(strMsgFst->dwCycle, CONFIRM_TIMEOUT_CC);
if (CI_TIME_OUT == chFunRtn)
{
ClearAtsCesbMsgFirst();
}
else
{
;
}
}
}
/**
* @brief 取消CESB封锁二次命令处理函数
* @param 无
* @return 无
* Created By fan 2026.02.04
*/
void CancelCesbFlockAtsCmdSnd(void)
{
AtsCESBCancleMsgStru * strMsgFst = NULL;
AtsCESBCancleMsgStru * strMsgSnd = NULL;
AtsMsgCfmStru * strCfmFst = NULL;
AtsMsgCfmStru * strCfmSnd = NULL;
UINT32 dwCycle = 0u;
UINT8 chLocalId = 0u;
UINT8 chFlag = FLAG_UNSET;
UINT8 szCrcTmp[1024] = { 0u };
UINT32 ii = 0u;
UINT32 dwCrc = 0u;
UINT16 wCesbRelayId = 0u;/*CESB继电器*/
UINT8 chCesbState = 0U;/*CESB激活状态*/
UINT16 wCesbCutRelayId = 0u;/*CESB旁路继电器*/
UINT8 chCesbCutState = 0U;/*CESB旁路状态*/
UINT8 localCiType = 0U;/*联锁类型*/
chLocalId = GetSystemParaLocalCiId();
dwCycle = Get2oo2CurCycleNum();
strMsgFst = GetAtsCesbMsgFst();
strMsgSnd = GetAtsCesbMsgSnd();
strCfmFst = GetAtsCesbCfmFst();
strCfmSnd = GetAtsCesbCfmSnd();
if ((NULL != strMsgFst)
&& (NULL != strMsgSnd)
&& (NULL != strCfmFst)
&& (NULL != strCfmSnd))
{
if (strMsgSnd->dwCycle == dwCycle)
{
strCfmSnd->chFlag = FLAG_SET;
strCfmSnd->chTiocId = chLocalId;
strCfmSnd->chStation = strMsgSnd->chStation;
strCfmSnd->wIndex = strMsgSnd->wIndex;
strCfmSnd->dwTime = dwCycle;
if (FLAG_SET != strMsgFst->chFlag)
{
strCfmSnd->chOpStatus = CONFIRM_CANCLE_CESB_SND_FIRST; /* 一次命令未执行,返回未执行首次取消 */
chFlag = FLAG_SET;
}
else if ((strMsgSnd->chAtsId != strMsgFst->chAtsId)
|| (strMsgSnd->chStation != strMsgFst->chStation)
|| (strMsgSnd->wIndex != strMsgFst->wIndex))
{
strCfmSnd->chOpStatus = CONFIRM_CANCLE_CESB_SND_UNKNOWN; /* ATS一二次命令帧头输入不一致,返回未知 */
chFlag = FLAG_SET;
}
else
{
localCiType = GetLocalCiType();/*获取联锁类型*/
if (CI_TYPE_SCX == localCiType)
{
/*获取试车线旁路及激活命令状态*/
chCesbState = GetScxCesbCmdState();
chCesbCutState = GetScxCesbCutCmdState();
/*旁路或未激活成功*/
if ((CESB_STATE_VALID_YES == chCesbState) && (ESB_CUT_NO == chCesbCutState))
{
strCfmSnd->chOpStatus = CONFIRM_CANCLE_CESB_RELAY_ACTIVE; /* 未旁路且CESB仍然有效*/
chFlag = FLAG_SET;
}
else
{
;/*不处理*/
}
}
else
{
/*正线看继电器状态*/
wCesbRelayId = GetCesbRelayId();
chCesbState = GetRelayCollState(wCesbRelayId);
wCesbCutRelayId = GetCesbCutRelayId();
chCesbCutState = GetRelayCollState(wCesbCutRelayId);
if ((RELAY_STATE_UP != chCesbCutState) && (RELAY_STATE_UP != chCesbState))
{
strCfmSnd->chOpStatus = CONFIRM_CANCLE_CESB_RELAY_ACTIVE; /* 未旁路且CESB仍然有效*/
chFlag = FLAG_SET;
}
else
{
/*不处理*/
;
}
}
}
if (FLAG_UNSET == chFlag)
{
szCrcTmp[ii] = strMsgSnd->chTiocId;
ii++;
LongToChar(strCfmFst->dwTime, &szCrcTmp[ii]);
ii += 4u;
dwCrc = Tioc_CommonCrc32(szCrcTmp, ii);
if (dwCrc != strMsgSnd->dwCrc32)
{
strCfmSnd->chOpStatus = CONFIRM_CANCLE_CESB_SND_CHECKFAIL; /* 计算的CRC32与ATS二次消息CRC32不一致 */
chFlag = FLAG_SET;
}
else
{
;
}
}
else
{
;
}
ii = 0u;
szCrcTmp[ii++] = strMsgSnd->chAtsId;
szCrcTmp[ii++] = strMsgSnd->chStation;
ShortToChar(strMsgSnd->wIndex, &szCrcTmp[ii]);
ii += 2U;
LongToChar(strMsgFst->dwTime, &szCrcTmp[ii]);
ii += 4u;
LongToChar(strMsgSnd->dwTime, &szCrcTmp[ii]);
ii += 4u;
strCfmSnd->dwCrc32 = Tioc_CommonCrc32(szCrcTmp, ii);
if (FLAG_UNSET == chFlag)
{
strCfmSnd->chOpStatus = CONFIRM_CANCLE_CESB_SND_SUCCESS; /* 检查通过,反馈确认成功 */
SetAllSecCesbState(CESB_STATE_VALID_NO); /*设置CESB封锁无效*/
}
else
{
;
}
}
else
{
; /** 非本周期消息,不处理 */
}
ClearAtsCesbMsgFirst();
ClearAtsCesbMsgSecond();
}
else
{
; /**不可能分支 不处理 */
}
}
/**
* @brief 获取试车线CESB命令设置状态
* @param 无
* @return CESB_STATE_VALID_NO 试车线CESB未激活;CESB_STATE_VALID_YES :试车线CESB激活
* Created By fan 2026.03.10
*/
UINT8 GetScxCesbCmdState(void)
{
return g_ScxCesbData;
}
/**
* @brief 设置试车线CESB命令状态
* @input CESB_STATE_VALID_NO 试车线CESB未激活;CESB_STATE_VALID_YES :试车线CESB激活
* Created By fan 2026.03.10
*/
void SetScxCesbCmdState(UINT8 chCesbCmd)
{
if ((CESB_STATE_VALID_NO == chCesbCmd)||(CESB_STATE_VALID_YES == chCesbCmd))
{
g_ScxCesbData = chCesbCmd;
}
else
{
;/*不处理*/
}
}
/**
* @brief 获取全线区段试车线CESB旁路命令设置状态
* @param 无
* @return ESB_CUT_NO:试车线未CESB旁路;ESB_CUT_YES 试车线CESB旁路有效
* Created By fan 2026.03.10
*/
UINT8 GetScxCesbCutCmdState(void)
{
return g_ScxCesbCutData;
}
/**
* @brief 设置试车线CESB旁路命令状态
* @input ESB_CUT_NO: 试车线未CESB旁路;ESB_CUT_YES : 试车线CESB旁路
* Created By fan 2026.03.10
*/
void SetScxCesbCutCmdState(UINT8 chCesbCmd)
{
if ((ESB_CUT_NO == chCesbCmd) || (ESB_CUT_YES == chCesbCmd))
{
g_ScxCesbCutData = chCesbCmd;
}
else
{
;/*不处理*/
}
}
+1 -175
View File
@@ -19,7 +19,6 @@
#include "ESBConfigDataManage.h" #include "ESBConfigDataManage.h"
#include "CommonTypes.h" #include "CommonTypes.h"
#include "../System/CiSystemDefine.h" #include "../System/CiSystemDefine.h"
#include "../Section/SectionDefine.h"
#ifdef __cplusplus #ifdef __cplusplus
@@ -39,27 +38,17 @@ typedef struct S_EsbDataStruct
UINT8 EssSteadyState; /*ESS稳灯状态(用于虚拟联锁向ATS反馈)--0x55 需要设置稳灯;0xaa不需要设置稳灯*/ UINT8 EssSteadyState; /*ESS稳灯状态(用于虚拟联锁向ATS反馈)--0x55 需要设置稳灯;0xaa不需要设置稳灯*/
UINT8 EssFlashState; /*ESS闪灯状态(用于虚拟联锁向ATS反馈)--0x55 需要设置闪灯;0xaa不需要设置闪灯*/ UINT8 EssFlashState; /*ESS闪灯状态(用于虚拟联锁向ATS反馈)--0x55 需要设置闪灯;0xaa不需要设置闪灯*/
UINT8 EsbErrorFlag; /*自复式紧急停车按钮故障标志,0x55未故障,0xaa故障*/ UINT8 EsbErrorFlag; /*自复式紧急停车按钮故障标志,0x55未故障,0xaa故障*/
UINT8 EsbRelayDownState; /*紧急关闭按钮采集继电器落下状态,0x55:正常采集落下,0xaa:通信异常落下*/
UINT8 CancelEsbErrorFlag; /*自复式取消紧急停车按钮故障标志,0x55未故障,0xaa故障*/ UINT8 CancelEsbErrorFlag; /*自复式取消紧急停车按钮故障标志,0x55未故障,0xaa故障*/
UINT32 EsbPressCycNum; /*紧急关闭按钮按下周期*/ UINT32 EsbPressCycNum; /*紧急关闭按钮按下周期*/
UINT32 CancelEsbPressCycNum; /*取消紧急关闭按钮正常按下周期*/ UINT32 CancelEsbPressCycNum; /*取消紧急关闭按钮正常按下周期*/
UINT32 CancelEsbErrTriggerPressCycNum; /*取消紧急关闭按钮误触发按下周期*/ UINT32 CancelEsbErrTriggerPressCycNum; /*取消紧急关闭按钮误触发按下周期*/
UINT8 CancelEsbValidFlag; /*取消紧急关闭按钮有效标志,0x55无效,0xaa有效*/ UINT8 CancelEsbValidFlag; /*取消紧急关闭按钮有效标志,0x55无效,0xaa有效*/
UINT8 CancelEsbRelayDownState; /*取消紧急关闭按钮采集继电器落下状态,0x55:正常采集落下,0xaa:通信异常落下*/ UINT8 CancelEsbRelayDownState; /*取消紧急关闭按钮采集继电器落下状态,0x55:正常采集落下,0xaa:通信异常落下*/
UINT32 EsbCutPressCycNum; /*紧急关闭旁路按钮正常按下周期*/
UINT32 EsbCutErrTriggerPressCycNum; /*紧急关闭旁路按钮误触发按下周期*/
UINT8 EsbCutErrorFlag; /*紧急关闭旁路按钮故障标志,0x55-未故障,0xaa-故障*/
UINT8 EsbCutRelayDownState; /*紧急关闭旁路按钮采集继电器落下状态,0x55-正常采集落下,0xaa-通信异常落下*/
} EsbDataStruct; } EsbDataStruct;
/*******************************全局变量声明*******************************/ /*******************************全局变量声明*******************************/
extern EsbDataStruct EsbDataStru[ESB_SUM_MAX]; /*定义ESB数据结构体*/ extern EsbDataStruct EsbDataStru[ESB_SUM_MAX]; /*定义ESB数据结构体*/
extern UINT8 g_CesbFlockState ; /* 全线区段CESB封锁状态 */
extern UINT8 g_ScxCesbData;/*试车线CESB状态*/
extern UINT8 g_ScxCesbCutData;/*试车线CESB旁路状态*/
/* /*
* 功能描述: 获取指定ESB数据 * 功能描述: 获取指定ESB数据
@@ -321,169 +310,6 @@ void SetCancelEsbRelayDownState(const UINT16 esbId, const UINT8 cRelayDownState)
*/ */
UINT8 GetCancelEsbRelayDownState(const UINT16 esbId); UINT8 GetCancelEsbRelayDownState(const UINT16 esbId);
/*
* 功能描述:设置紧急关闭旁路按钮按下周期
* 输入参数:const UINT16 esbId Esb ID
* const UINT32 startCycNum 周期号
* 输出参数:无
* 返 回 值:无
* Cretaed By LQ 2025.03.28
*/
void SetEsbCutPressCycNum(const UINT16 esbId, const UINT32 startCycNum);
/*
* 功能描述:获取紧急关闭旁路按钮按下周期
* 输入参数:const UINT16 esbId Esb ID
* 输出参数:无
* 返 回 值:紧急关闭旁路按钮按下周期
* Cretaed By LQ 2025.03.28
*/
UINT32 GetEsbCutPressCycNum(const UINT16 esbId);
/*
* 功能描述:设置紧急关闭旁路按钮误触发按下周期
* 输入参数:const UINT16 esbId Esb ID
* const UINT32 startCycNum 周期号
* 输出参数:无
* 返 回 值:无
* Cretaed By LQ 2025.03.28
*/
void SetEsbCutErrTrigPressCycNum(const UINT16 esbId, const UINT32 startCycNum);
/*
* 功能描述:获取紧急关闭旁路按钮误触发按下周期
* 输入参数:const UINT16 esbId Esb ID
* 输出参数:无
* 返 回 值:紧急关闭旁路按钮误触发按下周期
* Cretaed By LQ 2025.03.28
*/
UINT32 GetEsbCutErrTrigPressCycNum(const UINT16 esbId);
/*
* 功能描述:设置紧急关闭旁路按钮采集继电器落下状态
* 参数说明:const UINT16 esbId 紧急停车按钮ID
* const UINT8 cRelayDownState 继电器落下状态
* 返回值:无
* Created By LQ 2025.03.28
*/
void SetEsbCutRelayDownState(const UINT16 esbId, const UINT8 cRelayDownState);
/*
* 功能描述: 获取紧急关闭旁路按钮采集继电器落下状态
* 参数说明: const UINT16 esbId 紧急停车按钮ID
* 返回值 0: 获取数据失败
* 0x55: 正常落下
* 0xaa: 通信异常落下
* Created By LQ 2025.03.28
*/
UINT8 GetEsbCutRelayDownState(const UINT16 esbId);
/*
* 功能描述:设置指定ID紧急关闭旁路按钮故障标志
* 参数说明:const UINT16 esbId, 紧急关闭按钮ID
* const UINT8 cEsbCutErrFlag 紧急关闭旁路按钮故障标志
* 返回值:无
*/
void SetEsbCutErrFlag(const UINT16 esbId, const UINT8 cEsbCutErrFlag);
/*
* 功能描述: 获取指定ID紧急关闭旁路按钮故障标志
* 参数说明: const UINT16 esbId, 紧急关闭按钮ID
* 返回值 0: 获取数据失败
* >0: 紧停旁路按钮故障标志
*/
UINT8 GetEsbCutErrFlag(const UINT16 esbId);
/*
* 功能描述:设置紧急停车按钮采集继电器落下状态
* 参数说明:const UINT16 esbId 紧急停车按钮ID
* const UINT8 cRelayDownState 继电器落下状态
* 返回值:无
* Created By LQ 2025.04.01
*/
void SetEsbRelayDownState(const UINT16 esbId, const UINT8 cRelayDownState);
/*
* 功能描述: 获取紧急停车按钮采集继电器落下状态
* 参数说明: const UINT16 esbId, 紧急停车按钮ID
* 返回值 0: 获取数据失败
* 0x55: 正常落下
* 0xaa: 通信异常落下
* Created By LQ 2025.04.01
*/
UINT8 GetEsbRelayDownState(const UINT16 esbId);
/**
* @brief 设置全线区段CESB封锁全局变量状态
* @param const UINT8 chState 全线区段CESB封锁状态
* @return 无
* @note 当输入参数不合法时,设置全线区段CESB封锁
* Created By fan 2026.02.04
*/
void SetAllSecCesbState(const UINT8 chState);
/**
* @brief 获取全线区段CESB封锁全局变量状态
* @param 无
* @return CESB_STATE_VALID_NO:未全线CESB封锁;CESB_STATE_VALID_YES :全线CESB封锁
* Created By fan 2026.02.04
*/
UINT8 GetAllSecCesbState(void);
/**
* @brief 全线CEsb封锁取消主处理函数
* @param 无
* @return 无
* Created By fan 2026.02.04
*/
void CancleCesbFlockCmdProc(void);
/**
* @brief 全线CESB首次命令处理函数
* @param 无
* @return 无
* Created By fan 2026.02.04
*/
void CancelCesbFlockAtsCmdFst(void);
/**
* @brief 取消CESB封锁二次命令处理函数
* @param 无
* @return 无
* Created By fan 2026.02.04
*/
void CancelCesbFlockAtsCmdSnd(void);
/**
* @brief 获取试车线CESB命令设置状态
* @param 无
* @return CESB_STATE_VALID_NO 试车线CESB未激活;CESB_STATE_VALID_YES :试车线CESB激活
* Created By fan 2026.03.10
*/
UINT8 GetScxCesbCmdState(void);
/**
* @brief 设置试车线CESB命令状态
* @input CESB_STATE_VALID_NO 试车线CESB未激活;CESB_STATE_VALID_YES :试车线CESB激活
* Created By fan 2026.03.10
*/
void SetScxCesbCmdState(UINT8 chCesbCmd);
/**
* @brief 获取全线区段试车线CESB旁路命令设置状态
* @param 无
* @return ESB_CUT_NO:试车线未CESB旁路;ESB_CUT_YES 试车线CESB旁路有效
* Created By fan 2026.03.10
*/
UINT8 GetScxCesbCutCmdState(void);
/**
* @brief 设置试车线CESB旁路命令状态
* @input ESB_CUT_NO: 试车线未CESB旁路;ESB_CUT_YES : 试车线CESB旁路
* Created By fan 2026.03.10
*/
void SetScxCesbCutCmdState(UINT8 chCesbCmd);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
-4
View File
@@ -23,10 +23,6 @@
#define ESB_STATE_VALID_NO ((UINT8)0x55) /*紧急无效*/ #define ESB_STATE_VALID_NO ((UINT8)0x55) /*紧急无效*/
#define ESB_STATE_VALID_YES ((UINT8)0xaa) /*紧急有效*/ #define ESB_STATE_VALID_YES ((UINT8)0xaa) /*紧急有效*/
/*全线紧急状态*/
#define CESB_STATE_VALID_NO ((UINT8)0xAA) /*CESB紧急无效*/
#define CESB_STATE_VALID_YES ((UINT8)0x55) /*CESB紧急有效*/
/*紧急按钮旁路状态*/ /*紧急按钮旁路状态*/
#define ESB_CUT_NO ((UINT8)0x55) /* 未旁路 */ #define ESB_CUT_NO ((UINT8)0x55) /* 未旁路 */
#define ESB_CUT_YES ((UINT8)0xaa) /* 旁路 */ #define ESB_CUT_YES ((UINT8)0xaa) /* 旁路 */
@@ -1161,7 +1161,7 @@ void elm_CTEnvelopeTrack(void)
} }
else if ((CI_SUCCESS == funRet) && (1u == relEnvelopeCnt)) else if ((CI_SUCCESS == funRet) && (1u == relEnvelopeCnt))
{ {
/* 只有CT包络才涉及B轨UT可追踪功能*/ /* 只有CT包络才设计B轨UT可追踪功能*/
elm_DealNoCGFollowUt(relEnvelopeID[0u], trainID[cycle]); elm_DealNoCGFollowUt(relEnvelopeID[0u], trainID[cycle]);
/** 维护日志--调试级别*/ /** 维护日志--调试级别*/
@@ -1277,9 +1277,16 @@ void elm_DealNoCGFollowUt(UINT16 wEnvelopeID,UINT16 wTrainId)
const EnvelopeStruct* pEnvelop = NULL; const EnvelopeStruct* pEnvelop = NULL;
UINT8 chNoCGFollowUtSwitch = 0U; UINT8 chNoCGFollowUtSwitch = 0U;
ELM_TrainSafeLocStruct safeLoc = { 0U }; /*列车安全位置*/ ELM_TrainSafeLocStruct safeLoc = { 0U }; /*列车安全位置*/
UINT8 chLinkRelPhySecAGorBGAttr = 0U;/*LINK关联物理区段ABD属性*/
UINT8 chEnvelopLinkABGAttr = 0U;/*包络相关LINK关联物理区段ABG属性*/
UINT16 wLinkRelatedPhySec = 0U;/*LINK关联物理区段*/
UINT8 chPhyLjkFlag = 0U;/*列检库属性*/
UINT16 wTrainEnterLjkLinkId = 0U;/*列车进入列检库LINK ID*/
UINT32 dwCycNum = 0U;/*当前周期号*/
UINT16 wTempTrainID = 0U;/*临时记录列车ID*/ UINT16 wTempTrainID = 0U;/*临时记录列车ID*/
UINT8 chTempVirHeadScreenFlag = 0U;/*临时虚拟前筛标志*/ UINT8 chTempVirHeadScreenFlag = 0U;/*临时虚拟前筛标志*/
UINT8 chTempVirTailScreenFlag = 0U;/*临时虚拟后筛标志*/ UINT8 chTempVirTailScreenFlag = 0U;/*临时虚拟后筛标志*/
UINT8 chAgLinkExistRelCgFlag = 0U;/*AG是否存在CG标志*/
/** 获取列车包络 */ /** 获取列车包络 */
pEnvelop = elm_GetEnvelopeInfoPtr(wEnvelopeID); pEnvelop = elm_GetEnvelopeInfoPtr(wEnvelopeID);
@@ -1316,10 +1323,58 @@ void elm_DealNoCGFollowUt(UINT16 wEnvelopeID,UINT16 wTrainId)
{ {
if (0U == errorCode) if (0U == errorCode)
{ {
/*处理AG虚拟筛选标志*/ chLinkRelPhySecAGorBGAttr = GetLinkRelPhySecAGorBGAttr(safeLoc.endPos.Lnk);
elm_DealAgVirScreenFlag(wEnvelopeID, wTrainId); chEnvelopLinkABGAttr = GetLinkRelPhySecAGorBGAttr(pEnvelop->endPos.Lnk);
/*处理BG虚拟筛选标志*/ wLinkRelatedPhySec = GetLinkRelatedPhySec(pEnvelop->endPos.Lnk);
elm_DealBgVirScreenFlag(wEnvelopeID, wTrainId); chPhyLjkFlag = GetPhySecLjkFlag(wLinkRelatedPhySec);
chAgLinkExistRelCgFlag = GetAgLinkExistRelCgFlag(safeLoc.endPos.Lnk);
/*包络刷新在后,所以此时虽然安全位置进入AG,但包络可能还没进入*/
if ((LINK_REL_PHYSEC_AG == chLinkRelPhySecAGorBGAttr) && (0U == pEnvelop->headTrainID)
&& (LINK_REL_PHYSEC_DEFAULT == chEnvelopLinkABGAttr) && (PHYSICAL_SECTION_LJK_NO == chPhyLjkFlag)
&& (AGLINK_EXIST_REL_CG_NO == chAgLinkExistRelCgFlag))
{
/*列车安全车头驶入AG且当前驶入前没有前端可疑且不是从BG过来的车且不存在CG便设置前筛通过标志有效*/
SetTrainVirHeadScreenPassFlag(wTrainId,TRAIN_VIR_SCREEN_PASS_FLAG_VALID);
SetTrainEnterLjkLinkId(wTrainId, safeLoc.endPos.Lnk);
}
else
{
; /*不设置对应标志,安全位置和包络均进入AG维持原来的标志*/
}
chLinkRelPhySecAGorBGAttr = GetLinkRelPhySecAGorBGAttr(safeLoc.startPos.Lnk);
chEnvelopLinkABGAttr = GetLinkRelPhySecAGorBGAttr(pEnvelop->startPos.Lnk);
wLinkRelatedPhySec = GetLinkRelatedPhySec(pEnvelop->startPos.Lnk);
chPhyLjkFlag = GetPhySecLjkFlag(wLinkRelatedPhySec);
chAgLinkExistRelCgFlag = GetAgLinkExistRelCgFlag(safeLoc.startPos.Lnk);
/*包络刷新在后,所以此时虽然安全位置进入AG,但包络可能还没进入*/
if ((LINK_REL_PHYSEC_AG == chLinkRelPhySecAGorBGAttr) && (0U == pEnvelop->tailTrainID)
&& (LINK_REL_PHYSEC_DEFAULT == chEnvelopLinkABGAttr) && (PHYSICAL_SECTION_LJK_NO == chPhyLjkFlag)
&& (AGLINK_EXIST_REL_CG_NO == chAgLinkExistRelCgFlag))
{
/*列车安全车尾驶入AG且当前驶入前没有后端可疑且不是从BG过来的车且不存在CG便设置后筛通过标志有效*/
SetTrainVirTailScreenPassFlag(wTrainId, TRAIN_VIR_SCREEN_PASS_FLAG_VALID);
SetTrainEnterLjkLinkId(wTrainId, safeLoc.startPos.Lnk);
}
else
{
; /*不设置对应标志,安全位置和包络均进入AG维持原来的标志*/
}
wTrainEnterLjkLinkId = GetTrainEnterLjkLinkId(wTrainId);
/*列车包络完全进入A轨后,容忍占用到空闲时间,D轨出现计轴区段(道岔位置连通在D轨)采集占用,设置前筛通过标识、后筛通过标识无效*/
if ((LINK_REL_PHYSEC_AG == chLinkRelPhySecAGorBGAttr) && (safeLoc.startPos.Lnk == safeLoc.endPos.Lnk)
&& (safeLoc.startPos.Lnk == wTrainEnterLjkLinkId) && (AGLINK_EXIST_REL_CG_NO == chAgLinkExistRelCgFlag))
{
dwCycNum = Get2oo2CurCycleNum();
SetTrainFullEnterLjkCycNum(wTrainId, dwCycNum);
}
else
{
;
}
} }
else else
{ {
@@ -1516,183 +1571,4 @@ void elm_VirScreenPassMonitor(void)
; /*不需要监督和清除*/ ; /*不需要监督和清除*/
} }
} }
}
/**
* @brief 处理AG虚拟筛选标志
* @param[in] UINT16 envelopeID 列车包络
* @param[in] UINT16 wTrainId 列车ID
* @return 无
* @note by cgh 20250805
*/
void elm_DealAgVirScreenFlag(UINT16 wEnvelopeID, UINT16 wTrainId)
{
UINT8 funRet = CI_ERROR;
const EnvelopeStruct* pEnvelop = NULL;
ELM_TrainSafeLocStruct safeLoc = { 0U }; /*列车安全位置*/
UINT8 chLinkRelPhySecAGorBGAttr = 0U;/*LINK关联物理区段ABG属性*/
UINT8 chEnvelopLinkABGAttr = 0U;/*包络相关LINK关联物理区段ABG属性*/
UINT16 wLinkRelatedPhySec = 0U;/*LINK关联物理区段*/
UINT8 chPhyLjkFlag = 0U;/*列检库属性*/
UINT16 wTrainEnterLjkLinkId = 0U;/*列车进入列检库LINK ID*/
UINT32 dwCycNum = 0U;/*当前周期号*/
UINT8 chAgLinkExistRelCgFlag = 0U;/*AG是否存在CG标志*/
/** 获取列车包络 */
pEnvelop = elm_GetEnvelopeInfoPtr(wEnvelopeID);
/** 入口参数校验 */
if ((NULL != pEnvelop) && (0U < wTrainId) && (LINE_MAX_TRAIN > wTrainId))
{
funRet = elm_PrepareTrainSafeLoc(wTrainId, &safeLoc);
if (CI_SUCCESS == funRet)
{
chLinkRelPhySecAGorBGAttr = GetLinkRelPhySecAGorBGAttr(safeLoc.endPos.Lnk);
chEnvelopLinkABGAttr = GetLinkRelPhySecAGorBGAttr(pEnvelop->endPos.Lnk);
wLinkRelatedPhySec = GetLinkRelatedPhySec(pEnvelop->endPos.Lnk);
chPhyLjkFlag = GetPhySecLjkFlag(wLinkRelatedPhySec);
chAgLinkExistRelCgFlag = GetAgLinkExistRelCgFlag(safeLoc.endPos.Lnk);
/*包络刷新在后,所以此时虽然安全位置进入AG,但包络可能还没进入*/
if ((LINK_REL_PHYSEC_AG == chLinkRelPhySecAGorBGAttr) && (0U == pEnvelop->headTrainID)
&& (LINK_REL_PHYSEC_DEFAULT == chEnvelopLinkABGAttr) && (PHYSICAL_SECTION_LJK_NO == chPhyLjkFlag)
&& (AGLINK_EXIST_REL_CG_NO == chAgLinkExistRelCgFlag))
{
/*列车安全车头驶入AG且当前驶入前没有前端可疑且不是从BG过来的车且不存在CG便设置前筛通过标志有效*/
SetTrainVirHeadScreenPassFlag(wTrainId, TRAIN_VIR_SCREEN_PASS_FLAG_VALID);
SetTrainEnterLjkLinkId(wTrainId, safeLoc.endPos.Lnk);
}
else
{
; /*不设置对应标志,安全位置和包络均进入AG维持原来的标志*/
}
chLinkRelPhySecAGorBGAttr = GetLinkRelPhySecAGorBGAttr(safeLoc.startPos.Lnk);
chEnvelopLinkABGAttr = GetLinkRelPhySecAGorBGAttr(pEnvelop->startPos.Lnk);
wLinkRelatedPhySec = GetLinkRelatedPhySec(pEnvelop->startPos.Lnk);
chPhyLjkFlag = GetPhySecLjkFlag(wLinkRelatedPhySec);
chAgLinkExistRelCgFlag = GetAgLinkExistRelCgFlag(safeLoc.startPos.Lnk);
/*包络刷新在后,所以此时虽然安全位置进入AG,但包络可能还没进入*/
if ((LINK_REL_PHYSEC_AG == chLinkRelPhySecAGorBGAttr) && (0U == pEnvelop->tailTrainID)
&& (LINK_REL_PHYSEC_DEFAULT == chEnvelopLinkABGAttr) && (PHYSICAL_SECTION_LJK_NO == chPhyLjkFlag)
&& (AGLINK_EXIST_REL_CG_NO == chAgLinkExistRelCgFlag))
{
/*列车安全车尾驶入AG且当前驶入前没有后端可疑且不是从BG过来的车且不存在CG便设置后筛通过标志有效*/
SetTrainVirTailScreenPassFlag(wTrainId, TRAIN_VIR_SCREEN_PASS_FLAG_VALID);
SetTrainEnterLjkLinkId(wTrainId, safeLoc.startPos.Lnk);
}
else
{
; /*不设置对应标志,安全位置和包络均进入AG维持原来的标志*/
}
wTrainEnterLjkLinkId = GetTrainEnterLjkLinkId(wTrainId);
/*列车包络完全进入A轨后,容忍占用到空闲时间,D轨出现计轴区段(道岔位置连通在D轨)采集占用,设置前筛通过标识、后筛通过标识无效*/
if ((LINK_REL_PHYSEC_AG == chLinkRelPhySecAGorBGAttr) && (safeLoc.startPos.Lnk == safeLoc.endPos.Lnk)
&& (safeLoc.startPos.Lnk == wTrainEnterLjkLinkId) && (AGLINK_EXIST_REL_CG_NO == chAgLinkExistRelCgFlag))
{
dwCycNum = Get2oo2CurCycleNum();
SetTrainFullEnterLjkCycNum(wTrainId, dwCycNum);
}
else
{
;
}
}
else
{
SetTrainVirHeadScreenPassFlag(wTrainId, TRAIN_VIR_SCREEN_PASS_FLAG_INVALID);
SetTrainVirTailScreenPassFlag(wTrainId, TRAIN_VIR_SCREEN_PASS_FLAG_INVALID);
SetTrainFullEnterLjkCycNum(wTrainId, 0U);
SetTrainEnterLjkLinkId(wTrainId, 0U);
}
}
else
{
;
}
}
/**
* @brief 处理BG虚拟筛选标志
* @param[in] UINT16 envelopeID 列车包络
* @param[in] UINT16 wTrainId 列车ID
* @return 无
* @note by cgh 20250805
*/
void elm_DealBgVirScreenFlag(UINT16 wEnvelopeID, UINT16 wTrainId)
{
UINT8 funRet = CI_ERROR;
const EnvelopeStruct* pEnvelop = NULL;
ELM_TrainSafeLocStruct safeLoc = { 0U }; /*列车安全位置*/
UINT8 chLinkRelPhySecAGorBGAttr = 0U;/*LINK关联物理区段ABG属性*/
UINT8 chEnvelopLinkABGAttr = 0U;/*包络相关LINK关联物理区段ABG属性*/
UINT8 chAgLinkExistRelCgFlag = 0U;/*AG是否存在CG标志*/
/** 获取列车包络 */
pEnvelop = elm_GetEnvelopeInfoPtr(wEnvelopeID);
/** 入口参数校验 */
if ((NULL != pEnvelop) && (0U < wTrainId) && (LINE_MAX_TRAIN > wTrainId))
{
funRet = elm_PrepareTrainSafeLoc(wTrainId, &safeLoc);
if (CI_SUCCESS == funRet)
{
chLinkRelPhySecAGorBGAttr = GetLinkRelPhySecAGorBGAttr(safeLoc.endPos.Lnk);
chEnvelopLinkABGAttr = GetLinkRelPhySecAGorBGAttr(pEnvelop->endPos.Lnk);
chAgLinkExistRelCgFlag = GetAgLinkExistRelCgFlag(pEnvelop->endPos.Lnk);
/*包络刷新在后,所以此时虽然安全位置进入BG,但包络可能还没进入*/
if ((LINK_REL_PHYSEC_BG == chLinkRelPhySecAGorBGAttr) && (0U == pEnvelop->headTrainID)
&& (LINK_REL_PHYSEC_AG == chEnvelopLinkABGAttr) && (AGLINK_EXIST_REL_CG_NO == chAgLinkExistRelCgFlag))
{
/*列车安全车头驶入BG且当前驶入前没有前端可疑且是从AG过来的车且不存在CG便设置前筛通过标志有效*/
SetTrainVirHeadScreenPassFlag(wTrainId, TRAIN_VIR_SCREEN_PASS_FLAG_INVALID);
SetTrainVirTailScreenPassFlag(wTrainId, TRAIN_VIR_SCREEN_PASS_FLAG_INVALID);
SetTrainFullEnterLjkCycNum(wTrainId, 0U);
SetTrainEnterLjkLinkId(wTrainId, 0U);
/*先清除再设置,仅为了逻辑清晰一些*/
SetTrainVirHeadScreenPassFlag(wTrainId, TRAIN_VIR_SCREEN_PASS_FLAG_VALID);
SetTrainEnterLjkLinkId(wTrainId, safeLoc.endPos.Lnk);
}
else
{
; /*不设置对应标志,安全位置和包络均进入BG维持原来的标志*/
}
chLinkRelPhySecAGorBGAttr = GetLinkRelPhySecAGorBGAttr(safeLoc.startPos.Lnk);
chEnvelopLinkABGAttr = GetLinkRelPhySecAGorBGAttr(pEnvelop->startPos.Lnk);
chAgLinkExistRelCgFlag = GetAgLinkExistRelCgFlag(pEnvelop->startPos.Lnk);
/*包络刷新在后,所以此时虽然安全位置进入BG,但包络可能还没进入*/
if ((LINK_REL_PHYSEC_BG == chLinkRelPhySecAGorBGAttr) && (0U == pEnvelop->tailTrainID)
&& (LINK_REL_PHYSEC_AG == chEnvelopLinkABGAttr) && (AGLINK_EXIST_REL_CG_NO == chAgLinkExistRelCgFlag))
{
/*列车安全车尾驶入BG且当前驶入前没有后端可疑且是从AG过来的车且不存在CG便设置后筛通过标志有效*/
SetTrainFullEnterLjkCycNum(wTrainId, 0U);
SetTrainEnterLjkLinkId(wTrainId, 0U);
/*先清除再设置,仅为了逻辑清晰一些*/
SetTrainVirTailScreenPassFlag(wTrainId, TRAIN_VIR_SCREEN_PASS_FLAG_VALID);
SetTrainEnterLjkLinkId(wTrainId, safeLoc.startPos.Lnk);
}
else
{
; /*不设置对应标志,安全位置和包络均进入AG维持原来的标志*/
}
}
else
{
SetTrainVirHeadScreenPassFlag(wTrainId, TRAIN_VIR_SCREEN_PASS_FLAG_INVALID);
SetTrainVirTailScreenPassFlag(wTrainId, TRAIN_VIR_SCREEN_PASS_FLAG_INVALID);
SetTrainFullEnterLjkCycNum(wTrainId, 0U);
SetTrainEnterLjkLinkId(wTrainId, 0U);
}
}
else
{
;
}
} }
@@ -106,7 +106,7 @@ static UINT8 elm_UKTAdjacentSwProtect(void)
nearTrainType = aam_SearchNearbyTrainType(pACIdbuff[cycleAc], EMAP_SAME_DIR, acSameCnt, acSameID); nearTrainType = aam_SearchNearbyTrainType(pACIdbuff[cycleAc], EMAP_SAME_DIR, acSameCnt, acSameID);
} }
if ((AAM_BAD_NEAR == nearTrainType)|| (AAM_SLEEP_OCC == nearTrainType)) if (AAM_BAD_NEAR == nearTrainType)
{ {
elm_PrepareClearSwPassTrainFlag(pACIdbuff[cycleAc]); elm_PrepareClearSwPassTrainFlag(pACIdbuff[cycleAc]);
ELM_LOG(ELM_LOG_FATAL,"info:Switch Zone AC%d Clear CT pass flag by PreAC UT.\n",pACIdbuff[cycleAc]); ELM_LOG(ELM_LOG_FATAL,"info:Switch Zone AC%d Clear CT pass flag by PreAC UT.\n",pACIdbuff[cycleAc]);
@@ -116,7 +116,7 @@ static UINT8 elm_UKTAdjacentSwProtect(void)
/** 查询前方计轴接近车类型*/ /** 查询前方计轴接近车类型*/
nearTrainType = aam_SearchNearbyTrainType(pACIdbuff[cycleAc],EMAP_CONVER_DIR,acConvertCnt,acConvertID); nearTrainType = aam_SearchNearbyTrainType(pACIdbuff[cycleAc],EMAP_CONVER_DIR,acConvertCnt,acConvertID);
if ((AAM_BAD_NEAR == nearTrainType) || (AAM_SLEEP_OCC == nearTrainType)) if (AAM_BAD_NEAR == nearTrainType)
{ {
elm_PrepareClearSwPassTrainFlag(pACIdbuff[cycleAc]); elm_PrepareClearSwPassTrainFlag(pACIdbuff[cycleAc]);
ELM_LOG(ELM_LOG_FATAL,"info:Switch Zone AC%d Clear CT pass flag by backAC UT.\n",pACIdbuff[cycleAc]); ELM_LOG(ELM_LOG_FATAL,"info:Switch Zone AC%d Clear CT pass flag by backAC UT.\n",pACIdbuff[cycleAc]);
@@ -1511,6 +1511,8 @@ void elm_MaintenanceInfo(void)
outStringLength++; outStringLength++;
outString[outStringLength] = pAcAssertInfo->redunOverCanArb; /*冗余结束可判ARB标志*/ outString[outStringLength] = pAcAssertInfo->redunOverCanArb; /*冗余结束可判ARB标志*/
outStringLength++; outStringLength++;
outString[outStringLength] = pAcAssertInfo->AxisCommBadArbFlag; /*计轴通信中断可判ARB标志*/
outStringLength++;
outString[outStringLength] = pAcAssertInfo->passTrainFlag; /*计轴区段好车通过标志*/ outString[outStringLength] = pAcAssertInfo->passTrainFlag; /*计轴区段好车通过标志*/
outStringLength++; outStringLength++;
ShortToChar(pAcAssertInfo->passTrainID, &outString[outStringLength]); /*计轴区段好车通过的列车ID*/ ShortToChar(pAcAssertInfo->passTrainID, &outString[outStringLength]); /*计轴区段好车通过的列车ID*/
@@ -2034,8 +2036,6 @@ void elm_SafeProtectProcess(void)
UINT8 workFlag = ELM_WORK_ERROR; UINT8 workFlag = ELM_WORK_ERROR;
UINT8 funRet = CI_ERROR; UINT8 funRet = CI_ERROR;
UINT32 errorCode = 0u; UINT32 errorCode = 0u;
UINT8 localCiType = 0U;
UINT8 ciTrainTestState = 0U;
/** 包络管理模块可正常处理标志位 */ /** 包络管理模块可正常处理标志位 */
workFlag = elm_GetELMWorkFlag(); workFlag = elm_GetELMWorkFlag();
@@ -2055,17 +2055,8 @@ void elm_SafeProtectProcess(void)
funRet = elm_UTLosingProtect(); funRet = elm_UTLosingProtect();
ASSER_ERROR(CI_ERROR == funRet,errorCode,0x40000000u); ASSER_ERROR(CI_ERROR == funRet,errorCode,0x40000000u);
localCiType = GetLocalCiType(); /** CT/UCT车飞车防护--宕机防护*/
ciTrainTestState = GetCiTrainTestStatus(); elm_FlyingProtect();
if ((CI_TYPE_SCX == localCiType) && ((CI_TRAIN_TEST_OFF == ciTrainTestState) || (CI_TRAIN_TEST_STOP == ciTrainTestState)))
{
ScxClearFlyProtectInfo(); /*试车线在未试车期间,不进行飞车宕机防护处理,同时清除之前的飞车信息,修复CT驶出试车线导致飞车宕机问题*/
}
else
{
/** CT/UCT车飞车防护--宕机防护*/
elm_FlyingProtect();
}
/** 本OC范围内的计轴映射表合法性校验 */ /** 本OC范围内的计轴映射表合法性校验 */
funRet = elm_ACRelEnvelopeCheck(); funRet = elm_ACRelEnvelopeCheck();
@@ -2604,7 +2595,6 @@ UINT8 elm_UCTEnvelopeLeaveAC(UINT8 flag,IN const EnvelopeStruct* pEnvelope,UINT1
UINT16 relEnvelopeID[TRAIN_REL_ENVELOPE_SUM_MAX] = {0u}; /*列车关联的包络索引*/ UINT16 relEnvelopeID[TRAIN_REL_ENVELOPE_SUM_MAX] = {0u}; /*列车关联的包络索引*/
const EnvelopeStruct *pEnvelopeInfo = NULL; const EnvelopeStruct *pEnvelopeInfo = NULL;
const WLTrainStatusInfoStruct* pTemp = NULL; const WLTrainStatusInfoStruct* pTemp = NULL;
UINT8 chTrainNvramPosFlag = 0U; /*列车NVRAM位置标识*/
/* 将本周期的的状态设置成上周期的状态 */ /* 将本周期的的状态设置成上周期的状态 */
for (cycle = 1u; cycle < LINE_MAX_TRAIN; cycle++) for (cycle = 1u; cycle < LINE_MAX_TRAIN; cycle++)
@@ -2650,19 +2640,10 @@ UINT8 elm_UCTEnvelopeLeaveAC(UINT8 flag,IN const EnvelopeStruct* pEnvelope,UINT1
if ((NULL != pEnvelopeInfo) && if ((NULL != pEnvelopeInfo) &&
((TYPE_CT_ENVELOPE == pEnvelopeInfo->envelopeType) || (TYPE_UCT_ENVELOPE == pEnvelopeInfo->envelopeType))) ((TYPE_CT_ENVELOPE == pEnvelopeInfo->envelopeType) || (TYPE_UCT_ENVELOPE == pEnvelopeInfo->envelopeType)))
{ {
chTrainNvramPosFlag = GetTrainNvramPosFlag(cycle); headNeedScreen = LINE_MAX_TRAIN == pEnvelopeInfo->headTrainID ? NEED_SCREEN : UNNEED_SCREEN;
tailNeedScreen = LINE_MAX_TRAIN == pEnvelopeInfo->tailTrainID ? NEED_SCREEN : UNNEED_SCREEN;
if (TRAIN_NVRAM_POS_FLAG_NO == chTrainNvramPosFlag) wls_SetTrainControlStatus(cycle,IN_CONTROL_STATUS,headNeedScreen,tailNeedScreen);
{
headNeedScreen = LINE_MAX_TRAIN == pEnvelopeInfo->headTrainID ? NEED_SCREEN : UNNEED_SCREEN;
tailNeedScreen = LINE_MAX_TRAIN == pEnvelopeInfo->tailTrainID ? NEED_SCREEN : UNNEED_SCREEN;
wls_SetTrainControlStatus(cycle, IN_CONTROL_STATUS, headNeedScreen, tailNeedScreen);
}
else
{
ELM_LOG(ELM_LOG_FATAL, " not Add In Control Train,Because UseNvram Pos\n");
}
} }
else else
{ {
@@ -2783,24 +2764,25 @@ UINT8 elm_UCTEnvelopeLeaveAC(UINT8 flag,IN const EnvelopeStruct* pEnvelope,UINT1
* @return CI_ERROR 查询失败 * @return CI_ERROR 查询失败
CI_SUCCESS 查询成功 CI_SUCCESS 查询成功
* @note * @note
* edit cgh 20250724 目前只用于RRM * by cgh 20240514 目前只用于RRM
*/ */
UINT8 elm_GetNearEnvelopRelSameTra(UINT16 envelopeId, OUT UINT16* preEnvelope, OUT UINT16* backEnvelope) UINT8 elm_GetNearEnvelopRelSameTra(UINT16 envelopeId, OUT UINT16* preEnvelope, OUT UINT16* backEnvelope)
{ {
/*- 局部变量定义 */ /*- 局部变量定义 */
UINT8 ret = CI_ERROR; UINT8 ret = CI_ERROR;
UINT8 funRet = CI_ERROR; UINT8 funRet = CI_ERROR;
UINT32 errorCode = 0U; /*错误码*/ UINT32 errorCode = 0u; /*错误码*/
const EnvelopeStruct* pEnvelop = NULL; const EnvelopeStruct* pEnvelop = NULL;
UINT8 envelopeCnt = 0U; /* 包络数量 */ UINT8 envelopeCnt = 0u; /* 包络数量 */
UINT16 arEnvelopID[TRAIN_SUM_MAX_IN_OC] = { 0U }; /*包络ID数组*/ UINT16 arEnvelopID[TRAIN_SUM_MAX_IN_OC] = { 0u }; /*包络ID数组*/
UINT16 acCnt = 0U; /** 前方计轴数量*/ UINT16 acCnt = 0u; /** 前方计轴数量*/
UINT16 acID[AC_MAXCNT_IN_SWITCH * AC_MAXCNT_IN_SWITCH] = { 0U }; UINT16 acID[AC_MAXCNT_IN_SWITCH * AC_MAXCNT_IN_SWITCH] = { 0u };
UINT16 mergeACIndex = 0U; UINT8 acStatus = ELM_AC_OCC;
UINT16 mergeACIndex = 0u;
UINT16 mergeACCntMax = (SECTION_IN_ENVELOPE_SUM_MAX + 2U * AC_MAXCNT_IN_SWITCH * AC_MAXCNT_IN_SWITCH); UINT16 mergeACCntMax = (SECTION_IN_ENVELOPE_SUM_MAX + 2U * AC_MAXCNT_IN_SWITCH * AC_MAXCNT_IN_SWITCH);
UINT16 mergeACID[SECTION_IN_ENVELOPE_SUM_MAX + 2U * AC_MAXCNT_IN_SWITCH * AC_MAXCNT_IN_SWITCH] = { 0U }; UINT16 mergeACID[SECTION_IN_ENVELOPE_SUM_MAX + 2U * AC_MAXCNT_IN_SWITCH * AC_MAXCNT_IN_SWITCH] = { 0u };
UINT8 includeCnt = 0U; UINT8 includeCnt = 0u;
UINT16 includeELMid[TRAIN_SUM_MAX_IN_OC] = { 0U }; /** 重合的包络id */ UINT16 includeELMid[TRAIN_SUM_MAX_IN_OC] = { 0u }; /** 重合的包络id */
/** 获取列车包络 */ /** 获取列车包络 */
pEnvelop = elm_GetEnvelopeInfoPtr(envelopeId); pEnvelop = elm_GetEnvelopeInfoPtr(envelopeId);
@@ -2809,36 +2791,63 @@ UINT8 elm_UCTEnvelopeLeaveAC(UINT8 flag,IN const EnvelopeStruct* pEnvelope,UINT1
if ((NULL == pEnvelop) || (NULL == preEnvelope) || (NULL == backEnvelope)) if ((NULL == pEnvelop) || (NULL == preEnvelope) || (NULL == backEnvelope))
{ {
/** 设置错误码*/ /** 设置错误码*/
ASSER_ERROR(CI_ERROR == funRet, errorCode, 0x80000000U); ASSER_ERROR(CI_ERROR == funRet, errorCode, 0x08000000u);
} }
else else
{ {
/* 查询后方计轴区段*/ /** 获取车尾包络计轴占用状态 */
acCnt = elm_GetEnvelopTailACIDs(pEnvelop, acID); acStatus = elm_PrepareACStatus(pEnvelop->ACID[0]);
/** 合并车尾后方的计轴 */ /** 判断包络尾是否占用,如果占用,则需要查询下一个计轴*/
mergeACIndex = elm_PrepareMergeUINT16Array(mergeACID, mergeACCntMax, mergeACIndex, acID, (AC_MAXCNT_IN_SWITCH * AC_MAXCNT_IN_SWITCH), acCnt); if (ELM_AC_OCC == acStatus)
/** 合并包络包含的计轴区段 */
mergeACIndex = elm_PrepareMergeUINT16Array(mergeACID, mergeACCntMax, mergeACIndex, pEnvelop->ACID, SECTION_IN_ENVELOPE_SUM_MAX, pEnvelop->ACCnt);
/** 设置错误码*/
ASSER_ERROR(mergeACIndex > mergeACCntMax, errorCode, 0x40000000U);
if (0U == errorCode)
{ {
(void)CommonMemSet(&acID, (UINT32)((AC_MAXCNT_IN_SWITCH*AC_MAXCNT_IN_SWITCH)*sizeof(UINT16)),0U, (UINT32)((AC_MAXCNT_IN_SWITCH*AC_MAXCNT_IN_SWITCH)*sizeof(UINT16)));/*先清空数组防止脏数据*/ /* 查询后方计轴,车尾计轴占用,存在道岔四开,为了确保能然后后端,需要查询安全车尾所属计轴的相邻计轴区段*/
/* 查询前方计轴*/ acCnt = elm_GetEnvelopTailACIDs(pEnvelop, acID);
acCnt = elm_GetEnvelopHeadACIDs(pEnvelop, acID);
/** 合并车头前方的计轴 */ /** 合并车尾后方的计轴 */
mergeACIndex = elm_PrepareMergeUINT16Array(mergeACID, mergeACCntMax, mergeACIndex, acID, (AC_MAXCNT_IN_SWITCH * AC_MAXCNT_IN_SWITCH), acCnt); mergeACIndex = elm_PrepareMergeUINT16Array(mergeACID, mergeACCntMax, mergeACIndex, acID, (AC_MAXCNT_IN_SWITCH * AC_MAXCNT_IN_SWITCH), acCnt);
/** 先合并包络包含的计轴区段 */
mergeACIndex = elm_PrepareMergeUINT16Array(mergeACID, mergeACCntMax, mergeACIndex, pEnvelop->ACID, SECTION_IN_ENVELOPE_SUM_MAX, pEnvelop->ACCnt);
/** 设置错误码*/ /** 设置错误码*/
ASSER_ERROR(mergeACIndex > mergeACCntMax, errorCode, 0x20000000U); ASSER_ERROR(mergeACIndex > mergeACCntMax, errorCode, 0x04000000u);
}
else
{
/** 先合并包络包含的计轴区段 */
mergeACIndex = elm_PrepareMergeUINT16Array(mergeACID, mergeACCntMax, mergeACIndex, pEnvelop->ACID, SECTION_IN_ENVELOPE_SUM_MAX, pEnvelop->ACCnt);
/** 设置错误码*/
ASSER_ERROR(mergeACIndex > mergeACCntMax, errorCode, 0x02000000u);
}
if (0u == errorCode)
{
/** 获取车头包络计轴占用状态 */
acStatus = elm_PrepareACStatus(pEnvelop->ACID[pEnvelop->ACCnt - 1U]);
/** 判断包络头是否占用,如果占用,则需要查询下一个计轴 */
if (ELM_AC_OCC == acStatus)
{
/* 查询前方计轴,此处查询四开道岔的相邻计轴其实属于一个冗余的处理,因为如果车头压入了岔区且占用,直接进行了删车,但是此处再这样处理一个是为了统一设计,另外做一个冗余防护*/
acCnt = elm_GetEnvelopHeadACIDs(pEnvelop, acID);
/** 合并车头前方的计轴 */
mergeACIndex = elm_PrepareMergeUINT16Array(mergeACID, mergeACCntMax, mergeACIndex, acID, (AC_MAXCNT_IN_SWITCH * AC_MAXCNT_IN_SWITCH), acCnt);
/** 设置错误码*/
ASSER_ERROR(mergeACIndex > mergeACCntMax, errorCode, 0x04000000u);
}
else
{
/** 无需处理*/
}
/** 判断是否处理成功 */ /** 判断是否处理成功 */
if (0U == errorCode) if (0u == errorCode)
{ {
/** 获取前方计轴包含的包络 */ /** 获取前方计轴包含的包络 */
envelopeCnt = elm_MergeEnvelope(mergeACID, (UINT8)mergeACIndex, arEnvelopID); envelopeCnt = elm_MergeEnvelope(mergeACID, (UINT8)mergeACIndex, arEnvelopID);
@@ -2847,7 +2856,7 @@ UINT8 elm_UCTEnvelopeLeaveAC(UINT8 flag,IN const EnvelopeStruct* pEnvelope,UINT1
funRet = elm_FindNearSameTrainEnvelop(pEnvelop, arEnvelopID, envelopeCnt, preEnvelope, backEnvelope, &includeCnt, includeELMid); funRet = elm_FindNearSameTrainEnvelop(pEnvelop, arEnvelopID, envelopeCnt, preEnvelope, backEnvelope, &includeCnt, includeELMid);
/** 设置错误码*/ /** 设置错误码*/
ASSER_ERROR(CI_SUCCESS != funRet, errorCode, 0x10000000U); ASSER_ERROR(CI_SUCCESS != funRet, errorCode, 0x08000000u);
} }
else else
{ {
@@ -2861,7 +2870,7 @@ UINT8 elm_UCTEnvelopeLeaveAC(UINT8 flag,IN const EnvelopeStruct* pEnvelope,UINT1
} }
/** 设置返回值*/ /** 设置返回值*/
ASSERT_SETRET(0U == errorCode, ret, CI_SUCCESS, CI_ERROR); ASSERT_SETRET(0u == errorCode, ret, CI_SUCCESS, CI_ERROR);
return ret; return ret;
} }
@@ -486,22 +486,4 @@ void elm_FlyingProtect_UCT(void);
*/ */
void elm_DeleteUctPassFlag(UINT16 envelopeId); void elm_DeleteUctPassFlag(UINT16 envelopeId);
/**
* @brief 处理AG虚拟筛选标志
* @param[in] UINT16 envelopeID 列车包络
* @param[in] UINT16 wTrainId 列车ID
* @return 无
* @note by cgh 20250805
*/
void elm_DealAgVirScreenFlag(UINT16 wEnvelopeID, UINT16 wTrainId);
/**
* @brief 处理BG虚拟筛选标志
* @param[in] UINT16 envelopeID 列车包络
* @param[in] UINT16 wTrainId 列车ID
* @return 无
* @note by cgh 20250805
*/
void elm_DealBgVirScreenFlag(UINT16 wEnvelopeID, UINT16 wTrainId);
#endif #endif
@@ -6,8 +6,6 @@
#include "EnvelopeLogicProcess.h" #include "EnvelopeLogicProcess.h"
#include "WholeLineScreenAPI.h" #include "WholeLineScreenAPI.h"
#include "TrainDataManage.h" #include "TrainDataManage.h"
#include "SystemParameterManage.h"
#include "DeviceDataManage.h"
/*================================静态函数声明区==============================*/ /*================================静态函数声明区==============================*/
@@ -565,12 +563,6 @@ void elm_TrainScreen(void)
UINT32 errorCode = 0u; UINT32 errorCode = 0u;
UINT8 comstatus = 0U; UINT8 comstatus = 0U;
const EnvelopeStruct* pEnvelop = NULL; const EnvelopeStruct* pEnvelop = NULL;
UINT8 cLocalCiType = 0U;
UINT8 cDsnFuncSwitch = 0U; /*迪士尼功能开关*/
UINT8 cCurTrainTestStatus = 0U; /*当前试车状态*/
UINT8 cFuncRetVal = CI_ERROR;
UINT8 cAcNum = 0U; /*车身占用的计轴区段数量*/
UINT16 szAcId[MAX_AC_IN_TRAIN] = { 0U }; /*车身占用的计轴区段ID数组*/
for (cycle = 1u; cycle < ENVELOPE_SUM_MAX; cycle++) for (cycle = 1u; cycle < ENVELOPE_SUM_MAX; cycle++)
{ {
@@ -587,45 +579,28 @@ void elm_TrainScreen(void)
/** 获取列车的通信状态 */ /** 获取列车的通信状态 */
comstatus = elm_PrepareTrainCommStatus(pEnvelop->trainID[0u]); comstatus = elm_PrepareTrainCommStatus(pEnvelop->trainID[0u]);
/*CT包络且通信正常,才进行筛选*/ /*CT包络且通信正常,才进行筛选*/
if ((TYPE_CT_ENVELOPE == pEnvelop->envelopeType) && (ELM_COM_STATUS_OK == comstatus)) if ((TYPE_CT_ENVELOPE == pEnvelop->envelopeType)&&(ELM_COM_STATUS_OK ==comstatus))
{ {
cLocalCiType = GetLocalCiType(); /** 判断前端是否可疑 */
cDsnFuncSwitch = GetCiFunctionSwitchConfig(FUNC_DSN_LINE_SWITCH); if (0u != pEnvelop->headTrainID)
cCurTrainTestStatus = GetCiTrainTestStatus(); /*获取试车状态*/
cFuncRetVal = CheckTrainIsCompletelyLocal(pEnvelop->trainID[0U], &cAcNum, szAcId); /*判断列车是否完全在本控区*/
if ((CI_TYPE_SCX == cLocalCiType)
&& (FUNC_SWITCH_ON == cDsnFuncSwitch)
&& (CI_TRAIN_TEST_ON == cCurTrainTestStatus)
&& (CI_SUCCESS == cFuncRetVal))
{ {
/*DSN试车线在试车中时,RC设置本控区内的通信车无前后端可疑*/ /** 处理前端筛选*/
(void)elm_SetEnvelopeHeadTrainID(pEnvelop->id, 0U); elm_TrainHeadScreen(pEnvelop);
(void)elm_SetEnvelopeTailTrainID(pEnvelop->id, 0U);
} }
else else
{ {
/** 判断前端是否可疑 */ /** 无需处理 */
if (0u != pEnvelop->headTrainID) }
{
/** 处理前端筛选*/
elm_TrainHeadScreen(pEnvelop);
}
else
{
/** 无需处理 */
}
/** 判断后端是否可疑*/ /** 判断后端是否可疑*/
if (0u != pEnvelop->tailTrainID) if (0u != pEnvelop->tailTrainID)
{ {
/** 处理后端筛选*/ /** 处理后端筛选*/
elm_TrainTailScreen(pEnvelop); elm_TrainTailScreen(pEnvelop);
} }
else else
{ {
/** 无需处理 */ /** 无需处理 */
}
} }
} }
@@ -659,7 +634,6 @@ void elm_WLScreenProcess(void)
UINT8 relEnvelopeCnt= TRAIN_REL_ENVELOPE_SUM_MAX; /*列车关联的包络数量*/ UINT8 relEnvelopeCnt= TRAIN_REL_ENVELOPE_SUM_MAX; /*列车关联的包络数量*/
UINT16 relEnvelopeID[TRAIN_REL_ENVELOPE_SUM_MAX] = {0u}; /*列车关联的包络索引*/ UINT16 relEnvelopeID[TRAIN_REL_ENVELOPE_SUM_MAX] = {0u}; /*列车关联的包络索引*/
const EnvelopeStruct *pEnvelopeInfo = NULL; const EnvelopeStruct *pEnvelopeInfo = NULL;
UINT8 chTrainNvramPosFlag = 0U; /*列车NVRAM位置标识*/
/** 获取全线免筛标志 */ /** 获取全线免筛标志 */
wlsFlag = wls_GetWLScreenPermitFlag(); wlsFlag = wls_GetWLScreenPermitFlag();
@@ -679,37 +653,26 @@ void elm_WLScreenProcess(void)
((TYPE_CT_ENVELOPE == pEnvelopeInfo->envelopeType) || (TYPE_UCT_ENVELOPE == pEnvelopeInfo->envelopeType))) ((TYPE_CT_ENVELOPE == pEnvelopeInfo->envelopeType) || (TYPE_UCT_ENVELOPE == pEnvelopeInfo->envelopeType)))
{ {
ELM_LOG(ELM_LOG_FATAL,"info:ELM%d WLS Process,",pEnvelopeInfo->id); ELM_LOG(ELM_LOG_FATAL,"info:ELM%d WLS Process,",pEnvelopeInfo->id);
chTrainNvramPosFlag = GetTrainNvramPosFlag(cycle); if (LINE_MAX_TRAIN == pEnvelopeInfo->headTrainID)
if (TRAIN_NVRAM_POS_FLAG_NO == chTrainNvramPosFlag)
{ {
if (LINE_MAX_TRAIN == pEnvelopeInfo->headTrainID) ELM_LOG(ELM_LOG_FATAL," delete Head suspicious,");
{ (void)elm_SetEnvelopeHeadTrainID(pEnvelopeInfo->id,0u);
ELM_LOG(ELM_LOG_FATAL, " delete Head suspicious,");
(void)elm_SetEnvelopeHeadTrainID(pEnvelopeInfo->id, 0u);
}
else
{
/* 不处理 */
}
if (LINE_MAX_TRAIN == pEnvelopeInfo->tailTrainID)
{
ELM_LOG(ELM_LOG_FATAL, " delete Tail suspicious,");
(void)elm_SetEnvelopeTailTrainID(pEnvelopeInfo->id, 0u);
}
else
{
/* 不处理 */
}
} }
else else
{ {
ELM_LOG(ELM_LOG_FATAL, " not finish suspicious,because use nvram pos"); /* 不处理 */
} }
ELM_LOG(ELM_LOG_FATAL, "\n"); if (LINE_MAX_TRAIN == pEnvelopeInfo->tailTrainID)
{
ELM_LOG(ELM_LOG_FATAL," delete Tail suspicious,");
(void)elm_SetEnvelopeTailTrainID(pEnvelopeInfo->id,0u);
}
else
{
/* 不处理 */
}
ELM_LOG(ELM_LOG_FATAL,"\n");
} }
} }
else else
@@ -1990,15 +1990,16 @@ static UINT8 elm_UCTEnvelopeHeadHandle(UINT8 endlineFlag, IN const EnvelopeStruc
/** 不添加前端可疑 */ /** 不添加前端可疑 */
funRtn = elm_SetEnvelopeHeadTrainID(ptemp->id, pPretemp->headTrainID); funRtn = elm_SetEnvelopeHeadTrainID(ptemp->id, pPretemp->headTrainID);
ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x00002000u); ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x00002000u);
/** 则更新车头位置 */
funRtn = elm_SetUCTEnvelopeDot(ELM_HEAD, ptemp->ACID[ptemp->ACCnt - 1u], ptemp);
ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x00000800u);
} }
else else
{ {
funRtn = elm_DeleteCTOrUCTEnvelope(ptemp->id); funRtn = elm_SetEnvelopeHeadTrainID(ptemp->id, LINE_MAX_TRAIN);
ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x00000400u); ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x00001000u);
} }
/** 则更新车头位置 */
funRtn = elm_SetUCTEnvelopeDot(ELM_HEAD, ptemp->ACID[ptemp->ACCnt - 1u], ptemp);
ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x00000800u);
} }
ret = 0x55u; ret = 0x55u;
} }
@@ -2270,8 +2271,7 @@ static UINT8 elm_UCTEnvelopeHeadMoving(const EnvelopeStruct *ptemp)
UINT8 includeCnt = 0u; UINT8 includeCnt = 0u;
UINT16 includeELMid[TRAIN_SUM_MAX_IN_OC] = {0u}; /** 重合的包络id */ UINT16 includeELMid[TRAIN_SUM_MAX_IN_OC] = {0u}; /** 重合的包络id */
UINT8 cHeadDirChangeFlag = DIRECTIONPOINT_FLAG_INVALID; /*包络头方向变化点标志*/ UINT8 cHeadDirChangeFlag = DIRECTIONPOINT_FLAG_INVALID; /*包络头方向变化点标志*/
const EnvelopeStruct* pPretemp = NULL;
UINT16 wInputAcId = 0U;
/** 入口参数校验 */ /** 入口参数校验 */
ASSERT_RET_VALUE(NULL == ptemp,ret,0x80000000u); ASSERT_RET_VALUE(NULL == ptemp,ret,0x80000000u);
@@ -2383,30 +2383,7 @@ static UINT8 elm_UCTEnvelopeHeadMoving(const EnvelopeStruct *ptemp)
if (0u == errorCode) if (0u == errorCode)
{ {
endLineFlag = (0u == acSameCnt) ? CI_SUCCESS : CI_ERROR; endLineFlag = (0u == acSameCnt) ? CI_SUCCESS : CI_ERROR;
wInputAcId = acSameID[0U]; funRtn = elm_UCTEnvelopeHeadHandle(endLineFlag,ptemp,acSameID[0u],preEnvelope, cHeadDirChangeFlag);
pPretemp = elm_GetEnvelopeInfoPtr(preEnvelope);
if (NULL != pPretemp)
{
for (cycle = 0U; cycle < pPretemp->ACCnt; cycle++)
{
if (ptemp->ACID[ptemp->ACCnt - 1U] == pPretemp->ACID[cycle])
{
wInputAcId = ptemp->ACID[ptemp->ACCnt - 1U];
break; /*前方包络与本包络终点处于同一计轴区段,停止遍历*/
}
else
{
/*继续遍历查找*/
}
}
}
else
{
/*不处理*/
}
/*若前方包络位于本包络终点计轴区段,则使用本包络终点计轴区段作为入参,否则使用本包络终点前方计轴区段作为入参*/
funRtn = elm_UCTEnvelopeHeadHandle(endLineFlag,ptemp, wInputAcId,preEnvelope, cHeadDirChangeFlag);
ASSER_ERROR(CI_ERROR == funRtn,errorCode,0x00400000u); ASSER_ERROR(CI_ERROR == funRtn,errorCode,0x00400000u);
if (CI_ERROR != funRtn) if (CI_ERROR != funRtn)
@@ -2657,17 +2634,17 @@ static UINT8 elm_UCTEnvelopeTailHandle(UINT8 endlineFlag, const EnvelopeStruct *
if (0x55u == funRtn) if (0x55u == funRtn)
{ {
funRtn = elm_SetEnvelopeTailTrainID(ptemp->id, pBacktemp->tailTrainID); /** 不添加前端可疑 */
ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x00002000u);
/** 则更新车尾位置 */
funRtn = elm_SetUCTEnvelopeDot(ELM_TAIL, ptemp->ACID[0u], ptemp);
ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x00001000u);
} }
else else
{ {
funRtn = elm_DeleteCTOrUCTEnvelope(ptemp->id); funRtn = elm_SetEnvelopeTailTrainID(ptemp->id, LINE_MAX_TRAIN);
ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x00000800u); ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x00002000u);
} }
/** 则更新车尾位置 */
funRtn = elm_SetUCTEnvelopeDot(ELM_TAIL, ptemp->ACID[0u], ptemp);
ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x00001000u);
} }
ret = 0x55u; ret = 0x55u;
} }
@@ -2939,8 +2916,6 @@ static UINT8 elm_UCTEnvelopeTailMoving(const EnvelopeStruct *ptemp)
UINT8 includeCnt = 0u; UINT8 includeCnt = 0u;
UINT16 includeELMid[TRAIN_SUM_MAX_IN_OC] = {0u}; /** 重合的包络id */ UINT16 includeELMid[TRAIN_SUM_MAX_IN_OC] = {0u}; /** 重合的包络id */
UINT8 cTailDirChangeFlag = DIRECTIONPOINT_FLAG_INVALID; /*包络尾方向变化点标志*/ UINT8 cTailDirChangeFlag = DIRECTIONPOINT_FLAG_INVALID; /*包络尾方向变化点标志*/
const EnvelopeStruct* pBacktemp = NULL;
UINT16 wInputAcId = 0U;
/** 入口参数校验 */ /** 入口参数校验 */
ASSERT_RET_VALUE(NULL == ptemp,ret,0x80000000u); ASSERT_RET_VALUE(NULL == ptemp,ret,0x80000000u);
@@ -3053,32 +3028,8 @@ static UINT8 elm_UCTEnvelopeTailMoving(const EnvelopeStruct *ptemp)
if (0u == errorCode) if (0u == errorCode)
{ {
endLineFlag = (0u == acConvertCnt) ? CI_SUCCESS : CI_ERROR; endLineFlag = (0u == acConvertCnt) ? CI_SUCCESS : CI_ERROR;
wInputAcId = acConvertID[0U]; funRtn = elm_UCTEnvelopeTailHandle(endLineFlag,ptemp,acConvertID[0u],backEnvelope, cTailDirChangeFlag);
pBacktemp = elm_GetEnvelopeInfoPtr(backEnvelope); ASSER_ERROR(CI_ERROR == funRtn,errorCode,0x00400000u);
if (NULL != pBacktemp)
{
for (cycle = 0U; cycle < pBacktemp->ACCnt; cycle++)
{
if (ptemp->ACID[0U] == pBacktemp->ACID[cycle])
{
wInputAcId = ptemp->ACID[0U];
break; /*后方包络与本包络起点处于同一计轴区段,停止遍历*/
}
else
{
/*继续遍历查找*/
}
}
}
else
{
/*不处理*/
}
/*若后方包络位于本包络起点计轴区段,则使用本包络起点计轴区段作为入参,否则使用本包络起点后方计轴区段作为入参*/
funRtn = elm_UCTEnvelopeTailHandle(endLineFlag, ptemp, wInputAcId, backEnvelope, cTailDirChangeFlag);
ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x00400000u);
if (CI_ERROR != funRtn) if (CI_ERROR != funRtn)
{ {
@@ -3305,7 +3256,6 @@ static UINT8 elm_ConvertToUCTCheck(const EnvelopeStruct* ptemp)
UINT8 chCanUct = FLAG_SET; UINT8 chCanUct = FLAG_SET;
UINT32 minTrainLength = 0U; UINT32 minTrainLength = 0U;
UINT32 dwTempLength = 0U; UINT32 dwTempLength = 0U;
UINT8 chTrainNvramPosFlag = 0U;
/** 入口参数校验 */ /** 入口参数校验 */
ASSERT_RET_VALUE(NULL == ptemp,ret,0x80000000U); ASSERT_RET_VALUE(NULL == ptemp,ret,0x80000000U);
@@ -3346,17 +3296,6 @@ static UINT8 elm_ConvertToUCTCheck(const EnvelopeStruct* ptemp)
{ {
; /* 不满足转为UCT条件 */ ; /* 不满足转为UCT条件 */
} }
if (0U == errorCode)
{
/** 获取列车是否使用NVRAM位置 */
chTrainNvramPosFlag = GetTrainNvramPosFlag(ptemp->trainID[0U]);
ASSER_ERROR(TRAIN_NVRAM_POS_FLAG_NO != chTrainNvramPosFlag, errorCode, 0x04000000U);
}
else
{
; /* 不满足转为UCT条件 */
}
/** 设置函数返回值 */ /** 设置函数返回值 */
ASSERT_SETRET(0U == errorCode,ret,CI_SUCCESS,CI_ERROR); ASSERT_SETRET(0U == errorCode,ret,CI_SUCCESS,CI_ERROR);
File diff suppressed because it is too large Load Diff
+8 -219
View File
@@ -44,10 +44,8 @@
#include "../WashMachine/WashMachineConfigDataManage.h" #include "../WashMachine/WashMachineConfigDataManage.h"
#include "../WashMachine/WashMachineDataManage.h" #include "../WashMachine/WashMachineDataManage.h"
#include "../ParsePack/ParsePackOcData.h" #include "../ParsePack/ParsePackOcData.h"
#include "../OHL/OHLDataManage.h"
#include "ReverseCutDataManage.h" #include "ReverseCutDataManage.h"
#include "ReverseCutConfigDataManage.h" #include "ReverseCutConfigDataManage.h"
#include "../SsksLightRelay/SsksLightRelayDefine.h"
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
@@ -97,8 +95,8 @@ UINT8 GetSignalShowColor(const UINT16 signalId);
/* /*
* 功能描述: 信号机双系板卡故障,信号机当前设置颜色 * 功能描述: 信号机双系板卡故障,信号机当前设置颜色
* 参数说明: * 参数说明:
UINT16 signalId:信号机id UINT16 signalId:信号机id
UINT8 ocId OC ID UINT8 ocId OC ID
* 返回值 信号机颜色 * 返回值 信号机颜色
*/ */
UINT8 GetOcBoardFaultSignalColor(UINT16 signalId, UINT8 ocId); UINT8 GetOcBoardFaultSignalColor(UINT16 signalId, UINT8 ocId);
@@ -271,7 +269,6 @@ void FloodGateDeviceToRelayStateProc(void);
* 功能描述: 更新进路的调车同意逻辑状态 * 功能描述: 更新进路的调车同意逻辑状态
* 参数说明: void * 参数说明: void
* 返回值 void * 返回值 void
* BY CGH 20250523
*/ */
void RouteDCTYRelayToDeviceStateProc(void); void RouteDCTYRelayToDeviceStateProc(void);
@@ -685,14 +682,13 @@ void DetZfsCancelBtnPressStateProc(const UINT16 wSignalId, const UINT16 wCancelD
void DetZfsCancelBtnActFlagProc(const UINT16 wSignalId, const UINT16 wCancelDetBtnRelayId); void DetZfsCancelBtnActFlagProc(const UINT16 wSignalId, const UINT16 wCancelDetBtnRelayId);
/* /*
* 功能描述:驱动自复式扣车相关指示灯 * 功能描述:驱动自复式扣车指示灯
* 参数说明:const UINT16 signalId 信号机ID * 参数说明:const UINT16 signalId, 信号机ID
* const UINT16 signalDetDisRelayId 扣车表示灯继电器ID * const UINT16 signalDetainDisplayId, 扣车表示灯继电器1ID
* const UINT16 signalDetCutDisRelayId 扣车旁路表示灯继电器 * 返回值:无
* 返 回 值:无 *
* Modified By LQ 2025.07.03
*/ */
void DriveZfsDetainBsRelay(const UINT16 signalId, const UINT16 signalDetDisRelayId, const UINT16 signalDetCutDisRelayId); void DriveZfsDetainBsRelay(const UINT16 signalId, const UINT16 signalDetainDisplayId);
/* /*
* 功能描述:自复式紧急停车按钮处理 * 功能描述:自复式紧急停车按钮处理
@@ -760,43 +756,6 @@ UINT8 CheckRelayDriveOutTime(const UINT16 wRelayId, const UINT32 dwTimeOutCycCou
*/ */
void SGBJDriveOutputProc(void); void SGBJDriveOutputProc(void);
/*
* 功能描述:SSKS闪灯稳灯输出处理
* 参数说明:void
* 返 回 值:void
* Created By LQ 2025.12.16
*/
void SsksFlashSteadyLightOutputProc(void);
/*
* 功能描述:SSKS关联驶入存车线进路标志处理
* 参数说明:UINT16 wRelayId SSKS闪灯稳灯继电器ID
* UINT8 cEnterRouteNum 驶入存车线进路数量
* UINT16 szEnterRouteId[SSKS_LIGHT_RELAY_ROUTE_MAX] 驶入存车线进路ID数组
* 返 回 值:void
* Created By LQ 2025.12.16
*/
void SsksRelEnterRouteFlagProc(UINT16 wRelayId, UINT8 cEnterRouteNum, UINT16 szEnterRouteId[SSKS_LIGHT_RELAY_ROUTE_MAX]);
/*
* 功能描述:检查进路内方最后一个物理区段的上一个区段是否空闲且解锁
* 参数说明:UINT16 wRouteId 进路ID
* 返 回 值:0 失败(区段锁闭或占用)
* 1 成功(区段未锁闭且空闲)
* Created By LQ 2026.03.11
*/
UINT8 CheckRouteLastPSUnlockAndIdle(UINT16 wRouteId);
/*
* 功能描述:SSKS关联驶出存车线进路标志处理
* 参数说明:UINT16 wRelayId SSKS闪灯稳灯继电器ID
* UINT8 cExportRouteNum 驶出存车线进路数量
* UINT16 szExportRouteId[SSKS_LIGHT_RELAY_ROUTE_MAX] 驶出存车线进路ID数组
* 返 回 值:void
* Created By LQ 2025.12.16
*/
void SsksRelExportRouteFlagProc(UINT16 wRelayId, UINT8 cExportRouteNum, UINT16 szExportRouteId[SSKS_LIGHT_RELAY_ROUTE_MAX]);
/* /*
* 功能描述: 设置继电器驱动起始周期 * 功能描述: 设置继电器驱动起始周期
* 参数说明: const UINT16 relayId 继电器ID * 参数说明: const UINT16 relayId 继电器ID
@@ -894,176 +853,6 @@ UINT8 GetSwitchCollToleratePos(const UINT16 switchId);
*/ */
UINT8 CheckSwitchCollTolerateState(UINT16 switchId); UINT8 CheckSwitchCollTolerateState(UINT16 switchId);
/*
* 功能描述:宁象市域铁路紧急停车按钮处理
* 参数说明:UINT16 esbId ESB ID
* 返 回 值:无
* Created By LQ 2025.03.28
*/
void EsbNXRailBtnProc(UINT16 esbId);
/*
* 功能描述:宁象市域铁路紧急停车取消按钮处理
* 参数说明:UINT16 esbId ESB ID
* 返 回 值:无
* Created By LQ 2025.03.28
*/
void EsbNXRailCancelBtnProc(UINT16 esbId);
/*
* 功能描述:宁象市域铁路紧急停车取消按钮有效标志处理
* 参数说明:const UINT16 wEsbId ESB ID
* const UINT16 wCancelEsbRelayId ESB取消按钮采集继电器ID
* 返回值 :无
* Created By LQ 2025.03.30
*/
void EsbNXRailCancelBtnValidFlagProc(const UINT16 wEsbId, const UINT16 wCancelEsbRelayId);
/*
* 功能描述:宁象市域铁路紧急停车旁路按钮处理
* 参数说明:UINT16 esbId ESB ID
* 返 回 值:无
* Created By LQ 2025.03.30
*/
void EsbNXRailCutBtnProc(UINT16 esbId);
/*
* 功能描述:宁象市域铁路紧急停车旁路按钮按下状态处理
* 参数说明:const UINT16 wEsbId ESB ID
* const UINT16 wCutEsbRelayId 紧急旁路按钮采集继电器ID
* 返回值 :无
* Created By LQ 2025.03.30
*/
void EsbNXRailCutBtnPressStateProc(const UINT16 wEsbId, const UINT16 wCutEsbRelayId);
/*
* 功能描述:宁象市域铁路ESB指示灯和ESB旁路指示灯输出处理
* 参数说明:const UINT16 wEsbId ESB ID
* 返 回 值:无
* Created By LQ 2025.03.30
*/
void EsbNXRailDisplayDrivOutput(const UINT16 wEsbId);
/*
* 功能描述:屏蔽门异常打开处理
* 参数说明:无
* 返 回 值:无
* Created By LQ 2025.05.23
*/
void PsdExceptOpenProc(void);
/*
* 功能描述:自复式扣车旁路按钮处理
* 参数说明:const UINT16 signalId 信号机ID
* 返 回 值:无
* Created By LQ 2025.06.20
*/
void SignalZfsDetainCutBtnPro(const UINT16 signalId);
/*
* 功能描述:自复式扣车旁路按钮按下状态处理
* 参数说明:const UINT16 wSignalId 信号机ID
* const UINT16 wDetCutBtnRelayId 扣车旁路按钮采集继电器ID
* 返 回 值:无
* Created By LQ 2025.06.20
*/
void ZfsDetCutBtnPressStateProc(const UINT16 wSignalId, const UINT16 wDetCutBtnRelayId);
/*
* 功能描述:自复式扣车旁路按钮有效状态处理
* 参数说明:const UINT16 wSignalId 信号机ID
* const UINT16 wDetCutBtnRelayId 扣车旁路按钮采集继电器ID
* 返 回 值:无
* Created By LQ 2025.06.20
*/
void ZfsDetCutBtnValidStateProc(const UINT16 wSignalId, const UINT16 wDetCutBtnRelayId);
/*
* 功能描述:获取SPKS按钮采集容忍结果
* 参数说明:const UINT16 wSpksId SPKS编号
* 返 回 值:CI_ERROR 0 容忍结束
* CI_SUCCESS 1 继续容忍
* Created By LQ 2025.06.26
*/
UINT8 GetSpksBtnCollTolerateRet(const UINT16 wSpksId);
/*
* 功能描述:获取Psd门开继电器采集容忍结果
* 参数说明:const UINT16 wPsdId PSD编号
* 返 回 值:CI_ERROR 0 容忍结束
* CI_SUCCESS 1 继续容忍
* Created By LQ 2025.06.26
*/
UINT8 GetPsdRelayCollTolerateRet(const UINT16 wPsdId);
/*
* 功能描述:获取Esb采集容忍结果
* 参数说明:const UINT16 wEsbId ESB编号
* 返 回 值:CI_ERROR 0 容忍结束
* CI_SUCCESS 1 继续容忍
* Created By LQ 2025.06.26
*/
UINT8 GetEsbCollTolerateRet(const UINT16 wEsbId);
/*
* 功能描述:获取扣车按钮1采集容忍结果
* 参数说明:const UINT16 wSignalId 信号机编号
* 返 回 值:CI_ERROR 0 容忍结束
* CI_SUCCESS 1 继续容忍
* Created By LQ 2025.06.26
*/
UINT8 GetFstDetBtnCollTolerateRet(const UINT16 wSignalId);
/*
* 功能描述:获取扣车按钮2采集容忍结果
* 参数说明:const UINT16 wSignalId 信号机编号
* 返 回 值:CI_ERROR 0 容忍结束
* CI_SUCCESS 1 继续容忍
* Created By LQ 2025.06.26
*/
UINT8 GetSndDetBtnCollTolerateRet(const UINT16 wSignalId);
/*
* 功能描述: 更新接触网状态
* 参数说明: void
* 返回值
*/
void OhlRelayToDeviceStateProc(void);
/*
* 功能描述:迪士尼屏蔽门旁路按钮按下状态处理
* 参数说明:const UINT16 wPsbId ID
* const UINT16 wMutualLockRelayId 旁路按钮采集继电器ID
* 返回值 :无
* Created By fan 2025.12.17
*/
void PsdDsnPsdCutBtnPressStateProc(const UINT16 wPsdId, const UINT16 wMutualLockRelayId);
/*
* 功能描述: 处理迪士尼屏蔽门互锁解除继电器状态
* 参数说明: const UINT16 doorId, 屏蔽门ID
* Created By fan 2025.12.15
* 返回值
*/
void DsnPsdMutualLockStateUpdate(const UINT16 doorId);
/*
* 功能描述: 根据PSD状态更新区段的站台门异常打开封锁状态
* 参数说明: 无
* 返回值
* by fan 20260127
*/
void PsdRelayToSecFlockStatus(void);
/*
* 功能描述: 更新全线紧急停车逻辑状态
* 参数说明: void
* 返回值 0u: 更新失败
* 1: 更新成功
* Created By fan 2026.03.10
*/
void CesbStateUpdateProc(void);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
File diff suppressed because it is too large Load Diff
-31
View File
@@ -451,37 +451,6 @@ void LogRouteCleanOldPhySecLockProc(const UINT16 wPreRouteId);
*/ */
void OtherPartRouteCleanLogRouteProc(const UINT16 wCurRouteId); void OtherPartRouteCleanLogRouteProc(const UINT16 wCurRouteId);
/*
* 功能描述:处理OC->CI的PSD数据
* 参数说明: void
* 返回值 void
*/
void ProcessOCToCiPsdData(void);
/*
* 功能描述: 处理OC到CI的不一致继电器数据
* 参数说明: void
* 返回值 0:处理失败
* 1:处理成功
*/
void ProcessOcToCiRelayDiffData(void);
/*
* 功能描述:迪士尼试车线试车状态处理
* 参数说明:无
* 返 回 值:无
* Created By LQ 2026.01.23
*/
void DsnScxStateProc(void);
/*
* 功能描述:迪士尼试车线物理区段采集占用状态处理
* 参数说明:无
* 返 回 值:无
* Created By LQ 2026.01.23
*/
void DsnScxPhySecColOccProc(void);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
+6 -252
View File
@@ -21,7 +21,7 @@
#include "../RemoteRM/RRMDataPrepare.h" #include "../RemoteRM/RRMDataPrepare.h"
#include "NonAutoReturnDataManage.h" #include "NonAutoReturnDataManage.h"
#include "InputDataProcess.h" #include "InputDataProcess.h"
#include "../ECS/ECSDataManage.h"
/* /*
@@ -137,12 +137,6 @@ void OutputDataProcess(void)
/*声光报警器输出处理*/ /*声光报警器输出处理*/
SGBJDriveOutputProc(); SGBJDriveOutputProc();
/*SSKS闪灯稳灯输出处理*/
SsksFlashSteadyLightOutputProc();
/*道岔反位使能请求输出处理*/
SwitchReverseEnableDriveProc();
} }
else else
{ {
@@ -200,9 +194,6 @@ void OutputDataProcess(void)
/*无人折返继电器粘连状态处理*/ /*无人折返继电器粘连状态处理*/
RtnRealyAdhesionStatePro(); RtnRealyAdhesionStatePro();
/*ECS监督处理*/
EcsMonitorProc();
/*虚拟设备输出处理*/ /*虚拟设备输出处理*/
VirtualDeviceOutputProc(); VirtualDeviceOutputProc();
@@ -230,9 +221,6 @@ void OutputDataProcess(void)
/*更新照查联锁条件检查照查驱动*/ /*更新照查联锁条件检查照查驱动*/
UpdateZhaoChaCheckZhaoChaDrive(); UpdateZhaoChaCheckZhaoChaDrive();
/*联络线进路协议继电器驱动*/
RouteConnectPrtlRelayDriveProc();
/*设置驱动继电器混线状态*/ /*设置驱动继电器混线状态*/
SetDriveRelayHunXianState(); SetDriveRelayHunXianState();
@@ -399,10 +387,6 @@ UINT8 GetAtsBackInfoParam(const UINT8 functionId,const UINT8 deviceStateType, co
returnValue = CI_BACK_ROUTE_XUANPAI_OVERTIME;/*进路选排超时*/ returnValue = CI_BACK_ROUTE_XUANPAI_OVERTIME;/*进路选排超时*/
break; break;
case ETYPE_ROUTE_APPLY_SWITCH_MOVE:
returnValue = CI_BACK_SWT_MOVE; /*道岔单操中办理进路*/
break;
/*信号机故障反馈*/ /*信号机故障反馈*/
case ETYPE_SIG_START_OPEN_STATE: case ETYPE_SIG_START_OPEN_STATE:
if (SIGNAL_OPEN==deviceState ) if (SIGNAL_OPEN==deviceState )
@@ -599,10 +583,6 @@ UINT8 GetAtsBackInfoParam(const UINT8 functionId,const UINT8 deviceStateType, co
break; break;
} }
case ETYPE_SWT_WAIT_MOVE: /*等待道岔动作完成*/
returnValue = CI_BACK_SWT_WAIT_MOVE;
break;
/* zt 删除单轨相关代码 2022-02-15 */ /* zt 删除单轨相关代码 2022-02-15 */
/*继电器故障反馈*/ /*继电器故障反馈*/
@@ -918,42 +898,6 @@ UINT8 GetAtsBackInfoParam(const UINT8 functionId,const UINT8 deviceStateType, co
case ETYPE_OTHER_DOWNWASH_NOT_ALLOW_PASS: case ETYPE_OTHER_DOWNWASH_NOT_ALLOW_PASS:
returnValue = CI_BACK_WASH_PASS_ALLOW_NOT; /*洗车库/线未同意通过*/ returnValue = CI_BACK_WASH_PASS_ALLOW_NOT; /*洗车库/线未同意通过*/
break; break;
case ETYPE_LOGSEC_CONTINUOUS:
returnValue = CI_BACK_DYM_ROUTE_CONTINUOUS;
break;
case ETYPE_PART_ROUTE_RES:
returnValue = CI_BACK_DYM_ROUTE_RES;
break;
case ETYPE_PART_ROUTE_MATCH_ROUTE:
returnValue = CI_BACK_DYM_ROUTE_MATCH_ROUTE;
break;
case ETYPE_PART_ROUTE_SCREEN:
returnValue = CI_BACK_DYM_ROUTE_SCREEN;
break;
case ETYPE_LOGSEC_CBTC_PROPERTY:
returnValue = CI_BACK_DYM_ROUTE_SEC_CBTC;
break;
case ETYPE_PART_ROUTE_REPEAT:
returnValue = CI_BACK_DYM_ROUTE_REPEAT;
break;
case ETYPE_PART_ROUTE_SEC_ATTR:
returnValue = CI_BACK_DYM_ROUTE_SEC_ATTR;
break;
case ETYPE_PART_ROUTE_TRAIN_COMM:
returnValue = CI_BACK_DYM_ROUTE_TRAIN_COMM;
break;
case ETYPE_PART_ROUTE_TRAIN_POS:
returnValue = CI_BACK_DYM_ROUTE_TRAIN_POS;
break;
case ETYPE_LOGSEC_CT_OVERRIDE_FAIL:
returnValue = CI_BACK_OVERRIDE_CT_OCCUPY;
break;
case ETYPE_ROUTE_CONNECT_OVERRIME:
returnValue = CI_BACK_CONNECT_ROUTE_OVERRIME;
break;
case ETYPE_SWT_CONNECT_RET_FAIL:
returnValue = CI_BACK_CONNECT_SWITCH_RET_FAIL;
break;
default:/*数据错误*/ default:/*数据错误*/
returnValue = 0U; returnValue = 0U;
break; break;
@@ -972,18 +916,14 @@ CI_SUCCESS
*/ */
UINT8 CiToAtsBackInfoFunctionJudge(const UINT8 functionId,const UINT8 deviceType) UINT8 CiToAtsBackInfoFunctionJudge(const UINT8 functionId,const UINT8 deviceType)
{ {
UINT8 cRetVal = CI_ERROR; if ((functionId > 0u) && (deviceType>0u) )
if ((functionId > 0U) && (deviceType>0U))
{ {
cRetVal = CI_SUCCESS; return CI_SUCCESS;
} }
else else
{ {
cRetVal = CI_ERROR; return CI_ERROR;
} }
return cRetVal;
} }
@@ -1071,11 +1011,7 @@ void IndicatorStateProc(void)
UINT8 cCommAxisNum = 0U; /*与本控区具有通信关系的计轴子系统数量*/ UINT8 cCommAxisNum = 0U; /*与本控区具有通信关系的计轴子系统数量*/
UINT8* pAxisSysIdBuf = NULL; UINT8* pAxisSysIdBuf = NULL;
UINT8 mm = 0U; UINT8 mm = 0U;
UINT16 wCutRelayId = 0u;/*旁路继电器ID*/
UINT8 chCutRelayState = 0u;/*旁路状态*/
UINT8 chScxCesbState = 0U;/*试车线CESB状态*/
UINT8 chScxCesbCutState = 0U;/*试车线CESB旁路状态*/
dianshiLinshixiansuFlag = GetCiFunctionSwitchConfig(FUNC_DIANSHI_LINSHIXIANSU_FLAG); dianshiLinshixiansuFlag = GetCiFunctionSwitchConfig(FUNC_DIANSHI_LINSHIXIANSU_FLAG);
devCurSum = GetIndicatorCurSum(); /*获取指示器当前总数*/ devCurSum = GetIndicatorCurSum(); /*获取指示器当前总数*/
interfaceType = GetCiFunctionSwitchConfig(SCX_CLD_INTERFACE_TYPE);/*获取试车线与车辆段接口方式*/ interfaceType = GetCiFunctionSwitchConfig(SCX_CLD_INTERFACE_TYPE);/*获取试车线与车辆段接口方式*/
@@ -2188,118 +2124,6 @@ void IndicatorStateProc(void)
SetIndicatorState(devId, INDICATOR_SHOW_COMM_RED); SetIndicatorState(devId, INDICATOR_SHOW_COMM_RED);
} }
} }
else if (INDICATOR_TYPE_ALLSEC_FLOCK == devType)
{
chDevStateRtn = GetAllSecFlockState();
SetIndicatorState(devId, INDICATOR_SHOW_YES); /*初始化无封锁*/
if (ALLFLOCK_SET_YES == chDevStateRtn)
{
SetIndicatorState(devId, INDICATOR_SHOW_NO);
}
}
else if (INDICATOR_TYPE_SCX_SHD_ESS == devType)
{
devRelaySum = GetIndicatorRelaySum(devId); /*获取相关继电器总数*/
devRelayIdBuf = GetIndicatorRelayIdBuf(devId); /*获取相关继电器ID buf*/
if ((0U == devRelaySum) || (NULL == devRelayIdBuf))
{
SetIndicatorState(devId, INDICATOR_SHOW_YES); /*设置亮红灯*/
}
else
{
relayCollState = GetRelayCollState(devRelayIdBuf[0]);
if (RELAY_STATE_UP == relayCollState)
{
SetIndicatorState(devId, INDICATOR_SHOW_NO); /*ESS继电器吸起,试车中,设置亮绿灯*/
}
else
{
SetIndicatorState(devId, INDICATOR_SHOW_YES); /*ESS继电器落下,未试车,设置亮红灯*/
}
}
}
else if (INDICATOR_TYPE_CESB == devType)
{
/*旁路有效时发送旁路*/
chDevStateRtn = GetAllSecCesbState();/*CESB封锁设置状态*/
SetIndicatorState(devId, INDICATOR_CESB_INACTIVE_NOFLOCK); /*初始化未激活 无封锁*/
if (CI_TYPE_SCX == chLocalCiType)
{
/*试车线根据命令设置指示灯*/
chScxCesbState = GetScxCesbCmdState();
chScxCesbCutState = GetScxCesbCutCmdState();
if (ESB_CUT_YES == chScxCesbCutState)
{
if (CESB_STATE_VALID_NO == chDevStateRtn)
{
SetIndicatorState(devId, INDICATOR_CESB_CUT_NOFLOCK); /*设置CESB旁路有效 无封锁*/
}
else
{
SetIndicatorState(devId, INDICATOR_CESB_CUT_FLOCK); /*设置CESB旁路有效 存在封锁*/
}
}
else if (CESB_STATE_VALID_NO == chScxCesbState)
{
/*CESB未激活*/
if (CESB_STATE_VALID_NO == chDevStateRtn)
{
SetIndicatorState(devId, INDICATOR_CESB_INACTIVE_NOFLOCK); /*设置未激活 无封锁*/
}
else
{
SetIndicatorState(devId, INDICATOR_CESB_INACTIVE_FLOCK); /*设置未激活 存在封锁*/
}
}
else
{
/*未旁路、CESB激活*/
SetIndicatorState(devId, INDICATOR_CESB_ACTIVE_FLOCK); /*设置激活*/
}
}
else
{
wCutRelayId = GetCesbCutRelayId();
chCutRelayState = GetRelayCollState(wCutRelayId);/*旁路状态*/
RelayId = GetCesbRelayId();
relayCollState = GetRelayCollState(RelayId); /*继电器采集状态*/
if (0U != RelayId)
{
if (RELAY_STATE_UP == chCutRelayState)
{ /*旁路继电器吸起,旁路有效*/
if (CESB_STATE_VALID_NO == chDevStateRtn)
{
SetIndicatorState(devId, INDICATOR_CESB_CUT_NOFLOCK); /*设置CESB旁路有效 无封锁*/
}
else
{
SetIndicatorState(devId, INDICATOR_CESB_CUT_FLOCK); /*设置CESB旁路有效 存在封锁*/
}
}
else if (RELAY_STATE_UP == relayCollState)
{
/*吸起 CESB未激活*/
if (CESB_STATE_VALID_NO == chDevStateRtn)
{
SetIndicatorState(devId, INDICATOR_CESB_INACTIVE_NOFLOCK); /*设置未激活 无封锁*/
}
else
{
SetIndicatorState(devId, INDICATOR_CESB_INACTIVE_FLOCK); /*设置未激活 存在封锁*/
}
}
else
{
/*未旁路、CESB激活*/
SetIndicatorState(devId, INDICATOR_CESB_ACTIVE_FLOCK); /*设置激活*/
}
}
else
{
;/*未配置CESB继电器时,维持未激活无封锁*/
}
}
}
else else
{ {
/*不做处理*/ /*不做处理*/
@@ -7333,7 +7157,7 @@ void AddXiansuPhySecData(const UINT16 wLogSecId,const UINT16 wTrainId)
chPhySecFlockType = GetPhySecFLockType(wLogSecRelPhySecId); chPhySecFlockType = GetPhySecFLockType(wLogSecRelPhySecId);
chPhySecAreaUrgentState = GetPhySecAreaUrgentState(wLogSecRelPhySecId); chPhySecAreaUrgentState = GetPhySecAreaUrgentState(wLogSecRelPhySecId);
if (((PHYSICAL_SECTION_FLOCK_YES == chPhySecFlockState) && (SEC_FLOCK_TYPE_CMD == (SEC_FLOCK_TYPE_CMD & chPhySecFlockType))) if (((PHYSICAL_SECTION_FLOCK_YES == chPhySecFlockState) && ((PHY_SEC_FLOCK_TYPE_CMD == chPhySecFlockType) || (PHY_SEC_FLOCK_TYPE_SPKSCMD == chPhySecFlockType)))
|| (PHYSEC_AREA_URGENT_YES == chPhySecAreaUrgentState)) || (PHYSEC_AREA_URGENT_YES == chPhySecAreaUrgentState))
{ {
chAddFlag = CI_SUCCESS; chAddFlag = CI_SUCCESS;
@@ -8714,73 +8538,3 @@ void RtnRealyAdhesionStatePro(void)
} }
} }
/*
* ECS监督处理
*
*
* Created By LQ 2026.01.26
*/
void EcsMonitorProc(void)
{
UINT16 wEcsNum = 0U; /*ECS数量*/
UINT16 ii = 0U;
UINT16 wEcsId = 0U; /*ECS ID*/
UINT8 cLocalCiId = 0U;
UINT8 cEcsBelongCiId = 0U; /*ECS所属CI*/
UINT8 cEcsAutoTrigState = 0U; /*ECS监督状态*/
UINT16 wFanUpRelayId = 0U; /*风向为逻辑正方向的继电器ID*/
UINT16 wFanDownRelayId = 0U; /*风向为逻辑反方向的继电器ID*/
UINT16 wRelTrainId = 0U; /*ECS关联列车ID*/
UINT16 wBufIndex = 0U;
cLocalCiId = GetSystemParaLocalCiId();
wEcsNum = GetEcsCurSum();
for (ii = 0U; ii < wEcsNum; ii++)
{
wEcsId = GetEcsId(ii);
cEcsBelongCiId = GetEcsBelongCiId(wEcsId);
if (cEcsBelongCiId == cLocalCiId)
{
wFanUpRelayId = GetEcsRelFanUpRelayId(wEcsId); /*获取控制风机方向的继电器ID*/
wFanDownRelayId = GetEcsRelFanDownRelayId(wEcsId);
cEcsAutoTrigState = GetEcsAutoTrigState(wEcsId);
if (ECS_AUTOTRIG_YES == cEcsAutoTrigState)
{
/*ECS自动触发启用时,需要周期监督隧道内的拥堵状态,进而驱动相应的继电器吸起/落下*/
/*1.更新ECS隧道关联的列车ID(该列车ID用于判断隧道内是通信车还是非通信车)*/
UpdateEcsRelTrain(wEcsId);
/*2.监督ECS隧道内的停车状态*/
wRelTrainId = GetEcsRelTrainId(wEcsId); /*获取ECS关联列车ID*/
wBufIndex = GetTrainBufIndex(wRelTrainId);
if (TRAIN_SUM_MAX > wBufIndex)
{
/*关联列车ID有效,隧道内存在通信车,按照通信车监督隧道列车停车状态*/
MonitorEcsTrainByCommTrain(wEcsId);
}
else
{
/*关联列车ID无效,隧道内不存在通信车,按照非通信车监督隧道列车停车状态*/
MonitorEcsTrainByBadTrain(wEcsId);
}
/*3.更新ECS隧道拥堵状态*/
UpdateEcsJamState(wEcsId);
/*4.根据ECS隧道拥堵状态,设置继电器驱动状态*/
EcsFanRelayDriveProc(wEcsId);
}
else
{
/*ESC自动触发停用时,需要周期设置控制风机方向的继电器落下,其它相关状态已在ATS命令处理时清除*/
(void)SetRelayDriveState(wFanUpRelayId, RELAY_DRIVE_STATE_DOWN);
(void)SetRelayDriveState(wFanDownRelayId, RELAY_DRIVE_STATE_DOWN);
}
}
else
{
/*非本控区ECS,不处理*/
}
}
}
@@ -456,14 +456,6 @@ UINT8 FindRouteLeaveAxis(const UINT16 routeId);
*/ */
void RtnRealyAdhesionStatePro(void); void RtnRealyAdhesionStatePro(void);
/*
* ECS监督处理
*
*
* Created By LQ 2026.01.26
*/
void EcsMonitorProc(void);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
@@ -18,7 +18,7 @@ UINT16 LocalCiIndicatorIdBuf[INDICATOR_SUM_MAX] = {0u};/*
INT16 IndicatorCurSum = 0; /*指示器当前总数*/ INT16 IndicatorCurSum = 0; /*指示器当前总数*/
OCStationIndicConfigDataStru g_OCStationIndicConfigDataStru[INDICATOR_SUM_MAX] = { 0u }; OCStationIndicConfigDataStru g_OCStationIndicConfigDataStru[INDICATOR_SUM_MAX] = { 0u };
UINT16 g_OCStationIndicatorCurSum = 0; /*本联锁OC站(集中站和非集中站)指示器总数,不涉及主备跟随,取值范围 [0,2000) 暂无使用*/ UINT16 g_OCStationIndicatorCurSum = 0; /*本联锁OC站(集中站和非集中站)指示器总数,不涉及主备跟随,取值范围0-1000*/
@@ -455,46 +455,5 @@ UINT8 GetIndicatorRelNonReturnId(UINT16 indicatorId)
/*入参检查失败,返回失败*/ /*入参检查失败,返回失败*/
} }
return wRetVal;
}
/*
* ID
* UINT8 cDevType
* 0
* ID
* Created By LQ 2026.01.23
*/
UINT16 GetIndicatorIdByDevType(UINT8 cDevType)
{
UINT16 wRetVal = 0U;
UINT16 wDevCurSum = 0U; /*表示灯总数*/
UINT16 ii = 0U;
UINT16 wDevId = 0U; /*表示灯ID*/
UINT8 cIndicatorType = 0U; /*表示灯类型*/
if (0U != cDevType)
{
wDevCurSum = GetIndicatorCurSum(); /*获取指示器当前总数*/
for (ii = 0U; ii < wDevCurSum; ii++)
{
wDevId = GetIndicatorId(ii); /*获取表示灯ID*/
cIndicatorType = GetIndicatorType(wDevId); /*获取表示灯类型*/
if (cDevType == cIndicatorType)
{
wRetVal = wDevId;
break; /*找到目标类型,停止遍历*/
}
else
{
/*继续遍历查找*/
}
}
}
else
{
/*入参非法,返回0*/
}
return wRetVal; return wRetVal;
} }
@@ -185,15 +185,6 @@ UINT8 GetIndicatorDevId(UINT16 indicatorId);
*/ */
UINT8 GetIndicatorRelNonReturnId(UINT16 indicatorId); UINT8 GetIndicatorRelNonReturnId(UINT16 indicatorId);
/*
* ID
* UINT8 cDevType
* 0
* ID
* Created By LQ 2026.01.23
*/
UINT16 GetIndicatorIdByDevType(UINT8 cDevType);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
+1 -10
View File
@@ -14,7 +14,7 @@
/*总数最大值*/ /*总数最大值*/
#define INDICATOR_SUM_MAX ((UINT16)2000) /*指示器最大数量,每个联锁40个指示灯,总共按20个联锁 */ #define INDICATOR_SUM_MAX ((UINT16)1000) /*指示器最大数量,每个联锁40个指示灯,总共按20个联锁 */
#define INDICATOR_RELAY_SUM_MAX ((UINT16)5) /*指示器相关继电器最大数量*/ #define INDICATOR_RELAY_SUM_MAX ((UINT16)5) /*指示器相关继电器最大数量*/
#define RTNINDICATOR_SUM_MAX ((UINT8)2U) /*一个虚拟联锁集中区无人折返最大数量*/ #define RTNINDICATOR_SUM_MAX ((UINT8)2U) /*一个虚拟联锁集中区无人折返最大数量*/
@@ -132,9 +132,6 @@
#define INDICATOR_TYPE_RELAY_HUNXIAN ((UINT8)0x92) /*继电器混线表示灯*/ #define INDICATOR_TYPE_RELAY_HUNXIAN ((UINT8)0x92) /*继电器混线表示灯*/
#define INDICATOR_TYPE_AUTORTN_ADHESION ((UINT8)0x62) /*无人折返按钮粘连状态指示灯*/ #define INDICATOR_TYPE_AUTORTN_ADHESION ((UINT8)0x62) /*无人折返按钮粘连状态指示灯*/
#define INDICATOR_TYPE_COMM_AXIS ((UINT8)0x96) /*与计轴通信状态:1-所有计轴通信正常;3-存在计轴通信异常*/ #define INDICATOR_TYPE_COMM_AXIS ((UINT8)0x96) /*与计轴通信状态:1-所有计轴通信正常;3-存在计轴通信异常*/
#define INDICATOR_TYPE_ALLSEC_FLOCK ((UINT8)0x65) /*全线区段封锁指示灯*/
#define INDICATOR_TYPE_CESB ((UINT8)0x98) /*CESB指示灯*/
#define INDICATOR_TYPE_SCX_SHD_ESS ((UINT8)0x97U) /*迪士尼试车线SHD-ESS状态表示灯*/
/*指示灯显示状态*/ /*指示灯显示状态*/
@@ -184,12 +181,6 @@
#define INDICATOR_SHOW_SC_NO ((UINT8)0x55) /*试车指示灯显示无效*/ #define INDICATOR_SHOW_SC_NO ((UINT8)0x55) /*试车指示灯显示无效*/
#define INDICATOR_SHOW_SC_YES ((UINT8)0xaa) /*试车指示灯显示有效*/ #define INDICATOR_SHOW_SC_YES ((UINT8)0xaa) /*试车指示灯显示有效*/
#define INDICATOR_CESB_INACTIVE_NOFLOCK ((UINT8)0x01) /* CESB未激活未封锁*/
#define INDICATOR_CESB_INACTIVE_FLOCK ((UINT8)0x02) /* CESB未激活且封锁*/
#define INDICATOR_CESB_ACTIVE_FLOCK ((UINT8)0x03) /* CESB激活且封锁*/
#define INDICATOR_CESB_CUT_FLOCK ((UINT8)0x04) /* CESB旁路且封锁*/
#define INDICATOR_CESB_CUT_NOFLOCK ((UINT8)0x05) /* CESB旁路且未封锁*/
#define INDIC_POWER_I_1 ((UINT8)0x01) /*一路电源1*/ #define INDIC_POWER_I_1 ((UINT8)0x01) /*一路电源1*/
#define INDIC_POWER_I_2 ((UINT8)0x02) /*一路电源2*/ #define INDIC_POWER_I_2 ((UINT8)0x02) /*一路电源2*/
#define INDIC_POWER_II_1 ((UINT8)0x03) /*二路电源1*/ #define INDIC_POWER_II_1 ((UINT8)0x03) /*二路电源1*/
+11 -442
View File
@@ -129,9 +129,6 @@ UINT8 InitAllStaticDataStr(void)
/*声光报警器配置数据结构体*/ /*声光报警器配置数据结构体*/
chRtn &= CommonMemSet(SGBJConfigDataStru, (UINT32)(SGBJ_SUM_MAX * sizeof(SGBJConfigDataStruct)), 0u, (UINT32)(SGBJ_SUM_MAX * sizeof(SGBJConfigDataStruct))); chRtn &= CommonMemSet(SGBJConfigDataStru, (UINT32)(SGBJ_SUM_MAX * sizeof(SGBJConfigDataStruct)), 0u, (UINT32)(SGBJ_SUM_MAX * sizeof(SGBJConfigDataStruct)));
/*ECS配置数据结构体*/
chRtn &= CommonMemSet(ECSConfigDataStru, (UINT32)(ECS_MAX_NUM * sizeof(ECSConfigDataStruct)), (UINT8)0U, (UINT32)(ECS_MAX_NUM * sizeof(ECSConfigDataStruct)));
return chRtn; return chRtn;
} }
@@ -158,7 +155,7 @@ UINT8 ReadConfigureData(void)
UINT8 CiPattern = 0u; UINT8 CiPattern = 0u;
UINT8 chInitAllStaticDataStrRtn = 0u; UINT8 chInitAllStaticDataStrRtn = 0u;
UINT8 RtnTemp = 0u; UINT8 RtnTemp = 0u;
initAllRet = InitAll((const)DataPath); initAllRet = InitAll((const)DataPath);
@@ -670,6 +667,7 @@ UINT8 ReadConfigureData(void)
; /*不处理*/ ; /*不处理*/
} }
if (0u == rtnVal) if (0u == rtnVal)
{ {
InvSecSum = ReadInvaSectionConfigData(LocalCiId, InvSecConfigDataStru); /*读侵入区段配置数据*/ InvSecSum = ReadInvaSectionConfigData(LocalCiId, InvSecConfigDataStru); /*读侵入区段配置数据*/
@@ -774,44 +772,6 @@ UINT8 ReadConfigureData(void)
; /*不处理*/ ; /*不处理*/
} }
/*读SSKS闪灯稳灯继电器配置数据*/
if (0U == rtnVal)
{
gSsksLightRelaySum = ReadSsksLightRelayCfgData(LocalCiId, gSsksLightRelayCfgStr);
if (-1 == gSsksLightRelaySum)
{
rtnVal = 40U; /*读取SSKS闪灯稳灯继电器配置数据失败*/
debug_infor_printf((const)"\nReadSsksLightRelayCfgData fail.\n");
}
else
{
; /*不处理*/
}
}
else
{
; /*不处理*/
}
/*读联络线旁路继电器配置数据*/
if (0U == rtnVal)
{
gConnectOverrideRelaySum = ReadConnectOverrideCfgData(LocalCiId, gConnectOverrideRelayCfgStr);
if (-1 == gConnectOverrideRelaySum)
{
rtnVal = 46U; /*读取联络线旁路继电器配置数据失败*/
debug_infor_printf((const)"\nReadConnectOverrideCfgData fail.\n");
}
else
{
; /*不处理*/
}
}
else
{
; /*不处理*/
}
/*读声光报警器配置数据*/ /*读声光报警器配置数据*/
if (0u == rtnVal) if (0u == rtnVal)
{ {
@@ -830,56 +790,6 @@ UINT8 ReadConfigureData(void)
{ {
; /*不处理*/ ; /*不处理*/
} }
if (0u == rtnVal)
{
OhlCurSum = ReadOhlConfigData(LocalCiId, OhlConfigDataStru);
if (-1 == OhlCurSum)
{
rtnVal = 39U;/*读取接触网数据失败*/
debug_infor_printf((const)"ReadOhlConfigData fail.");
}
else
{
; /*不处理*/
}
}
else
{
; /*不处理*/
}
if (0U == rtnVal)
{
ECSCurSum = ReadEcsConfigData(LocalCiId, ECSConfigDataStru);
if (-1 == ECSCurSum)
{
rtnVal = 43U;/*读取ECS数据失败*/
debug_infor_printf((const)"\nReadEcsConfigData fail.\n");
}
else
{
; /*不处理*/
}
}
else
{
; /*不处理*/
}
if (0U == rtnVal)
{
RtnTemp = ReadLocalCesbConfigData(LocalCiId, &LocalCesbConfigDataStru);
if (0U == RtnTemp)
{
rtnVal = 45U;/*读取CESB数据失败*/
debug_infor_printf((const)"\nReadCesbConfigData fail.\n");
}
else
{
; /*不处理*/
}
}
if (0u == rtnVal) if (0u == rtnVal)
{ {
@@ -1009,7 +919,7 @@ UINT8 ReadConfigureData(void)
g_ret = ReadEaConfigData(g_szEaConfig); g_ret = ReadEaConfigData(g_szEaConfig);
if (-1 == g_ret) if (-1 == g_ret)
{ {
rtnVal = 40u; rtnVal = 37u;
debug_infor_printf((const)"ReadEaConfigData errcode =%d, ReadEaConfigData", rtnVal); debug_infor_printf((const)"ReadEaConfigData errcode =%d, ReadEaConfigData", rtnVal);
} }
else else
@@ -1069,13 +979,7 @@ UINT8 ReadConfigureData(void)
if (CI_SUCCESS == retValue) if (CI_SUCCESS == retValue)
{ {
/*读取联络线数据*/ /*读取联络线数据*/
g_ret = OcConnectConfigDataToDevStruct(SignalConfigDataStru, g_ret = OcConnectConfigDataToDevStruct(SignalConfigDataStru, PhysicalSectionConfigDataStru, SwitchConfigDataStru, OcConnetDataCfgStru, RelayConfigDataStru);
PhysicalSectionConfigDataStru,
SwitchConfigDataStru,
OcConnetDataCfgStru,
RelayConfigDataStru,
RouteConfigDataStru,
LogicSectionConfigDataStru);
if (-1 == g_ret) if (-1 == g_ret)
{ {
rtnVal = 35u; rtnVal = 35u;
@@ -1137,7 +1041,7 @@ UINT8 ReadConfigureData(void)
if (0 == g_ret) if (0 == g_ret)
{ {
debug_infor_printf((const)"PhySectionNearConfigDataManage Error\n"); debug_infor_printf((const)"PhySectionNearConfigDataManage Error\n");
rtnVal = 41u; rtnVal = 37u;
} }
else else
{ {
@@ -1148,87 +1052,6 @@ UINT8 ReadConfigureData(void)
{ {
; /*不处理*/ ; /*不处理*/
} }
if (0U == rtnVal)
{
/*读取物理区段在计轴中的索引*/
g_ret = (INT16)ReadPhySecIndexInAxle(LocalCiId, PhysicalSectionConfigDataStru);
if (0 == g_ret)
{
debug_infor_printf((const)"ReadPhySecIndexInAxle Error\n");
rtnVal = 42u;
}
else
{
; /*不处理*/
}
}
else
{
; /*不处理*/
}
if (0U == rtnVal)
{
/*ECS关联物理区段初始化*/
RtnTemp = EcsIncPhySecInfoInit(ECSConfigDataStru); /*需要在Link后面初始化*/
if (0U == RtnTemp)
{
rtnVal = 44U; /*ECS关联物理区段初始化失败*/
debug_infor_printf((const)"\nEcsIncPhySecInfoInit fail.\n");
}
else
{
; /*不处理*/
}
}
else
{
; /*不处理*/
}
if (0u == rtnVal)
{
/*迪士尼联络线逻辑区段继电器条件读取*/
retValue = OcConnectLogSecCondInit();
if (1u == retValue)
{
ConnectLogSecCondRelayInit(ConnectLogSecCondCfgStru, LogicSectionConfigDataStru);
}
else
{
rtnVal = 47u;
debug_infor_printf((const)"OcConnectLogSecCondInit errcode =%d, OcConnectLogSecCondInit", rtnVal);
}
}
if (0u == rtnVal)
{
/*迪士尼共用道岔的逻辑区段整理*/
retValue = InitLogSecSwitchShareStatusByPhysec();
if (0U == retValue)
{
rtnVal = 48U;
debug_infor_printf((const)"\InitLogSecSwitchShareStatusByPhysec fail.\n");
}
else
{
; /*不处理*/
}
}
if (0u == rtnVal)
{
retValue = InitSpeedLimitSecConfigData();
if (0U == retValue)
{
rtnVal = 49U;
debug_infor_printf((const)"\InitSpeedLimitSecConfigData fail.\n");
}
else
{
; /*不处理*/
}
}
} }
else else
{ {
@@ -1425,33 +1248,6 @@ UINT8 DeviceDataManage(void)
} }
} }
if (0U == rtValue)
{
reval = OhlConfigDataManage();
if (CI_ERROR == reval)
{
rtValue = 1u;
}
}
if (0U == rtValue)
{
/*读取本地ECS ID*/
reval = EcsConfigDataManage();
if (CI_ERROR == reval)
{
rtValue = 1U;
}
else
{
/*返回成功*/
}
}
else
{
/*返回失败*/
}
return rtValue; return rtValue;
} }
/* /*
@@ -1484,8 +1280,7 @@ UINT8 SetautoRouteOpposedRoute(UINT16 autoRouteRouteId,UINT8 routeType)
autoRouteSum = GetAutoRouteRouteCurSum();/*自动进路数目*/ autoRouteSum = GetAutoRouteRouteCurSum();/*自动进路数目*/
autoReturnSum = GetAutoReturnRouteCurSum();/*自动折返进路数目*/ autoReturnSum = GetAutoReturnRouteCurSum();/*自动折返进路数目*/
allAutoReturnSum = GetAllAutoReturnRouteCurSum();/*全自动折返进路数目*/ allAutoReturnSum = GetAllAutoReturnRouteCurSum();/*全自动折返进路数目*/
if ((AUTO_ROUTE_SUM_MAX <= autoRouteSum) || (AUTO_RETURN_SUM_MAX<=autoReturnSum ) if ((autoRouteSum >= AUTO_ROUTE_SUM_MAX) || (autoReturnSum >= AUTO_RETURN_SUM_MAX))
||(ALL_AUTO_RETURN_SUM_MAX <= allAutoReturnSum))
{/*配置数据总数错误*/ {/*配置数据总数错误*/
returnValue = CI_ERROR; returnValue = CI_ERROR;
} }
@@ -2107,26 +1902,18 @@ UINT8 CheckCiHaveZcSumErr(const UINT8 ciId)
* OcConnetDataCfgStruct* pConnectCfgData 线 * OcConnetDataCfgStruct* pConnectCfgData 线
* RelayConfigDataStruct* pRelayCfgData * RelayConfigDataStruct* pRelayCfgData
* 0-1 * 0-1
* NOTE * NOTE£º¼¯³Ébug YF0083-224
*/ */
INT8 OcConnectConfigDataToDevStruct(SignalConfigDataStruct* pSignalCfgData, INT8 OcConnectConfigDataToDevStruct(SignalConfigDataStruct* pSignalCfgData, PhysicalSectionConfigDataStruct* pPhyCfgData, SwitchConfigDataStruct* pSwitchCfgData, OcConnetDataCfgStruct* pConnectCfgData, RelayConfigDataStruct* pRelayCfgData)
PhysicalSectionConfigDataStruct* pPhyCfgData,
SwitchConfigDataStruct* pSwitchCfgData,
OcConnetDataCfgStruct* pConnectCfgData,
RelayConfigDataStruct* pRelayCfgData,
RouteConfigDataStruct *pRouteCfgData,
LogicSectionConfigDataStruct *pLogSecCfgData)
{ {
/*变量初始化*/ /*变量初始化*/
UINT16 i = 0u; UINT16 i = 0u;
UINT16 j = 0u; UINT16 j = 0u;
UINT16 k = 0u; UINT16 k = 0u;
UINT16 m = 0U; UINT16 m = 0U;
UINT16 n = 0U;
INT8 retValue = -1; INT8 retValue = -1;
if ((NULL != pSignalCfgData) && (NULL != pPhyCfgData) && (NULL != pSwitchCfgData) if ((NULL != pSignalCfgData) && (NULL != pPhyCfgData) && (NULL != pSwitchCfgData) && ((NULL != pConnectCfgData)))
&& (NULL != pConnectCfgData) && (NULL != pRelayCfgData) && (NULL != pRouteCfgData) && (NULL != pLogSecCfgData))
{ {
retValue = 0; retValue = 0;
for (i = 0u; i < OcConnetDataDevNum; i++) for (i = 0u; i < OcConnetDataDevNum; i++)
@@ -2228,68 +2015,11 @@ INT8 OcConnectConfigDataToDevStruct(SignalConfigDataStruct* pSignalCfgData,
pSwitchCfgData[j].DsHRelayId = pConnectCfgData[i].OcConnetRelayDataBuf[k].RelayId; pSwitchCfgData[j].DsHRelayId = pConnectCfgData[i].OcConnetRelayDataBuf[k].RelayId;
pSwitchCfgData[j].DsDrvHRelayId = pConnectCfgData[i].OcConnetRelayDataBuf[k].DrvRelayId; pSwitchCfgData[j].DsDrvHRelayId = pConnectCfgData[i].OcConnetRelayDataBuf[k].DrvRelayId;
} }
/*BYPASS*/ /*PYPASS*/
else if (SWITCH_BYPASSJ_TYPE == pConnectCfgData[i].OcConnetRelayDataBuf[k].RelayType) else if (SWITCH_BYPASSJ_TYPE == pConnectCfgData[i].OcConnetRelayDataBuf[k].RelayType)
{ {
pSwitchCfgData[j].ByPassRelayId = pConnectCfgData[i].OcConnetRelayDataBuf[k].RelayId; pSwitchCfgData[j].ByPassRelayId = pConnectCfgData[i].OcConnetRelayDataBuf[k].RelayId;
} }
/*反位使能请求RWM*/
else if (SWITCH_RWM_TYPE == pConnectCfgData[i].OcConnetRelayDataBuf[k].RelayType)
{
pSwitchCfgData[j].RwmRelayId = pConnectCfgData[i].OcConnetRelayDataBuf[k].DrvRelayId;
/*给迪士尼联络线进路添加关键道岔,遍历所有进路*/
for (m = 0u; m < ROUTE_SUM_MAX; m++)
{
/*判断迪士尼联络线进路类型*/
if ((ROUTE_DISNEY_CONNECT_ENDMINE == pRouteCfgData[m].cDisneyConnectRouteAttr)
|| (ROUTE_DISNEY_CONNECT_STARTMINE == pRouteCfgData[m].cDisneyConnectRouteAttr))
{
/*后半段属于本线,或者前半段属于本线,遍历所有道岔*/
for (n = 0u; n < (UINT16)pRouteCfgData[m].RouteSwitchSum; n++)
{
/*判断道岔ID是否为当前RWM继电器对应道岔ID*/
if (pRouteCfgData[m].RouteSwitchStru[n].SwitchId == pSwitchCfgData[j].SwitchId)
{
/*道岔ID一致,赋值联络线关键道岔ID*/
pRouteCfgData[m].wRelConnectSwitchId = pSwitchCfgData[j].SwitchId;
break;
}
else
{
/*继续遍历*/
}
}
}
else
{
/*类型不满足,无需添加关键道岔,继续遍历*/
}
}
for (m = 0u; m < LOGIC_SECTION_SUM_MAX; m++)
{
for (n = 0u; n < pLogSecCfgData[m].chLogsecSwitchSum; n++)
{
if ((pLogSecCfgData[m].LogsecSwitchIdStru[n].SwitchId == pSwitchCfgData[j].SwitchId)
&& (SWITCH_POSITION_FANWEI == pLogSecCfgData[m].LogsecSwitchIdStru[n].SwitchPosition))
{
/*逻辑区段反位包含该继电器,记录联络线道岔ID*/
pLogSecCfgData[m].wConnectSwticthId = pSwitchCfgData[j].SwitchId;
break;
}
else
{
/*继续遍历*/
}
}
}
}
/*反位使能旁路ENABLE BYPASS*/
else if (SWITCH_ENABLE_BYPASS_TYPE == pConnectCfgData[i].OcConnetRelayDataBuf[k].RelayType)
{
pSwitchCfgData[j].EnableBypassRelayId = pConnectCfgData[i].OcConnetRelayDataBuf[k].RelayId;
}
else else
{ {
/*不做处理*/ /*不做处理*/
@@ -2357,6 +2087,7 @@ INT8 OcConnectConfigDataToDevStruct(SignalConfigDataStruct* pSignalCfgData,
return(retValue); return(retValue);
} }
/********************************************* /*********************************************
*OC 线 *OC 线
*void *void
@@ -2436,132 +2167,6 @@ UINT8 OcConnectConfigDataStructInit(void)
return(rtnValue); return(rtnValue);
} }
/*********************************************
*线
*void
*10
*********************************************/
UINT8 OcConnectLogSecCondInit(void)
{
UINT8 funcRtn = 0u;
UINT8* pDataAddr = NULL; /*数据地址*/
UINT32 DataSize = 0u; /*数据大小(字节数)*/
UINT16 i = 0u;
UINT16 j = 0u;
UINT16 realRowCount = 0u; /*实际表数据的行数*/
UINT8 rtnValue = 0u;
/*读取数据*/
/*读取 默认行车序列 数据*/
funcRtn = dquGetConfigDataNew((const)DataPath, OC_DATA_TYPE, CONNECT_LOGSEC_COND_ID, &pDataAddr, &DataSize, &realRowCount);
if (0u == funcRtn)
{
/*函数调用失败*/
rtnValue = 1u;
debug_infor_printf((const)"\nCONNECT_LOGSEC_COND_ID NO IN FS\n");
}
else
{
rtnValue = 1u;
/*数据正常*/
if ((0u != DataSize) && (0u != realRowCount))
{
if (0u != (DataSize % realRowCount))
{
debug_infor_printf((const)"\n OC_DATA_TYPE,CONNECT_LOGSEC_COND_ID len %d %d not equal to fs\n", DataSize, realRowCount);
DebugPrintAppError(ERROR_fs_columns_len_not_equal_to_ci_software, CI_DEVICE_TYPE_FS_TABLE, ((UINT32)CI_DATA_TYPE << 8) + CONNECT_LOGSEC_COND_ID, PRINT_ONCE);
rtnValue = 0u;
}
else
{
/*填写设备数量*/
ConnectLogSecCondDevNum = realRowCount;
/*内存先设为无效*/
(void)CommonMemSet(ConnectLogSecCondCfgStru, sizeof(ConnectLogSecDataCfgStru) *OC_CONNECT_LOGSEC_COND_SUM_MAX,
0x00u, sizeof(ConnectLogSecDataCfgStru) *OC_CONNECT_LOGSEC_COND_SUM_MAX);
for (i = 0u; i < realRowCount; i++)
{
if (OC_CONNECT_LOGSEC_COND_SUM_MAX > i)
{
ConnectLogSecCondCfgStru[i].LogSecId = dquCiShortFromChar(pDataAddr);
pDataAddr += 2u;
ConnectLogSecCondCfgStru[i].RelSecDirLockRelayId = ShortFromChar(pDataAddr);
pDataAddr += 2u;
ConnectLogSecCondCfgStru[i].RelRoutePrtlRelayId = ShortFromChar(pDataAddr);
pDataAddr += 2u;
}
else
{
/*无操作*/
}
}
}
}
else
{
/*不做处理*/
}
}
return(rtnValue);
}
/*
* 线
* ConnectLogSecDataCfgStru *pConnectLogSecCondCfgStru 线
* LogicSectionConfigDataStruct *pLogicSectionConfigDataStru
* 0-1
* NOTEbug YF0083-224
*/
INT8 ConnectLogSecCondRelayInit(ConnectLogSecDataCfgStru *pConnectLogSecCondCfgStru,
LogicSectionConfigDataStruct *pLogicSectionConfigDataStru)
{
/*变量初始化*/
UINT16 i = 0u; /*循环变量*/
UINT16 j = 0u; /*循环变量*/
INT8 retValue = -1; /*返回值*/
if ((NULL != pConnectLogSecCondCfgStru) && (NULL != pLogicSectionConfigDataStru))
{
retValue = 0;
for (i = 0u; i < ConnectLogSecCondDevNum; i++)
{
for (j = 0u; j < LOGIC_SECTION_SUM_MAX; j++)
{
if (pLogicSectionConfigDataStru[j].LogicSectionId == pConnectLogSecCondCfgStru[i].LogSecId)
{
pLogicSectionConfigDataStru[j].wRelSecDirLockRelayId = pConnectLogSecCondCfgStru[i].RelSecDirLockRelayId;
pLogicSectionConfigDataStru[j].wRelRoutePrtlRelayId = pConnectLogSecCondCfgStru[i].RelRoutePrtlRelayId;
break;
}
else
{
/*继续遍历*/
}
}
if (LOGIC_SECTION_SUM_MAX == j)
{
/*联络线逻辑区段继电器条件表配置的逻辑区段未在电子地图找到,返回失败*/
retValue = -1;
break;
}
else
{
/*继续遍历*/
}
}
}
else
{
/*返回失败*/
retValue = -1;
}
return(retValue);
}
/********************************************* /*********************************************
* *
*UINT32* pConfigDataAdderBuf ,UINT16 pConfigDataLenBuf ,UINT16 wBufMaxLen数组容量 *UINT32* pConfigDataAdderBuf ,UINT16 pConfigDataLenBuf ,UINT16 wBufMaxLen数组容量
@@ -3821,40 +3426,4 @@ UINT16 GetTiocDeviceConfigData(UINT32* pConfigDataAddrBuf,UINT16* pConfigDataLen
return wRetSum; return wRetSum;
}
/*********************************************
*CI与指定设备通信关系配置数据
*const UINT8 chCiId ID
* const UINT8 chSystemType
* UINT8 szDeviceIdBuf[TRANSMIT_OBJECT_DEVICE_SUM_MAX] ID
*
* by cgh 20250605
*********************************************/
UINT8 ReadCiTransmitSpecifyDevData(const UINT8 chCiId, const UINT8 chSystemType, UINT8 szDeviceIdBuf[TRANSMIT_OBJECT_DEVICE_SUM_MAX])
{
UINT16 ii = 0U;
UINT8 chReval = 0U;
if ((0U != chCiId) && (NULL != szDeviceIdBuf))
{
for (ii = 0U; ii < dquCICfgDtStr.TrsmtRlsDtStrLen; ii++)
{
if ((chCiId == dquCICfgDtStr.TrsmtRlsDtStr[ii].CiId) && (chSystemType == dquCICfgDtStr.TrsmtRlsDtStr[ii].SystemType))
{
chReval = dquCICfgDtStr.TrsmtRlsDtStr[ii].DeviceSum;
(void)CommonMemCpy((void*)(szDeviceIdBuf), (UINT32)(sizeof(UINT8) * TRANSMIT_OBJECT_DEVICE_SUM_MAX), (const void*)(dquCICfgDtStr.TrsmtRlsDtStr[ii].DeviceIdBuf), (UINT32)(sizeof(UINT8) * TRANSMIT_OBJECT_DEVICE_SUM_MAX));
}
else
{
;
}
}
}
else
{
chReval = UINT8_MAX;
}
return chReval;
} }
@@ -142,13 +142,6 @@ UINT8 CheckCiHaveZcSumErr(const UINT8 ciId);
*********************************************/ *********************************************/
UINT8 OcConnectConfigDataStructInit(void); UINT8 OcConnectConfigDataStructInit(void);
/*********************************************
*线
*void
*10
*********************************************/
UINT8 OcConnectLogSecCondInit(void);
/* /*
* 线 * 线
* SignalConfigDataStruct* pSignalCfgData * SignalConfigDataStruct* pSignalCfgData
@@ -159,23 +152,7 @@ UINT8 OcConnectLogSecCondInit(void);
* 0-1 * 0-1
* NOTEbug YF0083-224 * NOTEbug YF0083-224
*/ */
INT8 OcConnectConfigDataToDevStruct(SignalConfigDataStruct* pSignalCfgData, INT8 OcConnectConfigDataToDevStruct(SignalConfigDataStruct* pSignalCfgData, PhysicalSectionConfigDataStruct* pPhyCfgData, SwitchConfigDataStruct* pSwitchCfgData, OcConnetDataCfgStruct* pConnectCfgData, RelayConfigDataStruct* pRelayCfgData);
PhysicalSectionConfigDataStruct* pPhyCfgData,
SwitchConfigDataStruct* pSwitchCfgData,
OcConnetDataCfgStruct* pConnectCfgData,
RelayConfigDataStruct* pRelayCfgData,
RouteConfigDataStruct* pRouteCfgData,
LogicSectionConfigDataStruct* pLogSecCfgData);
/*
* 线
* ConnectLogSecDataCfgStru *pConnectLogSecCondCfgStru 线
* LogicSectionConfigDataStruct *pLogicSectionConfigDataStru
* 0-1
* NOTE
*/
INT8 ConnectLogSecCondRelayInit(ConnectLogSecDataCfgStru *pConnectLogSecCondCfgStru,
LogicSectionConfigDataStruct *pLogicSectionConfigDataStru);
/********************************************* /*********************************************
* *
@@ -183,18 +160,6 @@ INT8 ConnectLogSecCondRelayInit(ConnectLogSecDataCfgStru *pConnectLogSecCondCfgS
* *
*********************************************/ *********************************************/
UINT16 GetTiocDeviceConfigData(UINT32* pConfigDataAddrBuf, UINT16* pConfigDataLenBuf, UINT16 wBufMaxLen); UINT16 GetTiocDeviceConfigData(UINT32* pConfigDataAddrBuf, UINT16* pConfigDataLenBuf, UINT16 wBufMaxLen);
/*********************************************
*CI与指定设备通信关系配置数据
*const UINT8 chCiId ID
* const UINT8 chSystemType
* UINT8 szDeviceIdBuf[TRANSMIT_OBJECT_DEVICE_SUM_MAX] ID
*
* by cgh 20250605
*********************************************/
UINT8 ReadCiTransmitSpecifyDevData(const UINT8 chCiId, const UINT8 chSystemType, UINT8 szDeviceIdBuf[TRANSMIT_OBJECT_DEVICE_SUM_MAX]);
#endif #endif
+35 -303
View File
@@ -20,7 +20,6 @@
#include "NonAutoReturnConfigDataManage.h" #include "NonAutoReturnConfigDataManage.h"
#include "../Deployment/DeploymentExtern.h" #include "../Deployment/DeploymentExtern.h"
#include "NonAutoReturnDataManage.h" #include "NonAutoReturnDataManage.h"
#include "../ECS/ECSDataManage.h"
/****************************初始化动态数据队列********************************************/ /****************************初始化动态数据队列********************************************/
extern TransmitRelationDataStruct TransmitRelaDataStru[TRANSMIT_OBJECT_SUM_MAX]; /*引用已定义通信关系数据结构体*/ extern TransmitRelationDataStruct TransmitRelaDataStru[TRANSMIT_OBJECT_SUM_MAX]; /*引用已定义通信关系数据结构体*/
@@ -449,12 +448,6 @@ UINT8 InitialProcess(void)
ret = InitAxleToCiDataStru(); ret = InitAxleToCiDataStru();
} }
if (CI_SUCCESS == ret)
{
ret = InitAxisSecClassData();
}
if (CI_SUCCESS == ret) if (CI_SUCCESS == ret)
{/*cgh-合并CID-3037-3*/ {/*cgh-合并CID-3037-3*/
/*初始化中央联锁结构体*/ /*初始化中央联锁结构体*/
@@ -463,26 +456,6 @@ UINT8 InitialProcess(void)
ret = InitialOCStationIndicStaData(); ret = InitialOCStationIndicStaData();
} }
if (CI_SUCCESS == ret)
{
/*初始化SSKS闪灯稳灯继电器动态数据*/
ret = InitSsksLightRelayData();
}
else
{
/*不处理*/
}
if (CI_SUCCESS == ret)
{
/*初始化联络线旁路继电器动态数据*/
ret = InitConnectOverrideData();
}
else
{
/*不处理*/
}
if (CI_SUCCESS == ret) if (CI_SUCCESS == ret)
{ {
/*初始化无人折返指示灯状态数据*/ /*初始化无人折返指示灯状态数据*/
@@ -499,33 +472,6 @@ UINT8 InitialProcess(void)
{/*初始化LEU数据*/ {/*初始化LEU数据*/
(void)InitLEUDataStru(); (void)InitLEUDataStru();
} }
if (CI_SUCCESS == ret)
{/*初始化接触网数据*/
(void)InitOhlDataStru();
}
if (CI_SUCCESS == ret)
{
/*初始化ECS数据*/
(void)InitialEcsData();
}
else
{
/*返回失败*/
}
if (CI_SUCCESS == ret)
{
/*初始化限速区段数据*/
(void)InitTSRSecInfo();
}
else
{
/*返回失败*/
}
/*初始化设备打印数据*/ /*初始化设备打印数据*/
(void)RecordDeviceDataLog(CI_ERROR); (void)RecordDeviceDataLog(CI_ERROR);
@@ -640,7 +586,6 @@ UINT8 InitialSignalData(void)
SignalDataStru[signalId].DetainBtnErrFlag = SIGNAL_ZFS_BTN_ERR_FLAG_NO; /*扣车按钮故障标志*/ SignalDataStru[signalId].DetainBtnErrFlag = SIGNAL_ZFS_BTN_ERR_FLAG_NO; /*扣车按钮故障标志*/
SignalDataStru[signalId].CancelDetainBtnErrFlag = SIGNAL_ZFS_BTN_ERR_FLAG_NO; /*取消扣车按钮故障标志*/ SignalDataStru[signalId].CancelDetainBtnErrFlag = SIGNAL_ZFS_BTN_ERR_FLAG_NO; /*取消扣车按钮故障标志*/
SignalDataStru[signalId].DetainBtnPressCycNum = 0U; /*扣车按钮1按下周期*/ SignalDataStru[signalId].DetainBtnPressCycNum = 0U; /*扣车按钮1按下周期*/
SignalDataStru[signalId].DetainSndBtnPressCycNum = 0U; /*扣车按钮2按下周期*/
SignalDataStru[signalId].CancelDetainBtnPressCycNum = 0U; /*取消扣车按钮正常按下周期*/ SignalDataStru[signalId].CancelDetainBtnPressCycNum = 0U; /*取消扣车按钮正常按下周期*/
SignalDataStru[signalId].CancelDetainErrTrigPressCycNum = 0U; /*取消扣车按钮误触发按下周期*/ SignalDataStru[signalId].CancelDetainErrTrigPressCycNum = 0U; /*取消扣车按钮误触发按下周期*/
SignalDataStru[signalId].CancelDetainBtnValidFlag = SIGNAL_CANCEL_DETAIN_VALID_NO; /*取消扣车按钮有效标志*/ SignalDataStru[signalId].CancelDetainBtnValidFlag = SIGNAL_CANCEL_DETAIN_VALID_NO; /*取消扣车按钮有效标志*/
@@ -649,14 +594,9 @@ UINT8 InitialSignalData(void)
SignalDataStru[signalId].VobcCroSigInPhyOccSta = SECTION_OCCUPY_NO; /*初始化信号机内方第一区段为空闲,当占压后再给ZC组确认信息*/ SignalDataStru[signalId].VobcCroSigInPhyOccSta = SECTION_OCCUPY_NO; /*初始化信号机内方第一区段为空闲,当占压后再给ZC组确认信息*/
SignalDataStru[signalId].cSleepTrainLightUpFlag = SIGNAL_SLEEP_TRAIN_LIGHTUP_NO; /*初始化休眠车点亮信号机标志无效*/ SignalDataStru[signalId].cSleepTrainLightUpFlag = SIGNAL_SLEEP_TRAIN_LIGHTUP_NO; /*初始化休眠车点亮信号机标志无效*/
SignalDataStru[signalId].cInHumidRailFlag = SIGNAL_IN_HUMID_RAIL_NO; SignalDataStru[signalId].cInHumidRailFlag = SIGNAL_IN_HUMID_RAIL_NO;
SignalDataStru[signalId].cDetCutBtnState = SIGNAL_DETAIN_CUT_VALID_NO; /*扣车旁路按钮状态*/
SignalDataStru[signalId].DetCutBtnPressCycNum = 0U; /*扣车旁路按钮正常按下周期*/
SignalDataStru[signalId].DetCutBtnErrTrigPressCycNum = 0U; /*扣车旁路按钮误触发按下周期*/
SignalDataStru[signalId].cDetCutBtnErrFlag = SIGNAL_ZFS_BTN_ERR_FLAG_NO; /*扣车旁路按钮故障标志*/
SignalDataStru[signalId].cDetCutBtnRelayDownState = SIGNAL_RELAY_ERROR_DOWN_YES; /*扣车旁路按钮采集继电器落下状态初始化为异常落下*/
/*初始化信号机临时限速状态有效*/ /*初始化信号机临时限速状态有效*/
SignalDataStru[signalId].LinShiXianSuSetFlag = SIGNAL_LINSHIXIANSUSET_STATE_YES;/*临时限速有效*/ SignalDataStru[signalId].LinShiXianSuSetFlag = SIGNAL_LINSHIXIANSUSET_STATE_YES;/*临时限速有效*/
SignalDataStru[signalId].cTrainCrossRedSignalFlag = SIGNAL_TRAIN_CROSS_RED_NO; /*初始化闯红灯标志无效*/
routeSum = GetRouteCurSum(); routeSum = GetRouteCurSum();
@@ -824,7 +764,6 @@ UINT8 InitialSwitchData(void)
SwitchDataStru[switchId].SingleSwitchCurPosition = SWITCH_POSITION_SIKAI; SwitchDataStru[switchId].SingleSwitchCurPosition = SWITCH_POSITION_SIKAI;
SwitchDataStru[switchId].SwitchDrivePos = SWITCH_DRIVE_POS_INVALID; SwitchDataStru[switchId].SwitchDrivePos = SWITCH_DRIVE_POS_INVALID;
SwitchDataStru[switchId].SwitchExpDrvPos = SWITCH_DRIVE_POS_INVALID; SwitchDataStru[switchId].SwitchExpDrvPos = SWITCH_DRIVE_POS_INVALID;
SwitchDataStru[switchId].SwitchReverseEnable = SWITCH_DRIVE_POS_INVALID;
SwitchDataStru[switchId].switchPreExpDrvPos = SWITCH_DRIVE_POS_INVALID; SwitchDataStru[switchId].switchPreExpDrvPos = SWITCH_DRIVE_POS_INVALID;
SwitchDataStru[switchId].SwitMoveStartCycNum = 0u; SwitchDataStru[switchId].SwitMoveStartCycNum = 0u;
SwitchDataStru[switchId].SwitDriveStartCycNum = 0u; SwitchDataStru[switchId].SwitDriveStartCycNum = 0u;
@@ -854,9 +793,6 @@ UINT8 InitialSwitchData(void)
SwitchDataStru[switchId].SwitchCollTolerateCycNum = 0U; SwitchDataStru[switchId].SwitchCollTolerateCycNum = 0U;
SwitchDataStru[switchId].SwitchColPosition = SWITCH_POSITION_SIKAI; SwitchDataStru[switchId].SwitchColPosition = SWITCH_POSITION_SIKAI;
SwitchDataStru[switchId].switchFaultState = SWITCH_FAULT_STATE_YES; /*置为板卡故障*/ SwitchDataStru[switchId].switchFaultState = SWITCH_FAULT_STATE_YES; /*置为板卡故障*/
SwitchDataStru[switchId].switchNormalPosCycNum = 0u;
SwitchDataStru[switchId].switchUnusualLogSecFlag = SWITCH_UNUSUAL_INVALID;
SwitchDataStru[switchId].switchMutDrvCycNum = 0u;
/*初始化被防护锁闭的进路、保护区段、非进路数量及数组*/ /*初始化被防护锁闭的进路、保护区段、非进路数量及数组*/
for (jj=0; jj<SWITCH_MAX_PROTECT_LOCKED_NUM;jj++) for (jj=0; jj<SWITCH_MAX_PROTECT_LOCKED_NUM;jj++)
{ {
@@ -909,7 +845,6 @@ UINT8 InitialPhySectionData(void)
PhysicalSectionDataStru[ii].StopSteadyFlag = PHYSICAL_SECTION_STOPSTEADY_NO; PhysicalSectionDataStru[ii].StopSteadyFlag = PHYSICAL_SECTION_STOPSTEADY_NO;
PhysicalSectionDataStru[ii].SecColOccupyStartCycNum = 0u; PhysicalSectionDataStru[ii].SecColOccupyStartCycNum = 0u;
PhysicalSectionDataStru[ii].SecMergeOccupyStartCycNum = 0U;
PhysicalSectionDataStru[ii].SecCurOccupyStartCycNum = 0u; PhysicalSectionDataStru[ii].SecCurOccupyStartCycNum = 0u;
PhysicalSectionDataStru[ii].SecOccuToClearStartCycNum = 0u; PhysicalSectionDataStru[ii].SecOccuToClearStartCycNum = 0u;
PhysicalSectionDataStru[ii].AutoUnlockStartCycNum = 0u; PhysicalSectionDataStru[ii].AutoUnlockStartCycNum = 0u;
@@ -919,13 +854,10 @@ UINT8 InitialPhySectionData(void)
PhysicalSectionDataStru[ii].JumpLockState = PHYSICAL_SECTION_JUMP_LOCK_NO; PhysicalSectionDataStru[ii].JumpLockState = PHYSICAL_SECTION_JUMP_LOCK_NO;
PhysicalSectionDataStru[ii].SecJumpDelayUnlockStartCycNum = 0u; PhysicalSectionDataStru[ii].SecJumpDelayUnlockStartCycNum = 0u;
PhysicalSectionDataStru[ii].JumpLockDelayUnlockFlag = PHYSICAL_JUMPUNLOCK_DELAY_SET_NO; PhysicalSectionDataStru[ii].JumpLockDelayUnlockFlag = PHYSICAL_JUMPUNLOCK_DELAY_SET_NO;
PhysicalSectionDataStru[ii].FLockType = SEC_FLOCK_TYPE_NONE; PhysicalSectionDataStru[ii].FLockType = PHY_SEC_FLOCK_TYPE_NONE;
PhysicalSectionDataStru[ii].UtOrCtOccFlag = SECTION_OCCUPY_YES; PhysicalSectionDataStru[ii].UtOrCtOccFlag = SECTION_OCCUPY_YES;
PhysicalSectionDataStru[ii].UtOrCtOccuStartCycNum = 0u; PhysicalSectionDataStru[ii].UtOrCtOccuStartCycNum = 0u;
PhysicalSectionDataStru[ii].PhySecPreResetState = PHYSICAL_SECTION_PRE_RESET_NO; PhysicalSectionDataStru[ii].PhySecPreResetState = PHYSICAL_SECTION_PRE_RESET_NO;
PhysicalSectionDataStru[ii].chPreResetBack = PHY_RESET_BACK_RECIVE_YES;
PhysicalSectionDataStru[ii].chDirectResetRst = PHYSICAL_DIRECT_RESET_NO;
PhysicalSectionDataStru[ii].chDirectResetBack = PHY_RESET_BACK_RECIVE_YES;
PhysicalSectionDataStru[ii].JumpLockStateToZC = PHYSICAL_SECTION_JUMP_LOCK_NO; PhysicalSectionDataStru[ii].JumpLockStateToZC = PHYSICAL_SECTION_JUMP_LOCK_NO;
PhysicalSectionDataStru[ii].wPhyErrUnlockTime = 0U; PhysicalSectionDataStru[ii].wPhyErrUnlockTime = 0U;
PhysicalSectionDataStru[ii].cAreaUrgentBrakeState = PHYSEC_AREA_URGENT_NO; PhysicalSectionDataStru[ii].cAreaUrgentBrakeState = PHYSEC_AREA_URGENT_NO;
@@ -934,7 +866,6 @@ UINT8 InitialPhySectionData(void)
PhysicalSectionDataStru[ii].chPreABLTrainFlag = PHYSICAL_SECTION_ABLOCCUPY_DEFAULT; PhysicalSectionDataStru[ii].chPreABLTrainFlag = PHYSICAL_SECTION_ABLOCCUPY_DEFAULT;
PhysicalSectionDataStru[ii].dwAblTagSetCyc = 0U; PhysicalSectionDataStru[ii].dwAblTagSetCyc = 0U;
PhysicalSectionDataStru[ii].cPhySecInHumidRailFlag = PHYSEC_IN_HUMID_RAIL_NO; PhysicalSectionDataStru[ii].cPhySecInHumidRailFlag = PHYSEC_IN_HUMID_RAIL_NO;
PhysicalSectionDataStru[ii].dwMerOccToIdleStartCycNum = 0U;
} }
for (ii = 0u; ii < phySectionDataSum; ii++) for (ii = 0u; ii < phySectionDataSum; ii++)
@@ -1095,8 +1026,6 @@ UINT8 InitialLogicSectionData(void)
LogicSectionDataStru[logicSectionId].chLogicSpksFLockState = LOGIC_SECTION_SPKS_FLOCK_NO;/*仅用于ATS显示;逻辑区段不一定关联SPKS,如果初始化成封锁,无法获取SPKS状态,此逻辑区段会一直为封锁状态*/ LogicSectionDataStru[logicSectionId].chLogicSpksFLockState = LOGIC_SECTION_SPKS_FLOCK_NO;/*仅用于ATS显示;逻辑区段不一定关联SPKS,如果初始化成封锁,无法获取SPKS状态,此逻辑区段会一直为封锁状态*/
LogicSectionDataStru[logicSectionId].chAblRelLogSecUsableFlag = LOGIC_ABLNEAR_USE_FLAG_NO; /*初始化ABL接近逻辑区段可用标志*/ LogicSectionDataStru[logicSectionId].chAblRelLogSecUsableFlag = LOGIC_ABLNEAR_USE_FLAG_NO; /*初始化ABL接近逻辑区段可用标志*/
LogicSectionDataStru[logicSectionId].cRouteLeaveLogFlag = LOGSEC_LEAVE_LOGSEC_REPLY_NO; /*离去区段ABL列车检查不通过*/ LogicSectionDataStru[logicSectionId].cRouteLeaveLogFlag = LOGSEC_LEAVE_LOGSEC_REPLY_NO; /*离去区段ABL列车检查不通过*/
LogicSectionDataStru[logicSectionId].chLogSecProhibitFAOFlag = LOGSEC_PROHIBIT_FAO_NO; /*逻辑区段允许FAO运行*/
LogicSectionDataStru[logicSectionId].chLogSecFlockType = SEC_FLOCK_TYPE_NONE;/*未封锁*/
LogicSectionDataStru[logicSectionId].chLinShiXianSuSetSpeed = 0U; /*逻辑区段临时限速设置速度值*/ LogicSectionDataStru[logicSectionId].chLinShiXianSuSetSpeed = 0U; /*逻辑区段临时限速设置速度值*/
for (jj = 0U; jj < LOGIC_SECTION_RES_SUM_MAX; jj++) for (jj = 0U; jj < LOGIC_SECTION_RES_SUM_MAX; jj++)
{ {
@@ -1118,16 +1047,34 @@ UINT8 InitialLogicSectionData(void)
LogicSectionDataStru[logicSectionId].LogSecLogLockState = LOG_SECTION_LOGLOCK_NO; LogicSectionDataStru[logicSectionId].LogSecLogLockState = LOG_SECTION_LOGLOCK_NO;
} }
if (RC_WORK_MODE_TIOC == RcWorkMode)
if (RC_WORK_MODE_TIOC == RcWorkMode) /*RC工作模式为TIOC工作模式*/
{ {
/* 初始化逻辑区段未设置临时限速 */ /* 初始化逻辑区段未设置临时限速 */
for (ii = 0u; ii < logicSectionDataSum; ii++) for (ii = 0u; ii < logicSectionDataSum; ii++)
{ {
logicSectionId = GetLogicSecId(ii); logicSectionId = GetLogicSecId(ii);
LogicSectionDataStru[logicSectionId].LinShiXianSuSetFlag = LOGSEC_LSXS_SET_STATE_NO; if (FUNC_SWITCH_OFF == chTmcSwitch)
{
LogicSectionDataStru[logicSectionId].LinShiXianSuSetFlag = LOGSEC_LSXS_SET_STATE_NO;
}
else
{
LogicSectionDataStru[logicSectionId].LinShiXianSuSetFlag = LOGSEC_LSXS_SET_STATE_YES;
}
}
/* 初始化临时限速信息 */
SetTsrSum(0u);
if (FUNC_SWITCH_OFF == chTmcSwitch)
{
SetTsrSureFlag(CI_TSR_SURE_YES);
}
else
{
SetTsrSureFlag(CI_TSR_SURE_NO);
} }
} }
else if (RC_WORK_MODE_CI == RcWorkMode) else if (RC_WORK_MODE_CI == RcWorkMode)
{ {
/*RC工作模式为联锁工作模式*/ /*RC工作模式为联锁工作模式*/
@@ -1416,24 +1363,6 @@ UINT8 InitialPsdData(void)
/*视频清客驱动状态初始化为无效。关联列车ID清0*/ /*视频清客驱动状态初始化为无效。关联列车ID清0*/
PsdDataStru[psdId].chVideoQkDriveState = VIDEO_QK_DRIVE_STATE_INVALID; PsdDataStru[psdId].chVideoQkDriveState = VIDEO_QK_DRIVE_STATE_INVALID;
PsdDataStru[psdId].wVideoQkRelateVobcId = 0U; PsdDataStru[psdId].wVideoQkRelateVobcId = 0U;
/*屏蔽门故障隔离、被隔离、开关状态、开关门故障状态信息初始化*/
PsdDataStru[psdId].psdFaultQStataOne = UINT32_MAX;
PsdDataStru[psdId].psdFaultQStataTwo = UINT32_MAX;
PsdDataStru[psdId].psdDoorIStateOne = UINT32_MAX;
PsdDataStru[psdId].psdDoorIStateTwo = UINT32_MAX;
PsdDataStru[psdId].psdDoorsStateOne = UINT32_MAX;
PsdDataStru[psdId].psdDoorsStateTwo = UINT32_MAX;
PsdDataStru[psdId].psdOpenErrState = PSD_OPEN_CLOSE_ERROR;
PsdDataStru[psdId].psdCloseErrState = PSD_OPEN_CLOSE_ERROR;
PsdDataStru[psdId].cPsdExceptOpenState = PSD_EXCEPT_OPEN_YES; /*初始化为PSD异常打开*/
PsdDataStru[psdId].dwPsdRelayDownCycNum = 0U; /*PSD门关继电器落下起始周期*/
PsdDataStru[psdId].dwPsdMutualLockCollStartCyc = 0U; /*PSD旁路按钮按下起始周期*/
PsdDataStru[psdId].dwPsdMutualLockErrCollCyc = 0U;/*PSD旁路按钮误触发按下周期*/
PsdDataStru[psdId].dwPsdMutualLockStartCyc = 0U; /*PSD旁路起效周期*/
PsdDataStru[psdId].cPsdMutualLockBtnErrState = PSD_BTN_ERROR_FLAG_NO; /*屏蔽门互锁解除按钮故障状态*/
PsdDataStru[psdId].cPsdMutualLockBtnErrDownState = PSD_BTN_ERROR_FLAG_NO; /*屏蔽门互锁解除按钮故障落下状态*/
} }
reVal = CI_SUCCESS; reVal = CI_SUCCESS;
return reVal; return reVal;
@@ -1612,8 +1541,6 @@ UINT8 InitialRouteData(void)
RouteDataStru[routeId].NeedOpenNotTrueRepeatStartCount = 0u;/*需开放不满足时重开起始周期*/ RouteDataStru[routeId].NeedOpenNotTrueRepeatStartCount = 0u;/*需开放不满足时重开起始周期*/
RouteDataStru[routeId].DCQState = ROUTE_DCQ_NOT_REQUEST;/*无调车请求*/ RouteDataStru[routeId].DCQState = ROUTE_DCQ_NOT_REQUEST;/*无调车请求*/
RouteDataStru[routeId].DCTYState = ROUTE_DCT_NOT_AGREE; /*无调车同意*/ RouteDataStru[routeId].DCTYState = ROUTE_DCT_NOT_AGREE; /*无调车同意*/
RouteDataStru[routeId].dwDcAgreeBtnPressCycNum = 0U; /*调车同意按钮按下起始周期*/
RouteDataStru[routeId].chDcAgreeButtonErrState = ROUTE_DC_AGREE_BUTTON_OK; /*调车同意按钮未故障*/
RouteDataStru[routeId].CancleDelayflag = ROUTE_ZQX_DELAY_NO; /*取消进路无延时解锁*/ RouteDataStru[routeId].CancleDelayflag = ROUTE_ZQX_DELAY_NO; /*取消进路无延时解锁*/
RouteDataStru[routeId].AutoSigCancleState = AUTO_ROUTE_CANCLE_NO; /*自动信号取消状态为无效*/ RouteDataStru[routeId].AutoSigCancleState = AUTO_ROUTE_CANCLE_NO; /*自动信号取消状态为无效*/
RouteDataStru[routeId].CancleAutoSigCmd = AUTO_ROUTE_CANCLE_CMD_NO; /*设置自动信号取消命令无效*/ RouteDataStru[routeId].CancleAutoSigCmd = AUTO_ROUTE_CANCLE_CMD_NO; /*设置自动信号取消命令无效*/
@@ -1630,21 +1557,17 @@ UINT8 InitialRouteData(void)
RouteDataStru[routeId].ITSRouteApplyTrainIdBuf[k] = 0u; RouteDataStru[routeId].ITSRouteApplyTrainIdBuf[k] = 0u;
} }
/*cgh-合并CID-2539-10*/ /*cgh-合并CID-2539-10*/
RouteDataStru[routeId].OverlapNeedCIlockFlag = OVERLAPCILOCK_NO; /*保护区段联锁锁闭标志无效*/ RouteDataStru[routeId].OverlapNeedCIlockFlag = OVERLAPCILOCK_NO; /*保护区段联锁锁闭标志无效*/
RouteDataStru[routeId].OverlapLockProcFlag = OVERLAP_LOCK_PROC_NO; /*保护区段不在锁闭过程中*/ RouteDataStru[routeId].OverlapLockProcFlag = OVERLAP_LOCK_PROC_NO; /*保护区段不在锁闭过程中*/
RouteDataStru[routeId].GroupRouteCmdFlag = ROUTE_GROUPROUTE_CMD_NO; /*进路不存在组合进路命令标志*/ RouteDataStru[routeId].GroupRouteCmdFlag = ROUTE_GROUPROUTE_CMD_NO; /*进路不存在组合进路命令标志*/
RouteDataStru[routeId].AutoTriggerFlag = AUTO_TRIGGER_SET_NO; /*进路没有设置自动触发标志*/ RouteDataStru[routeId].AutoTriggerFlag = AUTO_TRIGGER_SET_NO; /*进路没有设置自动触发标志*/
RouteDataStru[routeId].dwFirstElockStartCycNum = 0U; /*进路第一个锁闭的逻辑区段延时设置区段故障起始周期号*/ RouteDataStru[routeId].dwFirstElockStartCycNum = 0U; /*进路第一个锁闭的逻辑区段延时设置区段故障起始周期号*/
RouteDataStru[routeId].cRelZuHeRouteSGBJDelayFlag = ROUTE_SGBJ_DELAY_OPEN_VALID; /*关联组合进路声光报警延时标志有效*/ RouteDataStru[routeId].cRelZuHeRouteSGBJDelayFlag = ROUTE_SGBJ_DELAY_OPEN_VALID; /*关联组合进路声光报警延时标志有效*/
RouteDataStru[routeId].dwDelayOpenStartCycNum = 0U; /*声光报警进路延时开放延时起始周期*/ RouteDataStru[routeId].dwDelayOpenStartCycNum = 0U; /*声光报警进路延时开放延时起始周期*/
RouteDataStru[routeId].cRouteNeedDriveSGBJFlag = ROUTE_DRIVE_SGBJ_INVALID; /*进路驱动声光报警标志无效*/ RouteDataStru[routeId].cRouteNeedDriveSGBJFlag = ROUTE_DRIVE_SGBJ_INVALID; /*进路驱动声光报警标志无效*/
RouteDataStru[routeId].cRouteDrivedSGBJFlag = ROUTE_HAS_DRIVED_SGBJ_INVALID; /*初始化进路未驱动过声光报警*/ RouteDataStru[routeId].cRouteDrivedSGBJFlag = ROUTE_HAS_DRIVED_SGBJ_INVALID; /*初始化进路未驱动过声光报警*/
RouteDataStru[routeId].chRouteNearSecSearchState = ROUTE_NEAR_SEC_HAVE_UT; /*初始化进路接近区段查询状态为有故障车*/ RouteDataStru[routeId].chRouteNearSecSearchState = ROUTE_NEAR_SEC_HAVE_UT; /*初始化进路接近区段查询状态为有故障车*/
RouteDataStru[routeId].chRouteApplySwitchCheckFlag = ROUTE_APPLY_SWITCH_CHECK_DEF; /*初始化进路办理相邻控区道岔检查标志*/ RouteDataStru[routeId].chRouteApplySwitchCheckFlag = ROUTE_APPLY_SWITCH_CHECK_DEF; /*初始化进路办理相邻控区道岔检查标志*/
RouteDataStru[routeId].cRouteToLeadFlag = ROUTE_TO_LEAD_FLAG_NO; /*初始化普通进路转引导进路标志为无效*/
RouteDataStru[routeId].cRouteRequestDrvState = RELAY_STATE_DOWN; /*初始化URR驱动落下*/
RouteDataStru[routeId].cRouteReleaseDrvState = RELAY_STATE_UP; /*初始化UCL驱动吸起*/
RouteDataStru[routeId].cRouteAckDrvState = RELAY_STATE_DOWN; /*初始化UAR驱动落下*/
} }
} }
@@ -2122,9 +2045,6 @@ void ResetDynamicState(const UINT8 ciId)
SwitchDataStru[devId].SwitchCollTolerateCycNum = 0U; /*不使用容忍*/ SwitchDataStru[devId].SwitchCollTolerateCycNum = 0U; /*不使用容忍*/
SwitchDataStru[devId].SwitchColPosition = SWITCH_POSITION_SIKAI; SwitchDataStru[devId].SwitchColPosition = SWITCH_POSITION_SIKAI;
SwitchDataStru[devId].switchFaultState = SWITCH_FAULT_STATE_YES; /*置为板卡故障*/ SwitchDataStru[devId].switchFaultState = SWITCH_FAULT_STATE_YES; /*置为板卡故障*/
SwitchDataStru[devId].switchNormalPosCycNum = 0u;/*常态位置周期*/
SwitchDataStru[devId].switchUnusualLogSecFlag = SWITCH_UNUSUAL_INVALID;/*道岔非常态位置逻辑区段延时解锁标志无效*/
SwitchDataStru[devId].switchMutDrvCycNum = 0u;/*道岔定反操互斥驱动起始周期*/
} }
} }
@@ -2184,20 +2104,13 @@ void ResetDynamicState(const UINT8 ciId)
PhysicalSectionDataStru[ii].CurAndMergeOccupyState = SECTION_OCCUPY_YES; PhysicalSectionDataStru[ii].CurAndMergeOccupyState = SECTION_OCCUPY_YES;
PhysicalSectionDataStru[ii].PreOccupyState = SECTION_OCCUPY_YES; PhysicalSectionDataStru[ii].PreOccupyState = SECTION_OCCUPY_YES;
PhysicalSectionDataStru[ii].CurOccupyState = SECTION_OCCUPY_YES; PhysicalSectionDataStru[ii].CurOccupyState = SECTION_OCCUPY_YES;
SetSecMergeOccupyStartCycNum(devId, dwCurCyc); /*与相邻RC/CI通信中断时,设置物理区段融合占用起始周期(不考虑跨线区段)*/
SetPhySecMerIdleStartCycNum(devId, 0U);
} }
PhysicalSectionDataStru[ii].ArbState = AXIS_SECTION_ARB_NO; PhysicalSectionDataStru[ii].ArbState = AXIS_SECTION_ARB_NO;
PhysicalSectionDataStru[ii].JumpLockState = PHYSICAL_SECTION_JUMP_LOCK_NO; PhysicalSectionDataStru[ii].JumpLockState = PHYSICAL_SECTION_JUMP_LOCK_NO;
PhysicalSectionDataStru[ii].FLockType = SEC_FLOCK_TYPE_NONE; PhysicalSectionDataStru[ii].FLockType = PHY_SEC_FLOCK_TYPE_NONE;
PhysicalSectionDataStru[ii].JumpLockStateToZC = PHYSICAL_SECTION_JUMP_LOCK_NO; PhysicalSectionDataStru[ii].JumpLockStateToZC = PHYSICAL_SECTION_JUMP_LOCK_NO;
PhysicalSectionDataStru[ii].wPhyErrUnlockTime = 0U; PhysicalSectionDataStru[ii].wPhyErrUnlockTime = 0U;
PhysicalSectionDataStru[ii].PhySecPreResetState = PHYSICAL_SECTION_PRE_RESET_NO;
PhysicalSectionDataStru[ii].chPreResetBack = PHY_RESET_BACK_RECIVE_YES;
PhysicalSectionDataStru[ii].chDirectResetRst = PHYSICAL_DIRECT_RESET_NO;
PhysicalSectionDataStru[ii].chDirectResetBack = PHY_RESET_BACK_RECIVE_YES;
} }
else else
{ {
@@ -2310,7 +2223,6 @@ void ResetDynamicState(const UINT8 ciId)
SetSignalDetainBtnActFlag(devId, SIGNAL_ZFS_BTN_ACT_FLAG_YES); /*设置信号机扣车按钮有效状态*/ SetSignalDetainBtnActFlag(devId, SIGNAL_ZFS_BTN_ACT_FLAG_YES); /*设置信号机扣车按钮有效状态*/
/*由于互联互通需判断保护区段的有效性,而自家CI的相邻CI不会判断。为了保证改动量最小,所以对于非互联互通信号机,其保护区段有效性一直设置为有效,不影响逻辑*/ /*由于互联互通需判断保护区段的有效性,而自家CI的相邻CI不会判断。为了保证改动量最小,所以对于非互联互通信号机,其保护区段有效性一直设置为有效,不影响逻辑*/
SetSignalProSecValid(devId,SIGNAL_PRO_SEC_VALID); SetSignalProSecValid(devId,SIGNAL_PRO_SEC_VALID);
SetDetCutBtnState(devId, SIGNAL_DETAIN_CUT_VALID_NO);
} }
} }
@@ -2333,10 +2245,6 @@ void ResetDynamicState(const UINT8 ciId)
PsdDataStru[devId].PsdState = PSD_STATE_CLOSE; PsdDataStru[devId].PsdState = PSD_STATE_CLOSE;
} }
PsdDataStru[devId].MutualLockRemoveState = PSD_MUTUALLOCK_REMOVE_NO; PsdDataStru[devId].MutualLockRemoveState = PSD_MUTUALLOCK_REMOVE_NO;
PsdDataStru[devId].cPsdExceptOpenState = PSD_EXCEPT_OPEN_YES; /*重置为PSD异常打开*/
PsdDataStru[devId].dwPsdMutualLockCollStartCyc = 0U;/*清除旁路采集起始时间*/
PsdDataStru[devId].dwPsdMutualLockErrCollCyc = 0U;/*清除误触发采集*/
PsdDataStru[devId].dwPsdMutualLockStartCyc = 0U;/*清除旁路有效时间*/
} }
} }
@@ -2376,7 +2284,6 @@ void ResetDynamicState(const UINT8 ciId)
* *
* 20160511 * 20160511
*
*/ */
throughRtId = GetRouteThroughRouteId(devId); throughRtId = GetRouteThroughRouteId(devId);
OverlapLockedId = GetRouteOverlapLockedId(devId); OverlapLockedId = GetRouteOverlapLockedId(devId);
@@ -2395,7 +2302,6 @@ void ResetDynamicState(const UINT8 ciId)
{ {
(void)memset(&RouteDataStru[ii], 0, devLen); (void)memset(&RouteDataStru[ii], 0, devLen);
RouteDataStru[devId].RouteId = devId; RouteDataStru[devId].RouteId = devId;
RouteDataStru[devId].RouteState = devState;
RouteDataStru[devId].ThroughRouteId = throughRtId; RouteDataStru[devId].ThroughRouteId = throughRtId;
RouteDataStru[devId].OverlapLockedId = OverlapLockedId; RouteDataStru[devId].OverlapLockedId = OverlapLockedId;
} }
@@ -2749,7 +2655,6 @@ void ResetDynamicStateHlht(const UINT8 ciId)
UINT16 ii = 0u; UINT16 ii = 0u;
UINT16 devId = 0u;/*不对Id进行清除,清除Id后则设备Id为其他设备属性还存在,Id为静态属性,一旦设置为0后就不能更改*/ UINT16 devId = 0u;/*不对Id进行清除,清除Id后则设备Id为其他设备属性还存在,Id为静态属性,一旦设置为0后就不能更改*/
UINT16 devLen = 0u; UINT16 devLen = 0u;
UINT8 belongCiId = 0U;
/*重置非本联锁道岔动态数据*/ /*重置非本联锁道岔动态数据*/
for (ii = 1u; ii < SWITCH_SUM_MAX; ii++) for (ii = 1u; ii < SWITCH_SUM_MAX; ii++)
@@ -2766,7 +2671,6 @@ void ResetDynamicStateHlht(const UINT8 ciId)
/*设置道岔当前位置 【挤岔】*/ /*设置道岔当前位置 【挤岔】*/
SwitchDataStru[devId].SwitchCurPosition = SWITCH_POSITION_JICHA; /*道岔当前位置*/ SwitchDataStru[devId].SwitchCurPosition = SWITCH_POSITION_JICHA; /*道岔当前位置*/
SwitchDataStru[devId].SingleSwitchCurPosition = SWITCH_POSITION_JICHA; /*单独道岔当前位置*/ SwitchDataStru[devId].SingleSwitchCurPosition = SWITCH_POSITION_JICHA; /*单独道岔当前位置*/
SwitchDataStru[devId].LockStatus = SWITCH_LOCK_STATUS_NO;
} }
} }
@@ -2788,7 +2692,6 @@ void ResetDynamicStateHlht(const UINT8 ciId)
PhysicalSectionDataStru[ii].CurAndMergeOccupyState = SECTION_OCCUPY_YES; PhysicalSectionDataStru[ii].CurAndMergeOccupyState = SECTION_OCCUPY_YES;
PhysicalSectionDataStru[ii].PreOccupyState = SECTION_OCCUPY_YES; PhysicalSectionDataStru[ii].PreOccupyState = SECTION_OCCUPY_YES;
PhysicalSectionDataStru[ii].CurOccupyState = SECTION_OCCUPY_YES; PhysicalSectionDataStru[ii].CurOccupyState = SECTION_OCCUPY_YES;
PhysicalSectionDataStru[ii].PhySecPreResetState = PHYSICAL_SECTION_PRE_RESET_NO;
} }
} }
@@ -2872,17 +2775,6 @@ void ResetDynamicStateHlht(const UINT8 ciId)
spksDataBuff[devId].cutStatus = SPKS_CUT_NO; /*SPKS旁路状态:未按下*/ spksDataBuff[devId].cutStatus = SPKS_CUT_NO; /*SPKS旁路状态:未按下*/
} }
} }
for (ii = 1u; ii < AUTO_ROUTE_SUM_MAX; ii++)
{
devId = ii;
belongCiId = GetAutoRouteBelongCiId(devId);
if (belongCiId == ciId)
{
/*非本联锁重置状态*/
AutoRouteDataStru[devId].AutoRouteSetFlag = AUTO_ROUTE_SET_NO; /*自动进路未办理*/
}
}
} }
/* /*
@@ -3190,79 +3082,6 @@ UINT8 InitLEUDataStru(void)
return reVal; return reVal;
} }
/*
* SSKS闪灯稳灯继电器动态数据初始化
*
* 0
* 1
* Created By LQ 2025.12.15
*/
UINT8 InitSsksLightRelayData(void)
{
UINT8 ret = CI_ERROR;
SsksLightRelayCfgDataStruct* pSsksLightRelayCfgStr = NULL;
UINT16 wSsksLightRelaySum = 0U;
UINT16 ii = 0U;
wSsksLightRelaySum = GetSsksLightRelaySum();
pSsksLightRelayCfgStr = GetSsksLightRelayCfgStr();
if (NULL != pSsksLightRelayCfgStr)
{
ret = CI_SUCCESS;
for (ii = 0U; ii < wSsksLightRelaySum; ii++)
{
gSsksLightRelayData[ii].SsksLightRelayId = pSsksLightRelayCfgStr[ii].SsksLightRelayId;
gSsksLightRelayData[ii].RelEnterRouteLockFlag = SSKS_LIGHT_ROUTE_LOCK_NO;
gSsksLightRelayData[ii].RelExportRouteLockFlag = SSKS_LIGHT_ROUTE_LOCK_NO;
gSsksLightRelayData[ii].dwSteadyLightDelayStartCycNum = 0U;
}
}
else
{
ret = CI_ERROR;
}
return ret;
}
/*
* 线
*
* 0
* 1
* Created By wyd 20260311
*/
UINT8 InitConnectOverrideData(void)
{
UINT8 ret = CI_ERROR;
ConnectOverrideCfgDataStru* pConnectOverrideCfgStr = NULL;
UINT16 wConnectOverrideSum = 0U;
UINT16 ii = 0U;
wConnectOverrideSum = GetConnectOverrideRelaySum();
pConnectOverrideCfgStr = GetConnectOverrideRelayCfgStr();
if (NULL != pConnectOverrideCfgStr)
{
ret = CI_SUCCESS;
for (ii = 0U; ii < wConnectOverrideSum; ii++)
{
gConnectOverrideData[ii].ConnectOverrideId = pConnectOverrideCfgStr[ii].ConnectOverrideId;
gConnectOverrideData[ii].OverrideState = CONNECT_OVERRIDE_STATE_NO;
gConnectOverrideData[ii].OverrideReason = OVERRIDE_REASON_NONE;
gConnectOverrideData[ii].OverridePressStartCyc = 0u;
gConnectOverrideData[ii].OverrideErrTrigStartCyc = 0u;
gConnectOverrideData[ii].OverrideErrDownState = CONNECT_OVERRIDE_ERRDOWN_NO;
gConnectOverrideData[ii].OverrideErrTrigState = CONNECT_OVERRIDE_ERRTRIG_NO;
}
}
else
{
ret = CI_ERROR;
}
return ret;
}
/* /*
* *
* void * void
@@ -3374,90 +3193,3 @@ UINT8 InitialRtnIndicStaData(void)
return chReval; return chReval;
} }
/*
*
* void
*
*/
UINT8 InitOhlDataStru(void)
{
UINT16 wOhlCurSum = 0u;/*接触网当前分区数量*/
UINT16 ii = 0u; /*游标*/
UINT8 chReval = CI_ERROR;
UINT16 ohlId = 0u;
UINT8 chLocalCiId = 0U; /*本地联锁ID*/
UINT8 devBlongCiId = 0U; /*设备所属联锁ID*/
chLocalCiId = GetSystemParaLocalCiId(); /*获取本地联锁ID*/
wOhlCurSum = GetOhlCurSum();
if (OHL_MAX_NUM > wOhlCurSum)
{
chReval = CI_SUCCESS;
for (ii = 0u; ii < wOhlCurSum; ii++)
{
ohlId = GetOhlId(ii);
devBlongCiId = GetOhlBelongCiId(ohlId); /*获取设备所属联锁ID*/
if ((0u != ohlId) && (0U != chLocalCiId) && (chLocalCiId == devBlongCiId))
{/*初始化本控区*/
OhlDataStru[ohlId].wOhlId = ohlId;
OhlDataStru[ohlId].chPowerState = OHL_POWER_ENERGIZED; /*接触网供电状态*/
OhlDataStru[ohlId].dwOhlDeEnerCycNum = 0u; /*接触网断电起始周期*/
OhlDataStru[ohlId].dwOhlUnknowCycNum = 0u; /*接触网未知起始周期*/
OhlDataStru[ohlId].chOhlBypassFlag = OHL_BYPASS_NO;/*接触网旁路状态*/
}
else
{
/*不处理*/
}
}
}
else
{
;/*返回失败*/
}
return chReval;
}
/*
* ECS数据
* void
* 0
* 1
* Created By LQ 2026.01.26
*/
UINT8 InitialEcsData(void)
{
UINT8 cRetVal = CI_ERROR;
UINT16 wEcsSum = 0U; /*防淹门总数*/
UINT16 wEcsId = 0U; /*防淹门ID*/
UINT16 ii = 0U; /*游标*/
wEcsSum = GetEcsCurSum();
for (ii = 0U; ii < wEcsSum; ii++)
{
wEcsId = GetEcsId(ii);
if ((0U < wEcsId) && (ECS_MAX_NUM > wEcsId))
{
ECSDataStru[wEcsId].wEcsId = wEcsId;
ECSDataStru[wEcsId].cAutoTrigState = ECS_AUTOTRIG_YES;
ECSDataStru[wEcsId].wRelTrainId = 0U;
ECSDataStru[wEcsId].dwTrainStopStartCycNum = 0U;
ECSDataStru[wEcsId].dwTrainMoveStartCycNum = 0U;
ECSDataStru[wEcsId].cJamState = ECS_JAM_NO;
ECSDataStru[wEcsId].cOccPhySecNum = 0U;
(void)CommonMemSet(ECSDataStru[wEcsId].szOccPhySecId, (UINT32)(sizeof(UINT16) * ECS_REL_PHYSEC_MAX_NUM), (UINT8)0U, (UINT32)(sizeof(UINT16) * ECS_REL_PHYSEC_MAX_NUM));
}
else
{
cRetVal = CI_ERROR;
break;
}
}
return cRetVal;
}
@@ -73,9 +73,6 @@
#include "../AutoRoute/AutoRouteDataManage.h" #include "../AutoRoute/AutoRouteDataManage.h"
#include "../NonAutoReturn/NonAutoReturnDataManage.h" #include "../NonAutoReturn/NonAutoReturnDataManage.h"
#include "../VirtualDevice/VirtualDevDataManage.h" #include "../VirtualDevice/VirtualDevDataManage.h"
#include "../SsksLightRelay/SsksLightRelayDataManage.h"
#include "../ConnectOverride/ConnectOverrideDataMg.h"
#include "SpeedLimitSecDataManage.h"
#ifdef SCADE_MODE #ifdef SCADE_MODE
#include "../LogicManage/General/LogicManageScadeInterface.h" #include "../LogicManage/General/LogicManageScadeInterface.h"
@@ -324,24 +321,6 @@ void InitPlatDataStru(void);
*/ */
UINT8 InitLEUDataStru(void); UINT8 InitLEUDataStru(void);
/*
* SSKS闪灯稳灯继电器动态数据初始化
*
* 0
* 1
* Created By LQ 2025.12.15
*/
UINT8 InitSsksLightRelayData(void);
/*
* 线
*
* 0
* 1
* Created By wyd 20260311
*/
UINT8 InitConnectOverrideData(void);
/* /*
* *
* void * void
@@ -351,22 +330,6 @@ UINT8 InitConnectOverrideData(void);
*/ */
UINT8 InitialRtnIndicStaData(void); UINT8 InitialRtnIndicStaData(void);
/*
*
* void
*
*/
UINT8 InitOhlDataStru(void);
/*
* ECS数据
* void
* 0
* 1
* Created By LQ 2026.01.26
*/
UINT8 InitialEcsData(void);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
@@ -134,8 +134,6 @@ UINT16 GetInvaSectId(UINT16 invSecAndConSwiId)
return retVal; return retVal;
} }
/* /*
: :
: UINT16 invSecAndConSwiId ID : UINT16 invSecAndConSwiId ID
@@ -14,7 +14,7 @@
#ifndef __INVADESECTION_DEFINE_H_ #ifndef __INVADESECTION_DEFINE_H_
#define __INVADESECTION_DEFINE_H_ #define __INVADESECTION_DEFINE_H_
#define INVA_SECT_N_COND_SWIT_SUM_MAX ((UINT16)400) /*侵限区段与相关条件道岔数据条目最大数量*/ #define INVA_SECT_N_COND_SWIT_SUM_MAX ((UINT16)300) /*侵限区段与相关条件道岔数据条目最大数量*/
#define COND_SWITCH_SUM_MAX ((UINT16)16) /*单一侵限区段与相关条件道岔数据条目内,条件道岔最大数量*/ #define COND_SWITCH_SUM_MAX ((UINT16)16) /*单一侵限区段与相关条件道岔数据条目内,条件道岔最大数量*/
+9 -418
View File
@@ -36,17 +36,12 @@ OverlapDataStruct Record_OverlapDataStru[OVERLAP_SUM_MAX];/*
VirCIKeyDataStru Record_VirCIKeyDataStru[VIRTUAL_CI_MAX]= {0u};/*记录虚拟联锁关键数据*/ VirCIKeyDataStru Record_VirCIKeyDataStru[VIRTUAL_CI_MAX]= {0u};/*记录虚拟联锁关键数据*/
VirCIKeyDataStru newVirCIKeyDataStru[VIRTUAL_CI_MAX]= {0u}; VirCIKeyDataStru newVirCIKeyDataStru[VIRTUAL_CI_MAX]= {0u};
SpksDataStruct Record_spksDataBuff[SPKS_SUM_MAX] = { 0u }; SpksDataStruct Record_spksDataBuff[SPKS_SUM_MAX] = { 0u };
SsksLightRelayDataStruct Record_SsksLightRelayDataStr[SSKS_LIGHT_RELAY_SUM_MAX] = { 0U }; /*SSKS闪灯稳灯继电器数据*/
TrainInfoStru Record_TrainInfo[TRAIN_SUM_MAX] = { 0u }; TrainInfoStru Record_TrainInfo[TRAIN_SUM_MAX] = { 0u };
CfpDataStru Record_CfpInfo[CUTOFF_POINT_SUM_MAX] = { 0u }; CfpDataStru Record_CfpInfo[CUTOFF_POINT_SUM_MAX] = { 0u };
TsrDataStruct Record_TsrInfo[TSR_MAX_SUM] = { 0u }; /* 参考临时限速动态数据 */ TsrDataStruct Record_TsrInfo[TSR_MAX_SUM] = { 0u }; /* 参考临时限速动态数据 */
OCStationIndicDataStru Record_OCStationIndicBuff[INDICATOR_SUM_MAX] = { 0u }; OCStationIndicDataStru Record_OCStationIndicBuff[INDICATOR_SUM_MAX] = { 0u };
LogicalRouteDataStruct Record_LogicalRouteDataStru[ROUTE_LOGICAL_SUM_MAX] = { 0U }; LogicalRouteDataStruct Record_LogicalRouteDataStru[ROUTE_LOGICAL_SUM_MAX] = { 0U };
NonAutoReturnDataStruct Record_NonReturnDataStru[NON_AUTO_RETURN_SUM_MAX] = { 0U }; NonAutoReturnDataStruct Record_NonReturnDataStru[NON_AUTO_RETURN_SUM_MAX] = { 0U };
OhlDataStruct Record_OhlDataStru[OHL_MAX_NUM] = { 0U };
ECSDataStruct Record_EcsDataStru[ECS_MAX_NUM] = { 0U };
ConnectOverrideDataStru Record_ConnectOverrideData[CONNECT_OVERRIDE_RELAY_SUM_MAX] = { 0U };
SpeedLimitSecInfo Record_TRSDataStru[MAX_LINE_SEC_NUM] = { 0U };
UINT8 outString[1024*1024] = {0u};/*比较后的设备打印数据缓冲*/ UINT8 outString[1024*1024] = {0u};/*比较后的设备打印数据缓冲*/
extern QueueStruct logPrintfQue; /*日志打印缓存队列*/ extern QueueStruct logPrintfQue; /*日志打印缓存队列*/
@@ -480,7 +475,6 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
TsrDataStruct* pNewTsrInfo = GetTsrData(); /* 临时限速信息 */ TsrDataStruct* pNewTsrInfo = GetTsrData(); /* 临时限速信息 */
CfpDataStru * pNewCfpData = GetCfpData(); CfpDataStru * pNewCfpData = GetCfpData();
SpksDataStruct* pNewSpksData = GetSpksData(); SpksDataStruct* pNewSpksData = GetSpksData();
SsksLightRelayDataStruct* pSsksLightRelayData = NULL;
OCStationIndicDataStru* pNewOCStationIndicData = GetOCStationIndicDataStru(); OCStationIndicDataStru* pNewOCStationIndicData = GetOCStationIndicDataStru();
EsbDataStruct* pNewEsbData = GetEsbData(); EsbDataStruct* pNewEsbData = GetEsbData();
LogicalRouteDataStruct* pNewLogicalRouteDataStru = GetLogicalRouteStr(); LogicalRouteDataStruct* pNewLogicalRouteDataStru = GetLogicalRouteStr();
@@ -488,14 +482,10 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
UINT8 chEnIndex = 0u; UINT8 chEnIndex = 0u;
UINT8 chTrainIndex = 0u; UINT8 chTrainIndex = 0u;
UINT16 deviceNum = 0u; UINT16 deviceNum = 0u;
UINT16 tsrSecInfoNums = 0u;
UINT8 localCiType = 0u; UINT8 localCiType = 0u;
UINT16 wNonAutoReturnCurSum = 0U;/*无人折返按钮当前总数*/ UINT16 wNonAutoReturnCurSum = 0U;/*无人折返按钮当前总数*/
NonAutoReturnDataStruct* pNonAutoReturnData = NULL;/*无人折返数据结构体指针*/ NonAutoReturnDataStruct* pNonAutoReturnData = NULL;/*无人折返数据结构体指针*/
OhlDataStruct* pOhlDataStruct = NULL;/*接触网数据结构体指针*/
ECSDataStruct* pEcsDataStruct = NULL;/*ECS数据结构体指针*/
SpeedLimitSecInfo* tsrSecInfo = NULL;/*限速区段数据结构体指针*/
ConnectOverrideDataStru *pConnectOverrideInfo = NULL; /*联络线旁路数据结构体指针*/
/*************************************打印物理区段数据********************************************/ /*************************************打印物理区段数据********************************************/
/*打印区段数据*/ /*打印区段数据*/
@@ -536,13 +526,6 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outString[outStringLength++] = newPhysicalSectionData[deviceId].CurMergeOccupyState;/*当前融合占用状态*/ outString[outStringLength++] = newPhysicalSectionData[deviceId].CurMergeOccupyState;/*当前融合占用状态*/
outString[outStringLength++] = newPhysicalSectionData[deviceId].PreAndMergeOccupyState;/*之前与占用融合占用状态*/ outString[outStringLength++] = newPhysicalSectionData[deviceId].PreAndMergeOccupyState;/*之前与占用融合占用状态*/
outString[outStringLength++] = newPhysicalSectionData[deviceId].CurAndMergeOccupyState;/*当前与占用融合占用状态*/ outString[outStringLength++] = newPhysicalSectionData[deviceId].CurAndMergeOccupyState;/*当前与占用融合占用状态*/
outString[outStringLength++] = newPhysicalSectionData[deviceId].SectionResetType;/*区段计轴复位类型*/
LongToChar(newPhysicalSectionData[deviceId].SectionResetStartCycNum, &outString[outStringLength]);/*区段计轴复位开始周期*/
outStringLength += 4u;
outString[outStringLength++] = newPhysicalSectionData[deviceId].PhySecPreResetState;/*计轴预复位状态*/
outString[outStringLength++] = newPhysicalSectionData[deviceId].chPreResetBack;/*预复位命令反馈*/
outString[outStringLength++] = newPhysicalSectionData[deviceId].chDirectResetRst;/*直接复位结果*/
outString[outStringLength++] = newPhysicalSectionData[deviceId].chDirectResetBack;/*直接复位命令反馈*/
outString[outStringLength++] = newPhysicalSectionData[deviceId].StopSteadyFlag;/*停稳状态信息*/ outString[outStringLength++] = newPhysicalSectionData[deviceId].StopSteadyFlag;/*停稳状态信息*/
outString[outStringLength++] = newPhysicalSectionData[deviceId].ArbState;/*ARB状态*/ outString[outStringLength++] = newPhysicalSectionData[deviceId].ArbState;/*ARB状态*/
outString[outStringLength++] = newPhysicalSectionData[deviceId].ProtectSecLockDelayTimeFlag;/*保护区段锁闭延时标志(动态字段)*/ outString[outStringLength++] = newPhysicalSectionData[deviceId].ProtectSecLockDelayTimeFlag;/*保护区段锁闭延时标志(动态字段)*/
@@ -553,18 +536,16 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outStringLength += 4u; outStringLength += 4u;
LongToChar(newPhysicalSectionData[deviceId].SecColOccupyStartCycNum, &outString[outStringLength]);/*区段采集占用开始周期*/ LongToChar(newPhysicalSectionData[deviceId].SecColOccupyStartCycNum, &outString[outStringLength]);/*区段采集占用开始周期*/
outStringLength += 4u; outStringLength += 4u;
LongToChar(newPhysicalSectionData[deviceId].SecMergeOccupyStartCycNum, &outString[outStringLength]);/*区段融合占用开始周期*/
outStringLength += 4U;
LongToChar(newPhysicalSectionData[deviceId].SecCurOccupyStartCycNum,&outString[outStringLength]);/*区段当前占用开始周期*/ LongToChar(newPhysicalSectionData[deviceId].SecCurOccupyStartCycNum,&outString[outStringLength]);/*区段当前占用开始周期*/
outStringLength += 4u; outStringLength += 4u;
LongToChar(newPhysicalSectionData[deviceId].SecOccuToClearStartCycNum,&outString[outStringLength]);/*区段占用变空闲开始周期*/ LongToChar(newPhysicalSectionData[deviceId].SecOccuToClearStartCycNum,&outString[outStringLength]);/*区段占用变空闲开始周期*/
outStringLength += 4u; outStringLength += 4u;
LongToChar(newPhysicalSectionData[deviceId].dwMerOccToIdleStartCycNum, &outString[outStringLength]);/*区段融合空闲开始周期*/
outStringLength += 4U;
LongToChar(newPhysicalSectionData[deviceId].AutoUnlockStartCycNum,&outString[outStringLength]);/*自动解锁延时开始周期*/ LongToChar(newPhysicalSectionData[deviceId].AutoUnlockStartCycNum,&outString[outStringLength]);/*自动解锁延时开始周期*/
outStringLength += 4u; outStringLength += 4u;
LongToChar(newPhysicalSectionData[deviceId].FaultUnlockStartCycNum,&outString[outStringLength]);/*区故解解锁延时开始周期*/ LongToChar(newPhysicalSectionData[deviceId].FaultUnlockStartCycNum,&outString[outStringLength]);/*区故解解锁延时开始周期*/
outStringLength += 4u; outStringLength += 4u;
LongToChar(newPhysicalSectionData[deviceId].SectionResetStartCycNum,&outString[outStringLength]);/*区段计轴复位开始周期*/
outStringLength += 4u;
outString[outStringLength++] = newPhysicalSectionData[deviceId].FLockType; /*物理区段封锁产生的原因,SPKS或其他原因*/ outString[outStringLength++] = newPhysicalSectionData[deviceId].FLockType; /*物理区段封锁产生的原因,SPKS或其他原因*/
outString[outStringLength++] = newPhysicalSectionData[deviceId].UtOrCtOccFlag; /*获取物理区段占用标志*/ outString[outStringLength++] = newPhysicalSectionData[deviceId].UtOrCtOccFlag; /*获取物理区段占用标志*/
ShortToChar(newPhysicalSectionData[deviceId].SecProUseBelongRouteId,&outString[outStringLength]);/*征用所属进路ID*/ ShortToChar(newPhysicalSectionData[deviceId].SecProUseBelongRouteId,&outString[outStringLength]);/*征用所属进路ID*/
@@ -577,8 +558,6 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outString[outStringLength++] = newPhysicalSectionData[deviceId].chABLTrainFlag; /*物理区段ABL列车占用状态*/ outString[outStringLength++] = newPhysicalSectionData[deviceId].chABLTrainFlag; /*物理区段ABL列车占用状态*/
outString[outStringLength++] = newPhysicalSectionData[deviceId].chPreABLTrainFlag; /*物理区段之前ABL列车占用状态*/ outString[outStringLength++] = newPhysicalSectionData[deviceId].chPreABLTrainFlag; /*物理区段之前ABL列车占用状态*/
outString[outStringLength++] = newPhysicalSectionData[deviceId].cPhySecInHumidRailFlag; /*物理区段湿轨标志:0x55 无效;0xAA 有效*/ outString[outStringLength++] = newPhysicalSectionData[deviceId].cPhySecInHumidRailFlag; /*物理区段湿轨标志:0x55 无效;0xAA 有效*/
LongToChar(newPhysicalSectionData[deviceId].UtOrCtOccuStartCycNum, &outString[outStringLength]);/*区段UT或CT占用起始周期号*/
outStringLength += 4u;
} }
} }
} }
@@ -673,7 +652,6 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outString[outStringLength++] = newSignalData[deviceId].GreenDsBreakFlag;/*绿灯丝断丝标志状态*/ outString[outStringLength++] = newSignalData[deviceId].GreenDsBreakFlag;/*绿灯丝断丝标志状态*/
outString[outStringLength++] = newSignalData[deviceId].YellowDsBreakFlag;/*黄灯丝断丝标志状态*/ outString[outStringLength++] = newSignalData[deviceId].YellowDsBreakFlag;/*黄灯丝断丝标志状态*/
outString[outStringLength++] = newSignalData[deviceId].WhiteDsBreakFlag;/*白灯丝断丝标志状态*/ outString[outStringLength++] = newSignalData[deviceId].WhiteDsBreakFlag;/*白灯丝断丝标志状态*/
outString[outStringLength++] = newSignalData[deviceId].BlueDsBreakFlag;/*蓝灯丝断丝标志状态*/
outString[outStringLength++] = newSignalData[deviceId].RedYellowDsBreakFlag;/*红黄灯丝断丝标志状态*/ outString[outStringLength++] = newSignalData[deviceId].RedYellowDsBreakFlag;/*红黄灯丝断丝标志状态*/
outString[outStringLength++] = newSignalData[deviceId].RedWhiteDsBreakFlag;/*红白灯丝断丝标志状态*/ outString[outStringLength++] = newSignalData[deviceId].RedWhiteDsBreakFlag;/*红白灯丝断丝标志状态*/
outString[outStringLength++] = newSignalData[deviceId].GreenYellowDsBreakFlag;/*绿黄灯丝断丝标志状态*/ outString[outStringLength++] = newSignalData[deviceId].GreenYellowDsBreakFlag;/*绿黄灯丝断丝标志状态*/
@@ -705,10 +683,8 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outString[outStringLength++] = newSignalData[deviceId].CancelDetainBtnErrFlag; /*取消扣车按钮故障标志*/ outString[outStringLength++] = newSignalData[deviceId].CancelDetainBtnErrFlag; /*取消扣车按钮故障标志*/
outString[outStringLength++] = newSignalData[deviceId].CancelDetainBtnValidFlag; /*取消扣车按钮有效标志*/ outString[outStringLength++] = newSignalData[deviceId].CancelDetainBtnValidFlag; /*取消扣车按钮有效标志*/
outString[outStringLength++] = newSignalData[deviceId].CancelDetainRelayDownState; /*取消扣车按钮采集继电器落下状态*/ outString[outStringLength++] = newSignalData[deviceId].CancelDetainRelayDownState; /*取消扣车按钮采集继电器落下状态*/
LongToChar(newSignalData[deviceId].DetainBtnPressCycNum, &outString[outStringLength]); /*扣车按钮1按下周期*/ LongToChar(newSignalData[deviceId].DetainBtnPressCycNum, &outString[outStringLength]); /*扣车按钮按下周期*/
outStringLength += 4u; outStringLength += 4u;
LongToChar(newSignalData[deviceId].DetainSndBtnPressCycNum, &outString[outStringLength]); /*扣车按钮2按下周期*/
outStringLength += 4U;
LongToChar(newSignalData[deviceId].CancelDetainBtnPressCycNum, &outString[outStringLength]); /*取消扣车按钮正常按下周期*/ LongToChar(newSignalData[deviceId].CancelDetainBtnPressCycNum, &outString[outStringLength]); /*取消扣车按钮正常按下周期*/
outStringLength += 4u; outStringLength += 4u;
LongToChar(newSignalData[deviceId].CancelDetainErrTrigPressCycNum, &outString[outStringLength]); /*取消扣车按钮误触发按下周期*/ LongToChar(newSignalData[deviceId].CancelDetainErrTrigPressCycNum, &outString[outStringLength]); /*取消扣车按钮误触发按下周期*/
@@ -717,18 +693,6 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outStringLength += 2u; outStringLength += 2u;
outString[outStringLength++] = newSignalData[deviceId].cSleepTrainLightUpFlag; /*休眠车点亮信号机标志:0x55 无效,0xAA 有效*/ outString[outStringLength++] = newSignalData[deviceId].cSleepTrainLightUpFlag; /*休眠车点亮信号机标志:0x55 无效,0xAA 有效*/
outString[outStringLength++] = newSignalData[deviceId].cInHumidRailFlag; /*信号机湿轨标志:0x55 无效,0xAA 有效*/ outString[outStringLength++] = newSignalData[deviceId].cInHumidRailFlag; /*信号机湿轨标志:0x55 无效,0xAA 有效*/
outString[outStringLength] = newSignalData[deviceId].cDetCutBtnState; /*扣车旁路按钮状态:0x55-无效,0xAA-有效*/
outStringLength++;
LongToChar(newSignalData[deviceId].DetCutBtnPressCycNum, &outString[outStringLength]); /*扣车旁路按钮正常按下周期*/
outStringLength += 4U;
LongToChar(newSignalData[deviceId].DetCutBtnErrTrigPressCycNum, &outString[outStringLength]); /*扣车旁路按钮误触发按下周期*/
outStringLength += 4U;
outString[outStringLength] = newSignalData[deviceId].cDetCutBtnErrFlag; /*扣车旁路按钮故障标志:0x55未故障,0xaa故障*/
outStringLength++;
outString[outStringLength] = newSignalData[deviceId].cDetCutBtnRelayDownState; /*扣车旁路按钮采集继电器落下状态:0x55:正常采集落下,0xaa:通信异常落下*/
outStringLength++;
outString[outStringLength] = newSignalData[deviceId].cTrainCrossRedSignalFlag; /*列车闯红灯标志:0x55-无效,0xAA-有效*/
outStringLength++;
} }
} }
else else
@@ -798,7 +762,6 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outString[outStringLength++] = pNewEsbData[deviceId].EssSteadyState;/*ESS稳灯状态(用于虚拟联锁向ATS反馈)--0x55 需要设置稳灯;0xaa不需要设置稳灯*/ outString[outStringLength++] = pNewEsbData[deviceId].EssSteadyState;/*ESS稳灯状态(用于虚拟联锁向ATS反馈)--0x55 需要设置稳灯;0xaa不需要设置稳灯*/
outString[outStringLength++] = pNewEsbData[deviceId].EssFlashState;/*ESS闪灯状态(用于虚拟联锁向ATS反馈)--0x55 需要设置闪灯;0xaa不需要设置闪灯*/ outString[outStringLength++] = pNewEsbData[deviceId].EssFlashState;/*ESS闪灯状态(用于虚拟联锁向ATS反馈)--0x55 需要设置闪灯;0xaa不需要设置闪灯*/
outString[outStringLength++] = pNewEsbData[deviceId].EsbErrorFlag;/*自复式紧急停车按钮故障标志,0x55未故障,0xaa故障*/ outString[outStringLength++] = pNewEsbData[deviceId].EsbErrorFlag;/*自复式紧急停车按钮故障标志,0x55未故障,0xaa故障*/
outString[outStringLength++] = pNewEsbData[deviceId].EsbRelayDownState;/*紧急关闭按钮采集继电器落下状态,0x55:正常采集落下,0xaa:通信异常落下*/
outString[outStringLength++] = pNewEsbData[deviceId].CancelEsbErrorFlag;/*自复式取消紧急停车按钮故障标志,0x55未故障,0xaa故障*/ outString[outStringLength++] = pNewEsbData[deviceId].CancelEsbErrorFlag;/*自复式取消紧急停车按钮故障标志,0x55未故障,0xaa故障*/
outString[outStringLength++] = pNewEsbData[deviceId].CancelEsbValidFlag;/*取消紧急关闭按钮有效标志,0x55无效,0xaa有效*/ outString[outStringLength++] = pNewEsbData[deviceId].CancelEsbValidFlag;/*取消紧急关闭按钮有效标志,0x55无效,0xaa有效*/
outString[outStringLength++] = pNewEsbData[deviceId].CancelEsbRelayDownState;/*取消紧急关闭按钮采集继电器落下状态,0x55:正常采集落下,0xaa:通信异常落下*/ outString[outStringLength++] = pNewEsbData[deviceId].CancelEsbRelayDownState;/*取消紧急关闭按钮采集继电器落下状态,0x55:正常采集落下,0xaa:通信异常落下*/
@@ -807,13 +770,7 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
LongToChar(pNewEsbData[deviceId].CancelEsbPressCycNum, &outString[outStringLength]);/*取消紧急关闭按钮按下周期*/ LongToChar(pNewEsbData[deviceId].CancelEsbPressCycNum, &outString[outStringLength]);/*取消紧急关闭按钮按下周期*/
outStringLength += 4u; outStringLength += 4u;
LongToChar(pNewEsbData[deviceId].CancelEsbErrTriggerPressCycNum, &outString[outStringLength]);/*取消紧急关闭按钮误触发按下周期*/ LongToChar(pNewEsbData[deviceId].CancelEsbErrTriggerPressCycNum, &outString[outStringLength]);/*取消紧急关闭按钮误触发按下周期*/
outStringLength += 4U; outStringLength += 4U;
outString[outStringLength++] = pNewEsbData[deviceId].EsbCutErrorFlag; /*紧急关闭旁路按钮故障标志,0x55未故障,0xaa故障*/
outString[outStringLength++] = pNewEsbData[deviceId].EsbCutRelayDownState; /*紧急关闭旁路按钮采集继电器落下状态,0x55:正常采集落下,0xaa:通信异常落下*/
LongToChar(pNewEsbData[deviceId].EsbCutPressCycNum, &outString[outStringLength]); /*紧急关闭旁路按钮按下周期*/
outStringLength += 4u;
LongToChar(pNewEsbData[deviceId].EsbCutErrTriggerPressCycNum, &outString[outStringLength]); /*紧急关闭旁路按钮误触发按下周期*/
outStringLength += 4U;
} }
} }
else else
@@ -930,13 +887,7 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outString[outStringLength++] = newSwitchData[deviceId].SwitchByPassState; /*道岔旁路状态*/ outString[outStringLength++] = newSwitchData[deviceId].SwitchByPassState; /*道岔旁路状态*/
outString[outStringLength++] = newSwitchData[deviceId].chSwitchJichaState; /*道岔挤岔状态*/ outString[outStringLength++] = newSwitchData[deviceId].chSwitchJichaState; /*道岔挤岔状态*/
LongToChar(newSwitchData[deviceId].SwitchCollTolerateCycNum, &outString[outStringLength]);/*容忍周期号*/ LongToChar(newSwitchData[deviceId].SwitchCollTolerateCycNum, &outString[outStringLength]);/*容忍周期号*/
outStringLength += 4u;
LongToChar(newSwitchData[deviceId].switchNormalPosCycNum, &outString[outStringLength]);/*道岔开始判断常态位置起始周期号*/
outStringLength += 4u; outStringLength += 4u;
LongToChar(newSwitchData[deviceId].switchMutDrvCycNum, &outString[outStringLength]);/*道岔驱动起始周期号-定反操互斥*/
outStringLength += 4u;
outString[outStringLength++] = newSwitchData[deviceId].switchUnusualLogSecFlag;/*道岔非常态位置逻辑区段延时锁闭标志*/
outString[outStringLength++] = newSwitchData[deviceId].SwitchReverseEnable;/*道岔反位使能请求(迪士尼联络线)*/
} }
} }
else else
@@ -1043,9 +994,7 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outStringLength += 4u; outStringLength += 4u;
outString[outStringLength++] = newRouteData[deviceId].DCQState;/*调车请求状态*/ outString[outStringLength++] = newRouteData[deviceId].DCQState;/*调车请求状态*/
outString[outStringLength++] = newRouteData[deviceId].DCTYState;/*调车同意状态*/ outString[outStringLength++] = newRouteData[deviceId].DCTYState;/*调车同意状态*/
LongToChar(newRouteData[deviceId].dwDcAgreeBtnPressCycNum, &outString[outStringLength]);/*调车同意按钮按下起始周期*/
outStringLength += 4u;
outString[outStringLength++] = newRouteData[deviceId].chDcAgreeButtonErrState;/*调车同意按钮故障状态*/
outString[outStringLength++] = newRouteData[deviceId].DCTYNotSatisfySignalReOpenFlag;/*调车同意不满足-信号重开标志*/ outString[outStringLength++] = newRouteData[deviceId].DCTYNotSatisfySignalReOpenFlag;/*调车同意不满足-信号重开标志*/
LongToChar(newRouteData[deviceId].DCTYNotSatisfyStartCount,&outString[outStringLength]);/*调车同意不满足-起始周期*/ LongToChar(newRouteData[deviceId].DCTYNotSatisfyStartCount,&outString[outStringLength]);/*调车同意不满足-起始周期*/
outStringLength += 4u; outStringLength += 4u;
@@ -1147,9 +1096,6 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outString[outStringLength++] = newRouteData[deviceId].cRouteDrivedSGBJFlag; /*进路驱动声光报警标志:0x55 未驱动过;0xAA 已驱动过*/ outString[outStringLength++] = newRouteData[deviceId].cRouteDrivedSGBJFlag; /*进路驱动声光报警标志:0x55 未驱动过;0xAA 已驱动过*/
outString[outStringLength++] = newRouteData[deviceId].chRouteNearSecSearchState; /*进路接近区段查询状态是否有故障车*/ outString[outStringLength++] = newRouteData[deviceId].chRouteNearSecSearchState; /*进路接近区段查询状态是否有故障车*/
outString[outStringLength++] = newRouteData[deviceId].chRouteApplySwitchCheckFlag; /*进路办理相邻控区道岔检查标志*/ outString[outStringLength++] = newRouteData[deviceId].chRouteApplySwitchCheckFlag; /*进路办理相邻控区道岔检查标志*/
outString[outStringLength++] = newRouteData[deviceId].cRouteRequestDrvState; /*迪士尼联络线进路请求继电器(URR)驱动状态*/
outString[outStringLength++] = newRouteData[deviceId].cRouteReleaseDrvState; /*迪士尼联络线进路释放继电器(UCL)驱动状态*/
outString[outStringLength++] = newRouteData[deviceId].cRouteAckDrvState; /*迪士尼联络线进路已设置保留继电器(UAR)驱动状态*/
} }
} }
else else
@@ -1381,8 +1327,6 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outString[outStringLength++] = newLogicSecData[deviceId].chLinShiXianSuSetSpeed; /*逻辑区段临时限速值*/ outString[outStringLength++] = newLogicSecData[deviceId].chLinShiXianSuSetSpeed; /*逻辑区段临时限速值*/
outString[outStringLength++] = newLogicSecData[deviceId].chAblRelLogSecUsableFlag; /*ABL列车关联逻辑区段允许使用标志*/ outString[outStringLength++] = newLogicSecData[deviceId].chAblRelLogSecUsableFlag; /*ABL列车关联逻辑区段允许使用标志*/
outString[outStringLength++] = newLogicSecData[deviceId].cRouteLeaveLogFlag; /*离去区段ABL列车检查标志*/ outString[outStringLength++] = newLogicSecData[deviceId].cRouteLeaveLogFlag; /*离去区段ABL列车检查标志*/
outString[outStringLength++] = newLogicSecData[deviceId].chLogSecFlockType; /*逻辑区段封锁类型*/
outString[outStringLength++] = newLogicSecData[deviceId].chLogSecProhibitFAOFlag;/*逻辑区段禁止FAO运行状态*/
} }
} }
else else
@@ -1584,19 +1528,8 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outString[outStringLength++] = newPsdData[deviceId].chVideoQkDriveState; /*视频清客驱动状态*/ outString[outStringLength++] = newPsdData[deviceId].chVideoQkDriveState; /*视频清客驱动状态*/
ShortToChar(newPsdData[deviceId].wVideoQkRelateVobcId, &outString[outStringLength]);/*视频清客对应列车ID*/ ShortToChar(newPsdData[deviceId].wVideoQkRelateVobcId, &outString[outStringLength]);/*视频清客对应列车ID*/
outStringLength += 2u; outStringLength += 2u;
outString[outStringLength] = newPsdData[deviceId].cPsdExceptOpenState; /*屏蔽门异常打开状态:0x55-异常打开,0xAA-未异常打开*/
outStringLength++;
LongToChar(newPsdData[deviceId].dwPsdRelayDownCycNum, &outString[outStringLength]); /*PSD门关继电器落下起始周期*/
outStringLength += 4U;
LongToChar(newPsdData[deviceId].dwPsdMutualLockCollStartCyc, &outString[outStringLength]); /*PSD旁路继电器吸起起始周期*/
outStringLength += 4U;
LongToChar(newPsdData[deviceId].dwPsdMutualLockErrCollCyc, &outString[outStringLength]); /*PSD旁路继电器故障按下周期*/
outStringLength += 4U;
LongToChar(newPsdData[deviceId].dwPsdMutualLockStartCyc, &outString[outStringLength]); /*PSD旁路起始周期起始周期*/
outStringLength += 4U;
outString[outStringLength++] = newPsdData[deviceId].cPsdMutualLockBtnErrState; /*旁路按钮故障状态*/
outString[outStringLength++] = newPsdData[deviceId].cPsdMutualLockBtnErrDownState; /*屏蔽门旁路按钮故障落下状态:0x55-未故障,0xAA-故障*/
} }
} }
else else
{ {
@@ -2064,8 +1997,7 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
LongToChar(pNewSpksData[deviceId].flockStartNum, &outString[outStringLength]); LongToChar(pNewSpksData[deviceId].flockStartNum, &outString[outStringLength]);
outStringLength += 4U; outStringLength += 4U;
outString[outStringLength++] = pNewSpksData[deviceId].TotalSpksDriveOutDis; outString[outStringLength++] = pNewSpksData[deviceId].TotalSpksDriveOutDis;
LongToChar(pNewSpksData[deviceId].dwSpksBtnPressCycNum, &outString[outStringLength]); /*SPKS按钮按下起始周期号*/
outStringLength += 4U;
} }
} }
else else
@@ -2083,7 +2015,7 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
else else
{ {
#ifdef PLATFORM_2OO2 #ifdef PLATFORM_2OO2
debug_infor_printf((const)"\nSpksData:%d\nspksId(2)-status-cutStatus-flockStartNum(4)-TotalSpksDriveOutDis:%d", (UINT16)sizeof(SpksDataStruct), outStringLength); debug_infor_printf((const)"\nSpksData:%d\spksId(2)-status-cutStatus-flockStartNum(4)-TotalSpksDriveOutDis:%d", (UINT16)sizeof(SpksDataStruct), outStringLength);
debug_out_array(0xAA, outString, outStringLength); debug_out_array(0xAA, outString, outStringLength);
#endif #endif
@@ -2183,9 +2115,6 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
LongToChar(pNewTrainInfoData[deviceId].dwDelayTime, &outString[outStringLength]);/*消息延迟时间*/ LongToChar(pNewTrainInfoData[deviceId].dwDelayTime, &outString[outStringLength]);/*消息延迟时间*/
outStringLength += 4u; outStringLength += 4u;
LongToChar(pNewTrainInfoData[deviceId].dwStartFlyCycNum, &outString[outStringLength]);/*列车飞车起始周期号*/
outStringLength += 4U;
ShortToChar(pNewTrainInfoData[deviceId].wGroupOtherTrainId, &outString[outStringLength]);/* 编组另一列车ID*/ ShortToChar(pNewTrainInfoData[deviceId].wGroupOtherTrainId, &outString[outStringLength]);/* 编组另一列车ID*/
outStringLength += 2u; outStringLength += 2u;
@@ -2230,8 +2159,6 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
ShortToChar(pNewTrainInfoData[deviceId].wNextTioc, &outString[outStringLength]);/*下一TIOC编号,用作RRM*/ ShortToChar(pNewTrainInfoData[deviceId].wNextTioc, &outString[outStringLength]);/*下一TIOC编号,用作RRM*/
outStringLength += 2u; outStringLength += 2u;
outString[outStringLength++] = pNewTrainInfoData[deviceId].chDerailment; /*脱轨状态*/ outString[outStringLength++] = pNewTrainInfoData[deviceId].chDerailment; /*脱轨状态*/
outString[outStringLength++] = pNewTrainInfoData[deviceId].chIntegrityState; /*完整性状态*/
outString[outStringLength++] = pNewTrainInfoData[deviceId].chEscapeDoorState; /*逃生门状态*/
ShortToChar(pNewTrainInfoData[deviceId].wHeadAxisId, &outString[outStringLength]);/*前方计轴编号*/ ShortToChar(pNewTrainInfoData[deviceId].wHeadAxisId, &outString[outStringLength]);/*前方计轴编号*/
outStringLength += 2u; outStringLength += 2u;
outString[outStringLength++] = pNewTrainInfoData[deviceId].wHeadITEResult; /*前方ITE识别结果*/ outString[outStringLength++] = pNewTrainInfoData[deviceId].wHeadITEResult; /*前方ITE识别结果*/
@@ -2799,342 +2726,6 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outStringLength = 0u; outStringLength = 0u;
} }
/*************************************打印SSKS闪灯稳灯数据******************************************************/
pSsksLightRelayData = GetSsksLightRelayData();
deviceNum = GetSsksLightRelaySum();
for (ii = 0U; ii < deviceNum; ii++)
{
/*比较数据*/
comparaResult = DeviceCompara((UINT8*)(&Record_SsksLightRelayDataStr[ii]), (UINT16)sizeof(SsksLightRelayDataStruct),
(UINT8*)(&pSsksLightRelayData[ii]), (UINT16)sizeof(SsksLightRelayDataStruct));
if (0U == comparaResult)
{
/*比较数据一致*/
}
else if (1U == comparaResult)
{
/*比较数据不一致*/
if (CI_ERROR == Flag)
{
/*不打印设备数据*/
}
else
{
/**************打印数据信息****************/
ShortToChar(pSsksLightRelayData[ii].SsksLightRelayId, &outString[outStringLength]); /*SSKS闪灯稳灯继电器ID*/
outStringLength += 2U;
outString[outStringLength] = pSsksLightRelayData[ii].RelEnterRouteLockFlag; /*关联驶入存车线进路锁闭标志:0x55-无效,0xAA-有效*/
outStringLength++;
outString[outStringLength] = pSsksLightRelayData[ii].RelExportRouteLockFlag; /*关联驶出存车线进路锁闭标志:0x55-无效,0xAA-有效*/
outStringLength++;
LongToChar(pSsksLightRelayData[ii].dwSteadyLightDelayStartCycNum, &outString[outStringLength]); /*延时驱稳灯起始周期*/
outStringLength += 4U;
}
}
else
{
returnValue = CI_ERROR;
break;
}
}
if (outStringLength == 0U)
{
}
else
{
#ifdef PLATFORM_2OO2
debug_infor_printf((const)"\nSsksLightRelayData:%d\nSsksLightRelayId(2)-RelEnterRouteLockFlag-RelExportRouteLockFlag-dwSteadyLightDelayStartCycNum(4):%d", (UINT16)sizeof(SsksLightRelayDataStruct), outStringLength);
debug_out_array(0xAAU, outString, outStringLength);
#endif
/*清空打印数据*/
CleanString(outString);
outStringLength = 0U;
}
/*************************************打印接触网数据******************************************************/
pOhlDataStruct = GetOhlData();
deviceNum = GetOhlCurSum();
for (ii = 0U; ii < deviceNum; ii++)
{
/*比较数据*/
deviceId = GetOhlId(ii);
comparaResult = DeviceCompara((UINT8*)(&Record_OhlDataStru[deviceId]), (UINT16)sizeof(OhlDataStruct),
(UINT8*)(&pOhlDataStruct[deviceId]), (UINT16)sizeof(OhlDataStruct));
if (0U == comparaResult)
{
/*比较数据一致*/
}
else if (1U == comparaResult)
{
/*比较数据不一致*/
if (CI_ERROR == Flag)
{
/*不打印设备数据*/
}
else
{
/**************打印数据信息****************/
ShortToChar(pOhlDataStruct[deviceId].wOhlId, &outString[outStringLength]); /*接触网分区ID*/
outStringLength += 2U;
outString[outStringLength] = pOhlDataStruct[deviceId].chPowerState; /*接触网供电状态:0x55-有电,0xAA-无电,0xFF-未知*/
outStringLength++;
LongToChar(pOhlDataStruct[deviceId].dwOhlDeEnerCycNum, &outString[outStringLength]); /*接触网断电起始周期*/
outStringLength += 4U;
LongToChar(pOhlDataStruct[deviceId].dwOhlUnknowCycNum, &outString[outStringLength]); /*接触网未知起始周期*/
outStringLength += 4U;
outString[outStringLength] = pOhlDataStruct[deviceId].chOhlBypassFlag; /*接触网旁路状态:0x55-未旁路,0xAA-旁路*/
outStringLength++;
}
}
else
{
returnValue = CI_ERROR;
break;
}
}
if (outStringLength == 0U)
{
}
else
{
#ifdef PLATFORM_2OO2
debug_infor_printf((const)"\nOhlData:%d\nwOhlId(2)-chPowerState-dwOhlDeEnerCycNum(4)-dwOhlUnknowCycNum(4)-chOhlBypassFlag:%d", (UINT16)sizeof(OhlDataStruct), outStringLength);
debug_out_array(0xAAU, outString, outStringLength);
#endif
/*清空打印数据*/
CleanString(outString);
outStringLength = 0U;
}
/*************************************打印ECS数据******************************************************/
pEcsDataStruct = GetEcsData();
deviceNum = GetEcsCurSum();
for (ii = 0U; ii < deviceNum; ii++)
{
/*比较数据*/
deviceId = GetEcsId(ii);
comparaResult = DeviceCompara((UINT8*)(&Record_EcsDataStru[deviceId]), (UINT16)sizeof(ECSDataStruct),
(UINT8*)(&pEcsDataStruct[deviceId]), (UINT16)sizeof(ECSDataStruct));
if (0U == comparaResult)
{
/*比较数据一致*/
}
else if (1U == comparaResult)
{
/*比较数据不一致*/
if (CI_ERROR == Flag)
{
/*不打印设备数据*/
}
else
{
/**************打印数据信息****************/
ShortToChar(pEcsDataStruct[deviceId].wEcsId, &outString[outStringLength]); /*ECS/隧道 ID*/
outStringLength += 2U;
outString[outStringLength] = pEcsDataStruct[deviceId].cAutoTrigState; /*ECS自动触发状态:0x55-启用,0xAA-停用*/
outStringLength++;
ShortToChar(pEcsDataStruct[deviceId].wRelTrainId, &outString[outStringLength]); /*隧道关联列车ID*/
outStringLength += 2U;
LongToChar(pEcsDataStruct[deviceId].dwTrainStopStartCycNum, &outString[outStringLength]); /*关联列车停车起始周期号*/
outStringLength += 4U;
LongToChar(pEcsDataStruct[deviceId].dwTrainMoveStartCycNum, &outString[outStringLength]); /*关联列车移动起始周期号*/
outStringLength += 4U;
outString[outStringLength] = pEcsDataStruct[deviceId].cJamState; /*隧道拥堵状态:0x55-拥堵,0xAA-不拥堵*/
outStringLength++;
if (ECS_REL_PHYSEC_MAX_NUM >= pEcsDataStruct[deviceId].cOccPhySecNum)
{
outString[outStringLength++] = pEcsDataStruct[deviceId].cOccPhySecNum; /*隧道内占用的物理区段数量*/
for (jj = 0U; jj < pEcsDataStruct[deviceId].cOccPhySecNum; jj++)
{
ShortToChar(pEcsDataStruct[deviceId].szOccPhySecId[jj], &outString[outStringLength]); /*隧道内占用的物理区段ID数组*/
outStringLength += 2U;
}
}
else
{
outString[outStringLength++] = 0U; /*逻辑进路列车脚下逻辑区段数量超限,不打印*/
}
}
}
else
{
returnValue = CI_ERROR;
break;
}
}
if (outStringLength == 0U)
{
}
else
{
#ifdef PLATFORM_2OO2
debug_infor_printf((const)"\nECSData:%d\nwEcsId(2)-cAutoTrigState-wRelTrainId(2)-dwTrainStopStartCycNum(4)-dwTrainMoveStartCycNum(4)-cJamState-cOccPhySecNum-szOccPhySecId(2*Num):%d", (UINT16)sizeof(ECSDataStruct), outStringLength);
debug_out_array(0xAAU, outString, outStringLength);
#endif
/*清空打印数据*/
CleanString(outString);
outStringLength = 0U;
}
/*************************************打印联络线旁路数据******************************************************/
pConnectOverrideInfo = GetConnectOverrideData();
deviceNum = GetConnectOverrideRelaySum();
if (NULL == pConnectOverrideInfo)
{
/*异常,nothing*/
}
else
{
for (ii = 0U; ii < deviceNum; ii++)
{
/*比较数据*/
deviceId = pConnectOverrideInfo[ii].ConnectOverrideId;
comparaResult = DeviceCompara((UINT8*)(&Record_ConnectOverrideData[ii]), (UINT16)sizeof(ConnectOverrideDataStru),
(UINT8*)(&pConnectOverrideInfo[ii]), (UINT16)sizeof(ConnectOverrideDataStru));
if (0U == comparaResult)
{
/*比较数据一致*/
}
else if (1U == comparaResult)
{
/*比较数据不一致*/
if (CI_ERROR == Flag)
{
/*不打印设备数据*/
}
else
{
/**************打印数据信息****************/
ShortToChar(pConnectOverrideInfo[ii].ConnectOverrideId, &outString[outStringLength]);
outStringLength += 2u;
outString[outStringLength] = pConnectOverrideInfo[ii].OverrideState;
outStringLength += 1u;
outString[outStringLength] = pConnectOverrideInfo[ii].OverrideReason;
outStringLength += 1u;
LongToChar(pConnectOverrideInfo[ii].OverridePressStartCyc, &outString[outStringLength]);
outStringLength += 4u;
LongToChar(pConnectOverrideInfo[ii].OverrideErrTrigStartCyc, &outString[outStringLength]);
outStringLength += 4u;
outString[outStringLength] = pConnectOverrideInfo[ii].OverrideErrTrigState;
outStringLength += 1u;
outString[outStringLength] = pConnectOverrideInfo[ii].OverrideErrDownState;
outStringLength += 1u;
}
}
else
{
returnValue = CI_ERROR;
break;
}
}
if (0u == outStringLength)
{
/*nothing*/
}
else
{
#ifdef PLATFORM_2OO2
debug_infor_printf((const)"\nConnectOverrideData:%d\nId(2)-State(1)-Reason(1)-PressCyc(4)-ErrTrigCyc(4)-ErrTrigStt(1)-ErrDownStt(1):%d", (UINT16)sizeof(ConnectOverrideDataStru), outStringLength);
debug_out_array(0xAAU, outString, outStringLength);
#endif
/*清空打印数据*/
CleanString(outString);
outStringLength = 0U;
}
}
/*************************************打印SpeedLimitSec数据******************************************************/
tsrSecInfo = GetSpeedLimitSecInfo();
tsrSecInfoNums = GetSpeedLimitSectionSum();
for (ii = 0; ii < tsrSecInfoNums; ii++)
{
/*比较数据*/
deviceId = GetSpeedLimitSecId(ii);
comparaResult = DeviceCompara((UINT8*)(&Record_TRSDataStru[deviceId]), (UINT16)sizeof(SpeedLimitSecInfo),
(UINT8*)(&tsrSecInfo[deviceId]), (UINT16)sizeof(SpeedLimitSecInfo));
if (0U == comparaResult)
{
/*比较数据一致*/
}
else if (1U == comparaResult)
{
/*比较数据不一致*/
if (CI_ERROR == Flag)
{
/*不打印设备数据*/
}
else
{
/**************打印数据信息****************/
ShortToChar(tsrSecInfo[deviceId].secID, &outString[outStringLength]); /*限速区段ID*/
outStringLength += 2U;
outString[outStringLength] = tsrSecInfo[deviceId].chTSRSetFlag; /*临时限速设置标志位,0x55设置,0xaa 未设置*/
outStringLength++;
outString[outStringLength] = tsrSecInfo[deviceId].chNRSRSetFlag; /*NR限速设置标志位,0x55设置,0xaa 未设置*/
outStringLength++;
outString[outStringLength] = tsrSecInfo[deviceId].chTFSRSetFlag; /*台风限速设置标志位,0x55设置,0xaa 未设置*/
outStringLength++;
outString[outStringLength] = tsrSecInfo[deviceId].chAllSRSetFlag; /*全线限速设置标志位,0x55设置,0xaa 未设置*/
outStringLength++;
outString[outStringLength] = tsrSecInfo[deviceId].chTSRSetValue; /*临时限速值*/
outStringLength++;
outString[outStringLength] = tsrSecInfo[deviceId].chNRSRSetValue; /*NR限速值*/
outStringLength++;
outString[outStringLength] = tsrSecInfo[deviceId].chTFSRSetValue; /*台风限速值*/
outStringLength++;
outString[outStringLength] = tsrSecInfo[deviceId].chAllSRSetValue; /*全线限速值*/
outStringLength++;
}
}
else
{
returnValue = CI_ERROR;
break;
}
}
if (outStringLength == 0U)
{
}
else
{
#ifdef PLATFORM_2OO2
debug_infor_printf((const)"\nSLSData:%d\nsecID(2)--TSRSetFlag-NRSRSetFlag-TFSRSetFlag-AllSRSetFlag:%d", (UINT16)sizeof(SpeedLimitSecInfo), outStringLength);
debug_out_array(0xAAU, outString, outStringLength);
#endif
/*清空打印数据*/
CleanString(outString);
outStringLength = 0U;
}
return returnValue; return returnValue;
} }
-4
View File
@@ -45,10 +45,6 @@
#include "../Route/LogicalRouteDataManage.h" #include "../Route/LogicalRouteDataManage.h"
#include "NonAutoReturnDataManage.h" #include "NonAutoReturnDataManage.h"
#include "NonAutoReturnConfigDataManage.h" #include "NonAutoReturnConfigDataManage.h"
#include "../SsksLightRelay/SsksLightRelayDataManage.h"
#include "../ECS/ECSDataManage.h"
#include "SpeedLimitSecConfigDataManage.h"
#include "../ConnectOverride/ConnectOverrideDataMg.h"
#ifdef PLATFORM_LABVIEW_DEBUG #ifdef PLATFORM_LABVIEW_DEBUG
#include "stdio.h" #include "stdio.h"
@@ -878,7 +878,7 @@ void PhySecFaultUnlockLogicManage(const UINT16 phySectionId,const UINT8 virCIid)
*/ */
/*正常情况下区故解绿光带*/ /*正常情况下区故解绿光带*/
phyFaultUnLockRes = PhySecFaultUnlockLogicProcess(phySectionId, CI_ERROR); phyFaultUnLockRes = PhySecFaultUnlockLogicProcess(phySectionId);
if (CI_SUCCESS == phyFaultUnLockRes) if (CI_SUCCESS == phyFaultUnLockRes)
{ /*成功*/ { /*成功*/
routeDir = GetRouteDirection(lockBelongRouteId); routeDir = GetRouteDirection(lockBelongRouteId);
@@ -993,7 +993,7 @@ void PhySecFaultUnlockLogicManage(const UINT16 phySectionId,const UINT8 virCIid)
(CICI_RELAY_INTERFACE_CONFIRM_YES == confirmRelayInterfaceFlag)&& (CICI_RELAY_INTERFACE_CONFIRM_YES == confirmRelayInterfaceFlag)&&
(FUNC_SWITCH_ON == funcSwitchSupportRelayInterface)) (FUNC_SWITCH_ON == funcSwitchSupportRelayInterface))
{ {
phyFaultUnLockRes = PhySecFaultUnlockLogicProcess(phySectionId, CI_ERROR); phyFaultUnLockRes = PhySecFaultUnlockLogicProcess(phySectionId);
if (CI_SUCCESS == phyFaultUnLockRes) if (CI_SUCCESS == phyFaultUnLockRes)
{ /*成功*/ { /*成功*/
routeDir = GetRouteDirection(lockBelongRouteId); routeDir = GetRouteDirection(lockBelongRouteId);
@@ -1379,7 +1379,6 @@ void RouteRecoverOpenProc(const UINT16 routeId)
UINT8 recoverState = ROUTE_RECOVER_STA_STAY;/*当前恢复重开状态*/ UINT8 recoverState = ROUTE_RECOVER_STA_STAY;/*当前恢复重开状态*/
UINT8 errType = CI_ERROR; UINT8 errType = CI_ERROR;
UINT8 localCiType = GetLocalCiType();/*获得联锁类型*/ UINT8 localCiType = GetLocalCiType();/*获得联锁类型*/
UINT16 wStartSignalId = 0U; /*进路始端信号机ID*/
routeState = GetRouteState(routeId); routeState = GetRouteState(routeId);
recoverState = GetRouteRecoverOpenFlag(routeId); recoverState = GetRouteRecoverOpenFlag(routeId);
@@ -1397,7 +1396,6 @@ void RouteRecoverOpenProc(const UINT16 routeId)
errType = RecoverOpenRouteCheckCLD(routeId); errType = RecoverOpenRouteCheckCLD(routeId);
} }
wStartSignalId = GetRouteStartSignalId(routeId); /*获取进路始端信号机ID*/
if (errType == CI_SUCCESS) if (errType == CI_SUCCESS)
{ {
SetRouteOpenSigStartCycNum(routeId, Get2oo2CurCycleNum()); SetRouteOpenSigStartCycNum(routeId, Get2oo2CurCycleNum());
@@ -1412,9 +1410,6 @@ void RouteRecoverOpenProc(const UINT16 routeId)
else else
{ {
SetRouteRecoverState(routeId, ROUTE_RECOVER_STA_STAY);/*一旦出现PSD、SPKS、扣车以外的条件不满足,将进路恢复状态设置为不可恢复*/ SetRouteRecoverState(routeId, ROUTE_RECOVER_STA_STAY);/*一旦出现PSD、SPKS、扣车以外的条件不满足,将进路恢复状态设置为不可恢复*/
/*开放条件检查失败,设置对应始端信号机扣车旁路按钮无效*/
SetDetCutBtnState(wStartSignalId, SIGNAL_DETAIN_CUT_VALID_NO);
} }
} }
} }
@@ -1607,7 +1602,6 @@ void SetAtsExpectLockOverlapIdProc(const UINT16 expLkOverlapId,const UINT8 lockT
UINT8 CheckPhySecFaultUnlockCanDo(const UINT16 phySectionId,const UINT8 virCIid) UINT8 CheckPhySecFaultUnlockCanDo(const UINT16 phySectionId,const UINT8 virCIid)
{ {
UINT16 lockBelongRouteId = 0u; /*区段锁闭所属进路ID*/ UINT16 lockBelongRouteId = 0u; /*区段锁闭所属进路ID*/
UINT16 wTempPhySecId = 0u;
UINT8 reVal = CI_ERROR; UINT8 reVal = CI_ERROR;
UINT8 belongvirCIid = 0u; UINT8 belongvirCIid = 0u;
UINT8 includeVirFlag = GetCiFunctionSwitchConfig(FUNC_INCLUDEVIRCI_FLAG); UINT8 includeVirFlag = GetCiFunctionSwitchConfig(FUNC_INCLUDEVIRCI_FLAG);
@@ -1673,7 +1667,7 @@ UINT8 CheckPhySecFaultUnlockCanDo(const UINT16 phySectionId,const UINT8 virCIid)
/*按顺序解锁进路异常锁闭*/ /*按顺序解锁进路异常锁闭*/
if (CI_SUCCESS == reVal) if (CI_SUCCESS == reVal)
{ {
isErrLock = RouteFirstLockErrCheck(lockBelongRouteId, &wTempPhySecId); isErrLock = RouteFirstLockErrCheck(lockBelongRouteId);
phyLockState = GetPhySecLockState(phySectionId); phyLockState = GetPhySecLockState(phySectionId);
/*第一个锁闭的区段是故障锁闭*/ /*第一个锁闭的区段是故障锁闭*/
if (CI_SUCCESS == isErrLock ) if (CI_SUCCESS == isErrLock )
@@ -41,7 +41,6 @@
#include "../LogicManage/TradInterlockLogicManage.h" #include "../LogicManage/TradInterlockLogicManage.h"
#include "../Train/TrainDefine.h" #include "../Train/TrainDefine.h"
#include "LogicalRouteDataManage.h" #include "LogicalRouteDataManage.h"
#include "../EnvelopeManage/EnvelopeManageAPI.h"
#ifdef SCADE_MODE #ifdef SCADE_MODE
#include "../LogicManage/General/LogicManageScadeInterface.h" #include "../LogicManage/General/LogicManageScadeInterface.h"
File diff suppressed because it is too large Load Diff
@@ -365,11 +365,9 @@ void SetOverlapLockState(const UINT16 overlapId, const UINT8 lockState, const UI
/* /*
* *
* const UINT16 routeId, ID * const UINT16 routeId, ID
* const UINT8 chSendLevel * void
* void
* BY cgh 20250828
*/ */
void SetCommonRouteLogicManage(const UINT16 routeId, const UINT8 chSendLevel); void SetCommonRouteLogicManage(const UINT16 routeId);
/* /*
* *
@@ -949,7 +947,7 @@ UINT8 CheckPhysecFlockReasonSpksId(const UINT16 phySectionId, UINT16* spksId, UI
* *
*mpt 202239 *mpt 202239
*/ */
UINT8 LaborUnlockOverlapProc(const UINT16 overlapId); UINT8 LaborUnlockOverlapProc(const UINT8 overlapId);
/* /*
* *
* const UINT16 routeId, ID * const UINT16 routeId, ID
@@ -1133,84 +1131,6 @@ void RouteTrainResUnlockManage(void);
*/ */
void LeadRouteFirstXuanPaiManage(const UINT16 routeId); void LeadRouteFirstXuanPaiManage(const UINT16 routeId);
/*
* OC-P旁路状态确认标志
* UINT8 setFlag,
* UINT16 pscId PSC设备ID
*
*/
void SetOcPscPlConfirmFlag(UINT8 setFlag, const UINT16 ocPId);
/*
*
* const UINT16 wRouteId ID
*
* by cgh 20250617
*/
void OverlapZhaoChaRelayUpDateManage(void);
/*
*
*
*
* Create: fan 20250725
*/
void TrainJumpBackApplyProc(void);
/*
* @brief FAO运行处理
* @param const UINT8 setFlag FAO运行的标志
* const UINT8 cLogSecSum
* const UINT16 pLogSecIdBuff[]
*/
void LogSecProhibitFAOManage(const UINT8 setFlag, const UINT8 cLogSecSum, const UINT16 pLogSecIdBuff[]);
/*
*
*
*
* Created By LQ 2025.12.12
*/
void SignalTrainCrossRedPro(void);
/*
* @brief
* @param const UINT16 ohlId ID
* const UINT8 setState
*/
void OhlBypassManage(const UINT16 ohlId, const UINT8 setState);
/*
* @brief
* const UINT8 cLogSecSum
* const UINT16 pLogSecIdBuff[]
* Created By fan 2026.01.22
*/
void LogSecFlockCmdSetManage(const UINT8 cLogSecSum, const UINT16 pLogSecIdBuff[]);
/*
* @brief
* const UINT8 cLogSecSum
* const UINT16 pLogSecIdBuff[]
* Created By fan 2026.01.22
*/
void LogSecFlockCmdCancleManage(const UINT8 cLogSecSum, const UINT16 pLogSecIdBuff[]);
/*
* ECS自动触发命令处理
* const UINT16 EcsId ECS ID
* const UINT8 setState
*
* Created By LQ 2026.01.26
*/
void EcsAutoTrigCmdPro(const UINT16 EcsId, const UINT8 setState);
/*
*
* const UINT16 EcsId ECS ID
*
*/
void SwitchNormalPosProc(void);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
@@ -189,9 +189,6 @@ UINT8 OpenCbtcLTrainRouteErrProcess(const UINT16 routeId, const UINT8 checkStep)
UINT8 sendLevel = ESEND_LEVEL_ZERO; UINT8 sendLevel = ESEND_LEVEL_ZERO;
UINT8 routeReverseProperty = 0u; UINT8 routeReverseProperty = 0u;
UINT8 airShaftRouteType = 0u; UINT8 airShaftRouteType = 0u;
UINT8 cDisneyConnectAttr = CI_ERROR; /*联络线进路类型(迪士尼)*/
cDisneyConnectAttr = GetRouteDisneyConnectAttr(routeId);
/* 联锁逻辑检查 */ /* 联锁逻辑检查 */
/* 进路监督模式为【CBTC】*/ /* 进路监督模式为【CBTC】*/
@@ -504,37 +501,6 @@ UINT8 OpenCbtcLTrainRouteErrProcess(const UINT16 routeId, const UINT8 checkStep)
{ {
; ;
} }
if ((CI_SUCCESS == reResult) || (CI_ROUTE_RECOVER_ERR == reResult))
{
/*迪士尼联络线其他联锁条件检查*/
checkResult = DsnConnectOtherCiValidCheck(routeId);
if (CI_ERROR == checkResult)
{
reResult = checkResult;
}
else
{
/*nothing*/
}
}
else
{
/*nothing*/
}
if ((CI_ERROR == reResult)
&& ((ROUTE_DISNEY_CONNECT_ALLOTHER == cDisneyConnectAttr)
|| (ROUTE_DISNEY_CONNECT_ENDMINE == cDisneyConnectAttr)))
{
/*始端不在本线的迪士尼联络线进路,自动重开*/
reResult = CI_ROUTE_RECOVER_ERR;
}
else
{
/*不处理*/
}
return reResult; return reResult;
} }
@@ -557,16 +523,16 @@ UINT8 OpenBlocLTrainRouteErrProcess(const UINT16 routeId)
UINT8 checkResult = CI_ERROR; /*检查结果*/ UINT8 checkResult = CI_ERROR; /*检查结果*/
UINT8 devState = 0u; /*设备状态*/ UINT8 devState = 0u; /*设备状态*/
UINT16 devId = 0u; /*设备ID*/
/* 取消标志 */
/* 进路内设备数据 */
/* 取消标志 */
UINT8 const zxqFlag = GetRouteZongQuXiaoFlag(routeId); UINT8 const zxqFlag = GetRouteZongQuXiaoFlag(routeId);
UINT8 const zrjFlag = GetRouteZongRenJieFlag(routeId); UINT8 const zrjFlag = GetRouteZongRenJieFlag(routeId);
/*故障发送级别*/ /*故障发送级别*/
UINT8 sendLevel = ESEND_LEVEL_ZERO; UINT8 sendLevel = ESEND_LEVEL_ZERO;
UINT8 cDisneyConnectAttr = CI_ERROR; /*联络线进路类型(迪士尼)*/
cDisneyConnectAttr = GetRouteDisneyConnectAttr(routeId);
/* 联锁逻辑检查 */ /* 联锁逻辑检查 */
/* 进路监督模式为【点式】*/ /* 进路监督模式为【点式】*/
@@ -768,37 +734,6 @@ UINT8 OpenBlocLTrainRouteErrProcess(const UINT16 routeId)
reResult = checkResult; reResult = checkResult;
} }
} }
if ((CI_SUCCESS == reResult) || (CI_ROUTE_RECOVER_ERR == reResult))
{
/*迪士尼联络线其他联锁条件检查*/
checkResult = DsnConnectOtherCiValidCheck(routeId);
if (CI_ERROR == checkResult)
{
reResult = checkResult;
}
else
{
/*nothing*/
}
}
else
{
/*nothing*/
}
if ((CI_ERROR == reResult)
&& ((ROUTE_DISNEY_CONNECT_ALLOTHER == cDisneyConnectAttr)
|| (ROUTE_DISNEY_CONNECT_ENDMINE == cDisneyConnectAttr)))
{
/*始端不在本线的迪士尼联络线进路,自动重开*/
reResult = CI_ROUTE_RECOVER_ERR;
}
else
{
/*不处理*/
}
/* 返回 */ /* 返回 */
return reResult; return reResult;
} }
@@ -1161,6 +1096,7 @@ UINT8 OpenBlocReturnRouteErrProcess(const UINT16 routeId)
UINT8 checkResult = CI_ERROR; /*检查结果*/ UINT8 checkResult = CI_ERROR; /*检查结果*/
UINT8 devState = 0u; /*设备状态*/ UINT8 devState = 0u; /*设备状态*/
UINT8 devId = 0u; /*设备Id*/
/* 进路内设备数据 */ /* 进路内设备数据 */
/* 取消标志 */ /* 取消标志 */
@@ -1169,6 +1105,8 @@ UINT8 OpenBlocReturnRouteErrProcess(const UINT16 routeId)
/*故障发送级别*/ /*故障发送级别*/
UINT8 sendLevel = ESEND_LEVEL_ZERO; UINT8 sendLevel = ESEND_LEVEL_ZERO;
UINT16 endSigId = 0u; /*获取中途折返信号机ID*/
UINT8 endSigState = SIGNAL_OPEN;
/* 联锁逻辑检查 */ /* 联锁逻辑检查 */
@@ -1408,9 +1346,6 @@ UINT8 KeepCbtcLTrainRouteErrProcess(const UINT16 routeId)
UINT16 trainEnteringRouteState = 0u; UINT16 trainEnteringRouteState = 0u;
UINT8 signalCrossState = 0u; UINT8 signalCrossState = 0u;
UINT8 rcWorkMode = 0U; /*rc工作模式*/ UINT8 rcWorkMode = 0U; /*rc工作模式*/
UINT8 cDisneyConnectAttr = CI_ERROR; /*联络线进路类型(迪士尼)*/
cDisneyConnectAttr = GetRouteDisneyConnectAttr(routeId);
rcWorkMode = GetLocalRcWorkMode(); rcWorkMode = GetLocalRcWorkMode();
/* 联锁逻辑检查 */ /* 联锁逻辑检查 */
@@ -1662,36 +1597,6 @@ UINT8 KeepCbtcLTrainRouteErrProcess(const UINT16 routeId)
} }
} }
if ((CI_SUCCESS == reResult) || (CI_ROUTE_RECOVER_ERR == reResult))
{
/*迪士尼联络线其他联锁条件检查*/
checkResult = DsnConnectOtherCiValidCheck(routeId);
if (CI_ERROR == checkResult)
{
reResult = checkResult;
}
else
{
/*nothing*/
}
}
else
{
/*nothing*/
}
if ((CI_ERROR == reResult)
&& ((ROUTE_DISNEY_CONNECT_ALLOTHER == cDisneyConnectAttr)
|| (ROUTE_DISNEY_CONNECT_ENDMINE == cDisneyConnectAttr)))
{
/*始端不在本线的迪士尼联络线进路,自动重开*/
reResult = CI_ROUTE_RECOVER_ERR;
}
else
{
/*不处理*/
}
/* 返回 */ /* 返回 */
return reResult; return reResult;
} }
@@ -1711,16 +1616,17 @@ UINT8 KeepBlocLTrainRouteErrProcess(const UINT16 routeId)
UINT8 const functionId = EFUNC_KEEP_UT_SIGNAL_ERR_ZX; UINT8 const functionId = EFUNC_KEEP_UT_SIGNAL_ERR_ZX;
/* 局部变量定义初始化 */ /* 局部变量定义初始化 */
UINT8 reResult = CI_ERROR; /*返回值*/ UINT8 reResult = CI_ERROR; /*返回值*/
UINT8 checkResult = CI_ERROR; /*检查结果*/ UINT8 checkResult = CI_ERROR; /*检查结果*/
UINT8 devState = 0u; /*设备状态*/ UINT8 devState = 0u; /*设备状态*/
UINT8 cDisneyConnectAttr = CI_ERROR; /*联络线进路类型(迪士尼)*/ UINT16 devId = 0u; /*设备ID*/
/* 取消标志 */
/* 进路内设备数据 */
/* 取消标志 */
UINT8 const zxqFlag = GetRouteZongQuXiaoFlag(routeId); UINT8 const zxqFlag = GetRouteZongQuXiaoFlag(routeId);
UINT8 const zrjFlag = GetRouteZongRenJieFlag(routeId); UINT8 const zrjFlag = GetRouteZongRenJieFlag(routeId);
cDisneyConnectAttr = GetRouteDisneyConnectAttr(routeId);
/*故障发送级别*/ /*故障发送级别*/
UINT8 sendLevel = ESEND_LEVEL_ZERO; UINT8 sendLevel = ESEND_LEVEL_ZERO;
@@ -1917,36 +1823,6 @@ UINT8 KeepBlocLTrainRouteErrProcess(const UINT16 routeId)
} }
} }
if ((CI_SUCCESS == reResult) || (CI_ROUTE_RECOVER_ERR == reResult))
{
/*迪士尼联络线其他联锁条件检查*/
checkResult = DsnConnectOtherCiValidCheck(routeId);
if (CI_ERROR == checkResult)
{
reResult = checkResult;
}
else
{
/*nothing*/
}
}
else
{
/*nothing*/
}
if ((CI_ERROR == reResult)
&& ((ROUTE_DISNEY_CONNECT_ALLOTHER == cDisneyConnectAttr)
|| (ROUTE_DISNEY_CONNECT_ENDMINE == cDisneyConnectAttr)))
{
/*始端不在本线的迪士尼联络线进路,自动重开*/
reResult = CI_ROUTE_RECOVER_ERR;
}
else
{
/*不处理*/
}
/* 返回 */ /* 返回 */
return reResult; return reResult;
} }
@@ -2266,8 +2142,10 @@ UINT8 KeepBlocReturnRouteErrProcess(const UINT16 routeId)
UINT8 checkResult = CI_ERROR; /*检查结果*/ UINT8 checkResult = CI_ERROR; /*检查结果*/
UINT8 devState = 0u; /*设备状态*/ UINT8 devState = 0u; /*设备状态*/
UINT16 devId = 0u; /*设备ID*/
/* 取消标志 */ /* 进路内设备数据 */
/* 取消标志 */
UINT8 const zxqFlag = GetRouteZongQuXiaoFlag(routeId); UINT8 const zxqFlag = GetRouteZongQuXiaoFlag(routeId);
UINT8 const zrjFlag = GetRouteZongRenJieFlag(routeId); UINT8 const zrjFlag = GetRouteZongRenJieFlag(routeId);
@@ -3133,9 +3011,10 @@ UINT8 RecoverOpenRouteCheckCLD(const UINT16 routeId)
UINT8 routeType = 0u; /*进路类型*/ UINT8 routeType = 0u; /*进路类型*/
UINT8 errType = CI_ERROR;/*定义检查失败时的错误类型*/ UINT8 errType = CI_ERROR;/*定义检查失败时的错误类型*/
UINT8 jkjRelayValidFlag = 0u; /*初始化应急盘继电器有效状态*/ UINT8 jkjRelayValidFlag = 0u; /*初始化应急盘继电器有效状态*/
UINT16 jkjRelayId = GetJkjRelayId();
jkjRelayValidFlag = GetCiJkjFlag(); jkjRelayValidFlag = GetCiJkjFlag();
routeType = GetRouteType(routeId); /*获取进路类型*/ routeType = GetRouteType(routeId); /*获取进路类型*/
if (JKJ_REYLAY_VALID == jkjRelayValidFlag) if ((jkjRelayId > 0u) && (JKJ_REYLAY_VALID == jkjRelayValidFlag))
{/*应急盘继电器有效状态,不允许信号重开*/ {/*应急盘继电器有效状态,不允许信号重开*/
errType = CI_ERROR; errType = CI_ERROR;
} }
@@ -3181,6 +3060,11 @@ static UINT8 OtherCiValidErrCheck(UINT16 const routeId)
UINT8 devState = 0u; UINT8 devState = 0u;
UINT8 ret = CI_SUCCESS; UINT8 ret = CI_SUCCESS;
/*进路始端信号机关联的PSD*/
UINT16 rtStartSigId = 0u;/*进路始端信号机ID*/
UINT8 psdSum = 0u;/*进路始端信号机关联的PSD数量*/
UINT16 *psdIdBuf = NULL;/*进路始端信号机关联的PSD ID数组*/
UINT16 j = 0u;/*遍历进路始端信号机关联的PSD ID数组的下标*/
UINT8 toOpenCheckFlag = 0u;/*恢复可重开信号的条件标志*/ UINT8 toOpenCheckFlag = 0u;/*恢复可重开信号的条件标志*/
UINT8 otherResult = 0u;/*其他联锁检查条件返回值*/ UINT8 otherResult = 0u;/*其他联锁检查条件返回值*/
UINT8 cFuncSwitchSpks = 0U; /*SPKS信号重开检查进路级别开关*/ UINT8 cFuncSwitchSpks = 0U; /*SPKS信号重开检查进路级别开关*/
@@ -3205,13 +3089,17 @@ static UINT8 OtherCiValidErrCheck(UINT16 const routeId)
/* 开始检查 */ /* 开始检查 */
if ((0u != checkSum) && (NULL != dataOtherCiDevBuf)) if ((0u != checkSum) && (NULL != dataOtherCiDevBuf))
{ {
/*开始检查*/ rtStartSigId = GetRouteStartSignalId(routeId);/*获得进路始端信号机*/
psdSum = GetSignalRelatedPsdSum(rtStartSigId);/*获得进路始端信号机关联的PSD数量*/
psdIdBuf = GetSignalRelatedPsdBuf(rtStartSigId);/*获得进路始端信号机关联的PSD ID数组*/
/*开始检查*/
for (i = 0u; i < checkSum; i++) for (i = 0u; i < checkSum; i++)
{ {
tmpOtherCiDevInfo = &dataOtherCiDevBuf[i]; tmpOtherCiDevInfo = &dataOtherCiDevBuf[i];
toOpenCheckFlag = 0u;/*默认为恢复不可重开*/ toOpenCheckFlag = 0u;/*默认为恢复不可重开*/
/*判断检查条件为SPKS或是进站、出战关联的PSD*/ /*判断检查条件为SPKS或是本信号机关联的PSD*/
if (CI_DEVICE_TYPE_SPKS == tmpOtherCiDevInfo->DevType) if (CI_DEVICE_TYPE_SPKS == tmpOtherCiDevInfo->DevType)
{ {
cFuncSwitchSpks = GetCiFunctionSwitchConfig(FUNC_REPEATE_OPEN_CHECK_SPKS); cFuncSwitchSpks = GetCiFunctionSwitchConfig(FUNC_REPEATE_OPEN_CHECK_SPKS);
@@ -3227,11 +3115,17 @@ static UINT8 OtherCiValidErrCheck(UINT16 const routeId)
} }
else if (CI_DEVICE_TYPE_PSD == tmpOtherCiDevInfo->DevType) else if (CI_DEVICE_TYPE_PSD == tmpOtherCiDevInfo->DevType)
{ {
toOpenCheckFlag = 1U; if ((NULL != psdIdBuf) && (0u < psdSum))
} {
else if (CI_DEVICE_TYPE_ESB == tmpOtherCiDevInfo->DevType) for (j = 0u;j < psdSum;j++)
{ {
toOpenCheckFlag = 1U; if (psdIdBuf[j] == tmpOtherCiDevInfo->DevId)
{
toOpenCheckFlag = 1u;
break;
}
}
}
} }
else else
{ {
@@ -3282,13 +3176,10 @@ static UINT8 RouteSecFLockErrCheck(UINT16 const routeId)
UINT16 devId = 0u; UINT16 devId = 0u;
UINT8 devState = 0u; UINT8 devState = 0u;
UINT8 ret = CI_SUCCESS; UINT8 ret = CI_SUCCESS;
UINT8 cRouteFlockCheck = CI_ERROR; /*封锁检查*/ UINT8 fLockType = PHY_SEC_FLOCK_TYPE_NONE;/*物理区段封锁类型变量*/
UINT8 chFlockType = 0U;/*区段封锁类型*/ UINT8 cRouteLevel = ROUTE_LEVEL_BLOC; /*进路级别*/
UINT8 chPassFlockType = SEC_FLOCK_CBTCLASTSEC_PASS;/*不检查的类型*/ UINT8 cFuncSwitchSpks = 0U; /*SPKS信号重开检查进路级别开关*/
UINT8 chPassLastFlock = ROUTE_PASS_LAST_FLOCK_NO;/*跳过最后区段配置*/
UINT8 chRouteLevel = 0U;/*进路等级*/
chRouteLevel = GetRouteLevel(routeId);
chPassLastFlock = GetRoutePassLastFlockProperty(routeId);
if (0u == checkSum) if (0u == checkSum)
{ {
/*区段数据错误*/ /*区段数据错误*/
@@ -3301,31 +3192,40 @@ static UINT8 RouteSecFLockErrCheck(UINT16 const routeId)
{ {
devId = dataIdBuf[i].PhysicalSectionId; devId = dataIdBuf[i].PhysicalSectionId;
devState = GetPhySecFLockState(devId); devState = GetPhySecFLockState(devId);
chFlockType = GetPhySecFLockType(devId);
/* 状态如果不是未封锁状态,则认为检查失败 */ /* 状态如果不是未封锁状态,则认为检查失败 */
if (PHYSICAL_SECTION_FLOCK_NO == devState) if (PHYSICAL_SECTION_FLOCK_NO == devState)
{ {
/*不处理*/ /*不处理*/
} }
else if ((ROUTE_LEVEL_CBTC == chRouteLevel)
&& (ROUTE_PASS_LAST_FLOCK_YES == chPassLastFlock)
&& ((checkSum - 1U) == i)
&& (chPassFlockType == (chPassFlockType | chFlockType)))
{
;/*CBTC进路最后区段 具备不检查ESB/APG/SPKS封锁属性/*/
}
else if (PHYSICAL_SECTION_FLOCK_YES ==devState ) else if (PHYSICAL_SECTION_FLOCK_YES ==devState )
{ {
cRouteFlockCheck = SectionFlockReOpenCheck(devId, routeId); fLockType = GetPhySecFLockType(devId);/*获得物理区段封锁类型*/
if ((CI_SUCCESS == cRouteFlockCheck)&&(CI_ERROR != ret))
if (PHY_SEC_FLOCK_TYPE_SPKS == fLockType)
{ {
ret = CI_ROUTE_RECOVER_ERR; if (CI_ERROR != ret)
{
cFuncSwitchSpks = GetCiFunctionSwitchConfig(FUNC_REPEATE_OPEN_CHECK_SPKS);
cRouteLevel = GetRouteLevel(routeId);
if ((FUNC_SWITCH_ON == cFuncSwitchSpks) || ((FUNC_SWITCH_OFF == cFuncSwitchSpks) && (ROUTE_LEVEL_CBTC == cRouteLevel)))
{
/*SPKS信号重开检查进路级别开关打开或(关闭且进路级别为CBTC)*/
ret = CI_ROUTE_RECOVER_ERR;
}
else
{
ret = CI_ERROR;
}
}
else
{
;
}
} }
else else
{ {
ret = CI_ERROR; ret = CI_ERROR;
break;
} }
} }
else else
@@ -3357,7 +3257,10 @@ static UINT8 OverlapAllSecFLockValidErrCheck(UINT16 const overlapId)
UINT16 devId = 0u; UINT16 devId = 0u;
UINT8 devState = 0u; UINT8 devState = 0u;
UINT8 ret = CI_SUCCESS; UINT8 ret = CI_SUCCESS;
UINT8 fLockOpenCheck = CI_ERROR;/*物理区段封锁类型变量*/
UINT8 fLockType = PHY_SEC_FLOCK_TYPE_NONE;/*物理区段封锁类型变量*/
UINT8 cRouteLevel = ROUTE_LEVEL_BLOC; /*进路级别*/
UINT8 cFuncSwitchSpks = 0U; /*SPKS信号重开检查进路级别开关*/
UINT16 wBelongRouteId = 0U; /*保护区段锁闭所属进路*/ UINT16 wBelongRouteId = 0U; /*保护区段锁闭所属进路*/
if ((0U != overlapId) && (OVERLAP_SUM_MAX != overlapId)) if ((0U != overlapId) && (OVERLAP_SUM_MAX != overlapId))
@@ -3379,12 +3282,29 @@ static UINT8 OverlapAllSecFLockValidErrCheck(UINT16 const overlapId)
} }
else if (PHYSICAL_SECTION_FLOCK_YES == devState) else if (PHYSICAL_SECTION_FLOCK_YES == devState)
{ {
wBelongRouteId = GetOverlapBelongRouteId(overlapId); fLockType = GetPhySecFLockType(devId);/*获得物理区段封锁类型*/
fLockOpenCheck = SectionFlockReOpenCheck(devId, wBelongRouteId);/*获得物理区段封锁重开检查*/
if ((CI_ERROR != fLockOpenCheck)&&(CI_ERROR != ret)) if (PHY_SEC_FLOCK_TYPE_SPKS == fLockType)
{ {
ret = CI_ROUTE_RECOVER_ERR; wBelongRouteId = GetOverlapBelongRouteId(overlapId);
if ((CI_ERROR != ret) && (CI_ERROR != wBelongRouteId))
{
cFuncSwitchSpks = GetCiFunctionSwitchConfig(FUNC_REPEATE_OPEN_CHECK_SPKS);
cRouteLevel = GetRouteLevel(wBelongRouteId);
if ((FUNC_SWITCH_ON == cFuncSwitchSpks) || ((FUNC_SWITCH_OFF == cFuncSwitchSpks) && (ROUTE_LEVEL_CBTC == cRouteLevel)))
{
/*SPKS信号重开检查进路级别开关打开或(关闭且进路级别为CBTC)*/
ret = CI_ROUTE_RECOVER_ERR;
}
else
{
ret = CI_ERROR;
}
}
else
{
;
}
} }
else else
{ {
@@ -3876,23 +3796,6 @@ static UINT8 OpenBlocRouteOverlapErrCheck(const UINT16 routeId)
reResult = checkResult; reResult = checkResult;
} }
} }
/*检查照查继电器状态*/
if ((CI_SUCCESS == reResult) || (CI_ROUTE_RECOVER_ERR == reResult))
{
checkResult = OverlapZhaoChaRelayCheck(overlapId, ESEND_LEVEL_ZERO);
if (CI_ERROR == checkResult)
{
reResult = checkResult;
}
else
{
;
}
}
} }
else else
@@ -4304,28 +4207,6 @@ static UINT8 KeepCbtcRouteSectionErrCheck(const UINT16 routeId)
#endif #endif
if (CI_SUCCESS == reResult)
{
/*CBTC通过进路需再检查数据中配置的逻辑区段的占用状态*/
devId = 0U;
devState = 0U;
checkResult = RouteCbtcKeepOpenLgcOccCheck(routeId, &devId, &devState);
if (CI_SUCCESS == checkResult)
{
/* 通过检查 */
reResult = CI_SUCCESS;
}
else
{
/* 失败返回 */
reResult = CI_ERROR;
}
}
else
{
/*非列车进路或已经检查失败,不处理*/
}
/* 进路内所有区段未被封锁 */ /* 进路内所有区段未被封锁 */
if (CI_SUCCESS == reResult) if (CI_SUCCESS == reResult)
{ {
@@ -4445,29 +4326,6 @@ static UINT8 OpenCbtcRouteSectionErrCheck(const UINT16 routeId)
; ;
} }
if (CI_SUCCESS == reResult)
{
/*CBTC通过进路需再检查数据中配置的逻辑区段的占用状态*/
devId = 0U;
devState = 0U;
checkResult = RouteCbtcLogSecOccCheck(routeId, &devId, &devState);
if (CI_SUCCESS == checkResult)
{
/* 通过检查 */
reResult = CI_SUCCESS;
}
else
{
/* 失败返回 */
reResult = CI_ERROR;
}
}
else
{
/*非列车进路或已经检查失败,不处理*/
}
/*使用新增的函数RouteIntruSecVainSPKSErrCheck*/ /*使用新增的函数RouteIntruSecVainSPKSErrCheck*/
#if 0 #if 0
/*侵限区段侵限条件不满足检查*/ /*侵限区段侵限条件不满足检查*/
@@ -4509,7 +4367,7 @@ static UINT8 OpenCbtcRouteSectionErrCheck(const UINT16 routeId)
} }
#endif #endif
/* 进路内所有区段未被封锁 */ /* 进路内所有区段未被封锁 */
if (CI_SUCCESS == reResult) if (checkResult == CI_SUCCESS)
{ {
checkResult = RouteSecFLockErrCheck(routeId); checkResult = RouteSecFLockErrCheck(routeId);
if ((CI_ERROR == checkResult) || (CI_ROUTE_RECOVER_ERR == checkResult)) if ((CI_ERROR == checkResult) || (CI_ROUTE_RECOVER_ERR == checkResult))
@@ -4664,8 +4522,10 @@ static UINT8 RouteIntruSecVainSPKSErrCheck(const UINT16 routeId)
UINT8 devJumpLockState = 0U; UINT8 devJumpLockState = 0U;
UINT8 intruSwitchPosValid = CI_ERROR; UINT8 intruSwitchPosValid = CI_ERROR;
UINT8 reVal = CI_ERROR; UINT8 reVal = CI_ERROR;
UINT8 fLockOpenCheck = CI_ERROR;/*物理区段封锁检查*/ UINT8 fLockType = PHY_SEC_FLOCK_TYPE_NONE;/*物理区段封锁类型变量*/
UINT8 checkFlockFlag = GetCiFunctionSwitchConfig(FUNC_INTRUSEC_CHECKFLOCK_FLAG); UINT8 checkFlockFlag = GetCiFunctionSwitchConfig(FUNC_INTRUSEC_CHECKFLOCK_FLAG);
UINT8 cFuncSwitchSpks = 0U; /*SPKS自动信号重开是否检查进路级别开关*/
UINT8 cRouteLevel = 0U;
UINT8 chPhySecLogLockState = 0U;/*物理区段逻辑锁闭状态*/ UINT8 chPhySecLogLockState = 0U;/*物理区段逻辑锁闭状态*/
/* 检查侵限状态 */ /* 检查侵限状态 */
@@ -4678,16 +4538,21 @@ static UINT8 RouteIntruSecVainSPKSErrCheck(const UINT16 routeId)
{ {
/*开始检查*/ /*开始检查*/
reVal = CI_SUCCESS;/*先将返回值设置成功,若侵限成立则会修改函数返回值为CI_ERROR或CI_ROUTE_RECOVER_ERR*/ reVal = CI_SUCCESS;/*先将返回值设置成功,若侵限成立则会修改函数返回值为CI_ERROR或CI_ROUTE_RECOVER_ERR*/
cFuncSwitchSpks = GetCiFunctionSwitchConfig(FUNC_REPEATE_OPEN_CHECK_SPKS);
cRouteLevel = GetRouteLevel(routeId);
for (i = 0u; i < checkSum; i++) for (i = 0u; i < checkSum; i++)
{ {
devId = dataIdBuf[i].SectionId; devId = dataIdBuf[i].SectionId;
devState = GetPhySecCurMergeState(devId);/*获取物理区段占用状态*/ devState = GetPhySecCurMergeState(devId);/*获取物理区段占用状态*/
devFLockState = GetPhySecFLockState(devId);/*获取物理区段封锁状态*/ devFLockState = GetPhySecFLockState(devId);/*获取物理区段封锁状态*/
fLockType = GetPhySecFLockType(devId);/*获取物理区段封锁类型*/
devLockState = GetPhySecLockState(devId); devLockState = GetPhySecLockState(devId);
devJumpLockState = GetPhySecJumpLockState(devId); devJumpLockState = GetPhySecJumpLockState(devId);
chPhySecLogLockState = PhySecLogLockStateCheck(devId); chPhySecLogLockState = PhySecLogLockStateCheck(devId);
/* 检查侵限区段是否占用或封锁*/ /* 检查侵限区段是否占用或封锁*/
if ((SECTION_OCCUPY_YES == devState) if ((SECTION_OCCUPY_YES == devState)
|| ((PHYSICAL_SECTION_FLOCK_YES == devFLockState) && (FUNC_SWITCH_ON != checkFlockFlag)) || ((PHYSICAL_SECTION_FLOCK_YES == devFLockState) && (FUNC_SWITCH_ON != checkFlockFlag))
@@ -4724,11 +4589,10 @@ static UINT8 RouteIntruSecVainSPKSErrCheck(const UINT16 routeId)
if (CI_ERROR == intruSwitchPosValid) if (CI_ERROR == intruSwitchPosValid)
{ {
/*有岔侵限条件成立*/ /*有岔侵限条件成立*/
fLockOpenCheck = SectionFlockReOpenCheck(devId, routeId);
if ((PHYSICAL_SECTION_JUMP_LOCK_YES != devJumpLockState) && (PHYSICAL_SECTION_LOCK_NO == devLockState) && (SECTION_OCCUPY_YES != devState) if ((PHYSICAL_SECTION_JUMP_LOCK_YES != devJumpLockState) && (PHYSICAL_SECTION_LOCK_NO == devLockState) && (SECTION_OCCUPY_YES != devState)
&& (PHYSICAL_SECTION_FLOCK_YES == devFLockState) && (LOG_SECTION_LOGLOCK_NO == chPhySecLogLockState) && (PHYSICAL_SECTION_FLOCK_YES == devFLockState) && (PHY_SEC_FLOCK_TYPE_SPKS == fLockType) && (LOG_SECTION_LOGLOCK_NO == chPhySecLogLockState)
&& (CI_SUCCESS==fLockOpenCheck)) && ((FUNC_SWITCH_ON == cFuncSwitchSpks) || ((FUNC_SWITCH_OFF == cFuncSwitchSpks) && (ROUTE_LEVEL_CBTC == cRouteLevel))))
{/*侵限区段未占用且封锁且是由于可重开的封锁(spks或全线封锁),在恢复后可自动重开*/ {/*侵限区段未占用且封锁且是由于SPKS按下导致的封锁且(SPKS自动重开开关打开或关闭但进路为CBTC),在SPKS恢复后可自动重开*/
reVal = CI_ROUTE_RECOVER_ERR; reVal = CI_ROUTE_RECOVER_ERR;
} }
else else
@@ -4739,11 +4603,10 @@ static UINT8 RouteIntruSecVainSPKSErrCheck(const UINT16 routeId)
} }
else else
{ {
fLockOpenCheck = SectionFlockReOpenCheck(devId, routeId);
if ((PHYSICAL_SECTION_JUMP_LOCK_YES != devJumpLockState) && (PHYSICAL_SECTION_LOCK_NO == devLockState) && (SECTION_OCCUPY_YES != devState) if ((PHYSICAL_SECTION_JUMP_LOCK_YES != devJumpLockState) && (PHYSICAL_SECTION_LOCK_NO == devLockState) && (SECTION_OCCUPY_YES != devState)
&& (PHYSICAL_SECTION_FLOCK_YES == devFLockState) && (LOG_SECTION_LOGLOCK_NO == chPhySecLogLockState) && (PHYSICAL_SECTION_FLOCK_YES == devFLockState) && (PHY_SEC_FLOCK_TYPE_SPKS == fLockType) && (LOG_SECTION_LOGLOCK_NO == chPhySecLogLockState)
&& (CI_SUCCESS == fLockOpenCheck)) && ((FUNC_SWITCH_ON == cFuncSwitchSpks) || ((FUNC_SWITCH_OFF == cFuncSwitchSpks) && (ROUTE_LEVEL_CBTC == cRouteLevel))))
{/*侵限区段未占用且封锁且是由于可重开的封锁(spks或全线封锁),在恢复后可自动重开恢复后可自动重开*/ {/*侵限区段未占用且封锁且是由于SPKS按下导致的封锁且(SPKS自动重开开关打开或关闭但进路为CBTC),在SPKS恢复后可自动重开*/
reVal = CI_ROUTE_RECOVER_ERR; reVal = CI_ROUTE_RECOVER_ERR;
} }
else else
@@ -4776,21 +4639,26 @@ static UINT8 RouteIntruSecVainSPKSErrCheck(const UINT16 routeId)
*/ */
static UINT8 RouteRelayZhaoChaErrCheck(UINT16 const routeId) static UINT8 RouteRelayZhaoChaErrCheck(UINT16 const routeId)
{ {
/* 局部变量定义初始化 */ /* 局部变量定义初始化 */
UINT16 relayId = 0U; UINT16 relayId = 0U;
UINT8 relayState = 0U; UINT8 relayState = 0U;
UINT8 zcPhySecSum = 0U; /*照查物理区段数目*/ UINT8 zcPhySecSum = 0U; /*照查物理区段数目*/
UINT16* pZcPhySecIdBuf = NULL; /*照查物理区段ID数组*/ UINT16* pZcPhySecIdBuf = NULL; /*照查物理区段ID数组*/
UINT8 ii = 0U; UINT8 ii = 0U;
UINT16 thisRealyId = 0U; UINT16 thisRealyId = 0U;
UINT8 thisRelayState = 0U; UINT8 thisRelayState = 0U;
UINT8 routeState = 0U; UINT8 routeState = 0U;
UINT8 retVal = CI_ERROR; /*函数返回值*/ UINT8 retVal = CI_ERROR; /*函数返回值*/
UINT16 pDevId = 0U;
UINT8 pDevState = 0U;
UINT8 chRouteLevel = 0U;
UINT8 chErrTemp = 0U; UINT8 chErrTemp = 0U;
/* 对端照查检查 */ /* 对端照查检查 */
zcPhySecSum = GetRouteThatZhaoChaPhySecSum(routeId); /*获取照查物理区段数目*/ zcPhySecSum = GetRouteThatZhaoChaPhySecSum(routeId); /*获取照查物理区段数目*/
pZcPhySecIdBuf = GetRouteThatZhaoChaPhySecIdBuf(routeId); /*获取照查物理区段ID数组*/ pZcPhySecIdBuf = GetRouteThatZhaoChaPhySecIdBuf(routeId); /*获取照查物理区段ID数组*/
/*进路监督级别确认*/
chRouteLevel = GetRouteLevel(routeId);
if (NULL == pZcPhySecIdBuf) if (NULL == pZcPhySecIdBuf)
{ {
@@ -4800,14 +4668,14 @@ static UINT8 RouteRelayZhaoChaErrCheck(UINT16 const routeId)
{ {
retVal = CI_SUCCESS; retVal = CI_SUCCESS;
for (ii = 0u; ii < zcPhySecSum; ii++) for (ii = 0u; ii < zcPhySecSum; ii++)
{ {
retVal = RoutePhySecZhaoChaErrCheck(routeId, pZcPhySecIdBuf[ii]); retVal = RoutePhySecZhaoChaErrCheck(routeId,pZcPhySecIdBuf[ii]);
if (CI_ERROR == retVal) if (CI_ERROR == retVal)
{ {
break; break;
} }
else if (CI_ROUTE_RECOVER_ERR == retVal) /*YF00083-1013,出现一个封锁即跳出,防止两个物理区段,一个封锁在前检查,一个未封锁在后检查覆盖掉retVal的值*/ else if(CI_ROUTE_RECOVER_ERR == retVal) /*YF00083-1013,出现一个封锁即跳出,防止两个物理区段,一个封锁在前检查,一个未封锁在后检查覆盖掉retVal的值*/
{ {
chErrTemp++; /*有一个SPKS封锁就计数一次*/ chErrTemp++; /*有一个SPKS封锁就计数一次*/
} }
@@ -4820,13 +4688,24 @@ static UINT8 RouteRelayZhaoChaErrCheck(UINT16 const routeId)
{ {
retVal = CI_ROUTE_RECOVER_ERR; /*出现过一个SPKS封锁,就赋值返回值为SPKS封锁*/ retVal = CI_ROUTE_RECOVER_ERR; /*出现过一个SPKS封锁,就赋值返回值为SPKS封锁*/
} }
} }
} }
if ((CI_SUCCESS == retVal) || (CI_ROUTE_RECOVER_ERR == retVal)) if ((CI_SUCCESS == retVal) || (CI_ROUTE_RECOVER_ERR == retVal))
{/*照查物理区段检查通过,检查本端照查继电器*/ {/*照查物理区段检查通过,检查本端照查继电器*/
if (ROUTE_LEVEL_BLOC == chRouteLevel)
{
thisRealyId = GetRouteThisZhaoChaRelayId(routeId); /*后备模式本端照查继电器ID*/
}
else if (ROUTE_LEVEL_CBTC == chRouteLevel)
{
thisRealyId = GetRouteCbtcThisZhaoChaRelayId(routeId);/*CBTC模式本端照查继电器ID*/
}
else
{
; /*非法监督模式,继电器ID为0,在下面不会处理*/
}
thisRealyId = GetRouteThisZhaoChaRelayId(routeId); /*本端照查继电器ID*/
thisRelayState = GetRelayCollState(thisRealyId); /*获取指定ID继电器的状态*/ thisRelayState = GetRelayCollState(thisRealyId); /*获取指定ID继电器的状态*/
routeState = GetRouteState(routeId); /*获取进路状态*/ routeState = GetRouteState(routeId); /*获取进路状态*/
@@ -4834,32 +4713,25 @@ static UINT8 RouteRelayZhaoChaErrCheck(UINT16 const routeId)
{/*存在本端照查继电器*/ {/*存在本端照查继电器*/
if ((ROUTE_STATE_FIRST_LOCKERR == routeState) || if ((ROUTE_STATE_FIRST_LOCKERR == routeState) ||
(ROUTE_STATE_YUXIAN_LOCK == routeState) || (ROUTE_STATE_YUXIAN_LOCK == routeState) ||
(ROUTE_STATE_YUXIAN_OPEN == routeState) ||
(ROUTE_STATE_NEAR_OPEN == routeState) ||
(ROUTE_STATE_NEAR_LOCK == routeState) ||
(ROUTE_STATE_NEAR_LOCKERR == routeState) || (ROUTE_STATE_NEAR_LOCKERR == routeState) ||
(ROUTE_STATE_DELAY_UNLOCK == routeState) || (ROUTE_STATE_NEAR_OPEN == routeState) ||
(ROUTE_STATE_AUTO_UNLOCK == routeState) || (ROUTE_STATE_YUXIAN_OPEN == routeState))
(ROUTE_STATE_AUTO_UNLOCKERR == routeState) ||
(ROUTE_STATE_HALF_UNLOCKDELAY == routeState) ||
(ROUTE_STATE_LEAD_LOCKERR == routeState) ||
(ROUTE_STATE_LEAD_OPEN == routeState))
{ {
/*需判断本端照查的状态*/ /*进路状态初锁异常,预先锁闭,接近锁闭异常,接近开放,预先开放,
if (RELAY_STATE_UP == thisRelayState) */
if(RELAY_STATE_UP == thisRelayState)
{ {
retVal = CI_ERROR; retVal = CI_ERROR;
} }
} }
else if ((ROUTE_STATE_FIRST_LOCK == routeState) || else if (ROUTE_STATE_FIRST_LOCK == routeState)
(ROUTE_STATE_LEAD_LOCK == routeState))
{ {
if (RELAY_STATE_UP == thisRelayState) if(RELAY_STATE_UP == thisRelayState)
{ {
/*等待,返回等待标志*/ /*等待,返回等待标志*/
retVal = RELAY_STATE_WAITE; retVal = RELAY_STATE_WAITE;
} }
} }
else else
{ {
/*进路状态为其它值,此时不处理*/ /*进路状态为其它值,此时不处理*/
@@ -4868,29 +4740,40 @@ static UINT8 RouteRelayZhaoChaErrCheck(UINT16 const routeId)
} }
if ((CI_SUCCESS == retVal) || (CI_ROUTE_RECOVER_ERR == retVal)) if ((CI_SUCCESS == retVal) || (CI_ROUTE_RECOVER_ERR == retVal))
{/*本端照查继电器检查通过,检查对端照查继电器*/ {/*本端照查继电器检查通过,检查对端照查继电器*/
if (ROUTE_LEVEL_BLOC == chRouteLevel)
relayId = GetRouteThatZhaoChaRelayId(routeId); /*对端照查继电器ID*/ {
relayId = GetRouteThatZhaoChaRelayId(routeId); /*后备模式对端照查继电器ID*/
if (0u != relayId)
{/*存在对端照查继电器*/
relayState = GetRelayCollState(relayId);
/* 照查吸起检查*/
if (RELAY_STATE_UP == relayState)
{
/*检查通过*/
}
else
{
retVal = CI_ERROR;
}
} }
else if (ROUTE_LEVEL_CBTC == chRouteLevel)
{
relayId = GetRouteCbtcThatZhaoChaRelayId(routeId);/*CBTC模式对端照查继电器ID*/
}
else
{
; /*非法监督模式,继电器ID为0,在下面不会处理*/
}
if(0u != relayId)
{/*存在对端照查继电器*/
relayState = GetRelayCollState(relayId);
/* 照查吸起检查*/
if (RELAY_STATE_UP == relayState)
{
/*检查通过*/
}
else
{
retVal = CI_ERROR;
}
}
} }
return retVal; return retVal;
} }
/* /*
@@ -4909,13 +4792,15 @@ UINT8 RoutePhySecZhaoChaErrCheck(UINT16 const routeId ,UINT16 const phySecId)
UINT8 secLockedDirection = 0u; /*区段锁闭方向*/ UINT8 secLockedDirection = 0u; /*区段锁闭方向*/
UINT8 routeDirection = 0u; /*进路方向*/ UINT8 routeDirection = 0u; /*进路方向*/
UINT8 retVal = CI_ERROR; /*函数返回值*/ UINT8 retVal = CI_ERROR; /*函数返回值*/
UINT8 fLockOpenCheck = CI_ERROR; /*物理区段封锁重开检查*/ UINT8 fLockType = PHY_SEC_FLOCK_TYPE_NONE; /*物理区段封锁类型变量*/
UINT8 phyBelongCi = 0u; /*物理区段所属联锁*/ UINT8 phyBelongCi = 0u; /*物理区段所属联锁*/
UINT8 commState = 0u; /*通信状态*/ UINT8 commState = 0u; /*通信状态*/
/*相邻联锁是否支持继电接口*/ /*相邻联锁是否支持继电接口*/
UINT8 funcSwitchSupportRelayInterface = GetCiFunctionSwitchConfig(FUNC_SWITCH_USE_RELAY_INTERFACE_BETWEEN_NEIGHBOURCI); UINT8 funcSwitchSupportRelayInterface = GetCiFunctionSwitchConfig(FUNC_SWITCH_USE_RELAY_INTERFACE_BETWEEN_NEIGHBOURCI);
UINT8 localCi = GetSystemParaLocalCiId(); /*本机联锁*/ UINT8 localCi = GetSystemParaLocalCiId(); /*本机联锁*/
UINT8 confirmRelayInterfaceFlag = GetCiCiRelayInterfConfirmFlag();/*继电接口确认状态*/ UINT8 confirmRelayInterfaceFlag = GetCiCiRelayInterfConfirmFlag();/*继电接口确认状态*/
UINT8 cFuncSwitchSpks = 0U; /*SPKS信号自动重开开关,0x55检查进路级别,0xaa不检查*/
UINT8 cRouteLevel = 0U;
if ((0U == routeId ) || (0U == phySecId)) if ((0U == routeId ) || (0U == phySecId))
{ {
@@ -4973,10 +4858,12 @@ UINT8 RoutePhySecZhaoChaErrCheck(UINT16 const routeId ,UINT16 const phySecId)
} }
else if (PHYSICAL_SECTION_FLOCK_YES == secFlockState) else if (PHYSICAL_SECTION_FLOCK_YES == secFlockState)
{ {
fLockOpenCheck = SectionFlockReOpenCheck(phySecId, routeId);/*物理区段封锁重开检查*/ fLockType = GetPhySecFLockType(phySecId);/*获得物理区段封锁类型*/
if (CI_SUCCESS == fLockOpenCheck) cFuncSwitchSpks = GetCiFunctionSwitchConfig(FUNC_REPEATE_OPEN_CHECK_SPKS);
cRouteLevel = GetRouteLevel(routeId);
if ((PHY_SEC_FLOCK_TYPE_SPKS == fLockType) && ((FUNC_SWITCH_ON == cFuncSwitchSpks) || ((FUNC_SWITCH_OFF == cFuncSwitchSpks) && (ROUTE_LEVEL_CBTC == cRouteLevel))))
{ {
retVal = CI_ROUTE_RECOVER_ERR; /* 区段封锁且是可重开封锁类型导致封锁,在封锁恢复后可自动重开*/ retVal = CI_ROUTE_RECOVER_ERR; /* 状态如果SPKS导致的封锁且SPKS自动重开开关打开或关闭但进路为CBTC,则可以恢复重开*/
} }
else else
{ {
@@ -50,116 +50,58 @@ void JKJRelayLogicProcess(void)
{ {
UINT16 wJkjRelayId = 0u; UINT16 wJkjRelayId = 0u;
UINT8 JkjRelayState = CI_ERROR; UINT8 JkjRelayState = CI_ERROR;
UINT32 yjValidCycNum = 0u; UINT32 JkjRelayCycNum = 0u;
UINT32 JkjValidCycNum = 0u;
UINT32 curCycNum = 0u; UINT32 curCycNum = 0u;
UINT8 checkRes = CI_TIME_OUT; UINT8 checkRes = CI_TIME_OUT;
UINT8 ii = 0u; UINT8 tmpRet =CI_ERROR;
UINT8 haveYjkBreakFlag = 0u;
UINT8 ocYjkBreakFlag = 0u;
wJkjRelayId = GetJkjRelayId(); wJkjRelayId = GetJkjRelayId();
JkjRelayState = GetRelayCollState(wJkjRelayId); /*JKJ应急盘继电器采集状态*/ JkjRelayState = GetRelayCollState(wJkjRelayId); /*JKJ应急盘继电器采集状态*/
yjValidCycNum = GetJkjRelayValidCycNum(); /*JKJ应急盘状态有效周期*/ JkjRelayCycNum = GetRelayStateUpdateCycNum(wJkjRelayId); /*JKJ应急盘继电器状态更新周期*/
curCycNum = Get2oo2CurCycleNum(); JkjValidCycNum = GetJkjRelayValidCycNum(); /*JKJ应急盘状态有效周期*/
for (ii = 0u; ii < m_OcToCiOrginDataNum; ii++)
{
if (OC_HAVE_YJK == m_OcToCiOrginDataArr[ii].chHaveYjk)
{/*任意一个OC具备应急控*/
haveYjkBreakFlag = 1u;
break;
}
else
{
; /*继续*/
}
}
for (ii = 0u; ii < m_OcToCiOrginDataNum; ii++)
{
if (OC_CTLMODE_YJK == m_OcToCiOrginDataArr[ii].chControlMode)
{/*任意一个OC是应急控*/
ocYjkBreakFlag = 1u;
break;
}
else
{
; /*继续*/
}
}
if (wJkjRelayId > 0u)
if ((wJkjRelayId > 0u) && (RELAY_STATE_DOWN == JkjRelayState))
{ {
/*配置了继电器*/ curCycNum = Get2oo2CurCycleNum();
if (RELAY_STATE_DOWN == JkjRelayState) if (0u == JkjRelayCycNum)
{/*落下*/ {/*若未计时,则设置起始周期*/
if (0u == yjValidCycNum) tmpRet = SetRelayStateUpdateCycNum(wJkjRelayId,curCycNum);
{/*未计时*/ if (CI_ERROR == tmpRet)
SetJkjRelayValidCycNum(curCycNum); /*设置应急有效周期*/
}
else
{ {
; /*不做处理*/ /*错误处理*/
}
checkRes = SystemOverTimeCheck(yjValidCycNum, JKJ_REYLAY_VALID_CYCLE_NUM);
if (CI_TIME_OUT == checkRes)
{ /*应急有效*/
SetCiJkjFlag(JKJ_REYLAY_VALID); /*设置应急盘有效标志为有效*/
}
else
{
; /*不做处理*/
} }
} }
else if (RELAY_STATE_UP == JkjRelayState) checkRes = SystemOverTimeCheck(JkjRelayCycNum,JKJ_REYLAY_VALID_CYCLE_NUM);
{/*吸起*/ if (CI_TIME_OUT == checkRes)
/*应急效*/ { /*应急盘有效*/
SetCiJkjFlag(JKJ_REYLAY_INVALID); /*设置应急盘有效标志为效*/ SetCiJkjFlag(JKJ_REYLAY_VALID); /*设置JKJ应急盘有效标志为效*/
SetJkjRelayValidCycNum(0u); /*设置应急无效周期*/ if (0u == JkjValidCycNum) /*之前没有设置应急盘有效开始周期*/
} {
else SetJkjRelayValidCycNum(curCycNum); /*设置JKJ应急盘有效周期*/
{ }
/*应急无效*/
SetCiJkjFlag(JKJ_REYLAY_VALID); /*设置应急盘有效标志为无效*/
SetJkjRelayValidCycNum(curCycNum); /*设置应急无效周期*/
} }
} }
else if(1u == haveYjkBreakFlag) else if ((wJkjRelayId > 0u) && (RELAY_STATE_UP == JkjRelayState))
{ {
/*OC具备应急控*/ tmpRet = SetRelayStateUpdateCycNum(wJkjRelayId, 0u); /*清除JKJ继电器有效起始周期号*/
if (1u == ocYjkBreakFlag) if (CI_ERROR == tmpRet)
{/*有一个OC处于应急控,则应急有效*/ {
if (0u == yjValidCycNum) /*错误处理*/
{/*未计时*/
SetJkjRelayValidCycNum(curCycNum); /*设置应急有效周期*/
}
else
{
; /*不做处理*/
}
checkRes = SystemOverTimeCheck(yjValidCycNum, JKJ_REYLAY_VALID_CYCLE_NUM);
if (CI_TIME_OUT == checkRes)
{ /*应急有效*/
SetCiJkjFlag(JKJ_REYLAY_VALID); /*设置应急盘有效标志为有效*/
}
else
{
; /*不做处理*/
}
}
else
{/*应急无效*/
SetCiJkjFlag(JKJ_REYLAY_INVALID); /*设置应急盘有效标志为无效*/
SetJkjRelayValidCycNum(0u); /*设置应急无效周期*/
} }
/*应急盘无效*/
SetCiJkjFlag(JKJ_REYLAY_INVALID); /*设置JKJ应急盘继电器有效标志为无效*/
SetJkjRelayValidCycNum(0u); /*设置JKJ应急盘无效周期*/
} }
else else
{ {
/*JKJ未配置,OC无应急控功能,应急盘无效*/ /*应急盘无效*/
SetCiJkjFlag(JKJ_REYLAY_INVALID); /*设置应急盘有效标志为无效*/ SetCiJkjFlag(JKJ_REYLAY_INVALID); /*设置JKJ应急盘继电器有效标志为无效*/
SetJkjRelayValidCycNum(0u); /*设置应急无效周期*/ SetJkjRelayValidCycNum(0u); /*设置JKJ应急盘继电器无效周期*/
} }
} }
/* /*
@@ -873,6 +815,9 @@ void RouteLogicProcess(void)
/*扣车、SPKS、PSD导致信号关闭又重开处理*/ /*扣车、SPKS、PSD导致信号关闭又重开处理*/
RouteRecoverOpenProc(routeId); RouteRecoverOpenProc(routeId);
/*进路调车同意逻辑处理*/
RouteDCTYLogicM(routeId);
/*根据进路状态清理相关标志*/ /*根据进路状态清理相关标志*/
ClearSomeFlagDependRouteState(routeId); ClearSomeFlagDependRouteState(routeId);
/*cgh-合并CID-2349-5*/ /*cgh-合并CID-2349-5*/
@@ -3787,7 +3732,7 @@ void SetSwitchPositionM(const UINT16 switchId, const UINT8 switchSetPos)
if (CI_SUCCESS == check_Result) if (CI_SUCCESS == check_Result)
{/*单操位置有效*/ {/*单操位置有效*/
/*单操道岔处理*/ /*单操道岔处理*/
if (CI_SUCCESS == SetSwitchPositionLogicProcess(switchId, switchSetPos, 0u, &chTemp, ESEND_LEVEL_ATS)) if (CI_SUCCESS == SetSwitchPositionLogicProcess(switchId, switchSetPos, 0u, &chTemp))
{ /*检查通过*/ { /*检查通过*/
(void)SetSwitchDanCaoPosition(switchId, switchSetPos); /*设置单操位置标志*/ (void)SetSwitchDanCaoPosition(switchId, switchSetPos); /*设置单操位置标志*/
@@ -4415,22 +4360,37 @@ void NonRouteCancelDeal(UINT8 nonRouteId)
void UpdateZhaoChaDeal(const UINT16 routeId, const UINT8 routeState) void UpdateZhaoChaDeal(const UINT16 routeId, const UINT8 routeState)
{ {
UINT16 wSelfRealyId = 0U; /*本模式本端照查ID*/ UINT16 wSelfRealyId = 0U; /*本模式本端照查ID*/
UINT16 wOtherRealyId = 0U; /*本模式本端照查ID*/
UINT8 relauDrvState = 0U; UINT8 relauDrvState = 0U;
UINT8 chRouteLevel = GetRouteLevel(routeId);
UINT8 chOverTimeCheck = 0U; UINT8 chOverTimeCheck = 0U;
UINT32 dwTimeOutCycCount = 0U; UINT32 dwTimeOutCycCount = 0U;
UINT32 dwRouteLockStartCycNum = 0U;
wSelfRealyId = GetRouteThisZhaoChaRelayId(routeId); /*本端照查继电器ID*/ if (ROUTE_LEVEL_BLOC == chRouteLevel)
dwRouteLockStartCycNum = GetRouteLockStartCycNum(routeId); {
wSelfRealyId = GetRouteThisZhaoChaRelayId(routeId); /*后备模式本端照查继电器ID*/
wOtherRealyId = GetRouteCbtcThisZhaoChaRelayId(routeId); /*CBTC模式本端照查继电器ID*/
}
else if (ROUTE_LEVEL_CBTC == chRouteLevel)
{
wSelfRealyId = GetRouteCbtcThisZhaoChaRelayId(routeId); /*CBTC模式本端照查继电器ID*/
wOtherRealyId = GetRouteThisZhaoChaRelayId(routeId); /*后备模式本端照查继电器ID*/
}
else
{
; /*非法监督模式,继电器ID为0,在下面不会处理*/
}
dwTimeOutCycCount = GetSystemParaSignalCloseCyc(); dwTimeOutCycCount = GetSystemParaSignalCloseCyc();
if (0U < wSelfRealyId) if ((routeState == ROUTE_STATE_IDLE) ||
(routeState == ROUTE_STATE_FIRST_XUANPAI) ||
(routeState == ROUTE_STATE_XUANPAI) ||
(routeState == ROUTE_STATE_LEAD_FIRST_XUANPAI) ||
(routeState == ROUTE_STATE_LEAD_XUANPAI))
{ {
if ((routeState == ROUTE_STATE_IDLE) || /*进路空闲 两种模式照查都吸起*/
(routeState == ROUTE_STATE_FIRST_XUANPAI) || if (0U < wSelfRealyId)
(routeState == ROUTE_STATE_XUANPAI) ||
(routeState == ROUTE_STATE_LEAD_FIRST_XUANPAI) ||
(routeState == ROUTE_STATE_LEAD_XUANPAI))
{ {
relauDrvState = GetRelayDriveState(wSelfRealyId); relauDrvState = GetRelayDriveState(wSelfRealyId);
if (RELAY_DRIVE_STATE_NULL == relauDrvState) if (RELAY_DRIVE_STATE_NULL == relauDrvState)
@@ -4438,15 +4398,34 @@ void UpdateZhaoChaDeal(const UINT16 routeId, const UINT8 routeState)
(void)SetRelayDriveState(wSelfRealyId, RELAY_STATE_UP); (void)SetRelayDriveState(wSelfRealyId, RELAY_STATE_UP);
} }
} }
else if (0U < wOtherRealyId)
{
relauDrvState = GetRelayDriveState(wOtherRealyId);
if (RELAY_DRIVE_STATE_NULL == relauDrvState)
{
(void)SetRelayDriveState(wOtherRealyId, RELAY_STATE_UP);
}
}
}
else
{
/*进路锁闭 本模式照查落下,另一模式照查吸起*/
if (0U < wOtherRealyId)
{
relauDrvState = GetRelayDriveState(wOtherRealyId);
if (RELAY_DRIVE_STATE_NULL == relauDrvState)
{
(void)SetRelayDriveState(wOtherRealyId, RELAY_STATE_UP);
}
}
if (0U < wSelfRealyId)
{ {
(void)SetRelayDriveState(wSelfRealyId, RELAY_STATE_DOWN); (void)SetRelayDriveState(wSelfRealyId, RELAY_STATE_DOWN);
relauDrvState = GetRelayCollState(wSelfRealyId); relauDrvState = GetRelayCollState(wSelfRealyId);
if (RELAY_STATE_DOWN != relauDrvState) if (RELAY_STATE_DOWN != relauDrvState)
{ /*照查继电器未落下*/ { /*照查继电器未落下*/
chOverTimeCheck = SystemOverTimeCheck(dwRouteLockStartCycNum, dwTimeOutCycCount); chOverTimeCheck = CheckRelayDriveOutTime(wSelfRealyId, dwTimeOutCycCount);
if (CI_TIME_OUT == chOverTimeCheck) if (CI_ERROR == chOverTimeCheck)
{/*照查超时超时*/ {/*照查超时超时*/
/*xxxxx宕机*/ /*xxxxx宕机*/
@@ -6145,16 +6124,16 @@ UINT16 GetReturnId(const UINT16 routeId)
{ {
/*当前状态是接近锁闭异常*/ /*当前状态是接近锁闭异常*/
/* 如果是差至,如果列车驶入过进路,同时之前状态必须为接近锁闭开放 /* 如果是差至,如果列车驶入过进路,同时之前状态必须为接近锁闭正常(列车压入,信号关闭)
* *
*/ */
if((ROUTE_STATE_NEAR_OPEN == preRouteState) && (TRAIN_ENTER_ROUTE_FLAG_YES == GetTrainEnterRouteFlag(routeId))) if((ROUTE_STATE_NEAR_LOCK == preRouteState) && (TRAIN_ENTER_ROUTE_FLAG_YES == GetTrainEnterRouteFlag(routeId)))
{ {
returnSigId = GetRouteChaZhiSignalId(routeId); /*获取差置信号机ID*/ returnSigId = GetRouteChaZhiSignalId(routeId); /*获取差置信号机ID*/
} }
else else
{ {
returnSigId = 0U; returnSigId = 0u;
} }
} }
} }
@@ -6187,8 +6166,6 @@ void DTrainReturnUnlockRouteAllLockP(const UINT16 routeId)
UINT8 chLockBelRouteType = 0U;/*区段锁闭所属进路进路类型*/ UINT8 chLockBelRouteType = 0U;/*区段锁闭所属进路进路类型*/
UINT8 chTrainEnterRouteFlag = 0U;/*列车驶入进路标志*/ UINT8 chTrainEnterRouteFlag = 0U;/*列车驶入进路标志*/
UINT8 chRouteInOutSecOccupy = 0U;/*进路内外方同时占压标志*/ UINT8 chRouteInOutSecOccupy = 0U;/*进路内外方同时占压标志*/
UINT32 dwRoutLockCycNum = 0U;
UINT32 dwReturnRoutLockCycNum = 0U;
routeState = GetRouteState(routeId); /*获取进路状态*/ routeState = GetRouteState(routeId); /*获取进路状态*/
routeType = GetRouteType(routeId); routeType = GetRouteType(routeId);
@@ -6230,16 +6207,14 @@ void DTrainReturnUnlockRouteAllLockP(const UINT16 routeId)
wLockRouteStartSigId = GetRouteStartSignalId(lockBelongRouteId);/*获取进路始端信号机ID*/ wLockRouteStartSigId = GetRouteStartSignalId(lockBelongRouteId);/*获取进路始端信号机ID*/
chTrainEnterRouteFlag = CheckTrainEnterRoute(lockBelongRouteId);/*获取列车驶入进路标志*/ chTrainEnterRouteFlag = CheckTrainEnterRoute(lockBelongRouteId);/*获取列车驶入进路标志*/
chRouteInOutSecOccupy = RouteInOutSecOccupy(lockBelongRouteId);/*进路内外方同时占用标志*/ chRouteInOutSecOccupy = RouteInOutSecOccupy(lockBelongRouteId);/*进路内外方同时占用标志*/
dwRoutLockCycNum = GetRouteLockStartCycNum(routeId); /*获取进路锁闭起始周期*/
dwReturnRoutLockCycNum = GetRouteLockStartCycNum(lockBelongRouteId);/*获取折出进路锁闭起始周期*/
if ((ROUTE_STATE_NEAR_OPEN == chLockBelRouteState) && (ROUTE_TYPE_DIAOCHE == chLockBelRouteType) && if ((ROUTE_STATE_NEAR_OPEN == chLockBelRouteState) && (ROUTE_TYPE_DIAOCHE == chLockBelRouteType) &&
(returnSigId == wLockRouteStartSigId) && (dwReturnRoutLockCycNum > dwRoutLockCycNum) && (returnSigId == wLockRouteStartSigId) &&
((CI_SUCCESS == chTrainEnterRouteFlag) || ((CI_SUCCESS == chTrainEnterRouteFlag) ||
((CI_SUCCESS == chRouteInOutSecOccupy) && (ROUTE_TYPE_LIECHE == routeType)))) ((CI_SUCCESS == chRouteInOutSecOccupy) && (ROUTE_TYPE_LIECHE == routeType))))
{ {
/*折出进路是调车进路&&状态是接近开放&&折出进路始端信号机是本进路折返信号机 &&(有车驶入 或 待解锁进路为列车进路是折出进路时内外方区段同时占压)*/ /*折出进路是调车进路&&状态是接近开放&&折出进路始端信号机是本进路折返信号机 &&(有车驶入 或 待解锁进路为列车进路是折出进路时内外方区段同时占压)*/
/*by cgh 20250414增加条件:折出进路锁闭时间晚于需中途解锁进路*/
/*解锁成功*/ /*解锁成功*/
SetRoutePhySectionLockState(routeId, PHYSICAL_SECTION_LOCK_NO); /*设置进路区段未锁闭*/ SetRoutePhySectionLockState(routeId, PHYSICAL_SECTION_LOCK_NO); /*设置进路区段未锁闭*/
@@ -6249,10 +6224,10 @@ void DTrainReturnUnlockRouteAllLockP(const UINT16 routeId)
SetRouteStateDeal(routeId, ROUTE_STATE_IDLE); /*设置进路状态为空闲*/ SetRouteStateDeal(routeId, ROUTE_STATE_IDLE); /*设置进路状态为空闲*/
} }
if ((ROUTE_TYPE_LIECHE == chLockBelRouteType) && (ROUTE_STATE_NEAR_LOCK == chLockBelRouteState) if ((ROUTE_TYPE_LIECHE == chLockBelRouteType) && (ROUTE_STATE_NEAR_LOCK == chLockBelRouteState)
&& (returnSigId == wLockRouteStartSigId) && (dwReturnRoutLockCycNum > dwRoutLockCycNum)) && (returnSigId == wLockRouteStartSigId))
{ {
/*折出进路是列车进路 且 进路状态是接近锁闭正常 且 折出进路始端信号机是本进路折返信号机*/ /*折出进路是列车进路 且 进路状态是接近锁闭正常 且 折出进路始端信号机是本进路折返信号机*/
/*by cgh 20250414增加条件:折出进路锁闭时间晚于需中途解锁进路*/
/*解锁成功*/ /*解锁成功*/
SetRoutePhySectionLockState(routeId, PHYSICAL_SECTION_LOCK_NO); /*设置进路区段未锁闭*/ SetRoutePhySectionLockState(routeId, PHYSICAL_SECTION_LOCK_NO); /*设置进路区段未锁闭*/
/*设置进路逻辑区段: 未锁闭*/ /*设置进路逻辑区段: 未锁闭*/
@@ -6290,8 +6265,6 @@ void DTrainRtnUnlockRemoteRAllLockP(const UINT16 routeId)
UINT8 chLockBelRouteType = 0U;/*区段锁闭所属进路进路类型*/ UINT8 chLockBelRouteType = 0U;/*区段锁闭所属进路进路类型*/
UINT8 chTrainEnterRouteFlag = 0U;/*列车驶入进路标志*/ UINT8 chTrainEnterRouteFlag = 0U;/*列车驶入进路标志*/
UINT8 chRouteInOutSecOccupy = 0U;/*进路内外方同时占压标志*/ UINT8 chRouteInOutSecOccupy = 0U;/*进路内外方同时占压标志*/
UINT32 dwRoutLockCycNum = 0U;
UINT32 dwReturnRoutLockCycNum = 0U;
routeState = GetRouteState(routeId); /*获取进路状态*/ routeState = GetRouteState(routeId); /*获取进路状态*/
routeType = GetRouteType(routeId); routeType = GetRouteType(routeId);
@@ -6339,16 +6312,13 @@ void DTrainRtnUnlockRemoteRAllLockP(const UINT16 routeId)
wLockRouteStartSigId = GetRouteStartSignalId(lockBelongRouteId);/*获取进路始端信号机ID*/ wLockRouteStartSigId = GetRouteStartSignalId(lockBelongRouteId);/*获取进路始端信号机ID*/
chTrainEnterRouteFlag = CheckTrainEnterRoute(lockBelongRouteId);/*获取列车驶入进路标志*/ chTrainEnterRouteFlag = CheckTrainEnterRoute(lockBelongRouteId);/*获取列车驶入进路标志*/
chRouteInOutSecOccupy = RouteInOutSecOccupy(lockBelongRouteId);/*进路内外方同时占用标志*/ chRouteInOutSecOccupy = RouteInOutSecOccupy(lockBelongRouteId);/*进路内外方同时占用标志*/
dwRoutLockCycNum = GetRouteLockStartCycNum(routeId); /*获取进路锁闭起始周期*/
dwReturnRoutLockCycNum = GetRouteLockStartCycNum(lockBelongRouteId);/*获取折出进路锁闭起始周期*/
if ((ROUTE_STATE_NEAR_OPEN == chLockBelRouteState) && (ROUTE_TYPE_DIAOCHE == chLockBelRouteType) && if ((ROUTE_STATE_NEAR_OPEN == chLockBelRouteState) && (ROUTE_TYPE_DIAOCHE == chLockBelRouteType) &&
(returnSigId == wLockRouteStartSigId) && (dwReturnRoutLockCycNum > dwRoutLockCycNum) && (returnSigId == wLockRouteStartSigId) &&
((CI_SUCCESS == chTrainEnterRouteFlag) || ((CI_SUCCESS == chTrainEnterRouteFlag) ||
((CI_SUCCESS == chRouteInOutSecOccupy) && (ROUTE_TYPE_LIECHE== routeType)))) ((CI_SUCCESS == chRouteInOutSecOccupy) && (ROUTE_TYPE_LIECHE== routeType))))
{ {
/*折出进路是调车进路&&状态是接近开放&&折出进路始端信号机是本进路折返信号机 &&(有车驶入 或 待解锁进路为列车进路是折出进路时内外方区段同时占压)*/ /*折出进路是调车进路&&状态是接近开放&&折出进路始端信号机是本进路折返信号机 &&(有车驶入 或 待解锁进路为列车进路是折出进路时内外方区段同时占压)*/
/*by cgh 20250414增加条件:折出进路锁闭时间晚于需中途解锁进路*/
/*解锁成功*/ /*解锁成功*/
SetRoutePhySectionLockState(routeId, PHYSICAL_SECTION_LOCK_NO); /*设置进路区段未锁闭*/ SetRoutePhySectionLockState(routeId, PHYSICAL_SECTION_LOCK_NO); /*设置进路区段未锁闭*/
/*设置进路逻辑区段: 未锁闭*/ /*设置进路逻辑区段: 未锁闭*/
@@ -6356,10 +6326,9 @@ void DTrainRtnUnlockRemoteRAllLockP(const UINT16 routeId)
SetRouteStateDeal(routeId, ROUTE_STATE_IDLE); /*设置进路状态为空闲*/ SetRouteStateDeal(routeId, ROUTE_STATE_IDLE); /*设置进路状态为空闲*/
} }
if ((ROUTE_TYPE_LIECHE== chLockBelRouteType) && (ROUTE_STATE_NEAR_LOCK == chLockBelRouteState) if ((ROUTE_TYPE_LIECHE== chLockBelRouteType) && (ROUTE_STATE_NEAR_LOCK == chLockBelRouteState)
&& (returnSigId == wLockRouteStartSigId) && (dwReturnRoutLockCycNum > dwRoutLockCycNum)) && (returnSigId == wLockRouteStartSigId))
{ {
/*折出进路是列车进路 且 进路状态是接近锁闭正常 且 折出进路始端信号机是本进路折返信号机*/ /*折出进路是列车进路 且 进路状态是接近锁闭正常 且 折出进路始端信号机是本进路折返信号机*/
/*by cgh 20250414增加条件:折出进路锁闭时间晚于需中途解锁进路*/
/*解锁成功*/ /*解锁成功*/
SetRoutePhySectionLockState(routeId, PHYSICAL_SECTION_LOCK_NO); /*设置进路区段未锁闭*/ SetRoutePhySectionLockState(routeId, PHYSICAL_SECTION_LOCK_NO); /*设置进路区段未锁闭*/
/*设置进路逻辑区段: 未锁闭*/ /*设置进路逻辑区段: 未锁闭*/
@@ -7120,48 +7089,38 @@ void CancelWashWorkLogicM(void)
/* /*
* *
* void * void
* void * void
* by cgh 20250523
*/ */
void RouteDCTYLogic(UINT16 routeId) void RouteDCTYLogicM(UINT16 routeId)
{ {
UINT8 routeType = 0U; UINT8 routeType = 0u;
UINT8 routeState = 0U; UINT8 routeState = 0u;
UINT16 routeDCQJId = 0U; UINT16 routeDCQJId = 0u;
UINT16 routeDCQJTwoId = 0U;
routeType = GetRouteType(routeId);/*进路类型*/ routeType = GetRouteType(routeId);/*进路类型*/
routeState = GetRouteState(routeId);/*进路状态*/ routeState = GetRouteState(routeId);/*进路状态*/
routeDCQJId = GetRouteDCQJId(routeId); routeDCQJId = GetRouteDCQJId(routeId);
routeDCQJTwoId = GetRouteDCQJTwoId(routeId); if ((routeDCQJId >0u) && (ROUTE_TYPE_DIAOCHE == routeType))
if ((0U < routeDCQJId) && (0U < routeDCQJTwoId) && (ROUTE_TYPE_DIAOCHE == routeType))
{/*调车请求继电器ID存在,且是调车进路*/ {/*调车请求继电器ID存在,且是调车进路*/
if((ROUTE_STATE_FIRST_LOCK == routeState) || if((ROUTE_STATE_FIRST_LOCK == routeState) ||
(ROUTE_STATE_FIRST_LOCKERR == routeState) || (ROUTE_STATE_FIRST_LOCKERR == routeState) ||
(ROUTE_STATE_YUXIAN_LOCK == routeState) || (ROUTE_STATE_YUXIAN_LOCK == routeState) ||
(ROUTE_STATE_YUXIAN_OPEN == routeState) || (ROUTE_STATE_YUXIAN_OPEN == routeState) ||
(ROUTE_STATE_NEAR_OPEN == routeState) || (ROUTE_STATE_NEAR_OPEN == routeState) ||
(ROUTE_STATE_NEAR_LOCK == routeState) ||
(ROUTE_STATE_NEAR_LOCKERR == routeState)|| (ROUTE_STATE_NEAR_LOCKERR == routeState)||
(ROUTE_STATE_AUTO_UNLOCK == routeState) || (ROUTE_STATE_LEAD_LOCK == routeState) ||
(ROUTE_STATE_AUTO_UNLOCKERR == routeState) || (ROUTE_STATE_LEAD_LOCKERR == routeState) ||
(ROUTE_STATE_DELAY_UNLOCK == routeState)) (ROUTE_STATE_LEAD_OPEN == routeState) ||
{ (ROUTE_STATE_DELAY_UNLOCK == routeState) ||
/*进路存在锁闭:进路初锁、进路初锁异常、预先锁闭、预先开放、接近开放、接近锁闭异常、接近锁闭正常、延时解锁、自动解锁正常、自动解锁异常*/ (ROUTE_STATE_NEAR_LOCK == routeState))
SetRouteDCQState(routeId,ROUTE_DCQ_REQUEST);/*设置进路调车请求状态调车请求有效*/ {/*进路是完整锁闭:进路初锁、进路初锁异常、预先锁闭、预先开放、接近开放、接近锁闭异常、接近锁闭正常
*/
(void)SetRouteDCQState(routeId,ROUTE_DCQ_REQUEST);/*设置进路调车请求状态为调车请求*/
} }
else else
{ {/*非完整锁闭设置进路调车请求状态为非调车请求*/
/*其它情况设置进路调车请求状态为调车请求无效;调车同意状态无效*/ (void)SetRouteDCQState(routeId,ROUTE_DCQ_NOT_REQUEST);
SetRouteDCQState(routeId,ROUTE_DCQ_NOT_REQUEST);
SetRouteDCTYState(routeId, ROUTE_DCT_NOT_AGREE);
} }
} }
else
{
; /*不处理*/
}
} }
/* /*
@@ -775,10 +775,9 @@ void CancelWashWorkLogicM(void);
/* /*
* *
* void * void
* void * void
* by cgh 20250523
*/ */
void RouteDCTYLogic(UINT16 routeId); void RouteDCTYLogicM(UINT16 routeId);
/* /*
* *
File diff suppressed because it is too large Load Diff
@@ -1006,12 +1006,11 @@ UINT8 ChekRoutSwitDrivOvtmStat(const UINT16 routeId);
/* /*
* *
* UINT16 const phySectionId * UINT16 const phySectionId
* UINT8 const isConnectSec 线线CI_SUCCESS是 CI_ERROR否
* CI_ERROR * CI_ERROR
* CI_SUCCESS * CI_SUCCESS
* EFUNC_UNLOCK_FAULT_SECTION * EFUNC_UNLOCK_FAULT_SECTION
*/ */
UINT8 PhySecFaultUnlockLogicProcess(const UINT16 phySectionId, UINT8 const isConnectSec); UINT8 PhySecFaultUnlockLogicProcess(const UINT16 phySectionId);
/* /*
* 绿 * 绿
@@ -1022,6 +1021,14 @@ CI_ERROR:
*/ */
UINT8 CheckRouteZongRenJieFeasibility(const UINT16 routeId); UINT8 CheckRouteZongRenJieFeasibility(const UINT16 routeId);
/*
* 绿
* const UINT16 routeId, ID
* UINT8
CI_SUCCESS:
CI_ERROR:
*/
UINT8 CheckDiaoCheRouteZRJFeasibility(const UINT16 routeId);
/* /*
@@ -1490,7 +1497,6 @@ UINT8 AxisSecAllSwitchPosCheck(UINT16 const axisSecId,UINT16 *pDevId,UINT8 *pDev
* UINT16 const routeId, * UINT16 const routeId,
* CI_ERROR * CI_ERROR
* CI_SUCCESS * CI_SUCCESS
* qw.liu 使
*/ */
UINT8 RouteOutfirstPhySecSwiPosCheck(UINT16 const routeId); UINT8 RouteOutfirstPhySecSwiPosCheck(UINT16 const routeId);
/* /*
@@ -1735,16 +1741,6 @@ UINT8 LogicSecFLockCheck(UINT16 const wLgcId, UINT16 *pDevId, UINT8 *pDevState);
*/ */
UINT8 LogicSecRelativeSwitchPosCheck(UINT16 const wLgcId, UINT16* pDevId, UINT8* pDevState); UINT8 LogicSecRelativeSwitchPosCheck(UINT16 const wLgcId, UINT16* pDevId, UINT8* pDevState);
/*
*
* UINT16 const wLgcId ID
* 1
* 0x55
* 0xAA
* Created By LQ 2025.12.19
*/
UINT8 GetLogSecRelSwPosErrReason(UINT16 const wLgcId);
/* /*
* VBTC条件下第一逻辑区段检查 * VBTC条件下第一逻辑区段检查
* *
@@ -2298,7 +2294,7 @@ UINT16 SearchNonMainRoute(UINT8 cRouteSum, UINT16 wRouteIdBuff[]);
UINT8 SwitchRelLogSecLSXSStateCheck(UINT16 switchId, UINT16* pLogSecId, UINT8* pLogState); UINT8 SwitchRelLogSecLSXSStateCheck(UINT16 switchId, UINT16* pLogSecId, UINT8* pLogState);
/* /*
* *
* UINT16 const routeId, * UINT16 const routeId,
* CI_ERROR * CI_ERROR
* CI_SUCCESS * CI_SUCCESS
@@ -2618,15 +2614,13 @@ UINT8 CtTrainHeadSuspCheck(const UINT16 wTrainId, const UINT8 cLogSecSeqDir, con
* *
* const UINT8 cLogSecSum * const UINT8 cLogSecSum
* const UINT16* pLogSecIdBuff * const UINT16* pLogSecIdBuff
* const UINT16 wTrainId ID * const UINT16 wTrainId
* const UINT8 cFunctionId ID
* const UINT8 cSendLevel
* *
* CI_ERROR 0 * CI_ERROR 0
* CI_SUCCESS 1 * CI_SUCCESS 1
* Created By LQ 2024.09.05 * Created By LQ 2024.09.05
*/ */
UINT8 LogSecSeqAndTrainPosCheckCLD(const UINT8 cLogSecSum, const UINT16* pLogSecIdBuff, const UINT16 wTrainId, const UINT8 cFunctionId, const UINT8 cSendLevel); UINT8 LogSecSeqAndTrainPosCheckCLD(const UINT8 cLogSecSum, const UINT16* pLogSecIdBuff, const UINT16 wTrainId);
/* /*
* *
@@ -2725,84 +2719,5 @@ UINT8 OverlapProSwUsingCheck(const UINT16 wOverlapId, UINT16* pDevId, UINT8* pDe
*/ */
UINT8 RouteRelAllSwitchPosCheck(UINT16 const routeId); UINT8 RouteRelAllSwitchPosCheck(UINT16 const routeId);
/*
*
*const UINT16 wOverlapId保护区段ID
* UINT8 chSendLevel,
*CI_ERROR
* CI_SUCCESS
* RELAY_STATE_WAITE --
* by cgh 20250617
*/
UINT8 OverlapZhaoChaRelayCheck(const UINT16 wOverlapId, UINT8 chSendLevel);
/*
*
* UINT16 routeId,
* CI_ERROR
* CI_SUCCESS
* by fan 20250724
*/
UINT8 RouteAllSecProtectLockCheck(UINT16 const routeId);
/*
*
* UINT16 logSectionId, ID
* CI_ERROR
* CI_SUCCESS
* by fan 20250728
*/
UINT8 LogSecRelateNoSleepTrainCheck(UINT16 const logSectionId);
/*
* /
* UINT16 wRouteId ID
* CI_ERROR
* CI_SUCCESS /
* Created By LQ 2025.08.05
*/
UINT8 RouteCldAttrCheck(UINT16 wRouteId);
/*
*
* UINT16 overlapId ID
* UINT8 functionId ID
* CI_ERROR 0
* CI_SUCCESS 1
* Created By LQ 2025.08.18
*/
UINT8 OverlapOccuUnlockCheck(UINT16 overlapId, UINT8 functionId);
/*
* :spks封锁时检查开关打开或cbtc进路CMD封锁
* UINT16 wPhySecId ID wRouteId进路ID
* CI_ERROR 0
* CI_SUCCESS 1
* Created By fan 2025.12.16
*/
UINT8 SectionFlockReOpenCheck(UINT16 wPhySecId, UINT16 wRouteId);
/*
* CBTC进路逻辑区段占用检查
* UINT16 const routeId ID
* UINT16 *pDevId Id
* UINT8 *pDevState
* CI_ERROR 0
* CI_SUCCESS 1
* Created By LQ 2026.01.25
*/
UINT8 RouteCbtcLogSecOccCheck(UINT16 const routeId, UINT16* pDevId, UINT8* pDevState);
/*
* CBTC进路保持开放阶段逻辑区段占用检查
* UINT16 const routeId ID
* UINT16 *pDevId Id
* UINT8 *pDevState
* CI_ERROR 0
* CI_SUCCESS 1
* Created By LQ 2026.03.12
*/
UINT8 RouteCbtcKeepOpenLgcOccCheck(UINT16 const routeId, UINT16* pDevId, UINT8* pDevState);
#endif #endif
File diff suppressed because it is too large Load Diff
@@ -325,11 +325,10 @@ UINT8 PhySectionDelayUnlockProcess(const UINT16 routeId, UINT16* phySectionId);
/* C25_解锁进路overlap逻辑处理 */ /* C25_解锁进路overlap逻辑处理 */
/* /*
* overlap逻辑处理 * overlap逻辑处理
* const UINT16 routeId * const UINT16 routeId
* CI_ERROR 0x00 * CI_ERROR
* CI_SUCCESS 0x01 * CI_SUCCESS
* CI_UNLOCK_OVERLAP_REQURE 0x02 ZC/ * CI_UNLOCK_OVERLAP_REQURE ZC申请解锁保护区段
* CI_OVERLAP_OCC_UNLOCK 0x06
* EFUNC_UNLOCK_OVER_LAP * EFUNC_UNLOCK_OVER_LAP
*/ */
UINT8 UnlockRouteOverlapLogicProcess(const UINT16 routeId, UINT16* overlapId, UINT16* pTrainId); UINT8 UnlockRouteOverlapLogicProcess(const UINT16 routeId, UINT16* overlapId, UINT16* pTrainId);
@@ -368,7 +367,7 @@ UINT8 RoutePhySectionUseLogicProcess(const UINT16 routeId);
* EFUNC_SET_SWITCH_POS * EFUNC_SET_SWITCH_POS
* cgh-CID-3037-6 * cgh-CID-3037-6
*/ */
UINT8 SetSwitchPositionLogicProcess(UINT16 const switchId, UINT8 const switchSetPos, const UINT8 chCmdType, UINT8* chSwitchTestFlag, UINT8 sendLevelFlag); UINT8 SetSwitchPositionLogicProcess(UINT16 const switchId, UINT8 const switchSetPos, const UINT8 chCmdType, UINT8* chSwitchTestFlag);
/* C30_设置道岔单锁*/ /* C30_设置道岔单锁*/
/* /*
@@ -815,23 +814,6 @@ UINT8 RouteLgcSecResUnlockNextSecCheck(const UINT16 wRouteId, const UINT16 wUnlo
*/ */
UINT8 RouteLgcSecResReturnSecCheck(UINT16 wValidReturnSigId, const UINT16 wRouteId); UINT8 RouteLgcSecResReturnSecCheck(UINT16 wValidReturnSigId, const UINT16 wRouteId);
/*
* 线
* UINT16 routeId ID
* CI_ERROR
* CI_SUCCESS
*
*/
UINT8 DsnConnectOtherCiValidCheck(UINT16 const routeId);
/*
* 线
* const UINT16 wRouteId ID
* CI_SUCCESS CI_ERROR
* Created By wyd 20260318
*/
void DsnConnectRouteSecUnlockProc(UINT16 wRouteId);
#if 0 #if 0
/* /*
* *
@@ -274,17 +274,15 @@ UINT8 LockLogRouteCheckProcess(UINT16 const logRouteId)
* UINT8 pDevState, * UINT8 pDevState,
* @note * @note
*/ */
UINT8 LogRouteSecFengSuoCheck(UINT16 logRouteId, UINT16* pDevId, UINT8* pDevState) UINT8 LogRoutePhySecFengSuoCheck(UINT16 logRouteId, UINT16* pDevId, UINT8* pDevState)
{ {
UINT16* LogSecIdBuff = NULL; UINT16* LogSecIdBuff = NULL;
UINT16 logSecSum = 0U; UINT16 logSecSum = 0U;
UINT16 ii = 0U; UINT16 ii = 0U;
UINT16 devId = 0U; /*关联区段ID*/ UINT16 devId = 0U; /*¹ØÁªÎïÀíÇø¶ÎID*/
UINT8 devState = 0U; UINT8 devState = 0U;
UINT8 retval = CI_ERROR; UINT8 retval = CI_ERROR;
UINT8 chShareSwitchNum = 0U;/*共用道岔区段个数*/
UINT16* plogSecIdPBuf = NULL;/*共用道岔区段序列*/
UINT8 jj = 0U;
LogSecIdBuff = GetLogicalRouteInLogSecId(logRouteId); LogSecIdBuff = GetLogicalRouteInLogSecId(logRouteId);
logSecSum = GetLogicalRouteInLogSecSum(logRouteId); logSecSum = GetLogicalRouteInLogSecSum(logRouteId);
if ((NULL != LogSecIdBuff) && (0U != logSecSum) && (NULL!= pDevId) && (NULL != pDevState)) if ((NULL != LogSecIdBuff) && (0U != logSecSum) && (NULL!= pDevId) && (NULL != pDevState))
@@ -292,48 +290,21 @@ UINT8 LogRouteSecFengSuoCheck(UINT16 logRouteId, UINT16* pDevId, UINT8* pDevStat
retval = CI_SUCCESS; retval = CI_SUCCESS;
for (ii = 0U; ii < logSecSum; ii++) for (ii = 0U; ii < logSecSum; ii++)
{ {
devId =LogSecIdBuff[ii]; devId = GetLgcSecRelativePhySecId(LogSecIdBuff[ii]);
devState = GetLogSecFLockType(devId); devState = GetPhySecFLockState(devId);
/* 状态如果不是未封锁状态,则认为检查失败 */ /* 状态如果不是未封锁状态,则认为检查失败 */
if (SEC_FLOCK_TYPE_NONE != devState ) if (PHYSICAL_SECTION_FLOCK_NO != devState )
{ {
/*状态不一致返回故障状态*/ /*状态不一致返回故障状态*/
*pDevId = devId; *pDevId = devId;
*pDevState = PHYSICAL_SECTION_FLOCK_YES; *pDevState = devState;
retval = CI_ERROR; retval = CI_ERROR;
break;
} }
else else
{ {
chShareSwitchNum = GetLogSecSameSwitchSecSum(devId); /*¼ÌÐø¼ì²é*/
plogSecIdPBuf = GetLogSecSameSwitchSecId(devId);
if ((PHYSICAL_INCLUDE_AXIS_SUM_MAX > chShareSwitchNum) && (NULL != plogSecIdPBuf))
{
/*检查与逻辑区段共用道岔的逻辑区段封锁状态*/
for (jj = 0U; jj < chShareSwitchNum; jj++)
{
devState = GetLogSecFLockType(plogSecIdPBuf[jj]);/*逻辑区段封锁*/
if (SEC_FLOCK_TYPE_NONE != devState)
{
/*区段处于封锁状态*/
/*状态不一致返回故障状态*/
*pDevId = plogSecIdPBuf[jj];
*pDevState = PHYSICAL_SECTION_FLOCK_YES;
retval = CI_ERROR;
break;
}
}
}
else
{
*pDevId = devId;
*pDevState = PHYSICAL_SECTION_FLOCK_YES;
retval = CI_ERROR;
}
}
if (CI_ERROR == retval)
{
break;/*跳出*/
} }
} }
} }
@@ -666,7 +637,7 @@ UINT8 LogRouteSectionCheck(UINT16 logRouteId, UINT8 functionId, UINT8 sendLevel)
/*逻辑进路关联的物理区段未封锁*/ /*逻辑进路关联的物理区段未封锁*/
devId = 0u; devId = 0u;
devState = 0u; devState = 0u;
checkResult = LogRouteSecFengSuoCheck(logRouteId, &devId, &devState); checkResult = LogRoutePhySecFengSuoCheck(logRouteId, &devId, &devState);
if (checkResult == CI_SUCCESS) if (checkResult == CI_SUCCESS)
{ {
/* 通过检查 */ /* 通过检查 */
@@ -675,7 +646,7 @@ UINT8 LogRouteSectionCheck(UINT16 logRouteId, UINT8 functionId, UINT8 sendLevel)
else else
{ {
/* 记录故障码 */ /* 记录故障码 */
SetErrorData(functionId, CI_DEVICE_TYPE_LOGICSEC, devId, ETYPE_PS_FLOCK_STATE, devState, sendLevel); SetErrorData(functionId, CI_DEVICE_TYPE_PHYSEC, devId, ETYPE_PS_FLOCK_STATE, devState, sendLevel);
/* 失败返回 */ /* 失败返回 */
reResult = CI_ERROR; reResult = CI_ERROR;
} }
@@ -2039,7 +2010,7 @@ UINT8 KeepLogRouteSectionCheck(UINT16 wLogRouteId, UINT8 functionId, UINT8 sendL
UINT8 devState = 0U; /*设备状态*/ UINT8 devState = 0U; /*设备状态*/
/* 逻辑进路内所有区段未被封锁 */ /* 逻辑进路内所有区段未被封锁 */
checkResult = LogRouteSecFengSuoCheck(wLogRouteId, &devId, &devState); checkResult = LogRoutePhySecFengSuoCheck(wLogRouteId, &devId, &devState);
if (CI_SUCCESS == checkResult) if (CI_SUCCESS == checkResult)
{ {
/* 通过检查 */ /* 通过检查 */
@@ -2048,7 +2019,7 @@ UINT8 KeepLogRouteSectionCheck(UINT16 wLogRouteId, UINT8 functionId, UINT8 sendL
else else
{ {
/* 记录故障码 */ /* 记录故障码 */
SetErrorData(functionId, CI_DEVICE_TYPE_LOGICSEC, devId, ETYPE_PS_FLOCK_STATE, devState, sendLevel); SetErrorData(functionId, CI_DEVICE_TYPE_PHYSEC, devId, ETYPE_PS_FLOCK_STATE, devState, sendLevel);
/* 失败返回 */ /* 失败返回 */
reResult = CI_ERROR; reResult = CI_ERROR;
} }
@@ -51,7 +51,7 @@ UINT8 LockLogRouteCheckProcess(UINT16 const logRouteId);
* UINT8 sendLevel, * UINT8 sendLevel,
* @note * @note
*/ */
UINT8 LogRouteSecFengSuoCheck(UINT16 logRouteId, UINT16* pDevId, UINT8* pDevState); UINT8 LogRoutePhySecFengSuoCheck(UINT16 logRouteId, UINT16* pDevId, UINT8* pDevState);
/** /**
* @brief * @brief
@@ -181,7 +181,6 @@ UINT8 SetLeadRouteP(const UINT16 routeId)
UINT16 devId = 0u; /*设备ID*/ UINT16 devId = 0u; /*设备ID*/
UINT8 devState = 0u; /*设备状态*/ UINT8 devState = 0u; /*设备状态*/
UINT8 reResult = CI_SUCCESS; /*返回值*/ UINT8 reResult = CI_SUCCESS; /*返回值*/
UINT8 cFuncSwitch = FUNC_SWITCH_ON; /*引导进路是否检查防淹门开关*/
/* 联锁条件检查 */ /* 联锁条件检查 */
devId = routeId; devId = routeId;
@@ -227,17 +226,8 @@ UINT8 SetLeadRouteP(const UINT16 routeId)
if (CI_SUCCESS == reResult) if (CI_SUCCESS == reResult)
{ {
/*防淹门联锁条件检查*/ /*防淹门联锁条件检查*/
cFuncSwitch = GetCiFunctionSwitchConfig(FUNC_LEADROUTE_FLOODGATE_CHECK); reResult = BlocRouteFloodGateCheck(routeId,functionId,sendLevel);
if (FUNC_SWITCH_OFF == cFuncSwitch)
{
/*引导进路办理不检查防淹门状态*/
}
else
{
/*引导进路办理检查防淹门状态*/
reResult = BlocRouteFloodGateCheck(routeId, functionId, sendLevel);
}
} }
return reResult; return reResult;
@@ -2005,7 +1995,9 @@ UINT8 CancelDTrainRouteP(const UINT16 routeId)
UINT8 devState = 0u; /*设备状态*/ UINT8 devState = 0u; /*设备状态*/
UINT16 cancleZhaoChaRelayId = 0u; /*取消照查继电器ID*/ UINT16 cancleZhaoChaRelayId = 0u; /*取消照查继电器ID*/
UINT8 relayState = 0u; /*继电器采集状态*/ UINT8 relayState = 0u; /*继电器采集状态*/
UINT8 chRouteLevel = 0U;
/* 联锁条件检查 */ /* 联锁条件检查 */
/*进路内所有区段正常锁闭*/ /*进路内所有区段正常锁闭*/
checkResult = RouteAllSecLockStateCheck(routeId,PHYSICAL_SECTION_LOCK_NORMAL,&devId,&devState); checkResult = RouteAllSecLockStateCheck(routeId,PHYSICAL_SECTION_LOCK_NORMAL,&devId,&devState);
@@ -2042,8 +2034,19 @@ UINT8 CancelDTrainRouteP(const UINT16 routeId)
} }
if (CI_SUCCESS == reResult) if (CI_SUCCESS == reResult)
{/*检查取消照查继电器状态是否吸起*/ {/*检查取消照查继电器状态是否吸起*/
cancleZhaoChaRelayId = GetRouteCancleZhaoChaRelayId(routeId); /*取消照查继电器ID*/ chRouteLevel = GetRouteLevel(routeId);
if (ROUTE_LEVEL_BLOC == chRouteLevel)
{
cancleZhaoChaRelayId = GetRouteCancleZhaoChaRelayId(routeId); /*后备模式取消照查继电器ID*/
}
else if (ROUTE_LEVEL_CBTC == chRouteLevel)
{
cancleZhaoChaRelayId = GetRouteCbtcCancelZhaochaRelay(routeId);/*CBTC模式取消照查继电器ID*/
}
else
{
; /*非法监督模式,继电器ID为0,在下面不会处理*/
}
if((0u != cancleZhaoChaRelayId) && (0xFFFFu != cancleZhaoChaRelayId)) if((0u != cancleZhaoChaRelayId) && (0xFFFFu != cancleZhaoChaRelayId))
{ {
/*取消继电器有效:取消继电器采集状态为:吸起*/ /*取消继电器有效:取消继电器采集状态为:吸起*/
@@ -2525,7 +2528,7 @@ UINT8 SetLTrainRouteSwitchCheck(UINT16 routeId, UINT8 functionId, UINT8 sendLeve
} }
else else
{ {
/*如果是进路防护道岔等待相邻联锁反馈道岔检查状态,先不检查防护道岔是否全在位置,继续等待*/ reResultP = CI_ERROR;
} }
if (CI_ERROR == reResultP) if (CI_ERROR == reResultP)
@@ -4112,7 +4115,6 @@ UINT8 SetLeadRouteCheck(const UINT16 routeId)
UINT16 devId = 0u; /*设备ID*/ UINT16 devId = 0u; /*设备ID*/
UINT8 devState = 0u; /*设备状态*/ UINT8 devState = 0u; /*设备状态*/
UINT8 reResult = CI_ERROR; /*返回值*/ UINT8 reResult = CI_ERROR; /*返回值*/
UINT8 cFuncSwitch = FUNC_SWITCH_ON; /*引导进路是否检查防淹门开关*/
/* 联锁条件检查 */ /* 联锁条件检查 */
devId = routeId; devId = routeId;
@@ -4212,18 +4214,7 @@ UINT8 SetLeadRouteCheck(const UINT16 routeId)
/*防淹门联锁条件检查*/ /*防淹门联锁条件检查*/
if (CI_SUCCESS == reResult) if (CI_SUCCESS == reResult)
{ {
cFuncSwitch = GetCiFunctionSwitchConfig(FUNC_LEADROUTE_FLOODGATE_CHECK); reResult = BlocRouteFloodGateCheck(routeId, functionId, sendLevel);
if (FUNC_SWITCH_OFF == cFuncSwitch)
{
/*引导进路锁闭不检查防淹门状态*/
}
else
{
/*引导进路锁闭检查防淹门状态*/
reResult = BlocRouteFloodGateCheck(routeId, functionId, sendLevel);
}
if (CI_ERROR == reResult) if (CI_ERROR == reResult)
{ {
/* 失败返回 */ /* 失败返回 */
+1 -1
View File
@@ -113,7 +113,7 @@ UINT8 MainProcess(void)
cost[2] = MSCP_GetTick(); cost[2] = MSCP_GetTick();
/*退出运营处理*/ /*退出运营处理*/
APP_API_ExitOperation(); (void)APP_API_ExitOperation();
/*联锁逻辑处理*/ /*联锁逻辑处理*/
+5 -33
View File
@@ -49,7 +49,6 @@
#define MASK_TYPE_SWITCH_BYPASS ((UINT8)0x0D) /*定义道岔旁路码位*/ #define MASK_TYPE_SWITCH_BYPASS ((UINT8)0x0D) /*定义道岔旁路码位*/
#define MASK_TYPE_SWITCH_OPEN_CAP ((UINT8)0x0E) /*定义道岔所在板卡开盖状态*/ #define MASK_TYPE_SWITCH_OPEN_CAP ((UINT8)0x0E) /*定义道岔所在板卡开盖状态*/
#define MASK_TYPE_SWITCH_SUDDEN_JICHA ((UINT8)0x0F) /*定义道岔静态红闪码位*/ #define MASK_TYPE_SWITCH_SUDDEN_JICHA ((UINT8)0x0F) /*定义道岔静态红闪码位*/
#define MASK_TYPE_SWITCH_JICHA ((UINT8)0x10) /*定义道岔挤岔码位:28.0.0.14数据结构使用*/
/*单轨_道岔码位*/ /*单轨_道岔码位*/
/* zt 删除单轨相关代码 2022-02-15 */ /* zt 删除单轨相关代码 2022-02-15 */
@@ -63,12 +62,11 @@
#define MASK_TYPE_SIGNAL_REDCLOSE ((UINT8)0x15) /*定义信号机红灭码位*/ #define MASK_TYPE_SIGNAL_REDCLOSE ((UINT8)0x15) /*定义信号机红灭码位*/
#define MASK_TYPE_SIGNAL_GREENCLOSE ((UINT8)0x16) /*定义信号机绿灭码位*/ #define MASK_TYPE_SIGNAL_GREENCLOSE ((UINT8)0x16) /*定义信号机绿灭码位*/
#define MASK_TYPE_SIGNAL_YELLOWCLOSE ((UINT8)0x17) /*定义信号机黄灭码位*/ #define MASK_TYPE_SIGNAL_YELLOWCLOSE ((UINT8)0x17) /*定义信号机黄灭码位*/
#define MASK_TYPE_SIGNAL_REDBREAK ((UINT8)0x18) /*定义信号机红断码位--暂无使用*/ #define MASK_TYPE_SIGNAL_REDBREAK ((UINT8)0x18) /*定义信号机红断码位*/
#define MASK_TYPE_SIGNAL_GREENBREAK ((UINT8)0x19) /*定义信号机绿断码位*/ #define MASK_TYPE_SIGNAL_GREENBREAK ((UINT8)0x19) /*定义信号机绿断码位*/
#define MASK_TYPE_SIGNAL_YELLOWBREAK ((UINT8)0x1a) /*定义信号机黄断码位*/ #define MASK_TYPE_SIGNAL_YELLOWBREAK ((UINT8)0x1a) /*定义信号机黄断码位*/
#define MASK_TYPE_SIGNAL_WHITEBREAK ((UINT8)0x1b) /*定义信号机白断码位*/ #define MASK_TYPE_SIGNAL_WHITEBREAK ((UINT8)0x1b) /*定义信号机白断码位*/
#define MASK_TYPE_SIGNAL_BLUEBREAK ((UINT8)0x25) /*定义信号机断码位*/ #define MASK_TYPE_SIGNAL_BREAK ((UINT8)0x1c) /*定义信号机断码位*/
#define MASK_TYPE_SIGNAL_BREAK ((UINT8)0x1c) /*定义信号机断丝码位 (对全电子联锁=红灯断丝)*/
#define MASK_TYPE_SIGNAL_FENGSUO ((UINT8)0x1d) /*定义信号机封锁码位*/ #define MASK_TYPE_SIGNAL_FENGSUO ((UINT8)0x1d) /*定义信号机封锁码位*/
#define MASK_TYPE_SIGNAL_OPENSTATE ((UINT8)0x1e) /*定义信号机开放状态码位*/ #define MASK_TYPE_SIGNAL_OPENSTATE ((UINT8)0x1e) /*定义信号机开放状态码位*/
@@ -92,14 +90,9 @@
#define MASK_TYPE_SIGNAL_DET_ERR ((UINT8)0x5c) /*信号机扣车按钮故障状态码位*/ #define MASK_TYPE_SIGNAL_DET_ERR ((UINT8)0x5c) /*信号机扣车按钮故障状态码位*/
#define MASK_TYPE_SIGNAL_AUTO_DERAIN ((UINT8)0x5e) /*信号机自动扣车码位*/ #define MASK_TYPE_SIGNAL_AUTO_DERAIN ((UINT8)0x5e) /*信号机自动扣车码位*/
#define MASK_TYPE_SIGNAL_DET_CUT_VALID ((UINT8)0xA6) /*信号机扣车旁路按钮有效状态码位*/
#define MASK_TYPE_SIGNAL_DET_CUT_ERR ((UINT8)0xA7) /*信号机扣车旁路按钮故障状态码位*/
#define MASK_ZC_CI_SIG_ENGINEERV_NEAR ((UINT8)0x97) /*定义信号机工程车接近码位*/ #define MASK_ZC_CI_SIG_ENGINEERV_NEAR ((UINT8)0x97) /*定义信号机工程车接近码位*/
#define MASK_CI_ZC_SIG_ENGINCROSS_STE ((UINT8)0x98) /*定义信号机工程车关灯码位*/ #define MASK_CI_ZC_SIG_ENGINCROSS_STE ((UINT8)0x98) /*定义信号机工程车关灯码位*/
#define MASK_TYPE_SIGNAL_CROSS_RED ((UINT8)0x9F) /*定义CI-ATS信号机列车闯红灯码位*/
/*物理区段相关码位*/ /*物理区段相关码位*/
#define MASK_TYPE_PHYSECTION_OCCUPY ((UINT8)0x25) /*定义物理区段占用码位*/ #define MASK_TYPE_PHYSECTION_OCCUPY ((UINT8)0x25) /*定义物理区段占用码位*/
#define MASK_TYPE_PHYSECTION_STARTLOCK ((UINT8)0x26) /*定义物理区段上电锁闭码位*/ #define MASK_TYPE_PHYSECTION_STARTLOCK ((UINT8)0x26) /*定义物理区段上电锁闭码位*/
@@ -119,12 +112,7 @@
#define MASK_TYPE_PHYSECTION_HEAD_XTD ((UINT8)0x31) /*定义物理区段运行方向下行状态码位*/ #define MASK_TYPE_PHYSECTION_HEAD_XTD ((UINT8)0x31) /*定义物理区段运行方向下行状态码位*/
#define MASK_TYPE_PHYSECTION_HEAD_STD ((UINT8)0x32) /*定义物理区段运行方向上行状态码位*/ #define MASK_TYPE_PHYSECTION_HEAD_STD ((UINT8)0x32) /*定义物理区段运行方向上行状态码位*/
#define MASK_TYPE_LIECHE_STOPSTATE ((UINT8)0x3a) /*定义列车停稳信息状态码位*/ #define MASK_TYPE_LIECHE_STOPSTATE ((UINT8)0x3a) /*定义列车停稳信息状态码位*/
#define MASK_TYPE_PHYSEC_CENTERDETAIN_UP ((UINT8)0x3d) /*定义物理区段CI-ATS中心上行扣车状态状态码位 (兼容28.0.0.14使用)*/
#define MASK_TYPE_PHYSEC_CENTERDETAIN_DOWN ((UINT8)0x3e) /*定义物理区段CI-ATS中心下行扣车状态状态码位 (兼容28.0.0.14使用)*/
#define MASK_TYPE_PHYSEC_STATIONDETAIN_UP ((UINT8)0x3f) /*定义物理区段CI-ATS车站上行扣车状态状态码位 (兼容28.0.0.14使用)*/
#define MASK_TYPE_PHYSEC_STATIONDETAIN_DOWN ((UINT8)0x40) /*定义物理区段CI-ATS车站下行扣车状态状态码位 (兼容28.0.0.14使用)*/
#define MASK_TYPE_AXISSECTION_DETAIN_UP ((UINT8)0x41) /*定义区段CI-ZC上行扣车状态状态码位 (兼容28.0.0.14使用)*/
#define MASK_TYPE_AXISSECTION_DETAIN_DOWN ((UINT8)0x42) /*定义区段CI-ZC下行扣车状态状态码位 (兼容28.0.0.14使用)*/
/*逻辑区段相关码位*/ /*逻辑区段相关码位*/
#define MASK_TYPE_LOGICSECTION_UTOCCUPY ((UINT8)0x33) /*定义逻辑区段非通信车占用码位*/ #define MASK_TYPE_LOGICSECTION_UTOCCUPY ((UINT8)0x33) /*定义逻辑区段非通信车占用码位*/
@@ -142,13 +130,8 @@
#define MASK_TYPE_LOGICSECTION_JUMPLOCK ((UINT8)0x9A) /*定义逻辑区段跳跃锁闭码位*/ #define MASK_TYPE_LOGICSECTION_JUMPLOCK ((UINT8)0x9A) /*定义逻辑区段跳跃锁闭码位*/
#define MASK_TYPE_LOGICSECTION_ARB ((UINT8)0x9B) /*定义逻辑区段ARB状态码位*/ #define MASK_TYPE_LOGICSECTION_ARB ((UINT8)0x9B) /*定义逻辑区段ARB状态码位*/
#define MASK_TYPE_LOGICSECTION_SPKS_FLOCK ((UINT8)0x9C) /*定义逻辑区段SPKS封锁状态码位*/ #define MASK_TYPE_LOGICSECTION_SPKS_FLOCK ((UINT8)0x9C) /*定义逻辑区段SPKS封锁状态码位*/
#define MASK_TYPE_LOGICSECTION_ALLSEC_FLOCK ((UINT8)0x9D) /*定义逻辑区段全线封锁状态码位*/
#define MASK_TYPE_LOGICSECTION_APG_FLOCK ((UINT8)0x9E) /*定义逻辑区段站台门异常打开封锁码位*/
#define MASK_TYPE_LOGICSECTION_PROHIBIT_FAO ((UINT8)0x9F) /*定义逻辑区段禁止FAO运行码位*/
#define MASK_TYPE_LOGICSECTION_CMD_FLOCK ((UINT8)0xA0) /*定义逻辑区段人工封锁码位*/
#define MASK_TYPE_LOGICSECTION_ESB_FLOCK ((UINT8)0xA1) /*定义逻辑区段ESB封锁码位*/
#define MASK_TYPE_LOGICSECTION_CESB_FLOCK ((UINT8)0xA2) /*定义逻辑区段CESB封锁码位*/
#define MASK_TYPE_LOGICSECTION_OVERRIDE ((UINT8)0xA8) /*定义逻辑区段旁路码位*/
/*保护区段相关码位*/ /*保护区段相关码位*/
#define MASK_TYPE_OVERLAP_LOCKSTATE ((UINT8)0x30) /*定义保护区段锁闭状态码位*/ #define MASK_TYPE_OVERLAP_LOCKSTATE ((UINT8)0x30) /*定义保护区段锁闭状态码位*/
@@ -173,7 +156,6 @@
#define MASK_TYPE_ROUTE_DC_QINGQIU ((UINT8)0x51) /*定义进路调车请求状态码位(CI-ATS)*/ #define MASK_TYPE_ROUTE_DC_QINGQIU ((UINT8)0x51) /*定义进路调车请求状态码位(CI-ATS)*/
#define MASK_TYPE_ROUTE_DC_AGREE ((UINT8)0x52) /*定义进路调车同意状态码位(CI-ATS)*/ #define MASK_TYPE_ROUTE_DC_AGREE ((UINT8)0x52) /*定义进路调车同意状态码位(CI-ATS)*/
#define MASK_TYPE_ROUTE_AUTO_TRIGGER ((UINT8)0x53) /*定义进路自动触发标码位(CI-ATS)*/ #define MASK_TYPE_ROUTE_AUTO_TRIGGER ((UINT8)0x53) /*定义进路自动触发标码位(CI-ATS)*/
#define MASK_TYPE_ROUTE_DC_AGREE_ERR ((UINT8)0x54) /*定义进路调车同意按钮故障状态码位(CI-ATS)*/
/*站台相关码位*/ /*站台相关码位*/
@@ -187,9 +169,6 @@
#define MASK_TYPE_ESP_FLASH_STATE ((UINT8)0x9b) /*定义ESS闪灯灯状态码位*/ #define MASK_TYPE_ESP_FLASH_STATE ((UINT8)0x9b) /*定义ESS闪灯灯状态码位*/
#define MASK_TYPE_CANCEL_ESP_FAULT ((UINT8)0x9c) /*定义取消紧急关闭按钮故障码位*/ #define MASK_TYPE_CANCEL_ESP_FAULT ((UINT8)0x9c) /*定义取消紧急关闭按钮故障码位*/
#define MASK_TYPE_ESP_FAULT ((UINT8)0x9d) /*定义紧急关闭按钮故障码位*/ #define MASK_TYPE_ESP_FAULT ((UINT8)0x9d) /*定义紧急关闭按钮故障码位*/
#define MASK_TYPE_CUT_ESP_FAULT ((UINT8)0xA3) /*定义紧急关闭旁路按钮故障码位*/
#define MASK_TYPE_ESP_PRESS_STATE ((UINT8)0xA4) /*定义紧急关闭按钮按下状态码位*/
#define MASK_TYPE_ESS_STATE ((UINT8)0xA7) /*定义ESS去位/停位状态码位*/
/*站台安全门相关码位*/ /*站台安全门相关码位*/
#define MASK_TYPE_PSD_STATE ((UINT8)0x60) /*定义站台安全门状态码位-ZC,LEU用*/ #define MASK_TYPE_PSD_STATE ((UINT8)0x60) /*定义站台安全门状态码位-ZC,LEU用*/
@@ -207,8 +186,6 @@
#define MASK_TYPE_PSD_PDB_FLASH_STATE ((UINT8)0xA0) /*定义清客确认箱PDB按钮指示灯闪灯状态码位*/ #define MASK_TYPE_PSD_PDB_FLASH_STATE ((UINT8)0xA0) /*定义清客确认箱PDB按钮指示灯闪灯状态码位*/
#define MASK_TYPE_PSD_VIDEO_QK_LU ((UINT8)0xA1) /*定义清客按钮箱视频清客表示灯(绿)状态码位*/ #define MASK_TYPE_PSD_VIDEO_QK_LU ((UINT8)0xA1) /*定义清客按钮箱视频清客表示灯(绿)状态码位*/
#define MASK_TYPE_PSD_VIDEO_QK_HONG ((UINT8)0xA2) /*定义清客按钮箱视频清客表示灯(红)状态码位*/ #define MASK_TYPE_PSD_VIDEO_QK_HONG ((UINT8)0xA2) /*定义清客按钮箱视频清客表示灯(红)状态码位*/
#define MASK_TYPE_PSD_EXCEPT_OPEN ((UINT8)0xA5) /*定义站台安全门异常打开码位*/
#define MASK_TYPE_PSD_MUTUALLOCK_BTNERR ((UINT8)0xA6) /*定义站台安全门互锁解除按钮异常码位*/
/*车库门相关码位*/ /*车库门相关码位*/
#define MASK_TYPE_GARAGEDOOR_OPEN_STATE ((UINT8)0x62) /*定义车库门开门状态码位(CI->ATS*/ #define MASK_TYPE_GARAGEDOOR_OPEN_STATE ((UINT8)0x62) /*定义车库门开门状态码位(CI->ATS*/
@@ -244,10 +221,5 @@
/*防淹门相关码位*/ /*防淹门相关码位*/
/*临时限速相关码位*/
#define MASK_TYPE_SPEEDLIMITSEC_STATE ((UINT8)0x9F) /*CI-ATS限速区段临时限速设置码位*/
#define MASK_TYPE_SPEEDLIMITTF_STATE ((UINT8)0xa9) /*CI-ATS限速区段台风限速设置码位*/
#define MASK_TYPE_SPEEDLIMITTNR_STATE ((UINT8)0xab) /*CI-ATS限速区段NR限速设置码位*/
#define MASK_TYPE_SPEEDLIMITQX_STATE ((UINT8)0xac) /*CI-ATS限速区段全线临时限速设置码位*/
#endif #endif
@@ -1,267 +0,0 @@
/********************************************************
*
* OHLConfigDataManage.c
*
*
*
*
*
* 使
*
*
********************************************************/
#include "OHLConfigDataManage.h"
OHLConfigDataStruct OhlConfigDataStru[OHL_MAX_NUM]; /*定义接触网数据配置结构体*/
INT16 OhlCurSum = 0; /*接触网当前总数*/
UINT16 LocalCiOhlIdBuf[OHL_MAX_NUM] = { 0u }; /*定义本地联锁接触网ID映射数组*/
/*
* ID接触网索引号
* const UINT16 ohlId, ID
* SWITCH_SUM_MAX:
* <SWITCH_SUM_MAX:
*/
UINT16 GetOhlConfigBufIndex(const UINT16 ohlId)
{
UINT16 retVal = OHL_MAX_NUM;
if ((ohlId >= 1u) && (ohlId < OHL_MAX_NUM))
{
retVal = ohlId;
}
return retVal;
}
/*
*
* void
* 0:
* >0:
*/
UINT16 GetOhlCurSum(void)
{
UINT16 retVal = 0u;
if (OhlCurSum >= (INT16)OHL_MAX_NUM)
{
retVal = OHL_MAX_NUM;
}
else if (OhlCurSum < 0)
{
retVal = 0u;
}
else
{/*OhlCurSum在[0,OHL_MAX_NUM)区间强转,保证安全*/
retVal = (UINT16)OhlCurSum;
}
return retVal;
}
/*
*
*
* CI_SUCCESS,
* CI_ERROR,
*/
UINT8 OhlConfigDataManage(void)
{
UINT16 ii = 0u; /*游标*/
UINT16 jj = 0u; /*游标*/
UINT16 ohlConfigDataSum = 0u; /*道岔设备配置数据总数*/
UINT8 retVal = CI_SUCCESS;
UINT8 localCiId = 0u;
localCiId = GetSystemParaLocalCiId();
/*保存道岔ID索引数组*/
ohlConfigDataSum = GetOhlCurSum();
if (OHL_MAX_NUM <= ohlConfigDataSum)
{/*配置数据总数错误*/
retVal = CI_ERROR;
}
else
{
for (ii = 0u; ii < OHL_MAX_NUM; ii++)
{
if (jj == ohlConfigDataSum)
{/*遍历有效数据完毕*/
break;
}
if ((OhlConfigDataStru[ii].wOhlId >= 1u) && (OhlConfigDataStru[ii].wOhlId < OHL_MAX_NUM))
{/*id有效*/
if (localCiId == OhlConfigDataStru[ii].chBelongCiId)
{
LocalCiOhlIdBuf[jj] = OhlConfigDataStru[ii].wOhlId;
jj++;
}
else
{
/*只处理本控区*/
}
}
}
}
return retVal;
}
/*
* ID接触网数据
*
* OHLConfigDataStruct *
*/
OHLConfigDataStruct* GetOhlConfigData(void)
{
return OhlConfigDataStru;
}
/*
* ID
* const UINT16 bufIndex,
* 0:
* >0: ID
*/
UINT16 GetOhlId(const UINT16 bufIndex)
{
UINT16 retVal = CI_ERROR;
UINT16 ohlCurNum = 0u; /*接触网当前总数*/
ohlCurNum = GetOhlCurSum();
if (bufIndex < ohlCurNum)
{
retVal = LocalCiOhlIdBuf[bufIndex];
}
else
{
retVal = CI_ERROR;
}
return retVal;
}
/*
* ID接触网组数
* const UINT16 ohlId, ID
* 0:
* >0:
*/
UINT8 GetOhlGroupSum(const UINT16 ohlId)
{
UINT16 bufIndex = 0u; /*数组下标*/
UINT8 retVal = CI_ERROR;
bufIndex = GetOhlConfigBufIndex(ohlId); /*获取道岔数组下标*/
if (bufIndex < OHL_MAX_NUM)
{
retVal = OhlConfigDataStru[bufIndex].chRelayGroupNum;
}
else
{
retVal = CI_ERROR;
}
return retVal;
}
/*
* ID接触网有电继电器ID数组
* const UINT16 ohlId, ID
* NULL:
* NULL: ID数组
*/
UINT16* GetOhlEnergizedIdBuf(const UINT16 ohlId)
{
UINT16 bufIndex = 0u; /*数组下标*/
UINT16* retVal = NULL;
bufIndex = GetOhlConfigBufIndex(ohlId); /*获取区段数组下标*/
if (bufIndex < OHL_MAX_NUM)
{
retVal = OhlConfigDataStru[bufIndex].wEnergizedId;
}
else
{
}
return retVal;
}
/*
* ID接触网断电继电器ID数组
* const UINT16 ohlId, ID
* NULL:
* NULL: ID数组
*/
UINT16* GetOhlDeEnergizedIdBuf(const UINT16 ohlId)
{
UINT16 bufIndex = 0u; /*数组下标*/
UINT16* retVal = NULL;
bufIndex = GetOhlConfigBufIndex(ohlId); /*获取区段数组下标*/
if (bufIndex < OHL_MAX_NUM)
{
retVal = OhlConfigDataStru[bufIndex].wDeEnergizedId;
}
else
{
}
return retVal;
}
/*
* ID接触网所属Oc ID
* const UINT16 ohlId, ID
* 0:
* >0: Oc ID
*/
UINT16 GetOhlBelongOcId(const UINT16 ohlId)
{
UINT16 bufIndex = 0u; /*数组下标*/
UINT16 retVal = CI_ERROR;
bufIndex = GetOhlConfigBufIndex(ohlId); /*获取区段数组下标*/
if (bufIndex < OHL_MAX_NUM)
{
retVal = OhlConfigDataStru[bufIndex].wBelongOcId;
}
else
{
retVal = CI_ERROR;
}
return retVal;
}
/*
* ID接触网所属联锁ID
* const UINT16 ohlId, ID
* 0:
* >0: ID
*/
UINT8 GetOhlBelongCiId(const UINT16 ohlId)
{
UINT16 bufIndex = 0u; /*数组下标*/
UINT8 retVal = CI_ERROR;
bufIndex = GetOhlConfigBufIndex(ohlId); /*获取道岔数组下标*/
if (bufIndex < OHL_MAX_NUM)
{
retVal = OhlConfigDataStru[bufIndex].chBelongCiId;
}
else
{
retVal = CI_ERROR;
}
return retVal;
}
@@ -1,123 +0,0 @@
/********************************************************
*
* OHLConfigDataConfig.h
*
*
*
*
*
* 使
*
*
********************************************************/
#ifndef _OHL_CONFIG_DATA_MANAGE_H_
#define _OHL_CONFIG_DATA_MANAGE_H_
#include "CommonTypes.h"
#include "OHLDefine.h"
#include "../System/CiSystemDefine.h"
#include "../System/SystemParameterManage.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct S_OHLConfigDataStruct
{
UINT16 wOhlId; /*接触网ID*/
UINT16 wBelongOcId; /*所属OC ID*/
UINT8 chBelongCiId; /*所属CI ID*/
UINT8 chRelayGroupNum; /*接触网继电器组数*/
UINT16 wEnergizedId[OHL_GROUP_MAX_NUM]; /*有电继电器ID*/
UINT16 wDeEnergizedId[OHL_GROUP_MAX_NUM]; /*断电继电器ID*/
}OHLConfigDataStruct;
extern OHLConfigDataStruct OhlConfigDataStru[OHL_MAX_NUM]; /*定义接触网数据配置结构体*/
extern INT16 OhlCurSum; /*接触网当前总数*/
extern UINT16 LocalCiOhlIdBuf[OHL_MAX_NUM]; /*定义本地联锁接触网ID映射数组*/
/*
* ID接触网索引号
* const UINT16 ohlId, ID
* SWITCH_SUM_MAX:
* <SWITCH_SUM_MAX:
*/
UINT16 GetOhlConfigBufIndex(const UINT16 ohlId);
/*
*
* void
* 0:
* >0:
*/
UINT16 GetOhlCurSum(void);
/*
*
*
* CI_SUCCESS,
* CI_ERROR,
*/
UINT8 OhlConfigDataManage(void);
/*
* ID接触网数据
*
* OHLConfigDataStruct *
*/
OHLConfigDataStruct* GetOhlConfigData(void);
/*
* ID
* const UINT16 bufIndex,
* 0:
* >0: ID
*/
UINT16 GetOhlId(const UINT16 bufIndex);
/*
* ID接触网组数
* const UINT16 ohlId, ID
* 0:
* >0:
*/
UINT8 GetOhlGroupSum(const UINT16 ohlId);
/*
* ID接触网有电继电器ID数组
* const UINT16 ohlId, ID
* NULL:
* NULL: ID数组
*/
UINT16* GetOhlEnergizedIdBuf(const UINT16 ohlId);
/*
* ID接触网断电继电器ID数组
* const UINT16 ohlId, ID
* NULL:
* NULL: ID数组
*/
UINT16* GetOhlDeEnergizedIdBuf(const UINT16 ohlId);
/*
* ID接触网所属Oc ID
* const UINT16 ohlId, ID
* 0:
* >0: Oc ID
*/
UINT16 GetOhlBelongOcId(const UINT16 ohlId);
/*
* ID接触网所属联锁ID
* const UINT16 ohlId, ID
* 0:
* >0: ID
*/
UINT8 GetOhlBelongCiId(const UINT16 ohlId);
#ifdef __cplusplus
};
#endif
#endif
-187
View File
@@ -1,187 +0,0 @@
/********************************************************
*
* OHLDataManage.c
*
*
*
*
*
* 使
*
*
********************************************************/
#include "OHLDataManage.h"
OhlDataStruct OhlDataStru[OHL_MAX_NUM]; /*定义接触网数据结构体*/
/*
* ID接触网数据
*
*
SwitchDataStruct *
*/
OhlDataStruct* GetOhlData(void)
{
return OhlDataStru;
}
/*
* ID接触网供电状态
* const UINT16 ohlId, ID
* const UINT8 powerState,
*
*
*/
void SetOhlPowerState(const UINT16 ohlId, const UINT8 powerState)
{
UINT16 bufIndex = 0u; /*数组下标*/
bufIndex = GetOhlConfigBufIndex(ohlId); /*获取道岔数组下标*/
if (bufIndex < OHL_MAX_NUM)
{
if ((OHL_POWER_ENERGIZED == powerState) || (OHL_POWER_DE_ENERGIZED == powerState)
||(OHL_POWER_UNKNOW == powerState))
{
OhlDataStru[bufIndex].chPowerState = powerState; /*道岔引导总锁状态*/
}
else
{
/*不做处理*/
}
}
else
{
/*不做处理*/
}
}
/*
* ID接触网供电状态
* const UINT16 ohlId, ID
* 0:
* >0:
*/
UINT8 GetOhlPowerState(const UINT16 ohlId)
{
UINT16 bufIndex = 0u; /*数组下标*/
UINT8 retVal = CI_ERROR;
bufIndex = GetOhlConfigBufIndex(ohlId); /*获取道岔数组下标*/
if (bufIndex < OHL_MAX_NUM)
{
retVal = OhlDataStru[bufIndex].chPowerState;
}
else
{
retVal = CI_ERROR;
}
return retVal;
}
/*
*
* const UINT16 ohlId, ID
* const UINT32 cycNum
*
*/
void SetOhlDeEnerCycNum(const UINT16 ohlId, const UINT32 cycNum)
{
UINT16 bufIndex = 0u; /*数组下标*/
bufIndex = GetOhlConfigBufIndex(ohlId); /*获取道岔数组下标*/
if (bufIndex < OHL_MAX_NUM)
{
OhlDataStru[bufIndex].dwOhlDeEnerCycNum = cycNum;
}
}
/*
*
* const UINT16 ohlId, ID
* UINT32
*/
UINT32 GetOhlDeEnerCycNum(const UINT16 ohlId)
{
UINT16 bufIndex = 0u; /*数组下标*/
UINT32 retVal = CI_ERROR;
bufIndex = GetOhlConfigBufIndex(ohlId); /*获取道岔数组下标*/
if (bufIndex < OHL_MAX_NUM)
{
retVal = OhlDataStru[bufIndex].dwOhlDeEnerCycNum;
}
return retVal;
}
/*
*
* const UINT16 ohlId, ID
* const UINT32 cycNum
*
*/
void SetOhlUnknowCycNum(const UINT16 ohlId, const UINT32 cycNum)
{
UINT16 bufIndex = 0u; /*数组下标*/
bufIndex = GetOhlConfigBufIndex(ohlId); /*获取道岔数组下标*/
if (bufIndex < OHL_MAX_NUM)
{
OhlDataStru[bufIndex].dwOhlUnknowCycNum = cycNum;
}
}
/*
*
* const UINT16 ohlId, ID
* UINT32
*/
UINT32 GetOhlUnknowCycNum(const UINT16 ohlId)
{
UINT16 bufIndex = 0u; /*数组下标*/
UINT32 retVal = CI_ERROR;
bufIndex = GetOhlConfigBufIndex(ohlId); /*获取道岔数组下标*/
if (bufIndex < OHL_MAX_NUM)
{
retVal = OhlDataStru[bufIndex].dwOhlUnknowCycNum;
}
return retVal;
}
/*
*
* const UINT16 ohlId, ID
* const UINT8 bypassFlag
*
*/
void SetOhlBypassFlag(const UINT16 ohlId, const UINT8 bypassFlag)
{
UINT16 bufIndex = 0u; /*数组下标*/
bufIndex = GetOhlConfigBufIndex(ohlId); /*获取道岔数组下标*/
if (bufIndex < OHL_MAX_NUM)
{
if ((OHL_BYPASS_YES == bypassFlag) || (OHL_BYPASS_NO == bypassFlag))
{
OhlDataStru[bufIndex].chOhlBypassFlag = bypassFlag;
}
else
{/*不处理*/
}
}
}
/*
*
* const UINT16 ohlId, ID
* UINT8
*/
UINT8 GetOhlBypassFlag(const UINT16 ohlId)
{
UINT16 bufIndex = 0u; /*数组下标*/
UINT8 retVal = CI_ERROR;
bufIndex = GetOhlConfigBufIndex(ohlId); /*获取道岔数组下标*/
if (bufIndex < OHL_MAX_NUM)
{
retVal = OhlDataStru[bufIndex].chOhlBypassFlag;
}
return retVal;
}
-113
View File
@@ -1,113 +0,0 @@
/********************************************************
*
* OHLDataManage.h
*
*
*
*
*
* 使
*
*
********************************************************/
#ifndef _OHL_DATA_MANAGE_H_
#define _OHL_DATA_MANAGE_H_
#include "OHLDefine.h"
#include "OHLConfigDataManage.h"
#include "CommonTypes.h"
#include "../System/CiSystemDefine.h"
#include "../System/SystemParameterManage.h"
#ifdef __cplusplus
extern "C" {
#endif
/*道岔数据结构体*/
typedef struct S_OhlDataStruct
{
UINT16 wOhlId; /*接触网ID (配置字段)*/
UINT8 chPowerState; /*接触网供电状态*/
UINT32 dwOhlDeEnerCycNum; /*接触网断电起始周期*/
UINT32 dwOhlUnknowCycNum; /*接触网未知起始周期*/
UINT8 chOhlBypassFlag; /*接触网旁路状态*/
}OhlDataStruct;
extern OhlDataStruct OhlDataStru[OHL_MAX_NUM]; /*定义道岔数据结构体*/
/*
* ID接触网数据
*
*
SwitchDataStruct *
*/
OhlDataStruct* GetOhlData(void);
/*
* ID接触网供电状态
* const UINT16 ohlId, ID
* const UINT8 powerState,
*
*
*/
void SetOhlPowerState(const UINT16 ohlId, const UINT8 powerState);
/*
* ID接触网供电状态
* const UINT16 ohlId, ID
* 0:
* >0:
*/
UINT8 GetOhlPowerState(const UINT16 ohlId);
/*
*
* const UINT16 ohlId, ID
* const UINT32 cycNum
*
*/
void SetOhlDeEnerCycNum(const UINT16 ohlId, const UINT32 cycNum);
/*
*
* const UINT16 ohlId, ID
* UINT32
*/
UINT32 GetOhlDeEnerCycNum(const UINT16 ohlId);
/*
*
* const UINT16 ohlId, ID
* const UINT32 cycNum
*
*/
void SetOhlUnknowCycNum(const UINT16 ohlId, const UINT32 cycNum);
/*
*
* const UINT16 ohlId, ID
* UINT32
*/
UINT32 GetOhlUnknowCycNum(const UINT16 ohlId);
/*
*
* const UINT16 ohlId, ID
* const UINT8 bypassFlag
*
*/
void SetOhlBypassFlag(const UINT16 ohlId, const UINT8 bypassFlag);
/*
*
* const UINT16 ohlId, ID
* UINT8
*/
UINT8 GetOhlBypassFlag(const UINT16 ohlId);
#ifdef __cplusplus
};
#endif
#endif
-29
View File
@@ -1,29 +0,0 @@
/********************************************************
*
* OHLDataConfig.h
*
* 2014-12-05
*
*
*
* 使
*
*
********************************************************/
#ifndef _OHL_DATA_CONFIG_H_
#define _OHL_DATA_CONFIG_H_
#define OHL_MAX_NUM 3 /*接触网分区数最大值(最大支持2个,以ID为索引)*/
#define OHL_GROUP_MAX_NUM 2 /*一个接触网分区继电器最大组数*/
/*接触网供电状态*/
#define OHL_POWER_ENERGIZED ((UINT8)0x55)/*接触网有电*/
#define OHL_POWER_DE_ENERGIZED ((UINT8)0xAA)/*接触网无电*/
#define OHL_POWER_UNKNOW ((UINT8)0xFF)/*接触网未知*/
/*接触网旁路状态*/
#define OHL_BYPASS_YES ((UINT8)0xAA)/*接触网旁路*/
#define OHL_BYPASS_NO ((UINT8)0x55)/*接触网未旁路*/
#endif
@@ -872,54 +872,4 @@ UINT8 GetOverlapProSwitchPos(const UINT16 wOverlapId, const UINT16 wProSwitchId)
} }
return cRetVal; return cRetVal;
}
/*
* ID保护区段本端照查继电器ID
* const UINT16 overlapId, ID
* ID
* by cgh 20250617
*/
UINT16 GetOverlapThisZhaoChaRelayId(const UINT16 overlapId)
{
UINT16 bufIndex = 0U; /*数组下标*/
UINT16 reVal = CI_ERROR;
bufIndex = GetOverlapConfigBufIndex(overlapId); /*获取数组下标*/
if (bufIndex < OVERLAP_SUM_MAX)
{
reVal = OverlapConfigDataStru[bufIndex].wOverlapThisZhaoChaRelayId;
}
else
{
;
}
return reVal;
}
/*
* ID保护区段对端照查继电器ID
* const UINT16 overlapId, ID
* ID
* by cgh 20250617
*/
UINT16 GetOverlapThatZhaoChaRelayId(const UINT16 overlapId)
{
UINT16 bufIndex = 0U; /*数组下标*/
UINT16 reVal = CI_ERROR;
bufIndex = GetOverlapConfigBufIndex(overlapId); /*获取数组下标*/
if (bufIndex < OVERLAP_SUM_MAX)
{
reVal = OverlapConfigDataStru[bufIndex].wOverlapThatZhaoChaRelayId;
}
else
{
;
}
return reVal;
} }
@@ -72,8 +72,7 @@ typedef struct S_OverlapConfigDataStruct
UINT16 OverlapRouteSum; /*保护区段进路总数*/ UINT16 OverlapRouteSum; /*保护区段进路总数*/
UINT16 OverlapRouteIdBuf[OVERLAP_ROUTE_SUM_MAX]; /*保护区段进路数组*/ UINT16 OverlapRouteIdBuf[OVERLAP_ROUTE_SUM_MAX]; /*保护区段进路数组*/
UINT16 AxisSecFarId; /*保护区段最远端计轴区段ID*/ UINT16 AxisSecFarId; /*保护区段最远端计轴区段ID*/
UINT16 wOverlapThisZhaoChaRelayId; /*保护区段本端照查继电器ID*/
UINT16 wOverlapThatZhaoChaRelayId; /*保护区段对端照查继电器ID*/
} OverlapConfigDataStruct; } OverlapConfigDataStruct;
extern OverlapConfigDataStruct OverlapConfigDataStru[OVERLAP_SUM_MAX]; /*定义OVERLAP数据配置结构体,cgh-合并CID-2539-1:此处声明不进行初始化,统一放到InitAllStaticDataStr函数中进行初始化,为解决生成内核过大得问题*/ extern OverlapConfigDataStruct OverlapConfigDataStru[OVERLAP_SUM_MAX]; /*定义OVERLAP数据配置结构体,cgh-合并CID-2539-1:此处声明不进行初始化,统一放到InitAllStaticDataStr函数中进行初始化,为解决生成内核过大得问题*/
@@ -374,22 +373,6 @@ UINT8 CheckOtherCiOlpHaveLocalCiPSw(const UINT16 wOverlapId);
*/ */
UINT8 GetOverlapProSwitchPos(const UINT16 wOverlapId, const UINT16 wProSwitchId); UINT8 GetOverlapProSwitchPos(const UINT16 wOverlapId, const UINT16 wProSwitchId);
/*
* ID保护区段本端照查继电器ID
* const UINT16 overlapId, ID
* ID
* by cgh 20250617
*/
UINT16 GetOverlapThisZhaoChaRelayId(const UINT16 overlapId);
/*
* ID保护区段对端照查继电器ID
* const UINT16 overlapId, ID
* ID
* by cgh 20250617
*/
UINT16 GetOverlapThatZhaoChaRelayId(const UINT16 overlapId);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
@@ -51,7 +51,7 @@ UINT16 GetOverlapBelongRouteId(const UINT16 overlapId)
/* /*
* ID保护区段所属进路 * ID保护区段组解锁起始周期号
* const UINT16 overlapId, ID * const UINT16 overlapId, ID
* const UINT16 belongRouteId, * const UINT16 belongRouteId,
* *
@@ -1040,29 +1040,5 @@ UINT8 CheckPsdBelSendRange(const UINT16 wCheckPsdId)
; /*不处理*/ ; /*不处理*/
} }
return retVal;
}
/*
* ID屏蔽门控制类型
* const UINT16 doorId, ID
* UINT8 0x55 OC-P控制 0xAA RCI控制
*/
UINT8 GetPsdControlType(const UINT16 doorId)
{
UINT16 bufIndex = 0u; /*数组下标*/
UINT8 retVal = PSD_CONTROL_TYPE_RCI;
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
if (bufIndex < PSD_SUM_MAX)
{
retVal = PsdConfigDataStru[bufIndex].chPsdControlType;
}
else
{
retVal = PSD_CONTROL_TYPE_RCI;
}
return retVal; return retVal;
} }
@@ -64,10 +64,6 @@ typedef struct S_PsdConfigDataStruct
UINT16 wPcbIndicatorRelayId; /*再关门按钮指示灯继电器*/ UINT16 wPcbIndicatorRelayId; /*再关门按钮指示灯继电器*/
UINT16 wVideoQkLight1RelayId; /*清客按钮箱视频清客指示灯1(绿)继电器*/ UINT16 wVideoQkLight1RelayId; /*清客按钮箱视频清客指示灯1(绿)继电器*/
UINT16 wVideoQkLight2RelayId; /*清客按钮箱视频清客指示灯2(红)继电器*/ UINT16 wVideoQkLight2RelayId; /*清客按钮箱视频清客指示灯2(红)继电器*/
UINT16 wPsdFstProLinkId; /*屏蔽门防护link1ID*/
UINT16 wPsdSndProLinkId; /*屏蔽门防护link2ID*/
UINT16 wPsdTrdProLinkId; /*屏蔽门防护link3ID*/
UINT8 chPsdControlType; /*屏蔽门控制类型*/
} PsdConfigDataStruct; } PsdConfigDataStruct;
@@ -415,13 +411,6 @@ UINT16 GetPsdVideoQkLight2RelayId(const UINT16 wDoorId);
*/ */
UINT8 CheckPsdBelSendRange(const UINT16 wCheckPsdId); UINT8 CheckPsdBelSendRange(const UINT16 wCheckPsdId);
/*
* ID屏蔽门控制类型
* const UINT16 doorId, ID
* UINT8 0x55 OC-P控制 0xAA RCI控制
*/
UINT8 GetPsdControlType(const UINT16 doorId);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
+7 -591
View File
@@ -1443,14 +1443,14 @@ UINT8 SetPsdCmdCyclePsc(const UINT16 doorId, const UINT32 doorCycle)
} }
/* /*
* ID屏蔽门旁路标志 * ID屏蔽门确认PSC互锁解除标志
* const UINT16 doorId, ID * const UINT16 doorId, ID
* const UINT8 setFlag, * const UINT8 setFlag,
* *
* *
*/ */
void SetPsdConfirmFlag(const UINT16 doorId,const UINT8 setFlag) void SetPsdPscConfirmFlag(const UINT16 doorId,const UINT8 setFlag)
{ {
/*变量初始化*/ /*变量初始化*/
UINT16 bufIndex = 0u; UINT16 bufIndex = 0u;
@@ -1467,13 +1467,13 @@ void SetPsdConfirmFlag(const UINT16 doorId,const UINT8 setFlag)
} }
/* /*
* ID屏蔽门旁路标志 * ID屏蔽门确认PSC旁路标志
* const UINT16 doorId, ID * const UINT16 doorId, ID
* *
* 0: * 0:
* >0: * >0:
*/ */
UINT8 GetPsdPlFlag(const UINT16 doorId) UINT8 GetPsdPscPlFlag(const UINT16 doorId)
{ {
/*变量初始化*/ /*变量初始化*/
UINT16 bufIndex = 0u; /*数组下标*/ UINT16 bufIndex = 0u; /*数组下标*/
@@ -1532,7 +1532,7 @@ void SetNearCiPscPlFlag(const UINT16 psdId,const UINT16 pscId,const UINT8 setFla
if(psdCiId == localCiId) if(psdCiId == localCiId)
{ {
/*设置PSC对应PSD旁路*/ /*设置PSC对应PSD旁路*/
SetPsdConfirmFlag(psdId, setFlag); SetPsdPscConfirmFlag(psdId, setFlag);
} }
} }
else else
@@ -1544,12 +1544,12 @@ void SetNearCiPscPlFlag(const UINT16 psdId,const UINT16 pscId,const UINT8 setFla
else else
{ {
/*获取PSD旁路标志*/ /*获取PSD旁路标志*/
pscPlFlag = GetPsdPlFlag(psdId); pscPlFlag = GetPsdPscPlFlag(psdId);
if(psdCiId == localCiId) if(psdCiId == localCiId)
{ {
if(CI_PSC_PL_CONFIRM_YES == pscPlFlag) if(CI_PSC_PL_CONFIRM_YES == pscPlFlag)
{ {
SetPsdConfirmFlag(psdId, CI_PSC_PL_CONFIRM_NO); SetPsdPscConfirmFlag(psdId, CI_PSC_PL_CONFIRM_NO);
} }
else else
{ {
@@ -2508,589 +2508,5 @@ UINT16 GePsdVideoQkRelateVobcId(const UINT16 wPsdId)
{ {
retVal = CI_ERROR; retVal = CI_ERROR;
} }
return retVal;
}
/*
* ID屏蔽门异常打开状态
* const UINT16 wPsdId ID
* const UINT8 cExceptOpenState
*
* Created By LQ 2025.05.22
*/
void SetPsdExceptOpenState(const UINT16 wPsdId, const UINT8 cExceptOpenState)
{
UINT16 bufIndex = 0U;
bufIndex = GetPsdConfigBufIndex(wPsdId); /*获取屏蔽门数组下标*/
if ((PSD_SUM_MAX > bufIndex) && ((PSD_EXCEPT_OPEN_YES == cExceptOpenState) || (PSD_EXCEPT_OPEN_NO == cExceptOpenState)))
{
PsdDataStru[bufIndex].cPsdExceptOpenState = cExceptOpenState; /*设置屏蔽门异常打开状态*/
}
else
{
; /*不处理*/
}
}
/*
* ID屏蔽门异常打开状态
* const UINT16 wPsdId ID
* 0x55
* 0xAA
* Created By LQ 2025.05.22
*/
UINT8 GePsdExceptOpenState(const UINT16 wPsdId)
{
UINT16 bufIndex = 0U;
UINT8 cRetVal = PSD_EXCEPT_OPEN_YES;
bufIndex = GetPsdConfigBufIndex(wPsdId); /*获取屏蔽门数组下标*/
if (PSD_SUM_MAX > bufIndex)
{
cRetVal = PsdDataStru[bufIndex].cPsdExceptOpenState;
}
else
{
/*返回异常打开*/
}
return cRetVal;
}
/*
* ID屏蔽门故障隔离信息
* const UINT16 doorId, ID
* const UINT32 faultQStateOne,
* * const UINT32 faultQStateTwo,
*
*/
void SetPsdFaultQState(const UINT16 doorId, const UINT32 faultQStateOne, const UINT32 faultQStateTwo)
{
UINT16 bufIndex = 0u; /*数组下标*/
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
if (PSD_SUM_MAX > bufIndex)
{
PsdDataStru[bufIndex].psdFaultQStataOne = faultQStateOne;
PsdDataStru[bufIndex].psdFaultQStataTwo = faultQStateTwo;
}
else
{
/*不处理*/
}
}
/*
* ID屏蔽门故障隔离信息
* const UINT16 doorId, ID
* UINT8 psdFlag,(0u1u)
* 0:
* >0:
*/
UINT32 GetPsdFaultQState(const UINT16 doorId, UINT8 psdFlag)
{
UINT16 bufIndex = 0u; /*数组下标*/
UINT32 retVal = UINT32_MAX;
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
if ((PSD_SUM_MAX > bufIndex) && (HIGH_FOUR_CHAR == psdFlag))
{
retVal = PsdDataStru[bufIndex].psdFaultQStataOne;/*高四字节*/
}
else if ((PSD_SUM_MAX > bufIndex) && (LOW_FOUR_CHAR == psdFlag))
{
retVal = PsdDataStru[bufIndex].psdFaultQStataTwo;/*低四字节*/
}
else
{
retVal = UINT32_MAX;
}
return retVal;
}
/*
* ID屏蔽门被隔离信息
* const UINT16 doorId, ID
* const UINT32 doorsIStateOne,
* * const UINT32 doorsIStateTwo,
*
*/
void SetPsdDoorIState(const UINT16 doorId, const UINT32 doorsIStateOne, const UINT32 doorsIStateTwo)
{
UINT16 bufIndex = 0u; /*数组下标*/
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
if (PSD_SUM_MAX > bufIndex)
{
PsdDataStru[bufIndex].psdDoorIStateOne = doorsIStateOne;
PsdDataStru[bufIndex].psdDoorIStateTwo = doorsIStateTwo;
}
else
{
/*不处理*/
}
}
/*
* ID屏蔽门被隔离信息
* const UINT16 doorId, ID
* UINT8 psdFlag,(0u1u)
* 0:
* >0:
*/
UINT32 GetPsdDoorIState(const UINT16 doorId, UINT8 psdFlag)
{
UINT16 bufIndex = 0u; /*数组下标*/
UINT32 retVal = UINT32_MAX;
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
if ((PSD_SUM_MAX > bufIndex) && (HIGH_FOUR_CHAR == psdFlag))
{
retVal = PsdDataStru[bufIndex].psdDoorIStateOne;/*高四字节*/
}
else if ((PSD_SUM_MAX > bufIndex) && (LOW_FOUR_CHAR == psdFlag))
{
retVal = PsdDataStru[bufIndex].psdDoorIStateTwo;/*低四字节*/
}
else
{
retVal = UINT32_MAX;
}
return retVal;
}
/*
* ID屏蔽门
* const UINT16 doorId, ID
* const UINT32 doorStateOne,
* * const UINT32 doorStateTwo,
*
*/
void SetPsdDoorState(const UINT16 doorId, const UINT32 doorStateOne, const UINT32 doorStateTwo)
{
UINT16 bufIndex = 0u; /*数组下标*/
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
if (PSD_SUM_MAX > bufIndex)
{
PsdDataStru[bufIndex].psdDoorsStateOne = doorStateOne;
PsdDataStru[bufIndex].psdDoorsStateTwo = doorStateTwo;
}
else
{
/*不处理*/
}
}
/*
* ID屏蔽门,
* const UINT16 doorId, ID
* UINT8 psdFlag,(0u1u)
* 0:
* >0:
*/
UINT32 GetPsdDoorState(const UINT16 doorId, UINT8 psdFlag)
{
UINT16 bufIndex = 0u; /*数组下标*/
UINT32 retVal = UINT32_MAX;
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
if ((PSD_SUM_MAX > bufIndex) && (HIGH_FOUR_CHAR == psdFlag))
{
retVal = PsdDataStru[bufIndex].psdDoorsStateOne;/*高四字节*/
}
else if ((PSD_SUM_MAX > bufIndex) && (LOW_FOUR_CHAR == psdFlag))
{
retVal = PsdDataStru[bufIndex].psdDoorsStateTwo;/*低四字节*/
}
else
{
retVal = UINT32_MAX;
}
return retVal;
}
/*
* ID开门故障状态
* const UINT16 doorId, ID
* const UINT8 openErrState,
*
*/
void SetOpenErrState(const UINT16 doorId, const UINT8 openErrState)
{
UINT16 bufIndex = 0u; /*数组下标*/
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
if (PSD_SUM_MAX > bufIndex)
{
if ((PSD_OPEN_CLOSE_NORMAL == openErrState) || (PSD_OPEN_CLOSE_ERROR == openErrState))
{
PsdDataStru[bufIndex].psdOpenErrState = openErrState;
}
else
{/*不处理*/
}
}
}
/*
* ID关门故障状态
* const UINT16 doorId, ID
* const UINT8 closeErrState,
*
*/
void SetCloseErrState(const UINT16 doorId, const UINT8 closeErrState)
{
UINT16 bufIndex = 0u; /*数组下标*/
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
if (PSD_SUM_MAX > bufIndex)
{
if ((PSD_OPEN_CLOSE_NORMAL == closeErrState) || (PSD_OPEN_CLOSE_ERROR == closeErrState))
{
PsdDataStru[bufIndex].psdCloseErrState = closeErrState;
}
else
{/*不处理*/
}
}
}
/*
* ID开门故障状态
* const UINT16 doorId, ID
* UINT8
*/
UINT8 GetOpenErrState(const UINT16 doorId)
{
UINT16 bufIndex = 0u; /*数组下标*/
UINT8 retVal = PSD_OPEN_CLOSE_ERROR;
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
if (PSD_SUM_MAX > bufIndex)
{
retVal = PsdDataStru[bufIndex].psdOpenErrState;
}
else
{/*不处理*/
}
return retVal;
}
/*
* ID关门故障状态
* const UINT16 doorId, ID
* UINT8
*/
UINT8 GetCloseErrState(const UINT16 doorId)
{
UINT16 bufIndex = 0u; /*数组下标*/
UINT8 retVal = PSD_OPEN_CLOSE_ERROR;
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
if (PSD_SUM_MAX > bufIndex)
{
retVal = PsdDataStru[bufIndex].psdCloseErrState;
}
else
{/*不处理*/
}
return retVal;
}
/*
* ID屏蔽门门关继电器落下起始周期号
* const UINT16 doorId ID
*
* Created By LQ 2025.06.26
*/
UINT32 GetPsdRelayDownCycNum(const UINT16 doorId)
{
UINT16 bufIndex = 0u; /*数组下标*/
UINT32 retVal = CI_ERROR;
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
if (bufIndex < PSD_SUM_MAX)
{
retVal = PsdDataStru[bufIndex].dwPsdRelayDownCycNum;
}
else
{
retVal = CI_ERROR;
}
return retVal;
}
/*
* ID屏蔽门门关继电器落下起始周期号
* const UINT16 doorId ID
* const UINT32 startCycNum
*
* Created By LQ 2025.06.26
*/
void SetPsdRelayDownCycNum(const UINT16 doorId, const UINT32 startCycNum)
{
UINT16 bufIndex = 0u; /*数组下标*/
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
if (bufIndex < PSD_SUM_MAX)
{
PsdDataStru[bufIndex].dwPsdRelayDownCycNum = startCycNum;
}
else
{
/*不处理*/
}
}
/*
* ID屏蔽门旁路采集起始周期号
* const UINT16 doorId ID
*
* Created By fan 2025.12.15
*/
UINT32 GetPsdMutualLockCollStartCyc(const UINT16 doorId)
{
UINT16 bufIndex = 0u; /*数组下标*/
UINT32 retVal = CI_ERROR;
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
if (bufIndex < PSD_SUM_MAX)
{
retVal = PsdDataStru[bufIndex].dwPsdMutualLockCollStartCyc;
}
else
{
retVal = CI_ERROR;
}
return retVal;
}
/*
* ID屏蔽门旁路采集起始周期号
* const UINT16 doorId ID
* const UINT32 startCycNum
*
* Created By fan 2025.12.16
*/
void SetPsdMutualLockCollStartCyc(const UINT16 doorId, const UINT32 startCycNum)
{
UINT16 bufIndex = 0u; /*数组下标*/
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
if (bufIndex < PSD_SUM_MAX)
{
PsdDataStru[bufIndex].dwPsdMutualLockCollStartCyc = startCycNum;
}
else
{
/*不处理*/
}
}
/*
* ID屏蔽门故障按下周期号()
* const UINT16 doorId ID
*
* Created By fan 2025.12.22
*/
UINT32 GetPsdMutualLockErrCollCyc(const UINT16 doorId)
{
UINT16 bufIndex = 0u; /*数组下标*/
UINT32 retVal = CI_ERROR;
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
if (bufIndex < PSD_SUM_MAX)
{
retVal = PsdDataStru[bufIndex].dwPsdMutualLockErrCollCyc;
}
else
{
retVal = CI_ERROR;
}
return retVal;
}
/*
* ID屏蔽门旁路故障按下周期号()
* const UINT16 doorId ID
* const UINT32 startCycNum
*
* Created By fan 2025.12.22
*/
void SetPsdMutualLockErrCollCyc(const UINT16 doorId, const UINT32 startCycNum)
{
UINT16 bufIndex = 0u; /*数组下标*/
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
if (bufIndex < PSD_SUM_MAX)
{
PsdDataStru[bufIndex].dwPsdMutualLockErrCollCyc = startCycNum;
}
else
{
/*不处理*/
}
}
/*
* ID屏蔽门旁路起效周期
* const UINT16 doorId ID
*
* Created By fan 2025.12.15
*/
UINT32 GetPsdMutualLockStartCyc(const UINT16 doorId)
{
UINT16 bufIndex = 0u; /*数组下标*/
UINT32 retVal = CI_ERROR;
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
if (bufIndex < PSD_SUM_MAX)
{
retVal = PsdDataStru[bufIndex].dwPsdMutualLockStartCyc;
}
else
{
retVal = CI_ERROR;
}
return retVal;
}
/*
* ID门旁路按钮故障落下状态OC通信中断导致
* const UINT16 doorId, ID
* const UINT8 chErrState,
* Created By fan 2025.12.15
*
*/
void SetPsdMutualLockErrDownState(const UINT16 doorId, const UINT8 chErrState)
{
UINT16 bufIndex = 0u; /*数组下标*/
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
if (PSD_SUM_MAX > bufIndex)
{
if ((PSD_BTN_ERROR_FLAG_YES == chErrState) || (PSD_BTN_ERROR_FLAG_NO == chErrState))
{
PsdDataStru[bufIndex].cPsdMutualLockBtnErrDownState = chErrState;
}
else
{/*不处理*/
}
}
}
/*
* ID旁路按钮故障落下状态OC通信中断导致
* const UINT16 doorId, ID
* UINT8
* Created By fan 2025.12.15
*/
UINT8 GetPsdMutualLockErrDownState(const UINT16 doorId)
{
UINT16 bufIndex = 0u; /*数组下标*/
UINT8 retVal = PSD_BTN_ERROR_FLAG_YES;
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
if (PSD_SUM_MAX > bufIndex)
{
retVal = PsdDataStru[bufIndex].cPsdMutualLockBtnErrDownState;
}
else
{/*不处理*/
}
return retVal;
}
/*
* ID屏蔽门旁路旁路起效周期
* const UINT16 doorId ID
* const UINT32 startCycNum
*
* Created By fan 2025.12.15
*/
void SetPsdMutualLockStartCyc(const UINT16 doorId, const UINT32 startCycNum)
{
UINT16 bufIndex = 0u; /*数组下标*/
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
if (bufIndex < PSD_SUM_MAX)
{
PsdDataStru[bufIndex].dwPsdMutualLockStartCyc = startCycNum;
}
else
{
/*不处理*/
}
}
/*
* ID门旁路按钮故障状态
* const UINT16 doorId, ID
* const UINT8 chErrState,
* Created By fan 2025.12.15
*
*/
void SetPsdMutualLockErrState(const UINT16 doorId, const UINT8 chErrState)
{
UINT16 bufIndex = 0u; /*数组下标*/
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
if (PSD_SUM_MAX > bufIndex)
{
if ((PSD_BTN_ERROR_FLAG_YES == chErrState) || (PSD_BTN_ERROR_FLAG_NO == chErrState))
{
PsdDataStru[bufIndex].cPsdMutualLockBtnErrState = chErrState;
}
else
{/*不处理*/
}
}
}
/*
* ID旁路按钮故障状态
* const UINT16 doorId, ID
* UINT8
* Created By fan 2025.12.15
*/
UINT8 GetPsdMutualLockErrState(const UINT16 doorId)
{
UINT16 bufIndex = 0u; /*数组下标*/
UINT8 retVal = PSD_BTN_ERROR_FLAG_YES;
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
if (PSD_SUM_MAX > bufIndex)
{
retVal = PsdDataStru[bufIndex].cPsdMutualLockBtnErrState;
}
else
{/*不处理*/
}
return retVal; return retVal;
} }
+6 -222
View File
@@ -49,6 +49,8 @@ typedef struct S_PsdDataStruct
UINT16 SrcVobcId;/*操作该屏蔽门的当前VOBC ID*/ UINT16 SrcVobcId;/*操作该屏蔽门的当前VOBC ID*/
UINT8 PsdCmd;/*操作屏蔽门的命令*/ UINT8 PsdCmd;/*操作屏蔽门的命令*/
/*UINT16 ClosedRouteId;*//*因VOBC打开PSD而关闭信号的进路*/
/*UINT8 LastDriState;*//*历史驱动状态*/
UINT32 CmdSetCycle;/*命令设置周期*/ UINT32 CmdSetCycle;/*命令设置周期*/
UINT32 CmdSetCyclePsc;/*命令设置周期*/ UINT32 CmdSetCyclePsc;/*命令设置周期*/
UINT8 PsdRemoraState; /*屏蔽门障碍物状态*/ UINT8 PsdRemoraState; /*屏蔽门障碍物状态*/
@@ -79,21 +81,6 @@ typedef struct S_PsdDataStruct
UINT8 chCleFarePDBFlaLigFlag; /*清客确认箱PDB按钮指示灯闪灯标志*//*by cgh 20230529*/ UINT8 chCleFarePDBFlaLigFlag; /*清客确认箱PDB按钮指示灯闪灯标志*//*by cgh 20230529*/
UINT8 chVideoQkDriveState; /*视频清客驱动状态 by cgh 20231214*/ UINT8 chVideoQkDriveState; /*视频清客驱动状态 by cgh 20231214*/
UINT16 wVideoQkRelateVobcId; /*视频清客对应列车ID by cgh 20231214*/ UINT16 wVideoQkRelateVobcId; /*视频清客对应列车ID by cgh 20231214*/
UINT32 psdFaultQStataOne; /*单扇门故障隔离信息前四个字节*/
UINT32 psdFaultQStataTwo; /*单扇门故障隔离信息后四个字节*/
UINT32 psdDoorIStateOne; /*单扇门被隔离信息前四字节*/
UINT32 psdDoorIStateTwo; /*单扇门被隔离信息后四字节*/
UINT32 psdDoorsStateOne; /*每扇屏蔽门的开关状态前四个字节*/
UINT32 psdDoorsStateTwo; /*每扇屏蔽门的开关状态后四个字节*/
UINT8 psdOpenErrState; /*开门故障状态*/
UINT8 psdCloseErrState; /*关门故障状态*/
UINT8 cPsdExceptOpenState; /*屏蔽门异常打开状态:0x55-异常打开,0xAA-未异常打开*/
UINT32 dwPsdRelayDownCycNum; /*PSD门关继电器落下起始周期*/
UINT32 dwPsdMutualLockCollStartCyc;/*PSD旁路按钮正常按下起始周期*/
UINT32 dwPsdMutualLockErrCollCyc;/*PSD旁路按钮误触发按下起始周期*/
UINT32 dwPsdMutualLockStartCyc;/*PSD旁路起效周期*/
UINT8 cPsdMutualLockBtnErrState; /*屏蔽门互锁解除按钮故障状态:0x55-未故障,0xAA-故障*/
UINT8 cPsdMutualLockBtnErrDownState; /*屏蔽门旁路按钮故障落下状态:0x55-未故障,0xAA-故障*/
} PsdDataStruct; } PsdDataStruct;
extern PsdDataStruct PsdDataStru[PSD_SUM_MAX]; /*定义屏蔽门数据结构体*/ extern PsdDataStruct PsdDataStru[PSD_SUM_MAX]; /*定义屏蔽门数据结构体*/
@@ -531,23 +518,23 @@ UINT32 GetPsdCmdCyclePsc(const UINT16 doorId);
UINT8 SetPsdCmdCyclePsc(const UINT16 doorId, const UINT32 doorCycle); UINT8 SetPsdCmdCyclePsc(const UINT16 doorId, const UINT32 doorCycle);
/* /*
* ID屏蔽门旁路标志 * ID屏蔽门确认PSC互锁解除标志
* const UINT16 doorId, ID * const UINT16 doorId, ID
* const UINT8 setFlag, * const UINT8 setFlag,
* *
* *
*/ */
void SetPsdConfirmFlag(const UINT16 doorId,const UINT8 setFlag); void SetPsdPscConfirmFlag(const UINT16 doorId,const UINT8 setFlag);
/* /*
* ID屏蔽门旁路标志 * ID屏蔽门确认PSC旁路标志
* const UINT16 doorId, ID * const UINT16 doorId, ID
* *
* 0: * 0:
* >0: * >0:
*/ */
UINT8 GetPsdPlFlag(const UINT16 doorId); UINT8 GetPsdPscPlFlag(const UINT16 doorId);
/* /*
* PSC同时与另一联锁通信时PSC旁路命令处理 * PSC同时与另一联锁通信时PSC旁路命令处理
@@ -885,209 +872,6 @@ void SetPsdVideoQkRelateVobcId(const UINT16 wPsdId, const UINT16 wVobcId);
*/ */
UINT16 GePsdVideoQkRelateVobcId(const UINT16 wPsdId); UINT16 GePsdVideoQkRelateVobcId(const UINT16 wPsdId);
/*
* ID屏蔽门异常打开状态
* const UINT16 wPsdId ID
* const UINT8 cExceptOpenState
*
* Created By LQ 2025.05.22
*/
void SetPsdExceptOpenState(const UINT16 wPsdId, const UINT8 cExceptOpenState);
/*
* ID屏蔽门异常打开状态
* const UINT16 wPsdId ID
* 0x55
* 0xAA
* Created By LQ 2025.05.22
*/
UINT8 GePsdExceptOpenState(const UINT16 wPsdId);
/*
* ID屏蔽门故障隔离信息
* const UINT16 doorId, ID
* const UINT32 faultQStateOne,
* * const UINT32 faultQStateTwo,
*
*/
void SetPsdFaultQState(const UINT16 doorId, const UINT32 faultQStateOne, const UINT32 faultQStateTwo);
/*
* ID屏蔽门故障隔离信息
* const UINT16 doorId, ID
* UINT8 psdFlag,(0u1u)
* 0:
* >0:
*/
UINT32 GetPsdFaultQState(const UINT16 doorId, UINT8 psdFlag);
/*
* ID屏蔽门被隔离信息
* const UINT16 doorId, ID
* const UINT32 doorsIStateOne,
* * const UINT32 doorsIStateTwo,
*
*/
void SetPsdDoorIState(const UINT16 doorId, const UINT32 doorsIStateOne, const UINT32 doorsIStateTwo);
/*
* ID屏蔽门被隔离信息
* const UINT16 doorId, ID
* UINT8 psdFlag,(0u1u)
* 0:
* >0:
*/
UINT32 GetPsdDoorIState(const UINT16 doorId, UINT8 psdFlag);
/*
* ID屏蔽门
* const UINT16 doorId, ID
* const UINT32 doorStateOne,
* * const UINT32 doorStateTwo,
*
*/
void SetPsdDoorState(const UINT16 doorId, const UINT32 doorStateOne, const UINT32 doorStateTwo);
/*
* ID屏蔽门,
* const UINT16 doorId, ID
* UINT8 psdFlag,(0u1u)
* 0:
* >0:
*/
UINT32 GetPsdDoorState(const UINT16 doorId, UINT8 psdFlag);
/*
* ID开门故障状态
* const UINT16 doorId, ID
* const UINT8 openErrState,
*
*/
void SetOpenErrState(const UINT16 doorId, const UINT8 openErrState);
/*
* ID关门故障状态
* const UINT16 doorId, ID
* const UINT8 closeErrState,
*
*/
void SetCloseErrState(const UINT16 doorId, const UINT8 closeErrState);
/*
* ID开门故障状态
* const UINT16 doorId, ID
* UINT8
*/
UINT8 GetOpenErrState(const UINT16 doorId);
/*
* ID关门故障状态
* const UINT16 doorId, ID
* UINT8
*/
UINT8 GetCloseErrState(const UINT16 doorId);
/*
* ID屏蔽门门关继电器落下起始周期号
* const UINT16 doorId ID
*
* Created By LQ 2025.06.26
*/
UINT32 GetPsdRelayDownCycNum(const UINT16 doorId);
/*
* ID屏蔽门门关继电器落下起始周期号
* const UINT16 doorId ID
* const UINT32 startCycNum
*
* Created By LQ 2025.06.26
*/
void SetPsdRelayDownCycNum(const UINT16 doorId, const UINT32 startCycNum);
/*
* ID屏蔽门旁路采集起始周期号
* const UINT16 doorId ID
*
* Created By fan 2025.12.15
*/
UINT32 GetPsdMutualLockCollStartCyc(const UINT16 doorId);
/*
* ID屏蔽门旁路采集起始周期号
* const UINT16 doorId ID
* const UINT32 startCycNum
*
* Created By LQ 2025.06.26
*/
void SetPsdMutualLockCollStartCyc(const UINT16 doorId, const UINT32 startCycNum);
/*
* ID屏蔽门故障按下周期号()
* const UINT16 doorId ID
*
* Created By fan 2025.12.22
*/
UINT32 GetPsdMutualLockErrCollCyc(const UINT16 doorId);
/*
* ID屏蔽门旁路故障按下周期号()
* const UINT16 doorId ID
* const UINT32 startCycNum
*
* Created By fan 2025.12.22
*/
void SetPsdMutualLockErrCollCyc(const UINT16 doorId, const UINT32 startCycNum);
/*
* ID屏蔽门旁路起效周期
* const UINT16 doorId ID
*
* Created By fan 2025.12.15
*/
UINT32 GetPsdMutualLockStartCyc(const UINT16 doorId);
/*
* ID屏蔽门旁路旁路起效周期
* const UINT16 doorId ID
* const UINT32 startCycNum
*
* Created By fan 2025.12.15
*/
void SetPsdMutualLockStartCyc(const UINT16 doorId, const UINT32 startCycNum);
/*
* ID门旁路按钮故障状态
* const UINT16 doorId, ID
* const UINT8 chErrState,
* Created By fan 2025.12.15
*
*/
void SetPsdMutualLockErrState(const UINT16 doorId, const UINT8 chErrState);
/*
* ID旁路按钮故障状态
* const UINT16 doorId, ID
* UINT8
* Created By fan 2025.12.15
*/
UINT8 GetPsdMutualLockErrState(const UINT16 doorId);
/*
* ID门旁路按钮故障落下状态OC通信中断导致
* const UINT16 doorId, ID
* const UINT8 chErrState,
* Created By fan 2025.12.15
*
*/
void SetPsdMutualLockErrDownState(const UINT16 doorId, const UINT8 chErrState);
/*
* ID旁路按钮故障落下状态OC通信中断导致
* const UINT16 doorId, ID
* UINT8
* Created By fan 2025.12.15
*/
UINT8 GetPsdMutualLockErrDownState(const UINT16 doorId);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
-39
View File
@@ -67,25 +67,6 @@
#define PSD_FAULT_ISOLATION_SCX ((UINT8)0x81U) /*试车线屏蔽门设置故障隔离信息:1和8门隔离*/ #define PSD_FAULT_ISOLATION_SCX ((UINT8)0x81U) /*试车线屏蔽门设置故障隔离信息:1和8门隔离*/
#define PSD_OPEN_STATE_SCX ((UINT32)0xFFFFFF7EU) /*试车线故障隔离时屏蔽门打开状态,除1和8门外,全部打开*/ #define PSD_OPEN_STATE_SCX ((UINT32)0xFFFFFF7EU) /*试车线故障隔离时屏蔽门打开状态,除1和8门外,全部打开*/
/*屏蔽门驱动电源状态*/
#define PSD_DRIVE_POWER_NORMAL ((UINT8)0x55U) /*驱动电源状态正常*/
#define PSD_DRIVE_POWER_ERROR ((UINT8)0xAAU) /*驱动电源状态故障*/
/*屏蔽门控制电源状态*/
#define PSD_CONTROL_POWER_NORMAL ((UINT8)0x55U) /*控制电源状态正常*/
#define PSD_CONTROL_POWER_ERROR ((UINT8)0xAAU) /*控制电源状态故障*/
/*屏蔽门边缘控制器状态*/
#define PSD_EDGE_CONTROLLER_NORMAL ((UINT8)0x55U) /*边缘控制器状态正常*/
#define PSD_EDGE_CONTROLLER_ERROR ((UINT8)0xAAU) /*边缘控制器状态故障*/
/*屏蔽门障碍物报警状态*/
#define PSD_ALARM_OBS_NO ((UINT8)0xAAU) /*无故障物*/
#define PSD_ALARM_OBS_YES ((UINT8)0x55U) /*有故障物*/
/*屏蔽门开关门故障状态*/
#define PSD_OPEN_CLOSE_NORMAL ((UINT8)0x55U) /*开关门故障状态为正常*/
#define PSD_OPEN_CLOSE_ERROR ((UINT8)0xAAU) /*开关门故障状态为故障*/
/*燕房线FAO编组信息定义*/ /*燕房线FAO编组信息定义*/
#define PSD_FOUR_EDIT_GROUP_FAO_YF ((UINT8)0x01U) /*四编组*/ #define PSD_FOUR_EDIT_GROUP_FAO_YF ((UINT8)0x01U) /*四编组*/
@@ -106,10 +87,6 @@
#define PSD_VIRTUAL_ATTR_YES ((UINT8)0x55U) /*是虚拟屏蔽门*/ #define PSD_VIRTUAL_ATTR_YES ((UINT8)0x55U) /*是虚拟屏蔽门*/
#define PSD_VIRTUAL_ATTR_NO ((UINT8)0xaaU) /*不是虚拟屏蔽门*/ #define PSD_VIRTUAL_ATTR_NO ((UINT8)0xaaU) /*不是虚拟屏蔽门*/
/*屏蔽门控制类型*/
#define PSD_CONTROL_TYPE_OC_P ((UINT8)0x55u) /*由OC-P控制*/
#define PSD_CONTROL_TYPE_RCI ((UINT8)0xAAu) /*由RCI控制*/
/*障碍物信息*/ /*障碍物信息*/
#define PSD_REMORA_YES ((UINT8)0xAAU) /*有障碍物*/ #define PSD_REMORA_YES ((UINT8)0xAAU) /*有障碍物*/
#define PSD_REMORA_NO ((UINT8)0x55U) /*已检测且无障碍物*/ #define PSD_REMORA_NO ((UINT8)0x55U) /*已检测且无障碍物*/
@@ -195,20 +172,4 @@
#define VIDEO_QK_DRIVE_STATE_TESTING ((UINT8)0xccU) /*视频清客驱动状态—检测中*/ #define VIDEO_QK_DRIVE_STATE_TESTING ((UINT8)0xccU) /*视频清客驱动状态—检测中*/
#define VIDEO_QK_DRIVE_STATE_INVALID ((UINT8)0xffU) /*视频清客驱动状态—无效*/ #define VIDEO_QK_DRIVE_STATE_INVALID ((UINT8)0xffU) /*视频清客驱动状态—无效*/
/*屏蔽门异常打开状态*/
#define PSD_EXCEPT_OPEN_NO ((UINT8)0xAAU) /*未异常打开*/
#define PSD_EXCEPT_OPEN_YES ((UINT8)0x55U) /*异常打开*/
/*OC-P旁路状态确认*/
#define OC_PSC_PL_CONFIRM_YES ((UINT8)0xaaU) /*OC-P旁路状态已确认*/
#define OC_PSC_PL_CONFIRM_NO ((UINT8)0x55U) /*OC-P旁路状态未确认*/
/*获取屏蔽门信息*/
#define HIGH_FOUR_CHAR ((UINT8)0U) /*高四字节*/
#define LOW_FOUR_CHAR ((UINT8)1U) /*低四字节*/
/*自复式屏蔽门按钮故障标志*/
#define PSD_BTN_ERROR_FLAG_NO ((UINT8)0x55) /*自复式屏蔽门按钮故障标志无效*/
#define PSD_BTN_ERROR_FLAG_YES ((UINT8)0xaa) /*自复式屏蔽门按钮故障标志有效*/
#endif #endif
@@ -147,27 +147,7 @@
#define ATS_CMD_OPEN_XIANSU_SIGNAL_SECOND ((UINT8)0x9e) /*开放限速信号二次*/ #define ATS_CMD_OPEN_XIANSU_SIGNAL_SECOND ((UINT8)0x9e) /*开放限速信号二次*/
#define ATS_CMD_OPEN_XIANSU_SIGNAL_SPECIAL ((UINT8)0xa6) /*限速信号特殊开放*/ #define ATS_CMD_OPEN_XIANSU_SIGNAL_SPECIAL ((UINT8)0xa6) /*限速信号特殊开放*/
#define ATS_CMD_OC_P_PL_ONE ((UINT8)0xa8) /*设置OC-P旁路一次命令*/
#define ATS_CMD_OC_P_PL_TWO ((UINT8)0xa9) /*设置OC-P旁路二次命令*/
#define ATS_CMD_QUXIAO_OC_P_PL_ONE ((UINT8)0xaa) /*取消OC-P旁路一次命令*/
#define ATS_CMD_QUXIAO_OC_P_PL_TWO ((UINT8)0xab) /*取消OC-P旁路二次命令*/
#define ATS_CMD_PROHIBIT_FAO ((UINT8)0xac) /*禁止FAO列车进入逻辑区段命令*/
#define ATS_CMD_CANCEL_PROHIBIT_FAO ((UINT8)0xad) /*取消禁止FAO列车进入逻辑区段命令*/
#define ATS_CMD_OHL_BYPASS ((UINT8)0xae) /*设置接触网旁路命令*/
#define ATS_CMD_CANCEL_OHL_BYPASS ((UINT8)0xaf) /*取消接触网旁路命令*/
#define ATS_CMD_ECS_USE_START ((UINT8)0xB0U) /*ECS自动触发启用命令*/
#define ATS_CMD_ECS_USE_STOP ((UINT8)0xB1U) /*ECS自动触发停用命令*/
#define ATS_CMD_UNLOCK_STARTSTATE_ONE ((UINT8)0xB2) /*全站解封解锁一次*/
#define ATS_CMD_UNLOCK_STARTSTATE_TWO ((UINT8)0xB3) /*全站解封解锁二次*/
#define ATS_CMD_LOGSECTION_FLOCK_SET ((UINT8)0xB4) /*逻辑区段封锁*/
#define ATS_CMD_LOGSECTION_FLOCK_CANCLE ((UINT8)0xB5) /*逻辑区段解封*/
#define SCX_ATS_CMD_CESB_ACTIVE_YES ((UINT8)0xB6) /*试车线虚拟CESB激活*/
#define SCX_ATS_CMD_CESB_ACTIVE_NO ((UINT8)0xB7) /*试车线虚拟CESB激活*/
#define SCX_ATS_CMD_CESB_CUT_YES ((UINT8)0xB8) /*试车线虚拟CESB旁路*/
#define SCX_ATS_CMD_CESB_CUT_NO ((UINT8)0xB9) /*试车线虚拟CESB旁路恢复*/
#define ATS_CMD_GET_CTRL_POWER ((UINT8)0x81) /* 获取联锁控制权*/ #define ATS_CMD_GET_CTRL_POWER ((UINT8)0x81) /* 获取联锁控制权*/
#define ATS_CMD_RELEASE_CTRL_POWER ((UINT8)0x82) /* 释放联锁控制权*/ #define ATS_CMD_RELEASE_CTRL_POWER ((UINT8)0x82) /* 释放联锁控制权*/
@@ -233,7 +213,7 @@
#define VOBCTOCI_COMMAND_TYPE_PSDCHECK ((UINT8)0x00) /*查询PSD命令*/ #define VOBCTOCI_COMMAND_TYPE_PSDCHECK ((UINT8)0x00) /*查询PSD命令*/
#define VOBCTOCI_COMMAND_TYPE_PSDOPEN ((UINT8)0x55) /*打开PSD命令*/ #define VOBCTOCI_COMMAND_TYPE_PSDOPEN ((UINT8)0x55) /*打开PSD命令*/
#define VOBCTOCI_COMMAND_TYPE_PSDCLOSE ((UINT8)0xAA) /*关闭PSD命令*/ #define VOBCTOCI_COMMAND_TYPE_PSDCLOSE ((UINT8)0xAA) /*关闭PSD命令*/
#define VOBCTOCI_COMMAND_TYPE_PSDCHECK_FAOHLHT ((UINT8)0xFF) /*查询PSD命令(新机场线查询命令)、PSD命令默认值*/ #define VOBCTOCI_COMMAND_TYPE_PSDCHECK_FAOHLHT ((UINT8)0xFF) /*查询PSD命令(新机场线查询命令)*/
/****联锁到ATS反馈信息宏定义****/ /****联锁到ATS反馈信息宏定义****/
/*反馈信息类型*/ /*反馈信息类型*/
@@ -265,7 +245,6 @@
#define CI_BACK_GROUP_AUTO_ROUTE_SET_ERR ((UINT8)0x7e) /*组合自动进路自动属性设置失败*/ #define CI_BACK_GROUP_AUTO_ROUTE_SET_ERR ((UINT8)0x7e) /*组合自动进路自动属性设置失败*/
#define CI_BACK_AUTO_TRIGGER_SET_ERR (UINT8)0x85 /*进路的自动触发标志设置失败*/ #define CI_BACK_AUTO_TRIGGER_SET_ERR (UINT8)0x85 /*进路的自动触发标志设置失败*/
#define CI_BACK_LEAD_ROUTE_CANCEL ((UINT8)0xA4) /*引导进路无法使用总取消解锁反馈*/
/*信号机故障反馈*/ /*信号机故障反馈*/
#define CI_BACK_SIG_START_OPEN ((UINT8)0x11) /*进路始端信号机开放*/ #define CI_BACK_SIG_START_OPEN ((UINT8)0x11) /*进路始端信号机开放*/
@@ -319,12 +298,10 @@
#define CI_BACK_SWT_POS_ERROR ((UINT8)0x37) /*道岔位置错误*/ #define CI_BACK_SWT_POS_ERROR ((UINT8)0x37) /*道岔位置错误*/
#define CI_BACK_SWT_MOVE_VALID ((UINT8)0x00) /*道岔不可动作*/ #define CI_BACK_SWT_MOVE_VALID ((UINT8)0x00) /*道岔不可动作*/
#define CI_BACK_SWT_MOVE_OT ((UINT8)0x39) /*道岔动作超时*/ #define CI_BACK_SWT_MOVE_OT ((UINT8)0x39) /*道岔动作超时*/
#define CI_BACK_SWT_BYPASS_CANCEL_NO ((UINT8)0x93) /*联络线道岔旁路未及时取消*/ #define CI_BACK_SWT_BYPASS_CANCEL_NO ((UINT8)0x93) /*联络线道岔旁路未及时取消*/
#define CI_BACK_SWT_MOVE ((UINT8)0xA3) /*道岔转动中*/
/* zt 删除单轨相关代码 2022-02-15 */ /* zt 删除单轨相关代码 2022-02-15 */
#define CI_BACK_SWT_USING ((UINT8)0x3f) /*道岔征用中*/ #define CI_BACK_SWT_USING ((UINT8)0x3f) /*道岔征用中*/
#define CI_BACK_SWT_MOVE_ERR ((UINT8)0x84) /*道岔搬动失败*/ #define CI_BACK_SWT_MOVE_ERR ((UINT8)0x84) /*道岔搬动失败*/
#define CI_BACK_SWT_WAIT_MOVE ((UINT8)0xAE) /*等待道岔动作完成后再操作*/
/*继电器故障反馈*/ /*继电器故障反馈*/
#define CI_BACK_REL_ZHAOCHA_UP ((UINT8)0x41) /*照查继电器吸起*/ #define CI_BACK_REL_ZHAOCHA_UP ((UINT8)0x41) /*照查继电器吸起*/
@@ -427,16 +404,8 @@
#define CI_BACK_SEC_UPDATA_ERROR ((UINT8)0x00) /* 区段更新失败 */ #define CI_BACK_SEC_UPDATA_ERROR ((UINT8)0x00) /* 区段更新失败 */
#define CI_BACK_SWT_UPDATA_ERROR ((UINT8)0x00) /* 道岔更新失败 */ #define CI_BACK_SWT_UPDATA_ERROR ((UINT8)0x00) /* 道岔更新失败 */
/*动态路径命令反馈*/
#define CI_BACK_DYM_ROUTE_CONTINUOUS ((UINT8)0xA5) /*动态路径命令条件不满足:逻辑区段不连续*/
#define CI_BACK_DYM_ROUTE_RES ((UINT8)0xA6) /*动态路径命令条件不满足:列车占压逻辑区段资源不齐全或不唯一*/
#define CI_BACK_DYM_ROUTE_MATCH_ROUTE ((UINT8)0xA7) /*动态路径命令条件不满足:逻辑区段序列未匹配到进路*/
#define CI_BACK_DYM_ROUTE_SCREEN ((UINT8)0xA8) /*动态路径命令条件不满足:列车未完成筛选*/
#define CI_BACK_DYM_ROUTE_SEC_CBTC ((UINT8)0xA9) /*动态路径命令条件不满足:逻辑区段非CBTC区域*/
#define CI_BACK_DYM_ROUTE_REPEAT ((UINT8)0xAA) /*动态路径命令条件不满足:重复办理*/
#define CI_BACK_DYM_ROUTE_SEC_ATTR ((UINT8)0xAB) /*动态路径命令条件不满足:场段仅支持休眠唤醒轨一个区段的动态路径办理*/
#define CI_BACK_DYM_ROUTE_TRAIN_COMM ((UINT8)0xAC) /*动态路径命令条件不满足:场段RC与列车通信中断*/
#define CI_BACK_DYM_ROUTE_TRAIN_POS ((UINT8)0xAD) /*动态路径命令条件不满足:场段列车不完全处在休眠唤醒轨*/
#define CI_BACK_DATA_INFO_TYPE_ERR ((UINT8)0xf1) /* CI与其他子系统数据接口信息类型错误 */ #define CI_BACK_DATA_INFO_TYPE_ERR ((UINT8)0xf1) /* CI与其他子系统数据接口信息类型错误 */
#define CI_BACK_DATA_SEND_FLAG_ERR ((UINT8)0xf2) /* CI与其他子系统数据发送方标识信息错误 */ #define CI_BACK_DATA_SEND_FLAG_ERR ((UINT8)0xf2) /* CI与其他子系统数据发送方标识信息错误 */
@@ -447,13 +416,6 @@
#define CI_BACK_DATA_APP_LEN_ERR ((UINT8)0xf7) /* CI与其他子系统数据应用层数据长度无效 */ #define CI_BACK_DATA_APP_LEN_ERR ((UINT8)0xf7) /* CI与其他子系统数据应用层数据长度无效 */
#define CI_BACK_DATA_COM_PERIOD ((UINT8)0xf8) /* CI与其他子系统数据通信周期错误 */ #define CI_BACK_DATA_COM_PERIOD ((UINT8)0xf8) /* CI与其他子系统数据通信周期错误 */
#define CI_BACK_DATA_VER_CHECK_FAIL ((UINT8)0xfe) /* CI与其他子系统数据版本号校验失败 */ #define CI_BACK_DATA_VER_CHECK_FAIL ((UINT8)0xfe) /* CI与其他子系统数据版本号校验失败 */
/*联络线相关反馈*/
#define CI_BACK_OVERRIDE_SWITCH_FAIL ((UINT8)0xAF) /* 道岔不在定位,旁路无效 */
#define CI_BACK_OVERRIDE_CT_OCCUPY ((UINT8)0xB0) /* CT列车占用,旁路无效 */
#define CI_BACK_CONNECT_ROUTE_OVERRIME ((UINT8)0xB1) /* (联络线)进路办理超时 */
#define CI_BACK_CONNECT_SWITCH_RET_FAIL ((UINT8)0xB2) /* Point failed to move to normal within 20 seconds of the over switch block being cleared */
/*应答类型*/ /*应答类型*/
#define RESPONSE_FIRST ((UINT8)0xAA) /*一次确认应答命令*/ #define RESPONSE_FIRST ((UINT8)0xAA) /*一次确认应答命令*/
#define RESPONSE_SECOND ((UINT8)0xBB) /*二次确认应答命令*/ #define RESPONSE_SECOND ((UINT8)0xBB) /*二次确认应答命令*/
+8 -539
View File
@@ -18,7 +18,6 @@
#include "../IO/OutputDataProcess.h" #include "../IO/OutputDataProcess.h"
#include "EnvelopeManageAPI.h" #include "EnvelopeManageAPI.h"
#include "../DataManage/PlatDataManage.h" #include "../DataManage/PlatDataManage.h"
#include "../ECS/ECSDataManage.h"
/*解包使用*/ /*解包使用*/
CommandDataStruct CiRevCmdDataStru[ATSORXIANDI_TO_CI_CMD_DATA_STRU_SUM_MAX] = {0u}; /*CI操作命令结构体数组*/ CommandDataStruct CiRevCmdDataStru[ATSORXIANDI_TO_CI_CMD_DATA_STRU_SUM_MAX] = {0u}; /*CI操作命令结构体数组*/
@@ -123,41 +122,6 @@ static UINT8 TransCiToAtsPSCState(UINT8 ciToXianDiData, UINT8 MoveNum, UINT8 Psc
*/ */
static UINT8 TransCiToAtsPSCtypeState(UINT8 ciToXianDiData, UINT8 MoveNum, UINT8 PscStatetype, UINT8 PscState, UINT8 BitValY, UINT8 BitValN); static UINT8 TransCiToAtsPSCtypeState(UINT8 ciToXianDiData, UINT8 MoveNum, UINT8 PscStatetype, UINT8 PscState, UINT8 BitValY, UINT8 BitValN);
/*
* Ci到ATS中PSD
*
* UINT8 ciToXianDiData, CI到现地数据信息
* UINT8 MoveNum
* UINT8 PsdState psd驱动电源状态信息
*
*
*
*/
static UINT8 TransCiToAtsDrvWorkState(UINT8 ciToXianDiData, UINT8 MoveNum, UINT8 PsdState);
/*
* Ci到ATS中PSD
*
* UINT8 ciToXianDiData, CI到现地数据信息
* UINT8 MoveNum
* UINT8 PsdState psd控制电源状态信息
*
*
*
*/
static UINT8 TransCiToAtsCtlWorkState(UINT8 ciToXianDiData, UINT8 MoveNum, UINT8 PsdState);
/*
* Ci到ATS中PSD
*
* UINT8 ciToXianDiData, CI到现地数据信息
* UINT8 MoveNum
* UINT8 PsdState psd边缘控制器状态
*
*
*
*/
static UINT8 TransCiToAtsPSDEdgeState(UINT8 ciToXianDiData, UINT8 MoveNum, UINT8 PsdState);
/* /*
* *
@@ -961,13 +925,6 @@ UINT8 PackCiToAtsOrXianDiData(const UINT8 deviceId, const UINT8 targetDevType, c
} }
} }
/*组OC-PSC一体化数据*/
PackOcPscDataToAts(ciToXianDiDataBuffer, &ii);
/*组PSD数据*/
PackPsdDataToAts(ciToXianDiDataBuffer, &ii);
ocDeviceSum = (UINT16)GetCiTransmitSpecifySysDevSum(CI_SYSTEM_TYPE_OC); /*获取通信OC设备总数*/ ocDeviceSum = (UINT16)GetCiTransmitSpecifySysDevSum(CI_SYSTEM_TYPE_OC); /*获取通信OC设备总数*/
pOcDeviceIdBuf = GetCiTransmitSpecifySysDevBuf(CI_SYSTEM_TYPE_OC); /*获取通信OC设备ID数组*/ pOcDeviceIdBuf = GetCiTransmitSpecifySysDevBuf(CI_SYSTEM_TYPE_OC); /*获取通信OC设备ID数组*/
@@ -1080,7 +1037,6 @@ UINT8 PackCiToAtsOrXianDiData(const UINT8 deviceId, const UINT8 targetDevType, c
{ {
} }
#if 0
/*存在PSC设备,才发送PSD隔离信息给ATS*/ /*存在PSC设备,才发送PSD隔离信息给ATS*/
if (NULL == pDeviceIdBuf) if (NULL == pDeviceIdBuf)
{ {
@@ -1147,7 +1103,6 @@ UINT8 PackCiToAtsOrXianDiData(const UINT8 deviceId, const UINT8 targetDevType, c
/*重新填写PSD数量*/ /*重新填写PSD数量*/
ciToXianDiDataBuffer[ii - (psdSum * 28U) - 1U] = psdSum; ciToXianDiDataBuffer[ii - (psdSum * 28U) - 1U] = psdSum;
} }
#endif
/*组RCOCI设备状态 (电源/电源模块状态)2字节*/ /*组RCOCI设备状态 (电源/电源模块状态)2字节*/
@@ -1194,15 +1149,6 @@ UINT8 PackCiToAtsOrXianDiData(const UINT8 deviceId, const UINT8 targetDevType, c
/*不处理*/ /*不处理*/
} }
/*组通信联锁信息*/
PackCiDataToAts(ciToXianDiDataBuffer, &ii);
/*组接触网信息*/
PackOhlDataToAts(ciToXianDiDataBuffer, &ii);
/*组ECS自动触发状态*/
PackECSStateToAts(ciToXianDiDataBuffer, &ii);
/*预留40字节*/ /*预留40字节*/
ii += 40u; ii += 40u;
} }
@@ -1421,8 +1367,6 @@ void SetCiSendCmdBackData_OrderBack( const UINT32 commandId,const UINT16 deviceI
} }
} }
} }
/*清除暂存一次命令后,将无效命令清除,并将数量置为有效命令的数量 YF0083-Bug-148*/
ClearCiSendBackDataTempStruData();
if (CiSendCmdStruCurSum < CI_TO_ATSORXIANDI_CMD_DATA_STRU_SUM_MAX) if (CiSendCmdStruCurSum < CI_TO_ATSORXIANDI_CMD_DATA_STRU_SUM_MAX)
{ {
@@ -1758,7 +1702,7 @@ UINT8 GetPscConfirmFlag(UINT8 pscId)
if(psdCiId == localCiId) if(psdCiId == localCiId)
{ {
/*获取PSC对应PSD的互锁解除确认标志*/ /*获取PSC对应PSD的互锁解除确认标志*/
pscPsdFlag = GetPsdPlFlag(pscToCiDataStru[pscId].psdDataStr[i].psdId); pscPsdFlag = GetPsdPscPlFlag(pscToCiDataStru[pscId].psdDataStr[i].psdId);
if(CI_PSC_PL_CONFIRM_YES == pscPsdFlag) if(CI_PSC_PL_CONFIRM_YES == pscPsdFlag)
{ {
retVal = CI_PSC_PL_CONFIRM_YES; retVal = CI_PSC_PL_CONFIRM_YES;
@@ -1903,15 +1847,6 @@ UINT8 FindFirstOrder(UINT8 SecondOrder)
case ATS_CMD_SWITCH_FANWEI_TEST_TWO: case ATS_CMD_SWITCH_FANWEI_TEST_TWO:
reVal = ATS_CMD_SWITCH_FANWEI_TEST_ONE; /*道岔反位测试一次命令*/ reVal = ATS_CMD_SWITCH_FANWEI_TEST_ONE; /*道岔反位测试一次命令*/
break; break;
case ATS_CMD_OC_P_PL_TWO:
reVal = ATS_CMD_OC_P_PL_ONE; /*OC-P旁路一次命令*/
break;
case ATS_CMD_QUXIAO_OC_P_PL_TWO:
reVal = ATS_CMD_QUXIAO_OC_P_PL_ONE; /*取消OC-P旁路一次命令*/
break;
case ATS_CMD_UNLOCK_STARTSTATE_TWO:
reVal = ATS_CMD_UNLOCK_STARTSTATE_ONE; /*迪士尼全站解封解锁*/
break;
default: default:
reVal = 0u; reVal = 0u;
break; break;
@@ -2607,7 +2542,6 @@ UINT16 TransCiToAtsSwitchZzjInfo(OcToATSSwitchZzjData* ciSendAtsSwitchZzjData, U
UINT8 jj = 0U;/*道岔对应转辙机的索引*/ UINT8 jj = 0U;/*道岔对应转辙机的索引*/
UINT8 mm = 0U;/*道岔状态四开时,判断是否有异常情况循环体*/ UINT8 mm = 0U;/*道岔状态四开时,判断是否有异常情况循环体*/
UINT8 chSwitchDriveFlag = 0U;/*道岔驱动过标志*/ UINT8 chSwitchDriveFlag = 0U;/*道岔驱动过标志*/
UINT8 chSingleSwitchCurPosition = 0u;/*道岔当前单独位置*/
if ((NULL != ciSendAtsSwitchZzjData) if ((NULL != ciSendAtsSwitchZzjData)
&& (NULL != wDataLength)) && (NULL != wDataLength))
@@ -2677,26 +2611,18 @@ UINT16 TransCiToAtsSwitchZzjInfo(OcToATSSwitchZzjData* ciSendAtsSwitchZzjData, U
} }
else else
{ {
chSingleSwitchCurPosition = GetSingleSwitchCurPosition(m_OcToCiOrginDataArr[kk].OcDevices[ii].DeviceId); chSwitchDriveFlag = GetSwitchDrivedFlag(m_OcToCiOrginDataArr[kk].OcDevices[ii].DeviceId);
if (SWITCH_POSITION_JICHA == chSingleSwitchCurPosition) if (SWITCH_DRIVED_FLAG_YES == chSwitchDriveFlag)
{ {
/*道岔当前挤岔,转辙机判断为故障*/ /*道岔被驱动过取消驱动,此转辙机状态设置为正常*/
ciSendAtsSwitchZzjData[wSwitchNum].szSwitchIncldeZzjState[jj] = OC_TO_ATS_SWITCH_ZZJ_ALARM; ciSendAtsSwitchZzjData[wSwitchNum].szSwitchIncldeZzjState[jj] = OC_TO_ATS_SWITCH_ZZJ_NORMAL;
} }
else else
{ {
chSwitchDriveFlag = GetSwitchDrivedFlag(m_OcToCiOrginDataArr[kk].OcDevices[ii].DeviceId); /*道岔没被驱动四开,此转辙机状态设置为正常*/
if (SWITCH_DRIVED_FLAG_YES == chSwitchDriveFlag) ciSendAtsSwitchZzjData[wSwitchNum].szSwitchIncldeZzjState[jj] = OC_TO_ATS_SWITCH_ZZJ_ALARM;
{
/*道岔被驱动过取消驱动,此转辙机状态设置为正常*/
ciSendAtsSwitchZzjData[wSwitchNum].szSwitchIncldeZzjState[jj] = OC_TO_ATS_SWITCH_ZZJ_NORMAL;
}
else
{
/*道岔没被驱动四开,此转辙机状态设置为正常*/
ciSendAtsSwitchZzjData[wSwitchNum].szSwitchIncldeZzjState[jj] = OC_TO_ATS_SWITCH_ZZJ_ALARM;
}
} }
} }
} }
} }
@@ -2744,461 +2670,4 @@ static UINT8 TransCiToAtsPowerModeState(UINT8 ciToXianDiData, UINT8 MoveNum, UIN
} }
return TransCiSendData; return TransCiSendData;
}
/*
* Ci到ATS中PSD
*
* UINT8 ciToXianDiData, CI到现地数据信息
* UINT8 MoveNum
* UINT8 PsdState psd驱动电源状态信息
*
*
*
*/
static UINT8 TransCiToAtsDrvWorkState(UINT8 ciToXianDiData, UINT8 MoveNum, UINT8 PsdState)
{
UINT8 TransCiSendData = 0u;
if (PSD_DRIVE_POWER_NORMAL == PsdState)
{/*PSD 驱动电源状态正常*/
TransCiSendData = ciToXianDiData | ((UINT8)(BIT_VAL_00000011B << MoveNum));
}
else if (PSD_DRIVE_POWER_ERROR == PsdState)
{/*故障*/
TransCiSendData = ciToXianDiData | ((UINT8)(BIT_VAL_00000000B << MoveNum));
}
else
{
TransCiSendData = ciToXianDiData | ((UINT8)(BIT_VAL_00000000B << MoveNum));
}
return TransCiSendData;
}
/*
* Ci到ATS中PSD
*
* UINT8 ciToXianDiData, CI到现地数据信息
* UINT8 MoveNum
* UINT8 PsdState psd控制电源状态信息
*
*
*
*/
static UINT8 TransCiToAtsCtlWorkState(UINT8 ciToXianDiData, UINT8 MoveNum, UINT8 PsdState)
{
UINT8 TransCiSendData = 0u;
if (PSD_CONTROL_POWER_NORMAL == PsdState)
{/*PSD 控制电源状态正常*/
TransCiSendData = ciToXianDiData | ((UINT8)(BIT_VAL_00000011B << MoveNum));
}
else if (PSD_CONTROL_POWER_ERROR == PsdState)
{/*故障*/
TransCiSendData = ciToXianDiData | ((UINT8)(BIT_VAL_00000000B << MoveNum));
}
else
{
TransCiSendData = ciToXianDiData | ((UINT8)(BIT_VAL_00000000B << MoveNum));
}
return TransCiSendData;
}
/*
* Ci到ATS中PSD
*
* UINT8 ciToXianDiData, CI到现地数据信息
* UINT8 MoveNum
* UINT8 PsdState psd边缘控制器状态
*
*
*
*/
static UINT8 TransCiToAtsPSDEdgeState(UINT8 ciToXianDiData, UINT8 MoveNum, UINT8 PsdState)
{
UINT8 TransCiSendData = 0u;
if (PSD_EDGE_CONTROLLER_NORMAL == PsdState)
{/*PSD 边缘控制器正常*/
TransCiSendData = ciToXianDiData | ((UINT8)(BIT_VAL_00000001B << MoveNum));
}
else if (PSD_EDGE_CONTROLLER_ERROR == PsdState)
{/*边缘控制器故障*/
TransCiSendData = ciToXianDiData | ((UINT8)(BIT_VAL_00000000B << MoveNum));
}
else
{
TransCiSendData = ciToXianDiData | ((UINT8)(BIT_VAL_00000000B << MoveNum));
}
return TransCiSendData;
}
/*
* OC-P信息到ATS
*
* UINT8* ciToXianDiDataBuffer buffer
* UINT16* ii
*
*
*
*/
void PackOcPscDataToAts(UINT8* ciToXianDiDataBuffer, UINT16* ii)
{
UINT16 ocPscNum = 0u;
UINT16 ocId = 0u; /*psd id*/
UINT8 ocPscConfirmFlag = 0u;
UINT16 jj = 0u; /*游标*/
UINT16 index = 0u;
UINT16 temp_index = 0u;
if ((NULL != ciToXianDiDataBuffer) && (NULL != ii))
{
index = *ii;
/*OC一体机总数量,先不组,有psdNum才组*/
temp_index = index;
index += 2u;
for (jj = 0u; jj < m_OcToCiOrginDataNum; jj++)
{
if (0u < m_OcToCiOrginDataArr[jj].OCPsdNum)
{/*有PSD数量*/
ocPscNum++;
ShortToChar(m_OcToCiOrginDataArr[jj].OcId, &ciToXianDiDataBuffer[index]);
index += 2u;
/*OC-P驱动电源状态*/
ciToXianDiDataBuffer[index] = TransCiToAtsDrvWorkState(ciToXianDiDataBuffer[index], 6u, m_OcToCiOrginDataArr[jj].DrvPowerState);
/*OC-P控制电源状态*/
ciToXianDiDataBuffer[index] = TransCiToAtsCtlWorkState(ciToXianDiDataBuffer[index], 4u, m_OcToCiOrginDataArr[jj].CtlPowerState);
/*边缘控制器1状态*/
ciToXianDiDataBuffer[index] = TransCiToAtsPSDEdgeState(ciToXianDiDataBuffer[index], 2u, m_OcToCiOrginDataArr[jj].EdgeCtllerState1);
/*边缘控制器2状态*/
ciToXianDiDataBuffer[index] = TransCiToAtsPSDEdgeState(ciToXianDiDataBuffer[index], 0u, m_OcToCiOrginDataArr[jj].EdgeCtllerState2);
index++;
ocPscConfirmFlag = GetOcPscConfirmFlag(jj);
/*旁路状态转换*/
ciToXianDiDataBuffer[index] = TransCiToAtsPSCtypeState(ciToXianDiDataBuffer[index], 0u, ocPscConfirmFlag,
OC_PSC_PL_CONFIRM_YES, BIT_VAL_00000000B, BIT_VAL_00000001B);
index++;
}
else
{
/*不处理*/
}
}
/*组OC-P数量*/
ShortToChar(ocPscNum, &ciToXianDiDataBuffer[temp_index]);
*ii = index;
}
else
{/*不处理*/
}
}
/*
* PSD信息到ATS
*
* UINT8* ciToXianDiDataBuffer buffer
* UINT16* ii
*
*
*
*/
void PackPsdDataToAts(UINT8* ciToXianDiDataBuffer, UINT16* ii)
{
UINT8 psdDeviceSum = 0u;/*PSD设备总数*/
UINT16 jj = 0u; /*游标*/
UINT16 psdId = 0u;/*psd id*/
UINT16 index = 0u;
UINT16 index_psd = 0u;/*用于记录组PSD数量的偏移量*/
UINT32 tempPack = 0u;
UINT8 psdConType = PSD_CONTROL_TYPE_RCI;
UINT8 OcPsdSum = 0u; /*属于OC-P的PSD数量*/
if ((NULL != ciToXianDiDataBuffer) && (NULL != ii))
{
index = *ii;
psdDeviceSum = GetPsdSum();/*PSD总数*/
index_psd = index;
ciToXianDiDataBuffer[index] = 0u; /*PSD数量先组0*/
index += 1u;
for (jj = 0u; jj < psdDeviceSum; jj++) /*遍历所有的PSD*/
{
psdId = GetPsdId(jj);/*PSD id*/
psdConType = GetPsdControlType(psdId);
if ((0u != psdId) && (PSD_CONTROL_TYPE_OC_P == psdConType))
{
OcPsdSum++;
ShortToChar(0u, &ciToXianDiDataBuffer[index]); /*psd id*/
index += 2u;
ShortToChar(psdId, &ciToXianDiDataBuffer[index]);
index += 2u;
tempPack = GetPsdFaultQState(psdId, HIGH_FOUR_CHAR);
LongToChar(tempPack, &ciToXianDiDataBuffer[index]);/*故障主动隔离信息*/
index += 4u;
tempPack = GetPsdFaultQState(psdId, LOW_FOUR_CHAR);
LongToChar(tempPack, &ciToXianDiDataBuffer[index]);/*故障主动隔离信息*/
index += 4u;
tempPack = GetPsdDoorIState(psdId, HIGH_FOUR_CHAR);
LongToChar(tempPack, &ciToXianDiDataBuffer[index]);/*被隔离信息*/
index += 4u;
tempPack = GetPsdDoorIState(psdId, LOW_FOUR_CHAR);
LongToChar(tempPack, &ciToXianDiDataBuffer[index]);/*被隔离信息*/
index += 4u;
tempPack = GetPsdDoorState(psdId, HIGH_FOUR_CHAR);
LongToChar(tempPack, &ciToXianDiDataBuffer[index]);/*每扇屏蔽门的开关状态*/
index += 4u;
tempPack = GetPsdDoorState(psdId, LOW_FOUR_CHAR);
LongToChar(tempPack, &ciToXianDiDataBuffer[index]);/*每扇屏蔽门的开关状态*/
index += 4u;
tempPack = GetOpenErrState(psdId);
ciToXianDiDataBuffer[index++] = tempPack; /*开门故障状态*/
tempPack = GetCloseErrState(psdId);
ciToXianDiDataBuffer[index++] = tempPack; /*关门故障状态*/
}
else
{
/*不处理*/
}
}
debug_infor_printf("psd control type:%x\n", psdConType);
ciToXianDiDataBuffer[index_psd] = OcPsdSum; /*填入PSD数量*/
*ii = index;
}
else
{/*不处理*/
}
}
/*
* OC-P旁路状态
* UINT8 index, OC-P系统对应的数组下标
*
* 0x55
* 0xaa
*/
UINT8 GetOcPscConfirmFlag(UINT8 index)
{
UINT8 retVal = OC_PSC_PL_CONFIRM_NO;
UINT8 i = 0u;
UINT8 ocPscPsdFlag = 0u;
/*防空*/
if (OC_SUM_MAX > index)
{
for (i = 0u; i < m_OcToCiOrginDataArr[index].OCPsdNum; i++)
{
/*获取OC-P对应PSD的旁路状态*/
ocPscPsdFlag = GetPsdPlFlag(m_OcToCiOrginDataArr[index].PsdInfo[i].wPsdId);
if (OC_PSC_PL_CONFIRM_YES == ocPscPsdFlag)
{
retVal = OC_PSC_PL_CONFIRM_YES;
break;
}
else
{
/*不做处理*/
}
}
}
else
{
/*不处理*/
}
return retVal;
}
/*
* ATS
*
* UINT8* ciToXianDiDataBuffer buffer
* UINT16* ii
*
*
*
*/
void PackCiDataToAts(UINT8* ciToXianDiDataBuffer, UINT16* ii)
{
UINT16 index = 0u;
UINT8 transCiSum = 0u;
UINT8* pCiDeviceIdBuf = NULL; /*OC设备ID数组*/
UINT8 jj = 0u;
UINT8 ciAndCiCommState = 0u;/*ci与ci通信状态*/
UINT8 ciToAtsTransState = 0u;
UINT8 ciId = 0u;
if ((NULL != ciToXianDiDataBuffer) && (NULL != ii))
{
index = *ii;
transCiSum = GetCiTransmitSpecifySysDevSum(CI_SYSTEM_TYPE_CI);
pCiDeviceIdBuf = GetCiTransmitSpecifySysDevBuf(CI_SYSTEM_TYPE_CI);
ciToXianDiDataBuffer[index++] = transCiSum;/*通信的联锁数量*/
if (NULL != pCiDeviceIdBuf)
{
for (jj = 0u; jj < transCiSum; jj++)
{
ciId = pCiDeviceIdBuf[jj];/*CI ID*/
ciAndCiCommState = Get2oo2CiAndOtherSysCommState(CI_SYSTEM_TYPE_CI, (UINT8)jj);/*与联锁通信状态*/
ciToXianDiDataBuffer[index++] = 0x00u;
ciToXianDiDataBuffer[index++] = ciId; /*组ID*/
if (TRANSMIT_2OO2_STATE_GOOD == ciAndCiCommState)
{/*双网通信良好*/
ciToAtsTransState = TRANSMIT_CI_STATE_GOOD;
}
else if (TRANSMIT_2OO2_STATE_LINK == ciAndCiCommState)
{/*单网通信故障*/
ciToAtsTransState = TRANSMIT_CI_STATE_LINK;
}
else if (TRANSMIT_2OO2_STATE_BAD == ciAndCiCommState)
{/*双网通信故障*/
ciToAtsTransState = TRANSMIT_CI_STATE_BAD;
}
else
{
ciToAtsTransState = TRANSMIT_CI_STATE_BAD;
}
ciToXianDiDataBuffer[index++] = ciToAtsTransState;
}
}
else
{
/*不处理*/
}
*ii = index;
}
else
{
/*入参检查失败,不处理*/
}
}
/*
* ATS
*
* UINT8* ciToXianDiDataBuffer buffer
* UINT16* ii
*
*
*
*/
void PackOhlDataToAts(UINT8* ciToXianDiDataBuffer, UINT16* ii)
{
UINT16 index = 0u;
UINT16 tempIndex = 0u;
UINT8 ohlNum = 0u; /*接触网分区总数*/
UINT16 ohlId = 0u; /*接触网分区ID*/
UINT8 ohlPowerState = 0u; /*接触网状态*/
UINT8 ohlBypass = 0u; /*接触网旁路状态*/
UINT8 jj = 0u;
UINT8 chLocalCiId = 0u; /*本地联锁ID*/
UINT8 devBlongCiId = 0u; /*设备所属联锁ID*/
UINT8 localOhlNum = 0u;
if ((NULL != ciToXianDiDataBuffer) && (NULL != ii))
{
index = *ii;
chLocalCiId = GetSystemParaLocalCiId(); /*获取本地联锁ID*/
ohlNum = (UINT8)GetOhlCurSum();
if ((0u < ohlNum) && (OHL_MAX_NUM > ohlNum))
{
tempIndex = index; /*接触网数量*/
index = index + 1u;
for (jj = 0u; jj < ohlNum; jj++)
{
ohlId = GetOhlId(jj); /*接触网ID*/
devBlongCiId = GetOhlBelongCiId(ohlId); /*获取设备所属联锁ID*/
if ((0u != ohlId) && (0u != chLocalCiId) && (chLocalCiId == devBlongCiId))
{
ShortToChar(ohlId, &ciToXianDiDataBuffer[index]); /*接触网 id*/
index += 2u;
ohlPowerState = GetOhlPowerState(ohlId); /*接触网状态*/
ciToXianDiDataBuffer[index++] = ohlPowerState;
ohlBypass = GetOhlBypassFlag(ohlId); /*接触网旁路状态*/
ciToXianDiDataBuffer[index++] = ohlBypass;
localOhlNum++;
}
else
{
/*不处理*/
}
}
ciToXianDiDataBuffer[tempIndex] = localOhlNum;/*接触网数量*/
}
else
{
/*不处理*/
}
*ii = index;
}
else
{
/*入参检查失败,不处理*/
}
}
/*
* ECS自动触发状态到ATS
* UINT8* ciToXianDiDataBuffer buffer
* UINT16* ii
*
* Created By LQ 2026.01.23
*/
void PackECSStateToAts(UINT8* ciToXianDiDataBuffer, UINT16* ii)
{
UINT16 index = 0U;
UINT8 cEcsState = 0U;
if ((NULL != ciToXianDiDataBuffer) && (NULL != ii))
{
index = *ii;
cEcsState = GetEcsAutoTrigState(1U); /*DSN当前仅一个控区、一个ECS,默认使用ID为1的ECS*/
ciToXianDiDataBuffer[index] = cEcsState; /*组ECS自动触发状态*/
index++;
*ii = index;
}
else
{
/*入参检查失败,不处理*/
}
} }
@@ -366,68 +366,6 @@ UINT16 TransCiToAtsSwitchZzjInfo(OcToATSSwitchZzjData* ciSendAtsSwitchZzjData, U
*/ */
static UINT8 TransCiToAtsPowerModeState(UINT8 ciToXianDiData, UINT8 MoveNum, UINT8 powerState, UINT8 BitValY, UINT8 BitValN); static UINT8 TransCiToAtsPowerModeState(UINT8 ciToXianDiData, UINT8 MoveNum, UINT8 powerState, UINT8 BitValY, UINT8 BitValN);
/*
* OC-P信息到ATS
*
* UINT8* ciToXianDiDataBuffer buffer
* UINT16* ii
*
*
*
*/
void PackOcPscDataToAts(UINT8* ciToXianDiDataBuffer, UINT16* ii);
/*
* PSD信息到ATS
*
* UINT8* ciToXianDiDataBuffer buffer
* UINT16* ii
*
*
*
*/
void PackPsdDataToAts(UINT8* ciToXianDiDataBuffer, UINT16* ii);
/*
* OC-P旁路状态
* UINT8 index, OC-P系统对应的数组下标
*
* 0x55
* 0xaa
*/
UINT8 GetOcPscConfirmFlag(UINT8 index);
/*
* ATS
*
* UINT8* ciToXianDiDataBuffer buffer
* UINT16* ii
*
*
*
*/
void PackCiDataToAts(UINT8* ciToXianDiDataBuffer, UINT16* ii);
/*
* ATS
*
* UINT8* ciToXianDiDataBuffer buffer
* UINT16* ii
*
*
*
*/
void PackOhlDataToAts(UINT8* ciToXianDiDataBuffer, UINT16* ii);
/*
* ECS自动触发状态到ATS
* UINT8* ciToXianDiDataBuffer buffer
* UINT16* ii
*
* Created By LQ 2026.01.23
*/
void PackECSStateToAts(UINT8* ciToXianDiDataBuffer, UINT16* ii);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
+15 -595
View File
@@ -16,7 +16,6 @@
#include "dsuRsspFunc.h" #include "dsuRsspFunc.h"
#include "protclStruct.h" #include "protclStruct.h"
#include "../QueryFiles/dquCIInterFace.h" #include "../QueryFiles/dquCIInterFace.h"
#include "AxisAssertDataPrepare.h"
#define PHY_SEC_RESET_CMD (0x0DU) /*直接复位命令码*/ #define PHY_SEC_RESET_CMD (0x0DU) /*直接复位命令码*/
#define PHY_SEC_PRE_RESET_CMD (0x0EU) /*预复位命令码*/ #define PHY_SEC_PRE_RESET_CMD (0x0EU) /*预复位命令码*/
@@ -27,7 +26,6 @@
AxisToCiDataStruct axisToCiDataStru[AXIS_TO_CI_SUM_MAX] = {0u}; /*Axis到CI数据帧结构体*/ AxisToCiDataStruct axisToCiDataStru[AXIS_TO_CI_SUM_MAX] = {0u}; /*Axis到CI数据帧结构体*/
static DSU_RSSP_INFO_STRU_WL dsuRsspInfo = { 0 }; /*RSSPI查询数据信息*/ static DSU_RSSP_INFO_STRU_WL dsuRsspInfo = { 0 }; /*RSSPI查询数据信息*/
AxisSecClassDataStruct gAxisSecClassData = { 0U }; /*计轴区段分类数据*/
static UINT8 GalHeadCheck(const UINT32 localEtcsId, const UINT32 remoteEtcsId, const UINT16 devInterfaceType, const UINT8 prtrlVer, const UINT32 dataVer, HLHTGALInfoStruct* pMICommonPackage, UINT32* pErrorCode); static UINT8 GalHeadCheck(const UINT32 localEtcsId, const UINT32 remoteEtcsId, const UINT16 devInterfaceType, const UINT8 prtrlVer, const UINT32 dataVer, HLHTGALInfoStruct* pMICommonPackage, UINT32* pErrorCode);
static UINT8 GetRsspiAddr(const UINT16 locTypeId, const UINT16 oppTypeId, UINT16* locRsspiAddr, UINT16* oppRsspiAddr); static UINT8 GetRsspiAddr(const UINT16 locTypeId, const UINT16 oppTypeId, UINT16* locRsspiAddr, UINT16* oppRsspiAddr);
@@ -139,6 +137,7 @@ UINT8 InitAxleToCiDataStru(void)
UINT8 belongAxleSysId = 0u; /*物理区段所属计轴ID*/ UINT8 belongAxleSysId = 0u; /*物理区段所属计轴ID*/
UINT16 axlePhySecSum = 0u; /*计轴系统包含物理区段数目*/ UINT16 axlePhySecSum = 0u; /*计轴系统包含物理区段数目*/
UINT8 pyhIsThisLine = 0u; UINT8 pyhIsThisLine = 0u;
UINT8 cPrtclVerBtwCiAndAxle = 0U; /*联锁和计轴间的协议校验版本号*/
ciId = GetSystemParaLocalCiId(); ciId = GetSystemParaLocalCiId();
ciName = (CI_SYSTEM_TYPE_CI) * 256U + ciId; ciName = (CI_SYSTEM_TYPE_CI) * 256U + ciId;
@@ -154,13 +153,22 @@ UINT8 InitAxleToCiDataStru(void)
{ {
axleId = deviceIdBuf[i]; axleId = deviceIdBuf[i];
axleName = (CI_SYSTEM_TYPE_AXIS) * 256u + axleId; axleName = (CI_SYSTEM_TYPE_AXIS) * 256u + axleId;
cPrtclVerBtwCiAndAxle = GetCiAndAxisPrtclCheckVer(); /*获取协议校验版本号*/
rtn = dquDevName2HlhtId(axleName, 0U, &axieEtcsId); /*获取计轴互联互通ID*/ if (20U <= cPrtclVerBtwCiAndAxle)
rtn &= dquDevName2HlhtId(ciName, 0U, &ciEtcsId); /*获取CI互联互通ID*/ {
rtn = dquDevName2HlhtId(axleName, 0U, &axieEtcsId); /*获取计轴互联互通ID*/
rtn &= dquDevName2HlhtId(ciName, 0U, &ciEtcsId); /*获取CI互联互通ID*/
}
else
{
/*使用设备ID作为互联互通ID*/
rtn = GetRsspiAddr(axleName, ciName, &axieEtcsId, &ciEtcsId);
}
if (CI_SUCCESS == rtn) /*GAL层互联互通ID获取成功*/ if (CI_SUCCESS == rtn) /*GAL层互联互通ID获取成功*/
{ {
if (axleId >= AXIS_TO_CI_SUM_MAX) if(axleId>=AXIS_TO_CI_SUM_MAX)
{ {
break;/*防护代码,防止越界*/ break;/*防护代码,防止越界*/
} }
@@ -176,7 +184,7 @@ UINT8 InitAxleToCiDataStru(void)
belongCiId = GetPhySecBelongCiId(phySecId); belongCiId = GetPhySecBelongCiId(phySecId);
belongAxleSysId = GetPhySecBelongAxisSysId(phySecId); belongAxleSysId = GetPhySecBelongAxisSysId(phySecId);
pyhIsThisLine = GetPhyIsThisLineState(phySecId); /*是否本线路*/ pyhIsThisLine = GetPhyIsThisLineState(phySecId); /*是否本线路*/
if ((0U < phySecId) && (phySecId < PHYSICAL_SECTION_SUM_MAX) && (belongCiId == ciId) if ((0U < phySecId) && (phySecId < PHYSICAL_SECTION_SUM_MAX) && (belongCiId == ciId)
&& (belongAxleSysId == axleId) && (DEV_IS_THIS_LINE_YES == pyhIsThisLine)) && (belongAxleSysId == axleId) && (DEV_IS_THIS_LINE_YES == pyhIsThisLine))
{ {
axlePhySecSum = axisToCiDataStru[axleId].SectionSum; axlePhySecSum = axisToCiDataStru[axleId].SectionSum;
@@ -188,9 +196,6 @@ UINT8 InitAxleToCiDataStru(void)
axisToCiDataStru[axleId].axisDataStr[axlePhySecSum].faultInfo = 0u; axisToCiDataStru[axleId].axisDataStr[axlePhySecSum].faultInfo = 0u;
axisToCiDataStru[axleId].axisDataStr[axlePhySecSum].showAndReplyInfo = 0u; axisToCiDataStru[axleId].axisDataStr[axlePhySecSum].showAndReplyInfo = 0u;
axisToCiDataStru[axleId].axisDataStr[axlePhySecSum].PreResetRst = RELAY_STATE_DOWN; axisToCiDataStru[axleId].axisDataStr[axlePhySecSum].PreResetRst = RELAY_STATE_DOWN;
axisToCiDataStru[axleId].axisDataStr[axlePhySecSum].chPreResetBack = RELAY_STATE_UP;
axisToCiDataStru[axleId].axisDataStr[axlePhySecSum].chDirectResetRst = RELAY_STATE_DOWN;
axisToCiDataStru[axleId].axisDataStr[axlePhySecSum].chDirectResetBack = RELAY_STATE_UP;
axisToCiDataStru[axleId].axisDataStr[axlePhySecSum].State = RELAY_STATE_DOWN; axisToCiDataStru[axleId].axisDataStr[axlePhySecSum].State = RELAY_STATE_DOWN;
axisToCiDataStru[axleId].PhySecIdx[phySecId] = (UINT8)(axlePhySecSum); axisToCiDataStru[axleId].PhySecIdx[phySecId] = (UINT8)(axlePhySecSum);
@@ -250,9 +255,7 @@ UINT8 ParseAxisToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength, cons
UINT32 galAxisDataVer = 0u; /*计轴系统数据版本号*/ UINT32 galAxisDataVer = 0u; /*计轴系统数据版本号*/
UINT32 ciAndAxisTimeOutCout = 0u; /*联锁与计轴通信中断周期数*/ UINT32 ciAndAxisTimeOutCout = 0u; /*联锁与计轴通信中断周期数*/
UINT32 ciCurappCycleTime = 0u; /*联锁当前周期*/ UINT32 ciCurappCycleTime = 0u; /*联锁当前周期*/
UINT16 axisDevName = 0U; /*计轴名称:类型+ID*/ UINT16 axisDevName = 0u; /*计轴名称:类型+ID*/
UINT16 wPhySecCurSum = 0U; /*本控区物理区段数目*/
UINT16 wIndexInAxle = 0U; /*物理区段的索引号*/
deviceSum = GetCiTransmitSpecifySysDevSum(CI_SYSTEM_TYPE_AXIS); /*获取通信Axis设备总数*/ deviceSum = GetCiTransmitSpecifySysDevSum(CI_SYSTEM_TYPE_AXIS); /*获取通信Axis设备总数*/
deviceIdBuf = GetCiTransmitSpecifySysDevBuf(CI_SYSTEM_TYPE_AXIS); /*获取通信Axis设备ID数组*/ deviceIdBuf = GetCiTransmitSpecifySysDevBuf(CI_SYSTEM_TYPE_AXIS); /*获取通信Axis设备ID数组*/
@@ -270,9 +273,6 @@ UINT8 ParseAxisToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength, cons
axisToCiDataStru[systemId].axisDataStr[jj].faultInfo = 0u; axisToCiDataStru[systemId].axisDataStr[jj].faultInfo = 0u;
axisToCiDataStru[systemId].axisDataStr[jj].showAndReplyInfo = 0u; axisToCiDataStru[systemId].axisDataStr[jj].showAndReplyInfo = 0u;
axisToCiDataStru[systemId].axisDataStr[jj].PreResetRst = RELAY_STATE_DOWN; axisToCiDataStru[systemId].axisDataStr[jj].PreResetRst = RELAY_STATE_DOWN;
axisToCiDataStru[systemId].axisDataStr[jj].chPreResetBack = RELAY_STATE_UP;
axisToCiDataStru[systemId].axisDataStr[jj].chDirectResetRst = RELAY_STATE_DOWN;
axisToCiDataStru[systemId].axisDataStr[jj].chDirectResetBack = RELAY_STATE_UP;
axisToCiDataStru[systemId].axisDataStr[jj].State = RELAY_STATE_DOWN; axisToCiDataStru[systemId].axisDataStr[jj].State = RELAY_STATE_DOWN;
} }
@@ -450,163 +450,6 @@ UINT8 ParseAxisToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength, cons
retVal = CI_ERROR; retVal = CI_ERROR;
} }
} }
else if (AXIS_TYPE_FUHAOSHENG == acFty)
{
phySecNum = dataBuf[ii++]; /*获取计轴区段数量*/
wPhySecCurSum = axisToCiDataStru[systemId].SectionSum;
if ((AXIS_TO_CI_SECTION_SUM_MAX > phySecNum) && (wPhySecCurSum == phySecNum))
{
/*计轴设备工作健康状态只解析不处理*/
ii++;
for (jj = 0u; jj < phySecNum; jj++)
{
wIndexInAxle += 1U;
retVal = GetInAxlePhySecIdx(systemId, wIndexInAxle, &axisDataStrIdx);
if (CI_SUCCESS == retVal)
{
if (0x02U == (dataBuf[ii] & 0x03U))
{
/*10B:区段空闲*/
axisToCiDataStru[systemId].axisDataStr[axisDataStrIdx].gdRelayState = RELAY_STATE_UP;
}
else if((0x00U == (dataBuf[ii] & 0x03U)) || (0x01U == (dataBuf[ii] & 0x03U)))
{ /*01B:区段占用*/
axisToCiDataStru[systemId].axisDataStr[axisDataStrIdx].gdRelayState = RELAY_STATE_DOWN;
}
else
{
retVal = CI_ERROR;
debug_infor_printf((const)"\nwIndexInAxle:%d OccState ERROR\n", wIndexInAxle);
}
}
else
{
;
}
if (CI_SUCCESS == retVal)
{
if (0x01U == ((dataBuf[ii] >> 2U) & 0x01U))
{
/*计轴受扰*/
axisToCiDataStru[systemId].axisDataStr[axisDataStrIdx].State = RELAY_STATE_DOWN;
}
else
{
/*默认状态*/
axisToCiDataStru[systemId].axisDataStr[axisDataStrIdx].State = RELAY_STATE_UP;
}
}
else
{
;
}
if (CI_SUCCESS == retVal)
{
if (0x01U == ((dataBuf[ii] >> 3U) & 0x01U))
{
/*未接受到计轴立即复位命令*/
axisToCiDataStru[systemId].axisDataStr[axisDataStrIdx].chDirectResetBack = RELAY_STATE_DOWN;
}
else
{
/*接受到计轴立即复位命令*/
axisToCiDataStru[systemId].axisDataStr[axisDataStrIdx].chDirectResetBack = RELAY_STATE_UP;
}
}
else
{
;
}
if (CI_SUCCESS == retVal)
{
if (0x01U == ((dataBuf[ii] >> 4U) & 0x01U))
{
/*计轴立即复位成功*/
axisToCiDataStru[systemId].axisDataStr[axisDataStrIdx].chDirectResetRst = RELAY_STATE_UP;
}
else
{
/*计轴立即复位未执行或者执行未成功*/
axisToCiDataStru[systemId].axisDataStr[axisDataStrIdx].chDirectResetRst = RELAY_STATE_DOWN;
}
}
else
{
;
}
if (CI_SUCCESS == retVal)
{
if (0x01U == ((dataBuf[ii] >> 5U) & 0x01U))
{
/*未接受到计轴预复位命令*/
axisToCiDataStru[systemId].axisDataStr[axisDataStrIdx].chPreResetBack = RELAY_STATE_DOWN;
}
else
{
/*接受到计轴预复位命令*/
axisToCiDataStru[systemId].axisDataStr[axisDataStrIdx].chPreResetBack = RELAY_STATE_UP;
}
}
else
{
;
}
if (CI_SUCCESS == retVal)
{
if (0x01U == ((dataBuf[ii] >> 6U) & 0x01U))
{
/*计轴预复位成功*/
axisToCiDataStru[systemId].axisDataStr[axisDataStrIdx].PreResetRst = RELAY_STATE_UP;
}
else
{
/*计轴预复位未执行或者执行未成功*/
axisToCiDataStru[systemId].axisDataStr[axisDataStrIdx].PreResetRst = RELAY_STATE_DOWN;
}
}
else
{
;
}
/*计轴区段状态*/
ii++;
if (CI_SUCCESS != retVal)
{
retVal = CI_ERROR;
break; /*解析失败,停止解析,返回失败*/
}
else
{
/*继续解析*/
}
}
if (CI_SUCCESS == retVal)
{
/*包含的计轴磁头数量*/
ii++;
}
else
{
;
}
}
else
{
retVal = CI_ERROR;
debug_infor_printf((const)"\nAxis phySecNum:%d ERROR,RC wPhySecCurSum::%d\n", phySecNum, wPhySecCurSum);
}
}
else else
{ {
retVal = CI_ERROR; retVal = CI_ERROR;
@@ -672,9 +515,6 @@ UINT8 ParseAxisToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength, cons
axisToCiDataStru[systemId].axisDataStr[jj].faultInfo = 0u; axisToCiDataStru[systemId].axisDataStr[jj].faultInfo = 0u;
axisToCiDataStru[systemId].axisDataStr[jj].showAndReplyInfo = 0u; axisToCiDataStru[systemId].axisDataStr[jj].showAndReplyInfo = 0u;
axisToCiDataStru[systemId].axisDataStr[jj].PreResetRst = RELAY_STATE_DOWN; axisToCiDataStru[systemId].axisDataStr[jj].PreResetRst = RELAY_STATE_DOWN;
axisToCiDataStru[systemId].axisDataStr[jj].chPreResetBack = RELAY_STATE_UP;
axisToCiDataStru[systemId].axisDataStr[jj].chDirectResetRst = RELAY_STATE_DOWN;
axisToCiDataStru[systemId].axisDataStr[jj].chDirectResetBack = RELAY_STATE_UP;
axisToCiDataStru[systemId].axisDataStr[jj].State = RELAY_STATE_DOWN; axisToCiDataStru[systemId].axisDataStr[jj].State = RELAY_STATE_DOWN;
} }
@@ -752,12 +592,6 @@ UINT8 PackCiToAxisData(UINT8 axisSysId)
UINT16 dstDevId = 0u; UINT16 dstDevId = 0u;
UINT8 outnetSafeSendRtn = 0u; UINT8 outnetSafeSendRtn = 0u;
UINT16 axisDevName = 0u; /*计轴名称:类型+ID*/ UINT16 axisDevName = 0u; /*计轴名称:类型+ID*/
UINT8* pDataByteIndex = NULL; /*数据比特位索引地址*/
UINT8 chDataCurPos = 0U;/*数据当前位置*/
UINT8 chOffset = 0U;/*偏移量*/
UINT8 chSecResetBackState = 0U;/*区段复位状态*/
UINT16 wIndexInAxle = 0U; /*物理区段的索引号*/
axisDevName = (CI_SYSTEM_TYPE_AXIS) * 256U + axisSysId; axisDevName = (CI_SYSTEM_TYPE_AXIS) * 256U + axisSysId;
if (AXIS_TO_CI_SUM_MAX > axisSysId) if (AXIS_TO_CI_SUM_MAX > axisSysId)
{ {
@@ -908,154 +742,6 @@ UINT8 PackCiToAxisData(UINT8 axisSysId)
{ {
} }
} }
else if (AXIS_TYPE_FUHAOSHENG == acFty)
{
phyCount = axisToCiDataStru[axisSysId].SectionSum;
CiToAxisDataBuffer[ii] = (UINT8)(phyCount);
ii++;
for (jj = 0U; jj < phyCount; jj++)
{
/*先处理计轴直接复位*/
/*每一个字节存储4个区段复位命令*/
chDataCurPos = jj % SEC_NUM_PER_BYTE;
if (0U == chDataCurPos)
{
pDataByteIndex = &CiToAxisDataBuffer[ii];
ii++;
}
else
{
/*没有满一个字节,继续等待*/
;
}
chOffset = chDataCurPos * BIT_NUM_PER_SEC;
wIndexInAxle += 1U;
phySecId = GetPhyIdByIndexInAxle(axisSysId, wIndexInAxle); /*区段ID*/
fwCycle = GetPhySecResetStartCycNum(phySecId);
if (0U < fwCycle)
{
resetType = GetPhySecSectionResetType(phySecId);
if (PHYSICAL_SECTION_PRE_RESET_NO == resetType)
{
/*处理直接复位*/
chSecResetBackState = GetPhySecDirectResetBack(phySecId);
if (PHY_RESET_BACK_RECIVE_NO == chSecResetBackState)
{
/*发送*/
*pDataByteIndex = *pDataByteIndex | ((UINT8)(0X02U << chOffset));
}
else
{
/*不发送*/
*pDataByteIndex = *pDataByteIndex | ((UINT8)(0X00U << chOffset));
}
}
else if (PHYSICAL_SECTION_PRE_RESET_YES == resetType)
{
/*预复位等待不发送*/
*pDataByteIndex = *pDataByteIndex | ((UINT8)(0X00U << chOffset));
}
else
{
retVal = CI_ERROR;
}
}
else
{
/*不发送*/
*pDataByteIndex = *pDataByteIndex | ((UINT8)(0X00U << chOffset));
}
if (CI_ERROR == retVal)
{
break;
}
else
{
; /*继续*/
}
}
if (CI_SUCCESS == retVal)
{
wIndexInAxle = 0U;
for (jj = 0U; jj < phyCount; jj++)
{
/*处理计轴预复位*/
/*每一个字节存储4个区段复位命令*/
chDataCurPos = jj % SEC_NUM_PER_BYTE;
if (0U == chDataCurPos)
{
pDataByteIndex = &CiToAxisDataBuffer[ii];
ii++;
}
else
{
/*没有满一个字节,继续等待*/
;
}
chOffset = chDataCurPos * BIT_NUM_PER_SEC;
wIndexInAxle += 1U;
phySecId = GetPhyIdByIndexInAxle(axisSysId, wIndexInAxle); /*区段ID*/
fwCycle = GetPhySecResetStartCycNum(phySecId);
if (0U < fwCycle)
{
resetType = GetPhySecSectionResetType(phySecId);
if (PHYSICAL_SECTION_PRE_RESET_NO == resetType)
{
/*直接复位等待不发送*/
/*不发送*/
*pDataByteIndex = *pDataByteIndex | ((UINT8)(0X00U << chOffset));
}
else if (PHYSICAL_SECTION_PRE_RESET_YES == resetType)
{
chSecResetBackState = GetPhySecPreResetBack(phySecId);
if (PHY_RESET_BACK_RECIVE_NO == chSecResetBackState)
{
/*发送*/
*pDataByteIndex = *pDataByteIndex | ((UINT8)(0X02U << chOffset));
}
else
{
/*不发送*/
*pDataByteIndex = *pDataByteIndex | ((UINT8)(0X00U << chOffset));
}
}
else
{
retVal = CI_ERROR;
}
}
else
{
/*不发送*/
*pDataByteIndex = *pDataByteIndex | ((UINT8)(0X00U << chOffset));
}
if (CI_ERROR == retVal)
{
break;
}
else
{
; /*继续*/
}
}
}
else
{
; /*不继续组包*/
}
}
else else
{ {
retVal = CI_ERROR; retVal = CI_ERROR;
@@ -1265,272 +951,6 @@ static UINT8 GetPhySecIdxInAxisDataStr(const UINT8 axleId, const UINT16 phySecId
return rtn; return rtn;
} }
/*
*
* const UINT8 chAxleId, ID
* const UINT16 wIndexInAxle,
* UINT8* pAxleDataStrIdx, ID下标
* CI_ERROR:
* CI_SUCCESS:
* by cgh 20250415
*/
UINT8 GetInAxlePhySecIdx(const UINT8 chAxleId, const UINT16 wIndexInAxle, UINT8* pAxleDataStrIdx)
{
UINT8 ret = CI_ERROR; /*返回值*/
UINT16 wTempPhyId = 0U; /*临时记录的物理区段ID*/
if ((NULL != pAxleDataStrIdx) && (AXIS_TO_CI_SUM_MAX > chAxleId))
{
wTempPhyId = GetPhyIdByIndexInAxle(chAxleId, wIndexInAxle); /*获取计轴系统区段序号对应物理区段ID*/
if ((0U < wTempPhyId) && (PHYSICAL_SECTION_SUM_MAX > wTempPhyId))
{
*pAxleDataStrIdx = axisToCiDataStru[chAxleId].PhySecIdx[wTempPhyId];/*AxisDataStr里物理区段ID下标*/
}
else
{
*pAxleDataStrIdx = AXISDATASTR_IDX;
}
if (AXISDATASTR_IDX != (*pAxleDataStrIdx))
{
ret = CI_SUCCESS;
}
else
{
/*返回error*/
}
}
else
{
/*返回error*/
}
return ret;
}
/*
*
*
* CI_ERROR:
* CI_SUCCESS:
* by cgh 20260316
*/
UINT8 InitAxisSecClassData(void)
{
UINT8 chReval = CI_ERROR;
UINT8 chDeviceSum =0U; /*获取通信Axis设备总数*/
UINT8* szDeviceIdBuf = NULL; /*获取通信Axis设备ID数组*/
AxisToCiDataStruct* CollAxisDataStru = NULL; /*计轴通信采集数据*/
UINT16 wPhySecId = 0U; /*物理区段ID*/
UINT8 chPhySecRelAcNum = 0U; /*物理区段关联的计轴区段数目*/
UINT16* szPhySecRelAcId = NULL; /*物理区段关联计轴区段ID数组*/
UINT16 ii = 0U; /*物理区段ID下标*/
UINT8 chAxisSecIndex = 0U; /*计轴区段索引*/
UINT8 chAxisSecCbtcProperty = 0U; /*计轴区段CBTC属性*/
UINT8 chAdjacentSecTypeCheck = 0U; /*相邻区段类型检查*/
chDeviceSum = GetCiTransmitSpecifySysDevSum(CI_SYSTEM_TYPE_AXIS); /*获取通信Axis设备总数*/
szDeviceIdBuf = GetCiTransmitSpecifySysDevBuf(CI_SYSTEM_TYPE_AXIS); /*获取通信Axis设备ID数组*/
CollAxisDataStru = GetCollAxisDataStruct();; /*计轴通信采集数据*/
/*目前只初始化RC和一个计轴系统通信的场景*/
if (1U == chDeviceSum)
{
/*数据防空*/
if ((NULL != szDeviceIdBuf) && (NULL != CollAxisDataStru))
{
chReval = CI_SUCCESS;
/*遍历计轴管辖的区段*/
for (ii = 0U; ii < (UINT16)(CollAxisDataStru[szDeviceIdBuf[0]].SectionSum); ii++)
{
wPhySecId = CollAxisDataStru[szDeviceIdBuf[0]].axisDataStr[ii].PhySecId;
chPhySecRelAcNum = GetPAxisSectionSum(wPhySecId);
szPhySecRelAcId = GetPAxisSectionIdBuf(wPhySecId);
/*数组防空*/
if (NULL != szPhySecRelAcId)
{
/*遍历当前物理区段关联的计轴区段*/
for (chAxisSecIndex = 0U; chAxisSecIndex < chPhySecRelAcNum; chAxisSecIndex++)
{
/* 第一步,添加集合A数据:计轴管辖的所有计轴区段数据*/
if (gAxisSecClassData.chElementANum < CI_INCLUDE_AXIS_MAX_SUM)
{
gAxisSecClassData.szElementASecId[gAxisSecClassData.chElementANum] = szPhySecRelAcId[chAxisSecIndex];
gAxisSecClassData.chElementANum++;
chAxisSecCbtcProperty = GetAxisSecCbtcProperty(szPhySecRelAcId[chAxisSecIndex]);
/*第二步,添加集合B数据:计轴管辖的所有具备CBTC属性的计轴区段数据*/
if (AXIS_SEC_CBTC_PROPERTY_YES == chAxisSecCbtcProperty)
{
gAxisSecClassData.szElementBSecId[gAxisSecClassData.chElementBNum] = szPhySecRelAcId[chAxisSecIndex];
gAxisSecClassData.chElementBNum++;
chAdjacentSecTypeCheck = AxisAdjacentSecTypeCheck(szPhySecRelAcId[chAxisSecIndex]);
/*第三步,添加集合C数据:计轴管辖的所有具备CBTC属性中不为联络线及非CBTC属性区段相邻区段的计轴区段数据*/
if (CI_SUCCESS == chAdjacentSecTypeCheck)
{
gAxisSecClassData.szElementCSecId[gAxisSecClassData.chElementCNum] = szPhySecRelAcId[chAxisSecIndex];
gAxisSecClassData.chElementCNum++;
}
else
{
/*不添加*/
;
}
}
else
{
/*不添加*/
;
}
}
else
{
/*初始化失败*/
chReval = CI_ERROR;
break;
}
}
}
else
{
chReval = CI_ERROR;
}
if (CI_ERROR == chReval)
{
break;
}
else
{
; /*继续检查*/
}
}
}
else
{
; /*数据获取失败*/
}
debug_infor_printf((const)"\ngAxisSecClassData.chElementANum : %d\n", gAxisSecClassData.chElementANum);
for (ii = 0U; ii < gAxisSecClassData.chElementANum; ii++)
{
debug_infor_printf((const)"%d/", gAxisSecClassData.szElementASecId[ii]);
}
debug_infor_printf((const)"\ngAxisSecClassData.chElementBNum : %d\n", gAxisSecClassData.chElementBNum);
for (ii = 0U; ii < gAxisSecClassData.chElementBNum; ii++)
{
debug_infor_printf((const)"%d/", gAxisSecClassData.szElementBSecId[ii]);
}
debug_infor_printf((const)"\ngAxisSecClassData.chElementCNum : %d\n", gAxisSecClassData.chElementCNum);
for (ii = 0U; ii < gAxisSecClassData.chElementCNum; ii++)
{
debug_infor_printf((const)"%d/", gAxisSecClassData.szElementCSecId[ii]);
}
}
else
{
chReval = CI_SUCCESS;
}
return chReval;
}
/**
*
* UINT16 wAxisSecId ID
* CI_SUCCESS 1
* CI_ERROR 0
* by cgh 20260309
*/
UINT8 AxisAdjacentSecTypeCheck(UINT16 wAxisSecId)
{
UINT8 chReval = CI_ERROR;
UINT8 chAcSameCnt = 0U; /*计轴前方计轴区段数目*/
UINT16 szAcSameID[AC_MAXCNT_IN_SWITCH] = { 0U }; /*计轴前方计轴区段数组*/
UINT8 chAcConvertCnt = 0U; /*计轴后方计轴区段数目*/
UINT16 szAcConvertID[AC_MAXCNT_IN_SWITCH] = { 0U }; /*计轴后方计轴区段数组*/
UINT8 chAcIndex = 0U; /*计轴区段索引*/
UINT8 chLinkLine = 0U; /*计轴区段联络线属性*/
UINT8 chAxisSecCbtcProperty = 0U; /*计轴区段CBTC属性*/
if ((0U < wAxisSecId) && (AXIS_SECTION_SUM_MAX > wAxisSecId))
{
/* 查询前方计轴*/
chAcSameCnt = aam_PrepareAdjacentAC(wAxisSecId, EMAP_SAME_DIR, szAcSameID);
/** 查询后方计轴 */
chAcConvertCnt = aam_PrepareAdjacentAC(wAxisSecId, EMAP_CONVER_DIR, szAcConvertID);
if ((UINT8_MAX == chAcSameCnt) || (UINT8_MAX == chAcConvertCnt))
{
chReval = CI_ERROR;
}
else
{
chReval = CI_SUCCESS;
/*遍历同向相邻计轴区段*/
for (chAcIndex = 0U; chAcIndex < chAcSameCnt; chAcIndex++)
{
chLinkLine = aam_PrepareACIsLinkingAxle(szAcSameID[chAcIndex]);
chAxisSecCbtcProperty = GetAxisSecCbtcProperty(szAcSameID[chAcIndex]);
/*相邻区段具备联络线属性或非CBTC属性*/
if ((CI_SUCCESS == chLinkLine) || (AXIS_SEC_CBTC_PROPERTY_NO == chAxisSecCbtcProperty))
{
chReval = CI_ERROR;
break;
}
else
{
; /*相邻计轴区段不是联络线或具备CBTC属性,继续检查*/
}
}
if(CI_SUCCESS == chReval)
{
for (chAcIndex = 0U; chAcIndex < chAcConvertCnt; chAcIndex++)
{
chLinkLine = aam_PrepareACIsLinkingAxle(szAcConvertID[chAcIndex]);
chAxisSecCbtcProperty = GetAxisSecCbtcProperty(szAcConvertID[chAcIndex]);
/*相邻区段具备联络线属性或非CBTC属性*/
if ((CI_SUCCESS == chLinkLine) || (AXIS_SEC_CBTC_PROPERTY_NO == chAxisSecCbtcProperty))
{
chReval = CI_ERROR;
break;
}
else
{
; /*相邻计轴区段不是联络线或具备CBTC属性,继续检查*/
}
}
}
}
}
else
{
;
}
return chReval;
}
/*
*
*
*
* by cgh 20260316
*/
AxisSecClassDataStruct GetAxisSecClassData(void)
{
return gAxisSecClassData;
}
@@ -41,8 +41,7 @@
#include "../LogRecord/LogRecord.h" #include "../LogRecord/LogRecord.h"
#endif #endif
#define SEC_NUM_PER_BYTE ((UINT8)4) /*每一个字节包含区段数目*/
#define BIT_NUM_PER_SEC ((UINT8)(8 / SEC_NUM_PER_BYTE)) /*每一个区段所占比特位数目*/
/*与联锁通信的区段信息*/ /*与联锁通信的区段信息*/
typedef struct S_AxisDataStruct typedef struct S_AxisDataStruct
@@ -51,10 +50,8 @@ typedef struct S_AxisDataStruct
UINT8 gdRelayState; /*股道继电器状态,落下:0x55,吸起:0xaa*/ UINT8 gdRelayState; /*股道继电器状态,落下:0x55,吸起:0xaa*/
UINT8 showAndReplyInfo; /*bit0、bit1复零反馈,bit2、bit3预留,bit4到bit7表示信息(动态字段)*/ UINT8 showAndReplyInfo; /*bit0、bit1复零反馈,bit2、bit3预留,bit4到bit7表示信息(动态字段)*/
UINT8 faultInfo; /*故障信息,bit0区段故障、bit1板卡故障、bit2区段上电、bit3通信故障、bit4负轴故障、bit5磁头故障、bit6预留、bit7轨旁上电(动态字段)*/ UINT8 faultInfo; /*故障信息,bit0区段故障、bit1板卡故障、bit2区段上电、bit3通信故障、bit4负轴故障、bit5磁头故障、bit6预留、bit7轨旁上电(动态字段)*/
UINT8 PreResetRst; /*预复位结果*/ UINT8 PreResetRst; /*预复位结果*/
UINT8 chPreResetBack; /*预复位命令反馈*/
UINT8 chDirectResetRst; /*直接复位结果*/
UINT8 chDirectResetBack; /*直接复位命令反馈*/
UINT8 State; /*状态*/ UINT8 State; /*状态*/
} AxisCollDataStruct; } AxisCollDataStruct;
@@ -70,20 +67,8 @@ typedef struct S_AxisToCiDataStruct
AxisCollDataStruct axisDataStr[CI_INCLUDE_AXIS_MAX_SUM]; /*计轴区段信息结构体数组*/ AxisCollDataStruct axisDataStr[CI_INCLUDE_AXIS_MAX_SUM]; /*计轴区段信息结构体数组*/
}AxisToCiDataStruct; }AxisToCiDataStruct;
/*计轴区段分类数据结构体*/
typedef struct S_AxisSecClassDataStruct
{
UINT8 chElementANum; /*元素A数量*/
UINT16 szElementASecId[CI_INCLUDE_AXIS_MAX_SUM]; /*元素A数据*/
UINT8 chElementBNum; /*元素B数量*/
UINT16 szElementBSecId[CI_INCLUDE_AXIS_MAX_SUM]; /*元素B数据*/
UINT8 chElementCNum; /*元素C数量*/
UINT16 szElementCSecId[CI_INCLUDE_AXIS_MAX_SUM]; /*元素C数据*/
} AxisSecClassDataStruct;
extern AxisToCiDataStruct axisToCiDataStru[AXIS_TO_CI_SUM_MAX]; /*Axis到CI数据帧结构体*/ extern AxisToCiDataStruct axisToCiDataStru[AXIS_TO_CI_SUM_MAX]; /*Axis到CI数据帧结构体*/
extern AxisSecClassDataStruct gAxisSecClassData;
#ifdef __cplusplus #ifdef __cplusplus
@@ -141,42 +126,6 @@ UINT8 PackCiToAxisData( UINT8 axisSysId);
*/ */
UINT8 InitAxleToCiDataStru(void); UINT8 InitAxleToCiDataStru(void);
/*
*
* const UINT8 chAxleId, ID
* const UINT16 wIndexInAxle,
* UINT8* pAxleDataStrIdx, ID下标
* CI_ERROR:
* CI_SUCCESS:
* by cgh 20250415
*/
UINT8 GetInAxlePhySecIdx(const UINT8 chAxleId, const UINT16 wIndexInAxle, UINT8* pAxleDataStrIdx);
/*
*
*
* CI_ERROR:
* CI_SUCCESS:
* by cgh 20260316
*/
UINT8 InitAxisSecClassData(void);
/**
*
* UINT16 wAxisSecId ID
* CI_SUCCESS 1
* CI_ERROR 0
* by cgh 20260309
*/
UINT8 AxisAdjacentSecTypeCheck(UINT16 wAxisSecId);
/*
*
*
*
* by cgh 20260316
*/
AxisSecClassDataStruct GetAxisSecClassData(void);
#ifdef __cplusplus #ifdef __cplusplus
} }
File diff suppressed because it is too large Load Diff
+12 -114
View File
@@ -58,8 +58,6 @@
#define MANUFAC_DEF_STATUS_PACKET ((UINT16)0x020c) /*厂商自定义信息类型*/ #define MANUFAC_DEF_STATUS_PACKET ((UINT16)0x020c) /*厂商自定义信息类型*/
#define MANUFAC_DEF_INFO_VER_WL ((UINT8)0x01) /*厂商自定义信息版本(微联)*/
#define PSD_NUM_PER_BYTE ((UINT8)2) /*PSD字节常量*/ #define PSD_NUM_PER_BYTE ((UINT8)2) /*PSD字节常量*/
#define BIT_NUM_PER_PSD ((UINT8)(8U / PSD_NUM_PER_BYTE)) /*PSD字节常量*/ #define BIT_NUM_PER_PSD ((UINT8)(8U / PSD_NUM_PER_BYTE)) /*PSD字节常量*/
#define ESB_NUM_PER_BYTE ((UINT8)4) /*紧急停车按钮字节常量*/ #define ESB_NUM_PER_BYTE ((UINT8)4) /*紧急停车按钮字节常量*/
@@ -71,9 +69,6 @@
#define TSR_NUM_PER_BYTE ((UINT8)4) /*TSR按钮字节常量*/ #define TSR_NUM_PER_BYTE ((UINT8)4) /*TSR按钮字节常量*/
#define BIT_NUM_PER_TSR ((UINT8)(8U / TSR_NUM_PER_BYTE)) /*TSR字节常量*/ #define BIT_NUM_PER_TSR ((UINT8)(8U / TSR_NUM_PER_BYTE)) /*TSR字节常量*/
#define DEV_NUM_PER_BYTE ((UINT8)4U) /*每一个字节包含的设备数目*/
#define BIT_NUM_PER_DEV ((UINT8)(8U / DEV_NUM_PER_BYTE)) /*每一个设备所占比特位数目*/
#define PACKET_LENGTH_LEN ((UINT8)2) /*数据总长度*/ #define PACKET_LENGTH_LEN ((UINT8)2) /*数据总长度*/
#define PACKET_TYPE_LEN ((UINT8)2) /*数据类型长度*/ #define PACKET_TYPE_LEN ((UINT8)2) /*数据类型长度*/
@@ -100,13 +95,13 @@
#define PHYSEC_LOCKDIRECTION_OPPST_YES ((UINT8)0xAA) /*取反*/ #define PHYSEC_LOCKDIRECTION_OPPST_YES ((UINT8)0xAA) /*取反*/
#define PHYSEC_LOCKDIRECTION_OPPST_DEFAULT ((UINT8)0xFF) /*默认值*/ #define PHYSEC_LOCKDIRECTION_OPPST_DEFAULT ((UINT8)0xFF) /*默认值*/
#define CICI_VERSION ((UINT16)28) /*cici接口版本号,每次修改接口需要升级版本号——Last Modified On 2025.06.19*/ #define CICI_VERSION ((UINT16)23) /*cici接口版本号,每次修改接口需要升级版本号——Last Modified On 2025.03.10*/
#define CICI_BEGIN_TO_STATION_LEN ((UINT16)16) /*从开始到站场长度止 cgh增加4个字节CI-CI校验信息*/ #define CICI_BEGIN_TO_STATION_LEN ((UINT16)16) /*从开始到站场长度止 cgh增加4个字节CI-CI校验信息*/
#define CICI_ONE_SWITCH_LEN ((UINT16)13) /*一个道岔数据长度*/ #define CICI_ONE_SWITCH_LEN ((UINT16)13) /*一个道岔数据长度*/
#define CICI_ONE_PHYSEC_LEN ((UINT16)23U)/*一个物理区段数据长度*/ #define CICI_ONE_PHYSEC_LEN ((UINT16)23U)/*一个物理区段数据长度*/
#define CICI_ONE_LOGSEC_LEN ((UINT16)10)/*一个逻辑区段数据长度*/ #define CICI_ONE_LOGSEC_LEN ((UINT16)10)/*一个逻辑区段数据长度*/
#define CICI_ONE_SIGNAL_LEN ((UINT16)11)/*一个信号机数据长度*/ #define CICI_ONE_SIGNAL_LEN ((UINT16)9)/*一个信号机数据长度*/
#define CICI_ONE_PSD_LEN ((UINT16)5)/*一个屏蔽门数据长度*/ #define CICI_ONE_PSD_LEN ((UINT16)4)/*一个屏蔽门数据长度*/
#define CICI_ONE_ESB_LEN ((UINT16)4)/*一个ESB数据长度*/ #define CICI_ONE_ESB_LEN ((UINT16)4)/*一个ESB数据长度*/
#define CICI_ONE_ROUTE_LEN ((UINT16)12)/*一个进路数据长度*/ #define CICI_ONE_ROUTE_LEN ((UINT16)12)/*一个进路数据长度*/
#define CICI_ONE_PHYSEC_LOCKSTATE_LEN ((UINT16)10)/*一个物理区段锁闭状态数据长度*/ #define CICI_ONE_PHYSEC_LOCKSTATE_LEN ((UINT16)10)/*一个物理区段锁闭状态数据长度*/
@@ -238,18 +233,9 @@ extern "C" {
UINT8 cSourceCiId; /*发送方联锁ID*/ UINT8 cSourceCiId; /*发送方联锁ID*/
UINT8 cTargetCiId; /*接收方联锁ID*/ UINT8 cTargetCiId; /*接收方联锁ID*/
UINT8 cPlatFormNum; /*区间雨雪站台数量*/ UINT8 cPlatFormNum; /*区间雨雪站台数量*/
AreaSnowInfoStruct szPlatFormInfo[CI_TO_CI_AREA_SNOW_SUM_MAX]; /*区间雨雪信息数组*/ UINT32 dwPlatFormId[CI_TO_CI_AREA_SNOW_SUM_MAX]; /*区间雨雪站台互联互通ID数组*/
} ToCiAreaSnowStruct; } ToCiAreaSnowStruct;
/*相邻RC间的区间ITE切除信息*/
typedef struct S_ToCiAreaIteCutStruct
{
UINT8 cSourceCiId; /*发送方联锁ID*/
UINT8 cTargetCiId; /*接收方联锁ID*/
UINT8 cAreaIteCutNum; /*区间ITE切除数量*/
UINT16 wAreaIteCutId[CI_TO_CI_AREA_SNOW_SUM_MAX]; /*区间ID数组*/
} ToCiAreaIteCutStruct;
/*******************************全局变量声明*******************************/ /*******************************全局变量声明*******************************/
extern ToCiCommandDataStruct RecvCiCmdDataStru[RECVCI_CMD_DATA_STRU_SUM_MAX]; extern ToCiCommandDataStruct RecvCiCmdDataStru[RECVCI_CMD_DATA_STRU_SUM_MAX];
extern UINT16 RecvCiCmdDataStruCurSum; extern UINT16 RecvCiCmdDataStruCurSum;
@@ -266,8 +252,6 @@ extern "C" {
extern UINT8 SendCiDrCmdSum; extern UINT8 SendCiDrCmdSum;
extern ToCiAreaSnowStruct szRecvCiAreaSnow[CI_COM_CI_MAX_NUM]; extern ToCiAreaSnowStruct szRecvCiAreaSnow[CI_COM_CI_MAX_NUM];
extern ToCiAreaSnowStruct szSendCiAreaSnow[CI_COM_CI_MAX_NUM]; extern ToCiAreaSnowStruct szSendCiAreaSnow[CI_COM_CI_MAX_NUM];
extern ToCiAreaIteCutStruct szRecvCiAreaIteCut[CI_COM_CI_MAX_NUM];
extern ToCiAreaIteCutStruct szSendCiAreaIteCut[CI_COM_CI_MAX_NUM];
/* /*
* CI数据 * CI数据
@@ -737,23 +721,21 @@ UINT8 CiToCiEnvelopeCheck(const UINT8* dataBuf, UINT16* index);
* *
* UINT8 cSrcCiId CI * UINT8 cSrcCiId CI
* UINT8 cDstCiId CI * UINT8 cDstCiId CI
* UINT16 wAreaSnowId ID * UINT32 dwAreaSnowId ID
* UINT8 cAreaSnowLevel 湿 *
* * Created By LQ 2023.11.16
* Modified By LQ 2025.5.28
*/ */
void AddCiRecvAreaSnowInfo(UINT8 cSrcCiId, UINT8 cDstCiId, UINT16 wAreaSnowId, UINT8 cAreaSnowLevel); void AddCiRecvAreaSnowInfo(UINT8 cSrcCiId, UINT8 cDstCiId, UINT32 dwAreaSnowId);
/* /*
* ID相邻联锁的区间雨雪信息 * ID相邻联锁的区间雨雪信息
* UINT8 cSrcCiId CI * UINT8 cSrcCiId CI
* UINT8 cDstCiId CI * UINT8 cDstCiId CI
* UINT16 wAreaId ID * UINT32 dwAreaSnowId ID
* UINT8 cAreaSnowLevel 湿 *
* * Created By LQ 2023.11.16
* Modified By LQ 2025.05.28
*/ */
void AddCiSendAreaSnowInfo(UINT8 cSrcCiId, UINT8 cDstCiId, UINT16 wAreaId, UINT8 cAreaSnowLevel); void AddCiSendAreaSnowInfo(UINT8 cSrcCiId, UINT8 cDstCiId, UINT32 dwAreaSnowId);
/* /*
* *
@@ -927,90 +909,6 @@ UINT8 PackHlhtPacketHeadPha1(UINT8 dstCiId, UINT8 * pInputData, UINT16 * pHeadDa
*/ */
UINT8 InitNeedOlapUsingOtherCiProSw(void); UINT8 InitNeedOlapUsingOtherCiProSw(void);
/*
* ITE切除信息
* const UINT8 cSrcCiId CI
*
* Created By LQ 2025.04.14
*/
void ClearCiRecvAreaIteCutInfo(const UINT8 cSrcCiId);
/*
* ITE切除信息
*
*
* Created By LQ 2025.04.14
*/
void ClearCiSendAreaIteCutInfo(void);
/*
* ITE切除信息
*
* ITE切除信息
* Created By LQ 2025.04.14
*/
ToCiAreaIteCutStruct* GetCiRecvAreaIteCutInfo(void);
/*
* ID相邻联锁的区间ITE切除信息
* const UINT8 cTargetCiId
* ITE切除信息
* Created By LQ 2023.11.16
*/
ToCiAreaIteCutStruct* GetCiSendAreaIteCutInfo(const UINT8 cTargetCiId);
/*
* ITE切除信息
* UINT8 cSrcCiId CI
* UINT8 cDstCiId CI
* UINT16 wAreaId ID
*
* Created By LQ 2025.04.14
*/
void AddCiRecvAreaIteCutInfo(UINT8 cSrcCiId, UINT8 cDstCiId, UINT16 wAreaId);
/*
* ID相邻联锁的区间ITE切除信息
* UINT8 cSrcCiId CI
* UINT8 cDstCiId CI
* UINT16 wAreaId ID
*
* Created By LQ 2025.04.14
*/
void AddCiSendAreaIteCutInfo(UINT8 cSrcCiId, UINT8 cDstCiId, UINT16 wAreaId);
/*
* CI发送的待解析的区间ITE切除数据
* const UINT8* dataBuf
* UINT16* index
* 0
* 1
* Created By LQ 2024.04.15
*/
UINT8 CheckCiToCiAreaIteCutData(const UINT8* dataBuf, UINT16* index);
/*
*
* UINT8 *pInputData
* UINT16 *pItemLen
* const UINT8 dstCiId ID
* CI_SUCCESS 1
* CI_ERROR 0
* Created By LQ 2025.05.23
*/
UINT8 PackManufacDefPacket(UINT8* pInputBuf, UINT16* pItemLen, const UINT8 dstCiId);
/*
*
* const UINT8 *pInputData
* UINT16 *pItemLen
* const UINT8 srcCiId ID
* CI_SUCCESS 1
* CI_ERROR 0
* Created By LQ 2025.05.26
*/
UINT8 ParseManufacDefPacket(const UINT8* pInputData, UINT16* pItemLen, const UINT8 srcCiId);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
File diff suppressed because it is too large Load Diff
@@ -44,7 +44,6 @@
#include "../ParsePack/ParsePackOcData.h" #include "../ParsePack/ParsePackOcData.h"
#include "../DataManage/PlatDataManage.h" #include "../DataManage/PlatDataManage.h"
#include "../IO/DeviceRelayDataProcess.h" #include "../IO/DeviceRelayDataProcess.h"
#include "SpeedLimitSecDataManage.h"
#ifdef __cplusplus #ifdef __cplusplus
@@ -225,18 +224,6 @@ UINT8 OverlapValidMaskCheck(const UINT16 rtOverlapLockedId);
*/ */
UINT8 FloodGateMaskManage(UINT8 MaskType, UINT16 DeviceId, UINT16 MaskId, UINT8* dataBuf); UINT8 FloodGateMaskManage(UINT8 MaskType, UINT16 DeviceId, UINT16 MaskId, UINT8* dataBuf);
/*
*
* UINT8 MaskType,
* UINT16 DeviceId, ID
* UINT16 MaskId, ID
* UINT8* dataBuf,
* 0:
* 1:
* BY hh 2026.03.17
*/
UINT8 SpeedLimitMaskManage(UINT8 MaskType, UINT16 DeviceId, UINT16 MaskId, UINT8* dataBuf);
/* /*
* CIM通信状态信息 * CIM通信状态信息
* void * void
@@ -393,20 +380,6 @@ void ParasePlantIOData(UINT8* dataBuf);
*/ */
void PackCiToCimFlyProtectData(void); void PackCiToCimFlyProtectData(void);
/*
* CIM双系IO采集不一致信息
* void
*
*/
void PackCiToCimCollDiffData(void);
/*
* CIM接触网信息
* void
*
*/
void PackCiToCimOHLData(void);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
@@ -38,7 +38,7 @@
/*CI 和 CI*/ /*CI 和 CI*/
#define RECVCI_CMD_DATA_STRU_SUM_MAX ((UINT16)100) /*CI接受其他联锁数据结构体数组最大值*/ #define RECVCI_CMD_DATA_STRU_SUM_MAX ((UINT16)100) /*CI接受其他联锁数据结构体数组最大值*/
#define SENDCI_CMD_DATA_STRU_SUM_MAX ((UINT16)100) /*CI发送到其他联锁数据结构体数组最大值*/ #define SENDCI_CMD_DATA_STRU_SUM_MAX ((UINT16)100) /*CI发送到其他联锁数据结构体数组最大值*/
#define CI_TO_CI_DATA_LEN_MAX ((UINT16)5700) /*联锁到CI组包数据最大值*/ #define CI_TO_CI_DATA_LEN_MAX ((UINT16)5000) /*联锁到CI组包数据最大值*/
#define CI_TO_CI_AREA_SNOW_SUM_MAX ((UINT8)4) /*相邻RC间发送的区间雨雪数量最大值*/ #define CI_TO_CI_AREA_SNOW_SUM_MAX ((UINT8)4) /*相邻RC间发送的区间雨雪数量最大值*/
#define CI_TO_CI_LEAVE_LOGSEC_ROUTE_NUM ((UINT16)100) /*相邻RC间发送的离去逻辑区段检查数量最大值*/ #define CI_TO_CI_LEAVE_LOGSEC_ROUTE_NUM ((UINT16)100) /*相邻RC间发送的离去逻辑区段检查数量最大值*/
@@ -49,7 +49,7 @@
#define ZC_TO_CI_EB_MAX ((UINT16)254) /*ZC发送CI的区间紧急制动区段数量最大值*/ #define ZC_TO_CI_EB_MAX ((UINT16)254) /*ZC发送CI的区间紧急制动区段数量最大值*/
/*TIOC 和 TMC*/ /*TIOC 和 TMC*/
#define TIOC_TO_TMC_DATA_LEN_MAX ((UINT16)3000) /*RC到TMC组包数据最大值*/ #define TIOC_TO_TMC_DATA_LEN_MAX ((UINT16)3000) /*联锁到ZC组包数据最大值*/
/*CI 和 LEU*/ /*CI 和 LEU*/
#define LEU_TO_CI_SUM_MAX ((UINT16)9) /*定义联锁可以通信的LEU最大值*/ #define LEU_TO_CI_SUM_MAX ((UINT16)9) /*定义联锁可以通信的LEU最大值*/
@@ -103,8 +103,6 @@
#define CIM_INFO_SIGNAL_DRIVOUT ((UINT16)0x2010) /*发送CIM信号机驱动超时信息*/ #define CIM_INFO_SIGNAL_DRIVOUT ((UINT16)0x2010) /*发送CIM信号机驱动超时信息*/
#define CIM_INFO_UNIT_ALARM ((UINT16)0x2011) /*发送CIM执行单元报警*/ #define CIM_INFO_UNIT_ALARM ((UINT16)0x2011) /*发送CIM执行单元报警*/
#define CIM_INFO_FLYPROTECT_ALARM ((UINT16)0x2012) /*发送CIM飞车宕机报警*/ #define CIM_INFO_FLYPROTECT_ALARM ((UINT16)0x2012) /*发送CIM飞车宕机报警*/
#define CIM_INFO_IO_COLL_DIFF_ALARM ((UINT16)0x2013) /*发送CIM IO双系采集不一致报警*/
#define CIM_INFO_OHL_POWER_ALARM ((UINT16)0x2014) /*发送CIM 接触网供电状态报警*/
#define CI_AND_OTHER_TRANSMIT_GOOD ((UINT8)0x55) /*CI与其他系统双网通信正常*/ #define CI_AND_OTHER_TRANSMIT_GOOD ((UINT8)0x55) /*CI与其他系统双网通信正常*/
#define CI_AND_OTHER_TRANSMIT_LINK ((UINT8)0x5A) /*CI与其他系统单网通信正常*/ #define CI_AND_OTHER_TRANSMIT_LINK ((UINT8)0x5A) /*CI与其他系统单网通信正常*/
File diff suppressed because it is too large Load Diff
@@ -10,11 +10,11 @@
#define MSG_TYPE_WLB_CONFIRM_FIRST ((UINT8)113u) /*全线列车紧急制动首次确认*/ #define MSG_TYPE_WLB_CONFIRM_FIRST ((UINT8)113u) /*全线列车紧急制动首次确认*/
#define MSG_TYPE_WLB_SET_SECOND ((UINT8)114u) /*全线列车紧急制动设置二次*/ #define MSG_TYPE_WLB_SET_SECOND ((UINT8)114u) /*全线列车紧急制动设置二次*/
#define MSG_TYPE_WLB_CONFIRM_SECOND ((UINT8)115u) /*全线列车紧急制动二次确认*/ #define MSG_TYPE_WLB_CONFIRM_SECOND ((UINT8)115u) /*全线列车紧急制动二次确认*/
#define MSG_TYPE_DA_REPORT ((UINT8)116u) /*列车状态异常防护区汇报信息*/ #define MSG_TYPE_DA_REPORT ((UINT8)116u) /*脱轨防护区汇报信息*/
#define MSG_TYPE_DA_CANCLE_FIRST ((UINT8)117u) /*列车状态异常防护区取消首次消息*/ #define MSG_TYPE_DA_CANCLE_FIRST ((UINT8)117u) /*脱轨防护区取消首次消息*/
#define MSG_TYPE_DA_CONFIRM_FIRST ((UINT8)118u) /*列车状态异常防护区首次确认消息*/ #define MSG_TYPE_DA_CONFIRM_FIRST ((UINT8)118u) /*脱轨防护区首次确认消息*/
#define MSG_TYPE_DA_CANCLE_SECOND ((UINT8)119u) /*列车状态异常防护区取消再次消息*/ #define MSG_TYPE_DA_CANCLE_SECOND ((UINT8)119u) /*脱轨防护区取消再次消息*/
#define MSG_TYPE_DA_CONFIRM_SECOND ((UINT8)120u) /*列车状态异常防护区再次确认消息*/ #define MSG_TYPE_DA_CONFIRM_SECOND ((UINT8)120u) /*脱轨防护区再次确认消息*/
#define MSG_TYPE_REPORT ((UINT8)121u) /*汇报远程筛选列车信息*/ #define MSG_TYPE_REPORT ((UINT8)121u) /*汇报远程筛选列车信息*/
#define MSG_TYPE_REQUEST_FIRST ((UINT8)122u) /*首次消息*/ #define MSG_TYPE_REQUEST_FIRST ((UINT8)122u) /*首次消息*/
#define MSG_TYPE_CONFIRM_FIRST ((UINT8)123u) /*首次确认*/ #define MSG_TYPE_CONFIRM_FIRST ((UINT8)123u) /*首次确认*/
@@ -27,53 +27,28 @@
#define MSG_TYPE_EA_CONFIRM_SECOND ((UINT8)130u) /*区间疏散再次确认消息*/ #define MSG_TYPE_EA_CONFIRM_SECOND ((UINT8)130u) /*区间疏散再次确认消息*/
#define MSG_TYPE_TRIAN_INFO_REPORT ((UINT8)131u) /*TIOC给ATS发送列车信息*/ #define MSG_TYPE_TRIAN_INFO_REPORT ((UINT8)131u) /*TIOC给ATS发送列车信息*/
#define MSG_TYPE_TRAIN_FLY_INFO ((UINT8)132u) /*TIOC给ATS发送飞车宕机报警信息*/ #define MSG_TYPE_TRAIN_FLY_INFO ((UINT8)132u) /*TIOC给ATS发送飞车宕机报警信息*/
#define MSG_TYPE_ALLSECFLOCK_CMD_FIRST ((UINT8)137u) /*全线区段封锁设置一次*/
#define MSG_TYPE_ALLSECFLOCK_CONFIRM_FIRST ((UINT8)138u) /*全线区段封锁首次确认*/
#define MSG_TYPE_ALLSECFLOCK_CMD_SECOND ((UINT8)139u) /*全线区段封锁设置二次*/
#define MSG_TYPE_ALLSECFLOCK_CONFIRM_SECOND ((UINT8)140u) /*全线区段封锁二次确认*/
#define MSG_TYPE_CESBFLOCK_CMD_FIRST ((UINT8)141u) /*全线CESB封锁取消一次*/
#define MSG_TYPE_CESBFLOCK_CONFIRM_FIRST ((UINT8)142u) /*全线CESB封锁取消首次确认*/
#define MSG_TYPE_CESBFLOCK_CMD_SECOND ((UINT8)143u) /*全线CESB封锁取消二次*/
#define MSG_TYPE_CESBFLOCK_CONFIRM_SECOND ((UINT8)144u) /*全线CESB封锁取消二次确认*/
#define MSG_JIEFENGJIESUO_CMD_FIRST ((UINT8)145u) /*全线解封解锁一次*/
#define MSG_JIEFENGJIESUO_BACK_FIRST ((UINT8)146u) /*全线解封解锁首次确认*/
#define MSG_JIEFENGJIESUO_CMD_SECOND ((UINT8)147u) /*全线解封解锁二次*/
#define MSG_JIEFENGJIESUO_BACK_SECOND ((UINT8)148u) /*全线解封解锁二次确认*/
#define MSG_FORCE_SWITCT_CMD_FIRST ((UINT8)149u) /*道岔强转一次*/
#define MSG_FORCE_SWITCT_BACK_FIRST ((UINT8)150u) /*道岔强转首次确认*/
#define MSG_FORCE_SWITCT_CMD_SECOND ((UINT8)151u) /*道岔强转二次*/
#define MSG_FORCE_SWITCT_BACK_SECOND ((UINT8)152u) /*道岔强转二次确认*/
#define MSG_PHY_PRE_RESET_CMD_FIRST ((UINT8)153u) /*计轴预复位一次*/
#define MSG_PHY_PRE_RESET_BACK_FIRST ((UINT8)154u) /*计轴预复位首次确认*/
#define MSG_PHY_PRE_RESET_CMD_SECOND ((UINT8)155u) /*计轴预复位二次*/
#define MSG_PHY_PRE_RESET_BACK_SECOND ((UINT8)156u) /*计轴预复位二次确认*/
#define CONFIRM_UNKNOWN ((UINT8)0u) /*未知*/ #define CONFIRM_UNKNOWN ((UINT8)0u) /*未知*/
#define CONFIRM_FIRST_SUCCESS ((UINT8)1u) /*首次确认成功*/ #define CONFIRM_FIRST_SUCCESS ((UINT8)1u) /*首次确认成功*/
#define CONFIRM_FIRST_REPEAT ((UINT8)2u) /*重复确认*/ #define CONFIRM_FIRST_REPEAT ((UINT8)2u) /*重复确认*/
#define CONFIRM_FIRST_TRAINID ((UINT8)3u) /*刷新列车*/ #define CONFIRM_FIRST_TRAINID ((UINT8)3u) /*刷新列车*/
#define CONFIRM_FIRST_LGCID ((UINT8)4u) /*确认逻辑区段*/ #define CONFIRM_FIRST_LGCID ((UINT8)4u) /*确认逻辑区段*/
#define CONFIRM_FIRST_OTHER_DEV_OP ((UINT8)14U) /*其它操作站正在操作*/
#define CONFIRM_SECOND_SUCCESS ((UINT8)1u) /*二次确认成功*/ #define CONFIRM_SECOND_SUCCESS ((UINT8)1u) /*二次确认成功*/
#define CONFIRM_SECOND_CRC ((UINT8)2u) /*信息帧校验失败*/ #define CONFIRM_SECOND_CRC ((UINT8)2u) /*CRC校验失败*/
#define CONFIRM_SECOND_TRAINID ((UINT8)3u) /*刷新列车*/ #define CONFIRM_SECOND_TRAINID ((UINT8)3u) /*刷新列车*/
#define CONFIRM_SECOND_LGCID ((UINT8)4u) /*确认逻辑区段*/ #define CONFIRM_SECOND_LGCID ((UINT8)4u) /*确认逻辑区段*/
#define CONFIRM_SECOND_FIRST ((UINT8)5u) /*首次筛选确认失败*/ #define CONFIRM_SECOND_FIRST ((UINT8)5u) /*首次筛选确认失败*/
#define CONFIRM_SECOND_DIFF ((UINT8)6u) /*二次消息与一次不一致*/ #define CONFIRM_SECOND_DIFF ((UINT8)6u) /*二次消息与一次不一致*/
#define CONFIRM_FIRST_NOT_EA ((UINT8)7u) /*列车未进入疏散*/ #define CONFIRM_FIRST_NOT_EA ((UINT8)7u) /*列车未进入疏散*/
#define CONFIRM_TRAIN_IN_EA ((UINT8)9u) /*列车正在疏散*/ #define CONFIRM_FIRST_EING ((UINT8)9u) /*列车正在疏散*/
#define CONFIRM_EA_SECOND_CRC ((UINT8)3u) /*信息帧校验失败*/ #define CONFIRM_EA_SECOND_CRC ((UINT8)3u) /*CRC失败*/
#define CONFIRM_EA_SECOND_FIRST ((UINT8)4u) /*未执行一次命令*/ #define CONFIRM_EA_SECOND_FIRST ((UINT8)4u) /*未执行一次命令*/
#define CONFIRM_SECOND_NOT_EA ((UINT8)5u) /*列车未进入疏散*/ #define CONFIRM_SECOND_NOT_EA ((UINT8)5u) /*列车未进入疏散*/
#define CONFIRM_SECOND_EA_TRAINID ((UINT8)8u) /*与首次列车编号不一致*/ #define CONFIRM_SECOND_EA_TRAINID ((UINT8)8u) /*与首次列车编号不一致*/
#define CONFIRM_SECOND_TIOC ((UINT8)10u) /*相邻控区通信中断*/ #define CONFIRM_SECOND_TIOC ((UINT8)10u) /*相邻控区通信中断*/
#define CONFIRM_EALINE_DIFFERENT ((UINT8)11U) /*取消防护区域上下行属性与已建立防护区域上下行属性不一致*/ #define CONFIRM_EALINE_DIFFERENT ((UINT8)11U) /*取消防护区域上下行属性与已建立防护区域上下行属性不一致*/
#define CONFIRM_EA_SND_LINE_DIFF ((UINT8)11U) /*取消区间疏散一二次命令的线路上下行属性不一致*/
#define MSG_TYPE_WLB_SET ((UINT8)0xaau) /*全线列车紧急制动设置*/ #define MSG_TYPE_WLB_SET ((UINT8)0xaau) /*全线列车紧急制动设置*/
#define MSG_TYPE_WLB_CANCEL ((UINT8)0x55u) /*全线列车紧急制动取消*/ #define MSG_TYPE_WLB_CANCEL ((UINT8)0x55u) /*全线列车紧急制动取消*/
@@ -81,9 +56,6 @@
#define WLB_TYPE_RC ((UINT8)2u) /*全线列车紧急制动*/ #define WLB_TYPE_RC ((UINT8)2u) /*全线列车紧急制动*/
#define WLB_TYPE_PHYSEC ((UINT8)3u) /*物理区段紧急制动*/ #define WLB_TYPE_PHYSEC ((UINT8)3u) /*物理区段紧急制动*/
#define SEC_ALLFLOCK_CMD_SET ((UINT8)0xaau) /* 全线封锁设置命令 */
#define SEC_ALLFLOCK_CMD_CANCLE ((UINT8)0x55u) /* 全线封锁取消命令 */
#define CONFIRM_WLB_FST_UNKNOWN ((UINT8)0u) /*首次回复未知*/ #define CONFIRM_WLB_FST_UNKNOWN ((UINT8)0u) /*首次回复未知*/
#define CONFIRM_WLB_FST_SUCCESS ((UINT8)1u) /*首次回复成功*/ #define CONFIRM_WLB_FST_SUCCESS ((UINT8)1u) /*首次回复成功*/
#define CONFIRM_WLB_FST_REPEAT ((UINT8)2u) /*首次回复重复设置*/ #define CONFIRM_WLB_FST_REPEAT ((UINT8)2u) /*首次回复重复设置*/
@@ -91,45 +63,27 @@
#define CONFIRM_WLB_SND_UNKNOWN ((UINT8)0u) /*二次回复未知*/ #define CONFIRM_WLB_SND_UNKNOWN ((UINT8)0u) /*二次回复未知*/
#define CONFIRM_WLB_SND_SUCCESS ((UINT8)1u) /*二次回复成功*/ #define CONFIRM_WLB_SND_SUCCESS ((UINT8)1u) /*二次回复成功*/
#define CONFIRM_WLB_SND_CRC ((UINT8)3u) /*信息帧校验失败*/ #define CONFIRM_WLB_SND_CRC ((UINT8)3u) /*二次回复CRC失败*/
#define CONFIRM_WLB_SND_FIRST ((UINT8)4u) /*二次回复未执行首次确认*/ #define CONFIRM_WLB_SND_FIRST ((UINT8)4u) /*二次回复未执行首次确认*/
#define CONFIRM_WLB_SND_INFO_DIFF ((UINT8)8u) /*一二次命令信息不一致*/
#define CONFIRM_DA_FST_UNKNOWN ((UINT8)0u) /*取消列车状态异常防护区首次回复未知*/ #define CONFIRM_DA_FST_UNKNOWN ((UINT8)0u) /*取消脱轨防护区首次回复未知*/
#define CONFIRM_DA_FST_SUCCESS ((UINT8)1u) /*取消列车状态异常防护区首次回复成功*/ #define CONFIRM_DA_FST_SUCCESS ((UINT8)1u) /*取消脱轨防护区首次回复成功*/
#define CONFIRM_DA_FST_UNSET ((UINT8)7u) /*取消列车状态异常防护区首次回复未设置*/ #define CONFIRM_DA_FST_UNSET ((UINT8)7u) /*取消脱轨防护区首次回复未设置*/
#define CONFIRM_DA_FST_DERAIL ((UINT8)9u) /*取消列车状态异常防护区首次回复当前列车处于脱轨状态*/ #define CONFIRM_DA_FST_DERAIL ((UINT8)9u) /*取消脱轨防护区首次回复当前列车处于脱轨状态*/
#define CONFIRM_DA_SND_UNKNOWN ((UINT8)0u) /*取消列车状态异常防护区再次回复未知*/ #define CONFIRM_DA_SND_UNKNOWN ((UINT8)0u) /*取消脱轨防护区再次回复未知*/
#define CONFIRM_DA_SND_SUCCESS ((UINT8)1u) /*取消列车状态异常防护区再次回复成功*/ #define CONFIRM_DA_SND_SUCCESS ((UINT8)1u) /*取消脱轨防护区再次回复成功*/
#define CONFIRM_DA_SND_CRC ((UINT8)3u) /*取消列车状态异常防护区再次回复信息帧校验失败*/ #define CONFIRM_DA_SND_CRC ((UINT8)3u) /*取消脱轨防护区再次回复CRC失败*/
#define CONFIRM_DA_SND_FIRST ((UINT8)4u) /*取消列车状态异常防护区再次回复未执行首次*/ #define CONFIRM_DA_SND_FIRST ((UINT8)4u) /*取消脱轨防护区再次回复未执行首次*/
#define CONFIRM_DA_SND_DIFF ((UINT8)8u) /*取消列车状态异常防护区再次回复列车ID与一次不一致*/ #define CONFIRM_DA_SND_DIFF ((UINT8)8u) /*取消脱轨防护区再次回复列车ID与一次不一致*/
#define CONFIRM_DA_SND_DERAIL ((UINT8)9u) /*取消列车状态异常防护区再次回复列车当前处于脱轨状态*/ #define CONFIRM_DA_SND_DERAIL ((UINT8)9u) /*取消脱轨防护区再次回复列车当前处于脱轨状态*/
#define CONFIRM_DA_SND_LINE_DIFF ((UINT8)11U) /*取消列车状态异常防护区域一二次命令线路属性不一致*/
#define CONFIRM_ALLFLOCK_FST_SUCCESS ((UINT8)1u) /*全线封锁首次回复成功*/
#define CONFIRM_ALLFLOCK_FST_REPEAT ((UINT8)2u) /*全线封锁首次回复重复设置*/
#define CONFIRM_ALLFLOCK_FST_UNSET ((UINT8)5u) /*全线封锁首次回复未设置*/
#define CONFIRM_ALLFLOCK_SND_UNKNOWN ((UINT8)0u) /*全线封锁二次回复未知*/
#define CONFIRM_ALLFLOCK_SND_SUCCESS ((UINT8)1u) /*全线封锁二次回复成功*/
#define CONFIRM_ALLFLOCK_SND_CHECKFAIL ((UINT8)3u) /*全线封锁信息帧校验失败*/
#define CONFIRM_ALLFLOCK_SND_FIRST ((UINT8)4u) /*全线封锁二次回复未执行首次确认*/
#define CONFIRM_CANCLE_CESB_FST_SUCCESS ((UINT8)1u) /*取消CESB首次回复成功*/
#define CONFIRM_CANCLE_CESB_FST_UNSET ((UINT8)5u) /*取消CESB首次回复未设置*/
#define CONFIRM_CANCLE_CESB_SND_UNKNOWN ((UINT8)0u) /*取消CESB二次回复未知*/
#define CONFIRM_CANCLE_CESB_SND_SUCCESS ((UINT8)1u) /*取消CESB二次回复成功*/
#define CONFIRM_CANCLE_CESB_SND_CHECKFAIL ((UINT8)3u) /*取消CESB信息帧校验失败*/
#define CONFIRM_CANCLE_CESB_SND_FIRST ((UINT8)4u) /*取消CESB二次回复未执行首次确认*/
#define CONFIRM_CANCLE_CESB_RELAY_ACTIVE ((UINT8)9u) /*取消CESB回复CESB激活*/
#define DA_AREA_UP ((UINT8)0x55u) /* 上行区域 */ #define DA_AREA_UP ((UINT8)0x55u) /* 上行区域 */
#define DA_AREA_DOWN ((UINT8)0xaau) /* 下行区域 */ #define DA_AREA_DOWN ((UINT8)0xaau) /* 下行区域 */
#define DA_AREA_ALL ((UINT8)0xffu) /* 上行和下行区域 */ #define DA_AREA_ALL ((UINT8)0xffu) /* 上行和下行区域 */
#define ATS_DA_CMD_TYPE_CANCEL ((UINT8)0x55u) /* ATS取消脱轨防护区命令类型 */
#define CONFIRM_TIMEOUT_CC ((UINT16)400u) /*首次消息等待二次消息超时时间*/ #define CONFIRM_TIMEOUT_CC ((UINT16)400u) /*首次消息等待二次消息超时时间*/
#define GATE_WAY_PRTCL_VER ((UINT32)101u) /*协议版本号*/ #define GATE_WAY_PRTCL_VER ((UINT32)101u) /*协议版本号*/
@@ -142,25 +96,6 @@
#define EA_AREA_UP ((UINT8)0x55u) /* 上行区域 */ #define EA_AREA_UP ((UINT8)0x55u) /* 上行区域 */
#define EA_AREA_DOWN ((UINT8)0xaau) /* 下行区域 */ #define EA_AREA_DOWN ((UINT8)0xaau) /* 下行区域 */
#define EA_AREA_ALL ((UINT8)0xffu) /* 上行和下行区域 */ #define EA_AREA_ALL ((UINT8)0xffu) /* 上行和下行区域 */
#define CONFIRM_FST_SUCCESS ((UINT8)1u) /*首次回复成功*/
#define CONFIRM_SND_UNKNOWN ((UINT8)0u) /*二次回复未知,一次二次不同*/
#define CONFIRM_SND_SUCCESS ((UINT8)1u) /*二次回复成功*/
#define CONFIRM_SND_CHECKFAIL ((UINT8)3u) /*CRC校验失败*/
#define CONFIRM_SND_NOTFIRST ((UINT8)4u) /*二次回复未执行首次确认*/
#define CONFIRM_ID_ILL ((UINT8)5u) /*ID非法*/
#define CONFIRM_PHY_PRERESET_ID_DIF ((UINT8)5u)/*一次二次命令ID不一致*/
#define CONFIRM_FORCE_SW_ID_DIF ((UINT8)7u) /*一次二次命令ID不一致*/
#define CONFIRM_FORCE_SW_CMD_DIF ((UINT8)8u) /*一次二次强转位置不一致*/
#define CONFIRM_CMD_INVALID ((UINT8)15u) /*命令无效*/
#define SWITCH_FORCE_DINGWEI ((UINT8)0x55u) /* 强转定位 */
#define SWITCH_FORCE_FANWEI ((UINT8)0xaau) /* 强转反位 */
/* 远程筛选列车信息结构体 */ /* 远程筛选列车信息结构体 */
typedef struct typedef struct
{ {
@@ -175,24 +110,23 @@ typedef struct
UINT32 dwCycle; /*首次消息接收周期号*/ UINT32 dwCycle; /*首次消息接收周期号*/
UINT8 chAtsId; /*ATS编号*/ UINT8 chAtsId; /*ATS编号*/
UINT8 chStation; /*车站编号*/ UINT8 chStation; /*车站编号*/
UINT16 wIndex; /*操作站编号*/ UINT8 chIndex; /*操作站编号*/
UINT8 chTiocId; /*TIOC编号*/ UINT8 chTiocId; /*TIOC编号*/
UINT32 dwTime; /*时间*/ UINT32 dwTime; /*时间*/
UINT8 chTrainNum; /*列车数量*/ UINT8 chTrainNum; /*列车数量*/
AtsScreenTrainInfoStru strTrainInfo[TRAIN_SUM_MAX]; /*列车信息*/ AtsScreenTrainInfoStru strTrainInfo[TRAIN_SUM_MAX]; /*列车信息*/
}AtsScreenMsgFstStru; }AtsScreenMsgFstStru;
/* 确认信息结构体 */ /* ATS远程筛选确认结构体 */
typedef struct typedef struct
{ {
UINT8 chFlag; /*消息有效性*/ UINT8 chFlag; /*消息有效性*/
UINT8 chTiocId; /*TIOC编号*/ UINT8 chTiocId; /*TIOC编号*/
UINT8 chStation; /*车站编号*/ UINT8 chStation; /*车站编号*/
UINT16 wIndex; /*操作站编号*/ UINT8 chIndex; /*操作站编号*/
UINT32 dwTime; /*时间*/ UINT32 dwTime; /*时间*/
UINT8 chOpStatus; /*操作结果*/ UINT8 chOpStatus; /*操作结果*/
UINT32 dwCrc32; /*CRC*/ UINT32 dwCrc32; /*CRC*/
UINT8 chDaType; /*防护分区类型*/
}AtsMsgCfmStru; }AtsMsgCfmStru;
/* ATS远程筛选二次消息结构体 */ /* ATS远程筛选二次消息结构体 */
@@ -202,7 +136,7 @@ typedef struct
UINT32 dwCycle; /*首次消息接收周期号*/ UINT32 dwCycle; /*首次消息接收周期号*/
UINT8 chAtsId; /*ATS编号*/ UINT8 chAtsId; /*ATS编号*/
UINT8 chStation; /*车站编号*/ UINT8 chStation; /*车站编号*/
UINT16 wIndex; /*操作站编号*/ UINT8 chIndex; /*操作站编号*/
UINT8 chTiocId; /*TIOC编号*/ UINT8 chTiocId; /*TIOC编号*/
UINT32 dwTime; /*时间*/ UINT32 dwTime; /*时间*/
UINT8 chTrainNum; /*列车数量*/ UINT8 chTrainNum; /*列车数量*/
@@ -217,7 +151,7 @@ typedef struct
UINT32 dwCycle; /*消息接收周期号*/ UINT32 dwCycle; /*消息接收周期号*/
UINT8 chAtsId; /*ATS编号*/ UINT8 chAtsId; /*ATS编号*/
UINT8 chStation; /*车站编号*/ UINT8 chStation; /*车站编号*/
UINT16 wIndex; /*操作站编号*/ UINT8 chIndex; /*操作站编号*/
UINT8 chTiocId; /*TIOC编号*/ UINT8 chTiocId; /*TIOC编号*/
UINT32 dwEaTrainId; /*列车互联互通编号*/ UINT32 dwEaTrainId; /*列车互联互通编号*/
UINT32 dwTime; /*时间*/ UINT32 dwTime; /*时间*/
@@ -233,7 +167,7 @@ typedef struct
UINT32 dwCycle; /*消息接收周期号*/ UINT32 dwCycle; /*消息接收周期号*/
UINT8 chAtsId; /*ATS编号*/ UINT8 chAtsId; /*ATS编号*/
UINT8 chStation; /*车站编号*/ UINT8 chStation; /*车站编号*/
UINT16 wIndex; /*操作站编号*/ UINT8 chIndex; /*操作站编号*/
UINT8 chTiocId; /*TIOC编号*/ UINT8 chTiocId; /*TIOC编号*/
UINT32 dwTime; /*时间*/ UINT32 dwTime; /*时间*/
UINT8 chType; /*设置/取消*/ UINT8 chType; /*设置/取消*/
@@ -243,91 +177,22 @@ typedef struct
UINT16 wBrakeIndex; /*制动ID*/ UINT16 wBrakeIndex; /*制动ID*/
}AtsWlbMsgStru; }AtsWlbMsgStru;
/* ATS取消列车状态异常防护区信息结构体 */ /* ATS取消脱轨防护区信息结构体 */
typedef struct typedef struct
{ {
UINT8 chFlag; /*消息接收状态*/ UINT8 chFlag; /*消息接收状态*/
UINT32 dwCycle; /*消息接收周期号*/ UINT32 dwCycle; /*消息接收周期号*/
UINT8 chAtsId; /*ATS编号*/ UINT8 chAtsId; /*ATS编号*/
UINT8 chStation; /*车站编号*/ UINT8 chStation; /*车站编号*/
UINT16 wIndex; /*操作站编号*/ UINT8 chIndex; /*操作站编号*/
UINT8 chTiocId; /*TIOC编号*/ UINT8 chTiocId; /*TIOC编号*/
UINT32 dwDaTrainId; /*列车互联互通编号*/ UINT32 dwDaTrainId; /*列车互联互通编号*/
UINT32 dwTime; /*时间*/ UINT32 dwTime; /*时间*/
UINT8 chType; /*类型*/ UINT8 chType; /*建立/取消*/
UINT8 chLine; /*线路*/ UINT8 chLine; /*线路*/
UINT32 dwCrc32; /*CRC值*/ UINT32 dwCrc32; /*CRC值*/
}AtsDaMsgStru; }AtsDaMsgStru;
/* ATS设置/取消全线区段封锁信息结构体 */
typedef struct
{
UINT8 chFlag; /*消息接收状态*/
UINT32 dwCycle; /*消息接收周期号*/
UINT8 chAtsId; /*ATS编号*/
UINT8 chStation; /*车站编号*/
UINT16 wIndex; /*操作站编号*/
UINT8 chTiocId; /*TIOC编号*/
UINT32 dwTime; /*时间*/
UINT8 chType; /*设置/取消*/
UINT32 dwCrc32; /*CRC值*/
}AtsAllSecFlockMsgStru;
/* ATS取消全线CESB封锁信息结构体 */
typedef struct
{
UINT8 chFlag; /*消息接收状态*/
UINT32 dwCycle; /*消息接收周期号*/
UINT8 chAtsId; /*ATS编号*/
UINT8 chStation; /*车站编号*/
UINT16 wIndex; /*操作站编号*/
UINT8 chTiocId; /*TIOC编号*/
UINT32 dwTime; /*时间*/
UINT32 dwCrc32; /*CRC值*/
}AtsCESBCancleMsgStru;
/* ATS解封解锁信息结构体 */
typedef struct
{
UINT8 chFlag; /*消息接收状态*/
UINT32 dwCycle; /*消息接收周期号*/
UINT8 chAtsId; /*ATS编号*/
UINT8 chStation; /*车站编号*/
UINT16 wIndex; /*操作站编号*/
UINT8 chTiocId; /*TIOC编号*/
UINT32 dwTime; /*时间*/
UINT32 dwCrc32; /*CRC值*/
}AtsJieFengJieSuoMsgStru;
/* ATS道岔强转信息结构体 */
typedef struct
{
UINT8 chFlag; /*消息接收状态*/
UINT32 dwCycle; /*消息接收周期号*/
UINT8 chAtsId; /*ATS编号*/
UINT8 chStation; /*车站编号*/
UINT16 wIndex; /*操作站编号*/
UINT8 chTiocId; /*TIOC编号*/
UINT8 chCmdType; /*命令类型*/
UINT32 dwSiwtchId; /*设备互联互通ID*/
UINT32 dwTime; /*时间*/
UINT32 dwCrc32; /*CRC值*/
}AtsSwitchForceMsgStru;
/* ATS计轴预复位信息结构体 */
typedef struct
{
UINT8 chFlag; /*消息接收状态*/
UINT32 dwCycle; /*消息接收周期号*/
UINT8 chAtsId; /*ATS编号*/
UINT8 chStation; /*车站编号*/
UINT16 wIndex; /*操作站编号*/
UINT8 chTiocId; /*TIOC编号*/
UINT32 dwPhySecHlhtId; /*设备ID*/
UINT32 dwTime; /*时间*/
UINT32 dwCrc32; /*CRC值*/
}AtsPhyPreResetMsgStru;
/*******************************全局变量声明*******************************/ /*******************************全局变量声明*******************************/
extern AtsScreenMsgFstStru g_strAtsMsgFst; extern AtsScreenMsgFstStru g_strAtsMsgFst;
extern AtsMsgCfmStru g_strAtsCfmFst; extern AtsMsgCfmStru g_strAtsCfmFst;
@@ -349,41 +214,6 @@ extern AtsMsgCfmStru g_strAtsDaCfmFst;
extern AtsDaMsgStru g_strAtsDaMsgSnd; extern AtsDaMsgStru g_strAtsDaMsgSnd;
extern AtsMsgCfmStru g_strAtsDaCfmSnd; extern AtsMsgCfmStru g_strAtsDaCfmSnd;
extern AtsMsgCfmStru g_strSndAtsCfmFst; /*第二个ATS的远程筛选首次确认*/
extern AtsMsgCfmStru g_strSndAtsEaCfmFst; /*第二个ATS的取消区间疏散首次确认*/
extern AtsMsgCfmStru g_strSndAtsWlbCfmFst; /*第二个ATS的设置/取消全线列车紧急制动首次确认*/
extern AtsMsgCfmStru g_strSndAtsDaCfmFst; /*第二个ATS的取消脱轨防护区首次确认*/
extern AtsMsgCfmStru g_strSndAtsAllFlockCfmFst; /*第二个ATS的设置/取消全线区段封锁首次确认*/
extern AtsAllSecFlockMsgStru g_strAtsAllFlockMsgFst; /*设置/取消全线区段封锁首次消息*/
extern AtsMsgCfmStru g_strAtsAllFlockCfmFst; /*设置/取消全线区段封锁首次确认*/
extern AtsAllSecFlockMsgStru g_strAtsAllFlockMsgSnd; /*取消全线区段封锁再次消息*/
extern AtsMsgCfmStru g_strAtsAllFlockCfmSnd; /*取消全线区段封锁再次确认*/
extern AtsCESBCancleMsgStru g_strAtsCesbMsgFst; /*取消全线CESB封锁首次消息*/
extern AtsMsgCfmStru g_strAtsCesbCfmFst ; /*取消全线CESB封锁首次确认*/
extern AtsCESBCancleMsgStru g_strAtsCesbMsgSnd ; /*取消全线CESB封锁再次消息*/
extern AtsMsgCfmStru g_strAtsCesbCfmSnd ; /*取消全线CESB封锁再次确认*/
extern AtsMsgCfmStru g_strSndAtsCesbCfmFst; /*第二个ATS的取消CESB封锁首次确认*/
extern AtsJieFengJieSuoMsgStru g_JieFengJieSuoMsgFst ; /*全站解封解锁首次消息*/
extern AtsMsgCfmStru g_strAtsJieFengJieSuoCfmFst ; /*全站解封解锁首次确认*/
extern AtsJieFengJieSuoMsgStru g_JieFengJieSuoMsgSnd; /*全站解封解锁再次消息*/
extern AtsMsgCfmStru g_strAtsJieFengJieSuoCfmSnd; /*全站解封解锁再次确认*/
extern AtsMsgCfmStru g_SndAtsJieFengJieSuoCfmFst; /*第二个ATS的解封解锁首次确认*/
extern AtsSwitchForceMsgStru g_SwitchForceMsgFst; /*道岔强转首次消息*/
extern AtsMsgCfmStru g_SwitchForceCfmFst; /*道岔强转首次确认*/
extern AtsSwitchForceMsgStru g_SwitchForceMsgSnd; /*道岔强转再次消息*/
extern AtsMsgCfmStru g_SwitchForceCfmSnd; /*道岔强转再次确认*/
extern AtsMsgCfmStru g_SndAtsSwitchForceCfmFst; /*第二个ATS的道岔强转首次确认*/
extern AtsPhyPreResetMsgStru g_PhyPreResetMsgFst; /*预复位首次消息*/
extern AtsMsgCfmStru g_PhyPreResetCfmFst; /*预复位首次确认*/
extern AtsPhyPreResetMsgStru g_PhyPreResetMsgSnd; /*预复位再次消息*/
extern AtsMsgCfmStru g_PhyPreResetCfmSnd; /*预复位再次确认*/
extern AtsMsgCfmStru g_SndAtsPhyPreResetCfmFst; /*第二个ATS的预复位首次确认*/
/** /**
* @brief ATS首次消息 * @brief ATS首次消息
@@ -528,42 +358,42 @@ void ClearAtsWlbMsgFirst(void);
void ClearAtsWlbMsgSecond(void); void ClearAtsWlbMsgSecond(void);
/** /**
* @brief ATS取消列车状态异常防护区首次消息 * @brief ATS取消脱轨防护区首次消息
* @param * @param
* @return ATS取消列车状态异常防护区首次消息 * @return ATS取消脱轨防护区首次消息
*/ */
AtsDaMsgStru* GetAtsDaMsgFst(void); AtsDaMsgStru * GetAtsDaMsgFst(void);
/** /**
* @brief ATS取消列车状态异常防护区二次消息 * @brief ATS取消脱轨防护区二次消息
* @param * @param
* @return ATS取消列车状态异常防护区二次消息 * @return ATS取消脱轨防护区二次消息
*/ */
AtsDaMsgStru* GetAtsDaMsgSnd(void); AtsDaMsgStru * GetAtsDaMsgSnd(void);
/** /**
* @brief ATS取消列车状态异常防护区首次确认 * @brief ATS取消脱轨防护区首次确认
* @param * @param
* @return ATS取消列车状态异常防护区首次确认 * @return ATS取消脱轨防护区首次确认
*/ */
AtsMsgCfmStru* GetAtsDaCfmFst(void); AtsMsgCfmStru * GetAtsDaCfmFst(void);
/** /**
* @brief ATS取消列车状态异常防护区二次确认 * @brief ATS取消脱轨防护区二次确认
* @param * @param
* @return ATS取消列车状态异常防护区二次确认 * @return ATS取消脱轨防护区二次确认
*/ */
AtsMsgCfmStru* GetAtsDaCfmSnd(void); AtsMsgCfmStru * GetAtsDaCfmSnd(void);
/** /**
* @brief 1ATS取消列车状态异常防护区信息 * @brief 1ATS取消脱轨防护区信息
* @param void * @param void
* @return void * @return void
*/ */
void ClearAtsDaMsgFirst(void); void ClearAtsDaMsgFirst(void);
/** /**
* @brief 2ATS取消列车状态异常防护区信息 * @brief 2ATS取消脱轨防护区信息
* @param void * @param void
* @return void * @return void
*/ */
@@ -578,297 +408,4 @@ void ClearAtsDaMsgSecond(void);
*/ */
UINT8 WlbUrgentIdCheck(const UINT8 cDeviceType, const UINT16 wDeviceId); UINT8 WlbUrgentIdCheck(const UINT8 cDeviceType, const UINT16 wDeviceId);
/**
* @brief ATS的远程筛选一次确认信息
* @param
* @return
* @note Created By LQ 2025.05.29
*/
void ClearSndAtsScreenFstCfmMsg(void);
/**
* @brief ATS的取消区间疏散一次确认信息
* @param
* @return
* @note Created By LQ 2025.05.29
*/
void ClearSndAtsEaFstCfmMsg(void);
/**
* @brief ATS的全线紧急制动一次确认信息
* @param
* @return
* @note Created By LQ 2025.05.29
*/
void ClearSndAtsWlbFstCfmMsg(void);
/**
* @brief ATS的取消脱轨防护一次确认信息
* @param
* @return
* @note Created By LQ 2025.05.29
*/
void ClearSndAtsDaFstCfmMsg(void);
/**
* @brief 1ATS设置/线
* @param void
* @return void
* @note Created By fan 2025.12.13
*/
void ClearAtsAllFlockMsgFirst(void);
/**
* @brief 2ATS取消全线区段封锁信息
* @param void
* @return void
* @note Created By fan 2025.12.13
*/
void ClearAtsAllFlockMsgSecond(void);
/**
* @brief ATS设置/线
* @param
* @return ATS设置/
* Created By fan 2025.12.13
*/
AtsAllSecFlockMsgStru * GetAtsFlockMsgFst(void);
/**
* @brief ATS取消全线区段封锁二次消息
* @param
* @return ATS取消全线列车紧急制动二次消息
* Created By fan 2025.12.13
*/
AtsAllSecFlockMsgStru * GetAtsFlockMsgSnd(void);
/**
* @brief ATS设置/线
* @param
* @return ATS设置/线
* Created By fan 2025.12.13
*/
AtsMsgCfmStru * GetAtsFlockCfmFst(void);
/**
* @brief ATS取消全线区段封锁二次确认
* @param
* @return ATS取消全线区段封锁二次确认
* Created By fan 2025.12.13
*/
AtsMsgCfmStru * GetAtsFlockCfmSnd(void);
/**
* @brief ATS的全线区段封锁一次信息
* @param
* @return
* @note Created By fan 2025.12.15
*/
void ClearSndAtsAllFlockFstCfmMsg(void);
/**
* @brief 1ATS取消全线CESB封锁信息
* @param void
* @return void
* Created By fan 2026.02.04
*/
void ClearAtsCesbMsgFirst(void);
/**
* @brief 2ATS取消全线CESB封锁信息
* @param void
* @return void
* Created By fan 2026.02.04
*/
void ClearAtsCesbMsgSecond(void);
/**
* @brief ATS取消全线CESB封锁首次消息
* @param
* @return ATS设置/
* Created By fan 2026.02.04
*/
AtsCESBCancleMsgStru * GetAtsCesbMsgFst(void);
/**
* @brief ATS取消全线CESB封锁二次消息
* @param
* @return ATS取消全线CESB封锁二次消息
* Created By fan 2026.02.04
*/
AtsCESBCancleMsgStru * GetAtsCesbMsgSnd(void);
/**
* @brief ATS取消全线CESB封锁首次确认
* @param
* @return ATS设置/线CESB封锁首次确认
* Created By fan 2026.02.04
*/
AtsMsgCfmStru * GetAtsCesbCfmFst(void);
/**
* @brief ATS取消全线CESB封锁二次确认
* @param
* @return ATS取消全线CESB封锁二次确认
* Created By fan 2026.02.04
*/
AtsMsgCfmStru * GetAtsCesbCfmSnd(void);
/**
* @brief ATS的全线CESB封锁一次信息
* @param
* @return
* Created By fan 2026.02.04
*/
void ClearSndAtsCesbFstCfmMsg(void);
/**
* @brief ATS全站解封解锁首次消息
* @param
* @return ATS全站解封解锁首次消息
* Created By mpt 2026.2.8
*/
AtsJieFengJieSuoMsgStru* GetAtsJieFengJieSuoMsgFst(void);
/**
* @brief ATS全站解封解锁二次消息
* @param
* @return ATS全站解封解锁二次消息
* Created By mpt 2026.2.8
*/
AtsJieFengJieSuoMsgStru* GetAtsJieFengJieSuoMsgSnd(void);
/**
* @brief ATS全站解封解锁首次确认
* @param
* @return ATS全站解封解锁首次确认
* Created By mpt 2026.2.8
*/
AtsMsgCfmStru* GetAtsJieFengJieSuoCfmFst(void);
/**
* @brief ATS全站解封解锁二次确认
* @param
* @return ATS全站解封解锁二次确认
* Created By mpt 2026.2.8
*/
AtsMsgCfmStru* GetAtsJieFengJieSuoCfmSnd(void);
/**
* @brief ATS全站解封解锁首次消息
* @param void
* @return void
* Created By mpt 2026.2.8
*/
void ClearAtsJieFengJieSuoMsgFirst(void);
/**
* @brief ATS全站解封解锁二次消息
* @param void
* @return void
* *Created By mpt 2026.2.8
*/
void ClearAtsJieFengJieSuoMsgSecond(void);
/**
* @brief ATS道岔强转首次消息
* @param
* @return ATS道岔强转首次消息
* Created By mpt 2026.2.8
*/
AtsSwitchForceMsgStru* GetAtsSwitchForceMsgFst(void);
/**
* @brief ATS道岔强转二次消息
* @param
* @return ATS道岔强转二次消息
* Created By mpt 2026.2.8
*/
AtsSwitchForceMsgStru* GetAtsSwitchForceMsgSnd(void);
/**
* @brief ATS道岔强转首次确认
* @param
* @return ATS道岔强转首次确认
* Created By mpt 2026.2.8
*/
AtsMsgCfmStru* GetAtsSwitchForceCfmFst(void);
/**
* @brief ATS道岔强转二次确认
* @param
* @return ATS道岔强转二次确认
* Created By mpt 2026.2.8
*/
AtsMsgCfmStru* GetAtsSwitchForceCfmSnd(void);
/**
* @brief ATS道岔强转首次消息
* @param void
* @return void
* Created By mpt 2026.2.8
*/
void ClearAtsSwitchForceMsgFirst(void);
/**
* @brief ATS道岔强转二次消息
* @param void
* @return void
* *Created By mpt 2026.2.8
*/
void ClearAtsSwitchForceMsgSecond(void);
/**
* @brief ATS计轴预复位首次消息
* @param
* @return ATS计轴预复位首次消息
* Created By mpt 2026.2.8
*/
AtsPhyPreResetMsgStru* GetAtsPhyPreResetMsgFst(void);
/**
* @brief ATS计轴预复位二次消息
* @param
* @return ATS计轴预复位二次消息
* Created By mpt 2026.2.8
*/
AtsPhyPreResetMsgStru* GetAtsPhyPreResetMsgSnd(void);
/**
* @brief ATS计轴预复位首次确认
* @param
* @return ATS道岔强转首次确认
* Created By mpt 2026.2.8
*/
AtsMsgCfmStru* GetAtsPhyPreResetCfmFst(void);
/**
* @brief ATS计轴预复位二次确认
* @param
* @return ATS道岔强转二次确认
* Created By mpt 2026.2.8
*/
AtsMsgCfmStru* GetAtsPhyPreResetCfmSnd(void);
/**
* @brief ATS计轴预复位首次消息
* @param void
* @return void
* Created By mpt 2026.2.8
*/
void ClearAtsPhyPreResetMsgFirst(void);
/**
* @brief ATS计轴预复位二次消息
* @param void
* @return void
* *Created By mpt 2026.2.8
*/
void ClearAtsPhyPreResetMsgSecond(void);
/**
* @brief ATS全站解封解锁一次信息
* @param
* @return
* *Created By mpt 2026.2.8
*/
void ClearSndAtsJieFengJieSuoCfmMsg(void);
/**
* @brief ATS道岔强转一次信息
* @param
* @return
* *Created By mpt 2026.2.8
*/
void ClearSndAtsSwitchForceCfmMsg(void);
/**
* @brief ATS计轴复位一次信息
* @param
* @return
* *Created By mpt 2026.2.8
*/
void ClearSndAtsPhyPreResetCfmMsg(void);
#endif #endif

Some files were not shown because too many files have changed in this diff Show More