diff --git a/TSCP/Makefile b/TSCP/Makefile index 7580ed5..8b2b1cf 100644 --- a/TSCP/Makefile +++ b/TSCP/Makefile @@ -109,12 +109,14 @@ INCLUDES += -I ./src/APP \ -I ./src/MSCP/SFM \ -I ./src/MSCP/PFM \ -I ./src/MSCP_CFG \ - + -I ./src/MSCP/Area\ + -I ./src/MSCP/OFM\ #LIBS += -L/path/to/my/lib/$(PLATFORM)/usr/lib -lmylib #LIBS += -L../mylib/$(OUTPUT_DIR) -lmylib #Compiler flags for build profiles -CCFLAGS_release += -O0 +CCFLAGS_release += -O2 +#CCFLAGS_release += -g -O2 CCFLAGS_debug += -g -O0 -fno-builtin CCFLAGS_coverage += -g -O0 -ftest-coverage -fprofile-arcs -nopipe -Wc,-auxbase-strip,$@ LDFLAGS_coverage += -ftest-coverage -fprofile-arcs diff --git a/TSCP/src/APP/APP_API.c b/TSCP/src/APP/APP_API.c index bf7b5a3..0fedd7b 100644 --- a/TSCP/src/APP/APP_API.c +++ b/TSCP/src/APP/APP_API.c @@ -226,7 +226,7 @@ void APP_API_Data_Init() UINT8 funcRetVal = 0U; funcRetVal = dquGetFSVersion(DataPath, szFSFILEVersionFS); -#if (kPLATFORM==kVXWORKS) +#if 0//(kPLATFORM==kVXWORKS) /*文件配置*/ STRU_APP_CFG_T AppCfgInterface = { .FS_NAME = "RCI.FS", /**< FS文件名称 */ @@ -238,16 +238,16 @@ void APP_API_Data_Init() .M_InnetSafe_Enable = 0x55, /**< 内网安全通信功能开关 */ .M_InnetRaw_Enable = 0xAA, /**< 内网透传通信功能开关 */ .M_OutnetSafe_Enable = 0x55,/**< 外网安全通信功能开关 */ - .M_OutnetRaw_Enable = 0xAA, /**< 外网透传通信功能开关 */ - .M_CpuUsageGet_Enable = 0x55,/**< 获取cpu使用率功能开关 */ + .M_OutnetRaw_Enable = 0x55, /**< 外网透传通信功能开关 */ + .M_CpuUsageGet_Enable = 0xAA,/**< 获取cpu使用率功能开关 */ .M_RemoteUpdate_Enable = 0x55,/**< 远程部署内网安全通信功能开关 */ .ID_Maintenance = DEVICE_TYPE_AIM, .Start_Path = "/emmc1", /**< 程序启动路径 */ .reboot_replycount = 10, /**< 重启确认报文回复次数 */ - .M_AutoReboot_Count = 3, /**< 自动重启次数 */ + .M_AutoReboot_Count = 0, /**< 自动重启次数 */ .M_AutoClear_Days = 1, /**< 连续运行多久清空宕机次数的天数 */ .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_Maintain = "192.168.146.101", /**< 维护通信IP */ /*适用透传通道-选配*/ @@ -257,7 +257,7 @@ void APP_API_Data_Init() .CPU[0].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */ .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_Maintain = "192.168.18.102", /**< 维护通信IP */ /*适用透传通道-选配*/ @@ -267,7 +267,7 @@ void APP_API_Data_Init() .CPU[1].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */ .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_Maintain = "192.168.146.103", /**< 维护通信IP */ /*适用透传通道-选配*/ @@ -277,7 +277,7 @@ void APP_API_Data_Init() .CPU[2].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */ .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_Maintain = "192.168.18.104", /**< 维护通信IP */ /*适用透传通道-选配*/ @@ -338,6 +338,200 @@ void APP_API_Data_Init() .INNET_COM_CFG[0].Port_Safe_P = 55003, /**< 紫网安全端口 */ }; 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_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, /**< 紫网安全端口 */ + }; + /*调用参数设置初始化接口*/ + MSCP_Set_APP_ConfigData(&AppCfgInterface); #endif /*组FS版本号*/ @@ -349,10 +543,10 @@ void APP_API_Data_Init() /*组软件版本号*/ ii = 0U; - appVersBuffer[ii++] = VER_INTE_PROJECT; - appVersBuffer[ii++] = VER_INTE_PRODUCT >> 2U; - appVersBuffer[ii++] = (VER_INTE_PRODUCT << 6U) + (VER_INTE_EXE & (UINT8)0x3F); - appVersBuffer[ii++] = VER_INTE_TIME; + appVersBuffer[ii++] = VER_SOFT_PRODUCT; + appVersBuffer[ii++] = VER_SOFT_MODUAL_APP >> 2U; + appVersBuffer[ii++] = (VER_SOFT_MODUAL_APP << 6U) + (VER_SOFT_MIANVERSION & (UINT8)0x3F); + appVersBuffer[ii++] = VER_SOFT_SUBVERSION; /*设置平台调用获取外网信息函数*/ MSCP_SetSrcId(SetOutNetPara); /*设置内网参数*/ @@ -366,16 +560,16 @@ void APP_API_Data_Init() * - ENUM_CM_TRUE 成功 * - ENUM_CM_FALSE 失败(平台立即宕机) * @details -* 当本系热备状态为:ENUM_2x2_SHUTDOWN,时 +* 当本系热备状态为:ENUM_4x2_SHUTDOWN,时 * 本函数不执行; -* 当本系热备状态为:ENUM_2x2_OFFLINE,ENUM_2x2_PRE_MASTER,ENUM_2x2_SLAVE,时 +* 当本系热备状态为:ENUM_4x2_OFFLINE,ENUM_4x2_PRE_MASTER,ENUM_4x2_SLAVE,时 * 本函数被周期执行,但 ENUM_MSG_OUTNET_SAFE 报文不会真实输出; -* 当本系热备状态为:ENUM_2x2_MASTER,时 +* 当本系热备状态为:ENUM_4x2_MASTER,时 * 本函数被周期执行,并且所有输出信息被真实输出。 */ 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 endCycTick = 0u; @@ -393,8 +587,9 @@ ENUM_CM_RETURN APP_API_MainFunc(void) endCycTick = MSCP_GetTick(); debug_infor_printf("app proc end at %llu us,used %d us\n", endCycTick, (CM_INT32)((endCycTick - startCycTick) / 1000)); - gFollowDataLen = GetCiAppData(gFollowData); - MSCP_SetFollowData(gFollowData, gFollowDataLen); + //gFollowDataLen = GetCiAppData(gFollowData); + memset(gFollowData,0x02,1024*500); + MSCP_SetFollowData(gFollowData, 1024*500); return retVal; } @@ -405,11 +600,11 @@ ENUM_CM_RETURN APP_API_MainFunc(void) * - ENUM_CM_TRUE 成功 * - ENUM_CM_FALSE 失败(平台立即宕机) * @details -* 当本系热备状态为:ENUM_2x2_SHUTDOWN,时 +* 当本系热备状态为:ENUM_4x2_SHUTDOWN,时 * 本函数不执行; -* 当本系热备状态为:ENUM_2x2_OFFLINE,ENUM_2x2_PRE_MASTER,ENUM_2x2_SLAVE,时 +* 当本系热备状态为:ENUM_4x2_OFFLINE,ENUM_4x2_PRE_MASTER,ENUM_4x2_SLAVE,时 * 本函数被周期执行,但 ENUM_MSG_OUTNET_SAFE 报文不会真实输出; -* 当本系热备状态为:ENUM_2x2_MASTER,时 +* 当本系热备状态为:ENUM_4x2_MASTER,时 * 本函数被周期执行,并且所有输出信息被真实输出。 */ ENUM_CM_RETURN APP_API_MainFunc2(void) @@ -425,11 +620,11 @@ ENUM_CM_RETURN APP_API_MainFunc2(void) * - ENUM_CM_TRUE 成功 * - ENUM_CM_FALSE 失败(平台立即宕机) * @details -* 当本系热备状态为:ENUM_2x2_SHUTDOWN,时 +* 当本系热备状态为:ENUM_4x2_SHUTDOWN,时 * 本函数不执行; -* 当本系热备状态为:ENUM_2x2_OFFLINE,ENUM_2x2_PRE_MASTER,ENUM_2x2_SLAVE,时 +* 当本系热备状态为:ENUM_4x2_OFFLINE,ENUM_4x2_PRE_MASTER,ENUM_4x2_SLAVE,时 * 本函数被周期执行,但 ENUM_MSG_OUTNET_SAFE 报文不会真实输出; -* 当本系热备状态为:ENUM_2x2_MASTER,时 +* 当本系热备状态为:ENUM_4x2_MASTER,时 * 本函数被周期执行,并且所有输出信息被真实输出。 */ ENUM_CM_RETURN APP_API_MainFunc3(void) @@ -452,11 +647,11 @@ ENUM_CM_RETURN APP_API_MainFunc4(void) * - ENUM_CM_TRUE 成功 * - ENUM_CM_FALSE 失败(平台立即宕机) * @details -* 当本系热备状态为:ENUM_2x2_SHUTDOWN,时 +* 当本系热备状态为:ENUM_4x2_SHUTDOWN,时 * 本函数不执行; -* 当本系热备状态为:ENUM_2x2_OFFLINE,ENUM_2x2_PRE_MASTER,ENUM_2x2_SLAVE,时 +* 当本系热备状态为:ENUM_4x2_OFFLINE,ENUM_4x2_PRE_MASTER,ENUM_4x2_SLAVE,时 * 本函数被周期执行,但 ENUM_MSG_OUTNET_SAFE 报文不会真实输出; -* 当本系热备状态为:ENUM_2x2_MASTER,时 +* 当本系热备状态为:ENUM_4x2_MASTER,时 * 本函数被周期执行,并且所有输出信息被真实输出。 */ ENUM_CM_RETURN APP_API_MainFunc5(void) @@ -494,7 +689,7 @@ ENUM_CM_RETURN APP_API_InputFunc(void) * - ENUM_CM_TRUE 成功 * - ENUM_CM_FALSE 失败(平台立即宕机) * @details -* 当本系热备状态为:ENUM_2x2_OFFLINE,ENUM_2x2_SLAVE,且收到了邻系正确的跟随数据时 +* 当本系热备状态为:ENUM_4x2_OFFLINE,ENUM_4x2_SLAVE,且收到了邻系正确的跟随数据时 * 本函数将在APP_API_MainFunc()之前执行; * 否则,本函数不执行。 * 应用跟随数据的最大长度不得超过1024*1000字节 @@ -505,7 +700,8 @@ ENUM_CM_RETURN APP_API_FollowUp(IN const CM_UINT8 Data[MSCP_FOLLOW_BUFF_SIZE], I ENUM_CM_RETURN retVal = ENUM_CM_FALSE; UINT8 setRtn = 0u; - setRtn = SetCiAppData(Data, Len); + //setRtn = SetCiAppData(Data, Len); + setRtn = 1; if (1u == setRtn) { retVal = ENUM_CM_TRUE; @@ -559,10 +755,6 @@ ENUM_CM_RECCUSEB Is_Send_ExtendBoard(IN const CM_UINT16 dstDevTypeId) { retVal = ENUM_CM_SEB; } - else if (CI_SYSTEM_TYPE_ITE == devType) - { - retVal = ENUM_CM_CCSEB; - } else { retVal = ENUM_CM_CC; @@ -624,8 +816,8 @@ void SetOutNetPara(UINT8* pRxBuf, UINT32 dwLen, ENUM_OUTNET_CHN_T chOutNetType, tempLen = *pCurLen; if ((TRANSMIT_OBJECT_SUM_MAX * TRANSMIT_OBJECT_DEVICE_SUM_MAX) > (tempLen + objLen)) { - CommonMemCpy((void*)&pOutBuf[tempLen], objLen * sizeof(UINT16), \ - (const void*)gTransmitObjTypeId, objLen * sizeof(UINT16)); + CommonMemCpy(&pOutBuf[tempLen], objLen * sizeof(UINT16), \ + gTransmitObjTypeId, objLen * sizeof(UINT16)); *pCurLen = tempLen + objLen; debug_infor_printf("outnet in type len :%d", chOutNetType, objLen); debug_out_array(0xAA, gTransmitObjTypeId, objLen * sizeof(UINT16)); diff --git a/TSCP/src/APP/APP_API.h b/TSCP/src/APP/APP_API.h index eb33843..f0f0908 100644 --- a/TSCP/src/APP/APP_API.h +++ b/TSCP/src/APP/APP_API.h @@ -40,11 +40,11 @@ extern "C" { * - ENUM_CM_TRUE 成功 * - ENUM_CM_FALSE 失败(平台立即宕机) * @note - * 当本系热备状态为:ENUM_2x2_SHUTDOWN,时 + * 当本系热备状态为:ENUM_4x2_SHUTDOWN,时 * 本函数不执行; - * 当本系热备状态为:ENUM_2x2_OFFLINE,ENUM_2x2_PRE_MASTER,ENUM_2x2_SLAVE,时 + * 当本系热备状态为:ENUM_4x2_OFFLINE,ENUM_4x2_PRE_MASTER,ENUM_4x2_SLAVE,时 * 本函数被周期执行,但 ENUM_MSG_OUTNET_SAFE 报文不会真实输出; - * 当本系热备状态为:ENUM_2x2_MASTER,时 + * 当本系热备状态为:ENUM_4x2_MASTER,时 * 本函数被周期执行,并且所有输出信息被真实输出。 */ ENUM_CM_RETURN APP_API_MainFunc(void); diff --git a/TSCP/src/APP/PU13_integration_config/ci_integrate_config.h b/TSCP/src/APP/PU13_integration_config/ci_integrate_config.h index a76b1d0..935cad1 100644 --- a/TSCP/src/APP/PU13_integration_config/ci_integrate_config.h +++ b/TSCP/src/APP/PU13_integration_config/ci_integrate_config.h @@ -30,6 +30,6 @@ #define VER_INTE_PROJECT 220 /*Ŀ*/ #define VER_INTE_PRODUCT 40 /*Ʒ*/ #define VER_INTE_EXE 1 /*ִб*/ -#define VER_INTE_TIME 101 /*ɴ*/ +#define VER_INTE_TIME 77 /*ɴ*/ #endif/*endif of #define _CI_INTEGRATE_CONFIG_H*/ \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/2oo2/2oo2DataTransferManage.c b/TSCP/src/APP/ciapp/2oo2/2oo2DataTransferManage.c index 48fc137..1d4e480 100644 --- a/TSCP/src/APP/ciapp/2oo2/2oo2DataTransferManage.c +++ b/TSCP/src/APP/ciapp/2oo2/2oo2DataTransferManage.c @@ -688,9 +688,6 @@ UINT32 GetCiAppData(UINT8 *pCiAppDataPointer) UINT32 curIndex = 0u; /*¼ƶ±*/ UINT32 curResult = 0u; /*ṹЧid*/ UINT8 ii= 0u; - UINT32 crcIndex = 0u; /*ڼCRC±*/ - UINT32 crcLength = 0u; /*ڼCRCij*/ - UINT32 crcResult = 0u; /*ڴCRCֵ*/ if (NULL != pCiAppDataPointer) { @@ -731,20 +728,10 @@ UINT32 GetCiAppData(UINT8 *pCiAppDataPointer) (void)memcpy(pCiAppDataPointer + curIndex, &g_AllSnowModel, 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)); 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)); curIndex = curIndex + (UINT32)sizeof(UINT32); @@ -785,12 +772,6 @@ UINT32 GetCiAppData(UINT8 *pCiAppDataPointer) (void)memcpy(pCiAppDataPointer + curIndex, &SendCiCmdDataStruCurSum, 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Ŀ*/ (void)memcpy(pCiAppDataPointer + curIndex, &VobcToCiSum, sizeof(UINT8)); curIndex = curIndex + (UINT32)sizeof(UINT8); @@ -836,12 +817,6 @@ UINT32 GetCiAppData(UINT8 *pCiAppDataPointer) curResult = CopyValidGetDataStru(pCiAppDataPointer + curIndex, (void *)SwitchDataStru, SWITCH_SUM_MAX, (UINT16)sizeof(SwitchDataStruct)); 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)); curIndex = curIndex + curResult; @@ -882,12 +857,6 @@ UINT32 GetCiAppData(UINT8 *pCiAppDataPointer) (void)memcpy(pCiAppDataPointer + curIndex, NonRouteDataStruArr, 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)); curIndex = curIndex + (UINT32)((INDICATOR_SUM_MAX)*sizeof(IndicatorDataStruct)); @@ -939,12 +908,6 @@ UINT32 GetCiAppData(UINT8 *pCiAppDataPointer) (void)memcpy(pCiAppDataPointer + curIndex, AllAutoReturnDataStru, (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)); curIndex = curIndex + (UINT32)((GARAGE_DOOR_SUM_MAX)*sizeof(GaragedoorDataStruct)); @@ -985,12 +948,6 @@ UINT32 GetCiAppData(UINT8 *pCiAppDataPointer) (void)memcpy(pCiAppDataPointer + curIndex, ocHLHTHeadCtxs, (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ϵͳͨͷ*/ (void)memcpy(pCiAppDataPointer + curIndex, tmcHLHTHeadCtxs, (TMC_SUM_MAX) * sizeof(HLHTHeadContextStru)); curIndex = curIndex + (UINT32)((TMC_SUM_MAX) * sizeof(HLHTHeadContextStru)); @@ -1032,12 +989,6 @@ UINT32 GetCiAppData(UINT8 *pCiAppDataPointer) (void)memcpy(pCiAppDataPointer + curIndex, m_Switches, 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*/ curIndex += CopyValidGetDataStru(pCiAppDataPointer + curIndex, (void*)m_OcConvertedPtDataArr, (OC_SUM_MAX), (UINT16)sizeof(OcCollBoardDataStruct)); @@ -1075,12 +1026,6 @@ UINT32 GetCiAppData(UINT8 *pCiAppDataPointer) (void)memcpy(pCiAppDataPointer + curIndex, &CiSendBackDataTempStruSum, 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> 8u) & 0xFFu); - OcToCiDataQueue = NULL; /*ʼOcCiݶ*/ - CiToOcDataQueue = CiToProtocolDataQueue; /*ʼCiOcݶ*/ + OcToCiDataQueue = NULL; /*��ʼ��Oc��Ci�����ݶ���*/ + CiToOcDataQueue = CiToProtocolDataQueue; /*��ʼ��Ci��Oc�����ݶ���*/ - if (1U != QueueInitial(&logPrintfQue, 500000U)) /*ʼ־*/ + if (1U != QueueInitial(&logPrintfQue, 500000U)) /*��ʼ����־�������*/ { debug_infor_printf((const)"canQueueRecv init error \n"); } #if 0 - /*LEUZCCIȵͨ״̬*/ + /*������LEU��ZC��CI�ȵ�ͨ��״̬����*/ if (TransmitRelaDataCurSum < TRANSMIT_OBJECT_SUM_MAX) { for (ii = 0u; ii < TRANSMIT_OBJECT_SUM_MAX; ii++) @@ -203,10 +203,10 @@ UINT8 Initial2oo2Interface(void) } /* -* ȡAxisCIӿڶ -* ˵ void -* ֵ NULL: ȡʧ -* !NULL: AxisCIӿڶ +* ���������� ��ȡAxis��CI�ӿڶ��� +* ����˵���� void +* ����ֵ �� NULL: ��ȡ����ʧ�� +* !NULL: Axis��CI�ӿڶ��� */ QueueStruct* Get2oo2AxisToCiDataQueue(void) { @@ -214,10 +214,10 @@ QueueStruct* Get2oo2AxisToCiDataQueue(void) } /* -* ȡƽ̨ͨЭ鵽CIӿڶ -* ˵ void -* ֵ NULL: ȡʧ -* !NULL: ƽ̨ͨЭ鵽CIӿڶ +* ���������� ��ȡƽ̨ͨ��Э�鵽CI�ӿڶ��� +* ����˵���� void +* ����ֵ �� NULL: ��ȡ����ʧ�� +* !NULL: ƽ̨ͨ��Э�鵽CI�ӿڶ��� */ QueueStruct* Get2oo2ProtocolToCiDataQueue(void) { @@ -226,10 +226,10 @@ QueueStruct* Get2oo2ProtocolToCiDataQueue(void) } /* -* ȡƽ̨CIͨЭӿڶ -* ˵ void -* ֵ NULL: ȡʧ -* !NULL: ƽ̨CIͨЭӿڶ +* ���������� ��ȡƽ̨CI��ͨ��Э��ӿڶ��� +* ����˵���� void +* ����ֵ �� NULL: ��ȡ����ʧ�� +* !NULL: ƽ̨CI��ͨ��Э��ӿڶ��� */ QueueStruct* Get2oo2CiToProtocolDataQueue(void) { @@ -238,10 +238,10 @@ QueueStruct* Get2oo2CiToProtocolDataQueue(void) } /* -* ȡƽ̨FsfbCIӿڶ -* ˵ void -* ֵ NULL: ȡʧ -* !NULL: ƽ̨CIFsfbӿڶ +* ���������� ��ȡƽ̨Fsfb��CI�ӿڶ��� +* ����˵���� void +* ����ֵ �� NULL: ��ȡ����ʧ�� +* !NULL: ƽ̨CI��Fsfb�ӿڶ��� */ QueueStruct* Get2oo2FsfbToCiDataQueue(void) { @@ -250,10 +250,10 @@ QueueStruct* Get2oo2FsfbToCiDataQueue(void) } /* -* ȡƽ̨CIFsfbPӿڶ -* ˵ void -* ֵ NULL: ȡʧ -* !NULL: ƽ̨CIFsfbӿڶ +* ���������� ��ȡƽ̨CI��FsfbP�ӿڶ��� +* ����˵���� void +* ����ֵ �� NULL: ��ȡ����ʧ�� +* !NULL: ƽ̨CI��Fsfb�ӿڶ��� */ QueueStruct* Get2oo2CiToFsfbDataQueue(void) { @@ -264,10 +264,10 @@ QueueStruct* Get2oo2CiToFsfbDataQueue(void) /* -* ȡƽ̨ATSCIӿڶ -* ˵ void -* ֵ NULL: ȡʧ -* !NULL: ƽ̨ATSCIӿڶ +* ���������� ��ȡƽ̨ATS��CI�ӿڶ��� +* ����˵���� void +* ����ֵ �� NULL: ��ȡ����ʧ�� +* !NULL: ƽ̨ATS��CI�ӿڶ��� */ QueueStruct* Get2oo2AtsToCiDataQueue(void) { @@ -277,10 +277,10 @@ QueueStruct* Get2oo2AtsToCiDataQueue(void) /* -* ȡƽ̨CIֵؽӿڶ -* ˵ void -* ֵ NULL: ȡʧ -* !NULL: ƽ̨CIֵؽӿڶ +* ���������� ��ȡƽ̨CI���ֵؽӿڶ��� +* ����˵���� void +* ����ֵ �� NULL: ��ȡ����ʧ�� +* !NULL: ƽ̨CI���ֵؽӿڶ��� */ QueueStruct* Get2oo2CiToXianDiDataQueue(void) { @@ -288,10 +288,10 @@ QueueStruct* Get2oo2CiToXianDiDataQueue(void) } /* -* ȡƽֵ̨صCIӿڶ -* ˵ void -* ֵ NULL: ȡʧ -* !NULL: ƽֵ̨صCIӿڶ +* ���������� ��ȡƽ̨�ֵص�CI�ӿڶ��� +* ����˵���� void +* ����ֵ �� NULL: ��ȡ����ʧ�� +* !NULL: ƽ̨�ֵص�CI�ӿڶ��� */ QueueStruct* Get2oo2XianDiToCiDataQueue(void) { @@ -301,10 +301,10 @@ QueueStruct* Get2oo2XianDiToCiDataQueue(void) /* -* ȡƽ̨CIATSӿڶ -* ˵ void -* ֵ NULL: ȡʧ -* !NULL: ƽ̨CIATSӿڶ +* ���������� ��ȡƽ̨CI��ATS�ӿڶ��� +* ����˵���� void +* ����ֵ �� NULL: ��ȡ����ʧ�� +* !NULL: ƽ̨CI��ATS�ӿڶ��� */ QueueStruct* Get2oo2CiToAtsDataQueue(void) { @@ -313,10 +313,10 @@ QueueStruct* Get2oo2CiToAtsDataQueue(void) /* -* ȡZCCIӿڶ -* ˵ void -* ֵ NULL: ȡʧ -* !NULL: ZCCIӿڶ +* ���������� ��ȡZC��CI�ӿڶ��� +* ����˵���� void +* ����ֵ �� NULL: ��ȡ����ʧ�� +* !NULL: ZC��CI�ӿڶ��� */ QueueStruct* Get2oo2ZcToCiDataQueue(void) { @@ -325,10 +325,10 @@ QueueStruct* Get2oo2ZcToCiDataQueue(void) /* -* ȡCIZCӿڶ -* ˵ void -* ֵ NULL: ȡʧ -* !NULL: CIZCӿڶ +* ���������� ��ȡCI��ZC�ӿڶ��� +* ����˵���� void +* ����ֵ �� NULL: ��ȡ����ʧ�� +* !NULL: CI��ZC�ӿڶ��� */ QueueStruct* Get2oo2CiToZcDataQueue(void) { @@ -338,10 +338,10 @@ QueueStruct* Get2oo2CiToZcDataQueue(void) /* -* ȡƽ̨CICIսӿڶ -* ˵ void -* ֵ NULL: ȡʧ -* !NULL: ƽ̨CICIӿڶ +* ���������� ��ȡƽ̨CI������CI���սӿڶ��� +* ����˵���� void +* ����ֵ �� NULL: ��ȡ����ʧ�� +* !NULL: ƽ̨CI����CI�ӿڶ��� */ QueueStruct* Get2oo2CiRecvCiDataQueue(void) { @@ -350,10 +350,10 @@ QueueStruct* Get2oo2CiRecvCiDataQueue(void) /* -* ȡCI͵CIӿڶ -* ˵ void -* ֵ NULL: ȡʧ -* !NULL: CICIӿڶ +* ���������� ��ȡCI���͵�����CI�ӿڶ��� +* ����˵���� void +* ����ֵ �� NULL: ��ȡ����ʧ�� +* !NULL: CI����CI�ӿڶ��� */ QueueStruct* Get2oo2CiSendCiDataQueue(void) { @@ -361,10 +361,10 @@ QueueStruct* Get2oo2CiSendCiDataQueue(void) } /* -* ȡƽ̨IOCIӿڶ -* ˵ void -* ֵ NULL: ȡʧ -* !NULL: ƽ̨IOCIӿڶ +* ���������� ��ȡƽ̨IO��CI�ӿڶ��� +* ����˵���� void +* ����ֵ �� NULL: ��ȡ����ʧ�� +* !NULL: ƽ̨IO��CI�ӿڶ��� */ QueueStruct* Get2oo2IoToCiDataQueue(void) { @@ -373,10 +373,10 @@ QueueStruct* Get2oo2IoToCiDataQueue(void) /* -* ȡƽ̨CIIOӿڶ -* ˵ void -* ֵ NULL: ȡʧ -* !NULL: ƽ̨CIIOӿڶ +* ���������� ��ȡƽ̨CI��IO�ӿڶ��� +* ����˵���� void +* ����ֵ �� NULL: ��ȡ����ʧ�� +* !NULL: ƽ̨CI��IO�ӿڶ��� */ QueueStruct* Get2oo2CiToIoDataQueue(void) { @@ -384,10 +384,10 @@ QueueStruct* Get2oo2CiToIoDataQueue(void) } /* -* ȡLeuCIӿڶ -* ˵ void -* ֵ NULL: ȡʧ -* !NULL: LeuCIӿڶ +* ���������� ��ȡLeu��CI�ӿڶ��� +* ����˵���� void +* ����ֵ �� NULL: ��ȡ����ʧ�� +* !NULL: Leu��CI�ӿڶ��� */ QueueStruct* Get2oo2LEUToCiDataQueue(void) { @@ -395,10 +395,10 @@ QueueStruct* Get2oo2LEUToCiDataQueue(void) } /* -* ȡCILeuӿڶ -* ˵ void -* ֵ NULL: ȡʧ -* !NULL: CILeuӿڶ +* ���������� ��ȡCI��Leu�ӿڶ��� +* ����˵���� void +* ����ֵ �� NULL: ��ȡ����ʧ�� +* !NULL: CI��Leu�ӿڶ��� */ QueueStruct* Get2oo2CiToLEUDataQueue(void) { @@ -406,10 +406,10 @@ QueueStruct* Get2oo2CiToLEUDataQueue(void) } /* -* ȡCIVobcӿڶ -* ˵ void -* ֵ NULL: ȡʧ -* !NULL: CIVobcӿڶ +* ���������� ��ȡCI��Vobc�ӿڶ��� +* ����˵���� void +* ����ֵ �� NULL: ��ȡ����ʧ�� +* !NULL: CI��Vobc�ӿڶ��� */ QueueStruct* Get2oo2VobcToCiDataQueue(void) { @@ -417,10 +417,10 @@ QueueStruct* Get2oo2VobcToCiDataQueue(void) } /* -* ȡCIVobcӿڶ -* ˵ void -* ֵ NULL: ȡʧ -* !NULL: CIVobcӿڶ +* ���������� ��ȡCI��Vobc�ӿڶ��� +* ����˵���� void +* ����ֵ �� NULL: ��ȡ����ʧ�� +* !NULL: CI��Vobc�ӿڶ��� */ QueueStruct* Get2oo2CiToVobcDataQueue(void) { @@ -429,10 +429,10 @@ QueueStruct* Get2oo2CiToVobcDataQueue(void) /* -* ȡCIAxisӿڶ -* ˵ void -* ֵ NULL: ȡʧ -* !NULL: CIAxisӿڶ +* ���������� ��ȡCI��Axis�ӿڶ��� +* ����˵���� void +* ����ֵ �� NULL: ��ȡ����ʧ�� +* !NULL: CI��Axis�ӿڶ��� */ QueueStruct* Get2oo2CiToAxisDataQueue(void) { @@ -440,10 +440,10 @@ QueueStruct* Get2oo2CiToAxisDataQueue(void) } /* -* ȡCIOcӿڶ -* ˵ void -* ֵ NULL: ȡʧ -* !NULL: CIOcӿڶ +* ���������� ��ȡCI��Oc�ӿڶ��� +* ����˵���� void +* ����ֵ �� NULL: ��ȡ����ʧ�� +* !NULL: CI��Oc�ӿڶ��� */ QueueStruct* Get2oo2CiToOcDataQueue(void) { @@ -452,10 +452,10 @@ QueueStruct* Get2oo2CiToOcDataQueue(void) /* -* ȡPSDCIӿڶ -* ˵ void -* ֵ NULL: ȡʧ -* !NULL: PSDCIӿڶ +* ���������� ��ȡPSD��CI�ӿڶ��� +* ����˵���� void +* ����ֵ �� NULL: ��ȡ����ʧ�� +* !NULL: PSD��CI�ӿڶ��� */ QueueStruct* Get2oo2PlatformToCiDataQueue(void) { @@ -463,10 +463,10 @@ QueueStruct* Get2oo2PlatformToCiDataQueue(void) } /* -* ȡCIPsdӿڶ -* ˵ void -* ֵ NULL: ȡʧ -* !NULL: CIPsdӿڶ +* ���������� ��ȡCI��Psd�ӿڶ��� +* ����˵���� void +* ����ֵ �� NULL: ��ȡ����ʧ�� +* !NULL: CI��Psd�ӿڶ��� */ QueueStruct* Get2oo2CiToPlatformDataQueue(void) { @@ -474,10 +474,10 @@ QueueStruct* Get2oo2CiToPlatformDataQueue(void) } /* -* ȡPscCIӿڶ -* ˵ void -* ֵ NULL: ȡʧ -* !NULL: PscCIӿڶ +* ���������� ��ȡPsc��CI�ӿڶ��� +* ����˵���� void +* ����ֵ �� NULL: ��ȡ����ʧ�� +* !NULL: Psc��CI�ӿڶ��� */ QueueStruct* Get2oo2PscToCiDataQueue(void) { @@ -485,10 +485,10 @@ QueueStruct* Get2oo2PscToCiDataQueue(void) } /* -* ȡCIPscӿڶ -* ˵ void -* ֵ NULL: ȡʧ -* !NULL: CIPscӿڶ +* ���������� ��ȡCI��Psc�ӿڶ��� +* ����˵���� void +* ����ֵ �� NULL: ��ȡ����ʧ�� +* !NULL: CI��Psc�ӿڶ��� */ QueueStruct* Get2oo2CiToPscDataQueue(void) { @@ -496,10 +496,10 @@ QueueStruct* Get2oo2CiToPscDataQueue(void) } /* -* ȡƽ̨ں -* ˵ void -* ֵ 0: ȡʧ -* >0: ƽ̨ں +* ���������� ��ȡƽ̨���ں� +* ����˵���� void +* ����ֵ �� 0: ��ȡ����ʧ�� +* >0: ƽ̨���ں� */ UINT32 Get2oo2CurCycleNum(void) { @@ -513,10 +513,10 @@ UINT32 Get2oo2CurCycleNum(void) /* -* ȡƽ̨ID -* ˵ void -* ֵ 0: ȡʧ -* >0: ƽ̨ID +* ���������� ��ȡƽ̨����ID +* ����˵���� void +* ����ֵ �� 0: ��ȡ����ʧ�� +* >0: ƽ̨����ID */ UINT8 Get2oo2ComputerId(void) { @@ -531,24 +531,24 @@ UINT8 Get2oo2ComputerId(void) /* -* ȡƽ̨ģʽ -* ˵ void -* ֵ 0: ȡʧ -* >0: ƽ̨ģʽ +* ���������� ��ȡƽ̨��������ģʽ +* ����˵���� void +* ����ֵ �� 0: ��ȡ����ʧ�� +* >0: ƽ̨��������ģʽ */ UINT8 Get2oo2ProcessMode(void) { #if (kPLATFORM==kVXWORKS) UINT8 rtn = 0u; UINT8 cutSysState = 0U; - ENUM_2x2_STATE_T state = ENUM_2x2_SHUTDOWN; + ENUM_4x2_STATE_T state = ENUM_4x2_SHUTDOWN; state = MSCP_GetLastLocal2x2State(); cutSysState = MSCP_2x2_GetSwitchFlag(); - if (ENUM_2x2_MASTER == state) + if (ENUM_4x2_MASTER == state) { rtn = 0xA0; } - else if ((ENUM_2x2_SLAVE == state)||(1==cutSysState)) + else if ((ENUM_4x2_SLAVE == state)||(1==cutSysState)) { rtn = 0x50; } @@ -566,10 +566,10 @@ UINT8 Get2oo2ProcessMode(void) } /* -* ȡƽ̨ģʽ -* ˵ void -* ֵ 0: ȡʧ -* >0: ƽ̨ģʽ +* ���������� ��ȡƽ̨������������ģʽ +* ����˵���� void +* ����ֵ �� 0: ��ȡ����ʧ�� +* >0: ƽ̨��������ģʽ */ UINT8 Get2oo2OhterProcessMode(void) { @@ -577,14 +577,14 @@ UINT8 Get2oo2OhterProcessMode(void) #if (kPLATFORM==kVXWORKS) UINT8 cutSysState = 0U; - ENUM_2x2_STATE_T state = ENUM_2x2_SHUTDOWN; + ENUM_4x2_STATE_T state = ENUM_4x2_SHUTDOWN; state = MSCP_GetLastPartner2x2State(); cutSysState = MSCP_2x2_GetSwitchFlag(); - if (ENUM_2x2_MASTER == state) + if (ENUM_4x2_MASTER == state) { rtn = 0x0A; } - else if ((ENUM_2x2_SLAVE == state) || (1 == cutSysState)) + else if ((ENUM_4x2_SLAVE == state) || (1 == cutSysState)) { rtn = 0x05; } @@ -600,9 +600,9 @@ UINT8 Get2oo2OhterProcessMode(void) #endif } /* -* ȡCI豸ͨŵĸ豸 -* ˵ const UINT8 systemType, ϵͳ -* ֵ ͨ豸Ŀ +* ���������� ��ȡCI�������豸ͨ�ŵĸ��豸���� +* ����˵���� const UINT8 systemType, ϵͳ���� +* ����ֵ �� ͨ���豸��Ŀ */ UINT8 Get2oo2CiAndOtherSysCommNum(const UINT8 systemType) { @@ -625,9 +625,9 @@ UINT8 Get2oo2CiAndOtherSysCommNum(const UINT8 systemType) /* -* ȡCIIOͨ״̬ -* ˵ void -* ֵ +* ���������� ��ȡCI��IOͨ��״̬ +* ����˵���� void +* ����ֵ �� */ UINT8 Get2oo2CiAndIoCommState(void) { @@ -635,9 +635,9 @@ UINT8 Get2oo2CiAndIoCommState(void) } /* -* ȡʼں -* ˵ void -* ֵ +* ���������� ��ȡ��ʼ���ں� +* ����˵���� void +* ����ֵ �� */ UINT32 Get2oo2StartCycleNum(void) { @@ -645,9 +645,9 @@ UINT32 Get2oo2StartCycleNum(void) } /* -* ȡƽ̨豸 -* ˵ void -* ֵ +* ���������� ��ȡƽ̨�豸���� +* ����˵���� void +* ����ֵ �� */ UINT8 Get2oo2SheBeiType(void) { @@ -662,7 +662,7 @@ UINT8 Get2oo2SheBeiType(void) #if (kPLATFORM==kVXWORKS) -/*ά־ӡ-ַ*/ +/*��ά����������־��ӡ-�ַ�������*/ void debug_infor_printf(char* debug_string, ...) { UINT32 wdataLength = 0U; @@ -674,11 +674,11 @@ void debug_infor_printf(char* debug_string, ...) wdataLength = (UINT32)strlen(msgBuf); msgBuf[wdataLength] = '\n'; - /*־䵽*/ + /*��־���䵽������*/ (void)QueueWrite((wdataLength+ (UINT32)1u), (UINT8*)msgBuf, &logPrintfQue); } -/*ά־ӡ-ֽ*/ +/*��ά����������־��ӡ-�ֽ���������*/ void debug_out_array(UINT8 mode, UINT8* debug_array, UINT16 len) { UINT16 i = 0U; @@ -686,7 +686,7 @@ void debug_out_array(UINT8 mode, UINT8* debug_array, UINT16 len) CM_CHAR msgBuf[UDPSEND_BUF_MAX * 3U] = { '\0' }; CM_CHAR byteTochar[6] = { '\0' }; UINT16 wdataLength = 0U; - /*һ8ֽתΪ2ַֽ鲻ֵܳ*/ + /*һ��8�����ֽ�ת��Ϊ2���ַ��������ֽ����鲻�ܳ����������ֵ*/ if ((NULL != debug_array) && (UDPSEND_BUF_MAX > len)) { if (0xAA == mode) @@ -694,8 +694,8 @@ void debug_out_array(UINT8 mode, UINT8* debug_array, UINT16 len) #if 0 for (i = 0U; i < len; i++) { - /*ֽ(16)תΪַ飬ٴ*/ - /*ֽڲλ'0'*/ + /*���ֽ�����(16����)ת��Ϊ�ַ����飬�ٴ������*/ + /*���ֽڲ�����λ����'0'*/ if (i == len - 1) { indexChar += sprintf(msgBuf + indexChar, "%02x", debug_array[i]); @@ -708,7 +708,7 @@ void debug_out_array(UINT8 mode, UINT8* debug_array, UINT16 len) wdataLength = (UINT16)strlen(msgBuf); #endif - /*####+2ֽڳȣʶ####Ȼ*/ + /*����####+2�ֽڳ��ȣ���������ʶ��####Ȼ�����*/ byteTochar[0] = '#'; byteTochar[1] = '#'; byteTochar[2] = '#'; @@ -719,13 +719,13 @@ void debug_out_array(UINT8 mode, UINT8* debug_array, UINT16 len) } else { - ; /**/ + ; /*������*/ } } else { - ; /**/ + ; /*������*/ } } @@ -737,29 +737,29 @@ void DarkInfoPack(UINT16 mode, UINT8* debug_array, UINT16 len) } else { - ; /**/ + ; /*������*/ } } #endif -/**/ +/*������������*/ UINT8 OutnetSafeRecv(UINT16* srcTypeId, UINT16* srcLogicId, UINT8* data, UINT32* dataLen, UINT32 dataMaxLen) { - UINT8 rtn = 0u; /*ֵ*/ + UINT8 rtn = 0u; /*����ֵ*/ - UINT8 lifeTime = 0u; /*ʱ*/ + UINT8 lifeTime = 0u; /*����ʱ��*/ rtn = MSCP_AppRecvMsg(ENUM_MSG_OUTNET_SAFE, srcTypeId, srcLogicId, &lifeTime, data, dataLen, dataMaxLen); return rtn; } -/*ȫ*/ +/*������ȫ����*/ UINT8 InnetSafeRecv(UINT16* srcTypeId, UINT16* srcLogicId, UINT8* data, UINT32* dataLen, UINT32 dataMaxLen) { - UINT8 rtn = 0u; /*ֵ*/ + UINT8 rtn = 0u; /*����ֵ*/ - UINT8 lifeTime = 0u; /*ʱ*/ + UINT8 lifeTime = 0u; /*����ʱ��*/ rtn = MSCP_AppRecvMsg(ENUM_MSG_INNET_MAINTENANCE, srcTypeId, srcLogicId, &lifeTime, data, dataLen, dataMaxLen); @@ -767,23 +767,23 @@ UINT8 InnetSafeRecv(UINT16* srcTypeId, UINT16* srcLogicId, UINT8* data, UINT32* } -/**/ +/*������������*/ UINT8 OutnetSafeSend(UINT16 dstTypeId, UINT16 dstLogicId, UINT8* data, UINT32 dataLen) { - UINT8 rtn = 0u; /*ֵ*/ + UINT8 rtn = 0u; /*����ֵ*/ - /*ʵ*/ + /*��ʵ����*/ rtn = MSCP_AppSendMsg(ENUM_MSG_OUTNET_SAFE, dstTypeId, dstLogicId, data, dataLen); return rtn; } -/*ά*/ +/*����ά�������*/ UINT8 InnetSafeSend(UINT16 dstTypeId, UINT16 dstLogicId, UINT8* data, UINT32 dataLen) { - UINT8 rtn = 0u; /*ֵ*/ + UINT8 rtn = 0u; /*����ֵ*/ - /*ʵ*/ + /*��ʵ����*/ rtn = MSCP_AppSendMsg(ENUM_MSG_INNET_MAINTENANCE, dstTypeId, dstLogicId, data, dataLen); return rtn; @@ -791,27 +791,27 @@ UINT8 InnetSafeSend(UINT16 dstTypeId, UINT16 dstLogicId, UINT8* data, UINT32 dat UINT32 InnetRawIoRecv(UINT8* data, UINT32 dataMaxLen) { - UINT32 dataLen = 0u; /*ֵ*/ + UINT32 dataLen = 0u; /*����ֵ*/ #if (kPLATFORM==kVXWORKS) - UINT16 srcTypeId = 0u; /*ԴID*/ + UINT16 srcTypeId = 0u; /*Դ����ID*/ dataLen = MSCP_InnetRaw_AppRecv(1, &srcTypeId, data, dataMaxLen); #else QueueStruct* rawDataQueue = Get2oo2IoToCiDataQueue(); - UINT32 dataQueueTotalLen = 0; /*ܳ*/ + UINT32 dataQueueTotalLen = 0; /*���������ܳ���*/ if (rawDataQueue != NULL) { - /*ȡܳ*/ + /*��ȡ���������ܳ���*/ dataQueueTotalLen = QueueStatus(rawDataQueue); if (dataQueueTotalLen >= dataMaxLen) - {/*IO >= IOЧʱ:ȡIOЧ*/ + {/*IO�������� >= IO���������Ч����ʱ:��ȡIO���������Ч����*/ - /*Ӷж*/ + /*�Ӷ����ж�������*/ dataQueueTotalLen = dataMaxLen; (void)QueueRead(dataQueueTotalLen, data, rawDataQueue); @@ -819,22 +819,22 @@ UINT32 InnetRawIoRecv(UINT8* data, UINT32 dataMaxLen) else if(0U < dataQueueTotalLen) {/*0 < dataQueueTotalLen < maxIoDataLen*/ - /*Ӷж*/ + /*�Ӷ����ж�������*/ (void)QueueRead((UINT16)dataQueueTotalLen, data, rawDataQueue); } else {/*dataQueueTotalLen == 0*/ } #if 0 - /*IOCI֡*/ + /*����IO��CI����֡*/ ParseIoToCiDataFrame(tempDataBuf, (UINT16)dataQueueTotalLen); #endif - /*ȡܳ*/ + /*��ȡ���������ܳ���*/ dataQueueTotalLen = QueueStatus(rawDataQueue); if (0U < dataQueueTotalLen) { - (void)QueueClear(rawDataQueue); /**/ + (void)QueueClear(rawDataQueue); /*�����*/ dataLen = CI_ERROR; } @@ -849,19 +849,19 @@ UINT32 InnetRawIoRecv(UINT8* data, UINT32 dataMaxLen) UINT8 InnetRawIoSend(UINT8* data, UINT32 dataLen) { - UINT8 rtn = 0u; /*ֵ*/ + UINT8 rtn = 0u; /*����ֵ*/ #if (kPLATFORM==kVXWORKS) rtn = MSCP_InnetRaw_AppSend(1, 0x0901, data, dataLen); #else - QueueStruct* rawDataQueueToSend = Get2oo2CiToIoDataQueue();/*ݵĶ*/ + QueueStruct* rawDataQueueToSend = Get2oo2CiToIoDataQueue();/*�������ݵĶ���*/ if (rawDataQueueToSend != NULL) { - (void)QueueClear(rawDataQueueToSend); /**/ + (void)QueueClear(rawDataQueueToSend); /*�����*/ if (0U == QueueWrite(dataLen, data, rawDataQueueToSend)) - { /*дʧ*/ + { /*д����ʧ��*/ - (void)QueueClear(rawDataQueueToSend); /**/ + (void)QueueClear(rawDataQueueToSend); /*�����*/ debug_infor_printf((const)"Error: write rawDataQueueToSend fail, QueueWrite = 0"); @@ -874,7 +874,7 @@ UINT8 InnetRawIoSend(UINT8* data, UINT32 dataLen) } else { - ; /**/ + ; /*������*/ } #endif return rtn; @@ -882,7 +882,7 @@ UINT8 InnetRawIoSend(UINT8* data, UINT32 dataLen) UINT32 InnetRawLeuRecv(UINT16* srcTypeId, UINT8* data, UINT32 dataMaxLen) { - UINT32 dataLen = 0u; /*ֵ*/ + UINT32 dataLen = 0u; /*����ֵ*/ #if (kPLATFORM==kVXWORKS) dataLen = MSCP_InnetRaw_AppRecv(2, srcTypeId, data, dataMaxLen); #else @@ -893,7 +893,7 @@ UINT32 InnetRawLeuRecv(UINT16* srcTypeId, UINT8* data, UINT32 dataMaxLen) UINT8 InnetRawLeuSend(UINT16 dstTypeId, UINT8* data, UINT32 dataLen) { - UINT8 rtn = 0u; /*ֵ*/ + UINT8 rtn = 0u; /*����ֵ*/ #if (kPLATFORM==kVXWORKS) rtn = MSCP_InnetRaw_AppSend(2, dstTypeId, data, dataLen); #else @@ -904,16 +904,16 @@ UINT8 InnetRawLeuSend(UINT16 dstTypeId, UINT8* data, UINT32 dataLen) /* -* ƽ̨֡ -* ˵ OUT UINT8* CC1_data CC1 -* OUT UINT8* CC2_data CC2 -* OUT UINT8* SEB1_data SEB1 -* OUT UINT8* SEB2_data SEB2 -* OUT UINT8* CC1_commFFlag CC1ݱ־ -* OUT UINT8* CC2_commFFlag CC2ݱ־ -* OUT UINT8* SEB1_commFFlag SEB1ݱ־ -* OUT UINT8* SEB2_commFFlag SEB2ݱ־ -* ֵ +* ���������� ����ƽ̨����֡���� +* ����˵���� OUT UINT8* CC1_data CC1�������� +* OUT UINT8* CC2_data CC2�������� +* OUT UINT8* SEB1_data SEB1�������� +* OUT UINT8* SEB2_data SEB2�������� +* OUT UINT8* CC1_commFFlag CC1�������ݱ�־ +* OUT UINT8* CC2_commFFlag CC2�������ݱ�־ +* OUT UINT8* SEB1_commFFlag SEB1�������ݱ�־ +* OUT UINT8* SEB2_commFFlag SEB2�������ݱ�־ +* ����ֵ ���� * BY LC */ void InnetHeartFrameRecv(OUT UINT8* CC1_data, OUT UINT8* CC2_data, OUT UINT8* SEB1_data, OUT UINT8* SEB2_data, OUT UINT8* CC1_commFFlag, OUT UINT8* CC2_commFFlag, OUT UINT8* SEB1_commFFlag, OUT UINT8* SEB2_commFFlag) @@ -933,7 +933,7 @@ void InnetHeartFrameRecv(OUT UINT8* CC1_data, OUT UINT8* CC2_data, OUT UINT8* SE while (0U != remainCount) { - /**/ + /*�������*/ (void)CommonMemSet(&tmpDataBuff, HEART_FRAME_MAX_LENGTH, 0U, HEART_FRAME_MAX_LENGTH); #if (kPLATFORM == kVXWORKS) @@ -948,10 +948,10 @@ void InnetHeartFrameRecv(OUT UINT8* CC1_data, OUT UINT8* CC2_data, OUT UINT8* SE { count++; - /*CC1*/ + /*����CC1����*/ if (BOARD_TYPE_CCUA == tmpDataBuff[2]) { - tmpCyc = LongFromChar(&tmpDataBuff[3]); /*ȡ֡ں*/ + tmpCyc = LongFromChar(&tmpDataBuff[3]); /*��ȡ��֡���ں�*/ if (tmpCyc > cycNew_CCA) { cycNew_CCA = tmpCyc; @@ -960,10 +960,10 @@ void InnetHeartFrameRecv(OUT UINT8* CC1_data, OUT UINT8* CC2_data, OUT UINT8* SE } *CC1_commFFlag = CI_SUCCESS; } - /*CC2*/ + /*����CC2����*/ else if (BOARD_TYPE_CCUB == tmpDataBuff[2]) { - tmpCyc = LongFromChar(&tmpDataBuff[3]); /*ȡ֡ں*/ + tmpCyc = LongFromChar(&tmpDataBuff[3]); /*��ȡ��֡���ں�*/ if (tmpCyc > cycNew_CCB) { cycNew_CCB = tmpCyc; @@ -971,10 +971,10 @@ void InnetHeartFrameRecv(OUT UINT8* CC1_data, OUT UINT8* CC2_data, OUT UINT8* SE } *CC2_commFFlag = CI_SUCCESS; } - /*SEB1*/ + /*����SEB1����*/ else if (BOARD_TYPE_SEBA == tmpDataBuff[2]) { - tmpCyc = LongFromChar(&tmpDataBuff[3]); /*ȡ֡ں*/ + tmpCyc = LongFromChar(&tmpDataBuff[3]); /*��ȡ��֡���ں�*/ if (tmpCyc > cycNew_SEBA) { cycNew_SEBA = tmpCyc; @@ -982,10 +982,10 @@ void InnetHeartFrameRecv(OUT UINT8* CC1_data, OUT UINT8* CC2_data, OUT UINT8* SE } *SEB1_commFFlag = CI_SUCCESS; } - /*SEB2*/ + /*����SEB2����*/ else if (BOARD_TYPE_SEBB == tmpDataBuff[2]) { - tmpCyc = LongFromChar(&tmpDataBuff[3]); /*ȡ֡ں*/ + tmpCyc = LongFromChar(&tmpDataBuff[3]); /*��ȡ��֡���ں�*/ if (tmpCyc > cycNew_SEBB) { cycNew_SEBB = tmpCyc; @@ -995,10 +995,10 @@ void InnetHeartFrameRecv(OUT UINT8* CC1_data, OUT UINT8* CC2_data, OUT UINT8* SE } else { - /*Դ忨Ƿ*/ + /*������Դ�忨�Ƿ���������*/ } - /*ѽֵܵ ˳ѭ*/ + /*�ѽ��ܵ�������ֵ�� �˳�ѭ��*/ if (HEART_FRAME_MAX_SUM == count) { remainCount = 0U; @@ -1019,39 +1019,39 @@ void InnetHeartFrameRecv(OUT UINT8* CC1_data, OUT UINT8* CC2_data, OUT UINT8* SE /* -* ȡϵյϵIO״̬ -* ˵UINT8* ioData ȡIO -* ֵ CI_SUCCESS ȡɹ -* CI_ERROR ȡʧ +* ���������� ��ȡ��ϵ�յ�����ϵIO����״̬ +* ����˵����UINT8* ioData ��ȡ��IO���� +* ����ֵ �� CI_SUCCESS ��ȡ�ɹ� +* CI_ERROR ��ȡʧ�� * BY LC */ UINT8 InnetChannelIODataRecv(UINT8* ioData) { UINT8 retVal = CI_ERROR; UINT8 ioRecvFlag = 0U; - UINT8 recvIOData[IO_DATA_LENGTH] = { 0U };/*յ40ֽGPIOݣ50ֽڴ*/ - UINT8 paraseIOData[IO_DATA_DATA_LENGTH] = { 0U };/*ʵΪ4PU4״̬ 16ֽ*/ + UINT8 recvIOData[IO_DATA_LENGTH] = { 0U };/*�յ���40�ֽ�GPIO���ݣ���50�ֽڴ���*/ + UINT8 paraseIOData[IO_DATA_DATA_LENGTH] = { 0U };/*ʵ������Ϊ4��PU4��״̬ 16�ֽ�*/ #if (kPLATFORM == kVXWORKS) if (NULL != ioData) { - /*ȡϵPUյIO*/ + /*��ȡ��ϵPU�յ���IO����*/ ioRecvFlag = MSCP_2x2_GetLastIoInput(recvIOData, (UINT16)IO_DATA_LENGTH); if (0x55U == ioRecvFlag) { debug_infor_printf((const)"\nRECV IOData:"); debug_out_array(0xAA, recvIOData, (UINT16)IO_DATA_LENGTH); - (void)CommonMemCpy(¶seIOData[0], 4U, &recvIOData[0], 4U);/*PU1*/ - (void)CommonMemCpy(¶seIOData[4], 4U, &recvIOData[10], 4U);/*PU2*/ - (void)CommonMemCpy(¶seIOData[8], 4U, &recvIOData[20], 4U);/*PU3*/ - (void)CommonMemCpy(¶seIOData[12], 4U, &recvIOData[30], 4U);/*PU4*/ + (void)CommonMemCpy(¶seIOData[0], 4U, &recvIOData[0], 4U);/*PU1����*/ + (void)CommonMemCpy(¶seIOData[4], 4U, &recvIOData[10], 4U);/*PU2����*/ + (void)CommonMemCpy(¶seIOData[8], 4U, &recvIOData[20], 4U);/*PU3����*/ + (void)CommonMemCpy(¶seIOData[12], 4U, &recvIOData[30], 4U);/*PU4����*/ debug_infor_printf((const)"\nPUA IOData:%d-%d-%d-%d %d-%d-%d-%d", paraseIOData[0], paraseIOData[1], paraseIOData[2], paraseIOData[3], paraseIOData[4], paraseIOData[5], paraseIOData[6], paraseIOData[7]); debug_infor_printf((const)"\nPUB IOData:%d-%d-%d-%d %d-%d-%d-%d", paraseIOData[8], paraseIOData[9], paraseIOData[10], paraseIOData[11], paraseIOData[12], paraseIOData[13], paraseIOData[14], paraseIOData[15]); retVal = CI_SUCCESS; } else { - /*ʧ*/ + /*����ʧ��*/ } } @@ -1061,7 +1061,7 @@ UINT8 InnetChannelIODataRecv(UINT8* ioData) } else { - /*ʧ*/ + /*����ʧ��*/ } #endif @@ -1073,23 +1073,23 @@ UINT8 InnetChannelIODataRecv(UINT8* ioData) /* -* еݴȥ -* ˵ UINT8* thisString, -* ֵ 0: ӡʧ -* 1: ӡɹ +* ���������� �������е����ݴ����ȥ +* ����˵���� UINT8* thisString, ���������� +* ����ֵ �� 0: ��ӡʧ�� +* 1: ��ӡ�ɹ� */ void SendOut_LogBuff() { #if (kPLATFORM==kVXWORKS) UINT16 ii = 0U; - UINT16 subPackLength = 0U; /*ÿְݳ*/ + UINT16 subPackLength = 0U; /*ÿ���ְ������ݳ���*/ UINT8 pData[UDPSEND_BUF_MAX + 1] = { 0U }; - UINT16 wCount = 0U; /**/ - UINT16 wTotalNum = 0U; /*ܰ*/ + UINT16 wCount = 0U; /*��������*/ + UINT16 wTotalNum = 0U; /*�ܰ���*/ UINT16 wLastLength = 0U; - UINT16 wNowNum = 1U; /*ǰ*/ - UINT32 dataLength = 0U; /*־ܳ*/ + UINT16 wNowNum = 1U; /*��ǰ���������*/ + UINT32 dataLength = 0U; /*��������־�ܳ���*/ UINT8 retval = CI_ERROR; UINT32 wCycleNum = 0U; UINT32 wCRCCheck = 0U; @@ -1098,11 +1098,11 @@ void SendOut_LogBuff() curCycNum = Get2oo2CurCycleNum(); subPackLength = GetLogSubPackDataLength(); - /****贫־С******/ + /****���������贫�����־��С******/ wCycleNum = Get2oo2CurCycleNum(); - dataLength = QueueStatus(&logPrintfQue) + PACK_LOG_ALARM_LENGTH; /*־г+ӡķְ¼*/ - wCount = (UINT16)(dataLength / (subPackLength - 13U)); /* ÿ13ֽ ͷCRC 9+4*/ - wLastLength = (UINT16)(dataLength % (subPackLength - 13U)); /* */ + dataLength = QueueStatus(&logPrintfQue) + PACK_LOG_ALARM_LENGTH; /*��־���г���+���ӡ�ķְ���¼����*/ + wCount = (UINT16)(dataLength / (subPackLength - 13U)); /* ÿ������13�ֽ��� ��ͷ��CRC 9+4*/ + wLastLength = (UINT16)(dataLength % (subPackLength - 13U)); /* ��������*/ if (0U == wLastLength) { wTotalNum = wCount; @@ -1114,62 +1114,62 @@ void SendOut_LogBuff() debug_infor_printf((const)"\nSystemCycleNum:%10d,Pack %2d Frame Log,Full Pack Length Is %4d,Last Pack Length Is %4d", wCycleNum, wTotalNum, subPackLength, wLastLength); - /*־ֳɹ涨һ*/ + /*��־�ֳɹ涨����һ������*/ for (ii = 0U; ii < wCount; ii++) { - (void)CommonMemSet(pData, (UINT32)sizeof(pData), 0u, (UINT32)sizeof(pData)); /*pData*/ + (void)CommonMemSet(pData, (UINT32)sizeof(pData), 0u, (UINT32)sizeof(pData)); /*���pData*/ - LongToChar(wCycleNum, &pData[0]); /*ں 4ֽ*/ + LongToChar(wCycleNum, &pData[0]); /*���ں� 4�ֽ�*/ - pData[4] = 0x10; /**/ + pData[4] = 0x10; /*������*/ - pData[5] = (UINT8)wTotalNum; /*ܰ*/ + pData[5] = (UINT8)wTotalNum; /*�ܰ���*/ - pData[6] = (UINT8)wNowNum++; /**/ + pData[6] = (UINT8)wNowNum++; /*��������*/ - ShortToChar(subPackLength - 13U, &pData[7]); /*ݳ 2ֽ*/ + ShortToChar(subPackLength - 13U, &pData[7]); /*�������ݳ��� 2�ֽ�*/ - retval = QueueRead(subPackLength - 13U, &pData[9], &logPrintfQue); /**/ + retval = QueueRead(subPackLength - 13U, &pData[9], &logPrintfQue); /*����������*/ wCRCCheck = Tioc_CommonCrc32(&pData[0], (UINT32)((UINT32)subPackLength - 4U)); - LongToChar(wCRCCheck, &pData[subPackLength - 4U]); /*CRC 4ֽ*/ + LongToChar(wCRCCheck, &pData[subPackLength - 4U]); /*CRC 4�ֽ�*/ if (CI_SUCCESS == retval) { - /*ͷְ*/ + /*���ͷְ�*/ MSCP_LogBin(pData, subPackLength); } } - /**/ + /*������������*/ wLastLength = (UINT16)QueueStatus(&logPrintfQue); - (void)CommonMemSet(pData, (UINT32)sizeof(pData), 0u, (UINT32)sizeof(pData)); /*pData*/ + (void)CommonMemSet(pData, (UINT32)sizeof(pData), 0u, (UINT32)sizeof(pData)); /*���pData*/ - LongToChar(wCycleNum, &pData[0]); /*ں 4ֽ*/ + LongToChar(wCycleNum, &pData[0]); /*���ں� 4�ֽ�*/ - pData[4] = 0x10; /**/ + pData[4] = 0x10; /*������*/ - pData[5] = (UINT8)wTotalNum; /*ܰ*/ + pData[5] = (UINT8)wTotalNum; /*�ܰ���*/ - pData[6] = (UINT8)wNowNum++; /**/ + pData[6] = (UINT8)wNowNum++; /*��������*/ - ShortToChar((UINT16)dataLength, &pData[7]); /*ݳ 2ֽ*/ + ShortToChar((UINT16)dataLength, &pData[7]); /*�������ݳ��� 2�ֽ�*/ - retval = QueueRead(wLastLength, &pData[9], &logPrintfQue); /**/ + retval = QueueRead(wLastLength, &pData[9], &logPrintfQue); /*����������*/ - wCRCCheck = Tioc_CommonCrc32(&pData[0], (UINT32)((UINT32)wLastLength + 9U));/*CRCУ*/ + wCRCCheck = Tioc_CommonCrc32(&pData[0], (UINT32)((UINT32)wLastLength + 9U));/*��CRCУ����*/ - LongToChar(wCRCCheck, &pData[wLastLength +9U]); /*CRC 4ֽ*/ + LongToChar(wCRCCheck, &pData[wLastLength +9U]); /*CRC 4�ֽ�*/ if (CI_SUCCESS == retval) { - /*ͷְ*/ + /*���ͷְ�*/ MSCP_LogBin(pData, wLastLength+13U); } #endif - /*ɺն*/ + /*������ɺ���ն���*/ (void)QueueClear(&logPrintfQue); } diff --git a/TSCP/src/APP/ciapp/2oo2/2oo2InterfaceDataManage.h b/TSCP/src/APP/ciapp/2oo2/2oo2InterfaceDataManage.h index 5d6702a..0542b2b 100644 --- a/TSCP/src/APP/ciapp/2oo2/2oo2InterfaceDataManage.h +++ b/TSCP/src/APP/ciapp/2oo2/2oo2InterfaceDataManage.h @@ -386,7 +386,7 @@ void SendOut_LogBuff(); void debug_infor_printf(char* debug_string, ...); 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 InnetSafeRecv(UINT16* srcTypeId, UINT16* srcLogicId, UINT8* data, UINT32* dataLen, UINT32 dataMaxLen); diff --git a/TSCP/src/APP/ciapp/AutoRoute/AutoRouteDataManage.c b/TSCP/src/APP/ciapp/AutoRoute/AutoRouteDataManage.c index 57e04ec..c0f3c2e 100644 --- a/TSCP/src/APP/ciapp/AutoRoute/AutoRouteDataManage.c +++ b/TSCP/src/APP/ciapp/AutoRoute/AutoRouteDataManage.c @@ -107,13 +107,7 @@ void SetAutoRouteSetFlag(const UINT16 autoRouteId, const UINT8 setState) } } -/* -* ȡԶ·̬ݽṹ -* ˵ -* ֵԶ·̬ݽṹ -* Created By LQ 2025.05.26 -*/ -AutoRouteDataStruct* GetAutoRouteDataStr(void) -{ - return AutoRouteDataStru; -} \ No newline at end of file + + + + diff --git a/TSCP/src/APP/ciapp/AutoRoute/AutoRouteDataManage.h b/TSCP/src/APP/ciapp/AutoRoute/AutoRouteDataManage.h index 1e0131f..e096ca1 100644 --- a/TSCP/src/APP/ciapp/AutoRoute/AutoRouteDataManage.h +++ b/TSCP/src/APP/ciapp/AutoRoute/AutoRouteDataManage.h @@ -56,13 +56,7 @@ UINT8 GetAutoRouteSetFlag(const UINT16 autoRouteId); */ void SetAutoRouteSetFlag(const UINT16 autoRouteId, const UINT8 setState); -/* -* ȡԶ·̬ݽṹ -* ˵ -* ֵԶ·̬ݽṹ -* Created By LQ 2025.05.26 -*/ -AutoRouteDataStruct* GetAutoRouteDataStr(void); + #ifdef __cplusplus } diff --git a/TSCP/src/APP/ciapp/AxisAssert/AxisAssertDefine.h b/TSCP/src/APP/ciapp/AxisAssert/AxisAssertDefine.h index ff8d822..5e2c566 100644 --- a/TSCP/src/APP/ciapp/AxisAssert/AxisAssertDefine.h +++ b/TSCP/src/APP/ciapp/AxisAssert/AxisAssertDefine.h @@ -25,7 +25,6 @@ #define AAM_BAD_NEAR 0x03u /* ӽ */ #define AAM_NO_TRAIN_NEAR 0x04u /* ޳ӽ */ #define AAM_GOOD_OCC 0x05u /* óռ */ -#define AAM_SLEEP_OCC 0x06u /* ߳ռ */ #define AAM_API_AC_ARB 0x01u /* ARB*/ diff --git a/TSCP/src/APP/ciapp/AxisAssert/AxisAssertManageAPI.c b/TSCP/src/APP/ciapp/AxisAssert/AxisAssertManageAPI.c index 0676797..48315bd 100644 --- a/TSCP/src/APP/ciapp/AxisAssert/AxisAssertManageAPI.c +++ b/TSCP/src/APP/ciapp/AxisAssert/AxisAssertManageAPI.c @@ -53,9 +53,6 @@ static UINT8 aam_SearchNearestTrainInNextAC(UINT16 baseACID, UINT8 Dir, UINT8 en UINT32 errorCode = 0u; const EnvelopeStruct* pTempEnvelope = NULL; ELM_AxisLocStruct tmpAcLoc = { 0u }; - UINT8 cSleepState = 0U; /*г״̬*/ - UINT8 ii = 0U; - UINT8 chNoSleepCheck = 0U; /*- ڲУ */ ASSERT_RET_VALUE(NULL == envelopeIds,ret,0x80000000u); @@ -106,44 +103,24 @@ static UINT8 aam_SearchNearestTrainInNextAC(UINT16 baseACID, UINT8 Dir, UINT8 en ASSER_ERROR(CI_ERROR == funRtn,errorCode,0x10000000u); AAM_LOG_LOC(AAM_LOG_ERROR,"errno:0x%08x info:Search NearestTrain ELM%d,ELM info error.",errorCode,preEnvelope) } - else + else if (((TYPE_CT_ENVELOPE == pTempEnvelope->envelopeType) || (TYPE_UCT_ENVELOPE == pTempEnvelope->envelopeType)) && + (FLAG_SET == funRtn) && (0u == pTempEnvelope->tailTrainID)) { - chNoSleepCheck = CI_SUCCESS; - for (ii = 0U; ii < pTempEnvelope->trianCnt; ii++) - { - cSleepState = GetTrainSleepState(pTempEnvelope->trainID[ii]); - if (TRAIN_SLEEP_YES == cSleepState) - { - chNoSleepCheck = CI_ERROR; - break; - } - } - - if (CI_ERROR == chNoSleepCheck) - { - /*ڼ߳*/ - ret = AAM_SLEEP_OCC; - } - else if (((TYPE_CT_ENVELOPE == pTempEnvelope->envelopeType) || (TYPE_UCT_ENVELOPE == pTempEnvelope->envelopeType)) && - (FLAG_SET == funRtn) && (0u == pTempEnvelope->tailTrainID)) - { - /** óԶ */ - ret = AAM_GOOD_FAR_AWAY; + /** óԶ */ + ret = AAM_GOOD_FAR_AWAY; - } - else if (((TYPE_CT_ENVELOPE == pTempEnvelope->envelopeType) || (TYPE_UCT_ENVELOPE == pTempEnvelope->envelopeType)) && - (FLAG_UNSET == funRtn) && (0u == pTempEnvelope->headTrainID)) - { - /** óӽ */ - ret = AAM_GOOD_NEAR; - } - else - { - /** ӽ */ - ret = AAM_BAD_NEAR; - } } - + else if (((TYPE_CT_ENVELOPE == pTempEnvelope->envelopeType) || (TYPE_UCT_ENVELOPE == pTempEnvelope->envelopeType)) && + (FLAG_UNSET == funRtn) && (0u == pTempEnvelope->headTrainID)) + { + /** óӽ */ + ret = AAM_GOOD_NEAR; + } + else + { + /** ӽ */ + ret = AAM_BAD_NEAR; + } } } } @@ -179,6 +156,8 @@ UINT8 aam_SearchNearbyTrainType(UINT16 baseACID, UINT8 Dir, UINT8 acCnt, UINT16 UINT8 acStatus = ELM_AC_OCC; UINT16 tmpPhyid = 0u; UINT8 phyRelACCnt = 0u; + UINT8 i = 0U; + UINT16 wTrainId = 0U; const UINT16* phyRelACIDs = NULL; const EnvelopeStruct* pTempEnvelope = NULL; UINT8 acRelEnvelopeCnt = 0u; @@ -302,23 +281,30 @@ static UINT8 aam_AxisErrorJudge(UINT16 acID,UINT16 acIndex) UINT8 ret = CI_ERROR; UINT8 funRtn = CI_ERROR; UINT8 chNearbyCheck = CI_ERROR; - UINT8 acSameCnt = 0U; - UINT16 acSameID[AC_MAXCNT_IN_SWITCH] = { 0U }; - UINT8 acConvertCnt = 0U; - UINT16 acConvertID[AC_MAXCNT_IN_SWITCH] = { 0U }; - UINT32 errorCode = 0U; + UINT8 acSameCnt = 0u; + UINT16 acSameID[AC_MAXCNT_IN_SWITCH] = { 0u }; + UINT8 acConvertCnt = 0u; + UINT16 acConvertID[AC_MAXCNT_IN_SWITCH] = { 0u }; + UINT32 errorCode = 0u; UINT8 sameTrainType = AAM_BAD_NEAR; UINT8 convertTrainType = AAM_BAD_NEAR; - UINT8 tmpRedunTime = 0U; - UINT8 tmppassTrainType = 0U; + UINT8 tmpRedunTime = 0u; + UINT8 tmppassTrainType = 0u; UINT8 tmpACStatus = AAM_STATUS_OCC; UINT8 maxRedunTimes = 0u; - UINT8 chSwitch = 0U; + UINT8 chSwitch = 0u; UINT32 dwArbCheckDistance = 0U; /*RC16.0 ϵͳARB*/ UINT8 chRedunArbFlag = REDUN_OVER_ARB_NO; /*жʱɷARB־*/ + UINT8 dwCiAndAxleTransBadEnsureCnt = 0U; /*жͨж*/ + UINT32 dwCurAxleOccStartCycNum = 0U; /*ռʼ*/ + UINT8 ii = 0U; + UINT32 dwNearAxleOccStartCycNum = 0U; /*ڼռʼ*/ + UINT8 cAcRelEnvelopeCnt = 0U; + EnvelopeStruct strEnvelopeInfo[SECTION_REL_ENVELOPE_SUM_MAX] = { 0U }; + UINT8 cOccCheckFlag = CI_ERROR; + UINT16 wCurRelPhySecId = 0U; + UINT16 wNearRelPhySecId = 0U; UINT8 cAxisCommBadArbFlag = AAM_COMM_BAD_ARB_NO; - UINT8 chPhyTrainCheck = CI_SUCCESS; - UINT8 cAcCbtcAttr = 0U; /*CBTC*/ chSwitch = aam_PrepareArbSwitch(); if (CI_SUCCESS == chSwitch) @@ -367,32 +353,6 @@ static UINT8 aam_AxisErrorJudge(UINT16 acID,UINT16 acIndex) /** 󷽼ᳵӽ */ convertTrainType = aam_SearchNearbyTrainType(acID, EMAP_CONVER_DIR, acConvertCnt, acConvertID); - /*޹ϳ*/ - chPhyTrainCheck = aam_CheckPhyTrain(acID); - cAcCbtcAttr = GetAxisSecCbtcProperty(acID); /*ȡCBTC*/ - - if ((CI_ERROR == chPhyTrainCheck) || (AXIS_SEC_CBTC_PROPERTY_YES != cAcCbtcAttr)) - { - /** йϳCBTC֮ǰʱλռ */ - funRtn = aam_ClearPassTrainFlag(acIndex); - ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x20000000u); - - funRtn = aam_ClearRedunTime(acIndex); - ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x10000000u); - - aam_SetAxisStatus(acIndex, AAM_STATUS_OCC); - AAM_LOG(AAM_LOG_FATAL, "info:AC%d set UT,Physec has UKT\n ", acID); - } - else if ((AAM_SLEEP_OCC == sameTrainType) || (AAM_SLEEP_OCC == convertTrainType)) - { - /** óͨ־UT */ - funRtn = aam_ClearPassTrainFlag(acIndex); - ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x20000000u); - } - else - { - ; /**/ - } /** жڷΧڼỵռʱͨ */ if ((CI_ERROR == chNearbyCheck)) { @@ -449,14 +409,90 @@ static UINT8 aam_AxisErrorJudge(UINT16 acID,UINT16 acIndex) AAM_LOG(AAM_LOG_FATAL, "info:AC%d keep ARB Fail, NearByTrainCheck:%d.\n", acID, chNearbyCheck); } else - { - /*ARBͬڼռ*/ - funRtn = aam_ArbContinuousOccCheck(acID, acSameCnt, acSameID); + { + cOccCheckFlag = CI_SUCCESS; + dwCiAndAxleTransBadEnsureCnt = GetCiAndAxleTransBadEnsureCnt(); /*ȡжͨжϳʱ*/ + wCurRelPhySecId = GetAxisSecRelativePhySecId(acID); + if (0U != wCurRelPhySecId) + { + dwCurAxleOccStartCycNum = GetSecColOccupyStartCycNum(wCurRelPhySecId); + for (ii = 0U; ii < acSameCnt; ii++) + { + wNearRelPhySecId = GetAxisSecRelativePhySecId(acSameID[ii]); + if (0U != wNearRelPhySecId) + { + cAcRelEnvelopeCnt = elm_GetEnvelopeInAC(acSameID[ii], strEnvelopeInfo); + dwNearAxleOccStartCycNum = GetSecColOccupyStartCycNum(wNearRelPhySecId); + if (((0U == cAcRelEnvelopeCnt) || (SECTION_REL_ENVELOPE_SUM_MAX == cAcRelEnvelopeCnt)) + && ((dwCurAxleOccStartCycNum + dwCiAndAxleTransBadEnsureCnt) < dwNearAxleOccStartCycNum)) + { + cOccCheckFlag = CI_ERROR; /*ڼްռʼʱ䳬ˡͨжϳʱжʱ䡱*/ + } + else + { + /*ڼռʼδͨжϳʱжʱ䡱*/ + } + } + else + { + cOccCheckFlag = CI_ERROR; + } - /*ARBηڼռ*/ - funRtn &= aam_ArbContinuousOccCheck(acID, acConvertCnt, acConvertID); + if (CI_ERROR == cOccCheckFlag) + { + break; + } + else + { + ; + } + } - if (CI_SUCCESS != funRtn) + if (CI_SUCCESS == cOccCheckFlag) + { + for (ii = 0U; ii < acConvertCnt; ii++) + { + wNearRelPhySecId = GetAxisSecRelativePhySecId(acConvertID[ii]); + if (0U != wNearRelPhySecId) + { + cAcRelEnvelopeCnt = elm_GetEnvelopeInAC(acConvertID[ii], strEnvelopeInfo); + dwNearAxleOccStartCycNum = GetSecColOccupyStartCycNum(wNearRelPhySecId); + if (((0U == cAcRelEnvelopeCnt) || (SECTION_REL_ENVELOPE_SUM_MAX == cAcRelEnvelopeCnt)) + && ((dwCurAxleOccStartCycNum + dwCiAndAxleTransBadEnsureCnt) < dwNearAxleOccStartCycNum)) + { + cOccCheckFlag = CI_ERROR; /*ڼްռʼʱ䳬ˡͨжϳʱжʱ䡱*/ + } + else + { + /*ڼռʼδͨжϳʱжʱ䡱*/ + } + } + else + { + cOccCheckFlag = CI_ERROR; + } + + if (CI_ERROR == cOccCheckFlag) + { + break; + } + else + { + ; + } + } + } + else + { + /*ʧܣ*/ + } + } + else + { + cOccCheckFlag = CI_ERROR; + } + + if (CI_SUCCESS != cOccCheckFlag) { /** ֮ǰʱλ */ funRtn = aam_ClearPassTrainFlag(acIndex); @@ -466,7 +502,7 @@ static UINT8 aam_AxisErrorJudge(UINT16 acID,UINT16 acIndex) ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x00400000U); aam_SetAxisStatus(acIndex, AAM_STATUS_OCC); - AAM_LOG(AAM_LOG_FATAL, "info:AC%d Keep ARB Fail Because Of Near Sec Continuous Occ\n", acID); + AAM_LOG(AAM_LOG_FATAL, "info:AC%d Keep ARB Fail Because Of Near Sec Occ\n", acID); } else { @@ -851,11 +887,9 @@ void aam_MainProcess(void) /** ͷARB⴦*/ aam_InitEndLinePassFlag(); - /*ϵͳͨжARB⴦RC20.0װע͵ָʱBy LQ 2025.05.07*/ -#if 0 /*ϵͳͨжARB⴦*/ aam_AxisCommBadArbPro(); -#endif + for (cycle = 0u; cycle < acCnt; cycle++) { /** жϼǷڱOC */ @@ -2020,166 +2054,4 @@ UINT8 aam_GetAxisStatusAPI(UINT16 ACID) acIndex = aam_PrepareACIndex(ACID); reVal = aam_GetAxisStatus(acIndex); return reVal; -} - -/** -* ܣξ޹ϳ -* UINT16 ACID id -* ֵCI_SUCCESS ޹ϳ -* CI_ERROR ڹϳ -* Create By fan 2025.06 18 -*/ -UINT8 aam_CheckPhyTrain(UINT16 ACID) -{ - UINT8 reVal = CI_ERROR; - UINT16 wPhySecId = 0U; /**/ - UINT8 phyAcNum = 0u; /*ι*/ - UINT16* pACBuff = NULL; - UINT16 wAxisSecId = 0U; /*id*/ - UINT8 linkNum = 0U; /*ilnk*/ - UINT16* pLinkBuf = NULL; /*link*/ - UINT8 jj = 0U; - UINT8 ii = 0U; - UINT8 k = 0U; - TRAIN_SEQUANCE_s linkInctrainList[SIZE_MAX_TRAINOFAC] = { 0u }; /*linkϵг*/ - UINT8 cLinkIncTrainSum = 0u; /*linkг*/ - wPhySecId = aam_PrepareACBelongPhyid(ACID); - phyAcNum = GetPAxisSectionSum(wPhySecId); - pACBuff = GetPAxisSectionIdBuf(wPhySecId); - if ((0U != phyAcNum) && (NULL != pACBuff)) - { - reVal = CI_SUCCESS; - for (ii = 0; ii < phyAcNum; ii++) - { - /*linkس*/ - wAxisSecId = pACBuff[ii]; - linkNum = GetAxisLinkSum(wAxisSecId); - pLinkBuf = GetAxisLinkIdBuf(wAxisSecId); - if ((0U != linkNum) && (NULL != pLinkBuf)) - { - for (jj = 0; jj < linkNum; jj++) - { - cLinkIncTrainSum = as_GetLinkTrainList(pLinkBuf[jj], linkInctrainList, SIZE_MAX_TRAINOFAC); - for (k = 0U; k < cLinkIncTrainSum; k++) - { - - if (NAME_FAILUREAREA != linkInctrainList[k].u16TrainID) - { - ; /**/ - } - else - { - reVal = CI_ERROR; /*ڹϳֹͣ顣ʧ*/ - break; - } - } - if (CI_ERROR == reVal) - { - break; - } - } - } - else - { - /*ȡʧ */ - reVal = CI_ERROR; - } - if (CI_ERROR == reVal) - { - break; - } - } - } - else - { - reVal = CI_ERROR; - } - return reVal; -} - -/* -* ܣ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]) -{ - UINT8 cRetVal = CI_ERROR; - UINT16 wBufIndex = 0U; - UINT16 wCurRelPhySecId = 0U; /*ID*/ - UINT8 dwCiAndAxleTransBadEnsureCnt = 0U; /*жͨж*/ - UINT32 dwCurAxleOccStartCycNum = 0U; /*ռʼ*/ - UINT8 ii = 0U; - UINT16 wNearRelPhySecId = 0U; /*ڼID*/ - UINT8 cAcRelEnvelopeCnt = 0U; - EnvelopeStruct strEnvelopeInfo[SECTION_REL_ENVELOPE_SUM_MAX] = { 0U }; - UINT32 dwNearAxleOccStartCycNum = 0U; /*ڼռʼ*/ - UINT8 cRcId = 0U; - UINT8 cFunRtn = 0U; - UINT16 wNearAcIndex = 0U; - - wBufIndex = GetAxisSecConfigBufIndex(wAcId); /*ȡ±*/ - - if ((AXIS_SECTION_SUM_MAX > wBufIndex) && (AC_MAXCNT_IN_SWITCH > cNearAcNum) && (NULL != pNearAcId)) - { - wCurRelPhySecId = GetAxisSecRelativePhySecId(wAcId); - if (0U != wCurRelPhySecId) - { - cRetVal = CI_SUCCESS; - dwCiAndAxleTransBadEnsureCnt = GetCiAndAxleTransBadEnsureCnt(); /*ȡжͨжϳʱ*/ - dwCurAxleOccStartCycNum = GetSecColOccupyStartCycNum(wCurRelPhySecId); - for (ii = 0U; ii < cNearAcNum; ii++) - { - wNearRelPhySecId = GetAxisSecRelativePhySecId(pNearAcId[ii]); - if (0U != wNearRelPhySecId) - { - cAcRelEnvelopeCnt = elm_GetEnvelopeInAC(pNearAcId[ii], strEnvelopeInfo); - dwNearAxleOccStartCycNum = GetSecColOccupyStartCycNum(wNearRelPhySecId); - if (((0U == cAcRelEnvelopeCnt) || (SECTION_REL_ENVELOPE_SUM_MAX == cAcRelEnvelopeCnt)) - && ((dwCurAxleOccStartCycNum + dwCiAndAxleTransBadEnsureCnt) < dwNearAxleOccStartCycNum)) - { - cRetVal = CI_ERROR; /*ڼްռʼʱ䳬ˡͨжϳʱжʱ䡱*/ - - cFunRtn = aam_PrepareACIsSelf(pNearAcId[ii], &cRcId); /*жǷΪ*/ - - if (ELM_BELONG_OWNER == cFunRtn) - { - wNearAcIndex = aam_PrepareACIndex(pNearAcId[ii]); - (void)aam_ClearPassTrainFlag(wNearAcIndex); /*óͨ־*/ - (void)aam_ClearRedunTime(wNearAcIndex); /*ʱ*/ - aam_SetAxisStatus(wNearAcIndex, AAM_STATUS_OCC); /*ռ*/ - - AAM_LOG(AAM_LOG_FATAL, "info:AC%d Set Occ Because Of Near Sec%d Keep Arb Fail\n", pNearAcId[ii], wAcId); - } - else - { - /*DZΣ*/ - } - } - else - { - /*ڼռʼδͨжϳʱжʱ䡱*/ - } - } - else - { - cRetVal = CI_ERROR; /*쳣ʧ*/ - } - } - } - else - { - cRetVal = CI_ERROR; /*쳣ʧ*/ - } - } - else - { - cRetVal = CI_ERROR; /*ηǷʧ*/ - } - - return cRetVal; } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/AxisAssert/AxisAssertManageAPI.h b/TSCP/src/APP/ciapp/AxisAssert/AxisAssertManageAPI.h index 47dbdd1..7e4836e 100644 --- a/TSCP/src/APP/ciapp/AxisAssert/AxisAssertManageAPI.h +++ b/TSCP/src/APP/ciapp/AxisAssert/AxisAssertManageAPI.h @@ -213,24 +213,4 @@ void SetRcAxleArb(void); */ 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]); - #endif /*AXIS_ASSERT_MANAGE_API_H_*/ diff --git a/TSCP/src/APP/ciapp/CutoffPoint/CutoffPointDataManage.c b/TSCP/src/APP/ciapp/CutoffPoint/CutoffPointDataManage.c index 87a1b2c..fdadd97 100644 --- a/TSCP/src/APP/ciapp/CutoffPoint/CutoffPointDataManage.c +++ b/TSCP/src/APP/ciapp/CutoffPoint/CutoffPointDataManage.c @@ -370,22 +370,27 @@ void CutoffPointOutput(void) UINT16 wPhySecId = 0u; UINT8 chOccState = 0u; UINT8 cDir = 0u; + UINT8 cTrainDir = 0u; UINT8 cFunRetVal = CI_ERROR; + TRAIN_SEQUANCE_s strTmp = { 0u }; CfpTrainInfoStru tmpTrainInfo = { 0u }; - struct_PathPoint LinkPoint = { 0u }; - UINT32 dwFindLen = 0u;/*źŻƷ*/ + UINT16 wTrainId = 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 cDirectionPointfirst = 0U; /*仯1*/ UINT8 cDirectionPointsecond = 0U; /*仯2*/ - UINT16 wOtherCfpId = 0u; /*ֽID*/ - UINT8 chLocalId = 0u; /*id*/ - UINT8 chLinkCIId = 0u; /*linkid*/ - UINT8 chOtherFlag = FLAG_UNSET; - UINT8 chBreakFlag = FLAG_UNSET; - UINT32 dwLinkLen = 0U;/*Ѽֽ*/ + dwFindLen = GetSystemParaValue(SIGNAL_LIGHTUP_SEC_LEN_ID); - dwFindLen *= 100U; - chLocalId = GetSystemParaLocalCiId(); + dwFindLen *= 100u; /* ȡ߽ */ wCutoffPointSum = GetCfpSum(); @@ -400,122 +405,157 @@ void CutoffPointOutput(void) cDir = GetCfpLocDir(wCutoffPointId); /* ߽ĵlink */ - (void)CommonMemSet(wszLinkIdBuf, (UINT32)(sizeof(UINT16)*MAX_CFG_LIGHTUPLINK_NUM), 0U, (UINT32)(sizeof(UINT16)*MAX_CFG_LIGHTUPLINK_NUM)); cFunRetVal = CalCutoffPointOccupyLinkSeq(wCutoffPointId, &wLinkSum, wszLinkIdBuf); - /*üλ */ - LinkPoint.wLinkId =0U; - LinkPoint.dwOffset = 0U; + /* ȡ߽Ϣ */ + CutoffPoint.wLinkId = GetCfpLink(wCutoffPointId); + CutoffPoint.dwOffset = GetCfpOffset(wCutoffPointId); - wOtherCfpId = 0U; - chOtherFlag = FLAG_UNSET; - chBreakFlag = FLAG_UNSET; - dwLinkLen = 0U; - if ((CI_SUCCESS == cFunRetVal)&&(MAX_CFG_LIGHTUPLINK_NUM>=wLinkSum)) + wTrainId = 0u; + TrainPoint.wLinkId = 0u; + TrainPoint.dwOffset = 0u; + + TrainTailPoint.wLinkId = 0U; + TrainTailPoint.dwOffset = 0U; + TrainHeadPoint.wLinkId = 0U; + TrainHeadPoint.dwOffset = 0U; + + if (CI_SUCCESS == cFunRetVal) { /* βҳɹ,鵽ϵг */ for (j = 0u;j < wLinkSum;j++) { wLinkId = wszLinkIdBuf[j]; - chLinkCIId = (UINT8)GetLinkManageTiocById(wLinkId); - if (chLinkCIId == chLocalId) - { - 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 - { - ; /*ûз任㣬DZ䷽*/ - } - } - dwLinkLen += GetLinkLengthById(wLinkId); /*δжϱ޳ڱѼlinkܳ*/ - } - } - else - { - ; /*һlink */ - } + wPhySecId = GetLinkRelatedPhySec(wLinkId); + chOccState = GetPhySecCurOccupyState(wPhySecId); + chTrainNum = as_GetLinkTrainNum(wLinkId); - if ((dwFindLen <= dwLinkLen)|| (FLAG_SET == chOtherFlag) || (FLAG_SET == chBreakFlag)) + if ((SECTION_OCCUPY_NO != chOccState) && (0u != chTrainNum)) { - /*㹻 ҵRCҵռãֹͣ*/ + /* ҵгռõ */ break; } 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 + { + ; /*ûз任㣬DZ䷽*/ + } + } + else + { + ; /*һlinkҪǷ仯⣬ֹԽ*/ } } /* ȡг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 { - /*ҵڱlink ѰҶӦֽгϢ*/ - OtherCfpTrainInfoCal(LinkPoint.wLinkId, LinkPoint.dwOffset, dwLinkLen, &tmpTrainInfo); + strTmp = as_GetLinkLastTrain(wLinkId); } + wTrainId = strTmp.u16TrainID; } else { - /* δҵгռ о㹻޳ */ + ; + } + + if (j == wLinkSum) + { + /* δҵгռ÷޳ */ tmpTrainInfo.wTrainId = 0u; tmpTrainInfo.chTrainLevel = 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 { @@ -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; - } - } } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/CutoffPoint/CutoffPointDataManage.h b/TSCP/src/APP/ciapp/CutoffPoint/CutoffPointDataManage.h index a083884..3a46323 100644 --- a/TSCP/src/APP/ciapp/CutoffPoint/CutoffPointDataManage.h +++ b/TSCP/src/APP/ciapp/CutoffPoint/CutoffPointDataManage.h @@ -350,23 +350,6 @@ UINT8 GetCfpSignalLightUpFlag(const UINT16 wCfpId); */ 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 } #endif diff --git a/TSCP/src/APP/ciapp/DataManage/DeviceDataManage.c b/TSCP/src/APP/ciapp/DataManage/DeviceDataManage.c index df6f0db..be10a07 100644 --- a/TSCP/src/APP/ciapp/DataManage/DeviceDataManage.c +++ b/TSCP/src/APP/ciapp/DataManage/DeviceDataManage.c @@ -44,9 +44,7 @@ UINT8 ciMode = CI_MODE_CI_LOCAL; /* UINT8 g_AllTsrFlag = CI_ALL_TSR_UNVALID; /* ʱٱ־ */ -UINT8 g_AllSnowModel = CI_ALL_SNOW_UNVALID; /*ȫѩģʽ0x55-Ч0xAA-Ч*/ - -UINT8 g_AllSnowLevel = CI_SNOW_LEVEL_DEFAULT; /*ȫʪ켶0-Ĭֵ1-һ2-*/ +UINT8 g_AllSnowModel = CI_ALL_SNOW_UNVALID; /*ȫѩģʽ*/ UINT8 g_IteLineCutState = CI_ITE_LINE_CUT_DEFAULT; /*ITEȫг״̬0x55гITE0xAAʹITE0xFFĬֵ*/ @@ -84,7 +82,7 @@ UINT8 SwitchBlockLinkState = RECOVER_SWITCH_BLOCK_LINK; /* CtrlPowerStruct ctrlpowerFlag[VIRTUAL_CI_MAX] = { 0u }; UINT8 LocalAreaSnowNum = 0U; /*ѩվ̨*/ -AreaSnowInfoStruct szLocalAreaSnow[LOCAL_AREA_SNOW_SUM_MAX] = { 0U }; /*ѩ*/ +UINT32 szLocalAreaSnowId[LOCAL_AREA_SNOW_SUM_MAX] = { 0U }; /*ѩվ̨ID*/ LineCommTrainStruct gStrLineCommTrain = { 0U }; /*ȫͨųṹ*/ @@ -92,9 +90,6 @@ UINT32 gFlyProtectOverCyc = 0U; /* UINT8 g_LocalSnowModel = CI_LOCAL_SNOW_UNVALID; /*ѩģʽ*/ -UINT8 gLocalAreaIteCutNum = 0U; /*ITEг*/ -UINT16 gSzLocalAreaIteCutId[ALL_AREA_SNOW_SUM_MAX] = { 0U }; /*ITEгID顪Ҫ洢ZC͵ID*/ - /******************************־ݹ****************************/ @@ -1329,18 +1324,6 @@ UINT8 RouteLockDriveSwitch(const UINT16 routeId, const UINT8 NeedForDrvRoutAssoS RouteAssocSwitchStruct routeAssocSwitchStru = {0,0}; /**/ UINT8 routeProtectSwitchSum = 0u; /*Ŀ*/ RouteProtectSwitchStruct* pRouteProtectSwitchStru = NULL; /**/ - UINT8 chAutoCheck = 0U; - UINT8 chSendLevel = 0U; - chAutoCheck = AutoSignalOrRouteValid(routeId); - if (chAutoCheck == CI_SUCCESS) - { - /*Զ·ԶźŲATS*/ - chSendLevel = ESEND_LEVEL_ZERO; - } - else - { - chSendLevel = ESEND_LEVEL_ATS; - } if((0u == routeId) || (routeId >= ROUTE_SUM_MAX)) { @@ -1394,8 +1377,6 @@ UINT8 RouteLockDriveSwitch(const UINT16 routeId, const UINT8 NeedForDrvRoutAssoS else { RouteDrvInnerSwitch(routeId, SWITCH_NEED_DRIV_FALSE); - /*ӵλòͬ*/ - SetErrorData(EFUNC_ROUTE_LOCK_DRIVE_SWITCH,CI_DEVICE_TYPE_ROUTE,routeId, ETYPE_ROUTE_APPLY_SWITCH_MOVE,0U, chSendLevel); } if((CI_SUCCESS == assocSwitchRetVal) && (CI_SUCCESS == innerSwitchRetVal)) @@ -2167,8 +2148,6 @@ UINT8 DriveSignalClose(const UINT16 signalId) */ UINT8 GetSwitchMoveEarlyValidState(UINT16 switchId, UINT8 oper_src, UINT8 sendLevel) { - UINT8 reVal = CI_ERROR; -#if 0 /**/ UINT8 const functionId = EFUNC_CHECK_SWITCH_MOVE; @@ -2195,6 +2174,7 @@ UINT8 GetSwitchMoveEarlyValidState(UINT16 switchId, UINT8 oper_src, UINT8 sendLe UINT8 switch2ndSecOccuState = 0u; UINT8 switch2ndSecLockState = 0u; UINT8 switch2ndSecMerOccuState = 0u; + UINT8 reVal = CI_ERROR; UINT8 ARBMoveSwitchFlag = 0u; UINT8 switch2ndSecJumpLockState = 0u; UINT8 switch2ndSecFLockState = 0u;/*2η״̬*/ @@ -2533,9 +2513,8 @@ UINT8 GetSwitchMoveEarlyValidState(UINT16 switchId, UINT8 oper_src, UINT8 sendLe } } } + /*ɶ*/ -#endif - return reVal; } @@ -2598,9 +2577,9 @@ UINT8 GetSwitchMoveValidState(UINT16 switchId,UINT8 oper_src,UINT8 sendLevel) /*жǷù·*/ gdDLline = GetCiFunctionSwitchConfig(FUNC_CLD_GD_DIANLU_LINE); - if ((JKJ_REYLAY_VALID == JkjRelayValid) && (CI_TYPE_CLD == ciType)) + if ((JkjRelayId > 0u) && (JKJ_REYLAY_VALID == JkjRelayValid) && (CI_TYPE_CLD == ciType)) {/*Ӧ̵̼Ч״̬*/ - SetErrorData(functionId, CI_DEVICE_TYPE_RELAY, 0u, ETYPE_JKJ_WORK, RELAY_STATE_DOWN, ESEND_LEVEL_ATS);/*OCӦعܣ̵ID0*/ + SetErrorData(functionId, CI_DEVICE_TYPE_RELAY, JkjRelayId, ETYPE_JKJ_WORK, RELAY_STATE_DOWN, ESEND_LEVEL_ATS); reVal = CI_ERROR; } else @@ -5149,9 +5128,6 @@ UINT8 GetOtherCiDevStatus(UINT16 const devType,UINT16 const devId,UINT16 const c devState = 0u; } break; - case CI_DEVICE_TYPE_PSD_EXCEPT_OPEN: /*վ̨ţ쳣򿪣*/ - devState = GePsdExceptOpenState(devId); - break; case CI_DEVICE_TYPE_GARAGEDOOR: /**/ tmpDevState = GetGaragedoorState(devId); if (GARAGE_DOOR_STATE_OPEN == tmpDevState) @@ -5288,7 +5264,6 @@ UINT8 GetOtherCiCheckDevStateType(UINT16 const devType) retType = ETYPE_ESB_VALID; break; case CI_DEVICE_TYPE_PSD: /*վ̨*/ - case CI_DEVICE_TYPE_PSD_EXCEPT_OPEN: /*վ̨ţ쳣򿪣*/ retType = ETYPE_PSD_CLOSE_NO; break; case CI_DEVICE_TYPE_GARAGEDOOR: /**/ @@ -5406,6 +5381,7 @@ void SetAllTsrFlag(UINT8 setFlag) * ˵ void * ֵ 0x55: Ч 0xAA:Ч */ + UINT8 GetAllSnowModel(void) { return g_AllSnowModel; @@ -5428,37 +5404,6 @@ void SetAllSnowModel(UINT8 setmodle) } } -/* -* ȡȫʪȼ -* ˵ -* ֵ0 Ĭֵ -* 1 ʪһ -* 2 ʪ -* Created By LQ 2025.05.28 -*/ -UINT8 GetAllSnowLevel(void) -{ - return g_AllSnowLevel; -} - -/* -* ȫʪȼ -* ˵UINT8 cLevel ʪ켶 -* ֵ -* Created By LQ 2025.05.28 -*/ -void SetAllSnowLevel(UINT8 cLevel) -{ - if ((CI_SNOW_LEVEL_DEFAULT == cLevel) || (CI_SNOW_LEVEL_ONE == cLevel) || (CI_SNOW_LEVEL_TWO == cLevel)) - { - g_AllSnowLevel = cLevel; - } - else - { - /**/ - } -} - /* * ȡITEȫг״̬ * ˵void @@ -6221,7 +6166,6 @@ UINT8 CheckLogJumpLockApply(UINT16 logSectionId) UINT16 bufIndex = 0u; /*±*/ UINT8 logSecLockState = 0U; UINT8 logSecLockRouteNum = 0U; - UINT8 chFailStep = 0U; bufIndex = GetlogSectionBufIndex(logSectionId); /*ȡ±*/ /**±Ϸ*/ @@ -6238,7 +6182,7 @@ UINT8 CheckLogJumpLockApply(UINT16 logSectionId) logicCheck = LogicIntruSecVainCheck(logSectionId, &devId, &devState); /*߼޼*/ logSecLockState = GetLogSecLogLockState(logSectionId); logSecLockRouteNum = GetLogSecLockBelLogRouteSum(logSectionId); - + if (NULL == pLgcSecSwitchStru) { reVal = CI_ERROR; @@ -6253,7 +6197,6 @@ UINT8 CheckLogJumpLockApply(UINT16 logSectionId) { /*·*/ reVal = CI_ERROR; - chFailStep = 1U; } } if (CI_SUCCESS == reVal) @@ -6262,7 +6205,6 @@ UINT8 CheckLogJumpLockApply(UINT16 logSectionId) { /*߼δ߼·*/ reVal = CI_ERROR; - chFailStep = 2U; } } @@ -6282,7 +6224,6 @@ UINT8 CheckLogJumpLockApply(UINT16 logSectionId) || ((LOGICSECTION_OCCUPY_CT == curLogSecOccState) && (CI_ERROR == checkSulicTrain))) { reVal = CI_ERROR; - chFailStep =3U; break; } else @@ -6316,7 +6257,6 @@ UINT8 CheckLogJumpLockApply(UINT16 logSectionId) { /*ʧ*/ reVal = CI_ERROR; - chFailStep = 4U; } else { @@ -6335,14 +6275,12 @@ UINT8 CheckLogJumpLockApply(UINT16 logSectionId) /*δڷ״̬(SPKSʵʩ)*/ reVal = CI_ERROR; - chFailStep = 5U; } if ((CI_SUCCESS == reVal) && (CI_ERROR == logicCheck)) { /*߼޼鲻ͨ*/ reVal = CI_ERROR; - chFailStep = 6U; } if ((CI_SUCCESS == reVal) && (0u < routeRlockId)) @@ -6356,8 +6294,8 @@ UINT8 CheckLogJumpLockApply(UINT16 logSectionId) if ((CI_SUCCESS == routeTrainNear) && ((ROUTE_STATE_YUXIAN_OPEN == routeState) || (ROUTE_STATE_NEAR_OPEN == routeState))) { + reVal = CI_ERROR; - chFailStep = 7U; } } else @@ -6383,7 +6321,6 @@ UINT8 CheckLogJumpLockApply(UINT16 logSectionId) if ((pLgcSecSwitchStru[ii].SwitchPosition != switchCurPosition) || (CI_ERROR == retFlag) || (SWITCH_LOCK_FENGSUO_YES == switchFLockState)) {/*жϵǰĵλǰλһͬijһȻЧ򣨵*/ reVal = CI_ERROR; - chFailStep = 8U; break; } else @@ -6414,7 +6351,6 @@ UINT8 CheckLogJumpLockApply(UINT16 logSectionId) if (FLOOD_GATE_OPEN != floodState) { reVal = CI_ERROR; - chFailStep = 9U; break; } else @@ -6440,7 +6376,6 @@ UINT8 CheckLogJumpLockApply(UINT16 logSectionId) || ((LOGICSECTION_OCCUPY_CT == curLogSecOccState) && (CI_ERROR == checkSulicTrain))) { reVal = CI_ERROR; - chFailStep = 10U; } else { @@ -6460,7 +6395,6 @@ UINT8 CheckLogJumpLockApply(UINT16 logSectionId) if (CI_ERROR == checkResult) { reVal = CI_ERROR; - chFailStep = 11U; } else { @@ -6472,30 +6406,11 @@ UINT8 CheckLogJumpLockApply(UINT16 logSectionId) /** */ } } - - if (CI_SUCCESS == reVal) - { - /* ߳*/ - checkResult = LogSecRelateNoSleepTrainCheck(logSectionId); - if (CI_ERROR == checkResult) - { - reVal = CI_ERROR; - chFailStep = 12U; - } - else - { - reVal = CI_SUCCESS; - } - } } else { reVal = CI_ERROR; } - if (CI_ERROR == reVal) - { - debug_infor_printf((const)"\nCheckLogJumpLockApply ! LogSecID: %d__Error Position Is [%d]\n", logSectionId, chFailStep); - } return reVal; } @@ -10701,10 +10616,10 @@ UINT8 GetDiaoCheRouteOpenState(const UINT16 wRouteId) /* * ñѩվ̨Ϣ * ˵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[]) { UINT8 ii = 0U; UINT8 jj = 0U; @@ -10717,20 +10632,20 @@ void SetLocalAreaSnowInfo(const UINT8 cAreaSnowNum, const AreaSnowInfoStruct pAr UINT8 cPhySecBelongCiId = 0U; /*SPKSε*/ UINT8 cLocalCiId = 0U; /*CI ID*/ - if ((LOCAL_AREA_SNOW_SUM_MAX >= cAreaSnowNum) && (NULL != pAreaSnowBuf)) + if ((LOCAL_AREA_SNOW_SUM_MAX >= cAreaSnowNum) && (NULL != pAreaSnowIdBuf)) { /*ѩվ̨Ϣͷ͸ѩϢ*/ ClearCiSendAreaSnowInfo(); - (void)CommonMemSet(szLocalAreaSnow, (UINT32)(sizeof(AreaSnowInfoStruct) * LOCAL_AREA_SNOW_SUM_MAX), 0U, (UINT32)(sizeof(AreaSnowInfoStruct) * LOCAL_AREA_SNOW_SUM_MAX)); + (void)CommonMemSet(szLocalAreaSnowId, (UINT32)(sizeof(UINT32) * LOCAL_AREA_SNOW_SUM_MAX), 0U, (UINT32)(sizeof(UINT32) * LOCAL_AREA_SNOW_SUM_MAX)); LocalAreaSnowNum = cAreaSnowNum; for (ii = 0U; ii < cAreaSnowNum; ii++) { - szLocalAreaSnow[ii] = pAreaSnowBuf[ii]; /*洢ѩ״̬Ϣ*/ + szLocalAreaSnowId[ii] = pAreaSnowIdBuf[ii]; /*洢ѩ״̬Ϣ*/ - /*жǷҪͱѩϢ*/ + /*жǷҪͱѩվ̨*/ cLocalCiId = GetSystemParaLocalCiId(); - cPlatFormRelSpksNum = GetPlatFormRelSpksNum(pAreaSnowBuf[ii].wAreaId, szPlatFormRelSpksId); /*ȡվ̨SPKS*/ + cPlatFormRelSpksNum = GetPlatFormRelSpksNum((UINT16)pAreaSnowIdBuf[ii], szPlatFormRelSpksId); /*ȡվ̨SPKS*/ if (CI_ERROR != cPlatFormRelSpksNum) { @@ -10749,7 +10664,7 @@ void SetLocalAreaSnowInfo(const UINT8 cAreaSnowNum, const AreaSnowInfoStruct pAr if ((cLocalCiId != cPhySecBelongCiId) && (0U != cLocalCiId) && (0U != cPhySecBelongCiId)) { - AddCiSendAreaSnowInfo(cLocalCiId, cPhySecBelongCiId, pAreaSnowBuf[ii].wAreaId, pAreaSnowBuf[ii].cAreaSnowLevel); /*վ̨зDZΣCIվ̨ID*/ + AddCiSendAreaSnowInfo(cLocalCiId, cPhySecBelongCiId, pAreaSnowIdBuf[ii]); /*վ̨зDZΣCIվ̨ID*/ } else { @@ -10786,13 +10701,13 @@ UINT8 GetLocalAreaSnowNum(void) } /* -* ȡѩϢ +* ȡѩվ̨ID * ˵ -* ֵ ѩϢ +* ֵ ѩվ̨ID */ -AreaSnowInfoStruct* GetLocalAreaSnow(void) +UINT32* GetLocalAreaSnowId(void) { - return szLocalAreaSnow; + return szLocalAreaSnowId; } @@ -11199,171 +11114,4 @@ void DefaultCtrlPowerDeal(const UINT8 virtualCiId) { ; } -} - -/* -* ȡITEг -* ˵ -* ֵITEг -* Created By LQ 2025.04.15 -*/ -UINT8 GetLocalAreaIteCutNum(void) -{ - return gLocalAreaIteCutNum; -} - -/* -* ȡITEгID -* ˵ -* ֵITEгID -* Created By LQ 2025.04.15 -*/ -UINT16* GetLocalAreaIteCutId(void) -{ - return gSzLocalAreaIteCutId; -} - -/* -* ITEгϢ -* ˵ -* ֵ -* Created By LQ 2025.04.15 -*/ -void ClearLocalAreaIteCutInfo(void) -{ - gLocalAreaIteCutNum = 0U; - (void)CommonMemSet(gSzLocalAreaIteCutId, (UINT32)(sizeof(UINT16) * ALL_AREA_SNOW_SUM_MAX), 0U, (UINT32)(sizeof(UINT16) * ALL_AREA_SNOW_SUM_MAX)); -} - -/* -* ñ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]) -{ - UINT8 ii = 0U; - UINT8 jj = 0U; - UINT16 kk = 0U; - UINT8 cPlatFormRelSpksNum = 0U; /*վ̨SPKS*/ - UINT16 szPlatFormRelSpksId[PLATFORM_REL_SPKS_NUM_MAX] = { 0U }; /*վ̨SPKS ID*/ - UINT16 wSpksIndex = 0U; - UINT16 wSpksRelPhySecNum = 0U; /*SPKS*/ - UINT16 wSpksRelPhySecId = 0U; /*SPKSID*/ - UINT8 cPhySecBelongCiId = 0U; /*SPKSε*/ - UINT8 cLocalCiId = 0U; /*CI ID*/ - UINT8 cPlatFormBelongCiId = 0U; /*վ̨LinkCI*/ - - if ((ALL_AREA_SNOW_SUM_MAX >= cAreaIteCutNum) && (NULL != pAreaIteCutIdBuf)) - { - /*ITEгϢ͸ITEгϢ*/ - ClearLocalAreaIteCutInfo(); - ClearCiSendAreaIteCutInfo(); - - /*ʼˢ±ITEгϢ*/ - gLocalAreaIteCutNum = cAreaIteCutNum; - for (ii = 0U; ii < cAreaIteCutNum; ii++) - { - gSzLocalAreaIteCutId[ii] = pAreaIteCutIdBuf[ii]; /*洢ID*/ - - /*жǷҪͱITEгϢ*/ - cLocalCiId = GetSystemParaLocalCiId(); - cPlatFormBelongCiId = GetAreaSnowPlatFormBelongCiId(pAreaIteCutIdBuf[ii]); /*ȡ*/ - if ((cLocalCiId == cPlatFormBelongCiId) && (0U != cLocalCiId)) - { - cPlatFormRelSpksNum = GetPlatFormRelSpksNum(pAreaIteCutIdBuf[ii], szPlatFormRelSpksId); /*ȡվ̨SPKS*/ - - if (CI_ERROR != cPlatFormRelSpksNum) - { - /*վ̨SPKSжSPKSǷзDZ*/ - for (jj = 0U; jj < cPlatFormRelSpksNum; jj++) - { - wSpksIndex = GetSpksConfigBufIndex(szPlatFormRelSpksId[jj]); - if (SPKS_SUM_MAX > wSpksIndex) - { - wSpksRelPhySecNum = GetSpksPhySecSumByIndex(wSpksIndex); - - for (kk = 0U; kk < wSpksRelPhySecNum; kk++) - { - wSpksRelPhySecId = GetSpksPhySecId(szPlatFormRelSpksId[jj], kk); - cPhySecBelongCiId = GetPhySecBelongCiId(wSpksRelPhySecId); - - if ((cLocalCiId != cPhySecBelongCiId) && (0U != cLocalCiId) && (0U != cPhySecBelongCiId)) - { - AddCiSendAreaIteCutInfo(cLocalCiId, cPhySecBelongCiId, pAreaIteCutIdBuf[ii]); /*վ̨зDZΣCIվ̨ID*/ - } - else - { - /**/ - } - } - } - else - { - /*¸ѩ*/ - } - } - } - else - { - /*ȡվ̨SPKSʧܣ*/ - } - } - else - { - /*DZ䣬RC/CI*/ - } - } - } - else - { - /*ηǷ*/ - } -} - -/* -* ȡ·ڵһյ߼ID -* ˵UINT16 wRouteId ·ID -* ֵ0 յ߼ -* >0 һյ߼ID -* Created By LQ 2025.05.08 -*/ -UINT16 GetRouteFirstLockedLogSecId(UINT16 wRouteId) -{ - UINT16 wRetVal = 0U; - UINT16 wRouteLogSecNum = 0U; /*·߼*/ - UINT16* pRouteLogSecIdBuf = NULL; /*·߼ID*/ - UINT16 i = 0U; - UINT16 wLockBelongRouteId = 0U; /*·ID*/ - - /*ȡ·߼*/ - wRouteLogSecNum = GetRouteLogSectionSum(wRouteId); - pRouteLogSecIdBuf = GetRouteLogSectionIdBuf(wRouteId); - - if ((0U < wRouteLogSecNum) && (NULL != pRouteLogSecIdBuf)) - { - for (i = 0U; i < wRouteLogSecNum; i++) - { - wLockBelongRouteId = GetLogSecLockBelongRoute(pRouteLogSecIdBuf[i]); /*ȡ߼·*/ - - if (wLockBelongRouteId == wRouteId) - { - /*߼α·գ߼*/ - wRetVal = pRouteLogSecIdBuf[i]; - break; - } - else - { - /**/ - } - } - } - else - { - /*0*/ - } - - return wRetVal; } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/DataManage/DeviceDataManage.h b/TSCP/src/APP/ciapp/DataManage/DeviceDataManage.h index 1eafa3c..2781843 100644 --- a/TSCP/src/APP/ciapp/DataManage/DeviceDataManage.h +++ b/TSCP/src/APP/ciapp/DataManage/DeviceDataManage.h @@ -15,14 +15,6 @@ #define _DEVICE_DATA_MANAGE_H_ #include "CommonTypes.h" - -/*ѩϢṹ*/ -typedef struct S_AreaSnowInfoStruct -{ - UINT16 wAreaId; /*ID*/ - UINT8 cAreaSnowLevel; /*ʪ켶*/ -} AreaSnowInfoStruct; - #include "../System/CiSystemDefine.h" #include "../error/ErrorDataManage.h" #include "../Transmit/TransmitStateDataManage.h" @@ -164,7 +156,6 @@ typedef struct S_LineCommTrainStruct UINT16 szCommTrainNumID[TRAIN_SUM_MAX]; /*ȫͨųID*/ }LineCommTrainStruct; - /*******************************ȫֱ*******************************/ extern UINT8 AllSignalBrightFlag; /*ȫվƱ־*/ @@ -190,8 +181,6 @@ extern UINT8 g_AllTsrFlag; /* extern UINT8 g_AllSnowModel; /*ȫѩģʽ*/ -extern UINT8 g_AllSnowLevel; /*ȫʪ켶0-Ĭֵ1-һ2-*/ - extern UINT8 g_IteLineCutState; /*ITEȫг״̬0x55гITE0xAAʹITE0xFFĬֵ*/ extern UINT8 g_AllLineTsrState; /*ȫʱ״̬*/ @@ -230,16 +219,13 @@ extern UINT8 SwitchBlockLinkState; /* extern CtrlPowerStruct ctrlpowerFlag[VIRTUAL_CI_MAX]; extern UINT8 LocalAreaSnowNum; /*ѩվ̨*/ -extern AreaSnowInfoStruct szLocalAreaSnow[LOCAL_AREA_SNOW_SUM_MAX]; /*ѩ*/ +extern UINT32 szLocalAreaSnowId[LOCAL_AREA_SNOW_SUM_MAX]; /*ѩվ̨ID*/ extern LineCommTrainStruct gStrLineCommTrain; /*ȫͨųṹ*/ extern UINT32 gFlyProtectOverCyc; /*ɳ崻ʼ*/ extern UINT8 g_LocalSnowModel; /*ѩģʽ*/ -extern UINT8 gLocalAreaIteCutNum; /*ITEг*/ -extern UINT16 gSzLocalAreaIteCutId[ALL_AREA_SNOW_SUM_MAX]; /*ITEгID*/ - /******************************־ݹ****************************/ /* @@ -1381,24 +1367,6 @@ extern UINT8 GetAllSnowModel(void); */ 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ȫг״̬ * ˵void @@ -1742,10 +1710,10 @@ UINT8 GetDiaoCheRouteOpenState(const UINT16 wRouteId); /* * ñѩվ̨Ϣ * ˵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[]); /* * ȡѩվ̨ @@ -1755,11 +1723,11 @@ void SetLocalAreaSnowInfo(const UINT8 cAreaSnowNum, const AreaSnowInfoStruct pAr UINT8 GetLocalAreaSnowNum(void); /* -* ȡѩϢ +* ȡѩվ̨ID * ˵ -* ֵ ѩϢ +* ֵ ѩվ̨ID */ -AreaSnowInfoStruct* GetLocalAreaSnow(void); +UINT32* GetLocalAreaSnowId(void); /* @@ -1856,46 +1824,4 @@ UINT8 GetSwitchUsingValidState(const UINT16 wSwitchId, const UINT8 chFunctionId, */ 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); - #endif diff --git a/TSCP/src/APP/ciapp/DataManage/PlatDataManage.c b/TSCP/src/APP/ciapp/DataManage/PlatDataManage.c index 815fd70..239b672 100644 --- a/TSCP/src/APP/ciapp/DataManage/PlatDataManage.c +++ b/TSCP/src/APP/ciapp/DataManage/PlatDataManage.c @@ -17,7 +17,7 @@ extern PlatHeartDataStruct RecvHeartDataStru ; /*ƽ̨֡ݽṹ*/ extern PlatGPIODataStruct RecvPlatDataStruGPIO;/*ƽ̨0x2D֡ݽṹ GPIOɼ״̬*/ -extern PlatGPIOToleranceDataStruct gPlatDataGPIOTolercance;/*ƽ̨Ӳɼ̼¼*/ + @@ -427,36 +427,18 @@ UINT8 CheckRCIAPowerFaultState(void) { UINT8 retVal = CI_ERROR; UINT8 cxABreakFlag = 0U; /*AϵԴտϿ*/ - UINT8 chCheckState = 0U; - UINT32 dwErrorStartCyc = 0U; - UINT32 dwCurCyc = 0U; + cxABreakFlag = GetPowerANodeStatue(); - dwErrorStartCyc = gPlatDataGPIOTolercance.powerANode_TolCyc; - dwCurCyc = Get2oo2CurCycleNum(); + /* 1AϵԴտϿ */ if (NODE_STATUS_BREAK == cxABreakFlag) { /*AϵԴ״̬*/ - chCheckState = SystemOverTimeCheck(dwErrorStartCyc, IO_POWERSTATE_TOLERANCE); - if (CI_TIME_NO == chCheckState) - { - gPlatDataGPIOTolercance.powerANode_TolCyc = dwCurCyc; - retVal = CI_SUCCESS; - } - else if(CI_TIME_IN == chCheckState) - { - retVal = CI_SUCCESS;/**/ - } - else - { - retVal = CI_ERROR; - debug_infor_printf((const)"PLATIO_A_Node_Power_FaultState StartTime%d\n", dwErrorStartCyc); - } + retVal = CI_ERROR; } else { retVal = CI_SUCCESS; - gPlatDataGPIOTolercance.powerANode_TolCyc = 0U; } return retVal; } @@ -471,36 +453,18 @@ UINT8 CheckRCIBPowerFaultState(void) { UINT8 retVal = CI_ERROR; UINT8 cxBBreakFlag = 0U; /*BϵԴտϿ*/ - UINT8 chCheckState = 0U; - UINT32 dwErrorStartCyc = 0U; - UINT32 dwCurCyc = 0U; + cxBBreakFlag = GetPowerBNodeStatue(); - dwErrorStartCyc = gPlatDataGPIOTolercance.powerBNode_TolCyc; - dwCurCyc = Get2oo2CurCycleNum(); - /* 1BϵԴտϿ*/ + + /* 1BϵԴտϿ */ if (NODE_STATUS_BREAK == cxBBreakFlag) { /*BϵԴ״̬*/ - chCheckState = SystemOverTimeCheck(dwErrorStartCyc, IO_POWERSTATE_TOLERANCE); - if (CI_TIME_NO == chCheckState) - { - gPlatDataGPIOTolercance.powerBNode_TolCyc = dwCurCyc; - retVal = CI_SUCCESS; - } - else if (CI_TIME_IN == chCheckState) - { - retVal = CI_SUCCESS;/**/ - } - else - { - retVal = CI_ERROR; - debug_infor_printf((const)"PLATIO_B_Node_Power_FaultState StartTime%d\n", dwErrorStartCyc); - } + retVal = CI_ERROR; } else { retVal = CI_SUCCESS; - gPlatDataGPIOTolercance.powerBNode_TolCyc = 0U; } return retVal; } @@ -520,16 +484,11 @@ UINT8 CheckRCIAPowerModeFaultState(void) UINT8 powerBPUBAState = 0U; /*PUB Aɼ24VBԴ״̬ 3*/ UINT8 vol1Flag = 0U; /*CPI Aɼ24VAԴ 1*/ UINT8 vol3Flag = 0U; /*CPI Aɼ24VBԴ 3*/ - UINT8 chCheckState = 0U; - UINT32 dwErrorStartCyc = 0U; - UINT32 dwCurCyc = 0U; powerAPUBAState = GetGPIOCollectPointStatus(COLLECT_MODEA_CCUA); powerBPUBAState = GetGPIOCollectPointStatus(COLLECT_MODEB_CCUA); vol1Flag = CheckPointVoltageState(COLLECT_MODEA_CCUA); vol3Flag = CheckPointVoltageState(COLLECT_MODEB_CCUA); - dwErrorStartCyc = gPlatDataGPIOTolercance.powerAMode_TolCyc; - dwCurCyc = Get2oo2CurCycleNum(); /* 1PUB Aɼ24VAԴ쳣24VBԴ쳣 2CPI Aɼ24VAԴ24VBԴѹΪ0V */ @@ -537,27 +496,11 @@ UINT8 CheckRCIAPowerModeFaultState(void) if (((CHECK_VOLTAGE_ZERO == vol1Flag) || (CHECK_VOLTAGE_ZERO == vol3Flag)) && ((POWER_STATUS_ABNORMAL == powerAPUBAState) || (POWER_STATUS_ABNORMAL == powerBPUBAState))) { - /**/ - chCheckState = SystemOverTimeCheck(dwErrorStartCyc, IO_POWERSTATE_TOLERANCE); - if (CI_TIME_NO == chCheckState) - { - gPlatDataGPIOTolercance.powerAMode_TolCyc = dwCurCyc; - retVal = CI_SUCCESS; - } - else if (CI_TIME_IN == chCheckState) - { - retVal = CI_SUCCESS;/**/ - } - else - { - retVal = CI_ERROR; - debug_infor_printf((const)"PLATIO_A_Mode_Power_FaultState StartTime%d\n", dwErrorStartCyc); - } + retVal = CI_ERROR; } else { retVal = CI_SUCCESS; - gPlatDataGPIOTolercance.powerAMode_TolCyc = 0U; } return retVal; @@ -577,43 +520,25 @@ UINT8 CheckRCIBPowerModeFaultState(void) UINT8 powerBPUBBState = 0U; /*PUB Aɼ24VBԴ״̬ 4*/ UINT8 vol2Flag = 0U; /*CPI Bɼ24VAԴ 2*/ UINT8 vol4Flag = 0U; /*CPI Bɼ24VBԴ 4*/ - UINT8 chCheckState = 0U; - UINT32 dwErrorStartCyc = 0U; - UINT32 dwCurCyc = 0U; powerAPUBBState = GetGPIOCollectPointStatus(COLLECT_MODEA_CCUB); powerBPUBBState = GetGPIOCollectPointStatus(COLLECT_MODEB_CCUB); vol2Flag = CheckPointVoltageState(COLLECT_MODEA_CCUB); vol4Flag = CheckPointVoltageState(COLLECT_MODEB_CCUB); - dwErrorStartCyc = gPlatDataGPIOTolercance.powerBMode_TolCyc; - dwCurCyc = Get2oo2CurCycleNum(); /* 1PUB Bɼ24VAԴ쳣24VBԴ쳣 2CPI Bɼ24VAԴ24VBԴѹΪ0V */ + + + /*δʵPUBɼֻжϵԴѹ*/ if (((CHECK_VOLTAGE_ZERO == vol2Flag) || (CHECK_VOLTAGE_ZERO == vol4Flag)) && ((POWER_STATUS_ABNORMAL == powerAPUBBState) || (POWER_STATUS_ABNORMAL == powerBPUBBState))) { - /**/ - chCheckState = SystemOverTimeCheck(dwErrorStartCyc, IO_POWERSTATE_TOLERANCE); - if (CI_TIME_NO == chCheckState) - { - gPlatDataGPIOTolercance.powerBMode_TolCyc = dwCurCyc; - retVal = CI_SUCCESS; - } - else if (CI_TIME_IN == chCheckState) - { - retVal = CI_SUCCESS;/**/ - } - else - { - retVal = CI_ERROR; - debug_infor_printf((const)"PLATIO_B_Mode_Power_FaultState StartTime%d\n", dwErrorStartCyc); - } + retVal = CI_ERROR; } else { retVal = CI_SUCCESS; - gPlatDataGPIOTolercance.powerBMode_TolCyc = 0U; } return retVal; diff --git a/TSCP/src/APP/ciapp/DataManage/PlatDataManage.h b/TSCP/src/APP/ciapp/DataManage/PlatDataManage.h index 17b98fa..7395560 100644 --- a/TSCP/src/APP/ciapp/DataManage/PlatDataManage.h +++ b/TSCP/src/APP/ciapp/DataManage/PlatDataManage.h @@ -16,7 +16,7 @@ #include "CommonTypes.h" #include "../System/CiSystemDefine.h" -#include "../System/SystemParameterManage.h" + #define BOARD_TYPE_CCUA ((UINT8)0x09) /*ͨذA*/ @@ -60,8 +60,6 @@ #define VOLTAGE_MAX_TO_0 ((UINT16)500U) /*ѹжΪ0ֵ*/ -#define IO_POWERSTATE_TOLERANCE ((UINT8)0x02) /*ƽ̨Դ3ڣ2ڱ*/ - /*ƽ̨֡Ϣṹ*/ typedef struct S_PlatHeartDataStruct { @@ -103,14 +101,7 @@ typedef struct S_PlatGPIODataStruct }PlatGPIODataStruct; -/*ƽ̨͵ĵԴɼ״̬ͬ*/ -typedef struct S_PlatGPIOToleranceData -{ - UINT32 powerANode_TolCyc; /*AϵԴĹʼ*/ - UINT32 powerBNode_TolCyc; /*BϵԴĹʼ*/ - UINT32 powerAMode_TolCyc; /*AϵԴģĹʼ*/ - UINT32 powerBMode_TolCyc; /*BϵԴģĹʼ*/ -}PlatGPIOToleranceDataStruct; + diff --git a/TSCP/src/APP/ciapp/ERROR/ErrorDefine.h b/TSCP/src/APP/ciapp/ERROR/ErrorDefine.h index b687668..48a21ec 100644 --- a/TSCP/src/APP/ciapp/ERROR/ErrorDefine.h +++ b/TSCP/src/APP/ciapp/ERROR/ErrorDefine.h @@ -109,7 +109,6 @@ #define EFUNC_ROUTE_FIRST_LOG_UNLOCK ((UINT8)0x50) /*RouteFirstLogSecAutoUnlockProcess·һ߼Զ*/ #define EFUNC_SWITCHTESTLOGIC ((UINT8)0x80U) /*SetSwitchTestLogicManageλ*/ #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) /*·*/ @@ -136,6 +135,7 @@ #define EFUNC_CLD_CANCEL_D_TRAIN_ROUTE ((UINT8)0x66) /*ȡ·*/ #define EFUNC_CLD_CLOSE_GARAGEDOOR ((UINT8)0x67) /*رճ*/ #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_D_ERR_CLD ((UINT8)0x6a) #define EFUNC_KEEP_L_ERR_CLD ((UINT8)0x6b) @@ -178,8 +178,6 @@ #define EFUNC_LOGSEC_LAST_SECLOCK ((UINT8)0x92) /* CheckLogRouteLogSecLastSecLock */ #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߼·źſŴ*/ @@ -212,8 +210,6 @@ #define EFUNC_FIRSTLEAVE_LOGSEC_CHECK ((UINT8)0xD1) /*ȥ߼μRouteLeaveLogSecCheck*/ -#define EFUNC_OVERLAP_ZHAOCHA_CHECK ((UINT8)0xD3) /*ղ*/ - /*************************************************ֽ******************************************************************************/ /*************************************************ֽ******************************************************************************/ @@ -234,7 +230,6 @@ #define ETYPE_ROUTE_APPLY_SWITCH_CHECK ((UINT8)0x0b) /*·״̬*/ #define ETYPE_ROUTE_XUANPAI_OVERTIME ((UINT8)0x10) /*·ѡųʱ*/ #define ETYPE_GROUP_AUTO_ROUTE_STATE ((UINT8)0x16) /*Զ·*/ -#define ETYPE_ROUTE_APPLY_SWITCH_MOVE ((UINT8)0xA4) /*·*/ #define ETYPE_COMM_WITH_VOBC ((UINT8)0x11) /*VOBCͨ*/ @@ -318,7 +313,6 @@ #define ETYPE_CANCLE_ZHAOCHA ((UINT8)0x82) /*ȡղ̵*/ #define ETYPE_ZHAOCHA_ROUTE_OVERTIME ((UINT8)0x83) /*·ղ鳬ʱ*/ #define ETYPE_JKJ_WORK ((UINT8)0x84) /*ӦЧ*/ -#define ETYPE_ZHAOCHA_OVERLAP_OVERTIME ((UINT8)0x86) /*ղ鳬ʱ*/ /* عͱ (UINT8)0x91-(UINT8)0x9f */ /* 豸 @@ -385,16 +379,6 @@ #define ETYPE_LOGSEC_XIANSU_STATE ((UINT8)0xC5) /*߼*/ #define ETYPE_LOGSEC_FIRSTLOCK_STATE ((UINT8)0xC6) /*߼Ϊһμ*/ #define ETYPE_LOGSEC_CBTC_PROPERTY ((UINT8)0xC7) /*߼CBTCԼ*/ -#define ETYPE_LOGSEC_CONTINUOUS ((UINT8)0xC8) /*߼Լ*/ - -/*̬·*/ -#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 */ diff --git a/TSCP/src/APP/ciapp/ESB/ESBDataManage.c b/TSCP/src/APP/ciapp/ESB/ESBDataManage.c index f621b22..9e3a815 100644 --- a/TSCP/src/APP/ciapp/ESB/ESBDataManage.c +++ b/TSCP/src/APP/ciapp/ESB/ESBDataManage.c @@ -160,17 +160,12 @@ UINT8 EsbDataManageInit(void) EsbDataStru[esbId].CutStatus = ESB_CUT_NO; /*ESB·δ*/ EsbDataStru[esbId].EsbRelateRelayDriveState = ESB_PEPUP_ESSUP_INITION_STA; /*PEPESSЧ*/ 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].EsbPressCycNum = 0U; /*رհť*/ EsbDataStru[esbId].CancelEsbPressCycNum = 0U; /*ȡرհť*/ EsbDataStru[esbId].CancelEsbErrTriggerPressCycNum = 0U; /*ȡرհť󴥷*/ EsbDataStru[esbId].CancelEsbValidFlag = ESB_CANCEL_VALID_NO; /*ȡرհťЧ־*/ 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; return rtn; @@ -801,275 +796,5 @@ UINT8 GetCancelEsbRelayDownState(const UINT16 esbId) ; /*±겻Ϸִ״̬*/ } - 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; } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/ESB/ESBDataManage.h b/TSCP/src/APP/ciapp/ESB/ESBDataManage.h index de4f733..7495d3a 100644 --- a/TSCP/src/APP/ciapp/ESB/ESBDataManage.h +++ b/TSCP/src/APP/ciapp/ESB/ESBDataManage.h @@ -38,17 +38,12 @@ typedef struct S_EsbDataStruct UINT8 EssSteadyState; /*ESSȵ״̬ATS--0x55 Ҫȵƣ0xaaҪȵ*/ UINT8 EssFlashState; /*ESS״̬ATS--0x55 Ҫƣ0xaaҪ*/ UINT8 EsbErrorFlag; /*Ըʽͣťϱ־0x55δϣ0xaa*/ - UINT8 EsbRelayDownState; /*رհťɼ̵״̬0x55ɼ£0xaaͨ쳣*/ UINT8 CancelEsbErrorFlag; /*Ըʽȡͣťϱ־0x55δϣ0xaa*/ UINT32 EsbPressCycNum; /*رհť*/ UINT32 CancelEsbPressCycNum; /*ȡرհť*/ UINT32 CancelEsbErrTriggerPressCycNum; /*ȡرհť󴥷*/ UINT8 CancelEsbValidFlag; /*ȡرհťЧ־0x55Ч0xaaЧ*/ UINT8 CancelEsbRelayDownState; /*ȡرհťɼ̵״̬0x55ɼ£0xaaͨ쳣*/ - UINT32 EsbCutPressCycNum; /*ر·ť*/ - UINT32 EsbCutErrTriggerPressCycNum; /*ر·ť󴥷*/ - UINT8 EsbCutErrorFlag; /*ر·ťϱ־0x55-δϣ0xaa-*/ - UINT8 EsbCutRelayDownState; /*ر·ťɼ̵״̬0x55-ɼ£0xaa-ͨ쳣*/ } EsbDataStruct; /*******************************ȫֱ*******************************/ @@ -315,98 +310,6 @@ void SetCancelEsbRelayDownState(const UINT16 esbId, const UINT8 cRelayDownState) */ 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); - #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/EnvelopeManage/CTEnvelopeTrack.c b/TSCP/src/APP/ciapp/EnvelopeManage/CTEnvelopeTrack.c index 6166236..651c825 100644 --- a/TSCP/src/APP/ciapp/EnvelopeManage/CTEnvelopeTrack.c +++ b/TSCP/src/APP/ciapp/EnvelopeManage/CTEnvelopeTrack.c @@ -1161,7 +1161,7 @@ void elm_CTEnvelopeTrack(void) } else if ((CI_SUCCESS == funRet) && (1u == relEnvelopeCnt)) { - /* ֻCT漰BUT׷ٹ*/ + /* ֻCTBUT׷ٹ*/ elm_DealNoCGFollowUt(relEnvelopeID[0u], trainID[cycle]); /** ά־--Լ*/ @@ -1277,9 +1277,16 @@ void elm_DealNoCGFollowUt(UINT16 wEnvelopeID,UINT16 wTrainId) const EnvelopeStruct* pEnvelop = NULL; UINT8 chNoCGFollowUtSwitch = 0U; ELM_TrainSafeLocStruct safeLoc = { 0U }; /*гȫλ*/ + UINT8 chLinkRelPhySecAGorBGAttr = 0U;/*LINKABD*/ + UINT8 chEnvelopLinkABGAttr = 0U;/*LINKABG*/ + UINT16 wLinkRelatedPhySec = 0U;/*LINK*/ + UINT8 chPhyLjkFlag = 0U;/*м*/ + UINT16 wTrainEnterLjkLinkId = 0U;/*гмLINK ID*/ + UINT32 dwCycNum = 0U;/*ǰں*/ UINT16 wTempTrainID = 0U;/*ʱ¼гID*/ UINT8 chTempVirHeadScreenFlag = 0U;/*ʱǰɸ־*/ UINT8 chTempVirTailScreenFlag = 0U;/*ʱɸ־*/ + UINT8 chAgLinkExistRelCgFlag = 0U;/*AGǷCG־*/ /** ȡг */ pEnvelop = elm_GetEnvelopeInfoPtr(wEnvelopeID); @@ -1316,10 +1323,58 @@ void elm_DealNoCGFollowUt(UINT16 wEnvelopeID,UINT16 wTrainId) { if (0U == errorCode) { - /*AGɸѡ־*/ - elm_DealAgVirScreenFlag(wEnvelopeID, wTrainId); - /*BGɸѡ־*/ - elm_DealBgVirScreenFlag(wEnvelopeID, wTrainId); + 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ҵǰʻǰûǰ˿ҲǴBGijҲ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ҵǰʻǰûк˿ҲǴBGijҲ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 { @@ -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;/*LINKABG*/ - UINT8 chEnvelopLinkABGAttr = 0U;/*LINKABG*/ - 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ҵǰʻǰûǰ˿ҲǴBGijҲ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ҵǰʻǰûк˿ҲǴBGijҲ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;/*LINKABG*/ - UINT8 chEnvelopLinkABGAttr = 0U;/*LINKABG*/ - 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ҵǰʻǰûǰ˿ǴAGijҲ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ҵǰʻǰûк˿ǴAGijҲ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 - { - ; - } } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/EnvelopeManage/EnvelopeLogicProcess.c b/TSCP/src/APP/ciapp/EnvelopeManage/EnvelopeLogicProcess.c index 8a3b1f6..a164862 100644 --- a/TSCP/src/APP/ciapp/EnvelopeManage/EnvelopeLogicProcess.c +++ b/TSCP/src/APP/ciapp/EnvelopeManage/EnvelopeLogicProcess.c @@ -106,7 +106,7 @@ static UINT8 elm_UKTAdjacentSwProtect(void) 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_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); - if ((AAM_BAD_NEAR == nearTrainType) || (AAM_SLEEP_OCC == nearTrainType)) + if (AAM_BAD_NEAR == nearTrainType) { elm_PrepareClearSwPassTrainFlag(pACIdbuff[cycleAc]); ELM_LOG(ELM_LOG_FATAL,"info:Switch Zone AC%d Clear CT pass flag by backAC UT.\n",pACIdbuff[cycleAc]); @@ -330,12 +330,6 @@ static void elm_FlyingProtect(void) UINT16 wTrainId = 0U; UINT8 chTimeCheck = 0u; UINT32 dwFlyOverCyc = 0U; - UINT8 cNvramFlag = 0U; /*гʹNVRAM־*/ - UINT8 cPosMonistorState = 0U; /*гλüල״̬*/ - UINT8 cFuncSwitch = 0U; /*ʹNVRAMλλüලЧгɳ崻أ0xAA-ɳ崻 0x55-ɳ崻*/ - - /*ʹNVRAMλλüලЧķɳϢ*/ - ClearNvramFlyingTrain(); chCTCheck = elm_FlyingProtect_CT(); /*CTɳ*/ elm_FlyingProtect_UCT();/*UCTɳɾΪUKT*/ @@ -350,7 +344,7 @@ static void elm_FlyingProtect(void) { /** ȡõķɳ崻ʱ */ maxShutdownRedunTime = elm_PrepareCTFlyingRedunTime(); - cFuncSwitch = GetCiFunctionSwitchConfig(FUNC_NVRAM_TRAIN_FlYING_OVER); + for (ii = 0U; ii < trainCnt; ii++) { wTrainId = GetTrainId(ii); @@ -358,23 +352,13 @@ static void elm_FlyingProtect(void) { dwFlyStartCyc = GetTrainStartFlyProtectCycNum(wTrainId); chTimeCheck = SystemOverTimeCheck(dwFlyStartCyc, (UINT32)maxShutdownRedunTime); - - if (CI_TIME_OUT== chTimeCheck) + if (CI_TIME_OUT== chTimeCheck) { - cNvramFlag = GetTrainNvramPosFlag(wTrainId); - cPosMonistorState = GetTrainPosMonitorState(wTrainId); - if ((TRAIN_NVRAM_POS_FLAG_YES == cNvramFlag) && (TRAIN_POS_MONITOR_VALID != cPosMonistorState) && (FUNC_SWITCH_ON == cFuncSwitch)) - { - /*ʹNVRAMλλüලЧгɳNVRAMгɳ崻ش򿪣RCгɳؿرģ崻*/ - } - else - { - SetFlyProtectOverCyc(dwCurCyc); /*ɳ־*/ - } + SetFlyProtectOverCyc(dwCurCyc); /*ɳ־*/ } else { - ; /*δʱгͨж*/ + ; /*δʱ*/ } } } @@ -2052,8 +2036,6 @@ void elm_SafeProtectProcess(void) UINT8 workFlag = ELM_WORK_ERROR; UINT8 funRet = CI_ERROR; UINT32 errorCode = 0u; - UINT8 localCiType = 0U; - UINT8 ciTrainTestState = 0U; /** ģ־λ */ workFlag = elm_GetELMWorkFlag(); @@ -2073,17 +2055,8 @@ void elm_SafeProtectProcess(void) funRet = elm_UTLosingProtect(); ASSER_ERROR(CI_ERROR == funRet,errorCode,0x40000000u); - localCiType = GetLocalCiType(); - ciTrainTestState = GetCiTrainTestStatus(); - if ((CI_TYPE_SCX == localCiType) && ((CI_TRAIN_TEST_OFF == ciTrainTestState) || (CI_TRAIN_TEST_STOP == ciTrainTestState))) - { - ScxClearFlyProtectInfo(); /*ԳδԳڼ䣬зɳ崻ͬʱ֮ǰķɳϢ޸CTʻԳߵ·ɳ崻*/ - } - else - { - /** CT/UCTɳ--崻*/ - elm_FlyingProtect(); - } + /** CT/UCTɳ--崻*/ + elm_FlyingProtect(); /** OCΧڵļӳϷУ */ funRet = elm_ACRelEnvelopeCheck(); @@ -2622,7 +2595,6 @@ UINT8 elm_UCTEnvelopeLeaveAC(UINT8 flag,IN const EnvelopeStruct* pEnvelope,UINT1 UINT16 relEnvelopeID[TRAIN_REL_ENVELOPE_SUM_MAX] = {0u}; /*гİ*/ const EnvelopeStruct *pEnvelopeInfo = NULL; const WLTrainStatusInfoStruct* pTemp = NULL; - UINT8 chTrainNvramPosFlag = 0U; /*гNVRAMλñʶ*/ /* ڵĵ״̬óڵ״̬ */ for (cycle = 1u; cycle < LINE_MAX_TRAIN; cycle++) @@ -2668,19 +2640,10 @@ UINT8 elm_UCTEnvelopeLeaveAC(UINT8 flag,IN const EnvelopeStruct* pEnvelope,UINT1 if ((NULL != pEnvelopeInfo) && ((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) - { - 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"); - } + wls_SetTrainControlStatus(cycle,IN_CONTROL_STATUS,headNeedScreen,tailNeedScreen); } else { @@ -2801,24 +2764,25 @@ UINT8 elm_UCTEnvelopeLeaveAC(UINT8 flag,IN const EnvelopeStruct* pEnvelope,UINT1 * @return CI_ERROR ѯʧ CI_SUCCESS ѯɹ * @note - * edit cgh 20250724 ĿǰֻRRM + * by cgh 20240514 ĿǰֻRRM */ UINT8 elm_GetNearEnvelopRelSameTra(UINT16 envelopeId, OUT UINT16* preEnvelope, OUT UINT16* backEnvelope) { /*- ֲ */ UINT8 ret = CI_ERROR; UINT8 funRet = CI_ERROR; - UINT32 errorCode = 0U; /**/ + UINT32 errorCode = 0u; /**/ const EnvelopeStruct* pEnvelop = NULL; - UINT8 envelopeCnt = 0U; /* */ - UINT16 arEnvelopID[TRAIN_SUM_MAX_IN_OC] = { 0U }; /*ID*/ - UINT16 acCnt = 0U; /** ǰ*/ - UINT16 acID[AC_MAXCNT_IN_SWITCH * AC_MAXCNT_IN_SWITCH] = { 0U }; - UINT16 mergeACIndex = 0U; + UINT8 envelopeCnt = 0u; /* */ + UINT16 arEnvelopID[TRAIN_SUM_MAX_IN_OC] = { 0u }; /*ID*/ + UINT16 acCnt = 0u; /** ǰ*/ + UINT16 acID[AC_MAXCNT_IN_SWITCH * AC_MAXCNT_IN_SWITCH] = { 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 mergeACID[SECTION_IN_ENVELOPE_SUM_MAX + 2U * AC_MAXCNT_IN_SWITCH * AC_MAXCNT_IN_SWITCH] = { 0U }; - UINT8 includeCnt = 0U; - UINT16 includeELMid[TRAIN_SUM_MAX_IN_OC] = { 0U }; /** غϵİid */ + UINT16 mergeACID[SECTION_IN_ENVELOPE_SUM_MAX + 2U * AC_MAXCNT_IN_SWITCH * AC_MAXCNT_IN_SWITCH] = { 0u }; + UINT8 includeCnt = 0u; + UINT16 includeELMid[TRAIN_SUM_MAX_IN_OC] = { 0u }; /** غϵİid */ /** ȡг */ pEnvelop = elm_GetEnvelopeInfoPtr(envelopeId); @@ -2827,36 +2791,63 @@ UINT8 elm_UCTEnvelopeLeaveAC(UINT8 flag,IN const EnvelopeStruct* pEnvelope,UINT1 if ((NULL == pEnvelop) || (NULL == preEnvelope) || (NULL == backEnvelope)) { /** ô*/ - ASSER_ERROR(CI_ERROR == funRet, errorCode, 0x80000000U); + ASSER_ERROR(CI_ERROR == funRet, errorCode, 0x08000000u); } 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); - - /** ϲļ */ - mergeACIndex = elm_PrepareMergeUINT16Array(mergeACID, mergeACCntMax, mergeACIndex, pEnvelop->ACID, SECTION_IN_ENVELOPE_SUM_MAX, pEnvelop->ACCnt); - - /** ô*/ - ASSER_ERROR(mergeACIndex > mergeACCntMax, errorCode, 0x40000000U); - - if (0U == errorCode) + /** жϰβǷռãռãҪѯһ*/ + if (ELM_AC_OCC == acStatus) { - (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_GetEnvelopHeadACIDs(pEnvelop, acID); + /* ѯ󷽼ᣬβռãڵĿΪȷȻˣҪѯȫβڼ*/ + acCnt = elm_GetEnvelopTailACIDs(pEnvelop, acID); - /** ϲͷǰļ */ + /** ϲβ󷽵ļ */ 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); @@ -2865,7 +2856,7 @@ UINT8 elm_UCTEnvelopeLeaveAC(UINT8 flag,IN const EnvelopeStruct* pEnvelope,UINT1 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 { @@ -2879,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; } @@ -3064,13 +3055,9 @@ UINT8 elm_UCTEnvelopeLeaveAC(UINT8 flag,IN const EnvelopeStruct* pEnvelope,UINT1 UINT32 dwFlyStartCyc = 0U; UINT8 chTimeCheck = 0U; UINT8 flyCheck = 0U; - UINT8 cNvramFlag = 0U; /*гʹNVRAM־*/ - UINT8 cPosMonistorState = 0U; /*гλüල״̬*/ - UINT8 cFuncSwitch = 0U; /*ʹNVRAMλλüලЧгɳ崻أ0xAA-ɳ崻 0x55-ɳ崻*/ - /** CTɳ*/ trainCnt = elm_PrepareCommTrainID(trainID); - cFuncSwitch = GetCiFunctionSwitchConfig(FUNC_NVRAM_TRAIN_FlYING_OVER); + /** еͨų */ for (cycle = 0u; cycle < trainCnt; cycle++) { @@ -3117,17 +3104,7 @@ UINT8 elm_UCTEnvelopeLeaveAC(UINT8 flag,IN const EnvelopeStruct* pEnvelope,UINT1 chTimeCheck = SystemOverTimeCheck(dwFlyStartCyc, (UINT32)maxShutdownRedunTime); if (CI_TIME_OUT == chTimeCheck) { - cNvramFlag = GetTrainNvramPosFlag(trainID[cycle]); - cPosMonistorState = GetTrainPosMonitorState(trainID[cycle]); - if ((TRAIN_NVRAM_POS_FLAG_YES == cNvramFlag) && (TRAIN_POS_MONITOR_VALID != cPosMonistorState) && (FUNC_SWITCH_ON == cFuncSwitch)) - { - /*ʹNVRAMλλüලЧгɳNVRAMгɳ崻ش򿪣RCгɳؿرģ崻*/ - AddNvramFlyingTrain(trainID[cycle]); - } - else - { - elm_AddFlyingTrain(trainID[cycle], pEnvelop->id); - } + elm_AddFlyingTrain(trainID[cycle], pEnvelop->id); } flyCheck++; } diff --git a/TSCP/src/APP/ciapp/EnvelopeManage/EnvelopeLogicProcess.h b/TSCP/src/APP/ciapp/EnvelopeManage/EnvelopeLogicProcess.h index e03696a..5f9623f 100644 --- a/TSCP/src/APP/ciapp/EnvelopeManage/EnvelopeLogicProcess.h +++ b/TSCP/src/APP/ciapp/EnvelopeManage/EnvelopeLogicProcess.h @@ -486,22 +486,4 @@ void elm_FlyingProtect_UCT(void); */ 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 \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/EnvelopeManage/EnvelopeScreen.c b/TSCP/src/APP/ciapp/EnvelopeManage/EnvelopeScreen.c index 04aad90..e637825 100644 --- a/TSCP/src/APP/ciapp/EnvelopeManage/EnvelopeScreen.c +++ b/TSCP/src/APP/ciapp/EnvelopeManage/EnvelopeScreen.c @@ -634,7 +634,6 @@ void elm_WLScreenProcess(void) UINT8 relEnvelopeCnt= TRAIN_REL_ENVELOPE_SUM_MAX; /*гİ*/ UINT16 relEnvelopeID[TRAIN_REL_ENVELOPE_SUM_MAX] = {0u}; /*гİ*/ const EnvelopeStruct *pEnvelopeInfo = NULL; - UINT8 chTrainNvramPosFlag = 0U; /*гNVRAMλñʶ*/ /** ȡȫɸ־ */ wlsFlag = wls_GetWLScreenPermitFlag(); @@ -654,37 +653,26 @@ void elm_WLScreenProcess(void) ((TYPE_CT_ENVELOPE == pEnvelopeInfo->envelopeType) || (TYPE_UCT_ENVELOPE == pEnvelopeInfo->envelopeType))) { ELM_LOG(ELM_LOG_FATAL,"info:ELM%d WLS Process,",pEnvelopeInfo->id); - chTrainNvramPosFlag = GetTrainNvramPosFlag(cycle); - - if (TRAIN_NVRAM_POS_FLAG_NO == chTrainNvramPosFlag) + if (LINE_MAX_TRAIN == pEnvelopeInfo->headTrainID) { - if (LINE_MAX_TRAIN == pEnvelopeInfo->headTrainID) - { - 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 - { - /* */ - } - + ELM_LOG(ELM_LOG_FATAL," delete Head suspicious,"); + (void)elm_SetEnvelopeHeadTrainID(pEnvelopeInfo->id,0u); } 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 diff --git a/TSCP/src/APP/ciapp/EnvelopeManage/UCTEnvelopeTrack.c b/TSCP/src/APP/ciapp/EnvelopeManage/UCTEnvelopeTrack.c index 99c2605..3bc3b34 100644 --- a/TSCP/src/APP/ciapp/EnvelopeManage/UCTEnvelopeTrack.c +++ b/TSCP/src/APP/ciapp/EnvelopeManage/UCTEnvelopeTrack.c @@ -1990,15 +1990,16 @@ static UINT8 elm_UCTEnvelopeHeadHandle(UINT8 endlineFlag, IN const EnvelopeStruc /** ǰ˿ */ funRtn = elm_SetEnvelopeHeadTrainID(ptemp->id, pPretemp->headTrainID); 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 { - funRtn = elm_DeleteCTOrUCTEnvelope(ptemp->id); - ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x00000400u); + funRtn = elm_SetEnvelopeHeadTrainID(ptemp->id, LINE_MAX_TRAIN); + 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; } @@ -2114,10 +2115,8 @@ static UINT8 elm_UCTEnvelopeHeadHandle(UINT8 endlineFlag, IN const EnvelopeStruc wAgLink = GetBGLinkRelAGLinkId(wLinkId); chBgUtSwitch = GetNoCGFollowUtSwitch(); wNextLinkId = FindAdjacentLinkIDSafe(wLinkId, ptemp->endPos.Dir, &wSwitchId, &cDirectionPointFlag); - if ((FUNC_SWITCH_ON == chBgUtSwitch) && (LINK_REL_PHYSEC_BG == chBgAtt) && (wNextLinkId == wAgLink) - && ((pPretemp->startPos.Lnk == wAgLink) || (pPretemp->endPos.Lnk == wAgLink)) - && (1U == ptemp->ACCnt)) - {/* BUT׷ٿش򿪣UCTB죬A죬CTA죬˳ */ + if ((FUNC_SWITCH_ON == chBgUtSwitch) && (LINK_REL_PHYSEC_BG == chBgAtt) && (wNextLinkId == wAgLink) && ((pPretemp->startPos.Lnk == wAgLink) || (pPretemp->endPos.Lnk == wAgLink))) + {/* BUT׷ٿش򿪣UCTB죬A죬CTA죬˳ */ ret = 0x55u; } else @@ -2272,8 +2271,7 @@ static UINT8 elm_UCTEnvelopeHeadMoving(const EnvelopeStruct *ptemp) UINT8 includeCnt = 0u; UINT16 includeELMid[TRAIN_SUM_MAX_IN_OC] = {0u}; /** غϵİid */ UINT8 cHeadDirChangeFlag = DIRECTIONPOINT_FLAG_INVALID; /*ͷ仯־*/ - const EnvelopeStruct* pPretemp = NULL; - UINT16 wInputAcId = 0U; + /** ڲУ */ ASSERT_RET_VALUE(NULL == ptemp,ret,0x80000000u); @@ -2385,30 +2383,7 @@ static UINT8 elm_UCTEnvelopeHeadMoving(const EnvelopeStruct *ptemp) if (0u == errorCode) { endLineFlag = (0u == acSameCnt) ? CI_SUCCESS : CI_ERROR; - wInputAcId = acSameID[0U]; - 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); + funRtn = elm_UCTEnvelopeHeadHandle(endLineFlag,ptemp,acSameID[0u],preEnvelope, cHeadDirChangeFlag); ASSER_ERROR(CI_ERROR == funRtn,errorCode,0x00400000u); if (CI_ERROR != funRtn) @@ -2659,17 +2634,17 @@ static UINT8 elm_UCTEnvelopeTailHandle(UINT8 endlineFlag, const EnvelopeStruct * 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 { - funRtn = elm_DeleteCTOrUCTEnvelope(ptemp->id); - ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x00000800u); + funRtn = elm_SetEnvelopeTailTrainID(ptemp->id, LINE_MAX_TRAIN); + 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; } @@ -2786,10 +2761,8 @@ static UINT8 elm_UCTEnvelopeTailHandle(UINT8 endlineFlag, const EnvelopeStruct * wAgLink = GetBGLinkRelAGLinkId(wLinkId); chBgUtSwitch = GetNoCGFollowUtSwitch(); wNextLinkId = FindAdjacentLinkIDSafe(wLinkId, ~ptemp->startPos.Dir, &wSwitchId, &cDirectionPointFlag); - if ((FUNC_SWITCH_ON == chBgUtSwitch) && (LINK_REL_PHYSEC_BG == chBgAtt) && (wNextLinkId == wAgLink) - && ((pBacktemp->startPos.Lnk == wAgLink) || (pBacktemp->endPos.Lnk == wAgLink)) - && (1U == ptemp->ACCnt)) - {/* BUT׷ٿش򿪣UCTB죬A죬CTA죬˳ */ + if ((FUNC_SWITCH_ON == chBgUtSwitch) && (LINK_REL_PHYSEC_BG == chBgAtt) && (wNextLinkId == wAgLink) && ((pBacktemp->startPos.Lnk == wAgLink) || (pBacktemp->endPos.Lnk == wAgLink))) + {/* BUT׷ٿش򿪣UCTB죬A죬CTA죬˳ */ ret = 0x55u; } else @@ -2943,8 +2916,6 @@ static UINT8 elm_UCTEnvelopeTailMoving(const EnvelopeStruct *ptemp) UINT8 includeCnt = 0u; UINT16 includeELMid[TRAIN_SUM_MAX_IN_OC] = {0u}; /** غϵİid */ UINT8 cTailDirChangeFlag = DIRECTIONPOINT_FLAG_INVALID; /*β仯־*/ - const EnvelopeStruct* pBacktemp = NULL; - UINT16 wInputAcId = 0U; /** ڲУ */ ASSERT_RET_VALUE(NULL == ptemp,ret,0x80000000u); @@ -3057,32 +3028,8 @@ static UINT8 elm_UCTEnvelopeTailMoving(const EnvelopeStruct *ptemp) if (0u == errorCode) { endLineFlag = (0u == acConvertCnt) ? CI_SUCCESS : CI_ERROR; - wInputAcId = acConvertID[0U]; - pBacktemp = elm_GetEnvelopeInfoPtr(backEnvelope); - 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); + funRtn = elm_UCTEnvelopeTailHandle(endLineFlag,ptemp,acConvertID[0u],backEnvelope, cTailDirChangeFlag); + ASSER_ERROR(CI_ERROR == funRtn,errorCode,0x00400000u); if (CI_ERROR != funRtn) { @@ -3295,11 +3242,10 @@ static UINT8 elm_UCTEnvelopeMoving(const EnvelopeStruct* ptemp) * @return CI_ERROR תʧ * CI_SUCCESS תɹ * @note CTתUCTʱҪ㣺 - 1ǰ˿ - 2ڰĵĿռã - 3Ϊ߳, - 4гС·С -* by cgh 20250915 + 1ǰ˿ + 2ڰĵĿռã + 3Ϊ߳, + 4гС·С */ static UINT8 elm_ConvertToUCTCheck(const EnvelopeStruct* ptemp) { @@ -3310,8 +3256,6 @@ static UINT8 elm_ConvertToUCTCheck(const EnvelopeStruct* ptemp) UINT8 chCanUct = FLAG_SET; UINT32 minTrainLength = 0U; UINT32 dwTempLength = 0U; - UINT8 chTrainNvramPosFlag = 0U; - UINT8 chTrainIsIsFollowUtFlag = 0U;/*ǷΪг׷UT*/ /** ڲУ */ ASSERT_RET_VALUE(NULL == ptemp,ret,0x80000000U); @@ -3352,28 +3296,6 @@ static UINT8 elm_ConvertToUCTCheck(const EnvelopeStruct* ptemp) { ; /* תΪUCT */ } - - if (0U == errorCode) - { - /** ȡгǷʹNVRAMλ */ - chTrainNvramPosFlag = GetTrainNvramPosFlag(ptemp->trainID[0U]); - ASSER_ERROR(TRAIN_NVRAM_POS_FLAG_NO != chTrainNvramPosFlag, errorCode, 0x04000000U); - } - else - { - ; /* תΪUCT */ - } - - if (0U == errorCode) - { - /** ȡгǷڿ׷UT */ - chTrainIsIsFollowUtFlag = CheckTrainIsFollowUt(ptemp->id); - ASSER_ERROR(CI_SUCCESS == chTrainIsIsFollowUtFlag, errorCode, 0x02000000U); - } - else - { - ; /* תΪUCT */ - } /** úֵ */ ASSERT_SETRET(0U == errorCode,ret,CI_SUCCESS,CI_ERROR); diff --git a/TSCP/src/APP/ciapp/IO/DeviceRelayDataProcess.c b/TSCP/src/APP/ciapp/IO/DeviceRelayDataProcess.c index 7579e4c..8734fe7 100644 --- a/TSCP/src/APP/ciapp/IO/DeviceRelayDataProcess.c +++ b/TSCP/src/APP/ciapp/IO/DeviceRelayDataProcess.c @@ -21,7 +21,6 @@ #include "../Section/PhysicalSectionConfigDataManage.h" #include "AxisAssertManage.h" #include "AxisAssertDataPrepare.h" -#include "dquCIInit.h" /*źŻ̵ʱʱ()*/ #define SIG_RELAY_DRV_DELAY_TIME ((UINT32)3) @@ -547,6 +546,7 @@ void OcSignalDeviceOutput(void) UINT32 signalDriCloseStartCyc = 0U;/*źŻرʼ*/ UINT32 signalDriCloseTimeCount = 0U;/*źŻرճʱ*/ UINT8 driveRetVal = 0U; + UINT32 jkjValidCycNum = 0u; UINT8 jkjRelayValidFlag = 0u; signalCurSum = GetSignalCurSum(); /*ȡźŻ*/ @@ -570,9 +570,10 @@ void OcSignalDeviceOutput(void) if (SIGNAL_DRIVECOLOUR_NULL == curDrvColor) {/*źŻЧ*/ jkjRelayValidFlag = GetCiJkjFlag(); + jkjValidCycNum = GetJkjRelayValidCycNum(); curShowColor = GetSignalCurColor(signalId); if (((SIGNAL_SHOWCOLOUR_REDYELLOW == curShowColor) || (SIGNAL_SHOWCOLOUR_RED_WHITE == curShowColor)) && - (JKJ_REYLAY_VALID == jkjRelayValidFlag)) + (JKJ_REYLAY_VALID == jkjRelayValidFlag) && (jkjValidCycNum > 0u)) { /*źſʱӦЧ֮˹źſţִ*/ } @@ -670,10 +671,7 @@ UINT8 GetOcSignalColor(UINT16 signalId) UINT8 funSwitchGreenYellow = GetCiFunctionSwitchConfig(CI_FUNCTION_SWITCH_SHOW_SIGNAL_GreenYellow);/*ʾ̻ƹܿǷ*/ UINT8 ciType = GetLocalCiType(); UINT8 signalState = 0U; - UINT16 bufIndex = 0U; - UINT8 funSwitchALLCloseUseBlue = GetCiFunctionSwitchConfig(FUNC_SWITCH_ZX_ALLCLOSE_USEBLUE);/*ƾתƹܿ*/ - UINT8 chBlueDsFlag = FLAG_UNSET; - bufIndex = GetSignalConfigBufIndex(signalId); /*ȡ±*/ + belongOcId = (UINT8)GetSignalBelongOcId(signalId);/*ȡźŻOc id*/ if ((0u < belongOcId) && (OC_SUM_MAX> belongOcId)) @@ -717,30 +715,15 @@ UINT8 GetOcSignalColor(UINT16 signalId) { /*Ϣ*/ SetSignalBoardState(m_Signals[indexFind].DeviceId, OC_SIGNAL_BOARD_FAULT_NO); - - /*ɼƶ˿תΪƴ*/ - signalState = m_Signals[indexFind].DeviceState; - if ((OC_SIGNAL_SHOWCOLOR_BLUE_BREAK == signalState) && (CI_TYPE_CLD != ciType)) - { - signalState = OC_SIGNAL_SHOWCOLOR_BLUE; - chBlueDsFlag = FLAG_SET; - SignalDataStru[bufIndex].BlueDsBreakFlag = SIGNAL_DS_BREAK_YES; - } - else - { - ; /**/ - } - /**/ - if (OC_SIGNAL_SHOWCOLOR_ALL_CLOSE == signalState)/**/ + if (OC_SIGNAL_SHOWCOLOR_ALL_CLOSE == m_Signals[indexFind].DeviceState)/**/ { /*ƣȡ֮ǰɫ*/ sigPreDriveColor = GetSignalPreDriveColor(m_Signals[indexFind].DeviceId); sigColorLevel = GetSignalColorLevel(sigPreDriveColor); - if ((SIGNAL_LIGHT_EXTICT_STATE_NO == sigColorLevel) && - ((FUNC_SWITCH_OFF == funSwitchGreenYellow)&&(FUNC_SWITCH_OFF == funSwitchALLCloseUseBlue))) + if ((SIGNAL_LIGHT_EXTICT_STATE_NO == sigColorLevel) && (FUNC_SWITCH_OFF == funSwitchGreenYellow)) { /*OCȫ̼ʱ*/ SetOcSignalStartCycNum(m_Signals[indexFind].DeviceId, 0); @@ -779,20 +762,15 @@ UINT8 GetOcSignalColor(UINT16 signalId) } #endif } - else if ((OC_SIGNAL_SHOWCOLOR_BLUE == signalState) && - ((FUNC_SWITCH_ON == funSwitchGreenYellow)||(FUNC_SWITCH_ON == funSwitchALLCloseUseBlue)) &&(CI_TYPE_CLD != ciType)) + else if ((OC_SIGNAL_SHOWCOLOR_BLUE == m_Signals[indexFind].DeviceState) && (FUNC_SWITCH_ON == funSwitchGreenYellow) &&(CI_TYPE_CLD != ciType)) { - /*ɼ dz ʾ̻Ƶƻƾƿش򿪣ȡ仯֮ǰɫ*/ + /*人ش򿪣ȡ仯֮ǰɫ*/ sigPreDriveColor = GetSignalPreDriveColor(m_Signals[indexFind].DeviceId); sigColorLevel = GetSignalColorLevel(sigPreDriveColor); /*OCȫ̼ʱ*/ SetOcSignalStartCycNum(m_Signals[indexFind].DeviceId, 0); - if (FLAG_UNSET == chBlueDsFlag) - { - /*ڲɼ ƶ˿־*/ - SignalDataStru[bufIndex].BlueDsBreakFlag = SIGNAL_DS_BREAK_NO; - } + if (SIGNAL_LIGHT_EXTICT_STATE_NO == sigColorLevel) { /*źŻɫΪƲô*/ @@ -816,6 +794,7 @@ UINT8 GetOcSignalColor(UINT16 signalId) { /*OCȫ̼ʱ*/ SetOcSignalStartCycNum(m_Signals[indexFind].DeviceId, 0); + signalState = m_Signals[indexFind].DeviceState; sigPreDriveColor = GetSignalPreDriveColor(m_Signals[indexFind].DeviceId); sigCurShowColor = GetSignalCurColor(m_Signals[indexFind].DeviceId); switch (signalState) @@ -887,8 +866,15 @@ UINT8 GetOcSignalColor(UINT16 signalId) break; case OC_SIGNAL_SHOWCOLOR_BLUE_BREAK: /* ޸:by pfq 2022.03.28 ƶ˿źŻԵ⣬ƶ˿ת*/ - /*תΪ*/ - rtnSigColor = SIGNAL_SHOWCOLOUR_REDBREAK; + /*޸ 人Ϊ*/ + if (CI_TYPE_CLD != ciType) + { + rtnSigColor = SIGNAL_SHOWCOLOUR_BLUEBREAK; + } + else + { + rtnSigColor = SIGNAL_SHOWCOLOUR_REDBREAK; + } break; case OC_SIGNAL_SHOWCOLOR_YELLOW_2_BREAK: rtnSigColor = SIGNAL_SHOWCOLOUR_YELLOWBREAK; @@ -896,12 +882,6 @@ UINT8 GetOcSignalColor(UINT16 signalId) case OC_SIGNAL_SHOWCOLOR_GREEN_2_BREAK: rtnSigColor = SIGNAL_SHOWCOLOUR_GREENBREAK; break; - case OC_SIGNAL_SHOWCOLOR_DL_OVERLOAD: - case OC_SIGNAL_SHOWCOLOR_DY_OVERLOAD: - case OC_SIGNAL_SHOWCOLOR_DLDY_OVERLOAD: - case OC_SIGNAL_SHOWCOLOR_DY_ZERO: - rtnSigColor = SIGNAL_SHOWCOLOUR_REDBREAK; - break; default: /*by cgh 20230703 YF0083-772:OCrcźŻ״̬ΪǷֵbbrcźŻԸΪ*/ rtnSigColor = SIGNAL_SHOWCOLOUR_REDBREAK; @@ -926,6 +906,7 @@ UINT8 GetOcBoardFaultSignalColor(UINT16 signalId, UINT8 ocId) UINT8 rtnSigColor = 0u; UINT8 sigPreDriveColor = 0u; UINT8 sigMaintainState = 0u; + UINT8 funSwitchGreenYellow = GetCiFunctionSwitchConfig(CI_FUNCTION_SWITCH_SHOW_SIGNAL_GreenYellow);/*ʾ̻ƹܿǷ*/ transmitState = GetCiTransmitState(CI_SYSTEM_TYPE_OC, ocId); /*ͨ*/ if(TRANSMIT_STATE_GOOD == transmitState) @@ -936,7 +917,7 @@ UINT8 GetOcBoardFaultSignalColor(UINT16 signalId, UINT8 ocId) /*CBTCģʽ&&źŻά޵״̬ Ӱʹ--WGY 20220705*/ sigMaintainState = GetSignalMaintainState(signalId); sigPreDriveColor = GetSignalPreDriveColor(signalId); - if((SIGNAL_LIGHT_EXTICT_STATE_NO == stateSignalOpen)&&(MAINTAIN_STATE_NO == sigMaintainState)) + if((SIGNAL_LIGHT_EXTICT_STATE_NO == stateSignalOpen)&&(MAINTAIN_STATE_NO == sigMaintainState) && (FUNC_SWITCH_OFF == funSwitchGreenYellow)) { /*ƣȡ֮ǰɫ*/ @@ -962,7 +943,7 @@ UINT8 GetOcBoardFaultSignalColor(UINT16 signalId, UINT8 ocId) /*ȡ*/ SetSignalBoardState(signalId,OC_SIGNAL_BOARD_FAULT_NO); /*ú*/ - rtnSigColor = SIGNAL_SHOWCOLOUR_REDFAULT; + rtnSigColor = SIGNAL_SHOWCOLOUR_REDBREAK; } return rtnSigColor; @@ -978,124 +959,90 @@ UINT8 SetSignalColorOcAllOff(const UINT16 signalId) { /*ʼ*/ UINT8 signalCurColor = 0u; - UINT8 rtnSigColor = SIGNAL_SHOWCOLOUR_REDBREAK; + UINT8 rtnSigColor = 0u; UINT32 signalCycNum = 0u; UINT32 curCycNum = 0u; UINT8 checkCycOut = 0u; UINT8 preDriveColor = 0u; UINT32 signalRongrenNum = 0u; UINT8 funSwitchGreenYellow = GetCiFunctionSwitchConfig(CI_FUNCTION_SWITCH_SHOW_SIGNAL_GreenYellow);/*ʾ̻ƹܿǷ*/ - UINT8 funSwitchALLCloseUseBlue = GetCiFunctionSwitchConfig(FUNC_SWITCH_ZX_ALLCLOSE_USEBLUE);/*ƾתƹܿ*/ - UINT16 bufIndex = GetSignalConfigBufIndex(signalId); /*ȡźŻ±*/ - if (SIGNAL_SUM_MAX > bufIndex) + /*ȡǰɫΪźŻǰɫδ£ǻȡһɫ*/ + signalCurColor = GetSignalCurColor(signalId); + curCycNum = Get2oo2CurCycleNum(); + + /*ʱõǰɫΪһɫ*/ + signalCycNum = GetOcSignalStartCycNum(signalId); + /*ȡϵͳõOCźŻȫʱ*/ + signalRongrenNum = GetSigCollectRongernCount(); + checkCycOut = SystemOverTimeCheck(signalCycNum,signalRongrenNum); + /*δʱ*/ + if(CI_TIME_NO == checkCycOut) { - /*ȡǰɫΪźŻǰɫδ£ǻȡһɫ*/ - signalCurColor = GetSignalCurColor(signalId); - curCycNum = Get2oo2CurCycleNum(); - - /*ʱõǰɫΪһɫ*/ - signalCycNum = GetOcSignalStartCycNum(signalId); - /*ȡϵͳõOCźŻȫʱ*/ - signalRongrenNum = GetSigCollectRongernCount(); - checkCycOut = SystemOverTimeCheck(signalCycNum, signalRongrenNum); - /*δʱ*/ - if (CI_TIME_NO == checkCycOut) + /*ɫ*/ + rtnSigColor = signalCurColor; + SetOcSignalStartCycNum(signalId,curCycNum); + } + /*ʱ*/ + else if(CI_TIME_OUT == checkCycOut) + { + /*ȡ֮ǰɫ*/ + preDriveColor = GetSignalPreDriveColor(signalId); + debug_infor_printf((const)"ALL CLOSE curCyc%d, SignalStartCycNum%d preDriveColor:%d \n.", curCycNum, signalCycNum, preDriveColor); + switch(preDriveColor) { - /*ɫ*/ - rtnSigColor = signalCurColor; - SetOcSignalStartCycNum(signalId, curCycNum); - } - /*ʱ*/ - else if (CI_TIME_OUT == checkCycOut) - { - /*ȡ֮ǰɫ*/ - preDriveColor = GetSignalPreDriveColor(signalId); - debug_infor_printf((const)"ALL CLOSE curCyc%d, SignalStartCycNum%d preDriveColor:%d \n.", curCycNum, signalCycNum, preDriveColor); - - switch (preDriveColor) + case SIGNAL_DRIVECOLOUR_RED: + /*ú*/ + rtnSigColor = SIGNAL_SHOWCOLOUR_REDBREAK; + break; + case SIGNAL_DRIVECOLOUR_YELLOW: + /*ûƶ*/ + rtnSigColor = SIGNAL_SHOWCOLOUR_YELLOWBREAK; + break; + case SIGNAL_DRIVECOLOUR_DOUBLE_YELLOW: + case SIGNAL_DRIVECOLOUR_GREENYELLOW: + /*˫ ̻ ȫûƶ*/ + rtnSigColor = SIGNAL_SHOWCOLOUR_YELLOWBREAK; + break; + case SIGNAL_DRIVECOLOUR_DOUBLE_GREEN: + /*˫ȫ̶*/ + rtnSigColor = SIGNAL_SHOWCOLOUR_GREENBREAK; + break; + case SIGNAL_DRIVECOLOUR_GREEN: + /*̶*/ + rtnSigColor = SIGNAL_SHOWCOLOUR_GREENBREAK; + break; + /*ơ*/ + case SIGNAL_DRIVECOLOUR_REDYELLOW: + case SIGNAL_DRIVECOLOUR_RED_WHITE: + /*ú*/ + rtnSigColor = SIGNAL_SHOWCOLOUR_REDBREAK; + break; + case SIGNAL_DRIVECOLOUR_WHITE: + /*ð׶*/ + rtnSigColor = SIGNAL_SHOWCOLOUR_WHITEBREAK; + break; + case SIGNAL_DRIVECOLOUR_GREENCLOSE: + case SIGNAL_DRIVECOLOUR_YELLOWCLOSE: + case SIGNAL_DRIVECOLOUR_GREENYELLOWCLOSE: + /*̻ȫûƶ*/ + if (FUNC_SWITCH_ON == funSwitchGreenYellow) { - case SIGNAL_DRIVECOLOUR_RED: - /*ú*/ - rtnSigColor = SIGNAL_SHOWCOLOUR_REDBREAK; - break; - case SIGNAL_DRIVECOLOUR_YELLOW: - /*ûƶ*/ - rtnSigColor = SIGNAL_SHOWCOLOUR_YELLOWBREAK; - break; - case SIGNAL_DRIVECOLOUR_DOUBLE_YELLOW: - case SIGNAL_DRIVECOLOUR_GREENYELLOW: - /*˫ ̻ ȫûƶ*/ - rtnSigColor = SIGNAL_SHOWCOLOUR_YELLOWBREAK; - break; - case SIGNAL_DRIVECOLOUR_DOUBLE_GREEN: - /*˫ȫ̶*/ - rtnSigColor = SIGNAL_SHOWCOLOUR_GREENBREAK; - break; - case SIGNAL_DRIVECOLOUR_GREEN: - /*̶*/ - rtnSigColor = SIGNAL_SHOWCOLOUR_GREENBREAK; - break; - /*ơ*/ - case SIGNAL_DRIVECOLOUR_REDYELLOW: - case SIGNAL_DRIVECOLOUR_RED_WHITE: - /*ú*/ - rtnSigColor = SIGNAL_SHOWCOLOUR_REDBREAK; - break; - case SIGNAL_DRIVECOLOUR_WHITE: - /*ð׶*/ - rtnSigColor = SIGNAL_SHOWCOLOUR_WHITEBREAK; - break; - case SIGNAL_DRIVECOLOUR_GREENCLOSE: - case SIGNAL_DRIVECOLOUR_YELLOWCLOSE: - /*̻ȫ ̻Ƶƿش򿪻򺼵ʱ ȡ֮ǰɫ*/ - if ((FUNC_SWITCH_ON == funSwitchGreenYellow) || (FUNC_SWITCH_ON == funSwitchALLCloseUseBlue)) - { - rtnSigColor = preDriveColor; - SignalDataStru[bufIndex].BlueDsBreakFlag = SIGNAL_DS_BREAK_YES; - } - else - { - rtnSigColor = SIGNAL_SHOWCOLOUR_REDBREAK; - } - break; - case SIGNAL_DRIVECOLOUR_GREENYELLOWCLOSE: - /*̻ȫ ̻Ƶƿشʱ*/ - if (FUNC_SWITCH_ON == funSwitchGreenYellow) - { - rtnSigColor = preDriveColor; - SignalDataStru[bufIndex].BlueDsBreakFlag = SIGNAL_DS_BREAK_YES; - } - else - { - rtnSigColor = SIGNAL_SHOWCOLOUR_REDBREAK; - } - break; - case SIGNAL_DRIVECOLOUR_REDCLOSE: - /*¿شʱ*/ - if (FUNC_SWITCH_ON == funSwitchALLCloseUseBlue) - { - rtnSigColor = preDriveColor; - SignalDataStru[bufIndex].BlueDsBreakFlag = SIGNAL_DS_BREAK_YES; - } - else - { - rtnSigColor = SIGNAL_SHOWCOLOUR_REDBREAK; - } - break; - default: - /*״̬ ˴ɴ֧*/ - break; + rtnSigColor = SIGNAL_SHOWCOLOUR_BLUEBREAK; } - } - else - { - /*ɫ*/ - rtnSigColor = signalCurColor; + else + { + rtnSigColor = SIGNAL_SHOWCOLOUR_REDBREAK; + } + break; + default: + /*״̬ ˴ɴ֧*/ + break; } } else { - rtnSigColor = SIGNAL_SHOWCOLOUR_REDBREAK; /*źŻIDǷ*/ + /*ɫ*/ + rtnSigColor = signalCurColor; } return rtnSigColor; } @@ -1133,7 +1080,6 @@ void OcSignalDeviceInput(void) UINT8 addCiToCiCmdFlag = CI_ERROR; /*Ƿ*/ UINT32 signalDriveNewSigStartCyc = 0u; /*źŻźʼں*/ UINT32 signalDiffCyc = 0U; /*źſɫһ*/ - UINT8 cFuncRet = 0U; curCycNum= Get2oo2CurCycleNum(); signalCurSum = GetTotalSignalCurNum(); /*ȡźŻ*/ @@ -1168,16 +1114,6 @@ void OcSignalDeviceInput(void) { cheakdetain_1 = CheakDeatainState(detainCutRelayId, signalDetainRelayId); addCiToCiCmdFlag = CI_SUCCESS; - - cFuncRet = GetFstDetBtnCollTolerateRet(signalId); /*ȡ۳ť1ɼ̽*/ - if (CI_SUCCESS == cFuncRet) - { - cheakdetain_1 = CI_ERROR; /*δʱӰ۳Ч*/ - } - else - { - /*ʱ*/ - } } } else @@ -1191,16 +1127,6 @@ void OcSignalDeviceInput(void) /*Ӳ߿۳̵2 Ч*/ cheakdetain_2 = CheakDeatainState(detainCutRelayId_2, signalDetainRelayId_2); addCiToCiCmdFlag = CI_SUCCESS; - - cFuncRet = GetSndDetBtnCollTolerateRet(signalId); /*ȡ۳ť2ɼ̽*/ - if (CI_SUCCESS == cFuncRet) - { - cheakdetain_2 = CI_ERROR; /*δʱӰ۳Ч*/ - } - else - { - /*ʱ*/ - } } } else @@ -1213,7 +1139,6 @@ void OcSignalDeviceInput(void) { SignalZfsDetainBtnPro(signalId); SignalZfsCancelDetainBtnPro(signalId); - SignalZfsDetainCutBtnPro(signalId); signalDetainBtnActFlag = GetSignalDetainBtnActFlag(signalId); if (SIGNAL_ZFS_BTN_ACT_FLAG_NO != signalDetainBtnActFlag) { @@ -1688,6 +1613,8 @@ void DetZfsCancelBtnActFlagProc(const UINT16 wSignalId, const UINT16 wCancelDetB void SpksDisplayDrivOutput(void) { UINT16 spksCurSum = 0u; /*spksǰĿĬΪÿspksָʾ*/ + UINT16 spksCollId = 0u; /*spksɼ̵ ID*/ + UINT8 tmpCollRelayColState = 0u; /*spksɼ̵״̬*/ UINT8 tmpCutRelayColState = 0u; /*spks·̵״̬*/ UINT16 spksDisplayId = 0u; /*spksָʾƼ̵ID*/ UINT16 spksId = 0u; /*spks ID*/ @@ -1699,7 +1626,6 @@ void SpksDisplayDrivOutput(void) UINT32 spksflockStartNum = 0u; UINT32 dwSpksIndicDelayCount = 0u; UINT8 checkCycOut = 0u; - UINT8 cSpksState = 0U; spksCurSum = GetSpksSum(); /*ȡspksĬΪÿspksжӦָʾ*/ chLocalCiId = GetSystemParaLocalCiId(); /*ȡID*/ @@ -1718,6 +1644,9 @@ void SpksDisplayDrivOutput(void) for (ii = 0u; ii < spksCurSum; ii++) { spksId = GetSpksIdByIndex(ii); /*ȡspks ID*/ + + spksCollId = GetSpksColRelayId(spksId); /*ȡspksɼ̵ID*/ + tmpCollRelayColState = GetRelayCollState(spksCollId);/*ȡspksɼ̵״̬*/ spksDisplayId = GetSpksDisRelayId(spksId); /*spks IDȡspksָʾID*/ cutSpksId = GetSpksCutRelayId(spksId); /*ȡspks·ť̵ID*/ @@ -1737,24 +1666,26 @@ void SpksDisplayDrivOutput(void) { /*spksָʾ*/ if ((0u != spksDisplayId) && (UINT16_MAX != spksDisplayId)) - { - /*spksָʾƼ̵Ч*/ - cSpksState = GetSpksState(spksId); - if (SPKS_STATUS_YES == cSpksState) + {/*spksָʾƼ̵Ч*/ + if (RELAY_STATE_DOWN == tmpCollRelayColState) { /*SPKS̵ºʱ*/ spksflockStartNum = GetSpksflockStartNum(spksId);/*ȡSPKSʼ*/ dwSpksIndicDelayCount = GetSpksIndicDelayCount();/*ȡʱ*/ checkCycOut = SystemOverTimeCheck(spksflockStartNum,dwSpksIndicDelayCount); - if (CI_TIME_OUT == checkCycOut)/*ʱ*/ + if(CI_TIME_OUT == checkCycOut)/*ʱ*/ { - (void)SetRelayDriveState(spksDisplayId, RELAY_STATE_UP); /*ָʾ*/ - } + (void)SetRelayDriveState(spksDisplayId, RELAY_STATE_UP); /*ָʾ*/ + } else { (void)SetRelayDriveState(spksDisplayId,RELAY_STATE_DOWN); /*ָʾ*/ } } + else if (RELAY_STATE_UP == tmpCollRelayColState) + { + (void)SetRelayDriveState(spksDisplayId, RELAY_STATE_DOWN); /*ָʾ*/ + } else { (void)SetRelayDriveState(spksDisplayId, RELAY_STATE_DOWN); /*ָʾ*/ @@ -2019,43 +1950,45 @@ void EsbDisplayDrivOutput(void) /*ûESBվָ̨ʾƣ*/ } } - else if (FUNC_SWITCH_ESB_NINGXIANG_RAIL == funcswitchZfsBtn) - { - /*·ESBָʾƼ̵*/ - EsbNXRailDisplayDrivOutput(esbId); - } else { /*ԸʽesbָʾƼ̵*/ - esbState = GetEsbState(esbId); - /*ESBָʾ״̬*/ if ((0u != esbDisplayRelayId) && (UINT16_MAX != esbDisplayRelayId)) { - if (ESB_STATE_VALID_YES == esbState) + /*esbָʾƼ̵Ч*/ + if (RELAY_STATE_DOWN == tmpCollRelayColState) { - (void)SetRelayDriveState(esbDisplayRelayId, RELAY_STATE_UP); /*ESBָʾ*/ + (void)SetRelayDriveState(esbDisplayRelayId, RELAY_STATE_UP); /*ָʾ*/ + } + else if (RELAY_STATE_UP == tmpCollRelayColState) + { + (void)SetRelayDriveState(esbDisplayRelayId, RELAY_STATE_DOWN); /*ָʾ*/ } else { - (void)SetRelayDriveState(esbDisplayRelayId, RELAY_STATE_DOWN); /*δESBָʾ*/ + (void)SetRelayDriveState(esbDisplayRelayId, RELAY_STATE_DOWN); /*ָʾ*/ } } else { - /*ûESBָʾƣ*/ + /*esbťûָʾƼ̵*/ } - /*ESBվָ̨ʾ״̬*/ + /*ESBվָ̨ʾ״̬̫ԭ1Ŀ*/ if ((0u != esbPlatformDisRelayId) && (UINT16_MAX != esbPlatformDisRelayId)) { /*ESBָʾ״̬*/ - if (ESB_STATE_VALID_YES == esbState) + if (RELAY_STATE_DOWN == tmpCollRelayColState) { - (void)SetRelayDriveState(esbPlatformDisRelayId, RELAY_STATE_UP); /*ESBվָ̨ʾ*/ + (void)SetRelayDriveState(esbPlatformDisRelayId, RELAY_STATE_UP); /*ָʾ*/ + } + else if (RELAY_STATE_UP == tmpCollRelayColState) + { + (void)SetRelayDriveState(esbPlatformDisRelayId, RELAY_STATE_DOWN); /*ָʾ*/ } else { - (void)SetRelayDriveState(esbPlatformDisRelayId, RELAY_STATE_DOWN); /*δESBվָ̨ʾ*/ + (void)SetRelayDriveState(esbPlatformDisRelayId, RELAY_STATE_DOWN); /*ָʾ*/ } } else @@ -2157,7 +2090,7 @@ void DetainDisplayDrivOutput(void) else { /*Ըʽ۳ťʾƴ*/ - DriveZfsDetainBsRelay(signalId, signalDetainDisplayId, cutDetainDisplayId); + DriveZfsDetainBsRelay(signalId, signalDetainDisplayId); } } else @@ -2192,7 +2125,7 @@ void DetainDisplayDrivOutput(void) else { /*Ըʽ۳ťʾƴ*/ - DriveZfsDetainBsRelay(signalId, signalDetainDisplayId, cutDetainDisplayId); + DriveZfsDetainBsRelay(signalId, signalDetainDisplayId); } } } @@ -2217,8 +2150,6 @@ void DriveDetainBsRelay(const UINT16 signalId, const UINT16 signalCutDetainRelay UINT8 relayDetainValidFlag = 0u; UINT8 signalDetainFlag = 0u; /*źŻ۳־*/ UINT8 relayDrivState = 0u; /*̵״̬*/ - UINT16 wTempRelayId = 0U; - UINT8 cFuncRet = 0U; /*Ӳ߿۳·ťָʾƼ̵*/ if ((0u != signalCutDetainRelayId) && (UINT16_MAX != signalCutDetainRelayId) && (0u != cutDetainDisplayId) && (UINT16_MAX != cutDetainDisplayId)) @@ -2250,18 +2181,9 @@ void DriveDetainBsRelay(const UINT16 signalId, const UINT16 signalCutDetainRelay tmpCollRelayColState = GetRelayCollState(signalDetainRelayId);/*ȡ۳̵ɼ״̬*/ signalDetainFlag = GetSignalDetainFlag(signalId); /*ȡźŻ۳־*/ relayDrivState = GetRelayDriveState(signalDetainDisplayId); /*ȡ۳ָʾƼ̵״̬*/ - wTempRelayId = GetSignalDetainRelayId(signalId); - if (wTempRelayId == signalDetainRelayId) + if (((UP_VALID == relayDetainValidFlag) && (RELAY_DRIVE_STATE_UP == tmpCollRelayColState)) + || ((DOWN_VALID == relayDetainValidFlag) && (RELAY_DRIVE_STATE_DOWN == tmpCollRelayColState))) /*̵,۳*/ { - cFuncRet = GetFstDetBtnCollTolerateRet(signalId); /*ȡ۳ť1ɼ̽*/ - } - else - { - cFuncRet = GetSndDetBtnCollTolerateRet(signalId); /*ȡ۳ť2ɼ̽*/ - } - if (CI_SUCCESS != cFuncRet) - { - /*۳ť,۳*/ (void)SetRelayDriveState(signalDetainDisplayId, RELAY_STATE_UP); /*ָʾ*/ } else if (((UP_VALID == relayDetainValidFlag) && (RELAY_DRIVE_STATE_DOWN == tmpCollRelayColState)) @@ -2282,9 +2204,8 @@ void DriveDetainBsRelay(const UINT16 signalId, const UINT16 signalCutDetainRelay } } } - else + else /*̵״̬Ч۳*/ { - /*̵״̬Чδﵽɼʱ䣬жǷ*/ if ((SIGNAL_DETAIN_YES == signalDetainFlag) || (SIGNAL_DETAIN_XIANDI_ATSAUTO == signalDetainFlag) || (SIGNAL_DETAIN_ATS == signalDetainFlag) || (SIGNAL_DETAIN_ATS_AUTO == signalDetainFlag) || (SIGNAL_DETAIN_XIANDI == signalDetainFlag)) { /*۳ҲҪָʾ*/ @@ -2308,96 +2229,40 @@ void DriveDetainBsRelay(const UINT16 signalId, const UINT16 signalCutDetainRelay } /* -* Ըʽ۳ָʾ -* ˵const UINT16 signalId źŻID -* const UINT16 signalDetDisRelayId ۳ʾƼ̵ID -* const UINT16 signalDetCutDisRelayId ۳·ʾƼ̵ -* ֵ -* Modified By LQ 2025.07.03 +* Ըʽ۳ָʾ +* ˵const UINT16 signalId, źŻID +* const UINT16 signalDetainDisplayId, ۳ʾƼ̵1ID +* ֵ +* */ -void DriveZfsDetainBsRelay(const UINT16 signalId, const UINT16 signalDetDisRelayId, const UINT16 signalDetCutDisRelayId) +void DriveZfsDetainBsRelay(const UINT16 signalId, const UINT16 signalDetainDisplayId) { - UINT16 wSignalIdIndex = 0U; /*źŻID*/ - UINT16 wDetDisRelayIdIndex = 0U; /*̵ID*/ - UINT16 wDetCutDisRelayIdIndex = 0U; /*̵ID*/ UINT8 localCiId = 0U; /*ID*/ - UINT8 detBsRelayBelongCi = 0U; /*۳ʾƼ̵CI*/ + UINT8 detainBsRelayBelongCi = 0u; /*۳ʾƼ̵CI*/ UINT8 detainBtnActFlag = SIGNAL_ZFS_BTN_ACT_FLAG_NO; /*۳ť1־*/ - UINT8 cDetCutBsRelayBelongCi = 0U; /*۳·ťʾƼ̵CI*/ - UINT8 cDetCutBtnState = 0U; /*۳·ť״̬*/ - wSignalIdIndex = GetSignalConfigBufIndex(signalId); /*ȡźŻ±*/ + localCiId = GetSystemParaLocalCiId(); + detainBsRelayBelongCi = GetRelayBelongCiId(signalDetainDisplayId); - if (SIGNAL_SUM_MAX > wSignalIdIndex) + /*Ӳ߿۳ťָʾ1̵*/ + if ((0u != signalDetainDisplayId) && (UINT16_MAX != signalDetainDisplayId) && (0U != localCiId) && (localCiId == detainBsRelayBelongCi)) { - localCiId = GetSystemParaLocalCiId(); + /*ȡԸʽ۳ť1־*/ + detainBtnActFlag = GetSignalDetainBtnActFlag(signalId); - /*۳ťʾ*/ - wDetDisRelayIdIndex = GetRelayConfigBufIndex(signalDetDisRelayId); /*ȡ۳ťʾƼ̵±*/ - if (RELAY_SUM_MAX > wDetDisRelayIdIndex) - { - detBsRelayBelongCi = GetRelayBelongCiId(signalDetDisRelayId); - - /*ÿ۳ťʾƼ̵״̬*/ - if ((0U != localCiId) && (localCiId == detBsRelayBelongCi)) - { - /*ȡԸʽ۳ť1־*/ - detainBtnActFlag = GetSignalDetainBtnActFlag(signalId); - - /*ÿ۳ָʾ״̬*/ - if (SIGNAL_ZFS_BTN_ACT_FLAG_YES == detainBtnActFlag) - { - (void)SetRelayDriveState(signalDetDisRelayId, RELAY_STATE_UP); /*۳ť۳ָʾ*/ - } - else - { - (void)SetRelayDriveState(signalDetDisRelayId, RELAY_STATE_DOWN); /*۳ťδ۳ָʾ*/ - } - } - else - { - /*DZ̵*/ - } + /*ÿ۳ָʾ1״̬*/ + if (SIGNAL_ZFS_BTN_ACT_FLAG_YES == detainBtnActFlag) + { + (void)SetRelayDriveState(signalDetainDisplayId, RELAY_STATE_UP); /*۳ť۳ָʾ*/ } else { - /**/ - } - - /*۳·ťʾ*/ - wDetCutDisRelayIdIndex = GetRelayConfigBufIndex(signalDetCutDisRelayId); /*ȡ۳·ťʾƼ̵±*/ - if (RELAY_SUM_MAX > wDetCutDisRelayIdIndex) - { - cDetCutBsRelayBelongCi = GetRelayBelongCiId(signalDetCutDisRelayId); - /*ÿ۳·ťʾƼ̵״̬*/ - if ((0U != localCiId) && (localCiId == cDetCutBsRelayBelongCi)) - { - /*ȡԸʽ۳·ť״̬*/ - cDetCutBtnState = GetDetCutBtnState(signalId); - - /*ÿ۳·ťָʾ״̬*/ - if (SIGNAL_DETAIN_CUT_VALID_YES == cDetCutBtnState) - { - (void)SetRelayDriveState(signalDetCutDisRelayId, RELAY_STATE_UP); /*۳·ťЧ۳ָʾ*/ - } - else - { - (void)SetRelayDriveState(signalDetCutDisRelayId, RELAY_STATE_DOWN); /*۳·ťЧ۳ָʾ*/ - } - } - else - { - /*DZ̵*/ - } - } - else - { - /**/ + (void)SetRelayDriveState(signalDetainDisplayId, RELAY_STATE_DOWN); /*۳ťδ۳ָʾ*/ } } else { - /**/ + /*źŻûп۳ťָʾƣ*/ } } @@ -2773,6 +2638,7 @@ void SignalDeviceToRelayStateProc(void) UINT16 replxRelayId = 0u; /*ʾгźż̵ID*/ UINT16 ddRelayId = 0u; /*Ƽ̵ID*/ + UINT32 jkjValidCycNum = 0u; UINT8 jkjRelayValidFlag = 0u; UINT8 checkRes = CI_TIME_OUT; UINT32 sigCycle = 0u; @@ -2792,23 +2658,30 @@ void SignalDeviceToRelayStateProc(void) signalCurSum = GetTotalSignalCurNum(); /*ȡźŻ*/ localCiId = GetSystemParaLocalCiId(); /*ȡID*/ + + firDsRelayId = GetSignalFirstDsRelayId(signalId); /*ȡźŻ1˿̵ID*/ + secDsRelayId = GetSignalSecondDsRelayId(signalId); /*ȡźŻ2˿̵ID*/ + lxRelayId = GetSignalLxRelayId(signalId); /*ȡźŻгźż̵ID*/ + zxRelayId = GetSignalZxRelayId(signalId); /*ȡźŻźż̵ID*/ + yxRelayId = GetSignalYxRelayId(signalId); /*ȡźŻźż̵ID*/ + dxRelayId = GetSignalDxRelayId(signalId); /*ȡźŻźż̵ID*/ + yellowRelayId = GetSignalYellowRelayId(signalId); /*ƵƼ̵ID*/ + greenRelayId = GetSignalGreenRelayId(signalId); /*̵Ƽ̵ID*/ + blueRelayId = GetSignalBlueRelayId(signalId); /*Ƽ̵ID*/ + replxRelayId = GetSignalRepLxRelayId(signalId); /*ʾг̵ID*/ + ddRelayId = GetSignalDdRelayId(signalId); /*ȡźŻƼ̵ID*/ + /*źŻ*/ for (ii = 0u; ii < signalCurSum; ii++) { + signalId = 0u; /*źŻID*/ + signalBelongCi = 0u; /*źŻID*/ + curDrvColor = 0u; /*źŻǰɫ*/ + signalId = GetSignalId(ii); /*ȡźŻID*/ signalBelongCi = GetSignalBelongCiId(signalId); /*ȡźŻID*/ signalVirtualAttr = GetSignalVirtualAttr(signalId);/*ȡźŻ*/ - firDsRelayId = GetSignalFirstDsRelayId(signalId); /*ȡźŻ1˿̵ID*/ - secDsRelayId = GetSignalSecondDsRelayId(signalId); /*ȡźŻ2˿̵ID*/ - lxRelayId = GetSignalLxRelayId(signalId); /*ȡźŻгźż̵ID*/ - zxRelayId = GetSignalZxRelayId(signalId); /*ȡźŻźż̵ID*/ - yxRelayId = GetSignalYxRelayId(signalId); /*ȡźŻźż̵ID*/ - dxRelayId = GetSignalDxRelayId(signalId); /*ȡźŻźż̵ID*/ - yellowRelayId = GetSignalYellowRelayId(signalId); /*ƵƼ̵ID*/ - greenRelayId = GetSignalGreenRelayId(signalId); /*̵Ƽ̵ID*/ - blueRelayId = GetSignalBlueRelayId(signalId); /*Ƽ̵ID*/ - replxRelayId = GetSignalRepLxRelayId(signalId); /*ʾг̵ID*/ - ddRelayId = GetSignalDdRelayId(signalId); /*ȡźŻƼ̵ID*/ + if ((0u == signalId) || (signalId > SIGNAL_SUM_MAX) || (localCiId == 0u)) { /*źŻidϷ߱IDΪ0u,*/ @@ -2820,9 +2693,10 @@ void SignalDeviceToRelayStateProc(void) if (SIGNAL_DRIVECOLOUR_NULL == curDrvColor) {/*źŻЧ*/ jkjRelayValidFlag = GetCiJkjFlag(); + jkjValidCycNum = GetJkjRelayValidCycNum(); curShowColor = GetSignalCurColor(signalId); if (((SIGNAL_SHOWCOLOUR_REDYELLOW == curShowColor) || (SIGNAL_SHOWCOLOUR_RED_WHITE == curShowColor)) && - (JKJ_REYLAY_VALID == jkjRelayValidFlag)) + (JKJ_REYLAY_VALID == jkjRelayValidFlag) && (jkjValidCycNum > 0u) ) { /*źſʱӦЧ֮˹źſţִźŹر߼崻*/ } @@ -6070,9 +5944,8 @@ void PhySecResetToRelayStateProc(void) UINT8 occupyState = 0u; /*ռ״̬*/ UINT32 startCycNum = 0u; /*ʼں*/ UINT8 resetType = 0u; /*Ḵλ*/ + UINT8 preResetState = 0u; /*Ԥλ״̬*/ UINT8 overTimeCheck = 0u; - UINT16 wPhySecFwRelayId = 0U;/*θλ̵ID*/ - UINT32 dwPhyResetCount = 0U; /*Ḵλʱ*/ localCi = GetSystemParaLocalCiId(); relayZFWId = GetZFWRelayId(localCi); /*ܸλ̵ID*/ @@ -6204,15 +6077,13 @@ void PhySecResetToRelayStateProc(void) phySecId = GetPhySecId(ii);/*ȡID*/ startCycNum = GetPhySecResetStartCycNum(phySecId); - wPhySecFwRelayId = GetPhySecFWRelayId(phySecId); - if (startCycNum > 0u) /*Ḵλ*/ { occupyState = GetPhySecCurOccupyState(phySecId); if (SECTION_OCCUPY_NO == occupyState) /*ɼ*/ { SetPhySecResetStartCycNum(phySecId, 0u);/*޸ļḴλʼں*/ - (void)SetRelayDriveState(wPhySecFwRelayId, RELAY_STATE_DOWN);/*üḴλ̵*/ + (void)SetRelayDriveState(GetPhySecFWRelayId(phySecId), RELAY_STATE_DOWN);/*üḴλ̵*/ } else /*ɼռ*/ { @@ -6220,18 +6091,17 @@ void PhySecResetToRelayStateProc(void) if (LOGICSECTION_OCCUPY_TX == occupyState) /*ͨųռ*/ { SetPhySecResetStartCycNum(phySecId, 0u);/*޸ļḴλʼں*/ - (void)SetRelayDriveState(wPhySecFwRelayId, RELAY_STATE_DOWN);/*üḴλ̵*/ + (void)SetRelayDriveState(GetPhySecFWRelayId(phySecId), RELAY_STATE_DOWN);/*üḴλ̵*/ SetErrorData(functionId, CI_DEVICE_TYPE_PHYSEC, phySecId, ETYPE_PS_NO_UT_CT_OCU_STATE, occupyState, ESEND_LEVEL_ATS); } else { - dwPhyResetCount = GetSystemParaSectionResetCount(); - overTimeCheck = SystemOverTimeCheck(startCycNum, dwPhyResetCount); + overTimeCheck = SystemOverTimeCheck(GetPhySecResetStartCycNum(phySecId), GetSystemParaSectionResetCount()); if (CI_TIME_OUT == overTimeCheck) {/*μḴλʱ*/ SetPhySecResetStartCycNum(phySecId, 0u);/*޸ļḴλʼں*/ - (void)SetRelayDriveState(wPhySecFwRelayId, RELAY_STATE_DOWN);/*üḴλ̵*/ + (void)SetRelayDriveState(GetPhySecFWRelayId(phySecId), RELAY_STATE_DOWN);/*üḴλ̵*/ #if 0 SetCiSendCmdBackInfoData(CI_BACK_PSEC_RESET_ERROR, CI_DEVICE_TYPE_PHYSEC, phySecId, 0u, 0u);/*Ḵλʧ*/ #endif @@ -6243,21 +6113,32 @@ void PhySecResetToRelayStateProc(void) if (CI_SUCCESS == retValid) /*ЧִмḴλ*/ { resetType = GetPhySecSectionResetType(phySecId); - - if ((PHYSICAL_SECTION_PRE_RESET_NO == resetType) || (PHYSICAL_SECTION_PRE_RESET_YES == resetType)) /*ֱӸλԤλ*/ + if (PHYSICAL_SECTION_PRE_RESET_NO == resetType) /*ֱӸλ*/ { - (void)SetRelayDriveState(wPhySecFwRelayId, RELAY_STATE_UP);/*üḴλ̵ʱ̵*/ + (void)SetRelayDriveState(GetPhySecFWRelayId(phySecId), RELAY_STATE_UP);/*üḴλ̵*/ + } + else if (PHYSICAL_SECTION_PRE_RESET_YES == resetType) /*Ԥλ*/ + { + preResetState = GetPhySecPreResetState(phySecId); + if (PHYSICAL_SECTION_PRE_RESET_NO == preResetState) /*Ԥλδɹ*/ + { + (void)SetRelayDriveState(GetPhySecFWRelayId(phySecId), RELAY_STATE_UP);/*üḴλ̵*/ + } + else /*Ԥλɹ*/ + { + (void)SetRelayDriveState(GetPhySecFWRelayId(phySecId), RELAY_STATE_DOWN);/*üḴλ̵*/ + } } else /**/ { SetPhySecResetStartCycNum(phySecId, 0u);/*޸ļḴλʼں*/ - (void)SetRelayDriveState(wPhySecFwRelayId, RELAY_STATE_DOWN);/*üḴλ̵*/ + (void)SetRelayDriveState(GetPhySecFWRelayId(phySecId), RELAY_STATE_DOWN);/*üḴλ̵*/ } } else /*Ч*/ { SetPhySecResetStartCycNum(phySecId, 0u);/*޸ļḴλʼں*/ - (void)SetRelayDriveState(wPhySecFwRelayId, RELAY_STATE_DOWN);/*üḴλ̵*/ + (void)SetRelayDriveState(GetPhySecFWRelayId(phySecId), RELAY_STATE_DOWN);/*üḴλ̵*/ SetCiSendCmdBackInfoData(CI_BACK_PSEC_RESET_ZFW_ERROR, CI_DEVICE_TYPE_PHYSEC, phySecId, 0u, 0u);/*Ḵλʧܣܸλ̵*/ } } @@ -6562,10 +6443,11 @@ void PsdRelayToDeviceStateProc(void) UINT8 buttonState = 0u; UINT32 buttonPressCycNum = 0U; UINT32 curCycNum = 0U; + UINT8 chPsdVirtualState = 0U; UINT32 dwCycNum = 0U; UINT8 chDsnLinSwitch = 0U; - UINT8 cFuncRet = 0U; + chDsnLinSwitch = GetCiFunctionSwitchConfig(FUNC_DSN_LINE_SWITCH); @@ -6774,16 +6656,21 @@ void PsdRelayToDeviceStateProc(void) if (psdDoorRelayId > 0u) { if (FUNC_SWITCH_ON != chDsnLinSwitch) - { - /*ſ״̬*/ - cFuncRet = GetPsdRelayCollTolerateRet(psdId); /*ȡPSDſ̵ɼ̽*/ - if (CI_SUCCESS == cFuncRet) + {/*ſ״̬*/ + chPsdCloseState = GetRelayCollState(psdDoorRelayId); + if (RELAY_STATE_UP == chPsdCloseState) { reVal = SetPsdState(psdId, PSD_STATE_CLOSE); + + } + else if (RELAY_STATE_DOWN == chPsdCloseState) + { + reVal = SetPsdState(psdId, PSD_STATE_OPEN); + } else { - reVal = SetPsdState(psdId, PSD_STATE_OPEN); + reVal = CI_ERROR; } } else @@ -7947,14 +7834,6 @@ UINT8 EsbRelayToDeviceStateProc(void) EsbZfsBtnProc(esbId); EsbZfsCancelBtnProc(esbId); } - else if (FUNC_SWITCH_ESB_NINGXIANG_RAIL == funcswitchZfsBtn) - { - /*·ͣťΪͨťȡťͽ·ťΪԸʽť*/ - /*1.رհť*/ - EsbNXRailBtnProc(esbId); - /*2.رȡť*/ - EsbNXRailCancelBtnProc(esbId); - } else { /*ȡԸʽESBǰõ״̬*/ @@ -7979,32 +7858,23 @@ UINT8 EsbRelayToDeviceStateProc(void) reVal = SetEsbState(esbId, ESB_STATE_VALID_YES); } } - - if (FUNC_SWITCH_ESB_NINGXIANG_RAIL == funcswitchZfsBtn) - { - /*·ر·ť*/ - EsbNXRailCutBtnProc(esbId); - } - else - { - /*··״̬*/ - esbCutRelayId = GetEsbCutRelayId(esbId); - if (0u != esbCutRelayId) - { /*û·ťʱ*/ - chEsbCutRelayState = GetRelayCollState(esbCutRelayId); - if (RELAY_STATE_DOWN == chEsbCutRelayState) - { - SetEsbCutState(esbId, ESB_CUT_NO); - } - else if (RELAY_STATE_UP == chEsbCutRelayState) - { - SetEsbCutState(esbId, ESB_CUT_YES); - } - else - { - SetEsbCutState(esbId, ESB_CUT_NO); - reVal = CI_ERROR; - } + /*·״̬*/ + esbCutRelayId = GetEsbCutRelayId(esbId); + if (0u != esbCutRelayId) + { /*û·ťʱ*/ + chEsbCutRelayState = GetRelayCollState(esbCutRelayId); + if (RELAY_STATE_DOWN == chEsbCutRelayState) + { + SetEsbCutState(esbId, ESB_CUT_NO); + } + else if (RELAY_STATE_UP == chEsbCutRelayState) + { + SetEsbCutState(esbId, ESB_CUT_YES); + } + else + { + SetEsbCutState(esbId, ESB_CUT_NO); + reVal = CI_ERROR; } } } @@ -8074,9 +7944,8 @@ UINT8 SpksRelayToDeviceStateProc(void) UINT8 execRes = 0u; UINT32 curCycNum = Get2oo2CurCycleNum(); UINT8 spksVirAttribute = 0U; + UINT8 spksRetVlaue = 0U; UINT8 chStartFlock = CI_START_FLOCK_YES; - UINT8 cFunRet = 0U; - tmpSpksSum = GetTotalSpksCurNum();/*SPKS*/ for (ii = 0u; ii < tmpSpksSum; ii++) { @@ -8090,24 +7959,31 @@ UINT8 SpksRelayToDeviceStateProc(void) spksRelayId = GetSpksColRelayId(spksId); if (spksRelayId > 0u) { + spksBelongCi = GetSpksBelongCiId(spksId); if (spksBelongCi == localCi) { - cFunRet = GetSpksBtnCollTolerateRet(spksId); /*ȡSPKSťɼ̽*/ - - if (CI_SUCCESS == cFunRet) + relaySta = GetRelayCollState(spksRelayId); + if (RELAY_STATE_DOWN == relaySta) { - (void)SetSpksState(spksId, SPKS_STATUS_NO); - - SetSpksflockStartNum(spksId, 0U); + spksRetVlaue = SetSpksState(spksId,SPKS_STATUS_YES); + if(CI_ERROR == spksRetVlaue) + { + } + SetSpksflockStartNum(spksId,curCycNum); + } + else if (RELAY_STATE_UP == relaySta) + { + spksRetVlaue = SetSpksState(spksId,SPKS_STATUS_NO); + if(CI_ERROR == spksRetVlaue) + { + } + SetSpksflockStartNum(spksId,0U); } else { - (void)SetSpksState(spksId, SPKS_STATUS_YES); - - SetSpksflockStartNum(spksId, curCycNum); + ret = CI_ERROR; } - /*·״̬*/ spksCutRelayId = GetSpksCutRelayId(spksId); if (0U != spksCutRelayId) @@ -10325,109 +10201,122 @@ UINT8 GetNoDDJSignalColor(const UINT16 signalId) * ½·ĵͬ߼״̬ * ˵ void * ֵ void -* BY CGH 20250523 */ void RouteDCTYRelayToDeviceStateProc(void) { - UINT16 ii = 0U; /*α*/ - UINT16 routeCurSum = 0U; /*·*/ - UINT16 routeId = 0U; /*·ID*/ - UINT8 localCi = 0U; - UINT8 belongCi = 0U; + UINT16 ii = 0u; /*α*/ + UINT16 routeCurSum = 0u; /*·*/ + UINT16 routeId = 0u; /*·ID*/ + UINT8 localCi = 0u; + UINT8 belongCi = 0u; + UINT8 tmpExecRes = CI_ERROR;/*ʱִн*/ UINT8 reVal = CI_ERROR;/*ֵ*/ - UINT16 routeDCTYId = 0U;/*̵ͬid*/ - UINT8 relayCollState = 0U;/*̵ɼ״̬*/ - UINT8 chRouteType = 0U; /*·*/ - UINT32 dwDcAgreeBtnPressCycNum = 0U;/*ͬⰴťʼ*/ - UINT32 dwCurCycleNum = Get2oo2CurCycleNum(); /*ǰں*/ - UINT32 dwZfsBtnFaultCycNum = 0U; /*Ըʽťж*/ - UINT32 dwZfsBtnRelayCollCycNum = 0U; /*Ըʽť̵ɼ*/ - UINT8 chOverTimeCheckFlag = 0U;/*ʱ־*/ - UINT8 chDcAgreeButtonErrState = 0U;/*ͬⰴť״̬*/ + + + UINT16 routeDCTYId = 0u;/*̵ͬid*/ + UINT16 routeDCQJId = 0u; /*̵id*/ + + + UINT8 relayCollState = 0u;/*̵ɼ״̬*/ routeCurSum = GetRouteCurSum(); localCi = GetSystemParaLocalCiId();/**/ - - for (ii = 0U; ii < routeCurSum; ii++) + for (ii = 0u; ii < routeCurSum; ii++) { routeId = GetRouteId(ii); - if((0U < routeId) && (ROUTE_SUM_MAX > routeId)) + /*֤·id벻Ϊ0u*/ + if (0u == routeId) { - /*֤·Ϊ*/ + reVal = CI_ERROR; + } + else + { + reVal = CI_SUCCESS; + } + + if (CI_SUCCESS == reVal) + {/*֤·Ϊ*/ belongCi = GetRouteBelongCiId(routeId); if (belongCi == localCi) { - routeDCTYId = GetRouteDCTAJId(routeId);/*ȡ·̵ͬid*/ - chRouteType = GetRouteType(routeId); - - if((0U < routeDCTYId) && (ROUTE_TYPE_DIAOCHE == chRouteType)) - { - relayCollState = GetRelayCollState(routeDCTYId); - if (RELAY_STATE_UP == relayCollState) - { - dwDcAgreeBtnPressCycNum = GetRouteDcAgreeBtnPressCycNum(routeId); - - if (0U == dwDcAgreeBtnPressCycNum) - { - SetRouteDcAgreeBtnPressCycNum(routeId, dwCurCycleNum); - } - else - { - ; - } - - } - else - { - SetRouteDcAgreeBtnPressCycNum(routeId, 0U); - } - - dwDcAgreeBtnPressCycNum = GetRouteDcAgreeBtnPressCycNum(routeId); - dwZfsBtnFaultCycNum = GetSelfButErrCount(); - chOverTimeCheckFlag = SystemOverTimeCheck(dwDcAgreeBtnPressCycNum, dwZfsBtnFaultCycNum); - - if (CI_TIME_OUT == chOverTimeCheckFlag) - { - /*ť´ڹʱ䣬ù*/ - SetRouteDcAgreeButtonErrState(routeId, ROUTE_DC_AGREE_BUTTON_ERR); - } - else - { - SetRouteDcAgreeButtonErrState(routeId, ROUTE_DC_AGREE_BUTTON_OK); - } - - dwZfsBtnRelayCollCycNum = GetSelfButCollCount(); - chOverTimeCheckFlag = SystemOverOrEqualTimeCheck(dwDcAgreeBtnPressCycNum, dwZfsBtnRelayCollCycNum); - chDcAgreeButtonErrState = GetRouteDcAgreeButtonErrState(routeId); - - - /*ťʱڵжϲɼЧʱδϣõͬⰴťЧ*/ - if ((CI_TIME_OUT == chOverTimeCheckFlag) && (ROUTE_DC_AGREE_BUTTON_OK == chDcAgreeButtonErrState)) - { - SetRouteDCTYState(routeId, ROUTE_DCT_AGREE); - } - else - { - /**/ - } - - } - else - { - ; /*ûǵ·*/ - } + reVal = CI_SUCCESS; } else { - ; /*DZ·*/ + reVal = CI_ERROR; } } - else + + + if (CI_SUCCESS == reVal) { - ; /**/ + routeDCQJId = GetRouteDCQJId(routeId);/*ȡ·̵id*/ + + if (routeDCQJId > 0u) + { + relayCollState = GetRelayCollState(routeDCQJId); + if (RELAY_STATE_UP == relayCollState) + { + tmpExecRes = SetRouteDCQState(routeId, ROUTE_DCQ_REQUEST);/*е*/ + if (CI_ERROR == tmpExecRes) + { + /**/ + } + } + else if (RELAY_STATE_DOWN == relayCollState) + { + tmpExecRes = SetRouteDCQState(routeId, ROUTE_DCQ_NOT_REQUEST);/*£ûе*/ + if (CI_ERROR == tmpExecRes) + { + /**/ + } + } + else + { + /*Ƿֵ*/ + tmpExecRes = SetRouteDCQState(routeId, ROUTE_DCQ_NOT_REQUEST);/*Ƿֵ´ûе*/ + if (CI_ERROR == tmpExecRes) + { + /**/ + } + } + } + + routeDCTYId = GetRouteDCTAJId(routeId);/*ȡ·̵ͬid*/ + + if (routeDCTYId > 0u) + { + relayCollState = GetRelayCollState(routeDCTYId); + if (RELAY_STATE_UP == relayCollState) + { + tmpExecRes = SetRouteDCTYState(routeId, ROUTE_DCT_AGREE);/*𣬵ͬ*/ + + if (CI_ERROR == tmpExecRes) + { + /**/ + } + } + else if (RELAY_STATE_DOWN == relayCollState) + { + tmpExecRes = SetRouteDCTYState(routeId, ROUTE_DCT_NOT_AGREE);/*£ͬ*/ + if (CI_ERROR == tmpExecRes) + { + /**/ + } + } + else + { + /*Ƿֵ*/ + tmpExecRes = SetRouteDCTYState(routeId, ROUTE_DCT_NOT_AGREE);/*£ͬ*/ + if (CI_ERROR == tmpExecRes) + { + /**/ + } + } + } } } } @@ -10440,67 +10329,82 @@ void RouteDCTYRelayToDeviceStateProc(void) */ void RouteDCTYToRelayStateProc(void) { - UINT16 ii = 0U; /* α */ - UINT16 routeSum = 0U; /* · */ - UINT16 routeId = 0U; /* ID */ - UINT8 chRouteType = 0U;/*·*/ - UINT16 routeDCQRelayId = 0U; - UINT16 routeDCQRelayTwoId = 0U; - UINT8 routeDCQState = 0U; - UINT8 localCi = 0U; - UINT8 belongCi = 0U; + UINT16 ii = 0u; /* α */ + UINT16 routeSum = 0u; /* · */ + UINT16 routeId = 0u; /* ID */ + UINT8 routeType = 0u;/*·*/ + UINT16 routeDCQRelayId = 0u; + UINT8 routeDCQState = 0u; + + UINT8 localCi = 0u; + UINT8 belongCi = 0u; + + UINT8 reVal = CI_ERROR; - routeSum = GetRouteCurSum(); localCi = GetSystemParaLocalCiId();/**/ + routeSum = GetRouteCurSum(); - for (ii = 0U; ii < routeSum; ii++) + for (ii = 0u; ii < routeSum; ii++) { routeId = GetRouteId(ii); - if ((0U < routeId) && (ROUTE_SUM_MAX > routeId)) + /*֤·id벻Ϊ0*/ + if (0u == routeId) { - /*֤·Ϊ*/ + reVal = CI_ERROR; + } + else + { + reVal = CI_SUCCESS; + } + + if (CI_SUCCESS == reVal) + {/*֤·Ϊ*/ belongCi = GetRouteBelongCiId(routeId); if (belongCi == localCi) { - routeDCQRelayId = GetRouteDCQJId(routeId); - routeDCQRelayTwoId = GetRouteDCQJTwoId(routeId); - chRouteType = GetRouteType(routeId); - - if ((0U < routeDCQRelayId) && (0U < routeDCQRelayTwoId) && (ROUTE_TYPE_DIAOCHE == chRouteType)) - { - routeDCQState = GetRouteDCQState(routeId); - - if (ROUTE_DCQ_REQUEST == routeDCQState) - { - /*еõ̵Ϊ*/ - (void)SetRelayDriveState(routeDCQRelayId, RELAY_DRIVE_STATE_UP); - (void)SetRelayDriveState(routeDCQRelayTwoId, RELAY_DRIVE_STATE_UP); - } - else - { - /*޵õ̵Ϊ*/ - (void)SetRelayDriveState(routeDCQRelayId, RELAY_DRIVE_STATE_DOWN); - (void)SetRelayDriveState(routeDCQRelayTwoId, RELAY_DRIVE_STATE_DOWN); - } - } - else - { - ; /*ûǵ·*/ - } + reVal = CI_SUCCESS; } else { - ; /*DZ·*/ + reVal = CI_ERROR; } } - else - { - ; /**/ + + if (CI_SUCCESS == reVal) + {/*·Ϊ·*/ + routeType = GetRouteType(routeId); + if (ROUTE_TYPE_DIAOCHE == routeType) + { + reVal = CI_SUCCESS; + } + else + { + reVal = CI_ERROR; + } } + + if (CI_SUCCESS == reVal) + { + routeDCQState = GetRouteDCQState(routeId); + + routeDCQRelayId = GetRouteDCQJId(routeId); + + if (routeDCQRelayId > 0u) + {/*·̵id0u*/ + if (ROUTE_DCQ_REQUEST == routeDCQState) + {/*еõ̵Ϊ*/ + (void)SetRelayDriveState(routeDCQRelayId, RELAY_DRIVE_STATE_UP); + } + else + {/*޵õ̵Ϊ*/ + (void)SetRelayDriveState(routeDCQRelayId, RELAY_DRIVE_STATE_DOWN); + } + } + } + } - } /* @@ -11955,11 +11859,10 @@ UINT8 GetEsbCurNeedSetState(UINT16 esbId) UINT8 resultVal = CI_ERROR;/*ֵ*/ UINT8 curEsbDriveState = 0u; /*ǰesbؼ̵״̬*/ UINT16 bufIndex = 0U; /*±*/ - UINT8 cFuncRet = 0U; bufIndex = GetEsbConfigBufIndex(esbId); /*ȡ±*/ if (bufIndex < ESB_SUM_MAX) - { + { esbRelayId = GetEsbRelayId(esbId); esbRelayState = GetRelayCollState(esbRelayId); ESSRelayId = GetESSRelayId(esbId); @@ -11991,14 +11894,17 @@ UINT8 GetEsbCurNeedSetState(UINT16 esbId) else { /*ͣؼ̵ʱesb״ֻ̬esbɼ̵״̬*/ - cFuncRet = GetEsbCollTolerateRet(esbId); /*ȡESBɼ̽*/ - if (CI_SUCCESS == cFuncRet) + if (RELAY_STATE_DOWN == esbRelayState) { - resultVal = ESB_STATE_VALID_NO; /*esbɼ̵δʱ䣬ؽЧ*/ + resultVal = ESB_STATE_VALID_YES; /*esbɼ̵ʱЧ*/ + } + else if (RELAY_STATE_UP == esbRelayState) + { + resultVal = ESB_STATE_VALID_NO; /*esbɼ̵ʱЧ*/ } else { - resultVal = ESB_STATE_VALID_YES; /*esbɼ̵ҳʱ󣬷ؽЧ*/ + resultVal = CI_ERROR; /*ڵֵʧܲesb״̬*/ } } } @@ -12049,10 +11955,9 @@ void EsbRelateDelayDriveOutputProc(void) /*ESBDZ*/ if (localCiId == devBlongCiId) { - if (FUNC_SWITCH_ON == funcswitchZfsBtn) + if (FUNC_SWITCH_ON == funcswitchZfsBtn) /*ԸʽESB̵*/ { - /***** Ըʽ/·ESB̵ *****/ - /*1.ԸʽESB̵״̬*/ + /*ԸʽESB̵״̬*/ esbBuzzRelayId = GetEsbBuzzRelayId(esbId); if ((0u < esbBuzzRelayId) && (UINT16_MAX > esbBuzzRelayId)) { @@ -12073,7 +11978,7 @@ void EsbRelateDelayDriveOutputProc(void) } } - /*2.ԸʽESBг̵״̬*/ + /*ԸʽESBг̵״̬*/ esbCutoffBuzzRelayId = GetEsbCutoffBuzzRelayId(esbId); if ((0U < esbCutoffBuzzRelayId) && (UINT16_MAX > esbCutoffBuzzRelayId)) { @@ -12094,7 +11999,7 @@ void EsbRelateDelayDriveOutputProc(void) } } } - else /*ԸʽESBESB̵*/ + else /*ԸʽESB̵*/ { /*ȡ·ť״̬ESB״̬*/ esbCutState = GetEsbCutState(esbId); @@ -15111,6 +15016,7 @@ UINT8 GetSwitchCollToleratePos(const UINT16 switchId) UINT8 switchCurPosition = 0u; UINT8 faultFlag = GetSwitchFaultState(switchId); /*ȡǷ忨*/ UINT16 switch2ndId = GetDSwitchOtherId(switchId); /*˫*/ + UINT32 TolerateCycNum = 0U; /*־ӡʹ*/ curCycNum = Get2oo2CurCycleNum(); chSwitchColPos = GetSwitchCollPos(switchId); @@ -15147,8 +15053,6 @@ UINT8 GetSwitchCollToleratePos(const UINT16 switchId) /*ֹͣ*/ SetSwitchCollTolerateCycNum(switchId, 0u); } - switchCollTolerateCycNum = GetSwitchCollTolerateCycNum(switchId); - debug_infor_printf((const)"\n SwitchCollTolerate Sikai_Switch ID:%d, TolerateCycNumNum%d \n.", switchId, switchCollTolerateCycNum); } else { @@ -15161,6 +15065,8 @@ UINT8 GetSwitchCollToleratePos(const UINT16 switchId) /*λã*/ SetSwitchCollTolerateCycNum(switchId, 0u); } + TolerateCycNum = GetSwitchCollTolerateCycNum(switchId); + debug_infor_printf((const)"\n SwitchCollTolerate Switch ID:%d, TolerateCycNumNum%d \n.", switchId, TolerateCycNum); switchCollTolerateCycNum = GetSwitchCollTolerateCycNum(switchId); timeState = SystemOverTimeCheck(switchCollTolerateCycNum, COLLTOLERATE_CYCNUM);/*2*/ if (CI_TIME_NO == timeState) /*δʱ*/ @@ -15174,7 +15080,6 @@ UINT8 GetSwitchCollToleratePos(const UINT16 switchId) else { retPos = chSwitchColPos;/*ʱ*/ - SetSwitchCollTolerateCycNum(switchId, 0u); } return retPos; } @@ -15192,41 +15097,14 @@ UINT8 CheckSwitchCollTolerateState(UINT16 switchId) UINT8 phySecLockState = 0u; /*״̬*/ UINT8 switchLockStatus = 0u; /*״̬*/ UINT8 phySecJumpLockState = 0u; /*Ծ״̬*/ - UINT16 switchLogSum = 0U; /*߼*/ - UINT16* logSecBuf = NULL; - UINT8 chLogSecState = 0U; /*߼״̬*/ - UINT16 i = 0U; - UINT8 chSwithLogRouteLockCheck = CI_ERROR; /*߼Ƿ߼·*/ if((0U != switchId) && (switchId < SWITCH_SUM_MAX)) { switchPhySecId = GetSwitchPhySectionId(switchId); phySecLockState = GetPhySecLockState(switchPhySecId); phySecJumpLockState = GetPhySecJumpLockState(switchPhySecId); + switchLockStatus = GetSwitchLockStatus(switchId); - switchLogSum = GetSwitchLogSecSum(switchId); - logSecBuf = GetSwitchLogSecBuf(switchId); - /*߼״̬*/ - if ((0U != switchLogSum)&&(NULL != logSecBuf)) - { - for (i = 0u; i < switchLogSum; i++) - { - /*߼߼״̬*/ - chLogSecState = GetLogSecLogLockState(logSecBuf[i]); - if (LOG_SECTION_LOGLOCK_NORMAL == chLogSecState) - { - chSwithLogRouteLockCheck = CI_SUCCESS; /*߼Ϊ߼*/ - break; - } - else - { - ; /**/ - } - } - } - else - { - chSwithLogRouteLockCheck = CI_ERROR; - } + if ((PHYSICAL_SECTION_LOCK_NORMAL == phySecLockState) || (PHYSICAL_SECTION_LOCK_PROTECT == phySecLockState) @@ -15234,7 +15112,7 @@ UINT8 CheckSwitchCollTolerateState(UINT16 switchId) || (PHYSICAL_SECTION_JUMP_LOCK_YES == phySecJumpLockState) || (SWITCH_LOCK_STATUS_PROTECT == switchLockStatus) || (SWITCH_LOCK_STATUS_DAP == switchLockStatus) - || (CI_SUCCESS == chSwithLogRouteLockCheck)) + ) { /*||||ʱ||Ծ||*/ chRet = CI_SUCCESS; } @@ -15249,1197 +15127,4 @@ UINT8 CheckSwitchCollTolerateState(UINT16 switchId) } return chRet; -} - -/* -* ·ͣť -* ˵UINT16 esbId ESB ID -* ֵ -* Created By LQ 2025.03.28 -*/ -void EsbNXRailBtnProc(UINT16 esbId) -{ - UINT8 localCiId = 0U; /*ID*/ - UINT16 esbRelayId = 0u; /*esb̵ID*/ - UINT8 esbRelayBelongCiId = 0U; /*esbɼ̵CI*/ - UINT8 esbRelayCollState = 0U; /*esbťɼ̵״̬*/ - UINT16 bufIndex = 0U; /*±*/ - UINT16 wRelayBelongOcId = 0U; /*̵OC*/ - UINT8 cOcCommState = TRANSMIT_STATE_BAD; /*OCͨ״̬*/ - UINT8 cABoardState = RELAY_BOARD_FAULT_YES; /*Aϵ忨״̬*/ - UINT8 cBBoardState = RELAY_BOARD_FAULT_YES; /*Bϵ忨״̬*/ - - bufIndex = GetEsbConfigBufIndex(esbId); - - if (bufIndex < ESB_SUM_MAX) - { - localCiId = GetSystemParaLocalCiId(); - esbRelayId = GetEsbRelayId(esbId); - esbRelayBelongCiId = GetRelayBelongCiId(esbRelayId); - if ((0U != localCiId) && (esbRelayBelongCiId == localCiId)) - { - esbRelayCollState = GetRelayCollState(esbRelayId); /*ȡESB̵ɼ״̬*/ - if (RELAY_STATE_UP == esbRelayCollState) - { - /*ESBδ¡ɼ̵άֵǰ״̬*/ - } - else - { - (void)SetEsbState(esbId, ESB_STATE_VALID_YES); /*ESBɼ̵£ť»忨ϻOCͨжϵµ£Ч*/ - - /** ̵£½رհťɼ̵״̬ **/ - wRelayBelongOcId = GetRelayBelongOCId(esbRelayId); - cOcCommState = GetCiTransmitState(CI_SYSTEM_TYPE_OC, (UINT8)wRelayBelongOcId); /*ȡOCͨ״̬*/ - cABoardState = GetRelayACollBoardState(esbRelayId); /*ȡAϵ忨״̬*/ - cBBoardState = GetRelayBCollBoardState(esbRelayId); /*ȡBϵ忨״̬*/ - - if ((TRANSMIT_STATE_GOOD == cOcCommState) && ((RELAY_BOARD_FAULT_NO == cABoardState) || (RELAY_BOARD_FAULT_NO == cBBoardState))) - { - /*OCͨһϵ忨״̬ü̵*/ - SetEsbRelayDownState(esbId, ESB_RELAY_ERROR_DOWN_NO); - } - else - { - /*OCͨ쳣ϵ忨״̬ϣü̵ͨ쳣*/ - SetEsbRelayDownState(esbId, ESB_RELAY_ERROR_DOWN_YES); - } - } - } - else - { - /*̵ID/DZ*/ - } - } - else - { - /*󣬲*/ - } -} - -/* -* ·ͣȡť -* ˵UINT16 esbId ESB ID -* ֵ -* Created By LQ 2025.03.28 -*/ -void EsbNXRailCancelBtnProc(UINT16 esbId) -{ - UINT16 wEsbIdIndex = 0U; /*ESB±*/ - UINT16 cancelEsbRelayId = 0u; /*ȡesb̵ID*/ - UINT8 localCiId = 0U; /*ID*/ - UINT8 cancelEsbRelayBelongCiId = 0U; /*ȡesbɼ̵1CI*/ - UINT32 zfsBtnRelayCollCycNum = 0U; /*Ըʽť̵жϲɼЧ*/ - UINT32 zfsBtnRelayFaultCycNum = 0U; /*Ըʽť̵жϹ*/ - UINT32 zfsBtnRelayErrTriggerCycNum = 0U; /*Ըʽť̵ж󴥷*/ - UINT32 cancelEsbPressCycNum = 0U; /*ȡرհť*/ - UINT32 cancelEsbErrTriggerPressCycNum = 0U; /*ȡرհť󴥷*/ - UINT8 cancelEsbValidFlag = ESB_CANCEL_VALID_NO; /*ȡرհťЧ־*/ - UINT8 btnPressValidTime = CI_TIME_NO; /*ťʱǷﵽЧʱ*/ - UINT8 btnPressFaultTime = CI_TIME_NO; /*ťʱǷﵽʱ*/ - UINT8 btnPressErrTriggerTime = CI_TIME_NO; /*ťʱǷﵽ󴥷ʱ*/ - UINT16 wEsbRelayId = 0U; /*ESBɼ̵ID*/ - UINT8 cEsbRelayCollState = 0U; /*ESBɼ̵״̬*/ - UINT16 wEsbRelayBelongOcId = 0U; /*esbɼ̵OC*/ - UINT8 cEsbRelayDownState = ESB_RELAY_ERROR_DOWN_NO; /*رհť̵״̬*/ - - wEsbIdIndex = GetEsbConfigBufIndex(esbId); - - if (wEsbIdIndex < ESB_SUM_MAX) - { - cancelEsbRelayId = GetCancelEsbRelayId(esbId); - cancelEsbRelayBelongCiId = GetRelayBelongCiId(cancelEsbRelayId); - localCiId = GetSystemParaLocalCiId(); - - if ((0U != localCiId) && (localCiId == cancelEsbRelayBelongCiId)) - { - /***** 1.رȡť/󴥷ںͲɼ̵״̬ *****/ - EsbZfsCancelBtnPressStateProc(esbId, cancelEsbRelayId); - - /***** 2.رȡťЧ־ *****/ - EsbNXRailCancelBtnValidFlagProc(esbId, cancelEsbRelayId); - - /***** 3.״̬رȡťЧ־ *****/ - cancelEsbValidFlag = GetCancelEsbValidFlag(esbId); - cancelEsbPressCycNum = GetCancelEsbPressCycNum(esbId); - zfsBtnRelayCollCycNum = GetSelfButCollCount(); - btnPressValidTime = SystemOverTimeCheck(cancelEsbPressCycNum, zfsBtnRelayCollCycNum); - zfsBtnRelayFaultCycNum = GetSelfCancelButErrCount(); - btnPressFaultTime = SystemOverTimeCheck(cancelEsbPressCycNum, zfsBtnRelayFaultCycNum); - wEsbRelayId = GetEsbRelayId(esbId); - cEsbRelayCollState = GetRelayCollState(wEsbRelayId); /*ȡESB̵ɼ״̬*/ - wEsbRelayBelongOcId = GetRelayBelongOCId(wEsbRelayId); - cEsbRelayDownState = GetEsbRelayDownState(esbId); /*ȡťɼ̵״̬*/ - - if ((ESB_CANCEL_VALID_YES == cancelEsbValidFlag) && (CI_TIME_OUT == btnPressValidTime) && (CI_TIME_OUT != btnPressFaultTime)) - { - /*ȡرհťЧҰťʱﵽжϲɼЧʱδﵽжʱ䣬ýرЧȡرհťЧ*/ - (void)SetEsbState(esbId, ESB_STATE_VALID_NO); - SetCancelEsbValidFlag(esbId, ESB_CANCEL_VALID_NO); - } - else if ((RELAY_STATE_UP == cEsbRelayCollState) && (ESB_RELAY_ERROR_DOWN_YES == cEsbRelayDownState)) - { - /*OCʼͨŵڻ̵˫ϵ忨ָڣرհťýرЧ*/ - (void)SetEsbState(esbId, ESB_STATE_VALID_NO); - } - else - { - /**/ - } - - /***** 4.رȡťϱ־ *****/ - cancelEsbErrTriggerPressCycNum = GetCancelEsbErrTrigPressCycNum(esbId); /*ȡȡť󴥷*/ - zfsBtnRelayErrTriggerCycNum = GetSelfCancelButErrTriggerCount(); /*ȡԸʽȡť󴥷жʱ*/ - btnPressErrTriggerTime = SystemOverTimeCheck(cancelEsbErrTriggerPressCycNum, zfsBtnRelayErrTriggerCycNum); - - if ((CI_TIME_OUT == btnPressFaultTime) || (CI_TIME_OUT == btnPressErrTriggerTime)) - { - /*ȡťʱﵽжʱ󴥷ʱﵽ󴥷жʱ䣬ȡͣťϱ־*/ - SetCancelEsbErrFlag(esbId, ESB_ERROR_FLAG_YES); - } - else - { - SetCancelEsbErrFlag(esbId, ESB_ERROR_FLAG_NO); - } - } - else - { - /*̵ID/DZ*/ - } - } - else - { - /*󣬲*/ - } -} - -/* -* ·ͣȡťЧ־ -* ˵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 wEsbIdIndex = 0U; /*ESB±*/ - UINT16 wRelayIdIndex = 0U; /*̵±*/ - UINT8 cEsbState = ESB_STATE_VALID_NO; /*ر״̬*/ - UINT16 wEsbRelayId = 0U; /*ESBɼ̵ID*/ - UINT8 cEsbRelayCollState = 0U; /*ESBɼ̵״̬*/ - UINT8 cCancelEsbRelayCollState = 0U; /*ESBȡťɼ̵״̬*/ - UINT8 cCancelEsbRelayDownState = ESB_RELAY_ERROR_DOWN_YES; /*ESBȡť̵״̬*/ - - wEsbIdIndex = GetEsbConfigBufIndex(wEsbId); - wRelayIdIndex = GetRelayConfigBufIndex(wCancelEsbRelayId); - - if ((wEsbIdIndex < ESB_SUM_MAX) && (wRelayIdIndex < RELAY_SUM_MAX)) - { - cEsbState = GetEsbState(wEsbId); /*ȡESB״̬*/ - wEsbRelayId = GetEsbRelayId(wEsbId); - cEsbRelayCollState = GetRelayCollState(wEsbRelayId); /*ȡESB̵ɼ״̬*/ - cCancelEsbRelayCollState = GetRelayCollState(wCancelEsbRelayId); /*ȡESBȡť̵ɼ״̬*/ - cCancelEsbRelayDownState = GetCancelEsbRelayDownState(wEsbId); /*ȡESBȡťɼ̵״̬*/ - - if ((ESB_STATE_VALID_YES == cEsbState) && (RELAY_STATE_UP == cEsbRelayCollState) - && (RELAY_STATE_DOWN == cCancelEsbRelayCollState) && (ESB_RELAY_ERROR_DOWN_NO == cCancelEsbRelayDownState)) - { - /*رЧҽرհťɼ̵ȡرհťɼ̵Ϊ£ȡرհťЧ*/ - SetCancelEsbValidFlag(wEsbId, ESB_CANCEL_VALID_YES); - } - else if ((RELAY_STATE_UP != cEsbRelayCollState) || (ESB_RELAY_ERROR_DOWN_NO != cCancelEsbRelayDownState)) - { - /*رհťɼ̵δȡťɼ̵״̬£ȡرհťЧ*/ - SetCancelEsbValidFlag(wEsbId, ESB_CANCEL_VALID_NO); - } - else - { - /**/ - } - } - else - { - /*ηǷ*/ - } -} - -/* -* ·ͣ·ť -* ˵UINT16 esbId ESB ID -* ֵ -* Created By LQ 2025.03.30 -*/ -void EsbNXRailCutBtnProc(UINT16 esbId) -{ - UINT16 wEsbIdIndex = 0U; /*ESB±*/ - UINT16 wEsbCutRelayId = 0u; /*ر·ťɼ̵ID*/ - UINT8 localCiId = 0U; /*ID*/ - UINT8 EsbCutRelayBelongCiId = 0U; /*ر·ťɼ̵CI*/ - UINT8 cEsbState = ESB_STATE_VALID_NO; /*ر״̬*/ - UINT32 zfsBtnRelayCollCycNum = 0U; /*Ըʽť̵жϲɼЧ*/ - UINT32 zfsBtnRelayFaultCycNum = 0U; /*Ըʽť̵жϹ*/ - UINT32 zfsBtnRelayErrTriggerCycNum = 0U; /*Ըʽť̵ж󴥷*/ - UINT32 dwEsbCutPressCycNum = 0U; /*ر·ť*/ - UINT32 dwEsbCutErrTriggerPressCycNum = 0U; /*ر·ť󴥷*/ - UINT8 btnPressValidTime = CI_TIME_NO; /*ťʱǷﵽЧʱ*/ - UINT8 btnPressFaultTime = CI_TIME_NO; /*ťʱǷﵽʱ*/ - UINT8 btnPressErrTriggerTime = CI_TIME_NO; /*ťʱǷﵽ󴥷ʱ*/ - - wEsbIdIndex = GetEsbConfigBufIndex(esbId); - - if (wEsbIdIndex < ESB_SUM_MAX) - { - wEsbCutRelayId = GetEsbCutRelayId(esbId); - EsbCutRelayBelongCiId = GetRelayBelongCiId(wEsbCutRelayId); - localCiId = GetSystemParaLocalCiId(); - if ((0U != localCiId) && (localCiId == EsbCutRelayBelongCiId)) - { - /***** 1.ر·ť/󴥷ںͲɼ̵״̬ *****/ - EsbNXRailCutBtnPressStateProc(esbId, wEsbCutRelayId); - - /***** 2.ر·ť·״̬ *****/ - cEsbState = GetEsbState(esbId); /*ȡESB״̬*/ - dwEsbCutPressCycNum = GetEsbCutPressCycNum(esbId); - zfsBtnRelayCollCycNum = GetSelfButCollCount(); - btnPressValidTime = SystemOverTimeCheck(dwEsbCutPressCycNum, zfsBtnRelayCollCycNum); - zfsBtnRelayFaultCycNum = GetSelfCancelButErrCount(); - btnPressFaultTime = SystemOverTimeCheck(dwEsbCutPressCycNum, zfsBtnRelayFaultCycNum); - - if ((ESB_STATE_VALID_YES == cEsbState) && (CI_TIME_OUT == btnPressValidTime) && (CI_TIME_OUT != btnPressFaultTime)) - { - /*Чҽر·ťʱﵽжϲɼЧʱδﵽжʱ䣬·Ч*/ - SetEsbCutState(esbId, ESB_CUT_YES); - } - else - { - SetEsbCutState(esbId, ESB_CUT_NO); /*·Ч*/ - } - - /***** 3.ر·ťϱ־ *****/ - dwEsbCutErrTriggerPressCycNum = GetEsbCutErrTrigPressCycNum(esbId); /*ȡ·ť󴥷*/ - zfsBtnRelayErrTriggerCycNum = GetSelfCancelButErrTriggerCount(); /*ȡԸʽȡť󴥷жʱ*/ - btnPressErrTriggerTime = SystemOverTimeCheck(dwEsbCutErrTriggerPressCycNum, zfsBtnRelayErrTriggerCycNum); - - if ((CI_TIME_OUT == btnPressFaultTime) || (CI_TIME_OUT == btnPressErrTriggerTime)) - { - /*·ťʱﵽжʱ󴥷ʱﵽ󴥷жʱ䣬ýر·ťϱ־Ч*/ - SetEsbCutErrFlag(esbId, ESB_ERROR_FLAG_YES); - } - else - { - SetEsbCutErrFlag(esbId, ESB_ERROR_FLAG_NO); - } - } - else - { - /*̵ID/DZ*/ - } - } - else - { - /*󣬲*/ - } -} - -/* -* ·ͣ·ť״̬ -* ˵const UINT16 wEsbId ESB ID -* const UINT16 wCutEsbRelayId ·ťɼ̵ID -* ֵ -* Created By LQ 2025.03.30 -*/ -void EsbNXRailCutBtnPressStateProc(const UINT16 wEsbId, const UINT16 wCutEsbRelayId) -{ - UINT16 wEsbIdIndex = 0U; /*ESB±*/ - UINT16 wRelayIdIndex = 0U; /*̵±*/ - UINT8 cCutRelayCollState = 0U; /*·ťɼ̵״̬*/ - UINT8 cEsbState = ESB_STATE_VALID_NO; /*ر״̬*/ - UINT8 cCutRelayDownState = ESB_RELAY_ERROR_DOWN_YES; /*ر·ť̵״̬*/ - UINT32 dwCutBtnPressCycNum = 0U; /*ر·ť*/ - UINT32 dwBtnErrTrigPressCycNum = 0U; /*ť󴥷*/ - UINT32 dwCurCycNum = 0U; /*ǰ*/ - UINT16 wRelayBelongOcId = 0U; /*̵OC*/ - UINT8 cOcCommState = TRANSMIT_STATE_BAD; /*OCͨ״̬*/ - UINT8 cABoardState = RELAY_BOARD_FAULT_YES; /*Aϵ忨״̬*/ - UINT8 cBBoardState = RELAY_BOARD_FAULT_YES; /*Bϵ忨״̬*/ - - wEsbIdIndex = GetEsbConfigBufIndex(wEsbId); - wRelayIdIndex = GetRelayConfigBufIndex(wCutEsbRelayId); - - if ((wEsbIdIndex < ESB_SUM_MAX) && (wRelayIdIndex < RELAY_SUM_MAX)) - { - cCutRelayCollState = GetRelayCollState(wCutEsbRelayId); /*ȡ·ť̵ɼ״̬*/ - - if (RELAY_STATE_UP == cCutRelayCollState) - { - /** ̵𣬸½ر·ť/󴥷 **/ - cEsbState = GetEsbState(wEsbId); /*ȡESB״̬*/ - cCutRelayDownState = GetEsbCutRelayDownState(wEsbId); /*ȡ·ťɼ̵״̬*/ - dwCutBtnPressCycNum = GetEsbCutPressCycNum(wEsbId); /*ȡ·ť*/ - dwBtnErrTrigPressCycNum = GetEsbCutErrTrigPressCycNum(wEsbId); /*ȡ·ť󴥷*/ - dwCurCycNum = Get2oo2CurCycleNum(); - - if ((ESB_STATE_VALID_YES == cEsbState) && (ESB_RELAY_ERROR_DOWN_NO == cCutRelayDownState)) - { - /*Ч֮ǰر·ťɼ̵״̬OCͨҰ忨״̬½ر·ť*/ - if ((0U == dwCutBtnPressCycNum) && (0U == dwBtnErrTrigPressCycNum)) - { - SetEsbCutPressCycNum(wEsbId, dwCurCycNum); /*º󴥷²ͬʱ*/ - } - else - { - /**/ - } - } - else - { - /*Ч֮ǰر·ťɼ̵δ״̬OCͨжϻ˫ϵ忨״̬쳣½ر·ť󴥷*/ - if ((0U == dwCutBtnPressCycNum) && (0U == dwBtnErrTrigPressCycNum)) - { - SetEsbCutErrTrigPressCycNum(wEsbId, dwCurCycNum); /*º󴥷²ͬʱ*/ - } - else - { - /**/ - } - } - } - else - { - /** ̵£½ر·ťɼ̵״̬ **/ - wRelayBelongOcId = GetRelayBelongOCId(wCutEsbRelayId); - cOcCommState = GetCiTransmitState(CI_SYSTEM_TYPE_OC, (UINT8)wRelayBelongOcId); /*ȡOCͨ״̬*/ - cABoardState = GetRelayACollBoardState(wCutEsbRelayId); /*ȡAϵ忨״̬*/ - cBBoardState = GetRelayBCollBoardState(wCutEsbRelayId); /*ȡBϵ忨״̬*/ - - if ((TRANSMIT_STATE_GOOD == cOcCommState) && ((RELAY_BOARD_FAULT_NO == cABoardState) || (RELAY_BOARD_FAULT_NO == cBBoardState))) - { - /*OCͨһϵ忨״̬ü̵*/ - SetEsbCutRelayDownState(wEsbId, ESB_RELAY_ERROR_DOWN_NO); - } - else - { - /*OCͨ쳣ϵ忨״̬ϣü̵ͨ쳣*/ - SetEsbCutRelayDownState(wEsbId, ESB_RELAY_ERROR_DOWN_YES); - } - - /** ̵£ر·ťں󴥷 **/ - SetEsbCutPressCycNum(wEsbId, 0U); - SetEsbCutErrTrigPressCycNum(wEsbId, 0U); - } - } - else - { - /*ηǷ*/ - } -} - -/* -* ·ESBָʾƺESB·ָʾ -* ˵const UINT16 wEsbId ESB ID -* ֵ -* Created By LQ 2025.03.30 -*/ -void EsbNXRailDisplayDrivOutput(const UINT16 wEsbId) -{ - UINT16 esbDisplayRelayId = 0U; /*esbָʾƼ̵ID*/ - UINT16 esbPlatformDisRelayId = 0U; /*esbվָ̨ʾƼ̵ID*/ - UINT16 cutEsbDisplayId = 0U; /*esb·ָʾƼ̵ID*/ - UINT8 chLocalCiId = 0U; /*ID*/ - UINT8 devBlongCiId = 0U; /*豸ID*/ - UINT8 esbState = ESB_STATE_VALID_NO; /*ر״̬*/ - UINT16 bufIndex = 0U; /*±*/ - UINT8 cEsbCutState = 0U; /*ESB·״̬*/ - - chLocalCiId = GetSystemParaLocalCiId(); /*ȡID*/ - devBlongCiId = GetEsbBelongCiId(wEsbId); /*ȡ豸ID*/ - - if ((0U != chLocalCiId) && (chLocalCiId == devBlongCiId)) - { - esbState = GetEsbState(wEsbId); - cEsbCutState = GetEsbCutState(wEsbId); - /*ESBָʾ״̬*/ - esbDisplayRelayId = GetEsbDisRelayId(wEsbId); /*esb IDȡesbָʾID*/ - bufIndex = GetRelayConfigBufIndex(esbDisplayRelayId); /*ȡ̵±*/ - if (RELAY_SUM_MAX > bufIndex) - { - if ((ESB_STATE_VALID_YES == esbState) && (ESB_CUT_NO == cEsbCutState)) - { - (void)SetRelayDriveState(esbDisplayRelayId, RELAY_STATE_UP); /*·ЧESBָʾ*/ - } - else - { - (void)SetRelayDriveState(esbDisplayRelayId, RELAY_STATE_DOWN); /*δ·ЧESBָʾ*/ - } - } - else - { - /*ûESBָʾƣ*/ - } - - /*ESBվָ̨ʾ״̬*/ - esbPlatformDisRelayId = GetEsbPlatformDisRelayId(wEsbId); /*esb IDȡesbվָ̨ʾƼ̵ID*/ - bufIndex = GetRelayConfigBufIndex(esbPlatformDisRelayId); /*ȡ̵±*/ - if (RELAY_SUM_MAX > bufIndex) - { - /*ESBָʾ״̬*/ - if ((ESB_STATE_VALID_YES == esbState) && (ESB_CUT_NO == cEsbCutState)) - { - (void)SetRelayDriveState(esbPlatformDisRelayId, RELAY_STATE_UP); /*·ЧESBվָ̨ʾ*/ - } - else - { - (void)SetRelayDriveState(esbPlatformDisRelayId, RELAY_STATE_DOWN); /*δ·ЧESBվָ̨ʾ*/ - } - } - else - { - /*ûESBվָ̨ʾƣ*/ - } - - cutEsbDisplayId = GetEsbCutDisRelayId(wEsbId); /*esb IDȡesb·ָʾID*/ - bufIndex = GetRelayConfigBufIndex(cutEsbDisplayId); /*ȡ̵±*/ - if (RELAY_SUM_MAX > bufIndex) - { - if (ESB_CUT_YES == cEsbCutState) - { - (void)SetRelayDriveState(cutEsbDisplayId, RELAY_STATE_UP); /*·Чָʾ*/ - } - else - { - (void)SetRelayDriveState(cutEsbDisplayId, RELAY_STATE_DOWN); /*·Чָʾ*/ - } - } - else - { - /*û·ťָʾƼ̵*/ - } - } - else - { - /*DZ豸*/ - } -} - -/* -* 쳣򿪴 -* ˵ -* ֵ -* Created By LQ 2025.05.23 -*/ -void PsdExceptOpenProc(void) -{ - UINT16 wPsdCurNum = 0U; /*PSD*/ - UINT16 ii = 0U; - UINT16 wPsdId = 0U; /*ID*/ - UINT8 cPsdVirtualAttr = 0U; /**/ - UINT8 cPsdMutualLockRemoveState = 0U; /*PSD״̬*/ - UINT8 cPsdState = 0U; /*PSD״̬*/ - UINT16 wPsdRelPhySecId = 0U; /*PSDID*/ - UINT8 cPhySecMerOccState = 0U; /*վ̨ںռ״̬*/ - - wPsdCurNum = GetPsdSum(); - for (ii = 0U; ii < wPsdCurNum; ii++) - { - wPsdId = GetPsdId(ii); - cPsdVirtualAttr = GetPsdVirtualAttribute(wPsdId); /*ȡPSD*/ - if (PSD_VIRTUAL_ATTR_NO == cPsdVirtualAttr) - { - cPsdMutualLockRemoveState = GetPsdMutualLockRemoveState(wPsdId); /*ȡPSD״̬*/ - if (PSD_MUTUALLOCK_REMOVE_NO == cPsdMutualLockRemoveState) - { - cPsdState = GetPsdState(wPsdId); /*ȡPSD״̬*/ - wPsdRelPhySecId = GetPsdRelatedPhySecId(wPsdId); - cPhySecMerOccState = GetPhySecCurMergeState(wPsdRelPhySecId); - if ((PSD_STATE_OPEN == cPsdState) && (SECTION_OCCUPY_YES != cPhySecMerOccState)) - { - SetPsdExceptOpenState(wPsdId, PSD_EXCEPT_OPEN_YES); /*PSDδռãPSD쳣*/ - } - else - { - SetPsdExceptOpenState(wPsdId, PSD_EXCEPT_OPEN_NO); /*PSDδ쳣*/ - } - } - else - { - SetPsdExceptOpenState(wPsdId, PSD_EXCEPT_OPEN_NO); /*PSDδ쳣*/ - } - } - else - { - SetPsdExceptOpenState(wPsdId, PSD_EXCEPT_OPEN_NO); /*PSDPSDδ쳣*/ - } - } -} - -/* -* Ըʽ۳·ť -* ˵const UINT16 signalId źŻID -* ֵ -* Created By LQ 2025.06.20 -*/ -void SignalZfsDetainCutBtnPro(const UINT16 signalId) -{ - UINT16 wSignalIdIndex = 0U; /*źŻ±*/ - UINT16 wDetCutBtnRelayId = 0U; /*۳·ťɼ̵ID*/ - UINT8 cLocalCiId = 0U; /*ID*/ - UINT8 cDetCutRelayBelongCiId = 0U; /*۳·ťɼ̵CI*/ - UINT32 dwDetCutBtnPressCycNum = 0U; /*۳·ť*/ - UINT32 dwZfsCutBtnFaultCycNum = 0U; /*Ըʽ۳·ťж*/ - UINT8 cBtnFaultTimeFlag = CI_TIME_NO; /*ťʱǷﵽʱ*/ - UINT32 dwDetCutErrTrigPressCycNum = 0U; /*۳·ť󴥷*/ - UINT32 dwZfsCutBtnErrTrigCycNum = 0U; /*Ըʽ۳·ť󴥷ж*/ - UINT8 cBtnErrTrigTimeFlag = CI_TIME_NO; /*ťʱǷﵽ󴥷ʱ*/ - UINT8 cDetCutBtnState = 0U; /*۳·ť״̬*/ - - wSignalIdIndex = GetSignalConfigBufIndex(signalId); - - if (SIGNAL_SUM_MAX > wSignalIdIndex) - { - wDetCutBtnRelayId = GetSignalDetainCutRelayId(signalId); - cDetCutRelayBelongCiId = GetRelayBelongCiId(wDetCutBtnRelayId); - cLocalCiId = GetSystemParaLocalCiId(); - - if ((cLocalCiId == cDetCutRelayBelongCiId) && (0U != cLocalCiId)) - { - /***** 1.۳·ť/󴥷ںͲɼ̵״̬ *****/ - ZfsDetCutBtnPressStateProc(signalId, wDetCutBtnRelayId); - - /***** 2.۳·ťϱ־ *****/ - dwDetCutBtnPressCycNum = GetDetCutBtnPressCycNum(signalId); - dwZfsCutBtnFaultCycNum = GetSelfCancelButErrCount(); - cBtnFaultTimeFlag = SystemOverTimeCheck(dwDetCutBtnPressCycNum, dwZfsCutBtnFaultCycNum); /*жϿ۳·ťʱǷﵽʱ*/ - dwDetCutErrTrigPressCycNum = GetDetCutBtnErrTrigPressCycNum(signalId); - dwZfsCutBtnErrTrigCycNum = GetSelfCancelButErrTriggerCount(); - cBtnErrTrigTimeFlag = SystemOverTimeCheck(dwDetCutErrTrigPressCycNum, dwZfsCutBtnErrTrigCycNum); /*жϿ۳·ť󴥷ʱǷﵽ󴥷ʱ*/ - - if ((CI_TIME_OUT == cBtnFaultTimeFlag) || (CI_TIME_OUT == cBtnErrTrigTimeFlag)) - { - /*۳·ʱﵽжϹЧʱ۳·ť󴥷ʱﵽж󴥷Чʱ䣬ÿ۳·ťϱ־Ч*/ - SetSignalDetCutBtnErrFlag(signalId, SIGNAL_ZFS_BTN_ERR_FLAG_YES); - } - else - { - SetSignalDetCutBtnErrFlag(signalId, SIGNAL_ZFS_BTN_ERR_FLAG_NO); /*ÿ۳·ťϱ־Ч*/ - } - - /***** 3.۳·ťЧ״̬ *****/ - ZfsDetCutBtnValidStateProc(signalId, wDetCutBtnRelayId); - - /***** 4.·ť״̬ˢ¿۳ť־ *****/ - cDetCutBtnState = GetDetCutBtnState(signalId); - if (SIGNAL_DETAIN_CUT_VALID_YES == cDetCutBtnState) - { - /*۳·ťЧÿ۳ť־Ч*/ - SetSignalDetainBtnActFlag(signalId, SIGNAL_ZFS_BTN_ACT_FLAG_NO); - } - else - { - /*۳·ťЧ*/ - } - } - else - { - /*DZ*/ - } - } - else - { - /*ηǷ*/ - } -} - -/* -* Ըʽ۳·ť״̬ -* ˵const UINT16 wSignalId źŻID -* const UINT16 wDetCutBtnRelayId ۳·ťɼ̵ID -* ֵ -* Created By LQ 2025.06.20 -*/ -void ZfsDetCutBtnPressStateProc(const UINT16 wSignalId, const UINT16 wDetCutBtnRelayId) -{ - UINT16 wSignalIdIndex = 0U; /*źŻ±*/ - UINT16 wRelayIdIndex = 0U; /*̵±*/ - UINT8 cDetCutRelayCollState = 0U; /*۳·ťɼ̵״̬*/ - UINT8 cDetainBtnActFlag = SIGNAL_ZFS_BTN_ACT_FLAG_NO; /*۳ť־*/ - UINT8 cDetButErrorFlag = 0U; /*۳ťϱ־*/ - UINT8 cDetCancelBtnErrorFlag = 0U; /*۳ȡťϱ־*/ - UINT8 cDetCutRelayDownState = SIGNAL_RELAY_ERROR_DOWN_YES; /*۳·ťɼ̵״̬*/ - UINT32 dwDetCutBtnPressCycNum = 0U; /*۳·ť*/ - UINT32 dwDetCutErrTrigPressCycNum = 0U; /*۳·ť󴥷*/ - UINT32 dwCurCycNum = 0U; /*ǰ*/ - UINT16 wRelayBelongOcId = 0U; /*̵OC*/ - UINT8 cOcCommState = TRANSMIT_STATE_BAD; /*OCͨ״̬*/ - UINT8 cABoardState = RELAY_BOARD_FAULT_YES; /*Aϵ忨״̬*/ - UINT8 cBBoardState = RELAY_BOARD_FAULT_YES; /*Bϵ忨״̬*/ - - wSignalIdIndex = GetSignalConfigBufIndex(wSignalId); - wRelayIdIndex = GetRelayConfigBufIndex(wDetCutBtnRelayId); - - if ((SIGNAL_SUM_MAX > wSignalIdIndex) && (RELAY_SUM_MAX > wRelayIdIndex)) - { - cDetCutRelayCollState = GetRelayCollState(wDetCutBtnRelayId); /*ȡ۳·ť̵ɼ״̬*/ - - if (RELAY_STATE_UP == cDetCutRelayCollState) - { - /** ̵𣬸¿۳·ť/󴥷 **/ - cDetainBtnActFlag = GetSignalDetainBtnActFlag(wSignalId); - cDetButErrorFlag = GetSignalDetainBtnErrFlag(wSignalId); /*ȡ۳ťϱ־*/ - cDetCancelBtnErrorFlag = GetSignalCancelDetainBtnErrFlag(wSignalId); /*ȡ۳ȡťϱ־*/ - cDetCutRelayDownState = GetDetCutBtnRelayDownState(wSignalId); /*ȡ۳·ťɼ̵״̬*/ - dwDetCutBtnPressCycNum = GetDetCutBtnPressCycNum(wSignalId); /*ȡ۳·ťʱ*/ - dwDetCutErrTrigPressCycNum = GetDetCutBtnErrTrigPressCycNum(wSignalId); /*ȡ۳·ť󴥷ʱ*/ - dwCurCycNum = Get2oo2CurCycleNum(); - - if ((SIGNAL_ZFS_BTN_ACT_FLAG_YES == cDetainBtnActFlag) && ((SIGNAL_ZFS_BTN_ERR_FLAG_YES == cDetButErrorFlag) || (SIGNAL_ZFS_BTN_ERR_FLAG_YES == cDetCancelBtnErrorFlag)) - && (SIGNAL_RELAY_ERROR_DOWN_NO == cDetCutRelayDownState)) - { - /** ۳ť־Чң۳ťϻ۳ȡťϣڿ۳·ťɼ̵״̬Ϊ£OCͨҴһϵ忨״̬¿۳·ťʱ **/ - if ((0U == dwDetCutBtnPressCycNum) && (0U == dwDetCutErrTrigPressCycNum)) - { - SetDetCutBtnPressCycNum(wSignalId, dwCurCycNum); /*ÿ۳·ťʱΪڣ󴥷²ͬʱڣ*/ - } - else - { - /**/ - } - } - else - { - /** ۳ť־Чڿ۳·ťɼ̵״̬£OCͨжϻϵ忨״̬ϣ¿۳·ť󴥷ʱ **/ - if ((0U == dwDetCutBtnPressCycNum) && (0U == dwDetCutErrTrigPressCycNum)) - { - SetDetCutBtnErrTrigPressCycNum(wSignalId, dwCurCycNum); /*ÿ۳·ť󴥷ʱΪڣ󴥷²ͬʱڣ*/ - } - else - { - /**/ - } - } - } - else - { - /** ̵£¿۳·ťɼ̵״̬ **/ - wRelayBelongOcId = GetRelayBelongOCId(wDetCutBtnRelayId); - cOcCommState = GetCiTransmitState(CI_SYSTEM_TYPE_OC, (UINT8)wRelayBelongOcId); /*ȡOCͨ״̬*/ - cABoardState = GetRelayACollBoardState(wDetCutBtnRelayId); /*ȡAϵ忨״̬*/ - cBBoardState = GetRelayBCollBoardState(wDetCutBtnRelayId); /*ȡBϵ忨״̬*/ - - if ((TRANSMIT_STATE_GOOD == cOcCommState) && ((RELAY_BOARD_FAULT_NO == cABoardState) || (RELAY_BOARD_FAULT_NO == cBBoardState))) - { - /*OCͨһϵ忨״̬ü̵*/ - SetDetCutBtnRelayDownState(wSignalId, SIGNAL_RELAY_ERROR_DOWN_NO); - } - else - { - /*OCͨ쳣ϵ忨״̬ϣü̵ͨ쳣*/ - SetDetCutBtnRelayDownState(wSignalId, SIGNAL_RELAY_ERROR_DOWN_YES); - } - - /** ̵£۳·ťں󴥷 **/ - SetDetCutBtnPressCycNum(wSignalId, 0U); - SetDetCutBtnErrTrigPressCycNum(wSignalId, 0U); - } - } - else - { - /*ηǷ*/ - } -} - -/* -* Ըʽ۳·ťЧ״̬ -* ˵const UINT16 wSignalId źŻID -* const UINT16 wDetCutBtnRelayId ۳·ťɼ̵ID -* ֵ -* Created By LQ 2025.06.20 -*/ -void ZfsDetCutBtnValidStateProc(const UINT16 wSignalId, const UINT16 wDetCutBtnRelayId) -{ - UINT16 wSignalIdIndex = 0U; /*źŻ±*/ - UINT16 wRelayIdIndex = 0U; /*̵±*/ - UINT32 dwCycNum = 0U; - UINT32 dwDetCutBtnPressCycNum = 0U; /*۳·ť*/ - UINT32 dwZfsBtnValidCycNum = 0U; /*ԸʽťЧж*/ - UINT8 cDetainBtnActFlag = SIGNAL_ZFS_BTN_ACT_FLAG_NO; /*۳ť־*/ - UINT8 cDetButErrorFlag = 0U; /*۳ťϱ־*/ - UINT8 cDetCancelBtnErrorFlag = 0U; /*۳ȡťϱ־*/ - UINT32 dwDetBtnPressCycNum = 0U; /*۳ť*/ - UINT8 cDetCutRelayDownState = SIGNAL_RELAY_ERROR_DOWN_YES; /*۳·ťɼ̵״̬*/ - UINT8 cDetCutBtnErrorFlag = SIGNAL_ZFS_BTN_ERR_FLAG_NO; /*۳·ťϱ־*/ - - wSignalIdIndex = GetSignalConfigBufIndex(wSignalId); - wRelayIdIndex = GetRelayConfigBufIndex(wDetCutBtnRelayId); - - if ((SIGNAL_SUM_MAX > wSignalIdIndex) && (RELAY_SUM_MAX > wRelayIdIndex)) - { - /**** 1.۳·ťЧ״̬ж ****/ - dwCycNum = Get2oo2CurCycleNum(); - dwDetCutBtnPressCycNum = GetDetCutBtnPressCycNum(wSignalId); - dwZfsBtnValidCycNum = GetSelfButCollCount(); - - if ((0U < dwDetCutBtnPressCycNum) && ((dwCycNum - dwDetCutBtnPressCycNum) == (dwZfsBtnValidCycNum + 1U))) - { - /*³ʱڣÿ۳·ťЧΪ֤·Чڴ˲áʱðťЧķ*/ - SetDetCutBtnState(wSignalId, SIGNAL_DETAIN_CUT_VALID_YES); - } - else - { - /**/ - } - - /**** 2.۳·ťЧ״̬ж ****/ - cDetainBtnActFlag = GetSignalDetainBtnActFlag(wSignalId); /*ȡ۳ť־*/ - cDetButErrorFlag = GetSignalDetainBtnErrFlag(wSignalId); /*ȡ۳ťϱ־*/ - cDetCancelBtnErrorFlag = GetSignalCancelDetainBtnErrFlag(wSignalId); /*ȡ۳ȡťϱ־*/ - dwDetBtnPressCycNum = GetDetainBtnPressCycNum(wSignalId); /*ȡ۳ťʼ*/ - cDetCutRelayDownState = GetDetCutBtnRelayDownState(wSignalId); /*ȡ۳·ťɼ̵״̬*/ - cDetCutBtnErrorFlag = GetSignalDetCutBtnErrFlag(wSignalId); /*ȡ۳·ťϱ־*/ - - if (((SIGNAL_ZFS_BTN_ACT_FLAG_YES != cDetainBtnActFlag) && (SIGNAL_ZFS_BTN_ERR_FLAG_YES != cDetButErrorFlag) && (SIGNAL_ZFS_BTN_ERR_FLAG_YES != cDetCancelBtnErrorFlag)) - || ((0U < dwDetCutBtnPressCycNum) && (dwDetBtnPressCycNum >= dwDetCutBtnPressCycNum)) - || (SIGNAL_RELAY_ERROR_DOWN_NO != cDetCutRelayDownState) - || (SIGNAL_ZFS_BTN_ERR_FLAG_NO != cDetCutBtnErrorFlag)) - { - /* ۳ťδң۳ťͿ۳ȡťδϣ - ۳ťڴڵ·ť - ·ťɼ̵ - ·ť - ÿ۳·ťЧ*/ - SetDetCutBtnState(wSignalId, SIGNAL_DETAIN_CUT_VALID_NO); - } - else - { - /**/ - } - } - else - { - /*ηǷ*/ - } -} - -/* -* ȡSPKSťɼ̽ -* ˵const UINT16 wSpksId SPKS -* ֵCI_ERROR 0 ̽ -* CI_SUCCESS 1 -* Created By LQ 2025.06.26 -*/ -UINT8 GetSpksBtnCollTolerateRet(const UINT16 wSpksId) -{ - UINT8 cRetVal = CI_ERROR; - UINT16 wDevIdIndex = 0U; /*ID*/ - UINT16 wCollRelayId = 0U; /*ɼ̵ID*/ - UINT8 cCollState = 0U; /*̵ɼ״̬*/ - UINT32 dwSpksBtnPressCycNum = 0U; /*SPKSťʼ*/ - UINT32 dwTempOcCollTolerateCount = 0U; - UINT32 dwCurCycNum = 0U; /*ǰں*/ - UINT16 wRelayBelongOcId = 0U; /*̵OC*/ - UINT8 cOcCommState = TRANSMIT_STATE_BAD; /*OCͨ״̬*/ - UINT8 cABoardState = RELAY_BOARD_FAULT_YES; /*Aϵ忨״̬*/ - UINT8 cBBoardState = RELAY_BOARD_FAULT_YES; /*Bϵ忨״̬*/ - UINT8 cBoardType = 0U; /*̵忨*/ - UINT8 cTimeCheckFlag = 0U; - - wDevIdIndex = GetSpksConfigBufIndex(wSpksId); - - if (SPKS_SUM_MAX > wDevIdIndex) - { - wCollRelayId = GetSpksColRelayId(wSpksId); /*ȡSPKSɼ̵ID*/ - cCollState = GetRelayCollState(wCollRelayId); /*ȡSPKSɼ̵״̬*/ - if (RELAY_STATE_UP == cCollState) - { - /*SPKSɼ̵SPKSťʼΪ0*/ - SetSpksPressCycNum(wSpksId, 0U); - cRetVal = CI_SUCCESS; - } - else - { - dwSpksBtnPressCycNum = GetSpksPressCycNum(wSpksId); /*ȡSPKSťʼں*/ - if (0U == dwSpksBtnPressCycNum) - { - dwCurCycNum = Get2oo2CurCycleNum(); - SetSpksPressCycNum(wSpksId, dwCurCycNum); /*õǰΪSPKSťʼں*/ - } - else - { - /*SPKSťʼںţ*/ - } - - wRelayBelongOcId = GetRelayBelongOCId(wCollRelayId); - cOcCommState = GetCiTransmitState(CI_SYSTEM_TYPE_OC, (UINT8)wRelayBelongOcId); /*ȡOCͨ״̬*/ - cABoardState = GetRelayACollBoardState(wCollRelayId); /*ȡAϵ忨״̬*/ - cBBoardState = GetRelayBCollBoardState(wCollRelayId); /*ȡBϵ忨״̬*/ - cBoardType = GetRelayBoardType(wCollRelayId); /*ȡ̵忨*/ - - if ((TRANSMIT_STATE_GOOD == cOcCommState) && ((RELAY_BOARD_FAULT_NO == cABoardState) || (RELAY_BOARD_FAULT_NO == cBBoardState)) && (RELAY_SI_BOARD == cBoardType)) - { - /*OCͨһϵ忨״̬Ϊɢ壬жǷ񳬹ʱ*/ - dwSpksBtnPressCycNum = GetSpksPressCycNum(wSpksId); /*ȡSPKSťʼں*/ - dwTempOcCollTolerateCount = GetOcCollTolerateCount(); - cTimeCheckFlag = SystemOverOrEqualTimeCheck(dwSpksBtnPressCycNum, dwTempOcCollTolerateCount); /*жSPKSťʱǷﵽʱ*/ - if (CI_TIME_OUT != cTimeCheckFlag) - { - cRetVal = CI_SUCCESS; /*δʱҪ*/ - } - else - { - cRetVal = CI_ERROR; /*ʱҪ*/ - } - } - else - { - /*OCͨ쳣ϵ忨״̬ϻ̵ɢ壬0*/ - cRetVal = CI_ERROR; - } - } - } - else - { - cRetVal = CI_ERROR; /*ηǷ0*/ - } - - return cRetVal; -} - -/* -* ȡPsdſ̵ɼ̽ -* ˵const UINT16 wPsdId PSD -* ֵCI_ERROR 0 ̽ -* CI_SUCCESS 1 -* Created By LQ 2025.06.26 -*/ -UINT8 GetPsdRelayCollTolerateRet(const UINT16 wPsdId) -{ - UINT8 cRetVal = CI_ERROR; - UINT16 wDevIdIndex = 0U; /*ID*/ - UINT16 wCollRelayId = 0U; /*ɼ̵ID*/ - UINT8 cCollState = 0U; /*̵ɼ״̬*/ - UINT32 dwRelayDownCycNum = 0U; /*PSDſ̵ʼ*/ - UINT32 dwTempOcCollTolerateCount; - UINT32 dwCurCycNum = 0U; /*ǰں*/ - UINT16 wRelayBelongOcId = 0U; /*̵OC*/ - UINT8 cOcCommState = TRANSMIT_STATE_BAD; /*OCͨ״̬*/ - UINT8 cABoardState = RELAY_BOARD_FAULT_YES; /*Aϵ忨״̬*/ - UINT8 cBBoardState = RELAY_BOARD_FAULT_YES; /*Bϵ忨״̬*/ - UINT8 cBoardType = 0U; /*̵忨*/ - UINT8 cTimeCheckFlag = 0U; - - wDevIdIndex = GetPsdConfigBufIndex(wPsdId); - - if (PSD_SUM_MAX > wDevIdIndex) - { - wCollRelayId = GetPsdStateRelayId(wPsdId); /*ȡPSDſ̵ID*/ - cCollState = GetRelayCollState(wCollRelayId); /*ȡPSDſ̵״̬*/ - if (RELAY_STATE_UP == cCollState) - { - /*PSDſ̵PSDſ̵ʼΪ0*/ - SetPsdRelayDownCycNum(wPsdId, 0U); - cRetVal = CI_SUCCESS; - } - else - { - dwRelayDownCycNum = GetPsdRelayDownCycNum(wPsdId); /*ȡPSDſ̵ʼں*/ - if (0U == dwRelayDownCycNum) - { - dwCurCycNum = Get2oo2CurCycleNum(); - SetPsdRelayDownCycNum(wPsdId, dwCurCycNum); /*õǰΪPSDſ̵ʼں*/ - } - else - { - /*PSDſ̵ʼںţ*/ - } - - wRelayBelongOcId = GetRelayBelongOCId(wCollRelayId); - cOcCommState = GetCiTransmitState(CI_SYSTEM_TYPE_OC, (UINT8)wRelayBelongOcId); /*ȡOCͨ״̬*/ - cABoardState = GetRelayACollBoardState(wCollRelayId); /*ȡAϵ忨״̬*/ - cBBoardState = GetRelayBCollBoardState(wCollRelayId); /*ȡBϵ忨״̬*/ - cBoardType = GetRelayBoardType(wCollRelayId); /*ȡ̵忨*/ - - if ((TRANSMIT_STATE_GOOD == cOcCommState) && ((RELAY_BOARD_FAULT_NO == cABoardState) || (RELAY_BOARD_FAULT_NO == cBBoardState)) && (RELAY_SI_BOARD == cBoardType)) - { - /*OCͨһϵ忨״̬Ϊɢ壬жǷ񳬹ʱ*/ - dwRelayDownCycNum = GetPsdRelayDownCycNum(wPsdId); /*ȡPSDſ̵ʼں*/ - dwTempOcCollTolerateCount = GetOcCollTolerateCount(); - cTimeCheckFlag = SystemOverOrEqualTimeCheck(dwRelayDownCycNum, dwTempOcCollTolerateCount); /*жPSDſ̵ʱǷﵽʱ*/ - if (CI_TIME_OUT != cTimeCheckFlag) - { - cRetVal = CI_SUCCESS; /*δʱҪ*/ - } - else - { - cRetVal = CI_ERROR; /*ʱҪ*/ - } - } - else - { - /*OCͨ쳣ϵ忨״̬ϻ̵ɢ壬0*/ - cRetVal = CI_ERROR; - } - } - } - else - { - cRetVal = CI_ERROR; /*ηǷ0*/ - } - - return cRetVal; -} - -/* -* ȡEsbɼ̽ -* ˵const UINT16 wEsbId ESB -* ֵCI_ERROR 0 ̽ -* CI_SUCCESS 1 -* Created By LQ 2025.06.26 -*/ -UINT8 GetEsbCollTolerateRet(const UINT16 wEsbId) -{ - UINT8 cRetVal = CI_ERROR; - UINT16 wDevIdIndex = 0U; /*ID*/ - UINT16 wCollRelayId = 0U; /*ɼ̵ID*/ - UINT8 cCollState = 0U; /*̵ɼ״̬*/ - UINT32 dwEsbPressCycNum = 0U; /*ESBʼ*/ - UINT32 dwTempOcCollTolerateCount = 0U; - UINT32 dwCurCycNum = 0U; /*ǰں*/ - UINT16 wRelayBelongOcId = 0U; /*̵OC*/ - UINT8 cOcCommState = TRANSMIT_STATE_BAD; /*OCͨ״̬*/ - UINT8 cABoardState = RELAY_BOARD_FAULT_YES; /*Aϵ忨״̬*/ - UINT8 cBBoardState = RELAY_BOARD_FAULT_YES; /*Bϵ忨״̬*/ - UINT8 cBoardType = 0U; /*̵忨*/ - UINT8 cTimeCheckFlag = 0U; - - wDevIdIndex = GetEsbConfigBufIndex(wEsbId); - - if (ESB_SUM_MAX > wDevIdIndex) - { - wCollRelayId = GetEsbRelayId(wEsbId); /*ȡESBɼ̵ID*/ - cCollState = GetRelayCollState(wCollRelayId); /*ȡESBɼ̵״̬*/ - if (RELAY_STATE_UP == cCollState) - { - /*ESBɼ̵ESBʼΪ0*/ - SetEsbPressCycNum(wEsbId, 0U); - cRetVal = CI_SUCCESS; - } - else - { - dwEsbPressCycNum = GetEsbPressCycNum(wEsbId); /*ȡESBʼں*/ - if (0U == dwEsbPressCycNum) - { - dwCurCycNum = Get2oo2CurCycleNum(); - SetEsbPressCycNum(wEsbId, dwCurCycNum); /*õǰΪESBʼں*/ - } - else - { - /*ESBʼںţ*/ - } - - wRelayBelongOcId = GetRelayBelongOCId(wCollRelayId); - cOcCommState = GetCiTransmitState(CI_SYSTEM_TYPE_OC, (UINT8)wRelayBelongOcId); /*ȡOCͨ״̬*/ - cABoardState = GetRelayACollBoardState(wCollRelayId); /*ȡAϵ忨״̬*/ - cBBoardState = GetRelayBCollBoardState(wCollRelayId); /*ȡBϵ忨״̬*/ - cBoardType = GetRelayBoardType(wCollRelayId); /*ȡ̵忨*/ - - if ((TRANSMIT_STATE_GOOD == cOcCommState) && ((RELAY_BOARD_FAULT_NO == cABoardState) || (RELAY_BOARD_FAULT_NO == cBBoardState)) && (RELAY_SI_BOARD == cBoardType)) - { - /*OCͨһϵ忨״̬Ϊɢ壬жǷ񳬹ʱ*/ - dwEsbPressCycNum = GetEsbPressCycNum(wEsbId); /*ȡESBʼں*/ - dwTempOcCollTolerateCount = GetOcCollTolerateCount(); - cTimeCheckFlag = SystemOverOrEqualTimeCheck(dwEsbPressCycNum, dwTempOcCollTolerateCount); /*жESBʱǷﵽʱ*/ - if (CI_TIME_OUT != cTimeCheckFlag) - { - cRetVal = CI_SUCCESS; /*δʱҪ*/ - } - else - { - cRetVal = CI_ERROR; /*ʱҪ*/ - } - } - else - { - /*OCͨ쳣ϵ忨״̬ϻ̵ɢ壬0*/ - cRetVal = CI_ERROR; - } - } - } - else - { - cRetVal = CI_ERROR; /*ηǷ0*/ - } - - return cRetVal; -} - -/* -* ȡ۳ť1ɼ̽ -* ˵const UINT16 wSignalId źŻ -* ֵCI_ERROR 0 ̽ -* CI_SUCCESS 1 -* Created By LQ 2025.06.26 -*/ -UINT8 GetFstDetBtnCollTolerateRet(const UINT16 wSignalId) -{ - UINT8 cRetVal = CI_ERROR; - UINT16 wDevIdIndex = 0U; /*ID*/ - UINT16 wCollRelayId = 0U; /*ɼ̵ID*/ - UINT8 cCollState = 0U; /*̵ɼ״̬*/ - UINT8 cDetValidFlag = 0U; - UINT32 dwDetBtnPressCycNum = 0U; /*۳ťʼ*/ - UINT32 dwTempOcCollTolerateCount = 0U; - UINT32 dwCurCycNum = 0U; /*ǰں*/ - UINT16 wRelayBelongOcId = 0U; /*̵OC*/ - UINT8 cOcCommState = TRANSMIT_STATE_BAD; /*OCͨ״̬*/ - UINT8 cABoardState = RELAY_BOARD_FAULT_YES; /*Aϵ忨״̬*/ - UINT8 cBBoardState = RELAY_BOARD_FAULT_YES; /*Bϵ忨״̬*/ - UINT8 cBoardType = 0U; /*̵忨*/ - UINT8 cTimeCheckFlag = 0U; - - wDevIdIndex = GetSignalConfigBufIndex(wSignalId); - - if (SIGNAL_SUM_MAX > wDevIdIndex) - { - wCollRelayId = GetSignalDetainRelayId(wSignalId); /*ȡ۳ťɼ̵ID*/ - cCollState = GetRelayCollState(wCollRelayId); /*ȡ۳ťɼ̵״̬*/ - cDetValidFlag = GetCiFunctionSwitchConfig(FUNC_RELAY_DETAIN_VALID_FLAG); /*ȡӲ߿۳Ч־*/ - - if (((UP_VALID == cDetValidFlag) && (RELAY_STATE_DOWN == cCollState)) || ((DOWN_VALID == cDetValidFlag) && (RELAY_STATE_UP == cCollState))) - { - /*۳ţ̌ÿ۳ťʼΪ0*/ - SetDetainBtnPressCycNum(wSignalId, 0U); - cRetVal = CI_SUCCESS; - } - else - { - dwDetBtnPressCycNum = GetDetainBtnPressCycNum(wSignalId); /*ȡ۳ťʼں*/ - if (0U == dwDetBtnPressCycNum) - { - dwCurCycNum = Get2oo2CurCycleNum(); - SetDetainBtnPressCycNum(wSignalId, dwCurCycNum); /*õǰΪ۳ťʼں*/ - } - else - { - /*ÿ۳ťʼںţ*/ - } - - wRelayBelongOcId = GetRelayBelongOCId(wCollRelayId); - cOcCommState = GetCiTransmitState(CI_SYSTEM_TYPE_OC, (UINT8)wRelayBelongOcId); /*ȡOCͨ״̬*/ - cABoardState = GetRelayACollBoardState(wCollRelayId); /*ȡAϵ忨״̬*/ - cBBoardState = GetRelayBCollBoardState(wCollRelayId); /*ȡBϵ忨״̬*/ - cBoardType = GetRelayBoardType(wCollRelayId); /*ȡ̵忨*/ - - if ((TRANSMIT_STATE_GOOD == cOcCommState) && ((RELAY_BOARD_FAULT_NO == cABoardState) || (RELAY_BOARD_FAULT_NO == cBBoardState)) && (RELAY_SI_BOARD == cBoardType)) - { - /*OCͨһϵ忨״̬Ϊɢ壬жǷ񳬹ʱ*/ - dwDetBtnPressCycNum = GetDetainBtnPressCycNum(wSignalId); /*ȡ۳ťʼں*/ - dwTempOcCollTolerateCount = GetOcCollTolerateCount(); - cTimeCheckFlag = SystemOverOrEqualTimeCheck(dwDetBtnPressCycNum, dwTempOcCollTolerateCount); /*жϿ۳ťʱǷﵽʱ*/ - if (CI_TIME_OUT != cTimeCheckFlag) - { - cRetVal = CI_SUCCESS; /*δʱҪ*/ - } - else - { - cRetVal = CI_ERROR; /*ʱҪ*/ - } - } - else - { - /*OCͨ쳣ϵ忨״̬ϻ̵ɢ壬0*/ - cRetVal = CI_ERROR; - } - } - } - else - { - cRetVal = CI_ERROR; /*ηǷ0*/ - } - - return cRetVal; -} - -/* -* ȡ۳ť2ɼ̽ -* ˵const UINT16 wSignalId źŻ -* ֵCI_ERROR 0 ̽ -* CI_SUCCESS 1 -* Created By LQ 2025.06.26 -*/ -UINT8 GetSndDetBtnCollTolerateRet(const UINT16 wSignalId) -{ - UINT8 cRetVal = CI_ERROR; - UINT16 wDevIdIndex = 0U; /*ID*/ - UINT16 wCollRelayId = 0U; /*ɼ̵ID*/ - UINT8 cCollState = 0U; /*̵ɼ״̬*/ - UINT8 cDetValidFlag = 0U; - UINT32 dwDetBtnPressCycNum = 0U; /*۳ťʼ*/ - UINT32 dwTempOcCollTolerateCount = 0U; - UINT32 dwCurCycNum = 0U; /*ǰں*/ - UINT16 wRelayBelongOcId = 0U; /*̵OC*/ - UINT8 cOcCommState = TRANSMIT_STATE_BAD; /*OCͨ״̬*/ - UINT8 cABoardState = RELAY_BOARD_FAULT_YES; /*Aϵ忨״̬*/ - UINT8 cBBoardState = RELAY_BOARD_FAULT_YES; /*Bϵ忨״̬*/ - UINT8 cBoardType = 0U; /*̵忨*/ - UINT8 cTimeCheckFlag = 0U; - - wDevIdIndex = GetSignalConfigBufIndex(wSignalId); - - if (SIGNAL_SUM_MAX > wDevIdIndex) - { - wCollRelayId = GetSignalDetainRelayId_2(wSignalId); /*ȡ۳ťɼ̵ID*/ - cCollState = GetRelayCollState(wCollRelayId); /*ȡ۳ťɼ̵״̬*/ - cDetValidFlag = GetCiFunctionSwitchConfig(FUNC_RELAY_DETAIN_VALID_FLAG); /*ȡӲ߿۳Ч־*/ - - if (((UP_VALID == cDetValidFlag) && (RELAY_STATE_DOWN == cCollState)) || ((DOWN_VALID == cDetValidFlag) && (RELAY_STATE_UP == cCollState))) - { - /*۳ţ̌ÿ۳ťʼΪ0*/ - SetDetainSndBtnPressCycNum(wSignalId, 0U); - cRetVal = CI_SUCCESS; - } - else - { - dwDetBtnPressCycNum = GetDetainSndBtnPressCycNum(wSignalId); /*ȡ۳ťʼں*/ - if (0U == dwDetBtnPressCycNum) - { - dwCurCycNum = Get2oo2CurCycleNum(); - SetDetainSndBtnPressCycNum(wSignalId, dwCurCycNum); /*õǰΪ۳ťʼں*/ - } - else - { - /*ÿ۳ťʼںţ*/ - } - - wRelayBelongOcId = GetRelayBelongOCId(wCollRelayId); - cOcCommState = GetCiTransmitState(CI_SYSTEM_TYPE_OC, (UINT8)wRelayBelongOcId); /*ȡOCͨ״̬*/ - cABoardState = GetRelayACollBoardState(wCollRelayId); /*ȡAϵ忨״̬*/ - cBBoardState = GetRelayBCollBoardState(wCollRelayId); /*ȡBϵ忨״̬*/ - cBoardType = GetRelayBoardType(wCollRelayId); /*ȡ̵忨*/ - - if ((TRANSMIT_STATE_GOOD == cOcCommState) && ((RELAY_BOARD_FAULT_NO == cABoardState) || (RELAY_BOARD_FAULT_NO == cBBoardState)) && (RELAY_SI_BOARD == cBoardType)) - { - /*OCͨһϵ忨״̬Ϊɢ壬жǷ񳬹ʱ*/ - dwDetBtnPressCycNum = GetDetainSndBtnPressCycNum(wSignalId); /*ȡ۳ťʼں*/ - dwTempOcCollTolerateCount = GetOcCollTolerateCount(); - cTimeCheckFlag = SystemOverOrEqualTimeCheck(dwDetBtnPressCycNum, dwTempOcCollTolerateCount); /*жϿ۳ťʱǷﵽʱ*/ - if (CI_TIME_OUT != cTimeCheckFlag) - { - cRetVal = CI_SUCCESS; /*δʱҪ*/ - } - else - { - cRetVal = CI_ERROR; /*ʱҪ*/ - } - } - else - { - /*OCͨ쳣ϵ忨״̬ϻ̵ɢ壬0*/ - cRetVal = CI_ERROR; - } - } - } - else - { - cRetVal = CI_ERROR; /*ηǷ0*/ - } - - return cRetVal; } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/IO/DeviceRelayDataProcess.h b/TSCP/src/APP/ciapp/IO/DeviceRelayDataProcess.h index a0d2621..8602f09 100644 --- a/TSCP/src/APP/ciapp/IO/DeviceRelayDataProcess.h +++ b/TSCP/src/APP/ciapp/IO/DeviceRelayDataProcess.h @@ -95,8 +95,8 @@ UINT8 GetSignalShowColor(const UINT16 signalId); /* * źŻ˫ϵ忨ϣźŻǰɫ * ˵ -UINT16 signalIdźŻid -UINT8 ocId OC ID + UINT16 signalIdźŻid + UINT8 ocId OC ID * ֵ źŻɫ */ UINT8 GetOcBoardFaultSignalColor(UINT16 signalId, UINT8 ocId); @@ -269,7 +269,6 @@ void FloodGateDeviceToRelayStateProc(void); * ½·ĵͬ߼״̬ * ˵ void * ֵ void -* BY CGH 20250523 */ void RouteDCTYRelayToDeviceStateProc(void); @@ -683,14 +682,13 @@ void DetZfsCancelBtnPressStateProc(const UINT16 wSignalId, const UINT16 wCancelD void DetZfsCancelBtnActFlagProc(const UINT16 wSignalId, const UINT16 wCancelDetBtnRelayId); /* -* Ըʽ۳ָʾ -* ˵const UINT16 signalId źŻID -* const UINT16 signalDetDisRelayId ۳ʾƼ̵ID -* const UINT16 signalDetCutDisRelayId ۳·ʾƼ̵ -* ֵ -* Modified By LQ 2025.07.03 +* Ըʽ۳ָʾ +* ˵const UINT16 signalId, źŻID +* const UINT16 signalDetainDisplayId, ۳ʾƼ̵1ID +* ֵ +* */ -void DriveZfsDetainBsRelay(const UINT16 signalId, const UINT16 signalDetDisRelayId, const UINT16 signalDetCutDisRelayId); +void DriveZfsDetainBsRelay(const UINT16 signalId, const UINT16 signalDetainDisplayId); /* * Ըʽͣť @@ -855,135 +853,6 @@ UINT8 GetSwitchCollToleratePos(const 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); - #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/IO/InputDataProcess.c b/TSCP/src/APP/ciapp/IO/InputDataProcess.c index 493ded8..f2f9167 100644 --- a/TSCP/src/APP/ciapp/IO/InputDataProcess.c +++ b/TSCP/src/APP/ciapp/IO/InputDataProcess.c @@ -264,8 +264,6 @@ void InputDataProcess(void) { /*OC*/ (void)ProcessOcToCiRelayData(); - /*ɼһµĵλ*/ - ProcessOcToCiRelayDiffData(); debug_infor_printf((const)"\nprocess oc_relay end\n"); } else @@ -334,9 +332,6 @@ void InputDataProcess(void) /*PSCϵͳ*/ ProcessPscToCiData(); - /*OC-PSCһ廯*/ - ProcessOCToCiPsdData(); - /*豸״̬*/ ProcessDeviceLogicState(); @@ -410,9 +405,6 @@ void InputDataProcess(void) /*ˢźŻʪ־*/ UpdateHumidRailFlag(); - /*PSD쳣򿪴Ҫȸں״̬ٽPSD쳣жϣ*/ - PsdExceptOpenProc(); - /*ATS*/ if ((CI_TYPE_ZX == localCiType) || (CI_TYPE_SCX == localCiType)) { @@ -641,106 +633,17 @@ void ProcessAxleToCiData(void) if (AXIS_TYPE_KEANDA == acFty) { if (RELAY_STATE_UP == axisToCiDataStru[axisSysId].axisDataStr[jj].PreResetRst) - { - /*Ԥλ̵*/ + {/*Ԥλ̵*/ SetPhySecPreResetState(secId, PHYSICAL_SECTION_PRE_RESET_YES); /*üԤλ״̬Ч*/ } else if (RELAY_STATE_DOWN == axisToCiDataStru[axisSysId].axisDataStr[jj].PreResetRst) - { - /*Ԥλ̵*/ + {/*Ԥλ̵*/ SetPhySecPreResetState(secId, PHYSICAL_SECTION_PRE_RESET_NO); /*üԤλ״̬Ч*/ } else - { - /*쳣ֵ*/ + {/*̵ɼ״̬Ϊ쳣ֵ*/ SetPhySecPreResetState(secId, PHYSICAL_SECTION_PRE_RESET_NO); /*üԤλ״̬Ч*/ } - - /*ưֱӸλ״̬ӿڣΪ˼ḴλͳһóЧ*/ - SetPhySecDirectResetState(secId, PHYSICAL_DIRECT_RESET_NO); /*üֱӸλ״̬Ч*/ - } - else if (AXIS_TYPE_FUHAOSHENG == acFty) - { - if ((RELAY_STATE_UP == axisToCiDataStru[axisSysId].axisDataStr[jj].PreResetRst) - && (RELAY_STATE_UP == axisToCiDataStru[axisSysId].axisDataStr[jj].chDirectResetRst)) - { - /*ԤλλͬʱЧ쳣*/ - SetPhySecPreResetState(secId, PHYSICAL_SECTION_PRE_RESET_NO); /*üԤλ״̬Ч*/ - SetPhySecDirectResetState(secId, PHYSICAL_DIRECT_RESET_NO); /*üֱӸλ״̬Ч*/ - SetPhySecPreResetBack(secId, PHY_RESET_BACK_RECIVE_YES); - SetPhySecDirectResetBack(secId, PHY_RESET_BACK_RECIVE_YES); - } - else - { - if (RELAY_STATE_UP == axisToCiDataStru[axisSysId].axisDataStr[jj].PreResetRst) - { - /*Ԥλ̵*/ - SetPhySecPreResetState(secId, PHYSICAL_SECTION_PRE_RESET_YES); /*üԤλ״̬Ч*/ - } - else if (RELAY_STATE_DOWN == axisToCiDataStru[axisSysId].axisDataStr[jj].PreResetRst) - { - /*Ԥλ̵*/ - SetPhySecPreResetState(secId, PHYSICAL_SECTION_PRE_RESET_NO); /*üԤλ״̬Ч*/ - } - else - { - /*쳣ֵ*/ - SetPhySecPreResetState(secId, PHYSICAL_SECTION_PRE_RESET_NO); /*üԤλ״̬Ч*/ - } - - if (RELAY_STATE_UP == axisToCiDataStru[axisSysId].axisDataStr[jj].chPreResetBack) - { - /*Ԥλ-յ*/ - SetPhySecPreResetBack(secId, PHY_RESET_BACK_RECIVE_YES); - } - else if (RELAY_STATE_DOWN == axisToCiDataStru[axisSysId].axisDataStr[jj].chPreResetBack) - { - /**Ԥλ-δյ*/ - SetPhySecPreResetBack(secId, PHY_RESET_BACK_RECIVE_NO); - } - else - { - /*쳣ֵ*/ - SetPhySecPreResetBack(secId, PHY_RESET_BACK_RECIVE_YES); - } - - if (RELAY_STATE_UP == axisToCiDataStru[axisSysId].axisDataStr[jj].chDirectResetRst) - { - /*ֱӸλ̵*/ - SetPhySecDirectResetState(secId, PHYSICAL_DIRECT_RESET_YES); /*üֱӸλ״̬Ч*/ - } - else if (RELAY_STATE_DOWN == axisToCiDataStru[axisSysId].axisDataStr[jj].chDirectResetRst) - { - /*ֱӸλ̵*/ - SetPhySecDirectResetState(secId, PHYSICAL_DIRECT_RESET_NO); /*üֱӸλ״̬Ч*/ - } - else - { - /*쳣ֵ*/ - SetPhySecDirectResetState(secId, PHYSICAL_DIRECT_RESET_NO); /*üֱӸλ״̬Ч*/ - } - - if (RELAY_STATE_UP == axisToCiDataStru[axisSysId].axisDataStr[jj].chDirectResetBack) - { - /*ֱӸλ-յ*/ - SetPhySecDirectResetBack(secId, PHY_RESET_BACK_RECIVE_YES); - } - else if (RELAY_STATE_DOWN == axisToCiDataStru[axisSysId].axisDataStr[jj].chDirectResetBack) - { - /**ֱӸλ-δյ*/ - SetPhySecDirectResetBack(secId, PHY_RESET_BACK_RECIVE_NO); - } - else - { - /*쳣ֵ*/ - SetPhySecDirectResetBack(secId, PHY_RESET_BACK_RECIVE_YES); - } - } - - } - else - { - ; /*ӿڲ*/ } } } @@ -757,9 +660,6 @@ void ProcessAxleToCiData(void) (void)SetPhySecCurAxisGdOccupyState(secId, SECTION_OCCUPY_FAULT); SetPhySecPreResetState(secId, PHYSICAL_SECTION_PRE_RESET_NO); /*üԤλ״̬Ч*/ - SetPhySecDirectResetState(secId, PHYSICAL_DIRECT_RESET_NO); /*üֱӸλ״̬Ч*/ - SetPhySecPreResetBack(secId, PHY_RESET_BACK_RECIVE_YES); - SetPhySecDirectResetBack(secId, PHY_RESET_BACK_RECIVE_YES); if (dwCurCycNum == (dwLastRecvAxisDataCycNum + dwCommBadEnsureCount + 1U)) { @@ -868,11 +768,6 @@ void ProcessOcToCiData(void) if (m_Signals[jj].OcId == pTempOc->OcId) { m_Signals[jj].DeviceState = OC_SIGNAL_SHOWCOLOR_RED_BREAK;/**/ - /*źŻ忨Ϊ*/ - for (j = 0U; j < 2U; j++) - { - m_Signals[jj].BoardState[j] = 0xffU; - } } } /*תĵ״̬*/ @@ -926,11 +821,6 @@ void ProcessOcToCiData(void) } /*OCͨжϣȷPCBť״̬*/ SetAllCleFarePCBButKeepSta(pTempOc->OcId,QK_PSD_BUTTON_STATE_UP); - - /*OCͨжϣϢ*/ - - SetOcToCiDefaultDataStru(ii); - } else { @@ -1524,7 +1414,7 @@ void ProcessZcToCiData(void) { /* ѩģʽ */ SetAllSnowModel(pZcToCiDataStru->cSnowValidFlag); - SetLocalAreaSnowInfo(pZcToCiDataStru->cAreaSnowPlatFormNum, pZcToCiDataStru->szAreaSnowInfo); /*±ѩ״̬Ϣ*/ + SetLocalAreaSnowInfo(pZcToCiDataStru->cAreaSnowPlatFormNum, pZcToCiDataStru->szAreaSnowPlatFormId); /*±ѩ״̬Ϣ*/ SetLocalSnowModel(pZcToCiDataStru->chLocalSnowValidFlag); } } @@ -1546,8 +1436,6 @@ void ProcessZcToCiData(void) { /* ITEȫг״̬ */ SetIteLineCutState(pZcToCiDataStru->cIteLineCutState); - /* ITEгϢ */ - SetLocalAreaIteCutInfo(pZcToCiDataStru->cAreaIteCutNum, pZcToCiDataStru->szAreaIteCutId); } else { @@ -1647,8 +1535,7 @@ void ProcessTmcToTiocData(void) { /* ѩģʽ */ SetAllSnowModel(pTmcInputData->cSnowValidFlag); - SetAllSnowLevel(pTmcInputData->cSnowLevel); - SetLocalAreaSnowInfo(pTmcInputData->cAreaSnowPlatFormNum, pTmcInputData->szAreaSnowInfo); /*±ѩ״̬Ϣ*/ + SetLocalAreaSnowInfo(pTmcInputData->cAreaSnowPlatFormNum, pTmcInputData->szAreaSnowPlatFormId); /*±ѩ״̬Ϣ*/ } } } @@ -1660,8 +1547,6 @@ void ProcessTmcToTiocData(void) { /* ITEȫг״̬ */ SetIteLineCutState(pTmcInputData->cIteLineCutState); - /* ITEгϢ */ - SetLocalAreaIteCutInfo(pTmcInputData->cAreaIteCutNum, pTmcInputData->szAreaIteCutId); } else { @@ -2364,7 +2249,7 @@ void UpdateAtsPscPlFlagData(UINT8 pscId) for(i = 0u; i < pscToCiDataStru[pscId].psdSum; i++) { /*ȡȷϱ־*/ - getPscPlFlag = GetPsdPlFlag(pscToCiDataStru[pscId].psdDataStr[i].psdId); + getPscPlFlag = GetPsdPscPlFlag(pscToCiDataStru[pscId].psdDataStr[i].psdId); psdVirArr = GetPsdVirtualAttribute(pscToCiDataStru[pscId].psdDataStr[i].psdId); if(CI_PSC_PL_CONFIRM_YES == getPscPlFlag) { @@ -2847,8 +2732,8 @@ UINT8 ProcessAtsOrXianDiToCiData(void) /*δȡ*/ ClearCiRevCmdData();/*CIݶ*/ - } } + } else {/**/ for (ii = 0u; ii < AtsOrXianDiToCiCmdSum; ii++) @@ -2936,7 +2821,7 @@ UINT8 ProcessAtsOrXianDiToCiData(void) OrderCheckReVal = CheckOrderWhetherDoing(virCiID,belongVirCIid,cmdType,CmdDeviceId); if(CI_SUCCESS == OrderCheckReVal) { - SetCommonRouteLogicManage(CmdDeviceId, ESEND_LEVEL_ATS); + SetCommonRouteLogicManage(CmdDeviceId); } } else @@ -3618,7 +3503,7 @@ UINT8 ProcessAtsOrXianDiToCiData(void) { checkRetVal = AFFIRM_SUCCESS; /*˹*/ - (void)LaborUnlockOverlapProc(CmdDeviceId); + (void)LaborUnlockOverlapProc((UINT8)CmdDeviceId); } else { @@ -4167,45 +4052,8 @@ UINT8 ProcessAtsOrXianDiToCiData(void) } break; } - /*OC-P·һ*/ - case ATS_CMD_OC_P_PL_ONE: - SetCiSendCmdBackData_OrderBack(commandId, CmdDeviceId, cmdDevType, terminalId, AtsOrXianDiToCiCmdStru[ii].CommandType, RESPONSE_FIRST, AFFIRM_SUCCESS, virCiID); - break; - /*OC-P·*/ - case ATS_CMD_OC_P_PL_TWO: - checkRetVal = CheckSecondOrderValid(commandId, CmdDeviceId, cmdDevType, terminalId, AtsOrXianDiToCiCmdStru[ii].CommandType, virCiID); - if (CI_SUCCESS == checkRetVal) - { - /*OC-P·ȷϱ־*/ - SetOcPscPlConfirmFlag(OC_PSC_PL_CONFIRM_YES, CmdDeviceId); - SetCiSendCmdBackData_OrderBack(commandId, CmdDeviceId, cmdDevType, terminalId, AtsOrXianDiToCiCmdStru[ii].CommandType, RESPONSE_SECOND, AFFIRM_SUCCESS, virCiID); - } - else - { - /*һȷID*/ - SetCiSendCmdBackData_OrderBack(commandId, CmdDeviceId, cmdDevType, terminalId, AtsOrXianDiToCiCmdStru[ii].CommandType, RESPONSE_SECOND, AFFIRM_FAIL, virCiID); - } - break; - /*ȡOC-P·һ*/ - case ATS_CMD_QUXIAO_OC_P_PL_ONE: - SetCiSendCmdBackData_OrderBack(commandId, CmdDeviceId, cmdDevType, terminalId, AtsOrXianDiToCiCmdStru[ii].CommandType, RESPONSE_FIRST, AFFIRM_SUCCESS, virCiID); - break; - /*ȡOC-P·*/ - case ATS_CMD_QUXIAO_OC_P_PL_TWO: - checkRetVal = CheckSecondOrderValid(commandId, CmdDeviceId, cmdDevType, terminalId, AtsOrXianDiToCiCmdStru[ii].CommandType, virCiID); - if (CI_SUCCESS == checkRetVal) - { - /*PSC·ȡ־*/ - SetOcPscPlConfirmFlag(OC_PSC_PL_CONFIRM_NO, CmdDeviceId); - SetCiSendCmdBackData_OrderBack(commandId, CmdDeviceId, cmdDevType, terminalId, AtsOrXianDiToCiCmdStru[ii].CommandType, RESPONSE_SECOND, AFFIRM_SUCCESS, virCiID); - } - else - { - /*һȷID*/ - SetCiSendCmdBackData_OrderBack(commandId, CmdDeviceId, cmdDevType, terminalId, AtsOrXianDiToCiCmdStru[ii].CommandType, RESPONSE_SECOND, AFFIRM_FAIL, virCiID); - } - break; + default: cFunRetVal = VirtualDevCmdProc(CmdDeviceId, AtsOrXianDiToCiCmdStru[ii].CommandType);/*Գ豸״̬*/ @@ -4251,6 +4099,7 @@ UINT8 ProcessAtsOrXianDiToCiDataCld(void) UINT16 terminalId = 0u; /*նid*/ UINT16 ii = 0u; /*α*/ UINT8 checkRetVal = CI_FALSE; + UINT16 jkjRelayId = GetJkjRelayId(); UINT8 jkjRelayValidFlag = 0u; UINT8 localCiId = 0u; /*ID*/ @@ -4294,7 +4143,7 @@ UINT8 ProcessAtsOrXianDiToCiDataCld(void) jkjRelayValidFlag = GetCiJkjFlag(); /*Ӧ̵̼Ч״̬*/ - if (JKJ_REYLAY_VALID == jkjRelayValidFlag) + if ((jkjRelayId > 0u) && (JKJ_REYLAY_VALID == jkjRelayValidFlag)) { for (ii = 0u; ii < AtsToCiCmdSum; ii++) { @@ -4311,7 +4160,7 @@ UINT8 ProcessAtsOrXianDiToCiDataCld(void) SetCiSendCmdBackData_OrderBack(commandId,CmdDeviceId,cmdDevType,terminalId,AtsToCiCmdStru[ii].CommandType,0u,0u,virCiID); /*¼*/ - SetErrorData(EFUNC_PARSE_ATS2CI_DATA, CI_DEVICE_TYPE_RELAY, 0u, ETYPE_JKJ_WORK, RELAY_STATE_DOWN, ESEND_LEVEL_ATS);/*OCӦعܣ̵ID0*/ + SetErrorData(EFUNC_PARSE_ATS2CI_DATA,CI_DEVICE_TYPE_RELAY,jkjRelayId,ETYPE_JKJ_WORK,RELAY_STATE_DOWN,ESEND_LEVEL_ATS); /*CIݶ*/ ClearCiRevCmdData(); @@ -4647,7 +4496,7 @@ UINT8 ProcessAtsOrXianDiToCiDataCld(void) if(ATS_ROUTE_SET_PROCESS_MAX >= routeCmdSum) { /*ͨ·*/ - SetCommonRouteLogicManage(CmdDeviceId, ESEND_LEVEL_ATS); + SetCommonRouteLogicManage(CmdDeviceId); } else { @@ -5005,7 +4854,7 @@ UINT8 ProcessAtsOrXianDiToCiDataCld(void) { checkRetVal = AFFIRM_SUCCESS; /*˹*/ - (void)LaborUnlockOverlapProc(CmdDeviceId); + (void)LaborUnlockOverlapProc((UINT8)CmdDeviceId); } else { @@ -5723,7 +5572,7 @@ void ProcessDeviceLogicState(void) /**/ } - if ((m_GdNum > 0u)|| ((AXIS_TYPE_YONGLIE==acFty)|| (AXIS_TYPE_KEANDA == acFty) || (AXIS_TYPE_FUHAOSHENG == acFty))) /*йӿ*/ + if ((m_GdNum > 0u)|| ((AXIS_TYPE_YONGLIE==acFty)|| (AXIS_TYPE_KEANDA == acFty))) /*йӿ*/ { /*¹βɼ״̬*/ OcPhyStateToDeviceStatePro(); @@ -6349,7 +6198,7 @@ void UpdatePhySectionMergeLogicState(void) UINT8 phySecOccuChangeTimeState = CI_TIME_OUT; /*CTUTռ״̬Ϊ(UT)ռ״̬*/ UINT8 curUtOrCtOccFlag = LOGICSECTION_OCCUPY_UT; - UINT8 chPreUtOrCtOccFlag = LOGICSECTION_OCCUPY_UT; + UINT8 utOrCtOccFlag = LOGICSECTION_OCCUPY_UT; UINT32 secOccupy2IdleTimeReal = 0u; UINT32 secOccupy2IdleTimeSysPara = 0u; @@ -6760,20 +6609,13 @@ void UpdatePhySectionMergeLogicState(void) if(SECTION_OCCUPY_YES == phySecCurOccuState) { curUtOrCtOccFlag = GetPhySecCurCtOrUtOccupyState(phySectionId); /*ȡεǰCTUTռ״̬*/ - chPreUtOrCtOccFlag = GetPhySecPreOccState(phySectionId); /*ȡ֮ǰCTUTռ״̬*/ + utOrCtOccFlag = GetPhySecPreOccState(phySectionId); /*ȡ֮ǰCTUTռ״̬*/ dwSecUtOrCtOccuCyc = GetSecUtOrCtOccuStartCycNum(phySectionId); /*ʱУγռ״̬仯ҽѿʼʱ*/ - if((chPreUtOrCtOccFlag != curUtOrCtOccFlag) && (0u != dwSecUtOrCtOccuCyc)) + if((utOrCtOccFlag != curUtOrCtOccFlag) && (0u != dwSecUtOrCtOccuCyc)) { - if (LOGICSECTION_OCCUPY_NO != curUtOrCtOccFlag) - { - /*UTCTռÿʼʱ*/ - SetSecUtOrCtOccuStartCycNum(phySectionId, dwSystemCyc); - } - else - { - /*߼ξУδںϿУݲ*/ - } + /*UTCTռÿʼʱ*/ + SetSecUtOrCtOccuStartCycNum(phySectionId, dwSystemCyc); } else if (LOGICSECTION_OCCUPY_UT == curUtOrCtOccFlag) { @@ -7009,10 +6851,10 @@ void UpdatePhySectionMergeLogicState(void) if(SECTION_OCCUPY_YES == phySecCurOccuState) { curUtOrCtOccFlag = GetPhySecCurCtOrUtOccupyState(phySectionId); /*ȡεǰCTUTռ״̬*/ - chPreUtOrCtOccFlag = GetPhySecPreOccState(phySectionId); /*ȡ֮ǰCTUTռ״̬*/ + utOrCtOccFlag = GetPhySecPreOccState(phySectionId); /*ȡ֮ǰCTUTռ״̬*/ dwSecUtOrCtOccuCyc = GetSecUtOrCtOccuStartCycNum(phySectionId); /*ʱУγռ״̬仯ҽѿʼʱ*/ - if((chPreUtOrCtOccFlag != curUtOrCtOccFlag) && (0u != dwSecUtOrCtOccuCyc)) + if((utOrCtOccFlag != curUtOrCtOccFlag) && (0u != dwSecUtOrCtOccuCyc)) { /*UTCTռÿʼʱ*/ SetSecUtOrCtOccuStartCycNum(phySectionId, dwSystemCyc); @@ -7878,11 +7720,14 @@ static UINT8 RouteReturnToThroughCondCheck(const UINT16 signalId,UINT8* toCiId) UINT16 nextRouteId = 0u; /*һ·*/ UINT8 returnRouteIdBelongCiId = 0u; UINT8 throughRouteIdBelongCiId = 0u; + UINT8 returnRouteDirection = 0u; UINT16 reRouteNormalLockPhy = 0u; UINT8 phyMergeState = 0u; UINT16 nextRouteLockPhy = 0u; - UINT16 wEndSignalId = 0U;/*۷·նźŻ*/ - UINT16 wStartSignalId = 0U;/*źؿ·ʼźŻ*/ + UINT8 nextRouteDirection = 0u; + UINT8 haveDirChangeAfterRoute = 0u; + UINT8 haveDirChangeInRoute = 0u; + if ((0u == signalId) || (signalId >= SIGNAL_SUM_MAX)) { retVal = CI_ERROR; @@ -7906,8 +7751,6 @@ static UINT8 RouteReturnToThroughCondCheck(const UINT16 signalId,UINT8* toCiId) returnRouteId = GetPhySecRLockBelongRouteId(signalOutSecId); nextRouteId = GetPhySecRLockBelongRouteId(signalInSecId); - wEndSignalId = GetRouteEndSignalId(returnRouteId);/*ȡնźŻ*/ - wStartSignalId = GetRouteStartSignalId(nextRouteId);/*źؿĽ·ʼźŻ*/ throughRouteId = GetRouteThroughRouteId(returnRouteId); returnRouteIdBelongCiId = GetRouteBelongCiId(returnRouteId); throughRouteIdBelongCiId = GetRouteBelongCiId(throughRouteId); @@ -7935,9 +7778,32 @@ static UINT8 RouteReturnToThroughCondCheck(const UINT16 signalId,UINT8* toCiId) /*һ·һ*/ if (PHYSICAL_SECTION_LOCK_NORMAL == nextRouteLockPhy) { - - /*źŻȷ*/ - if(wEndSignalId == wStartSignalId) + /*ȡս·*/ + nextRouteDirection = GetRouteDirection(nextRouteId); + returnRouteDirection = GetRouteDirection(returnRouteId); + + haveDirChangeAfterRoute = GetRouteHaveDirChangePointAfter(returnRouteId); + haveDirChangeInRoute = GetRouteHaveDirChangePointIn(returnRouteId); + + /*·󷽻·ڴڷ仯*/ + if((ROUTE_HAVE_DIR_CHANGE_POINT == haveDirChangeAfterRoute) || + (ROUTE_HAVE_DIR_CHANGE_POINT == haveDirChangeInRoute)) + { + if(CI_SYSTEM_DIRECTION_UP == returnRouteDirection) + { + returnRouteDirection = CI_SYSTEM_DIRECTION_DOWN; + } + else if(CI_SYSTEM_DIRECTION_DOWN == returnRouteDirection) + { + returnRouteDirection = CI_SYSTEM_DIRECTION_UP; + } + else + { + /**/ + } + } + /*ͬ*/ + if(nextRouteDirection == returnRouteDirection) { if(0u != throughRouteId) {/*returnRouteIdthroughRouteId0u˵returnRouteIdȷʵ۷·throughRouteIdͨ·Ҵʱ۷δͨ·*/ @@ -7991,16 +7857,18 @@ static UINT8 RouteReturnToThroughCmdProc(const UINT16 signalId,const UINT8 fromC UINT8 returnRouteState = 0u; UINT8 returnRouteIdBelongCiId = 0u; UINT8 throughRouteIdBelongCiId = 0u; + UINT8 returnRouteDirection = 0u; UINT16 reRouteNormalLockPhy = 0u; UINT8 phyMergeState = 0u; UINT16 nextRouteLockPhy = 0u; UINT16 lockPhyBelongRoute = 0u; + UINT8 nextRouteDirection = 0u; + UINT8 haveDirChangeAfterRoute = 0u; + UINT8 haveDirChangeInRoute = 0u; UINT8 saveReRouteDir = 0u; UINT8 throughRouteDir = 0u; UINT16 wLastLgcSecId = 0U; UINT8 chTrainSum = 0u; - UINT16 wEndSignalId = 0U;/*۷·նźŻ*/ - UINT16 wStartSignalId = 0U;/*źؿ·ʼźŻ*/ LogicTrainResStruct * pstLgcResInfo = NULL; LogicTrainResStruct stTmpResInfo[LOGIC_SECTION_RES_SUM_MAX] = { 0U }; @@ -8027,8 +7895,6 @@ static UINT8 RouteReturnToThroughCmdProc(const UINT16 signalId,const UINT8 fromC returnRouteId = GetPhySecRLockBelongRouteId(signalOutSecId); nextRouteId = GetPhySecRLockBelongRouteId(signalInSecId); throughRouteId = GetRouteThroughRouteId(returnRouteId); - wEndSignalId = GetRouteEndSignalId(returnRouteId); - wStartSignalId = GetRouteStartSignalId(nextRouteId); returnRouteIdBelongCiId = GetRouteBelongCiId(returnRouteId); throughRouteIdBelongCiId = GetRouteBelongCiId(throughRouteId); @@ -8056,11 +7922,34 @@ static UINT8 RouteReturnToThroughCmdProc(const UINT16 signalId,const UINT8 fromC { /*ȡս·*/ lockPhyBelongRoute = GetPhySecRLockBelongRouteId(signalInSecId); - saveReRouteDir = GetRouteDirection(returnRouteId);/*·ʵʷ*/ + nextRouteDirection = GetRouteDirection(lockPhyBelongRoute); + returnRouteDirection = GetRouteDirection(returnRouteId); throughRouteDir = GetRouteDirection(throughRouteId); /*۷·Ӧͨ·*/ - /*źŻһ*/ - if(wEndSignalId == wStartSignalId) + haveDirChangeAfterRoute = GetRouteHaveDirChangePointAfter(returnRouteId); + haveDirChangeInRoute = GetRouteHaveDirChangePointIn(returnRouteId); + + saveReRouteDir = returnRouteDirection; /*·ʵʷ*/ + + /*·󷽻·ڴڷ仯*/ + if((ROUTE_HAVE_DIR_CHANGE_POINT == haveDirChangeAfterRoute) || + (ROUTE_HAVE_DIR_CHANGE_POINT == haveDirChangeInRoute) ) + { + if(CI_SYSTEM_DIRECTION_UP == returnRouteDirection) + { + returnRouteDirection = CI_SYSTEM_DIRECTION_DOWN; + } + else if(CI_SYSTEM_DIRECTION_DOWN == returnRouteDirection) + { + returnRouteDirection = CI_SYSTEM_DIRECTION_UP; + } + else + { + /**/ + } + } + /*ͬ*/ + if(nextRouteDirection == returnRouteDirection) { /*۷·*/ returnRouteState = GetRouteState(returnRouteId); @@ -8788,7 +8677,7 @@ static void ProcessTctCiCmd(void) case CI_CMD_UNLOCK_OVERLAP_CMD:/*͵Ľ*/ deviceId = CiRecvCiCmdStru[ii].Param1;/* id*/ /*˹*/ - (void)LaborUnlockOverlapProc(deviceId); + (void)LaborUnlockOverlapProc((UINT8)deviceId); break; #if 0 @@ -9578,18 +9467,6 @@ UINT8 CheckIsGeneralOrder(UINT8 OrderType) case ATS_CMD_SWITCH_FANWEI_TEST_TWO: reVal = CI_ERROR; break; - case ATS_CMD_OC_P_PL_ONE: - reVal = CI_ERROR; - break; - case ATS_CMD_OC_P_PL_TWO: - reVal = CI_ERROR; - break; - case ATS_CMD_QUXIAO_OC_P_PL_ONE: - reVal = CI_ERROR; - break; - case ATS_CMD_QUXIAO_OC_P_PL_TWO: - reVal = CI_ERROR; - break; default: reVal = CI_SUCCESS; break; @@ -10129,9 +10006,7 @@ static void IvocInputRefreshTrain(const VobcToCiDataStruct stIvocToCiData) SetHeadITEResult(wTrainId, stIvocToCiData.wHeadITEResult); SetTailAxisId(wTrainId, stIvocToCiData.wTailAxisId); SetTailITEResult(wTrainId, stIvocToCiData.wTailITEResult); - SetTrainJumpBackApplyState(wTrainId, stIvocToCiData.chJumpBackApply); - SetTrainJumpBackApplySN(wTrainId, stIvocToCiData.dwJumpBackSn); - } + } else { /*δյгݣˢгϢ*/ @@ -10645,8 +10520,6 @@ static void IvocInputCmdProc(const VobcToCiDataStruct stIvocToCiData) /*ɢ*/ SetTrainEaCmdState(wTrainId, TRAIN_EA_CMD_STATE_INVALID); } - - #if 0 /**Ծܿش򿪣ͬһζ߼Ծմ*/ if (FUNC_SWITCH_ON == funcSwitchJumpLockDriveSwitch) @@ -10706,7 +10579,6 @@ static void ProcessIvocLoseCom(const VobcToCiDataStruct stIvocToCiData) UINT8 chLjkExistDBSwitch = 0U; UINT8 chVirHeadScreenPassFlag = 0U;/*ǰɸ־*/ UINT8 chVirTailScreenPassFlag = 0U;/*ɸ־*/ - UINT8 chTrainPosMonitorState = 0U; /*гλüල־*/ #if 0 UINT32 dwRecvIvocCount = 0U; @@ -10750,12 +10622,10 @@ static void ProcessIvocLoseCom(const VobcToCiDataStruct stIvocToCiData) /*DB·ͨɸѡ־пɿԼ򳵻ATSԭɸѡ*/ chVirHeadScreenPassFlag = GetTrainVirHeadScreenPassFlag(wTrainId); chVirTailScreenPassFlag = GetTrainVirTailScreenPassFlag(wTrainId); - chTrainPosMonitorState = GetTrainPosMonitorState(wTrainId); if ((FUNC_SWITCH_OFF == chLjkExistDBSwitch) || (TRAIN_VIR_SCREEN_PASS_FLAG_INVALID == chVirHeadScreenPassFlag) - || (TRAIN_VIR_SCREEN_PASS_FLAG_INVALID == chVirTailScreenPassFlag) - || (TRAIN_POS_MONITOR_VALID != chTrainPosMonitorState)) + || (TRAIN_VIR_SCREEN_PASS_FLAG_INVALID == chVirTailScreenPassFlag)) { /*DBһɸѡ־Ч˵ɸѡ*/ SetTrainVirHeadScreenPassFlag(wTrainId, TRAIN_VIR_SCREEN_PASS_FLAG_INVALID); @@ -10773,12 +10643,6 @@ static void ProcessIvocLoseCom(const VobcToCiDataStruct stIvocToCiData) SetTrainDerailment(wTrainId, TRAIN_DERAIL_NO); /*ͨжɢ״̬ΪЧ*/ SetTrainEaCmdState(wTrainId, TRAIN_EA_CMD_STATE_INVALID); - - /*ͨжԾδкΪ0*/ - SetTrainJumpBackApplyState(wTrainId, TRAIN_JUMP_BACK_STATE_INVALID); - SetTrainJumpBackApplySN(wTrainId, 0U); - - SetTrainFlyProStartCycNum(wTrainId, 0U); /*ͨжϺɳʼں*/ } } @@ -11778,7 +11642,7 @@ void UpdateHumidRailFlag(void) UINT16 wPhySecId = 0U; UINT8 cAllHumidRailState = CI_ALL_SNOW_UNVALID; /*ʪ״̬*/ UINT8 cAreaHumidRailNum = 0U; /*ʪ*/ - AreaSnowInfoStruct* pAreaHumidRailData = NULL; + UINT32* pAreaHumidRailId = NULL; ToCiAreaSnowStruct* pRecvCiAreaHumidRail = NULL; /*͵ʪϢ*/ UINT16 wCurSignalNum = 0U; UINT16 wSignalId = 0U; @@ -11815,13 +11679,13 @@ void UpdateHumidRailFlag(void) { /*** ʪ ***/ cAreaHumidRailNum = GetLocalAreaSnowNum(); - pAreaHumidRailData = GetLocalAreaSnow(); - if ((0U != cAreaHumidRailNum) && (LOCAL_AREA_SNOW_SUM_MAX >= cAreaHumidRailNum) && (NULL != pAreaHumidRailData)) + pAreaHumidRailId = GetLocalAreaSnowId(); + if ((0U != cAreaHumidRailNum) && (LOCAL_AREA_SNOW_SUM_MAX >= cAreaHumidRailNum) && (NULL != pAreaHumidRailId)) { /*ʪ죬ڱʪ־ΪЧ*/ for (jj = 0U; jj < cAreaHumidRailNum; jj++) { - SetPlatFormRelPSHumidRailFlag(pAreaHumidRailData[jj].wAreaId); + SetPlatFormRelPSHumidRailFlag(pAreaHumidRailId[jj]); } } else @@ -11838,7 +11702,7 @@ void UpdateHumidRailFlag(void) /*ڿʪ츲бΣڱʪ־ΪЧ*/ for (jj = 0U; jj < pRecvCiAreaHumidRail[ii].cPlatFormNum; jj++) { - SetPlatFormRelPSHumidRailFlag(pRecvCiAreaHumidRail[ii].szPlatFormInfo[jj].wAreaId); + SetPlatFormRelPSHumidRailFlag(pRecvCiAreaHumidRail[ii].dwPlatFormId[jj]); } } } @@ -12335,222 +12199,4 @@ void OtherPartRouteCleanLogRouteProc(const UINT16 wCurRouteId) { /*ηǷ*/ } -} - -/* -* OC->CIPSD -* ˵ void -* ֵ void -*/ -void ProcessOCToCiPsdData(void) -{ - UINT8 deviceOcSum = 0u;/*ͨoc*/ - UINT8* deviceIdBuf = NULL;/*ͨ豸ID*/ - UINT8 ocId = 0u; - UINT8 deviceSum = 0u;/*ocpsd豸*/ - UINT16 ocToCiPsdId = 0u;/*psd id*/ - UINT16 ii = 0u; - UINT16 jj = 0u; - UINT16 kk = 0u; - UINT8 findOcFlag = 0u; - - deviceOcSum = GetCiTransmitSpecifySysDevSum(CI_SYSTEM_TYPE_OC); /*ȡͨOC豸*/ - deviceIdBuf = GetCiTransmitSpecifySysDevBuf(CI_SYSTEM_TYPE_OC); /*ȡͨOC豸ID*/ - - for (ii = 0u; ii < deviceOcSum; ii++) - {/*ҵOC id*/ - findOcFlag = 0u; - ocId = deviceIdBuf[ii]; - if ((0u < ocId) && (OC_SUM_MAX > ocId)) - { - for (kk = 0u; kk < m_OcToCiOrginDataNum; kk++) - { - /*ҵOC idӦ±kk*/ - if (m_OcToCiOrginDataArr[kk].OcId == ocId) - { - findOcFlag = 1u; - break; - } - } - if (1u == findOcFlag) - { - deviceSum = m_OcToCiOrginDataArr[kk].OCPsdNum; /*ȡOCPSD豸*/ - for (jj = 0u; jj < deviceSum; jj++) - { - ocToCiPsdId = m_OcToCiOrginDataArr[kk].PsdInfo[jj].wPsdId; /*psd id*/ - if (0u < ocToCiPsdId) - { - /*ſ״̬*/ - if (PSD_STATE_CLOSE_VIETNAM == m_OcToCiOrginDataArr[kk].PsdInfo[jj].OpenOrCloseState) - { - /**/ - (void)SetPsdState(ocToCiPsdId, PSD_STATE_CLOSE); - } - else if (PSD_STATE_OPEN_VIETNAM == m_OcToCiOrginDataArr[kk].PsdInfo[jj].OpenOrCloseState) - { - /**/ - (void)SetPsdState(ocToCiPsdId, PSD_STATE_OPEN); - } - else - {/*ſ״̬ĬϿ*/ - (void)SetPsdState(ocToCiPsdId, PSD_STATE_OPEN); - } - - /*״̬*/ - if (PSD_MUTUALLOCK_REMOVE_YES == m_OcToCiOrginDataArr[kk].PsdInfo[jj].InterlockRelState) - { - /**/ - (void)SetPsdMutualLockRemoveState(ocToCiPsdId, PSD_MUTUALLOCK_REMOVE_YES); - } - else if (PSD_MUTUALLOCK_REMOVE_NO == m_OcToCiOrginDataArr[kk].PsdInfo[jj].InterlockRelState) - { - /*δ*/ - (void)SetPsdMutualLockRemoveState(ocToCiPsdId, PSD_MUTUALLOCK_REMOVE_NO); - } - else - { - (void)SetPsdMutualLockRemoveState(ocToCiPsdId, PSD_MUTUALLOCK_REMOVE_NO); - } - - /*Ź״̬*/ - SetOpenErrState(ocToCiPsdId, m_OcToCiOrginDataArr[kk].PsdInfo[jj].OpenErrState); - - /*Ź״̬*/ - SetCloseErrState(ocToCiPsdId, m_OcToCiOrginDataArr[kk].PsdInfo[jj].CloseErrState); - - /*ŹϸϢ*/ - SetPsdFaultQState(ocToCiPsdId, m_OcToCiOrginDataArr[kk].PsdInfo[jj].psdFaultQStataOne, m_OcToCiOrginDataArr[kk].PsdInfo[jj].psdFaultQStataTwo); - - /*ſ״̬*/ - SetPsdDoorState(ocToCiPsdId, m_OcToCiOrginDataArr[kk].PsdInfo[jj].psdDoorsStateOne, m_OcToCiOrginDataArr[kk].PsdInfo[jj].psdDoorsStateTwo); - - /*űϢ*/ - SetPsdDoorIState(ocToCiPsdId, m_OcToCiOrginDataArr[kk].PsdInfo[jj].psdDoorIStateOne, m_OcToCiOrginDataArr[kk].PsdInfo[jj].psdDoorIStateTwo); - - /*ϰﱨ״̬Ԥ*/ - } - else - { - /*psd idЧ*/ - } - } - } - } - else - { - /*oc idЧ*/ - } - } - -} - - -/* -* OCCIIJһ¼̵ -* ˵ void -* ֵ 0:ʧ -* 1:ɹ -*/ -void ProcessOcToCiRelayDiffData(void) -{ - UINT8 i = 0u; - UINT8 j = 0u; - UINT8 k = 0u; - UINT16 ocId = 0u; - CollBoardData* pTempCollBoardData_ForProcess = NULL; - UINT8 BoardAddress_ForProcess = 0u; /*忨ַ*/ - UINT8 BoardAddress_ForProcessOther = 0u; /*ϵ忨ַ*/ - UINT8 cBoardState = RELAY_BOARD_FAULT_YES; /*忨״̬ʼΪ*/ - UINT8 cBoardStateOther = RELAY_BOARD_FAULT_YES; /*ϵ忨״̬ʼΪ*/ - UINT8 PosValue_ForProcess = 0u; /*ɼ̵ǰַIJɼֵ:*/ - UINT8 PosValue_ForProcessOther = 0u; /*ɼ̵ϵַIJɼֵ:*/ - UINT32 pointTolerateCyc = 0u; /*λһ*/ - UINT8 timeState = 0U; - UINT32 curCycNum = 0u; - - IODiffDataStruct* pTempIODiffData = NULL; /*¼λɼһ*/ - curCycNum = Get2oo2CurCycleNum(); - - (void)CommonMemSet(&IODiffDataStru, (UINT32)((OC_SUM_MAX) * sizeof(IODiffDataStruct)), 0U, (UINT32)((OC_SUM_MAX) * sizeof(IODiffDataStruct))); /*սṹ*/ - gDiffDataOcNum = 0u; - - pTempIODiffData = GetIODiffData(); - if (NULL != pTempIODiffData) - { - for (i = 0u; i < OC_SUM_MAX; i++) /*ָID̵ID*/ - { - if (LocalOcIds[i] > 0u)/*oc id Ч*/ - { - ocId = LocalOcIds[i]; - if (OC_SUM_MAX > ocId) - { - pTempCollBoardData_ForProcess = m_OcConvertedPtDataArr[ocId].BoardDatas; - for (j = 0u; j < m_OcConvertedPtDataArr[ocId].OcBoardNum; j += 2u)/*еOC忨*/ - { - BoardAddress_ForProcess = pTempCollBoardData_ForProcess[j].BoardAddress;/*忨ַ*/ - BoardAddress_ForProcessOther = pTempCollBoardData_ForProcess[j + 1u].BoardAddress;/*ϵ忨ַ*/ - - cBoardState = pTempCollBoardData_ForProcess[j].BoardState; /*忨״̬*/ - cBoardStateOther = pTempCollBoardData_ForProcess[j + 1u].BoardState; /*ϵ忨״̬*/ - - if ((RELAY_BOARD_FAULT_NO == cBoardState)&&(RELAY_BOARD_FAULT_NO == cBoardStateOther)) - { - /*忨ǹ*/ - for (k = 0u; k < (UINT8)OC_COLL_BOARD_POS_NUM; k++) - { - PosValue_ForProcess = pTempCollBoardData_ForProcess[j].PosValueBuf[k];/*ֵ*/ - PosValue_ForProcessOther = pTempCollBoardData_ForProcess[j + 1u].PosValueBuf[k];/*ϵ忨ĵֵ*/ - - if (PosValue_ForProcess != PosValue_ForProcessOther) - { - /*һ½*/ - pointTolerateCyc = GetPointTolerateCycNum(ocId, j, k);/*õλ*/ - timeState = SystemOverTimeCheck(pointTolerateCyc, POINTTOLERATE_CYCNUM); - if (CI_TIME_NO == timeState) /*δʱ*/ - {/*õǰ*/ - SetPointTolerateCycNum(ocId, j, k, curCycNum); - debug_infor_printf((const)"IO Compare Diff Tolerate CycleNum = %d\n", curCycNum); - } - else if (CI_TIME_IN == timeState)/**/ - {/**/ - } - else - { - /*λɼһ̳ʱ¼*/ - pTempIODiffData[i].OcId = (UINT8)ocId; /*OC ID*/ - pTempIODiffData[i].LocalBoardAdd[pTempIODiffData[i].DiffPointNum] = BoardAddress_ForProcess;/*λӦİ忨ַ*/ - pTempIODiffData[i].OtherBoardAdd[pTempIODiffData[i].DiffPointNum] = BoardAddress_ForProcessOther;/*ϵ忨ַ*/ - pTempIODiffData[i].TheDiffPoint[pTempIODiffData[i].DiffPointNum] = k + 1u;/*һµĵλ*/ - pTempIODiffData[i].DiffPointNum++; /*λ*/ - } - } - else - {/*õλɼһ£*/ - SetPointTolerateCycNum(ocId, j, k, 0u); - } - } - } - else - { - /*忨ǹϣ¼ÿλ*/ - for (k = 0u; k < (UINT8)OC_COLL_BOARD_POS_NUM; k++) - { - SetPointTolerateCycNum(ocId, j, k, 0u); - } - } - } - - - if (0u != pTempIODiffData[i].DiffPointNum) - {/*OCеλһ£һµOCһ*/ - gDiffDataOcNum++; - } - } - } - } - } - else - {/**/ - } - } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/IO/InputDataProcess.h b/TSCP/src/APP/ciapp/IO/InputDataProcess.h index 2854c29..f8f28ad 100644 --- a/TSCP/src/APP/ciapp/IO/InputDataProcess.h +++ b/TSCP/src/APP/ciapp/IO/InputDataProcess.h @@ -451,21 +451,6 @@ void LogRouteCleanOldPhySecLockProc(const UINT16 wPreRouteId); */ void OtherPartRouteCleanLogRouteProc(const UINT16 wCurRouteId); -/* -* OC->CIPSD -* ˵ void -* ֵ void -*/ -void ProcessOCToCiPsdData(void); - -/* -* OCCIIJһ¼̵ -* ˵ void -* ֵ 0:ʧ -* 1:ɹ -*/ -void ProcessOcToCiRelayDiffData(void); - #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/IO/OutputDataProcess.c b/TSCP/src/APP/ciapp/IO/OutputDataProcess.c index 03d62b2..4354cee 100644 --- a/TSCP/src/APP/ciapp/IO/OutputDataProcess.c +++ b/TSCP/src/APP/ciapp/IO/OutputDataProcess.c @@ -387,10 +387,6 @@ UINT8 GetAtsBackInfoParam(const UINT8 functionId,const UINT8 deviceStateType, co returnValue = CI_BACK_ROUTE_XUANPAI_OVERTIME;/*·ѡųʱ*/ break; - case ETYPE_ROUTE_APPLY_SWITCH_MOVE: - returnValue = CI_BACK_SWT_MOVE; /*а·*/ - break; - /*źŻϷ*/ case ETYPE_SIG_START_OPEN_STATE: if (SIGNAL_OPEN==deviceState ) @@ -902,33 +898,6 @@ UINT8 GetAtsBackInfoParam(const UINT8 functionId,const UINT8 deviceStateType, co case ETYPE_OTHER_DOWNWASH_NOT_ALLOW_PASS: returnValue = CI_BACK_WASH_PASS_ALLOW_NOT; /*ϴ/δͬͨ*/ 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; default:/*ݴ*/ returnValue = 0U; break; @@ -947,18 +916,14 @@ CI_SUCCESS */ 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 { - cRetVal = CI_ERROR; + return CI_ERROR; } - - return cRetVal; } diff --git a/TSCP/src/APP/ciapp/Indicator/IndicatorConfigDataManage.c b/TSCP/src/APP/ciapp/Indicator/IndicatorConfigDataManage.c index 8c79fb2..78b6264 100644 --- a/TSCP/src/APP/ciapp/Indicator/IndicatorConfigDataManage.c +++ b/TSCP/src/APP/ciapp/Indicator/IndicatorConfigDataManage.c @@ -18,7 +18,7 @@ UINT16 LocalCiIndicatorIdBuf[INDICATOR_SUM_MAX] = {0u};/* INT16 IndicatorCurSum = 0; /*ָʾǰ*/ OCStationIndicConfigDataStru g_OCStationIndicConfigDataStru[INDICATOR_SUM_MAX] = { 0u }; -UINT16 g_OCStationIndicatorCurSum = 0; /*OCվվͷǼվָʾ,漰棬ȡֵΧ [0,2000) ʹ*/ +UINT16 g_OCStationIndicatorCurSum = 0; /*OCվվͷǼվָʾ,漰棬ȡֵΧ0-1000*/ diff --git a/TSCP/src/APP/ciapp/Indicator/IndicatorDefine.h b/TSCP/src/APP/ciapp/Indicator/IndicatorDefine.h index a96dc8c..2e422db 100644 --- a/TSCP/src/APP/ciapp/Indicator/IndicatorDefine.h +++ b/TSCP/src/APP/ciapp/Indicator/IndicatorDefine.h @@ -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 RTNINDICATOR_SUM_MAX ((UINT8)2U) /*һ۷*/ diff --git a/TSCP/src/APP/ciapp/Initial/ConfigDataReadManage.c b/TSCP/src/APP/ciapp/Initial/ConfigDataReadManage.c index 0006cfe..b3ce226 100644 --- a/TSCP/src/APP/ciapp/Initial/ConfigDataReadManage.c +++ b/TSCP/src/APP/ciapp/Initial/ConfigDataReadManage.c @@ -919,7 +919,7 @@ UINT8 ReadConfigureData(void) g_ret = ReadEaConfigData(g_szEaConfig); if (-1 == g_ret) { - rtnVal = 40u; + rtnVal = 37u; debug_infor_printf((const)"ReadEaConfigData errcode =%d, ReadEaConfigData", rtnVal); } else @@ -1041,26 +1041,7 @@ UINT8 ReadConfigureData(void) if (0 == g_ret) { debug_infor_printf((const)"PhySectionNearConfigDataManage Error\n"); - rtnVal = 41u; - } - else - { - ; /**/ - } - } - else - { - ; /**/ - } - - if (0U == rtnVal) - { - /*ȡڼе*/ - g_ret = (INT16)ReadPhySecIndexInAxle(LocalCiId, PhysicalSectionConfigDataStru); - if (0 == g_ret) - { - debug_infor_printf((const)"ReadPhySecIndexInAxle Error\n"); - rtnVal = 42u; + rtnVal = 37u; } else { @@ -1299,8 +1280,7 @@ UINT8 SetautoRouteOpposedRoute(UINT16 autoRouteRouteId,UINT8 routeType) autoRouteSum = GetAutoRouteRouteCurSum();/*Զ·Ŀ*/ autoReturnSum = GetAutoReturnRouteCurSum();/*Զ۷·Ŀ*/ allAutoReturnSum = GetAllAutoReturnRouteCurSum();/*ȫԶ۷·Ŀ*/ - if ((AUTO_ROUTE_SUM_MAX <= autoRouteSum) || (AUTO_RETURN_SUM_MAX<=autoReturnSum ) - ||(ALL_AUTO_RETURN_SUM_MAX <= allAutoReturnSum)) + if ((autoRouteSum >= AUTO_ROUTE_SUM_MAX) || (autoReturnSum >= AUTO_RETURN_SUM_MAX)) {/**/ returnValue = CI_ERROR; } @@ -3446,40 +3426,4 @@ UINT16 GetTiocDeviceConfigData(UINT32* pConfigDataAddrBuf,UINT16* pConfigDataLen 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; } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/Initial/ConfigDataReadManage.h b/TSCP/src/APP/ciapp/Initial/ConfigDataReadManage.h index a818386..76ac73b 100644 --- a/TSCP/src/APP/ciapp/Initial/ConfigDataReadManage.h +++ b/TSCP/src/APP/ciapp/Initial/ConfigDataReadManage.h @@ -160,16 +160,6 @@ INT8 OcConnectConfigDataToDevStruct(SignalConfigDataStruct* pSignalCfgData, Phys *ֵ̬ *********************************************/ 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 diff --git a/TSCP/src/APP/ciapp/Initial/InitialProcess.c b/TSCP/src/APP/ciapp/Initial/InitialProcess.c index 3a41f23..94075f3 100644 --- a/TSCP/src/APP/ciapp/Initial/InitialProcess.c +++ b/TSCP/src/APP/ciapp/Initial/InitialProcess.c @@ -586,7 +586,6 @@ UINT8 InitialSignalData(void) SignalDataStru[signalId].DetainBtnErrFlag = SIGNAL_ZFS_BTN_ERR_FLAG_NO; /*۳ťϱ־*/ SignalDataStru[signalId].CancelDetainBtnErrFlag = SIGNAL_ZFS_BTN_ERR_FLAG_NO; /*ȡ۳ťϱ־*/ SignalDataStru[signalId].DetainBtnPressCycNum = 0U; /*۳ť1*/ - SignalDataStru[signalId].DetainSndBtnPressCycNum = 0U; /*۳ť2*/ SignalDataStru[signalId].CancelDetainBtnPressCycNum = 0U; /*ȡ۳ť*/ SignalDataStru[signalId].CancelDetainErrTrigPressCycNum = 0U; /*ȡ۳ť󴥷*/ SignalDataStru[signalId].CancelDetainBtnValidFlag = SIGNAL_CANCEL_DETAIN_VALID_NO; /*ȡ۳ťЧ־*/ @@ -595,11 +594,7 @@ UINT8 InitialSignalData(void) SignalDataStru[signalId].VobcCroSigInPhyOccSta = SECTION_OCCUPY_NO; /*ʼźŻڷһΪУռѹٸZCȷϢ*/ SignalDataStru[signalId].cSleepTrainLightUpFlag = SIGNAL_SLEEP_TRAIN_LIGHTUP_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;/*ʱЧ*/ @@ -863,9 +858,6 @@ UINT8 InitialPhySectionData(void) PhysicalSectionDataStru[ii].UtOrCtOccFlag = SECTION_OCCUPY_YES; PhysicalSectionDataStru[ii].UtOrCtOccuStartCycNum = 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; PhysicalSectionDataStru[ii].JumpLockStateToZC = PHYSICAL_SECTION_JUMP_LOCK_NO; PhysicalSectionDataStru[ii].wPhyErrUnlockTime = 0U; PhysicalSectionDataStru[ii].cAreaUrgentBrakeState = PHYSEC_AREA_URGENT_NO; @@ -1371,19 +1363,6 @@ UINT8 InitialPsdData(void) /*Ƶ״̬ʼΪЧгID0*/ PsdDataStru[psdId].chVideoQkDriveState = VIDEO_QK_DRIVE_STATE_INVALID; 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Źؼ̵ʼ*/ } reVal = CI_SUCCESS; return reVal; @@ -1562,8 +1541,6 @@ UINT8 InitialRouteData(void) RouteDataStru[routeId].NeedOpenNotTrueRepeatStartCount = 0u;/*迪Ųʱؿʼ*/ RouteDataStru[routeId].DCQState = ROUTE_DCQ_NOT_REQUEST;/*޵*/ 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].AutoSigCancleState = AUTO_ROUTE_CANCLE_NO; /*Զźȡ״̬ΪЧ*/ RouteDataStru[routeId].CancleAutoSigCmd = AUTO_ROUTE_CANCLE_CMD_NO; /*ԶźȡЧ*/ @@ -1591,11 +1568,6 @@ UINT8 InitialRouteData(void) RouteDataStru[routeId].cRouteDrivedSGBJFlag = ROUTE_HAS_DRIVED_SGBJ_INVALID; /*ʼ·δⱨ*/ RouteDataStru[routeId].chRouteNearSecSearchState = ROUTE_NEAR_SEC_HAVE_UT; /*ʼ·ӽβѯ״̬Ϊйϳ*/ RouteDataStru[routeId].chRouteApplySwitchCheckFlag = ROUTE_APPLY_SWITCH_CHECK_DEF; /*ʼ·ڿ־*/ - RouteDataStru[routeId].OtherCiRecordDevID = 0U; - RouteDataStru[routeId].OtherCiRecordDevState = 0U; - RouteDataStru[routeId].OtherCiRecordDevType = 0U; - RouteDataStru[routeId].OtherCiRecordErrorType = 0U; - RouteDataStru[routeId].cRouteToLeadFlag = ROUTE_TO_LEAD_FLAG_NO; /*ʼͨ·ת·־ΪЧ*/ } } @@ -2139,11 +2111,6 @@ void ResetDynamicState(const UINT8 ciId) PhysicalSectionDataStru[ii].FLockType = PHY_SEC_FLOCK_TYPE_NONE; PhysicalSectionDataStru[ii].JumpLockStateToZC = PHYSICAL_SECTION_JUMP_LOCK_NO; 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 { @@ -2256,7 +2223,6 @@ void ResetDynamicState(const UINT8 ciId) SetSignalDetainBtnActFlag(devId, SIGNAL_ZFS_BTN_ACT_FLAG_YES); /*źŻ۳ťЧ״̬*/ /*ڻͨжϱεЧԣԼCICIжϡΪ˱֤ĶСԶڷǻͨźŻ䱣ЧһֱΪЧӰ߼*/ SetSignalProSecValid(devId,SIGNAL_PRO_SEC_VALID); - SetDetCutBtnState(devId, SIGNAL_DETAIN_CUT_VALID_NO); } } @@ -2279,7 +2245,6 @@ void ResetDynamicState(const UINT8 ciId) PsdDataStru[devId].PsdState = PSD_STATE_CLOSE; } PsdDataStru[devId].MutualLockRemoveState = PSD_MUTUALLOCK_REMOVE_NO; - PsdDataStru[devId].cPsdExceptOpenState = PSD_EXCEPT_OPEN_YES; /*ΪPSD쳣*/ } } @@ -2319,7 +2284,6 @@ void ResetDynamicState(const UINT8 ciId) * ޸ģڽ·е״̬¡ͨжҪ·óɰȫ״̬ * ޸20160511ԶԶ쳣ֽ·״̬ðȫ̬ ·״̬ΪԶԶ쳣ðȫ̬󣬽·ı޷ - * ޸ģ·״̬н·󣬱ʼźŻΪնźŻ۷·״̬Ƿ */ throughRtId = GetRouteThroughRouteId(devId); OverlapLockedId = GetRouteOverlapLockedId(devId); @@ -2338,7 +2302,6 @@ void ResetDynamicState(const UINT8 ciId) { (void)memset(&RouteDataStru[ii], 0, devLen); RouteDataStru[devId].RouteId = devId; - RouteDataStru[devId].RouteState = devState; RouteDataStru[devId].ThroughRouteId = throughRtId; RouteDataStru[devId].OverlapLockedId = OverlapLockedId; } @@ -2692,7 +2655,6 @@ void ResetDynamicStateHlht(const UINT8 ciId) UINT16 ii = 0u; UINT16 devId = 0u;/*IdId豸IdΪ豸ԻڣIdΪ̬ԣһΪ0Ͳܸ*/ UINT16 devLen = 0u; - UINT8 belongCiId = 0U; /*÷DZ̬*/ for (ii = 1u; ii < SWITCH_SUM_MAX; ii++) @@ -2709,7 +2671,6 @@ void ResetDynamicStateHlht(const UINT8 ciId) /*õǰλ */ SwitchDataStru[devId].SwitchCurPosition = SWITCH_POSITION_JICHA; /*ǰλ*/ SwitchDataStru[devId].SingleSwitchCurPosition = SWITCH_POSITION_JICHA; /*ǰλ*/ - SwitchDataStru[devId].LockStatus = SWITCH_LOCK_STATUS_NO; } } @@ -2731,7 +2692,6 @@ void ResetDynamicStateHlht(const UINT8 ciId) PhysicalSectionDataStru[ii].CurAndMergeOccupyState = SECTION_OCCUPY_YES; PhysicalSectionDataStru[ii].PreOccupyState = SECTION_OCCUPY_YES; PhysicalSectionDataStru[ii].CurOccupyState = SECTION_OCCUPY_YES; - PhysicalSectionDataStru[ii].PhySecPreResetState = PHYSICAL_SECTION_PRE_RESET_NO; } } @@ -2815,17 +2775,6 @@ void ResetDynamicStateHlht(const UINT8 ciId) spksDataBuff[devId].cutStatus = SPKS_CUT_NO; /*SPKS·״̬δ*/ } } - - for (ii = 1u; ii < AUTO_ROUTE_SUM_MAX; ii++) - { - devId = ii; - belongCiId = GetAutoRouteBelongCiId(devId); - if (belongCiId == ciId) - { - /*DZ״̬*/ - AutoRouteDataStru[devId].AutoRouteSetFlag = AUTO_ROUTE_SET_NO; /*Զ·δ*/ - } - } } /* @@ -2850,7 +2799,6 @@ void InitOcData(void) for (k = 0U; k < OC_COLL_BOARD_POS_NUM; k++) { m_OcConvertedPtDataArr[i].BoardDatas[j].PosValueBuf[k] = 0u; - m_OcConvertedPtDataArr[i].BoardDatas[j].TolerateCycNum[k] = 0u; } } diff --git a/TSCP/src/APP/ciapp/InvadeSection/InvadeSectionDefine.h b/TSCP/src/APP/ciapp/InvadeSection/InvadeSectionDefine.h index fe9bee3..71be56f 100644 --- a/TSCP/src/APP/ciapp/InvadeSection/InvadeSectionDefine.h +++ b/TSCP/src/APP/ciapp/InvadeSection/InvadeSectionDefine.h @@ -14,7 +14,7 @@ #ifndef __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) /*һĿ,*/ diff --git a/TSCP/src/APP/ciapp/LogRecord/LogRecord.c b/TSCP/src/APP/ciapp/LogRecord/LogRecord.c index 6157ce7..c10e128 100644 --- a/TSCP/src/APP/ciapp/LogRecord/LogRecord.c +++ b/TSCP/src/APP/ciapp/LogRecord/LogRecord.c @@ -526,13 +526,6 @@ UINT8 RecordDeviceDataLog(UINT8 Flag) outString[outStringLength++] = newPhysicalSectionData[deviceId].CurMergeOccupyState;/*ǰںռ״̬*/ outString[outStringLength++] = newPhysicalSectionData[deviceId].PreAndMergeOccupyState;/*֮ǰռںռ״̬*/ 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].ArbState;/*ARB״̬*/ outString[outStringLength++] = newPhysicalSectionData[deviceId].ProtectSecLockDelayTimeFlag;/*ʱ־(ֶ̬)*/ @@ -551,6 +544,8 @@ UINT8 RecordDeviceDataLog(UINT8 Flag) outStringLength += 4u; LongToChar(newPhysicalSectionData[deviceId].FaultUnlockStartCycNum,&outString[outStringLength]);/*ʽʱʼ*/ outStringLength += 4u; + LongToChar(newPhysicalSectionData[deviceId].SectionResetStartCycNum,&outString[outStringLength]);/*μḴλʼ*/ + outStringLength += 4u; outString[outStringLength++] = newPhysicalSectionData[deviceId].FLockType; /*ηԭ,SPKSԭ*/ outString[outStringLength++] = newPhysicalSectionData[deviceId].UtOrCtOccFlag; /*ȡռñ־*/ ShortToChar(newPhysicalSectionData[deviceId].SecProUseBelongRouteId,&outString[outStringLength]);/*·ID*/ @@ -563,8 +558,6 @@ UINT8 RecordDeviceDataLog(UINT8 Flag) outString[outStringLength++] = newPhysicalSectionData[deviceId].chABLTrainFlag; /*ABLгռ״̬*/ outString[outStringLength++] = newPhysicalSectionData[deviceId].chPreABLTrainFlag; /*֮ǰABLгռ״̬*/ outString[outStringLength++] = newPhysicalSectionData[deviceId].cPhySecInHumidRailFlag; /*ʪ־0x55 Ч0xAA Ч*/ - LongToChar(newPhysicalSectionData[deviceId].UtOrCtOccuStartCycNum, &outString[outStringLength]);/*UTCTռʼں*/ - outStringLength += 4u; } } } @@ -659,7 +652,6 @@ UINT8 RecordDeviceDataLog(UINT8 Flag) outString[outStringLength++] = newSignalData[deviceId].GreenDsBreakFlag;/*̵˿˿־״̬*/ outString[outStringLength++] = newSignalData[deviceId].YellowDsBreakFlag;/*Ƶ˿˿־״̬*/ outString[outStringLength++] = newSignalData[deviceId].WhiteDsBreakFlag;/*׵˿˿־״̬*/ - outString[outStringLength++] = newSignalData[deviceId].BlueDsBreakFlag;/*˿˿־״̬*/ outString[outStringLength++] = newSignalData[deviceId].RedYellowDsBreakFlag;/*Ƶ˿˿־״̬*/ outString[outStringLength++] = newSignalData[deviceId].RedWhiteDsBreakFlag;/*׵˿˿־״̬*/ outString[outStringLength++] = newSignalData[deviceId].GreenYellowDsBreakFlag;/*̻Ƶ˿˿־״̬*/ @@ -691,10 +683,8 @@ UINT8 RecordDeviceDataLog(UINT8 Flag) outString[outStringLength++] = newSignalData[deviceId].CancelDetainBtnErrFlag; /*ȡ۳ťϱ־*/ outString[outStringLength++] = newSignalData[deviceId].CancelDetainBtnValidFlag; /*ȡ۳ťЧ־*/ outString[outStringLength++] = newSignalData[deviceId].CancelDetainRelayDownState; /*ȡ۳ťɼ̵״̬*/ - LongToChar(newSignalData[deviceId].DetainBtnPressCycNum, &outString[outStringLength]); /*۳ť1*/ + LongToChar(newSignalData[deviceId].DetainBtnPressCycNum, &outString[outStringLength]); /*۳ť*/ outStringLength += 4u; - LongToChar(newSignalData[deviceId].DetainSndBtnPressCycNum, &outString[outStringLength]); /*۳ť2*/ - outStringLength += 4U; LongToChar(newSignalData[deviceId].CancelDetainBtnPressCycNum, &outString[outStringLength]); /*ȡ۳ť*/ outStringLength += 4u; LongToChar(newSignalData[deviceId].CancelDetainErrTrigPressCycNum, &outString[outStringLength]); /*ȡ۳ť󴥷*/ @@ -703,16 +693,6 @@ UINT8 RecordDeviceDataLog(UINT8 Flag) outStringLength += 2u; outString[outStringLength++] = newSignalData[deviceId].cSleepTrainLightUpFlag; /*߳źŻ־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++; } } else @@ -782,7 +762,6 @@ UINT8 RecordDeviceDataLog(UINT8 Flag) outString[outStringLength++] = pNewEsbData[deviceId].EssSteadyState;/*ESSȵ״̬ATS--0x55 Ҫȵƣ0xaaҪȵ*/ outString[outStringLength++] = pNewEsbData[deviceId].EssFlashState;/*ESS״̬ATS--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].CancelEsbValidFlag;/*ȡرհťЧ־0x55Ч0xaaЧ*/ outString[outStringLength++] = pNewEsbData[deviceId].CancelEsbRelayDownState;/*ȡرհťɼ̵״̬0x55ɼ£0xaaͨ쳣*/ @@ -791,13 +770,7 @@ UINT8 RecordDeviceDataLog(UINT8 Flag) LongToChar(pNewEsbData[deviceId].CancelEsbPressCycNum, &outString[outStringLength]);/*ȡرհť*/ outStringLength += 4u; LongToChar(pNewEsbData[deviceId].CancelEsbErrTriggerPressCycNum, &outString[outStringLength]);/*ȡرհť󴥷*/ - 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; + outStringLength += 4U; } } else @@ -1021,9 +994,7 @@ UINT8 RecordDeviceDataLog(UINT8 Flag) outStringLength += 4u; outString[outStringLength++] = newRouteData[deviceId].DCQState;/*״̬*/ outString[outStringLength++] = newRouteData[deviceId].DCTYState;/*ͬ״̬*/ - LongToChar(newRouteData[deviceId].dwDcAgreeBtnPressCycNum, &outString[outStringLength]);/*ͬⰴťʼ*/ - outStringLength += 4u; - outString[outStringLength++] = newRouteData[deviceId].chDcAgreeButtonErrState;/*ͬⰴť״̬*/ + outString[outStringLength++] = newRouteData[deviceId].DCTYNotSatisfySignalReOpenFlag;/*ͬⲻ-źؿ־*/ LongToChar(newRouteData[deviceId].DCTYNotSatisfyStartCount,&outString[outStringLength]);/*ͬⲻ-ʼ*/ outStringLength += 4u; @@ -1557,11 +1528,8 @@ UINT8 RecordDeviceDataLog(UINT8 Flag) outString[outStringLength++] = newPsdData[deviceId].chVideoQkDriveState; /*Ƶ״̬*/ ShortToChar(newPsdData[deviceId].wVideoQkRelateVobcId, &outString[outStringLength]);/*ƵͶӦгID*/ outStringLength += 2u; - outString[outStringLength] = newPsdData[deviceId].cPsdExceptOpenState; /*쳣״̬0x55-쳣򿪣0xAA-δ쳣*/ - outStringLength++; - LongToChar(newPsdData[deviceId].dwPsdRelayDownCycNum, &outString[outStringLength]); /*PSDŹؼ̵ʼ*/ - outStringLength += 4U; } + } else { @@ -2029,8 +1997,7 @@ UINT8 RecordDeviceDataLog(UINT8 Flag) LongToChar(pNewSpksData[deviceId].flockStartNum, &outString[outStringLength]); outStringLength += 4U; outString[outStringLength++] = pNewSpksData[deviceId].TotalSpksDriveOutDis; - LongToChar(pNewSpksData[deviceId].dwSpksBtnPressCycNum, &outString[outStringLength]); /*SPKSťʼں*/ - outStringLength += 4U; + } } else @@ -2048,7 +2015,7 @@ UINT8 RecordDeviceDataLog(UINT8 Flag) else { #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); #endif @@ -2148,9 +2115,6 @@ UINT8 RecordDeviceDataLog(UINT8 Flag) LongToChar(pNewTrainInfoData[deviceId].dwDelayTime, &outString[outStringLength]);/*Ϣӳʱ*/ outStringLength += 4u; - LongToChar(pNewTrainInfoData[deviceId].dwStartFlyCycNum, &outString[outStringLength]);/*гɳʼں*/ - outStringLength += 4U; - ShortToChar(pNewTrainInfoData[deviceId].wGroupOtherTrainId, &outString[outStringLength]);/* һгID*/ outStringLength += 2u; diff --git a/TSCP/src/APP/ciapp/LogicManage/InterlockCommonManage.c b/TSCP/src/APP/ciapp/LogicManage/InterlockCommonManage.c index 1e8963a..e01dbc0 100644 --- a/TSCP/src/APP/ciapp/LogicManage/InterlockCommonManage.c +++ b/TSCP/src/APP/ciapp/LogicManage/InterlockCommonManage.c @@ -1379,7 +1379,6 @@ void RouteRecoverOpenProc(const UINT16 routeId) UINT8 recoverState = ROUTE_RECOVER_STA_STAY;/*ǰָؿ״̬*/ UINT8 errType = CI_ERROR; UINT8 localCiType = GetLocalCiType();/**/ - UINT16 wStartSignalId = 0U; /*·ʼźŻID*/ routeState = GetRouteState(routeId); recoverState = GetRouteRecoverOpenFlag(routeId); @@ -1397,7 +1396,6 @@ void RouteRecoverOpenProc(const UINT16 routeId) errType = RecoverOpenRouteCheckCLD(routeId); } - wStartSignalId = GetRouteStartSignalId(routeId); /*ȡ·ʼźŻID*/ if (errType == CI_SUCCESS) { SetRouteOpenSigStartCycNum(routeId, Get2oo2CurCycleNum()); @@ -1412,9 +1410,6 @@ void RouteRecoverOpenProc(const UINT16 routeId) else { SetRouteRecoverState(routeId, ROUTE_RECOVER_STA_STAY);/*һPSDSPKS۳㣬·ָ״̬Ϊɻָ*/ - - /*ʧܣöӦʼźŻ۳·ťЧ*/ - SetDetCutBtnState(wStartSignalId, SIGNAL_DETAIN_CUT_VALID_NO); } } } diff --git a/TSCP/src/APP/ciapp/LogicManage/InterlockCommonManage.h b/TSCP/src/APP/ciapp/LogicManage/InterlockCommonManage.h index c0b82de..c00d0e6 100644 --- a/TSCP/src/APP/ciapp/LogicManage/InterlockCommonManage.h +++ b/TSCP/src/APP/ciapp/LogicManage/InterlockCommonManage.h @@ -41,7 +41,6 @@ #include "../LogicManage/TradInterlockLogicManage.h" #include "../Train/TrainDefine.h" #include "LogicalRouteDataManage.h" -#include "../EnvelopeManage/EnvelopeManageAPI.h" #ifdef SCADE_MODE #include "../LogicManage/General/LogicManageScadeInterface.h" diff --git a/TSCP/src/APP/ciapp/LogicManage/InterlockLogicManage.c b/TSCP/src/APP/ciapp/LogicManage/InterlockLogicManage.c index 2cce109..f8338e6 100644 --- a/TSCP/src/APP/ciapp/LogicManage/InterlockLogicManage.c +++ b/TSCP/src/APP/ciapp/LogicManage/InterlockLogicManage.c @@ -199,9 +199,6 @@ void InterlockLogicMainProc(void) /*·߼*/ RouteLogicManage(); - /*ղ̵¹*/ - OverlapZhaoChaRelayUpDateManage(); - /*·гͷŽ߼*/ RouteTrainResUnlockManage(); @@ -604,6 +601,7 @@ void RouteLogicManage(void) RouteStateFlagManage(routeId); } + if (RC_WORK_MODE_TIOC == cRcWorkMode) { /*гȡԴʱ wei ȱݣԴȡ*/ @@ -611,17 +609,10 @@ void RouteLogicManage(void) } RouteRecoverOpenProc(routeId); - /*ȡԶź*/ CancleAutoSigCmdProcc(routeId); - - /*·ͬ߼*/ - RouteDCTYLogic(routeId); - /*cgh-ϲCID-2341-5ݽ·״̬ر־*/ ClearSomeFlagDependRouteState(routeId); - - /*cgh-ϲCID-2349-5*/ SetErrorDataBelongVirCiId(recordErrorNum, virCIid);/*ErrorCodeID*/ @@ -852,7 +843,7 @@ void RouteAutoManage(const UINT16 routeId) /*·ѡ*/ RouteFirstXuanPaiManage(routeId); #else - SetCommonRouteLogicManage(routeId, ESEND_LEVEL_ATS); + SetCommonRouteLogicManage(routeId); #endif } } @@ -1226,9 +1217,6 @@ void RouteFirstLockManage(const UINT16 routeId) SetErrorData(EFUNC_LOCK_BLOC_T_ROUTE, CI_DEVICE_TYPE_ROUTE, routeId, ETYPE_ROUTE_OVERLAP_UNLOCK, ROUTE_OVERLAP_SET_NO, ESEND_LEVEL_ATS); SetRouteStateManage(routeId, ROUTE_STATE_FIRST_LOCKERR); /*-->ó쳣*/ - /*ʧܣź޷ţöӦʼźŻ۳·ťЧ*/ - SetDetCutBtnState(startSignalId, SIGNAL_DETAIN_CUT_VALID_NO); - returnValue = CI_ERROR; } else @@ -1251,16 +1239,9 @@ void RouteFirstLockManage(const UINT16 routeId) SetErrorData(EFUNC_LOCK_BLOC_T_ROUTE, CI_DEVICE_TYPE_ROUTE, routeId, ETYPE_ROUTE_OVERLAP_UNLOCK, ROUTE_OVERLAP_SET_NO, ESEND_LEVEL_ATS); debug_infor_printf((const)"\nRoute %d ovlerlap OccTimeOut.\n", routeId); SetRouteStateManage(routeId, ROUTE_STATE_FIRST_LOCKERR); /*-->ó쳣*/ - - /*ʧܣź޷ţöӦʼźŻ۳·ťЧ*/ - SetDetCutBtnState(startSignalId, SIGNAL_DETAIN_CUT_VALID_NO); } } - else - { - ; - } } } @@ -1302,10 +1283,8 @@ void RouteFirstLockManage(const UINT16 routeId) else { /*ʧ*/ - SetRouteStateManage(routeId, ROUTE_STATE_FIRST_LOCKERR); /*-->ó쳣*/ - /*ʧܣöӦʼźŻ۳·ťЧ*/ - SetDetCutBtnState(startSignalId, SIGNAL_DETAIN_CUT_VALID_NO); + SetRouteStateManage(routeId, ROUTE_STATE_FIRST_LOCKERR); /*-->ó쳣*/ } } } @@ -1323,9 +1302,8 @@ void RouteFirstLockErrManage(const UINT16 routeId) { UINT16 startSignalId = 0u; /*·ʼźŻID*/ UINT8 openCloseState = 0u; /*źŻŹر״̬*/ - UINT8 dctyReOpenFlag = ROUTE_DCTY_REOPEN_NO;/*ͬؿ־*/ + UINT8 needOpenNotTrueRepeatFlag = ROUTE_NEEDOPEN_REOPEN_NO;/*迪Ųʱؿ־*/ - UINT8 cFuncRetVal = CI_ERROR; /*ȡ·ֶ̬*/ startSignalId = GetRouteStartSignalId(routeId); /*ȡ·ʼźŻID*/ @@ -1347,11 +1325,7 @@ void RouteFirstLockErrManage(const UINT16 routeId) else { needOpenNotTrueRepeatFlag = GetRouteNeedOpenReopenFlag(routeId); - /*ȡͬؿ־*/ - dctyReOpenFlag = GetRouteDCTYNotSatisfySignalReOpenFlag(routeId); - - if ((ROUTE_NEEDOPEN_REOPEN_YES == needOpenNotTrueRepeatFlag) - || (ROUTE_DCTY_REOPEN == dctyReOpenFlag)) + if (ROUTE_NEEDOPEN_REOPEN_YES == needOpenNotTrueRepeatFlag) { #if 0 SetRouteNeedOpenReopenFlag(routeId,ROUTE_NEEDOPEN_REOPEN_NO); @@ -1383,38 +1357,16 @@ void RouteFirstLockErrManage(const UINT16 routeId) if (((CI_SUCCESS == AutoSignalOrRouteValid(routeId)) && (SIGNAL_DS_BREAK_NO == GetSignalDsBreakFlag(startSignalId))) || (ROUTE_REPEATOPEN_SET_YES == GetRouteRepeatOpenFlag(routeId))) { - /*ؿźŴ*/ - cFuncRetVal = OpenRouteSignalProc(routeId); - if (CI_SUCCESS == cFuncRetVal) - { - /*ųɹȴ*/ - } - else - { - /*ʧܣöӦʼźŻ۳·ťЧ*/ - SetDetCutBtnState(startSignalId, SIGNAL_DETAIN_CUT_VALID_NO); - } + /*ؿźźŴ*/ + (void)OpenRouteSignalProc(routeId); } else { /* ֽ·쳣״̬*/ needOpenNotTrueRepeatFlag = GetRouteNeedOpenReopenFlag(routeId); - /*ȡͬؿ־*/ - dctyReOpenFlag = GetRouteDCTYNotSatisfySignalReOpenFlag(routeId); - - if ((ROUTE_NEEDOPEN_REOPEN_YES == needOpenNotTrueRepeatFlag) - || (ROUTE_DCTY_REOPEN == dctyReOpenFlag)) - {/*迪Ų㣬迪ؿ־Ч/ͬؿ־Чʱ*/ - cFuncRetVal = OpenRouteSignalProc(routeId); - if (CI_SUCCESS == cFuncRetVal) - { - /*ųɹȴ*/ - } - else - { - /*ʧܣöӦʼźŻ۳·ťЧ*/ - SetDetCutBtnState(startSignalId, SIGNAL_DETAIN_CUT_VALID_NO); - } + if (ROUTE_NEEDOPEN_REOPEN_YES == needOpenNotTrueRepeatFlag) + {/*迪㣬迪ؿ־Чʱ*/ + (void)OpenRouteSignalProc(routeId); } } } @@ -1432,7 +1384,7 @@ void RouteYuXianLockManage(const UINT16 routeId) UINT8 openCloseState = 0u; /*·ʼźŻ״̬*/ UINT8 startSignalCurColor = 0u; /*ʼźŻǰɫ*/ UINT8 startSignalPreDrvColor = 0u; /*ʼźŻɫ*/ - UINT8 cFuncRetVal = CI_ERROR; + /*ȡ·ֶ̬*/ startSignalId = GetRouteStartSignalId(routeId); /*ȡ·ʼźŻID*/ @@ -1502,16 +1454,7 @@ void RouteYuXianLockManage(const UINT16 routeId) /*Զ·źЧ||źؿЧ*/ /*Ž·źŴ*/ - cFuncRetVal = OpenRouteSignalProc(routeId); - if (CI_SUCCESS == cFuncRetVal) - { - /*ųɹȴ*/ - } - else - { - /*ʧܣöӦʼźŻ۳·ťЧ*/ - SetDetCutBtnState(startSignalId, SIGNAL_DETAIN_CUT_VALID_NO); - } + (void)OpenRouteSignalProc(routeId); } else { @@ -1535,8 +1478,6 @@ void RouteYuXianOpenManage(const UINT16 routeId) UINT8 sigState = 0u; UINT8 funcId = EFUNC_RouteYuXianOpenManage;/*ID*/ UINT8 checkResult = 0u; - UINT8 dctyReOpenFlag = ROUTE_DCTY_REOPEN_NO; - /*ȡ·ֶ̬*/ startSignalId = GetRouteStartSignalId(routeId); /*ȡ·ʼźŻID*/ @@ -1552,18 +1493,6 @@ void RouteYuXianOpenManage(const UINT16 routeId) SetRouteNeedOpenReopenFlag(routeId, ROUTE_NEEDOPEN_REOPEN_NO); SetRouteNeedOpenNotTrueSigRepeatOpenStartCycNum(routeId, 0); } - - dctyReOpenFlag = GetRouteDCTYNotSatisfySignalReOpenFlag(routeId); - if (ROUTE_DCTY_REOPEN == dctyReOpenFlag) - { - SetRouteDCTYNotSatisfySignalReOpenFlag(routeId, ROUTE_DCTY_REOPEN_NO); - SetRouteDCTYNotSatisfyStartCnt(routeId, 0U); - } - else - { - ; - } - /*ֿŽ·źŴ*/ checkResult = KeepOpenRouteSignalProc(routeId); if (CI_SUCCESS == checkResult) @@ -1597,9 +1526,6 @@ void RouteYuXianOpenManage(const UINT16 routeId) /*޳ӽ*/ SetRouteStateManage(routeId, ROUTE_STATE_YUXIAN_LOCK); /*-->Ԥ*/ } - - /*ֿʧܣöӦʼźŻ۳·ťЧ*/ - SetDetCutBtnState(startSignalId, SIGNAL_DETAIN_CUT_VALID_NO); } } else @@ -1619,9 +1545,6 @@ void RouteYuXianOpenManage(const UINT16 routeId) /*źŻϹرձ*/ SetErrorData(funcId, CI_DEVICE_TYPE_SIGNAL, startSignalId, ETYPE_SIG_START_OPEN_STATE, sigState, ESEND_LEVEL_ATS); - - /*ֿڼź쳣رգöӦʼźŻ۳·ťЧ*/ - SetDetCutBtnState(startSignalId, SIGNAL_DETAIN_CUT_VALID_NO); } } @@ -1645,8 +1568,6 @@ void RouteNearLockErrManage(const UINT16 routeId) UINT8 startSignalDsStat = 0U; UINT8 routeRepeatStat = 0U; UINT8 routeTrainNear = 0U; - UINT8 cFuncRetVal = CI_ERROR; - /*ȡ·ʼźŻID*/ startSignalId = GetRouteStartSignalId(routeId); sigInfirPhySecId = GetSignalInFirstPhySecId(startSignalId, routeId); @@ -1726,17 +1647,7 @@ void RouteNearLockErrManage(const UINT16 routeId) /*Զ·źЧ||źؿЧ*/ /*Ž·źŴ*/ - cFuncRetVal = OpenRouteSignalProc(routeId); - - if (CI_SUCCESS == cFuncRetVal) - { - /*ųɹȴ*/ - } - else - { - /*ʧܣöӦʼźŻ۳·ťЧ*/ - SetDetCutBtnState(startSignalId, SIGNAL_DETAIN_CUT_VALID_NO); - } + (void)OpenRouteSignalProc(routeId); } else { @@ -1863,9 +1774,6 @@ void RouteNearOpenManage(const UINT16 routeId) { SetRouteStateManage(routeId, ROUTE_STATE_NEAR_LOCKERR); /*-->ýӽ쳣*/ } - - /*ֿʧܣöӦʼźŻ۳·ťЧ*/ - SetDetCutBtnState(startSignalId, SIGNAL_DETAIN_CUT_VALID_NO); } } else @@ -1875,9 +1783,6 @@ void RouteNearOpenManage(const UINT16 routeId) /*źŻϹرձ*/ SetErrorData(funcId, CI_DEVICE_TYPE_SIGNAL, startSignalId, ETYPE_SIG_START_OPEN_STATE, sigState, ESEND_LEVEL_ATS); - - /*ֿڼź쳣رգöӦʼźŻ۳·ťЧ*/ - SetDetCutBtnState(startSignalId, SIGNAL_DETAIN_CUT_VALID_NO); } } @@ -2004,7 +1909,6 @@ void RouteNearLockManage(const UINT16 routeId) UINT16 validReturnSigId = 0U; /*Ч۷źŻ*/ UINT16 returnSecId = 0U; /*۷*/ UINT8 localCiType = 0U;/**/ - UINT8 cFuncRetVal = CI_ERROR; localCiType = GetLocalCiType(); /*ȡ·ʼźŻID*/ @@ -2086,17 +1990,7 @@ void RouteNearLockManage(const UINT16 routeId) { if (SIGNAL_DS_BREAK_NO == GetSignalDsBreakFlag(startSignalId)) { - cFuncRetVal = OpenRouteSignalProc(routeId); - - if (CI_SUCCESS == cFuncRetVal) - { - /*ųɹȴ*/ - } - else - { - /*ʧܣöӦʼźŻ۳·ťЧ*/ - SetDetCutBtnState(startSignalId, SIGNAL_DETAIN_CUT_VALID_NO); - } + (void)OpenRouteSignalProc(routeId); } else { @@ -2106,17 +2000,7 @@ void RouteNearLockManage(const UINT16 routeId) else if (ROUTE_REPEATOPEN_SET_YES == GetRouteRepeatOpenFlag(routeId)) { /*(ROUTE_REPEATOPEN_SET_YES == GetRouteRepeatOpenFlag(routeId))޸ڣ20170209ա޸ԭֽ֧ӽ쳣ʱӦźؿ*/ - cFuncRetVal = OpenRouteSignalProc(routeId); - - if (CI_SUCCESS == cFuncRetVal) - { - /*ųɹȴ*/ - } - else - { - /*ʧܣöӦʼźŻ۳·ťЧ*/ - SetDetCutBtnState(startSignalId, SIGNAL_DETAIN_CUT_VALID_NO); - } + (void)OpenRouteSignalProc(routeId); } else { @@ -2711,8 +2595,6 @@ void RouteLeadLockManage(const UINT16 routeId) { /*ʧ*/ SetRouteStateManage(routeId, ROUTE_STATE_LEAD_LOCKERR); /*-->쳣*/ - /*ʧܣöӦʼźŻ۳·ťЧ*/ - SetDetCutBtnState(startSignalId, SIGNAL_DETAIN_CUT_VALID_NO); } } } @@ -2848,9 +2730,6 @@ void RouteLeadOpenManage(const UINT16 routeId) SetRouteLeadFaultOpenStartCyc(routeId, 0u); /*ʱʱ*/ SetRouteStateDeal(routeId, ROUTE_STATE_LEAD_LOCKERR); /*-->쳣*/ - - /*ֿʧܣöӦʼźŻ۳·ťЧ*/ - SetDetCutBtnState(startSignalId, SIGNAL_DETAIN_CUT_VALID_NO); } } else @@ -2860,9 +2739,6 @@ void RouteLeadOpenManage(const UINT16 routeId) SetRouteStateManage(routeId, ROUTE_STATE_LEAD_LOCKERR); /*-->쳣*/ /*źŻϹرձadd by yt 2022422*/ SetErrorData(EFUNC_CLD_OPEN_LEAD_ROUTE, CI_DEVICE_TYPE_SIGNAL, startSignalId, ETYPE_SIG_START_OPEN_STATE, SIGNAL_CLOSE, ESEND_LEVEL_ATS); - - /*ֿڼź쳣رգöӦʼźŻ۳·ťЧ*/ - SetDetCutBtnState(startSignalId, SIGNAL_DETAIN_CUT_VALID_NO); } } @@ -3462,7 +3338,6 @@ UINT8 LockRouteOverlapProc(const UINT16 routeId) SetOverlapXuanPaiStartCycNum(overlapIdBuf[ii], 0u); /*ճɹѡʼ*/ SetOverlapProSwtCheckStartFlag(overlapIdBuf[ii], PROSWITCH_CHECK_START_INVALID); /*ճɹ÷鿪ʼ־Ϊֹͣ*/ SetOverlapProSwtCheckResultFlag(overlapIdBuf[ii], PROSWITCH_CHECK_RESULT_DEFAULT); /*ճɹ־ΪĬֵ*/ - SetOverlaplockSucessStartCycNum(overlapIdBuf[ii], dwCurCycNum);/*ʼ*/ cKeepWorkFlag = CI_ERROR; /*ֹͣ*/ returnValue = CI_SUCCESS; } @@ -3645,8 +3520,6 @@ UINT8 OpenRouteSignalProc(const UINT16 routeId) UINT32 dwDelayOpenCycNum = 0U; /*ⱨʱ*/ UINT8 cRouteCanOpenFlag = CI_ERROR; /*·ɿű־*/ UINT32 dwRouteSigOpenStartCyc = 0U; /*·źſʼ*/ - UINT8 dctyReOpenFlag = ROUTE_DCTY_REOPEN_NO;/*ͬؿ־*/ - UINT32 dctyStartCount = 0u;/*ͬʼ*/ routeType = GetRouteType(routeId); /*ȡ·*/ routeLevel = GetRouteLevel(routeId); /*ȡ·ල*/ @@ -3731,8 +3604,6 @@ UINT8 OpenRouteSignalProc(const UINT16 routeId) /*ʱУ*/ } - dctyReOpenFlag = GetRouteDCTYNotSatisfySignalReOpenFlag(routeId);/*ȡͬؿ־*/ - /*ݿźŷֵ*/ if (CI_SUCCESS == returnValue) { /*ɹ*/ @@ -3756,20 +3627,7 @@ UINT8 OpenRouteSignalProc(const UINT16 routeId) /*忪δؿ־δŲؿʼʱ*/ SetRouteNeedOpenReopenFlag(routeId, ROUTE_NEEDOPEN_REOPEN_NO); - SetRouteNeedOpenNotTrueSigRepeatOpenStartCycNum(routeId, 0U); - - - if (ROUTE_DCTY_REOPEN == dctyReOpenFlag) - { - SetErrorData(EFUNC_CLD_OpenCommRouteSigProc,CI_DEVICE_TYPE_ROUTE, routeId,ETYPE_DCTY_REOPEN_TIMING_BREAK, dctyReOpenFlag, ESEND_LEVEL_ATS); - SetRouteDCTYNotSatisfySignalReOpenFlag(routeId, ROUTE_DCTY_REOPEN_NO); - SetRouteDCTYNotSatisfyStartCnt(routeId, 0U); - } - else - { - ; - } - + SetRouteNeedOpenNotTrueSigRepeatOpenStartCycNum(routeId, 0); returnValue = CI_SUCCESS; } else if (RETURN_OPEN_ERR_NEEDOPEN == returnValue) @@ -3788,7 +3646,7 @@ UINT8 OpenRouteSignalProc(const UINT16 routeId) else { SetRouteNeedOpenReopenFlag(routeId, ROUTE_NEEDOPEN_REOPEN_NO); - SetRouteNeedOpenNotTrueSigRepeatOpenStartCycNum(routeId, 0U); + SetRouteNeedOpenNotTrueSigRepeatOpenStartCycNum(routeId, 0); } } else if (ROUTE_STATE_FIRST_LOCKERR == routeState/*쳣*/) @@ -3806,12 +3664,12 @@ UINT8 OpenRouteSignalProc(const UINT16 routeId) if (CI_TIME_OUT == routeTimeState)/*ʱ*/ { SetRouteNeedOpenReopenFlag(routeId, ROUTE_NEEDOPEN_REOPEN_NO); - SetRouteNeedOpenNotTrueSigRepeatOpenStartCycNum(routeId, 0U); + SetRouteNeedOpenNotTrueSigRepeatOpenStartCycNum(routeId, 0); } else if (CI_TIME_NO == routeTimeState)/*δʱ*/ { SetRouteNeedOpenReopenFlag(routeId, ROUTE_NEEDOPEN_REOPEN_NO); - SetRouteNeedOpenNotTrueSigRepeatOpenStartCycNum(routeId, 0U); + SetRouteNeedOpenNotTrueSigRepeatOpenStartCycNum(routeId, 0); } else if (CI_TIME_IN == routeTimeState)/*ʱ*/ { @@ -3821,12 +3679,12 @@ UINT8 OpenRouteSignalProc(const UINT16 routeId) { /*Ƿ*/ SetRouteNeedOpenReopenFlag(routeId, ROUTE_NEEDOPEN_REOPEN_NO); - SetRouteNeedOpenNotTrueSigRepeatOpenStartCycNum(routeId, 0U); + SetRouteNeedOpenNotTrueSigRepeatOpenStartCycNum(routeId, 0); } /*Ϊڿ迪ŲʱԶؿУԣźԶؿ־ظ*/ SetRouteRepeatOpenFlag(routeId, ROUTE_REPEATOPEN_SET_NO); /*·źؿ־*/ SetRouteXianSuConfirmStt(routeId, ROUTE_XIANSU_CONFIRM_NO); - SetRouteOpenSigStartCycNum(routeId, 0U); /*źſʱ*/ + SetRouteOpenSigStartCycNum(routeId, 0); /*źſʱ*/ } else { @@ -3840,7 +3698,7 @@ UINT8 OpenRouteSignalProc(const UINT16 routeId) /*忪δؿ־δŲؿʼʱ*/ SetRouteNeedOpenReopenFlag(routeId, ROUTE_NEEDOPEN_REOPEN_NO); - SetRouteNeedOpenNotTrueSigRepeatOpenStartCycNum(routeId, 0U); + SetRouteNeedOpenNotTrueSigRepeatOpenStartCycNum(routeId, 0); } } else @@ -3855,79 +3713,10 @@ UINT8 OpenRouteSignalProc(const UINT16 routeId) /*忪δؿ־δŲؿʼʱ*/ SetRouteNeedOpenReopenFlag(routeId, ROUTE_NEEDOPEN_REOPEN_NO); - SetRouteNeedOpenNotTrueSigRepeatOpenStartCycNum(routeId, 0U); + SetRouteNeedOpenNotTrueSigRepeatOpenStartCycNum(routeId, 0); } - - if (ROUTE_DCTY_REOPEN == dctyReOpenFlag) - { - SetErrorData(EFUNC_CLD_OpenCommRouteSigProc, CI_DEVICE_TYPE_ROUTE, routeId, ETYPE_DCTY_REOPEN_TIMING_BREAK, dctyReOpenFlag, ESEND_LEVEL_ATS); - SetRouteDCTYNotSatisfySignalReOpenFlag(routeId, ROUTE_DCTY_REOPEN_NO); - SetRouteDCTYNotSatisfyStartCnt(routeId, 0U); - } - else - { - ; - } - returnValue = CI_ERROR; } - else if ((ROUTE_TYPE_DIAOCHE == routeType) && (RETURN_DCTY_NOT_SATISIFY == returnValue)/*ͬⲻ*/) - { - (void)DriveSignalClose(startSignalId);/*źŹر*/ - - if (ROUTE_STATE_FIRST_LOCK == routeState/**/) - { - SetRouteDCTYNotSatisfySignalReOpenFlag(routeId, ROUTE_DCTY_REOPEN); - SetRouteDCTYNotSatisfyStartCnt(routeId, curCycle); - } - else if (ROUTE_STATE_FIRST_LOCKERR == routeState/*쳣*/) - { - sysparaRepeatCount = 0u; - /*鳬ʱ*/ - dctyStartCount = GetRouteDCTYNotSatisfyStartCnt(routeId);/*ȡͬⲻʼ*/ - sysparaRepeatCount = GetSysParaDCTYWaitSigOpenCnt();/*ȡϵͳͬȴźؿʱʱ*/ - - if ((ROUTE_DCTY_REOPEN == dctyReOpenFlag) && (dctyStartCount > 0u)) - { - /*鳬ʱʱ־*/ - /* źʱ״̬*/ - routeTimeState = SystemOverTimeCheck(dctyStartCount, sysparaRepeatCount); - if (CI_TIME_OUT == routeTimeState)/*ʱ*/ - { - SetErrorData(EFUNC_CLD_OpenCommRouteSigProc, - CI_DEVICE_TYPE_ROUTE, routeId, - ETYPE_DCTY_REOPEN_TIMEOUT, dctyReOpenFlag, ESEND_LEVEL_ATS); - - SetRouteDCTYNotSatisfySignalReOpenFlag(routeId, ROUTE_DCTY_REOPEN_NO); - SetRouteDCTYNotSatisfyStartCnt(routeId, 0u); - } - else if (CI_TIME_NO == routeTimeState)/*δʱ*/ - { - SetRouteDCTYNotSatisfySignalReOpenFlag(routeId, ROUTE_DCTY_REOPEN_NO); - SetRouteDCTYNotSatisfyStartCnt(routeId, 0u); - } - else if (CI_TIME_IN == routeTimeState)/*ʱ*/ - { - /*ؿ*/ - } - else - { - /*Ƿ*/ - SetRouteDCTYNotSatisfySignalReOpenFlag(routeId, ROUTE_DCTY_REOPEN_NO); - SetRouteDCTYNotSatisfyStartCnt(routeId, 0u); - } - } - } - else - { - /**/ - } - /*Ϊڿ迪ŲʱԶؿУԣźԶؿ־ظ*/ - SetRouteRepeatOpenFlag(routeId, ROUTE_REPEATOPEN_SET_NO); /*·źؿ־*/ - SetRouteOpenSigStartCycNum(routeId, 0u); /*źſʱ*/ - - returnValue = CI_ERROR; - } else if (RELAY_STATE_WAITE == returnValue) { /*忪δؿ־δŲؿʼʱ*/ @@ -3948,18 +3737,7 @@ UINT8 OpenRouteSignalProc(const UINT16 routeId) /*忪δؿ־δŲؿʼʱ*/ SetRouteNeedOpenReopenFlag(routeId, ROUTE_NEEDOPEN_REOPEN_NO); - SetRouteNeedOpenNotTrueSigRepeatOpenStartCycNum(routeId, 0U); - - if (ROUTE_DCTY_REOPEN == dctyReOpenFlag) - { - SetErrorData(EFUNC_CLD_OpenCommRouteSigProc, CI_DEVICE_TYPE_ROUTE, routeId, ETYPE_DCTY_REOPEN_TIMING_BREAK, dctyReOpenFlag, ESEND_LEVEL_ATS); - SetRouteDCTYNotSatisfySignalReOpenFlag(routeId, ROUTE_DCTY_REOPEN_NO); - SetRouteDCTYNotSatisfyStartCnt(routeId, 0U); - } - else - { - ; - } + SetRouteNeedOpenNotTrueSigRepeatOpenStartCycNum(routeId, 0); if (CI_ROUTE_RECOVER_ERR == errType) { @@ -4193,8 +3971,7 @@ void RouteZongQuXiaoProc(const UINT16 routeId) (ROUTE_STATE_LEAD_OPEN == routeState) || (ROUTE_STATE_LEAD_XUANPAI == routeState)) { - /*·ȡϢ*/ - SetCiSendCmdBackInfoData(CI_BACK_LEAD_ROUTE_CANCEL, CI_DEVICE_TYPE_ROUTE, routeId, 0u, 0u); + /*·ȡϢ*/ } else if (ROUTE_STATE_IDLE == routeState) { @@ -4660,7 +4437,7 @@ UINT8 UnlockRouteOverlapProc(const UINT16 routeId) { ret = UnlockRouteOverlapLogicProcess(routeId, &unlockOverlapId, &wTrainId); /*·Overlap*/ - if ((CI_SUCCESS == ret) || (CI_OVERLAP_OCC_UNLOCK == ret)) + if (CI_SUCCESS == ret) { /*Խ*/ SetOverlapLockState(unlockOverlapId, PHYSICAL_SECTION_LOCK_NO, routeId); /*Overlapδ*/ return CI_SUCCESS; @@ -5542,11 +5319,9 @@ void SetOverlapLockState(const UINT16 overlapId, const UINT8 lockState, const UI /* * ͨ·߼ * ˵ const UINT16 routeId, ·ID -* const UINT8 chSendLevel ͵ȼ * ֵ void -* BY cgh 20250828 */ -void SetCommonRouteLogicManage(const UINT16 routeId,const UINT8 chSendLevel) +void SetCommonRouteLogicManage(const UINT16 routeId) { UINT8 localCiId = 0u; /*ID*/ UINT8 belongCiId = 0u; /*·ID*/ @@ -5568,12 +5343,7 @@ void SetCommonRouteLogicManage(const UINT16 routeId,const UINT8 chSendLevel) UINT8 firstLogicOccuState = 0u; UINT8 chLocalCiType = 0U;/**/ UINT8 chSignalReOpenFunc = 0U; - UINT8 chReadyEnterRouteTrainSum = 0U; - UINT16 wszReadyEtRouteTrainId[LOGIC_SECTION_RES_SUM_MAX] = { 0U }; - UINT8 chFunRet = CI_ERROR; - UINT8 chHitSoftWallSwitch = 0U;/*ײǽ*/ - - chHitSoftWallSwitch = GetHitSoftWallSwitch(); + /*·ź쳣رգյ·ִźؿ 0xaaִ 0x55ִ*/ chSignalReOpenFunc = GetCiFunctionSwitchConfig(FUNC_ROUTELOCK_OPEN_SIGNAL); @@ -5756,47 +5526,11 @@ void SetCommonRouteLogicManage(const UINT16 routeId,const UINT8 chSendLevel) } else if (ROUTE_STATE_NEAR_LOCK == routeState) { - if (FUNC_HITSOFTWALL_OFF == chHitSoftWallSwitch) - { - chFunRet = GetRouteInOutFstLgcTrainInfo(routeId, &chReadyEnterRouteTrainSum, wszReadyEtRouteTrainId); - if (CI_SUCCESS == chFunRet) - { - if (0U == chReadyEnterRouteTrainSum) - { - /*гȫʻ·*/ - /*ӽٴΰ··״̬Ϊ·ATS·ʱֱԴͬ㿪ź*/ - /*ɾӦ½·*/ - DeleteSetRouteErrorData(); + /*ӽٴΰ··״̬Ϊ·ATS·ʱֱԴͬ㿪ź*/ + /*ɾӦ½·*/ + DeleteSetRouteErrorData(); - SetRouteStateManage(routeId, ROUTE_STATE_FIRST_LOCK); /*-->ý·*/ - } - else - { - /*гδȫʻ·ı·״̬,;Ƿ񱨾*/ - if (ESEND_LEVEL_ATS == chSendLevel) - { - /*Ҫ*/ - } - else - { - /*ɾӦ½·*/ - DeleteSetRouteErrorData(); - } - } - } - else - { - ; /**/ - } - } - else - { - /*ӽٴΰ··״̬Ϊ·ATS·ʱֱԴͬ㿪ź*/ - /*ɾӦ½·*/ - DeleteSetRouteErrorData(); - - SetRouteStateManage(routeId, ROUTE_STATE_FIRST_LOCK); /*-->ý·*/ - } + SetRouteStateManage(routeId, ROUTE_STATE_FIRST_LOCK); /*-->ý·*/ } else { @@ -6644,15 +6378,9 @@ void OpenLeadSignalLogicManage(const UINT16 signalId) UINT8 chFunRet = CI_ERROR; UINT8 signalBrightFlag = 0u; /*ά޵*/ UINT8 cRcWorkMode = 0U; /*ϵͳģʽ */ - UINT8 chSignalCurColor = 0U;/*źŻɫ*/ - UINT32 dwFaultOpenStartCyc = 0U;/*Ͽʼ*/ - UINT32 dwLeadFaultOpenCyc = 0U; /*·Ͽų*/ - UINT16 wInFirstPhySecId = 0U; /*ڷһID*/ - UINT32 dwCurCycleNum = 0U;/*ǰں*/ /* ȡϵͳģʽ */ cRcWorkMode = GetLocalRcWorkMode(); - dwCurCycleNum = Get2oo2CurCycleNum(); if ((0u == signalId) || (signalId >= SIGNAL_SUM_MAX)) { @@ -6665,8 +6393,7 @@ void OpenLeadSignalLogicManage(const UINT16 signalId) if (CI_SUCCESS == chKeepWork) { - wInFirstPhySecId = GetSignalInFirstLockedPhySecId(signalId); - routeId = GetPhySecRLockBelongRouteId(wInFirstPhySecId); + routeId = GetPhySecRLockBelongRouteId(GetSignalInFirstLockedPhySecId(signalId)); signalBrightFlag = GetSignalMaintainState(signalId); chRouteLevel = GetRouteLevel(routeId); /* ʽCBTCCIģʽȫվƱ־Ч*/ @@ -6721,12 +6448,8 @@ void OpenLeadSignalLogicManage(const UINT16 signalId) if (CI_SUCCESS == chKeepWork) { routeState = GetRouteState(routeId); - chSignalCurColor = GetSignalCurColor(signalId); - chSignalOpenCloseState = GetSignalOpenCloseState(chSignalCurColor); - dwFaultOpenStartCyc = GetRouteLeadFaultOpenStartCyc(routeId); - dwLeadFaultOpenCyc = GetSystemParaLeadFaultOpenCyc(); - chTimeState = SystemOverTimeCheck(dwFaultOpenStartCyc,dwLeadFaultOpenCyc); - + chSignalOpenCloseState = GetSignalOpenCloseState(GetSignalCurColor(signalId)); + chTimeState = SystemOverTimeCheck(GetRouteLeadFaultOpenStartCyc(routeId), GetSystemParaLeadFaultOpenCyc()); if ((ROUTE_STATE_LEAD_LOCKERR == routeState) && (SIGNAL_CLOSE == chSignalOpenCloseState)) { @@ -6742,21 +6465,20 @@ void OpenLeadSignalLogicManage(const UINT16 signalId) /*źŰť*/ /*ÿʱ*/ - SetRouteLeadFaultOpenStartCyc(routeId, dwCurCycleNum); + SetRouteLeadFaultOpenStartCyc(routeId, Get2oo2CurCycleNum()); } else if ((ROUTE_STATE_FIRST_LOCKERR == routeState) || (ROUTE_STATE_YUXIAN_LOCK == routeState) || (ROUTE_STATE_NEAR_LOCK == routeState) || (ROUTE_STATE_NEAR_LOCKERR == routeState)) { - /*ת·-Ҫźſʼڣ鳬ʱ*/ - SetRouteOpenSigStartCycNum(routeId, dwCurCycleNum); + /*ת·*/ + /*·쳣 Ԥա ӽ ӽ쳣*/ - SetRouteToLeadFlag(routeId, ROUTE_TO_LEAD_FLAG_YES); /*·ת־Чʱ·*/ - chFunRet = OpenLeadRouteLogicProcess(routeId); + chFunRet = LockLeadRouteLogicProcess(routeId); if (CI_SUCCESS == chFunRet) { /*ճɹ*/ @@ -6768,12 +6490,8 @@ void OpenLeadSignalLogicManage(const UINT16 signalId) /*ʧ*/ /*ԭ·״̬*/ - - /*ʧܣöӦʼźŻ۳·ťЧ*/ - SetDetCutBtnState(signalId, SIGNAL_DETAIN_CUT_VALID_NO); - } - SetRouteToLeadFlag(routeId, ROUTE_TO_LEAD_FLAG_NO); /*·ɺ·ת־ΪЧ*/ + } } else { @@ -7709,7 +7427,8 @@ void SetRouteStateManage(const UINT16 routeId, UINT8 routeState) */ void UpdateZhaoChaStateManage(const UINT16 routeId, UINT8 routeState) { - UINT16 wSelfRealyId = 0U;/*ղ̵ID*/ + UINT16 wSelfRealyId = 0U;/*ǰģʽղ̵ID*/ + UINT16 wOtherRealyId = 0U;/*һģʽղ̵ID*/ UINT8 relauDrvState = 0U; UINT16 realyIdInterface = 0u; UINT8 relauDrvStateInterface = 0u; @@ -7723,10 +7442,27 @@ void UpdateZhaoChaStateManage(const UINT16 routeId, UINT8 routeState) UINT16 endSignalId = 0u; UINT8 funcSwitchSupportRelayInterface = 0u; UINT8 confirmRelayInterfaceFlag = 0u; + UINT8 chRouteLevel = 0U; - wSelfRealyId = GetRouteThisZhaoChaRelayId(routeId); /*ղ̵ID*/ + /*·ලȷ*/ + chRouteLevel = GetRouteLevel(routeId); -/*ȡ̵ӿڱղID*/ + if (ROUTE_LEVEL_BLOC == chRouteLevel) + { + 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治ᴦ*/ + } + + /*ȡ̵ӿڱղID*/ realyIdInterface = GetRouteRelayBenDuanZcIdOnRelay(routeId); relauDrvStateInterface = GetRelayDriveState(realyIdInterface); localCi = GetSystemParaLocalCiId(); /*ȡID*/ @@ -7738,30 +7474,56 @@ void UpdateZhaoChaStateManage(const UINT16 routeId, UINT8 routeState) routeLockCycNum = GetRouteLockStartCycNum(routeId); timeOutCycCount = GetSystemParaSignalCloseCyc(); - if (0U < wSelfRealyId) + /*ӿڱ˼̵*/ + if ((ROUTE_STATE_IDLE == routeState) || + (ROUTE_STATE_FIRST_XUANPAI == routeState) || + (ROUTE_STATE_XUANPAI == routeState) || + (ROUTE_STATE_LEAD_FIRST_XUANPAI == routeState) || + (ROUTE_STATE_LEAD_XUANPAI == routeState)) { - /*ӿڱ˼̵*/ - if ((ROUTE_STATE_IDLE == routeState) || - (ROUTE_STATE_FIRST_XUANPAI == routeState) || - (ROUTE_STATE_XUANPAI == routeState) || - (ROUTE_STATE_LEAD_FIRST_XUANPAI == routeState) || - (ROUTE_STATE_LEAD_XUANPAI == routeState)) + /*· ģʽղ鶼*/ + + if (0U < wSelfRealyId) { relauDrvState = GetRelayDriveState(wSelfRealyId); if (RELAY_DRIVE_STATE_NULL == relauDrvState) { (void)SetRelayDriveState(wSelfRealyId, RELAY_STATE_UP); + SetRelayDriveStartCyc(wSelfRealyId); } } - else + if (0U < wOtherRealyId) + { + relauDrvState = GetRelayDriveState(wOtherRealyId); + if (RELAY_DRIVE_STATE_NULL == relauDrvState) + { + (void)SetRelayDriveState(wOtherRealyId, RELAY_STATE_UP); + SetRelayDriveStartCyc(wOtherRealyId); + } + } + + } + else + { + /*· ģʽӦղ¡һģʽղ*/ + if (0U < wOtherRealyId) + { + relauDrvState = GetRelayDriveState(wOtherRealyId); + if (RELAY_DRIVE_STATE_NULL == relauDrvState) + { + (void)SetRelayDriveState(wOtherRealyId, RELAY_STATE_UP); + SetRelayDriveStartCyc(wOtherRealyId); + } + } + if (0U < wSelfRealyId) { (void)SetRelayDriveState(wSelfRealyId, RELAY_STATE_DOWN); + SetRelayDriveStartCyc(wSelfRealyId); realyIdState = GetRelayCollState(wSelfRealyId); - if (RELAY_STATE_DOWN != realyIdState) { - overTimeCheck = SystemOverTimeCheck(routeLockCycNum, timeOutCycCount); - if (CI_TIME_OUT == overTimeCheck) + overTimeCheck = CheckRelayDriveOutTime(wSelfRealyId, timeOutCycCount); + if (CI_ERROR == overTimeCheck) { SetPlatOverFlag(); /*ƽ̨崻*/ SetErrorData(EFUNC_PLAT_OVER, CI_DEVICE_TYPE_RELAY, wSelfRealyId, ETYPE_ZHAOCHA_ROUTE_OVERTIME, RELAY_STATE_UP, ESEND_LEVEL_ZERO);/*¼崻*/ @@ -8376,18 +8138,20 @@ void SetThroughRouteManage(const UINT16 signalId) UINT8 returnRouteState = 0u; /*۷·״̬*/ UINT8 returnRouteIdBelongCiId = 0u;/*۷·ID*/ UINT8 throughRouteIdBelongCiId = 0u;/*ͨ·ID*/ + UINT8 returnRouteDirection = 0u; UINT16 reRouteNormalLockPhy = 0u; UINT8 phyMergeState = 0u; UINT16 nextRouteLockPhy = 0u; UINT16 lockPhyBelongRoute = 0u; + UINT8 nextRouteDirection = 0u; + UINT8 haveDirChangeAfterRoute = 0u; + UINT8 haveDirChangeInRoute = 0u; UINT8 saveReRouteDir = 0u; UINT8 throughRouteDir = 0u; UINT16 wLastLgcSecId = 0U; UINT16 wTrainId = 0u; UINT8 chTrainSum = 0u; UINT16 wLogicSecId = 0u; - UINT16 wEndSignalId = 0U;/*۷·նźŻ*/ - UINT16 wStartSignalId = 0U;/*źؿ·ʼźŻ*/ LogicTrainResStruct* pstLgcResInfo = NULL; LogicTrainResStruct stTmpResInfo[LOGIC_SECTION_RES_SUM_MAX] = { 0U }; @@ -8410,8 +8174,6 @@ void SetThroughRouteManage(const UINT16 signalId) returnRouteId = GetPhySecRLockBelongRouteId(signalOutSecId); nextRouteId = GetPhySecRLockBelongRouteId(signalInSecId); throughRouteId = GetRouteThroughRouteId(returnRouteId); - wEndSignalId = GetRouteEndSignalId(returnRouteId);/*ȡնźŻ*/ - wStartSignalId = GetRouteStartSignalId(nextRouteId);/*źؿĽ·ʼźŻ*/ returnRouteIdBelongCiId = GetRouteBelongCiId(returnRouteId);/*ȡ۷·ID*/ throughRouteIdBelongCiId = GetRouteBelongCiId(throughRouteId);/*ȡͨ·ID*/ @@ -8436,11 +8198,35 @@ void SetThroughRouteManage(const UINT16 signalId) { /*ȡս·*/ lockPhyBelongRoute = GetPhySecRLockBelongRouteId(signalInSecId); - saveReRouteDir = GetRouteDirection(returnRouteId);/*·ʵʷ*/ + nextRouteDirection = GetRouteDirection(lockPhyBelongRoute); + returnRouteDirection = GetRouteDirection(returnRouteId); throughRouteDir = GetRouteDirection(throughRouteId); /*۷·Ӧͨ·*/ + haveDirChangeAfterRoute = GetRouteHaveDirChangePointAfter(returnRouteId); + haveDirChangeInRoute = GetRouteHaveDirChangePointIn(returnRouteId); + + saveReRouteDir = returnRouteDirection; /*·ʵʷ*/ + + /*·󷽻·ڴڷ仯*/ + if ((ROUTE_HAVE_DIR_CHANGE_POINT == haveDirChangeAfterRoute) || + (ROUTE_HAVE_DIR_CHANGE_POINT == haveDirChangeInRoute)) + { + if (CI_SYSTEM_DIRECTION_UP == returnRouteDirection) + { + returnRouteDirection = CI_SYSTEM_DIRECTION_DOWN; + } + else if (CI_SYSTEM_DIRECTION_DOWN == returnRouteDirection) + { + returnRouteDirection = CI_SYSTEM_DIRECTION_UP; + } + else + { + /**/ + } + } + /*ͬ*/ - if (wEndSignalId == wStartSignalId) + if (nextRouteDirection == returnRouteDirection) { if ((localCiId == returnRouteIdBelongCiId) && (localCiId == throughRouteIdBelongCiId)) {/*۷·ͨ·ڱ۷·кͨ·Զ*/ @@ -8459,12 +8245,16 @@ void SetThroughRouteManage(const UINT16 signalId) SetLogSecLockState(wLastLgcSecId, LOG_SECTION_LOCK_NO, returnRouteId, saveReRouteDir); + + SetPhySecLockState(signalOutSecId, PHYSICAL_SECTION_LOCK_NO, returnRouteId, saveReRouteDir); SetRouteStateManage(returnRouteId, ROUTE_STATE_IDLE); /*ڵǰ·*/ SetLogSecLockState(wLastLgcSecId, LOG_SECTION_LOCK_NORMAL, throughRouteId, throughRouteDir); + + if (NULL != pstLgcResInfo) { CpyLgcSecResTrain(wLastLgcSecId, chTrainSum, stTmpResInfo); @@ -9268,7 +9058,7 @@ void AllAutoReturnManage(const UINT16 routeId) /*·ѡ*/ RouteFirstXuanPaiManage(routeId); #else - SetCommonRouteLogicManage(routeId, ESEND_LEVEL_ATS); + SetCommonRouteLogicManage(routeId); #endif } } @@ -11351,9 +11141,6 @@ void JumpLockManage(void) { /*߼Ծڼͨжϴ*/ CheckLogSecJumpLockManage(); - - /*Ծ봦*/ - TrainJumpBackApplyProc(); } else if (RC_WORK_MODE_CI == chRCMode) { @@ -12050,7 +11837,7 @@ void SetCiPscPlConfirmFlag(UINT8 setFlag, const UINT16 pscId) if (TRANSMIT_STATE_GOOD != transmitState) { /*öӦPSCϵͳӦPSD·״̬*/ - SetPsdConfirmFlag(pscToCiDataStru[pscSystemId].psdDataStr[j].psdId, setFlag); + SetPsdPscConfirmFlag(pscToCiDataStru[pscSystemId].psdDataStr[j].psdId, setFlag); } else { @@ -12082,11 +11869,11 @@ void SetCiPscPlConfirmFlag(UINT8 setFlag, const UINT16 pscId) { localCiPsdNum++; /*ȡATSȷ·־*/ - psdAtsConfirmFlag = GetPsdPlFlag(pscToCiDataStru[pscSystemId].psdDataStr[j].psdId); + psdAtsConfirmFlag = GetPsdPscPlFlag(pscToCiDataStru[pscSystemId].psdDataStr[j].psdId); if (CI_PSC_PL_CONFIRM_YES == psdAtsConfirmFlag) { /*ȡȷϱ־*/ - SetPsdConfirmFlag(pscToCiDataStru[pscSystemId].psdDataStr[j].psdId, CI_PSC_PL_CONFIRM_NO); + SetPsdPscConfirmFlag(pscToCiDataStru[pscSystemId].psdDataStr[j].psdId, CI_PSC_PL_CONFIRM_NO); } else { @@ -12906,7 +12693,7 @@ void RouteApplyLogicManage(const UINT16 routeId, const UINT16 trainId) if ((ROUTE_STATE_YUXIAN_OPEN != routeCurState) && (ROUTE_STATE_NEAR_OPEN != routeCurState)) { /** ͨ·߼*/ - SetCommonRouteLogicManage(routeId, ESEND_LEVEL_ZERO); + SetCommonRouteLogicManage(routeId); } else { @@ -13009,9 +12796,6 @@ void RoutePartApplyLogicManage(const UINT8 cLogSecSeqDir, const UINT16 wTrainId, UINT16 wUsableLogicRouteId = 0U; /*õС߼·ID*/ UINT8 cCiType = 0U; /**/ UINT8 cCommStateWithTrain = CI_ERROR; /*복ͨ״̬*/ - UINT8 cFunRet = CI_ERROR; - UINT8 cFunctionId = EFUNC_PART_ROUTE_CMD_PROC; - UINT8 cSendLevel = ESEND_LEVEL_ATS; cLocalCiId = GetSystemParaLocalCiId(); @@ -13031,20 +12815,12 @@ void RoutePartApplyLogicManage(const UINT8 cLogSecSeqDir, const UINT16 wTrainId, /*һ߼Ƿ*/ keepWork = LogSecSeqIsContinuousCheck(cLogSecSeqDir, cLogSecSum, pLogSecIdBuff, szQueryDir); cCheckStep++; - if (CI_ERROR == keepWork) - { - SetErrorData(cFunctionId, CI_SYSTEM_TYPE_VOBC, (wTrainId & 0x00FFU), ETYPE_LOGSEC_CONTINUOUS, 0U, cSendLevel); - } - else - { - /**/ - } } if (CI_SUCCESS == keepWork) { /*ڶгԴǷȫзǷATS·зƥ*/ - keepWork = TrainResAndDirCheck(wTrainId, szQueryDir[0U], cLogSecSum, pLogSecIdBuff, &cHalfRouteSwitchMoveFlag, &wVBTCOccLogSecSum, wVBTCOccLogSecID, cFunctionId, cSendLevel); + keepWork = TrainResAndDirCheck(wTrainId, szQueryDir[0U], cLogSecSum, pLogSecIdBuff, &cHalfRouteSwitchMoveFlag, &wVBTCOccLogSecSum, wVBTCOccLogSecID); cCheckStep++; } @@ -13136,16 +12912,11 @@ void RoutePartApplyLogicManage(const UINT8 cLogSecSeqDir, const UINT16 wTrainId, /*߼ǷԽ*/ keepWork &= SeqNumAndIncLogSecNumCheck(cEndSignalSum, cSplitLogSecSumBuff); keepWork &= SeqNumAndIncLogSecNumCheck(cLogicRouteNum, szLrIncLogSecNum); - + if (CI_ERROR == keepWork) { - SetErrorData(cFunctionId, CI_SYSTEM_TYPE_VOBC, (wTrainId & 0x00FFU), ETYPE_PART_ROUTE_MATCH_ROUTE, 0U, cSendLevel); break; /*ʧܣֹͣ*/ } - else - { - /**/ - } } cCheckStep++; @@ -13177,7 +12948,7 @@ void RoutePartApplyLogicManage(const UINT8 cLogSecSeqDir, const UINT16 wTrainId, szLrStartSignalId[cLogicRouteNum] = 0U; /*׸е߼·ʼźŻĬΪ0*/ cLogicRouteNum++; - keepWork &= LogSecIsSwitchAndStopAreaCheck(szLrIncLogSecId[cLogicRouteNum - 1U][szLrIncLogSecNum[cLogicRouteNum - 1U] - 1U]); /*һ߼εͣ*/ + keepWork = LogSecIsSwitchAndStopAreaCheck(szLrIncLogSecId[cLogicRouteNum - 1U][szLrIncLogSecNum[cLogicRouteNum - 1U] - 1U]); /*һ߼εͣ*/ keepWork &= SeqNumAndIncLogSecNumCheck(cLogicRouteNum, szLrIncLogSecNum); /*У߼·߼Ƿ*/ /*ƥ·дڵ߼·Ϣ*/ @@ -13199,15 +12970,6 @@ void RoutePartApplyLogicManage(const UINT8 cLogSecSeqDir, const UINT16 wTrainId, cSplitLogSecSumBuff[k + 1U] = 0U; } } - - if (CI_ERROR == keepWork) - { - SetErrorData(cFunctionId, CI_SYSTEM_TYPE_VOBC, (wTrainId & 0x00FFU), ETYPE_PART_ROUTE_MATCH_ROUTE, 0U, cSendLevel); - } - else - { - /**/ - } } cCheckStep++; @@ -13217,15 +12979,6 @@ void RoutePartApplyLogicManage(const UINT8 cLogSecSeqDir, const UINT16 wTrainId, { /*岽ͨųûǰ˿*/ keepWork = CtTrainHeadSuspCheck(wTrainId, cLogSecSeqDir, pLogSecIdBuff[0U]); - - if (CI_ERROR == keepWork) - { - SetErrorData(cFunctionId, CI_SYSTEM_TYPE_VOBC, (wTrainId & 0x00FFU), ETYPE_PART_ROUTE_SCREEN, 0U, cSendLevel); - } - else - { - /**/ - } cCheckStep++; } @@ -13287,23 +13040,15 @@ void RoutePartApplyLogicManage(const UINT8 cLogSecSeqDir, const UINT16 wTrainId, } else { - debug_infor_printf((const)"HalfRoutePhySecUseLogicProcess Err!\n"); + SetRouteStateManage(wMatchedRouteIdBuff[i], ROUTE_STATE_IDLE); /*ʧܣý·*/ } } - else if ((cLocalCiId != cRouteBelongCiId) && (0U != cLocalCiId)) + else if ((cLocalCiId != cRouteBelongCiId) && (0U != cLocalCiId) && (CI_TYPE_CLD != cCiType)) { - cFunRet = RouteCldAttrCheck(wMatchedRouteIdBuff[i]); /*·Լ*/ - if (CI_SUCCESS == cFunRet) - { - /*dzλΪγ/ν·ӵ͸̬·ṹ*/ - cFirstLogSecDir = ConvertLogicDirToRun(szQueryDir[tempIndex]); - AddCiSendToCiDrCmdHalfInfo(wTrainId, (UINT8)wVBTCOccLogSecSum, wVBTCOccLogSecID, cHalfRouteSwitchMoveFlag, 0U); - AddCiSendToCiDrCmdLogSecInfo(CICI_DR_CMD_HALF, cFirstLogSecDir, cSplitLogSecSumBuff[i], wSplitLogSecIdBuff[i], cRouteBelongCiId); - } - else - { - /**/ - } + /*ӵ͸dz̬·ṹ*/ + cFirstLogSecDir = ConvertLogicDirToRun(szQueryDir[tempIndex]); + AddCiSendToCiDrCmdHalfInfo(wTrainId, (UINT8)wVBTCOccLogSecSum, wVBTCOccLogSecID, cHalfRouteSwitchMoveFlag, 0U); + AddCiSendToCiDrCmdLogSecInfo(CICI_DR_CMD_HALF, cFirstLogSecDir, cSplitLogSecSumBuff[i], wSplitLogSecIdBuff[i], cRouteBelongCiId); } else { @@ -13331,9 +13076,9 @@ void RoutePartApplyLogicManage(const UINT8 cLogSecSeqDir, const UINT16 wTrainId, wDrSubIdBuff[cDrSubSum] = wMatchedRouteIdBuff[i]; cDrSubSum++; } - else if ((cLocalCiId != cRouteBelongCiId) && (0U != cLocalCiId) && (CI_TYPE_CLD != cCiType)) + else if ((cLocalCiId != cRouteBelongCiId) && (0U != cLocalCiId)) { - /*ԷdzΣӵ͸̬·ṹ*/ + /*ӵ͸̬·ṹ*/ cFirstLogSecDir = ConvertLogicDirToRun(szQueryDir[tempIndex]); AddCiSendToCiDrCmdHalfInfo(wTrainId, (UINT8)wVBTCOccLogSecSum, wVBTCOccLogSecID, cHalfRouteSwitchMoveFlag, 0U); AddCiSendToCiDrCmdLogSecInfo(CICI_DR_CMD_FULL, cFirstLogSecDir, cSplitLogSecSumBuff[i], wSplitLogSecIdBuff[i], cRouteBelongCiId); @@ -13418,7 +13163,6 @@ void RoutePartApplyLogicManage(const UINT8 cLogSecSeqDir, const UINT16 wTrainId, } else { - SetErrorData(cFunctionId, CI_SYSTEM_TYPE_VOBC, (wTrainId & 0x00FFU), ETYPE_PART_ROUTE_REPEAT, 0U, cSendLevel); debug_infor_printf((const)"Dynamic Logic Route Set Is Error: LogicRoute Repeat Set!\n"); /*߼·ظͣ*/ } } @@ -13442,7 +13186,6 @@ void RoutePartApplyLogicManage(const UINT8 cLogSecSeqDir, const UINT16 wTrainId, } else { - SetErrorData(cFunctionId, CI_SYSTEM_TYPE_VOBC, (wTrainId & 0x00FFU), ETYPE_LOGSEC_CBTC_PROPERTY, 0U, cSendLevel); debug_infor_printf((const)"Dynamic Logic Route Set Is Error: LogSec Is Not CBTC Property!\n"); /*߼·ʧܣ߼ηCBTC*/ } } @@ -14227,7 +13970,7 @@ UINT8 CheckPhysecFlockReasonSpksId(const UINT16 phySectionId, UINT16* spksId, UI * *޸ģmpt 202239 ӱ˹߼ */ -UINT8 LaborUnlockOverlapProc(const UINT16 overlapId) +UINT8 LaborUnlockOverlapProc(const UINT8 overlapId) { /*ʼ*/ UINT8 overlapBelongCi = 0u; @@ -14953,7 +14696,7 @@ void SetRoutePartApplyFromCi(ToCiDrCmdDataStruct* pCiRecvCiDrCmdStru) UINT16 wUsableLogicRouteId = 0U; /*õС߼·ID*/ UINT8 cCheckStep = 0U; /*¼еλãڴ*/ UINT8 szQueryDir[UINT8_MAX] = { 0U }; /*߼ζӦIJѯ߼*/ - UINT8 cLocalCiId = 0U; /*ID*/ + UINT8 cLocalCiId = 0U; /*ID*/ /*μ*/ if (NULL == pCiRecvCiDrCmdStru) @@ -15718,8 +15461,6 @@ void RoutePartApplyLogicManageCLD(const UINT8 cLogSecSeqDir, const UINT16 wTrain UINT8 cRouteBelongCiId = 0U; UINT16 wMatchedRouteId = 0U; /*ƥĽ·*/ UINT8 cCheckStep = 0U; /*¼еλãڴ*/ - UINT8 cFunctionId = EFUNC_PART_ROUTE_CMD_PROC_CLD; - UINT8 cSendLevel = ESEND_LEVEL_ATS; /*μ*/ wTrainIndex = GetTrainBufIndex(wTrainId); @@ -15736,7 +15477,7 @@ void RoutePartApplyLogicManageCLD(const UINT8 cLogSecSeqDir, const UINT16 wTrain if (CI_SUCCESS == keepWork) { /*һ߼мгλã߼Ϊ߻ѹΨһδաгȫλ߻ѹ*/ - keepWork = LogSecSeqAndTrainPosCheckCLD(cLogSecSum, pLogSecIdBuff, wTrainId, cFunctionId, cSendLevel); + keepWork = LogSecSeqAndTrainPosCheckCLD(cLogSecSum, pLogSecIdBuff, wTrainId); cCheckStep++; } else @@ -15748,15 +15489,6 @@ void RoutePartApplyLogicManageCLD(const UINT8 cLogSecSeqDir, const UINT16 wTrain { /*ڶ߼Уƥг·*/ keepWork = LogSecSeqAndRouteMatchCheckCLD(cLogSecSeqDir, pLogSecIdBuff[0], &wMatchedRouteId); - - if (CI_SUCCESS != keepWork) - { - SetErrorData(cFunctionId, CI_SYSTEM_TYPE_VOBC, (wTrainId & 0x00FFU), ETYPE_PART_ROUTE_MATCH_ROUTE, 0U, cSendLevel); - } - else - { - /**/ - } cCheckStep++; } else @@ -15768,15 +15500,6 @@ void RoutePartApplyLogicManageCLD(const UINT8 cLogSecSeqDir, const UINT16 wTrain { /*ͨųûǰ˼˿*/ keepWork = CtTrainSuspCheck(wTrainId); - - if (CI_SUCCESS != keepWork) - { - SetErrorData(cFunctionId, CI_SYSTEM_TYPE_VOBC, (wTrainId & 0x00FFU), ETYPE_PART_ROUTE_SCREEN, 0U, cSendLevel); - } - else - { - /**/ - } cCheckStep++; } else @@ -15874,10 +15597,6 @@ void RouteOtherCiSwitchManage(void) UINT8 chTransmitStat = 0U;/*ͨ״̬*/ UINT8 chRouteApplySwitchCheckFlag = 0U;/*·־*/ UINT8 chOthCiRouteExistLocalCiSw = 0U;/*·Ƿڱ*/ - UINT16 errorCodeCurSum = 0U; - ErrorDataStruct* errorCodeStu = NULL; /**/ - UINT16 devId = 0U; - UINT8 devState = 0U; wRouteCurSum = GetRouteCurSum(); /*ȡ·*/ chLocalCiId = GetSystemParaLocalCiId(); /*ȡID*/ @@ -15916,7 +15635,7 @@ void RouteOtherCiSwitchManage(void) if (CI_SUCCESS == chResult) { SetRouteApplySwitchCheckFlag(wRouteId, ROUTE_APPLY_SWITCH_CHECK_YES); - chResult = RouteRelAllSwitchPosCheck(wRouteId, &devId, &devState); + chResult = RouteRelAllSwitchPosCheck(wRouteId); if (CI_SUCCESS == chResult) { ; /*λȷسɹ*/ @@ -15932,7 +15651,6 @@ void RouteOtherCiSwitchManage(void) { /*·Ҫڹ涨λã*/ SetRouteApplySwitchCheckFlag(wRouteId, ROUTE_APPLY_SWITCH_CHECK_NO); - SetRouteApplySwitchCheckErrorData(wRouteId, devId, CI_DEVICE_TYPE_SWITCH, devState, ETYPE_SWT_POSTION_STATE); } } @@ -15940,7 +15658,6 @@ void RouteOtherCiSwitchManage(void) else { SetRouteApplySwitchCheckFlag(wRouteId, ROUTE_APPLY_SWITCH_CHECK_NO); - SetRouteApplySwitchCheckErrorData(wRouteId, wRouteId, CI_DEVICE_TYPE_ROUTE, 0U, ETYPE_ROUTE_APPLY_SWITCH_MOVE);/*·ٷһ*/ } } else @@ -15950,10 +15667,6 @@ void RouteOtherCiSwitchManage(void) } else { - /*ݴ*/ - errorCodeCurSum = GetErrorDataCurSum(); /*ȡ*/ - errorCodeStu = GetErrorData(errorCodeCurSum - 1U); /*¹ϼ¼*/ - SetRouteApplySwitchCheckErrorData(wRouteId, errorCodeStu->DeviceId, errorCodeStu->DeviceType, errorCodeStu->DeviceState, errorCodeStu->DeviceStateType); SetRouteApplySwitchCheckFlag(wRouteId, ROUTE_APPLY_SWITCH_CHECK_NO); } } @@ -16218,319 +15931,4 @@ void LeadRouteFirstXuanPaiManage(const UINT16 routeId) /*ý·*/ SetRouteStateManage(routeId, ROUTE_STATE_IDLE); } -} - -/* -* OC-P·״̬ȷϱ־ -* ˵ UINT8 setFlag,ñ־ -* UINT16 pscId PSC豸ID -* ֵ -*/ -void SetOcPscPlConfirmFlag(UINT8 setFlag, const UINT16 ocPId) -{ - /*ʼ*/ - UINT8 i = 0u; - UINT8 j = 0u; - UINT8 kk = 0u; - UINT8 localCiId = 0u; - UINT8 deviceSum = 0u;/*ͨ豸*/ - UINT8* pDeviceIdBuf = NULL;/*ͨ豸ID*/ - UINT16 saveOcPId = 0u; - UINT8 lowByteOcPId = 0u; - UINT8 ocPSystemId = 0u; - UINT8 transmitReval = CI_ERROR; - UINT8 transmitState = 0u; - UINT8 ocPscConfirmFlag = 0u; - UINT8 findOcFlag = 0u; - - /*Աֵ*/ - saveOcPId = ocPId; - lowByteOcPId = (UINT8)(saveOcPId & 0x00FFU); - - deviceSum = GetCiTransmitSpecifySysDevSum(CI_SYSTEM_TYPE_OC); /*ȡͨOC豸*/ - pDeviceIdBuf = GetCiTransmitSpecifySysDevBuf(CI_SYSTEM_TYPE_OC); /*ȡͨOC豸ID*/ - localCiId = GetSystemParaLocalCiId();/*ȡCI ID*/ - - for (i = 0u; i < deviceSum; i++) - { - findOcFlag = 0u; - /*ƥOC-P ID*/ - if (lowByteOcPId == pDeviceIdBuf[i]) - { - ocPSystemId = pDeviceIdBuf[i]; - /*OC-PϵͳIDϷ*/ - if (OC_SUM_MAX > ocPSystemId) - { - /*CIͨ״̬*/ - transmitReval = UpdateCiTransmitState(localCiId, CI_SYSTEM_TYPE_OC, ocPSystemId); - if (CI_SUCCESS == transmitReval) - { - transmitState = GetCiTransmitState(CI_SYSTEM_TYPE_OC, ocPSystemId); - } - - /*ҵIDӦ*/ - for (kk = 0u; kk < m_OcToCiOrginDataNum; kk++) - { - /*ҵOC idӦ±kk*/ - if (m_OcToCiOrginDataArr[kk].OcId == ocPSystemId) - { - findOcFlag = 1u; - break; - } - } - - if (1u == findOcFlag) - { - /*ҵˣ·*/ - if (OC_PSC_PL_CONFIRM_YES == setFlag) - { - for (j = 0u; j < m_OcToCiOrginDataArr[kk].OCPsdNum; j++) - { - /*ͨ쳣*/ - if (TRANSMIT_STATE_GOOD != transmitState) - { - /*OC-PϵͳӦPSD·״̬*/ - SetPsdConfirmFlag(m_OcToCiOrginDataArr[kk].PsdInfo[j].wPsdId, setFlag); - } - else - { - /**/ - } - } - } - else - { - for (j = 0u; j < m_OcToCiOrginDataArr[kk].OCPsdNum; j++) - { - /*ȡOC-Pȷ·־*/ - ocPscConfirmFlag = GetPsdPlFlag(m_OcToCiOrginDataArr[kk].PsdInfo[j].wPsdId); - if (OC_PSC_PL_CONFIRM_YES == ocPscConfirmFlag) - { - /*ȡȷϱ־*/ - SetPsdConfirmFlag(m_OcToCiOrginDataArr[kk].PsdInfo[j].wPsdId, OC_PSC_PL_CONFIRM_NO); - } - else - { - /*·״̬*/ - } - } - } - } - - } - else - { - /*OC-P IDϷ*/ - } - - /*ҵѭ*/ - break; - } - - } -} - -/* -* ղ -* ˵ const UINT16 wRouteId ·ID -* ֵ -* by cgh 20250617 -*/ -void OverlapZhaoChaRelayUpDateManage(void) -{ - UINT16 wOverlapCurSum = 0U;/*εǰ*/ - UINT16 ii = 0U; - UINT16 wOverlapId = 0U;/*ID*/ - UINT8 chOverlapBelCiId = 0U;/*ID*/ - UINT8 chLocalCiId = 0U;/*ID*/ - UINT16 wThisZhaoChaRelayId = 0U; /*ղ̵ID*/ - UINT32 dwOverlapLockStartCycNum = 0U;/*ʼں*/ - UINT8 chRelayDriveState = 0U; /*̵״̬*/ - UINT8 chRelayCollState = 0U; /*̵ɼ״̬*/ - UINT8 chTimeCheckFlag = 0U;/*ʱ*/ - UINT32 dwSigalCloseCyc = 0U; /*źŻرճ*/ - - wOverlapCurSum = GetOverlapCurSum(); - chLocalCiId = GetSystemParaLocalCiId(); - - for (ii = 0U; ii < wOverlapCurSum; ii++) - { - wOverlapId = GetOverlapId(ii); - chOverlapBelCiId = GetOverlapBelongCiId(wOverlapId); - - if ((chLocalCiId == chOverlapBelCiId) && (0U != chLocalCiId)) - { - wThisZhaoChaRelayId = GetOverlapThisZhaoChaRelayId(wOverlapId); /*ղ̵ID*/ - - if (0U < wThisZhaoChaRelayId) - { - dwOverlapLockStartCycNum = GetOverlaplockSucessStartCycNum(wOverlapId); - /*ӿڱ˼̵*/ - if (0U == dwOverlapLockStartCycNum) - { - chRelayDriveState = GetRelayDriveState(wThisZhaoChaRelayId); - - if (RELAY_DRIVE_STATE_NULL == chRelayDriveState) - { - (void)SetRelayDriveState(wThisZhaoChaRelayId, RELAY_DRIVE_STATE_UP); - } - } - else - { - (void)SetRelayDriveState(wThisZhaoChaRelayId, RELAY_DRIVE_STATE_DOWN); - chRelayCollState = GetRelayCollState(wThisZhaoChaRelayId); - - if (RELAY_STATE_DOWN != chRelayCollState) - { - dwSigalCloseCyc = GetSystemParaSignalCloseCyc(); - chTimeCheckFlag = SystemOverTimeCheck(dwOverlapLockStartCycNum, dwSigalCloseCyc); - - if (CI_TIME_OUT == chTimeCheckFlag) - { - SetPlatOverFlag(); /*ƽ̨崻*/ - SetErrorData(EFUNC_PLAT_OVER, CI_DEVICE_TYPE_RELAY, wThisZhaoChaRelayId, ETYPE_ZHAOCHA_OVERLAP_OVERTIME, RELAY_STATE_UP, ESEND_LEVEL_ZERO);/*¼崻*/ - } - } - } - } - else - { - ; /*ޱղ̵*/ - } - } - else - { - ; /*ڱ*/ - } - } -} - -/* -* гԾ״̬ -* ˵ -* ֵ -* Create: fan 20250725 -*/ -void TrainJumpBackApplyProc(void) -{ - UINT8 chTrainIndex = 0U; - UINT16 wTrainId = 0U; /*гID*/ - UINT16 wMaxTailLink = 0u; /*link*/ - UINT16 wAxisSecId = 0U; /*ID*/ - UINT8 chJumpBackApplyState = 0U;/*г״̬*/ - UINT8 chAcBelongCiId = 0U; /**/ - UINT8 chLocalCiId = 0U;/*ID*/ - UINT8 chDir = 0U; /*з*/ - UINT8 linkNum = 0U;/*link*/ - TRAIN_SEQUANCE_s linkInctrainList[SIZE_MAX_TRAINOFAC] = { 0u }; /*linkϵг*/ - UINT8 k = 0U; - UINT8 cLinkIncTrainSum = 0U; /*linkг*/ - UINT8 chFindBaseTrain = CI_ERROR; - UINT8 chBackTrain = CI_ERROR; - UINT16 chElmTrainID = 0U; - EnvelopeStruct* strTrainEnvelope = NULL; /*гϢ*/ - - chLocalCiId = GetSystemParaLocalCiId(); - /* г */ - for (chTrainIndex = 0u; chTrainIndex < TRAIN_SUM_MAX; chTrainIndex++) - { - wTrainId = GetTrainId(chTrainIndex); - chElmTrainID = (wTrainId & 0x00ff); - chJumpBackApplyState = GetTrainJumpBackApplyState(wTrainId); - wMaxTailLink = GetTrainMaxTailLink(wTrainId); - wAxisSecId = GetLinkBelongAcId(wMaxTailLink); - chAcBelongCiId = (UINT8)GetAxisBelongTiocAllLine(wAxisSecId); - if (TRAIN_JUMP_BACK_STATE_VALID != chJumpBackApplyState) - { - /*δ,Ĭ״̬ 0*/ - SetTrainJumpBackReplyState(wTrainId, TRAIN_JUMP_BACK_STATE_NONE); - } - else - { - /*ò*/ - SetTrainJumpBackReplyState(wTrainId, TRAIN_JUMP_BACK_STATE_INVALID); - linkNum = GetAxisLinkSum(wAxisSecId); - if (chLocalCiId == chAcBelongCiId) - { - strTrainEnvelope = elm_GetEnvelopeInfoByTrainID(chElmTrainID); - if ((1U == linkNum) && (NULL != strTrainEnvelope)) - { - if (0U == strTrainEnvelope->tailTrainID) - { - chDir = GetTrainDir_MaxTail(wTrainId); - cLinkIncTrainSum = as_GetLinkTrainList(wMaxTailLink, linkInctrainList, SIZE_MAX_TRAINOFAC); - chFindBaseTrain = CI_ERROR; - chBackTrain = CI_SUCCESS; - if (DIR_CONVERT == chDir) - { - for (k = 0U; k < cLinkIncTrainSum; k++) - { - if (chElmTrainID == linkInctrainList[k].u16TrainID) - { - chFindBaseTrain = CI_SUCCESS; - } - else - { - if (CI_SUCCESS == chFindBaseTrain) - { - /*г*/ - chBackTrain = CI_ERROR; - break; - } - else - { - ; /*ǰг */ - } - } - } - } - else if (DIR_SAME == chDir) - { - for (k = cLinkIncTrainSum; 0U < k; k--) - { - if (chElmTrainID == linkInctrainList[k - 1].u16TrainID) - { - chFindBaseTrain = CI_SUCCESS; - } - else - { - if (CI_SUCCESS == chFindBaseTrain) - { - /*г*/ - chBackTrain = CI_ERROR; - break; - } - else - { - ; /*ǰг */ - } - } - } - } - else - { - /**/ - chBackTrain = CI_ERROR; - } - if (CI_SUCCESS == chBackTrain) - { - SetTrainJumpBackReplyState(wTrainId, TRAIN_JUMP_BACK_STATE_VALID); - } - } - else - { - ; /*ò*/ - } - } - else - { - ; /*ò*/ - } - } - else - { - ; /*ò*/ - } - } - } } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/LogicManage/InterlockLogicManage.h b/TSCP/src/APP/ciapp/LogicManage/InterlockLogicManage.h index 1f51a2d..d27a910 100644 --- a/TSCP/src/APP/ciapp/LogicManage/InterlockLogicManage.h +++ b/TSCP/src/APP/ciapp/LogicManage/InterlockLogicManage.h @@ -365,11 +365,9 @@ void SetOverlapLockState(const UINT16 overlapId, const UINT8 lockState, const UI /* * ͨ·߼ * ˵ const UINT16 routeId, ·ID -* const UINT8 chSendLevel ͵ȼ -* ֵ void -* BY cgh 20250828 +* ֵ void */ -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 ӱ˹߼ */ -UINT8 LaborUnlockOverlapProc(const UINT16 overlapId); +UINT8 LaborUnlockOverlapProc(const UINT8 overlapId); /* * ձα־ * ˵ const UINT16 routeId, ·ID @@ -1133,29 +1131,6 @@ void RouteTrainResUnlockManage(void); */ 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); - #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/LogicManage/RouteRecoverManage.c b/TSCP/src/APP/ciapp/LogicManage/RouteRecoverManage.c index 3223da4..4431120 100644 --- a/TSCP/src/APP/ciapp/LogicManage/RouteRecoverManage.c +++ b/TSCP/src/APP/ciapp/LogicManage/RouteRecoverManage.c @@ -3011,9 +3011,10 @@ UINT8 RecoverOpenRouteCheckCLD(const UINT16 routeId) UINT8 routeType = 0u; /*·*/ UINT8 errType = CI_ERROR;/*ʧʱĴ*/ UINT8 jkjRelayValidFlag = 0u; /*ʼӦ̵̼Ч״̬*/ + UINT16 jkjRelayId = GetJkjRelayId(); jkjRelayValidFlag = GetCiJkjFlag(); routeType = GetRouteType(routeId); /*ȡ·*/ - if (JKJ_REYLAY_VALID == jkjRelayValidFlag) + if ((jkjRelayId > 0u) && (JKJ_REYLAY_VALID == jkjRelayValidFlag)) {/*Ӧ̵̼Ч״̬,źؿ*/ errType = CI_ERROR; } @@ -3795,23 +3796,6 @@ static UINT8 OpenBlocRouteOverlapErrCheck(const UINT16 routeId) 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 @@ -4655,23 +4639,26 @@ static UINT8 RouteIntruSecVainSPKSErrCheck(const UINT16 routeId) */ static UINT8 RouteRelayZhaoChaErrCheck(UINT16 const routeId) { - /* ֲʼ */ - UINT16 relayId = 0U; - UINT8 relayState = 0U; - UINT8 zcPhySecSum = 0U; /*ղĿ*/ - UINT16* pZcPhySecIdBuf = NULL; /*ղID*/ - UINT8 ii = 0U; +/* ֲʼ */ + UINT16 relayId = 0U; + UINT8 relayState = 0U; + UINT8 zcPhySecSum = 0U; /*ղĿ*/ + UINT16* pZcPhySecIdBuf = NULL; /*ղID*/ + UINT8 ii = 0U; UINT16 thisRealyId = 0U; - UINT8 thisRelayState = 0U; + UINT8 thisRelayState = 0U; UINT8 routeState = 0U; UINT8 retVal = CI_ERROR; /*ֵ*/ UINT16 pDevId = 0U; UINT8 pDevState = 0U; + UINT8 chRouteLevel = 0U; UINT8 chErrTemp = 0U; - /* Զղ */ - zcPhySecSum = GetRouteThatZhaoChaPhySecSum(routeId); /*ȡղĿ*/ + /* Զղ */ + zcPhySecSum = GetRouteThatZhaoChaPhySecSum(routeId); /*ȡղĿ*/ pZcPhySecIdBuf = GetRouteThatZhaoChaPhySecIdBuf(routeId); /*ȡղID*/ + /*·ලȷ*/ + chRouteLevel = GetRouteLevel(routeId); if (NULL == pZcPhySecIdBuf) { @@ -4681,14 +4668,14 @@ static UINT8 RouteRelayZhaoChaErrCheck(UINT16 const routeId) { retVal = CI_SUCCESS; - for (ii = 0u; ii < zcPhySecSum; ii++) - { - retVal = RoutePhySecZhaoChaErrCheck(routeId, pZcPhySecIdBuf[ii]); - if (CI_ERROR == retVal) + for (ii = 0u; ii < zcPhySecSum; ii++) + { + retVal = RoutePhySecZhaoChaErrCheck(routeId,pZcPhySecIdBuf[ii]); + if (CI_ERROR == retVal) { break; } - else if (CI_ROUTE_RECOVER_ERR == retVal) /*YF00083-1013,һֹΣһǰ飬һδں鸲ǵretValֵ*/ + else if(CI_ROUTE_RECOVER_ERR == retVal) /*YF00083-1013,һֹΣһǰ飬һδں鸲ǵretValֵ*/ { chErrTemp++; /*һSPKSͼһ*/ } @@ -4701,13 +4688,24 @@ static UINT8 RouteRelayZhaoChaErrCheck(UINT16 const routeId) { 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̵״̬*/ routeState = GetRouteState(routeId); /*ȡ·״̬*/ @@ -4715,32 +4713,25 @@ static UINT8 RouteRelayZhaoChaErrCheck(UINT16 const routeId) {/*ڱղ̵*/ if ((ROUTE_STATE_FIRST_LOCKERR == 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_DELAY_UNLOCK == routeState) || - (ROUTE_STATE_AUTO_UNLOCK == routeState) || - (ROUTE_STATE_AUTO_UNLOCKERR == routeState) || - (ROUTE_STATE_HALF_UNLOCKDELAY == routeState) || - (ROUTE_STATE_LEAD_LOCKERR == routeState) || - (ROUTE_STATE_LEAD_OPEN == routeState)) + (ROUTE_STATE_NEAR_OPEN == routeState) || + (ROUTE_STATE_YUXIAN_OPEN == routeState)) { - /*жϱղ״̬*/ - if (RELAY_STATE_UP == thisRelayState) + /*·״̬쳣Ԥգӽ쳣ӽţԤȿţ + жϱղ״̬*/ + if(RELAY_STATE_UP == thisRelayState) { retVal = CI_ERROR; } } - else if ((ROUTE_STATE_FIRST_LOCK == routeState) || - (ROUTE_STATE_LEAD_LOCK == routeState)) + else if (ROUTE_STATE_FIRST_LOCK == routeState) { - if (RELAY_STATE_UP == thisRelayState) + if(RELAY_STATE_UP == thisRelayState) { /*ȴصȴ־*/ retVal = RELAY_STATE_WAITE; } - } + } else { /*·״̬Ϊֵʱ*/ @@ -4749,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)) {/*ղ̵ͨԶղ̵*/ - - relayId = GetRouteThatZhaoChaRelayId(routeId); /*Զղ̵ID*/ - - if (0u != relayId) - {/*ڶԶղ̵*/ - - relayState = GetRelayCollState(relayId); - - /* ղ*/ - if (RELAY_STATE_UP == relayState) - { - /*ͨ*/ - } - else - { - retVal = CI_ERROR; - } + if (ROUTE_LEVEL_BLOC == chRouteLevel) + { + relayId = GetRouteThatZhaoChaRelayId(routeId); /*ģʽԶղ̵ID*/ } + 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; + } /* diff --git a/TSCP/src/APP/ciapp/LogicManage/TradInterlockLogicManage.c b/TSCP/src/APP/ciapp/LogicManage/TradInterlockLogicManage.c index 17c137d..54a4d7f 100644 --- a/TSCP/src/APP/ciapp/LogicManage/TradInterlockLogicManage.c +++ b/TSCP/src/APP/ciapp/LogicManage/TradInterlockLogicManage.c @@ -50,116 +50,58 @@ void JKJRelayLogicProcess(void) { UINT16 wJkjRelayId = 0u; UINT8 JkjRelayState = CI_ERROR; - UINT32 yjValidCycNum = 0u; + UINT32 JkjRelayCycNum = 0u; + UINT32 JkjValidCycNum = 0u; UINT32 curCycNum = 0u; UINT8 checkRes = CI_TIME_OUT; - UINT8 ii = 0u; - UINT8 haveYjkBreakFlag = 0u; - UINT8 ocYjkBreakFlag = 0u; + UINT8 tmpRet =CI_ERROR; wJkjRelayId = GetJkjRelayId(); JkjRelayState = GetRelayCollState(wJkjRelayId); /*JKJӦ̵̼ɼ״̬*/ - yjValidCycNum = GetJkjRelayValidCycNum(); /*JKJӦ״̬Ч*/ - curCycNum = Get2oo2CurCycleNum(); - - for (ii = 0u; ii < m_OcToCiOrginDataNum; ii++) - { - if (OC_HAVE_YJK == m_OcToCiOrginDataArr[ii].chHaveYjk) - {/*һOC߱Ӧ*/ - haveYjkBreakFlag = 1u; - break; - } - else - { - ; /**/ - } - } + JkjRelayCycNum = GetRelayStateUpdateCycNum(wJkjRelayId); /*JKJӦ̵̼״̬*/ + JkjValidCycNum = GetJkjRelayValidCycNum(); /*JKJӦ״̬Ч*/ - 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)) { - /*˼̵*/ - if (RELAY_STATE_DOWN == JkjRelayState) - {/**/ - if (0u == yjValidCycNum) - {/*δʱ*/ - SetJkjRelayValidCycNum(curCycNum); /*ӦЧ*/ - } - else + curCycNum = Get2oo2CurCycleNum(); + if (0u == JkjRelayCycNum) + {/*δʱʼ*/ + tmpRet = SetRelayStateUpdateCycNum(wJkjRelayId,curCycNum); + if (CI_ERROR == tmpRet) { - ; /**/ - } - checkRes = SystemOverTimeCheck(yjValidCycNum, JKJ_REYLAY_VALID_CYCLE_NUM); - if (CI_TIME_OUT == checkRes) - { /*ӦЧ*/ - SetCiJkjFlag(JKJ_REYLAY_VALID); /*ӦЧ־ΪЧ*/ - } - else - { - ; /**/ + /**/ } } - else if (RELAY_STATE_UP == JkjRelayState) - {/**/ - /*ӦЧ*/ - SetCiJkjFlag(JKJ_REYLAY_INVALID); /*ӦЧ־ΪЧ*/ - SetJkjRelayValidCycNum(0u); /*ӦЧ*/ - } - else - { - /*ӦЧ*/ - SetCiJkjFlag(JKJ_REYLAY_VALID); /*ӦЧ־ΪЧ*/ - SetJkjRelayValidCycNum(curCycNum); /*ӦЧ*/ + checkRes = SystemOverTimeCheck(JkjRelayCycNum,JKJ_REYLAY_VALID_CYCLE_NUM); + if (CI_TIME_OUT == checkRes) + { /*ӦЧ*/ + SetCiJkjFlag(JKJ_REYLAY_VALID); /*JKJӦЧ־ΪЧ*/ + if (0u == JkjValidCycNum) /*֮ǰûӦЧʼ*/ + { + SetJkjRelayValidCycNum(curCycNum); /*JKJӦЧ*/ + } } } - else if(1u == haveYjkBreakFlag) + else if ((wJkjRelayId > 0u) && (RELAY_STATE_UP == JkjRelayState)) { - /*OC߱Ӧ*/ - if (1u == ocYjkBreakFlag) - {/*һ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); /*ӦЧ*/ + tmpRet = SetRelayStateUpdateCycNum(wJkjRelayId, 0u); /*JKJ̵Чʼں*/ + if (CI_ERROR == tmpRet) + { + /**/ } + /*ӦЧ*/ + SetCiJkjFlag(JKJ_REYLAY_INVALID); /*JKJӦ̵̼Ч־ΪЧ*/ + + SetJkjRelayValidCycNum(0u); /*JKJӦЧ*/ } else { - /*JKJδãOCӦعܣӦЧ*/ - SetCiJkjFlag(JKJ_REYLAY_INVALID); /*ӦЧ־ΪЧ*/ - SetJkjRelayValidCycNum(0u); /*ӦЧ*/ + /*ӦЧ*/ + SetCiJkjFlag(JKJ_REYLAY_INVALID); /*JKJӦ̵̼Ч־ΪЧ*/ + SetJkjRelayValidCycNum(0u); /*JKJӦ̵̼Ч*/ } - } /* @@ -873,6 +815,9 @@ void RouteLogicProcess(void) /*۳SPKSPSDźŹرؿ*/ RouteRecoverOpenProc(routeId); + /*·ͬ߼*/ + RouteDCTYLogicM(routeId); + /*ݽ·״̬ر־*/ ClearSomeFlagDependRouteState(routeId); /*cgh-ϲCID-2349-5*/ @@ -4415,22 +4360,37 @@ void NonRouteCancelDeal(UINT8 nonRouteId) void UpdateZhaoChaDeal(const UINT16 routeId, const UINT8 routeState) { UINT16 wSelfRealyId = 0U; /*ģʽղID*/ + UINT16 wOtherRealyId = 0U; /*ģʽղID*/ UINT8 relauDrvState = 0U; + UINT8 chRouteLevel = GetRouteLevel(routeId); UINT8 chOverTimeCheck = 0U; UINT32 dwTimeOutCycCount = 0U; - UINT32 dwRouteLockStartCycNum = 0U; - wSelfRealyId = GetRouteThisZhaoChaRelayId(routeId); /*ղ̵ID*/ - dwRouteLockStartCycNum = GetRouteLockStartCycNum(routeId); + if (ROUTE_LEVEL_BLOC == chRouteLevel) + { + 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(); - 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) || - (routeState == ROUTE_STATE_XUANPAI) || - (routeState == ROUTE_STATE_LEAD_FIRST_XUANPAI) || - (routeState == ROUTE_STATE_LEAD_XUANPAI)) + /*· ģʽղ鶼*/ + if (0U < wSelfRealyId) { relauDrvState = GetRelayDriveState(wSelfRealyId); if (RELAY_DRIVE_STATE_NULL == relauDrvState) @@ -4438,15 +4398,34 @@ void UpdateZhaoChaDeal(const UINT16 routeId, const UINT8 routeState) (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); relauDrvState = GetRelayCollState(wSelfRealyId); - if (RELAY_STATE_DOWN != relauDrvState) { /*ղ̵δ*/ - chOverTimeCheck = SystemOverTimeCheck(dwRouteLockStartCycNum, dwTimeOutCycCount); - if (CI_TIME_OUT == chOverTimeCheck) + chOverTimeCheck = CheckRelayDriveOutTime(wSelfRealyId, dwTimeOutCycCount); + if (CI_ERROR == chOverTimeCheck) {/*ղ鳬ʱʱ*/ /*xxxxx崻*/ @@ -6145,16 +6124,16 @@ UINT16 GetReturnId(const UINT16 routeId) { /*ǰ״̬ǽӽ쳣*/ - /* Dzгʻ·ͬʱ֮ǰ״̬Ϊӽտ + /* Dzгʻ·ͬʱ֮ǰ״̬Ϊӽгѹ룬źŹرգ * Ϊͬһг;۷ */ - 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*/ } else { - returnSigId = 0U; + returnSigId = 0u; } } } @@ -6187,8 +6166,6 @@ void DTrainReturnUnlockRouteAllLockP(const UINT16 routeId) UINT8 chLockBelRouteType = 0U;/*··*/ UINT8 chTrainEnterRouteFlag = 0U;/*гʻ·־*/ UINT8 chRouteInOutSecOccupy = 0U;/*·ⷽͬʱռѹ־*/ - UINT32 dwRoutLockCycNum = 0U; - UINT32 dwReturnRoutLockCycNum = 0U; routeState = GetRouteState(routeId); /*ȡ·״̬*/ routeType = GetRouteType(routeId); @@ -6230,16 +6207,14 @@ void DTrainReturnUnlockRouteAllLockP(const UINT16 routeId) wLockRouteStartSigId = GetRouteStartSignalId(lockBelongRouteId);/*ȡ·ʼźŻID*/ chTrainEnterRouteFlag = CheckTrainEnterRoute(lockBelongRouteId);/*ȡгʻ·־*/ chRouteInOutSecOccupy = RouteInOutSecOccupy(lockBelongRouteId);/*·ⷽͬʱռñ־*/ - dwRoutLockCycNum = GetRouteLockStartCycNum(routeId); /*ȡ·ʼ*/ - dwReturnRoutLockCycNum = GetRouteLockStartCycNum(lockBelongRouteId);/*ȡ۳·ʼ*/ if ((ROUTE_STATE_NEAR_OPEN == chLockBelRouteState) && (ROUTE_TYPE_DIAOCHE == chLockBelRouteType) && - (returnSigId == wLockRouteStartSigId) && (dwReturnRoutLockCycNum > dwRoutLockCycNum) && + (returnSigId == wLockRouteStartSigId) && ((CI_SUCCESS == chTrainEnterRouteFlag) || ((CI_SUCCESS == chRouteInOutSecOccupy) && (ROUTE_TYPE_LIECHE == routeType)))) { /*۳·ǵ·&&״̬ǽӽ&&۳·ʼźŻDZ·۷źŻ &&гʻ ·Ϊг·۳·ʱⷽͬʱռѹ*/ - /*by cgh 20250414۳·ʱ;·*/ + /*ɹ*/ SetRoutePhySectionLockState(routeId, PHYSICAL_SECTION_LOCK_NO); /*ý·δ*/ @@ -6249,10 +6224,10 @@ void DTrainReturnUnlockRouteAllLockP(const UINT16 routeId) SetRouteStateDeal(routeId, ROUTE_STATE_IDLE); /*ý·״̬Ϊ*/ } if ((ROUTE_TYPE_LIECHE == chLockBelRouteType) && (ROUTE_STATE_NEAR_LOCK == chLockBelRouteState) - && (returnSigId == wLockRouteStartSigId) && (dwReturnRoutLockCycNum > dwRoutLockCycNum)) + && (returnSigId == wLockRouteStartSigId)) { /*۳·г· ·״̬ǽӽ ۳·ʼźŻDZ·۷źŻ*/ - /*by cgh 20250414۳·ʱ;·*/ + /*ɹ*/ SetRoutePhySectionLockState(routeId, PHYSICAL_SECTION_LOCK_NO); /*ý·δ*/ /*ý·߼: δ*/ @@ -6290,8 +6265,6 @@ void DTrainRtnUnlockRemoteRAllLockP(const UINT16 routeId) UINT8 chLockBelRouteType = 0U;/*··*/ UINT8 chTrainEnterRouteFlag = 0U;/*гʻ·־*/ UINT8 chRouteInOutSecOccupy = 0U;/*·ⷽͬʱռѹ־*/ - UINT32 dwRoutLockCycNum = 0U; - UINT32 dwReturnRoutLockCycNum = 0U; routeState = GetRouteState(routeId); /*ȡ·״̬*/ routeType = GetRouteType(routeId); @@ -6339,16 +6312,13 @@ void DTrainRtnUnlockRemoteRAllLockP(const UINT16 routeId) wLockRouteStartSigId = GetRouteStartSignalId(lockBelongRouteId);/*ȡ·ʼźŻID*/ chTrainEnterRouteFlag = CheckTrainEnterRoute(lockBelongRouteId);/*ȡгʻ·־*/ chRouteInOutSecOccupy = RouteInOutSecOccupy(lockBelongRouteId);/*·ⷽͬʱռñ־*/ - dwRoutLockCycNum = GetRouteLockStartCycNum(routeId); /*ȡ·ʼ*/ - dwReturnRoutLockCycNum = GetRouteLockStartCycNum(lockBelongRouteId);/*ȡ۳·ʼ*/ if ((ROUTE_STATE_NEAR_OPEN == chLockBelRouteState) && (ROUTE_TYPE_DIAOCHE == chLockBelRouteType) && - (returnSigId == wLockRouteStartSigId) && (dwReturnRoutLockCycNum > dwRoutLockCycNum) && + (returnSigId == wLockRouteStartSigId) && ((CI_SUCCESS == chTrainEnterRouteFlag) || ((CI_SUCCESS == chRouteInOutSecOccupy) && (ROUTE_TYPE_LIECHE== routeType)))) { /*۳·ǵ·&&״̬ǽӽ&&۳·ʼźŻDZ·۷źŻ &&гʻ ·Ϊг·۳·ʱⷽͬʱռѹ*/ - /*by cgh 20250414۳·ʱ;·*/ /*ɹ*/ SetRoutePhySectionLockState(routeId, PHYSICAL_SECTION_LOCK_NO); /*ý·δ*/ /*ý·߼: δ*/ @@ -6356,10 +6326,9 @@ void DTrainRtnUnlockRemoteRAllLockP(const UINT16 routeId) SetRouteStateDeal(routeId, ROUTE_STATE_IDLE); /*ý·״̬Ϊ*/ } if ((ROUTE_TYPE_LIECHE== chLockBelRouteType) && (ROUTE_STATE_NEAR_LOCK == chLockBelRouteState) - && (returnSigId == wLockRouteStartSigId) && (dwReturnRoutLockCycNum > dwRoutLockCycNum)) + && (returnSigId == wLockRouteStartSigId)) { /*۳·г· ·״̬ǽӽ ۳·ʼźŻDZ·۷źŻ*/ - /*by cgh 20250414۳·ʱ;·*/ /*ɹ*/ SetRoutePhySectionLockState(routeId, PHYSICAL_SECTION_LOCK_NO); /*ý·δ*/ /*ý·߼: δ*/ @@ -7120,48 +7089,38 @@ void CancelWashWorkLogicM(void) /* * ·ͬ߼ * ˵ void -* ֵ void -* by cgh 20250523 +* ֵ void */ -void RouteDCTYLogic(UINT16 routeId) +void RouteDCTYLogicM(UINT16 routeId) { - UINT8 routeType = 0U; - UINT8 routeState = 0U; - UINT16 routeDCQJId = 0U; - UINT16 routeDCQJTwoId = 0U; - + UINT8 routeType = 0u; + UINT8 routeState = 0u; + UINT16 routeDCQJId = 0u; routeType = GetRouteType(routeId);/*·*/ routeState = GetRouteState(routeId);/*·״̬*/ routeDCQJId = GetRouteDCQJId(routeId); - routeDCQJTwoId = GetRouteDCQJTwoId(routeId); - - if ((0U < routeDCQJId) && (0U < routeDCQJTwoId) && (ROUTE_TYPE_DIAOCHE == routeType)) + if ((routeDCQJId >0u) && (ROUTE_TYPE_DIAOCHE == routeType)) {/*̵IDڣǵ·*/ if((ROUTE_STATE_FIRST_LOCK == routeState) || (ROUTE_STATE_FIRST_LOCKERR == 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_AUTO_UNLOCK == routeState) || - (ROUTE_STATE_AUTO_UNLOCKERR == routeState) || - (ROUTE_STATE_DELAY_UNLOCK == routeState)) - { - /*·:··쳣ԤաԤȿšӽšӽ쳣ӽʱԶԶ쳣*/ - SetRouteDCQState(routeId,ROUTE_DCQ_REQUEST);/*ý·״̬Ч*/ + (ROUTE_STATE_LEAD_LOCK == routeState) || + (ROUTE_STATE_LEAD_LOCKERR == routeState) || + (ROUTE_STATE_LEAD_OPEN == routeState) || + (ROUTE_STATE_DELAY_UNLOCK == routeState) || + (ROUTE_STATE_NEAR_LOCK == routeState)) + {/*·:··쳣ԤաԤȿšӽšӽ쳣ӽ + ա쳣šʱ*/ + (void)SetRouteDCQState(routeId,ROUTE_DCQ_REQUEST);/*ý·״̬Ϊ*/ } else - { - /*ý·״̬ΪЧ;ͬ״̬Ч*/ - SetRouteDCQState(routeId,ROUTE_DCQ_NOT_REQUEST); - SetRouteDCTYState(routeId, ROUTE_DCT_NOT_AGREE); + {/*ý·״̬Ϊǵ*/ + (void)SetRouteDCQState(routeId,ROUTE_DCQ_NOT_REQUEST); } } - else - { - ; /**/ - } } /* diff --git a/TSCP/src/APP/ciapp/LogicManage/TradInterlockLogicManage.h b/TSCP/src/APP/ciapp/LogicManage/TradInterlockLogicManage.h index b1b02cf..ab9fa9b 100644 --- a/TSCP/src/APP/ciapp/LogicManage/TradInterlockLogicManage.h +++ b/TSCP/src/APP/ciapp/LogicManage/TradInterlockLogicManage.h @@ -775,10 +775,9 @@ void CancelWashWorkLogicM(void); /* * ·ͬ߼ * ˵ void -* ֵ void -* by cgh 20250523 +* ֵ void */ -void RouteDCTYLogic(UINT16 routeId); +void RouteDCTYLogicM(UINT16 routeId); /* * ·ͬ diff --git a/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicCheck.c b/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicCheck.c index 360db1c..3e92915 100644 --- a/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicCheck.c +++ b/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicCheck.c @@ -645,58 +645,75 @@ UINT8 RoutePhySecZhaoChaCheck(UINT16 const checkRouteId ,UINT16 const zcPhySecId * RELAY_STATE_WAITE ·ղ̵--ȴ * RES_CHECK_STATE_WAITE Դ鱾ղ̵--ȴ */ -UINT8 RouteRelayZhaoChaCheck(UINT16 const routeId, UINT8 functionId, UINT8 sendLevel) +UINT8 RouteRelayZhaoChaCheck(UINT16 const routeId,UINT8 functionId,UINT8 sendLevel) { - /* ֲʼ */ - UINT16 relayId = 0u; - UINT8 relayState = 0u; - UINT8 zcPhySecSum = 0u; /*ղĿ*/ - UINT16* pZcPhySecIdBuf = NULL; /*ղID*/ - UINT8 ii = 0u; +/* ֲʼ */ + UINT16 relayId = 0u; + UINT8 relayState = 0u; + UINT8 zcPhySecSum = 0u; /*ղĿ*/ + UINT16* pZcPhySecIdBuf = NULL; /*ղID*/ + UINT8 ii = 0u; UINT16 thisRealyId = 0u; - UINT8 thisRelayState = 0u; + UINT8 thisRelayState = 0u; UINT8 routeState = 0u; UINT8 retVal = CI_ERROR; /*ֵ*/ UINT16 pDevId = 0u; - UINT8 pDevState = 0u; + UINT8 pDevState = 0u; UINT8 funcSwitchSupportRelayInterface = 0u; UINT8 confirmRelayInterfaceFlag = 0u; UINT16 endSignalId = 0u; UINT8 commState = 0u;/*ͨ״̬*/ UINT8 endSignalBelongCi = 0u; UINT8 localCi = 0u; + UINT8 chRouteLevel = 0U; localCi = GetSystemParaLocalCiId(); /*ȡID*/ - /* Զղ */ - zcPhySecSum = GetRouteThatZhaoChaPhySecSum(routeId); /*ȡղĿ*/ + /* Զղ */ + zcPhySecSum = GetRouteThatZhaoChaPhySecSum(routeId); /*ȡղĿ*/ pZcPhySecIdBuf = GetRouteThatZhaoChaPhySecIdBuf(routeId); /*ȡղID*/ - + endSignalId = GetRouteEndSignalId(routeId);/*·նźŻ*/ endSignalBelongCi = GetSignalBelongCiId(endSignalId); funcSwitchSupportRelayInterface = GetCiFunctionSwitchConfig(FUNC_SWITCH_USE_RELAY_INTERFACE_BETWEEN_NEIGHBOURCI); confirmRelayInterfaceFlag = GetCiCiRelayInterfConfirmFlag();/*̵ӿȷ״̬*/ - if (endSignalBelongCi != localCi) + if(endSignalBelongCi != localCi) { /*ȡͨ״̬*/ commState = GetLocalCiAndOtherCiTransSta(endSignalBelongCi); } /*̵ӿȷ*/ - if ((localCi != endSignalBelongCi) && (TRANSMIT_STATE_BAD == commState) - && (CICI_RELAY_INTERFACE_CONFIRM_YES == confirmRelayInterfaceFlag) + if((localCi != endSignalBelongCi) && (TRANSMIT_STATE_BAD == commState) + && (CICI_RELAY_INTERFACE_CONFIRM_YES == confirmRelayInterfaceFlag) && (FUNC_SWITCH_ON == funcSwitchSupportRelayInterface)) { /*ȡ̵ӿڱղID*/ thisRealyId = GetRouteRelayBenDuanZcIdOnRelay(routeId); /*ȡ̵ӿڶԶղID*/ - relayId = GetRouteRelayDuiDuanZcIdOnRelay(routeId); + relayId = GetRouteRelayDuiDuanZcIdOnRelay(routeId); } else { - thisRealyId = GetRouteThisZhaoChaRelayId(routeId); /*ղ̵ID*/ - relayId = GetRouteThatZhaoChaRelayId(routeId); /*Զղ̵ID*/ + /*·ලȷ*/ + chRouteLevel = GetRouteLevel(routeId); + + if (ROUTE_LEVEL_BLOC == chRouteLevel) + { + thisRealyId = GetRouteThisZhaoChaRelayId(routeId); /*ģʽղ̵ID*/ + relayId = GetRouteThatZhaoChaRelayId(routeId); /*ģʽԶղ̵ID*/ + } + else if (ROUTE_LEVEL_CBTC == chRouteLevel) + { + thisRealyId = GetRouteCbtcThisZhaoChaRelayId(routeId);/*CBTCģʽղ̵ID*/ + relayId = GetRouteCbtcThatZhaoChaRelayId(routeId); /*CBTCģʽԶղ̵ID*/ + } + else + { + ; /*Ƿලģʽ̵IDΪ0治ᴦ*/ + } + } if (NULL == pZcPhySecIdBuf) @@ -707,20 +724,20 @@ UINT8 RouteRelayZhaoChaCheck(UINT16 const routeId, UINT8 functionId, UINT8 sendL { retVal = CI_SUCCESS; - for (ii = 0u; ii < zcPhySecSum; ii++) - { - retVal = RoutePhySecZhaoChaCheck(routeId, pZcPhySecIdBuf[ii], &pDevId, &pDevState); - if (CI_ERROR == retVal) + for (ii = 0u; ii < zcPhySecSum; ii++) + { + retVal = RoutePhySecZhaoChaCheck(routeId,pZcPhySecIdBuf[ii],&pDevId,&pDevState); + if(CI_ERROR == retVal) { /* ¼ */ - SetErrorData(functionId, CI_DEVICE_TYPE_PHYSEC, pDevId, ETYPE_PS_ZHAOCHA_CHECK, pDevState, sendLevel); + SetErrorData(functionId,CI_DEVICE_TYPE_PHYSEC,pDevId,ETYPE_PS_ZHAOCHA_CHECK,pDevState,sendLevel); break; } - } - } + } + } - if (CI_SUCCESS == retVal) + if(CI_SUCCESS == retVal) {/*ղμͨ,鱾ղ̵*/ routeState = GetRouteState(routeId); /*ȡ·״̬*/ @@ -729,18 +746,10 @@ UINT8 RouteRelayZhaoChaCheck(UINT16 const routeId, UINT8 functionId, UINT8 sendL thisRelayState = GetRelayCollState(thisRealyId); /*ȡָID̵״̬*/ if ((ROUTE_STATE_FIRST_LOCKERR == 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_DELAY_UNLOCK == routeState) || - (ROUTE_STATE_AUTO_UNLOCK == routeState) || - (ROUTE_STATE_AUTO_UNLOCKERR == routeState) || - (ROUTE_STATE_HALF_UNLOCKDELAY == routeState) || - (ROUTE_STATE_LEAD_LOCKERR == routeState) || - (ROUTE_STATE_LEAD_OPEN == routeState)) + (ROUTE_STATE_NEAR_LOCKERR == routeState)) { - /*жϱղ״̬*/ + /*·״̬쳣Ԥգӽ쳣 + жϱղ״̬*/ if (RELAY_STATE_UP == thisRelayState) { /* ¼ */ @@ -748,6 +757,19 @@ UINT8 RouteRelayZhaoChaCheck(UINT16 const routeId, UINT8 functionId, UINT8 sendL retVal = CI_ERROR; } } + else if ((ROUTE_STATE_NEAR_OPEN == routeState) || + (ROUTE_STATE_YUXIAN_OPEN == routeState)) + { + /*Żʱ + 1·״̬ΪӽţԤȿ,·תΪģʽʱõıղ̵δ*/ + retVal = KeepSignalRelayZhaoChaCheck(routeId); + if (CI_ERROR == retVal) + { + /* ¼ */ + SetErrorData(functionId, CI_DEVICE_TYPE_RELAY, thisRealyId, ETYPE_THIS_ZHAOCHA, RELAY_STATE_UP, sendLevel); + + } + } else if (ROUTE_STATE_HALF_UNLOCK == routeState) { /*Żʱ @@ -760,10 +782,9 @@ UINT8 RouteRelayZhaoChaCheck(UINT16 const routeId, UINT8 functionId, UINT8 sendL } } - else if ((ROUTE_STATE_FIRST_LOCK == routeState) || - (ROUTE_STATE_LEAD_LOCK == routeState)) + else if (ROUTE_STATE_FIRST_LOCK == routeState) { - if (RELAY_STATE_UP == thisRelayState) + if(RELAY_STATE_UP == thisRelayState) { /* ¼ */ SetErrorData(functionId, CI_DEVICE_TYPE_RELAY, thisRealyId, ETYPE_THIS_ZHAOCHA, RELAY_STATE_UP, ESEND_LEVEL_ZERO); @@ -771,6 +792,20 @@ UINT8 RouteRelayZhaoChaCheck(UINT16 const routeId, UINT8 functionId, UINT8 sendL retVal = RELAY_STATE_WAITE; } + } + /* ԶԶ쳣ʱҲղ*/ + else if ((ROUTE_STATE_DELAY_UNLOCK == routeState) + || (ROUTE_STATE_AUTO_UNLOCK == routeState) + || (ROUTE_STATE_AUTO_UNLOCKERR == routeState) + || (ROUTE_STATE_HALF_UNLOCKDELAY == routeState)) + { + if (RELAY_STATE_UP == thisRelayState) + { + /* ¼ */ + SetErrorData(functionId, CI_DEVICE_TYPE_RELAY, thisRealyId, ETYPE_THIS_ZHAOCHA, RELAY_STATE_UP, sendLevel); + retVal = CI_ERROR; + } + } else { @@ -780,30 +815,31 @@ UINT8 RouteRelayZhaoChaCheck(UINT16 const routeId, UINT8 functionId, UINT8 sendL } - - if ((CI_SUCCESS == retVal) || (RELAY_STATE_WAITE == retVal) || (RES_CHECK_STATE_WAITE == retVal)) + + if((CI_SUCCESS == retVal) || (RELAY_STATE_WAITE == retVal) || (RES_CHECK_STATE_WAITE == retVal)) {/*ղ̵ͨ/ȴԶղ̵*/ - if (0u != relayId) - {/*ڶԶղ̵*/ + if(0u != relayId) + {/*ڶԶղ̵*/ - relayState = GetRelayCollState(relayId); + relayState = GetRelayCollState(relayId); - /* ղ*/ - if (RELAY_STATE_UP == relayState) - { - /*ͨ*/ - } - else - { - /* ¼ */ - SetErrorData(functionId, CI_DEVICE_TYPE_RELAY, relayId, ETYPE_THAT_ZHAOCHA, relayState, sendLevel); + /* ղ*/ + if (RELAY_STATE_UP == relayState) + { + /*ͨ*/ + } + else + { + /* ¼ */ + SetErrorData(functionId,CI_DEVICE_TYPE_RELAY,relayId,ETYPE_THAT_ZHAOCHA,relayState,sendLevel); - retVal = CI_ERROR; - } - } + retVal = CI_ERROR; + } + } } return retVal; + } @@ -2049,10 +2085,7 @@ UINT8 RouteSwitchPosAndMoveValidCheck(UINT16 const routeId,UINT8 sendLevel) UINT8 chLocalCiId = 0U;/*ID*/ UINT8 chSwitchBelCiId = 0U;/*ID*/ UINT8 chSearchCiId = 0U;/*ѯID*/ - UINT16 chDevId = 0U; - UINT8 chDevState = 0U; - UINT8 chDevType = 0U; - UINT8 chDevErrorType = 0U; + if (0U == checkSum) { /*޼*/ @@ -2114,11 +2147,7 @@ UINT8 RouteSwitchPosAndMoveValidCheck(UINT16 const routeId,UINT8 sendLevel) else { reVal = CI_ERROR; - chDevId = GetRouteApplySwitchCheckErrorData(routeId, &chDevType, &chDevState, &chDevErrorType); - if (0U != chDevId) - { - SetErrorData(EFUNC_CHECK_SWITCHPOS_MOVEVALID, chDevType, chDevId, chDevErrorType, chDevState, sendLevel); - } + SetErrorData(EFUNC_CHECK_SWITCHPOS_MOVEVALID, CI_DEVICE_TYPE_ROUTE, routeId, ETYPE_ROUTE_APPLY_SWITCH_CHECK, chRouteApplySwitchCheckFlag, ESEND_LEVEL_ZERO); } } } @@ -2866,10 +2895,6 @@ UINT8 RouteRelProSwiPosAndMovValCheck(UINT16 const routeId,UINT8 sendLevel) UINT8 chLocalCiId = 0U;/*ID*/ UINT8 chSwitchBelCiId = 0U;/*ID*/ UINT8 chSearchCiId = 0U;/*ѯID*/ - UINT16 chDevId = 0U; - UINT8 chDevState = 0U; - UINT8 chDevType = 0U; - UINT8 chDevErrorType = 0U; if (0U == checkSum) { @@ -2932,11 +2957,7 @@ UINT8 RouteRelProSwiPosAndMovValCheck(UINT16 const routeId,UINT8 sendLevel) else { reVal = CI_ERROR; - chDevId = GetRouteApplySwitchCheckErrorData(routeId, &chDevType, &chDevState, &chDevErrorType); - if (0U != chDevId) - { - SetErrorData(EFUNC_CHECK_SWITCHPOS_MOVEVALID, chDevType, chDevId, chDevErrorType, chDevState, sendLevel); - } + SetErrorData(EFUNC_CHECK_SWITCHPOS_MOVEVALID, CI_DEVICE_TYPE_ROUTE, routeId, ETYPE_ROUTE_APPLY_SWITCH_CHECK, chRouteApplySwitchCheckFlag, ESEND_LEVEL_ZERO); } } } @@ -7078,38 +7099,39 @@ UINT8 RouteExceptLastSecOccuClrCheck(UINT16 const routeId) /**/ UINT8 const functionId = EFUNC_CHECK_LEAD_ROUTE_ZRJ; /* ·*/ - UINT8 const checkSum = GetRoutePhysicalSectionSum(routeId); - RoutePhysicalSectionStruct* const dataIdBuf = GetRouteSectionData(routeId); - + UINT8 const checkSum = GetRoutePhysicalSectionSum(routeId); + RoutePhysicalSectionStruct* const dataIdBuf = GetRouteSectionData(routeId); + /* ֲʼ */ - UINT16 i = 0u; /* ѭ */ - UINT16 devId = 0u; - UINT8 devState = 0u; + UINT16 i = 0u; /* ѭ */ + UINT16 devId = 0u; + UINT8 devState = 0u; UINT8 result = CI_SUCCESS; UINT16 cancleZhaoChaRelayId = 0u; /*ȡղ̵ID*/ UINT8 relayState = 0u; /*̵ɼ״̬*/ UINT8 sendLevel = ESEND_LEVEL_ATS; /*ATS*/ + UINT8 chRouteLevel = 0U;/*·ලȷ*/ /* ռü */ - if (0u == checkSum) - { - /*ݴ*/ - result = CI_ERROR; - } + if (0u == checkSum) + { + /*ݴ*/ + result = CI_ERROR; + } else { } - - if (CI_SUCCESS == result) + + if(CI_SUCCESS == result) { /*ʼ*/ - for (i = 0u; i < (UINT16)(checkSum - 1u); i++) + for (i = 0u; i<(checkSum-1u); i++) { devId = dataIdBuf[i].PhysicalSectionId; devState = GetPhySecCurMergeState(devId); - if (SECTION_OCCUPY_YES == devState) + if (SECTION_OCCUPY_YES ==devState) { /*״̬һ·ع״̬*/ /* ¼ */ @@ -7123,17 +7145,29 @@ UINT8 RouteExceptLastSecOccuClrCheck(UINT16 const routeId) } } - if (CI_SUCCESS == result) + if(CI_SUCCESS == result) { - 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)) { /*ȡ̵Чȡ̵ɼ״̬Ϊ*/ relayState = GetRelayCollState(cancleZhaoChaRelayId);/*ȡȡ̵ɼ״̬*/ devId = cancleZhaoChaRelayId; devState = relayState; - if (RELAY_STATE_UP == relayState) + if(RELAY_STATE_UP == relayState) { /* ͨ */ result = CI_SUCCESS; @@ -7142,7 +7176,7 @@ UINT8 RouteExceptLastSecOccuClrCheck(UINT16 const routeId) else { /* ¼ */ - SetErrorData(functionId, CI_DEVICE_TYPE_RELAY, devId, ETYPE_CANCLE_ZHAOCHA, devState, sendLevel); + SetErrorData(functionId,CI_DEVICE_TYPE_RELAY,devId,ETYPE_CANCLE_ZHAOCHA,devState,sendLevel); /* ʧܷ */ result = CI_ERROR_QXZC; } @@ -7155,10 +7189,9 @@ UINT8 RouteExceptLastSecOccuClrCheck(UINT16 const routeId) } else { - } - - return result; + + return result; } /* * ȫԶ۷·ǷеִԶ·Ѱ @@ -7573,9 +7606,7 @@ UINT8 OtherCiDevStatusCheck(UINT16 const routeId,const RouteOtherCheckStruct *pO UINT8 logSwichSum = 0U; /*߼ΰĵ*/ UINT8 logBelogAxisNum = 0u; UINT16* logBelogAxisBuff = NULL; - UINT8 cFuncSwitchFloodGate = FUNC_SWITCH_ON; /*·Ƿſ*/ - UINT8 cFuncSwitchEsb = FUNC_SWITCH_ON; /*·ǷESB*/ - UINT8 cRouteToLeadFlag = 0U; /*·ת·־*/ + devState = GetOtherCiDevStatus(devType,devId,chkDevStatus); @@ -7586,20 +7617,14 @@ UINT8 OtherCiDevStatusCheck(UINT16 const routeId,const RouteOtherCheckStruct *pO { routeLeadProperty = GetRouteLeadProperty(routeId);/*ȡ·*/ routeState = GetRouteState(routeId);/*ȡ·״̬*/ - cRouteToLeadFlag = GetRouteToLeadFlag(routeId); /*ȡ·ת־*/ if (((ROUTE_LEAD_PROPERTY_YES == routeLeadProperty) || (ROUTE_LEAD_PROPERTY_CBTC_YES == routeLeadProperty)) - && (((ROUTE_STATE_LEAD_LOCK == routeState) || (ROUTE_STATE_LEAD_LOCKERR == routeState) || (ROUTE_STATE_LEAD_OPEN == routeState)) || (ROUTE_TO_LEAD_FLAG_YES == cRouteToLeadFlag))) - { - /*·ֻ·ⷽεռ״̬ߵ(ݡ·Ƿ״̬ȷǷ) - ESB(ݡ·ǷESB״̬ȷǷ)*/ - cFuncSwitchFloodGate = GetCiFunctionSwitchConfig(FUNC_LEADROUTE_FLOODGATE_CHECK); - cFuncSwitchEsb = GetCiFunctionSwitchConfig(FUNC_LEADROUTE_ESB_CHECK); - - if ((CI_DEVICE_TYPE_AXISSEC == devType) || (CI_DEVICE_TYPE_CONNECT_SWITCH == devType) || (CI_DEVICE_TYPE_SWITCH == devType) - || ((CI_DEVICE_TYPE_FLOODGATE == devType) && (FUNC_SWITCH_OFF != cFuncSwitchFloodGate)) - || ((CI_DEVICE_TYPE_ESB == devType) && (FUNC_SWITCH_OFF != cFuncSwitchEsb))) - { + && ((ROUTE_STATE_LEAD_LOCK == routeState) || (ROUTE_STATE_LEAD_LOCKERR == routeState) + || (ROUTE_STATE_LEAD_OPEN == routeState))) + { /*·ֻ·żεռ״̬,ߵ*/ + if ((CI_DEVICE_TYPE_AXISSEC == devType) || (CI_DEVICE_TYPE_CONNECT_SWITCH == devType) + || (CI_DEVICE_TYPE_SWITCH == devType) || (CI_DEVICE_TYPE_FLOODGATE == devType)) + { ret = CI_ERROR; } else @@ -7724,7 +7749,6 @@ static UINT8 CheckRelationSignalOnSameOpen(UINT16 const routeId,UINT16 const rel UINT8 ret = CI_SUCCESS; UINT8 routeType = 0u; /*·*/ UINT8 relationSignalOpenColor = GetSignalCurColor(relationSignalId); - UINT8 cRouteStartSigOpenColor = 0U; /*·ʼźŻɫ*/ routeState = GetRouteState(routeId); routeLeadProperty = GetRouteLeadProperty(routeId);/*ȡ·*/ @@ -7763,7 +7787,6 @@ static UINT8 CheckRelationSignalOnSameOpen(UINT16 const routeId,UINT16 const rel } break; case SIGNAL_SHOWCOLOUR_YELLOW: - case SIGNAL_SHOWCOLOUR_GREEN: if (OTHER_CI_SIGNAL_STATUS_OPEN == devStatus) { /* Էгźţɰ·г·ܰ·(0x55)*/ @@ -7780,12 +7803,11 @@ static UINT8 CheckRelationSignalOnSameOpen(UINT16 const routeId,UINT16 const rel { if (ROUTE_TYPE_LIECHE == routeType) { - cRouteStartSigOpenColor = GetRouteSignalOpenColor(routeId); /*ȡ·ʼźŻɫ*/ - if ((((ROUTE_LEAD_PROPERTY_YES == routeLeadProperty) || (ROUTE_LEAD_PROPERTY_CBTC_YES == routeLeadProperty)) - && ((ROUTE_STATE_LEAD_LOCK == routeState) || (ROUTE_STATE_LEAD_LOCKERR == routeState) || (ROUTE_STATE_LEAD_OPEN == routeState))) - || (cRouteStartSigOpenColor != relationSignalOpenColor)) - { - /* ·г·ɫһ£ʧ */ + if (((ROUTE_LEAD_PROPERTY_YES == routeLeadProperty) || (ROUTE_LEAD_PROPERTY_CBTC_YES == routeLeadProperty)) + && ((ROUTE_STATE_LEAD_LOCK == routeState) + || (ROUTE_STATE_LEAD_LOCKERR == routeState) + || (ROUTE_STATE_LEAD_OPEN == routeState))) + {/* ·Ϊҽ·״̬Ϊ<><쳣><> ,·, */ ret = CI_ERROR; } else @@ -7833,6 +7855,7 @@ UINT8 DriveGarageDoorOpenCheck(const UINT16 garageDoorId) UINT8 faultFlag = GetGaragedoorFaultState(garageDoorId); UINT8 doorState = GetGaragedoorState(garageDoorId); UINT8 pangluState = GetGaragedoorPangLuState(garageDoorId); + UINT16 jkjRelayId = GetJkjRelayId(); /**/ UINT8 const functionId = EFUNC_CLD_CLOSE_GARAGEDOOR; @@ -7844,9 +7867,9 @@ UINT8 DriveGarageDoorOpenCheck(const UINT16 garageDoorId) { retVal = CI_SUCCESS; /* ¼ */ - if (JKJ_REYLAY_VALID == jkjRelayValidFlag) - {/*Ӧ̵̼Ч״̬*/ - SetErrorData(functionId, CI_DEVICE_TYPE_RELAY, 0u, ETYPE_JKJ_WORK, RELAY_STATE_DOWN, sendLevel);/*OCӦعܣ̵ID0*/ + if ((jkjRelayId > 0u) && (JKJ_REYLAY_VALID == jkjRelayValidFlag)) + {/*Ӧ̵̼Ч״̬*/ + SetErrorData(functionId, CI_DEVICE_TYPE_RELAY, jkjRelayId, ETYPE_JKJ_WORK, RELAY_STATE_DOWN, sendLevel); retVal = CI_ERROR; } else if (GARAGE_DOOR_STATE_MODE_LOCAL == modeFlag) @@ -7908,6 +7931,7 @@ UINT8 DriveGarageDoorCloseCheck(const UINT16 garageDoorId) UINT8 phyState = SECTION_OCCUPY_YES; UINT8 phyFLockState = PHYSICAL_SECTION_FLOCK_YES; UINT8 phyLockState = PHYSICAL_SECTION_LOCK_NORMAL;/*״̬*/ + UINT16 jkjRelayId = GetJkjRelayId(); UINT16 jj = 0u; UINT32 responseZCStartCyc = 0U;/*ȴZCʼ*/ UINT32 responseIVOCStartCyc = 0U;/*ȴIVOCʼ*/ @@ -7928,9 +7952,9 @@ UINT8 DriveGarageDoorCloseCheck(const UINT16 garageDoorId) { retVal = CI_SUCCESS; /* ¼ */ - if (JKJ_REYLAY_VALID == jkjRelayValidFlag) + if ((jkjRelayId > 0u) && (JKJ_REYLAY_VALID == jkjRelayValidFlag)) {/*Ӧ̵̼Ч״̬*/ - SetErrorData(functionId, CI_DEVICE_TYPE_RELAY, 0u, ETYPE_JKJ_WORK, RELAY_STATE_DOWN, sendLevel);/*OCӦعܣ̵ID0*/ + SetErrorData(functionId, CI_DEVICE_TYPE_RELAY, jkjRelayId, ETYPE_JKJ_WORK, RELAY_STATE_DOWN, sendLevel); retVal = CI_ERROR; } else if (GARAGE_DOOR_STATE_MODE_LOCAL == modeFlag) @@ -10043,6 +10067,7 @@ UINT8 PhySecFaultUnlockLogicProcess(UINT16 const phySectionId) UINT8 routeBelongCi = 0u; UINT8 otherCiId = 0u;/*ID*/ UINT8 execRes = 0u;/*ִн*/ + UINT8 chRouteLevel = 0U; /*ȡϢ*/ phySecLockBelongRouteId = GetPhySecRLockBelongRouteId(phySectionId); @@ -10100,7 +10125,20 @@ UINT8 PhySecFaultUnlockLogicProcess(UINT16 const phySectionId) /*ȡղ̵Ϊ*/ if (CI_SUCCESS == reResult) { - cancleZhaoChaRelayId = GetRouteCancleZhaoChaRelayId(phySecLockBelongRouteId); /*ȡղ̵ID*/ + chRouteLevel = GetRouteLevel(phySecLockBelongRouteId); + if (ROUTE_LEVEL_BLOC == chRouteLevel) + { + cancleZhaoChaRelayId = GetRouteCancleZhaoChaRelayId(phySecLockBelongRouteId); /*ģʽȡղ̵ID*/ + } + else if (ROUTE_LEVEL_CBTC == chRouteLevel) + { + cancleZhaoChaRelayId = GetRouteCbtcCancelZhaochaRelay(phySecLockBelongRouteId);/*CBTCģʽȡղ̵ID*/ + } + else + { + ; /*Ƿලģʽ̵IDΪ0治ᴦ*/ + } + commState = GetLocalCiAndOtherCiTransSta(routeBelongCi);/*ͨͨ״̬*/ if ((0u != cancleZhaoChaRelayId) && (0xFFFFu != cancleZhaoChaRelayId)) { @@ -10223,6 +10261,7 @@ UINT8 CheckRouteZongRenJieFeasibility(const UINT16 routeId) UINT8 sectionSum = 0u;/*·*/ /*Ϸͼ*/ UINT8 sendLevel = ESEND_LEVEL_ATS; /*ATS*/ UINT16 secIdx = 0u;/*·ڰα*/ + UINT8 chRouteLevel = 0U; /**/ /* ·״̬ա*/ @@ -10330,8 +10369,19 @@ UINT8 CheckRouteZongRenJieFeasibility(const UINT16 routeId) 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)) { /*ȡ̵Чȡ̵ɼ״̬Ϊ*/ @@ -10364,6 +10414,142 @@ UINT8 CheckRouteZongRenJieFeasibility(const UINT16 routeId) return reResult; } +/* +* ·˽ĿԡֻҪ·һοֱӽ̹Ϊ˽Сע·˽ⲻɵøú +* ˵ const UINT16 routeId, ·ID +* ֵ UINT8 +CI_SUCCESS:˽ִ +CI_ERROR:˽ⲻִ +*/ +UINT8 CheckDiaoCheRouteZRJFeasibility(const UINT16 routeId) +{ + /**/ + UINT8 const functionId = EFUNC_CHECK_DIAOCHE_ROUTE_ZRJ; + /* ֲʼ */ + UINT8 reResult = CI_ERROR; /*ֵ*/ + UINT8 checkResult = CI_ERROR; /**/ + UINT16 devId = 0u; /*豸ID*/ + UINT8 devState = 0u; /*豸״̬*/ + UINT16 cancleZhaoChaRelayId = 0u; /*ȡղ̵ID*/ + UINT8 relayState = 0u; /*̵ɼ״̬*/ + UINT8 trainEnterFlag = 0u; /*·гʻ־*/ + UINT16 inPhySecId = 0u; /*źŻڷһID*/ + RoutePhysicalSectionStruct *pRouteSecStru = NULL; /**/ + UINT8 sectionSum;/*·*/ + UINT8 sendLevel = ESEND_LEVEL_ATS; /*ATS*/ + UINT8 chRouteLevel = 0U; + + /* ·״̬ա*/ + devId = 0u; + devState = 0u; + checkResult = RouteAllSecLockStateCheck(routeId, PHYSICAL_SECTION_LOCK_NORMAL, &devId, &devState); + if (CI_SUCCESS==checkResult) + { + /* ͨ */ + reResult = CI_SUCCESS; + } + else + { + /* ¼ */ + SetErrorData(functionId, CI_DEVICE_TYPE_PHYSEC, devId, ETYPE_PS_LOCK_STATE, devState, sendLevel); + /* ʧܷ */ + reResult = CI_ERROR; + } + + + if (CI_SUCCESS == reResult) + { + trainEnterFlag = GetRouteTrainEnterFlag(routeId);/*ȡ·гʻ־*/ + + if (ROUTE_TRAIN_ENTER_FLAG_NO == trainEnterFlag) + {/*гûʻ*/ + reResult = CI_SUCCESS; + } + else + { + sectionSum = GetRoutePhysicalSectionSum(routeId); /*ý·Ŀ*/ + pRouteSecStru = GetRouteSectionData(routeId); /*·*/ + + if ((NULL == pRouteSecStru) || (0u == sectionSum)) + { + reResult = CI_ERROR; + } + else + { + inPhySecId = pRouteSecStru[0].PhysicalSectionId; + + if (((ROUTE_STOPCHECK_SET_YES == GetRouteStopCheckFlag(routeId)) && + (PHYSICAL_SECTION_LJK_YES == GetPhySecLjkFlag(inPhySecId)) && + (PHYSICAL_STOPCHECK_SET_YES == GetPhySectionStopCheckFlag(inPhySecId))) + || (ROUTE_PHYSICALSECTION_CHECK_NO == pRouteSecStru[0].CheckProperty)) + { /*ֹͣЧΪмֹͣЧ,*/ + reResult = CI_SUCCESS; + } + else + { + devState = GetPhySecCurMergeState(inPhySecId); + + if (SECTION_OCCUPY_NO == devState) + { + reResult = CI_SUCCESS; + } + else + { + /* ¼ */ + SetErrorData(functionId, CI_DEVICE_TYPE_PHYSEC, devId, ETYPE_PS_MERGY_OCU_STATE, devState, sendLevel); + reResult = CI_ERROR; + } + } + } + } + } + else + { + } + + if (CI_SUCCESS == reResult) + { + 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)) + { + /*ȡ̵Чȡ̵ɼ״̬Ϊ*/ + relayState = GetRelayCollState(cancleZhaoChaRelayId);/*ȡȡ̵ɼ״̬*/ + devId = cancleZhaoChaRelayId; + devState = relayState; + if (RELAY_STATE_UP == relayState) + { + /* ͨ */ + reResult = CI_SUCCESS; + + } + else + { + /* ¼ */ + SetErrorData(functionId, CI_DEVICE_TYPE_RELAY, devId, ETYPE_CANCLE_ZHAOCHA, devState, sendLevel); + /* ʧܷ */ + reResult = CI_ERROR; + } + + } + } + else + { + } + + return reResult; +} /* ձ @@ -12208,9 +12394,8 @@ UINT8 OpenBlocRouteSwitchCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel) * UINT16 RouteId, · * UINT8 functionId, ú * UINT8 sendLevel, 뷢ͼ -* ֵ CI_ERROR ʧ -* CI_SUCCESS ɹ -* RELAY_STATE_WAITE ȴղ̵ +* ֵ CI_ERROR +* CI_SUCCESS */ UINT8 OpenBlocRouteOverlapCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel) { @@ -12527,22 +12712,6 @@ UINT8 OpenBlocRouteOverlapCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel) reResult = CI_ERROR; } } - - /*ղ̵״̬*/ - if (CI_SUCCESS == reResult) - { - checkResult = OverlapZhaoChaRelayCheck(overlapId, ESEND_LEVEL_ATS); - - if (CI_SUCCESS == checkResult) - { - reResult = CI_SUCCESS; - } - else - { - /*ȴղ̵»Զ˼鲻ؼ*/ - reResult = checkResult; - } - } } else { @@ -14978,33 +15147,67 @@ UINT8 AxisSecAllSwitchPosCheck(UINT16 const axisSecId,UINT16 *pDevId,UINT8 *pDev * ˵ UINT16 const routeId, · * ֵ CI_ERROR * CI_SUCCESS -* qw.liu ޸ ·ⷽһελü鲻ʹýӽΣΪֱӲ߼ */ UINT8 RouteOutfirstPhySecSwiPosCheck(UINT16 const routeId) { UINT8 reVal = CI_ERROR; + RouteNearPhySectionStruct* pRouteNearPSSecStru = NULL; /*ӽνṹ*/ UINT16 outPhySecId = 0u; /*źŻⷽһID*/ - UINT16 signalId = 0u; - UINT16 signalOutFirstLogSecId = 0U; + UINT8 nearPhySecSum = 0u; + UINT16 i = 0u; /* ѭ */ + UINT16 j = 0u; /* ѭ */ + UINT16 signalId =0u; + UINT8 secConditionSum =0u; + UINT8 flag = 0u; + secConditionSum = GetRouteBlocNearSecConditionSum(routeId);/*ȡָID·ʽӽĿ*/ + pRouteNearPSSecStru = GetRouteBlocNearPhySectionStru(routeId);/*ӽνṹ*/ signalId = GetRouteStartSignalId(routeId);/*·ʼźŻ*/ outPhySecId = GetSignalOutFirstPhySecId(signalId); /*źŻⷽһID*/ - signalOutFirstLogSecId = GetSignalOutFirstLogSec(signalId); - if (0u != outPhySecId) + if(0u != outPhySecId) { - signalOutFirstLogSecId = GetSignalOutFirstLogSec(signalId); - - if (0U != signalOutFirstLogSecId) - { - /*߼Ч λѾںвѯͨ*/ - reVal = CI_SUCCESS; + if((ROUTE_NEARSEC_CONDITION_SUM_MAX >= secConditionSum)&&(NULL != pRouteNearPSSecStru)) + { + for(i=0u;i= nearPhySecSum) + { + if(0u == flag) + { + for(j=0u;j wTrainIndex)) { /****** ֽ·߼Ψһ߼Ƿδ ******/ cLogSecLockState = GetLogSecLockState(pLogSecIdBuff[0]); @@ -24762,46 +24924,43 @@ UINT8 LogSecSeqAndTrainPosCheckCLD(const UINT8 cLogSecSum, const UINT16* pLogSec if (TRAIN_COMM_STATE_GOOD == cTrainCommState) /*ͨųǰɸ*/ { - cRetVal = TrainOccSameSecCheck(wLogSecRelPhySecId, wTrainId); + wTrainMaxHeadLink = GetTrainMaxHeadLink(wTrainId); /*ȡгλ*/ + wTrainMinHeadLink = GetTrainMinHeadLink(wTrainId); + wTrainMaxTailLink = GetTrainMaxTailLink(wTrainId); + wTrainMinTailLink = GetTrainMinTailLink(wTrainId); - if (CI_SUCCESS != cRetVal) + if ((pLogSecIncLinkId[0] == wTrainMaxHeadLink) && (wTrainMaxHeadLink == wTrainMinHeadLink) + && (wTrainMinHeadLink == wTrainMaxTailLink) && (wTrainMaxTailLink == wTrainMinTailLink)) { - SetErrorData(cFunctionId, CI_SYSTEM_TYPE_VOBC, (wTrainId & 0x00FFU), ETYPE_PART_ROUTE_TRAIN_POS, 0U, cSendLevel); - debug_infor_printf((const)"LogSecSeqAndTrainPosCheckCLD: Train Check Error: Train[%d] Position Is Error\n", wTrainId); + cRetVal = CI_SUCCESS; } else { - /*ͨ*/ - ; + debug_infor_printf((const)"LogSecSeqAndTrainPosCheckCLD: Train Check Error: Train[%d] Position Is Error\n", wTrainId); /*гδȫ߻ѹ죬ʧ*/ } } else { - SetErrorData(cFunctionId, CI_SYSTEM_TYPE_VOBC, (wTrainId & 0x00FFU), ETYPE_PART_ROUTE_TRAIN_COMM, 0U, cSendLevel); debug_infor_printf((const)"LogSecSeqAndTrainPosCheckCLD: Train Check Error: Train[%d] CommState Is Error\n", wTrainId); /*гͨ쳣ʧ*/ } } else { - SetErrorData(cFunctionId, CI_SYSTEM_TYPE_VOBC, (wTrainId & 0x00FFU), ETYPE_PART_ROUTE_SEC_ATTR, 0U, cSendLevel); debug_infor_printf((const)"LogSecSeqAndTrainPosCheckCLD: LogSec Check Error: LogSec[%d] Attr Is Error\n", pLogSecIdBuff[0]); /*ֽ·߼η߻ѹ/Σʧ*/ } } else { - SetErrorData(cFunctionId, CI_SYSTEM_TYPE_VOBC, (wTrainId & 0x00FFU), ETYPE_PART_ROUTE_SEC_ATTR, 0U, cSendLevel); /*ȡ߼ΰlinkʧܣʧ*/ } } else { - SetErrorData(cFunctionId, CI_DEVICE_TYPE_LOGICSEC, pLogSecIdBuff[0], ETYPE_LOGSEC_LOCK_STATE, cLogSecLockState, cSendLevel); debug_infor_printf((const)"LogSecSeqAndTrainPosCheckCLD: LogSec Check Error: LogSec[%d] State Is Error\n", pLogSecIdBuff[0]); /*߼գʧ*/ } } else { - SetErrorData(cFunctionId, CI_SYSTEM_TYPE_VOBC, (wTrainId & 0x00FFU), ETYPE_PART_ROUTE_SEC_ATTR, 0U, cSendLevel); /*μʧܣʧ*/ } @@ -25342,8 +25501,8 @@ UINT8 CheckSwitchPosAndMoveValid(const UINT16 wSwitchId,const UINT8 chSwitchPos, else { /*λòȷ ɶ*/ - /* GetSwitchMoveValidStateѾ¼ */ - /*SetErrorData(EFUNC_CHECK_SWITCHPOS_MOVEVALID, CI_DEVICE_TYPE_SWITCH, wSwitchId, ETYPE_SWT_POSTION_STATE, chDevState, sendLevel);*/ + /* ¼ */ + SetErrorData(EFUNC_CHECK_SWITCHPOS_MOVEVALID, CI_DEVICE_TYPE_SWITCH, wSwitchId, ETYPE_SWT_POSTION_STATE, chDevState, sendLevel); chRetVal = CI_ERROR; } } @@ -25389,7 +25548,7 @@ UINT8 RouteOtherCiSwPosValidCheck(UINT16 const routeId) chSwitchBelCiId = GetSwitchBelongCiId(pRouteSwIdBuf[ii].SwitchId); if ((chLocalCiId == chSwitchBelCiId) && (0U != chLocalCiId)) { - reVal = CheckSwitchPosAndMoveValid(pRouteSwIdBuf[ii].SwitchId, pRouteSwIdBuf[ii].SwitchPosition, ESEND_LEVEL_ZERO); + reVal = CheckSwitchPosAndMoveValid(pRouteSwIdBuf[ii].SwitchId, pRouteSwIdBuf[ii].SwitchPosition, ESEND_LEVEL_ATS); if (CI_ERROR == reVal) { break; @@ -25413,7 +25572,7 @@ UINT8 RouteOtherCiSwPosValidCheck(UINT16 const routeId) chSwitchBelCiId = GetSwitchBelongCiId(pRouteProSwIdBuf[ii].ProtectSwitchId); if ((chLocalCiId == chSwitchBelCiId) && (0U != chLocalCiId)) { - reVal = CheckSwitchPosAndMoveValid(pRouteProSwIdBuf[ii].ProtectSwitchId, pRouteProSwIdBuf[ii].ProtectPosition, ESEND_LEVEL_ZERO); + reVal = CheckSwitchPosAndMoveValid(pRouteProSwIdBuf[ii].ProtectSwitchId, pRouteProSwIdBuf[ii].ProtectPosition, ESEND_LEVEL_ATS); if (CI_ERROR == reVal) { break; @@ -25663,10 +25822,9 @@ UINT8 OverlapProSwUsingCheck(const UINT16 wOverlapId, UINT16* pDevId, UINT8* pDe * ˵ UINT16 const routeId, · * ֵ CI_ERROR * CI_SUCCESS -*UINT16* switchIDIDUINT8* chSwitchState״̬ * BY CGH 20250224 */ -UINT8 RouteRelAllSwitchPosCheck(UINT16 const routeId, UINT16* switchID, UINT8* chSwitchState) +UINT8 RouteRelAllSwitchPosCheck(UINT16 const routeId) { /* · */ UINT8 chRouteSwSum = GetRouteSwitchSum(routeId); @@ -25695,8 +25853,6 @@ UINT8 RouteRelAllSwitchPosCheck(UINT16 const routeId, UINT16* switchID, UINT8* c { /*λòȷ*/ reVal = CI_ERROR; - *switchID = szRouteSwDataBuf[ii].SwitchId; - *chSwitchState = chSwState; break; } } @@ -25715,8 +25871,6 @@ UINT8 RouteRelAllSwitchPosCheck(UINT16 const routeId, UINT16* switchID, UINT8* c { /*λòȷ*/ reVal = CI_ERROR; - *switchID = szRouteSwDataBuf[ii].SwitchId; - *chSwitchState = chSwState; break; } } @@ -25733,477 +25887,4 @@ UINT8 RouteRelAllSwitchPosCheck(UINT16 const routeId, UINT16* switchID, UINT8* c /*ȫͨ*/ return reVal; -} - -/* -*ܣղ̵ -*˵const UINT16 wOverlapIdID -* UINT8 chSendLevel, 뷢ͼ -*ֵCI_ERROR ʧ -* CI_SUCCESS ɹ -* RELAY_STATE_WAITE ղ̵--ȴ -* by cgh 20250617 -*/ -UINT8 OverlapZhaoChaRelayCheck(const UINT16 wOverlapId, UINT8 chSendLevel) -{ - UINT8 chReval = CI_ERROR; - UINT16 wThisZhaoChaRelayId = 0U;/*ղ̵ID*/ - UINT8 chRelayCollState = 0U; /*̵ɼ״̬*/ - UINT8 chFunctionId = EFUNC_OVERLAP_ZHAOCHA_CHECK; /**/ - UINT16 wThatZhaoChaRelayId = 0U;/*ղ̵ID*/ - - if ((0U < wOverlapId) && (OVERLAP_SUM_MAX > wOverlapId)) - { - chReval = CI_SUCCESS; - - wThisZhaoChaRelayId = GetOverlapThisZhaoChaRelayId(wOverlapId); - - if (0U < wThisZhaoChaRelayId) - { - chRelayCollState = GetRelayCollState(wThisZhaoChaRelayId); - - if (RELAY_STATE_UP == chRelayCollState) - { - /* ¼ */ - SetErrorData(chFunctionId, CI_DEVICE_TYPE_RELAY, wThisZhaoChaRelayId, ETYPE_THIS_ZHAOCHA, RELAY_STATE_UP, ESEND_LEVEL_ZERO); - /*ȴصȴ־*/ - chReval = RELAY_STATE_WAITE; - } - else - { - ; /*سɹ*/ - } - } - else - { - ; /*һسɹ*/ - } - - /*Զղ̵*/ - wThatZhaoChaRelayId = GetOverlapThatZhaoChaRelayId(wOverlapId); - - if (0U < wThatZhaoChaRelayId) - { - chRelayCollState = GetRelayCollState(wThatZhaoChaRelayId); - - if (RELAY_STATE_UP == chRelayCollState) - { - /*ͨ*/ - } - else - { - /* ¼ */ - SetErrorData(chFunctionId, CI_DEVICE_TYPE_RELAY, wThatZhaoChaRelayId, ETYPE_THAT_ZHAOCHA, chRelayCollState, chSendLevel); - /*ȴصȴ־*/ - chReval = CI_ERROR; - } - } - else - { - ; /*һرղ*/ - } - - } - else - { - ; /*ʧ*/ - } - - return chReval; -} - -/* -* ·ȫռ -* ˵ UINT16 routeId, · -* ֵ CI_ERROR -* CI_SUCCESS ״̬Ϊ -* by fan 20250724 -*/ -UINT8 RouteAllSecProtectLockCheck(UINT16 const routeId) -{ - /* ·*/ - UINT8 const checkSum = GetRoutePhysicalSectionSum(routeId); - RoutePhysicalSectionStruct* const dataIdBuf = GetRouteSectionData(routeId); - - /* ֲʼ */ - UINT8 i = 0u; /* ѭ */ - UINT16 devId = 0u; - UINT8 devState = 0u; - UINT8 reVal = CI_ERROR; - - /* ռü */ - if ((0u == checkSum)||(NULL == dataIdBuf)) - { - /*ݴ*/ - reVal = CI_ERROR; - } - else - { - reVal = CI_SUCCESS; - /*ʼ*/ - for (i = 0u; i wIdIndex) - { - cRouteBelongCiId = GetRouteBelongCiId(wRouteId); - cCiType = GetCiType(cRouteBelongCiId); - - if ((CI_TYPE_SCX == cCiType) || (CI_TYPE_ZX == cCiType)) - { - cRetVal = CI_SUCCESS; /*dzΣسɹ*/ - } - else if (CI_TYPE_CLD == cCiType) - { - /*·ڳΣ·Ƿڷdzε*/ - cRouteIncPhySecNum = GetRoutePhysicalSectionSum(wRouteId); /*ȡ·Ϣ*/ - pstrRouteIncPhySecData = GetRouteSectionData(wRouteId); - - if ((0U < cRouteIncPhySecNum) && (NULL != pstrRouteIncPhySecData)) - { - for (ii = 0U; ii < cRouteIncPhySecNum; ii++) - { - cPhySecBelongCiId = GetPhySecBelongCiId(pstrRouteIncPhySecData[ii].PhysicalSectionId); - cCiType = GetCiType(cPhySecBelongCiId); - - if (CI_TYPE_ZX == cCiType) - { - break; /*ηdzΣֹͣ*/ - } - else - { - /**/ - } - } - - if (ii != cRouteIncPhySecNum) - { - cRetVal = CI_SUCCESS; /*ηdzΣΪ/·سɹ*/ - } - else - { - cRetVal = CI_ERROR; /*ʧ*/ - } - } - else - { - /*ȡϢʧܣʧ*/ - } - } - else - { - /*ʧ*/ - } - } - else - { - /*ηǷʧ*/ - } - - return cRetVal; -} - -/* -* ռý -* ˵UINT16 overlapId ID -* UINT8 functionId ID -* ֵCI_ERROR 0 ʧ -* CI_SUCCESS 1 ɹ -* Created By LQ 2025.08.18 -*/ -UINT8 OverlapOccuUnlockCheck(UINT16 overlapId, UINT8 functionId) -{ - UINT8 cRetVal = CI_ERROR; - UINT16 wBufIndex = 0U; - UINT16 wOlapBelongRouteId = 0U; /*η·ID*/ - UINT8 cRouteState = 0U; /*·״̬*/ - UINT16 wRouteLatsPhySecId = 0U; /*·һID*/ - UINT8 cPhySecLockState = 0U; /*״̬*/ - UINT8 cOlapIncLogSecNum = 0U; /*ΰ߼*/ - UINT16* pOlapIncLogSecId = NULL; /*ΰ߼ID*/ - UINT8 ii = 0U; - UINT8 cLogSecLockState = 0U; /*߼ν·״̬*/ - UINT8 cLogSecLogLockState = 0U; /*߼߼·״̬*/ - UINT8 cSendLevel = ESEND_LEVEL_ZERO; - - wBufIndex = GetOverlapConfigBufIndex(overlapId); - if (OVERLAP_SUM_MAX > wBufIndex) - { - wOlapBelongRouteId = GetOverlapBelongRouteId(overlapId); - cRouteState = GetRouteState(wOlapBelongRouteId); - if (ROUTE_STATE_IDLE == cRouteState) - { - wRouteLatsPhySecId = GetRouteLastPhySectionId(wOlapBelongRouteId); - cPhySecLockState = GetPhySecLockState(wRouteLatsPhySecId); /*ȡ·һε״̬*/ - if (PHYSICAL_SECTION_LOCK_NO == cPhySecLockState) - { - cOlapIncLogSecNum = GetOverlapLogicSectionSum(overlapId); /*ȡΰ߼Ϣ*/ - pOlapIncLogSecId = GetOverlapLogicSectionBuf(overlapId); - if ((0U != cOlapIncLogSecNum) && (NULL != pOlapIncLogSecId)) - { - for (ii = 0U; ii < cOlapIncLogSecNum; ii++) - { - cLogSecLockState = GetLogSecLockState(pOlapIncLogSecId[ii]); - cLogSecLogLockState = GetLogSecLogLockState(pOlapIncLogSecId[ii]); - if ((LOG_SECTION_LOCK_NORMAL == cLogSecLockState) || (LOG_SECTION_LOGLOCK_NORMAL == cLogSecLogLockState)) - { - /**/ - } - else - { - SetErrorData(functionId, CI_DEVICE_TYPE_LOGICSEC, pOlapIncLogSecId[ii], ETYPE_LOGSEC_LOCK_STATE, cLogSecLockState, cSendLevel); - cRetVal = CI_ERROR; /*ΰ߼δգʧ*/ - break; - } - } - - if (ii == cOlapIncLogSecNum) - { - cRetVal = CI_SUCCESS; /*ΰ߼ȫգسɹ*/ - } - else - { - cRetVal = CI_ERROR; - } - } - else - { - cRetVal = CI_ERROR; /*ȡ߼Ϣʧܣ쳣֧ʧ*/ - } - } - else - { - SetErrorData(functionId, CI_DEVICE_TYPE_PHYSEC, wRouteLatsPhySecId, ETYPE_PS_LOCK_STATE, cPhySecLockState, cSendLevel); - cRetVal = CI_ERROR; /*·һգʧ*/ - } - } - else - { - SetErrorData(functionId, CI_DEVICE_TYPE_ROUTE, wOlapBelongRouteId, ETYPE_ROUTE_STATE, cRouteState, cSendLevel); - cRetVal = CI_ERROR; /*·δУʧ*/ - } - } - else - { - cRetVal = CI_ERROR; /*ηǷʧ*/ - } - - return cRetVal; -} - -/* -* гռȫָμ -* const UINT16 wPhySecId ID -* const UINT16 wTrainId гID -* -* ֵ CI_ERROR 0 ȫ -* CI_SUCCESS 1 ȫ -* by cgh 20251017 -*/ -UINT8 TrainOccSameSecCheck(const UINT16 wPhySecId, const UINT16 wTrainId) -{ - /*ֲʼ*/ - UINT8 chRetVal = CI_ERROR; /*ֵ*/ - UINT16 wTrainIndex = 0U; /*г*/ - UINT16 wTrainMaxHeadLink = 0U; /*гǰLINK*/ - UINT16 wTrainMinHeadLink = 0U; /*гСǰLINK*/ - UINT16 wTrainMaxTailLink = 0U; /*гLINK*/ - UINT16 wTrainMinTailLink = 0U; /*гСLINK*/ - UINT16 wTrainMaxHeadPhySecId = 0U; /*гǰID*/ - UINT16 wTrainMinHeadPhySecId = 0U; /*гСǰID*/ - UINT16 wTrainMaxTailPhySecId = 0U; /*гID*/ - UINT16 wTrainMinTailPhySecId = 0U; /*гСID*/ - UINT8 chPhySecCurOccState = 0U; /*εǰռ״̬*/ - - wTrainIndex = GetTrainBufIndex(wTrainId); - - if ((0U < wPhySecId) && (PHYSICAL_SECTION_SUM_MAX > wPhySecId) && (0U < wTrainIndex) && (TRAIN_SUM_MAX > wTrainIndex)) - { - chPhySecCurOccState = GetPhySecCurMergeState(wPhySecId); - - if (SECTION_OCCUPY_YES == chPhySecCurOccState) - { - /*ȡг͵λ*/ - wTrainMaxHeadLink = GetTrainMaxHeadLink(wTrainId); - wTrainMinHeadLink = GetTrainMinHeadLink(wTrainId); - wTrainMaxTailLink = GetTrainMaxTailLink(wTrainId); - wTrainMinTailLink = GetTrainMinTailLink(wTrainId); - - /*ȡгǰȫλöӦ*/ - wTrainMaxHeadPhySecId = GetLinkRelatedPhySec(wTrainMaxHeadLink); - wTrainMinHeadPhySecId = GetLinkRelatedPhySec(wTrainMinHeadLink); - wTrainMaxTailPhySecId = GetLinkRelatedPhySec(wTrainMaxTailLink); - wTrainMinTailPhySecId = GetLinkRelatedPhySec(wTrainMinTailLink); - - if ((wPhySecId == wTrainMaxHeadPhySecId) || (wPhySecId == wTrainMinHeadPhySecId) - || (wPhySecId == wTrainMaxTailPhySecId) || (wPhySecId == wTrainMinTailPhySecId)) - { - /*ռǷͬһμ*/ - chRetVal = OccBelSameSecCheck(wPhySecId, wTrainMaxHeadPhySecId); - chRetVal &= OccBelSameSecCheck(wPhySecId, wTrainMinHeadPhySecId); - chRetVal &= OccBelSameSecCheck(wPhySecId, wTrainMaxTailPhySecId); - chRetVal &= OccBelSameSecCheck(wPhySecId, wTrainMinTailPhySecId); - } - else - { - /*гһλָ*/ - ; - } - } - else - { - /*ռ*/ - - } - } - else - { - /*ϷУ鲻ͨ*/ - ; - } - - return chRetVal; -} - -/* -* ռǷͬһμ -* const UINT16 wBasePhySecId ׼ID -* const UINT16 wCheckPhySecId ID -* -* ֵ CI_ERROR 0 -* CI_SUCCESS 1 -* by cgh 20251017 -*/ -UINT8 OccBelSameSecCheck(const UINT16 wBasePhySecId, const UINT16 wCheckPhySecId) -{ - /*ֲʼ*/ - UINT8 chRetVal = CI_ERROR; /*ֵ*/ - UINT8 chPhySecCurOccState = 0U; /*εǰռ״̬*/ - - if ((0U < wBasePhySecId) && (PHYSICAL_SECTION_SUM_MAX > wBasePhySecId) && (0U < wCheckPhySecId) && (PHYSICAL_SECTION_SUM_MAX > wCheckPhySecId)) - { - if (wBasePhySecId == wCheckPhySecId) - { - /*ռͬһ*/ - chRetVal = CI_SUCCESS; - } - else - { - /*ǰڵǰռãΪгռòȫָ*/ - chPhySecCurOccState = GetPhySecCurMergeState(wCheckPhySecId); - - if (SECTION_OCCUPY_NO != chPhySecCurOccState) - { - /*ռòͬһ*/ - chRetVal = CI_ERROR; - } - else - { - /*ռͬһ*/ - chRetVal = CI_SUCCESS; - } - } - } - else - { - /*ϷУ鲻ͨ*/ - chRetVal = CI_ERROR; - } - - return chRetVal; -} +} \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicCheck.h b/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicCheck.h index 09a3552..636ec6a 100644 --- a/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicCheck.h +++ b/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicCheck.h @@ -1021,6 +1021,14 @@ CI_ERROR: */ UINT8 CheckRouteZongRenJieFeasibility(const UINT16 routeId); +/* +* ·˽ĿԡֻҪ·һοֱӽ̹Ϊ˽Сע·˽ⲻɵøú +* ˵ const UINT16 routeId, ·ID +* ֵ UINT8 +CI_SUCCESS:˽ִ +CI_ERROR:˽ⲻִ +*/ +UINT8 CheckDiaoCheRouteZRJFeasibility(const UINT16 routeId); /* ձ @@ -1489,7 +1497,6 @@ UINT8 AxisSecAllSwitchPosCheck(UINT16 const axisSecId,UINT16 *pDevId,UINT8 *pDev * ˵ UINT16 const routeId, · * ֵ CI_ERROR * CI_SUCCESS -* qw.liu ޸ ·ⷽһελü鲻ʹýӽΣΪֱӲ߼ */ UINT8 RouteOutfirstPhySecSwiPosCheck(UINT16 const routeId); /* @@ -2287,7 +2294,7 @@ UINT16 SearchNonMainRoute(UINT8 cRouteSum, UINT16 wRouteIdBuff[]); UINT8 SwitchRelLogSecLSXSStateCheck(UINT16 switchId, UINT16* pLogSecId, UINT8* pLogState); /* -* ·ղ +* źűֿʱ·ղ * ˵ UINT16 const routeId, · * ֵ CI_ERROR ʧ * CI_SUCCESS ɹ @@ -2607,15 +2614,13 @@ UINT8 CtTrainHeadSuspCheck(const UINT16 wTrainId, const UINT8 cLogSecSeqDir, con * βֽ·߼кгλü * const UINT8 cLogSecSum ߼ * const UINT16* pLogSecIdBuff ߼ -* const UINT16 wTrainId гID -* const UINT8 cFunctionId ID -* const UINT8 cSendLevel ͼ +* const UINT16 wTrainId * * ֵ CI_ERROR 0 ʧ * CI_SUCCESS 1 ɹ -* Edit By cgh 2025.10.17 +* 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); /* * βֽ·߼·ƥ @@ -2706,83 +2711,13 @@ UINT8 OtherCiOvlpRelProSwMovValCheck(const UINT16 wOverlapId); UINT8 OverlapProSwUsingCheck(const UINT16 wOverlapId, UINT16* pDevId, UINT8* pDevState, UINT8* pAlarmType); /* -* ȡָ·ڿ־ -* ˵ const UINT16 routeId ·ID -* ֵ ·ڿ־ -* UINT16* switchIDIDUINT8* chSwitchState״̬ -* by cgh 20241202 -*/ -UINT8 RouteRelAllSwitchPosCheck(UINT16 const routeId, UINT16* switchID, UINT8* chSwitchState); - -/* -*ܣղ̵ -*˵const UINT16 wOverlapIdID -* UINT8 chSendLevel, 뷢ͼ -*ֵCI_ERROR ʧ -* CI_SUCCESS ɹ -* RELAY_STATE_WAITE ղ̵--ȴ -* by cgh 20250617 -*/ -UINT8 OverlapZhaoChaRelayCheck(const UINT16 wOverlapId, UINT8 chSendLevel); - -/* -* ·ȫռ -* ˵ UINT16 routeId, · +* ·еλȷ +* ˵ UINT16 const routeId, ·ţ * ֵ CI_ERROR -* CI_SUCCESS ״̬Ϊ -* by fan 20250724 +* CI_SUCCESS +* BY CGH 20250224 */ -UINT8 RouteAllSecProtectLockCheck(UINT16 const routeId); - -/* -* ߼ι߳ -* ˵ UINT16 logSectionId, ߼ID -* ֵ CI_ERROR ߳ -* CI_SUCCESS ͨ -* by fan 20250728 -*/ -UINT8 LogSecRelateNoSleepTrainCheck(UINT16 const logSectionId); - -/* -* Уָ·Ƿdzν·Ϊγ/ν· -* ˵UINT16 wRouteId ·ID -* ֵCI_ERROR · -* CI_SUCCESS dzν·Ϊγ/ν· -* 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); - -/* -* гռȫָμ -* const UINT16 wPhySecId ID -* const UINT16 wTrainId гID -* -* ֵ CI_ERROR 0 ȫ -* CI_SUCCESS 1 ȫ -* by cgh 20251017 -*/ -UINT8 TrainOccSameSecCheck(const UINT16 wPhySecId, const UINT16 wTrainId); - -/* -* ռǷͬһμ -* const UINT16 wBasePhySecId ׼ID -* const UINT16 wCheckPhySecId ID -* -* ֵ CI_ERROR 0 -* CI_SUCCESS 1 -* by cgh 20251017 -*/ -UINT8 OccBelSameSecCheck(const UINT16 wBasePhySecId, const UINT16 wCheckPhySecId); +UINT8 RouteRelAllSwitchPosCheck(UINT16 const routeId); #endif diff --git a/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicProcess.c b/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicProcess.c index 1e221ff..269c600 100644 --- a/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicProcess.c +++ b/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicProcess.c @@ -1127,7 +1127,6 @@ UINT8 LockLeadRouteLogicProcess(UINT16 const routeId) /*Ϸͼ*/ UINT8 sendLevel = 0u; - UINT8 cFuncSwitch = FUNC_SWITCH_ON; /*·Ƿſ*/ if (AutoSignalOrRouteValid(routeId) == CI_SUCCESS) @@ -1161,9 +1160,19 @@ UINT8 LockLeadRouteLogicProcess(UINT16 const routeId) if (CI_SUCCESS == reResult) { - /* ·״̬Ϊѡš*/ + /* ·״̬Ϊ + ѡš + ·쳣 + Ԥա + ӽ + ӽ쳣 + */ devState = GetRouteState(routeId); - if (devState == ROUTE_STATE_LEAD_XUANPAI) + if ((devState == ROUTE_STATE_LEAD_XUANPAI) || + (devState == ROUTE_STATE_FIRST_LOCKERR) || + (devState == ROUTE_STATE_YUXIAN_LOCK) || + (devState == ROUTE_STATE_NEAR_LOCK) || + (devState == ROUTE_STATE_NEAR_LOCKERR)) { /* ͨ */ reResult = CI_SUCCESS; @@ -1250,18 +1259,7 @@ UINT8 LockLeadRouteLogicProcess(UINT16 const routeId) if (CI_SUCCESS == reResult) { /**/ - cFuncSwitch = GetCiFunctionSwitchConfig(FUNC_LEADROUTE_FLOODGATE_CHECK); - - if (FUNC_SWITCH_OFF == cFuncSwitch) - { - /*·ղ״̬*/ - } - else - { - /*·ռ״̬*/ - checkResult = BlocRouteFloodGateCheck(routeId, functionId, sendLevel); - } - + checkResult = BlocRouteFloodGateCheck(routeId, functionId, sendLevel); if (CI_SUCCESS == checkResult) { reResult = CI_SUCCESS; @@ -2405,21 +2403,6 @@ UINT8 LockRouteOverlapLogicProcess(UINT16 const routeId, UINT16 const overlapId, } } - /*ղ*/ - if (CI_SUCCESS == reResult) - { - checkResult = OverlapZhaoChaRelayCheck(overlapId, sendLevel); - - if (CI_ERROR == checkResult) - { - reResult = CI_ERROR; - } - else - { - ; /*֮ǰʱȲ鱾Ƿ*/ - } - } - /* μηΡδá*/ if (CI_SUCCESS == reResult) { @@ -3081,7 +3064,7 @@ UINT8 OpenBlocLTrainRouteLogicProcess(UINT16 const routeId) else { /* ʧܷ */ - reResult = checkResult; + reResult = CI_ERROR; } } @@ -3680,7 +3663,7 @@ UINT8 OpenCbtcLTrainRouteLogicProcess(UINT16 const routeId) else { /* ʧܷ */ - reResult = checkResult; + reResult = CI_ERROR; } } @@ -4257,7 +4240,7 @@ UINT8 OpenBlocReturnRouteLogicProcess(UINT16 const routeId) else { /* ʧܷ */ - reResult = checkResult; + reResult = CI_ERROR; } } @@ -4813,7 +4796,7 @@ UINT8 OpenCbtcReturnRouteLogicProcess(UINT16 const routeId) else { /* ʧܷ */ - reResult = checkResult; + reResult = CI_ERROR; } } @@ -5255,7 +5238,6 @@ UINT8 OpenLeadRouteLogicProcess(UINT16 const routeId) /* ȡ־ */ UINT8 const zxqFlag = GetRouteZongQuXiaoFlag(routeId); UINT8 const zrjFlag = GetRouteZongRenJieFlag(routeId); - UINT8 cFuncSwitch = FUNC_SWITCH_ON; /*·Ƿſ*/ /* ȡ۳Ƿرźű־ */ @@ -5291,13 +5273,9 @@ UINT8 OpenLeadRouteLogicProcess(UINT16 const routeId) if (CI_SUCCESS == reResult) { - /* ·״̬Ϊա򡾽·쳣Ԥա򡾽ӽ򡾽ӽ쳣*/ + /* ·״̬Ϊա*/ devState = GetRouteState(routeId); - if ((ROUTE_STATE_LEAD_LOCK == devState) || - (ROUTE_STATE_FIRST_LOCKERR == devState) || - (ROUTE_STATE_YUXIAN_LOCK == devState) || - (ROUTE_STATE_NEAR_LOCK == devState) || - (ROUTE_STATE_NEAR_LOCKERR == devState)) + if (devState == ROUTE_STATE_LEAD_LOCK) { /* ͨ */ reResult = CI_SUCCESS; @@ -5433,18 +5411,7 @@ UINT8 OpenLeadRouteLogicProcess(UINT16 const routeId) if (CI_SUCCESS == reResult) { /**/ - cFuncSwitch = GetCiFunctionSwitchConfig(FUNC_LEADROUTE_FLOODGATE_CHECK); - - if (FUNC_SWITCH_OFF == cFuncSwitch) - { - /*·Ų״̬*/ - } - else - { - /*·ż״̬*/ - checkResult = BlocRouteFloodGateCheck(routeId, functionId, sendLevel); - } - + checkResult = BlocRouteFloodGateCheck(routeId,functionId,sendLevel); if (CI_SUCCESS == checkResult) { reResult = CI_SUCCESS; @@ -5522,7 +5489,9 @@ UINT8 KeepLeadRouteLogicProcess(UINT16 const routeId) /* ȡ־ */ UINT8 const zxqFlag = GetRouteZongQuXiaoFlag(routeId); UINT8 const zrjFlag = GetRouteZongRenJieFlag(routeId); - UINT8 cFuncSwitch = FUNC_SWITCH_ON; /*·Ƿſ*/ + /* ӷ */ + + /*źſʱ״̬*/ UINT8 const leadSinalOpenState = SystemOverTimeCheck(GetRouteLeadFaultOpenStartCyc(routeId), @@ -5756,18 +5725,7 @@ UINT8 KeepLeadRouteLogicProcess(UINT16 const routeId) if (CI_SUCCESS == reResult) { /**/ - cFuncSwitch = GetCiFunctionSwitchConfig(FUNC_LEADROUTE_FLOODGATE_CHECK); - - if (FUNC_SWITCH_OFF == cFuncSwitch) - { - /*·ֿŲ״̬*/ - } - else - { - /*·ֿż״̬*/ - checkResult = BlocRouteFloodGateCheck(routeId, functionId, sendLevel); - } - + checkResult = BlocRouteFloodGateCheck(routeId,functionId,sendLevel); if (CI_SUCCESS == checkResult) { reResult = CI_SUCCESS; @@ -5864,6 +5822,7 @@ UINT8 RouteFirstSecAutoUnlockProcess(UINT16 const routeId, UINT16* phySectionId) UINT16 belongRouteID = 0U; /*Ϸͼ*/ UINT8 sendLevel = ESEND_LEVEL_ZERO; /*ATS*/ + UINT8 chRouteLevel = 0U; /*һڵǰ·ġա*/ nlockSectionId = GetRouteFirstNormalLockSection(routeId); @@ -5885,6 +5844,7 @@ UINT8 RouteFirstSecAutoUnlockProcess(UINT16 const routeId, UINT16* phySectionId) returnRouteLockTime = GetRouteLockStartCycNum(routeId); /*۳·ʱ*/ backRouteLockTime = GetRouteLockStartCycNum(belongRouteID); + chRouteLevel = GetRouteLevel(routeId); if(CI_SUCCESS == reResult) { @@ -5956,8 +5916,18 @@ UINT8 RouteFirstSecAutoUnlockProcess(UINT16 const routeId, UINT16* phySectionId) /*·ڷһռñʱẈ̂ȡղ̵()״̬*/ if(CI_SUCCESS == reResult) { - cancleZhaoChaRelayId = GetRouteCancleZhaoChaRelayId(routeId); /*ȡղ̵ID*/ - + 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)) { /*ȡ̵Чȡ̵ɼ״̬Ϊ*/ @@ -6040,8 +6010,18 @@ UINT8 RouteFirstSecAutoUnlockProcess(UINT16 const routeId, UINT16* phySectionId) /*·ڷһռñʱẈ̂ȡղ̵()״̬*/ if(CI_SUCCESS == reResult) { - cancleZhaoChaRelayId = GetRouteCancleZhaoChaRelayId(routeId); /*ȡղ̵ID*/ - + 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)) { /*ȡ̵Чȡ̵ɼ״̬Ϊ*/ @@ -6453,10 +6433,9 @@ UINT8 PhySectionDelayUnlockProcess(UINT16 const routeId, UINT16* phySectionId) /* * ·overlap߼ * ˵ const UINT16 routeId · -* ֵ CI_ERROR 0x00 ʧ -* CI_SUCCESS 0x01 ɹ -* CI_UNLOCK_OVERLAP_REQURE 0x02 ZC/ -* CI_OVERLAP_OCC_UNLOCK 0x06 ִռ +* ֵ CI_ERROR +* CI_SUCCESS +* CI_UNLOCK_OVERLAP_REQURE ZC * ϱ룺 EFUNC_UNLOCK_OVER_LAP */ UINT8 UnlockRouteOverlapLogicProcess(UINT16 const routeId, UINT16* overlapId,UINT16* pTrainId) @@ -6494,8 +6473,8 @@ UINT8 UnlockRouteOverlapLogicProcess(UINT16 const routeId, UINT16* overlapId,UIN UINT8 sendLevel = ESEND_LEVEL_ZERO; /*ATS*/ UINT8 cIvocUnlockOverlapFlag = 0U; /*гͬα־*/ UINT8 cRcWorkMode = 0U; + UINT8 phySecSum = 0U; UINT8 chABLFlag = 0U; /*ABLռñ־*/ - UINT8 chProtectCheck = 0U; localCiId = GetSystemParaLocalCiId(); @@ -6531,21 +6510,12 @@ UINT8 UnlockRouteOverlapLogicProcess(UINT16 const routeId, UINT16* overlapId,UIN } else { - /*ռ*/ - checkResult = OverlapOccuUnlockCheck(overlapLockedId, functionId); - if (CI_SUCCESS == checkResult) - { - reResult = CI_OVERLAP_OCC_UNLOCK; - *overlapId = overlapLockedId; - } - else - { - /* ¼ */ - SetErrorData(functionId, CI_DEVICE_TYPE_PHYSEC, devId, ETYPE_PS_MERGY_OCU_STATE, devState, sendLevel); - /* ʧܷ */ - reResult = CI_ERROR; - *overlapId = overlapLockedId; - } + /* ¼ */ + SetErrorData(functionId,CI_DEVICE_TYPE_PHYSEC,devId,ETYPE_PS_MERGY_OCU_STATE,devState,sendLevel); + /* ʧܷ */ + reResult = CI_ERROR; + *overlapId = overlapLockedId; + } } @@ -6573,10 +6543,7 @@ UINT8 UnlockRouteOverlapLogicProcess(UINT16 const routeId, UINT16* overlapId,UIN if (CI_SUCCESS == reResult) { - /*·һΡδա - շ෴ - ռãӳٽͣȽ - δռãҽ·ξա*/ + /*·״̬Сҽ·һΡδա*/ devId = GetRouteLastPhySectionId(routeId); devState = GetPhySecLockState(devId); @@ -6783,10 +6750,9 @@ UINT8 UnlockRouteOverlapLogicProcess(UINT16 const routeId, UINT16* overlapId,UIN } else { - /*·״̬Ϊգɽ*/ - chProtectCheck = RouteAllSecProtectLockCheck(routeId); - - if (CI_SUCCESS == chProtectCheck) + phySecSum = GetRoutePhysicalSectionSum(routeId); + /*·ֻһΣҸαǰһ· Խ*/ + if ((PHYSICAL_SECTION_LOCK_PROTECT == devState)&&(1U== phySecSum)) { reResult = CI_SUCCESS; *overlapId = overlapLockedId; @@ -6871,6 +6837,7 @@ UINT8 RouteCancelLogicProcess(UINT16 const routeId) UINT8 relayState = 0u; /*̵ɼ״̬*/ /*Ϸͼ*/ UINT8 sendLevel = ESEND_LEVEL_ATS; /*ATS*/ + UINT8 chRouteLevel = 0U; UINT8 cRouteType = 0U; /*·*/ /**/ @@ -6943,8 +6910,19 @@ UINT8 RouteCancelLogicProcess(UINT16 const routeId) 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)) { /*ȡ̵Чȡ̵ɼ״̬Ϊ*/ @@ -9307,7 +9285,6 @@ UINT8 OpenBlocRouteSectionCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel) UINT8 routeState = 0u; UINT8 chDsnFuncSwitch = 0U; /* ֱռùܿ */ UINT8 chXianSuFuncSwitch = 0U; /*ģʽźſǷʱٿ*/ - UINT8 cCrossState = 0U; /*źŻѹ״̬*/ chDsnFuncSwitch = GetCiFunctionSwitchConfig(FUNC_TOA_SWITCH); chXianSuFuncSwitch = GetCiFunctionSwitchConfig(FUNC_XIANSU_SWITCH); @@ -9346,8 +9323,7 @@ UINT8 OpenBlocRouteSectionCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel) } else { - cCrossState = GetSignalCrossState(startSignalId); - if ((SIGNAL_CROSS_STATE_NO == cCrossState) && (CI_SUCCESS == checkResult)) + if ((SIGNAL_CROSS_STATE_NO == GetSignalCrossState(startSignalId)) && (CI_SUCCESS == checkResult)) { /* ͨ */ reResult = CI_SUCCESS; @@ -9357,17 +9333,7 @@ UINT8 OpenBlocRouteSectionCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel) if (FUNC_SWITCH_ON != chDsnFuncSwitch) { /* ¼ */ - if (CI_SUCCESS == checkResult) - { - /*ѹδռã¼ѹ*/ - SetErrorData(functionId, CI_DEVICE_TYPE_SIGNAL, startSignalId, ETYPE_SIG_CROSS, cCrossState, sendLevel); - } - else - { - /*ռã¼ռñ*/ - SetErrorData(functionId, CI_DEVICE_TYPE_PHYSEC, devId, ETYPE_PS_MERGY_OCU_STATE, cPhySecCurMergeState, sendLevel); - } - + SetErrorData(functionId, CI_DEVICE_TYPE_PHYSEC, devId, ETYPE_PS_MERGY_OCU_STATE, cPhySecCurMergeState, sendLevel); /* ʧܷ */ reResult = CI_ERROR; } @@ -10591,6 +10557,7 @@ UINT8 RouteLogSecAutoUnlockProcess(UINT16 const routeId, UINT16* logSectionId) UINT8 leavePhyCurOccState = 0u; UINT8 reResult = CI_ERROR; /*ֵ*/ UINT8 sendLevel = ESEND_LEVEL_ZERO; /*ATS*/ + UINT8 chRouteLevel = 0U; /*һڵǰ·߼*/ nlockLogId = GetRouteFirstNormalLockLogId(routeId); @@ -10624,8 +10591,19 @@ UINT8 RouteLogSecAutoUnlockProcess(UINT16 const routeId, UINT16* logSectionId) /*·ڷһռñʱẈ̂ȡղ̵()״̬*/ 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)) { /*ȡ̵Чȡ̵ɼ״̬Ϊ*/ @@ -10918,8 +10896,10 @@ void RouteLgcSecResUnlockProcess(const UINT16 wRouteId) UINT8 chRelayState = 0U; UINT16 routeLogNum = 0u; UINT16 wTrainId = 0U; + UINT8 chLogicTrainRetrunStt = 0U; UINT16* routeLogIdBuf = NULL; UINT8 cRouteState = 0U; + UINT8 chRouteLevel = 0U; UINT8 chTrainLevel = 0U; UINT8 chThreePointCheck = CI_ERROR; UINT8 chLocalCi = 0U; @@ -10934,8 +10914,19 @@ void RouteLgcSecResUnlockProcess(const UINT16 wRouteId) if ((0u < routeLogNum) && (MAX_ROUTE_IN_LT_NUM > routeLogNum)) { - wRelayZhaoCId = GetRouteCancleZhaoChaRelayId(wRouteId); /*ȡղ̵ID*/ - + chRouteLevel = GetRouteLevel(wRouteId); + if (ROUTE_LEVEL_BLOC == chRouteLevel) + { + wRelayZhaoCId = GetRouteCancleZhaoChaRelayId(wRouteId); /*ģʽȡղ̵ID*/ + } + else if (ROUTE_LEVEL_CBTC == chRouteLevel) + { + wRelayZhaoCId = GetRouteCbtcCancelZhaochaRelay(wRouteId);/*CBTCģʽȡղ̵ID*/ + } + else + { + ; /*Ƿලģʽ̵IDΪ0治ᴦ*/ + } if ((0u != wRelayZhaoCId) && (0xFFFFU != wRelayZhaoCId)) { /*ȡ̵Чȡ̵ɼ״̬Ϊ*/ @@ -11009,6 +11000,7 @@ void RouteLgcSecResUnlockProcess(const UINT16 wRouteId) chLgcResTrainSum = GetLogSecTrainInfoSum(wUnlockLgcSecId); wTrainId = GetLogSecTrainIdByIndex(wUnlockLgcSecId, 0); + chLogicTrainRetrunStt = GetLogSecTrainReturnState(wUnlockLgcSecId, wTrainId); } else { @@ -11024,6 +11016,21 @@ void RouteLgcSecResUnlockProcess(const UINT16 wRouteId) else { } +#if 0 + if (CI_SUCCESS == chKeepWork) + { + if (LOGIC_SECTION_TRAIN_RETURN_NO != chLogicTrainRetrunStt) + { + chKeepWork = CI_ERROR; + } + else + { + } + } + else + { + } +#endif if (CI_SUCCESS == chKeepWork) { chLocalCi = GetSystemParaLocalCiId(); @@ -12433,6 +12440,7 @@ void OtherCiOlpProSwUseCancelPro(const UINT16 wSwitchId, const UINT16 wOverlapId UINT16 wOverlapIndex = 0U; UINT8 cLocalCiId = 0U; /*ID*/ UINT8 cOverlapBelongCiId = 0U; /*ID*/ + UINT8 ii = 0U; UINT8 cSwitchBelongCiId = 0U; /*ID*/ UINT16 wUsingBelongOverlapId = 0U; /*ID*/ UINT8 cSwitchUsingState = 0U; /*״̬*/ diff --git a/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicProcess.h b/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicProcess.h index 51cd2ed..13d5dda 100644 --- a/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicProcess.h +++ b/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicProcess.h @@ -325,11 +325,10 @@ UINT8 PhySectionDelayUnlockProcess(const UINT16 routeId, UINT16* phySectionId); /* C25_·overlap߼ */ /* * ·overlap߼ -* ˵ const UINT16 routeId · -* ֵ CI_ERROR 0x00 ʧ -* CI_SUCCESS 0x01 ɹ -* CI_UNLOCK_OVERLAP_REQURE 0x02 ZC/ -* CI_OVERLAP_OCC_UNLOCK 0x06 ִռ +* ˵ const UINT16 routeId +* ֵ CI_ERROR +* CI_SUCCESS +* CI_UNLOCK_OVERLAP_REQURE ZC * ϱ룺 EFUNC_UNLOCK_OVER_LAP */ UINT8 UnlockRouteOverlapLogicProcess(const UINT16 routeId, UINT16* overlapId, UINT16* pTrainId); diff --git a/TSCP/src/APP/ciapp/LogicProcess/TradInterlockLogicProcess.c b/TSCP/src/APP/ciapp/LogicProcess/TradInterlockLogicProcess.c index c906723..da8bfff 100644 --- a/TSCP/src/APP/ciapp/LogicProcess/TradInterlockLogicProcess.c +++ b/TSCP/src/APP/ciapp/LogicProcess/TradInterlockLogicProcess.c @@ -181,7 +181,6 @@ UINT8 SetLeadRouteP(const UINT16 routeId) UINT16 devId = 0u; /*豸ID*/ UINT8 devState = 0u; /*豸״̬*/ UINT8 reResult = CI_SUCCESS; /*ֵ*/ - UINT8 cFuncSwitch = FUNC_SWITCH_ON; /*·Ƿſ*/ /* */ devId = routeId; @@ -227,17 +226,8 @@ UINT8 SetLeadRouteP(const UINT16 routeId) if (CI_SUCCESS == reResult) { /**/ - cFuncSwitch = GetCiFunctionSwitchConfig(FUNC_LEADROUTE_FLOODGATE_CHECK); - - if (FUNC_SWITCH_OFF == cFuncSwitch) - { - /*·״̬*/ - } - else - { - /*·״̬*/ - reResult = BlocRouteFloodGateCheck(routeId, functionId, sendLevel); - } + reResult = BlocRouteFloodGateCheck(routeId,functionId,sendLevel); + } return reResult; @@ -2005,7 +1995,9 @@ UINT8 CancelDTrainRouteP(const UINT16 routeId) UINT8 devState = 0u; /*豸״̬*/ UINT16 cancleZhaoChaRelayId = 0u; /*ȡղ̵ID*/ UINT8 relayState = 0u; /*̵ɼ״̬*/ - + UINT8 chRouteLevel = 0U; + + /* */ /*·*/ checkResult = RouteAllSecLockStateCheck(routeId,PHYSICAL_SECTION_LOCK_NORMAL,&devId,&devState); @@ -2042,8 +2034,19 @@ UINT8 CancelDTrainRouteP(const UINT16 routeId) } 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)) { /*ȡ̵Чȡ̵ɼ״̬Ϊ*/ @@ -2525,7 +2528,7 @@ UINT8 SetLTrainRouteSwitchCheck(UINT16 routeId, UINT8 functionId, UINT8 sendLeve } else { - /*ǽ·ȴ״̬,ȲǷȫλãȴ*/ + reResultP = CI_ERROR; } if (CI_ERROR == reResultP) @@ -4112,7 +4115,6 @@ UINT8 SetLeadRouteCheck(const UINT16 routeId) UINT16 devId = 0u; /*豸ID*/ UINT8 devState = 0u; /*豸״̬*/ UINT8 reResult = CI_ERROR; /*ֵ*/ - UINT8 cFuncSwitch = FUNC_SWITCH_ON; /*·Ƿſ*/ /* */ devId = routeId; @@ -4212,18 +4214,7 @@ UINT8 SetLeadRouteCheck(const UINT16 routeId) /**/ if (CI_SUCCESS == reResult) { - cFuncSwitch = GetCiFunctionSwitchConfig(FUNC_LEADROUTE_FLOODGATE_CHECK); - - if (FUNC_SWITCH_OFF == cFuncSwitch) - { - /*·ղ״̬*/ - } - else - { - /*·ռ״̬*/ - reResult = BlocRouteFloodGateCheck(routeId, functionId, sendLevel); - } - + reResult = BlocRouteFloodGateCheck(routeId, functionId, sendLevel); if (CI_ERROR == reResult) { /* ʧܷ */ diff --git a/TSCP/src/APP/ciapp/Mask/MaskDefine.h b/TSCP/src/APP/ciapp/Mask/MaskDefine.h index dda38d5..71ebeb1 100644 --- a/TSCP/src/APP/ciapp/Mask/MaskDefine.h +++ b/TSCP/src/APP/ciapp/Mask/MaskDefine.h @@ -49,7 +49,6 @@ #define MASK_TYPE_SWITCH_BYPASS ((UINT8)0x0D) /*·λ*/ #define MASK_TYPE_SWITCH_OPEN_CAP ((UINT8)0x0E) /*ڰ忨״̬*/ #define MASK_TYPE_SWITCH_SUDDEN_JICHA ((UINT8)0x0F) /*̬λ*/ -#define MASK_TYPE_SWITCH_JICHA ((UINT8)0x10) /*λ28.0.0.14ݽṹʹ*/ /*_λ*/ /* zt ɾش 2022-02-15 */ @@ -63,12 +62,11 @@ #define MASK_TYPE_SIGNAL_REDCLOSE ((UINT8)0x15) /*źŻλ*/ #define MASK_TYPE_SIGNAL_GREENCLOSE ((UINT8)0x16) /*źŻλ*/ #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_YELLOWBREAK ((UINT8)0x1a) /*źŻƶλ*/ #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_OPENSTATE ((UINT8)0x1e) /*źŻ״̬λ*/ @@ -92,9 +90,6 @@ #define MASK_TYPE_SIGNAL_DET_ERR ((UINT8)0x5c) /*źŻ۳ť״̬λ*/ #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_CI_ZC_SIG_ENGINCROSS_STE ((UINT8)0x98) /*źŻ̳صλ*/ @@ -117,12 +112,7 @@ #define MASK_TYPE_PHYSECTION_HEAD_XTD ((UINT8)0x31) /*з״̬λ*/ #define MASK_TYPE_PHYSECTION_HEAD_STD ((UINT8)0x32) /*з״̬λ*/ #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) /*߼ηͨųռλ*/ @@ -166,7 +156,6 @@ #define MASK_TYPE_ROUTE_DC_QINGQIU ((UINT8)0x51) /*·״̬λ(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_DC_AGREE_ERR ((UINT8)0x54) /*·ͬⰴť״̬λ(CI-ATS)*/ /*վ̨λ*/ @@ -180,8 +169,6 @@ #define MASK_TYPE_ESP_FLASH_STATE ((UINT8)0x9b) /*ESSƵ״̬λ*/ #define MASK_TYPE_CANCEL_ESP_FAULT ((UINT8)0x9c) /*ȡرհťλ*/ #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_PSD_STATE ((UINT8)0x60) /*վ̨ȫ״̬λ-ZC,LEU*/ @@ -199,7 +186,6 @@ #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_HONG ((UINT8)0xA2) /*ͰťƵͱʾƣ)״̬λ*/ -#define MASK_TYPE_PSD_EXCEPT_OPEN ((UINT8)0xA5) /*վ̨ȫ쳣λ*/ /*λ*/ #define MASK_TYPE_GARAGEDOOR_OPEN_STATE ((UINT8)0x62) /*峵ſ״̬λCI->ATS*/ diff --git a/TSCP/src/APP/ciapp/Overlap/OverlapConfigDataManage.c b/TSCP/src/APP/ciapp/Overlap/OverlapConfigDataManage.c index c9e74a3..4a5e981 100644 --- a/TSCP/src/APP/ciapp/Overlap/OverlapConfigDataManage.c +++ b/TSCP/src/APP/ciapp/Overlap/OverlapConfigDataManage.c @@ -872,54 +872,4 @@ UINT8 GetOverlapProSwitchPos(const UINT16 wOverlapId, const UINT16 wProSwitchId) } 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; } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/Overlap/OverlapConfigDataManage.h b/TSCP/src/APP/ciapp/Overlap/OverlapConfigDataManage.h index 5586361..ff1eace 100644 --- a/TSCP/src/APP/ciapp/Overlap/OverlapConfigDataManage.h +++ b/TSCP/src/APP/ciapp/Overlap/OverlapConfigDataManage.h @@ -72,8 +72,7 @@ typedef struct S_OverlapConfigDataStruct UINT16 OverlapRouteSum; /*ν·*/ UINT16 OverlapRouteIdBuf[OVERLAP_ROUTE_SUM_MAX]; /*ν·*/ UINT16 AxisSecFarId; /*Զ˼ID*/ - UINT16 wOverlapThisZhaoChaRelayId; /*αղ̵ID*/ - UINT16 wOverlapThatZhaoChaRelayId; /*ζԶղ̵ID*/ + } OverlapConfigDataStruct; 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); -/* -* ȡָ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 } #endif diff --git a/TSCP/src/APP/ciapp/Overlap/OverlapDataManage.c b/TSCP/src/APP/ciapp/Overlap/OverlapDataManage.c index abe6a90..f636446 100644 --- a/TSCP/src/APP/ciapp/Overlap/OverlapDataManage.c +++ b/TSCP/src/APP/ciapp/Overlap/OverlapDataManage.c @@ -51,7 +51,7 @@ UINT16 GetOverlapBelongRouteId(const UINT16 overlapId) /* -* ָID· +* ָIDʼں * ˵ const UINT16 overlapId, ID * const UINT16 belongRouteId, · * ֵ diff --git a/TSCP/src/APP/ciapp/PSD/PSDConfigDataManage.c b/TSCP/src/APP/ciapp/PSD/PSDConfigDataManage.c index a66976d..06913d6 100644 --- a/TSCP/src/APP/ciapp/PSD/PSDConfigDataManage.c +++ b/TSCP/src/APP/ciapp/PSD/PSDConfigDataManage.c @@ -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; } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/PSD/PSDConfigDataManage.h b/TSCP/src/APP/ciapp/PSD/PSDConfigDataManage.h index 2cadc96..aca7c84 100644 --- a/TSCP/src/APP/ciapp/PSD/PSDConfigDataManage.h +++ b/TSCP/src/APP/ciapp/PSD/PSDConfigDataManage.h @@ -64,10 +64,6 @@ typedef struct S_PsdConfigDataStruct UINT16 wPcbIndicatorRelayId; /*ٹŰťָʾƼ̵*/ UINT16 wVideoQkLight1RelayId; /*ͰťƵָʾ1̵̣*/ UINT16 wVideoQkLight2RelayId; /*ͰťƵָʾ2죩̵*/ - UINT16 wPsdFstProLinkId; /*ŷlink1ID*/ - UINT16 wPsdSndProLinkId; /*ŷlink2ID*/ - UINT16 wPsdTrdProLinkId; /*ŷlink3ID*/ - UINT8 chPsdControlType; /*ſ*/ } PsdConfigDataStruct; @@ -415,13 +411,6 @@ UINT16 GetPsdVideoQkLight2RelayId(const UINT16 wDoorId); */ UINT8 CheckPsdBelSendRange(const UINT16 wCheckPsdId); -/* -* ȡָIDſ -* ˵ const UINT16 doorId, ID -* ֵ UINT8 ͣ0x55 OC-P 0xAA RCIƣ -*/ -UINT8 GetPsdControlType(const UINT16 doorId); - #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/PSD/PSDDataManage.c b/TSCP/src/APP/ciapp/PSD/PSDDataManage.c index 8fa6cb6..b15470a 100644 --- a/TSCP/src/APP/ciapp/PSD/PSDDataManage.c +++ b/TSCP/src/APP/ciapp/PSD/PSDDataManage.c @@ -1443,14 +1443,14 @@ UINT8 SetPsdCmdCyclePsc(const UINT16 doorId, const UINT32 doorCycle) } /* -* ָID·־ +* ָIDȷPSC־ * ˵ const UINT16 doorId, ID * const UINT8 setFlag, ·״̬ * ֵ * */ -void SetPsdConfirmFlag(const UINT16 doorId,const UINT8 setFlag) +void SetPsdPscConfirmFlag(const UINT16 doorId,const UINT8 setFlag) { /*ʼ*/ UINT16 bufIndex = 0u; @@ -1467,13 +1467,13 @@ void SetPsdConfirmFlag(const UINT16 doorId,const UINT8 setFlag) } /* -* ȡָID·־ +* ȡָIDȷPSC·־ * ˵ const UINT16 doorId, ID * * ֵ 0: ȡʧ * >0: ȡɹ */ -UINT8 GetPsdPlFlag(const UINT16 doorId) +UINT8 GetPsdPscPlFlag(const UINT16 doorId) { /*ʼ*/ UINT16 bufIndex = 0u; /*±*/ @@ -1532,7 +1532,7 @@ void SetNearCiPscPlFlag(const UINT16 psdId,const UINT16 pscId,const UINT8 setFla if(psdCiId == localCiId) { /*PSCӦPSD·*/ - SetPsdConfirmFlag(psdId, setFlag); + SetPsdPscConfirmFlag(psdId, setFlag); } } else @@ -1544,12 +1544,12 @@ void SetNearCiPscPlFlag(const UINT16 psdId,const UINT16 pscId,const UINT8 setFla else { /*ȡPSD·־*/ - pscPlFlag = GetPsdPlFlag(psdId); + pscPlFlag = GetPsdPscPlFlag(psdId); if(psdCiId == localCiId) { if(CI_PSC_PL_CONFIRM_YES == pscPlFlag) { - SetPsdConfirmFlag(psdId, CI_PSC_PL_CONFIRM_NO); + SetPsdPscConfirmFlag(psdId, CI_PSC_PL_CONFIRM_NO); } else { @@ -2509,350 +2509,4 @@ UINT16 GePsdVideoQkRelateVobcId(const UINT16 wPsdId) 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,ǰĸֽڻǺĸֽ(0uΪĸֽڣ1uΪĸֽ) -* ֵ 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,ǰĸֽڻǺĸֽ(0uΪĸֽڣ1uΪĸֽ) -* ֵ 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,ǰĸֽڻǺĸֽ(0uΪĸֽڣ1uΪĸֽ) -* ֵ 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 - { - /**/ - } } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/PSD/PSDDataManage.h b/TSCP/src/APP/ciapp/PSD/PSDDataManage.h index e7c5e0d..8012e33 100644 --- a/TSCP/src/APP/ciapp/PSD/PSDDataManage.h +++ b/TSCP/src/APP/ciapp/PSD/PSDDataManage.h @@ -81,16 +81,6 @@ typedef struct S_PsdDataStruct UINT8 chCleFarePDBFlaLigFlag; /*ȷPDBťָʾƱ־*//*by cgh 20230529*/ UINT8 chVideoQkDriveState; /*Ƶ״̬ 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Źؼ̵ʼ*/ } PsdDataStruct; extern PsdDataStruct PsdDataStru[PSD_SUM_MAX]; /*ݽṹ*/ @@ -528,23 +518,23 @@ UINT32 GetPsdCmdCyclePsc(const UINT16 doorId); UINT8 SetPsdCmdCyclePsc(const UINT16 doorId, const UINT32 doorCycle); /* -* ָID·־ +* ָIDȷPSC־ * ˵ const UINT16 doorId, ID * 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 * * ֵ 0: ȡʧ * >0: ȡɹ */ -UINT8 GetPsdPlFlag(const UINT16 doorId); +UINT8 GetPsdPscPlFlag(const UINT16 doorId); /* * PSCͬʱһͨʱPSC· @@ -882,126 +872,6 @@ void SetPsdVideoQkRelateVobcId(const UINT16 wPsdId, const UINT16 wVobcId); */ 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,ǰĸֽڻǺĸֽ(0uΪĸֽڣ1uΪĸֽ) -* ֵ 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,ǰĸֽڻǺĸֽ(0uΪĸֽڣ1uΪĸֽ) -* ֵ 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,ǰĸֽڻǺĸֽ(0uΪĸֽڣ1uΪĸֽ) -* ֵ 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); - #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/PSD/PSDDefine.h b/TSCP/src/APP/ciapp/PSD/PSDDefine.h index e4fa439..6ba3aaa 100644 --- a/TSCP/src/APP/ciapp/PSD/PSDDefine.h +++ b/TSCP/src/APP/ciapp/PSD/PSDDefine.h @@ -67,25 +67,6 @@ #define PSD_FAULT_ISOLATION_SCX ((UINT8)0x81U) /*ԳùϸϢ18Ÿ*/ #define PSD_OPEN_STATE_SCX ((UINT32)0xFFFFFF7EU) /*Գ߹ϸʱŴ״̬18⣬ȫ*/ -/*Դ״̬*/ -#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Ϣ*/ #define PSD_FOUR_EDIT_GROUP_FAO_YF ((UINT8)0x01U) /*ı*/ @@ -106,10 +87,6 @@ #define PSD_VIRTUAL_ATTR_YES ((UINT8)0x55U) /**/ #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_NO ((UINT8)0x55U) /*Ѽϰ*/ @@ -195,16 +172,4 @@ #define VIDEO_QK_DRIVE_STATE_TESTING ((UINT8)0xccU) /*Ƶ״̬*/ #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) /*ֽ*/ - #endif diff --git a/TSCP/src/APP/ciapp/ParsePack/CiInterfaceDefine.h b/TSCP/src/APP/ciapp/ParsePack/CiInterfaceDefine.h index ddc1d3b..fe2683b 100644 --- a/TSCP/src/APP/ciapp/ParsePack/CiInterfaceDefine.h +++ b/TSCP/src/APP/ciapp/ParsePack/CiInterfaceDefine.h @@ -147,10 +147,7 @@ #define ATS_CMD_OPEN_XIANSU_SIGNAL_SECOND ((UINT8)0x9e) /*źŶ*/ #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_GET_CTRL_POWER ((UINT8)0x81) /* ȡȨ*/ #define ATS_CMD_RELEASE_CTRL_POWER ((UINT8)0x82) /* ͷȨ*/ @@ -216,7 +213,7 @@ #define VOBCTOCI_COMMAND_TYPE_PSDCHECK ((UINT8)0x00) /*ѯPSD*/ #define VOBCTOCI_COMMAND_TYPE_PSDOPEN ((UINT8)0x55) /*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Ϣ궨****/ /*Ϣ*/ @@ -248,7 +245,6 @@ #define CI_BACK_GROUP_AUTO_ROUTE_SET_ERR ((UINT8)0x7e) /*Զ·Զʧ*/ #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) /*·ʼźŻ*/ @@ -302,8 +298,7 @@ #define CI_BACK_SWT_POS_ERROR ((UINT8)0x37) /*λô*/ #define CI_BACK_SWT_MOVE_VALID ((UINT8)0x00) /*ɶ*/ #define CI_BACK_SWT_MOVE_OT ((UINT8)0x39) /*ʱ*/ -#define CI_BACK_SWT_BYPASS_CANCEL_NO ((UINT8)0x93) /*ߵ·δʱȡ*/ -#define CI_BACK_SWT_MOVE ((UINT8)0xA3) /*ת*/ +#define CI_BACK_SWT_BYPASS_CANCEL_NO ((UINT8)0x93) /*ߵ·δʱȡ*/ /* zt ɾش 2022-02-15 */ #define CI_BACK_SWT_USING ((UINT8)0x3f) /**/ #define CI_BACK_SWT_MOVE_ERR ((UINT8)0x84) /*ᶯʧ*/ @@ -409,16 +404,8 @@ #define CI_BACK_SEC_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_SEND_FLAG_ERR ((UINT8)0xf2) /* CIϵͳݷͷʶϢ */ diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackAtsData.c b/TSCP/src/APP/ciapp/ParsePack/ParsePackAtsData.c index d597b62..5e63b4d 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackAtsData.c +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackAtsData.c @@ -122,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); -/* -* תCiATSPSD Դ״̬Ϣ -* ˵ -* UINT8 ciToXianDiData, CIֵϢ -* UINT8 MoveNum λ -* UINT8 PsdState psdԴ״̬Ϣ -* -* -* ֵ ת -*/ -static UINT8 TransCiToAtsDrvWorkState(UINT8 ciToXianDiData, UINT8 MoveNum, UINT8 PsdState); - -/* -* תCiATSPSD ƵԴ״̬Ϣ -* ˵ -* UINT8 ciToXianDiData, CIֵϢ -* UINT8 MoveNum λ -* UINT8 PsdState psdƵԴ״̬Ϣ -* -* -* ֵ ת -*/ -static UINT8 TransCiToAtsCtlWorkState(UINT8 ciToXianDiData, UINT8 MoveNum, UINT8 PsdState); - -/* -* תCiATSPSD Ե״̬ -* ˵ -* UINT8 ciToXianDiData, CIֵϢ -* UINT8 MoveNum λ -* UINT8 PsdState psdԵ״̬ -* -* -* ֵ ת -*/ -static UINT8 TransCiToAtsPSDEdgeState(UINT8 ciToXianDiData, UINT8 MoveNum, UINT8 PsdState); /* * ֡ @@ -960,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豸*/ pOcDeviceIdBuf = GetCiTransmitSpecifySysDevBuf(CI_SYSTEM_TYPE_OC); /*ȡͨOC豸ID*/ @@ -1079,7 +1037,6 @@ UINT8 PackCiToAtsOrXianDiData(const UINT8 deviceId, const UINT8 targetDevType, c { } -#if 0 /*PSC豸ŷPSDϢATS*/ if (NULL == pDeviceIdBuf) { @@ -1146,7 +1103,6 @@ UINT8 PackCiToAtsOrXianDiData(const UINT8 deviceId, const UINT8 targetDevType, c /*дPSD*/ ciToXianDiDataBuffer[ii - (psdSum * 28U) - 1U] = psdSum; } -#endif /*RCOCI豸״̬ Դ/Դģ״̬2ֽ*/ @@ -1193,9 +1149,6 @@ UINT8 PackCiToAtsOrXianDiData(const UINT8 deviceId, const UINT8 targetDevType, c /**/ } - /*ͨϢ*/ - PackCiDataToAts(ciToXianDiDataBuffer, &ii); - /*Ԥ40ֽ*/ ii += 40u; } @@ -1414,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) { @@ -1751,7 +1702,7 @@ UINT8 GetPscConfirmFlag(UINT8 pscId) if(psdCiId == localCiId) { /*ȡPSCӦPSDĻȷϱ־*/ - pscPsdFlag = GetPsdPlFlag(pscToCiDataStru[pscId].psdDataStr[i].psdId); + pscPsdFlag = GetPsdPscPlFlag(pscToCiDataStru[pscId].psdDataStr[i].psdId); if(CI_PSC_PL_CONFIRM_YES == pscPsdFlag) { retVal = CI_PSC_PL_CONFIRM_YES; @@ -1896,12 +1847,6 @@ UINT8 FindFirstOrder(UINT8 SecondOrder) case ATS_CMD_SWITCH_FANWEI_TEST_TWO: reVal = ATS_CMD_SWITCH_FANWEI_TEST_ONE; /*λһ*/ 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; default: reVal = 0u; break; @@ -2597,7 +2542,6 @@ UINT16 TransCiToAtsSwitchZzjInfo(OcToATSSwitchZzjData* ciSendAtsSwitchZzjData, U UINT8 jj = 0U;/*Ӧת޻*/ UINT8 mm = 0U;/*״̬ĿʱжǷ쳣ѭ*/ UINT8 chSwitchDriveFlag = 0U;/*־*/ - UINT8 chSingleSwitchCurPosition = 0u;/*ǰλ*/ if ((NULL != ciSendAtsSwitchZzjData) && (NULL != wDataLength)) @@ -2667,26 +2611,18 @@ UINT16 TransCiToAtsSwitchZzjInfo(OcToATSSwitchZzjData* ciSendAtsSwitchZzjData, U } else { - chSingleSwitchCurPosition = GetSingleSwitchCurPosition(m_OcToCiOrginDataArr[kk].OcDevices[ii].DeviceId); - if (SWITCH_POSITION_JICHA == chSingleSwitchCurPosition) + 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 { - chSwitchDriveFlag = GetSwitchDrivedFlag(m_OcToCiOrginDataArr[kk].OcDevices[ii].DeviceId); - if (SWITCH_DRIVED_FLAG_YES == chSwitchDriveFlag) - { - /*ȡת޻״̬Ϊ*/ - ciSendAtsSwitchZzjData[wSwitchNum].szSwitchIncldeZzjState[jj] = OC_TO_ATS_SWITCH_ZZJ_NORMAL; - } - else - { - /*ûĿת޻״̬Ϊ*/ - ciSendAtsSwitchZzjData[wSwitchNum].szSwitchIncldeZzjState[jj] = OC_TO_ATS_SWITCH_ZZJ_ALARM; - } + /*ûĿת޻״̬Ϊ*/ + ciSendAtsSwitchZzjData[wSwitchNum].szSwitchIncldeZzjState[jj] = OC_TO_ATS_SWITCH_ZZJ_ALARM; } + } } } @@ -2734,362 +2670,4 @@ static UINT8 TransCiToAtsPowerModeState(UINT8 ciToXianDiData, UINT8 MoveNum, UIN } return TransCiSendData; -} - -/* -* תCiATSPSD Դ״̬Ϣ -* ˵ -* 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; -} - -/* -* תCiATSPSD ƵԴ״̬Ϣ -* ˵ -* 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; -} - -/* -* תCiATSPSD Ե״̬ -* ˵ -* 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-PPSD*/ - - - if ((NULL != ciToXianDiDataBuffer) && (NULL != ii)) - { - index = *ii; - - psdDeviceSum = GetPsdSum();/*PSD*/ - - index_psd = index; - ciToXianDiDataBuffer[index] = 0u; /*PSD0*/ - 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;/*ciciͨ״̬*/ - 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 - { - /*μʧܣ*/ - } } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackAtsData.h b/TSCP/src/APP/ciapp/ParsePack/ParsePackAtsData.h index d8b589c..f610676 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackAtsData.h +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackAtsData.h @@ -366,48 +366,6 @@ UINT16 TransCiToAtsSwitchZzjInfo(OcToATSSwitchZzjData* ciSendAtsSwitchZzjData, U */ 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); - #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackAxleData.c b/TSCP/src/APP/ciapp/ParsePack/ParsePackAxleData.c index d07fbdb..61adf37 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackAxleData.c +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackAxleData.c @@ -137,6 +137,7 @@ UINT8 InitAxleToCiDataStru(void) UINT8 belongAxleSysId = 0u; /*ID*/ UINT16 axlePhySecSum = 0u; /*ϵͳĿ*/ UINT8 pyhIsThisLine = 0u; + UINT8 cPrtclVerBtwCiAndAxle = 0U; /*ͼЭУ汾*/ ciId = GetSystemParaLocalCiId(); ciName = (CI_SYSTEM_TYPE_CI) * 256U + ciId; @@ -152,13 +153,22 @@ UINT8 InitAxleToCiDataStru(void) { axleId = deviceIdBuf[i]; axleName = (CI_SYSTEM_TYPE_AXIS) * 256u + axleId; + cPrtclVerBtwCiAndAxle = GetCiAndAxisPrtclCheckVer(); /*ȡЭУ汾*/ - rtn = dquDevName2HlhtId(axleName, 0U, &axieEtcsId); /*ȡụͨID*/ - rtn &= dquDevName2HlhtId(ciName, 0U, &ciEtcsId); /*ȡCIͨID*/ + if (20U <= cPrtclVerBtwCiAndAxle) + { + 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 (axleId >= AXIS_TO_CI_SUM_MAX) + if(axleId>=AXIS_TO_CI_SUM_MAX) { break;/*룬ֹԽ*/ } @@ -174,7 +184,7 @@ UINT8 InitAxleToCiDataStru(void) belongCiId = GetPhySecBelongCiId(phySecId); belongAxleSysId = GetPhySecBelongAxisSysId(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)) { axlePhySecSum = axisToCiDataStru[axleId].SectionSum; @@ -186,9 +196,6 @@ UINT8 InitAxleToCiDataStru(void) axisToCiDataStru[axleId].axisDataStr[axlePhySecSum].faultInfo = 0u; axisToCiDataStru[axleId].axisDataStr[axlePhySecSum].showAndReplyInfo = 0u; 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].PhySecIdx[phySecId] = (UINT8)(axlePhySecSum); @@ -248,9 +255,7 @@ UINT8 ParseAxisToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength, cons UINT32 galAxisDataVer = 0u; /*ϵͳݰ汾*/ UINT32 ciAndAxisTimeOutCout = 0u; /*ͨж*/ UINT32 ciCurappCycleTime = 0u; /*ǰ*/ - UINT16 axisDevName = 0U; /*ƣ+ID*/ - UINT16 wPhySecCurSum = 0U; /*Ŀ*/ - UINT16 wIndexInAxle = 0U; /*ε*/ + UINT16 axisDevName = 0u; /*ƣ+ID*/ deviceSum = GetCiTransmitSpecifySysDevSum(CI_SYSTEM_TYPE_AXIS); /*ȡͨAxis豸*/ deviceIdBuf = GetCiTransmitSpecifySysDevBuf(CI_SYSTEM_TYPE_AXIS); /*ȡͨAxis豸ID*/ @@ -268,9 +273,6 @@ UINT8 ParseAxisToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength, cons axisToCiDataStru[systemId].axisDataStr[jj].faultInfo = 0u; axisToCiDataStru[systemId].axisDataStr[jj].showAndReplyInfo = 0u; 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; } @@ -448,163 +450,6 @@ UINT8 ParseAxisToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength, cons 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 { retVal = CI_ERROR; @@ -670,9 +515,6 @@ UINT8 ParseAxisToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength, cons axisToCiDataStru[systemId].axisDataStr[jj].faultInfo = 0u; axisToCiDataStru[systemId].axisDataStr[jj].showAndReplyInfo = 0u; 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; } @@ -750,12 +592,6 @@ UINT8 PackCiToAxisData(UINT8 axisSysId) UINT16 dstDevId = 0u; UINT8 outnetSafeSendRtn = 0u; 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; if (AXIS_TO_CI_SUM_MAX > axisSysId) { @@ -906,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 { retVal = CI_ERROR; @@ -1263,45 +951,6 @@ static UINT8 GetPhySecIdxInAxisDataStr(const UINT8 axleId, const UINT16 phySecId 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];/*AxisDataStrID±*/ - } - else - { - *pAxleDataStrIdx = AXISDATASTR_IDX; - } - if (AXISDATASTR_IDX != (*pAxleDataStrIdx)) - { - ret = CI_SUCCESS; - } - else - { - /*error*/ - } - } - else - { - /*error*/ - } - return ret; -} \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackAxleData.h b/TSCP/src/APP/ciapp/ParsePack/ParsePackAxleData.h index f2b7401..84f4624 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackAxleData.h +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackAxleData.h @@ -41,8 +41,7 @@ #include "../LogRecord/LogRecord.h" #endif -#define SEC_NUM_PER_BYTE ((UINT8)4) /*ÿһֽڰĿ*/ -#define BIT_NUM_PER_SEC ((UINT8)(8 / SEC_NUM_PER_BYTE)) /*ÿһռλĿ*/ + /*ͨŵϢ*/ typedef struct S_AxisDataStruct @@ -51,10 +50,8 @@ typedef struct S_AxisDataStruct UINT8 gdRelayState; /*ɵ̵״̬£0x550xaa*/ UINT8 showAndReplyInfo; /*bit0bit1㷴bit2bit3Ԥbit4bit7ʾϢֶ̬Σ*/ UINT8 faultInfo; /*Ϣbit0ιϡbit1忨ϡbit2ϵ硢bit3ͨŹϡbit4ϡbit5ͷϡbit6Ԥbit7ϵ(ֶ̬)*/ + UINT8 PreResetRst; /*Ԥλ*/ - UINT8 chPreResetBack; /*Ԥλ*/ - UINT8 chDirectResetRst; /*ֱӸλ*/ - UINT8 chDirectResetBack; /*ֱӸλ*/ UINT8 State; /*״̬*/ } AxisCollDataStruct; @@ -129,17 +126,6 @@ UINT8 PackCiToAxisData( UINT8 axisSysId); */ 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); - #ifdef __cplusplus } diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackCiData.c b/TSCP/src/APP/ciapp/ParsePack/ParsePackCiData.c index 2d30347..310dc67 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackCiData.c +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackCiData.c @@ -17,7 +17,7 @@ #include "../CutoffPoint/CutoffPointDataManage.h" #include "ELMDataPrepare.h" -#define CI_CI_DEFAULT_DEV_SUM_BUF_LEN 40U /*CI䲻Ҫ豸״̬ʱֻʱӦ豸ռĻλҪд0ÿ豸2ֽڣѩITEг1ֽڣ40ֽ*/ +#define CI_CI_DEFAULT_DEV_SUM_BUF_LEN 39U /*CI䲻Ҫ豸״̬ʱֻʱӦ豸ռĻλҪд0ÿ豸2ֽڣѩ1ֽڣ39ֽ*/ /*ʹ*/ ToCiCommandDataStruct RecvCiCmdDataStru[RECVCI_CMD_DATA_STRU_SUM_MAX] = {0u}; /*CIṹ*/ @@ -47,10 +47,6 @@ ToCiAreaSnowStruct szRecvCiAreaSnow[CI_COM_CI_MAX_NUM] = { 0U }; /* ToCiAreaSnowStruct szSendCiAreaSnow[CI_COM_CI_MAX_NUM] = { 0U }; /*͸ѩվ̨Ϣ*/ -ToCiAreaIteCutStruct szRecvCiAreaIteCut[CI_COM_CI_MAX_NUM] = { 0U }; /*ITEгϢ*/ - -ToCiAreaIteCutStruct szSendCiAreaIteCut[CI_COM_CI_MAX_NUM] = { 0U }; /*͸ITEгϢ*/ - #define CI_TO_CI_INTERFACE (0x0606) #define INTERFACE_INFO_TYPE_LEN (2U) /*ӿֽڳ*/ @@ -432,6 +428,30 @@ CI_SUCCESS, static UINT8 PackCityDefPacket(UINT8* pInputData, UINT16* pItemLen); +/* +: +Զݰ +: +const UINT8 *pInputData ָ +: +UINT16 *pItemLen еij +ֵ: +CI_SUCCESS,ɹ;CI_ERROR,ʧ. +*/ +static UINT8 ParseManufacDefPacket(const UINT8* pInputData, UINT16* pItemLen); + +/* +: +Զݰ +: +UINT8 *pInputData ָ +: +UINT16 *pItemLen еij +ֵ: +CI_SUCCESS,ɹ;CI_ERROR,ʧ. +*/ +static UINT8 PackManufacDefPacket(UINT8* pInputData, UINT16* pItemLen); + /* : 컥ͨӦ @@ -570,8 +590,8 @@ UINT8 CheckCi2CiDataLenValid(const UINT8* dataBuf, const UINT16 totalLength,UINT * 2Bm+ m * (12B) + * 2Bn+ n * (14B) + * 2B (߼p) + p * (4B) + - * 2B (źŻa) + a * (11B) + - * 2B (b) + b * (5B) + + * 2B (źŻa) + a * (8B) + + * 2B (b) + b * (4B) + * 2B (ESBc) + c * (3B) + * 2B (·d) + d * (8B) + * 2B (״̬e) + e * (10B) + @@ -588,14 +608,14 @@ UINT8 CheckCi2CiDataLenValid(const UINT8* dataBuf, const UINT16 totalLength,UINT * = 10 + 2 + m*(7) * ߼ = 10 + 2 + m*(7) + 2 + n*(14) * źŻ = 10 + 2 + m*(7) + 2 + n*(14) + 2 + p*(4) - * = 10 + 2 + m*(7) + 2 + n*(14) + 2 + p*(4) + 2 + a*(10) - * ESB = 10 + 2 + m*(7) + 2 + n*(14) + 2 + p*(4) + 2 + a*(10) + 2 + b*(5) - * · = 10 + 2 + m*(7) + 2 + n*(14) + 2 + p*(4) + 2 + a*(10) + 2 + b*(5) + 2 + c*(3) - * ״̬ = 10 + 2 + m*(7) + 2 + n*(14) + 2 + p*(4) + 2 + a*(10) + 2 + b*(5) + 2 + c*(3) + 2 + d*(8) - * spks = 10 + 2 + m*(7) + 2 + n*(14) + 2 + p*(4) + 2 + a*(10) + 2 + b*(5) + 2 + c*(3) + 2 + d*(8) + 2 + e*(10) - * ̵ = 10 + 2 + m*(7) + 2 + n*(14) + 2 + p*(4) + 2 + a*(10) + 2 + b*(5) + 2 + c*(3) + 2 + d*(8) + 2 + e*(10) + 2 + f*(4) - * = 10 + 2 + m*(7) + 2 + n*(14) + 2 + p*(4) + 2 + a*(10) + 2 + b*(5) + 2 + c*(3) + 2 + d*(8) + 2 + e*(10) + 2 + f*(4) + 2 + g*(3) - * Զͨ· = 10 + 2 + m*(7) + 2 + n*(14) + 2 + p*(4) + 2 + a*(10) + 2 + b*(5) + 2 + c*(3) + 2 + d*(8) + 2 + e*(10) + 2 + f*(4) + 2 + g*(3)+2+h*(6) + * = 10 + 2 + m*(7) + 2 + n*(14) + 2 + p*(4) + 2 + a*(8) + * ESB = 10 + 2 + m*(7) + 2 + n*(14) + 2 + p*(4) + 2 + a*(8) + 2 + b*(2) + * · = 10 + 2 + m*(7) + 2 + n*(14) + 2 + p*(4) + 2 + a*(8) + 2 + b*(2) + 2 + c*(3) + * ״̬ = 10 + 2 + m*(7) + 2 + n*(14) + 2 + p*(4) + 2 + a*(8) + 2 + b*(2) + 2 + c*(3) + 2 + d*(8) + * spks = 10 + 2 + m*(7) + 2 + n*(14) + 2 + p*(4) + 2 + a*(8) + 2 + b*(2) + 2 + c*(3) + 2 + d*(8) + 2 + e*(10) + * ̵ = 10 + 2 + m*(7) + 2 + n*(14) + 2 + p*(4) + 2 + a*(8) + 2 + b*(2) + 2 + c*(3) + 2 + d*(8) + 2 + e*(10) + 2 + f*(4) + * = 10 + 2 + m*(7) + 2 + n*(14) + 2 + p*(4) + 2 + a*(8) + 2 + b*(2) + 2 + c*(3) + 2 + d*(8) + 2 + e*(10) + 2 + f*(4) + 2 + g*(3) + * Զͨ· = 10 + 2 + m*(7) + 2 + n*(14) + 2 + p*(4) + 2 + a*(8) + 2 + b*(2) + 2 + c*(3) + 2 + d*(8) + 2 + e*(10) + 2 + f*(4) + 2 + g*(3)+2+h*(6) * Уվ * Уܳ @@ -657,8 +677,6 @@ UINT8 CheckCi2CiDataLenValid(const UINT8* dataBuf, const UINT16 totalLength,UINT UINT8 cPLockRouteNum = 0U; UINT8 cPLockOverlapNum = 0U; UINT16 wProSwInfoLen = 0U; - UINT16 wAreaIteCutIndex = 0U; - UINT8 cAreaIteCutNum = 0U; /*ָ*/ if (NULL == errNo) @@ -1028,31 +1046,14 @@ UINT8 CheckCi2CiDataLenValid(const UINT8* dataBuf, const UINT16 totalLength,UINT { cAreaSnowNum = dataBuf[wAreaSnowIndex]; wAreaSnowIndex++; /*ѩ*/ - wAreaSnowIndex += cAreaSnowNum * 3U; /*ID+ʪȼ*/ + wAreaSnowIndex += cAreaSnowNum * 4U; /*ѩվ̨ͨID*/ } } - /*УITEг*/ - if (CI_SUCCESS == reVal) - { - wAreaIteCutIndex = wAreaSnowIndex; - if (totalLength < wAreaIteCutIndex + 1U) - { - reVal = CI_ERROR; - *errNo = 27U; - } - else - { - cAreaIteCutNum = dataBuf[wAreaIteCutIndex]; - wAreaIteCutIndex++; /*ITEг*/ - wAreaIteCutIndex += cAreaIteCutNum * 2U; /*ID*/ - } - } - /*Уȥ߼γ*/ if (CI_SUCCESS == reVal) { - wLeaveLogIndex = wAreaIteCutIndex; + wLeaveLogIndex = wAreaSnowIndex; if (totalLength < wLeaveLogIndex + 2U) { reVal = CI_ERROR; @@ -1079,9 +1080,9 @@ UINT8 CheckCi2CiDataLenValid(const UINT8* dataBuf, const UINT16 totalLength,UINT else { wNeedCheckSwStaRouteSum = ShortFromChar(&dataBuf[wNeedCheckSwStaRouteIndex]);/*ȥ*/ - wNeedCheckSwStaRouteIndex += 2U;/*·*/ + wNeedCheckSwStaRouteIndex += 2U;/*ȥ*/ - wNeedCheckSwStaRouteIndex += wNeedCheckSwStaRouteSum * 8U; /*·*/ + wNeedCheckSwStaRouteIndex += wNeedCheckSwStaRouteSum * 3U; /*ȥID*/ } } @@ -1145,8 +1146,8 @@ UINT8 CheckCi2CiDataLenValid(const UINT8* dataBuf, const UINT16 totalLength,UINT 2u + (routeNum * CICI_ONE_ROUTE_LEN) + 2u + (physecLockStateNum * CICI_ONE_PHYSEC_LOCKSTATE_LEN) + 2u + (spksNum * CICI_ONE_SPKS_LEN) + 2u + (virtualRelayNum * CICI_ONE_VIRTUAL_RELAY_LEN) + 2u + (floodGateNum * CICI_ONE_FLOODGATE_LEN)+ 2u + (overlapNum * CICI_ONE_OVERLAP_LEN) + 2u + (autoRouteNum * CICI_ONE_AUTOROUTE_LEN)+ - 2u + (logsecLockStateNum * CICI_ONE_LOGSEC_LOCKSTATE_LEN) + logsecLockStateNum + (trainNum * 2U) + 2u + (wCfpInfoLen)+1U + cAreaSnowNum * 3U + - 1U + cAreaIteCutNum * 2U + 2U + cLeaveLogNum * 3U + 2U + wNeedCheckSwStaRouteSum * 8U + 2U + wNeedCheckProSwStaOlpNum * 3U + 2U + wProSwInfoLen; + 2u + (logsecLockStateNum * CICI_ONE_LOGSEC_LOCKSTATE_LEN) + logsecLockStateNum + (trainNum * 2U) + 2u + (wCfpInfoLen)+1U + cAreaSnowNum * 4U + + 2U + cLeaveLogNum * 3U + 2U + wNeedCheckSwStaRouteSum * 3U + 2U + wNeedCheckProSwStaOlpNum * 3U + 2U + wProSwInfoLen; if (stationLen == tmpStationLen) { reVal = CI_SUCCESS; @@ -1291,7 +1292,7 @@ UINT8 ParseCiToCiDataFrame(UINT8* dataBuf, UINT16 dataLength) UINT8 kk = 0u; UINT8 execRet = CI_ERROR; UINT8 reVal = CI_ERROR; - UINT8 chErrorType = 0U; + UINT16 routePhySecSum = 0u; RoutePhysicalSectionStruct* routePSSecStru = NULL; UINT16 preSecId = 0u; @@ -1299,7 +1300,7 @@ UINT8 ParseCiToCiDataFrame(UINT8* dataBuf, UINT16 dataLength) UINT16 routeId = 0u; /*CTUTռ״̬Ϊ(UT)ռ״̬*/ UINT8 curUtOrCtOccFlag = LOGICSECTION_OCCUPY_UT; /*ǰCTUTռñ־*/ - UINT8 chPreUtOrCtOccFlag = LOGICSECTION_OCCUPY_UT; + UINT8 utOrCtOccFlag = LOGICSECTION_OCCUPY_UT; UINT16 bufIndex = 0u; /*±*/ UINT32 sourceCurCycleNo = 0u;/*ǰϢԴں*/ @@ -1378,8 +1379,7 @@ UINT8 ParseCiToCiDataFrame(UINT8* dataBuf, UINT16 dataLength) UINT8 cLogSecLogicLockState = LOG_SECTION_LOCK_NO; /*߼߼״̬*/ UINT8 cLogSecLogicLockDir = CI_SYSTEM_DIRECTION_NONE; /*߼߼շ*/ UINT8 cCiRecvAreaSnowNum = 0U; /*͵ѩ*/ - UINT16 wAreaId = 0U; /*͵ID*/ - UINT8 cAreaSnowLevel = 0U; /*ʪ켶*/ + UINT32 dwPlatFormHlhtId = 0U; /*͵ѩվ̨ͨID*/ UINT8 cCmdRecvFlag = 0U; ToCiCommandDataStruct strTempCiRecvCmd = { 0U }; ToCiDrCmdDataStruct strTempCiRecvDrCmd = { 0U }; @@ -1418,7 +1418,6 @@ UINT8 ParseCiToCiDataFrame(UINT8* dataBuf, UINT16 dataLength) UINT16 wProSwSecUseRouteId = 0U;/*·ID*/ UINT8 cPhySecOccState = 0U; UINT8 cLogLockBelLogRouteSum = 0U; - UINT8 cCiRecvAreaIteCutNum = 0U; /*͵ITEг*/ localCiId = GetSystemParaLocalCiId(); dwCurCycNum = Get2oo2CurCycleNum(); @@ -1793,20 +1792,13 @@ UINT8 ParseCiToCiDataFrame(UINT8* dataBuf, UINT16 dataLength) phySecCurMergeState = GetPhySecCurMergeState(deviceId); if (SECTION_OCCUPY_YES == phySecCurMergeState) { - chPreUtOrCtOccFlag = GetPhySecPreOccState(deviceId); /*ȡ֮ǰCTUTռ״̬*/ + utOrCtOccFlag = GetPhySecPreOccState(deviceId); /*ȡ֮ǰCTUTռ״̬*/ dwSecUtOrCtOccuCyc = GetSecUtOrCtOccuStartCycNum(deviceId); - /*ʱУγռ״̬仯ҽѿʼʱ֮ǰʱ*/ - if ((chPreUtOrCtOccFlag != curUtOrCtOccFlag) && (0u != dwSecUtOrCtOccuCyc)) - { - if (LOGICSECTION_OCCUPY_NO != curUtOrCtOccFlag) - { - /*UTCTռÿʼʱ*/ - SetSecUtOrCtOccuStartCycNum(deviceId, dwCurCycNum); - } - else - { - /*߼ξУδںϿУݲ*/ - } + /*ʱУγռ״̬仯ҽѿʼʱ*/ + if ((utOrCtOccFlag != curUtOrCtOccFlag) && (0u != dwSecUtOrCtOccuCyc)) + { + /*UTCTռÿʼʱ*/ + SetSecUtOrCtOccuStartCycNum(deviceId, dwCurCycNum); } else if (LOGICSECTION_OCCUPY_UT == curUtOrCtOccFlag) { @@ -1924,11 +1916,6 @@ UINT8 ParseCiToCiDataFrame(UINT8* dataBuf, UINT16 dataLength) SetSignalRelayDetainFlag(deviceId, dataBuf[ii++]); /*źŻά޵״̬*/ SetSignalMaintainState(deviceId, dataBuf[ii++]); - /*źŻӦ˿־*/ - SetNearCISignalCurDsFlag(deviceId, dataBuf[ii++]); - /*źŻ۳·ť״̬*/ - SetDetCutBtnState(deviceId, dataBuf[ii]); - ii++; } } } @@ -1954,10 +1941,6 @@ UINT8 ParseCiToCiDataFrame(UINT8* dataBuf, UINT16 dataLength) (void)SetPsdState(deviceId, dataBuf[ii++]); /*ſ״̬״̬*/ (void)SetPsdMutualLockRemoveState(deviceId,dataBuf[ii++]); /*Ż״̬״̬*/ - - deviceInfo = dataBuf[ii]; /*PSD쳣״̬*/ - ii++; - SetPsdExceptOpenState(deviceId, deviceInfo); } } } @@ -2866,38 +2849,10 @@ UINT8 ParseCiToCiDataFrame(UINT8* dataBuf, UINT16 dataLength) ClearCiRecvAreaSnowInfo((UINT8)sourceId); /*͸ѩϢ*/ for (kk = 0U; kk < cCiRecvAreaSnowNum; kk++) { - wAreaId = ShortFromChar(&dataBuf[ii]); /*ID*/ - ii += 2U; - cAreaSnowLevel = dataBuf[ii]; /*ʪ켶*/ - ii++; + dwPlatFormHlhtId = LongFromChar(&dataBuf[ii]); /*վ̨ͨID*/ + ii += 4U; - AddCiRecvAreaSnowInfo((UINT8)sourceId, localCiId, wAreaId, cAreaSnowLevel); /*洢DZѩϢ*/ - } - } - else - { - reVal = CI_ERROR; - } - } - else - { - /**/ - } - - /*ITEг*/ - if (CI_SUCCESS == reVal) - { - cCiRecvAreaIteCutNum = dataBuf[ii]; - ii++; - if (CI_TO_CI_AREA_SNOW_SUM_MAX >= cCiRecvAreaIteCutNum) - { - ClearCiRecvAreaIteCutInfo((UINT8)sourceId); /*͸ITEгϢ*/ - for (kk = 0U; kk < cCiRecvAreaIteCutNum; kk++) - { - wAreaId = ShortFromChar(&dataBuf[ii]); /*ID*/ - ii += 2U; - - AddCiRecvAreaIteCutInfo((UINT8)sourceId, localCiId, wAreaId); /*洢DZID*/ + AddCiRecvAreaSnowInfo((UINT8)sourceId, localCiId, dwPlatFormHlhtId); /*洢DZѩվ̨ID*/ } } else @@ -2942,36 +2897,30 @@ UINT8 ParseCiToCiDataFrame(UINT8* dataBuf, UINT16 dataLength) ii += 2U; for (jj = 0u; jj < deviceSum; jj++) { - routeId = ShortFromChar(&dataBuf[ii]); - belongCiId = GetRouteBelongCiId(routeId); + deviceId = ShortFromChar(&dataBuf[ii]); + belongCiId = GetRouteBelongCiId(deviceId); if (belongCiId == localCiId) { ii += 2U; - chRouteState = GetRouteState(routeId); - chRouteStateFlag = GetRouteStateFlag(routeId); + chRouteState = GetRouteState(deviceId); + chRouteStateFlag = GetRouteStateFlag(deviceId); if ((ROUTE_STATE_XUANPAI == chRouteState) || (((ROUTE_STATE_AUTO_UNLOCK == chRouteState) || (ROUTE_STATE_AUTO_UNLOCKERR == chRouteState)) && (ROUTE_STATE_FLAG_YES == chRouteStateFlag)) || (ROUTE_STATE_LEAD_XUANPAI == chRouteState)) { /*ͨ첽ֻн··״̬Ÿڿ״̬ãֹĬϣ첽˳ɹʧܽĬ޸*/ - SetRouteApplySwitchCheckFlag(routeId, dataBuf[ii++]); - deviceId = ShortFromChar(&dataBuf[ii]); - ii += 2U; - deviceFlag = dataBuf[ii++];/**/ - deviceInfo = dataBuf[ii++];/*״̬*/ - chErrorType = dataBuf[ii++];/**/ - SetRouteApplySwitchCheckErrorData(routeId, deviceId, deviceFlag, deviceInfo, chErrorType); + SetRouteApplySwitchCheckFlag(deviceId, dataBuf[ii++]); } else { - ii+=6U; + ii++; } } else { - ii += 8U;/*ڱĽ·*/ + ii += 3U;/*ڱĽ·*/ } } } @@ -3886,12 +3835,6 @@ void PackCiToCiDataFrameUseCfg(UINT8 dstCiId,UINT8* dataFrame, UINT16* dataLengt UINT16 wSwPLockOverlapIndex = 0U; UINT8 cSwPLockOverlapNum = 0U; UINT8 cLogLockBelLogRouteSum = 0U; - UINT16 wCiSendAreaIteCutIndex = 0U; - ToCiAreaIteCutStruct* pCiSendAreaIteCut = NULL; - UINT8 cCiSendAreaIteCutNum = 0U; /*͸ITEг*/ - UINT8 devType = 0U; /*豸*/ - UINT8 devState = 0U; /*豸״̬*/ - UINT8 chErrorType = 0U;/*ʧ*/ localCi = GetSystemParaLocalCiId(); startLockFlag = GetStartLockFlag(); @@ -4077,6 +4020,7 @@ void PackCiToCiDataFrameUseCfg(UINT8 dstCiId,UINT8* dataFrame, UINT16* dataLengt belongCiId = GetSignalBelongCiId(deviceId); if (localCi == belongCiId) {/*ڱ*/ + ShortToChar(deviceId, &dataFrame[ii]);/*źŻID*/ ii += 2u; dataFrame[ii++] = GetSignalFLockState(deviceId);/*źŻ״̬*/ @@ -4086,10 +4030,6 @@ void PackCiToCiDataFrameUseCfg(UINT8 dstCiId,UINT8* dataFrame, UINT16* dataLengt dataFrame[ii++] = GetSignalSoftDetainFlag(deviceId);/*źŻ۳״̬*/ dataFrame[ii++] = GetSignalRelayDetainFlag(deviceId);/*źŻӲ߿۳״̬*/ dataFrame[ii++] = GetSignalMaintainState(deviceId);/*źŻά޵״̬*/ - dataFrame[ii++] = GetSignalCurBreakFlag(deviceId); /*źŻ˿״̬*/ - deviceState = GetDetCutBtnState(deviceId); /*źŻ۳·ť״̬*/ - dataFrame[ii] = deviceState; - ii++; deviceSum++; } else @@ -4109,16 +4049,12 @@ void PackCiToCiDataFrameUseCfg(UINT8 dstCiId,UINT8* dataFrame, UINT16* dataLengt deviceId = pTmpCiTransInfo->psdIdBuf[jj];/*ȡID*/ belongCiId = GetPsdBelongCiId(deviceId); if (localCi == belongCiId) - { - /*ڱ*/ + {/*ڱ*/ + ShortToChar(deviceId, &dataFrame[ii]);/*ID*/ ii += 2u; dataFrame[ii++] = GetPsdState(deviceId);/*״̬*/ dataFrame[ii++] = GetPsdMutualLockRemoveState(deviceId);/*Ż״̬*/ - - deviceState = GePsdExceptOpenState(deviceId); /*PSD쳣״̬*/ - dataFrame[ii] = deviceState; - ii++; deviceSum++; } else @@ -4300,13 +4236,13 @@ void PackCiToCiDataFrameUseCfg(UINT8 dstCiId,UINT8* dataFrame, UINT16* dataLengt deviceSum = 0u;/*SPKS*/ deviceSumIndex = ii;/*SPKSαλ*/ ii += 2u; - for (jj = 0u; jj < pTmpCiTransInfo->spksNum; jj++) + for (jj = 0u;jj < pTmpCiTransInfo->spksNum;jj++) { deviceId = pTmpCiTransInfo->spksIdBuff[jj]; - belongCiId = GetSpksBelongCiId(deviceId); + belongCiId = GetSpksBelongCiId(deviceId); if (localCi == belongCiId) {/*ڱ*/ - ShortToChar(deviceId, &dataFrame[ii]); + ShortToChar(deviceId,&dataFrame[ii]); ii += 2u; dataFrame[ii++] = GetSpksState(deviceId); dataFrame[ii++] = GetSpksCutState(deviceId); @@ -4699,11 +4635,8 @@ void PackCiToCiDataFrameUseCfg(UINT8 dstCiId,UINT8* dataFrame, UINT16* dataLengt { for (m = 0U; m < pCiSendAreaSnow->cPlatFormNum; m++) { - ShortToChar(pCiSendAreaSnow->szPlatFormInfo[m].wAreaId, &dataFrame[ii]); /*ID*/ - ii +=2U; - dataFrame[ii] = pCiSendAreaSnow->szPlatFormInfo[m].cAreaSnowLevel; /*ʪ켶*/ - ii++; - + LongToChar(pCiSendAreaSnow->dwPlatFormId[m], &dataFrame[ii]); /*վ̨ͨID*/ + ii += 4U; cCiSendAreaSnowNum++; } } @@ -4713,25 +4646,6 @@ void PackCiToCiDataFrameUseCfg(UINT8 dstCiId,UINT8* dataFrame, UINT16* dataLengt } dataFrame[cCiSendAreaSnowIndex] = cCiSendAreaSnowNum; /*ѩ*/ - /*ITEгϢ*/ - wCiSendAreaIteCutIndex = ii; /*ITEг*/ - ii++; - pCiSendAreaIteCut = GetCiSendAreaIteCutInfo(dstCiId); - if (NULL != pCiSendAreaIteCut) - { - for (m = 0U; m < pCiSendAreaIteCut->cAreaIteCutNum; m++) - { - ShortToChar(pCiSendAreaIteCut->wAreaIteCutId[m], &dataFrame[ii]); /*ID*/ - ii += 2U; - cCiSendAreaIteCutNum++; - } - } - else - { - cCiSendAreaIteCutNum = 0U; /*δ鵽ĿITEгϢITEгΪ0*/ - } - dataFrame[wCiSendAreaIteCutIndex] = cCiSendAreaIteCutNum; /*ITEг*/ - /*·һȥ߼ABLгϢ*/ deviceSum = 0u;/*ȥ߼*/ deviceSumIndex = ii;/*ȥαλ*/ @@ -4771,19 +4685,12 @@ void PackCiToCiDataFrameUseCfg(UINT8 dstCiId,UINT8* dataFrame, UINT16* dataLengt for (jj = 0u; jj < pTmpCiTransInfo->wNeedCheckSwitchStateRouteSum; jj++) { chRouteApplySwitchCheckFlag = GetRouteApplySwitchCheckFlag(pTmpCiTransInfo->szNeedCheckSwStateRouteBuf[jj]); - deviceId = GetRouteApplySwitchCheckErrorData(pTmpCiTransInfo->szNeedCheckSwStateRouteBuf[jj], &devType, &devState, &chErrorType); if ((ROUTE_APPLY_SWITCH_CHECK_NO == chRouteApplySwitchCheckFlag) || (ROUTE_APPLY_SWITCH_CHECK_YES == chRouteApplySwitchCheckFlag)) { ;/*·־dzɹʧҪ·*/ ShortToChar(pTmpCiTransInfo->szNeedCheckSwStateRouteBuf[jj], &dataFrame[ii]);/*·ID 2B*/ ii += 2U; dataFrame[ii++] = chRouteApplySwitchCheckFlag; - /*Ӽʧ豸ID(2) 豸(1) 豸״̬(1) (1)*/ - ShortToChar(deviceId, &dataFrame[ii]);/*豸ID 2B*/ - ii += 2U; - dataFrame[ii++] = devType; - dataFrame[ii++] = devState; - dataFrame[ii++] = chErrorType; deviceSum++; } else @@ -5168,8 +5075,6 @@ UINT8 ParseCiToCiDataFrameHLHT(UINT8* dataBuf, const UINT16 dataLength, const UI UINT8 startLockState = 0u; UINT8 chTransmitRecvDataCycResult = 0U;/*ͨ״̬½*/ UINT8 ch2oo2SheBeiType = 0U;/*豸*/ - UINT32 dwBadEnsureTime = 0U; /*ͨжж*/ - UINT32 dwAppCycleTime = 0U; /*CIӦ*/ srcCiName = (CI_SYSTEM_TYPE_CI) * 256U + systemId; localCiName = (CI_SYSTEM_TYPE_CI) * 256U + localCiId; @@ -5204,9 +5109,7 @@ UINT8 ParseCiToCiDataFrameHLHT(UINT8* dataBuf, const UINT16 dataLength, const UI if (HLHT_HEAD_SUCCESS == headRet) { /*ϢʱЧ*/ - dwBadEnsureTime = GetCiAndCiTransmitBadEnsureTime(); - dwAppCycleTime = GetSystemParaAppCycleTime(); - vobcInfoRemainValidiy = HLHTCommonMsgRemainingValidity(dwBadEnsureTime, curntCycleNo, dwAppCycleTime, hlhtGalHead.recvOppMsgSN, hlhtGalHead.crntOwnMsgSN, hlhtGalHead.preOwnMsgSN, hlhtGalHead.comPeriod); + vobcInfoRemainValidiy = HLHTCommonMsgRemainingValidity(GetCiAndVobcTransBadEnsureTime(), curntCycleNo, GetSystemParaAppCycleTime(), hlhtGalHead.recvOppMsgSN, hlhtGalHead.crntOwnMsgSN, hlhtGalHead.preOwnMsgSN, hlhtGalHead.comPeriod); if (vobcInfoRemainValidiy > 0) { @@ -5252,7 +5155,6 @@ UINT8 ParseCiToCiDataFrameHLHT(UINT8* dataBuf, const UINT16 dataLength, const UI } else { - debug_infor_printf((const)"\nParseCiToCiDataFrameHLHT: Msg Validity Error"); retVal = CI_ERROR; } } @@ -8288,6 +8190,36 @@ static UINT8 PackCityDefPacket(UINT8 *pInputData, UINT16 *pItemLen) return CI_SUCCESS; } +/* +: +Զݰ +: +const UINT8 *pInputData ָ +: +UINT16 *pItemLen еij +ֵ: +CI_SUCCESS,ɹ;CI_ERROR,ʧ. +*/ +static UINT8 ParseManufacDefPacket(const UINT8 *pInputData, UINT16 *pItemLen) +{ + return CI_SUCCESS; +} + +/* +: +Զݰ +: +UINT8 *pInputData ָ +: +UINT16 *pItemLen еij +ֵ: +CI_SUCCESS,ɹ;CI_ERROR,ʧ. +*/ +static UINT8 PackManufacDefPacket(UINT8 *pInputData, UINT16 *pItemLen) +{ + return CI_SUCCESS; +} + /* : 컥ͨӦ @@ -8318,6 +8250,7 @@ static UINT8 PackCiPacketCont(UINT8 *pInputData, UINT16 *pOverallLen, const UINT if ((NULL == pTmpCiTransInfo) || (NULL == pInputData) || (NULL == pOverallLen)) { retVal = CI_ERROR; + *pOverallLen = 0u; } else { @@ -8436,7 +8369,7 @@ static UINT8 PackCiPacketCont(UINT8 *pInputData, UINT16 *pOverallLen, const UINT dataIsAvail = CI_FALSE; break; case MANUFAC_DEF_STATUS_PACKET: - dataIsAvail = CI_TRUE; + dataIsAvail = CI_FALSE; break; default: dataIsAvail = CI_FALSE; @@ -8500,8 +8433,6 @@ static UINT8 PackCiPacketCont(UINT8 *pInputData, UINT16 *pOverallLen, const UINT case CITY_DEF_STATUS_PACKET: break; case MANUFAC_DEF_STATUS_PACKET: - retVal &= PackManufacDefPacket(pInputData + packedLen, &itemLen, dstCiId); /*鳧Զ֡*/ - packedLen += itemLen; break; default: /*ɴ֧*/ @@ -8629,7 +8560,7 @@ static UINT8 ParseCiPacketCont(const UINT8 *pInputData, const UINT16 overallLen, parsedLen += itemLen; break; case MANUFAC_DEF_STATUS_PACKET: - cRetVal &= ParseManufacDefPacket(pInputData + parsedLen, &itemLen, srcId); + cRetVal &= ParseManufacDefPacket(pInputData + parsedLen, &itemLen); parsedLen += itemLen; break; default: @@ -9080,6 +9011,14 @@ static UINT16 PackCiToCiDataFrameEa(UINT8 dstCiId, UINT8* dataFrame) /* ɢг */ dwMidLine = EaGetMidLine(chEaIndex); + if (UINT32_MAX == dwMidLine) + { + chPackFlag = CI_ERROR; + } + else + { + ; + } /* ־ */ chEaBuidFlag = GetEaBuildedFlag(chEaIndex); @@ -9771,16 +9710,6 @@ UINT8 ParseCiToCiDataCheck(UINT8* dataBuf, UINT16 dataLength,UINT8 *errNo) } } - /*ITEгУ*/ - if (CI_SUCCESS == reVal) - { - reVal = CheckCiToCiAreaIteCutData(dataBuf, &ii); - if (CI_ERROR == reVal) - { - *errNo = 27U; - } - } - /*·ȥ߼У*/ if (CI_SUCCESS == reVal) { @@ -10918,11 +10847,8 @@ UINT8 CheckCiToCiSignalData(const UINT8* dataBuf, UINT16* index) UINT8 chSignalDetainFlag = 0U;/*źŻ۳״̬*/ UINT8 chSignalRelayDetainFlag = 0U;/*źŻӲ߿۳״̬*/ UINT8 chSignalMaintainState = 0U;/*źŻά޵״̬*/ - UINT8 chSignalDsState = 0U;/*źŻ˿״̬*/ - UINT8 chDsState = 0U; /*źŻ˿λУ*/ UINT8 chSignalVBLNearFlag = 0U; /*źŻVBLгӽ־*/ UINT8 chCheckSigCurColorResult = CI_ERROR;/*źŻǰʾɫϷԼ*/ - UINT8 cCutBtnState = 0U; /*·ť״̬*/ chLocalCiId = GetSystemParaLocalCiId(); @@ -11047,60 +10973,6 @@ UINT8 CheckCiToCiSignalData(const UINT8* dataBuf, UINT16* index) debug_infor_printf((const)"CheckCiToCiSignalData wSignalId %d Is Error: chSignalMaintainState Is %d\n", wSignalId, chSignalMaintainState); } } - if (CI_SUCCESS == retVal) - { - /*źŻ˿״̬*/ - chSignalDsState = dataBuf[ii++]; - /*bit7~bit6 10 01 11ͬʱ 00޶˿ ΪϷֵУ*/ - chDsState = (chSignalDsState & SIGNAL_DS_BREAK_GREEN); - if ((SIGNAL_DS_BREAK_GREEN == chDsState) || (0U == chDsState)) - { - chDsState = (chSignalDsState & SIGNAL_DS_BREAK_YELLOW); - if ((SIGNAL_DS_BREAK_YELLOW == chDsState) || (0U == chDsState)) - { - chDsState = (chSignalDsState & SIGNAL_DS_BREAK_WHITE); - if ((SIGNAL_DS_BREAK_WHITE == chDsState) || (0U == chDsState)) - { - retVal = CI_SUCCESS; /**/ - } - else - { - retVal = CI_ERROR; - debug_infor_printf((const)"CheckCiToCiSignalData wSignalId %d Is Error: chSignalWhiteDsState Is %d\n", wSignalId, chSignalDsState); - } - } - else - { - retVal = CI_ERROR; - debug_infor_printf((const)"CheckCiToCiSignalData wSignalId %d Is Error: chSignalYellowDsState Is %d\n", wSignalId, chSignalDsState); - } - } - else - { - retVal = CI_ERROR; - debug_infor_printf((const)"CheckCiToCiSignalData wSignalId %d Is Error: chSignalGreenDsState Is %d\n", wSignalId, chSignalDsState); - } - } - - if (CI_SUCCESS == retVal) - { - /*źŻ۳·ť״̬*/ - cCutBtnState = dataBuf[ii]; - ii++; - if ((SIGNAL_DETAIN_CUT_VALID_NO == cCutBtnState) || (SIGNAL_DETAIN_CUT_VALID_YES == cCutBtnState)) - { - retVal = CI_SUCCESS; /**/ - } - else - { - retVal = CI_ERROR; - debug_infor_printf((const)"CheckCiToCiSignalData wSignalId %d Is Error: SignalDetCutBtnState Is %d\n", wSignalId, cCutBtnState); - } - } - else - { - /**/ - } } } else @@ -13406,7 +13278,15 @@ UINT8 CheckCiToCiEaData(const UINT8* dataBuf, UINT16* index) { strEaTmp.dwMidLine = LongFromChar(&dataBuf[ii]); ii += 4U; - + if (UINT32_MAX > strEaTmp.dwMidLine) + { + /*У*/ + } + else + { + debug_infor_printf((const)"CheckCiToCiEaData BuildEaIndex[%d] Is Error: EaMidLine Is %d\n", jj, strEaTmp.dwMidLine); + retVal = CI_ERROR; + } } else { @@ -13930,8 +13810,6 @@ UINT8 CheckCiToCiPsdData(const UINT8* dataBuf, UINT16* index) UINT16 psdId = 0u; /*Psd豸ID*/ UINT8 doorState = 0u; /*״̬*/ UINT8 mutualLockState = 0u; /*Ż״̬*/ - UINT8 cPsdExceptOpenState = 0U; /*쳣״̬*/ - localCiId = GetSystemParaLocalCiId(); if ((NULL != dataBuf) && (NULL != index)) @@ -13987,19 +13865,6 @@ UINT8 CheckCiToCiPsdData(const UINT8* dataBuf, UINT16* index) retVal = CI_ERROR; } } - - /*쳣״̬*/ - cPsdExceptOpenState = dataBuf[ii]; - ii++; - if ((PSD_EXCEPT_OPEN_YES == cPsdExceptOpenState) || (PSD_EXCEPT_OPEN_NO == cPsdExceptOpenState)) - { - ;/*Уͨ*/ - } - else - { - debug_infor_printf((const)"CheckCiToCiPsdData PsdId %d Is Error: PsdExceptOpenState Is %d\n", psdId, cPsdExceptOpenState); - retVal = CI_ERROR; - } } } else @@ -14762,18 +14627,16 @@ UINT8 CiToCiEnvelopeCheck(const UINT8* dataBuf, UINT16* index) * ͸ѩϢ * ˵ UINT8 cSrcCiId ͷCI * UINT8 cDstCiId շCI -* UINT16 wAreaSnowId ID -* UINT8 cAreaSnowLevel ʪ켶 -* ֵ -* Modified By LQ 2025.5.28 +* UINT32 dwAreaSnowId ѩվ̨ID +* ֵ +* Created By LQ 2023.11.16 */ -void AddCiRecvAreaSnowInfo(UINT8 cSrcCiId, UINT8 cDstCiId, UINT16 wAreaSnowId, UINT8 cAreaSnowLevel) +void AddCiRecvAreaSnowInfo(UINT8 cSrcCiId, UINT8 cDstCiId, UINT32 dwAreaSnowId) { UINT16 ii = 0U; UINT8 cKeepWork = CI_ERROR; - if ((0U != cSrcCiId) && (CI_SUM_MAX > cSrcCiId) && (0U != cDstCiId) && (CI_SUM_MAX > cDstCiId) && (0U != wAreaSnowId) - && ((CI_SNOW_LEVEL_DEFAULT == cAreaSnowLevel) || (CI_SNOW_LEVEL_ONE == cAreaSnowLevel) || (CI_SNOW_LEVEL_TWO == cAreaSnowLevel))) + if ((0U != cSrcCiId) && (CI_SUM_MAX > cSrcCiId) && (0U != cDstCiId) && (CI_SUM_MAX > cDstCiId) && (0U != dwAreaSnowId)) { for (ii = 0U; ii < CI_COM_CI_MAX_NUM; ii++) { @@ -14809,8 +14672,7 @@ void AddCiRecvAreaSnowInfo(UINT8 cSrcCiId, UINT8 cDstCiId, UINT16 wAreaSnowId, U /*ѩϢ*/ szRecvCiAreaSnow[ii].cSourceCiId = cSrcCiId; szRecvCiAreaSnow[ii].cTargetCiId = cDstCiId; - szRecvCiAreaSnow[ii].szPlatFormInfo[szRecvCiAreaSnow[ii].cPlatFormNum].wAreaId = wAreaSnowId; - szRecvCiAreaSnow[ii].szPlatFormInfo[szRecvCiAreaSnow[ii].cPlatFormNum].cAreaSnowLevel = cAreaSnowLevel; + szRecvCiAreaSnow[ii].dwPlatFormId[szRecvCiAreaSnow[ii].cPlatFormNum] = dwAreaSnowId; szRecvCiAreaSnow[ii].cPlatFormNum++; } else @@ -14833,19 +14695,16 @@ void AddCiRecvAreaSnowInfo(UINT8 cSrcCiId, UINT8 cDstCiId, UINT16 wAreaSnowId, U * ӱ͸ָIDѩϢ * ˵ UINT8 cSrcCiId ͷCI * UINT8 cDstCiId շCI -* UINT16 wAreaId ID -* UINT8 cAreaSnowLevel ʪȼ -* ֵ -* Modified By LQ 2025.05.28 +* UINT32 dwAreaSnowId ѩվ̨ID +* ֵ */ -void AddCiSendAreaSnowInfo(UINT8 cSrcCiId, UINT8 cDstCiId, UINT16 wAreaId, UINT8 cAreaSnowLevel) +void AddCiSendAreaSnowInfo(UINT8 cSrcCiId, UINT8 cDstCiId, UINT32 dwAreaSnowId) { UINT16 ii = 0U; UINT8 cKeepWork = CI_ERROR; UINT8 jj = 0U; - if ((0U != cSrcCiId) && (CI_SUM_MAX > cSrcCiId) && (0U != cDstCiId) && (CI_SUM_MAX > cDstCiId) && (0U != wAreaId) - && ((CI_SNOW_LEVEL_DEFAULT == cAreaSnowLevel) || (CI_SNOW_LEVEL_ONE == cAreaSnowLevel) || (CI_SNOW_LEVEL_TWO == cAreaSnowLevel))) + if ((0U != cSrcCiId) && (CI_SUM_MAX > cSrcCiId) && (0U != cDstCiId) && (CI_SUM_MAX > cDstCiId) && (0U != dwAreaSnowId)) { for (ii = 0U; ii < CI_COM_CI_MAX_NUM; ii++) { @@ -14881,7 +14740,7 @@ void AddCiSendAreaSnowInfo(UINT8 cSrcCiId, UINT8 cDstCiId, UINT16 wAreaId, UINT8 /*by cgh ȥ*/ for (jj = 0U; jj < szSendCiAreaSnow[ii].cPlatFormNum; jj++) { - if (szSendCiAreaSnow[ii].szPlatFormInfo[jj].wAreaId == wAreaId) + if (szSendCiAreaSnow[ii].dwPlatFormId[jj] == dwAreaSnowId) { break; } @@ -14896,8 +14755,7 @@ void AddCiSendAreaSnowInfo(UINT8 cSrcCiId, UINT8 cDstCiId, UINT16 wAreaId, UINT8 /*ѩϢ*/ szSendCiAreaSnow[ii].cSourceCiId = cSrcCiId; szSendCiAreaSnow[ii].cTargetCiId = cDstCiId; - szSendCiAreaSnow[ii].szPlatFormInfo[szSendCiAreaSnow[ii].cPlatFormNum].wAreaId = wAreaId; - szSendCiAreaSnow[ii].szPlatFormInfo[szSendCiAreaSnow[ii].cPlatFormNum].cAreaSnowLevel = cAreaSnowLevel; + szSendCiAreaSnow[ii].dwPlatFormId[szSendCiAreaSnow[ii].cPlatFormNum] = dwAreaSnowId; szSendCiAreaSnow[ii].cPlatFormNum++; } else @@ -15021,10 +14879,9 @@ UINT8 CheckCiToCiAreaSnowData(const UINT8* dataBuf, UINT16* index) UINT16 ii = 0U; UINT8 jj = 0U; UINT8 cAreaSnowNum = 0U; /**/ - UINT16 wPlatFormId = 0U; /*ѩվ̨ID*/ + UINT32 dwPlatFormId = 0U; /*ѩվ̨ID*/ UINT8 cPlatFormBelongCiId = 0U; /*վ̨*/ UINT8 localCiId = 0U; /*ID*/ - UINT8 cAreaSnowLevel = 0U; /*ʪȼ*/ if ((NULL != dataBuf) && (NULL != index)) { @@ -15038,13 +14895,13 @@ UINT8 CheckCiToCiAreaSnowData(const UINT8* dataBuf, UINT16* index) { for (jj = 0U; jj < cAreaSnowNum; jj++) { - /*УID*/ - wPlatFormId = ShortFromChar(&dataBuf[ii]); - ii += 2U; + /*Уѩվ̨ID*/ + dwPlatFormId = LongFromChar(&dataBuf[ii]); + ii += 4U; - if ((0U < wPlatFormId) && (UINT16_MAX > wPlatFormId)) + if ((0U != dwPlatFormId) && (UINT32_MAX > dwPlatFormId)) { - cPlatFormBelongCiId = GetAreaSnowPlatFormBelongCiId(wPlatFormId); /*ȡѩվ̨*/ + cPlatFormBelongCiId = GetAreaSnowPlatFormBelongCiId((UINT16)dwPlatFormId); /*ȡѩվ̨*/ if ((localCiId != cPlatFormBelongCiId) && (0U != cPlatFormBelongCiId) && (0U != localCiId)) { @@ -15059,30 +14916,10 @@ UINT8 CheckCiToCiAreaSnowData(const UINT8* dataBuf, UINT16* index) } else { - debug_infor_printf((const)"CheckCiToCiAreaSnowData Is Error: wPlatFormId Is %d\n", wPlatFormId); + debug_infor_printf((const)"CheckCiToCiAreaSnowData Is Error: dwPlatFormId Is %d\n", dwPlatFormId); retVal = CI_ERROR; } - if (CI_SUCCESS == retVal) - { - cAreaSnowLevel = dataBuf[ii]; /*ʪȼ*/ - ii++; - - if ((CI_SNOW_LEVEL_DEFAULT == cAreaSnowLevel) || (CI_SNOW_LEVEL_ONE == cAreaSnowLevel) || (CI_SNOW_LEVEL_TWO == cAreaSnowLevel)) - { - /*Уͨ*/ - } - else - { - debug_infor_printf((const)"CheckCiToCiAreaSnowData Is Error: AreaSnowLevel Is %d\n", cAreaSnowLevel); - retVal = CI_ERROR; - } - } - else - { - /*ѽʧܣ*/ - } - if (CI_SUCCESS != retVal) { break; @@ -15670,10 +15507,6 @@ UINT8 CheckCiToCiNeedCheckSwRouteData(const UINT8* dataBuf, UINT16* index) UINT16 wNeedCheckRouteSum = 0U; /*Ҫ·Ŀ*/ UINT32 wNeedCheckRouteId = 0U; /*Ҫ·ID*/ UINT8 chRouteApplySwitchCheckFlag = 0U;/*·־*/ - UINT16 wErrorDevID = 0U; - UINT8 chErrorDevType = 0U; - UINT8 chErrorDevState = 0U; - UINT8 chErrorCodeType = 0U; if ((NULL != dataBuf) && (NULL != index)) { @@ -15696,99 +15529,12 @@ UINT8 CheckCiToCiNeedCheckSwRouteData(const UINT8* dataBuf, UINT16* index) ii++; if ((ROUTE_APPLY_SWITCH_CHECK_NO == chRouteApplySwitchCheckFlag) || (ROUTE_APPLY_SWITCH_CHECK_YES == chRouteApplySwitchCheckFlag)) { - /*豸ID 2 豸1 豸״̬1 1*/ - wErrorDevID = ShortFromChar(&dataBuf[ii]); - ii += 2U; - chErrorDevType = dataBuf[ii++]; - chErrorDevState = dataBuf[ii++]; - chErrorCodeType = dataBuf[ii++]; - if (0U == wErrorDevID) - { - ;/*͡״̬ʹͼ*/ - } - else - { - switch (chErrorDevType) - { - case CI_DEVICE_TYPE_SWITCH: - if (SWITCH_SUM_MAX > wErrorDevID) - { - if ((ETYPE_SWT_POSTION_STATE == chErrorCodeType) - || (ETYPE_SWT_YLOCK_STATE == chErrorCodeType) - || (ETYPE_SWT_LOCK_STATUS == chErrorCodeType)) - { - ;/*ͨ*/ - } - else - { - retVal = CI_ERROR; - debug_infor_printf((const)"CheckCiToCiNeedCheckSwRouteData Is Error: Switchid: chErrorCodeType Is %d\n", chErrorCodeType); - } - } - else - { - debug_infor_printf((const)"CheckCiToCiNeedCheckSwRouteData Is Error: Switchid: wErrorDevID Is %d\n", wErrorDevID); - retVal = CI_ERROR; - } - break; - case CI_DEVICE_TYPE_ROUTE: - if ((wNeedCheckRouteId != wErrorDevID) || (ETYPE_ROUTE_APPLY_SWITCH_MOVE != chErrorCodeType)) - { - retVal = CI_ERROR;/**/ - debug_infor_printf((const)"CheckCiToCiNeedCheckSwRouteData Is Error: Route: wErrorDevID Is %d\n", wErrorDevID); - } - break; - case CI_DEVICE_TYPE_LOGICSEC: - if (LOGIC_SECTION_SUM_MAX > wErrorDevID) - { - if (ETYPE_LOGSEC_LOCK_STATE == chErrorCodeType) - { - ;/*ͨ*/ - } - else - { - debug_infor_printf((const)"CheckCiToCiNeedCheckSwRouteData Is Error: Logsec: chErrorDevState Is %d\n", chErrorCodeType); - retVal = CI_ERROR; - } - } - else - { - retVal = CI_ERROR; - debug_infor_printf((const)"CheckCiToCiNeedCheckSwRouteData Is Error: LogSec: wErrorDevID Is %d\n", wErrorDevID); - } - break; - case CI_DEVICE_TYPE_PHYSEC: - if (PHYSICAL_SECTION_SUM_MAX > wErrorDevID) - { - if ((ETYPE_PS_LOCK_STATE == chErrorCodeType) - ||(ETYPE_PS_JUMP_LOCK == chErrorCodeType) - ||(ETYPE_PS_MERGY_OCU_STATE == chErrorCodeType) - ||(ETYPE_PS_FLOCK_STATE == chErrorCodeType)) - { - ;/*ͨ*/ - } - else - { - debug_infor_printf((const)"CheckCiToCiNeedCheckSwRouteData Is Error: PhySec: chErrorCodeType Is %d\n", chErrorCodeType); - retVal = CI_ERROR; - } - } - else - { - retVal = CI_ERROR; - debug_infor_printf((const)"CheckCiToCiNeedCheckSwRouteData Is Error: PhySec: wErrorDevID Is %d\n", wErrorDevID); - } - break; - default: - debug_infor_printf((const)"CheckCiToCiNeedCheckSwRouteData Is Error: chErrorDevType Is %d\n", chErrorDevType); - retVal = CI_ERROR;/**/ - } - } + ; } else { /*ʧ*/ - debug_infor_printf((const)"CheckCiToCiNeedCheckSwRouteData Is Error: chRouteApplySwitchCheckFlag Is %d\n", chRouteApplySwitchCheckFlag); + debug_infor_printf((const)"CheckCiToCiLeaveLogSecData Is Error: chRouteApplySwitchCheckFlag Is %d\n", chRouteApplySwitchCheckFlag); retVal = CI_ERROR; } } @@ -16334,1519 +16080,5 @@ UINT8 InitNeedOlapUsingOtherCiProSw(void) } } - return cRetVal; -} - -/* -* ͸ITEгϢ -* ˵const UINT8 cSrcCiId ͷCI -* ֵ -* Created By LQ 2025.04.14 -*/ -void ClearCiRecvAreaIteCutInfo(const UINT8 cSrcCiId) -{ - UINT16 ii = 0U; - - if ((0U != cSrcCiId) && (CI_SUM_MAX > cSrcCiId)) - { - for (ii = 0U; ii < CI_COM_CI_MAX_NUM; ii++) - { - if (szRecvCiAreaIteCut[ii].cSourceCiId == cSrcCiId) - { - (void)CommonMemSet(&szRecvCiAreaIteCut[ii], (UINT32)sizeof(ToCiAreaIteCutStruct), 0U, (UINT32)sizeof(ToCiAreaIteCutStruct)); - break; - } - else - { - /**/ - } - } - } - else - { - /*ηǷ*/ - } -} - -/* -* ͸ITEгϢ -* ˵ -* ֵ -* Created By LQ 2025.04.14 -*/ -void ClearCiSendAreaIteCutInfo(void) -{ - (void)CommonMemSet(szSendCiAreaIteCut, (UINT32)(CI_COM_CI_MAX_NUM * sizeof(ToCiAreaIteCutStruct)), 0U, (UINT32)(CI_COM_CI_MAX_NUM * sizeof(ToCiAreaIteCutStruct))); -} - -/* -* ȡ͸ITEгϢ -* ˵ -* ֵ ITEгϢ -* Created By LQ 2025.04.14 -*/ -ToCiAreaIteCutStruct* GetCiRecvAreaIteCutInfo(void) -{ - return szRecvCiAreaIteCut; -} - -/* -* ȡ͸ָIDITEгϢ -* ˵const UINT8 cTargetCiId Ŀ -* ֵ͸ITEгϢ -* Created By LQ 2023.11.16 -*/ -ToCiAreaIteCutStruct* GetCiSendAreaIteCutInfo(const UINT8 cTargetCiId) -{ - ToCiAreaIteCutStruct* retVal = NULL; - UINT16 ii = 0U; - - if ((0U != cTargetCiId) && (CI_SUM_MAX > cTargetCiId)) - { - for (ii = 0U; ii < CI_COM_CI_MAX_NUM; ii++) - { - if (szSendCiAreaIteCut[ii].cTargetCiId == cTargetCiId) - { - retVal = &szSendCiAreaIteCut[ii]; - } - else - { - /**/ - } - } - } - else - { - /*ηǷNULL*/ - } - - return retVal; -} - -/* -* ͸ITEгϢ -* ˵UINT8 cSrcCiId ͷCI -* UINT8 cDstCiId շCI -* UINT16 wAreaId ID -* ֵ -* Created By LQ 2025.04.14 -*/ -void AddCiRecvAreaIteCutInfo(UINT8 cSrcCiId, UINT8 cDstCiId, UINT16 wAreaId) -{ - UINT16 ii = 0U; - UINT8 cKeepWork = CI_ERROR; - UINT8 cLocalAreaIteCutNum = 0U; - UINT16* pLocalAreaIteCutId = NULL; - UINT8 jj = 0U; - UINT8 cAddFlag = CI_SUCCESS; - - if ((0U != cSrcCiId) && (CI_SUM_MAX > cSrcCiId) && (0U != cDstCiId) && (CI_SUM_MAX > cDstCiId) && (0U != wAreaId) && (UINT16_MAX > wAreaId)) - { - /*IDǷѰڱ*/ - cLocalAreaIteCutNum = GetLocalAreaIteCutNum(); - pLocalAreaIteCutId = GetLocalAreaIteCutId(); - - if ((0U < cLocalAreaIteCutNum) && (NULL != pLocalAreaIteCutId)) - { - for (jj = 0U; jj < cLocalAreaIteCutNum; jj++) - { - if (wAreaId == pLocalAreaIteCutId[jj]) - { - cAddFlag = CI_ERROR; - break; - } - else - { - /**/ - } - } - } - else - { - /**/ - } - - if (CI_SUCCESS == cAddFlag) - { - for (ii = 0U; ii < CI_COM_CI_MAX_NUM; ii++) - { - /*ѰĿCI*/ - if ((cSrcCiId == szRecvCiAreaIteCut[ii].cSourceCiId) && (cDstCiId == szRecvCiAreaIteCut[ii].cTargetCiId)) - { - cKeepWork = CI_SUCCESS; - } - else if ((0U == szRecvCiAreaIteCut[ii].cSourceCiId) && (0U == szRecvCiAreaIteCut[ii].cTargetCiId)) - { - cKeepWork = CI_SUCCESS; - } - else - { - /*ĿCI*/ - } - - if (CI_SUCCESS == cKeepWork) - { - - break; - } - else - { - /**/ - } - } - - if (CI_SUCCESS == cKeepWork) - { - if (CI_TO_CI_AREA_SNOW_SUM_MAX > szRecvCiAreaIteCut[ii].cAreaIteCutNum) - { - /*ITEгϢ*/ - szRecvCiAreaIteCut[ii].cSourceCiId = cSrcCiId; - szRecvCiAreaIteCut[ii].cTargetCiId = cDstCiId; - szRecvCiAreaIteCut[ii].wAreaIteCutId[szRecvCiAreaIteCut[ii].cAreaIteCutNum] = wAreaId; - szRecvCiAreaIteCut[ii].cAreaIteCutNum++; - } - else - { - debug_infor_printf((const)"AddCiRecvAreaIteCutInfo Error: Area Num Exceed Max %d!\n", CI_TO_CI_AREA_SNOW_SUM_MAX); - } - } - else - { - debug_infor_printf((const)"AddCiRecvAreaIteCutInfo Error: No TargetCi!\n"); - } - } - else - { - /**/ - } - } - else - { - debug_infor_printf((const)"AddCiRecvAreaIteCutInfo Error: Input Data Error!\n"); - } -} - -/* -* ӱ͸ָIDITEгϢ -* ˵UINT8 cSrcCiId ͷCI -* UINT8 cDstCiId շCI -* UINT16 wAreaId ID -* ֵ -* Created By LQ 2025.04.14 -*/ -void AddCiSendAreaIteCutInfo(UINT8 cSrcCiId, UINT8 cDstCiId, UINT16 wAreaId) -{ - UINT16 ii = 0U; - UINT8 cKeepWork = CI_ERROR; - UINT8 jj = 0U; - UINT8 cCommCiNum = 0U; - UINT8* pCommCiId = NULL; - UINT8 cAddFlag = CI_ERROR; - - if ((0U != cSrcCiId) && (CI_SUM_MAX > cSrcCiId) && (0U != cDstCiId) && (CI_SUM_MAX > cDstCiId) && (0U != wAreaId) && (UINT16_MAX > wAreaId)) - { - cCommCiNum = GetCiTransmitSpecifySysDevSum(CI_SYSTEM_TYPE_CI); /*ȡͨCI豸*/ - pCommCiId = GetCiTransmitSpecifySysDevBuf(CI_SYSTEM_TYPE_CI); /*ȡͨCI豸ID*/ - - if ((0U < cCommCiNum) && (NULL != pCommCiId)) - { - for (jj = 0U; jj < cCommCiNum; jj++) - { - if (cDstCiId == pCommCiId[jj]) - { - cAddFlag = CI_SUCCESS; - break; - } - else - { - /**/ - } - } - } - else - { - /**/ - } - - if (CI_SUCCESS == cAddFlag) - { - for (ii = 0U; ii < CI_COM_CI_MAX_NUM; ii++) - { - /*ѰĿCI*/ - if ((cSrcCiId == szSendCiAreaIteCut[ii].cSourceCiId) && (cDstCiId == szSendCiAreaIteCut[ii].cTargetCiId)) - { - cKeepWork = CI_SUCCESS; - } - else if ((0U == szSendCiAreaIteCut[ii].cSourceCiId) && (0U == szSendCiAreaIteCut[ii].cTargetCiId)) - { - cKeepWork = CI_SUCCESS; - } - else - { - /*ĿCI*/ - } - - if (CI_SUCCESS == cKeepWork) - { - - break; - } - else - { - /**/ - } - } - - if (CI_SUCCESS == cKeepWork) - { - if (CI_TO_CI_AREA_SNOW_SUM_MAX > szSendCiAreaIteCut[ii].cAreaIteCutNum) - { - for (jj = 0U; jj < szSendCiAreaIteCut[ii].cAreaIteCutNum; jj++) - { - /*ȥش*/ - if (szSendCiAreaIteCut[ii].wAreaIteCutId[jj] == wAreaId) - { - break; - } - else - { - ; /**/ - } - } - - if (szSendCiAreaIteCut[ii].cAreaIteCutNum == jj) - { - /*ITEгϢ*/ - szSendCiAreaIteCut[ii].cSourceCiId = cSrcCiId; - szSendCiAreaIteCut[ii].cTargetCiId = cDstCiId; - szSendCiAreaIteCut[ii].wAreaIteCutId[szSendCiAreaIteCut[ii].cAreaIteCutNum] = wAreaId; - szSendCiAreaIteCut[ii].cAreaIteCutNum++; - } - else - { - ; /*ظ*/ - } - } - else - { - debug_infor_printf((const)"AddCiSendAreaIteCutInfo Error: Area Num Exceed Max %d!\n", CI_TO_CI_AREA_SNOW_SUM_MAX); - } - } - else - { - debug_infor_printf((const)"AddCiSendAreaIteCutInfo Error: No TargetCi!\n"); - } - } - else - { - /*ĿRC/CIͨŹϵ*/ - } - } - else - { - debug_infor_printf((const)"AddCiSendAreaIteCutInfo Error: Input Data Error!\n"); - } -} - -/* -* УCI͵ĴITEг -* ˵const UINT8* dataBuf ݣ -* UINT16* index -* ֵ0 Уʧ -* 1 Уɹ -* Created By LQ 2024.04.15 -*/ -UINT8 CheckCiToCiAreaIteCutData(const UINT8* dataBuf, UINT16* index) -{ - UINT8 retVal = CI_ERROR; - UINT16 ii = 0U; - UINT8 jj = 0U; - UINT8 cAreaIteCutNum = 0U; /*ITEг*/ - UINT16 wAreaId = 0U; /*ID*/ - UINT8 cAreaBelongCiId = 0U; /**/ - UINT8 localCiId = 0U; /*ID*/ - - if ((NULL != dataBuf) && (NULL != index)) - { - retVal = CI_SUCCESS; - ii = *index; - localCiId = GetSystemParaLocalCiId(); - - cAreaIteCutNum = dataBuf[ii]; /*ITEг*/ - ii++; - if (CI_TO_CI_AREA_SNOW_SUM_MAX >= cAreaIteCutNum) - { - for (jj = 0U; jj < cAreaIteCutNum; jj++) - { - /*УID*/ - wAreaId = ShortFromChar(&dataBuf[ii]); - ii += 2U; - - if ((0U != wAreaId) && (UINT16_MAX > wAreaId)) - { - cAreaBelongCiId = GetAreaSnowPlatFormBelongCiId(wAreaId); /*ȡ*/ - - if ((localCiId != cAreaBelongCiId) && (0U != cAreaBelongCiId) && (0U != localCiId)) - { - /*Уͨ*/ - } - else - { - /*Ϊʧ*/ - debug_infor_printf((const)"CheckCiToCiAreaIteCutData Is Error: cAreaBelongCiId Is %d\n", cAreaBelongCiId); - retVal = CI_ERROR; - } - } - else - { - debug_infor_printf((const)"CheckCiToCiAreaIteCutData Is Error: wAreaId Is %d\n", wAreaId); - retVal = CI_ERROR; - } - - if (CI_SUCCESS != retVal) - { - break; - } - else - { - /**/ - } - } - } - else - { - /*ޣʧ*/ - debug_infor_printf((const)"CheckCiToCiAreaIteCutData Is Error: cAreaIteCutNum Is %d\n", cAreaIteCutNum); - retVal = CI_ERROR; - } - *index = ii; - } - else - { - /*Уʧܣʧ*/ - retVal = CI_ERROR; - } - - return retVal; -} - -/* -* 黥ͨԶ֡ -* ˵UINT8 *pInputData ָ -* UINT16 *pItemLen еijȣΣ -* 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) -{ - UINT8 cRetVal = CI_ERROR; - UINT16 wPackedInfoNum = 0U; /*Ϣ*/ - UINT16 wDeviceId = 0U; /*豸ID*/ - UINT8 cDeviceState = 0U; /*豸״̬*/ - UINT16 ii = 0U; - UINT8 cTempCounter = 0U; /*ѭ*/ - UINT8 cBitOffset = 0U; /*λƫ*/ - UINT16 wPackedLen = 0U; - CiTransmitStruct* pTmpCiTransInfo = NULL; - UINT16 wSwitchRelPhySecId = 0U; /*ID*/ - UINT16 wLockedRouteId = 0U; /*·ID*/ - - pTmpCiTransInfo = GetDstCiTransInfo(dstCiId); - - if ((NULL != pInputBuf) && (NULL != pItemLen) && (NULL != pTmpCiTransInfo)) - { - /*鳧ԶϢ汾΢Ĭ0x01*/ - *(pInputBuf + wPackedLen) = MANUFAC_DEF_INFO_VER_WL; - wPackedLen++; - - /*Զ·*/ - for (ii = 0U; ii < pTmpCiTransInfo->autoRouteNum; ii++) - { - cTempCounter = (UINT8)(wPackedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽڿɴ4Ϣ*/ - cBitOffset = cTempCounter * BIT_NUM_PER_DEV; - - wDeviceId = pTmpCiTransInfo->autoRouteIdBuf[ii]; - cDeviceState = GetAutoRouteSetFlag(wDeviceId); /*ȡԶ·־*/ - if (AUTO_ROUTE_SET_YES == cDeviceState) - { - *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000010B << cBitOffset); /*Զ·*/ - } - else - { - *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000001B << cBitOffset); /*δԶ·*/ - } - - if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) - { - wPackedLen++; /*һֽڣȼ1*/ - } - else - { - /**/ - } - wPackedInfoNum++; /*һϢ1*/ - } - - /*ʱ*/ - for (ii = 0U; ii < pTmpCiTransInfo->logicSecNum; ii++) - { - cTempCounter = (UINT8)(wPackedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽڿɴ4Ϣ*/ - cBitOffset = cTempCounter * BIT_NUM_PER_DEV; - - *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000010B << cBitOffset); /*ʱٹԤĬ鲻ڽʱ*/ - - if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) - { - wPackedLen++; /*һֽڣȼ1*/ - } - else - { - /**/ - } - wPackedInfoNum++; /*һϢ1*/ - } - - /*״̬*/ - for (ii = 0U; ii < pTmpCiTransInfo->switchNum; ii++) - { - cTempCounter = (UINT8)(wPackedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽڿɴ4Ϣ*/ - cBitOffset = cTempCounter * BIT_NUM_PER_DEV; - - wDeviceId = pTmpCiTransInfo->switchIdBuf[ii]; - cDeviceState = GetSwitchLockStatus(wDeviceId); /*ȡ״̬*/ - if ((SWITCH_LOCK_STATUS_PROTECT == cDeviceState) || (SWITCH_LOCK_STATUS_DAP == cDeviceState)) - { - *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000001B << cBitOffset); /*з*/ - } - else - { - *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000010B << cBitOffset); /*޷*/ - } - - if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) - { - wPackedLen++; /*һֽڣȼ1*/ - } - else - { - /**/ - } - wPackedInfoNum++; /*һϢ1*/ - } - - /*״̬*/ - for (ii = 0U; ii < pTmpCiTransInfo->switchNum; ii++) - { - /*CTռ״̬*/ - cTempCounter = (UINT8)(wPackedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽڿɴ4Ϣ*/ - cBitOffset = cTempCounter * BIT_NUM_PER_DEV; - - wDeviceId = pTmpCiTransInfo->switchIdBuf[ii]; - wSwitchRelPhySecId = GetSwitchPhySectionId(wDeviceId); /*ȡID*/ - cDeviceState = GetPhySecPreOccState(wSwitchRelPhySecId); /*ȡCT/UTռ״̬*/ - if ((LOGICSECTION_OCCUPY_UT == cDeviceState) || (LOGICSECTION_OCCUPY_NO == cDeviceState)) - { - *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000010B << cBitOffset); /**/ - } - else - { - *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000001B << cBitOffset); /*CTռ*/ - } - - if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) - { - wPackedLen++; /*һֽڣȼ1*/ - } - else - { - /**/ - } - wPackedInfoNum++; /*һϢ1*/ - - /*UTռ״̬*/ - cTempCounter = (UINT8)(wPackedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽڿɴ4Ϣ*/ - cBitOffset = cTempCounter * BIT_NUM_PER_DEV; - - cDeviceState = GetPhySecPreOccState(wSwitchRelPhySecId); /*ȡCT/UTռ״̬*/ - if ((LOGICSECTION_OCCUPY_CT == cDeviceState) || (LOGICSECTION_OCCUPY_NO == cDeviceState)) - { - *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000010B << cBitOffset); /**/ - } - else - { - *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000001B << cBitOffset); /*UTռ*/ - } - - if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) - { - wPackedLen++; /*һֽڣȼ1*/ - } - else - { - /**/ - } - wPackedInfoNum++; /*һϢ1*/ - - /*ν·״̬*/ - cTempCounter = (UINT8)(wPackedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽڿɴ4Ϣ*/ - cBitOffset = cTempCounter * BIT_NUM_PER_DEV; - - cDeviceState = GetPhySecLockState(wSwitchRelPhySecId); /*ȡ״̬*/ - wLockedRouteId = GetPhySecRLockBelongRouteId(wSwitchRelPhySecId); /*ȡν··ID*/ - if (((PHYSICAL_SECTION_LOCK_NORMAL == cDeviceState) || (PHYSICAL_SECTION_LOCK_DELAY == cDeviceState)) && (0U != wLockedRouteId)) - { - *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000010B << cBitOffset); /*ڽ·*/ - } - else - { - *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000001B << cBitOffset); /*ڽ·*/ - } - - if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) - { - wPackedLen++; /*һֽڣȼ1*/ - } - else - { - /**/ - } - wPackedInfoNum++; /*һϢ1*/ - - /*η״̬*/ - cTempCounter = (UINT8)(wPackedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽڿɴ4Ϣ*/ - cBitOffset = cTempCounter * BIT_NUM_PER_DEV; - - cDeviceState = GetPhySecFLockState(wSwitchRelPhySecId); /*ȡη״̬*/ - if (PHYSICAL_SECTION_FLOCK_NO == cDeviceState) - { - *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000010B << cBitOffset); /*δ*/ - } - else - { - *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000001B << cBitOffset); /**/ - } - - if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) - { - wPackedLen++; /*һֽڣȼ1*/ - } - else - { - /**/ - } - wPackedInfoNum++; /*һϢ1*/ - - /*쳣״̬*/ - cTempCounter = (UINT8)(wPackedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽڿɴ4Ϣ*/ - cBitOffset = cTempCounter * BIT_NUM_PER_DEV; - - cDeviceState = GetPhySecLockState(wSwitchRelPhySecId); /*ȡ״̬*/ - wLockedRouteId = GetPhySecRLockBelongRouteId(wSwitchRelPhySecId); /*ȡν··ID*/ - if ((PHYSICAL_SECTION_LOCK_EXCEPT == cDeviceState) && (0U != wLockedRouteId)) - { - *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000010B << cBitOffset); /*ڹ*/ - } - else - { - *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000001B << cBitOffset); /*ڹ*/ - } - - if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) - { - wPackedLen++; /*һֽڣȼ1*/ - } - else - { - /**/ - } - wPackedInfoNum++; /*һϢ1*/ - } - - /*ͣ׼ͣ״̬*/ - for (ii = 0U; ii < pTmpCiTransInfo->phySecNum; ii++) - { - cTempCounter = (UINT8)(wPackedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽڿɴ4Ϣ*/ - cBitOffset = cTempCounter * BIT_NUM_PER_DEV; - - wDeviceId = pTmpCiTransInfo->phySecIdBuf[ii]; - cDeviceState = GetPhySecStopSteadyFlag(wDeviceId); /*ȡͣ׼ͣ״̬*/ - - if (PHYSICAL_SECTION_STOPSTEADY_YES == cDeviceState) - { - *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000010B << cBitOffset); /*ͣ׼ͣ*/ - } - else - { - *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000001B << cBitOffset); /*δͣ׼ͣ*/ - } - - if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) - { - wPackedLen++; /*һֽڣȼ1*/ - } - else - { - /**/ - } - wPackedInfoNum++; /*һϢ1*/ - } - - /*μԤλ״̬Ϊλ*/ - for (ii = 0U; ii < pTmpCiTransInfo->phySecNum; ii++) - { - cTempCounter = (UINT8)(wPackedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽڿɴ4Ϣ*/ - cBitOffset = cTempCounter * BIT_NUM_PER_DEV; - - wDeviceId = pTmpCiTransInfo->phySecIdBuf[ii]; - cDeviceState = GetPhySecPreResetState(wDeviceId); /*ȡμԤλ״̬*/ - - if (PHYSICAL_SECTION_PRE_RESET_YES == cDeviceState) - { - *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000010B << cBitOffset); /*Ԥλ״̵̬*/ - } - else - { - *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000001B << cBitOffset); /*Ԥλ״̵̬*/ - } - - if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) - { - wPackedLen++; /*һֽڣȼ1*/ - } - else - { - /**/ - } - wPackedInfoNum++; /*һϢ1*/ - } - - /*źŻƶ˿״̬*/ - for (ii = 0U; ii < pTmpCiTransInfo->signalNum; ii++) - { - cTempCounter = (UINT8)(wPackedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽڿɴ4Ϣ*/ - cBitOffset = cTempCounter * BIT_NUM_PER_DEV; - - wDeviceId = pTmpCiTransInfo->signalIdBuf[ii]; - cDeviceState = GetSignalBlueDsBreakFlag(wDeviceId); /*ȡźŻƶ˿״̬*/ - - if (SIGNAL_DS_BREAK_NO == cDeviceState) - { - *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000010B << cBitOffset); /*δ˿*/ - } - else - { - *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000001B << cBitOffset); /*ƶ˿*/ - } - - if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) - { - wPackedLen++; /*һֽڣȼ1*/ - } - else - { - /**/ - } - wPackedInfoNum++; /*һϢ1*/ - } - - /*źŻ۳״̬Ŀ۳ͳվ۳*/ - for (ii = 0U; ii < pTmpCiTransInfo->signalNum; ii++) - { - /*źŻĿ۳״̬*/ - cTempCounter = (UINT8)(wPackedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽڿɴ4Ϣ*/ - cBitOffset = cTempCounter * BIT_NUM_PER_DEV; - - wDeviceId = pTmpCiTransInfo->signalIdBuf[ii]; - cDeviceState = GetSignalATSDetainFlag(wDeviceId); /*ȡźŻĿ۳״̬*/ - if (SIGNAL_ATS_DETAIN_NO == cDeviceState) - { - *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000010B << cBitOffset); /*ڿ۳*/ - } - else - { - *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000001B << cBitOffset); /*ڿ۳*/ - } - - if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) - { - wPackedLen++; /*һֽڣȼ1*/ - } - else - { - /**/ - } - wPackedInfoNum++; /*һϢ1*/ - - /*źŻվ۳״̬*/ - cTempCounter = (UINT8)(wPackedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽڿɴ4Ϣ*/ - cBitOffset = cTempCounter * BIT_NUM_PER_DEV; - - cDeviceState = GetSignalLocalDetainFlag(wDeviceId); /*ȡźŻվ۳״̬*/ - if (SIGNAL_XIANDI_DETAIN_NO == cDeviceState) - { - *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000010B << cBitOffset); /*ڿ۳*/ - } - else - { - *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000001B << cBitOffset); /*ڿ۳*/ - } - - if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) - { - wPackedLen++; /*һֽڣȼ1*/ - } - else - { - /**/ - } - wPackedInfoNum++; /*һϢ1*/ - } - - if ((DEV_NUM_PER_BYTE - 1U) != cTempCounter) - { - wPackedLen++; /*һֽδ4ϢҪ1*/ - } - else - { - /**/ - } - - *pItemLen = wPackedLen; - cRetVal = CI_SUCCESS; - } - else - { - cRetVal = CI_ERROR; /*ηǷʧ*/ - } - - return cRetVal; -} - -/* -* ͨԶ֡ -* ˵const UINT8 *pInputData ָ -* UINT16 *pItemLen еij -* 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) -{ - UINT8 cRetVal = CI_ERROR; - UINT8 cLocalCiId = 0U; - const CiTransmitStruct* pCiRecptStru = NULL; - AutoRouteDataStruct* pstrAutoRouteData = NULL; /*Զ·̬ݽṹָ*/ - LogicSectionDataStruct* pstrLogSecData = NULL; /*߼ζ̬ݽṹָ*/ - SwitchDataStruct* pstrSwitchData = NULL; /*̬ݽṹָ*/ - PhysicalSectionDataStruct* pstrPhySecData = NULL; /*ζ̬ݽṹָ*/ - SignalDataStruct* pstrSignalData = NULL; /*źŻ̬ݽṹָ*/ - UINT8 cInfoVer = 0U; /*Ϣ汾*/ - UINT16 wParsedLen = 0U; /*ָƫ*/ - UINT16 ii = 0U; - UINT16 wParsedInfoNum = 0U; /*ѽϢ*/ - UINT8 cTempCounter = 0U; /*ѭ*/ - UINT8 cBitOffset = 0U; /*λƫ*/ - UINT16 wDevId = 0U; /*豸ID*/ - UINT8 cDevBelongCiId = 0U; /*豸*/ - UINT16 wDevIndex = 0U; /*豸ID*/ - UINT8 cDevInfo = 0U; /*豸Ϣ*/ - UINT8 cDevState = 0U; /*豸״̬*/ - UINT8 cPhySecCtOcc = 0U; /*CTռ״̬*/ - UINT8 cPhySecUtOcc = 0U; /*UTռ״̬*/ - UINT8 cPhySecCtOrUtOcc = 0U; /*CT/UTռ״̬*/ - UINT8 cPhySecRouteLockState = 0U; /*ν·״̬*/ - UINT8 cPhySecExceptLockState = 0U; /*ι״̬*/ - UINT8 cPhySecLockState = 0U; /*״̬*/ - UINT8 cPhySecFLockState = 0U; /*η״̬*/ - UINT16 wPhySecId = 0U; /*ID*/ - UINT8 cSignalAtsDetainFlag = 0U; /*źŻĿ۳־*/ - UINT8 cSignalXiandiDetainFlag = 0U; /*źŻվ۳־*/ - - cLocalCiId = GetSystemParaLocalCiId(); - pCiRecptStru = GetSrcCiTransInfo(srcCiId); /*ȡԴӦĽṹ*/ - pstrAutoRouteData = GetAutoRouteDataStr(); /*ȡԶ·̬ݽṹ*/ - pstrLogSecData = GetLogicSecData(); /*ȡ߼ζ̬ݽṹ*/ - pstrSwitchData = GetSwitchData(); /*ȡ̬ݽṹ*/ - pstrPhySecData = GetPhySecData(); /*ȡζ̬ݽṹ*/ - pstrSignalData = GetSignalData(); /*ȡźŻ̬ݽṹ*/ - - if ((NULL !=pInputData) && (NULL != pItemLen) && (NULL != pCiRecptStru) && (0U != cLocalCiId) && (NULL != pstrAutoRouteData) - && (NULL != pstrLogSecData) && (NULL != pstrSwitchData) && (NULL != pstrPhySecData) && (NULL != pstrSignalData)) - { - cInfoVer = *(pInputData + wParsedLen); - wParsedLen++; - - if (MANUFAC_DEF_INFO_VER_WL == cInfoVer) - { - cRetVal = CI_SUCCESS; - - /*Զ·Ϣ*/ - for (ii = 0U; ii < pCiRecptStru->autoRouteNum; ii++) - { - cTempCounter = (UINT8)(wParsedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽ4Ϣ*/ - cBitOffset = cTempCounter * BIT_NUM_PER_DEV; - - wDevId = pCiRecptStru->autoRouteIdBuf[ii]; - cDevBelongCiId = GetAutoRouteBelongCiId(wDevId); /*ȡԶ·*/ - if ((cLocalCiId != cDevBelongCiId) && (0U != cDevBelongCiId)) - { - /*洢DZ豸״̬*/ - wDevIndex = GetAutoRouteBufIndex(wDevId); - pstrAutoRouteData[wDevIndex].AutoRouteId = wDevId; - - cDevInfo = *(pInputData + wParsedLen); /*ֽڴ洢Զ·Ϣ*/ - cDevState = (cDevInfo >> cBitOffset) & BIT_MASK_00000011B; - if (BIT_VAL_00000010B == cDevState) - { - SetAutoRouteSetFlag(wDevId, AUTO_ROUTE_SET_YES); /*Զ·Ѱ*/ - } - else if (BIT_VAL_00000001B == cDevState) - { - SetAutoRouteSetFlag(wDevId, AUTO_ROUTE_SET_NO); /*Զ·δ*/ - } - else - { - debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: AutoRoute Id[%d] State Error", srcCiId, wDevId); - cRetVal = CI_ERROR; /*Ϣ쳣ʧ*/ - break; - } - } - else - { - /**/ - } - - if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) - { - wParsedLen++; /*һֽڣȼ1*/ - } - else - { - /**/ - } - wParsedInfoNum++; /*һϢ1*/ - } - - /*ʱϢ*/ - if (CI_SUCCESS == cRetVal) - { - for (ii = 0U; ii < pCiRecptStru->logicSecNum; ii++) - { - cTempCounter = (UINT8)(wParsedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽ4Ϣ*/ - cBitOffset = cTempCounter * BIT_NUM_PER_DEV; - - wDevId = pCiRecptStru->logicSecIdBuf[ii]; - cDevBelongCiId = GetLogSecBelongCiId(wDevId); /*ȡ߼*/ - if ((cLocalCiId != cDevBelongCiId) && (0U != cDevBelongCiId)) - { - /*洢DZ豸״̬*/ - wDevIndex = GetlogSectionBufIndex(wDevId); - pstrLogSecData[wDevIndex].LogicSectionId = wDevId; - - cDevInfo = *(pInputData + wParsedLen); /*ֽڴ洢߼νʱϢ*/ - cDevState = (cDevInfo >> cBitOffset) & BIT_MASK_00000011B; - if (BIT_VAL_00000010B == cDevState) - { - /*TODO: ʱٹܾ߱*/ - } - else if (BIT_VAL_00000001B == cDevState) - { - /*TODO: ʱٹܾ߱*/ - } - else - { - debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: LogSec Id[%d] Urgent Tsr Error", srcCiId, wDevId); - cRetVal = CI_ERROR; /*Ϣ쳣ʧ*/ - break; - } - } - else - { - /**/ - } - - if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) - { - wParsedLen++; /*һֽڣȼ1*/ - } - else - { - /**/ - } - wParsedInfoNum++; /*һϢ1*/ - } - } - else - { - cRetVal = CI_ERROR; - } - - /*Ϣ*/ - if (CI_SUCCESS == cRetVal) - { - for (ii = 0U; ii < pCiRecptStru->switchNum; ii++) - { - cTempCounter = (UINT8)(wParsedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽ4Ϣ*/ - cBitOffset = cTempCounter * BIT_NUM_PER_DEV; - - wDevId = pCiRecptStru->switchIdBuf[ii]; - cDevBelongCiId = GetSwitchBelongCiId(wDevId); /*ȡ*/ - if ((cLocalCiId != cDevBelongCiId) && (0U != cDevBelongCiId)) - { - /*洢DZ豸״̬*/ - wDevIndex = GetSwitchConfigBufIndex(wDevId); - pstrSwitchData[wDevIndex].SwitchId = wDevId; - - cDevInfo = *(pInputData + wParsedLen); /*ֽڴ洢ĵϢ*/ - cDevState = (cDevInfo >> cBitOffset) & BIT_MASK_00000011B; - if (BIT_VAL_00000001B == cDevState) - { - SetHlhtCiSwitchPlockStatus(wDevId, SWITCH_LOCK_STATUS_PROTECT); /*õз*/ - } - else if (BIT_VAL_00000010B == cDevState) - { - SetHlhtCiSwitchPlockStatus(wDevId, SWITCH_LOCK_STATUS_NO); /*õ޷*/ - } - else - { - debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: Switch Id[%d] PLock Error", srcCiId, wDevId); - cRetVal = CI_ERROR; /*Ϣ쳣ʧ*/ - break; - } - - } - else - { - /**/ - } - - if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) - { - wParsedLen++; /*һֽڣȼ1*/ - } - else - { - /**/ - } - wParsedInfoNum++; /*һϢ1*/ - } - } - else - { - cRetVal = CI_ERROR; - } - - /*״̬Ϣ*/ - if (CI_SUCCESS == cRetVal) - { - for (ii = 0U; ii < pCiRecptStru->switchNum; ii++) - { - /*ȷCTռ״̬*/ - cTempCounter = (UINT8)(wParsedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽ4Ϣ*/ - cBitOffset = cTempCounter * BIT_NUM_PER_DEV; - cDevInfo = *(pInputData + wParsedLen); /*ֽڴ洢ĵϢ*/ - cDevState = (cDevInfo >> cBitOffset) & BIT_MASK_00000011B; - if (BIT_VAL_00000010B == cDevState) - { - cPhySecCtOcc = LOGICSECTION_OCCUPY_NO; /**/ - } - else if (BIT_VAL_00000001B == cDevState) - { - cPhySecCtOcc = LOGICSECTION_OCCUPY_CT; /*CTռ*/ - } - else - { - debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: Switch Id[%d] CT Occ Error", srcCiId, pCiRecptStru->switchIdBuf[ii]); - cRetVal = CI_ERROR; /*Ϣ쳣ʧ*/ - } - - if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) - { - wParsedLen++; /*һֽڣȼ1*/ - } - else - { - /**/ - } - wParsedInfoNum++; /*һϢ1*/ - - /*ȷUTռ״̬*/ - cTempCounter = (UINT8)(wParsedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽ4Ϣ*/ - cBitOffset = cTempCounter * BIT_NUM_PER_DEV; - cDevInfo = *(pInputData + wParsedLen); /*ֽڴ洢ĵϢ*/ - cDevState = (cDevInfo >> cBitOffset) & BIT_MASK_00000011B; - if (BIT_VAL_00000010B == cDevState) - { - cPhySecUtOcc = LOGICSECTION_OCCUPY_NO; /**/ - } - else if (BIT_VAL_00000001B == cDevState) - { - cPhySecUtOcc = LOGICSECTION_OCCUPY_UT; /*UTռ*/ - } - else - { - debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: Switch Id[%d] UT Occ Error", srcCiId, pCiRecptStru->switchIdBuf[ii]); - cRetVal = CI_ERROR; /*Ϣ쳣ʧ*/ - } - - if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) - { - wParsedLen++; /*һֽڣȼ1*/ - } - else - { - /**/ - } - wParsedInfoNum++; /*һϢ1*/ - - /*ȷν·״̬*/ - cTempCounter = (UINT8)(wParsedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽ4Ϣ*/ - cBitOffset = cTempCounter * BIT_NUM_PER_DEV; - cDevInfo = *(pInputData + wParsedLen); /*ֽڴ洢ĵϢ*/ - cDevState = (cDevInfo >> cBitOffset) & BIT_MASK_00000011B; - if (BIT_VAL_00000010B == cDevState) - { - cPhySecRouteLockState = PHYSICAL_SECTION_LOCK_NORMAL; /*·*/ - } - else if (BIT_VAL_00000001B == cDevState) - { - cPhySecRouteLockState = PHYSICAL_SECTION_LOCK_NO; /*δ·*/ - } - else - { - debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: Switch Id[%d] RouteLock Error", srcCiId, pCiRecptStru->switchIdBuf[ii]); - cRetVal = CI_ERROR; /*Ϣ쳣ʧ*/ - } - - if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) - { - wParsedLen++; /*һֽڣȼ1*/ - } - else - { - /**/ - } - wParsedInfoNum++; /*һϢ1*/ - - /*ȷη״̬*/ - cTempCounter = (UINT8)(wParsedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽ4Ϣ*/ - cBitOffset = cTempCounter * BIT_NUM_PER_DEV; - cDevInfo = *(pInputData + wParsedLen); /*ֽڴ洢ĵϢ*/ - cDevState = (cDevInfo >> cBitOffset) & BIT_MASK_00000011B; - if (BIT_VAL_00000010B == cDevState) - { - cPhySecFLockState = PHYSICAL_SECTION_FLOCK_NO; /*δ*/ - } - else if (BIT_VAL_00000001B == cDevState) - { - cPhySecFLockState = PHYSICAL_SECTION_FLOCK_YES; /**/ - } - else - { - debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: Switch Id[%d] Flock Error", srcCiId, pCiRecptStru->switchIdBuf[ii]); - cRetVal = CI_ERROR; /*Ϣ쳣ʧ*/ - } - - if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) - { - wParsedLen++; /*һֽڣȼ1*/ - } - else - { - /**/ - } - wParsedInfoNum++; /*һϢ1*/ - - /*ȷι״̬*/ - cTempCounter = (UINT8)(wParsedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽ4Ϣ*/ - cBitOffset = cTempCounter * BIT_NUM_PER_DEV; - cDevInfo = *(pInputData + wParsedLen); /*ֽڴ洢ĵϢ*/ - cDevState = (cDevInfo >> cBitOffset) & BIT_MASK_00000011B; - if (BIT_VAL_00000010B == cDevState) - { - cPhySecExceptLockState = PHYSICAL_SECTION_LOCK_EXCEPT; /*쳣*/ - } - else if (BIT_VAL_00000001B == cDevState) - { - cPhySecExceptLockState = PHYSICAL_SECTION_LOCK_NO; /*δ쳣*/ - } - else - { - debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: Switch Id[%d] ExceptLock Error", srcCiId, pCiRecptStru->switchIdBuf[ii]); - cRetVal = CI_ERROR; /*Ϣ쳣ʧ*/ - } - - if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) - { - wParsedLen++; /*һֽڣȼ1*/ - } - else - { - /**/ - } - wParsedInfoNum++; /*һϢ1*/ - - /*ȷCT/UTռ״̬*/ - if ((LOGICSECTION_OCCUPY_NO == cPhySecCtOcc) && (LOGICSECTION_OCCUPY_NO == cPhySecUtOcc)) - { - cPhySecCtOrUtOcc = LOGICSECTION_OCCUPY_NO; /*CT/UTУ*/ - } - else if ((LOGICSECTION_OCCUPY_CT == cPhySecCtOcc) && (LOGICSECTION_OCCUPY_NO == cPhySecUtOcc)) - { - cPhySecCtOrUtOcc = LOGICSECTION_OCCUPY_CT; /*CTռãUTУCTռ*/ - } - else if ((LOGICSECTION_OCCUPY_NO == cPhySecCtOcc) && (LOGICSECTION_OCCUPY_UT == cPhySecUtOcc)) - { - cPhySecCtOrUtOcc = LOGICSECTION_OCCUPY_UT; /*CTУUTռãUTռ*/ - } - else - { - debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: Switch Id[%d] CT And UT Diff", srcCiId, pCiRecptStru->switchIdBuf[ii]); - cRetVal = CI_ERROR; /*Ϣ쳣ʧ*/ - } - - /*ȷ״̬*/ - if ((PHYSICAL_SECTION_LOCK_NO == cPhySecRouteLockState) && (PHYSICAL_SECTION_LOCK_NO == cPhySecExceptLockState)) - { - cPhySecLockState = PHYSICAL_SECTION_LOCK_NO; /*·պ͹վδգδ*/ - } - else if ((PHYSICAL_SECTION_LOCK_NORMAL == cPhySecRouteLockState) && (PHYSICAL_SECTION_LOCK_NO == cPhySecExceptLockState)) - { - cPhySecLockState = PHYSICAL_SECTION_LOCK_NORMAL; /*·ΪգΪδգ*/ - } - else if ((PHYSICAL_SECTION_LOCK_NO == cPhySecRouteLockState) && (PHYSICAL_SECTION_LOCK_EXCEPT == cPhySecExceptLockState)) - { - cPhySecLockState = PHYSICAL_SECTION_LOCK_EXCEPT; /*·ΪδգΪ쳣գ쳣*/ - } - else - { - debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: Switch Id[%d] Lock Diff Error", srcCiId, pCiRecptStru->switchIdBuf[ii]); - cRetVal = CI_ERROR; /*Ϣ쳣ʧ*/ - } - - if (CI_SUCCESS == cRetVal) - { - wDevId = pCiRecptStru->switchIdBuf[ii]; - wPhySecId = GetSwitchPhySectionId(wDevId); - cDevBelongCiId = GetPhySecBelongCiId(wPhySecId); /*ȡ*/ - if ((cLocalCiId != cDevBelongCiId) && (0U != cDevBelongCiId)) - { - /*洢DZ豸״̬*/ - wDevIndex = GetPhySecConfigBufIndex(wDevId); - pstrPhySecData[wDevIndex].PhysicalSectionId = wPhySecId; - - /*ʱԤ*/ -#if 0 - SetPhySecLockStateHlht(wPhySecId, cPhySecLockState); /*״̬*/ - SetPhySecFLockState(wPhySecId, cPhySecFLockState); /*η״̬*/ - SetHlhtPhySecCtOrUtOccState(wPhySecId, cPhySecCtOrUtOcc); /*CT/UTռ״̬*/ -#endif - } - else - { - /**/ - } - } - else - { - cRetVal = CI_ERROR; - break; - } - } - } - else - { - cRetVal = CI_ERROR; - } - - /*ͣ׼ͣϢ*/ - if (CI_SUCCESS == cRetVal) - { - for (ii = 0U; ii < pCiRecptStru->phySecNum; ii++) - { - cTempCounter = (UINT8)(wParsedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽ4Ϣ*/ - cBitOffset = cTempCounter * BIT_NUM_PER_DEV; - - wDevId = pCiRecptStru->phySecIdBuf[ii]; - cDevBelongCiId = GetPhySecBelongCiId(wDevId); /*ȡ*/ - if ((cLocalCiId != cDevBelongCiId) && (0U != cDevBelongCiId)) - { - /*洢DZ豸״̬*/ - wDevIndex = GetPhySecConfigBufIndex(wDevId); - pstrPhySecData[wDevIndex].PhysicalSectionId = wDevId; - - cDevInfo = *(pInputData + wParsedLen); /*ֽڴ洢ͣ׼ͣϢ*/ - cDevState = (cDevInfo >> cBitOffset) & BIT_MASK_00000011B; - if (BIT_VAL_00000010B == cDevState) - { - SetPhySecStopSteadyFlag(wDevId, PHYSICAL_SECTION_STOPSTEADY_YES); /*ͣ׼ͣ*/ - } - else if (BIT_VAL_00000001B == cDevState) - { - SetPhySecStopSteadyFlag(wDevId, PHYSICAL_SECTION_STOPSTEADY_NO); /*δͣ׼ͣ*/ - } - else - { - debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: PhySec Id[%d] Stop Steady Error", srcCiId, wDevId); - cRetVal = CI_ERROR; /*Ϣ쳣ʧ*/ - break; - } - } - else - { - /**/ - } - - if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) - { - wParsedLen++; /*һֽڣȼ1*/ - } - else - { - /**/ - } - wParsedInfoNum++; /*һϢ1*/ - } - } - else - { - cRetVal = CI_ERROR; - } - - /*μԤλ״̬Ϣ*/ - if (CI_SUCCESS == cRetVal) - { - for (ii = 0U; ii < pCiRecptStru->phySecNum; ii++) - { - cTempCounter = (UINT8)(wParsedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽ4Ϣ*/ - cBitOffset = cTempCounter * BIT_NUM_PER_DEV; - - wDevId = pCiRecptStru->phySecIdBuf[ii]; - cDevBelongCiId = GetPhySecBelongCiId(wDevId); /*ȡ*/ - if ((cLocalCiId != cDevBelongCiId) && (0U != cDevBelongCiId)) - { - /*洢DZ豸״̬*/ - wDevIndex = GetPhySecConfigBufIndex(wDevId); - pstrPhySecData[wDevIndex].PhysicalSectionId = wDevId; - - cDevInfo = *(pInputData + wParsedLen); /*ֽڴ洢μԤλ״̬Ϣ*/ - cDevState = (cDevInfo >> cBitOffset) & BIT_MASK_00000011B; - if (BIT_VAL_00000010B == cDevState) - { - SetPhySecPreResetState(wDevId, PHYSICAL_SECTION_PRE_RESET_YES); /*μԤλ״̬Ч*/ - } - else if (BIT_VAL_00000001B == cDevState) - { - SetPhySecPreResetState(wDevId, PHYSICAL_SECTION_PRE_RESET_NO); /*μԤλ״̬Ч*/ - } - else - { - debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: PhySec Id[%d] PreReset Error", srcCiId, wDevId); - cRetVal = CI_ERROR; /*Ϣ쳣ʧ*/ - break; - } - } - else - { - /**/ - } - - if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) - { - wParsedLen++; /*һֽڣȼ1*/ - } - else - { - /**/ - } - wParsedInfoNum++; /*һϢ1*/ - } - } - else - { - cRetVal = CI_ERROR; - } - - /*źŻƶ˿Ϣ*/ - if (CI_SUCCESS == cRetVal) - { - for (ii = 0U; ii < pCiRecptStru->signalNum; ii++) - { - cTempCounter = (UINT8)(wParsedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽ4Ϣ*/ - cBitOffset = cTempCounter * BIT_NUM_PER_DEV; - - wDevId = pCiRecptStru->signalIdBuf[ii]; - cDevBelongCiId = GetSignalBelongCiId(wDevId); /*ȡźŻ*/ - if ((cLocalCiId != cDevBelongCiId) && (0U != cDevBelongCiId)) - { - /*洢DZ豸״̬*/ - wDevIndex = GetSignalConfigBufIndex(wDevId); - pstrSignalData[wDevIndex].SignalId = wDevId; - - cDevInfo = *(pInputData + wParsedLen); /*ֽڴ洢źŻƶ˿Ϣ*/ - cDevState = (cDevInfo >> cBitOffset) & BIT_MASK_00000011B; - if (BIT_VAL_00000010B == cDevState) - { - SetHlhtCiSignalBlueDsBreakFlag(wDevId, SIGNAL_DS_BREAK_NO); /*źŻδƶ˿*/ - } - else if (BIT_VAL_00000001B == cDevState) - { - SetHlhtCiSignalBlueDsBreakFlag(wDevId, SIGNAL_DS_BREAK_YES); /*źŻƶ˿*/ - } - else - { - debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: Signal Id[%d] BlueDengsi Error", srcCiId, wDevId); - cRetVal = CI_ERROR; /*Ϣ쳣ʧ*/ - break; - } - } - else - { - /**/ - } - - if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) - { - wParsedLen++; /*һֽڣȼ1*/ - } - else - { - /**/ - } - wParsedInfoNum++; /*һϢ1*/ - } - } - else - { - cRetVal = CI_ERROR; - } - - /*źŻ۳ϢĿ۳ͳվ۳*/ - if (CI_SUCCESS == cRetVal) - { - for (ii = 0U; ii < pCiRecptStru->signalNum; ii++) - { - cTempCounter = (UINT8)(wParsedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽ4Ϣ*/ - cBitOffset = cTempCounter * BIT_NUM_PER_DEV; - cDevInfo = *(pInputData + wParsedLen); /*ֽڴ洢źŻ۳Ϣ*/ - cDevState = (cDevInfo >> cBitOffset) & BIT_MASK_00000011B; - - /*ȷĿ۳״̬*/ - if (BIT_VAL_00000010B == cDevState) - { - cSignalAtsDetainFlag = SIGNAL_DETAIN_ATS_NO; /*Ŀ۳*/ - } - else if (BIT_VAL_00000001B == cDevState) - { - cSignalAtsDetainFlag = SIGNAL_DETAIN_ATS; /*Ŀ۳*/ - } - else - { - debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: Signal Id[%d] Ats Detain Error", srcCiId, pCiRecptStru->signalIdBuf[ii]); - cRetVal = CI_ERROR; /*Ϣ쳣ʧ*/ - } - - if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) - { - wParsedLen++; /*һֽڣȼ1*/ - } - else - { - /**/ - } - wParsedInfoNum++; /*һϢ1*/ - - cTempCounter = (UINT8)(wParsedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽ4Ϣ*/ - cBitOffset = cTempCounter * BIT_NUM_PER_DEV; - cDevInfo = *(pInputData + wParsedLen); /*ֽڴ洢źŻ۳Ϣ*/ - cDevState = (cDevInfo >> cBitOffset) & BIT_MASK_00000011B; - - /*ȷվ۳״̬*/ - if (BIT_VAL_00000010B == cDevState) - { - cSignalXiandiDetainFlag = SIGNAL_DETAIN_XIANDI_NO; /*ڳվ۳*/ - } - else if (BIT_VAL_00000001B == cDevState) - { - cSignalXiandiDetainFlag = SIGNAL_DETAIN_XIANDI; /*ڳվ۳*/ - } - else - { - debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: Signal Id[%d] Xiandi Detain Error", srcCiId, pCiRecptStru->signalIdBuf[ii]); - cRetVal = CI_ERROR; /*Ϣ쳣ʧ*/ - } - - if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) - { - wParsedLen++; /*һֽڣȼ1*/ - } - else - { - /**/ - } - wParsedInfoNum++; /*һϢ1*/ - - if (CI_SUCCESS == cRetVal) - { - wDevId = pCiRecptStru->signalIdBuf[ii]; - cDevBelongCiId = GetSignalBelongCiId(wDevId); /*ȡźŻ*/ - if ((cLocalCiId != cDevBelongCiId) && (0U != cDevBelongCiId)) - { - /*洢DZ豸״̬*/ - wDevIndex = GetSignalConfigBufIndex(wDevId); - pstrSignalData[wDevIndex].SignalId = wDevId; - SetSignalDetainFlag(wDevId, cSignalAtsDetainFlag); /*źŻĿ۳*/ - SetSignalDetainFlag(wDevId, cSignalXiandiDetainFlag); /*źŻĿ۳*/ - } - else - { - /**/ - } - } - else - { - cRetVal = CI_ERROR; - break; - } - } - } - else - { - cRetVal = CI_ERROR; - } - - if (CI_SUCCESS == cRetVal) - { - if ((DEV_NUM_PER_BYTE - 1U) != cTempCounter) - { - wParsedLen++; /*һֽδ4ϢҪ1*/ - } - else - { - /**/ - } - - *pItemLen = wParsedLen; - } - else - { - cRetVal = CI_ERROR; - } - } - else - { - /*ԶϢ汾һ£ʧ*/ - cRetVal = CI_ERROR; - debug_infor_printf((const)"\nHlht Ci Id[%d] Parse Error: ManufacDef Info Ver Is Diff.", srcCiId); - } - } - else - { - cRetVal = CI_ERROR; /*ηǷȡʧܣʧ*/ - } - return cRetVal; } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackCiData.h b/TSCP/src/APP/ciapp/ParsePack/ParsePackCiData.h index 929eb1b..c19955d 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackCiData.h +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackCiData.h @@ -58,8 +58,6 @@ #define MANUFAC_DEF_STATUS_PACKET ((UINT16)0x020c) /*ԶϢ*/ -#define MANUFAC_DEF_INFO_VER_WL ((UINT8)0x01) /*ԶϢ汾΢*/ - #define PSD_NUM_PER_BYTE ((UINT8)2) /*PSDֽڳ*/ #define BIT_NUM_PER_PSD ((UINT8)(8U / PSD_NUM_PER_BYTE)) /*PSDֽڳ*/ #define ESB_NUM_PER_BYTE ((UINT8)4) /*ͣťֽڳ*/ @@ -71,9 +69,6 @@ #define TSR_NUM_PER_BYTE ((UINT8)4) /*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_TYPE_LEN ((UINT8)2) /*ͳ*/ @@ -100,13 +95,13 @@ #define PHYSEC_LOCKDIRECTION_OPPST_YES ((UINT8)0xAA) /*ȡ*/ #define PHYSEC_LOCKDIRECTION_OPPST_DEFAULT ((UINT8)0xFF) /*Ĭֵ*/ -#define CICI_VERSION ((UINT16)29) /*ciciӿڰ汾ţÿ޸ĽӿҪ汾šLast Modified On 2025.09.22*/ +#define CICI_VERSION ((UINT16)23) /*ciciӿڰ汾ţÿ޸ĽӿҪ汾šLast Modified On 2025.03.10*/ #define CICI_BEGIN_TO_STATION_LEN ((UINT16)16) /*ӿʼվֹ cgh4ֽCI-CIУϢ*/ #define CICI_ONE_SWITCH_LEN ((UINT16)13) /*һݳ*/ #define CICI_ONE_PHYSEC_LEN ((UINT16)23U)/*һݳ*/ #define CICI_ONE_LOGSEC_LEN ((UINT16)10)/*һ߼ݳ*/ -#define CICI_ONE_SIGNAL_LEN ((UINT16)11)/*һźŻݳ*/ -#define CICI_ONE_PSD_LEN ((UINT16)5)/*һݳ*/ +#define CICI_ONE_SIGNAL_LEN ((UINT16)9)/*һźŻݳ*/ +#define CICI_ONE_PSD_LEN ((UINT16)4)/*һݳ*/ #define CICI_ONE_ESB_LEN ((UINT16)4)/*һESBݳ*/ #define CICI_ONE_ROUTE_LEN ((UINT16)12)/*һ·ݳ*/ #define CICI_ONE_PHYSEC_LOCKSTATE_LEN ((UINT16)10)/*һ״̬ݳ*/ @@ -238,18 +233,9 @@ extern "C" { UINT8 cSourceCiId; /*ͷID*/ UINT8 cTargetCiId; /*շID*/ UINT8 cPlatFormNum; /*ѩվ̨*/ - AreaSnowInfoStruct szPlatFormInfo[CI_TO_CI_AREA_SNOW_SUM_MAX]; /*ѩϢ*/ + UINT32 dwPlatFormId[CI_TO_CI_AREA_SNOW_SUM_MAX]; /*ѩվ̨ͨID*/ } ToCiAreaSnowStruct; - /*RCITEгϢ*/ - 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 UINT16 RecvCiCmdDataStruCurSum; @@ -266,8 +252,6 @@ extern "C" { extern UINT8 SendCiDrCmdSum; extern ToCiAreaSnowStruct szRecvCiAreaSnow[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 @@ -737,23 +721,21 @@ UINT8 CiToCiEnvelopeCheck(const UINT8* dataBuf, UINT16* index); * ͸ѩϢ * ˵ UINT8 cSrcCiId ͷCI * UINT8 cDstCiId շCI -* UINT16 wAreaSnowId ID -* UINT8 cAreaSnowLevel ʪ켶 -* ֵ -* Modified By LQ 2025.5.28 +* UINT32 dwAreaSnowId ѩվ̨ID +* ֵ +* Created By LQ 2023.11.16 */ -void AddCiRecvAreaSnowInfo(UINT8 cSrcCiId, UINT8 cDstCiId, UINT16 wAreaSnowId, UINT8 cAreaSnowLevel); +void AddCiRecvAreaSnowInfo(UINT8 cSrcCiId, UINT8 cDstCiId, UINT32 dwAreaSnowId); /* * ӱ͸ָIDѩϢ * ˵ UINT8 cSrcCiId ͷCI * UINT8 cDstCiId շCI -* UINT16 wAreaId ID -* UINT8 cAreaSnowLevel ʪȼ -* ֵ -* Modified By LQ 2025.05.28 +* UINT32 dwAreaSnowId ѩվ̨ID +* ֵ +* Created By LQ 2023.11.16 */ -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); -/* -* ͸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); - -/* -* ȡ͸ָIDITEгϢ -* ˵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); - -/* -* ӱ͸ָIDITEгϢ -* ˵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 еijȣΣ -* 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 еij -* 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 } #endif diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackCommon.c b/TSCP/src/APP/ciapp/ParsePack/ParsePackCommon.c index 0b4c017..7d9949c 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackCommon.c +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackCommon.c @@ -31,7 +31,6 @@ PlatHeartDataStruct RecvHeartDataStru = { 0U }; /*ƽ̨֡ݽṹ*/ PlatGPIODataStruct RecvPlatDataStruGPIO = { 0U };/*ƽ̨0x2D֡ݽṹ GPIOɼ״̬*/ -PlatGPIOToleranceDataStruct gPlatDataGPIOTolercance = { 0U };/*ƽ̨Ӳɼ̼¼*/ /* * źŻλ @@ -62,13 +61,7 @@ UINT8 SignalMaskManage(UINT8 MaskType, UINT16 DeviceId, UINT16 MaskId, UINT8* da UINT8 detainBtnErrFlag = SIGNAL_ZFS_BTN_ERR_FLAG_NO; /*۳ťϱ־*/ UINT8 SignalCrossState = 0U; UINT8 SigVobcCrossInPhyOccSta = 0U; - UINT8 chDsFlag = SIGNAL_DS_BREAK_YES; - UINT8 CiPattern = 0u; - UINT8 chDsnLinSwitch = 0U; - UINT8 cDevState = 0U; - chDsnLinSwitch = GetCiFunctionSwitchConfig(FUNC_DSN_LINE_SWITCH); - CiPattern = GetLocalCiPattern(); switch (MaskType) { case MASK_TYPE_SIGNAL_RED:/*λ*/ @@ -287,70 +280,9 @@ UINT8 SignalMaskManage(UINT8 MaskType, UINT16 DeviceId, UINT16 MaskId, UINT8* da } break; case MASK_TYPE_SIGNAL_BREAK:/*źŻ˿λ*/ - if ((CI_PATTERN_FULL_ELECTRONIC == CiPattern) && (FUNC_SWITCH_OFF == chDsnLinSwitch))/*ȫ*/ + if (SIGNAL_SHOWCOLOUR_REDBREAK == GetSignalCurColor(DeviceId)) { - getState = GetSignalCurColor(DeviceId); /*OCͨжδö˿־źŻɫΪ*/ - chDsFlag = GetSignalDsBreakFlag(DeviceId); - if ((SIGNAL_DS_BREAK_YES == chDsFlag)||(SIGNAL_SHOWCOLOUR_REDBREAK == getState)) - { - ; /*0Ϊ˿*/ - } - else - { - SetMaskValue(MaskId, dataBuf); - } - } - else - { - getState = GetSignalCurColor(DeviceId); - if (SIGNAL_SHOWCOLOUR_REDBREAK == getState) - { - ; /*0˿*/ - } - else - { - SetMaskValue(MaskId, dataBuf); - } - } - break; - case MASK_TYPE_SIGNAL_GREENBREAK:/*źŻ˿λ*/ - chDsFlag = GetSignalGreenDsBreakFlag(DeviceId); - if (SIGNAL_DS_BREAK_YES== chDsFlag) - { - ; /*0Ϊ˿*/ - } - else - { - SetMaskValue(MaskId, dataBuf); - } - break; - case MASK_TYPE_SIGNAL_YELLOWBREAK:/*źŻ˿λ*/ - chDsFlag = GetSignalYellowDsBreakFlag(DeviceId); - if (SIGNAL_DS_BREAK_YES == chDsFlag) - { - ; /*0Ϊ˿*/ - } - else - { - SetMaskValue(MaskId, dataBuf); - } - break; - case MASK_TYPE_SIGNAL_WHITEBREAK:/*źŻ˿λ*/ - chDsFlag = GetSignalWhiteDsBreakFlag(DeviceId); - if (SIGNAL_DS_BREAK_YES == chDsFlag) - { - ; /*0Ϊ˿*/ - } - else - { - SetMaskValue(MaskId, dataBuf); - } - break; - case MASK_TYPE_SIGNAL_BLUEBREAK:/*źŻ˿λ*/ - chDsFlag = GetSignalBlueDsBreakFlag(DeviceId); - if (SIGNAL_DS_BREAK_YES == chDsFlag) - { - ; /*0Ϊ˿*/ + } else { @@ -470,28 +402,6 @@ UINT8 SignalMaskManage(UINT8 MaskType, UINT16 DeviceId, UINT16 MaskId, UINT8* da /*λֵ0*/ } break; - case MASK_TYPE_SIGNAL_DET_CUT_VALID: - cDevState = GetDetCutBtnState(DeviceId); - if (SIGNAL_DETAIN_CUT_VALID_YES == cDevState) - { - SetMaskValue(MaskId, dataBuf); /*۳·ťЧλֵ1*/ - } - else - { - /*۳·ťЧλֵ0*/ - } - break; - case MASK_TYPE_SIGNAL_DET_CUT_ERR: - cDevState = GetSignalDetCutBtnErrFlag(DeviceId); - if (SIGNAL_ZFS_BTN_ERR_FLAG_YES == cDevState) - { - SetMaskValue(MaskId, dataBuf); /*۳·ťϣλֵ1*/ - } - else - { - /*۳·ťδϣλֵ0*/ - } - break; default: returnValue = CI_ERROR; break; @@ -738,18 +648,6 @@ UINT8 SwitchMaskManage(UINT8 MaskType, UINT16 DeviceId, UINT16 MaskId, UINT8* da SetMaskValue(MaskId, dataBuf); } break; - case MASK_TYPE_SWITCH_JICHA: - /*̬̬λ: 28.0.0.14ݽṹʹ*/ - switchCurPosition = GetSwitchJichaState(DeviceId); - if ((SWITCH_POSITION_SUDDEN_JICHA == switchCurPosition)|| (SWITCH_POSITION_DYNAMIC_JICHA == switchCurPosition)) - { - ; /*ЧֵΪ0*/ - } - else - { - SetMaskValue(MaskId, dataBuf); - } - break; default: returnValue = CI_ERROR; break; @@ -1558,7 +1456,6 @@ UINT8 RouteMaskManage(UINT8 MaskType, UINT16 DeviceId, UINT16 MaskId, UINT8* dat UINT8 firstLogicOccuState = GetLogSecCurOccupyState(GetRouteInFirstLogSecId(DeviceId)); UINT8 dcQState = GetRouteDCQState(DeviceId);/*·״̬*/ UINT8 dcTState = GetRouteDCTYState(DeviceId);/*·ͬ״̬*/ - UINT8 chDCAgreeBtnErrState = GetRouteDcAgreeButtonErrState(DeviceId);/*·ͬⰴť״̬*/ UINT8 RouteCiId = 0u; /*·*/ UINT8 CiTypeOfRoute = 0u; /*ǰ·*/ UINT8 ciTrainTestState = 0u; /*Գ״̬*/ @@ -1759,20 +1656,6 @@ UINT8 RouteMaskManage(UINT8 MaskType, UINT16 DeviceId, UINT16 MaskId, UINT8* dat } break; - case MASK_TYPE_ROUTE_DC_AGREE_ERR:/*ͬⰴťλ*/ - { - if (ROUTE_DC_AGREE_BUTTON_OK == chDCAgreeBtnErrState) - { - /*ͬⰴťδϣ1*/ - SetMaskValue(MaskId, dataBuf); - } - else - { - /*ͬⰴťϣ0*/ - } - } - break; - case MASK_TYPE_AUTOROUTE_STATE:/*Զͨ·״̬λ*/ if (AUTO_ROUTE_SET_YES == GetAutoRouteSetFlag(DeviceId)) {/*Զͨ·־*/ @@ -1878,9 +1761,6 @@ UINT8 PlatMaskManage(UINT8 MaskType, UINT16 DeviceId, UINT16 MaskId, UINT8* data UINT8 chPsdVideoQkDriveState = 0U;/*ȷƵ״̬*/ UINT8 chRtnIndicatorDevId = 0U;/*۷豸ID*/ UINT8 chNonRrnAdhesionState = 0U;/*۷ťճ״̬*/ - UINT8 cEsbCutErrFlag = ESB_ERROR_FLAG_NO; /*ر·ťϱ־*/ - UINT16 wEsbCollRelayId = 0U; /*ESBɼ̵ID*/ - UINT8 cPsdExceptOpenState = 0U; /*쳣״̬*/ chRtnIndicatorDevId = GetIndicatorRelNonReturnId(DeviceId); virtualZDZFBelongCiId = GetVirtualZDZFBelongCiId(); @@ -1992,29 +1872,6 @@ UINT8 PlatMaskManage(UINT8 MaskType, UINT16 DeviceId, UINT16 MaskId, UINT8* data /*λֵ0*/ } break; - case MASK_TYPE_CUT_ESP_FAULT: - cEsbCutErrFlag = GetEsbCutErrFlag(DeviceId); - if (ESB_ERROR_FLAG_YES == cEsbCutErrFlag) - { - SetMaskValue(MaskId, dataBuf); - } - else - { - /*λֵ0*/ - } - break; - case MASK_TYPE_ESP_PRESS_STATE: - wEsbCollRelayId = GetEsbRelayId(DeviceId); /*ȡESBɼ̵*/ - RelayCollState = GetRelayCollState(wEsbCollRelayId); /*ȡESBɼ̵״̬*/ - if (RELAY_STATE_UP == RelayCollState) - { - SetMaskValue(MaskId, dataBuf); /*ESBδ£1*/ - } - else - { - /*ESB£0*/ - } - break; case MASK_TYPE_PSD_STATE_ATS:/*վ̨״̬λ;ATS*/ /*ȡŻ״̬״̬*/ mutualLockState = GetPsdMutualLockRemoveState(DeviceId); @@ -2232,17 +2089,6 @@ UINT8 PlatMaskManage(UINT8 MaskType, UINT16 DeviceId, UINT16 MaskId, UINT8* data /*Ƶ״̬Ϊ˻ЧλЧ*/ } break; - case MASK_TYPE_PSD_EXCEPT_OPEN: /*վ̨쳣״̬λ-ZC/ATS*/ - cPsdExceptOpenState = GePsdExceptOpenState(DeviceId); - if (PSD_EXCEPT_OPEN_NO == cPsdExceptOpenState) - { - SetMaskValue(MaskId, dataBuf); /*PSDδ쳣򿪣λ1*/ - } - else - { - /*PSD쳣򿪣λ0*/ - } - break; default: returnValue = CI_ERROR; break; @@ -2792,10 +2638,10 @@ UINT8 OverlapValidMaskCheck(const UINT16 rtOverlapLockedId) /*߼һ£ռѹ*/ || (SECTION_OCCUPY_YES == GetPhySecCurMergeState(overlapContainPhySecIdBuf[ii]))) -#endif - { - returnValue = CI_ERROR; - break; +#endif + { + returnValue = CI_ERROR; + break; } } @@ -2899,22 +2745,6 @@ UINT8 OverlapValidMaskCheck(const UINT16 rtOverlapLockedId) returnValue = CI_ERROR; } } - - /*ղ̵״̬*/ - if (CI_SUCCESS == returnValue) - { - returnValue = OverlapZhaoChaRelayCheck(rtOverlapLockedId, ESEND_LEVEL_ZERO); - - if (CI_SUCCESS == returnValue) - { - returnValue = CI_SUCCESS; - } - else - { - /*ȴղ̵»Զ˼鲻ʧ*/ - returnValue = CI_ERROR; - } - } } else { @@ -2934,29 +2764,18 @@ UINT8 OverlapValidMaskCheck(const UINT16 rtOverlapLockedId) void PackCiToCimCommData(void) { /*ʼ*/ - UINT16 i = 0U; - UINT8 j = 0U; - UINT8 ciToCimDataBuffer[CI_TO_CIM_DATA_LEN_MAX] = { 0U }; + UINT16 i = 0u; + UINT8 j = 0u; + UINT8 ciToCimDataBuffer[CI_TO_CIM_DATA_LEN_MAX] = { 0u }; UINT8 deviceSum = 0u; /*ͨ豸*/ UINT8* pDeviceIdBuf = NULL; /*豸ID*/ UINT8 transmitState = 0u; /*ͨ״̬*/ UINT8 transmitDevSum = 0U; UINT16 transmitDevIndex = 0U; - UINT8 cLocalWorkMode = 0U; /*ģʽ*/ - UINT8 cLocalCiId = 0U; /*ID*/ - UINT32 dwCurCycNum = 0U; /*ǰں*/ - UINT32 dwRecvCycNum = 0U; /*յԷʱں*/ - UINT16 wTempCommVobcNumIndex = 0U; /*ͨųλ*/ - UINT8 cCommVobcNum = 0U; /*ͨų*/ - UINT8 cVobcToCiDataSum = 0U; - VobcToCiDataStruct* pstrVobcToCiData = NULL; - UINT32 dwCommBadCycCount = 0U; - cLocalWorkMode = GetLocalRcWorkMode(); - cLocalCiId = GetSystemParaLocalCiId(); - dwCurCycNum = Get2oo2CurCycleNum(); - ciToCimDataBuffer[i++] = cLocalWorkMode; - ciToCimDataBuffer[i++] = cLocalCiId; + + ciToCimDataBuffer[i++] = GetLocalRcWorkMode(); + ciToCimDataBuffer[i++] =GetSystemParaLocalCiId (); transmitDevIndex = i; i++; @@ -2969,19 +2788,7 @@ void PackCiToCimCommData(void) transmitState = Get2oo2CiAndOtherSysCommState(CI_SYSTEM_TYPE_ZC, 0U); ciToCimDataBuffer[i++] = CI_SYSTEM_TYPE_ZC; ciToCimDataBuffer[i++] = pDeviceIdBuf[0]; - - /*ZCͨ*/ - dwRecvCycNum = GetCiTransmitRecvDataCycNum(cLocalCiId, CI_SYSTEM_TYPE_ZC, pDeviceIdBuf[0]); - if ((0U != dwRecvCycNum) && (UINT8_MAX > (dwCurCycNum - dwRecvCycNum))) - { - ciToCimDataBuffer[i] = (UINT8)(dwCurCycNum - dwRecvCycNum); /*ͨ豸*/ - } - else - { - ciToCimDataBuffer[i] = (UINT8)UINT8_MAX; /*ͨ豸*/ - } - i++; - + ciToCimDataBuffer[i++] = 0U; if (TRANSMIT_2OO2_STATE_GOOD == transmitState) { ciToCimDataBuffer[i++] = CI_AND_OTHER_TRANSMIT_GOOD; @@ -3006,19 +2813,7 @@ void PackCiToCimCommData(void) transmitDevSum++; ciToCimDataBuffer[i++] = CI_SYSTEM_TYPE_TMC; ciToCimDataBuffer[i++] = pDeviceIdBuf[0]; - - /*TMCͨ*/ - dwRecvCycNum = GetCiTransmitRecvDataCycNum(cLocalCiId, CI_SYSTEM_TYPE_TMC, pDeviceIdBuf[0]); - if ((0U != dwRecvCycNum) && (UINT8_MAX > (dwCurCycNum - dwRecvCycNum))) - { - ciToCimDataBuffer[i] = (UINT8)(dwCurCycNum - dwRecvCycNum); /*ͨ豸*/ - } - else - { - ciToCimDataBuffer[i] = (UINT8)UINT8_MAX; /*ͨ豸*/ - } - i++; - + ciToCimDataBuffer[i++] = 0U; if (TRANSMIT_2OO2_STATE_GOOD == transmitState) { ciToCimDataBuffer[i++] = CI_AND_OTHER_TRANSMIT_GOOD; @@ -3045,19 +2840,8 @@ void PackCiToCimCommData(void) transmitDevSum++; ciToCimDataBuffer[i++] = CI_SYSTEM_TYPE_OC; ciToCimDataBuffer[i++] = pDeviceIdBuf[j]; - - /*OCͨ*/ - dwRecvCycNum = GetCiTransmitRecvDataCycNum(cLocalCiId, CI_SYSTEM_TYPE_OC, pDeviceIdBuf[j]); - if ((0U != dwRecvCycNum) && (UINT8_MAX > (dwCurCycNum - dwRecvCycNum))) - { - ciToCimDataBuffer[i] = (UINT8)(dwCurCycNum - dwRecvCycNum); /*ͨ豸*/ - } - else - { - ciToCimDataBuffer[i] = (UINT8)UINT8_MAX; /*ͨ豸*/ - } - i++; - + /*ͨ*/ + ciToCimDataBuffer[i++] = 0U; if (TRANSMIT_2OO2_STATE_GOOD == transmitState) { ciToCimDataBuffer[i++] = CI_AND_OTHER_TRANSMIT_GOOD; @@ -3089,19 +2873,8 @@ void PackCiToCimCommData(void) ciToCimDataBuffer[i++] = CI_SYSTEM_TYPE_PSC; /*ID*/ ciToCimDataBuffer[i++] = pDeviceIdBuf[j]; - - /*PSCͨ*/ - dwRecvCycNum = GetCiTransmitRecvDataCycNum(cLocalCiId, CI_SYSTEM_TYPE_PSC, pDeviceIdBuf[j]); - if ((0U != dwRecvCycNum) && (UINT8_MAX > (dwCurCycNum - dwRecvCycNum))) - { - ciToCimDataBuffer[i] = (UINT8)(dwCurCycNum - dwRecvCycNum); /*ͨ豸*/ - } - else - { - ciToCimDataBuffer[i] = (UINT8)UINT8_MAX; /*ͨ豸*/ - } - i++; - + /*ͨ*/ + ciToCimDataBuffer[i++] = 0U; if (TRANSMIT_2OO2_STATE_GOOD == transmitState) { ciToCimDataBuffer[i++] = CI_AND_OTHER_TRANSMIT_GOOD; @@ -3132,19 +2905,8 @@ void PackCiToCimCommData(void) transmitDevSum++; ciToCimDataBuffer[i++] = CI_SYSTEM_TYPE_AXIS; ciToCimDataBuffer[i++] = pDeviceIdBuf[j]; - - /*ͨ*/ - dwRecvCycNum = GetCiTransmitRecvDataCycNum(cLocalCiId, CI_SYSTEM_TYPE_AXIS, pDeviceIdBuf[j]); - if ((0U != dwRecvCycNum) && (UINT8_MAX > (dwCurCycNum - dwRecvCycNum))) - { - ciToCimDataBuffer[i] = (UINT8)(dwCurCycNum - dwRecvCycNum); /*ͨ豸*/ - } - else - { - ciToCimDataBuffer[i] = (UINT8)UINT8_MAX; /*ͨ豸*/ - } - i++; - + /*ͨ*/ + ciToCimDataBuffer[i++] = 0U; if (TRANSMIT_2OO2_STATE_GOOD == transmitState) { ciToCimDataBuffer[i++] = CI_AND_OTHER_TRANSMIT_GOOD; @@ -3177,18 +2939,8 @@ void PackCiToCimCommData(void) ciToCimDataBuffer[i++] = CI_SYSTEM_TYPE_CI; ciToCimDataBuffer[i++] = pDeviceIdBuf[j]; - /*RC/CIͨ*/ - dwRecvCycNum = GetCiTransmitRecvDataCycNum(cLocalCiId, CI_SYSTEM_TYPE_CI, pDeviceIdBuf[j]); - if ((0U != dwRecvCycNum) && (UINT8_MAX > (dwCurCycNum - dwRecvCycNum))) - { - ciToCimDataBuffer[i] = (UINT8)(dwCurCycNum - dwRecvCycNum); /*ͨ豸*/ - } - else - { - ciToCimDataBuffer[i] = (UINT8)UINT8_MAX; /*ͨ豸*/ - } - i++; - + ciToCimDataBuffer[i++] = 0U; + /*ͨ*/ if (TRANSMIT_2OO2_STATE_GOOD == transmitState) { ciToCimDataBuffer[i++] = CI_AND_OTHER_TRANSMIT_GOOD; @@ -3219,7 +2971,7 @@ void PackCiToCimCommData(void) ciToCimDataBuffer[i++] = CI_SYSTEM_TYPE_XIANDI; ciToCimDataBuffer[i++] = pDeviceIdBuf[j]; - ciToCimDataBuffer[i++] = (UINT8)UINT8_MAX; + ciToCimDataBuffer[i++] = 0U; /*ͨ*/ if (TRANSMIT_2OO2_STATE_GOOD == transmitState) { @@ -3252,7 +3004,7 @@ void PackCiToCimCommData(void) ciToCimDataBuffer[i++] = CI_SYSTEM_TYPE_ATS; ciToCimDataBuffer[i++] = pDeviceIdBuf[j]; - ciToCimDataBuffer[i++] = (UINT8)UINT8_MAX; + ciToCimDataBuffer[i++] = 0U; /*ͨ*/ if (TRANSMIT_2OO2_STATE_GOOD == transmitState) { @@ -3271,42 +3023,6 @@ void PackCiToCimCommData(void) } ciToCimDataBuffer[transmitDevIndex] =transmitDevSum; - - /*ͨųͨ*/ - wTempCommVobcNumIndex = i; /*ͨųλ*/ - i++; - - cVobcToCiDataSum = GetVobcToCiSum(); - pstrVobcToCiData = GetVobcToCiDataStru(); - - if ((0U < cVobcToCiDataSum) && (VOBC_TO_CI_SUM_MAX > cVobcToCiDataSum) && (NULL != pstrVobcToCiData)) - { - dwCommBadCycCount = GetCiAndVobcTransBadEnsureCnt(); - for (j = 0U; j < cVobcToCiDataSum; j++) - { - if (dwCommBadCycCount >= (dwCurCycNum - pstrVobcToCiData[j].ComStartCycle)) - { - ciToCimDataBuffer[i] = (UINT8)pstrVobcToCiData[j].VobcId; /*ͨųID*/ - i++; - ciToCimDataBuffer[i] = (UINT8)(dwCurCycNum - pstrVobcToCiData[j].ComStartCycle); /*ͨų*/ - i++; - cCommVobcNum++; - } - else - { - /*ͨųʱһгͨ*/ - } - } - } - else - { - cCommVobcNum = 0U; - } - - ciToCimDataBuffer[wTempCommVobcNumIndex] = cCommVobcNum; /*ͨų*/ - - debug_infor_printf((const)"\nCIM_SEND_COMM:%d", i); - debug_out_array(0xAA, ciToCimDataBuffer, i); /*CIM*/ (void)DarkInfoPack(CIM_INFO_COMM_STATE, ciToCimDataBuffer, i); @@ -3907,13 +3623,13 @@ void PackCiToCimVerData(void) ciToCimDataBuffer[i++] = (UINT8)((pTiocFsVersion[2] << 4U) + pTiocFsVersion[3]); /*汾*/ ciToCimDataBuffer[i++] = VER_SOFT_PRODUCT; - ciToCimDataBuffer[i++] = VER_SOFT_MODUAL_APP; - ciToCimDataBuffer[i++] = VER_SOFT_MIANVERSION; + ciToCimDataBuffer[i++] = VER_SOFT_MODUAL_APP >> 2U; + ciToCimDataBuffer[i++] = (VER_SOFT_MODUAL_APP << 6U) + (VER_SOFT_MIANVERSION & (UINT8)0x3F); ciToCimDataBuffer[i++] = VER_SOFT_SUBVERSION; /*鼯ɰ汾*/ ciToCimDataBuffer[i++] = VER_INTE_PROJECT; ciToCimDataBuffer[i++] = VER_INTE_PRODUCT; - ciToCimDataBuffer[i++] = VER_INTE_EXE; + ciToCimDataBuffer[i++] = (UINT8)((UINT8)VER_INTE_EXE << 1U) + ((UINT8)VER_INTE_TIME >> 7U); ciToCimDataBuffer[i++] = VER_INTE_TIME; /*CIM*/ (void)DarkInfoPack(CIM_INFO_VER_INFO, ciToCimDataBuffer, i); @@ -3946,15 +3662,11 @@ void PackCiToCimDeviceData(void) FloodGateDataStruct* pFloodGateData = NULL; UINT8 cRcWorkMode = GetLocalRcWorkMode(); UINT8 chSwitchJichaState = 0U; - UINT8 chSwitchCurPos = 0U; - UINT32 switchCollTolerateCycNum = 0U; - UINT8 chSwitchBDState = SEND_CIM_COLLTOLERATE_NO; - UINT8 chSignalDsState = 0xFFU; /*͵*/ pSwitchData = GetSwitchData(); deviceNum = GetSwitchCurSum(); - ShortToChar(deviceNum, &ciToCimDataBuffer[ii]);/**/ + ShortToChar(deviceNum, &ciToCimDataBuffer[ii]);/*ID*/ ii += 2u; for (jj = 0u; jj < deviceNum; jj++)/*͸ĵĿ*/ { @@ -3968,8 +3680,8 @@ void PackCiToCimDeviceData(void) ShortToChar(pSwitchData[deviceId].SwitchId, &ciToCimDataBuffer[ii]);/*ID*/ ii += 2u; + chSwitchJichaState = GetSwitchJichaState(deviceId); - chSwitchCurPos = GetSingleSwitchCurPosition(pSwitchData[deviceId].SwitchId);/*״̬*/ if (SWITCH_POSITION_DYNAMIC_JICHA == chSwitchJichaState) { ciToCimDataBuffer[ii++] = 0x20U;/*̬*/ @@ -3981,7 +3693,7 @@ void PackCiToCimDeviceData(void) } else { - ciToCimDataBuffer[ii++] = chSwitchCurPos;/*ǰλ*/ + ciToCimDataBuffer[ii++] = pSwitchData[deviceId].SingleSwitchCurPosition;/*ǰλ*/ } @@ -3990,35 +3702,13 @@ void PackCiToCimDeviceData(void) ciToCimDataBuffer[ii++] = pSwitchData[deviceId].SwitchByPassState; /*·״̬*/ ciToCimDataBuffer[ii++] = pSwitchData[deviceId].ConnetSwitchDsState; /*ߵ״̬*/ - - switchCollTolerateCycNum = GetSwitchCollTolerateCycNum(pSwitchData[deviceId].SwitchId); - if (0u < switchCollTolerateCycNum) - { - if (SWITCH_POSITION_DINGWEI == chSwitchCurPos) - { - chSwitchBDState = SEND_CIM_COLLTOLERATE_DW;/*̺λ*/ - } - else if (SWITCH_POSITION_FANWEI == chSwitchCurPos) - { - chSwitchBDState = SEND_CIM_COLLTOLERATE_FW;/*̺λ*/ - } - else - { - chSwitchBDState = SEND_CIM_COLLTOLERATE_NO; - } - } - else - { - chSwitchBDState = SEND_CIM_COLLTOLERATE_NO;/*޲*/ - } - ciToCimDataBuffer[ii++] = chSwitchBDState; /*״̬*/ } /*źŻ*/ deviceNum = GetSignalCurSum(); pSignalData = GetSignalData(); - ShortToChar(deviceNum, &ciToCimDataBuffer[ii]);/*źŻ*/ + ShortToChar(deviceNum, &ciToCimDataBuffer[ii]);/*PSD ID*/ ii += 2u; for (jj = 0u; jj < deviceNum; jj++)/*͸źŻĿ*/ { @@ -4032,15 +3722,14 @@ void PackCiToCimDeviceData(void) ciToCimDataBuffer[ii++] = pSignalData[deviceId].CancelDetainBtnErrFlag;/*ȡ۳ťϱ־*/ ciToCimDataBuffer[ii++] = pSignalData[deviceId].DetainBtnErrFlag;/*۳ťϱ־*/ ciToCimDataBuffer[ii++] = pSignalData[deviceId].RealyDetainFlag;/*Ӳ߿۳־*/ - chSignalDsState = GetSignalCurBreakFlag(pSignalData[deviceId].SignalId);/*˿˿־״̬*/ - ciToCimDataBuffer[ii++] = chSignalDsState; + ciToCimDataBuffer[ii++] = pSignalData[deviceId].DsBreakFlag;/*˿˿־״̬*/ } /*************************************PSD״̬********************************************/ /*״̬*/ deviceNum = GetPsdSum(); pPsdData = GetPsdData(); - ShortToChar(deviceNum, &ciToCimDataBuffer[ii]);/*PSD*/ + ShortToChar(deviceNum, &ciToCimDataBuffer[ii]);/*PSD ID*/ ii += 2u; for (jj = 0u; jj < deviceNum; jj++)/*͸PsdĿ*/ { @@ -4077,15 +3766,13 @@ void PackCiToCimDeviceData(void) ciToCimDataBuffer[ii++] = pPsdData[deviceId].chVideoQkDriveState; /*Ƶ״̬*/ ShortToChar(pPsdData[deviceId].wVideoQkRelateVobcId, &ciToCimDataBuffer[ii]);/*ƵͶӦгID*/ ii += 2u; - ciToCimDataBuffer[ii] = pPsdData[deviceId].cPsdExceptOpenState; /*쳣״̬0x55-쳣򿪣0xAA-δ쳣*/ - ii++; } /*״̬*/ deviceNum = GetEsbSum(); pEsbData = GetEsbData(); - ShortToChar(deviceNum, &ciToCimDataBuffer[ii]);/*ESB*/ + ShortToChar(deviceNum, &ciToCimDataBuffer[ii]);/*PSD ID*/ ii += 2u; for (jj = 0u; jj < deviceNum; jj++)/*͸PsdĿ*/ { @@ -4109,7 +3796,7 @@ void PackCiToCimDeviceData(void) /*״̬*/ deviceNum = GetSpksSum(); pSpksData = GetSpksData(); - ShortToChar(deviceNum, &ciToCimDataBuffer[ii]);/*SPKS*/ + ShortToChar(deviceNum, &ciToCimDataBuffer[ii]);/*PSD ID*/ ii += 2u; for (jj = 0u; jj < deviceNum; jj++)/*͸PsdĿ*/ { @@ -4153,7 +3840,7 @@ void PackCiToCimDeviceData(void) /*ӡϴ*/ pWashMachineData = GetWashMachineData(); deviceNum = GetWashMachineSum(); - ShortToChar(deviceNum, &ciToCimDataBuffer[ii]);/*ϴ*/ + ShortToChar(deviceNum, &ciToCimDataBuffer[ii]);/*PSD ID*/ ii += 2u; for (jj = 0u; jj < deviceNum; jj++) { @@ -4194,7 +3881,7 @@ void PackCiToCimDeviceData(void) /*ӡ*/ deviceNum = GetGaragedoorSum(); pGrageDoorData = GetGaragedoorData(); - ShortToChar(deviceNum, &ciToCimDataBuffer[ii]);/**/ + ShortToChar(deviceNum, &ciToCimDataBuffer[ii]);/*PSD ID*/ ii += 2u; for (jj = 0u; jj < deviceNum; jj++) { @@ -4227,7 +3914,7 @@ void PackCiToCimDeviceData(void) /*ӡ*/ deviceNum = GetFloodGateCurSum(); pFloodGateData = GetFloodGateData(); - ShortToChar(deviceNum, &ciToCimDataBuffer[ii]);/**/ + ShortToChar(deviceNum, &ciToCimDataBuffer[ii]);/*PSD ID*/ ii += 2u; for (jj = 0u; jj < deviceNum; jj++) { @@ -4261,8 +3948,6 @@ void PackCiToCimDeviceData(void) } /*CIM*/ - debug_infor_printf((const)"\nCIM_SEND_DEVSTATE:%d", ii); - debug_out_array(0xAA, ciToCimDataBuffer, ii); (void)DarkInfoPack(CIM_INFO_DEVICE_STATE, ciToCimDataBuffer, ii); } @@ -5089,56 +4774,3 @@ void PackCiToCimFlyProtectData(void) } -/* -* CIM˫ϵIOɼһϢ -* ˵ void -* ֵ -*/ -void PackCiToCimCollDiffData(void) -{ - /*ʼ*/ - UINT8 ciToCimDataBuffer[CI_TO_CIM_DATA_LEN_MAX] = { 0U }; - UINT16 ii = 0u; - UINT8 jj = 0u; - UINT8 kk = 0u; - UINT8 diffPointSum = 0u;/*ÿOCIJһµλ*/ - IODiffDataStruct* tempDiffData = NULL; - - tempDiffData = GetIODiffData();/*ȡȽϲһµ*/ - - ciToCimDataBuffer[ii++] = gDiffDataOcNum; - - if (NULL != tempDiffData) - { - for (jj = 0u; jj < OC_SUM_MAX; jj++) - {/*ÿOC*/ - diffPointSum = tempDiffData[jj].DiffPointNum;/*һµĵλ*/ - if (0u < diffPointSum) - { - ciToCimDataBuffer[ii++] = tempDiffData[jj].OcId;/*OC id*/ - - ciToCimDataBuffer[ii++] = diffPointSum; - - for (kk = 0u; kk < diffPointSum; kk++) - {/*һµĵλ*/ - ciToCimDataBuffer[ii++] = tempDiffData[jj].LocalBoardAdd[kk]; /*һµλӦİ忨ַ*/ - ciToCimDataBuffer[ii++] = tempDiffData[jj].OtherBoardAdd[kk]; /*ϵİ忨ַ*/ - ciToCimDataBuffer[ii++] = tempDiffData[jj].TheDiffPoint[kk]; /*λ*/ - } - } - else - {/*ûвһµλ*/ - } - - } - } - else - {/**/ - } - - debug_infor_printf((const)"IO Compare Diff OCnum = %d\n", gDiffDataOcNum); - debug_out_array(0xAA, ciToCimDataBuffer, ii); - - /*ά*/ - (void)DarkInfoPack(CIM_INFO_IO_COLL_DIFF_ALARM, ciToCimDataBuffer, ii); -} \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackCommon.h b/TSCP/src/APP/ciapp/ParsePack/ParsePackCommon.h index 1d00ae4..db381a3 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackCommon.h +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackCommon.h @@ -45,6 +45,7 @@ #include "../DataManage/PlatDataManage.h" #include "../IO/DeviceRelayDataProcess.h" + #ifdef __cplusplus extern "C" { #endif @@ -60,7 +61,7 @@ extern "C" { extern PlatHeartDataStruct RecvHeartDataStru; extern PlatGPIODataStruct RecvPlatDataStruGPIO; - extern PlatGPIOToleranceDataStruct gPlatDataGPIOTolercance; + /* * źŻλ * ˵ UINT8 MaskType, λ @@ -379,13 +380,6 @@ void ParasePlantIOData(UINT8* dataBuf); */ void PackCiToCimFlyProtectData(void); -/* -* CIM˫ϵIOɼһϢ -* ˵ void -* ֵ -*/ -void PackCiToCimCollDiffData(void); - #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackDefine.h b/TSCP/src/APP/ciapp/ParsePack/ParsePackDefine.h index 0e21919..645a2b0 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackDefine.h +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackDefine.h @@ -38,7 +38,7 @@ /*CI CI*/ #define RECVCI_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_LEAVE_LOGSEC_ROUTE_NUM ((UINT16)100) /*RC䷢͵ȥ߼μֵ*/ @@ -103,7 +103,6 @@ #define CIM_INFO_SIGNAL_DRIVOUT ((UINT16)0x2010) /*CIMźŻʱϢ*/ #define CIM_INFO_UNIT_ALARM ((UINT16)0x2011) /*CIMִеԪ*/ #define CIM_INFO_FLYPROTECT_ALARM ((UINT16)0x2012) /*CIMɳ崻*/ -#define CIM_INFO_IO_COLL_DIFF_ALARM ((UINT16)0x2013) /*CIM IO˫ϵɼһ±*/ #define CI_AND_OTHER_TRANSMIT_GOOD ((UINT8)0x55) /*CIϵͳ˫ͨ*/ #define CI_AND_OTHER_TRANSMIT_LINK ((UINT8)0x5A) /*CIϵͳͨ*/ diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackGateWayData.c b/TSCP/src/APP/ciapp/ParsePack/ParsePackGateWayData.c index a9fadef..5379e6d 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackGateWayData.c +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackGateWayData.c @@ -26,11 +26,6 @@ AtsMsgCfmStru g_strAtsDaCfmFst = { 0u }; /*ȡ AtsDaMsgStru g_strAtsDaMsgSnd = { 0u }; /*ȡѹٴϢ*/ AtsMsgCfmStru g_strAtsDaCfmSnd = { 0u }; /*ȡѹٴȷ*/ -AtsMsgCfmStru g_strSndAtsCfmFst = { 0U }; /*ڶATSԶɸѡ״ȷ*/ -AtsMsgCfmStru g_strSndAtsEaCfmFst = { 0U }; /*ڶATSȡɢ״ȷ*/ -AtsMsgCfmStru g_strSndAtsWlbCfmFst = { 0U }; /*ڶATS/ȡȫгƶ״ȷ*/ -AtsMsgCfmStru g_strSndAtsDaCfmFst = { 0U }; /*ڶATSȡѹ״ȷ*/ - /** * @brief ֡ * @param const UINT8* dataBuf, ݻ @@ -45,27 +40,12 @@ UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength) UINT32 dwPrtclMsg = 0u; UINT8 chMsgId = 0u; UINT16 ii = 0u; - UINT16 jj = 0U; UINT32 dwDataVerLocal = 0u; UINT8 chMsgIndex = 0u; UINT8 chLocalId = 0u; UINT8 chTrainIndex = 0u; UINT16 wMsgLen = 0U; UINT16 wMsgLenCount = 0U; - UINT8 cAtsId = 0U; - UINT8 cStation = 0U; - UINT16 wIndex = 0U; - UINT8 cAtsSendRcId = 0U; - UINT32 dwTime = 0U; - UINT8 cTrainNum = 0U; - AtsScreenTrainInfoStru strTrainInfo[TRAIN_SUM_MAX] = { 0U }; - UINT32 dwTrainHlhtId = 0U; /*гͨID*/ - UINT8 cCmdType = 0U; /**/ - UINT8 cLineAttr = 0U; /*·*/ - UINT8 cDevType = 0U; /*豸*/ - UINT8 cDevNum = 0U; - UINT16 wDevId = 0U; - UINT8 szCrcTmp[1024] = { 0U }; if ((NULL != dataBuf) && (0u < dataLength)) { @@ -125,13 +105,22 @@ UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength) { case MSG_TYPE_REQUEST_FIRST:/* Զɸѡ״Ϣ */ { - wIndex = ShortFromChar(&dataBuf[ii + 2U]); - if ((FLAG_SET != g_strAtsMsgFst.chFlag) || (g_strAtsMsgFst.wIndex == wIndex)) + g_strAtsMsgFst.dwCycle = Get2oo2CurCycleNum(); + g_strAtsMsgFst.chAtsId = dataBuf[ii++]; + if (0U < g_strAtsMsgFst.chAtsId) { - /*δյظյͬһATSһʱһATS·Զɸѡ״Ϣ*/ - g_strAtsMsgFst.dwCycle = Get2oo2CurCycleNum(); - g_strAtsMsgFst.chAtsId = dataBuf[ii++]; - if (0U < g_strAtsMsgFst.chAtsId) + ; + } + else + { + chRtn = CI_ERROR; + } + + if (CI_SUCCESS == chRtn) + { + g_strAtsMsgFst.chStation = dataBuf[ii++]; + g_strAtsMsgFst.chIndex = dataBuf[ii++]; + if (0U < g_strAtsMsgFst.chIndex) { ; } @@ -139,228 +128,97 @@ UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength) { chRtn = CI_ERROR; } - - if (CI_SUCCESS == chRtn) + } + else + { + ; /*DO NOTHING*/ + } + if (CI_SUCCESS == chRtn) + { + g_strAtsMsgFst.chTiocId = dataBuf[ii++]; + if (g_strAtsMsgFst.chTiocId == chLocalId) { - g_strAtsMsgFst.chStation = dataBuf[ii++]; - g_strAtsMsgFst.wIndex = ShortFromChar(&dataBuf[ii]); - ii += 2U; - if (0U < g_strAtsMsgFst.wIndex) - { - ; - } - else - { - chRtn = CI_ERROR; - } + ; } else { - ; /*DO NOTHING*/ - } - if (CI_SUCCESS == chRtn) - { - g_strAtsMsgFst.chTiocId = dataBuf[ii++]; - if (g_strAtsMsgFst.chTiocId == chLocalId) - { - ; - } - else - { - chRtn = CI_ERROR; - } - } - else - { - ; /*DO NOTHING*/ - } - if (CI_SUCCESS == chRtn) - { - g_strAtsMsgFst.dwTime = LongFromChar(&dataBuf[ii]); - ii += 4u; - - g_strAtsMsgFst.chTrainNum = dataBuf[ii++]; - if ((0U < g_strAtsMsgFst.chTrainNum) && (ATS_GATEWAY_CI_TRAIN_MAX > g_strAtsMsgFst.chTrainNum)) - { - for (chTrainIndex = 0u; chTrainIndex < g_strAtsMsgFst.chTrainNum; chTrainIndex++) - { - g_strAtsMsgFst.strTrainInfo[chTrainIndex].dwTrainId = LongFromChar(&dataBuf[ii]); - ii += 4u; - if ((0U == g_strAtsMsgFst.strTrainInfo[chTrainIndex].dwTrainId) - || (UINT32_MAX == g_strAtsMsgFst.strTrainInfo[chTrainIndex].dwTrainId)) - { - chRtn = CI_ERROR; - } - else - { - ; /*DO NOTHING*/ - } - - g_strAtsMsgFst.strTrainInfo[chTrainIndex].wLgcId = ShortFromChar(&dataBuf[ii]); - ii += 2u; - - if ((0U == g_strAtsMsgFst.strTrainInfo[chTrainIndex].wLgcId) - || (UINT16_MAX == g_strAtsMsgFst.strTrainInfo[chTrainIndex].wLgcId)) - { - chRtn = CI_ERROR; - } - else - { - ; /*DO NOTHING*/ - } - - if (CI_SUCCESS == chRtn) - { - ; /**/ - } - else - { - break; - } - } - } - else - { - chRtn = CI_ERROR; - } - } - else - { - ; /*DO NOTHING*/ - } - if (CI_SUCCESS == chRtn) - { - g_strAtsMsgFst.chFlag = FLAG_SET; - } - else - { - ; /*DO NOTHING*/ + chRtn = CI_ERROR; } } else { - /*ڶATS·Զɸѡ״Ϣ*/ - cAtsId = dataBuf[ii]; /*ATS ID*/ - ii++; - if (0U < cAtsId) + ; /*DO NOTHING*/ + } + if (CI_SUCCESS == chRtn) + { + g_strAtsMsgFst.dwTime = LongFromChar(&dataBuf[ii]); + ii += 4u; + + g_strAtsMsgFst.chTrainNum = dataBuf[ii++]; + if ((0U < g_strAtsMsgFst.chTrainNum) && (ATS_GATEWAY_CI_TRAIN_MAX > g_strAtsMsgFst.chTrainNum)) { - cStation = dataBuf[ii]; /*վ*/ - ii++; - - wIndex = ShortFromChar(&dataBuf[ii]); /*б*/ - ii += 2U; - - if (0U < wIndex) + for (chTrainIndex = 0u; chTrainIndex < g_strAtsMsgFst.chTrainNum; chTrainIndex++) { - cAtsSendRcId = dataBuf[ii]; /*RC ID*/ - ii++; - if (cAtsSendRcId == chLocalId) + g_strAtsMsgFst.strTrainInfo[chTrainIndex].dwTrainId = LongFromChar(&dataBuf[ii]); + ii += 4u; + if ((0U == g_strAtsMsgFst.strTrainInfo[chTrainIndex].dwTrainId) + || (UINT32_MAX == g_strAtsMsgFst.strTrainInfo[chTrainIndex].dwTrainId)) { - dwTime = LongFromChar(&dataBuf[ii]); /*һʱ*/ - ii += 4U; - - cTrainNum = dataBuf[ii]; - ii++; - if ((0U < cTrainNum) && (ATS_GATEWAY_CI_TRAIN_MAX > cTrainNum)) - { - for (chTrainIndex = 0U; chTrainIndex < cTrainNum; chTrainIndex++) - { - strTrainInfo[chTrainIndex].dwTrainId = LongFromChar(&dataBuf[ii]); - ii += 4U; - if ((0U == strTrainInfo[chTrainIndex].dwTrainId) - || (UINT32_MAX == strTrainInfo[chTrainIndex].dwTrainId)) - { - debug_infor_printf((const)"ParseGateWayToCiDataFrame: Cmd Id[%d] Parse Train Id[%d] Error\n", MSG_TYPE_REQUEST_FIRST, strTrainInfo[chTrainIndex].dwTrainId); - chRtn = CI_ERROR; - } - else - { - ; /*DO NOTHING*/ - } - - strTrainInfo[chTrainIndex].wLgcId = ShortFromChar(&dataBuf[ii]); - ii += 2U; - - if ((0U == strTrainInfo[chTrainIndex].wLgcId) - || (UINT16_MAX == strTrainInfo[chTrainIndex].wLgcId)) - { - debug_infor_printf((const)"ParseGateWayToCiDataFrame: Cmd Id[%d] Parse LogSec Id[%d] Error\n", MSG_TYPE_REQUEST_FIRST, strTrainInfo[chTrainIndex].wLgcId); - chRtn = CI_ERROR; - } - else - { - ; /*DO NOTHING*/ - } - - if (CI_SUCCESS == chRtn) - { - ; /**/ - } - else - { - break; - } - } - } - else - { - debug_infor_printf((const)"ParseGateWayToCiDataFrame: Cmd Id[%d] Parse Train Num[%d] Error\n", MSG_TYPE_REQUEST_FIRST, cTrainNum); - chRtn = CI_ERROR; - } + chRtn = CI_ERROR; + } + g_strAtsMsgFst.strTrainInfo[chTrainIndex].wLgcId = ShortFromChar(&dataBuf[ii]); + ii += 2u; + if ((0U == g_strAtsMsgFst.strTrainInfo[chTrainIndex].dwTrainId) + || (UINT32_MAX == g_strAtsMsgFst.strTrainInfo[chTrainIndex].dwTrainId)) + { + chRtn = CI_ERROR; } else { - debug_infor_printf((const)"ParseGateWayToCiDataFrame: Cmd Id[%d] Parse Rc Id[%d] Error\n", MSG_TYPE_REQUEST_FIRST, cAtsSendRcId); + ; /*DO NOTHING*/ + } + + if ((0U == g_strAtsMsgFst.strTrainInfo[chTrainIndex].wLgcId) + || (UINT16_MAX == g_strAtsMsgFst.strTrainInfo[chTrainIndex].wLgcId)) + { chRtn = CI_ERROR; } - } - else - { - debug_infor_printf((const)"ParseGateWayToCiDataFrame: Cmd Id[%d] Parse WorkStation Id[%d] Error\n", MSG_TYPE_REQUEST_FIRST, wIndex); - chRtn = CI_ERROR; + else + { + ; /*DO NOTHING*/ + } + + if (CI_SUCCESS == chRtn) + { + ; /**/ + } + else + { + break; + } } } else { - debug_infor_printf((const)"ParseGateWayToCiDataFrame: Cmd Id[%d] Parse Ats Id[%d] Error\n", MSG_TYPE_REQUEST_FIRST, cAtsId); chRtn = CI_ERROR; } - - if (CI_SUCCESS == chRtn) - { - g_strSndAtsCfmFst.chFlag = FLAG_SET; - g_strSndAtsCfmFst.chTiocId = cAtsSendRcId; - g_strSndAtsCfmFst.chStation = cStation; - g_strSndAtsCfmFst.wIndex = wIndex; - g_strSndAtsCfmFst.dwTime = dwTime; - g_strSndAtsCfmFst.chOpStatus = CONFIRM_FIRST_OTHER_DEV_OP; /*վվ*/ - - /*CRC*/ - szCrcTmp[jj] = cAtsId; - jj++; - LongToChar(dwTime, &szCrcTmp[jj]); - jj += 4U; - szCrcTmp[jj] = cTrainNum; - jj++; - for (chTrainIndex = 0U; chTrainIndex < cTrainNum; chTrainIndex++) - { - LongToChar(strTrainInfo[chTrainIndex].dwTrainId, &szCrcTmp[jj]); - jj += 4U; - ShortToChar(strTrainInfo[chTrainIndex].wLgcId, &szCrcTmp[jj]); - jj += 2U; - } - g_strSndAtsCfmFst.dwCrc32 = Tioc_CommonCrc32(szCrcTmp, jj); - } - else - { - ; /*DO NOTHING*/ - } + } + else + { + ; /*DO NOTHING*/ + } + if (CI_SUCCESS == chRtn) + { + g_strAtsMsgFst.chFlag = FLAG_SET; + } + else + { + ; /*DO NOTHING*/ } break; } case MSG_TYPE_REQUEST_SECOND:/* ԶɸѡϢ */ { - g_strAtsMsgSnd.dwCycle = Get2oo2CurCycleNum(); g_strAtsMsgSnd.chAtsId = dataBuf[ii++]; if (0U < g_strAtsMsgSnd.chAtsId) @@ -375,9 +233,8 @@ UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength) if (CI_SUCCESS==chRtn) { g_strAtsMsgSnd.chStation = dataBuf[ii++]; - g_strAtsMsgSnd.wIndex = ShortFromChar(&dataBuf[ii]); - ii += 2U; - if (0U < g_strAtsMsgSnd.wIndex) + g_strAtsMsgSnd.chIndex = dataBuf[ii++]; + if (0U < g_strAtsMsgSnd.chIndex) { ; } @@ -473,13 +330,22 @@ UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength) } case MSG_TYPE_EA_CANCLE_FIRST:/* ɢȡ״Ϣ */ { - wIndex = ShortFromChar(&dataBuf[ii + 2U]); - if ((FLAG_SET != g_strAtsEaMsgFst.chFlag) || (g_strAtsEaMsgFst.wIndex == wIndex)) + g_strAtsEaMsgFst.dwCycle = Get2oo2CurCycleNum(); /* յȡɢϢں */ + g_strAtsEaMsgFst.chAtsId = dataBuf[ii++]; /* ATS */ + if (0U < g_strAtsEaMsgFst.chAtsId) { - /*δյظյͬһATSһʱһATS·ȡɢ״Ϣ*/ - g_strAtsEaMsgFst.dwCycle = Get2oo2CurCycleNum(); /* յȡɢϢں */ - g_strAtsEaMsgFst.chAtsId = dataBuf[ii++]; /* ATS */ - if (0U < g_strAtsEaMsgFst.chAtsId) + ; + } + else + { + chRtn = CI_ERROR; + } + + if (CI_SUCCESS == chRtn) + { + g_strAtsEaMsgFst.chStation = dataBuf[ii++]; /* վ */ + g_strAtsEaMsgFst.chIndex = dataBuf[ii++]; /* վ */ + if (0U < g_strAtsEaMsgFst.chIndex) { ; } @@ -487,202 +353,86 @@ UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength) { chRtn = CI_ERROR; } - - if (CI_SUCCESS == chRtn) - { - g_strAtsEaMsgFst.chStation = dataBuf[ii++]; /* վ */ - g_strAtsEaMsgFst.wIndex = ShortFromChar(&dataBuf[ii]); /* վ */ - ii += 2U; - if (0U < g_strAtsEaMsgFst.wIndex) - { - ; - } - else - { - chRtn = CI_ERROR; - } - } - else - { - ; /*DO NOTHING*/ - } - if (CI_SUCCESS == chRtn) - { - g_strAtsEaMsgFst.chTiocId = dataBuf[ii++]; /* TIOC */ - if (g_strAtsEaMsgFst.chTiocId == chLocalId) - { - ; - } - else - { - chRtn = CI_ERROR; - } - } - else - { - ; /*DO NOTHING*/ - } - if (CI_SUCCESS == chRtn) - { - g_strAtsEaMsgFst.dwEaTrainId = LongFromChar(&dataBuf[ii]); /* ɢгͨ */ - ii += 4u; - if ((0u < g_strAtsEaMsgFst.dwEaTrainId) && (UINT32_MAX > g_strAtsEaMsgFst.dwEaTrainId)) - { - ; - } - else - { - chRtn = CI_ERROR; - } - - } - else - { - ; /*DO NOTHING*/ - } - - if (CI_SUCCESS == chRtn) - { - g_strAtsEaMsgFst.dwTime = LongFromChar(&dataBuf[ii]); /* ·Ϣʱ */ - ii += 4u; - - g_strAtsEaMsgFst.chType = dataBuf[ii];/* */ - ii++; - - if (ATS_EA_CMD_TYPE_CANCEL == g_strAtsEaMsgFst.chType) - { - ; - } - else - { - chRtn = CI_ERROR; - } - } - else - { - ; - } - - if (CI_SUCCESS == chRtn) - { - g_strAtsEaMsgFst.chLine = dataBuf[ii];/* */ - ii++; - if ((EA_AREA_ALL == g_strAtsEaMsgFst.chLine) || (EA_AREA_UP == g_strAtsEaMsgFst.chLine) || (EA_AREA_DOWN == g_strAtsEaMsgFst.chLine)) - { - g_strAtsEaMsgFst.chFlag = FLAG_SET; - } - else - { - chRtn = CI_ERROR; - } - } - else - { - ; - } } else { - /*ڶATS·ȡɢ״Ϣ*/ - cAtsId = dataBuf[ii]; /* ATS */ - ii++; - if (0U < cAtsId) - { - cStation = dataBuf[ii]; /* վ */ - ii++; - - wIndex = ShortFromChar(&dataBuf[ii]); /* վ */ - ii += 2U; - if (0U < wIndex) - { - cAtsSendRcId = dataBuf[ii]; /* TIOC */ - ii++; - if (cAtsSendRcId == chLocalId) - { - dwTrainHlhtId = LongFromChar(&dataBuf[ii]); /* ɢгͨ */ - ii += 4U; - if ((0U < dwTrainHlhtId) && (UINT32_MAX > dwTrainHlhtId)) - { - dwTime = LongFromChar(&dataBuf[ii]); /* ·Ϣʱ */ - ii += 4U; - - cCmdType = dataBuf[ii]; /* */ - ii++; - if (ATS_EA_CMD_TYPE_CANCEL == cCmdType) - { - cLineAttr = dataBuf[ii];/* · */ - ii++; - if ((EA_AREA_ALL == cLineAttr) || (EA_AREA_UP == cLineAttr) || (EA_AREA_DOWN == cLineAttr)) - { - ; - } - else - { - debug_infor_printf((const)"ParseGateWayToCiDataFrame: Cmd Id[%d] Parse Line Attr[%d] Error\n", MSG_TYPE_EA_CANCLE_FIRST, cLineAttr); - chRtn = CI_ERROR; - } - } - else - { - debug_infor_printf((const)"ParseGateWayToCiDataFrame: Cmd Id[%d] Parse Cmd Type[%d] Error\n", MSG_TYPE_EA_CANCLE_FIRST, cCmdType); - chRtn = CI_ERROR; - } - } - else - { - debug_infor_printf((const)"ParseGateWayToCiDataFrame: Cmd Id[%d] Parse Train Id[%d] Error\n", MSG_TYPE_EA_CANCLE_FIRST, dwTrainHlhtId); - chRtn = CI_ERROR; - } - } - else - { - debug_infor_printf((const)"ParseGateWayToCiDataFrame: Cmd Id[%d] Parse Rc Id[%d] Error\n", MSG_TYPE_EA_CANCLE_FIRST, cAtsSendRcId); - chRtn = CI_ERROR; - } - } - else - { - debug_infor_printf((const)"ParseGateWayToCiDataFrame: Cmd Id[%d] Parse WorkStation Id[%d] Error\n", MSG_TYPE_EA_CANCLE_FIRST, wIndex); - chRtn = CI_ERROR; - } - } - else - { - debug_infor_printf((const)"ParseGateWayToCiDataFrame: Cmd Id[%d] Parse Ats Id[%d] Error\n", MSG_TYPE_EA_CANCLE_FIRST, cAtsId); - chRtn = CI_ERROR; - } - - if (CI_SUCCESS == chRtn) - { - g_strSndAtsEaCfmFst.chFlag = FLAG_SET; - g_strSndAtsEaCfmFst.chTiocId = cAtsSendRcId; - g_strSndAtsEaCfmFst.chStation = cStation; - g_strSndAtsEaCfmFst.wIndex = wIndex; - g_strSndAtsEaCfmFst.dwTime = dwTime; - g_strSndAtsEaCfmFst.chOpStatus = CONFIRM_FIRST_OTHER_DEV_OP; /*վվ*/ - - /*CRC*/ - szCrcTmp[jj] = cAtsId; - jj++; - szCrcTmp[jj] = cStation; - jj++; - ShortToChar(wIndex, &szCrcTmp[jj]); - jj += 2U; - LongToChar(dwTrainHlhtId, &szCrcTmp[jj]); - jj += 4U; - LongToChar(dwTime, &szCrcTmp[jj]); - jj += 4U; - szCrcTmp[jj] = cCmdType; - jj++; - szCrcTmp[jj] = cLineAttr; - jj++; - g_strSndAtsEaCfmFst.dwCrc32 = Tioc_CommonCrc32(szCrcTmp, jj); - } - else + ; /*DO NOTHING*/ + } + if (CI_SUCCESS == chRtn) + { + g_strAtsEaMsgFst.chTiocId = dataBuf[ii++]; /* TIOC */ + if (g_strAtsEaMsgFst.chTiocId == chLocalId) { ; } + else + { + chRtn = CI_ERROR; + } } + else + { + ; /*DO NOTHING*/ + } + if (CI_SUCCESS == chRtn) + { + g_strAtsEaMsgFst.dwEaTrainId = LongFromChar(&dataBuf[ii]); /* ɢгͨ */ + ii += 4u; + if ((0u < g_strAtsEaMsgFst.dwEaTrainId) && (UINT32_MAX > g_strAtsEaMsgFst.dwEaTrainId)) + { + ; + } + else + { + chRtn = CI_ERROR; + } + + } + else + { + ; /*DO NOTHING*/ + } + + if (CI_SUCCESS == chRtn) + { + g_strAtsEaMsgFst.dwTime = LongFromChar(&dataBuf[ii]); /* ·Ϣʱ */ + ii += 4u; + + g_strAtsEaMsgFst.chType = dataBuf[ii];/* */ + ii++; + + if (ATS_EA_CMD_TYPE_CANCEL == g_strAtsEaMsgFst.chType) + { + ; + } + else + { + chRtn = CI_ERROR; + } + } + else + { + ; + } + + if (CI_SUCCESS == chRtn) + { + g_strAtsEaMsgFst.chLine = dataBuf[ii];/* */ + ii++; + if ((EA_AREA_ALL == g_strAtsEaMsgFst.chLine) || (EA_AREA_UP == g_strAtsEaMsgFst.chLine) || (EA_AREA_DOWN == g_strAtsEaMsgFst.chLine)) + { + g_strAtsEaMsgFst.chFlag = FLAG_SET; + } + else + { + chRtn = CI_ERROR; + } + } + else + { + ; + } + break; } case MSG_TYPE_EA_CANCLE_SECOND:/* ɢȡϢ */ @@ -701,9 +451,8 @@ UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength) if (CI_SUCCESS == chRtn) { g_strAtsEaMsgSnd.chStation = dataBuf[ii++]; /* վ */ - g_strAtsEaMsgSnd.wIndex = ShortFromChar(&dataBuf[ii]); /* վ */ - ii += 2U; - if (0U < g_strAtsEaMsgSnd.wIndex) + g_strAtsEaMsgSnd.chIndex = dataBuf[ii++]; /* վ */ + if (0U < g_strAtsEaMsgSnd.chIndex) { ; } @@ -806,13 +555,22 @@ UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength) } case MSG_TYPE_WLB_SET_FIRST: /* ȫгƶһ */ { - wIndex = ShortFromChar(&dataBuf[ii + 2U]); - if ((FLAG_SET != g_strAtsWlbMsgFst.chFlag) || (g_strAtsWlbMsgFst.wIndex == wIndex)) + g_strAtsWlbMsgFst.dwCycle = Get2oo2CurCycleNum(); /* յȫгƶں */ + g_strAtsWlbMsgFst.chAtsId = dataBuf[ii++]; /* ATS */ + if (0U < g_strAtsWlbMsgFst.chAtsId) { - /*δյظյͬһATSһʱһATS·ȫ߽ƶ״Ϣ*/ - g_strAtsWlbMsgFst.dwCycle = Get2oo2CurCycleNum(); /* յȫгƶں */ - g_strAtsWlbMsgFst.chAtsId = dataBuf[ii++]; /* ATS */ - if (0U < g_strAtsWlbMsgFst.chAtsId) + ; + } + else + { + chRtn = CI_ERROR; + } + + if (CI_SUCCESS == chRtn) + { + g_strAtsWlbMsgFst.chStation = dataBuf[ii++]; /* վ */ + g_strAtsWlbMsgFst.chIndex = dataBuf[ii++]; /* վ */ + if (0U < g_strAtsWlbMsgFst.chIndex) { ; } @@ -820,226 +578,96 @@ UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength) { chRtn = CI_ERROR; } - - if (CI_SUCCESS == chRtn) - { - g_strAtsWlbMsgFst.chStation = dataBuf[ii++]; /* վ */ - g_strAtsWlbMsgFst.wIndex = ShortFromChar(&dataBuf[ii]); /* վ */ - ii += 2U; - if (0U < g_strAtsWlbMsgFst.wIndex) - { - ; - } - else - { - chRtn = CI_ERROR; - } - } - else - { - ; /*DO NOTHING*/ - } - if (CI_SUCCESS == chRtn) - { - g_strAtsWlbMsgFst.chTiocId = dataBuf[ii++]; /* TIOC */ - if (g_strAtsWlbMsgFst.chTiocId == chLocalId) - { - ; - } - else - { - chRtn = CI_ERROR; - } - } - else - { - ; /*DO NOTHING*/ - } - - if (CI_SUCCESS == chRtn) - { - g_strAtsWlbMsgFst.chBrakeType = dataBuf[ii++]; /* ƶͣƶƶ */ - if ((WLB_TYPE_RC == g_strAtsWlbMsgFst.chBrakeType) || (WLB_TYPE_PHYSEC == g_strAtsWlbMsgFst.chBrakeType)) - { - ; /* ƶͺϷ */ - } - else - { - chRtn = CI_ERROR; - } - } - else - { - ; /* DO NOTHING */ - } - - if (CI_SUCCESS == chRtn) - { - g_strAtsWlbMsgFst.chBrakeCount = dataBuf[ii++]; /* */ - if (1u == g_strAtsWlbMsgFst.chBrakeCount) - { - ; /* Ϸ,Ϊ1 */ - } - else - { - chRtn = CI_ERROR; - } - } - else - { - ; /* DO NOTHING */ - } - - if (CI_SUCCESS == chRtn) - { - g_strAtsWlbMsgFst.wBrakeIndex = ShortFromChar(&dataBuf[ii]); /* ID */ - ii += 2u; - - chRtn = WlbUrgentIdCheck(g_strAtsWlbMsgFst.chBrakeType, g_strAtsWlbMsgFst.wBrakeIndex); /*УIDǷϷ*/ - } - else - { - ; /* DO NOTHING */ - } - - if (CI_SUCCESS == chRtn) - { - g_strAtsWlbMsgFst.dwTime = LongFromChar(&dataBuf[ii]); /* ·Ϣʱ */ - ii += 4u; - - g_strAtsWlbMsgFst.chType = dataBuf[ii];/* */ - ii++; - - if ((MSG_TYPE_WLB_SET == g_strAtsWlbMsgFst.chType) || (MSG_TYPE_WLB_CANCEL == g_strAtsWlbMsgFst.chType)) - { - g_strAtsWlbMsgFst.chFlag = FLAG_SET; - } - else - { - chRtn = CI_ERROR; - } - } - else - { - ; - } } else { - /*ڶATS·ȫ߽ƶ״Ϣ*/ - cAtsId = dataBuf[ii]; /* ATS */ - ii++; - if (0U < cAtsId) - { - cStation = dataBuf[ii]; /* վ */ - ii++; - - wIndex = ShortFromChar(&dataBuf[ii]); /* վ */ - ii += 2U; - if (0U < wIndex) - { - cAtsSendRcId = dataBuf[ii]; /* TIOC */ - ii++; - if (cAtsSendRcId == chLocalId) - { - cDevType = dataBuf[ii]; /* ƶͣƶƶ */ - ii++; - if ((WLB_TYPE_RC == cDevType) || (WLB_TYPE_PHYSEC == cDevType)) - { - cDevNum = dataBuf[ii]; /* */ - ii++; - if (1U == cDevNum) - { - wDevId = ShortFromChar(&dataBuf[ii]); /* ID */ - ii += 2U; - - chRtn = WlbUrgentIdCheck(cDevType, wDevId); /*УIDǷϷ*/ - if (CI_SUCCESS == chRtn) - { - dwTime = LongFromChar(&dataBuf[ii]); /* ·Ϣʱ */ - ii += 4U; - - cCmdType = dataBuf[ii]; /* */ - ii++; - if ((MSG_TYPE_WLB_SET == cCmdType) || (MSG_TYPE_WLB_CANCEL == cCmdType)) - { - ; - } - else - { - debug_infor_printf((const)"ParseGateWayToCiDataFrame: Cmd Id[%d] Parse Cmd Type[%d] Error\n", MSG_TYPE_WLB_SET_FIRST, cCmdType); - chRtn = CI_ERROR; - } - } - else - { - debug_infor_printf((const)"ParseGateWayToCiDataFrame: Cmd Id[%d] Parse Dev Id[%d] Error\n", MSG_TYPE_WLB_SET_FIRST, wDevId); - chRtn = CI_ERROR; - } - } - else - { - debug_infor_printf((const)"ParseGateWayToCiDataFrame: Cmd Id[%d] Parse Dev Num[%d] Error\n", MSG_TYPE_WLB_SET_FIRST, cDevNum); - chRtn = CI_ERROR; - } - } - else - { - debug_infor_printf((const)"ParseGateWayToCiDataFrame: Cmd Id[%d] Parse Dev Type[%d] Error\n", MSG_TYPE_WLB_SET_FIRST, cDevType); - chRtn = CI_ERROR; - } - } - else - { - debug_infor_printf((const)"ParseGateWayToCiDataFrame: Cmd Id[%d] Parse Rc Id[%d] Error\n", MSG_TYPE_WLB_SET_FIRST, cAtsSendRcId); - chRtn = CI_ERROR; - } - } - else - { - debug_infor_printf((const)"ParseGateWayToCiDataFrame: Cmd Id[%d] Parse WorkStation Id[%d] Error\n", MSG_TYPE_WLB_SET_FIRST, wIndex); - chRtn = CI_ERROR; - } - } - else - { - debug_infor_printf((const)"ParseGateWayToCiDataFrame: Cmd Id[%d] Parse Ats Id[%d] Error\n", MSG_TYPE_WLB_SET_FIRST, cAtsId); - chRtn = CI_ERROR; - } - - if (CI_SUCCESS == chRtn) - { - g_strSndAtsWlbCfmFst.chFlag = FLAG_SET; - g_strSndAtsWlbCfmFst.chTiocId = cAtsSendRcId; - g_strSndAtsWlbCfmFst.chStation = cStation; - g_strSndAtsWlbCfmFst.wIndex = wIndex; - g_strSndAtsWlbCfmFst.dwTime = dwTime; - g_strSndAtsWlbCfmFst.chOpStatus = CONFIRM_FIRST_OTHER_DEV_OP; /*վվ*/ - - /*CRC*/ - szCrcTmp[jj] = cAtsId; - jj++; - szCrcTmp[jj] = cStation; - jj++; - ShortToChar(wIndex, &szCrcTmp[jj]); - jj += 2U; - szCrcTmp[jj] = cDevType; - jj++; - szCrcTmp[jj] = cDevNum; - jj++; - ShortToChar(wDevId, &szCrcTmp[jj]); - jj += 2U; - LongToChar(dwTime, &szCrcTmp[jj]); - jj += 4U; - szCrcTmp[jj] = cCmdType; - jj++; - g_strSndAtsWlbCfmFst.dwCrc32 = Tioc_CommonCrc32(szCrcTmp, jj); - } - else + ; /*DO NOTHING*/ + } + if (CI_SUCCESS == chRtn) + { + g_strAtsWlbMsgFst.chTiocId = dataBuf[ii++]; /* TIOC */ + if (g_strAtsWlbMsgFst.chTiocId == chLocalId) { ; } + else + { + chRtn = CI_ERROR; + } } + else + { + ; /*DO NOTHING*/ + } + + if (CI_SUCCESS == chRtn) + { + g_strAtsWlbMsgFst.chBrakeType = dataBuf[ii++]; /* ƶͣƶƶ */ + if ((WLB_TYPE_RC == g_strAtsWlbMsgFst.chBrakeType) || (WLB_TYPE_PHYSEC == g_strAtsWlbMsgFst.chBrakeType)) + { + ; /* ƶͺϷ */ + } + else + { + chRtn = CI_ERROR; + } + } + else + { + ; /* DO NOTHING */ + } + + if (CI_SUCCESS == chRtn) + { + g_strAtsWlbMsgFst.chBrakeCount = dataBuf[ii++]; /* */ + if (1u == g_strAtsWlbMsgFst.chBrakeCount) + { + ; /* Ϸ,Ϊ1 */ + } + else + { + chRtn = CI_ERROR; + } + } + else + { + ; /* DO NOTHING */ + } + + if (CI_SUCCESS == chRtn) + { + g_strAtsWlbMsgFst.wBrakeIndex = ShortFromChar(&dataBuf[ii]); /* ID */ + ii += 2u; + + chRtn = WlbUrgentIdCheck(g_strAtsWlbMsgFst.chBrakeType, g_strAtsWlbMsgFst.wBrakeIndex); /*УIDǷϷ*/ + } + else + { + ; /* DO NOTHING */ + } + + if (CI_SUCCESS == chRtn) + { + g_strAtsWlbMsgFst.dwTime = LongFromChar(&dataBuf[ii]); /* ·Ϣʱ */ + ii += 4u; + + g_strAtsWlbMsgFst.chType = dataBuf[ii];/* */ + ii++; + + if ((MSG_TYPE_WLB_SET == g_strAtsWlbMsgFst.chType) || (MSG_TYPE_WLB_CANCEL == g_strAtsWlbMsgFst.chType)) + { + g_strAtsWlbMsgFst.chFlag = FLAG_SET; + } + else + { + chRtn = CI_ERROR; + } + } + else + { + ; + } + break; } case MSG_TYPE_WLB_SET_SECOND: /* ȫгƶ */ @@ -1058,9 +686,8 @@ UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength) if (CI_SUCCESS == chRtn) { g_strAtsWlbMsgSnd.chStation = dataBuf[ii++]; /* վ */ - g_strAtsWlbMsgSnd.wIndex = ShortFromChar(&dataBuf[ii]); /* վ */ - ii += 2U; - if (0U < g_strAtsWlbMsgSnd.wIndex) + g_strAtsWlbMsgSnd.chIndex = dataBuf[ii++]; /* վ */ + if (0U < g_strAtsWlbMsgSnd.chIndex) { ; } @@ -1174,13 +801,22 @@ UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength) } case MSG_TYPE_DA_CANCLE_FIRST:/* ѹȡ״Ϣ */ { - wIndex = ShortFromChar(&dataBuf[ii + 2U]); - if ((FLAG_SET != g_strAtsDaMsgFst.chFlag) || (g_strAtsDaMsgFst.wIndex == wIndex)) + g_strAtsDaMsgFst.dwCycle = Get2oo2CurCycleNum(); /* յȡѹϢں */ + g_strAtsDaMsgFst.chAtsId = dataBuf[ii++]; /* ATS */ + if (0U < g_strAtsDaMsgFst.chAtsId) { - /*δյظյͬһATSһʱһATS·ȡѹ״Ϣ*/ - g_strAtsDaMsgFst.dwCycle = Get2oo2CurCycleNum(); /* յȡѹϢں */ - g_strAtsDaMsgFst.chAtsId = dataBuf[ii++]; /* ATS */ - if (0U < g_strAtsDaMsgFst.chAtsId) + ; + } + else + { + chRtn = CI_ERROR; + } + + if (CI_SUCCESS == chRtn) + { + g_strAtsDaMsgFst.chStation = dataBuf[ii++]; /* վ */ + g_strAtsDaMsgFst.chIndex = dataBuf[ii++]; /* վ */ + if (0U < g_strAtsDaMsgFst.chIndex) { ; } @@ -1188,202 +824,86 @@ UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength) { chRtn = CI_ERROR; } - - if (CI_SUCCESS == chRtn) - { - g_strAtsDaMsgFst.chStation = dataBuf[ii++]; /* վ */ - g_strAtsDaMsgFst.wIndex = ShortFromChar(&dataBuf[ii]); /* վ */ - ii += 2U; - if (0U < g_strAtsDaMsgFst.wIndex) - { - ; - } - else - { - chRtn = CI_ERROR; - } - } - else - { - ; /*DO NOTHING*/ - } - if (CI_SUCCESS == chRtn) - { - g_strAtsDaMsgFst.chTiocId = dataBuf[ii++]; /* TIOC */ - if (g_strAtsDaMsgFst.chTiocId == chLocalId) - { - ; - } - else - { - chRtn = CI_ERROR; - } - } - else - { - ; /*DO NOTHING*/ - } - if (CI_SUCCESS == chRtn) - { - g_strAtsDaMsgFst.dwDaTrainId = LongFromChar(&dataBuf[ii]); /* ѹгͨ */ - ii += 4u; - if ((0u < g_strAtsDaMsgFst.dwDaTrainId) && (UINT32_MAX > g_strAtsDaMsgFst.dwDaTrainId)) - { - ; - } - else - { - chRtn = CI_ERROR; - } - - } - else - { - ; /*DO NOTHING*/ - } - - if (CI_SUCCESS == chRtn) - { - g_strAtsDaMsgFst.dwTime = LongFromChar(&dataBuf[ii]); /* ·Ϣʱ */ - ii += 4u; - - g_strAtsDaMsgFst.chType = dataBuf[ii];/* */ - ii++; - - if (ATS_DA_CMD_TYPE_CANCEL == g_strAtsDaMsgFst.chType) - { - ; - } - else - { - chRtn = CI_ERROR; - } - } - else - { - ; - } - - if (CI_SUCCESS == chRtn) - { - g_strAtsDaMsgFst.chLine = dataBuf[ii];/* */ - ii++; - if ((DA_AREA_ALL == g_strAtsDaMsgFst.chLine) || (DA_AREA_UP == g_strAtsDaMsgFst.chLine) || (DA_AREA_DOWN == g_strAtsDaMsgFst.chLine)) - { - g_strAtsDaMsgFst.chFlag = FLAG_SET; - } - else - { - chRtn = CI_ERROR; - } - } - else - { - ; - } } else { - /*ڶATS·ȡѹ״Ϣ*/ - cAtsId = dataBuf[ii]; /* ATS */ - ii++; - if (0U < cAtsId) - { - cStation = dataBuf[ii]; /* վ */ - ii++; - - wIndex = ShortFromChar(&dataBuf[ii]); /* վ */ - ii += 2U; - if (0U < wIndex) - { - cAtsSendRcId = dataBuf[ii]; /* TIOC */ - ii++; - if (cAtsSendRcId == chLocalId) - { - dwTrainHlhtId = LongFromChar(&dataBuf[ii]); /* ѹгͨ */ - ii += 4U; - if ((0U < dwTrainHlhtId) && (UINT32_MAX > dwTrainHlhtId)) - { - dwTime = LongFromChar(&dataBuf[ii]); /* ·Ϣʱ */ - ii += 4U; - - cCmdType = dataBuf[ii]; /* */ - ii++; - if (ATS_DA_CMD_TYPE_CANCEL == cCmdType) - { - cLineAttr = dataBuf[ii]; /* · */ - ii++; - if ((DA_AREA_ALL == cLineAttr) || (DA_AREA_UP == cLineAttr) || (DA_AREA_DOWN == cLineAttr)) - { - ; - } - else - { - debug_infor_printf((const)"ParseGateWayToCiDataFrame: Cmd Id[%d] Parse Line Attr[%d] Error\n", MSG_TYPE_DA_CANCLE_FIRST, cLineAttr); - chRtn = CI_ERROR; - } - } - else - { - debug_infor_printf((const)"ParseGateWayToCiDataFrame: Cmd Id[%d] Parse Cmd Type[%d] Error\n", MSG_TYPE_DA_CANCLE_FIRST, cCmdType); - chRtn = CI_ERROR; - } - } - else - { - debug_infor_printf((const)"ParseGateWayToCiDataFrame: Cmd Id[%d] Parse Train Id[%d] Error\n", MSG_TYPE_DA_CANCLE_FIRST, dwTrainHlhtId); - chRtn = CI_ERROR; - } - } - else - { - debug_infor_printf((const)"ParseGateWayToCiDataFrame: Cmd Id[%d] Parse Rc Id[%d] Error\n", MSG_TYPE_DA_CANCLE_FIRST, cAtsSendRcId); - chRtn = CI_ERROR; - } - } - else - { - debug_infor_printf((const)"ParseGateWayToCiDataFrame: Cmd Id[%d] Parse WorkStation Id[%d] Error\n", MSG_TYPE_DA_CANCLE_FIRST, wIndex); - chRtn = CI_ERROR; - } - } - else - { - debug_infor_printf((const)"ParseGateWayToCiDataFrame: Cmd Id[%d] Parse Ats Id[%d] Error\n", MSG_TYPE_DA_CANCLE_FIRST, cAtsId); - chRtn = CI_ERROR; - } - - if (CI_SUCCESS == chRtn) - { - g_strSndAtsDaCfmFst.chFlag = FLAG_SET; - g_strSndAtsDaCfmFst.chTiocId = cAtsSendRcId; - g_strSndAtsDaCfmFst.chStation = cStation; - g_strSndAtsDaCfmFst.wIndex = wIndex; - g_strSndAtsDaCfmFst.dwTime = dwTime; - g_strSndAtsDaCfmFst.chOpStatus = CONFIRM_FIRST_OTHER_DEV_OP; /*վվ*/ - - /*CRC*/ - szCrcTmp[jj] = cAtsId; - jj++; - szCrcTmp[jj] = cStation; - jj++; - ShortToChar(wIndex, &szCrcTmp[jj]); - jj += 2U; - LongToChar(dwTrainHlhtId, &szCrcTmp[jj]); - jj += 4U; - LongToChar(dwTime, &szCrcTmp[jj]); - jj += 4U; - szCrcTmp[jj] = cCmdType; - jj++; - szCrcTmp[jj] = cLineAttr; - jj++; - g_strSndAtsDaCfmFst.dwCrc32 = Tioc_CommonCrc32(szCrcTmp, jj); - } - else + ; /*DO NOTHING*/ + } + if (CI_SUCCESS == chRtn) + { + g_strAtsDaMsgFst.chTiocId = dataBuf[ii++]; /* TIOC */ + if (g_strAtsDaMsgFst.chTiocId == chLocalId) { ; } + else + { + chRtn = CI_ERROR; + } } + else + { + ; /*DO NOTHING*/ + } + if (CI_SUCCESS == chRtn) + { + g_strAtsDaMsgFst.dwDaTrainId = LongFromChar(&dataBuf[ii]); /* ѹгͨ */ + ii += 4u; + if ((0u < g_strAtsDaMsgFst.dwDaTrainId) && (UINT32_MAX > g_strAtsDaMsgFst.dwDaTrainId)) + { + ; + } + else + { + chRtn = CI_ERROR; + } + + } + else + { + ; /*DO NOTHING*/ + } + + if (CI_SUCCESS == chRtn) + { + g_strAtsDaMsgFst.dwTime = LongFromChar(&dataBuf[ii]); /* ·Ϣʱ */ + ii += 4u; + + g_strAtsDaMsgFst.chType = dataBuf[ii];/* */ + ii++; + + if (ATS_DA_CMD_TYPE_CANCEL == g_strAtsDaMsgFst.chType) + { + ; + } + else + { + chRtn = CI_ERROR; + } + } + else + { + ; + } + + if (CI_SUCCESS == chRtn) + { + g_strAtsDaMsgFst.chLine = dataBuf[ii];/* */ + ii++; + if ((DA_AREA_ALL == g_strAtsDaMsgFst.chLine) || (DA_AREA_UP == g_strAtsDaMsgFst.chLine) || (DA_AREA_DOWN == g_strAtsDaMsgFst.chLine)) + { + g_strAtsDaMsgFst.chFlag = FLAG_SET; + } + else + { + chRtn = CI_ERROR; + } + } + else + { + ; + } + break; } case MSG_TYPE_DA_CANCLE_SECOND:/* ѹȡϢ */ @@ -1402,9 +922,8 @@ UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength) if (CI_SUCCESS == chRtn) { g_strAtsDaMsgSnd.chStation = dataBuf[ii++]; /* վ */ - g_strAtsDaMsgSnd.wIndex = ShortFromChar(&dataBuf[ii]); /* վ */ - ii += 2U; - if (0U < g_strAtsDaMsgSnd.wIndex) + g_strAtsDaMsgSnd.chIndex = dataBuf[ii++]; /* վ */ + if (0U < g_strAtsDaMsgSnd.chIndex) { ; } @@ -1553,12 +1072,7 @@ UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength) ClearAtsWlbMsgSecond(); ClearAtsDaMsgFirst(); ClearAtsDaMsgSecond(); - ClearSndAtsScreenFstCfmMsg(); - ClearSndAtsEaFstCfmMsg(); - ClearSndAtsWlbFstCfmMsg(); - ClearSndAtsDaFstCfmMsg(); } - return chRtn; } @@ -1946,8 +1460,7 @@ UINT8 PackTiocToGateWayData(const UINT8 deviceId, const UINT8 targetDevType) szToGateWayDataBuf[ii++] = MSG_TYPE_CONFIRM_FIRST; szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ szToGateWayDataBuf[ii++] = g_strAtsCfmFst.chStation; /* վ */ - ShortToChar(g_strAtsCfmFst.wIndex, &szToGateWayDataBuf[ii]); /* վ */ - ii += 2U; + szToGateWayDataBuf[ii++] = g_strAtsCfmFst.chIndex; /* վ */ LongToChar(g_strAtsCfmFst.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ ii += 4u; szToGateWayDataBuf[ii++] = g_strAtsCfmFst.chOpStatus; /* ȷϽ */ @@ -1968,46 +1481,6 @@ UINT8 PackTiocToGateWayData(const UINT8 deviceId, const UINT8 targetDevType) ; } - if (CI_SUCCESS == chRtn) - { - /*ڶATSԶɸѡ״ȷϢ*/ - if (FLAG_SET == g_strSndAtsCfmFst.chFlag) - { - szToGateWayDataBuf[ii] = MSG_TYPE_CONFIRM_FIRST; /* ֡ */ - ii++; - wMsgLenIndex = ii; /* ¼֡ȴ± */ - ii += 2U; - szToGateWayDataBuf[ii] = MSG_TYPE_CONFIRM_FIRST; - ii++; - szToGateWayDataBuf[ii] = chLocalId; /* TIOC */ - ii++; - szToGateWayDataBuf[ii] = g_strSndAtsCfmFst.chStation; /* վ */ - ii++; - ShortToChar(g_strSndAtsCfmFst.wIndex, &szToGateWayDataBuf[ii]); /* վ */ - ii += 2U; - LongToChar(g_strSndAtsCfmFst.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ - ii += 4U; - szToGateWayDataBuf[ii] = g_strSndAtsCfmFst.chOpStatus; /* ȷϽ */ - ii++; - LongToChar(g_strSndAtsCfmFst.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ - ii += 4U; - wMsgLen = (ii - wMsgLenIndex - 2U); - ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ - chMsgNum++; /* Ϣ */ - - /*ڶATSȷϢ*/ - ClearSndAtsScreenFstCfmMsg(); - } - else - { - ; - } - } - else - { - ; - } - if (CI_SUCCESS == chRtn) { if (FLAG_SET == g_strAtsCfmSnd.chFlag) @@ -2018,8 +1491,7 @@ UINT8 PackTiocToGateWayData(const UINT8 deviceId, const UINT8 targetDevType) szToGateWayDataBuf[ii++] = MSG_TYPE_CONFIRM_SECOND; szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ szToGateWayDataBuf[ii++] = g_strAtsCfmSnd.chStation; /* վ */ - ShortToChar(g_strAtsCfmSnd.wIndex, &szToGateWayDataBuf[ii]); /* վ */ - ii += 2U; + szToGateWayDataBuf[ii++] = g_strAtsCfmSnd.chIndex; /* վ */ LongToChar(g_strAtsCfmSnd.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ ii += 4u; szToGateWayDataBuf[ii++] = g_strAtsCfmSnd.chOpStatus; /* ȷϽ */ @@ -2129,8 +1601,7 @@ UINT8 PackTiocToGateWayData(const UINT8 deviceId, const UINT8 targetDevType) szToGateWayDataBuf[ii++] = MSG_TYPE_EA_CONFIRM_FIRST; szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ szToGateWayDataBuf[ii++] = g_strAtsEaCfmFst.chStation; /* վ */ - ShortToChar(g_strAtsEaCfmFst.wIndex, &szToGateWayDataBuf[ii]); /* վ */ - ii += 2U; + szToGateWayDataBuf[ii++] = g_strAtsEaCfmFst.chIndex; /* վ */ LongToChar(g_strAtsEaCfmFst.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ ii += 4u; szToGateWayDataBuf[ii++] = g_strAtsEaCfmFst.chOpStatus; /* ȷϽ */ @@ -2151,46 +1622,6 @@ UINT8 PackTiocToGateWayData(const UINT8 deviceId, const UINT8 targetDevType) ; } - if (CI_SUCCESS == chRtn) - { - /*ڶATSȡɢ״ȷϢ*/ - if (FLAG_SET == g_strSndAtsEaCfmFst.chFlag) - { - szToGateWayDataBuf[ii] = MSG_TYPE_EA_CONFIRM_FIRST; /* ֡ */ - ii++; - wMsgLenIndex = ii; /* ¼֡ȴ± */ - ii += 2U; - szToGateWayDataBuf[ii] = MSG_TYPE_EA_CONFIRM_FIRST; - ii++; - szToGateWayDataBuf[ii] = chLocalId; /* TIOC */ - ii++; - szToGateWayDataBuf[ii] = g_strSndAtsEaCfmFst.chStation; /* վ */ - ii++; - ShortToChar(g_strSndAtsEaCfmFst.wIndex, &szToGateWayDataBuf[ii]); /* վ */ - ii += 2U; - LongToChar(g_strSndAtsEaCfmFst.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ - ii += 4U; - szToGateWayDataBuf[ii] = g_strSndAtsEaCfmFst.chOpStatus; /* ȷϽ */ - ii++; - LongToChar(g_strSndAtsEaCfmFst.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ - ii += 4U; - wMsgLen = (ii - wMsgLenIndex - 2U); - ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ - chMsgNum++; /* Ϣ */ - - /*ڶATSȷϢ*/ - ClearSndAtsEaFstCfmMsg(); - } - else - { - ; - } - } - else - { - ; - } - if (CI_SUCCESS == chRtn) { if (FLAG_SET == g_strAtsEaCfmSnd.chFlag) @@ -2201,8 +1632,7 @@ UINT8 PackTiocToGateWayData(const UINT8 deviceId, const UINT8 targetDevType) szToGateWayDataBuf[ii++] = MSG_TYPE_EA_CONFIRM_SECOND; szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ szToGateWayDataBuf[ii++] = g_strAtsEaCfmSnd.chStation; /* վ */ - ShortToChar(g_strAtsEaCfmSnd.wIndex, &szToGateWayDataBuf[ii]); /* վ */ - ii += 2U; + szToGateWayDataBuf[ii++] = g_strAtsEaCfmSnd.chIndex; /* վ */ LongToChar(g_strAtsEaCfmSnd.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ ii += 4u; szToGateWayDataBuf[ii++] = g_strAtsEaCfmSnd.chOpStatus; /* ȷϽ */ @@ -2290,8 +1720,8 @@ UINT8 PackTiocToGateWayData(const UINT8 deviceId, const UINT8 targetDevType) szToGateWayDataBuf[ii++] = MSG_TYPE_WLB_CONFIRM_FIRST; szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ szToGateWayDataBuf[ii++] = g_strAtsWlbCfmFst.chStation; /* վ */ - ShortToChar(g_strAtsWlbCfmFst.wIndex, &szToGateWayDataBuf[ii]); /* վ */ - ii += 2U; + szToGateWayDataBuf[ii++] = g_strAtsWlbCfmFst.chIndex; /* վ */ + LongToChar(g_strAtsWlbCfmFst.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ ii += 4u; szToGateWayDataBuf[ii++] = g_strAtsWlbCfmFst.chOpStatus; /* ȷϽ */ @@ -2312,46 +1742,6 @@ UINT8 PackTiocToGateWayData(const UINT8 deviceId, const UINT8 targetDevType) ; } - if (CI_SUCCESS == chRtn) - { - /*ڶATSȫ߽ƶ״ȷϢ*/ - if (FLAG_SET == g_strSndAtsWlbCfmFst.chFlag) - { - szToGateWayDataBuf[ii] = MSG_TYPE_WLB_CONFIRM_FIRST; /* ֡ */ - ii++; - wMsgLenIndex = ii; /* ¼֡ȴ± */ - ii += 2U; - szToGateWayDataBuf[ii] = MSG_TYPE_WLB_CONFIRM_FIRST; - ii++; - szToGateWayDataBuf[ii] = chLocalId; /* TIOC */ - ii++; - szToGateWayDataBuf[ii] = g_strSndAtsWlbCfmFst.chStation; /* վ */ - ii++; - ShortToChar(g_strSndAtsWlbCfmFst.wIndex, &szToGateWayDataBuf[ii]); /* վ */ - ii += 2U; - LongToChar(g_strSndAtsWlbCfmFst.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ - ii += 4U; - szToGateWayDataBuf[ii] = g_strSndAtsWlbCfmFst.chOpStatus; /* ȷϽ */ - ii++; - LongToChar(g_strSndAtsWlbCfmFst.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ - ii += 4U; - wMsgLen = (ii - wMsgLenIndex - 2U); - ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ - chMsgNum++; /* Ϣ */ - - /*ڶATSȷϢ*/ - ClearSndAtsWlbFstCfmMsg(); - } - else - { - ; - } - } - else - { - ; - } - if (CI_SUCCESS == chRtn) { if (FLAG_SET == g_strAtsWlbCfmSnd.chFlag) @@ -2362,8 +1752,8 @@ UINT8 PackTiocToGateWayData(const UINT8 deviceId, const UINT8 targetDevType) szToGateWayDataBuf[ii++] = MSG_TYPE_WLB_CONFIRM_SECOND; szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ szToGateWayDataBuf[ii++] = g_strAtsWlbCfmSnd.chStation; /* վ */ - ShortToChar(g_strAtsWlbCfmSnd.wIndex, &szToGateWayDataBuf[ii]); /* վ */ - ii += 2U; + szToGateWayDataBuf[ii++] = g_strAtsWlbCfmSnd.chIndex; /* վ */ + LongToChar(g_strAtsWlbCfmSnd.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ ii += 4u; szToGateWayDataBuf[ii++] = g_strAtsWlbCfmSnd.chOpStatus; /* ȷϽ */ @@ -2469,8 +1859,7 @@ UINT8 PackTiocToGateWayData(const UINT8 deviceId, const UINT8 targetDevType) szToGateWayDataBuf[ii++] = MSG_TYPE_DA_CONFIRM_FIRST; szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ szToGateWayDataBuf[ii++] = g_strAtsDaCfmFst.chStation; /* վ */ - ShortToChar(g_strAtsDaCfmFst.wIndex, &szToGateWayDataBuf[ii]); /* վ */ - ii += 2U; + szToGateWayDataBuf[ii++] = g_strAtsDaCfmFst.chIndex; /* վ */ LongToChar(g_strAtsDaCfmFst.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ ii += 4u; szToGateWayDataBuf[ii++] = g_strAtsDaCfmFst.chOpStatus; /* ȷϽ */ @@ -2491,46 +1880,6 @@ UINT8 PackTiocToGateWayData(const UINT8 deviceId, const UINT8 targetDevType) ; } - if (CI_SUCCESS == chRtn) - { - /*ڶATSȡ״ȷϢ*/ - if (FLAG_SET == g_strSndAtsDaCfmFst.chFlag) - { - szToGateWayDataBuf[ii] = MSG_TYPE_DA_CONFIRM_FIRST; /* ֡ */ - ii++; - wMsgLenIndex = ii; /* ¼֡ȴ± */ - ii += 2U; - szToGateWayDataBuf[ii] = MSG_TYPE_DA_CONFIRM_FIRST; - ii++; - szToGateWayDataBuf[ii] = chLocalId; /* TIOC */ - ii++; - szToGateWayDataBuf[ii] = g_strSndAtsDaCfmFst.chStation; /* վ */ - ii++; - ShortToChar(g_strSndAtsDaCfmFst.wIndex, &szToGateWayDataBuf[ii]); /* վ */ - ii += 2U; - LongToChar(g_strSndAtsDaCfmFst.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ - ii += 4U; - szToGateWayDataBuf[ii] = g_strSndAtsDaCfmFst.chOpStatus; /* ȷϽ */ - ii++; - LongToChar(g_strSndAtsDaCfmFst.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ - ii += 4U; - wMsgLen = (ii - wMsgLenIndex - 2U); - ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ - chMsgNum++; /* Ϣ */ - - /*ڶATSȷϢ*/ - ClearSndAtsDaFstCfmMsg(); - } - else - { - ; - } - } - else - { - ; - } - if (CI_SUCCESS == chRtn) { if (FLAG_SET == g_strAtsDaCfmSnd.chFlag) @@ -2541,8 +1890,7 @@ UINT8 PackTiocToGateWayData(const UINT8 deviceId, const UINT8 targetDevType) szToGateWayDataBuf[ii++] = MSG_TYPE_DA_CONFIRM_SECOND; szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ szToGateWayDataBuf[ii++] = g_strAtsDaCfmSnd.chStation; /* վ */ - ShortToChar(g_strAtsDaCfmSnd.wIndex, &szToGateWayDataBuf[ii]); /* վ */ - ii += 2U; + szToGateWayDataBuf[ii++] = g_strAtsDaCfmSnd.chIndex; /* վ */ LongToChar(g_strAtsDaCfmSnd.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ ii += 4u; szToGateWayDataBuf[ii++] = g_strAtsDaCfmSnd.chOpStatus; /* ȷϽ */ @@ -2733,48 +2081,4 @@ UINT8 WlbUrgentIdCheck(const UINT8 cDeviceType, const UINT16 wDeviceId) } return retVal; -} - -/** -* @brief ڶATSԶɸѡһȷϢ -* @param -* @return -* @note Created By LQ 2025.05.29 -*/ -void ClearSndAtsScreenFstCfmMsg(void) -{ - (void)CommonMemSet((void*)&g_strSndAtsCfmFst, (UINT32)sizeof(AtsMsgCfmStru), (UINT8)0U, (UINT32)sizeof(AtsMsgCfmStru)); -} - -/** -* @brief ڶATSȡɢһȷϢ -* @param -* @return -* @note Created By LQ 2025.05.29 -*/ -void ClearSndAtsEaFstCfmMsg(void) -{ - (void)CommonMemSet((void*)&g_strSndAtsEaCfmFst, (UINT32)sizeof(AtsMsgCfmStru), (UINT8)0U, (UINT32)sizeof(AtsMsgCfmStru)); -} - -/** -* @brief ڶATSȫ߽ƶһȷϢ -* @param -* @return -* @note Created By LQ 2025.05.29 -*/ -void ClearSndAtsWlbFstCfmMsg(void) -{ - (void)CommonMemSet((void*)&g_strSndAtsWlbCfmFst, (UINT32)sizeof(AtsMsgCfmStru), (UINT8)0U, (UINT32)sizeof(AtsMsgCfmStru)); -} - -/** -* @brief ڶATSȡѹһȷϢ -* @param -* @return -* @note Created By LQ 2025.05.29 -*/ -void ClearSndAtsDaFstCfmMsg(void) -{ - (void)CommonMemSet((void*)&g_strSndAtsDaCfmFst, (UINT32)sizeof(AtsMsgCfmStru), (UINT8)0U, (UINT32)sizeof(AtsMsgCfmStru)); } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackGateWayData.h b/TSCP/src/APP/ciapp/ParsePack/ParsePackGateWayData.h index 3ab0acb..4825614 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackGateWayData.h +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackGateWayData.h @@ -33,24 +33,22 @@ #define CONFIRM_FIRST_REPEAT ((UINT8)2u) /*ظȷ*/ #define CONFIRM_FIRST_TRAINID ((UINT8)3u) /*ˢг*/ #define CONFIRM_FIRST_LGCID ((UINT8)4u) /*ȷ߼*/ -#define CONFIRM_FIRST_OTHER_DEV_OP ((UINT8)14U) /*վڲ*/ #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_LGCID ((UINT8)4u) /*ȷ߼*/ #define CONFIRM_SECOND_FIRST ((UINT8)5u) /*״ɸѡȷʧ*/ #define CONFIRM_SECOND_DIFF ((UINT8)6u) /*Ϣһβһ*/ #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_SECOND_NOT_EA ((UINT8)5u) /*гδɢ*/ #define CONFIRM_SECOND_EA_TRAINID ((UINT8)8u) /*״гŲһ*/ #define CONFIRM_SECOND_TIOC ((UINT8)10u) /*ڿͨж*/ #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_CANCEL ((UINT8)0x55u) /*ȫгƶȡ*/ @@ -65,9 +63,8 @@ #define CONFIRM_WLB_SND_UNKNOWN ((UINT8)0u) /*λظδ֪*/ #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_INFO_DIFF ((UINT8)8u) /*һϢһ*/ #define CONFIRM_DA_FST_UNKNOWN ((UINT8)0u) /*ȡѹ״λظδ֪*/ #define CONFIRM_DA_FST_SUCCESS ((UINT8)1u) /*ȡѹ״λظɹ*/ @@ -76,11 +73,10 @@ #define CONFIRM_DA_SND_UNKNOWN ((UINT8)0u) /*ȡѹٴλظδ֪*/ #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_DIFF ((UINT8)8u) /*ȡѹٴλظгIDһβһ*/ #define CONFIRM_DA_SND_DERAIL ((UINT8)9u) /*ȡѹٴλظгǰѹ״̬*/ -#define CONFIRM_DA_SND_LINE_DIFF ((UINT8)11U) /*ȡѹһ·Բһ*/ #define DA_AREA_UP ((UINT8)0x55u) /* */ #define DA_AREA_DOWN ((UINT8)0xaau) /* */ @@ -114,7 +110,7 @@ typedef struct UINT32 dwCycle; /*״Ϣں*/ UINT8 chAtsId; /*ATS*/ UINT8 chStation; /*վ*/ - UINT16 wIndex; /*վ*/ + UINT8 chIndex; /*վ*/ UINT8 chTiocId; /*TIOC*/ UINT32 dwTime; /*ʱ*/ UINT8 chTrainNum; /*г*/ @@ -127,7 +123,7 @@ typedef struct UINT8 chFlag; /*ϢЧ*/ UINT8 chTiocId; /*TIOC*/ UINT8 chStation; /*վ*/ - UINT16 wIndex; /*վ*/ + UINT8 chIndex; /*վ*/ UINT32 dwTime; /*ʱ*/ UINT8 chOpStatus; /**/ UINT32 dwCrc32; /*CRC*/ @@ -140,7 +136,7 @@ typedef struct UINT32 dwCycle; /*״Ϣں*/ UINT8 chAtsId; /*ATS*/ UINT8 chStation; /*վ*/ - UINT16 wIndex; /*վ*/ + UINT8 chIndex; /*վ*/ UINT8 chTiocId; /*TIOC*/ UINT32 dwTime; /*ʱ*/ UINT8 chTrainNum; /*г*/ @@ -155,7 +151,7 @@ typedef struct UINT32 dwCycle; /*Ϣں*/ UINT8 chAtsId; /*ATS*/ UINT8 chStation; /*վ*/ - UINT16 wIndex; /*վ*/ + UINT8 chIndex; /*վ*/ UINT8 chTiocId; /*TIOC*/ UINT32 dwEaTrainId; /*гͨ*/ UINT32 dwTime; /*ʱ*/ @@ -171,7 +167,7 @@ typedef struct UINT32 dwCycle; /*Ϣں*/ UINT8 chAtsId; /*ATS*/ UINT8 chStation; /*վ*/ - UINT16 wIndex; /*վ*/ + UINT8 chIndex; /*վ*/ UINT8 chTiocId; /*TIOC*/ UINT32 dwTime; /*ʱ*/ UINT8 chType; /*/ȡ*/ @@ -188,7 +184,7 @@ typedef struct UINT32 dwCycle; /*Ϣں*/ UINT8 chAtsId; /*ATS*/ UINT8 chStation; /*վ*/ - UINT16 wIndex; /*վ*/ + UINT8 chIndex; /*վ*/ UINT8 chTiocId; /*TIOC*/ UINT32 dwDaTrainId; /*гͨ*/ UINT32 dwTime; /*ʱ*/ @@ -218,11 +214,6 @@ extern AtsMsgCfmStru g_strAtsDaCfmFst; extern AtsDaMsgStru g_strAtsDaMsgSnd; extern AtsMsgCfmStru g_strAtsDaCfmSnd; -extern AtsMsgCfmStru g_strSndAtsCfmFst; /*ڶATSԶɸѡ״ȷ*/ -extern AtsMsgCfmStru g_strSndAtsEaCfmFst; /*ڶATSȡɢ״ȷ*/ -extern AtsMsgCfmStru g_strSndAtsWlbCfmFst; /*ڶATS/ȡȫгƶ״ȷ*/ -extern AtsMsgCfmStru g_strSndAtsDaCfmFst; /*ڶATSȡѹ״ȷ*/ - /** * @brief ȡԶɸѡATS״Ϣ @@ -417,36 +408,4 @@ void ClearAtsDaMsgSecond(void); */ 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); - #endif \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackITEData.c b/TSCP/src/APP/ciapp/ParsePack/ParsePackITEData.c index cccfbee..de46f75 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackITEData.c +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackITEData.c @@ -68,24 +68,24 @@ UINT8 ParseIteToCiData(const UINT8* dataBuf, const UINT16 dataLength, const UINT UINT8 ii = 0U; UINT8 retVal = CI_ERROR; UINT8 cGalHeadSavedFlag = CI_ERROR; - IteToCiDataStruct parseCheckIte = { 0 }; - UINT8 chFind = CI_ERROR; if (IteToCiSum < ITE_TO_CI_SUM_MAX) { - retVal = ParseIteToCiDataFrame(dataBuf, dataLength, systemId, &parseCheckIte, &cGalHeadSavedFlag, logId); + (void)CommonMemSet(&(IteToCiDataStru[IteToCiSum]), (UINT32)sizeof(IteToCiDataStruct), 0U, (UINT32)sizeof(IteToCiDataStruct)); /*ڴ棬ֹ*/ + + retVal = ParseIteToCiDataFrame(dataBuf, dataLength, systemId, &(IteToCiDataStru[IteToCiSum]), &cGalHeadSavedFlag, logId); if (CI_SUCCESS == retVal) { + IteToCiSum++; /*ͨŵITEITEͨŽṹǷѴڵǰITE*/ - for (ii = 0u; ii < IteToCiSum; ii++) + for (ii = 0u; ii < (IteToCiSum - 1U); ii++) { - if ((IteToCiDataStru[ii].wIteId == parseCheckIte.wIteId) && (IteToCiDataStru[ii].wIteLogId == parseCheckIte.wIteLogId)) + if ((IteToCiDataStru[ii].wIteId == IteToCiDataStru[IteToCiSum - 1U].wIteId) && (IteToCiDataStru[ii].wIteLogId == IteToCiDataStru[IteToCiSum - 1U].wIteLogId)) { /*ĿITEѴͨŽṹУݿ֮ǰ洢ĵַ*/ - (void)CommonMemSet(&(IteToCiDataStru[ii]), (UINT32)sizeof(IteToCiDataStruct), 0U, (UINT32)sizeof(IteToCiDataStruct)); /*ڴ棬ֹ*/ - (void)CommonMemCpy(&(IteToCiDataStru[ii]), (UINT32)sizeof(IteToCiDataStruct), &parseCheckIte, (UINT32)sizeof(IteToCiDataStruct)); - chFind = CI_SUCCESS; + (void)CommonMemCpy(&(IteToCiDataStru[ii]), (UINT32)sizeof(IteToCiDataStruct), &(IteToCiDataStru[IteToCiSum - 1U]), (UINT32)sizeof(IteToCiDataStruct)); + IteToCiSum--; break; } else @@ -93,16 +93,6 @@ UINT8 ParseIteToCiData(const UINT8* dataBuf, const UINT16 dataLength, const UINT /**/ } } - if (CI_ERROR == chFind) - { - /*δҵ ½ͨ д洢*/ - (void)CommonMemCpy(&(IteToCiDataStru[IteToCiSum]), (UINT32)sizeof(IteToCiDataStruct), &parseCheckIte, (UINT32)sizeof(IteToCiDataStruct)); - IteToCiSum++; - } - else - { - ; /*Ѵڲ*/ - } } else { diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackManage.c b/TSCP/src/APP/ciapp/ParsePack/ParsePackManage.c index 64c9048..828e6b0 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackManage.c +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackManage.c @@ -237,7 +237,11 @@ UINT8 ParseOtherSysToCiData(void) if (ocId == chLocalCiId)/*oc idci idΪid*/ { oc2ciParseResult = ParseOcToCiDataFrame(data, (UINT16)dataLen, devId); - if (CI_CHECK_LEN_ERROR == oc2ciParseResult) + if (CI_ERROR == oc2ciParseResult) + { + /*OCݴѾ10ڣͨжϣȫ*/ + } + else if (CI_CHECK_LEN_ERROR == oc2ciParseResult) { /*УѴOCԭʼ豸״̬ȫ*/ /* Уʧܴ @@ -257,11 +261,7 @@ UINT8 ParseOtherSysToCiData(void) } else { - /*ֵ*/ - ResetOcOriginalState(devId); - ConvertOcOriginDataToPtData();/*ѽOC忨תΪOCλ*/ - ConvertOcOriginDataToOcSigSwDev();/*ѽOC豸תΪOC źŻ OC 豸ݺOC*/ - debug_infor_printf((const)"OC Id %d parse ERROR.", devId); + /*ֵʲôҲ*/ } } else @@ -1008,18 +1008,11 @@ UINT8 PackCiToOtherSysData(void) ; /*do nothing*/ } } - else - { - /**/ - } - - /*ɳؿر*/ - PackCiToVobcFlyProtectData(); - #ifdef APPCI_MAINTAIN_DEBUG #ifdef PLATFORM_2OO2 /*cgh-ϲCID-2349-1*/ /*͸ά豸ͨ״̬*/ + debug_infor_printf((const)"\nCIM_SEND_COMM\n"); PackCiToCimCommData(); /*͸άźŻ˿״̬*/ debug_infor_printf((const)"\nCIM_SEND_DS\n"); @@ -1038,8 +1031,6 @@ UINT8 PackCiToOtherSysData(void) PackCiToCimDeviceData(); /*άɳ*/ PackCiToCimFlyProtectData(); - /*άIO˫ϵɼһ±*/ - PackCiToCimCollDiffData(); /*͸AIM˳ӪϢ*/ AIMOutput(); /*͸άִеԪϢ*/ diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackOcData.c b/TSCP/src/APP/ciapp/ParsePack/ParsePackOcData.c index e9a37f7..cc2ff0d 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackOcData.c +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackOcData.c @@ -93,7 +93,6 @@ UINT16 ConvertSigDrvColorToSigDrvCmd(const UINT16 signalId, const UINT8 drvColor UINT16 retDrvCmd = 0u; UINT8 ocHasBlue = 0u; UINT8 funSwitchGreenYellow = GetCiFunctionSwitchConfig(CI_FUNCTION_SWITCH_SHOW_SIGNAL_GreenYellow);/*ʾ̻ƹܿǷ*/ - UINT8 funSwitchALLCloseUseBlue = GetCiFunctionSwitchConfig(FUNC_SWITCH_ZX_ALLCLOSE_USEBLUE);/*ƾתƹܿ*/ UINT8 ciType = GetLocalCiType(); switch (drvColor) { @@ -119,7 +118,7 @@ UINT16 ConvertSigDrvColorToSigDrvCmd(const UINT16 signalId, const UINT8 drvColor retDrvCmd = OC_SIGNAL_DRIVECOLOR_GREEN; break; case SIGNAL_DRIVECOLOUR_YELLOWCLOSE:/**/ - if ((FUNC_SWITCH_ON == funSwitchGreenYellow)||(FUNC_SWITCH_ON == funSwitchALLCloseUseBlue)) + if (FUNC_SWITCH_ON == funSwitchGreenYellow) { retDrvCmd = OC_SIGNAL_DRIVECOLOR_BLUE; } @@ -129,17 +128,10 @@ UINT16 ConvertSigDrvColorToSigDrvCmd(const UINT16 signalId, const UINT8 drvColor } break; case SIGNAL_DRIVECOLOUR_REDCLOSE:/**/ - if (FUNC_SWITCH_ON == funSwitchALLCloseUseBlue) - { - retDrvCmd = OC_SIGNAL_DRIVECOLOR_BLUE;/*º*/ - } - else - { - retDrvCmd = OC_SIGNAL_DRIVECOLOR_CLOSE; - } + retDrvCmd = OC_SIGNAL_DRIVECOLOR_CLOSE; break; case SIGNAL_DRIVECOLOUR_GREENCLOSE:/**/ - if ((FUNC_SWITCH_ON == funSwitchGreenYellow) || (FUNC_SWITCH_ON == funSwitchALLCloseUseBlue)) + if (FUNC_SWITCH_ON == funSwitchGreenYellow) { retDrvCmd = OC_SIGNAL_DRIVECOLOR_BLUE; } @@ -248,8 +240,6 @@ UINT8 PackCiToOcData( UINT8 deviceId) UINT16 OcDevName = 0U; /*OCƣ+ID*/ UINT8 chSwitch = GetCiFunctionSwitchConfig(FUNC_OC_100_OR_200); UINT8 chLocalOcType = GetLocalOcPattern(); /*OC*/ - UINT16 deviceSum = 0u; - UINT16 kqChangeCommand = 0u;/*Ȩл*/ #if 0 QueueClear(CiToOcDataQueue); /**/ #endif @@ -303,16 +293,7 @@ UINT8 PackCiToOcData( UINT8 deviceId) ii += 2u; ii += 2u;/*Ԥ2ֽ*/ - if (OC_HAVE_YJK == pOcData->chHaveYjk) - { - deviceSum = pOcData->OcDeviceNum + 1u; /*豸+Ȩл*/ - } - else - { - deviceSum = pOcData->OcDeviceNum; - } - - ShortToChar(deviceSum, &Ci2OcDataBuffer[ii]);/*豸*/ + ShortToChar(pOcData->OcDeviceNum, &Ci2OcDataBuffer[ii]);/*豸*/ ii += 2u; for (kk = 0u; kk < pOcData->OcDeviceNum; kk++)/*豸*/ { @@ -355,21 +336,6 @@ UINT8 PackCiToOcData( UINT8 deviceId) } } }/*Ϊoc豸*/ - - if (OC_HAVE_YJK == pOcData->chHaveYjk) - { - Ci2OcDataBuffer[ii++] = CI_SYSTEM_TYPE_OC;/*Ȩл*/ - ShortToChar(pOcData->OcId, &Ci2OcDataBuffer[ii]);/*豸ID*/ - ii += 2u; - - kqChangeCommand = GetKqChangeCommand(); - ShortToChar(kqChangeCommand, &Ci2OcDataBuffer[ii]);/*Ȩл*/ - ii += 2u; - } - else - {/**/ - } - pBoardNumStartIndex = ii;/*ֵ*/ ii += 2u;/*ֵ*/ @@ -612,7 +578,7 @@ UINT8 PackCiToOcData( UINT8 deviceId) (void)CommonMemCpy(&Ci2OcDataBuffer[ii], OC_TO_CI_DATA_LEN_MAX-ii, ciSiToOc, ciSiToOcIdx); ii += ciSiToOcIdx; - if ((FUNC_SWITCH_ON == chSwitch)&&(DATA_TYPE_NEW == chLocalOcType)) + if ((FUNC_SWITCH_ON == chSwitch)&&(OC_DATA_TYPE_NEW == chLocalOcType)) { /*OC200 ݽṹ25ϲ֧SOR*/ Ci2OcDataBuffer[ii] = sorBoardNum; @@ -639,7 +605,7 @@ UINT8 PackCiToOcData( UINT8 deviceId) } #endif /*OC100OCݽṹ24 ӿڱԤ20ֽ*/ - if ((FUNC_SWITCH_OFF == chSwitch) || (DATA_TYPE_OLD == chLocalOcType)) + if ((FUNC_SWITCH_OFF == chSwitch) || (OC_DATA_TYPE_OLD == chLocalOcType)) { Ci2OcDataBuffer[ii++] = 0xffu; Ci2OcDataBuffer[ii++] = 0xffu; @@ -730,7 +696,6 @@ UINT8 CheckOc2CiDataLenValid(const UINT8* dataBuf, const UINT16 totalLength) UINT8 sorBoardNumber = 0u;/*SOR忨*/ UINT16 SwapBoardNumber = 0U;/*ϵ忨*/ UINT8 chPbNumber = 0u; /*ִе*/ - UINT8 chPsdNumber = 0u; /**/ UINT16 upToGDNumber = 0u; UINT16 upToDIBoardNumber = 0u; @@ -740,10 +705,8 @@ UINT8 CheckOc2CiDataLenValid(const UINT8* dataBuf, const UINT16 totalLength) UINT16 upToSORBoardNumber = 0u; UINT16 upToPbNumer = 0u;/*ִеݸ*/ UINT16 upToSwapSysBoardNumber = 0U; - UINT16 upToPsdNumber = 0U; UINT16 tmpTotalLen = 0u;/*ʱܳ*/ UINT8 chSwitch = 0u; - UINT8 ocInterfaceFlag = 0u;/*OCӿڱʶ*/ UINT8 ii = 0U;/*豸ѭ*/ UINT16 wDevInfoIndex = LEN_OC_UP_TO_DEV_NO-1U;/*ת޻ oc200ʹ*/ UINT16 wZzjStateNumber = 0U;/*ת޻״̬ռֽ*/ @@ -754,7 +717,6 @@ UINT8 CheckOc2CiDataLenValid(const UINT8* dataBuf, const UINT16 totalLength) { retVal = CI_SUCCESS; chSwitch = GetCiFunctionSwitchConfig(FUNC_OC_100_OR_200); - ocInterfaceFlag = GetCiFunctionSwitchConfig(FUNC_OC_INTERFACE_CONF); if (totalLength < LEN_OC_UP_TO_DEV_NO) {/*УOCݴӿʼ豸ֹ豸*/ retVal = CI_CHECK_LEN_ERROR; @@ -772,7 +734,7 @@ UINT8 CheckOc2CiDataLenValid(const UINT8* dataBuf, const UINT16 totalLength) if (CI_SUCCESS == retVal) {/*УOCݴӿͷݽֹ*/ - if (DATA_TYPE_NEW == chLocalOcType) + if (OC_DATA_TYPE_NEW == chLocalOcType) { /*ݳ*/ switchNum = dataBuf[LEN_OC_UP_TO_DEV_NO - 2U]; @@ -797,8 +759,8 @@ UINT8 CheckOc2CiDataLenValid(const UINT8* dataBuf, const UINT16 totalLength) for (ii = 0U; ii < devNumber; ii++) { wSwitchIncludeZzjIndex += 4U; - wZzjStateNumber = wZzjStateNumber +(UINT16)(dataBuf[wSwitchIncludeZzjIndex] * 1U); - wSwitchIncludeZzjIndex += 1U + (UINT16)(dataBuf[wSwitchIncludeZzjIndex] * 1U) + 4U; + wZzjStateNumber = wZzjStateNumber + (dataBuf[wSwitchIncludeZzjIndex] * 1U); + wSwitchIncludeZzjIndex += 1U + dataBuf[wSwitchIncludeZzjIndex] * 1U + 4U; } upToGDNumber = LEN_OC_UP_TO_GD_NO_200_2(devNumber, wZzjStateNumber); wDevInfoIndex = upToGDNumber; @@ -870,7 +832,7 @@ UINT8 CheckOc2CiDataLenValid(const UINT8* dataBuf, const UINT16 totalLength) soBoardNumber = ShortFromChar(&dataBuf[upToSOBoardNumber - 2U]); } } - if (DATA_TYPE_NEW == chLocalOcType) + if (OC_DATA_TYPE_NEW == chLocalOcType) { wOffSet = 0U; if (CI_SUCCESS == retVal) @@ -910,7 +872,7 @@ UINT8 CheckOc2CiDataLenValid(const UINT8* dataBuf, const UINT16 totalLength) if (CI_SUCCESS == retVal) {/*УOCݴӿͷϵ忨ݽֹϵ忨*/ - upToSwapSysBoardNumber = LEN_OC_UP_TO_SWAPSYSBOARD_NO_200(wDevInfoIndex, gdBoardNumber, diBoardNumber, doBoardNumber, siBoardNumber, soBoardNumber, (UINT16)sorBoardNumber, (UINT16)chPbNumber); + upToSwapSysBoardNumber = LEN_OC_UP_TO_SWAPSYSBOARD_NO_200(wDevInfoIndex, gdBoardNumber, diBoardNumber, doBoardNumber, siBoardNumber, soBoardNumber, (UINT16)sorBoardNumber, chPbNumber); upToSwapSysBoardNumber -= wOffSet; if (totalLength < upToSwapSysBoardNumber) { @@ -924,87 +886,18 @@ UINT8 CheckOc2CiDataLenValid(const UINT8* dataBuf, const UINT16 totalLength) } if (CI_SUCCESS == retVal) - {/*УOCݴӿͷݽ*/ - upToPsdNumber = LEN_OC_UP_TO_END_200(wDevInfoIndex, gdBoardNumber, diBoardNumber, doBoardNumber, siBoardNumber, soBoardNumber, (UINT16)sorBoardNumber, (UINT16)chPbNumber, SwapBoardNumber); - upToPsdNumber -= wOffSet; - if (totalLength < upToPsdNumber) + {/*Уݳ*/ + tmpTotalLen = LEN_OC_UP_TO_END_200(wDevInfoIndex, gdBoardNumber, diBoardNumber, doBoardNumber, siBoardNumber, soBoardNumber, (UINT16)sorBoardNumber, chPbNumber, SwapBoardNumber); + tmpTotalLen -= wOffSet; + if (totalLength == tmpTotalLen) { - retVal = CI_CHECK_LEN_ERROR; - } - else if (totalLength == upToPsdNumber) - {/*Ѿȣû*/ - if (CI_SUCCESS == retVal) - {/*Уݳ*/ - tmpTotalLen = LEN_OC_UP_TO_END_200(wDevInfoIndex, gdBoardNumber, diBoardNumber, doBoardNumber, siBoardNumber, soBoardNumber, (UINT16)sorBoardNumber, (UINT16)chPbNumber, SwapBoardNumber); - tmpTotalLen -= wOffSet; - if (totalLength == tmpTotalLen) - { - retVal = CI_SUCCESS; - } - else - { - retVal = CI_CHECK_LEN_ERROR; - } - } + retVal = CI_SUCCESS; } else { - /*滹ݣOC-200 3.3OC-300 1.0.1*/ - if (OC200_VER3_2_AFTER == ocInterfaceFlag) - {/*OC-200 3.2֮İ汾Ӧ*/ - if (OC_HAVE_YJK == dataBuf[upToPsdNumber]) - {/*߱Ӧ*/ - tmpTotalLen = upToPsdNumber + 3u; - } - else - {/*߱Ӧ*/ - tmpTotalLen = upToPsdNumber + 1u; - } - - if (totalLength == tmpTotalLen) - { - retVal = CI_SUCCESS; - } - else - { - retVal = CI_CHECK_LEN_ERROR; - } - } - else if (OC300_VER1_0_1_ANDAFTER == ocInterfaceFlag) - {/*OC-300 1.0.1֮İ汾ݺӦ*/ - chPsdNumber = dataBuf[upToPsdNumber]; - - if (CI_SUCCESS == retVal) - {/*Уݳ*/ - tmpTotalLen = LEN_OC_UP_TO_END_300(wDevInfoIndex, gdBoardNumber, diBoardNumber, doBoardNumber, siBoardNumber, soBoardNumber, (UINT16)sorBoardNumber, (UINT16)chPbNumber, SwapBoardNumber, (UINT16)chPsdNumber); - tmpTotalLen -= wOffSet; - - /*Ӧһ*/ - if (OC_HAVE_YJK == dataBuf[tmpTotalLen]) - {/*߱Ӧ*/ - tmpTotalLen += 3u; - } - else - {/*߱Ӧ*/ - tmpTotalLen += 1u; - } - - if (totalLength == tmpTotalLen) - { - retVal = CI_SUCCESS; - } - else - { - retVal = CI_CHECK_LEN_ERROR; - } - } - } - else - { - } + retVal = CI_CHECK_LEN_ERROR; } } - } else if (FUNC_SWITCH_OFF == chSwitch) { @@ -1192,24 +1085,6 @@ void ResetOcOriginalState(const UINT8 ocId) pDIBoard->BoardCollData[jj] = 0xaau;/*SOR忨̵ȫ*/ } } - - SetOcToCiDefaultDataStru(toFindIndex);/*ϢΪȫ*/ - - m_OcToCiOrginDataArr[toFindIndex].PowerAState = (UINT8)0xff; - m_OcToCiOrginDataArr[toFindIndex].PowerBState = (UINT8)0xff; - m_OcToCiOrginDataArr[toFindIndex].OCDevFaultState = (UINT8)0xff; - m_OcToCiOrginDataArr[toFindIndex].FanState = (UINT8)0xff; - - for (ii = 0u; ii < m_OcToCiOrginDataArr[toFindIndex].OCBoardSwapSysNum; ii++) - { - m_OcToCiOrginDataArr[toFindIndex].SwapSysBoardId[ii] = 0U; - } - m_OcToCiOrginDataArr[toFindIndex].OCBoardSwapSysNum = 0U; - - CommonMemSet(m_OcToCiOrginDataArr[toFindIndex].szPlusBox, (UINT32)(MAX_OC_PLUS_BOX_NUM)*(sizeof(OcPlusBox)), 0U, (UINT32)(MAX_OC_PLUS_BOX_NUM*(sizeof(OcPlusBox)))); - m_OcToCiOrginDataArr[toFindIndex].chPbNum = 0U; - - SetAllCleFarePCBButKeepSta(m_OcToCiOrginDataArr[toFindIndex].OcId, QK_PSD_BUTTON_STATE_UP); } } @@ -1257,17 +1132,11 @@ UINT8 ParseOcToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength,const U UINT16 tmpGdId = 0u;/*ʱʱId*/ UINT16 curBoardNum = 0u; /*ǰ*/ UINT16 curBoardSwapSysNum = 0U;/*ϵ忨*/ - UINT8 curPsdNum = 0u; /*PSD*/ - UINT32 psdId = 0u; /*PSD */ - UINT16 psdIndexId = 0u; /*PSD ID*/ - UINT8 funcRet = 0u; /*PSDŲѯidֵ*/ - UINT32 galOcDataVer = 0U; UINT8 chPbIndex = 0u; UINT8 chSwitch = 0u; UINT8 chZzjStateIndex = 0u;/*Ӧת޻״̬*/ UINT8 chOcType = GetLocalOcPattern(); /*ȡOCݽṹ*/ - UINT8 ocInterfaceFlag = 0u; /*OCӿڱʶ*/ for (j=0u;jOcId = systemId; /*oc idֵ*/ + pTmpOcToCiData->ComStartCycle = Get2oo2CurCycleNum();/*յOCʱͨſʼ*/ + + debug_infor_printf((const)"\nId:%d OC_COM:%d\n",pTmpOcToCiData->OcId,pTmpOcToCiData->ComStartCycle); + if (OC_CI_STATE_INFO == appInfoType)/*OCCI״̬Ϣ 0x8802*/ { /*by cgh 20230831 ת޻״̬ӿ*/ /*fan 20241120 4ǣ OC3.0 ӿ ֧OCݽṹнݽṹ*/ - if ((FUNC_SWITCH_ON == chSwitch)&&(DATA_TYPE_NEW == chOcType)) + if ((FUNC_SWITCH_ON == chSwitch)&&(OC_DATA_TYPE_NEW == chOcType)) { /*************豸[]***********/ tmpDeviceType = CI_DEVICE_TYPE_SWITCH; @@ -1696,7 +1568,7 @@ UINT8 ParseOcToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength,const U } /*************SOR忨 OC-200ҽOC***********/ - if ((CI_SUCCESS == retVal) && (FUNC_SWITCH_ON == chSwitch)&& (DATA_TYPE_NEW == chOcType)) + if ((CI_SUCCESS == retVal) && (FUNC_SWITCH_ON == chSwitch)&& (OC_DATA_TYPE_NEW == chOcType)) { pTmpOcToCiData->OcSORBoardNum = dataBuf[ii++];/*Sor忨*/ if (MAX_OC_SOR_BOARD_NUM >= pTmpOcToCiData->OcSORBoardNum) @@ -1787,121 +1659,6 @@ UINT8 ParseOcToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength,const U debug_infor_printf((const)"OcSwapSysBoardNum'index %d exceed macro %d.\n", curBoardSwapSysNum, MAX_OC_DEVICE_NUM); } } - - if (OC200_VER3_2 == ocInterfaceFlag) - {/*OC200 3.2,Ӧ*/ - /**/ - } - else if (OC200_VER3_2_AFTER == ocInterfaceFlag) - {/*OC200 3.2֮İ汾ֻӦ*/ - /*************OCӦ״̬Ϣ***********/ - if (CI_SUCCESS == retVal) - { - pTmpOcToCiData->chHaveYjk = dataBuf[ii++]; - if (OC_HAVE_YJK == pTmpOcToCiData->chHaveYjk) - {/*߱Ӧ*/ - pTmpOcToCiData->chControlMode = dataBuf[ii++]; - pTmpOcToCiData->chOcYjpComm = dataBuf[ii++]; - } - else - {/*߱Ӧ*/ - } - } - } - else if (OC300_VER1_0_1_ANDAFTER == ocInterfaceFlag) - {/*OC300 1.0.1֮İ汾źӦ*/ - if (CI_SUCCESS == retVal) - { - /*************Ϣ***********/ - /**/ - pTmpOcToCiData->OCPsdNum = dataBuf[ii++]; - curPsdNum = pTmpOcToCiData->OCPsdNum; - if (0u != curPsdNum) - { - /*Դ״̬*/ - pTmpOcToCiData->DrvPowerState = dataBuf[ii++]; - /*ƵԴ״̬*/ - pTmpOcToCiData->CtlPowerState = dataBuf[ii++]; - /*Ե1״̬*/ - pTmpOcToCiData->EdgeCtllerState1 = dataBuf[ii++]; - /*Ե2״̬*/ - pTmpOcToCiData->EdgeCtllerState2 = dataBuf[ii++]; - - - - if (PSD_SUM_MAX >= curPsdNum) - { - for (j = 0u; j < curPsdNum; j++) - { - psdId = LongFromChar(&dataBuf[ii]); /*ȡID*/ - ii += 4u; - /*PSD*/ - funcRet = dquQueryInDevIndex(QFUN_IDMAP_PSD_ID, psdId, &psdIndexId); - if (CI_SUCCESS == funcRet) - { - pTmpOcToCiData->PsdInfo[j].wPsdId = psdIndexId; - /*Ź״̬*/ - pTmpOcToCiData->PsdInfo[j].OpenErrState = dataBuf[ii++]; - /*Ź״̬*/ - pTmpOcToCiData->PsdInfo[j].CloseErrState = dataBuf[ii++]; - /*״̬*/ - pTmpOcToCiData->PsdInfo[j].OpenOrCloseState = dataBuf[ii++]; - /*״̬*/ - pTmpOcToCiData->PsdInfo[j].InterlockRelState = dataBuf[ii++]; - /*ŹϸϢλ*/ - pTmpOcToCiData->PsdInfo[j].psdFaultQStataOne = LongFromChar(&dataBuf[ii]); - ii += 4u; - /*ŹϸϢλ*/ - pTmpOcToCiData->PsdInfo[j].psdFaultQStataTwo = LongFromChar(&dataBuf[ii]); - ii += 4u; - /*ſ״̬λ*/ - pTmpOcToCiData->PsdInfo[j].psdDoorsStateOne = LongFromChar(&dataBuf[ii]); - ii += 4u; - /*ſ״̬λ*/ - pTmpOcToCiData->PsdInfo[j].psdDoorsStateTwo = LongFromChar(&dataBuf[ii]); - ii += 4u; - /*űϢλ*/ - pTmpOcToCiData->PsdInfo[j].psdDoorIStateOne = LongFromChar(&dataBuf[ii]); - ii += 4u; - /*űϢλ*/ - pTmpOcToCiData->PsdInfo[j].psdDoorIStateTwo = LongFromChar(&dataBuf[ii]); - ii += 4u; - /*ϰﱨ״̬*/ - pTmpOcToCiData->PsdInfo[j].psdAlarmState = dataBuf[ii++]; - } - else - { - /*Ž*/ - ii += 29u; - retVal = CI_ERROR; - break; - } - } - } - else - { - /*ԾϢ*/ - retVal = CI_ERROR; - debug_infor_printf((const)"OcPscNum'index %d exceed macro %d.\n", curPsdNum, PSD_SUM_MAX); - } - } - - } - /*************OCӦ״̬Ϣ***********/ - if (CI_SUCCESS == retVal) - { - pTmpOcToCiData->chHaveYjk = dataBuf[ii++]; - if (OC_HAVE_YJK == pTmpOcToCiData->chHaveYjk) - {/*߱Ӧ*/ - pTmpOcToCiData->chControlMode = dataBuf[ii++]; - pTmpOcToCiData->chOcYjpComm = dataBuf[ii++]; - } - else - {/*߱Ӧ*/ - } - } - } - #endif #if 0 (void)memcpy(pTmpOcToCiData->OcSystemState,&dataBuf[ii],16);/*OCϵͳ״̬*/ @@ -1929,10 +1686,6 @@ UINT8 ParseOcToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength,const U SetHLHTHeadCtxSrcOppSN(CI_SYSTEM_TYPE_OC, systemId, hlhtGalHead.recvOppMsgSN); SetHLHTHeadCtxSrcOwnSN(CI_SYSTEM_TYPE_OC, systemId, hlhtGalHead.preOwnMsgSN); SetHLHTHeadCtxCiRcvSN(CI_SYSTEM_TYPE_OC, systemId, curntCycleNo); - - /*ͨ ͨ*/ - pTmpOcToCiData->ComStartCycle = Get2oo2CurCycleNum();/*յOCʱͨſʼ*/ - debug_infor_printf((const)"\nId:%d OC_COM:%d\n", pTmpOcToCiData->OcId, pTmpOcToCiData->ComStartCycle); if(findFlag ==0u) /*ҪµocûҵΪµoc,Ҫoc*/ { @@ -2525,16 +2278,6 @@ UINT8 InitOcsBoardsIsScatter(void) UINT16 boardId = 0u; /*忨ID*/ UINT16 ocId = 0u; /*OC ID*/ UINT8 boardType = 0u; /*忨*/ - UINT16 jj = 0U; - UINT8 cLocalCiId = 0U; - UINT8 cOcBelongCiId = 0U; - UINT16 wRelayCurSum = 0U; - UINT16 wRelayId = 0U; - UINT16 wRelayBelongOCId = 0U; - UINT16 wRelayAForeBoardId = 0U; /*Aϵǰɰ忨ID*/ - UINT16 wRelayABackBoardId = 0U; /*Aϵɰ忨ID*/ - UINT16 wRelayBForeBoardId = 0U; /*Aϵǰɰ忨ID*/ - UINT16 wRelayBBackBoardId = 0U; /*Aϵɰ忨ID*/ readRtn = dquGetConfigData((const)DataPath, OC_DATA_TYPE, OC_IN_OUT_TYPE_ID, &pData, &dataLen); if (1u == readRtn) /*ȡɹ*/ @@ -2544,8 +2287,6 @@ UINT8 InitOcsBoardsIsScatter(void) rowNum = dataLen / OC_IN_OUT_TYPE_LEN; /*ݵĸ*/ if ((BOARD_SUM_MAX*OC_SUM_MAX) >= rowNum) { - cLocalCiId = GetSystemParaLocalCiId(); - wRelayCurSum = GetRelayCurSum(); for (i = 0u; i < rowNum; i++) { boardId = ShortFromChar(&pData[offset]); /*忨ID*/ @@ -2571,40 +2312,6 @@ UINT8 InitOcsBoardsIsScatter(void) { rtn = 0U; } - - cOcBelongCiId = (UINT8)GetCiIdByOcId(ocId); - - if (cOcBelongCiId == cLocalCiId) - { - for (jj = 0U; jj < wRelayCurSum; jj++) - { - wRelayId = GetRelayId(jj); - wRelayBelongOCId = GetRelayBelongOCId(wRelayId); - if (wRelayBelongOCId == ocId) - { - wRelayAForeBoardId = GetRelayForeNodeCollAddrA(wRelayId); - wRelayABackBoardId = GetRelayBackNodeCollAddrA(wRelayId); - wRelayBForeBoardId = GetRelayForeNodeCollAddrB(wRelayId); - wRelayBBackBoardId = GetRelayBackNodeCollAddrB(wRelayId); - if ((boardId == wRelayAForeBoardId) || (boardId == wRelayABackBoardId) || (boardId == wRelayBForeBoardId) || (boardId == wRelayBBackBoardId)) - { - SetRelayBoardType(wRelayId, boardType); - } - else - { - /**/ - } - } - else - { - /**/ - } - } - } - else - { - /**/ - } } if (offset == dataLen) /*ȷ*/ { @@ -2618,128 +2325,17 @@ UINT8 InitOcsBoardsIsScatter(void) } -/* -* ΪָOC->CIĽṹȱʡֵ(ȫֵ) -* ˵ index , OC idӦ± -* ֵ -*/ -void SetOcToCiDefaultDataStru(UINT8 index) -{ - UINT8 curPsdNum = 0U;/*OC->CI*/ - UINT8 j = 0u; - - if (OC_SUM_MAX <= index) - { - /**/ - } - else - { - curPsdNum = m_OcToCiOrginDataArr[index].OCPsdNum; - m_OcToCiOrginDataArr[index].DrvPowerState = PSD_DRIVE_POWER_ERROR;/*Դ״̬*/ - m_OcToCiOrginDataArr[index].CtlPowerState = PSD_CONTROL_POWER_ERROR;/*ƵԴ״̬*/ - m_OcToCiOrginDataArr[index].EdgeCtllerState1 = PSD_EDGE_CONTROLLER_ERROR;/*Ե1״̬*/ - m_OcToCiOrginDataArr[index].EdgeCtllerState2 = PSD_EDGE_CONTROLLER_ERROR;/*Ե2״̬*/ - for (j = 0U; j < curPsdNum; j++) - { - m_OcToCiOrginDataArr[index].PsdInfo[j].OpenErrState = PSD_OPEN_CLOSE_ERROR;/*Ź״̬*/ - m_OcToCiOrginDataArr[index].PsdInfo[j].CloseErrState = PSD_OPEN_CLOSE_ERROR;/*Ź״̬*/ - m_OcToCiOrginDataArr[index].PsdInfo[j].OpenOrCloseState = PSD_STATE_OPEN_VIETNAM;/*״̬*/ - m_OcToCiOrginDataArr[index].PsdInfo[j].InterlockRelState = PSD_MUTUALLOCK_REMOVE_NO;/*״̬*/ - m_OcToCiOrginDataArr[index].PsdInfo[j].psdFaultQStataOne = UINT32_MAX;/*ŹϸϢ*/ - m_OcToCiOrginDataArr[index].PsdInfo[j].psdFaultQStataTwo = UINT32_MAX; - m_OcToCiOrginDataArr[index].PsdInfo[j].psdDoorsStateOne = UINT32_MAX;/*ſ״̬*/ - m_OcToCiOrginDataArr[index].PsdInfo[j].psdDoorsStateTwo = UINT32_MAX; - m_OcToCiOrginDataArr[index].PsdInfo[j].psdDoorIStateOne = UINT32_MAX;/*űϢ*/ - m_OcToCiOrginDataArr[index].PsdInfo[j].psdDoorIStateTwo = UINT32_MAX; - m_OcToCiOrginDataArr[index].PsdInfo[j].psdAlarmState = PSD_ALARM_OBS_YES;/*ϰﱨ״̬*/ - } - } - -} - -/* -* ȡҪ͸OCĿȨл -* ˵ -* ֵ Ȩл -*/ -UINT16 GetKqChangeCommand(void) -{ - UINT16 ii = 0u; - UINT16 command = CHANGE_NO_COMMAND; - - for (ii = 0u; ii < m_OcToCiOrginDataNum; ii++) - { - if (OC_CTLMODE_YJK == m_OcToCiOrginDataArr[ii].chControlMode) - { - /*ӦصOC*/ - if (CI_AND_OTHER_TRANSMIT_BAD == m_OcToCiOrginDataArr[ii].chOcYjpComm) - { - /*OCӦͨж*/ - } - else - { - break; - } - } - else - { - /*ǻ,*/ - } - } - - if((0 != ii)&& (ii == m_OcToCiOrginDataNum)) - {/*дӦصOCӦжϣOCǻ*/ - command = CHANGE_JK_COMMAND; - } - else - { - /**/ - } - - return command; -} - - -/* -* ȡλɼʼ -* ˵ const UINT16 ocId, OC ID -* const UINT8 boardNum, 忨ID -* const UINT8 pointNumλID -* ֵ UINT32 ɼʼ -*/ -UINT32 GetPointTolerateCycNum(const UINT16 ocId, const UINT8 boardNum, const UINT8 pointNum) -{ - UINT32 retVal = CI_ERROR; - - if ((OC_SUM_MAX > ocId) && (Oc_Max_Board_Num > boardNum) && (OC_COLL_BOARD_POS_NUM > pointNum)) - { - retVal = m_OcConvertedPtDataArr[ocId].BoardDatas[boardNum].TolerateCycNum[pointNum]; - } - else - {/**/ - } - - return retVal; -} - -/* -* õɼʼ -* ˵ const UINT16 ocId, OC ID -* const UINT8 boardNum, 忨ID -* const UINT8 pointNumλID -* const UINT32 cycNum ں -* ֵ -*/ -void SetPointTolerateCycNum(const UINT16 ocId, const UINT8 boardNum, const UINT8 pointNum, const UINT32 cycNum) -{ - if ((OC_SUM_MAX > ocId) && (Oc_Max_Board_Num > boardNum) && (OC_COLL_BOARD_POS_NUM > pointNum)) - { - m_OcConvertedPtDataArr[ocId].BoardDatas[boardNum].TolerateCycNum[pointNum] = cycNum; - } - else - {/**/ - } -} + + + + + + + + + + + diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackOcData.h b/TSCP/src/APP/ciapp/ParsePack/ParsePackOcData.h index a63cf8d..b2fbffc 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackOcData.h +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackOcData.h @@ -69,15 +69,6 @@ #define OC_BOARD_STATE_NORMAL ((UINT8)0) /*oc忨״̬*/ -#define OC_HAVE_YJK ((UINT8)0x55) /*OC߱Ӧ*/ -#define OC_NOT_YJK ((UINT8)0xAA) /*OC߱Ӧ*/ - -#define OC_CTLMODE_YJK ((UINT8)0x55) /*OC״̬Ӧ*/ -#define OC_CTLMODE_JK ((UINT8)0xAA) /*OC״̬ǻ*/ - -#define CHANGE_JK_COMMAND ((UINT16)0x00AA) /*л*/ -#define CHANGE_NO_COMMAND ((UINT16)0x00FF) /*л*/ - typedef struct s_OcDevState { UINT16 OcId;/*oc id*/ @@ -126,23 +117,6 @@ typedef struct s_PlusBox UINT8 chAsState; /*տ״̬ λʾ1տ״̬λʾ2տ״̬0x50xaϣźŻ䣬ֻһտλЧת޻ߡλЧ*/ }OcPlusBox; -typedef struct s_PsdInfo -{ - UINT16 wPsdId; /**/ - UINT8 OpenErrState; /*Ź״̬*/ - UINT8 CloseErrState; /*Ź״̬*/ - UINT8 OpenOrCloseState; /*״̬*/ - UINT8 InterlockRelState; /*״̬*/ - UINT32 psdFaultQStataOne; /*ϸϢĸֽ*/ - UINT32 psdFaultQStataTwo; /*ϸϢĸֽ*/ - UINT32 psdDoorsStateOne; /*ÿŵĿ״̬ĸֽ*/ - UINT32 psdDoorsStateTwo; /*ÿŵĿ״̬ĸֽ*/ - UINT32 psdDoorIStateOne; /*ÿŵıϢĸֽ*/ - UINT32 psdDoorIStateTwo; /*ÿŵıϢĸֽ*/ - UINT8 psdAlarmState; /*ϰﱨ״̬*/ - -}OcToCiPsdInfo; - typedef struct S_OcToCiDataStruct { UINT16 OcId; /*OC*/ @@ -173,17 +147,6 @@ typedef struct S_OcToCiDataStruct UINT16 OCBoardSwapSysNum;/*OCϵ忨*/ UINT8 SwapSysBoardId[MAX_OC_DEVICE_NUM];/*OCϵ忨ID*/ - UINT8 OCPsdNum;/**/ - UINT8 DrvPowerState;/*Դ״̬*/ - UINT8 CtlPowerState;/*ƵԴ״̬*/ - UINT8 EdgeCtllerState1;/*Ե1״̬*/ - UINT8 EdgeCtllerState2;/*Ե2״̬*/ - OcToCiPsdInfo PsdInfo[PSD_SUM_MAX];/*Ϣ*/ - - UINT8 chHaveYjk; /*Ƿ߱Ӧ*/ - UINT8 chControlMode; /*״̬*/ - UINT8 chOcYjpComm; /*OCYJPͨ״̬*/ - UINT32 ComStartCycle; /*ͨſʼڣʹøжOCCIж*/ UINT16 RecvErrorDevTypeCycle; /*յ豸*/ @@ -196,7 +159,6 @@ typedef struct S_OcBoardDataStruct1 UINT8 BoardAddress; /*ӵַ*/ UINT8 BoardState; /*忨״̬0x550xaa*/ UINT8 PosValueBuf[OC_COLL_BOARD_POS_NUM]; /*Ӹλ*/ - UINT32 TolerateCycNum[OC_COLL_BOARD_POS_NUM];/*Ӹλ*/ }CollBoardData; typedef struct S_OcCollBoardDataStruct @@ -304,14 +266,6 @@ extern OcFaultStateStruct m_OcFaultState[OC_SUM_MAX];/*CI #define LEN_OC_UP_TO_END_200(startIndex,gdBoardNo,diBoardNo,doBoardNo,siBoardNo,soBoardNo,sorBoardNo,pbNo,swapSysBoardNo) LEN_OC_UP_TO_SWAPSYSBOARD_NO_200((startIndex),(gdBoardNo),(diBoardNo),(doBoardNo),(siBoardNo),(soBoardNo),(sorBoardNo),(pbNo))+(swapSysBoardNo) -/*OC-300ӿʹ*/ -/*OCӿʼdevNo:豸gdBoardNo, diBoardNodi doBoardNodo siBoardNo:si soBoardNo:so sorBoardNo:sor pbNo:ִе swapSysBoardNo:ϵ忨*/ -#define LEN_OC_UP_TO_PSD_NO_300(startIndex,gdBoardNo,diBoardNo,doBoardNo,siBoardNo,soBoardNo, sorBoardNo,pbNo, swapSysBoardNo) LEN_OC_UP_TO_SWAPSYSBOARD_NO_200((startIndex),(gdBoardNo),(diBoardNo),(doBoardNo),(siBoardNo),(soBoardNo),(sorBoardNo), (pbNo))+(swapSysBoardNo)+1U - -/*OCӿʼdevNo:豸gdBoardNo, diBoardNodi doBoardNodo siBoardNo:si soBoardNo:so sorBoardNo:sor pbNo:ִе swapSysBoardNo:ϵ忨 psdNo:*/ -#define LEN_OC_UP_TO_END_300(startIndex,gdBoardNo,diBoardNo,doBoardNo,siBoardNo,soBoardNo,sorBoardNo,pbNo,swapSysBoardNo, psdNo) LEN_OC_UP_TO_PSD_NO_300((startIndex),(gdBoardNo),(diBoardNo),(doBoardNo),(siBoardNo),(soBoardNo),(sorBoardNo),(pbNo), swapSysBoardNo)+33*(psdNo) + (0u == psdNo?0u:4u) - - #ifdef __cplusplus extern "C" { @@ -446,38 +400,6 @@ UINT8 CheckOc2CiDataLenValid(const UINT8* dataBuf, const UINT16 totalLength); */ void ResetOcOriginalState(const UINT8 ocId); -/* -* ΪָOC->CIĽṹȱʡֵ(ȫֵ) -* ˵ index:OC idӦ± -* ֵ 0:ʧ -* 1:ɹ -*/ -void SetOcToCiDefaultDataStru(UINT8 index); - -/* -* ȡҪ͸OCĿȨл -* ˵ -* ֵ Ȩл -*/ -UINT16 GetKqChangeCommand(void); - -/* -* ȡλɼʼ -* ˵ const UINT16 switchId, ID -* ֵ UINT32 ɼʼ -*/ -UINT32 GetPointTolerateCycNum(const UINT16 ocId, const UINT8 boardNum, const UINT8 pointNum); - -/* -* õɼʼ -* ˵ const UINT16 ocId, OC ID -* const UINT8 boardNum, 忨ID -* const UINT8 pointNumλID -* const UINT32 cycNum ں -* ֵ -*/ -void SetPointTolerateCycNum(const UINT16 ocId, const UINT8 boardNum, const UINT8 pointNum, const UINT32 cycNum); - #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackTmcData.c b/TSCP/src/APP/ciapp/ParsePack/ParsePackTmcData.c index 3a2896b..5e54dc7 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackTmcData.c +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackTmcData.c @@ -75,23 +75,23 @@ static UINT8 ParseSnowData(UINT8* dataBuf, UINT16 dataLen); static UINT8 ParseWLSData(UINT8* dataBuf, UINT16 dataLen); /* -* ITEгϢ +* ITEȫгϢ * ˵const UINT8* dataBuf, ݻ * const UINT16 dataLength, ݳ * ֵCI_ERROR 0 ݽʧ * CI_SUCCESS 1 ݽɹ * Created By LQ 2024.07.12 */ -static UINT8 ParseIteCutData(UINT8* dataBuf, UINT16 dataLen); +static UINT8 ParseIteLineCutData(UINT8* dataBuf, UINT16 dataLen); /* -* ITEгϢ +* ITEȫгϢ * ˵UINT8* TiocToTmcDataBuffer ݵַ * ֵ0 ʧ * ݳ * Created By LQ 2024.07.12 */ -static UINT16 PackToTmcIteCutData(UINT8* TiocToTmcDataBuffer); +static UINT16 PackToTmcIteLineCutData(UINT8* TiocToTmcDataBuffer); /* * ȫͨųϢ @@ -253,9 +253,9 @@ UINT8 ParseTmcToTiocDataFrame(UINT8* dataBuf, UINT16 dataLength, UINT8 systemId) break; case TMC_TO_TIOC_ITELINECUT_MSG: /* ITEȫгϢ */ - retVal = ParseIteCutData(&dataBuf[ii], wMsgCheckLen); + retVal = ParseIteLineCutData(&dataBuf[ii], wMsgCheckLen); dwParseStep |= 0x00010U; - debug_infor_printf((const)"\n ParseIteCutData:%d", retVal); + debug_infor_printf((const)"\n ParseIteLineCutData:%d", retVal); break; case TMC_TO_TIOC_LINECT_MSG: /* ȫͨųϢ */ @@ -652,12 +652,11 @@ static UINT8 ParseSnowData(UINT8* dataBuf, UINT16 dataLen) UINT8 cRetVal = CI_ERROR; UINT16 ii = 0u; UINT8 jj = 0U; - UINT16 wPlatFormId = 0U; /*վ̨ͨID*/ + UINT32 dwPlatFormId = 0U; /*վ̨ͨID*/ UINT8 cPlatFormNum = 0U; /*վ̨*/ UINT8 cTmepNum = 0U; UINT8 cPlatFormBelongCiId = 0U; /*վ̨LinkCI*/ UINT8 cLocalCiId = 0U; - UINT8 cSnowLevel = 0U; /*ʪȼ*/ if (NULL == dataBuf) { @@ -668,23 +667,14 @@ static UINT8 ParseSnowData(UINT8* dataBuf, UINT16 dataLen) cRetVal = CI_SUCCESS; } - /*ȫѩ/ʪϢ*/ + /*ȫѩģʽЧ־λ */ if (CI_SUCCESS == cRetVal) { - g_TmcToTiocDataStru.cSnowValidFlag = dataBuf[ii]; /*ȫѩ/ʪģʽ*/ + g_TmcToTiocDataStru.cSnowValidFlag = dataBuf[ii]; ii++; if ((CI_ALL_SNOW_VALID == g_TmcToTiocDataStru.cSnowValidFlag) || (CI_ALL_SNOW_UNVALID == g_TmcToTiocDataStru.cSnowValidFlag)) { - cSnowLevel = dataBuf[ii]; /*ȫʪȼ*/ - ii++; - if ((CI_SNOW_LEVEL_DEFAULT == cSnowLevel) || (CI_SNOW_LEVEL_ONE == cSnowLevel) || (CI_SNOW_LEVEL_TWO == cSnowLevel)) - { - g_TmcToTiocDataStru.cSnowLevel = cSnowLevel; - } - else - { - cRetVal = CI_ERROR; - } + cRetVal = CI_SUCCESS; } else { @@ -703,21 +693,17 @@ static UINT8 ParseSnowData(UINT8* dataBuf, UINT16 dataLen) cLocalCiId = GetSystemParaLocalCiId(); for (jj = 0U; jj < cPlatFormNum; jj++) { - wPlatFormId = ShortFromChar(&dataBuf[ii]); /*ѩվ̨ID*/ - ii += 2U; - cSnowLevel = dataBuf[ii]; /*ʪȼ*/ - ii++; + dwPlatFormId = LongFromChar(&dataBuf[ii]); /*ѩվ̨ID*/ + ii += 4U; - if ((0U < wPlatFormId) && (UINT16_MAX > wPlatFormId) - && (CI_SNOW_LEVEL_DEFAULT == cSnowLevel) || (CI_SNOW_LEVEL_ONE == cSnowLevel) || (CI_SNOW_LEVEL_TWO == cSnowLevel)) + cPlatFormBelongCiId = GetAreaSnowPlatFormBelongCiId((UINT16)dwPlatFormId); /*ȡѩվ̨*/ + if (0U < dwPlatFormId) { - cPlatFormBelongCiId = GetAreaSnowPlatFormBelongCiId(wPlatFormId); /*ȡѩվ̨*/ if ((cLocalCiId == cPlatFormBelongCiId) && (0U != cLocalCiId)) { if (LOCAL_AREA_SNOW_SUM_MAX > cTmepNum) { - g_TmcToTiocDataStru.szAreaSnowInfo[cTmepNum].wAreaId = wPlatFormId; - g_TmcToTiocDataStru.szAreaSnowInfo[cTmepNum].cAreaSnowLevel = cSnowLevel; + g_TmcToTiocDataStru.szAreaSnowPlatFormId[cTmepNum] = dwPlatFormId; cTmepNum++; } else @@ -733,7 +719,7 @@ static UINT8 ParseSnowData(UINT8* dataBuf, UINT16 dataLen) } else { - /*ѩģʽIDǷʪȼǷʧ*/ + /*ѩģʽIDǷ*/ cRetVal = CI_ERROR; } } @@ -922,7 +908,7 @@ UINT8 PackTiocToTmcData( UINT8 deviceId) wMagLen = PackToTmcWLScreenData(&TiocToTmcDataBuffer[ii]); break; case 3u: - wMagLen = PackToTmcIteCutData(&TiocToTmcDataBuffer[ii]); + wMagLen = PackToTmcIteLineCutData(&TiocToTmcDataBuffer[ii]); break; case 4U: wMagLen = PackToTmcLineCTData(&TiocToTmcDataBuffer[ii]); @@ -1183,8 +1169,7 @@ static UINT16 PackToTmcSnowData(UINT8* TiocToTmcDataBuffer) UINT8 snowModelFlag = 0u; /*ȫѩģʽ־*/ UINT8 cFunRetVal = CI_ERROR; UINT8 cAreaSnowNum = 0U; /*ѩվ̨*/ - AreaSnowInfoStruct* pAreaSnowData = NULL; /*ѩϢ*/ - UINT8 cSnowLevel = 0U; /*ʪ켶*/ + UINT32* pAreaSnowId = NULL; /*ѩվ̨ID*/ snowModelFlag = GetAllSnowModel(); @@ -1206,30 +1191,14 @@ static UINT16 PackToTmcSnowData(UINT8* TiocToTmcDataBuffer) { TiocToTmcDataBuffer[ii++] = 0x55u; /* ȫѩģʽЧ */ } - else if (CI_ALL_SNOW_UNVALID == snowModelFlag) + else { TiocToTmcDataBuffer[ii++] = 0xAAu; /* ȫѩģʽЧ */ } - else - { - cFunRetVal = CI_ERROR; /*ȫʪ״̬󣬷ʧ*/ - } - - cSnowLevel = GetAllSnowLevel(); - if ((CI_SNOW_LEVEL_DEFAULT == cSnowLevel) || (CI_SNOW_LEVEL_ONE == cSnowLevel)|| (CI_SNOW_LEVEL_TWO == cSnowLevel)) - { - TiocToTmcDataBuffer[ii] = cSnowLevel; /*ȫʪ켶*/ - ii++; - } - else - { - cFunRetVal = CI_ERROR; /*ȫʪ켶󣬷ʧ*/ - } - /*ѩ״̬Ϣ*/ cAreaSnowNum = GetLocalAreaSnowNum(); - pAreaSnowData = GetLocalAreaSnow(); + pAreaSnowId = GetLocalAreaSnowId(); if (LOCAL_AREA_SNOW_SUM_MAX >= cAreaSnowNum) { @@ -1238,19 +1207,8 @@ static UINT16 PackToTmcSnowData(UINT8* TiocToTmcDataBuffer) for (jj = 0U; jj < cAreaSnowNum; jj++) { - if ((0U < pAreaSnowData[jj].wAreaId) && (UINT16_MAX > pAreaSnowData[jj].wAreaId) - && ((CI_SNOW_LEVEL_DEFAULT == pAreaSnowData[jj].cAreaSnowLevel) || (CI_SNOW_LEVEL_ONE == pAreaSnowData[jj].cAreaSnowLevel) || (CI_SNOW_LEVEL_TWO == pAreaSnowData[jj].cAreaSnowLevel))) - { - ShortToChar(pAreaSnowData[jj].wAreaId, &TiocToTmcDataBuffer[ii]); /*ID*/ - ii += 2U; - TiocToTmcDataBuffer[ii] = pAreaSnowData[jj].cAreaSnowLevel; /*ʪ켶*/ - ii++; - } - else - { - cFunRetVal = CI_ERROR; /*ϢǷʧ*/ - break; - } + LongToChar(pAreaSnowId[jj], &TiocToTmcDataBuffer[ii]); /*ѩվ̨ID*/ + ii += 4U; } } else @@ -1370,28 +1328,21 @@ static UINT16 PackToTmcWLScreenData(UINT8* TiocToTmcDataBuffer) } /* -* ITEгϢ +* ITEȫгϢ * ˵const UINT8* dataBuf, ݻ * const UINT16 dataLength, ݳ * ֵCI_ERROR 0 ݽʧ * CI_SUCCESS 1 ݽɹ * Created By LQ 2024.07.12 */ -static UINT8 ParseIteCutData(UINT8* dataBuf, UINT16 dataLen) +static UINT8 ParseIteLineCutData(UINT8* dataBuf, UINT16 dataLen) { UINT8 cRetVal = CI_ERROR; UINT8 cIteLineCutState = 0U; /*ITEȫг״̬*/ - UINT16 ii = 0U; - UINT8 jj = 0U; - UINT16 wPlatFormId = 0U; /*վ̨ID*/ - UINT8 cPlatFormNum = 0U; /*վ̨*/ - UINT8 cTmepNum = 0U; - UINT8 cPlatFormBelongCiId = 0U; /*վ̨LinkCI*/ - UINT8 cLocalCiId = 0U; + UINT16 ii = 0u; if (NULL != dataBuf) { - cRetVal = CI_SUCCESS; cIteLineCutState = dataBuf[ii]; ii++; @@ -1399,83 +1350,20 @@ static UINT8 ParseIteCutData(UINT8* dataBuf, UINT16 dataLen) { g_TmcToTiocDataStru.cIteLineCutState = cIteLineCutState; /*洢ITEȫг״̬*/ - /*ITEгϢ*/ - cPlatFormNum = dataBuf[ii]; /*ITEг*/ - ii++; - - if (ALL_AREA_SNOW_SUM_MAX >= cPlatFormNum) - { - cLocalCiId = GetSystemParaLocalCiId(); - for (jj = 0U; jj < cPlatFormNum; jj++) - { - wPlatFormId = ShortFromChar(&dataBuf[ii]); /*ID*/ - ii += 2U; - if ((0U < wPlatFormId) && (UINT16_MAX > wPlatFormId)) - { - cPlatFormBelongCiId = GetAreaSnowPlatFormBelongCiId(wPlatFormId); /*ȡ*/ - if ((cLocalCiId == cPlatFormBelongCiId) && (0U != cLocalCiId)) - { - if (LOCAL_AREA_SNOW_SUM_MAX > cTmepNum) - { - g_TmcToTiocDataStru.szAreaIteCutId[cTmepNum] = wPlatFormId; - cTmepNum++; - } - else - { - debug_infor_printf((const)"ParseIteCutData: Local AreaIteCutNum Exceed Max\n"); - cRetVal = CI_ERROR; /*ITEгޣֹͣʧ*/ - } - } - else - { - /*DZ*/ - } - } - else - { - debug_infor_printf((const)"ParseIteCutData: Area Id Error\n"); - cRetVal = CI_ERROR; /*IDǷ*/ - } - - if (CI_SUCCESS != cRetVal) - { - break; /*ʧܣֹͣ*/ - } - else - { - /**/ - } - } - - g_TmcToTiocDataStru.cAreaIteCutNum = cTmepNum; - - if (CI_SUCCESS == cRetVal) - { - if (dataLen == ii) - { - /*ɹ*/ - } - else - { - debug_infor_printf((const)"ParseIteCutData: MsgLen Is Error\n"); - cRetVal = CI_ERROR; /*Ȳһ£ʧ*/ - } - } - else - { - /**/ - } + if (dataLen == ii) + { + cRetVal = CI_SUCCESS; } else { - debug_infor_printf((const)"ParseIteCutData: TMC AreaIteCutNum Exceed Max\n"); - cRetVal = CI_ERROR; /*ITEгޣʧ*/ + debug_infor_printf((const)"ParseIteLineCutData Error: MsgLen Is Error\n"); + cRetVal = CI_ERROR; /*Ȳһ£ʧ*/ } } else { cRetVal = CI_ERROR; /*״̬Ƿʧ*/ - debug_infor_printf((const)"ParseIteCutData: IteLineCutState[0x%2x] Is Invalid\n", cIteLineCutState); + debug_infor_printf((const)"ParseIteLineCutData Error: IteLineCutState[0x%2x] Is Invalid\n", cIteLineCutState); } } else @@ -1487,27 +1375,22 @@ static UINT8 ParseIteCutData(UINT8* dataBuf, UINT16 dataLen) } /* -* ITEгϢ +* ITEȫгϢ * ˵UINT8* TiocToTmcDataBuffer ݵַ * ֵ0 ʧ * ݳ * Created By LQ 2024.07.12 */ -static UINT16 PackToTmcIteCutData(UINT8* TiocToTmcDataBuffer) +static UINT16 PackToTmcIteLineCutData(UINT8* TiocToTmcDataBuffer) { UINT16 ii = 0U; UINT16 wMagLen = 0U; UINT16 wMagLenIndex = 0U; UINT16 wRetVal = 0U; UINT8 cIteLineCutState = 0U; /*ITEȫг״̬*/ - UINT8 cAreaIteCutNum = 0U; /*ITEг*/ - UINT16* pAreaIteCutId = NULL; /*ITEгID*/ - UINT8 jj = 0U; - UINT8 cFunRetVal = CI_ERROR; if (NULL != TiocToTmcDataBuffer) { - cFunRetVal = CI_SUCCESS; wMagLenIndex = ii; ii += 2U; @@ -1527,42 +1410,15 @@ static UINT16 PackToTmcIteCutData(UINT8* TiocToTmcDataBuffer) { TiocToTmcDataBuffer[ii] = CI_ITE_LINE_CUT_DEFAULT; /* Ĭֵ */ } + ii++; - /*ITEгϢ*/ - cAreaIteCutNum = GetLocalAreaIteCutNum(); - pAreaIteCutId = GetLocalAreaIteCutId(); + /* дݳ */ + wMagLen = ii - wMagLenIndex; + wRetVal = wMagLen; + wMagLen -= 2U; - if ((LOCAL_AREA_SNOW_SUM_MAX >= cAreaIteCutNum) && (NULL != pAreaIteCutId)) - { - TiocToTmcDataBuffer[ii] = cAreaIteCutNum; /*ITEг*/ - ii++; - - for (jj = 0U; jj < cAreaIteCutNum; jj++) - { - ShortToChar(pAreaIteCutId[jj], &TiocToTmcDataBuffer[ii]); /*ID*/ - ii += 2U; - } - } - else - { - debug_infor_printf((const)"PackToTmcIteCutData: Local AreaIteCutNum Exceed Max\n"); - cFunRetVal = CI_ERROR; /*ITEгޣʧ*/ - } - - if (CI_SUCCESS == cFunRetVal) - { - /* дݳ */ - wMagLen = ii - wMagLenIndex; - wRetVal = wMagLen; - wMagLen -= 2U; - - ShortToChar(wMagLen, &TiocToTmcDataBuffer[wMagLenIndex]); - } - else - { - /*ʧܣ0*/ - } + ShortToChar(wMagLen, &TiocToTmcDataBuffer[wMagLenIndex]); } else { diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackTmcData.h b/TSCP/src/APP/ciapp/ParsePack/ParsePackTmcData.h index a4d3244..b6ba84f 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackTmcData.h +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackTmcData.h @@ -57,17 +57,15 @@ typedef struct S_TsrInputInfoStruct TsrDataStruct szTsrInfo[TSR_MAX_SUM]; /* Ϣ */ } TsrInputInfoStruct; + /*TMC->TIOC*/ typedef struct S_TmcToTiocDataStruct { TsrInputInfoStruct tsrInputInfoStru;/* ʱϢ */ UINT8 cSnowValidFlag; /* ȫѩģʽЧ־ */ - UINT8 cSnowLevel; /*ȫʪȼ*/ UINT8 cAreaSnowPlatFormNum; /*ѩվ̨*/ - AreaSnowInfoStruct szAreaSnowInfo[LOCAL_AREA_SNOW_SUM_MAX]; /*ѩ*/ + UINT32 szAreaSnowPlatFormId[LOCAL_AREA_SNOW_SUM_MAX]; /*ѩվ̨ID*/ UINT8 cIteLineCutState; /* ITEȫг״̬ */ - UINT8 cAreaIteCutNum; /*ITEг*/ - UINT16 szAreaIteCutId[ALL_AREA_SNOW_SUM_MAX]; /*ITEгID*/ UINT8 cLineCtNum; /*ȫͨų*/ UINT16 szLineCtId[TRAIN_SUM_MAX]; /*ȫͨųID*/ } TmcToTiocDataStruct; diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackVobcData.c b/TSCP/src/APP/ciapp/ParsePack/ParsePackVobcData.c index 89734f9..3b17ad6 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackVobcData.c +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackVobcData.c @@ -382,14 +382,14 @@ static UINT8 PackCiToVobcSigInfo(UINT8* pDataBuf, UINT16* wDataLength, UINT16 wT static UINT8 PackCiToVobcBackUpStateData(UINT8* pDataBuf, UINT16* wDataLength, VobcToCiDataStruct* pstVobcToCiDataStru); /* -* CiIvocITEг״̬ +* CiIvocITEȫг״̬ * ˵const UINT8* dataBuf ݻΣ * const UINT16 *dataLength ݳȣΣ * ֵCI_ERROR 0 ʧ * CI_SUCCESS 1 ɹ * Created By LQ 2024.07.12 */ -static UINT8 PackCiToIvocIteCutInfo(UINT8* pDataBuf, UINT16* wDataLength); +static UINT8 PackCiToIvocIteLineCutInfo(UINT8* pDataBuf, UINT16* wDataLength); /* @@ -449,8 +449,7 @@ UINT8 ParseVobcToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength, cons UINT8 retVal = CI_SUCCESS; UINT8 lineIdentity = 0u; /*·ʶ*/ UINT8 galHeadSaved = 0u; - VobcToCiDataStruct parseCheckVobcStruc = { 0 }; - UINT8 chFind = CI_ERROR; + lineIdentity = GetCiFunctionSwitchConfig(VOBC_INTERFACE_IDENTITY);/*ȡ·ʶ*/ /*ܴVOBCж*/ if (VobcToCiSum >= VOBC_TO_CI_SUM_MAX) @@ -460,21 +459,23 @@ UINT8 ParseVobcToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength, cons if (CI_SUCCESS==retVal) { + (void)memset(&(VobcToCiDataStru[VobcToCiSum]),0,sizeof(VobcToCiDataStruct));/*ڴ棬ֹ*/ + if (LINE_HLHT == lineIdentity)/*ͨ·*/ { - retVal = ParseVobcToCiDataFrameHLHT(dataBuf, dataLength, systemId, &parseCheckVobcStruc, &galHeadSaved,logId); + retVal = ParseVobcToCiDataFrameHLHT(dataBuf, dataLength, systemId, &(VobcToCiDataStru[VobcToCiSum]), &galHeadSaved,logId); } else if (LINE_FAO == lineIdentity)/*FAO·*/ { - retVal = ParseVobcToCiDataFrameFAO(dataBuf,dataLength,systemId,&parseCheckVobcStruc); + retVal = ParseVobcToCiDataFrameFAO(dataBuf,dataLength,systemId,&(VobcToCiDataStru[VobcToCiSum])); } else if ((LINE_FAOHLHT == lineIdentity) || (LINE_FAOHLHT_ONESELF == lineIdentity)||(LINE_FAOHLHT_ONESELFSECOND == lineIdentity))/*FAO+HLHT·*/ { - retVal = ParseVobcToCiDataFrameFAOHLHT(dataBuf, dataLength, systemId, &parseCheckVobcStruc, &galHeadSaved,logId); + retVal = ParseVobcToCiDataFrameFAOHLHT(dataBuf, dataLength, systemId, &(VobcToCiDataStru[VobcToCiSum]), &galHeadSaved,logId); } else if (LINE_CC == lineIdentity)/*·*/ { - retVal = ParseIvocToCiDataFrameCC(dataBuf, dataLength, systemId, &parseCheckVobcStruc, &galHeadSaved, logId); + retVal = ParseIvocToCiDataFrameCC(dataBuf, dataLength, systemId, &(VobcToCiDataStru[VobcToCiSum]), &galHeadSaved, logId); } else { @@ -483,25 +484,21 @@ UINT8 ParseVobcToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength, cons if(CI_SUCCESS == retVal) { + VobcToCiSum++; /*ȥ*/ for (ii = 0u; ii < VobcToCiSum; ii++) { - if (VobcToCiDataStru[ii].VobcId == parseCheckVobcStruc.VobcId) - {/*гӵгһ*/ - CopyVobcToCiMsg(&parseCheckVobcStruc,&(VobcToCiDataStru[ii])); - chFind = CI_SUCCESS; + /*һ*/ + if (ii == VobcToCiSum - 1u) + { break; } - } - if (CI_ERROR == chFind) - { - (void)CommonMemSet(&(VobcToCiDataStru[VobcToCiSum]), (UINT32)sizeof(VobcToCiDataStruct), 0U, (UINT32)sizeof(VobcToCiDataStruct));/*ڴ棬ֹ*/ - CopyVobcToCiMsg(&parseCheckVobcStruc, &(VobcToCiDataStru[VobcToCiSum])); - VobcToCiSum++; - } - else - { - ; /*Ѵڲ*/ + + if (VobcToCiDataStru[ii].VobcId == VobcToCiDataStru[VobcToCiSum - 1U].VobcId) + {/*гӵгһ*/ + CopyVobcToCiMsg(&(VobcToCiDataStru[VobcToCiSum-1U]),&(VobcToCiDataStru[ii])); + VobcToCiSum--; + } } } else @@ -1413,7 +1410,11 @@ static UINT8 ParseVobcToCiDataFrameHLHT(const UINT8* dataBuf, const UINT16 dataL INT32 vobcInfoRemainValidiy = 0; UINT8 headRet = HLHT_HEAD_ERROR;/*ͨ*/ UINT8 cTempPsdCmdCode = 0U; +#if 0 UINT32 signalId = 0u; /*VOBC->CIźŻID*/ + + +#endif UINT8 ci_vobcPrtclVersion = 0u; ci_vobcPrtclVersion = GetVersionOfVOBCToCI(); @@ -1561,7 +1562,7 @@ static UINT8 ParseVobcToCiDataFrameHLHT(const UINT8* dataBuf, const UINT16 dataL cmdType = dataBuf[ii];/*ȡ*/ ii += 1u; - if ((VOBCTOCI_COMMAND_TYPE_PSDOPEN == cmdType) || (VOBCTOCI_COMMAND_TYPE_PSDCLOSE == cmdType) || (VOBCTOCI_COMMAND_TYPE_PSDCHECK_FAOHLHT == cmdType)) /*ȱYF0083-6822023-07-03*/ + if ((VOBCTOCI_COMMAND_TYPE_PSDOPEN == cmdType) || (VOBCTOCI_COMMAND_TYPE_PSDCLOSE == cmdType) || (VOBCTOCI_COMMAND_TYPE_PSDCHECK == cmdType)) /*ȱYF0083-6822023-07-03*/ { vobcToCiDataStru->PsdData[jj].CmdType = cmdType; @@ -1577,13 +1578,16 @@ static UINT8 ParseVobcToCiDataFrameHLHT(const UINT8* dataBuf, const UINT16 dataL ii++; } } + + /*޸20180111޸ԭ򣺻ͨVOBC-CIӿڻˣVOBCCI4ֽźŻIDӦԽ*/ +#if 0 /*µĽӿڣźŻID1~0xFFFFFFFF,0ΪĬֵVOBCȫǰǰгзͬźŻ*/ signalId = LongFromChar(&dataBuf[ii]); /*ȡźŻID*/ ii += 4u; vobcToCiDataStru->signalID = signalId; /*źŻID浽ṹ*/ - +#endif } else { @@ -1908,23 +1912,22 @@ static UINT8 PackCiToVobcDataHLHT(VobcToCiDataStruct *vobcToCiDataStru) UINT32 ciEtcsId = 0u; UINT32 vobcEtcsId = 0u; UINT32 emapCheckVer = 0u; -#if 0 + UINT16 trackIdRelatePhySecId = 0u;/*ιID*/ + UINT8 outStationSignalSum = 0u;/*վźŻĿ*/ UINT8 sigIdx = 0u;/*źŻ*/ UINT8 sigDir = 0u;/*źŻӪ*/ - UINT16 trackIdRelatePhySecId = 0u;/*ιID*/ UINT8 outStationSignalAllowOrNotUp = CI_VOBC_SIGNAL_DEFAULT; /*źŻֹ״̬*/ UINT8 outStationSignalAllowOrNotDown = CI_VOBC_SIGNAL_DEFAULT; /*źŻֹ״̬*/ - UINT8 outStationSignalSum = 0u;/*վźŻĿ*/ -#endif UINT8 ci_vobcPrtclVersion = 0u; UINT8 mutualLockState = 0u; UINT16 dstDevId = 0u; UINT8 outnetSafeSendRtn = 0u; UINT8 chPsdBelongCiId = 0U; + ci_vobcPrtclVersion = GetVersionOfVOBCToCI(); +#if 0 UINT8 outStationSignalAllowOrNot = CI_VOBC_SIGNAL_DEFAULT; /*źŻֹ״̬*/ UINT32 signalIdInterConn = 0u; /*ͨ4ֽźŻID*/ - ci_vobcPrtclVersion = GetVersionOfVOBCToCI(); - +#endif /*ȻȡʱϢȡɹбҪ*/ if ((CI_SUCCESS == dquDevName2HlhtId((CI_SYSTEM_TYPE_CI*256U) + localCiId,0U,&ciEtcsId)) && (CI_SUCCESS == dquDevName2HlhtId((CI_SYSTEM_TYPE_VOBC*256U) + (UINT8)(vobcToCiDataStru->VobcId),vobcToCiDataStru->vobcLogId,&vobcEtcsId)) && (CI_SUCCESS == GetCiEmapCheckVer(localCiId, &emapCheckVer, CI_SYSTEM_TYPE_VOBC))) @@ -2024,7 +2027,7 @@ static UINT8 PackCiToVobcDataHLHT(VobcToCiDataStruct *vobcToCiDataStru) }/*for (kk = 0; kk < vobcToCiDataStru->PsdSum; kk++)*/ /*޸20180111޸ԭ򣺻ͨVOBC-CIӿڻˣVOBCCI4ֽźŻIDCIҲظźŻIDӦԽ*/ - +#if 0 signalIdInterConn = vobcToCiDataStru->signalID; /*ͨ4ֽźŻID*/ /*ظյźŻID,CI-VOBCV3.0ӿĵ޸*/ LongToChar(signalIdInterConn,&CiToVobcDataBuffer[ii]); @@ -2034,7 +2037,7 @@ static UINT8 PackCiToVobcDataHLHT(VobcToCiDataStruct *vobcToCiDataStru) if (CI_SUCCESS == retVal) { - startSigColour = GetSignalCurColor(sigId);/*ȡźŻǰʾɫ*/ + startSigColour = GetSignalShowColor(sigId);/*ȡźŻǰʾɫ*/ if (SIGNAL_OPEN == GetSignalOpenCloseState(startSigColour))/*ȡʼźŻ״̬*/ {/*źſ*/ @@ -2048,8 +2051,8 @@ static UINT8 PackCiToVobcDataHLHT(VobcToCiDataStruct *vobcToCiDataStru) /*CIյVOBC͵źŻID״̬*/ CiToVobcDataBuffer[ii++] = outStationSignalAllowOrNot; /*CI->VOBCźŻ״̬*/ +#endif -#if 0 /*ȲҹζӦΣȡԴΪⷽһεźŻĿ֮*/ trackIdRelatePhySecId = GetTrackToPhySectionId(vobcToCiDataStru->trackSecID); outStationSignalSum = GetPhySecAsOutFirstPhySecSigSum(trackIdRelatePhySecId);/*ȡԱΪⷽһεźŻĿ*/ @@ -2090,7 +2093,7 @@ static UINT8 PackCiToVobcDataHLHT(VobcToCiDataStruct *vobcToCiDataStru) /*CI->VOBCкгվźŻ״̬*/ CiToVobcDataBuffer[ii++] = outStationSignalAllowOrNotUp; /*CI_VOBCгվźŻ״̬*/ CiToVobcDataBuffer[ii++] = outStationSignalAllowOrNotDown; /*CI_VOBCгվźŻ״̬*/ -#endif + ShortToChar(CI_VOBC_INFO_TYPE_PSD_STATE,&CiToVobcDataBuffer[33]);/*ſƱֽͣ*/ } else if ((VOBC_CI_INFO_TYPE_HEART_FRAME == vobcToCiDataStru->appInfoType) && (curCycleNum == vobcToCiDataStru->ComStartCycle)) @@ -3324,8 +3327,6 @@ static UINT8 ParseIvocToCiDataFrameCC(const UINT8* pDataBuf, const UINT16 dataLe UINT16 wHeadTrainId = 0U;/*ǰID*/ UINT16 wTrainRelLgcId = 0U;/*гʹö*/ UINT16 wHeadSignalId = 0U;/*ǰźŻID*/ - UINT8 chJumpBackState = 0U;/*Ծ*/ - UINT32 dwJumpBackSN = 0U;/*Ծк*/ vobcName = (CI_SYSTEM_TYPE_VOBC) * 256U + systemId; ciName = (CI_SYSTEM_TYPE_CI) * 256U + localCiId; @@ -4383,39 +4384,6 @@ static UINT8 ParseIvocToCiDataFrameCC(const UINT8* pDataBuf, const UINT16 dataLe /*󲻼*/ } - /*Ծ*/ - if (CI_SUCCESS == chRetVal) - { - chJumpBackState = pDataBuf[ii]; - ii++; - if ((TRAIN_JUMP_BACK_STATE_VALID == chJumpBackState) - || (TRAIN_JUMP_BACK_STATE_INVALID == chJumpBackState)) - { - /*ͨ*/ - pstVobcToCiDataStru->chJumpBackApply = chJumpBackState; - dwJumpBackSN = LongFromChar(&pDataBuf[ii]); - ii += 4u; - if (((0U == dwJumpBackSN) && (TRAIN_JUMP_BACK_STATE_INVALID == chJumpBackState)) - || ((0U < dwJumpBackSN) && (TRAIN_JUMP_BACK_STATE_VALID == chJumpBackState))) - { - /*ͨ*/ - pstVobcToCiDataStru->dwJumpBackSn = dwJumpBackSN; - } - else - { - chRetVal = CI_ERROR; - } - } - else - { - chRetVal = CI_ERROR; - } - } - else - { - ; /*󲻼*/ - } - /*гϢ*/ if (CI_SUCCESS == chRetVal) { @@ -5088,10 +5056,10 @@ static UINT8 PackCiToIvocDataCC(VobcToCiDataStruct *pstVobcToCiDataStru) debug_infor_printf((const)"\n VOBC: %d PackCiToVobcSigInfo Error \n", pstVobcToCiDataStru->VobcId); } - /*ͨIVOCITEг״̬*/ + /*ͨIVOCITEȫг״̬*/ if (CI_SUCCESS == chRetVal) { - chRetVal = PackCiToIvocIteCutInfo(cszCiToIvocDataBuf, &ii); + chRetVal = PackCiToIvocIteLineCutInfo(cszCiToIvocDataBuf, &ii); } else { @@ -5107,8 +5075,9 @@ static UINT8 PackCiToIvocDataCC(VobcToCiDataStruct *pstVobcToCiDataStru) else { /**/ - debug_infor_printf((const)"\n VOBC: %d PackCiToIvocIteCutInfo Error \n", pstVobcToCiDataStru->VobcId); + debug_infor_printf((const)"\n VOBC: %d PackCiToIvocIteLineCutInfo Error \n", pstVobcToCiDataStru->VobcId); } + /*ͨIVOCгλüල״̬*/ if (CI_SUCCESS == chRetVal) { @@ -5120,17 +5089,6 @@ static UINT8 PackCiToIvocDataCC(VobcToCiDataStruct *pstVobcToCiDataStru) debug_infor_printf((const)"\n VOBC: %d PackCiToIvocFarNoOccuLogInfo Error \n", pstVobcToCiDataStru->VobcId); } - /*ͨIVOCԾظϢ*/ - if (CI_SUCCESS == chRetVal) - { - chRetVal = PackCiToIvocJumpBackReply(cszCiToIvocDataBuf, &ii, pstVobcToCiDataStru->VobcId); - } - else - { - /**/ - debug_infor_printf((const)"\n VOBC: %d PackCiToIvocPosMonitorInfo Error \n", pstVobcToCiDataStru->VobcId); - } - if (CI_SUCCESS == chRetVal) { /*ɹ*/ @@ -5138,11 +5096,11 @@ static UINT8 PackCiToIvocDataCC(VobcToCiDataStruct *pstVobcToCiDataStru) else { /**/ - debug_infor_printf((const)"\n VOBC: %d PackCiToIvocJumpBackReply Error \n", pstVobcToCiDataStru->VobcId); + debug_infor_printf((const)"\n VOBC: %d PackCiToIvocPosMonitorInfo Error \n", pstVobcToCiDataStru->VobcId); } /*Ԥ10ֽ*/ - ii += 5U; + ii += 10U; } else if ((IVOC_CI_INFO_TYPE_LOGOUT_ASK == pstVobcToCiDataStru->appInfoType) && (curCycleNum == pstVobcToCiDataStru->ComStartCycle)) {/*עظ֡*/ @@ -5468,7 +5426,7 @@ static UINT8 PackCiToIvocBackUpDataCC(VobcBackUpToCiDataStruct *pstVobcBackUpToC /*鱸ͨITEȫгϢ*/ if (CI_SUCCESS == chRetVal) { - chRetVal = PackCiToIvocIteCutInfo(cszCiToIvocDataBuf, &ii); + chRetVal = PackCiToIvocIteLineCutInfo(cszCiToIvocDataBuf, &ii); } else { @@ -5484,7 +5442,7 @@ static UINT8 PackCiToIvocBackUpDataCC(VobcBackUpToCiDataStruct *pstVobcBackUpToC else { /**/ - debug_infor_printf((const)"\n VOBC_BACKUP: %d PackCiToIvocIteCutInfo Error \n", pstVobcBackUpToCiDataStru->VobcId); + debug_infor_printf((const)"\n VOBC_BACKUP: %d PackCiToIvocIteLineCutInfo Error \n", pstVobcBackUpToCiDataStru->VobcId); } @@ -5498,7 +5456,7 @@ static UINT8 PackCiToIvocBackUpDataCC(VobcBackUpToCiDataStruct *pstVobcBackUpToC debug_infor_printf((const)"\n VOBC_BACKUP: %d PackCiToIvocFarNoOccuLogInfo Error \n", pstVobcBackUpToCiDataStru->VobcId); } - /*Ԥ8ֽ*/ + /*Ԥ10ֽ*/ ii += 8U; } else @@ -6515,7 +6473,6 @@ static UINT8 PackCiToIvocFLockInfo(UINT8* pDataBuf, UINT16 *wDataLength) UINT8 cAllLineTsrState = CI_ALL_LINE_TSR_UNVALID;/* ȫʱ */ UINT8 cAllLineTsrSpeed = 0U;/* ѩģʽ־ */ UINT8 chSecFLockType = 0U;/*η*/ - UINT8 cSnowLevel = 0U; /*ʪȼ*/ if ((NULL == pDataBuf) || (NULL == wDataLength)) @@ -6555,23 +6512,10 @@ static UINT8 PackCiToIvocFLockInfo(UINT8* pDataBuf, UINT16 *wDataLength) /* ѩģʽ */ cSnowModel = GetAllSnowModel(); - cSnowLevel = GetAllSnowLevel(); - if (CI_ALL_SNOW_VALID == cSnowModel) { /* ѩ */ - if (CI_SNOW_LEVEL_TWO == cSnowLevel) - { - pDataBuf[ii] = CI_SNOW_LEVEL_TWO; /*ѩģʽЧʪȼΪʱ0x02*/ - } - else if(CI_SNOW_LEVEL_ONE == cSnowLevel) - { - pDataBuf[ii] = CI_SNOW_LEVEL_ONE; /*ѩģʽЧʪȼΪһʱ0x01*/ - } - else - { - pDataBuf[ii] = CI_ALL_SNOW_VALID; /*ѩģʽЧʪȼΪĬֵʱ0x55*/ - } + pDataBuf[ii] = CI_ALL_SNOW_VALID; } else { @@ -6691,8 +6635,6 @@ static UINT8 PackCiToIvocCommTrainInfo(UINT8* pDataBuf, UINT16 *wDataLength) UINT8 chLinkLogicDirUpAndDown = 0u; UINT8 chTrainVirHeadScreenFlag = 0U;/*ǰɸ־*/ UINT8 chTrainVirTailScreenFlag = 0U;/*ɸ־*/ - UINT8 chTrainNvramFlag = 0U;/*гNVRAM־*/ - UINT8 chTrainReportState = 0U;/*г㱨״̬*/ if ((NULL == pDataBuf) || (NULL == wDataLength)) @@ -6828,18 +6770,8 @@ static UINT8 PackCiToIvocCommTrainInfo(UINT8* pDataBuf, UINT16 *wDataLength) } ii += 1U; /*гϢһֽƫ*/ - chTrainNvramFlag = GetTrainNvramPosFlag(wTrainId); - chTrainReportState = GetTrainReportState(wTrainId); /*״̬Ƿֱֵӷ*/ - if (TRAIN_NVRAM_POS_FLAG_YES == chTrainNvramFlag) - { - chTrainReportState = (UINT8)(chTrainReportState | 0X40U); - } - else - { - chTrainReportState = (UINT8)(chTrainReportState | 0X00U); - } - pDataBuf[ii] = chTrainReportState; + pDataBuf[ii] = GetTrainReportState(wTrainId); /*״̬Ƿֱֵӷ*/ ii += 1U; } @@ -9826,7 +9758,7 @@ static UINT8 PackCiToIvocSnowAndUrgentInfo(UINT8* pDataBuf, UINT16* pDataLength, UINT16 kk = 0U; UINT8 cAreaSnowTotalNum = 0U; /*ѩվ̨*/ UINT16 wAreaSnowNumIndex = 0U; - AreaSnowInfoStruct* pAreaSnowData = NULL; /*ѩϢ*/ + UINT32* pAreaSnowId = NULL; /*ѩվ̨ID*/ ToCiAreaSnowStruct* pRecvCiAreaSnow = NULL; /*͵ѩϢ*/ UINT8 cWlbState = 0U; /*ȫ߽ƶ״̬*/ UINT8 cUrgentReason = 0U; /*ԭ*/ @@ -9834,8 +9766,6 @@ static UINT8 PackCiToIvocSnowAndUrgentInfo(UINT8* pDataBuf, UINT16* pDataLength, EnvelopeStruct* strTrainEnvelope = NULL; /*гϢ*/ UINT16 wAxisRelPhySecId = 0U; /*ιID*/ UINT8 cUrgentState = 0U; /*͸IVOCĽ״̬*/ - UINT16 wSnowPlatId = 0U; - UINT8 cSnowLevel = 0U; /*ʪ켶*/ if ((NULL != pDataBuf) && (NULL != pDataLength) && (0U != wTrainId) && (LINE_MAX_TRAIN > wTrainId)) { @@ -9846,26 +9776,14 @@ static UINT8 PackCiToIvocSnowAndUrgentInfo(UINT8* pDataBuf, UINT16* pDataLength, wAreaSnowNumIndex = ii; /*ѩվ̨*/ ii++; cAreaSnowTotalNum = GetLocalAreaSnowNum(); - pAreaSnowData = GetLocalAreaSnow(); + pAreaSnowId = GetLocalAreaSnowId(); if (LOCAL_AREA_SNOW_SUM_MAX >= cAreaSnowTotalNum) { for (jj = 0U; jj < cAreaSnowTotalNum; jj++) { - wSnowPlatId = pAreaSnowData[jj].wAreaId; - cSnowLevel = pAreaSnowData[jj].cAreaSnowLevel; - if ((0U < wSnowPlatId) && (UINT16_MAX > wSnowPlatId) - && ((CI_SNOW_LEVEL_DEFAULT == cSnowLevel) || (CI_SNOW_LEVEL_ONE == cSnowLevel) || (CI_SNOW_LEVEL_TWO == cSnowLevel))) - { - ShortToChar(wSnowPlatId, &pDataBuf[ii]); /*ID*/ - ii += 2U; - pDataBuf[ii] = cSnowLevel; /*ʪ켶*/ - ii++; - } - else - { - retVal = CI_ERROR; /*ѩվ̨IdǷʧ*/ - } + LongToChar(pAreaSnowId[jj], &pDataBuf[ii]); /*ѩվ̨ID*/ + ii += 4U; } } else @@ -9884,21 +9802,9 @@ static UINT8 PackCiToIvocSnowAndUrgentInfo(UINT8* pDataBuf, UINT16* pDataLength, { if (LOCAL_AREA_SNOW_SUM_MAX > cAreaSnowTotalNum) { - wSnowPlatId = pRecvCiAreaSnow[kk].szPlatFormInfo[jj].wAreaId; - cSnowLevel = pRecvCiAreaSnow[kk].szPlatFormInfo[jj].cAreaSnowLevel; - if ((0U < wSnowPlatId) && (UINT16_MAX > wSnowPlatId) - && ((CI_SNOW_LEVEL_DEFAULT == cSnowLevel) || (CI_SNOW_LEVEL_ONE == cSnowLevel) || (CI_SNOW_LEVEL_TWO == cSnowLevel))) - { - ShortToChar(wSnowPlatId, &pDataBuf[ii]); /*ID*/ - ii += 2U; - pDataBuf[ii] = cSnowLevel; /*ʪ켶*/ - ii++; - cAreaSnowTotalNum++; - } - else - { - retVal = CI_ERROR; /*ѩվ̨IdǷʧ*/ - } + LongToChar(pRecvCiAreaSnow[kk].dwPlatFormId[jj], &pDataBuf[ii]); /*ѩվ̨ID*/ + ii += 4U; + cAreaSnowTotalNum++; } else { @@ -10889,14 +10795,14 @@ static UINT8 PackCiToIvocBackUpReqStateInfo(UINT8* pDataBuf, UINT16* wDataLength UINT16 kk = 0U; UINT8 chAreaSnowTotalNum = 0U; /*ѩվ̨*/ UINT16 wAreaSnowNumIndex = 0U; - AreaSnowInfoStruct* pAreaSnowData = NULL; /*ѩϢ*/ + UINT32* pAreaSnowId = NULL; /*ѩվ̨ID*/ ToCiAreaSnowStruct* pRecvCiAreaSnow = NULL; /*͵ѩϢ*/ UINT8 chTsrSureFlag = GetTsrSureFlag();/* ȷϱ־λ */ UINT8 chAllLineTsrState = 0U;/*ȫʱٱ־*/ UINT8 chAllLineTsrSpeed = 0U;/*ȫʱֵ*/ UINT8 chWlbState = 0U; /*ȫ߽ƶ״̬*/ UINT8 chSnowModel = 0U; /* ѩģʽ */ - UINT16 wSnowPlatId = 0U; + if ((NULL == pDataBuf) || (NULL == wDataLength)) { @@ -10974,22 +10880,14 @@ static UINT8 PackCiToIvocBackUpReqStateInfo(UINT8* pDataBuf, UINT16* wDataLength wAreaSnowNumIndex = ii; /*ѩվ̨*/ ii++; chAreaSnowTotalNum = GetLocalAreaSnowNum(); - pAreaSnowData = GetLocalAreaSnow(); + pAreaSnowId = GetLocalAreaSnowId(); if (ALL_AREA_SNOW_SUM_MAX >= chAreaSnowTotalNum) { for (jj = 0U; jj < chAreaSnowTotalNum; jj++) { - wSnowPlatId = pAreaSnowData[jj].wAreaId; - if ((0UwSnowPlatId)) - { - ShortToChar(wSnowPlatId, &pDataBuf[ii]); /*ѩվ̨ID*/ - ii += 2U; - } - else - { - chRetVal = CI_ERROR; /*ѩվ̨IDǷʧ*/ - } + LongToChar(pAreaSnowId[jj], &pDataBuf[ii]); /*ѩվ̨ID*/ + ii += 4U; } } else @@ -11008,17 +10906,9 @@ static UINT8 PackCiToIvocBackUpReqStateInfo(UINT8* pDataBuf, UINT16* wDataLength { if (ALL_AREA_SNOW_SUM_MAX > chAreaSnowTotalNum) { - wSnowPlatId = pRecvCiAreaSnow[kk].szPlatFormInfo[jj].wAreaId; - if ((0U < wSnowPlatId) && (UINT16_MAX > wSnowPlatId)) - { - ShortToChar(wSnowPlatId, &pDataBuf[ii]); /*ѩվ̨ID*/ - ii += 2U; - chAreaSnowTotalNum++; - } - else - { - chRetVal = CI_ERROR; /*ѩվ̨IdǷʧ*/ - } + LongToChar(pRecvCiAreaSnow[kk].dwPlatFormId[jj], &pDataBuf[ii]); /*ѩվ̨ID*/ + ii += 4U; + chAreaSnowTotalNum++; } else { @@ -12167,7 +12057,7 @@ static UINT8 PackCiToVobcBackUpStateData(UINT8* pDataBuf, UINT16* wDataLength,Vo /*鱸ͨITEȫгϢ*/ if (CI_SUCCESS == chRetVal) { - chRetVal = PackCiToIvocIteCutInfo(pDataBuf, &ii); + chRetVal = PackCiToIvocIteLineCutInfo(pDataBuf, &ii); } else { @@ -12183,7 +12073,7 @@ static UINT8 PackCiToVobcBackUpStateData(UINT8* pDataBuf, UINT16* wDataLength,Vo else { /**/ - debug_infor_printf((const)"\n FAOHLHTVOBC_BACKUP: %d PackCiToIvocIteCutInfo Error \n", pstVobcToCiDataStru->VobcId); + debug_infor_printf((const)"\n FAOHLHTVOBC_BACKUP: %d PackCiToIvocIteLineCutInfo Error \n", pstVobcToCiDataStru->VobcId); } if (CI_SUCCESS == chRetVal) @@ -12211,28 +12101,21 @@ static UINT8 PackCiToVobcBackUpStateData(UINT8* pDataBuf, UINT16* wDataLength,Vo } /* -* CiIvocITEг״̬ +* CiIvocITEȫг״̬ * ˵const UINT8* dataBuf ݻΣ * const UINT16 *dataLength ݳȣΣ * ֵCI_ERROR 0 ʧ * CI_SUCCESS 1 ɹ -* Modified By LQ 2025.04.15 +* Created By LQ 2024.07.12 */ -static UINT8 PackCiToIvocIteCutInfo(UINT8* pDataBuf, UINT16* wDataLength) +static UINT8 PackCiToIvocIteLineCutInfo(UINT8* pDataBuf, UINT16* wDataLength) { UINT8 chRetVal = CI_ERROR; UINT16 ii = 0U; UINT8 cIteLineCutState = CI_ITE_LINE_CUT_INVALID;/* ITEȫг״̬ */ - UINT16 wAreaIteCutNumIndex = 0U; - UINT8 cAreaIteCutNum = 0U; /*ITEг*/ - UINT16* pAreaIteCutId = NULL; /*ITEгID*/ - UINT8 jj = 0U; - ToCiAreaIteCutStruct* pRecvCiAreaIteCut = NULL; /*͵ITEгϢ*/ - UINT16 kk = 0U; if ((NULL != pDataBuf) && (NULL != wDataLength)) { - chRetVal = CI_SUCCESS; ii = *wDataLength; /* ITEȫг״̬ */ @@ -12245,82 +12128,11 @@ static UINT8 PackCiToIvocIteCutInfo(UINT8* pDataBuf, UINT16* wDataLength) { pDataBuf[ii] = CI_ITE_LINE_CUT_DEFAULT; /* Ĭֵ */ } + ii++; - /*鱾ITEгϢ*/ - wAreaIteCutNumIndex = ii; /*ITEг*/ - ii++; - cAreaIteCutNum = GetLocalAreaIteCutNum(); - pAreaIteCutId = GetLocalAreaIteCutId(); - - if ((ALL_AREA_SNOW_SUM_MAX >= cAreaIteCutNum) && (NULL != pAreaIteCutId)) - { - for (jj = 0U; jj < cAreaIteCutNum; jj++) - { - ShortToChar(pAreaIteCutId[jj], &pDataBuf[ii]); /*ID*/ - ii += 2U; - } - } - else - { - chRetVal = CI_ERROR; /*ITEгޣʧ*/ - debug_infor_printf((const)"\n PackCiToIvocIteCutInfo: LocalAreaIteCutInfo Error\n"); - } - - /*͵ITEгϢ*/ - pRecvCiAreaIteCut = GetCiRecvAreaIteCutInfo(); - if (NULL != pRecvCiAreaIteCut) - { - for (kk = 0U; kk < CI_COM_CI_MAX_NUM; kk++) - { - if (0U != pRecvCiAreaIteCut[kk].cAreaIteCutNum) - { - for (jj = 0U; jj < pRecvCiAreaIteCut[kk].cAreaIteCutNum; jj++) - { - if (ALL_AREA_SNOW_SUM_MAX > cAreaIteCutNum) - { - ShortToChar(pRecvCiAreaIteCut[kk].wAreaIteCutId[jj], &pDataBuf[ii]); /*ID*/ - ii += 2U; - cAreaIteCutNum++; - } - else - { - debug_infor_printf((const)"\n PackCiToIvocIteCutInfo: LocalAreaIteCutNum Error\n"); - chRetVal = CI_ERROR; /*ITEгޣʧ*/ - break; - } - } - } - else - { - /**/ - } - - if (CI_SUCCESS != chRetVal) - { - break; /*ʧܣֹͣ*/ - } - else - { - /**/ - } - } - } - else - { - debug_infor_printf((const)"\n PackCiToIvocIteCutInfo: CiRecvAreaIteCutInfo Error\n"); - chRetVal = CI_ERROR; /*ȡʧܣʧ*/ - } - - if (CI_SUCCESS == chRetVal) - { - pDataBuf[wAreaIteCutNumIndex] = cAreaIteCutNum; /*ITEг*/ - *wDataLength = ii; /*ݳ*/ - } - else - { - chRetVal = CI_ERROR; /*ʧܣʧ*/ - } + *wDataLength = ii; /*ݳ*/ + chRetVal = CI_SUCCESS; } else { @@ -12437,244 +12249,4 @@ static UINT8 PackCiToIvocPosMonitorInfo(UINT8* pDataBuf, UINT16* wDataLength, co } return chRetVal; -} - -/* -* طɳ崻 -* ˵ -* ֵ -* by cgh 20250630 -*/ -void PackCiToVobcFlyProtectData(void) -{ - UINT8 jj = 0U; - UINT8 chLineIdentity = GetCiFunctionSwitchConfig(VOBC_INTERFACE_IDENTITY); - UINT8 chFlyProtectTrainNum = GetFlyProtectNum(); /*ɳ崻Ŀ*/ - TrainFlyProtectStru* pFlyData = NULL; /*ɳ崻*/ - UINT8 cNvramFlyProtectNum = 0U; /*ʹNVRAMλüලЧķɳ*/ - UINT16* pNvramFlyProtectId = NULL; /*ʹNVRAMλüලЧķɳID*/ - - cNvramFlyProtectNum = GetNvramFlyProtectNum(); /*ȡʹNVRAMλüලЧķɳ*/ - pNvramFlyProtectId = GetNvramFlyProtectId(); /*ȡʹNVRAMλüලЧķɳID*/ - if ((LINE_CC == chLineIdentity) - && (SHUT_DOWN_TRAIN_NUMMAX > chFlyProtectTrainNum) - && (SHUT_DOWN_TRAIN_NUMMAX > cNvramFlyProtectNum) && (NULL != pNvramFlyProtectId)) - { - /*ɳ崻ķɳؿر*/ - for (jj = 0U; jj < chFlyProtectTrainNum; jj++) - { - pFlyData = GetFlyProtectData(jj); - if (NULL != pFlyData) - { - PackCiToVobcFlyProtectInfo(pFlyData->wTrainId); - } - else - { - ; /**/ - } - } - - /*ɳ崻ķɳؿر*/ - for (jj = 0U; jj < cNvramFlyProtectNum; jj++) - { - PackCiToVobcFlyProtectInfo(pNvramFlyProtectId[jj]); - } - } - else - { - ; /*ӿ޴֡*/ - } -} - -/* -* RCطɳ崻Ϣ -* ˵const UINT16 wTrainId гID -* ֵ -* Created By LQ 2025.09.15 -*/ -void PackCiToVobcFlyProtectInfo(const UINT16 wTrainId) -{ - UINT16 wBufIndex = 0U; - UINT8 ii = 0U; - UINT8 cszCiToIvocDataBuf[VOBC_TO_CI_DATA_LEN_MAX] = { 0U };/*CIVOBC֡*/ - UINT16 wDataIndex = 0U; /**/ - UINT8 chLocalCiId = 0U; /*ID*/ - UINT32 dwCiEtcsId = 0U; /*ͨ*/ - UINT32 dwVobcEtcsId = 0U; /*ػͨID*/ - UINT32 dwEmapCheckVer = 0U; /*ӵͼݰ汾*/ - UINT8 chTempResult = 0U;/*ʱ*/ - UINT32 dwCurCycleNum = 0U; /*ǰں*/ - UINT32 dwAppCycleTime = 0U; - UINT32 dwSrcCrntSN = 0U; - UINT32 dwCiRcvSN = 0U; - UINT16 wDstDevId = 0U; /*Ŀ豸ID*/ - - wBufIndex = GetTrainBufIndex(wTrainId); - chLocalCiId = GetSystemParaLocalCiId(); /*ID*/ - if ((TRAIN_SUM_MAX > wBufIndex) && (0U != chLocalCiId)) - { - dwCurCycleNum = Get2oo2CurCycleNum(); /*ǰں*/ - dwAppCycleTime = GetSystemParaAppCycleTime(); - for (ii = 0U; ii < VobcToCiSum; ii++) - { - if (VobcToCiDataStru[ii].VobcId == wTrainId) - { - break; - } - else - { - /*Ƚ*/ - } - } - - if (ii == VobcToCiSum) - { - ; /*ûҵǰ͸óͨţ*/ - } - else - { - /*ʼ*/ - chTempResult = dquDevName2HlhtId((CI_SYSTEM_TYPE_CI * 256U) + chLocalCiId, 0U, &dwCiEtcsId); - chTempResult &= dquDevName2HlhtId((CI_SYSTEM_TYPE_VOBC * 256U) + (UINT8)(VobcToCiDataStru[ii].VobcId), VobcToCiDataStru[ii].vobcLogId, &dwVobcEtcsId); - chTempResult &= GetCiEmapCheckVer(chLocalCiId, &dwEmapCheckVer, CI_SYSTEM_TYPE_VOBC); - - if (CI_SUCCESS == chTempResult) - { - dwSrcCrntSN = GetHLHTHeadCtxSrcCrntSN(CI_SYSTEM_TYPE_VOBC, (UINT8)(VobcToCiDataStru[ii].VobcId)); - dwCiRcvSN = GetHLHTHeadCtxCiRcvSN(CI_SYSTEM_TYPE_VOBC, (UINT8)(VobcToCiDataStru[ii].VobcId)); - wDataIndex = 0U; - - ShortToChar(IVOC_CI_INTERFACE_INFOTYPE, &cszCiToIvocDataBuf[wDataIndex]);/*ӿϢ*/ - wDataIndex += 2U; - LongToChar(dwCiEtcsId, &cszCiToIvocDataBuf[wDataIndex]);/*ͷʶϢ*/ - wDataIndex += 4U; - LongToChar(dwVobcEtcsId, &cszCiToIvocDataBuf[wDataIndex]);/*շʶϢ*/ - wDataIndex += 4U; - LongToChar(dwEmapCheckVer, &cszCiToIvocDataBuf[wDataIndex]);/*ӵͼ汾УϢ*/ - wDataIndex += 4U; - LongToChar(dwCurCycleNum, &cszCiToIvocDataBuf[wDataIndex]);/*Ϣк*/ - wDataIndex += 4U; - ShortToChar((UINT16)dwAppCycleTime, &cszCiToIvocDataBuf[wDataIndex]);/*豸ͨѶ*/ - wDataIndex += 2U; - LongToChar(dwSrcCrntSN, &cszCiToIvocDataBuf[wDataIndex]);/*ԷϢкţrecvOppMsgSN¼յԷһϢеĶԷϢк*/ - wDataIndex += 4U; - LongToChar(dwCiRcvSN, &cszCiToIvocDataBuf[wDataIndex]);/*յһϢʱк*/ - wDataIndex += 4U; - cszCiToIvocDataBuf[wDataIndex] = CI_VOBC_PRTCL_VER;/*HLHT+FAO_CI_VOBCӿЭ汾*/ - wDataIndex++; - - wDataIndex += 2U;/*ͨñͷеӦò㱨ܳ*/ - /*ΪӦò*/ - wDataIndex += 2U;/*ij*/ - ShortToChar(CI_IVOC_INFO_TYPE_SPECIAL_CONTROL, &cszCiToIvocDataBuf[wDataIndex]); - wDataIndex += 2U;/*Ӧñ*/ - wDataIndex += 2U;/*Ԥֽ*/ - - /*ؿر*/ - cszCiToIvocDataBuf[wDataIndex] = CI_IVOC_LOST_POSITION; - wDataIndex++; - - /*Ӧòݵıij */ - cszCiToIvocDataBuf[31U] = (UINT8)((UINT8)((wDataIndex - 33U) >> 8U) & 0xFFU); - cszCiToIvocDataBuf[32U] = (UINT8)((wDataIndex - 33U) & 0xFFU); - - /*ͨñͷӦò㱨ܳ*/ - cszCiToIvocDataBuf[29U] = (UINT8)((UINT8)((wDataIndex - 31U) >> 8U) & 0xFFU); - cszCiToIvocDataBuf[30U] = (UINT8)((wDataIndex - 31U) & 0xFFU); - - wDstDevId = ((UINT16)(CI_SYSTEM_TYPE_VOBC << 8U) | VobcToCiDataStru[ii].VobcId); - chTempResult = OutnetSafeSend(wDstDevId, (VobcToCiDataStru[ii].vobcLogId), &cszCiToIvocDataBuf[0], wDataIndex); - - if (1U == chTempResult) - { /*дгɹ*/ -#ifdef LOGPRINT/*־ӡ*/ -#ifdef PLATFORM_2OO2/*2oo2ƽ̨ӡ*/ - debug_infor_printf((const)"\nVOBCFLYPROTECT_SEND:%d vobc:%d", wDataIndex, VobcToCiDataStru[ii].VobcId); - debug_out_array(0xAA, cszCiToIvocDataBuf, wDataIndex); -#endif/*ƽ̨ӡ*/ -#endif - } - else - { - debug_infor_printf((const)"\nWrite VOBC %d FLYPROTECT Error, Len = %d\n", VobcToCiDataStru[ii].VobcId, wDataIndex); - } - } - else - { - /**/ - debug_infor_printf((const)"\nvobc %d PackCiToVobcFlyProtectInfo errordwCiEtcsId%d dwVobcEtcsId%d dwEmapCheckVer%d \n", VobcToCiDataStru[ii].VobcId, dwCiEtcsId, dwVobcEtcsId, dwEmapCheckVer); - } - } - } - else - { - ; /*ӿ޴֡*/ - } - -} - -/* -* CiIvocԾظ -* ˵ UINT8* dataBuf, ݻ -* UINT16 *dataLength, ݳ -* UINT16 wTrainId гID -* ֵCI_ERROR 0 ʧ -* CI_SUCCESS 1 ɹ -* Create fan 20250725 -*/ -UINT8 PackCiToIvocJumpBackReply(UINT8* pDataBuf, UINT16* wDataLength, UINT16 wTrainId) -{ - UINT8 chRetVal = CI_ERROR; - UINT16 ii = 0U; - UINT8 chJumpBackReplyState = 0U; - UINT32 dwJumpBackSn = 0U; - - if ((NULL == pDataBuf) || (NULL == wDataLength)) - { - chRetVal = CI_ERROR; - } - else - { - - ii = *wDataLength; - chRetVal = CI_SUCCESS; - - - chJumpBackReplyState = GetTrainJumpBackReplyState(wTrainId); - if ((TRAIN_JUMP_BACK_STATE_NONE == chJumpBackReplyState) - || (TRAIN_JUMP_BACK_STATE_VALID == chJumpBackReplyState) || (TRAIN_JUMP_BACK_STATE_INVALID == chJumpBackReplyState)) - { - pDataBuf[ii] = chJumpBackReplyState; - ii++; - - if (TRAIN_JUMP_BACK_STATE_NONE == chJumpBackReplyState) - { - LongToChar(0U, &pDataBuf[ii]); - ii += 4U; - } - else - { - /*ظк*/ - dwJumpBackSn = GetTrainJumpBackApplySN(wTrainId); - LongToChar(dwJumpBackSn, &pDataBuf[ii]); - ii += 4U; - } - } - else - { - chRetVal = CI_ERROR; - } - } - - if (CI_SUCCESS == chRetVal) - { - *wDataLength = ii; - } - else - { - chRetVal = CI_ERROR; - } - - return chRetVal; - } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackVobcData.h b/TSCP/src/APP/ciapp/ParsePack/ParsePackVobcData.h index f554a8e..124cb4e 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackVobcData.h +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackVobcData.h @@ -102,7 +102,6 @@ #define CI_IVOC_INFO_TYPE_LOGOUT_ACK ((UINT16)0x0204U) /*OC->IVOCעظ֡*/ #define IVOC_CI_INFO_TYPE_HEART_FRAME ((UINT16)0x0205U) /*IVOC->OC֡*/ #define CI_IVOC_INFO_TYPE_HEART_FRAME ((UINT16)0x0206U) /*OC->IVOC֡*/ -#define CI_IVOC_INFO_TYPE_SPECIAL_CONTROL ((UINT16)0x0208U) /*rc->IVOCؿر֡*/ #define CI_IVOC_PRTCL_VER ((UINT8)0x01U) /*CI_VOBCЭ汾*/ #define CI_IVOC_BACKUP_PRTCL_VER ((UINT8)0x066) /*CI_VOBCͨЭ汾*/ @@ -223,8 +222,6 @@ #define CI_VOBC_BACKUP_SEND_ROUTE_SUM ((UINT8)5U) /*CIغͨ·ֵ*/ -#define CI_IVOC_LOST_POSITION ((UINT8)0x55U) /*CIؿر λ*/ - #ifdef __cplusplus extern "C" { #endif @@ -356,8 +353,6 @@ typedef struct S_VobcToCiDataStruct UINT8 chNvramPosFlag; /*NVNAMλñʶ 0x55гʹNVRAMλ 0xaaгδʹNVRAMλ*/ UINT16 wHeadSigId; /*ǰźŻID*/ UINT16 wHeadVobcId; /*ǰID*/ - UINT8 chJumpBackApply; /*Ծ*/ - UINT32 dwJumpBackSn; /*Ծк*/ } VobcToCiDataStruct; /*ʹúģʽͨŵVobcϢ*/ @@ -688,32 +683,6 @@ UINT8 ParseFAOHLHTOtherTypeData(const UINT16 appInfoType, UINT8* dataBuf, UINT16 */ UINT8 ParseFAOHLHTBackUpControlData(UINT8* dataBuf, UINT16 dataLen, VobcToCiDataStruct* vobcToCiDataStru); -/* -* طɳ崻 -* ˵ -* ֵ -* by cgh 20250630 -*/ -void PackCiToVobcFlyProtectData(void); - -/* -* RCطɳ崻Ϣ -* ˵const UINT16 wTrainId гID -* ֵ -* Created By LQ 2025.09.15 -*/ -void PackCiToVobcFlyProtectInfo(const UINT16 wTrainId); - -/* -* CiIvocԾظ -* ˵ UINT8* dataBuf, ݻ -* UINT16 *dataLength, ݳ -* UINT16 wTrainId гID -* ֵCI_ERROR 0 ʧ -* CI_SUCCESS 1 ɹ -* Create fan 20250725 -*/ -UINT8 PackCiToIvocJumpBackReply(UINT8* pDataBuf, UINT16* wDataLength, UINT16 wTrainId); #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackZcData.c b/TSCP/src/APP/ciapp/ParsePack/ParsePackZcData.c index f7bec68..bed6509 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackZcData.c +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackZcData.c @@ -58,9 +58,6 @@ UINT8 ParseZcToCiDataFrame(UINT8* dataBuf, UINT16 dataLength, UINT8 systemId) UINT16 wMsgLen = 0u; /*ӦϢȼ¼*/ UINT16 wMsgType = 0u; /*ӦϢ*/ UINT16 wMsgCheckLen = 0u; /* ڽУݳ */ - UINT8 funRet = 0U; - UINT32 dwCurCyc = 0U; - UINT8 chDataType = 0U; lineIdentity = GetCiFunctionSwitchConfig(VOBC_INTERFACE_IDENTITY);/*ȡ·ʶ*/ @@ -69,7 +66,7 @@ UINT8 ParseZcToCiDataFrame(UINT8* dataBuf, UINT16 dataLength, UINT8 systemId) zcName = (CI_SYSTEM_TYPE_ZC)*256U + systemId; ciName = (CI_SYSTEM_TYPE_CI)*256U + localCiId; curntCycleNo = Get2oo2CurCycleNum(); - chDataType = GetLocalPublicDataType(); /*28.0.0.14·zcӿ*/ + if ((NULL != dataBuf) && (dataLength > 0u)) { sourceId = GetCiTransmitSpecifySysDevBuf(CI_SYSTEM_TYPE_ZC);/*ȡ뱾ͨŵZCIDĿǰһֻһZCͨ*/ @@ -131,121 +128,102 @@ UINT8 ParseZcToCiDataFrame(UINT8* dataBuf, UINT16 dataLength, UINT8 systemId) /*Ч*/ retVal = CI_SUCCESS; { - if (DATA_TYPE_NEW == chDataType) + while (wTmpDataLen < hlhtGalHead.totalDataLen) { - while (wTmpDataLen < hlhtGalHead.totalDataLen) + /* һӦݳ */ + wMsgLen = ShortFromChar(&dataBuf[ii]); + + ii += 2u; + wTmpDataLen += 2U; + wTmpDataLen += wMsgLen; + + if (0u == wMsgLen) { - /* һӦݳ */ - wMsgLen = ShortFromChar(&dataBuf[ii]); - - ii += 2u; - wTmpDataLen += 2U; - wTmpDataLen += wMsgLen; - - if (0u == wMsgLen) - { - ; /* ޴һ */ - } - else if (5u > wMsgLen) - { - /* Ȳ */ - retVal = CI_ERROR; - debug_infor_printf((const)"ParseZcToCiDataFrame_Error wMsgLen\n"); - } - else - { - /* ȡ */ - wMsgType = ShortFromChar(&dataBuf[ii]); - ii += 2u; - - /* Ԥ */ - ii += 2u; - - wMsgCheckLen = wMsgLen - 4u;/*ӦñĽȣɾԤ22ֽ*/ - switch (wMsgType) - { - case ZC_TO_TIOC_MASK_MSG: - /* ZC-CIλϢ */ - retVal = ParseMaskData(&dataBuf[ii], wMsgCheckLen); - dwStep |= 0x10000U; - break; - case ZC_TO_TIOC_TSR_MSG: - /* ʱϢ */ - retVal = ParseZcTsrData(&dataBuf[ii], wMsgCheckLen); - dwStep |= 0x01000U; - break; - case ZC_TO_TIOC_WLB_MSG: - /* ƶϢ */ - retVal = ParseZcEbData(&dataBuf[ii], wMsgCheckLen); - dwStep |= 0x00100U; - break; - case ZC_TO_TIOC_SNOW_MSG: - /*ZC-CIѩģʽϢ*/ - retVal = ParseZcSnowData(&dataBuf[ii], wMsgCheckLen); - dwStep |= 0x00010U; - break; - case ZC_TO_TIOC_ITELINECUT_MSG: - /*ZC-CIITEгϢ*/ - retVal = ParseZcIteCutData(&dataBuf[ii], wMsgCheckLen); - dwStep |= 0x00001U; - break; - default: - retVal = CI_ERROR; - break; - } - - if (CI_SUCCESS == retVal) - { - /* ɹݰ */ - ii += wMsgCheckLen; - } - else - { - debug_infor_printf((const)"ParseZcToCiDataFrame_Error Step: 0x%5x\n", dwStep); - ClearZcData(); /*ⲽûͨ*/ - } - } - - if (CI_ERROR == retVal) /*ʧ*/ - { - break; - } - else - { - ; /*do nothing*/ - } + ; /* ޴һ */ } - if (CI_SUCCESS == retVal) + else if (5u > wMsgLen) { - /*Уݳ*/ - if (ii > dataLength) - { - retVal = CI_ERROR; - } - } - } - else - { - /*ޱ͡ͳȺԤ߱λ0201*/ - wMsgCheckLen = hlhtGalHead.totalDataLen; - retVal = ParseMaskData(&dataBuf[ii], wMsgCheckLen); - if (CI_ERROR == retVal) - { - debug_infor_printf((const)"\nParseZcToCiDataFrame_Error MaskOnly\n"); - ClearZcData(); /*ûͨ*/ + /* Ȳ */ + retVal = CI_ERROR; + debug_infor_printf((const)"ParseZcToCiDataFrame_Error wMsgLen\n"); } else { - ; /**/ + /* ȡ */ + wMsgType = ShortFromChar(&dataBuf[ii]); + ii += 2u; + + /* Ԥ */ + ii += 2u; + + wMsgCheckLen = wMsgLen - 4u;/*ӦñĽȣɾԤ22ֽ*/ + switch (wMsgType) + { + case ZC_TO_TIOC_MASK_MSG: + /* ZC-CIλϢ */ + retVal = ParseMaskData(&dataBuf[ii], wMsgCheckLen); + dwStep |= 0x10000U; + break; + case ZC_TO_TIOC_TSR_MSG: + /* ʱϢ */ + retVal = ParseZcTsrData(&dataBuf[ii], wMsgCheckLen); + dwStep |= 0x01000U; + break; + case ZC_TO_TIOC_WLB_MSG: + /* ƶϢ */ + retVal = ParseZcEbData(&dataBuf[ii], wMsgCheckLen); + dwStep |= 0x00100U; + break; + case ZC_TO_TIOC_SNOW_MSG: + /*ZC-CIѩģʽϢ*/ + retVal = ParseZcSnowData(&dataBuf[ii], wMsgCheckLen); + dwStep |= 0x00010U; + break; + case ZC_TO_TIOC_ITELINECUT_MSG: + /*ZC-CIITEгϢ*/ + retVal = ParseZcIteLineCutData(&dataBuf[ii], wMsgCheckLen); + dwStep |= 0x00001U; + break; + default: + retVal = CI_ERROR; + break; + } + + if (CI_SUCCESS == retVal) + { + /* ɹݰ */ + ii += wMsgCheckLen; + } + else + { + debug_infor_printf((const)"ParseZcToCiDataFrame_Error Step: 0x%5x\n", dwStep); + ClearZcData(); /*ⲽûͨ*/ + } + } + + if (CI_ERROR == retVal) /*ʧ*/ + { + break; + } + else + { + ; /*do nothing*/ + } + } + + if (CI_SUCCESS == retVal) + { + /*Уݳ*/ + if (ii > dataLength) + { + retVal = CI_ERROR; } } if (CI_SUCCESS == retVal) { /*ͨ*/ - dwCurCyc = Get2oo2CurCycleNum(); - funRet = SetCiTransmitRecvDataCycNum(localCiId, CI_SYSTEM_TYPE_ZC, sourceId[0], dwCurCyc); - if (CI_ERROR == funRet) + if (SetCiTransmitRecvDataCycNum(GetSystemParaLocalCiId(), CI_SYSTEM_TYPE_ZC, sourceId[0], Get2oo2CurCycleNum()) == CI_ERROR) {/*ʧ*/ } @@ -253,8 +231,7 @@ UINT8 ParseZcToCiDataFrame(UINT8* dataBuf, UINT16 dataLength, UINT8 systemId) {/*ڳɹ*/ /*ZCͨ״̬жZCǷͨж*/ - funRet = UpdateCiTransmitState(localCiId, CI_SYSTEM_TYPE_ZC, sourceId[0]); - if (CI_ERROR == funRet) + if (UpdateCiTransmitState(GetSystemParaLocalCiId(), CI_SYSTEM_TYPE_ZC, sourceId[0]) == CI_ERROR) { /*ͨ״̬ʧ*/ } @@ -911,13 +888,12 @@ UINT8 ParseZcSnowData(UINT8* dataBuf, UINT16 dataLen) UINT8 cRetVal = CI_ERROR; UINT16 ii = 0u; UINT8 jj = 0U; - UINT16 wPlatFormId = 0U; /*վ̨ͨID*/ + UINT16 dwPlatFormId = 0U; /*վ̨ͨID*/ UINT8 cPlatFormNum = 0U; /*ZCѩվ̨*/ UINT8 cTmepNum = 0U;/*ѩվ̨*/ UINT8 cPlatFormBelongCiId = 0U; /*վ̨LinkCI*/ UINT8 cLocalCiId = 0U; UINT8 chLocalSnowValidFlag = 0U; /*ѩЧ־*/ - UINT8 cAllLineSnowLevel = 0U; /*ȫʪ켶*/ if (NULL == dataBuf) { @@ -964,18 +940,17 @@ UINT8 ParseZcSnowData(UINT8* dataBuf, UINT16 dataLen) cLocalCiId = GetSystemParaLocalCiId(); for (jj = 0U; jj < cPlatFormNum; jj++) { - wPlatFormId = ShortFromChar(&dataBuf[ii]); /*ѩվ̨ID*/ + dwPlatFormId = ShortFromChar(&dataBuf[ii]); /*ѩվ̨ID*/ ii += 2U; - cPlatFormBelongCiId = GetAreaSnowPlatFormBelongCiId(wPlatFormId); /*ȡѩվ̨*/ - if ((0U < wPlatFormId)&& (UINT16_MAX > wPlatFormId)) + cPlatFormBelongCiId = GetAreaSnowPlatFormBelongCiId(dwPlatFormId); /*ȡѩվ̨*/ + if (0U != dwPlatFormId) { if (cLocalCiId == cPlatFormBelongCiId) { /*վ̨ڱ*/ if (LOCAL_AREA_SNOW_SUM_MAX > cTmepNum) { - ZcToCiDataStru.szAreaSnowInfo[cTmepNum].wAreaId = wPlatFormId; - ZcToCiDataStru.szAreaSnowInfo[cTmepNum].cAreaSnowLevel = CI_SNOW_LEVEL_DEFAULT; /*CIģʽʪȼΪĬֵ(TMC)*/ + ZcToCiDataStru.szAreaSnowPlatFormId[cTmepNum] = (UINT32)dwPlatFormId; cTmepNum++; } else @@ -993,7 +968,7 @@ UINT8 ParseZcSnowData(UINT8* dataBuf, UINT16 dataLen) else { cRetVal = CI_ERROR; /*ѩվ̨IdǷʧ*/ - debug_infor_printf((const)"ParseZcToCiSNOW_Error wPlatFormId\n"); + debug_infor_printf((const)"ParseZcToCiSNOW_Error dwPlatFormId\n"); } } @@ -1068,7 +1043,6 @@ UINT8 PackCiToZcData( UINT8 deviceId) UINT32 dwHlhtHSrcSN = 0u; UINT32 dwHlhtHRcvSN = 0u; UINT16 totallenIndex = 0U; - UINT8 chDataType = 0U; localCi = GetSystemParaLocalCiId(); /*ȡID*/ ci_zcPrtclVersion = GetVersionOfZCToCI(); @@ -1078,7 +1052,6 @@ UINT8 PackCiToZcData( UINT8 deviceId) dwHlhtHSrcSN = GetHLHTHeadCtxSrcCrntSN(CI_SYSTEM_TYPE_ZC, deviceId); dwHlhtHRcvSN = GetHLHTHeadCtxCiRcvSN(CI_SYSTEM_TYPE_ZC, deviceId); CiEmapCheckVer = GetCiEmapCheckVer(localCi, &emapCheckVer, CI_SYSTEM_TYPE_ZC); - chDataType = GetLocalPublicDataType(); if ((CI_SUCCESS == CIName2HlhtId) && (CI_SUCCESS == ZCName2HlhtId) && (CI_SUCCESS == CiEmapCheckVer)) { retVal = CI_SUCCESS; @@ -1147,19 +1120,13 @@ UINT8 PackCiToZcData( UINT8 deviceId) totallenIndex = ii; ii += 2u;/*ͨñͷеӦò㱨ܳ*/ - if (DATA_TYPE_NEW == chDataType) - { - ii += 2u;/*ͨñͷеӦò㱨ij(0x202ij)*/ - ShortToChar(TIOC_TO_ZC_MASK_MSG, &CiToZcDataBuffer[ii]);/*ӿϢ*/ - ii += 2u; + ii += 2u;/*ͨñͷеӦò㱨ij(0x202ij)*/ - ii += 2u; /*Ԥ*/ - } - else - { - ;/*·0x202ijȡͼԤ*/ - } + ShortToChar(TIOC_TO_ZC_MASK_MSG, &CiToZcDataBuffer[ii]);/*ӿϢ*/ + ii += 2u; + + ii += 2u; /*Ԥ*/ /*λϢ*/ (void)MaskPack(CI_SYSTEM_TYPE_ZC,&CiToZcDataBuffer[ii]); @@ -1167,12 +1134,11 @@ UINT8 PackCiToZcData( UINT8 deviceId) /*ͨñͷӦò㱨ܳ*/ ShortToChar(ii - totallenIndex - 2U, &CiToZcDataBuffer[totallenIndex]); - if (DATA_TYPE_NEW == chDataType) - { - /*ͨӦò㱨ij(0x202ij)*/ - totallenIndex += 2U; - ShortToChar(ii - totallenIndex - 2U, &CiToZcDataBuffer[totallenIndex]); - } + + /*ͨӦò㱨ܳ*/ + totallenIndex += 2U; + ShortToChar(ii - totallenIndex - 2U, &CiToZcDataBuffer[totallenIndex]); + /*ZC*/ ClearZcData(); @@ -1356,25 +1322,21 @@ ZcToCiDataStruct* GetZcToCiDataStru(void) } /* -* ZCCIITEг״̬ +* ZCCIITEȫг״̬ * ˵INT8* dataBuf ݻ * UINT16 dataLength ݳ * ֵCI_ERROR 0 ݽʧ * CI_SUCCESS 1 ݽɹ -* Edit By LQ 2025.04.15 +* Created By LQ 2024.07.12 */ -UINT8 ParseZcIteCutData(UINT8* dataBuf, UINT16 dataLen) +UINT8 ParseZcIteLineCutData(UINT8* dataBuf, UINT16 dataLen) { UINT8 cRetVal = CI_ERROR; UINT8 cIteLineCutState = CI_ITE_LINE_CUT_INVALID; /*ZC͵ITEȫг״̬*/ UINT16 ii = 0U; - UINT8 jj = 0U; - UINT16 wPlatFormId = 0U; /*վ̨ID*/ - UINT8 cPlatFormNum = 0U; /*ZCITEг*/ if (NULL != dataBuf) { - cRetVal = CI_SUCCESS; /*ZC͵ITEȫг״̬*/ cIteLineCutState = dataBuf[ii]; ii++; @@ -1383,56 +1345,19 @@ UINT8 ParseZcIteCutData(UINT8* dataBuf, UINT16 dataLen) { ZcToCiDataStru.cIteLineCutState = cIteLineCutState; - cPlatFormNum = dataBuf[ii]; /*ITEг*/ - ii++; - - if (ALL_AREA_SNOW_SUM_MAX >= cPlatFormNum) + if (dataLen == ii) { - ZcToCiDataStru.cAreaIteCutNum = cPlatFormNum; - - for (jj = 0U; jj < cPlatFormNum; jj++) - { - wPlatFormId = ShortFromChar(&dataBuf[ii]); /*ID*/ - ii += 2U; - - if ((0U < wPlatFormId) && (UINT16_MAX > wPlatFormId)) - { - ZcToCiDataStru.szAreaIteCutId[jj] = wPlatFormId; - } - else - { - debug_infor_printf((const)"ParseZcIteCutData: PlatFormId Error\n"); - cRetVal = CI_ERROR; /*IDǷʧ*/ - break; - } - } - - if (CI_SUCCESS == cRetVal) - { - if (dataLen != ii) - { - debug_infor_printf((const)"ParseZcIteCutData: Msg Len Error\n"); - cRetVal = CI_ERROR; - } - else - { - /**/ - } - } - else - { - /**/ - } + cRetVal = CI_SUCCESS; } else { - debug_infor_printf((const)"ParseZcIteCutData: ZC AreaIteCutNum Error\n"); - cRetVal = CI_ERROR; /*ZCITEгޣʧ*/ + debug_infor_printf((const)"ParseZcIteLineCutData Error: MsgLen Is Error\n"); + cRetVal = CI_ERROR; /*Ȳһ£ʧ*/ } } else { - debug_infor_printf((const)"ParseZcIteCutData Error: IteLineCutState Error\n"); + debug_infor_printf((const)"ParseZcIteLineCutData Error: IteLineCutState Is Invalid\n"); cRetVal = CI_ERROR; /*״̬Ƿʧ*/ } } diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackZcData.h b/TSCP/src/APP/ciapp/ParsePack/ParsePackZcData.h index ff0f396..6bec290 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackZcData.h +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackZcData.h @@ -33,7 +33,7 @@ #define ZC_TO_TIOC_TSR_MSG ((UINT16)0x0203u) /*ZCTIOCʱϢ*/ #define ZC_TO_TIOC_WLB_MSG ((UINT16)0x0204u) /*ZCTIOCƶϢ*/ #define ZC_TO_TIOC_SNOW_MSG ((UINT16)0x0205u) /*ZCTIOCѩģʽϢ*/ -#define ZC_TO_TIOC_ITELINECUT_MSG ((UINT16)0x0206U) /*ZCTIOCȫITEг״̬Ϣ*/ +#define ZC_TO_TIOC_ITELINECUT_MSG ((UINT16)0x0206U) /*ZCTIOCITEг״̬Ϣ*/ #define ZC_TSR_VALID ((UINT8)0x55U) /*ZCʱЧ*/ #ifdef __cplusplus @@ -59,11 +59,9 @@ typedef struct S_ZcToCiDataStruct EbInputInfoStruct esbInputInfoStruct; /*ƶϢ*/ UINT8 cSnowValidFlag; /* ȫѩģʽЧ־ */ UINT8 cAreaSnowPlatFormNum; /*ѩվ̨*/ - AreaSnowInfoStruct szAreaSnowInfo[LOCAL_AREA_SNOW_SUM_MAX]; /*ѩ*/ + UINT32 szAreaSnowPlatFormId[LOCAL_AREA_SNOW_SUM_MAX]; /*ѩվ̨ID*/ UINT8 chLocalSnowValidFlag; /* ѩģʽЧ־ */ UINT8 cIteLineCutState; /* ITEȫг״̬ */ - UINT8 cAreaIteCutNum; /*ITEг*/ - UINT16 szAreaIteCutId[ALL_AREA_SNOW_SUM_MAX]; /*ITEгID*/ } ZcToCiDataStruct; /*ͨųλϢ*/ @@ -198,14 +196,14 @@ UINT8 ParseZcSnowData(UINT8* dataBuf, UINT16 dataLen); ZcToCiDataStruct* GetZcToCiDataStru(void); /* -* ZCCIITEг״̬ +* ZCCIITEȫг״̬ * ˵INT8* dataBuf ݻ * UINT16 dataLength ݳ * ֵCI_ERROR 0 ݽʧ * CI_SUCCESS 1 ݽɹ * Created By LQ 2024.07.12 */ -UINT8 ParseZcIteCutData(UINT8* dataBuf, UINT16 dataLen); +UINT8 ParseZcIteLineCutData(UINT8* dataBuf, UINT16 dataLen); #ifdef __cplusplus } diff --git a/TSCP/src/APP/ciapp/QueryFiles/dquCIInit.c b/TSCP/src/APP/ciapp/QueryFiles/dquCIInit.c index 8cb8ad0..cb49b3a 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dquCIInit.c +++ b/TSCP/src/APP/ciapp/QueryFiles/dquCIInit.c @@ -102,16 +102,6 @@ static UINT8 NonAutoReturnStructInit(CHAR* FSName); *********************************************/ static UINT8 NonReturnStruFromDquStr(DSU_AR_STRU* pNonReturn, NonAutoReturnConfigDataStruct* pNonReturnCfgDtStr); -/* -*: ʼLINK -*: CHAR * FSName ļָ -*: -*ֵ: 0 ʧ -* 1 ɹ -* by cgh 20250818 -*/ -static UINT8 LinkSpecialEaDataInit(CHAR* FSName); - /********************************************* *ܣʼ̵еĽṹ壬ʼϵͳݡͨݣ * ʼվźŻ߼/ݡʼ豸̵ݡʼ/߼ݡ @@ -165,7 +155,7 @@ UINT8 RelayInit(CHAR* FSName) if (CI_PATTERN_FULL_ELECTRONIC == localCiPattern) { /*ʼOC ñ*/ - if (DATA_TYPE_OLD == chLocalOc) + if (OC_DATA_TYPE_OLD == chLocalOc) { funcRtn *= OCSwitchConfigDataStructInit_OLD(FSName); } @@ -486,15 +476,6 @@ UINT8 RelayInit(CHAR* FSName) { debug_infor_printf((const)"GroupAutoRouteCfgDtStructInit fail.\r\n"); } - - /*ʼLINK----ṹ*/ - funcRtn *= LinkSpecialEaDataInit(FSName); - - if (0u == funcRtn) - { - debug_infor_printf((const)"LinkSpecialEaDataInit fail.\r\n"); - } - return funcRtn; } @@ -1021,30 +1002,15 @@ UINT8 AxisSectionConfigDataStructInit(CHAR * FSName) dquCICfgDtStr.AxisSctCfgDtStrLen = dsuDataLenStru.wAxleSgmtLen; for(i=0u;i i) - { - rtnvalue = AxisSecCfgDtStruFromDquSgmtStr(dsuStaticHeadStru.pAxleSgmtStru + i, &dquCICfgDtStr.AxisSctCfgDtStr[i]); - } - else - { - rtnvalue = 0U; - } - - if (0U == rtnvalue) + if (i >= AXIS_SECTION_SUM_MAX) { + rtnvalue = 0u; break; } - else - { - ; /*ִ*/ - } + (void)AxisSecCfgDtStruFromDquSgmtStr(dsuStaticHeadStru.pAxleSgmtStru+i,&dquCICfgDtStr.AxisSctCfgDtStr[i]); } } - else - { - ; - } - + return rtnvalue; } @@ -2040,7 +2006,7 @@ UINT8 PhySgmtCfgDtStruFromDquSgmtStr(DSU_PHYSICAL_SGMT_STRU* pPhysicalSgmt, Phys { } } - if ((0u < dquCICfgDtStr.OCPhySecCfgStrLen) || (AXIS_TYPE_YONGLIE == acFty) || (AXIS_TYPE_KEANDA == acFty) || (AXIS_TYPE_FUHAOSHENG == acFty)) + if ((0u < dquCICfgDtStr.OCPhySecCfgStrLen) || ((AXIS_TYPE_YONGLIE == acFty) || (AXIS_TYPE_KEANDA == acFty))) { rtnvalue = 1u; /*ȫӼܸλ*/ @@ -2270,8 +2236,6 @@ UINT8 AxisSecCfgDtStruFromDquSgmtStr(DSU_AXLE_SGMT_STRU* pAxleSgmt, AxisSectionC UINT16 wlinkNum = 0u; UINT16 szLinkIdBuf[100u] = { 0u }; UINT32 dwLen = UINT32_MAX; - DSU_LINK_STRU* pAcIncLinkStru = NULL; /*ΰlinkṹ*/ - UINT8 kk = 0U; /*ڲ*/ if ((NULL == pAxleSgmt) || (NULL == pAxScCfgDtStr)) @@ -2326,30 +2290,6 @@ UINT8 AxisSecCfgDtStruFromDquSgmtStr(DSU_AXLE_SGMT_STRU* pAxleSgmt, AxisSectionC pAxScCfgDtStr->dwAxisTotalLen = dwLen; } - pAxScCfgDtStr->cAcCbtcAttr = AXIS_SEC_CBTC_PROPERTY_NO; /*ʼβCBTC*/ - - /*ΰlinkȷεCBTC*/ - for (kk = 0U; kk < pAxScCfgDtStr->chLinkNum; kk++) - { - pAcIncLinkStru = dsuStaticHeadStru.pLinkStru + dsuLinkIndex[pAxScCfgDtStr->szLinkIdBuff[kk]]; - if (0x55U != pAcIncLinkStru->cCbtcProperty) - { - break; /*linkCBTCԣֹͣ*/ - } - else - { - /*linkCBTCԣ*/ - } - } - - if ((kk == pAxScCfgDtStr->chLinkNum) && (0U != kk)) - { - pAxScCfgDtStr->cAcCbtcAttr = AXIS_SEC_CBTC_PROPERTY_YES; /*linkCBTCԣξCBTC*/ - } - else - { - /*linkCBTCԣβCBTC*/ - } /*ԭΪߵļᣬlinkؽߵģֻҪȡһlinkУԼ*/ @@ -3225,8 +3165,6 @@ UINT8 OverlapCfgDtStruFromDquStr(DSU_PROTECT_LINK_STRU * pProtectLink, OverlapCo pOvlpCfgDtStr->InvOppOverlapSum = 0u; pOvlpCfgDtStr->FloodGateIdSum = 0u; pOvlpCfgDtStr->AxisSecFarId = 0u; - pOvlpCfgDtStr->wOverlapThisZhaoChaRelayId = 0U; - pOvlpCfgDtStr->wOverlapThatZhaoChaRelayId = 0U; for(k = 0u; k < LSDataLen.LSOverlapLockCondStruLen; k++) { @@ -3298,10 +3236,6 @@ UINT8 OverlapCfgDtStruFromDquStr(DSU_PROTECT_LINK_STRU * pProtectLink, OverlapCo pOvlpCfgDtStr->FloodGateIdSum++; } } - - pOvlpCfgDtStr->wOverlapThisZhaoChaRelayId = LSData.pLSOverlapLockCondStru[k].wOverlapThisZhaoChaRelayId; - pOvlpCfgDtStr->wOverlapThatZhaoChaRelayId = LSData.pLSOverlapLockCondStru[k].wOverlapThatZhaoChaRelayId; - break; } @@ -3595,114 +3529,97 @@ UINT8 PsdCfgDtStruFromDquEmergStr(DSU_SCREEN_STRU * pScreen,PsdConfigDataStruct* if((NULL == pScreen) || (NULL == pPsdCfgDtStr)) { /*ʧ*/ - rtnvalue = 0U; + return 0u; } - else + + pPsdCfgDtStr->PsdId = pScreen->wId; + rtnvalue = GetDsuLinkIndexNum(pScreen->wRelatLkId,&linkindex); + if(CI_SUCCESS == rtnvalue) { - pPsdCfgDtStr->PsdId = pScreen->wId; - rtnvalue = GetDsuLinkIndexNum(pScreen->wRelatLkId, &linkindex); - if (CI_SUCCESS == rtnvalue) + pPsdCfgDtStr->BelongCiId = (UINT8)dsuStaticHeadStru.pLinkStru[linkindex].wManagePhysicalCI; + pPsdCfgDtStr->BelongVirCIid = (UINT8)dsuStaticHeadStru.pLinkStru[linkindex].wBelongVirtualCI; + if ((UINT16_MAX != pScreen->wLocalPlatformId) && (0U != pScreen->wLocalPlatformId)) { - pPsdCfgDtStr->BelongCiId = (UINT8)dsuStaticHeadStru.pLinkStru[linkindex].wManagePhysicalCI; - pPsdCfgDtStr->BelongVirCIid = (UINT8)dsuStaticHeadStru.pLinkStru[linkindex].wBelongVirtualCI; - pPsdCfgDtStr->wPsdFstProLinkId = pScreen->wFstProLinkId; - pPsdCfgDtStr->wPsdSndProLinkId = pScreen->wSndProLinkId; - pPsdCfgDtStr->wPsdTrdProLinkId = pScreen->wTrdProLinkId; - - /*Ƚ̵ʼΪ0Ϊ豸*/ - pPsdCfgDtStr->CloseDriveRelayId = 0u; - pPsdCfgDtStr->DoorStateRelayId = 0u; - pPsdCfgDtStr->MutualLockRelayId = 0u; - pPsdCfgDtStr->OpenFourEditGroupDriveRelayId = 0u; - pPsdCfgDtStr->OpenSixEditGroupDriveRelayId = 0u; - pPsdCfgDtStr->OpenEightEditGroupDriveRelayId = 0u; - pPsdCfgDtStr->wRelayDoorButtonId = 0u; - pPsdCfgDtStr->doorReopenRelayId = 0u; - pPsdCfgDtStr->departureConfirmRelayId = 0u; - pPsdCfgDtStr->detectStartRelayId = 0u; - pPsdCfgDtStr->detectStopRelayId = 0u; - pPsdCfgDtStr->obstacleRelayId = 0u; - pPsdCfgDtStr->gapDetMuLockRelayId = 0u; - pPsdCfgDtStr->closeStateRelayId = 0u; - pPsdCfgDtStr->ClearPasseSteadyLightRelayId = 0u; - pPsdCfgDtStr->ClearPasseFlashLightRelayId = 0u; - pPsdCfgDtStr->ClearPassengerButtonRelayId = 0u; - pPsdCfgDtStr->wCleFarePCBButtonRelayId = 0U; - pPsdCfgDtStr->wCleFarePDBFlaLigRelayId = 0U; - pPsdCfgDtStr->wPobIndicatorRelayId = 0U; - pPsdCfgDtStr->wPcbIndicatorRelayId = 0U; - pPsdCfgDtStr->VirtualAttribute = PSD_VIRTUAL_ATTR_YES; /*ʼΪ*/ - pPsdCfgDtStr->chPsdControlType = PSD_CONTROL_TYPE_RCI; /*ʼΪRCI*/ - - if ((UINT16_MAX != pScreen->wLocalPlatformId) && (0U != pScreen->wLocalPlatformId)) - { - stationId = dsuStaticHeadStru.pStationStru[dsuStationIndex[pScreen->wLocalPlatformId]].wStationID; - pPsdCfgDtStr->BelongStationId = (UINT8)(stationId & 0x00FFu);/*ǵվŲᳬ255Ϊ˺PSDϵͳIDͳһֻȡֽ*/ - } - else - { - pPsdCfgDtStr->BelongStationId = 0U; - } - - pPsdCfgDtStr->RelatedOutStationRouteSum = 0u; - (void)memset(pPsdCfgDtStr->RelatedOutStationRouteIdBuf, 0, sizeof(UINT16) * RALATED_OUT_STATION_ROUTE_SUM_MAX); - for (i = 0u; i < dsuDataLenStru.wStationLen; i++) - { - for (j = 0u; j < 2u; j++) - { - if (pPsdCfgDtStr->PsdId == (dsuStaticHeadStru.pStationStru + i)->wScreenId[j]) - { - pPsdCfgDtStr->BelongPlatformId = (dsuStaticHeadStru.pStationStru + i)->wATSStationId; - break; - } - } - } - - for (i = 0u; i < RelayDataLen.RelayScreenStrLen; i++) - { - if (pScreen->wId == (RelayData.pRelayScreenStr + i)->wScreenId) - { - pPsdCfgDtStr->CloseDriveRelayId = (RelayData.pRelayScreenStr + i)->wRelayCloseDoorId; - pPsdCfgDtStr->DoorStateRelayId = (RelayData.pRelayScreenStr + i)->wRelayDoorClosedId; - pPsdCfgDtStr->wDoorStateRelayId2 = (RelayData.pRelayScreenStr + i)->wRelayDoorClosedId2; - pPsdCfgDtStr->MutualLockRelayId = (RelayData.pRelayScreenStr + i)->wRelayRelatedId; - pPsdCfgDtStr->wMutualLockRelayId2 = (RelayData.pRelayScreenStr + i)->wRelayRelatedId2; - pPsdCfgDtStr->OpenFourEditGroupDriveRelayId = (RelayData.pRelayScreenStr + i)->wRelayFourEditGroupOpenDoorId; - pPsdCfgDtStr->OpenSixEditGroupDriveRelayId = (RelayData.pRelayScreenStr + i)->wRelaySixEditGroupOpenDoorId; - pPsdCfgDtStr->OpenEightEditGroupDriveRelayId = (RelayData.pRelayScreenStr + i)->wRelayEightEditGroupOpenDoorId; - pPsdCfgDtStr->wRelayDoorButtonId = (RelayData.pRelayScreenStr + i)->wRelayDoorButtonId; - pPsdCfgDtStr->doorReopenRelayId = (RelayData.pRelayScreenStr + i)->doorReopenRelayId; - pPsdCfgDtStr->departureConfirmRelayId = (RelayData.pRelayScreenStr + i)->departureConfirmRelayId; - pPsdCfgDtStr->detectStartRelayId = (RelayData.pRelayScreenStr + i)->detectStartRelayId; - pPsdCfgDtStr->detectStopRelayId = (RelayData.pRelayScreenStr + i)->detectStopRelayId; - pPsdCfgDtStr->obstacleRelayId = (RelayData.pRelayScreenStr + i)->obstacleRelayId; - pPsdCfgDtStr->gapDetMuLockRelayId = (RelayData.pRelayScreenStr + i)->gapDetMuLockRelayId; - pPsdCfgDtStr->closeStateRelayId = (RelayData.pRelayScreenStr + i)->closeStateRelayId; - pPsdCfgDtStr->ClearPasseSteadyLightRelayId = (RelayData.pRelayScreenStr + i)->wClearPasseSteadyLightRelayId; - pPsdCfgDtStr->ClearPasseFlashLightRelayId = (RelayData.pRelayScreenStr + i)->wClearPasseFlashLightRelayId; - pPsdCfgDtStr->ClearPassengerButtonRelayId = (RelayData.pRelayScreenStr + i)->wClearPassengerButtonRelayId; - pPsdCfgDtStr->wCleFarePCBButtonRelayId = (RelayData.pRelayScreenStr + i)->wCleFarePCBButtonRelayId; - pPsdCfgDtStr->wCleFarePDBFlaLigRelayId = (RelayData.pRelayScreenStr + i)->wCleFarePDBFlaLigRelayId; - pPsdCfgDtStr->wPobIndicatorRelayId = (RelayData.pRelayScreenStr + i)->wPobBsdRelayId; - pPsdCfgDtStr->wPcbIndicatorRelayId = (RelayData.pRelayScreenStr + i)->wPcbBsdRelayId; - pPsdCfgDtStr->wVideoQkLight1RelayId = (RelayData.pRelayScreenStr + i)->wVideoQkLight1RelayId; - pPsdCfgDtStr->wVideoQkLight2RelayId = (RelayData.pRelayScreenStr + i)->wVideoQkLight2RelayId; - pPsdCfgDtStr->VirtualAttribute = PSD_VIRTUAL_ATTR_NO;/*ʼΪ*/ - pPsdCfgDtStr->chPsdControlType = (RelayData.pRelayScreenStr + i)->chControlType; - break; /*ż̵ҵţֹͣ*/ - } - else - { - /*ʼ*/ - } - } + stationId = dsuStaticHeadStru.pStationStru[dsuStationIndex[pScreen->wLocalPlatformId]].wStationID; + pPsdCfgDtStr->BelongStationId = (UINT8)(stationId & 0x00FFu);/*ǵվŲᳬ255Ϊ˺PSDϵͳIDͳһֻȡֽ*/ } else - { - rtnvalue = 0U; /*PSDlinkЧ0ʧ*/ + { + pPsdCfgDtStr->BelongStationId = 0U; + } + pPsdCfgDtStr->RelatedOutStationRouteSum = 0u; + (void)memset(pPsdCfgDtStr->RelatedOutStationRouteIdBuf,0,sizeof(UINT16) * RALATED_OUT_STATION_ROUTE_SUM_MAX); + for (i = 0u; i < dsuDataLenStru.wStationLen; i++) + { + for (j = 0u; j < 2u; j++) + { + if (pPsdCfgDtStr->PsdId == (dsuStaticHeadStru.pStationStru + i)->wScreenId[j]) + { + pPsdCfgDtStr->BelongPlatformId = (dsuStaticHeadStru.pStationStru + i)->wATSStationId; + break; + } + } + } + for(i=0u;iwId == (RelayData.pRelayScreenStr+i)->wScreenId) + { + pPsdCfgDtStr->CloseDriveRelayId = (RelayData.pRelayScreenStr+i)->wRelayCloseDoorId; + pPsdCfgDtStr->DoorStateRelayId = (RelayData.pRelayScreenStr+i)->wRelayDoorClosedId; + pPsdCfgDtStr->wDoorStateRelayId2 = (RelayData.pRelayScreenStr + i)->wRelayDoorClosedId2; + pPsdCfgDtStr->MutualLockRelayId = (RelayData.pRelayScreenStr+i)->wRelayRelatedId; + pPsdCfgDtStr->wMutualLockRelayId2 = (RelayData.pRelayScreenStr + i)->wRelayRelatedId2; + pPsdCfgDtStr->OpenFourEditGroupDriveRelayId = (RelayData.pRelayScreenStr+i)->wRelayFourEditGroupOpenDoorId; + pPsdCfgDtStr->OpenSixEditGroupDriveRelayId = (RelayData.pRelayScreenStr+i)->wRelaySixEditGroupOpenDoorId; + pPsdCfgDtStr->OpenEightEditGroupDriveRelayId = (RelayData.pRelayScreenStr+i)->wRelayEightEditGroupOpenDoorId; + pPsdCfgDtStr->wRelayDoorButtonId = (RelayData.pRelayScreenStr+i)->wRelayDoorButtonId; + pPsdCfgDtStr->doorReopenRelayId = (RelayData.pRelayScreenStr+i)->doorReopenRelayId; + pPsdCfgDtStr->departureConfirmRelayId = (RelayData.pRelayScreenStr+i)->departureConfirmRelayId; + pPsdCfgDtStr->detectStartRelayId = (RelayData.pRelayScreenStr+i)->detectStartRelayId; + pPsdCfgDtStr->detectStopRelayId = (RelayData.pRelayScreenStr+i)->detectStopRelayId; + pPsdCfgDtStr->obstacleRelayId = (RelayData.pRelayScreenStr+i)->obstacleRelayId; + pPsdCfgDtStr->gapDetMuLockRelayId = (RelayData.pRelayScreenStr+i)->gapDetMuLockRelayId; + pPsdCfgDtStr->closeStateRelayId = (RelayData.pRelayScreenStr+i)->closeStateRelayId; + pPsdCfgDtStr->ClearPasseSteadyLightRelayId = (RelayData.pRelayScreenStr + i)->wClearPasseSteadyLightRelayId; + pPsdCfgDtStr->ClearPasseFlashLightRelayId = (RelayData.pRelayScreenStr + i)->wClearPasseFlashLightRelayId; + pPsdCfgDtStr->ClearPassengerButtonRelayId = (RelayData.pRelayScreenStr + i)->wClearPassengerButtonRelayId; + pPsdCfgDtStr->wCleFarePCBButtonRelayId = (RelayData.pRelayScreenStr + i)->wCleFarePCBButtonRelayId; + pPsdCfgDtStr->wCleFarePDBFlaLigRelayId = (RelayData.pRelayScreenStr + i)->wCleFarePDBFlaLigRelayId; + pPsdCfgDtStr->wPobIndicatorRelayId = (RelayData.pRelayScreenStr + i)->wPobBsdRelayId; + pPsdCfgDtStr->wPcbIndicatorRelayId = (RelayData.pRelayScreenStr + i)->wPcbBsdRelayId; + pPsdCfgDtStr->wVideoQkLight1RelayId = (RelayData.pRelayScreenStr + i)->wVideoQkLight1RelayId; + pPsdCfgDtStr->wVideoQkLight2RelayId = (RelayData.pRelayScreenStr + i)->wVideoQkLight2RelayId; + pPsdCfgDtStr->VirtualAttribute = PSD_VIRTUAL_ATTR_NO;/*ʼΪ*/ + rtnvalue = 1u; + return rtnvalue; + + } } } - + + pPsdCfgDtStr->CloseDriveRelayId = 0u; + pPsdCfgDtStr->DoorStateRelayId = 0u; + pPsdCfgDtStr->MutualLockRelayId = 0u; + pPsdCfgDtStr->OpenFourEditGroupDriveRelayId = 0u; + pPsdCfgDtStr->OpenSixEditGroupDriveRelayId = 0u; + pPsdCfgDtStr->OpenEightEditGroupDriveRelayId = 0u; + pPsdCfgDtStr->wRelayDoorButtonId = 0u; + pPsdCfgDtStr->doorReopenRelayId = 0u; + pPsdCfgDtStr->departureConfirmRelayId = 0u; + pPsdCfgDtStr->detectStartRelayId = 0u; + pPsdCfgDtStr->detectStopRelayId = 0u; + pPsdCfgDtStr->obstacleRelayId = 0u; + pPsdCfgDtStr->gapDetMuLockRelayId = 0u; + pPsdCfgDtStr->closeStateRelayId = 0u; + pPsdCfgDtStr->ClearPasseSteadyLightRelayId = 0u; + pPsdCfgDtStr->ClearPasseFlashLightRelayId = 0u; + pPsdCfgDtStr->ClearPassengerButtonRelayId = 0u; + pPsdCfgDtStr->wCleFarePCBButtonRelayId = 0U; + pPsdCfgDtStr->wCleFarePDBFlaLigRelayId = 0U; + pPsdCfgDtStr->wPobIndicatorRelayId = 0U; + pPsdCfgDtStr->wPcbIndicatorRelayId = 0U; + pPsdCfgDtStr->VirtualAttribute = PSD_VIRTUAL_ATTR_NO;/*ʼΪ*/ + rtnvalue = 0u; return rtnvalue; } @@ -3714,6 +3631,7 @@ UINT8 PsdCfgDtStruFromDquEmergStr(DSU_SCREEN_STRU * pScreen,PsdConfigDataStruct* *********************************************/ UINT8 PsdConfigDataStructInit(CHAR * FSName) { + UINT8 rtnvalue = 0u; UINT8 callFun = 0u; UINT16 i = 0u; @@ -3723,6 +3641,7 @@ UINT8 PsdConfigDataStructInit(CHAR * FSName) UINT16 startAxisSectionWId = 0u; /*ʼ˼link*/ UINT16 endAxisSectionWId = 0u; /*ն˼link*/ UINT16 linkId = 0u; + UINT8 flagBreak = 0u;/*жѭ־*/ callFun = dfsEmapInit (FSName); callFun *= InitRelay_ScreenStru (FSName); @@ -3735,7 +3654,10 @@ UINT8 PsdConfigDataStructInit(CHAR * FSName) else { rtnvalue = 1u; - + } + + if (1u == rtnvalue) + { dquCICfgDtStr.PsdCfgDtStrLen =dsuDataLenStru.wScreenLen; for(i=0u;i= PSD_SUM_MAX) { rtnvalue = 0u; + break; } - else - { - rtnvalue = PsdCfgDtStruFromDquEmergStr(dsuStaticHeadStru.pScreenStru + i, &dquCICfgDtStr.PsdCfgDtStr[i]); - if (1U == rtnvalue) - { - for (j = 0u; j < dsuDataLenStru.wRouteLen; j++) - {/*н·*/ - startSignalId = dsuStaticHeadStru.pRouteStru[j].wStartSignalId;/*ȡ·ʼźŻID*/ - linkId = (dsuStaticHeadStru.pSignalStru + dsuSignalIndex[startSignalId])->wLkId;/*ȡʼźŻLinkID*/ + (void)PsdCfgDtStruFromDquEmergStr(dsuStaticHeadStru.pScreenStru+i,&dquCICfgDtStr.PsdCfgDtStr[i]); + for(j = 0u;j < dsuDataLenStru.wRouteLen;j++) + {/*н·*/ + flagBreak = 0u; + startSignalId = dsuStaticHeadStru.pRouteStru[j].wStartSignalId;/*ȡ·ʼźŻID*/ + linkId = (dsuStaticHeadStru.pSignalStru + dsuSignalIndex[startSignalId])->wLkId;/*ȡʼźŻLinkID*/ - if (linkId == dsuStaticHeadStru.pScreenStru[i].wRelatLkId) - {/*ʼźŻLinkID == LinkID*/ - sumTemp = dquCICfgDtStr.PsdCfgDtStr[i].RelatedOutStationRouteSum; - dquCICfgDtStr.PsdCfgDtStr[i].RelatedOutStationRouteIdBuf[sumTemp] = dsuStaticHeadStru.pRouteStru[j].wId; - dquCICfgDtStr.PsdCfgDtStr[i].RelatedOutStationRouteSum++; + if(linkId == dsuStaticHeadStru.pScreenStru[i].wRelatLkId) + {/*ʼźŻLinkID == LinkID*/ + sumTemp = dquCICfgDtStr.PsdCfgDtStr[i].RelatedOutStationRouteSum; + dquCICfgDtStr.PsdCfgDtStr[i].RelatedOutStationRouteIdBuf[sumTemp] = dsuStaticHeadStru.pRouteStru[j].wId; + dquCICfgDtStr.PsdCfgDtStr[i].RelatedOutStationRouteSum++; - if (dquCICfgDtStr.PsdCfgDtStr[i].RelatedOutStationRouteSum >= RALATED_OUT_STATION_ROUTE_SUM_MAX) - { - rtnvalue = 0u; - break; - } - } - } - - if (1u == rtnvalue) + if(dquCICfgDtStr.PsdCfgDtStr[i].RelatedOutStationRouteSum >= RALATED_OUT_STATION_ROUTE_SUM_MAX) { - for (j = 0u; j < dsuDataLenStru.wAxleSgmtLen; j++) - {/*мĿ*/ - startAxisSectionWId = dsuStaticHeadStru.pAxleSgmtStru[j].wOrgnLkId; /*ȡʼlink*/ - endAxisSectionWId = dsuStaticHeadStru.pAxleSgmtStru[j].wTmnlLkId; /*ȡնlink*/ - /*ʼ˼LinkID == ն˼LinkID*/ - if ((startAxisSectionWId == dsuStaticHeadStru.pScreenStru[i].wRelatLkId) && (endAxisSectionWId == dsuStaticHeadStru.pScreenStru[i].wRelatLkId)) - { - /*ҵεID*/ - dquCICfgDtStr.PsdCfgDtStr[i].PsdRelationPhySecId = dsuStaticHeadStru.pAxleSgmtStru[j].wRelatePhysicalSgmtId; - break; - } - - } + flagBreak = 1u; + break; } } } + if (1u== flagBreak) + { + rtnvalue =0u; + break; + } + if (1u == rtnvalue) + { + for(j = 0u;j < dsuDataLenStru.wAxleSgmtLen; j++ ) + {/*мĿ*/ + startAxisSectionWId = dsuStaticHeadStru.pAxleSgmtStru[j].wOrgnLkId; /*ȡʼlink*/ + endAxisSectionWId = dsuStaticHeadStru.pAxleSgmtStru[j].wTmnlLkId; /*ȡնlink*/ + /*ʼ˼LinkID == ն˼LinkID*/ + if((startAxisSectionWId == dsuStaticHeadStru.pScreenStru[i].wRelatLkId) && (endAxisSectionWId == dsuStaticHeadStru.pScreenStru[i].wRelatLkId)) + { + /*ҵεID*/ + dquCICfgDtStr.PsdCfgDtStr[i].PsdRelationPhySecId = dsuStaticHeadStru.pAxleSgmtStru[j].wRelatePhysicalSgmtId; + break; + } + + } + } if ((0u == rtnvalue) || (j == dsuDataLenStru.wAxleSgmtLen)) { break; } + } if(1u==rtnvalue) { @@ -4742,8 +4665,6 @@ UINT8 RouteCfgDtStruFrmLSRouteStr( LS_RouteStruct * pLSRouteStr,RouteConfigDataS UINT8 chCheckLogIdSameFlag = 0U; UINT8 isEachInvFlag = 0U; UINT16 wLgcSecIndex = 0U; /*߼*/ - UINT8 chLocalCiPattern = 0u; /*CIģʽ*/ - lineIdentity = GetCiFunctionSwitchConfig(LINE_RAILWAY_TYPE_CONF);/*??????:0x55:????;0xAA:????*/ /*ڲ*/ @@ -5871,6 +5792,9 @@ UINT8 RouteCfgDtStruFrmLSRouteStr( LS_RouteStruct * pLSRouteStr,RouteConfigDataS pRouteCfgDtStr->RelayBenDuanZcIdOnRelayIntrf = RelayData.pRelayZhaoChaStr[i].wRelayBenDuanZcIdOnRelayInterface; pRouteCfgDtStr->RelayDuiDuanZcIdOnRelayIntrf = RelayData.pRelayZhaoChaStr[i].wRelayDuiDuanZcIdOnRelayInterface; + pRouteCfgDtStr->wCbtcThatZhaoChaRelayId = RelayData.pRelayZhaoChaStr[i].wCbtcRelayDuiDuanZcId; + pRouteCfgDtStr->wCbtcThisZhaoChaRelayId = RelayData.pRelayZhaoChaStr[i].wCbtcRelayBenDuanZcId; + pRouteCfgDtStr->wCbtccancelZhaochaRelayId = RelayData.pRelayZhaoChaStr[i].wCbtcCancelRelayId; /*ͳЧղID*/ zhaoChaPhySecNum = 0u; @@ -6454,94 +6378,24 @@ UINT8 RouteCfgDtStruFrmLSRouteStr( LS_RouteStruct * pLSRouteStr,RouteConfigDataS pRouteCfgDtStr->RouteNeedDelayUnlock = pLSRouteStr->wNeedDelayUnlock; /*̵ͬID (ֶ)*/ - pRouteCfgDtStr->DCRouteDCQJId = 0U; - pRouteCfgDtStr->DCRouteDCQJTwoId = 0U; - pRouteCfgDtStr->DCRouteTAJId = 0U; - for(i=0u;iDCRouteDCQJId = 0u; + pRouteCfgDtStr->DCRouteTAJId = 0u; + if(RelayData.pRelayDCAgreeStr[i].wRouteId == pLSRouteStr->wRouteId) { pRouteCfgDtStr->DCRouteDCQJId = RelayData.pRelayDCAgreeStr[i].DCRouteDCQJId; pRouteCfgDtStr->DCRouteTAJId = RelayData.pRelayDCAgreeStr[i].DCRouteTAJId; - pRouteCfgDtStr->DCRouteDCQJTwoId = RelayData.pRelayDCAgreeStr[i].DCRouteDCQJTwoId; break; } else { } } - - chLocalCiPattern = GetLocalCiPattern(); - - if (CI_PATTERN_FULL_ELECTRONIC == chLocalCiPattern) - { - if (0U != pRouteCfgDtStr->DCRouteDCQJId) - { - if ((0U == pRouteCfgDtStr->DCRouteTAJId) || (0U == pRouteCfgDtStr->DCRouteDCQJTwoId)) - { - /*˵̵1Чδõͬ⼰̵2ݳʼʧ*/ - rtnvalue = CI_ERROR; - debug_infor_printf((const)"error: pRouteCfgDtStr->DCRouteTAJId is 0 or pRouteCfgDtStr->DCRouteDCQJTwoId is 0"); - } - else - { - - } - } - else - { - if ((0U != pRouteCfgDtStr->DCRouteTAJId) || (0U != pRouteCfgDtStr->DCRouteDCQJTwoId)) - { - /*˵̵ЧõͬЧݳʼʧ*/ - rtnvalue = CI_ERROR; - debug_infor_printf((const)"error: pRouteCfgDtStr->DCRouteDCQJId is 0"); - } - else - { - - } - } - } - else if (CI_PATTERN_TRADITIONAL == chLocalCiPattern) - { - /*̵ûе̵2*/ - if (0U != pRouteCfgDtStr->DCRouteDCQJId) - { - if (0U == pRouteCfgDtStr->DCRouteTAJId) - { - /*˵̵ЧδõͬЧݳʼʧ*/ - rtnvalue = CI_ERROR; - debug_infor_printf((const)"error: pRouteCfgDtStr->DCRouteTAJId is 0"); - } - else - { - - } - } - else - { - if (0U != pRouteCfgDtStr->DCRouteTAJId) - { - /*˵̵ЧõͬЧݳʼʧ*/ - rtnvalue = CI_ERROR; - debug_infor_printf((const)"error: pRouteCfgDtStr->DCRouteDCQJId is 0"); - } - else - { - - } - } - } - else - { - rtnvalue = CI_ERROR; - } - } else { - } if(CI_SUCCESS == rtnvalue) { @@ -6946,8 +6800,11 @@ UINT8 RouteConfigDataStructInit(CHAR * FSName) UINT8 callFun = 0u; UINT16 i=0u; UINT8 execRet = 0u; - UINT8 chDataType = DATA_TYPE_NEW; - chDataType = GetLocalPublicDataType();/*28.0.0.14߼ι·ʼ*/ + + UINT8 lineIdentity = CI_TRADITION_RAILWAY; + + lineIdentity = GetCiFunctionSwitchConfig(LINE_RAILWAY_TYPE_CONF);/*??????:0x55:????;0xAA:????*/ + callFun = dfsEmapInit(FSName); callFun *= InitLS_RouteStruct(FSName); callFun *= InitLS_AutoRtnRouteStru(FSName); @@ -7035,7 +6892,7 @@ UINT8 RouteConfigDataStructInit(CHAR * FSName) {/*úʧܣ0*/ rtnvalue = 0u; } - + if (1U == rtnvalue) { @@ -7120,31 +6977,22 @@ UINT8 RouteConfigDataStructInit(CHAR * FSName) /*߼ι·*/ if (1u == rtnvalue) { - if (DATA_TYPE_NEW == chDataType) + for (i = 0u; i < dquCICfgDtStr.lgcSctCfgDtStrLen; i++) { - for (i = 0u; i < dquCICfgDtStr.lgcSctCfgDtStrLen; i++) + execRet = LogRelateRouteDataInit(dquCICfgDtStr.RouteCfgDtStr, &(dquCICfgDtStr.lgcSctCfgDtStr[i]));/*߼ι·*/ + execRet *= LogRelateProSwDataInit(dquCICfgDtStr.RouteCfgDtStr, &(dquCICfgDtStr.lgcSctCfgDtStr[i]));/*߼ι*/ + if (execRet > 0u) { - execRet = LogRelateRouteDataInit(dquCICfgDtStr.RouteCfgDtStr, &(dquCICfgDtStr.lgcSctCfgDtStr[i]));/*߼ι·*/ - execRet *= LogRelateProSwDataInit(dquCICfgDtStr.RouteCfgDtStr, &(dquCICfgDtStr.lgcSctCfgDtStr[i]));/*߼ι*/ - if (execRet > 0u) - { - } - else - {/*úʧܣ0*/ - rtnvalue = 0u; - } - if (1U != rtnvalue) - { - break; - } } - } - else - { - /*28.0.0.14ݽṹݲ֧߼ι·*/ - /*Ӱ칦ܣ߼· ֽ· ߼Դ*/ - rtnvalue = 1U; + else + {/*úʧܣ0*/ + rtnvalue = 0u; + } + if (1U != rtnvalue) + { + break; + } } } @@ -7382,80 +7230,58 @@ UINT8 TransmitRelationDataStructInit(CHAR* FSName) UINT8 RouteOpposedConfigDataInite(RouteConfigDataStruct * RouteCfgDtStr,RouteConfigDataStruct * pRouteCfgDtStr) { UINT16 i=0u,j=0u,k=0u,n=0u; - UINT8 index=0u;/*еִ·*/ + UINT8 index=0u; UINT8 rtnvalue = 1u; UINT8 Flag = 0u; - UINT8 chRouteCitype = 0U; - chRouteCitype = (UINT8)(dsuStaticHeadStru.pCIStruStru[dsuCIIndex[pRouteCfgDtStr->BelongCiId]].wType); /*·*/ /*ִ·ID (ֶ)*/ pRouteCfgDtStr->OpposedRouteSum = 0u; - if ((CI_TYPE_CLD != chRouteCitype)&&(CI_TYPE_TCC != chRouteCitype)) - { - for (i = 0u; i < pRouteCfgDtStr->RoutePhySecSum; i++) - {/*·*/ + for(i=0u; iRoutePhySecSum; i++) + {/*·*/ - for (j = 0u; j < LSDataLen.LSRouteStrLen; j++) - {/*н·*/ - if (pRouteCfgDtStr->RouteId == RouteCfgDtStr[j].RouteId) - { - /*ȥ·*/ - } - else - { - for (k = 0u; k < RouteCfgDtStr[j].RoutePhySecSum; k++) - {/*ý·*/ + for(j=0u; jRouteId == RouteCfgDtStr[j].RouteId) + { + /*ȥ·*/ + } + else + { + for (k = 0u; k < RouteCfgDtStr[j].RoutePhySecSum; k++) + {/*ý·*/ - if (pRouteCfgDtStr->RoutePhySectionStru[i].PhysicalSectionId == RouteCfgDtStr[j].RoutePhySectionStru[k].PhysicalSectionId) - {/*ͬ*/ + if (pRouteCfgDtStr->RoutePhySectionStru[i].PhysicalSectionId == RouteCfgDtStr[j].RoutePhySectionStru[k].PhysicalSectionId) + {/*ͬ*/ - Flag = 0u; - for (n = 0u; n < index; n++) - {/*ִ·飬ǷѾӸõִ·*/ + Flag = 0u; + for (n = 0u; n < ROUTE_OPPOSED_ROUTE_SUM_MAX; n++) + {/*ִ·飬ǷѾӸõִ·*/ - if (pRouteCfgDtStr->OpposedRouteIdBuf[n] == RouteCfgDtStr[j].RouteId) - { - Flag = 1u; - break; - /*Ѿ*/ - } - } - if (Flag == 1u) + if (pRouteCfgDtStr->OpposedRouteIdBuf[n] == RouteCfgDtStr[j].RouteId) { - /*Ѿڣ*/ + Flag = 1u; + break; + /*Ѿ*/ } - else - { - if (ROUTE_OPPOSED_ROUTE_SUM_MAX > index) - { - /*ӵִ·*/ - pRouteCfgDtStr->OpposedRouteIdBuf[index] = RouteCfgDtStr[j].RouteId;/*ִ*/ - index++; - } - else - { - rtnvalue = 0U; - break; - } - } - } - } - if (0U == rtnvalue) - { - break; - } + if (Flag == 1u) + { + /*Ѿڣ*/ + } + else + { + /*ӵִ·*/ + pRouteCfgDtStr->OpposedRouteIdBuf[index] = RouteCfgDtStr[j].RouteId;/*ִ*/ + index++; + } + } } + } } + } - pRouteCfgDtStr->OpposedRouteSum = index; - } - else - { - /*ԶԽ·*/ - rtnvalue = 1u; - } + pRouteCfgDtStr->OpposedRouteSum = index; return rtnvalue; } @@ -8512,151 +8338,103 @@ UINT8 ReadDquCiTransmitInfoToConfig(DquCiTransmitStruct *pDquCiTransmitStr) switch (pDquCiTransmitStr->devType) { case CI_DEVICE_TYPE_SWITCH: /* */ - if ((pDquCiTransmitStr->devId > 0u) && (pDquCiTransmitStr->devId < SWITCH_SUM_MAX) && (pTmpCiTransConfig->switchNum < SWITCH_SUM_MAX)) + if ((pDquCiTransmitStr->devId > 0u) && (pDquCiTransmitStr->devId < SWITCH_SUM_MAX)) { pTmpCiTransConfig->switchIdBuf[pTmpCiTransConfig->switchNum] = pDquCiTransmitStr->devId; pTmpCiTransConfig->switchNum++; rtnValue = 1u; } - else - { - debug_infor_printf((const)"ReadDquCiTransmitInfoToConfig: Read Switch Error\n"); - } break; case CI_DEVICE_TYPE_SIGNAL: /* źŻ */ - if ((pDquCiTransmitStr->devId > 0u) && (pDquCiTransmitStr->devId < SIGNAL_SUM_MAX) && (pTmpCiTransConfig->signalNum < SIGNAL_SUM_MAX)) + if ((pDquCiTransmitStr->devId > 0u) && (pDquCiTransmitStr->devId < SIGNAL_SUM_MAX)) { pTmpCiTransConfig->signalIdBuf[pTmpCiTransConfig->signalNum] = pDquCiTransmitStr->devId; pTmpCiTransConfig->signalNum++; rtnValue = 1u; } - else - { - debug_infor_printf((const)"ReadDquCiTransmitInfoToConfig: Read Signal Error\n"); - } break; case CI_DEVICE_TYPE_PHYSEC: /* */ - if ((pDquCiTransmitStr->devId > 0u) && (pDquCiTransmitStr->devId < PHYSICAL_SECTION_SUM_MAX) && (pTmpCiTransConfig->phySecNum < PHYSICAL_SECTION_SUM_MAX)) + if ((pDquCiTransmitStr->devId > 0u) && (pDquCiTransmitStr->devId < PHYSICAL_SECTION_SUM_MAX)) { pTmpCiTransConfig->phySecIdBuf[pTmpCiTransConfig->phySecNum] = pDquCiTransmitStr->devId; pTmpCiTransConfig->phySecIdLockDirFlag[pTmpCiTransConfig->phySecNum] = pDquCiTransmitStr->phyLockDirOppOrNot;/*շǷȡ־*/ pTmpCiTransConfig->phySecNum++; rtnValue = 1u; } - else - { - debug_infor_printf((const)"ReadDquCiTransmitInfoToConfig: Read PhySec Error\n"); - } break; case CI_DEVICE_TYPE_LOGICSEC: /* ߼ */ - if ((pDquCiTransmitStr->devId > 0u) && (pDquCiTransmitStr->devId < LOGIC_SECTION_SUM_MAX) && (pTmpCiTransConfig->logicSecNum < LOGIC_SECTION_SUM_MAX)) + if ((pDquCiTransmitStr->devId > 0u) && (pDquCiTransmitStr->devId < LOGIC_SECTION_SUM_MAX)) { pTmpCiTransConfig->logicSecIdBuf[pTmpCiTransConfig->logicSecNum] = pDquCiTransmitStr->devId; pTmpCiTransConfig->logicSecNum++; rtnValue = 1u; } - else - { - debug_infor_printf((const)"ReadDquCiTransmitInfoToConfig: Read LogSec Error\n"); - } break; case CI_DEVICE_TYPE_ESB: /* ESB */ - if ((pDquCiTransmitStr->devId > 0u) && (pDquCiTransmitStr->devId < ESB_SUM_MAX) && (pTmpCiTransConfig->esbNum < ESB_SUM_MAX)) + if ((pDquCiTransmitStr->devId > 0u) && (pDquCiTransmitStr->devId < ESB_SUM_MAX)) { pTmpCiTransConfig->esbIdBuf[pTmpCiTransConfig->esbNum] = pDquCiTransmitStr->devId; pTmpCiTransConfig->esbNum++; rtnValue = 1u; } - else - { - debug_infor_printf((const)"ReadDquCiTransmitInfoToConfig: Read ESB Error\n"); - } break; case CI_DEVICE_TYPE_PSD: /* PSD */ - if ((pDquCiTransmitStr->devId > 0u) && (pDquCiTransmitStr->devId < PSD_SUM_MAX) && (pTmpCiTransConfig->psdNum < PSD_SUM_MAX)) + if ((pDquCiTransmitStr->devId > 0u) && (pDquCiTransmitStr->devId < PSD_SUM_MAX)) { pTmpCiTransConfig->psdIdBuf[pTmpCiTransConfig->psdNum] = pDquCiTransmitStr->devId; pTmpCiTransConfig->psdNum++; rtnValue = 1u; } - else - { - debug_infor_printf((const)"ReadDquCiTransmitInfoToConfig: Read PSD Error\n"); - } break; case CI_DEVICE_TYPE_ROUTE: /* · */ - if ((pDquCiTransmitStr->devId > 0u) && (pDquCiTransmitStr->devId < ROUTE_SUM_MAX) && (pTmpCiTransConfig->routeNum < ROUTE_SUM_MAX)) + if ((pDquCiTransmitStr->devId > 0u) && (pDquCiTransmitStr->devId < ROUTE_SUM_MAX)) { pTmpCiTransConfig->routeIdBuf[pTmpCiTransConfig->routeNum] = pDquCiTransmitStr->devId; pTmpCiTransConfig->routeNum++; rtnValue = 1u; } - else - { - debug_infor_printf((const)"ReadDquCiTransmitInfoToConfig: Read Route Error\n"); - } break; case CI_DEVICE_TYPE_OVERLAP: /* */ - if ((pDquCiTransmitStr->devId > 0u) && (pDquCiTransmitStr->devId < OVERLAP_SUM_MAX) && (pTmpCiTransConfig->overlapNum < OVERLAP_SUM_MAX)) + if ((pDquCiTransmitStr->devId > 0u) && (pDquCiTransmitStr->devId < OVERLAP_SUM_MAX)) { pTmpCiTransConfig->overlapIdBuf[pTmpCiTransConfig->overlapNum] = pDquCiTransmitStr->devId; pTmpCiTransConfig->overlapNum++; rtnValue = 1u; } - else - { - debug_infor_printf((const)"ReadDquCiTransmitInfoToConfig: Read Overlap Error\n"); - } break; case CI_DEVICE_TYPE_SPKS: /* SPKS */ - if ((pDquCiTransmitStr->devId > 0u) && (pDquCiTransmitStr->devId < SPKS_SUM_MAX) && (pTmpCiTransConfig->spksNum < SPKS_SUM_MAX)) + if ((pDquCiTransmitStr->devId > 0u) && (pDquCiTransmitStr->devId < SPKS_SUM_MAX)) { pTmpCiTransConfig->spksIdBuff[pTmpCiTransConfig->spksNum] = pDquCiTransmitStr->devId; pTmpCiTransConfig->spksNum++; rtnValue = 1u; } - else - { - debug_infor_printf((const)"ReadDquCiTransmitInfoToConfig: Read SPKS Error\n"); - } break; case CI_DEVICE_TYPE_FLOODGATE:/**/ { - if ((pDquCiTransmitStr->devId > 0u) && (pDquCiTransmitStr->devId < FLOOD_GATE_SUM_MAX) && (pTmpCiTransConfig->floodGateNum < FLOOD_GATE_SUM_MAX)) + if ((pDquCiTransmitStr->devId > 0u) && (pDquCiTransmitStr->devId < FLOOD_GATE_SUM_MAX)) { pTmpCiTransConfig->floodGateIdBuf[pTmpCiTransConfig->floodGateNum] = pDquCiTransmitStr->devId; pTmpCiTransConfig->floodGateNum++; rtnValue = 1u; } - else - { - debug_infor_printf((const)"ReadDquCiTransmitInfoToConfig: Read FloodGate Error\n"); - } } break; case CI_DEVICE_TYPE_RELAY: /* ղ̵ */ - if ((pDquCiTransmitStr->devId > 0u) && (pDquCiTransmitStr->devId < RELAY_SUM_MAX) && (pTmpCiTransConfig->zcjNum < ZCJ_SUM_MAX)) + if ((pDquCiTransmitStr->devId > 0u) && (pDquCiTransmitStr->devId < RELAY_SUM_MAX)) { pTmpCiTransConfig->zcjIdBuf[pTmpCiTransConfig->zcjNum] = pDquCiTransmitStr->devId; pTmpCiTransConfig->zcjNum++; rtnValue = 1u; } - else - { - debug_infor_printf((const)"ReadDquCiTransmitInfoToConfig: Read Zcj Error\n"); - } break; case CI_DEVICE_TYPE_CUTOFF_POINT: /* ֽ */ - if ((pDquCiTransmitStr->devId > 0u) && (pDquCiTransmitStr->devId < CUTOFF_POINT_SUM_MAX) && (pTmpCiTransConfig->wCutoffPointNum < CUTOFF_POINT_SUM_MAX)) + if ((pDquCiTransmitStr->devId > 0u) && (pDquCiTransmitStr->devId < RELAY_SUM_MAX)) { pTmpCiTransConfig->wCutoffPointBuf[pTmpCiTransConfig->wCutoffPointNum] = pDquCiTransmitStr->devId; pTmpCiTransConfig->wCutoffPointNum++; rtnValue = 1u; } - else - { - debug_infor_printf((const)"ReadDquCiTransmitInfoToConfig: Read Cfp Error\n"); - } break; case CI_DEVICE_TYPE_AUTOROUTE:/* cgh-ϲCID-2539-7Զͨ */ if ((pDquCiTransmitStr->devId > 0u) && (pDquCiTransmitStr->devId < AUTO_ROUTE_SUM_MAX) && @@ -8666,10 +8444,6 @@ UINT8 ReadDquCiTransmitInfoToConfig(DquCiTransmitStruct *pDquCiTransmitStr) pTmpCiTransConfig->autoRouteNum++; rtnValue = 1u; } - else - { - debug_infor_printf((const)"ReadDquCiTransmitInfoToConfig: Read AutoRoute Error\n"); - } break; default: rtnValue = 0u; @@ -10583,7 +10357,6 @@ UINT8 LinkCfgDtStruFromDquLinkStr(DSU_LINK_STRU* pLink, LinkDataConfigStru* pLin pLinkScCfgDtStr->chLogicLineRelation = pLink->wLinkLogicDirUpAndDown; pLinkScCfgDtStr->chLogicDirChanged = pLink->wLogicDirChanged; pLinkScCfgDtStr->chRelPhySecIsAGorBG = LINK_REL_PHYSEC_IS_DEFAULT; /*ȳʼΪAGBG*/ - pLinkScCfgDtStr->wLinkSpecialEa = 0U; /*LINK*/ for (i = 0u; i < dsuDataLenStru.wStationLen; i++) { @@ -11369,14 +11142,13 @@ UINT8 RouteMainProConfigDataInit(RouteConfigDataStruct* RouteCfgDtStr, RouteConf UINT16 wMaybeSubIdBuf[ROUTE_SUB_INCLUDE_SUM_MAX] = { 0U };/*·ӽ·ID*/ UINT8 chMaybeSubIdIndex = 0U;/*·ӽ·ID*/ UINT8 chMainIncSubIndex = 0U;/*·ӽ·ID*/ - UINT16 wMaybeMainIdBuf[ROUTE_MAYBE_BELONG_SUM_MAX] = { 0U };/*ӽ··ID*/ + UINT16 wMaybeMainIdBuf[ROUTE_SUB_INCLUDE_SUM_MAX] = { 0U };/*ӽ··ID*/ UINT8 chMaybeMainIdIndex = 0U;/*ӽ··ID*/ UINT8 chSubBelMainIndex = 0U;/*ӽ··ID*/ LOD_STRU strCurRouteSigPoint = { 0U };/*ǰ·ڷһLINK*/ LOD_STRU strFindRouteSigPoint = { 0U };/*·ڷһLINK*/ UINT8 chDirChangeNum = 0U;/*·ڷһLINK͵ǰ·ڷһLINK֮䷽仯Ŀ*/ DSU_ROUTE_STRU* pDsuRouteStr = NULL; - UINT8 chMaxCheckFail = CI_SUCCESS; /*·ӽ·Ŀӽ··ĿʼΪ0*/ pRouteCfgDtStr->MainOrSubData.RouteBelMainSum = 0U; @@ -11422,27 +11194,13 @@ UINT8 RouteMainProConfigDataInit(RouteConfigDataStruct* RouteCfgDtStr, RouteConf շһµ·ڷڷ仯㣨2·ڷһLINK֮䷽仯ĿΪ1ųǷֶν·ϵ*/ if ((pRouteCfgDtStr->RouteInLogTrackSum) > (RouteCfgDtStr[i].RouteInLogTrackSum)) {/*ǰ··߼Σǰ·Ϊ·ԣһҪһֱͨ۷*/ - if (ROUTE_SUB_INCLUDE_SUM_MAX > chMaybeSubIdIndex) - { - wMaybeSubIdBuf[chMaybeSubIdIndex] = RouteCfgDtStr[i].RouteId; - chMaybeSubIdIndex++; - } - else - { - chMaxCheckFail = CI_ERROR;/*ֹͣ ֹ*/ - } + wMaybeSubIdBuf[chMaybeSubIdIndex] = RouteCfgDtStr[i].RouteId; + chMaybeSubIdIndex++; } else if ((pRouteCfgDtStr->RouteInLogTrackSum) < (RouteCfgDtStr[i].RouteInLogTrackSum)) - {/*ǰ·߼αĽ·ǰ·Ϊӽ·ԣһҪһֱͨ۷*/ - if (ROUTE_MAYBE_BELONG_SUM_MAX > chMaybeMainIdIndex) - { - wMaybeMainIdBuf[chMaybeMainIdIndex] = RouteCfgDtStr[i].RouteId; - chMaybeMainIdIndex++; - } - else - { - chMaxCheckFail = CI_ERROR;/*ֹͣ ֹ*/ - } + {/*ǰ·߼αĽ·ǰ·Ϊӽ·ԣһҪһֱͨ۷*/ + wMaybeMainIdBuf[chMaybeMainIdIndex] = RouteCfgDtStr[i].RouteId; + chMaybeMainIdIndex++; } else { @@ -11456,149 +11214,99 @@ UINT8 RouteMainProConfigDataInit(RouteConfigDataStruct* RouteCfgDtStr, RouteConf } chMainIncSubLogSum = 0U; } - if (CI_SUCCESS == chMaxCheckFail) + + /*۵ǰ··ӽ·ʼźŻһǷֶ*/ + for (i = 0U; i < chMaybeSubIdIndex; i++) { - /*۵ǰ··ӽ·ʼźŻһǷֶ*/ - for (i = 0U; i < chMaybeSubIdIndex; i++) + /*ӿ·ӽ·ɸѡӽ·*/ + if (pRouteCfgDtStr->StartSignalId == RouteCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuRouteIndex[wMaybeSubIdBuf[i]]].StartSignalId) { - /*ӿ·ӽ·ɸѡӽ·*/ - if (pRouteCfgDtStr->StartSignalId == RouteCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuRouteIndex[wMaybeSubIdBuf[i]]].StartSignalId) + /*·Ӧĵһӽ·ʼźŻͬ*/ + if (SIGNAL_FENDUAN_YES == dquCICfgDtStr.SgnlCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuSignalIndex[RouteCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuRouteIndex[wMaybeSubIdBuf[i]]].EndSignalId]].signalFenDuanAttr) { - /*·Ӧĵһӽ·ʼźŻͬ*/ - if (SIGNAL_FENDUAN_YES == dquCICfgDtStr.SgnlCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuSignalIndex[RouteCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuRouteIndex[wMaybeSubIdBuf[i]]].EndSignalId]].signalFenDuanAttr) - { - if (ROUTE_SUB_INCLUDE_SUM_MAX > chMainIncSubIndex) - { - /*һӽ·նźŻΪֶ*/ - pRouteCfgDtStr->MainOrSubData.RouteSubIdBuf[chMainIncSubIndex] = wMaybeSubIdBuf[i]; - chMainIncSubIndex++; - } - else - { - chMaxCheckFail = CI_ERROR; - } - } - else - { - ; /**/ - } + /*һӽ·նźŻΪֶ*/ + pRouteCfgDtStr->MainOrSubData.RouteSubIdBuf[chMainIncSubIndex] = wMaybeSubIdBuf[i]; + chMainIncSubIndex++; + } + else + { + ; /**/ } - else if (pRouteCfgDtStr->EndSignalId != RouteCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuRouteIndex[wMaybeSubIdBuf[i]]].EndSignalId) + } + else if (pRouteCfgDtStr->EndSignalId != RouteCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuRouteIndex[wMaybeSubIdBuf[i]]].EndSignalId) + { + /*·Ӧķһӽ·:ӽ·նźŻ·նźŻһ*/ + if (SIGNAL_FENDUAN_YES == dquCICfgDtStr.SgnlCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuSignalIndex[RouteCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuRouteIndex[wMaybeSubIdBuf[i]]].StartSignalId]].signalFenDuanAttr) { - /*·Ӧķһӽ·:ӽ·նźŻ·նźŻһ*/ - if (SIGNAL_FENDUAN_YES == dquCICfgDtStr.SgnlCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuSignalIndex[RouteCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuRouteIndex[wMaybeSubIdBuf[i]]].StartSignalId]].signalFenDuanAttr) - { - if (ROUTE_SUB_INCLUDE_SUM_MAX > chMainIncSubIndex) - { - /*ȷӽ·ʼźŻΪֶԣΪ·ȷһӽ·*/ - pRouteCfgDtStr->MainOrSubData.RouteSubIdBuf[chMainIncSubIndex] = wMaybeSubIdBuf[i]; - chMainIncSubIndex++; - } - else - { - chMaxCheckFail = CI_ERROR; - } - } - else - { - ; /**/ - } + /*ȷӽ·ʼźŻΪֶԣΪ·ȷһӽ·*/ + pRouteCfgDtStr->MainOrSubData.RouteSubIdBuf[chMainIncSubIndex] = wMaybeSubIdBuf[i]; + chMainIncSubIndex++; } else { - /*·Ӧһӽ·:ӽ·նźŻ·նźŻһ*/ - /*ȷӽ·ʺ··һ Ҵȷӽ·ʼźűΪֶԼΪյӽ·*/ - if ((pRouteCfgDtStr->ConfigRouteType == RouteCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuRouteIndex[wMaybeSubIdBuf[i]]].ConfigRouteType) - && (SIGNAL_FENDUAN_YES == dquCICfgDtStr.SgnlCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuSignalIndex[RouteCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuRouteIndex[wMaybeSubIdBuf[i]]].StartSignalId]].signalFenDuanAttr)) - { - if (ROUTE_SUB_INCLUDE_SUM_MAX > chMainIncSubIndex) - { - pRouteCfgDtStr->MainOrSubData.RouteSubIdBuf[chMainIncSubIndex] = wMaybeSubIdBuf[i]; - chMainIncSubIndex++; - } - else - { - chMaxCheckFail = CI_ERROR; - } - } - else - { - ; /*·Ҳͬʵӽ·*/ - } + ; /**/ } - if (0U < chMainIncSubIndex) - { - pRouteCfgDtStr->MainOrSubData.MainRouteProperty = ROUTE_MAIN_PROPERTY; - } - if (CI_ERROR == chMaxCheckFail) - { - break; - } - } - - for (i = 0U; i < chMaybeMainIdIndex; i++) - { - if ((SIGNAL_FENDUAN_NO == dquCICfgDtStr.SgnlCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuSignalIndex[RouteCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuRouteIndex[wMaybeMainIdBuf[i]]].StartSignalId]].signalFenDuanAttr) - && (SIGNAL_FENDUAN_NO == dquCICfgDtStr.SgnlCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuSignalIndex[RouteCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuRouteIndex[wMaybeMainIdBuf[i]]].EndSignalId]].signalFenDuanAttr) - && ((SIGNAL_FENDUAN_YES == dquCICfgDtStr.SgnlCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuSignalIndex[pRouteCfgDtStr->StartSignalId]].signalFenDuanAttr) - || (SIGNAL_FENDUAN_YES == dquCICfgDtStr.SgnlCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuSignalIndex[pRouteCfgDtStr->EndSignalId]].signalFenDuanAttr))) - { - /*·ʼնźŻֶ߱ԣӿӽ··ɸѡ·*/ - if (pRouteCfgDtStr->EndSignalId != RouteCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuRouteIndex[wMaybeMainIdBuf[i]]].EndSignalId) - {/*ȷ·նźŻӽ·նźŻһ£Ϊӽ·ȷһ·*/ - if (ROUTE_MAIN_BELONG_SUM_MAX > chSubBelMainIndex) - { - pRouteCfgDtStr->MainOrSubData.RouteBelMainIdBuf[chSubBelMainIndex] = wMaybeMainIdBuf[i]; - chSubBelMainIndex++; - } - else - { - chMaxCheckFail = CI_ERROR; - } - } - else - {/*ȷ·նźŻӽ·նźŻһ£ӽ··ѡ·һµĴȷ·Ϊյ·*/ - if (RouteCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuRouteIndex[wMaybeMainIdBuf[i]]].ConfigRouteType == pRouteCfgDtStr->ConfigRouteType) - { - if (ROUTE_MAIN_BELONG_SUM_MAX > chSubBelMainIndex) - { - pRouteCfgDtStr->MainOrSubData.RouteBelMainIdBuf[chSubBelMainIndex] = wMaybeMainIdBuf[i]; - chSubBelMainIndex++; - } - else - { - chMaxCheckFail = CI_ERROR; - } - } - } - } - if (0U < chSubBelMainIndex) - { - pRouteCfgDtStr->MainOrSubData.MainRouteProperty = ROUTE_SUB_PROPERTY; - } - if (CI_ERROR == chMaxCheckFail) - { - break; - } - } - - if (CI_ERROR == chMaxCheckFail) - { - rtnvalue = 0U; - debug_infor_printf((const)"\n RouteMainProConfigDataInit Error: Routeid:%d Sub or Main Route Over Max \n", pRouteCfgDtStr->RouteId); } else { - pRouteCfgDtStr->MainOrSubData.RouteSubSum = chMainIncSubIndex; - pRouteCfgDtStr->MainOrSubData.RouteBelMainSum = chSubBelMainIndex; - rtnvalue = 1U; + /*·Ӧһӽ·:ӽ·նźŻ·նźŻһ*/ + /*ȷӽ·ʺ··һ Ҵȷӽ·ʼźűΪֶԼΪյӽ·*/ + if ((pRouteCfgDtStr->ConfigRouteType == RouteCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuRouteIndex[wMaybeSubIdBuf[i]]].ConfigRouteType) + && (SIGNAL_FENDUAN_YES == dquCICfgDtStr.SgnlCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuSignalIndex[RouteCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuRouteIndex[wMaybeSubIdBuf[i]]].StartSignalId]].signalFenDuanAttr)) + { + pRouteCfgDtStr->MainOrSubData.RouteSubIdBuf[chMainIncSubIndex] = wMaybeSubIdBuf[i]; + chMainIncSubIndex++; + } + else + { + ; /*·Ҳͬʵӽ·*/ + } } + if (0U < chMainIncSubIndex) + { + pRouteCfgDtStr->MainOrSubData.MainRouteProperty = ROUTE_MAIN_PROPERTY; + } + } + + for (i = 0U; i < chMaybeMainIdIndex; i++) + { + if ((SIGNAL_FENDUAN_NO == dquCICfgDtStr.SgnlCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuSignalIndex[RouteCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuRouteIndex[wMaybeMainIdBuf[i]]].StartSignalId]].signalFenDuanAttr) + && (SIGNAL_FENDUAN_NO == dquCICfgDtStr.SgnlCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuSignalIndex[RouteCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuRouteIndex[wMaybeMainIdBuf[i]]].EndSignalId]].signalFenDuanAttr) + && ((SIGNAL_FENDUAN_YES == dquCICfgDtStr.SgnlCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuSignalIndex[pRouteCfgDtStr->StartSignalId]].signalFenDuanAttr) + || (SIGNAL_FENDUAN_YES == dquCICfgDtStr.SgnlCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuSignalIndex[pRouteCfgDtStr->EndSignalId]].signalFenDuanAttr))) + { + /*·ʼնźŻֶ߱ԣӿӽ··ɸѡ·*/ + if (pRouteCfgDtStr->EndSignalId != RouteCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuRouteIndex[wMaybeMainIdBuf[i]]].EndSignalId) + {/*ȷ·նźŻӽ·նźŻһ£Ϊӽ·ȷһ·*/ + pRouteCfgDtStr->MainOrSubData.RouteBelMainIdBuf[chSubBelMainIndex] = wMaybeMainIdBuf[i]; + chSubBelMainIndex++; + } + else + {/*ȷ·նźŻӽ·նźŻһ£ӽ··ѡ·һµĴȷ·Ϊյ·*/ + if (RouteCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuRouteIndex[wMaybeMainIdBuf[i]]].ConfigRouteType == pRouteCfgDtStr->ConfigRouteType) + { + pRouteCfgDtStr->MainOrSubData.RouteBelMainIdBuf[chSubBelMainIndex] = wMaybeMainIdBuf[i]; + chSubBelMainIndex++; + } + } + } + if (0U < chSubBelMainIndex) + { + pRouteCfgDtStr->MainOrSubData.MainRouteProperty = ROUTE_SUB_PROPERTY; + } + } + + if ((ROUTE_SUB_INCLUDE_SUM_MAX < chMainIncSubIndex) && (ROUTE_SUB_INCLUDE_SUM_MAX < chSubBelMainIndex)) + { + rtnvalue = 0U; } else { - rtnvalue = 0U; - debug_infor_printf((const)"\n RouteMainProConfigDataInit Error: Routeid:%d _Maybe Sub or Main Route Over Max \n", pRouteCfgDtStr->RouteId); + pRouteCfgDtStr->MainOrSubData.RouteSubSum = chMainIncSubIndex; + pRouteCfgDtStr->MainOrSubData.RouteBelMainSum = chSubBelMainIndex; + rtnvalue = 1U; } + return rtnvalue; } @@ -11612,7 +11320,6 @@ UINT8 LogRelateRouteDataInit(RouteConfigDataStruct* RouteCfgDtStr, LogicSectionC UINT16 i = 0U; UINT16 j = 0U; UINT8 rtnvalue = 0U; - UINT8 chMaxCheck = CI_SUCCESS; /*߼ΰ·ĿʼΪ0*/ pLogCfgDtStr->chRelateRouteSum = 0U; @@ -11622,34 +11329,19 @@ UINT8 LogRelateRouteDataInit(RouteConfigDataStruct* RouteCfgDtStr, LogicSectionC { if (RouteCfgDtStr[i].RouteInLogTrackIdBuf[j] == pLogCfgDtStr->LogicSectionId) { - if (LOGSEC_RELATE_ROUTE_SUM_MAX > pLogCfgDtStr->chRelateRouteSum) - { - pLogCfgDtStr->wRelateRouteId[pLogCfgDtStr->chRelateRouteSum] = RouteCfgDtStr[i].RouteId; - (pLogCfgDtStr->chRelateRouteSum)++; - } - else - { - chMaxCheck = CI_ERROR; - } + pLogCfgDtStr->wRelateRouteId[pLogCfgDtStr->chRelateRouteSum] = RouteCfgDtStr[i].RouteId; + (pLogCfgDtStr->chRelateRouteSum)++; break; } - if (CI_ERROR == chMaxCheck) - { - break; - } - } - if (CI_ERROR == chMaxCheck) - { - break; } } - if (CI_ERROR == chMaxCheck) + if (LOGSEC_RELATE_ROUTE_SUM_MAX >= pLogCfgDtStr->chRelateRouteSum) { - rtnvalue = 0U; + rtnvalue = 1U; } else { - rtnvalue = 1U; + rtnvalue = 0U; } return rtnvalue; } @@ -11670,7 +11362,7 @@ UINT8 LogRelateProSwDataInit(RouteConfigDataStruct* RouteCfgDtStr, LogicSectionC UINT16 wProtectSwSum = 0U;/*߼ι*/ UINT16 wProtectSwId = 0U;/*߼ιIDɱ*/ UINT8 chProtectSwFlag = 0U;/*߼ιȥر־*/ - UINT8 chMaxCheck = CI_SUCCESS; + /*߼ι*/ pLgScCfgDtStr->chRelateProSwSum = 0U; for (ii = 0; ii < pLgScCfgDtStr->chLogsecSwitchSum; ii++) @@ -11697,43 +11389,20 @@ UINT8 LogRelateProSwDataInit(RouteConfigDataStruct* RouteCfgDtStr, LogicSectionC } if (1U != chProtectSwFlag) {/*ǰвIDŽ*/ - if (LOGSEC_RELATE_PRO_SW_SUM_MAX > pLgScCfgDtStr->chRelateProSwSum) - { - pLgScCfgDtStr->wRelateProSwId[pLgScCfgDtStr->chRelateProSwSum].SwitchId = dquCICfgDtStr.RouteCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuRouteIndex[pLgScCfgDtStr->wRelateRouteId[kk]]].RouteProtectSwitchStru[hh].ProtectSwitchId; - pLgScCfgDtStr->wRelateProSwId[pLgScCfgDtStr->chRelateProSwSum].SwitchPosition = dquCICfgDtStr.RouteCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuRouteIndex[pLgScCfgDtStr->wRelateRouteId[kk]]].RouteProtectSwitchStru[hh].ProtectPosition; - (pLgScCfgDtStr->chRelateProSwSum)++; - } - else - { - chMaxCheck = CI_ERROR; - } + pLgScCfgDtStr->wRelateProSwId[pLgScCfgDtStr->chRelateProSwSum].SwitchId = dquCICfgDtStr.RouteCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuRouteIndex[pLgScCfgDtStr->wRelateRouteId[kk]]].RouteProtectSwitchStru[hh].ProtectSwitchId; + pLgScCfgDtStr->wRelateProSwId[pLgScCfgDtStr->chRelateProSwSum].SwitchPosition = dquCICfgDtStr.RouteCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuRouteIndex[pLgScCfgDtStr->wRelateRouteId[kk]]].RouteProtectSwitchStru[hh].ProtectPosition; + (pLgScCfgDtStr->chRelateProSwSum)++; break; } } } - if (CI_ERROR == chMaxCheck) - { - break; - } } - if (CI_ERROR == chMaxCheck) - { - break; - } - } - if (CI_ERROR == chMaxCheck) - { - break; } } - if (CI_ERROR == chMaxCheck) + if (LOGSEC_RELATE_PRO_SW_SUM_MAX < pLgScCfgDtStr->chRelateProSwSum) { rtnvalue = 0U; } - else - { - rtnvalue = 1U; - } return rtnvalue; } @@ -12715,41 +12384,4 @@ static UINT8 NonReturnStruFromDquStr(DSU_AR_STRU* pNonReturn, NonAutoReturnConfi return rtnvalue; -} - -/* -*: ʼLINK -*: CHAR * FSName ļָ -*: -*ֵ: 0 ʧ -* 1 ɹ -* by cgh 20250818 -*/ -static UINT8 LinkSpecialEaDataInit(CHAR* FSName) -{ - UINT16 ii = 0U; - UINT8 retVal = 0U; /*ֵ*/ - UINT16 jj = 0U; - - retVal = dquCbtcConfigDataInit(FSName); /*ʼϵͳ*/ - - if (0U != retVal) - { - for (ii = 0U; ii < cbtcConfigDataStru.BoundarySpecialEaInfoLen; ii++) - { - for (jj = 0U; jj < cbtcConfigDataStru.cbtcSpecialEaInfo[ii].wLinkSum; jj++) - { - dquCICfgDtStr.LinkCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuLinkIndex[cbtcConfigDataStru.cbtcSpecialEaInfo[ii].szLinkId[jj]]].wLinkSpecialEa = cbtcConfigDataStru.cbtcSpecialEaInfo[ii].wIndex; - dquCICfgDtStr.LinkCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuLinkIndex[cbtcConfigDataStru.cbtcSpecialEaInfo[ii].szLinkId[jj]]].dwFrontDis = cbtcConfigDataStru.cbtcSpecialEaInfo[ii].dwFrontDis; - dquCICfgDtStr.LinkCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuLinkIndex[cbtcConfigDataStru.cbtcSpecialEaInfo[ii].szLinkId[jj]]].dwBehindDis = cbtcConfigDataStru.cbtcSpecialEaInfo[ii].dwBehindDis; - } - } - } - else - { - /*ϵͳݳʼʧܣ0*/ - } - - return retVal; -} - +} \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/QueryFiles/dquCIInit.h b/TSCP/src/APP/ciapp/QueryFiles/dquCIInit.h index 8ed5e4f..08a6680 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dquCIInit.h +++ b/TSCP/src/APP/ciapp/QueryFiles/dquCIInit.h @@ -32,7 +32,6 @@ #include "NonAutoReturnConfigDataManage.h" #include "../SGBJ/SGBJConfigDataManage.h" #include "../Section/AxisSectionConfigDataManage.h" -#include "../System/SystemParameterManage.h" #define ORIGIN_TO_TERMINAL ((UINT8)0x55) /*㵽յ*/ #define TERMINAL_TO_ORIGIN ((UINT8)0xAA) /*յ㵽*/ @@ -59,9 +58,8 @@ /*dquCICfgDtStr.OCPhySecCfgStrгԱ*/ #define OC_PHYSEC_CFG_STR_MEMBER_NUM ((UINT8)6) -#define AXIS_TYPE_YONGLIE ((UINT8)(0x01)) /**/ -#define AXIS_TYPE_KEANDA ((UINT8)(0x02)) /*ư*/ -#define AXIS_TYPE_FUHAOSHENG ((UINT8)(0x03)) /*ʢ*/ +#define AXIS_TYPE_YONGLIE ((UINT8)(0x01)) /**/ +#define AXIS_TYPE_KEANDA ((UINT8)(0x02)) /*ư*/ #define INDICATOR_MAX_SIZE ((UINT16)2000) /*С*/ @@ -84,10 +82,6 @@ #define LINK_LINXIAN_YES ((UINT8)0x55) /*Link*/ #define LINK_LINXIAN_NO ((UINT8)0xFF) /*Link*/ -/**/ -#define LINK_SPECOAL_EA_YES ((UINT8)0x55) /*Link*/ -#define LINK_SPECOAL_EA_NO ((UINT8)0xAA) /*Link*/ - typedef struct { RelayConfigDataStruct RelayCfgDtStr[RELAY_SUM_MAX]; /*̵*/ diff --git a/TSCP/src/APP/ciapp/QueryFiles/dquCIInterFace.c b/TSCP/src/APP/ciapp/QueryFiles/dquCIInterFace.c index 4a09db6..d3be220 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dquCIInterFace.c +++ b/TSCP/src/APP/ciapp/QueryFiles/dquCIInterFace.c @@ -4560,75 +4560,3 @@ UINT8 EnsureNearAxleStorageLineAtrr(const UINT16 wAxleId) return cRetVal; } -/* -* ȡڼе -* ˵const UINT8 chLocalCiId ID -* PhysicalSectionConfigDataStruct* pPhysicalSectionConfigDataStru νṹ -* ֵ CI_SUCCESS,ɹ -* CI_ERROR,ʧ -* BY CGH 20250418 -*/ -UINT8 ReadPhySecIndexInAxle(const UINT8 chLocalCiId, PhysicalSectionConfigDataStruct* pPhysicalSectionConfigDataStru) -{ - UINT8 chReval = CI_ERROR; - UINT8 chDevSum = 0U; /*豸Ŀ*/ - UINT8* szDevIdBuf = NULL; /*豸ID*/ - UINT8 ii = 0U; - UINT16 jj = 0U; - UINT16 wIndexInAxle = 0U; /*ڼϵͳе*/ - - if ((0U != chLocalCiId) && (NULL != pPhysicalSectionConfigDataStru)) - { - chReval = CI_SUCCESS; - chDevSum = GetCiTransmitSpecifySysDevSum(CI_SYSTEM_TYPE_AXIS); - szDevIdBuf = GetCiTransmitSpecifySysDevBuf(CI_SYSTEM_TYPE_AXIS); - - for (ii = 0U; ii < chDevSum; ii++) - { - wIndexInAxle = 1U; - for (jj = 0U; jj < dquCICfgDtStr.PsclSgmtCfgDtStrLen; jj++) - { - if (dquCICfgDtStr.PsclSgmtCfgDtStr[jj].PhysicalSectionId < PHYSICAL_SECTION_SUM_MAX) - { - if (chLocalCiId == dquCICfgDtStr.PsclSgmtCfgDtStr[jj].BelongCiId) - { - if (szDevIdBuf[ii] == (UINT8)dquCICfgDtStr.PsclSgmtCfgDtStr[jj].BelongAxleSysID) - { - pPhysicalSectionConfigDataStru[dquCICfgDtStr.PsclSgmtCfgDtStr[jj].PhysicalSectionId].wIndexInAxle = wIndexInAxle; - wIndexInAxle++; - } - else - { - ; - } - } - else - { - ; - } - } - else - { - chReval = CI_ERROR; - break; - } - } - - if (CI_ERROR == chReval) - { - break; - } - else - { - ; - } - } - } - else - { - ; - } - - return chReval; -} - diff --git a/TSCP/src/APP/ciapp/QueryFiles/dquCIInterFace.h b/TSCP/src/APP/ciapp/QueryFiles/dquCIInterFace.h index ed33cc7..2a5813f 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dquCIInterFace.h +++ b/TSCP/src/APP/ciapp/QueryFiles/dquCIInterFace.h @@ -497,16 +497,6 @@ UINT8 EnsureAxleBorderAtrr(const UINT16 wAxleId); *********************************************/ UINT8 EnsureNearAxleStorageLineAtrr(const UINT16 wAxleId); -/* -* ȡڼе -* ˵const UINT8 chLocalCiId ID -* PhysicalSectionConfigDataStruct* pPhysicalSectionConfigDataStru νṹ -* ֵ CI_SUCCESS,ɹ -* CI_ERROR,ʧ -* BY CGH 20250418 -*/ -UINT8 ReadPhySecIndexInAxle(const UINT8 chLocalCiId, PhysicalSectionConfigDataStruct* pPhysicalSectionConfigDataStru); - #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruFrmChar.c b/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruFrmChar.c index d53fe61..967b32c 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruFrmChar.c +++ b/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruFrmChar.c @@ -280,16 +280,6 @@ UINT8 R_ScreenStructFromChar(UINT8 * pDataAddr,Relay_ScreenStruct* pScrnStr, UIN pData += 2U; } - if (54U < rowLen) - { - pScrnStr->chControlType = *pData; /*ſ*/ - pData += 1U; - } - else - {/*ûһ*/ - pScrnStr->chControlType = PSD_CONTROL_TYPE_RCI; /*RCI*/ - } - rtnvalue = 1u; } @@ -639,11 +629,25 @@ UINT8 R_ZhaoChaStruFromChar(UINT8 * pDataAddr,Relay_ZhaoChaStruct* pZCStr,UINT16 index += 2u; } } + else if (CI_PATTERN_FULL_ELECTRONIC == chLocalCiPattern) + { + if ((index + 6U) <= realRowLen) + { + pZCStr->wCbtcRelayBenDuanZcId = dquCiShortFromChar(pData); /*CBTC˼̵ID*/ + pData += 2U; + index += 2U; + pZCStr->wCbtcRelayDuiDuanZcId = dquCiShortFromChar(pData); /*CBTCԶ˼̵ID*/ + pData += 2U; + index += 2U; + pZCStr->wCbtcCancelRelayId = dquCiShortFromChar(pData); /*CBTCȡղ̵ID*/ + pData += 2U; + index += 2U; + } + } else { ; /*Ƿֵ*/ } - rtnvalue = 1U; return rtnvalue; @@ -965,37 +969,23 @@ UINT8 R_FloodGateStructFromChar(UINT8 * pDataAddr,Relay_FloodGateStruct* pFloodG UINT8 R_DCAgreeStructFromChar(UINT8 * pDataAddr,Relay_DCAgreeStruct * pDCAgreeStr) { UINT8 * pData = pDataAddr; - UINT8 rtnvalue = 0U; - UINT8 chLocalCiPattern = 0u; /*CIģʽ*/ + UINT8 rtnvalue = 1u; if ((NULL == pDataAddr) || (NULL == pDCAgreeStr)) { - ; + rtnvalue = 0u; } - else + if(1u == rtnvalue) { - chLocalCiPattern = GetLocalCiPattern(); - pDCAgreeStr->wRouteId = dquCiShortFromChar(pData); /*·ID*/ - pData += 2U; + pData += 2u; pDCAgreeStr->DCRouteDCQJId = dquCiShortFromChar(pData); /*ͬ-̵ID*/ - pData += 2U; - - if (CI_PATTERN_FULL_ELECTRONIC == chLocalCiPattern) - { - pDCAgreeStr->DCRouteDCQJTwoId = dquCiShortFromChar(pData); /*ͬ-̵2ID*/ - pData += 2U; - } - else - { - pDCAgreeStr->DCRouteDCQJTwoId = 0U; - } - + pData += 2u; pDCAgreeStr->DCRouteTAJId = dquCiShortFromChar(pData); /*ͬ-ͬⰴť̵ID*/ - pData += 2U; + pData += 2u; - rtnvalue = 1U; + rtnvalue = 1u; } return rtnvalue; diff --git a/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruInit.c b/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruInit.c index 987333b..1def5dd 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruInit.c +++ b/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruInit.c @@ -1464,100 +1464,76 @@ UINT8 InitRelay_FloodGateStru(CHAR* CIDataName) *********************************************/ UINT8 InitRelay_DCAgreeStru(CHAR* CIDataName) { - UINT8 funcRtn = 0U; + UINT8 funcRtn = 0u; Relay_DCAgreeStruct* pDCAgreeStr = NULL; /*̵ͬ*/ - UINT8* pDataAddr = NULL; /*ݵַ*/ - UINT32 DataSize = 0U; /*ݴСֽ*/ - UINT16 j = 0U; - UINT8 rtnValue = 0U; + UINT8* pDataAddr; /*ݵַ*/ + UINT32 DataSize; /*ݴСֽ*/ + UINT16 j; + UINT8 rtnValue = 0u; UINT8 localCiPattern = 0U; - UINT32 dwExcelId = 0u; /*excel id*/ - UINT32 dwSheetId = 0u; /*sheet id*/ - UINT32 dwRowLen = 0u; /*г*/ - UINT16 wRealRowCount = 0U; /**/ - localCiPattern = GetLocalCiPattern(); - /*Ѿʼˣǵִй*/ - if(NULL != RelayData.pRelayDCAgreeStr) + /*Ѿʼˣǵִй ȫӲóʼű*/ + if((NULL != RelayData.pRelayDCAgreeStr)||(CI_PATTERN_FULL_ELECTRONIC == localCiPattern)) { - rtnValue = 1U; + rtnValue = 1u; } else { - if (CI_PATTERN_TRADITIONAL == localCiPattern) - { - dwExcelId = CI_DATA_TYPE; - dwSheetId = RELAY_DCAGREE_ID; - } - else - { - dwExcelId = OC_DATA_TYPE; - dwSheetId = OC_RELAY_DCAGREE_ID; - } - /*ȡ·̵ͬݱ*/ - funcRtn = dquGetConfigDataNew(CIDataName, dwExcelId, dwSheetId,&pDataAddr,&DataSize, &wRealRowCount); - if(0U == funcRtn) + funcRtn = dquGetConfigData(CIDataName,CI_DATA_TYPE, RELAY_DCAGREE_ID,&pDataAddr,&DataSize); + if(0u == funcRtn) { - /*ûбʼɹ*/ - rtnValue = 1U; - debug_infor_printf((const)"\nOC_DCAgree_RELAY_ID NO IN FS\n"); + /*ʧ*/ + rtnValue = 0u; } else { - rtnValue = 1U; - if ((0U != DataSize) && (0U != wRealRowCount)) + if(0u != (DataSize%LEN_RELAY_DCAGREE_ID)) + { /*øΪݴ*/ + debug_infor_printf((const)"\nCI_RELAY_DATA,RELAY_DCAGREE len %d not equal to fs",LEN_RELAY_DCAGREE_ID); + DebugPrintAppError(ERROR_fs_columns_len_not_equal_to_ci_software,CI_DEVICE_TYPE_FS_TABLE,((UINT32)CI_DATA_TYPE<<8u)+RELAY_DCAGREE_ID,PRINT_ONCE); + rtnValue = 0u; + } + else { - if (0U != (DataSize % wRealRowCount)) - { - /*øΪݴ*/ - debug_infor_printf((const)"\nCI_RELAY_DATA,RELAY_DCAGREE len %d not equal to fs", (DataSize % wRealRowCount)); - DebugPrintAppError(ERROR_fs_columns_len_not_equal_to_ci_software, CI_DEVICE_TYPE_FS_TABLE, ((UINT32)(dwExcelId << 8U)) + dwSheetId, PRINT_ONCE); - rtnValue = 0U; + RelayDataLen.RelayDCAgreeStrLen = (UINT16)(DataSize / LEN_RELAY_DCAGREE_ID);/*ṹ*/ + + if(LEN_RELAY_DCAGREE_ID >DataSize ) + {/*һ*/ + RelayData.pRelayDCAgreeStr = (Relay_DCAgreeStruct *) MyNew ((UINT32)sizeof(Relay_DCAgreeStruct) ); + rtnValue = 1u; } else { - RelayDataLen.RelayDCAgreeStrLen = wRealRowCount;/*ṹ*/ - dwRowLen = DataSize / wRealRowCount; /*̬ռ*/ - RelayData.pRelayDCAgreeStr = (Relay_DCAgreeStruct*)MyNew((UINT32)(sizeof(Relay_DCAgreeStruct) * RelayDataLen.RelayDCAgreeStrLen)); + RelayData.pRelayDCAgreeStr = (Relay_DCAgreeStruct *) MyNew ((UINT32)(sizeof(Relay_DCAgreeStruct) * RelayDataLen.RelayDCAgreeStrLen)); - if (NULL == RelayData.pRelayDCAgreeStr) + if(NULL == RelayData.pRelayDCAgreeStr) {/*̬ռʧ*/ - RelayDataLen.RelayDCAgreeStrLen = 0U; - rtnValue = 0U; + RelayDataLen.RelayDCAgreeStrLen = 0u; + rtnValue = 0u; } else { /*ڴΪЧ*/ - (void)memset(RelayData.pRelayDCAgreeStr, 0x00, sizeof(Relay_DCAgreeStruct) * RelayDataLen.RelayDCAgreeStrLen); - /*ݵ Ĭг ṹ */ - - for (j = 0u; j < RelayDataLen.RelayDCAgreeStrLen; j++) + (void)memset(RelayData.pRelayDCAgreeStr, 0x00,sizeof(Relay_DCAgreeStruct) * RelayDataLen.RelayDCAgreeStrLen); + /*ݵ Ĭг ṹ */ + rtnValue = 1u; + for(j = 0u;j < RelayDataLen.RelayDCAgreeStrLen;j++) { - if (1U == rtnValue) - { - pDCAgreeStr = RelayData.pRelayDCAgreeStr + j; + pDCAgreeStr = RelayData.pRelayDCAgreeStr + j; + + /*ݽṹ*/ + rtnValue &= R_DCAgreeStructFromChar(pDataAddr,pDCAgreeStr); + pDataAddr += LEN_RELAY_DCAGREE_ID; - /*ݽṹ*/ - rtnValue &= R_DCAgreeStructFromChar(pDataAddr, pDCAgreeStr); - pDataAddr += dwRowLen; - } - else - { - break; - } } } } } - else - { - ; - } } } return rtnValue; diff --git a/TSCP/src/APP/ciapp/QueryFiles/dquCILSStru.h b/TSCP/src/APP/ciapp/QueryFiles/dquCILSStru.h index 04de5c8..b81d3e7 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dquCILSStru.h +++ b/TSCP/src/APP/ciapp/QueryFiles/dquCILSStru.h @@ -331,8 +331,6 @@ typedef struct S_OverlapLockCondStruct UINT16 szIncludeInvOppOverlapId[OVLP_LOCK_COND_MAX_INCL_INV_OPP_OVLP_NUM]; /*޵жԱ*/ UINT16 overlapLocProSwitchGroupID; /*շID*/ UINT16 szIncludeFloodGateId[ROUTE_MAX_FLOOD_GATE_NUM]; /*ID*/ - UINT16 wOverlapThisZhaoChaRelayId; /*αղ̵ID*/ - UINT16 wOverlapThatZhaoChaRelayId; /*ζԶղ̵ID*/ } LS_OveralpLockCondStru; /*·ڶ࿪ݽṹ*/ diff --git a/TSCP/src/APP/ciapp/QueryFiles/dquCILSStruFrmChar.c b/TSCP/src/APP/ciapp/QueryFiles/dquCILSStruFrmChar.c index f56bea8..beab3d9 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dquCILSStruFrmChar.c +++ b/TSCP/src/APP/ciapp/QueryFiles/dquCILSStruFrmChar.c @@ -733,14 +733,6 @@ UINT8 LS_OverlapLockCondStruFromChar(UINT8 * pDataAddr, LS_OveralpLockCondStru * pData += LS_DATA_DUAL_BYTE_ELEM_LEN; } - /*αղ̵ID*/ - pOverlapLockCondStru->wOverlapThisZhaoChaRelayId = dquCiShortFromChar(pData); - pData += LS_DATA_DUAL_BYTE_ELEM_LEN; - - /*ζԶղ̵ID*/ - pOverlapLockCondStru->wOverlapThatZhaoChaRelayId = dquCiShortFromChar(pData); - pData += LS_DATA_DUAL_BYTE_ELEM_LEN; - rtnvalue = 1u; } return rtnvalue; diff --git a/TSCP/src/APP/ciapp/QueryFiles/dquCILSStruInit.c b/TSCP/src/APP/ciapp/QueryFiles/dquCILSStruInit.c index 2725968..04600fa 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dquCILSStruInit.c +++ b/TSCP/src/APP/ciapp/QueryFiles/dquCILSStruInit.c @@ -1547,8 +1547,6 @@ UINT8 InitLS_OverlapLockCondStru(CHAR *LSDataName) LS_OveralpLockCondStru* pTempLSProtSecLockCondStru = NULL; /*ʱ·*/ UINT8* pDataAddr = NULL; /*ݵַ*/ UINT32 DataSize = 0u; /*ݴСֽ*/ - UINT32 rowLen = 0u; /**/ - UINT16 realRowLen = 0U; /*ʵʱһеij*/ UINT16 j = 0u; UINT8 rtnValue = 0u; @@ -1560,7 +1558,7 @@ UINT8 InitLS_OverlapLockCondStru(CHAR *LSDataName) else { /*ȡ*/ - funcRtn = dquGetConfigDataNew(LSDataName, LS_DATA_TYPE, OVERLAP_LOCK_COND_DATA_ID, &pDataAddr, &DataSize, &rowLen); + funcRtn = dquGetConfigData(LSDataName, LS_DATA_TYPE, OVERLAP_LOCK_COND_DATA_ID, &pDataAddr, &DataSize); if(funcRtn == 0u) { @@ -1570,61 +1568,55 @@ UINT8 InitLS_OverlapLockCondStru(CHAR *LSDataName) else { /*ø*/ - if ((0U != DataSize) && (0U != rowLen)) - { - if (0U != DataSize % rowLen) - { - debug_infor_printf((const)"\nCI_LS_DATA,OVERLAP_LOCK_COND len %d not equal to fs", PHYSICAL_INTRU_DATA_LEN); - DebugPrintAppError(ERROR_fs_columns_len_not_equal_to_ci_software, CI_DEVICE_TYPE_FS_TABLE, (LS_DATA_TYPE << 8) + OVERLAP_LOCK_COND_DATA_ID, PRINT_ONCE); - rtnValue = 0u; - } - else - { - realRowLen = (UINT16)(DataSize / rowLen); - LSDataLen.LSOverlapLockCondStruLen = (UINT16)rowLen; - - if (DataSize < realRowLen) - { - rtnValue = 0U; - } - else - { - /*̬ռ*/ - LSData.pLSOverlapLockCondStru = (LS_OveralpLockCondStru*)MyNew((UINT32)(sizeof(LS_OveralpLockCondStru) * LSDataLen.LSOverlapLockCondStruLen)); - /*̬ռʧ*/ - if (NULL == LSData.pLSOverlapLockCondStru) - { - /*鳤0Խ*/ - LSDataLen.LSOverlapLockCondStruLen = 0u; - - rtnValue = 0u; - } - else - { - /*ڴΪЧ*/ - (void)memset(LSData.pLSOverlapLockCondStru, 0x00, sizeof(LS_OveralpLockCondStru) * LSDataLen.LSOverlapLockCondStruLen); - - /*ݵ Ĭг ṹ */ - rtnValue = 1u; - for (j = 0u; j < LSDataLen.LSOverlapLockCondStruLen; j++) - { - pTempLSProtSecLockCondStru = LSData.pLSOverlapLockCondStru + j; - - /*ݽṹ*/ - rtnValue &= LS_OverlapLockCondStruFromChar(pDataAddr, pTempLSProtSecLockCondStru); - - pDataAddr += realRowLen; - } - - } - } - } + if((DataSize % OVERLAP_LOCK_COND_DATA_LEN) != 0u) + { + debug_infor_printf((const)"\nCI_LS_DATA,OVERLAP_LOCK_COND len %d not equal to fs",PHYSICAL_INTRU_DATA_LEN); + DebugPrintAppError(ERROR_fs_columns_len_not_equal_to_ci_software,CI_DEVICE_TYPE_FS_TABLE,(LS_DATA_TYPE<<8)+OVERLAP_LOCK_COND_DATA_ID,PRINT_ONCE); + rtnValue = 0u; } else { - rtnValue = 1U; - } - + + /*ȡĿ*/ + LSDataLen.LSOverlapLockCondStruLen = (UINT16)(DataSize/OVERLAP_LOCK_COND_DATA_LEN); + + if(DataSize < OVERLAP_LOCK_COND_DATA_LEN) + { + LSData.pLSOverlapLockCondStru = (LS_OveralpLockCondStru *) MyNew ((UINT32)sizeof(LS_OveralpLockCondStru)); + rtnValue = 1u; + } + else + { + /*̬ռ*/ + LSData.pLSOverlapLockCondStru = (LS_OveralpLockCondStru *) MyNew ((UINT32)(sizeof(LS_OveralpLockCondStru) * LSDataLen.LSOverlapLockCondStruLen)); + /*̬ռʧ*/ + if(NULL == LSData.pLSOverlapLockCondStru) + { + /*鳤0Խ*/ + LSDataLen.LSOverlapLockCondStruLen = 0u; + + rtnValue = 0u; + } + else + { + /*ڴΪЧ*/ + (void)memset(LSData.pLSOverlapLockCondStru, 0x00, sizeof(LS_OveralpLockCondStru) * LSDataLen.LSOverlapLockCondStruLen); + + /*ݵ Ĭг ṹ */ + rtnValue = 1u; + for(j=0u; j < LSDataLen.LSOverlapLockCondStruLen; j++) + { + pTempLSProtSecLockCondStru = LSData.pLSOverlapLockCondStru + j; + + /*ݽṹ*/ + rtnValue &=LS_OverlapLockCondStruFromChar(pDataAddr, pTempLSProtSecLockCondStru); + + pDataAddr += OVERLAP_LOCK_COND_DATA_LEN; + } + + } + } + } } } @@ -2043,7 +2035,7 @@ UINT8 InitLS_LogSecIntruStru_Each(CHAR* LSDataName) if (0u != (DataSize % realRowCount)) { debug_infor_printf((const)"\nTIOC_LS_DATA,nLGC_EACHOTHER_INTRU_TABLE 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, (LS_DATA_TYPE << 8) + LOGIC_SEC_EACHINTRU_DATA_ID, PRINT_ONCE); + DebugPrintAppError(ERROR_fs_columns_len_not_equal_to_ci_software, CI_DEVICE_TYPE_FS_TABLE, (LS_DATA_TYPE << 8) + GROUP_AUTO_ROUTE_DATA_ID, PRINT_ONCE); rtnValue = 0u; } else @@ -2080,7 +2072,7 @@ UINT8 InitLS_LogSecIntruStru_Each(CHAR* LSDataName) } else { - debug_infor_printf((const)"\nLGC_EACHOTHER_INTRU_TABLE DataSize %d realRowCount %d\n ", DataSize, realRowCount); + debug_infor_printf((const)"\nGROUP_AUTO_ROUTE_DATA_ERR DataSize %d realRowCount %d\n ", DataSize, realRowCount); } } diff --git a/TSCP/src/APP/ciapp/QueryFiles/dquCIPZStru.h b/TSCP/src/APP/ciapp/QueryFiles/dquCIPZStru.h index 885f82c..50331e3 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dquCIPZStru.h +++ b/TSCP/src/APP/ciapp/QueryFiles/dquCIPZStru.h @@ -59,7 +59,5 @@ #define CI_SYSTEM_SIGWITHFUSHISIG_ID ((UINT8)0x0b) /*źŻ븴ʾźŻϵ*/ #define CI_SYSTEM_SIGWITHFUSHISIG_LEN ((UINT8)12) /*źŻ븴ʾźŻϵ*/ -#define CI_SYSTEM_VERGE_KILL_ID ((UINT8)0x0F) /*ӦߵĹת*/ - #endif diff --git a/TSCP/src/APP/ciapp/QueryFiles/dquMaskInit.c b/TSCP/src/APP/ciapp/QueryFiles/dquMaskInit.c index 6d1ad36..71bb91a 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dquMaskInit.c +++ b/TSCP/src/APP/ciapp/QueryFiles/dquMaskInit.c @@ -172,15 +172,15 @@ UINT8 MaskCfgDtStruFrmCIATSSignalMask(UINT8 * FSDataName) UINT16 residue = 0u; UINT16 tempMaskId = 0u; /*λIDʱ*/ UINT8 reVal = CI_ERROR; - UINT8 rowLenth = 0u;/*г*/ + UINT8 rowLenth = 0u;/*г*/ + UINT8 MaskType[] = { 0u,MASK_TYPE_SIGNAL_RED,MASK_TYPE_SIGNAL_YELLOW,MASK_TYPE_SIGNAL_GREEN,MASK_TYPE_SIGNAL_WHITE, - MASK_TYPE_SIGNAL_REDYELLOW,MASK_TYPE_SIGNAL_LIGHTSTATE,MASK_TYPE_SIGNAL_BREAK,MASK_TYPE_SIGNAL_FENGSUO,MASK_TYPE_SIGNAL_CENTER_DETAIN, - MASK_TYPE_SIGNAL_LOCAL_DETAIN,MASK_TYPE_SIGNAL_LINSHIXIANSU_SET,MASK_TYPE_SIGNAL_DOUBLE_GREEN,MASK_TYPE_SIGNAL_DOUBLE_YELLOW, - MASK_TYPE_SIGNAL_GREEN_YELLOW,MASK_TYPE_SIGNAL_MAINTAINSTATE,MASK_TYPE_SIGNAL_CLOSE_ABNORMAL,MASK_TYPE_SIGNAL_OC_BOARD_FAULT, - MASK_TYPE_SIGNAL_CANCEL_DET_ERR,MASK_TYPE_SIGNAL_DET_ERR,MASK_TYPE_SIGNAL_RELAY_DETAIN,MASK_TYPE_SIGNAL_AUTO_DERAIN,0U, - MASK_TYPE_SIGNAL_GREENBREAK,MASK_TYPE_SIGNAL_YELLOWBREAK,MASK_TYPE_SIGNAL_WHITEBREAK,MASK_TYPE_SIGNAL_BLUEBREAK, - MASK_TYPE_SIGNAL_DET_CUT_VALID,MASK_TYPE_SIGNAL_DET_CUT_ERR,0U }; - UINT16 BuChang = 0u; + MASK_TYPE_SIGNAL_REDYELLOW,MASK_TYPE_SIGNAL_LIGHTSTATE,MASK_TYPE_SIGNAL_BREAK,MASK_TYPE_SIGNAL_FENGSUO,MASK_TYPE_SIGNAL_CENTER_DETAIN, + MASK_TYPE_SIGNAL_LOCAL_DETAIN,MASK_TYPE_SIGNAL_LINSHIXIANSU_SET,MASK_TYPE_SIGNAL_DOUBLE_GREEN,MASK_TYPE_SIGNAL_DOUBLE_YELLOW, + MASK_TYPE_SIGNAL_GREEN_YELLOW,MASK_TYPE_SIGNAL_MAINTAINSTATE,MASK_TYPE_SIGNAL_CLOSE_ABNORMAL,MASK_TYPE_SIGNAL_OC_BOARD_FAULT, + MASK_TYPE_SIGNAL_CANCEL_DET_ERR,MASK_TYPE_SIGNAL_DET_ERR,MASK_TYPE_SIGNAL_RELAY_DETAIN,MASK_TYPE_SIGNAL_AUTO_DERAIN,0U, + 0u }; + UINT16 BuChang = 0u; #if 0 funcRtn = dquGetConfigData(FSDataName,CI_ATS_MASK_TYPE,CI_ATS_SIGNAL_MASK_ID,&pDataAddr,&DataSize); #endif @@ -294,40 +294,38 @@ UINT8 MaskCfgDtStruFrmCIATSPsdMask(UINT8* FSDataName) UINT16 DeviceID = 0u; UINT16 residue = 0u; UINT16 tempMaskId = 0u; /*λIDʱ*/ - UINT16 realRow = 0u; - UINT16 rowLen = 0u; + UINT32 realRow = 0u; + UINT8 rowLen = 0u; #if 1 - UINT8 MaskType[] = { 0u,MASK_TYPE_PSD_STATE_ATS,MASK_TYPE_MUTUALLOCK_STATE,MASK_TYPE_REMORA_STATE, + UINT8 MaskType[] = { 0u,MASK_TYPE_PSD_STATE_ATS,MASK_TYPE_MUTUALLOCK_STATE,MASK_TYPE_REMORA_STATE, MASK_TYPE_PSD_PCB,MASK_TYPE_PSD_POB,MASK_TYPE_PSD_PSB,MASK_TYPE_PSD_PCB_INVALID, MASK_TYPE_PSD_POB_INVALID,MASK_TYPE_PSD_PSB_INVALID,MASK_TYPE_PSD_JXTC_PANGLU, MASK_TYPE_PSD_PCBPSBDPB_PANGLU_STATE,MASK_TYPE_PSD_PDB_FLASH_STATE, - MASK_TYPE_PSD_VIDEO_QK_LU,MASK_TYPE_PSD_VIDEO_QK_HONG,MASK_TYPE_PSD_EXCEPT_OPEN,0U }; + MASK_TYPE_PSD_VIDEO_QK_LU,MASK_TYPE_PSD_VIDEO_QK_HONG,0U }; #else UINT8 MaskType[] = { 0u,MASK_TYPE_PSD_STATE_ATS,MASK_TYPE_MUTUALLOCK_STATE,MASK_TYPE_REMORA_STATE, MASK_TYPE_PSD_PCB,MASK_TYPE_PSD_POB,MASK_TYPE_PSD_PSB,MASK_TYPE_PSD_PCB_INVALID,MASK_TYPE_PSD_POB_INVALID,MASK_TYPE_PSD_PSB_INVALID,0 }; #endif UINT16 BuChang = 0u; - funcRtn = dquGetConfigDataNew(FSDataName, CI_ATS_MASK_TYPE, CI_ATS_PSD_MASK_ID, &pDataAddr, &DataSize, &realRow); + funcRtn = dquGetConfigDataNew(FSDataName, CI_ATS_MASK_TYPE, CI_ATS_PSD_MASK_ID, &pDataAddr, &DataSize, &realRow); + rowLen = (UINT8)(DataSize / realRow); if (funcRtn == 0u) { funcRtn = 0u; return funcRtn; } - if (0u == DataSize) - { - /**/ - funcRtn = 1u; - return funcRtn; - } - if(0u != DataSize % realRow) + + if (DataSize % rowLen != 0u) { funcRtn = 0u; return funcRtn; } - else + if (DataSize == 0u) { - rowLen = (UINT16)(DataSize / realRow); + /**/ + funcRtn = 1u; + return funcRtn; } for (; DataSize > 0u; DataSize -= 2u) { @@ -403,33 +401,31 @@ UINT8 MaskCfgDtStruFrmCIATSEsbMask(UINT8* FSDataName) UINT16 DeviceID = 0u; UINT16 residue = 0u; UINT16 tempMaskId = 0u; /*λIDʱ*/ - UINT16 realRow = 0u; - UINT16 rowLen = 0u; + UINT32 realRow = 0u; + UINT8 rowLen = 0u; UINT16 i = 0U; UINT8 chBreakFlag = 0U; - UINT8 MaskType[] = { 0u, MASK_TYPE_ESP_STATE, MASK_TYPE_ESS_STEADY_STATE, MASK_TYPE_ESP_FLASH_STATE, MASK_TYPE_CANCEL_ESP_FAULT, MASK_TYPE_ESP_FAULT, MASK_TYPE_CUT_ESP_FAULT, MASK_TYPE_ESP_PRESS_STATE, 0u }; + UINT8 MaskType[] = { 0u, MASK_TYPE_ESP_STATE, MASK_TYPE_ESS_STEADY_STATE, MASK_TYPE_ESP_FLASH_STATE, MASK_TYPE_CANCEL_ESP_FAULT, MASK_TYPE_ESP_FAULT, 0u }; UINT16 BuChang = 0u; funcRtn = dquGetConfigDataNew(FSDataName, CI_ATS_MASK_TYPE, CI_ATS_ESB_MASK_ID, &pDataAddr, &DataSize, &realRow); + rowLen = (UINT8)(DataSize / realRow); if (funcRtn == 0u) { funcRtn = 0u; return funcRtn; } - if (0u == DataSize) - { - /**/ - funcRtn = 1u; - return funcRtn; - } - if (0u != DataSize % realRow) + + if (DataSize % rowLen != 0u) { funcRtn = 0u; return funcRtn; } - else + if (DataSize == 0u) { - rowLen = (UINT16)(DataSize / realRow); + /**/ + funcRtn = 1u; + return funcRtn; } for (; DataSize > 0U; DataSize -= 2u) { @@ -584,39 +580,38 @@ UINT8 MaskCfgDtStruFrmCIATSLogSgmt(UINT8 * FSDataName) } } - else if(residue < (UINT16)((rowLenth/2u)-1u)) + else if(residue < rowLenth/2u-1u) { /*ȡλID*/ tempMaskId = ShortFromChar(pDataAddr); - if ((0xFFFFu != tempMaskId) && (0u != tempMaskId)) + /*00xFFFFЧλ*/ + if((CI_SUM_MAX > MaskRow)&&(CI_TO_ATS_MASK_SUM_MAX > tempMaskId)&&(0u MaskRow) && (CI_TO_ATS_MASK_SUM_MAX > tempMaskId) && (0u < tempMaskId))/*ǷΪЧλֵ*/ + ConfigCiToAtsMaskConfigDataStru[MaskRow][tempMaskId].DeviceId = DeviceID; + ConfigCiToAtsMaskConfigDataStru[MaskRow][tempMaskId].DeviceType = CI_DEVICE_TYPE_LOGICSEC; + ConfigCiToAtsMaskConfigDataStru[MaskRow][tempMaskId].MaskId = tempMaskId; + ConfigCiToAtsMaskConfigDataStru[MaskRow][tempMaskId].MaskType = (UINT8)(MaskType[BuChang%((UINT16)rowLenth/2u)]); + + + /*ͳЧλ*/ + if(ConfigCiToAtsMaskConfigDataStru[MaskRow][tempMaskId].MaskId > ConfigCiToAtsMaskIdMax[MaskRow]) { - ConfigCiToAtsMaskConfigDataStru[MaskRow][tempMaskId].DeviceId = DeviceID; - ConfigCiToAtsMaskConfigDataStru[MaskRow][tempMaskId].DeviceType = CI_DEVICE_TYPE_LOGICSEC; - ConfigCiToAtsMaskConfigDataStru[MaskRow][tempMaskId].MaskId = tempMaskId; - ConfigCiToAtsMaskConfigDataStru[MaskRow][tempMaskId].MaskType = (UINT8)(MaskType[BuChang % ((UINT16)rowLenth / 2u)]); - - - /*ͳЧλ*/ - if (ConfigCiToAtsMaskConfigDataStru[MaskRow][tempMaskId].MaskId > ConfigCiToAtsMaskIdMax[MaskRow]) - { - ConfigCiToAtsMaskIdMax[MaskRow] = ConfigCiToAtsMaskConfigDataStru[MaskRow][tempMaskId].MaskId; - } - else - { - /*do nothing*/ - } - - ConfigCiToAtsMaskCurSum[MaskRow]++; + ConfigCiToAtsMaskIdMax[MaskRow] = ConfigCiToAtsMaskConfigDataStru[MaskRow][tempMaskId].MaskId; } else { - funcRtn = CI_ERROR; - break; + /*do nothing*/ } + + ConfigCiToAtsMaskCurSum[MaskRow]++; + } + else + { +#if 0 /* TODO */ + funcRtn = CI_ERROR; + break; +#endif } pDataAddr+=2u; @@ -720,117 +715,93 @@ UINT8 MaskCfgDtStruFrmCIATSLogSgmt(UINT8 * FSDataName) *********************************************/ UINT8 MaskCfgDtStruFrmCIATSRouteMask(UINT8* FSDataName) { - UINT8 funcRtn = CI_ERROR; - UINT8* pDataAddr = NULL; - UINT8* pDataLin = NULL; - UINT32 DataSize = 0U; - UINT16 MaskRow = 0U; - UINT16 DeviceID = 0U; - UINT16 residue = 0U; - UINT16 tempMaskId = 0U; /*λIDʱ*/ - UINT16 realRowCount = 0U; /*ʵʱݵ*/ - UINT16 rowDataLen = 0U; /*һݵֽڳ*/ - UINT8 MaskType[] = { 1U,MASK_TYPE_ROUTE_ALLLOCK, MASK_TYPE_ROUTE_XUANPAI, MASK_TYPE_ROUTE_DELAYUNLOCK, + UINT8 funcRtn = 0u; + UINT8* pDataAddr, * pDataLin; + UINT32 DataSize = 0u; + UINT16 MaskRow = 0u; + UINT16 DeviceID = 0u; + UINT16 residue = 0u; + UINT16 tempMaskId = 0u; /*λIDʱ*/ + UINT16 realRowCount = 0u; /*ʵʱݵ*/ + UINT16 rowDataLen = 0u; /*һݵֽڳ*/ + + UINT8 MaskType[] = { 1u,MASK_TYPE_ROUTE_ALLLOCK, MASK_TYPE_ROUTE_XUANPAI, MASK_TYPE_ROUTE_DELAYUNLOCK, MASK_TYPE_ROUTE_EXISTENCE, MASK_TYPE_ROUTE_NEARLOCK, MASK_TYPE_ROUTE_YINDAOLOCK, - MASK_TYPE_ROUTE_DC_QINGQIU, MASK_TYPE_ROUTE_DC_AGREE, MASK_TYPE_ROUTE_AUTO_TRIGGER,MASK_TYPE_ROUTE_DC_AGREE_ERR,1U }; - UINT16 BuChang = 0U; - + MASK_TYPE_ROUTE_DC_QINGQIU, MASK_TYPE_ROUTE_DC_AGREE, MASK_TYPE_ROUTE_AUTO_TRIGGER, 1u }; + UINT16 BuChang = 0u; funcRtn = dquGetConfigDataNew(FSDataName, CI_ATS_MASK_TYPE, CI_ATS_ROUTE_MASK_ID, &pDataAddr, &DataSize, &realRowCount); - if (0U == funcRtn) + if (funcRtn == 0u) { - funcRtn = CI_ERROR; + funcRtn = 0u; + return funcRtn; } - else + rowDataLen = (UINT16)(DataSize / realRowCount); /*һݵij*/ + if (DataSize % rowDataLen != 0u) { - funcRtn = CI_SUCCESS; - if ((0U < DataSize) && (0U < realRowCount)) + funcRtn = 0u; + return funcRtn; + } + if (DataSize == 0u) + { + /**/ + funcRtn = 1u; + return funcRtn; + } + for (; DataSize > 0u; DataSize -= 2u) + { + residue = BuChang % (rowDataLen / 2u); + if (0u == residue) { - if (0U == DataSize % realRowCount) - { - rowDataLen = (UINT16)(DataSize / realRowCount); /*һݵij*/ + DeviceID = ShortFromChar(pDataAddr); + pDataLin = pDataAddr + rowDataLen - 2u; + MaskRow = ShortFromChar(pDataLin); - for (; DataSize > 0U; DataSize -= 2U) + /*鲻Խ磬Խֱӷʧ*/ + if (MaskRow >= CI_SUM_MAX) + { + funcRtn = 0u; + return funcRtn; + } + + pDataAddr += 2u; + BuChang++; + } + else if ((residue > 0u) && (residue < ((rowDataLen / 2u) - 1u))) + { + /*ȡλID*/ + tempMaskId = ShortFromChar(pDataAddr); + + /*00xFFFFЧλ*/ + if ((0xFFFFu != tempMaskId) && (0u != tempMaskId)) + { + ConfigCiToAtsMaskConfigDataStru[MaskRow][tempMaskId].DeviceId = DeviceID; + ConfigCiToAtsMaskConfigDataStru[MaskRow][tempMaskId].DeviceType = CI_DEVICE_TYPE_ROUTE; + ConfigCiToAtsMaskConfigDataStru[MaskRow][tempMaskId].MaskId = tempMaskId; + ConfigCiToAtsMaskConfigDataStru[MaskRow][tempMaskId].MaskType = (UINT8)(MaskType[BuChang % (rowDataLen / 2u)]); + + + /*ͳЧλ*/ + if (ConfigCiToAtsMaskConfigDataStru[MaskRow][tempMaskId].MaskId > ConfigCiToAtsMaskIdMax[MaskRow]) { - residue = BuChang % (rowDataLen / 2U); - if (0U == residue) - { - DeviceID = ShortFromChar(pDataAddr); - pDataLin = pDataAddr + rowDataLen - 2U; - MaskRow = ShortFromChar(pDataLin); - - /*鲻Խ磬Խֱӷʧ*/ - if (MaskRow < CI_SUM_MAX) - { - pDataAddr += 2U; - BuChang++; - } - else - { - funcRtn = CI_ERROR; - break; - } - } - else if ((residue > 0U) && (residue < ((rowDataLen / 2U) - 1U))) - { - /*ȡλID*/ - tempMaskId = ShortFromChar(pDataAddr); - - if ((0xFFFFu != tempMaskId) && (0u != tempMaskId)) - { - /*00xFFFFЧλ*/ - if ((CI_SUM_MAX > MaskRow) && (CI_TO_ATS_MASK_SUM_MAX > tempMaskId) && (0U < tempMaskId))/*ǷΪЧλֵ*/ - { - ConfigCiToAtsMaskConfigDataStru[MaskRow][tempMaskId].DeviceId = DeviceID; - ConfigCiToAtsMaskConfigDataStru[MaskRow][tempMaskId].DeviceType = CI_DEVICE_TYPE_ROUTE; - ConfigCiToAtsMaskConfigDataStru[MaskRow][tempMaskId].MaskId = tempMaskId; - ConfigCiToAtsMaskConfigDataStru[MaskRow][tempMaskId].MaskType = (UINT8)(MaskType[BuChang % (rowDataLen / 2U)]); - - - /*ͳЧλ*/ - if (ConfigCiToAtsMaskConfigDataStru[MaskRow][tempMaskId].MaskId > ConfigCiToAtsMaskIdMax[MaskRow]) - { - ConfigCiToAtsMaskIdMax[MaskRow] = ConfigCiToAtsMaskConfigDataStru[MaskRow][tempMaskId].MaskId; - } - else - { - /*do nothing*/ - } - - ConfigCiToAtsMaskCurSum[MaskRow]++; - } - else - { - funcRtn = CI_ERROR; - break; - } - } - else - { - - - } - - pDataAddr += 2U; - BuChang++; - } - else - { - pDataAddr += 2U; - BuChang++; - } + ConfigCiToAtsMaskIdMax[MaskRow] = ConfigCiToAtsMaskConfigDataStru[MaskRow][tempMaskId].MaskId; } + else + { + /*do nothing*/ + } + + ConfigCiToAtsMaskCurSum[MaskRow]++; } - else - { - funcRtn = CI_ERROR; - } + pDataAddr += 2u; + BuChang++; } else { - ; + pDataAddr += 2u; + BuChang++; } } - + funcRtn = 1u; return funcRtn; } /********************************************* @@ -1669,6 +1640,7 @@ UINT8 MaskCfgDtStruFrmCIZCSwitchMask(UINT8 * FSDataName) UINT8 funcRtn = 0u; UINT8* pDataAddr,*pDataLin; UINT32 DataSize = 0u; + UINT16 i =0u; UINT16 MaskRow=0u; UINT16 DeviceID=0u; UINT16 tempMaskId = 0u; /*λIDʱ*/ @@ -1778,6 +1750,7 @@ UINT8 MaskCfgDtStruFrmCIZCSignalMask(UINT8 * FSDataName) UINT8 funcRtn = 0u; UINT8* pDataAddr,*pDataLin; UINT32 DataSize = 0u; + UINT16 i =0u; UINT16 MaskRow=0u; UINT16 DeviceID=0u; UINT16 tempMaskId = 0u; /*λIDʱ*/ @@ -1922,230 +1895,6 @@ UINT8 MaskCfgDtStruFrmZCCISignalMask(UINT8 * FSDataName) } /*вzc-ciλ*/ else - { - /*ȡλID*/ - tempMaskId = ShortFromChar(pDataAddr); - - pSignalCconfigData = NULL; - - - /*00xFFFFЧλ*/ - if ((0xFFFFu != tempMaskId) && (0u != tempMaskId)) - { - ConfigZcToCiMaskConfigDataStru[MaskRow][tempMaskId].DeviceId = DeviceID; - ConfigZcToCiMaskConfigDataStru[MaskRow][tempMaskId].DeviceType = CI_DEVICE_TYPE_SIGNAL; - ConfigZcToCiMaskConfigDataStru[MaskRow][tempMaskId].MaskId = tempMaskId; - ConfigZcToCiMaskConfigDataStru[MaskRow][tempMaskId].MaskType = (UINT8)(MaskType[BuChang % (CI_ZC_SIGNAL_MASK_LEN / 2u)]); - - for (ii = 0u; iiConfigZcCiSignalCrossMask = SIGNAL_CONFIG_CROSS_MASK_YES; - break; - } - - } - } - - /*ͳЧλ*/ - if (ConfigZcToCiMaskConfigDataStru[MaskRow][tempMaskId].MaskId > ConfigZcToCiMaskIdMax[MaskRow]) - { - ConfigZcToCiMaskIdMax[MaskRow] = ConfigZcToCiMaskConfigDataStru[MaskRow][tempMaskId].MaskId; - } - else - { - /*do nothing*/ - } - - ConfigZcToCiMaskCurSum[MaskRow]++; - } - - pDataAddr += 2u; - BuChang++; - } - } - - funcRtn = 1u; - return funcRtn; -} - -/* zt ɾش 2022-02-15 */ -/********************************************* -*ܣCI-ZCźŻλ -*˵FSDataNameָ -*ֵ0ʧܣ1ɹ -*********************************************/ -UINT8 MaskCfgDtStruFrmCIZCSignalMask2(UINT8 * FSDataName) -{ - UINT8 funcRtn = 0u; - UINT8* pDataAddr,*pDataLin; - UINT32 DataSize = 0u; - UINT16 MaskRow=0u; - UINT16 DeviceID=0u; - UINT16 tempMaskId = 0u; /*λIDʱ*/ - UINT8 MaskType[] = { 1u,MASK_TYPE_SIGNAL_OPENSTATE,MASK_ZC_CI_TYPE_SIGNAL_OCCUPYED,MASK_TYPE_SIGNAL_LIGHTSTATE,MASK_ZC_CI_SIG_ENGINEERV_NEAR,MASK_CI_ZC_SIG_ENGINCROSS_STE,MASK_CI_ZC_SIGNAL_OCCUPYED_REC,1u }; - UINT16 BuChang = 0u; - UINT16 residue = 0u; - UINT16 realRow = 0U; - UINT16 rowLenth = 0U; - funcRtn = dquGetConfigDataNew(FSDataName, CI_ZC_MASK_TYPE, CI_ZC_SIGNAL_MASK_ID, &pDataAddr, &DataSize, &realRow); - if(funcRtn==0u) - { - funcRtn = 0u; - return funcRtn; - } - if(DataSize == 0u) - { - /**/ - funcRtn = 1u; - return funcRtn; - } - if (DataSize%realRow != 0u) - { - funcRtn = 0u; - return funcRtn; - } - else - { - rowLenth = (UINT16)(DataSize / realRow); - } - for(;DataSize>0u;DataSize-=2u) - { - residue = (BuChang % (rowLenth / 2u)); - if (0u == residue) - { - DeviceID = ShortFromChar(pDataAddr); - pDataLin = pDataAddr + rowLenth -2u; - BuChang++; - MaskRow = ShortFromChar(pDataLin); - pDataAddr+=2u; - /*鲻Խ磬Խֱӷʧ*/ - if(MaskRow >= CI_SUM_MAX) - { - funcRtn = 0u; - return funcRtn; - } - - } - /*345 zc-ci λ ,ID,ȱ֤ */ - else if (((1u != residue) - && (5u != residue) - && (6u != residue)) - ||(residue == (rowLenth / 2u-1u )) - ) - { - pDataAddr += 2u; - BuChang++; - } - else - { - /*ȡλID*/ - tempMaskId = ShortFromChar(pDataAddr); - - /*00xFFFFЧλ*/ - if((0xFFFFu != tempMaskId)&&(0u != tempMaskId)) - { - ConfigCiToZcMaskConfigDataStru[MaskRow][tempMaskId].DeviceId = DeviceID; - ConfigCiToZcMaskConfigDataStru[MaskRow][tempMaskId].DeviceType = CI_DEVICE_TYPE_SIGNAL; - ConfigCiToZcMaskConfigDataStru[MaskRow][tempMaskId].MaskId = tempMaskId; - ConfigCiToZcMaskConfigDataStru[MaskRow][tempMaskId].MaskType = (UINT8)(MaskType[BuChang%(rowLenth /2u)]); - - - /*ͳЧλ*/ - if(ConfigCiToZcMaskConfigDataStru[MaskRow][tempMaskId].MaskId > ConfigCiToZcMaskIdMax[MaskRow]) - { - ConfigCiToZcMaskIdMax[MaskRow] = ConfigCiToZcMaskConfigDataStru[MaskRow][tempMaskId].MaskId; - } - else - { - /*do nothing*/ - } - - ConfigCiToZcMaskCurSum[MaskRow]++; - } - - pDataAddr+=2u; - BuChang++; - } - } - funcRtn = 1u; - return funcRtn; -} - -/********************************************* -*ܣZC-CIźŻλ -*˵FSDataNameָ -*ֵ0ʧܣ1ɹ -*********************************************/ -UINT8 MaskCfgDtStruFrmZCCISignalMask2(UINT8 * FSDataName) -{ - UINT8 funcRtn = 0u; - UINT8* pDataAddr,*pDataLin; - UINT32 DataSize = 0u; - UINT16 ii =0u; - UINT16 MaskRow=0u; - UINT16 DeviceID=0u; - UINT16 tempMaskId = 0u; /*λIDʱ*/ - - SignalConfigDataStruct *pSignalCconfigData = NULL; - - UINT8 MaskType[] = { 1u,MASK_TYPE_SIGNAL_OPENSTATE,MASK_ZC_CI_TYPE_SIGNAL_OCCUPYED,MASK_TYPE_SIGNAL_LIGHTSTATE,MASK_ZC_CI_SIG_ENGINEERV_NEAR,MASK_CI_ZC_SIG_ENGINCROSS_STE,MASK_CI_ZC_SIGNAL_OCCUPYED_REC,1u }; - UINT16 BuChang = 0u; - UINT16 realRow = 0U; - UINT16 rowLenth = 0U; - UINT16 residue = 0U; - funcRtn = dquGetConfigDataNew(FSDataName,CI_ZC_MASK_TYPE,CI_ZC_SIGNAL_MASK_ID,&pDataAddr,&DataSize, &realRow); - if(funcRtn==0u) - { - funcRtn = 0u; - return funcRtn; - } - if (DataSize == 0u) - { - /**/ - funcRtn = 1u; - return funcRtn; - } - if (0U != DataSize%realRow) - { - funcRtn = 0u; - return funcRtn; - } - else - { - rowLenth = (UINT16)(DataSize / realRow); - } - for(;DataSize>0u;DataSize-=2u) - { - residue =BuChang % (rowLenth / 2u); - if (0u == residue) - { - DeviceID = ShortFromChar(pDataAddr); - pDataLin = pDataAddr + rowLenth -2u; - BuChang++; - MaskRow = ShortFromChar(pDataLin); - pDataAddr+=2u; - /*鲻Խ磬Խֱӷʧ*/ - if(MaskRow >= CI_SUM_MAX) - { - funcRtn = 0u; - return funcRtn; - } - } - /*ֻ3 4 5 */ - else if ((2U != residue)&& (3u != residue)&& (4u != residue)) - { - pDataAddr += 2u; - BuChang++; - } - /*Сzc-ciλ*/ - else { /*ȡλID*/ tempMaskId = ShortFromChar(pDataAddr); @@ -2159,7 +1908,7 @@ UINT8 MaskCfgDtStruFrmZCCISignalMask2(UINT8 * FSDataName) ConfigZcToCiMaskConfigDataStru[MaskRow][tempMaskId].DeviceId = DeviceID; ConfigZcToCiMaskConfigDataStru[MaskRow][tempMaskId].DeviceType = CI_DEVICE_TYPE_SIGNAL; ConfigZcToCiMaskConfigDataStru[MaskRow][tempMaskId].MaskId = tempMaskId; - ConfigZcToCiMaskConfigDataStru[MaskRow][tempMaskId].MaskType = (UINT8)(MaskType[BuChang%(rowLenth /2u)]); + ConfigZcToCiMaskConfigDataStru[MaskRow][tempMaskId].MaskType = (UINT8)(MaskType[BuChang%(CI_ZC_SIGNAL_MASK_LEN/2u)]); for(ii=0u;ii0U;DataSize-=2u) { - wTempCount = BuChang % (CI_ZC_PSD_MASK_LEN / 2U); - if(0U == wTempCount) + if(BuChang%(CI_ZC_PSD_MASK_LEN/2u) == 0u) { DeviceID = ShortFromChar(pDataAddr); pDataLin = pDataAddr + CI_ZC_PSD_MASK_LEN -2u; @@ -2251,7 +1999,7 @@ UINT8 MaskCfgDtStruFrmCIZCPsdMask(UINT8 * FSDataName) } } - else if ((1U == wTempCount) || (2U == wTempCount)) + else if(BuChang%(CI_ZC_PSD_MASK_LEN/2u) == 1u) { /*ȡλID*/ tempMaskId = ShortFromChar(pDataAddr); @@ -2302,6 +2050,7 @@ UINT8 MaskCfgDtStruFrmCIZCEsbMask(UINT8 * FSDataName) UINT8 funcRtn = 0u; UINT8* pDataAddr,*pDataLin; UINT32 DataSize = 0u; + UINT16 i =0u; UINT16 MaskRow=0u; UINT16 DeviceID=0u; UINT16 tempMaskId = 0u; /*λIDʱ*/ @@ -2392,12 +2141,13 @@ UINT8 MaskCfgDtStruFrmCI2ZCLogSgmt(UINT8 * FSDataName) UINT8 funcRtn = 1u; UINT8* pDataAddr,*pDataLin; UINT32 dataSize = 0u; + UINT16 i =0u; UINT16 maskRow=0u; UINT16 deviceID=0u; UINT16 tempMaskId = 0u; /*λIDʱ*/ const UINT8 MaskType[]={1u,MASK_TYPE_LOGICSECTION_CTOCCUPY,MASK_TYPE_LOGICSECTION_UTOCCUPY,MASK_TYPE_LOGICSECTION_TXOCCUPY,MASK_TYPE_LOGICSECTION_LINSHIXIANSU_SET, - MASK_TYPE_LOGICSECTION_LOCK,MASK_TYPE_LOGICSECTION_DIR_DOWN,MASK_TYPE_LOGICSECTION_DIR_UP,1u}; + MASK_TYPE_LOGICSECTION_LOCK,MASK_TYPE_LOGICSECTION_DIR_UP,MASK_TYPE_LOGICSECTION_DIR_DOWN,1u}; UINT16 buChang = 0u; funcRtn = dquGetConfigData(FSDataName,CI_ZC_MASK_TYPE,CI_ZC_LOGIC_SGMT_MASK_ID,&pDataAddr,&dataSize); if (funcRtn == 1u) @@ -2481,12 +2231,13 @@ UINT8 MaskCfgStruFrmZCCILogSgmtMask(UINT8 * FSDataName) UINT8 funcRtn = 0u; UINT8* pDataAddr,*pDataLin; UINT32 DataSize = 0u; + UINT16 i =0u; UINT16 MaskRow=0u; UINT16 DeviceID=0u; UINT16 tempMaskId = 0u; /*λIDʱ*/ UINT8 MaskType[]={1u,MASK_TYPE_LOGICSECTION_CTOCCUPY,MASK_TYPE_LOGICSECTION_UTOCCUPY,MASK_TYPE_LOGICSECTION_TXOCCUPY,MASK_TYPE_LOGICSECTION_LINSHIXIANSU_SET, - MASK_TYPE_LOGICSECTION_LOCK,MASK_TYPE_LOGICSECTION_DIR_DOWN,MASK_TYPE_LOGICSECTION_DIR_UP,1u}; + MASK_TYPE_LOGICSECTION_LOCK,MASK_TYPE_LOGICSECTION_DIR_UP,MASK_TYPE_LOGICSECTION_DIR_DOWN,1u}; UINT16 BuChang = 0u; funcRtn = dquGetConfigData(FSDataName,CI_ZC_MASK_TYPE,CI_ZC_LOGIC_SGMT_MASK_ID,&pDataAddr,&DataSize); if(0u == funcRtn) @@ -2584,6 +2335,7 @@ UINT8 MaskCfgDtStruFrmZC2CiRouteMask(UINT8 * FSDataName) UINT8 funcRtn = 1u; UINT8* pDataAddr,*pDataLin; UINT32 dataSize = 0u; + UINT16 i =0u; UINT16 maskRow=0u; UINT16 deviceID=0u; UINT16 tempMaskId = 0u; /*λIDʱ*/ @@ -2672,6 +2424,7 @@ UINT8 MaskCfgStruFrmCIZCRouteMask(UINT8 * FSDataName) UINT8 funcRtn = 0u; UINT8* pDataAddr,*pDataLin; UINT32 DataSize = 0u; + UINT16 i =0u; UINT16 MaskRow=0u; UINT16 DeviceID=0u; UINT16 tempMaskId = 0u; /*λIDʱ*/ @@ -2779,6 +2532,7 @@ UINT8 MaskCfgStruFrmCIZCAxleSgmtMask(UINT8 * FSDataName) UINT16 MaskRow=0u; UINT16 DeviceID=0u; UINT16 residue = 0u; + UINT16 wPhysicId = 0u; UINT16 axleId = 0u; UINT16 tempMaskId = 0u; /*λIDʱ*/ @@ -2894,125 +2648,6 @@ UINT8 MaskCfgStruFrmCIZCAxleSgmtMask(UINT8 * FSDataName) return funcRtn; } -/********************************************* -*ܣCI-ZCλ Σ-ݽṹ28.0.0.14 -*˵FSNameļָ -*ֵ0ʧܣ1ɹ -*********************************************/ -UINT8 MaskCfgStruFrmCIZCAxleSgmtMask2(UINT8 * FSDataName) -{ - UINT8 funcRtn = 0u; - UINT8* pDataAddr, *pDataLin; - UINT32 DataSize = 0u; - UINT16 i = 0u; - UINT16 MaskRow = 0u; - UINT16 DeviceID = 0u; - UINT16 residue = 0u; - UINT16 axleId = 0u; - UINT16 tempMaskId = 0u; /*λIDʱ*/ - - UINT8 MaskType[] = { 1u,MASK_TYPE_PHYSECTION_HEAD_STD,MASK_TYPE_PHYSECTION_HEAD_XTD,MASK_TYPE_PHYSECTION_OCCUPY, - MASK_TYPE_PHYSECTION_ROUTELOCK,MASK_TYPE_PHYSECTION_JUMPLOCK_ZC,MASK_TYPE_AXISSECTION_DETAIN_UP,MASK_TYPE_AXISSECTION_DETAIN_DOWN, - MASK_TYPE_AXISSECTION_ARB,MASK_TYPE_LIECHE_STOPSTATE, - MASK_TYPE_PHYSECTION_HEAD_STD,MASK_TYPE_PHYSECTION_HEAD_XTD,MASK_TYPE_PHYSECTION_JUMPLOCK_APPLY, - MASK_TYPE_PHYSECTION_JUMPLOCK_CANCEL,1u }; - UINT16 BuChang = 0u; - UINT16 realRow = 0U; - UINT16 rowLenth = 0U; - funcRtn = dquGetConfigDataNew(FSDataName, CI_ZC_MASK_TYPE, CI_ZC_AXLE_SGMT_MASK_ID, &pDataAddr, &DataSize, &realRow); - if (0u == funcRtn) - { - funcRtn = 0u; - return funcRtn; - } - if (0u == DataSize) - { - /**/ - funcRtn = 1u; - return funcRtn; - } - if (0u != DataSize%realRow) - { - funcRtn = 0u; - return funcRtn; - } - else - { - rowLenth = (UINT16)(DataSize / realRow); - } - for (; DataSize>0u; DataSize -= 2u) - { - residue = BuChang % (rowLenth / 2u); - - if (BuChang % (rowLenth / 2u) == 0u) - { - DeviceID = ShortFromChar(pDataAddr); - axleId = DeviceID; - pDataLin = pDataAddr + rowLenth - 2u; - BuChang++; - MaskRow = ShortFromChar(pDataLin); - pDataAddr += 2u; - /*鲻Խ磬Խֱӷʧ*/ - if (MaskRow >= CI_SUM_MAX) - { - funcRtn = 0u; - return funcRtn; - } - for (i = 0u; i ConfigCiToZcMaskIdMax[MaskRow]) - { - ConfigCiToZcMaskIdMax[MaskRow] = ConfigCiToZcMaskConfigDataStru[MaskRow][tempMaskId].MaskId; - } - else - { - /*do nothing*/ - } - - ConfigCiToZcMaskCurSum[MaskRow]++; - } - - pDataAddr += 2u; - BuChang++; - - } - else - { - pDataAddr += 2u; - BuChang++; - } - } - funcRtn = 1u; - return funcRtn; -} - /********************************************* *ܣZC-CIλ *˵FSNameļָ @@ -3157,6 +2792,7 @@ UINT8 MaskCfgStruFrmZCCIAxleSgmtMask(UINT8 * FSDataName) } + /********************************************* *ܣCI-ZCλ *˵FSNameļָ @@ -3167,6 +2803,7 @@ UINT8 MaskCfgStruFrmCIZCOverLapMask(UINT8 * FSDataName) UINT8 funcRtn = 0u; UINT8* pDataAddr,*pDataLin; UINT32 DataSize = 0u; + UINT16 i =0u; UINT16 MaskRow=0u; UINT16 DeviceID=0u; UINT16 tempMaskId = 0u; /*λIDʱ*/ @@ -3281,6 +2918,7 @@ UINT8 MaskCfgStruFrmCIZCReturnMask(UINT8 * FSDataName) UINT8 MaskType[]={1u,MASK_TYPE_PLAT_AUTORETURNSIG_FLASH,MASK_TYPE_PLAT_AUTORETURNSIG_STEADY,MASK_TYPE_PLAT_AUTORETURNSIG_BUTTONSTAT,1u}; UINT16 BuChang = 0u; + UINT8 includeVirFlag= GetCiFunctionSwitchConfig(FUNC_INCLUDEVIRCI_FLAG); UINT8 findFlag = 0u; funcRtn = dquGetConfigData(FSDataName,CI_ZC_MASK_TYPE,CI_ZC_RETURN_MASK_ID,&pDataAddr,&DataSize); if(funcRtn==0u) @@ -3407,6 +3045,7 @@ UINT8 MaskCfgStruFrmZCCIRtnMask(UINT8 * FSDataName) UINT8 MaskType[]={1u,MASK_TYPE_PLAT_AUTORETURNSIG_FLASH,MASK_TYPE_PLAT_AUTORETURNSIG_STEADY,MASK_TYPE_PLAT_AUTORETURNSIG_BUTTONSTAT,1u}; UINT16 BuChang = 0u; + UINT8 includeVirFlag= GetCiFunctionSwitchConfig(FUNC_INCLUDEVIRCI_FLAG); funcRtn = dquGetConfigData(FSDataName,CI_ZC_MASK_TYPE,CI_ZC_RETURN_MASK_ID,&pDataAddr,&DataSize); if(funcRtn==0u) { @@ -3731,6 +3370,7 @@ UINT8 MaskCfgDtStruFrmCILEUPsdMask(UINT8 * FSDataName) UINT8 funcRtn = 0u; UINT8* pDataAddr; UINT32 DataSize = 0u; + UINT16 i =0u; UINT16 MaskRow=0u; UINT16 DeviceID=0u; UINT16 tempMaskId = 0u; /*λIDʱ*/ @@ -3820,6 +3460,7 @@ UINT8 MaskCfgDtStruFrmCILEURouteMask(UINT8 * FSDataName) UINT8 funcRtn = 0u; UINT8* pDataAddr, *pDataLin; UINT32 DataSize = 0u; + UINT16 i =0u; UINT16 MaskRow=0u; UINT16 DeviceID=0u; UINT16 tempMaskId = 0u; /*λIDʱ*/ @@ -4144,25 +3785,11 @@ UINT8 MaskInit(UINT8 * FSDataName) UINT8 funcRtn = 0u; UINT8 ciPattern = 0U; UINT16 i = 0U; - UINT8 chPulicData = GetLocalPublicDataType(); /***** ******CIATSλ ********/ /*CI-ATSλ*/ - if (DATA_TYPE_NEW == chPulicData) - { - /*CI-ATSλ*/ - funcRtn = MaskCfgDtStruFrmCIATSSwitchMask(FSDataName); - /*CI-ATSλ*/ - funcRtn *= MaskCfgDtStruFrmCIATSPhySecMask(FSDataName); - } - else - { - /*CI-ATSλ*/ - funcRtn = MaskCfgDtStruFrmCIATSSwitchMask2(FSDataName); - /*CI-ATSλ*/ - funcRtn *= MaskCfgDtStruFrmCIATSPhySecMask2(FSDataName); - } + funcRtn = MaskCfgDtStruFrmCIATSSwitchMask(FSDataName); /*CI-ATSźŻλ*/ funcRtn *= MaskCfgDtStruFrmCIATSSignalMask(FSDataName); /*CI-ATSλ*/ @@ -4175,6 +3802,8 @@ UINT8 MaskInit(UINT8 * FSDataName) funcRtn *= MaskCfgDtStruFrmCIATSRouteMask( FSDataName); /*ci-atsԶ۷λ*/ funcRtn *= MaskCfgDtStruFrmCIATSARRtMask(FSDataName); + /*CI-ATSλ*/ + funcRtn *= MaskCfgDtStruFrmCIATSPhySecMask( FSDataName); /*CI-ATSԶͨ·λ*/ funcRtn *= MaskCfgDtStruFrmCIATSARtMask(FSDataName); /*ci-atsȫԶ۷λ*/ @@ -4207,43 +3836,30 @@ UINT8 MaskInit(UINT8 * FSDataName) { /*CI-ZCλ*/ funcRtn *= MaskCfgDtStruFrmCIZCSwitchMask( FSDataName); - if (DATA_TYPE_NEW == chPulicData) - { - /*CI-ZCźŻλ*/ - funcRtn *= MaskCfgDtStruFrmCIZCSignalMask(FSDataName); - /*ZC-CIźŻλ*/ - funcRtn *= MaskCfgDtStruFrmZCCISignalMask(FSDataName); - /*CI-ZCλ*/ - funcRtn *= MaskCfgStruFrmCIZCAxleSgmtMask(FSDataName); - /*ZC-CIλ*/ - funcRtn *= MaskCfgStruFrmZCCIAxleSgmtMask(FSDataName); - } - else - { - /*CI-ZCźŻλ*/ - funcRtn *= MaskCfgDtStruFrmCIZCSignalMask2(FSDataName); - /*ZC-CIźŻλ*/ - funcRtn *= MaskCfgDtStruFrmZCCISignalMask2(FSDataName); - /*CI-ZCλ*/ - funcRtn *= MaskCfgStruFrmCIZCAxleSgmtMask2(FSDataName); - /*ZC-CIλ*/ - funcRtn *= MaskCfgStruFrmZCCIAxleSgmtMask2(FSDataName); - } + /* zt ɾش 2022-02-15 */ + /*CI-ZCźŻλ*/ + funcRtn *= MaskCfgDtStruFrmCIZCSignalMask( FSDataName); /*CI-ZCλ*/ funcRtn *= MaskCfgDtStruFrmCIZCPsdMask( FSDataName); /*CI-ZCͣťλ*/ funcRtn *= MaskCfgDtStruFrmCIZCEsbMask( FSDataName); - /*ZC-CI߼λ*/ - funcRtn *= MaskCfgStruFrmZCCILogSgmtMask( FSDataName); /*CI-ZC߼λ*/ + funcRtn *= MaskCfgStruFrmZCCILogSgmtMask( FSDataName); + /*ZC-CI߼λ*/ funcRtn *= MaskCfgDtStruFrmCI2ZCLogSgmt(FSDataName); /*CI-ZC·λ*/ funcRtn *= MaskCfgStruFrmCIZCRouteMask( FSDataName); funcRtn *= MaskCfgDtStruFrmZC2CiRouteMask(FSDataName); + /*CI-ZCλ*/ + funcRtn *= MaskCfgStruFrmCIZCAxleSgmtMask( FSDataName); /*CI-ZCλ*/ funcRtn *= MaskCfgStruFrmCIZCOverLapMask( FSDataName); /*CI-ZC۷λ*/ funcRtn *= MaskCfgStruFrmCIZCReturnMask( FSDataName); + /*ZC-CIźŻλ*/ + funcRtn *= MaskCfgDtStruFrmZCCISignalMask(FSDataName); + /*ZC-CIλ*/ + funcRtn *= MaskCfgStruFrmZCCIAxleSgmtMask( FSDataName); /*ZC-CI۷λ*/ funcRtn *= MaskCfgStruFrmZCCIRtnMask(FSDataName); /*CI_ZC·λ*/ @@ -4420,6 +4036,7 @@ UINT8 MaskCfgStruFrmCIZCGaragedoor(UINT8 * FSDataName) UINT8 funcRtn = 1u; UINT8* pDataAddr,*pDataLin; UINT32 DataSize = 0u; + UINT16 i =0u; UINT16 MaskRow=0u; UINT16 DeviceID=0u; UINT16 tempMaskId = 0u; /*λIDʱ*/ @@ -4780,6 +4397,7 @@ UINT8 MaskCfgStruFrmZCCIGaragedoor(UINT8 * FSDataName) UINT8 funcRtn = 1u; UINT8* pDataAddr,*pDataLin; UINT32 DataSize = 0u; + UINT16 i =0u; UINT16 MaskRow=0u; UINT16 DeviceID=0u; UINT16 tempMaskId = 0u; /*λIDʱ*/ @@ -4868,377 +4486,3 @@ UINT8 MaskCfgStruFrmZCCIGaragedoor(UINT8 * FSDataName) return funcRtn; } - -/********************************************* -*ܣCIATSλ 28.0.0.14 -*˵FSDataNameָ -*ֵ0ʧܣ1ɹ -*********************************************/ -UINT8 MaskCfgDtStruFrmCIATSSwitchMask2(UINT8 * FSDataName) -{ - UINT8 funcRtn = CI_ERROR; - UINT8* pDataAddr, *pDataLin; - UINT32 DataSize = 0u; - UINT16 MaskRow = 0u; /*λ*/ - UINT16 DeviceID = 0u; /*豸ID*/ - UINT16 residue = 0u; - UINT16 tempMaskId = 0u; /*λIDʱ*/ - UINT16 rowCount = 0u; - UINT8 rowLenth = 0u;/*ֽ*/ - - /*Ӧÿһ*/ - UINT8 MaskType[] = { 0u,MASK_TYPE_SWITCH_DINGWEI,MASK_TYPE_SWITCH_FANWEI,MASK_TYPE_SWITCH_SIKAI,MASK_TYPE_SWITCH_JICHA, - MASK_TYPE_SWITCH_MOVING,MASK_TYPE_SWITCH_DANSUO,MASK_TYPE_SWITCH_FENGSUO,MASK_TYPE_SWITCH_YINDAOSUO,MASK_TYPE_SWITCH_PROTECTLOCK,MASK_TYPE_SWITCH_BYPASS, - MASK_TYPE_SWITCH_OPEN_CAP,0u }; - UINT16 BuChang = 0u;/**/ - funcRtn = dquGetConfigDataNew(FSDataName, CI_ATS_MASK_TYPE, CI_ATS_SWITCH_MASK_ID, &pDataAddr, &DataSize, &rowCount); - if (funcRtn == 0u) - { - /**/ - } - else - { - funcRtn = CI_SUCCESS; - /*ݶȡ*/ - if ((0u < DataSize) && (0u < rowCount)) - { - if (0u == DataSize % rowCount) - { - /*һֽ*/ - rowLenth = (UINT8)(DataSize / rowCount); - for (; DataSize>0u; DataSize -= 2u) - { - residue = (UINT16)(BuChang % (rowLenth / 2u)); - /*һеģһһid*/ - if (0u == residue) - { - DeviceID = ShortFromChar(pDataAddr); - - pDataLin = pDataAddr + rowLenth - 2u; - MaskRow = ShortFromChar(pDataLin); - - /*鲻Խ磬Խֱӷʧ*/ - if (MaskRow < CI_SUM_MAX) - { - pDataAddr += 2u; - BuChang++; - } - else - { - funcRtn = CI_ERROR; - break; - } - } - /*ڶλֵ*/ - else if ((0u < residue) && (residue < ((rowLenth / 2u) - 1u))) - { - /*ȡλID*/ - tempMaskId = ShortFromChar(pDataAddr); - - /*00xFFFFЧλ*/ - if ((0xFFFFu != tempMaskId) && (0u != tempMaskId)) - { - if ((CI_SUM_MAX > MaskRow) && (CI_TO_ATS_MASK_SUM_MAX > tempMaskId) && (0u ConfigCiToAtsMaskIdMax[MaskRow]) - { - ConfigCiToAtsMaskIdMax[MaskRow] = ConfigCiToAtsMaskConfigDataStru[MaskRow][tempMaskId].MaskId; - } - else - { - /*do nothing*/ - } - - ConfigCiToAtsMaskCurSum[MaskRow]++; - } - else - { - funcRtn = CI_ERROR; - break; - } - } - - pDataAddr += 2u; - BuChang++; - } - else - { - pDataAddr += 2u; - BuChang++; - } - } - } - else - { - funcRtn = CI_ERROR; - } - } - else - { - funcRtn = CI_SUCCESS; - } - } - return funcRtn; -} - -/********************************************* -*ܣCI-ATSλ 28.0.0.14ݽṹ -*˵FSDataNameָ -*ֵ0ʧܣ1ɹ -*********************************************/ -UINT8 MaskCfgDtStruFrmCIATSPhySecMask2(UINT8 * FSDataName) -{ - UINT8 funcRtn = 0u; - UINT8* pDataAddr, *pDataLin; - UINT32 DataSize = 0u; - UINT16 MaskRow = 0u; - UINT16 DeviceID = 0u; - UINT16 residue = 0u; - UINT16 tempMaskId = 0u; /*λIDʱ*/ - UINT16 rowCount = 0u; - UINT16 rowLenth = 0u;/*ֽ*/ - UINT8 MaskType[] = { - 1u, - MASK_TYPE_PHYSECTION_STARTLOCK, - MASK_TYPE_PHYSECTION_FLOCK, - MASK_TYPE_PHYSECTION_PRERESET, - MASK_TYPE_PHYSEC_CENTERDETAIN_UP, - MASK_TYPE_PHYSEC_CENTERDETAIN_DOWN, - MASK_TYPE_PHYSEC_STATIONDETAIN_UP, - MASK_TYPE_PHYSEC_STATIONDETAIN_DOWN, - MASK_TYPE_PHYSEC_FLOCK_SPKS - }; - - UINT16 BuChang = 0u; - funcRtn = dquGetConfigDataNew(FSDataName, CI_ATS_MASK_TYPE, CI_ATS_PHYSEC_MASK_ID, &pDataAddr, &DataSize, &rowCount); - if (0u == funcRtn) - { - funcRtn = 0u; - return funcRtn; - } - else - { - } - - if (0u == DataSize) - { - /**/ - funcRtn = 1u; - return funcRtn; - } - - if (0u != DataSize%rowCount) - { - funcRtn = 0u; - return funcRtn; - } - else - { - rowLenth = (UINT16)(DataSize/rowCount); - } - for (; DataSize>0u; DataSize -= CI_ATS_DATA_ELEMENT_LEN) - { - residue = BuChang % (rowLenth / CI_ATS_DATA_ELEMENT_LEN); - if (0u == residue) - { - DeviceID = ShortFromChar(pDataAddr); - pDataLin = pDataAddr + rowLenth - CI_ATS_DATA_ELEMENT_LEN; - MaskRow = ShortFromChar(pDataLin); - - /*鲻Խ磬Խֱӷʧ*/ - if (CI_SUM_MAX <= MaskRow) - { - funcRtn = 0u; - return funcRtn; - } - else - { - } - - pDataAddr += CI_ATS_DATA_ELEMENT_LEN; - BuChang++; - } - else if (residue < ((rowLenth / CI_ATS_DATA_ELEMENT_LEN) - 1u)) - { - /*ȡλID*/ - tempMaskId = ShortFromChar(pDataAddr); - - /*00xFFFFЧλ*/ - if ((0xFFFFu != tempMaskId) && (0u != tempMaskId)) - { - ConfigCiToAtsMaskConfigDataStru[MaskRow][tempMaskId].DeviceId = DeviceID; - ConfigCiToAtsMaskConfigDataStru[MaskRow][tempMaskId].DeviceType = CI_DEVICE_TYPE_PHYSEC; - ConfigCiToAtsMaskConfigDataStru[MaskRow][tempMaskId].MaskId = tempMaskId; - ConfigCiToAtsMaskConfigDataStru[MaskRow][tempMaskId].MaskType = (UINT8)(MaskType[BuChang % (rowLenth / CI_ATS_DATA_ELEMENT_LEN)]); - - - /*ͳЧλ*/ - if (ConfigCiToAtsMaskConfigDataStru[MaskRow][tempMaskId].MaskId > ConfigCiToAtsMaskIdMax[MaskRow]) - { - ConfigCiToAtsMaskIdMax[MaskRow] = ConfigCiToAtsMaskConfigDataStru[MaskRow][tempMaskId].MaskId; - } - else - { - /*do nothing*/ - } - - ConfigCiToAtsMaskCurSum[MaskRow]++; - } - else - { - } - - pDataAddr += CI_ATS_DATA_ELEMENT_LEN; - BuChang++; - } - else - { - pDataAddr += CI_ATS_DATA_ELEMENT_LEN; - BuChang++; - } - } - funcRtn = 1u; - return funcRtn; -} - -/********************************************* -*ܣZC-CIλ-ݽṹ28.0.0.14 -*˵FSNameļָ -*ֵ0ʧܣ1ɹ -*********************************************/ -UINT8 MaskCfgStruFrmZCCIAxleSgmtMask2(UINT8 * FSDataName) -{ - UINT8 funcRtn = 0u; - UINT8* pDataAddr, *pDataLin; - UINT32 DataSize = 0u; - UINT16 i = 0u; - UINT16 MaskRow = 0u; - UINT16 DeviceID = 0u; - UINT16 residue = 0u; - UINT16 tempMaskId = 0u; /*λIDʱ*/ - - UINT16 wPhysicId = 0u; - UINT8 MaskType[] = { 1u,MASK_TYPE_PHYSECTION_HEAD_STD,MASK_TYPE_PHYSECTION_HEAD_XTD,MASK_TYPE_PHYSECTION_OCCUPY, - MASK_TYPE_PHYSECTION_ROUTELOCK,MASK_TYPE_PHYSECTION_JUMPLOCK_ZC,MASK_TYPE_AXISSECTION_DETAIN_UP,MASK_TYPE_AXISSECTION_DETAIN_DOWN, - MASK_TYPE_AXISSECTION_ARB,MASK_TYPE_LIECHE_STOPSTATE, - MASK_TYPE_PHYSECTION_HEAD_STD,MASK_TYPE_PHYSECTION_HEAD_XTD,MASK_TYPE_PHYSECTION_JUMPLOCK_APPLY, - MASK_TYPE_PHYSECTION_JUMPLOCK_CANCEL,1u }; - UINT16 BuChang = 0u; - UINT16 realRow = 0U; - UINT16 rowLenth = 0U; - funcRtn = dquGetConfigDataNew(FSDataName, CI_ZC_MASK_TYPE, CI_ZC_AXLE_SGMT_MASK_ID, &pDataAddr, &DataSize, &realRow); - if (0U == funcRtn) - { - funcRtn = 0u; - return funcRtn; - } - if (DataSize == 0u) - { - /**/ - funcRtn = 1u; - return funcRtn; - } - if (0U != DataSize%realRow) - { - funcRtn = 0u; - return funcRtn; - } - else - { - rowLenth = (UINT16)(DataSize / realRow); - } - for (; DataSize>0u; DataSize -= 2u) - { - residue = BuChang % (rowLenth / 2u); - - if (residue == 0u) - { - DeviceID = ShortFromChar(pDataAddr); - pDataLin = pDataAddr + rowLenth - 2u; - BuChang++; - MaskRow = ShortFromChar(pDataLin); - pDataAddr += 2u; - /*鲻Խ磬Խֱӷʧ*/ - if (MaskRow >= CI_SUM_MAX) - { - funcRtn = 0u; - return funcRtn; - } - - for (i = 0u; i ConfigZcToCiMaskIdMax[MaskRow]) - { - ConfigZcToCiMaskIdMax[MaskRow] = ConfigZcToCiMaskConfigDataStru[MaskRow][tempMaskId].MaskId; - } - else - { - /*do nothing*/ - } - - ConfigZcToCiMaskCurSum[MaskRow]++; - } - pDataAddr += 2u; - BuChang++; - } - else - { - /* */ - pDataAddr += 2u; - BuChang++; - } - } - - funcRtn = 1u; - return funcRtn; - -} diff --git a/TSCP/src/APP/ciapp/QueryFiles/dquMaskInit.h b/TSCP/src/APP/ciapp/QueryFiles/dquMaskInit.h index 4d83842..61c2818 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dquMaskInit.h +++ b/TSCP/src/APP/ciapp/QueryFiles/dquMaskInit.h @@ -41,7 +41,7 @@ #define CI_ZC_SIGNAL_MASK_LEN ((UINT32)16) /*CI-ZCźŻλֽڳ--1г*/ #define CI_ZC_PSD_MASK_ID ((UINT32)3) /*CI-ZCλ*/ -#define CI_ZC_PSD_MASK_LEN ((UINT32)8) /*CI-ZCλֽڳ--1г*/ +#define CI_ZC_PSD_MASK_LEN ((UINT32)6) /*CI-ZCλֽڳ--1г*/ #define CI_ZC_ESB_MASK_ID ((UINT32)4) /*CI-ZCͣťλ*/ #define CI_ZC_ESB_MASK_LEN ((UINT32)6) /*CI-ZCͣťλֽڳ--1г*/ @@ -263,21 +263,6 @@ UINT8 MaskCfgDtStruFrmCIZCSignalMask(UINT8 * FSDataName); *********************************************/ UINT8 MaskCfgDtStruFrmZCCISignalMask(UINT8 * FSDataName); -/* 20150531-ݽṹ28.0.0.14ʵ */ -/********************************************* -*ܣCI-ZCźŻλ -*˵FSDataNameָ -*ֵ0ʧܣ1ɹ -*********************************************/ -UINT8 MaskCfgDtStruFrmCIZCSignalMask2(UINT8 * FSDataName); - -/* 20150531-ݽṹ28.0.0.14ʵ */ -/********************************************* -*ܣZC-CIźŻλ -*˵FSDataNameָ -*ֵ0ʧܣ1ɹ -*********************************************/ -UINT8 MaskCfgDtStruFrmZCCISignalMask2(UINT8 * FSDataName); /********************************************* *ܣCI-ZCλ @@ -422,31 +407,4 @@ UINT8 MaskInit(UINT8 * FSDataName); *********************************************/ UINT8 MaskCfgStruFrmCILEUSignalMask(UINT8 * FSDataName); -/********************************************* -*ܣCIATSλ 28.0.0.14 -*˵FSDataNameָ -*ֵ0ʧܣ1ɹ -*********************************************/ -UINT8 MaskCfgDtStruFrmCIATSSwitchMask2(UINT8 * FSDataName); - -/********************************************* -*ܣCI-ATSλ 28.0.0.14ݽṹ -*˵FSDataNameָ -*ֵ0ʧܣ1ɹ -*********************************************/ -UINT8 MaskCfgDtStruFrmCIATSPhySecMask2(UINT8 * FSDataName); - -/********************************************* -*ܣZC-CIλ-ݽṹ28.0.0.14 -*˵FSNameļָ -*ֵ0ʧܣ1ɹ -*********************************************/ -UINT8 MaskCfgStruFrmZCCIAxleSgmtMask2(UINT8 * FSDataName); -/********************************************* -*ܣCI-ZCλ Σ-ݽṹ28.0.0.14 -*˵FSNameļָ -*ֵ0ʧܣ1ɹ -*********************************************/ -UINT8 MaskCfgStruFrmCIZCAxleSgmtMask2(UINT8 * FSDataName); - #endif diff --git a/TSCP/src/APP/ciapp/QueryFiles/dqucijdqstru.h b/TSCP/src/APP/ciapp/QueryFiles/dqucijdqstru.h index 05afa28..69f1b50 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dqucijdqstru.h +++ b/TSCP/src/APP/ciapp/QueryFiles/dqucijdqstru.h @@ -191,9 +191,6 @@ #define OC_RELAY_REVERSE_CUT_ID ((UINT8)30) #define OC_LEN_REVERSE_CUT ((UINT8)2) -/*̵ͬID*/ -#define OC_RELAY_DCAGREE_ID ((UINT8)36) - /*ͣť̵ṹ*/ typedef struct S_Relay_EmegencyStopStruct { @@ -244,7 +241,6 @@ typedef struct S_Relay_ScreenStruct UINT16 wPcbBsdRelayId; /*ٹŰťָʾƼ̵*/ UINT16 wVideoQkLight1RelayId; /*ͰťƵָʾ1̵̣*/ UINT16 wVideoQkLight2RelayId; /*ͰťƵָʾ2죩̵*/ - UINT8 chControlType; /*ſ*/ } Relay_ScreenStruct; /*μ̵ṹ*/ @@ -343,6 +339,9 @@ typedef struct S_Relay_ZhaoChaStruct UINT16 wCancelRelayIdOnRelayInterface; /*̵ӿȡղ̵ID */ UINT16 wRelayBenDuanZcIdOnRelayInterface; /*̵ӿڱղ̵ID*/ UINT16 wRelayDuiDuanZcIdOnRelayInterface; /*̵ӿڶԶղ̵ID*/ + UINT16 wCbtcRelayBenDuanZcId; /*CBTCղ̵ID*/ + UINT16 wCbtcRelayDuiDuanZcId; /*CBTCԶղ̵ID*/ + UINT16 wCbtcCancelRelayId; /*CBTC-ȡղ̵ID */ } Relay_ZhaoChaStruct; /*ʾƼ̵ṹ*/ @@ -449,7 +448,6 @@ typedef struct S_Relay_DCAgreeStruct { UINT16 wRouteId; /*·ID*/ UINT16 DCRouteDCQJId;/*·̵ID*/ - UINT16 DCRouteDCQJTwoId;/*·2̵ID*/ UINT16 DCRouteTAJId;/*·ͬⰴť̵ID*/ }Relay_DCAgreeStruct; diff --git a/TSCP/src/APP/ciapp/Relay/RelayConfigDataManage.c b/TSCP/src/APP/ciapp/Relay/RelayConfigDataManage.c index 5215b5f..433f2b2 100644 --- a/TSCP/src/APP/ciapp/Relay/RelayConfigDataManage.c +++ b/TSCP/src/APP/ciapp/Relay/RelayConfigDataManage.c @@ -1656,55 +1656,5 @@ UINT16 GetRelayBelongOCId(const UINT16 relayId) { retVal = CI_ERROR; } - return retVal; -} - -/* -* ָID̵忨 -* ˵const UINT16 relayId ̵ID -* const UINT8 cBoardType 忨 -* ֵ -* Created By LQ 2025.07.03 -*/ -void SetRelayBoardType(const UINT16 relayId, const UINT8 cBoardType) -{ - UINT16 bufIndex = 0u; /*±*/ - - bufIndex = GetRelayConfigBufIndex(relayId); /*ȡ̵±*/ - - if ((bufIndex < RELAY_SUM_MAX) && ((RELAY_DO_BOARD == cBoardType) || (RELAY_DO_RELAY_BOARD == cBoardType) || (RELAY_SO_BOARD == cBoardType) - || (RELAY_THIRTY_SIX_DI_BOARD == cBoardType) || (RELAY_THIRTY_TWO_DI_BOARD == cBoardType) || (RELAY_SI_BOARD == cBoardType))) - { - RelayConfigDataStru[bufIndex].BoardType = cBoardType; - } - else - { - /**/ - } -} - -/* -* ȡָID̵忨 -* ˵const UINT16 relayId ̵ID -* ֵ0: ȡʧ -* >0: ̵忨 -* Created By LQ 2025.07.03 -*/ -UINT8 GetRelayBoardType(const UINT16 relayId) -{ - UINT16 bufIndex = 0u; /*±*/ - UINT8 retVal = CI_ERROR; - - bufIndex = GetRelayConfigBufIndex(relayId); /*ȡ̵±*/ - - if (bufIndex < RELAY_SUM_MAX) - { - retVal = RelayConfigDataStru[bufIndex].BoardType; - } - else - { - retVal = CI_ERROR; - } - return retVal; } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/Relay/RelayConfigDataManage.h b/TSCP/src/APP/ciapp/Relay/RelayConfigDataManage.h index 4d62390..6c3d8d5 100644 --- a/TSCP/src/APP/ciapp/Relay/RelayConfigDataManage.h +++ b/TSCP/src/APP/ciapp/Relay/RelayConfigDataManage.h @@ -54,7 +54,6 @@ typedef struct S_RelayConfigDataStruct UINT8 VirtualAttribute; /*̵*/ UINT16 LockExceptPhySecNum; /*ղ̵ĹID*/ UINT16 LockExceptPhySecIdBuf[MAX_LOCK_EXCEPT_SECTION_NUM]; /*ղ̵ĹID*/ - UINT8 BoardType; /*忨(ʼ̵)*/ } RelayConfigDataStruct; /*ղ̵ݽṹ*/ @@ -480,24 +479,6 @@ UINT16 GetOcConnetDataDevNum(void); */ UINT16 GetRelayBelongOCId(const UINT16 relayId); -/* -* ָID̵忨 -* ˵const UINT16 relayId ̵ID -* const UINT8 cBoardType 忨 -* ֵ -* Created By LQ 2025.07.03 -*/ -void SetRelayBoardType(const UINT16 relayId, const UINT8 cBoardType); - -/* -* ȡָID̵忨 -* ˵const UINT16 relayId ̵ID -* ֵ0: ȡʧ -* >0: ̵忨 -* Created By LQ 2025.07.03 -*/ -UINT8 GetRelayBoardType(const UINT16 relayId); - #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/Relay/RelayDataManage.c b/TSCP/src/APP/ciapp/Relay/RelayDataManage.c index 821c4aa..51e7fdd 100644 --- a/TSCP/src/APP/ciapp/Relay/RelayDataManage.c +++ b/TSCP/src/APP/ciapp/Relay/RelayDataManage.c @@ -16,9 +16,6 @@ RelayDataStruct RelayDataStru[RELAY_SUM_MAX]; /*̵ݽṹ*/ -IODiffDataStruct IODiffDataStru[OC_SUM_MAX]; /*IO˫ϵɼһϢ*/ -UINT8 gDiffDataOcNum = 0u; /*IO˫ϵɼһӦOC*/ - /* * ȡָID̵ * ˵ @@ -919,15 +916,4 @@ UINT8 GetRelayBCollBoardState(const UINT16 wRelayId) } return retVal; -} - -/* -* ȡIO˫ϵɼһ -* ˵ -* ֵ - RelayDataStruct* -*/ -IODiffDataStruct* GetIODiffData(void) -{ - return IODiffDataStru; } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/Relay/RelayDataManage.h b/TSCP/src/APP/ciapp/Relay/RelayDataManage.h index d419c41..d885fa3 100644 --- a/TSCP/src/APP/ciapp/Relay/RelayDataManage.h +++ b/TSCP/src/APP/ciapp/Relay/RelayDataManage.h @@ -47,18 +47,6 @@ typedef struct S_RelayDataStruct extern RelayDataStruct RelayDataStru[RELAY_SUM_MAX]; /*̵ݽṹ*/ -typedef struct S_IODiffDataStruct -{ - UINT8 OcId; /*OC ID*/ - UINT8 DiffPointNum; /*һµĵλ*/ - UINT8 LocalBoardAdd[IO_COLL_DIFF_MAX];/*λӦİ忨ַ*/ - UINT8 OtherBoardAdd[IO_COLL_DIFF_MAX];/*ϵ忨ַ*/ - UINT8 TheDiffPoint[IO_COLL_DIFF_MAX];/*һµλ*/ -}IODiffDataStruct; - -extern IODiffDataStruct IODiffDataStru[OC_SUM_MAX]; /*IO˫ϵɼһϢ*/ -extern UINT8 gDiffDataOcNum; /*IO˫ϵɼһӦOC*/ - /* * ȡָID̵ * ˵ @@ -300,14 +288,6 @@ void SetRelayBCollBoardState(const UINT16 wRelayId, const UINT8 cBoardState); */ UINT8 GetRelayBCollBoardState(const UINT16 wRelayId); -/* -* ȡIO˫ϵɼһ -* ˵ -* ֵ - RelayDataStruct* -*/ -IODiffDataStruct* GetIODiffData(void); - #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/Relay/RelayDefine.h b/TSCP/src/APP/ciapp/Relay/RelayDefine.h index eac7507..ef3d093 100644 --- a/TSCP/src/APP/ciapp/Relay/RelayDefine.h +++ b/TSCP/src/APP/ciapp/Relay/RelayDefine.h @@ -32,9 +32,6 @@ #define BOARD_COLL_DATA_LEN ((UINT16)4) /*ɼϲɼֽ*/ #define BOARD_DRV_DATA_LEN ((UINT16)2) /*ֽ*/ -#define IO_COLL_DIFF_MAX ((UINT8)254) /*IO˫ϵɼȽϲһµλֵ*/ -#define POINTTOLERATE_CYCNUM ((UINT8)7) /*IO˫ϵɼһ*/ - /************************OC*************************/ #define OC_BOARD_SUM_MAX ((UINT8)44) /*һOCӦ44*/ #define OC_COLL_BOARD_POS_NUM ((UINT16)40) /*һOC·ɼĿֵ*/ @@ -109,15 +106,5 @@ #define RELAY_BOARD_FAULT_NO ((UINT8)0x55) /*忨״̬δ*/ #define RELAY_BOARD_FAULT_YES ((UINT8)0xaa) /*忨״̬*/ -/*̵忨*/ -#define RELAY_DO_BOARD ((UINT8)0x5a) /*ȫ*/ -#define RELAY_DO_RELAY_BOARD ((UINT8)0xc8) /*ȫ̵*/ -#define RELAY_SO_BOARD ((UINT8)0x3c) /*ɢ*/ -#define RELAY_THIRTY_SIX_DI_BOARD ((UINT8)0xcc) /*36·ȫ*/ -#define RELAY_THIRTY_TWO_DI_BOARD ((UINT8)0x5c) /*32·ȫ*/ -#define RELAY_SI_BOARD ((UINT8)0xc3) /*ɢ*/ - - - #endif diff --git a/TSCP/src/APP/ciapp/RemoteRM/RRMDataPrepare.c b/TSCP/src/APP/ciapp/RemoteRM/RRMDataPrepare.c index 4f6f56c..ae4bbcc 100644 --- a/TSCP/src/APP/ciapp/RemoteRM/RRMDataPrepare.c +++ b/TSCP/src/APP/ciapp/RemoteRM/RRMDataPrepare.c @@ -799,8 +799,7 @@ void rrm_PrepareACLockStatAndDir(UINT16 ACID,UINT8 flag,OUT UINT8* pLockStat,OUT LockDir = ConvertDirectionToLogic(tmpDir); if (((0u == RLockBelongRouteId) && (0u == PLockBelongRouteId)) || (DIR_INVALID == LockDir) - || ((PHYSICAL_SECTION_LOCK_NORMAL != LockStatus) && (PHYSICAL_SECTION_LOCK_PROTECT != LockStatus) - && (PHYSICAL_SECTION_LOCK_DELAY != LockStatus))) + || ((PHYSICAL_SECTION_LOCK_NORMAL != LockStatus) && (PHYSICAL_SECTION_LOCK_PROTECT != LockStatus))) { (*pLockStat) = SEC_LOCK_ERROR; (*pLockDir) = 0u; diff --git a/TSCP/src/APP/ciapp/RemoteRM/RRMManageAPI.c b/TSCP/src/APP/ciapp/RemoteRM/RRMManageAPI.c index 4f18693..1a26b59 100644 --- a/TSCP/src/APP/ciapp/RemoteRM/RRMManageAPI.c +++ b/TSCP/src/APP/ciapp/RemoteRM/RRMManageAPI.c @@ -34,14 +34,7 @@ static void rrm_ProcessTrainRRMRequst(UINT16 trainID); /* */ static UINT8 rrm_CheckTrainHeadInFreeSta(UINT16 trainID, IN const EnvelopeStruct* pTemp, OUT UINT16* pNextSta); -/** - * @brief ·״̬Ƿ - * @param[in] UINT16 wRouteId ·ID - * @return CI_ERROR - CI_SUCCESS - * @note BY CGH 20250807 - */ -static UINT8 rrm_CheckRouteState(UINT16 wRouteId); + /** * @brief ӼϢRRM· @@ -363,64 +356,50 @@ static UINT8 rrm_CheckSecStatus(UINT8 funValid,UINT16 trainID,IN const RRMPathOf static UINT8 rrm_CheckSignalStatus(UINT8 funValid,UINT16 trainID,IN const RRMPathOfACSeqStruct* pACSeq,OUT UINT8* rrmReason) { UINT8 ret = CI_ERROR; - UINT32 errorCode = 0U; - UINT16 cycle = 0U; - UINT16 headOfRoute = 0U; /*ͷڽ·ID*/ - UINT16 tempofRoute = 0U; + UINT32 errorCode = 0u; + UINT16 cycle = 0u; + UINT16 headOfRoute = 0u; + UINT16 tempofRoute = 0u; UINT8 sigOfRoutePass = CI_ERROR; - UINT8 cCheckFlag = FLAG_UNSET; - UINT8 chTempCheckFlag = 0U; /*ʱ־*/ - UINT8 chLocalCiId = 0U; - UINT8 chRouteBelongCiId = 0U; + UINT8 flag = 0u; /** ڲУ */ - ASSERT_RET_VALUE(NULL == pACSeq, ret, 0x80000000U); - ASSERT_RET_VALUE(NULL == rrmReason, ret, 0x40000000U); + ASSERT_RET_VALUE(NULL == pACSeq,ret,0x80000000u); + ASSERT_RET_VALUE(NULL == rrmReason,ret,0x40000000u); if (RRM_CHECK_UNVALID == funValid) { - ret = 0xffU; + ret = 0xffu; } else { - for (cycle = 0U; cycle < pACSeq->acCnt; cycle++) + for (cycle = 0u; cycle < pACSeq->acCnt;cycle++) { - if (TYPE_OF_PATH_A == pACSeq->pathType[cycle]) - { - /*dzΣ³ɳͷһ·*/ - headOfRoute = rrm_PrepareAcofRoute(pACSeq->ACID[cycle]); - if (0U == headOfRoute) - { - errorCode += 0x10000000U; - cCheckFlag = FLAG_SET; /** ν·δô϶δ */ - } - else - { - chTempCheckFlag = rrm_CheckRouteState(headOfRoute); - if (CI_SUCCESS == chTempCheckFlag) - { - ; - } - else - { - errorCode += 0x08000000U; - cCheckFlag = FLAG_SET; - } - } - } - else if (TYPE_OF_PATH_C == pACSeq->pathType[cycle]) + if (((0u == flag) && (TYPE_OF_PATH_A == pACSeq->pathType[cycle])) || + (TYPE_OF_PATH_C == pACSeq->pathType[cycle])) { /** 账*/ } - else if (TYPE_OF_PATH_B == pACSeq->pathType[cycle]) + else if ((0u != cycle) && (TYPE_OF_PATH_B == pACSeq->pathType[cycle])) { + if (0u == flag) + { + /** ѯͷռѹĽ·*/ + headOfRoute = rrm_PrepareAcofRoute(pACSeq->ACID[cycle - 1u]); + flag = 0xffu; + } + else + { + /** 账*/ + } + /** ѯǰѰ· */ tempofRoute = rrm_PrepareAcofRoute(pACSeq->ACID[cycle]); - if (0U == tempofRoute) + if ((0u == headOfRoute) || (0u == tempofRoute)) { - errorCode += 0x04000000U; - cCheckFlag = FLAG_SET; /** ν·δô϶δ */ + /** ν·δô϶δ */ + break; } else if (tempofRoute == headOfRoute) { @@ -437,37 +416,15 @@ static UINT8 rrm_CheckSignalStatus(UINT8 funValid,UINT16 trainID,IN const RRMPat } else { - chLocalCiId = GetSystemParaLocalCiId(); - chRouteBelongCiId = GetRouteBelongCiId(tempofRoute); - chTempCheckFlag = rrm_CheckRouteState(tempofRoute); - - if ((chLocalCiId != chRouteBelongCiId) && (0U != chRouteBelongCiId) && (0U != chLocalCiId) - && (CI_SUCCESS == chTempCheckFlag)) - { - /*DZڵźرգ*/ - } - else - { - errorCode += 0x02000000U; - cCheckFlag = FLAG_SET; - } + break; } } } else { - errorCode += 0x01000000U; - cCheckFlag = FLAG_SET; /** ·󣬼ʧ*/ - } - - if (FLAG_SET == cCheckFlag) - { + /** ·*/ break; } - else - { - ; /**/ - } } if (cycle == pACSeq->acCnt) @@ -478,11 +435,11 @@ static UINT8 rrm_CheckSignalStatus(UINT8 funValid,UINT16 trainID,IN const RRMPat { *rrmReason = TRAIN_RRM_RESON_05; errorCode += 0x20000000u; - ret = CI_ERROR; + ret = CI_ERROR; } } - ASSER_DEBUG(0u != errorCode,RRM_LOG_LOC(RRM_LOG_ERROR,"errno:0x%08x info:Train%d not allow RRM by tempofRoute%d or headOfRoute%d signal not open.",errorCode,trainID,tempofRoute, headOfRoute)); + ASSER_DEBUG(0u != errorCode,RRM_LOG_LOC(RRM_LOG_ERROR,"errno:0x%08x info:Train%d not allow RRM by route%d signal not open.",errorCode,trainID,tempofRoute)); return ret; } @@ -1184,7 +1141,6 @@ static void rrm_ProcessTrainRRMRequst(UINT16 trainID) if (RRM_CHECK_VALID == funValid) { rrm_SetRRMResult(trainID, TRAIN_RRM_YES, TRAIN_RRM_RESON_FF, 0U); - RRM_LOG_LOC(RRM_LOG_ERROR, "Train%d allow RRM.",trainID); } else { @@ -1229,7 +1185,6 @@ static void rrm_ProcessTrainRRMRequst(UINT16 trainID) if (TRAIN_RRM_OTHERCI_ALLOW == chRrmDstAllowed) { rrm_SetRRMResult(trainID, TRAIN_RRM_YES, TRAIN_RRM_RESON_FF, NextTIOC); - RRM_LOG_LOC(RRM_LOG_ERROR, "Train%d allow RRM.", trainID); } else { @@ -1415,7 +1370,7 @@ UINT8 rrm_OtherCiConditionsCheck(const UINT16 wTrainID, const UINT16 wTrainNextS ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x01000000U); /** ֽһվվ̨ն֮źŻ״̬Ϊ */ - funRtn = rrm_CheckSignalStatus(funValid, wTrainID, &ACSeq, &rrmReason); + funRtn = rrm_CheckOtherCiSigStatus(funValid, wTrainID, &ACSeq, &rrmReason); ASSERT_SETRET(CI_SUCCESS == funRtn, funValid, funValid, RRM_CHECK_UNVALID); ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x00800000U); @@ -1882,6 +1837,132 @@ UINT8 rrm_CheckOtherCiNextStation(UINT8 funValid,UINT16 trainID, const UINT16 wT return ret; } +/** + * @brief гͷǰһվվ̨ն֮źŻ״̬Ϊ + * @param[in] UINT8 funValid Ա־ + * @param[in] UINT16 trainID гID + * @param[in] RRMPathOfACSeqStruct* pACSeq RRM·ļ + * @param[out] UINT8* rrmReason + * @return UINT8 + CI_ERROR ʧ + CI_SUCCESS ɹ + 0xFF δ + * @note BY CGH 20240222 + */ +UINT8 rrm_CheckOtherCiSigStatus(UINT8 funValid, UINT16 trainID, IN const RRMPathOfACSeqStruct* pACSeq, OUT UINT8* rrmReason) +{ + UINT8 ret = CI_ERROR; + UINT32 errorCode = 0U; + UINT16 cycle = 0U; + UINT16 headOfRoute = 0U; /*ͷڽ·ID*/ + UINT16 tempofRoute = 0U; + UINT8 sigOfRoutePass = CI_ERROR; + UINT8 cCheckFlag = FLAG_UNSET; + UINT8 cLocalCiId = 0U; + UINT8 cRouteBelongCiId = 0U; + UINT8 cRouteState = 0U; + + /** ڲУ */ + ASSERT_RET_VALUE(NULL == pACSeq, ret, 0x80000000U); + ASSERT_RET_VALUE(NULL == rrmReason, ret, 0x40000000U); + + if (RRM_CHECK_UNVALID == funValid) + { + ret = 0xffU; + } + else + { + for (cycle = 0U; cycle < pACSeq->acCnt; cycle++) + { + if (TYPE_OF_PATH_A == pACSeq->pathType[cycle]) + { + /*dzΣ³ɳͷһ·*/ + headOfRoute = rrm_PrepareAcofRoute(pACSeq->ACID[cycle]); + if (0U == headOfRoute) + { + cCheckFlag = FLAG_SET; /** ν·δô϶δ */ + } + else + { + ; + } + } + else if (TYPE_OF_PATH_C == pACSeq->pathType[cycle]) + { + /** 账*/ + } + else if (TYPE_OF_PATH_B == pACSeq->pathType[cycle]) + { + /** ѯǰѰ· */ + tempofRoute = rrm_PrepareAcofRoute(pACSeq->ACID[cycle]); + + if (0U == tempofRoute) + { + cCheckFlag = FLAG_SET; /** ν·δô϶δ */ + } + else if (tempofRoute == headOfRoute) + { + /** жϸý·ʼźŻ״̬*/ + } + else + { + /** жϸý·ʼźŻ״̬Ƿ񿪷 */ + sigOfRoutePass = rrm_PrepareOriginSigStatOfRoute(tempofRoute); + + if (CI_SUCCESS == sigOfRoutePass) + { + /** źſţ*/ + } + else + { + cLocalCiId = GetSystemParaLocalCiId(); + cRouteBelongCiId = GetRouteBelongCiId(tempofRoute); + cRouteState = GetRouteState(tempofRoute); + + if ((cLocalCiId != cRouteBelongCiId) && (0U != cRouteBelongCiId) && (0U != cLocalCiId) + && ((ROUTE_STATE_NEAR_LOCK == cRouteState) || (ROUTE_STATE_AUTO_UNLOCK == cRouteState) + || (ROUTE_STATE_DELAY_UNLOCK == cRouteState) || (ROUTE_STATE_HALF_UNLOCK == cRouteState))) + { + /*DZڵźرգ*/ + } + else + { + cCheckFlag = FLAG_SET; /*ڵźŹرգʧ*/ + } + } + } + } + else + { + cCheckFlag = FLAG_SET; /** ·󣬼ʧ*/ + } + + if (FLAG_SET == cCheckFlag) + { + break; + } + else + { + ; /**/ + } + } + + if (cycle == pACSeq->acCnt) + { + ret = CI_SUCCESS; + } + else + { + *rrmReason = TRAIN_RRM_RESON_05; + errorCode += 0x20000000u; + ret = CI_ERROR; + } + } + + ASSER_DEBUG(0U != errorCode, RRM_LOG_LOC(RRM_LOG_ERROR, "errno:0x%08x info:Train%d rrm_CheckOtherCiSigStatus error:not allow RRM by route%d signal not open.", errorCode, trainID, tempofRoute)); + return ret; +} + /** * @brief ǷгͷĿվ̨ռѹδ * @param[in] UINT16 trainID гID @@ -1949,41 +2030,3 @@ static UINT8 rrm_CheckTrainHeadInFreeSta(UINT16 trainID, IN const EnvelopeStruct return ret; } -/** - * @brief ·״̬Ƿ - * @param[in] UINT16 wRouteId ·ID - * @return CI_ERROR - CI_SUCCESS - * @note BY CGH 20250807 - */ -static UINT8 rrm_CheckRouteState(UINT16 wRouteId) -{ - UINT8 chReval = CI_ERROR; - UINT8 chRouteState = 0U;/*·״̬*/ - - if ((0U < wRouteId) && (ROUTE_SUM_MAX > wRouteId)) - { - chRouteState = GetRouteState(wRouteId); - - if ((ROUTE_STATE_YUXIAN_OPEN == chRouteState) - || (ROUTE_STATE_NEAR_LOCK == chRouteState) - || (ROUTE_STATE_NEAR_OPEN == chRouteState) - || (ROUTE_STATE_AUTO_UNLOCK == chRouteState) - || (ROUTE_STATE_HALF_UNLOCK == chRouteState) - ) - { - chReval = CI_SUCCESS; - } - else - { - ; - } - } - else - { - ; - } - - return chReval; -} - diff --git a/TSCP/src/APP/ciapp/RemoteRM/RRMManageAPI.h b/TSCP/src/APP/ciapp/RemoteRM/RRMManageAPI.h index 85e19c8..1c89d66 100644 --- a/TSCP/src/APP/ciapp/RemoteRM/RRMManageAPI.h +++ b/TSCP/src/APP/ciapp/RemoteRM/RRMManageAPI.h @@ -86,4 +86,18 @@ UINT8 rrm_CheckOtherCiRRMPathAndSw(UINT8 funValid, UINT16 trainID, UINT16 wAtsLg */ UINT8 rrm_CheckOtherCiNextStation(UINT8 funValid, UINT16 trainID, const UINT16 wTrainNextStaId, const UINT16 searchNextStaID, OUT UINT8* rrmReason); +/** + * @brief гͷǰһվվ̨ն֮źŻ״̬Ϊ + * @param[in] UINT8 funValid Ա־ + * @param[in] UINT16 trainID гID + * @param[in] RRMPathOfACSeqStruct* pACSeq RRM·ļ + * @param[out] UINT8* rrmReason + * @return UINT8 + CI_ERROR ʧ + CI_SUCCESS ɹ + 0xFF δ + * @note BY CGH 20240222 + */ +UINT8 rrm_CheckOtherCiSigStatus(UINT8 funValid, UINT16 trainID, IN const RRMPathOfACSeqStruct* pACSeq, OUT UINT8* rrmReason); + #endif \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/ReverseCut/ReverseCutDefine.h b/TSCP/src/APP/ciapp/ReverseCut/ReverseCutDefine.h index 0d4b91c..325b0d7 100644 --- a/TSCP/src/APP/ciapp/ReverseCut/ReverseCutDefine.h +++ b/TSCP/src/APP/ciapp/ReverseCut/ReverseCutDefine.h @@ -25,7 +25,7 @@ /*ģʽ*/ #define REVERSE_MODE_MAIN ((UINT8)0x55) /*ģʽ ģʽ*/ -#define REVERSE_MODE_SHADOW ((UINT8)0xAA) /*ģʽ Ӱģʽ*/ +#define REVERSE_MODE_SHADOW ((UINT8)0xAA) /*ģʽ ģʽ*/ /*ɵԭ*/ #define REVERSE_REASON_OC_COMM_ERR ((UINT8)0x01) /*ɵԭ OCͨŹ*/ diff --git a/TSCP/src/APP/ciapp/Route/LogicalRouteDataManage.c b/TSCP/src/APP/ciapp/Route/LogicalRouteDataManage.c index 1e44f42..35d15f3 100644 --- a/TSCP/src/APP/ciapp/Route/LogicalRouteDataManage.c +++ b/TSCP/src/APP/ciapp/Route/LogicalRouteDataManage.c @@ -1826,17 +1826,11 @@ void LogRouteLockProc(const UINT16 wLogRouteId) /*ѹźŻ*/ /*߼·״̬Ϊȴ*/ SetLogRouteStateManage(wLogRouteId, ROUTE_LOGICAL_STATE_UNLOCKWAIT); - - /*ʧܣöӦʼźŻ۳·ťЧ*/ - SetDetCutBtnState(wLogSignalId, SIGNAL_DETAIN_CUT_VALID_NO); } else { /*żʧܣ߼·쳣*/ SetLogRouteStateManage(wLogRouteId, ROUTE_LOGICAL_STATE_LOCKERR); - - /*ʧܣöӦʼźŻ۳·ťЧ*/ - SetDetCutBtnState(wLogSignalId, SIGNAL_DETAIN_CUT_VALID_NO); } } } @@ -1889,18 +1883,12 @@ void LogRouteLockErrManage(const UINT16 wLogRouteId) /*ѹźŻ*/ /*߼·״̬Ϊȴ*/ SetLogRouteStateManage(wLogRouteId, ROUTE_LOGICAL_STATE_UNLOCKWAIT); - - /*ʧܣöӦʼźŻ۳·ťЧ*/ - SetDetCutBtnState(wLogSignalId, SIGNAL_DETAIN_CUT_VALID_NO); } else { /*żʧܣ߼·쳣*/ /*쳣رյı־*/ SetLogRouteSignalErrCloseFlag(wLogSignalId, LOG_ROUTE_SIGNAL_CLOSE_ERR); - - /*ʧܣöӦʼźŻ۳·ťЧ*/ - SetDetCutBtnState(wLogSignalId, SIGNAL_DETAIN_CUT_VALID_NO); } } @@ -2211,10 +2199,15 @@ void SetLogRouteSectionUsingState(const UINT16 logRouteId,const UINT8 useState) void LogRouteLgcSecResUnlockManage(const UINT16 logRouteId) { /*ʼ*/ + UINT8 chRouteState = 0u; + UINT8 chRouteRepeatOpenFlag = 0U; UINT16 routeLogNum = 0u; UINT16 wTrainId = 0U; UINT16 ii = 0U; UINT16* routeLogSecId = NULL; + UINT16 wStartSignalId = 0U; + UINT8 chStartSignalCurColor = 0U; + UINT8 chOpenCloseState = 0U; UINT16 wUnlockLgcSecId = 0U; /*߼ID*/ UINT16 wPreUnlockLgcSecId = 0U; /*·߼һ߼*/ UINT8 chLgcLockState = 0U;/*߼״̬*/ @@ -2222,65 +2215,95 @@ void LogRouteLgcSecResUnlockManage(const UINT16 logRouteId) UINT8 chPreLgcLogRouteId = 0U;/*һ߼߼·*/ UINT8 checkFlag = 0U; - /*ȡ߼·߼*/ - routeLogNum = GetLogicalRouteInLogSecSum(logRouteId); - routeLogSecId = GetLogicalRouteInLogSecId(logRouteId);/*߼ID*/ - if ((0u < routeLogNum) - && (MAX_ROUTE_IN_LT_NUM > routeLogNum)) + /*ȡ·Ϣ*/ + chRouteState = GetLogicalRouteState(logRouteId);/*߼·״̬*/ + wStartSignalId = GetLogicalRouteRelateBeginSigId(logRouteId);/*·ʼźŻ*/ + if (0U != wStartSignalId) { - /*ÿڻȡһû߼*/ - for (ii = 0U; ii < routeLogNum; ii++) - { + /*ʼźŻ*/ + chStartSignalCurColor = GetSignalCurColor(wStartSignalId); + chOpenCloseState = GetSignalOpenCloseState(chStartSignalCurColor);/*ʼźŻ״̬*/ + } + else + { + ; /**/ + } + chRouteRepeatOpenFlag = GetLogicalRouteRecoverOpenState(logRouteId);/*ؿ־*/ + + if ((0U != wStartSignalId)&&(SIGNAL_OPEN == chOpenCloseState)) + {/*ʼźŻҿ򲻽*/ - wPreUnlockLgcSecId = wUnlockLgcSecId;/*һ߼ID*/ - wUnlockLgcSecId = routeLogSecId[ii];/*ȡǰ߼ID*/ - /*ij߼ζԸ߼·Ľ*/ - /*ÿڼһյ߼*/ - checkFlag = CheckLogRouteIdBelLogSec(wUnlockLgcSecId, logRouteId); /*жϴ߼Ƿ񱻱߼·*/ - if (CI_SUCCESS == checkFlag) + } + /*ʼźŻرջûʼźŻ*/ + else if ((ROUTE_REPEATOPEN_SET_YES != chRouteRepeatOpenFlag) + && (ROUTE_LOGICAL_STATE_UNLOCKWAIT == chRouteState)) /*״̬ж*/ + { + /*ȡ߼·߼*/ + routeLogNum = GetLogicalRouteInLogSecSum(logRouteId); + routeLogSecId= GetLogicalRouteInLogSecId(logRouteId);/*߼ID*/ + if ((0u < routeLogNum) + && (MAX_ROUTE_IN_LT_NUM > routeLogNum)) + { + /*ȡղ Ԥ*/ + + /*ÿڻȡһû߼*/ + for (ii = 0U; ii < routeLogNum; ii++) { - chLgcLockState = GetLogSecLogLockState(wUnlockLgcSecId); - if ((LOG_SECTION_LOGLOCK_EXCEPT == chLgcLockState)) + + wPreUnlockLgcSecId = wUnlockLgcSecId;/*һ߼ID*/ + wUnlockLgcSecId = routeLogSecId[ii];/*ȡǰ߼ID*/ + /*ij߼ζԸ߼·Ľ*/ + /*ÿڼһյ߼*/ + checkFlag = CheckLogRouteIdBelLogSec(wUnlockLgcSecId, logRouteId); /*жϴ߼Ƿ񱻱߼·*/ + if (CI_SUCCESS == checkFlag) { - break; /*״̬*/ - } - if (LOG_SECTION_LOGLOCK_NORMAL == chLgcLockState) - { - checkFlag = CheckLogRouteLgcSecResUnlock(wUnlockLgcSecId, wPreUnlockLgcSecId, logRouteId); - if (CI_SUCCESS == checkFlag) + chLgcLockState = GetLogSecLogLockState(wUnlockLgcSecId); + if ((LOG_SECTION_LOGLOCK_EXCEPT == chLgcLockState)) { - LgcSecLogicalUnlockProc(logRouteId, wUnlockLgcSecId, wPreUnlockLgcSecId); /*ӵǰ߼ɾ߼·߼߼·--*/ + break; /*״̬*/ + } + if (LOG_SECTION_LOGLOCK_NORMAL == chLgcLockState) + { + checkFlag = CheckLogRouteLgcSecResUnlock(wUnlockLgcSecId, wPreUnlockLgcSecId, logRouteId); + if (CI_SUCCESS == checkFlag) + { + LgcSecLogicalUnlockProc(logRouteId, wUnlockLgcSecId, wPreUnlockLgcSecId); /*ӵǰ߼ɾ߼·߼߼·--*/ + } + else + { + break; /*ڲ*/ + } } else { - break; /*ڲ*/ + ; /**/ } } else { - ; /**/ + /*DZ߼·յ߼Σִн*/ } + } + /*ij·߼ȫ*/ + checkFlag = LogRouteLogSecReleaseCheck(logRouteId); + if (CI_SUCCESS == checkFlag) + { + /*ȫ*/ + SetLogRouteProSwLockState(logRouteId, SWITCH_LOCK_PROTECT_CANCEL); + /*ÿ*/ + (void)SetLogicalRouteState(logRouteId, ROUTE_LOGICAL_STATE_IDLE); } else { - /*DZ߼·յ߼Σִн*/ + ;/* ʱ״̬*/ } } - /*ij·߼ȫ*/ - checkFlag = LogRouteLogSecReleaseCheck(logRouteId); - if (CI_SUCCESS == checkFlag) - { - /*ȫ*/ - SetLogRouteProSwLockState(logRouteId, SWITCH_LOCK_PROTECT_CANCEL); - /*ÿ*/ - (void)SetLogicalRouteState(logRouteId, ROUTE_LOGICAL_STATE_IDLE); - } else { - ;/* ʱ״̬*/ + ; /**/ } } - else + else /*ֻͷԴ*/ { ; /**/ } @@ -2499,16 +2522,11 @@ void LogRouteOpenManage(const UINT16 wLogRouteId) /*߼·״̬Ϊȴ*/ SetLogRouteStateManage(wLogRouteId, ROUTE_LOGICAL_STATE_UNLOCKWAIT); - /*ֿʧܣöӦʼźŻ۳·ťЧ*/ - SetDetCutBtnState(wSignalId, SIGNAL_DETAIN_CUT_VALID_NO); } else { /*ʧ,߼·״̬Ϊ߼쳣*/ SetLogRouteStateManage(wLogRouteId, ROUTE_LOGICAL_STATE_LOCKERR); - - /*ֿʧܣöӦʼźŻ۳·ťЧ*/ - SetDetCutBtnState(wSignalId, SIGNAL_DETAIN_CUT_VALID_NO); } } else @@ -2518,9 +2536,6 @@ void LogRouteOpenManage(const UINT16 wLogRouteId) /*źŻϹرձ*/ SetErrorData(funcId, CI_DEVICE_TYPE_SIGNAL, wSignalId, ETYPE_SIG_START_OPEN_STATE, sigState, ESEND_LEVEL_ATS); - - /*ֿڼź쳣رգöӦʼźŻ۳·ťЧ*/ - SetDetCutBtnState(wSignalId, SIGNAL_DETAIN_CUT_VALID_NO); } } @@ -2711,7 +2726,6 @@ void LogRouteUnlockDelayManage(const UINT16 wLogicalRouteId) UINT8 chCheckTimeState = 0U; /*ʱ*/ UINT16 wFirstNormalLockLogId = 0U; /*߼·һյ߼ID*/ UINT16 wRelativePhySecId = 0U; /*߼ιID*/ - UINT8 chPhySecCurMergeState = 0U;/*εǰں״̬*/ /*ʱʱ临˽ʱ*/ dwDelayTotalCycSum = GetSystemParaBlocRouteDelayCyc(); /*ȡʽ·ʱ*/ @@ -2724,35 +2738,16 @@ void LogRouteUnlockDelayManage(const UINT16 wLogicalRouteId) wFirstNormalLockLogId = GetLogRouteFirNormalLockLogId(wLogicalRouteId); wRelativePhySecId = GetLgcSecRelativePhySecId(wFirstNormalLockLogId); - chPhySecCurMergeState = GetPhySecCurMergeState(wRelativePhySecId); - if (SECTION_OCCUPY_NO == chPhySecCurMergeState) - { - SetLogRouFirDelayErLockStaCyc(wLogicalRouteId, 0U); - /*ڱ߼·յ߼߼쳣*/ - SetPhyIncLogSecLogLockState(wRelativePhySecId, LOG_SECTION_LOGLOCK_EXCEPT, wLogicalRouteId); - /*߼·ʽʱںΪ0*/ - SetLogSecLogRDelayErrLockCyc(wFirstNormalLockLogId, 0U); - } - else - { - ; /*ռüȴ*/ - } + SetLogRouFirDelayErLockStaCyc(wLogicalRouteId,0U); + /*ڱ߼·յ߼߼쳣*/ + SetPhyIncLogSecLogLockState(wRelativePhySecId, LOG_SECTION_LOGLOCK_EXCEPT, wLogicalRouteId); + /*߼·ʽʱںΪ0*/ + SetLogSecLogRDelayErrLockCyc(wFirstNormalLockLogId,0U); } else { ; /*ʱ䲻ȴ*/ } - - dwDelayStartCycNum = GetLogRouteDelayErrLockStartCyc(wLogicalRouteId); /*ȡ߼·Ͻʼ*/ - if (0U == dwDelayStartCycNum) - { - /*߼·Ѿйʽ⣬һռãʽʱ޷ݣʹ߼·״̬ʱ쳣*/ - LogRouteExpLockContinue(wLogicalRouteId); - } - else - { - ; - } } /* @@ -4395,57 +4390,4 @@ UINT8 LogSecLockInLogRouteProcess(const UINT16 wLogRouteId,const UINT16 wLogSecI } return funcRet; -} - -/* -* ҵ߼·ڵһ߼յ߼ -* ˵ const UINT16 wLogRouteId ߼·ID -* ֵ = 0 Ч -* > 0 ߼ID -* by cgh 20250529 -*/ -UINT16 GetLogRouteFirLogLockLogId(const UINT16 wLogRouteId) -{ - UINT16 wLogRouteLogSecNum = 0U;/*߼·߼*/ - UINT16* pLogRouteLogSecIdBuf = NULL;/*߼·߼ID*/ - UINT16 ii = 0U; - UINT16 wReVal = CI_ERROR; - UINT8 chCheckFlag = 0U;/*־*/ - UINT8 chLogSecLogLockSta = 0U;/*߼߼״̬*/ - - if (ROUTE_LOGICAL_SUM_MAX > wLogRouteId) - { - /*ȡ߼·߼*/ - wLogRouteLogSecNum = GetLogicalRouteInLogSecSum(wLogRouteId); - pLogRouteLogSecIdBuf = GetLogicalRouteInLogSecId(wLogRouteId); - - if (NULL != pLogRouteLogSecIdBuf) - { - for (ii = 0U; ii < wLogRouteLogSecNum; ii++) - { - chCheckFlag = CheckLogSecLockBelLogRoute(pLogRouteLogSecIdBuf[ii], wLogRouteId); - if (CI_SUCCESS == chCheckFlag) - { - wReVal = pLogRouteLogSecIdBuf[ii]; - break; - } - else - { - ;/*һ*/ - } - } - } - else - { - ; /*ִ*/ - } - } - else - { - ; /*ִ*/ - } - - - return wReVal; - } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/Route/LogicalRouteDataManage.h b/TSCP/src/APP/ciapp/Route/LogicalRouteDataManage.h index 2ccb251..8addcd1 100644 --- a/TSCP/src/APP/ciapp/Route/LogicalRouteDataManage.h +++ b/TSCP/src/APP/ciapp/Route/LogicalRouteDataManage.h @@ -792,15 +792,6 @@ void ErrLockFaultUnLockLogRoute(const UINT16 wLogSecId, const UINT16 wLogRouteId */ UINT8 LogSecLockInLogRouteProcess(const UINT16 wLogRouteId, const UINT16 wLogSecId); -/* -* ҵ߼·ڵһ߼յ߼ -* ˵ const UINT16 wLogRouteId ߼·ID -* ֵ = 0 Ч -* > 0 ߼ID -* by cgh 20250529 -*/ -UINT16 GetLogRouteFirLogLockLogId(const UINT16 wLogRouteId); - #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/Route/RouteConfigDataManage.c b/TSCP/src/APP/ciapp/Route/RouteConfigDataManage.c index 020cebd..92d85ee 100644 --- a/TSCP/src/APP/ciapp/Route/RouteConfigDataManage.c +++ b/TSCP/src/APP/ciapp/Route/RouteConfigDataManage.c @@ -2314,31 +2314,6 @@ UINT16 GetRouteDCQJId(const UINT16 routeId) return retVal; } -/* -* ȡָID·̵2ID -* ˵ const UINT16 routeId, ·ID -* ֵ >0: ̵2ID -* 0: û -* by cgh 20250603 -*/ -UINT16 GetRouteDCQJTwoId(const UINT16 routeId) -{ - UINT16 bufIndex = 0u; /*±*/ - UINT16 retVal = 0u; - - bufIndex = GetRouteConfigBufIndex(routeId); /*ȡ·±*/ - - if (ROUTE_SUM_MAX > bufIndex) - { - retVal = RouteConfigDataStru[bufIndex].DCRouteDCQJTwoId; - } - else - { - retVal = 0U; - } - return retVal; -} - /* * ȡָID·״̬/쳣/Ԥʱ * ˵ const UINT16 routeId, ·ID @@ -3142,6 +3117,81 @@ UINT16* GetMainRouteBuff(const UINT16 subrouteId) return retVal; } +/* +* ȡָID·CBTCղ̵ID +* ˵ const UINT16 routeId, ·ID +* ֵ 0: ȡʧ +* >0: ղ̵ID +* by cgh 20230728 ֺ󱸼CBTCղ +*/ +UINT16 GetRouteCbtcThisZhaoChaRelayId(const UINT16 routeId) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT16 retVal = CI_ERROR; + + bufIndex = GetRouteConfigBufIndex(routeId); /*ȡ·±*/ + + if (bufIndex < ROUTE_SUM_MAX) + { + retVal = RouteConfigDataStru[bufIndex].wCbtcThisZhaoChaRelayId; + } + else + { + retVal = CI_ERROR; + } + return retVal; +} + +/* +* ȡָID·CBTCԶղ̵ID +* ˵ const UINT16 routeId, ·ID +* ֵ 0: ȡʧ +* >0: ղ̵ID +* by cgh 20230728 ֺ󱸼CBTCղ +*/ +UINT16 GetRouteCbtcThatZhaoChaRelayId(const UINT16 routeId) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT16 retVal = CI_ERROR; + + bufIndex = GetRouteConfigBufIndex(routeId); /*ȡ·±*/ + + if (bufIndex < ROUTE_SUM_MAX) + { + retVal = RouteConfigDataStru[bufIndex].wCbtcThatZhaoChaRelayId; + } + else + { + retVal = CI_ERROR; + } + return retVal; +} + +/* +* ȡָID·CBTCȡղ̵ID +* ˵ const UINT16 routeId, ·ID +* ֵ 0: ȡʧ +* >0: ղ̵ID +* by cgh 20230728 ֺ󱸼CBTCղ +*/ +UINT16 GetRouteCbtcCancelZhaochaRelay(const UINT16 routeId) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT16 retVal = CI_ERROR; + + bufIndex = GetRouteConfigBufIndex(routeId); /*ȡ·±*/ + + if (bufIndex < ROUTE_SUM_MAX) + { + retVal = RouteConfigDataStru[bufIndex].wCbtccancelZhaochaRelayId; + } + else + { + retVal = CI_ERROR; + } + return retVal; +} + /* * ȡָID·ⱨźſʱ־ * ˵ const UINT16 routeId ·ID diff --git a/TSCP/src/APP/ciapp/Route/RouteConfigDataManage.h b/TSCP/src/APP/ciapp/Route/RouteConfigDataManage.h index 3f413e7..e2e4598 100644 --- a/TSCP/src/APP/ciapp/Route/RouteConfigDataManage.h +++ b/TSCP/src/APP/ciapp/Route/RouteConfigDataManage.h @@ -199,6 +199,9 @@ typedef struct S_RouteConfigDataStruct UINT16 ThisZhaoChaRelayId; /*ղ̵ID (ֶ)*/ UINT16 ThatZhaoChaRelayId; /*Զղ̵ID (ֶ)*/ UINT16 cancelZhaochaRelayId; /* ȡղ̵ID(ֶ) ̵ */ + UINT16 wCbtcThisZhaoChaRelayId; /*ղ̵ID (ֶ)*/ + UINT16 wCbtcThatZhaoChaRelayId; /*Զղ̵ID (ֶ)*/ + UINT16 wCbtccancelZhaochaRelayId; /* ȡղ̵ID(ֶ) ̵ */ UINT8 RouteInitFSStatus; /*·ʼ״̬*/ UINT8 RouteFSSignalSum; /*·طźŻĿ (ֶ)*/ @@ -247,7 +250,6 @@ typedef struct S_RouteConfigDataStruct RouteTriggerLogicSectionStruct CbtcTriggerLogSecStru[1]; /*CBTC·߼νṹ (ֶ)Ԥ*/ UINT16 DCRouteDCQJId;/*·̵ID*/ - UINT16 DCRouteDCQJTwoId;/*·̵2ID*/ UINT16 DCRouteTAJId;/*·ͬⰴť̵ID*/ UINT8 RouteNeedDelayUnlock; /* ·״̬/쳣/Ԥգȡ˽ҪʱֶΣ*/ @@ -985,15 +987,6 @@ UINT8 GetRouteInitFSStatus(const UINT16 routeId); */ UINT16 GetRouteDCQJId(const UINT16 routeId); -/* -* ȡָID·̵2ID -* ˵ const UINT16 routeId, ·ID -* ֵ >0: ̵2ID -* 0: û -* by cgh 20250603 -*/ -UINT16 GetRouteDCQJTwoId(const UINT16 routeId); - /* * ȡָID·ͬⰴť̵ID * ˵ const UINT16 routeId, ·ID @@ -1252,6 +1245,33 @@ UINT8 GetMainRouteSum(const UINT16 subrouteId); */ UINT16* GetMainRouteBuff(const UINT16 subrouteId); +/* +* ȡָID·CBTCղ̵ID +* ˵ const UINT16 routeId, ·ID +* ֵ 0: ȡʧ +* >0: ղ̵ID +* by cgh 20230728 ֺ󱸼CBTCղ +*/ +UINT16 GetRouteCbtcThisZhaoChaRelayId(const UINT16 routeId); + +/* +* ȡָID·CBTCԶղ̵ID +* ˵ const UINT16 routeId, ·ID +* ֵ 0: ȡʧ +* >0: ղ̵ID +* by cgh 20230728 ֺ󱸼CBTCղ +*/ +UINT16 GetRouteCbtcThatZhaoChaRelayId(const UINT16 routeId); + +/* +* ȡָID·CBTCȡղ̵ID +* ˵ const UINT16 routeId, ·ID +* ֵ 0: ȡʧ +* >0: ղ̵ID +* by cgh 20230728 ֺ󱸼CBTCղ +*/ +UINT16 GetRouteCbtcCancelZhaochaRelay(const UINT16 routeId); + /* * ȡָID·ⱨźſʱ־ * ˵ const UINT16 routeId ·ID diff --git a/TSCP/src/APP/ciapp/Route/RouteDataManage.c b/TSCP/src/APP/ciapp/Route/RouteDataManage.c index 43ad57e..a11d4a7 100644 --- a/TSCP/src/APP/ciapp/Route/RouteDataManage.c +++ b/TSCP/src/APP/ciapp/Route/RouteDataManage.c @@ -2449,13 +2449,14 @@ void SetRouteNeedOpenNotTrueSigRepeatOpenStartCycNum(const UINT16 routeId, const /* * ָ·ĵ״̬ * ˵ const UINT16 routeId, ·ID -* const UINT8 dcqState, ״̬ -* ֵ -* by cgh 20250523 +* const UINT32 dcqState, ״̬ +* ֵ 0: ʧ +* 1: ݳɹ */ -void SetRouteDCQState(const UINT16 routeId, const UINT8 dcqState) +UINT8 SetRouteDCQState(const UINT16 routeId, const UINT8 dcqState) { UINT16 bufIndex = 0u; /*±*/ + UINT8 retVal = CI_ERROR; bufIndex = GetRouteConfigBufIndex(routeId); /*ȡ·±*/ @@ -2464,16 +2465,19 @@ void SetRouteDCQState(const UINT16 routeId, const UINT8 dcqState) if ((ROUTE_DCQ_REQUEST == dcqState) || (ROUTE_DCQ_NOT_REQUEST == dcqState) ) { RouteDataStru[bufIndex].DCQState = dcqState; + + retVal = CI_SUCCESS; } else { - ; + retVal = CI_ERROR; } } else { - ; + retVal = CI_ERROR; } + return retVal; } /* @@ -2503,13 +2507,14 @@ UINT8 GetRouteDCQState(const UINT16 routeId) /* * ָ·ĵͬ״̬ * ˵ const UINT16 routeId, ·ID -* const UINT8 dcTyState, ״̬ -* ֵ -* by cgh 20250523 +* const UINT32 dcTyState, ״̬ +* ֵ 0: ʧ +* 1: ݳɹ */ -void SetRouteDCTYState(const UINT16 routeId, const UINT8 dcTyState) +UINT8 SetRouteDCTYState(const UINT16 routeId, const UINT8 dcTyState) { UINT16 bufIndex = 0u; /*±*/ + UINT8 retVal = CI_ERROR; bufIndex = GetRouteConfigBufIndex(routeId); /*ȡ·±*/ @@ -2518,16 +2523,19 @@ void SetRouteDCTYState(const UINT16 routeId, const UINT8 dcTyState) if ((ROUTE_DCT_AGREE == dcTyState) || (ROUTE_DCT_NOT_AGREE == dcTyState) ) { RouteDataStru[bufIndex].DCTYState = dcTyState; + + retVal = CI_SUCCESS; } else { - ; + retVal = CI_ERROR; } } else { - ; + retVal = CI_ERROR; } + return retVal; } /* @@ -5122,7 +5130,7 @@ UINT8 GetRouteNearSecFitSwIndex(const UINT16 routeId,const UINT8 nearSecIndex) } /* -* ɾ·гԴ +* ɾ·ڱгԴ * ˵ const UINT16 routeId, ·ID * const UINT16 trainId, гID * ֵ @@ -5131,16 +5139,23 @@ void RemoveRouteInCiRes(const UINT16 routeId,const UINT16 trainId) { UINT16 bufIndex = 0u; /*±*/ UINT8 jj = 0U; + UINT8 localCiId = 0U; + UINT8 logBelongCiId = 0U; UINT16 wRouteInLgcSecSum = 0U; UINT16 *pRouteInLgcSecBuf = NULL; wRouteInLgcSecSum = GetRouteLogSectionSum(routeId); pRouteInLgcSecBuf = GetRouteLogSectionIdBuf(routeId); + localCiId = GetSystemParaLocalCiId(); if (0U != wRouteInLgcSecSum) { for (jj = 0U; jj < wRouteInLgcSecSum; jj++) { - RemoveLogSecTrainInfoById(pRouteInLgcSecBuf[jj], trainId); + logBelongCiId = GetLogSecBelongCiId(pRouteInLgcSecBuf[jj]); + if ((logBelongCiId == localCiId) && (0U != localCiId)) + { + RemoveLogSecTrainInfoById(pRouteInLgcSecBuf[jj], trainId); + } } } } @@ -5696,15 +5711,6 @@ void SetRouteApplySwitchCheckFlag(UINT16 routeId, UINT8 setFlag) || (ROUTE_APPLY_SWITCH_CHECK_DEF == setFlag)) { RouteDataStru[bufIndex].chRouteApplySwitchCheckFlag = setFlag; - if (ROUTE_APPLY_SWITCH_CHECK_DEF == setFlag) - { - /*¼·*/ - SetRouteApplySwitchCheckErrorData(routeId, 0U, 0U, 0U, 0U); - } - else - { - ;/**/ - } } else { @@ -5740,216 +5746,4 @@ UINT8 GetRouteApplySwitchCheckFlag(const UINT16 routeId) } return reVal; -} - -/* -* ָ·ĵͬⰴť״̬ -* ˵ const UINT16 routeId, ·ID -* const UINT8 chDcAgreeButtonErrState, ͬⰴť״̬ -* ֵ -* by cgh 20250523 -*/ -void SetRouteDcAgreeButtonErrState(const UINT16 routeId, const UINT8 chDcAgreeButtonErrState) -{ - UINT16 bufIndex = 0U; /*±*/ - - bufIndex = GetRouteConfigBufIndex(routeId); /*ȡ·±*/ - - if (ROUTE_SUM_MAX > bufIndex) - { - if ((ROUTE_DC_AGREE_BUTTON_ERR == chDcAgreeButtonErrState) || (ROUTE_DC_AGREE_BUTTON_OK == chDcAgreeButtonErrState)) - { - RouteDataStru[bufIndex].chDcAgreeButtonErrState = chDcAgreeButtonErrState; - - } - else - { - ; - } - } - else - { - ; - } -} - -/* -* ȡָ·ĵͬⰴť״̬ -* ˵ const UINT16 routeId, ·ID -* ֵ ͬⰴť״̬ -* by cgh 20250523 -*/ -UINT8 GetRouteDcAgreeButtonErrState(const UINT16 routeId) -{ - UINT16 bufIndex = 0U; /*±*/ - UINT8 retVal = ROUTE_DC_AGREE_BUTTON_ERR; - - bufIndex = GetRouteConfigBufIndex(routeId); /*ȡ·±*/ - - if (ROUTE_SUM_MAX > bufIndex) - { - retVal = RouteDataStru[bufIndex].chDcAgreeButtonErrState; - } - else - { - ; - } - return retVal; -} - -/* -* ָ·ĵͬⰴťʼ -* ˵ const UINT16 routeId, ·ID -* const UINT32 dwDcAgreeBtnPressCycNum, ͬⰴťʼ -* ֵ -* by cgh 20250523 -*/ -void SetRouteDcAgreeBtnPressCycNum(const UINT16 routeId, const UINT32 dwDcAgreeBtnPressCycNum) -{ - UINT16 bufIndex = 0U; /*±*/ - - bufIndex = GetRouteConfigBufIndex(routeId); /*ȡ·±*/ - - if (ROUTE_SUM_MAX > bufIndex) - { - RouteDataStru[bufIndex].dwDcAgreeBtnPressCycNum = dwDcAgreeBtnPressCycNum; - } - else - { - ; - } -} - -/* -* ȡָ·ĵͬⰴťʼ -* ˵ const UINT16 routeId, ·ID -* ֵ ͬⰴťʼ -* by cgh 20250523 -*/ -UINT32 GetRouteDcAgreeBtnPressCycNum(const UINT16 routeId) -{ - UINT16 bufIndex = 0U; /*±*/ - UINT32 retVal = 0U; - - bufIndex = GetRouteConfigBufIndex(routeId); /*ȡ·±*/ - - if (ROUTE_SUM_MAX > bufIndex) - { - retVal = RouteDataStru[bufIndex].dwDcAgreeBtnPressCycNum; - } - else - { - ; - } - return retVal; -} - -/* -* ָ·ת·־ -* ˵UINT16 routeId õĽ·ID -* UINT8 setFlag ñ־ -* ֵ -* Created By LQ 2025.08.04 -*/ -void SetRouteToLeadFlag(UINT16 routeId, UINT8 setFlag) -{ - UINT16 bufIndex = 0U; /*±*/ - - bufIndex = GetRouteConfigBufIndex(routeId); /*ȡ·±*/ - - if (ROUTE_SUM_MAX > bufIndex) - { - if ((ROUTE_TO_LEAD_FLAG_NO == setFlag) || (ROUTE_TO_LEAD_FLAG_YES == setFlag)) - { - RouteDataStru[bufIndex].cRouteToLeadFlag = setFlag; - } - else - { - ; /**/ - } - } - else - { - ; /**/ - } -} - -/* -* ȡָ·ת·־ -* ˵const UINT16 routeId ·ID -* ֵ0x55 Ч -* 0xAA Ч -* Created By LQ 2025.08.04 -*/ -UINT8 GetRouteToLeadFlag(const UINT16 routeId) -{ - UINT16 bufIndex = 0U; /*±*/ - UINT8 reVal = ROUTE_TO_LEAD_FLAG_NO; - - bufIndex = GetRouteConfigBufIndex(routeId); /*ȡ·±*/ - - if (ROUTE_SUM_MAX > bufIndex) - { - reVal = RouteDataStru[bufIndex].cRouteToLeadFlag; - } - else - { - ; /**/ - } - - return reVal; -} - -/* -* ָ·ڿ¼ -* ˵UINT16 routeId õĽ·ID -* UINT16 devID 豸ID UINT8 devType 豸ͣUINT8 devState 豸״̬ UINT8 errorType -* ֵ -* by fan 20250922 -*/ -void SetRouteApplySwitchCheckErrorData(UINT16 routeId, UINT16 devID, UINT8 devType, UINT8 devState, UINT8 errorType) -{ - UINT16 bufIndex = 0U; /*±*/ - - bufIndex = GetRouteConfigBufIndex(routeId); /*ȡ·±*/ - - if (ROUTE_SUM_MAX > bufIndex) - { - RouteDataStru[bufIndex].OtherCiRecordDevID = devID; - RouteDataStru[bufIndex].OtherCiRecordDevState = devState; - RouteDataStru[bufIndex].OtherCiRecordDevType = devType; - RouteDataStru[bufIndex].OtherCiRecordErrorType = errorType; - } - else - { - ; /**/ - } -} - -/* -* ȡָ·ڿ¼ -* ˵UINT16 routeId ·ID -* ֵUINT16 豸ID -* UINT8 *devType豸, UINT8* devState豸״̬UINT8* errorType -* by fan 20250922 -*/ -UINT16 GetRouteApplySwitchCheckErrorData(UINT16 routeId, UINT8 *devType, UINT8* devState, UINT8* errorType) -{ - UINT16 bufIndex = 0U; /*±*/ - UINT16 rtnDevId = 0U; - - bufIndex = GetRouteConfigBufIndex(routeId); /*ȡ·±*/ - - if (ROUTE_SUM_MAX > bufIndex) - { - rtnDevId = RouteDataStru[bufIndex].OtherCiRecordDevID; - *devType = RouteDataStru[bufIndex].OtherCiRecordDevType; - *devState = RouteDataStru[bufIndex].OtherCiRecordDevState; - *errorType = RouteDataStru[bufIndex].OtherCiRecordErrorType; - } - else - { - ; /**/ - } - return rtnDevId; } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/Route/RouteDataManage.h b/TSCP/src/APP/ciapp/Route/RouteDataManage.h index 2d52fa6..1ae84d4 100644 --- a/TSCP/src/APP/ciapp/Route/RouteDataManage.h +++ b/TSCP/src/APP/ciapp/Route/RouteDataManage.h @@ -84,8 +84,7 @@ typedef struct S_RouteDataStruct UINT32 NeedOpenNotTrueRepeatStartCount; /*迪Ųʱؿʼ*/ UINT8 DCQState; /*״̬*/ UINT8 DCTYState; /*ͬ״̬*/ - UINT32 dwDcAgreeBtnPressCycNum; /*ͬⰴťʼ*/ - UINT8 chDcAgreeButtonErrState; /*ͬⰴť״̬*/ + UINT8 DCTYNotSatisfySignalReOpenFlag; /*ͬⲻ-źؿ־*/ UINT32 DCTYNotSatisfyStartCount; /*ͬⲻ-ʼ*/ UINT8 CancleDelayflag; /*ȡ·ʱ־*/ @@ -124,11 +123,6 @@ typedef struct S_RouteDataStruct UINT8 cRouteDrivedSGBJFlag; /*·ⱨ־0x55 δ0xAA */ UINT8 chRouteNearSecSearchState; /*·ӽ״̬*/ UINT8 chRouteApplySwitchCheckFlag; /*·ڿ־*/ - UINT16 OtherCiRecordDevID; /*ʧ豸ID*/ - UINT8 OtherCiRecordDevType; /*ʧ豸*/ - UINT8 OtherCiRecordDevState; /*ʧ豸״̬*/ - UINT8 OtherCiRecordErrorType; /*ʧܱ*/ - UINT8 cRouteToLeadFlag; /*ͨ·ת·־0x55-Ч0xAA-Чӡ־*/ } RouteDataStruct; @@ -805,11 +799,11 @@ void SetRouteNeedOpenNotTrueSigRepeatOpenStartCycNum(const UINT16 routeId, const /* * ָ·ĵ״̬ * ˵ const UINT16 routeId, ·ID -* const UINT8 dcqState, ״̬ -* ֵ -* by cgh 20250523 +* const UINT32 dcqState, ״̬ +* ֵ 0: ʧ +* 1: ݳɹ */ -void SetRouteDCQState(const UINT16 routeId, const UINT8 dcqState); +UINT8 SetRouteDCQState(const UINT16 routeId, const UINT8 dcqState); /* * ȡָ·ĵ״̬ @@ -822,11 +816,11 @@ UINT8 GetRouteDCQState(const UINT16 routeId); /* * ָ·ĵͬ״̬ * ˵ const UINT16 routeId, ·ID -* const UINT8 dcTyState, ״̬ -* ֵ -* by cgh 20250523 +* const UINT32 dcTyState, ״̬ +* ֵ 0: ʧ +* 1: ݳɹ */ -void SetRouteDCTYState(const UINT16 routeId, const UINT8 dcTyState); +UINT8 SetRouteDCTYState(const UINT16 routeId, const UINT8 dcTyState); /* * ȡָ·ĵͬ״̬ @@ -1641,77 +1635,6 @@ void SetRouteApplySwitchCheckFlag(UINT16 routeId, UINT8 setFlag); */ UINT8 GetRouteApplySwitchCheckFlag(const UINT16 routeId); -/* -* ָ·ĵͬⰴť״̬ -* ˵ const UINT16 routeId, ·ID -* const UINT8 chDcAgreeButtonErrState, ͬⰴť״̬ -* ֵ -* by cgh 20250523 -*/ -void SetRouteDcAgreeButtonErrState(const UINT16 routeId, const UINT8 chDcAgreeButtonErrState); - -/* -* ȡָ·ĵͬⰴť״̬ -* ˵ const UINT16 routeId, ·ID -* ֵ ͬⰴť״̬ -* by cgh 20250523 -*/ -UINT8 GetRouteDcAgreeButtonErrState(const UINT16 routeId); - -/* -* ָ·ĵͬⰴťʼ -* ˵ const UINT16 routeId, ·ID -* const UINT32 dwDcAgreeBtnPressCycNum, ͬⰴťʼ -* ֵ -* by cgh 20250523 -*/ -void SetRouteDcAgreeBtnPressCycNum(const UINT16 routeId, const UINT32 dwDcAgreeBtnPressCycNum); - -/* -* ȡָ·ĵͬⰴťʼ -* ˵ const UINT16 routeId, ·ID -* ֵ ͬⰴťʼ -* by cgh 20250523 -*/ -UINT32 GetRouteDcAgreeBtnPressCycNum(const UINT16 routeId); - -/* -* ָ·ת·־ -* ˵UINT16 routeId õĽ·ID -* UINT8 setFlag ñ־ -* ֵ -* Created By LQ 2025.08.04 -*/ -void SetRouteToLeadFlag(UINT16 routeId, UINT8 setFlag); - -/* -* ȡָ·ת·־ -* ˵const UINT16 routeId ·ID -* ֵ0x55 Ч -* 0xAA Ч -* Created By LQ 2025.08.04 -*/ -UINT8 GetRouteToLeadFlag(const UINT16 routeId); - -/* -* ָ·ڿ¼ -* ˵UINT16 routeId õĽ·ID -* UINT16 devID 豸ID UINT8 devType 豸ͣUINT8 devState 豸״̬,UINT8 errorType -* ֵ -* by fan 20250922 -*/ -void SetRouteApplySwitchCheckErrorData(UINT16 routeId, UINT16 devID, UINT8 devType, UINT8 devState, UINT8 errorType); - -/* -* ȡָ·ڿ¼ -* ˵UINT16 routeId ·ID -* ֵUINT16 豸ID -* UINT8 *devType豸, UINT8* devState豸״̬UINT8* errorType -* by fan 20250922 -*/ -UINT16 GetRouteApplySwitchCheckErrorData(UINT16 routeId, UINT8 *devType, UINT8* devState, UINT8* errorType); - - #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/Route/RouteDefine.h b/TSCP/src/APP/ciapp/Route/RouteDefine.h index 16e7a42..26883bb 100644 --- a/TSCP/src/APP/ciapp/Route/RouteDefine.h +++ b/TSCP/src/APP/ciapp/Route/RouteDefine.h @@ -46,7 +46,7 @@ #define ROUTE_ESB_SUM_MAX ((UINT16)4) /*վ̨ͣťֵ*/ #define ROUTE_PSD_SUM_MAX ((UINT16)4) /*վֵ̨*/ #define ROUTE_THATZC_PHYSEC_SUM_MAX ((UINT16)4) /*Զղֵ*/ -#define ROUTE_OPPOSED_ROUTE_SUM_MAX ((UINT8)255) /*ִ·ֵ*/ +#define ROUTE_OPPOSED_ROUTE_SUM_MAX ((UINT16)540) /*ִ·ֵ*/ #define ROUTE_SIGNAL_OPPOSED_ROUTE_SUM_MAX ((UINT16)100) /*Ա·ʼźŻΪնźŻ۷·Ŀ*/ #define ROUTE_FLOOD_GATE_SUM_MAX ((UINT16)2) /* ·Ÿ */ #define ROUTE_OHTER_CHECK_SUM_MAX ((UINT16)10) /* · */ @@ -290,9 +290,6 @@ #define ROUTE_DCT_AGREE ((UINT8)0xaa) /*ͬ*/ #define ROUTE_DCT_NOT_AGREE ((UINT8)0x55) /*޵ͬ*/ -#define ROUTE_DC_AGREE_BUTTON_ERR ((UINT8)0xaa) /*ͬⰴť*/ -#define ROUTE_DC_AGREE_BUTTON_OK ((UINT8)0x55) /*ͬⰴťδ*/ - #define ROUTE_DCTY_REOPEN ((UINT8)0xaa) /*ͬؿ*/ #define ROUTE_DCTY_REOPEN_NO ((UINT8)0x55) /*ͬⲻؿ*/ @@ -343,7 +340,6 @@ #define ROUTE_SUB_INCLUDE_SUM_MAX ((UINT16)10) /*·ӽ·Ŀֵ*/ #define ROUTE_MAIN_BELONG_SUM_MAX ((UINT16)10) /*ӽ··Ŀֵ*/ -#define ROUTE_MAYBE_BELONG_SUM_MAX ((UINT16)100) /*ӽ··ֵ*/ #define ROUTE_TRAIN_LOC_MAX_LGC_SUM ((UINT16)10) /*г߼*/ @@ -383,8 +379,5 @@ #define ROUTE_APPLY_SWITCH_CHECK_YES ((UINT8)0xaa) /*·־_ͨ*/ #define ROUTE_APPLY_SWITCH_CHECK_DEF ((UINT8)0xFF) /*·־_Ĭ*/ -#define ROUTE_TO_LEAD_FLAG_NO ((UINT8)0x55) /*ͨ·ת·־Ч*/ -#define ROUTE_TO_LEAD_FLAG_YES ((UINT8)0xaa) /*ͨ·ת·־Ч*/ - #endif diff --git a/TSCP/src/APP/ciapp/SPKS/SpksDataManage.c b/TSCP/src/APP/ciapp/SPKS/SpksDataManage.c index 0b7425e..5228bb3 100644 --- a/TSCP/src/APP/ciapp/SPKS/SpksDataManage.c +++ b/TSCP/src/APP/ciapp/SPKS/SpksDataManage.c @@ -144,12 +144,12 @@ void SetSpksCutState(const UINT16 spksId, const UINT8 spksCutState) UINT8 SpksDataManageInit(void) { UINT8 ret = CI_ERROR; - UINT16 tmpSpksSum = 0U; - UINT16 ii = 0U; - UINT16 spksId = 0U; + UINT16 tmpSpksSum = 0u; + UINT16 ii = 0u; + UINT16 spksId = 0u; tmpSpksSum = GetTotalSpksCurNum();/*͸ԼSPKSĿ,ڵSPKS_SUM_MAX0*/ - for (ii = 0U; ii < tmpSpksSum; ii++) + for (ii = 0u; ii < tmpSpksSum; ii++) { spksId = GetSpksIdByIndex(ii); spksDataBuff[spksId].spksId = spksId; /*spks ID*/ @@ -162,9 +162,8 @@ UINT8 SpksDataManageInit(void) spksDataBuff[spksId].status = SPKS_STATUS_YES; } spksDataBuff[spksId].cutStatus = SPKS_CUT_NO; /*spks·δ*/ - spksDataBuff[spksId].flockStartNum = 0U; + spksDataBuff[spksId].flockStartNum = 0u; spksDataBuff[spksId].TotalSpksDriveOutDis = TOTALSPKSDRIVE_INVALID;/*Ч*/ - spksDataBuff[spksId].dwSpksBtnPressCycNum = 0U; } ret = CI_SUCCESS; @@ -268,52 +267,4 @@ UINT8 GetDriveOutDisFlag(const UINT16 spksId) /**/ } return ret; -} - -/* -* ȡSPKSťʼ -* ˵const UINT16 spksId SPKS -* ֵSPKSťʼ -* Created By LQ 2025.06.26 -*/ -UINT32 GetSpksPressCycNum(const UINT16 spksId) -{ - UINT16 bufIndex = 0u; /*±*/ - UINT32 dwRetVal = 0U; - - bufIndex = GetSpksConfigBufIndex(spksId); /*ȡ±*/ - - if (bufIndex < SPKS_SUM_MAX) - { - dwRetVal = spksDataBuff[bufIndex].dwSpksBtnPressCycNum; - } - else - { - /**/ - } - - return dwRetVal; -} - -/* -* SPKSťʼ -* ˵const UINT16 spksId SPKS -* const UINT32 dwCycNum ں -* ֵ -* Created By LQ 2025.06.26 -*/ -void SetSpksPressCycNum(const UINT16 spksId, const UINT32 dwCycNum) -{ - UINT16 bufIndex = 0u; /*±*/ - - bufIndex = GetSpksConfigBufIndex(spksId); /*ȡ±*/ - - if (bufIndex < SPKS_SUM_MAX) - { - spksDataBuff[bufIndex].dwSpksBtnPressCycNum = dwCycNum; - } - else - { - /**/ - } } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/SPKS/SpksDataManage.h b/TSCP/src/APP/ciapp/SPKS/SpksDataManage.h index 49efdde..af743dc 100644 --- a/TSCP/src/APP/ciapp/SPKS/SpksDataManage.h +++ b/TSCP/src/APP/ciapp/SPKS/SpksDataManage.h @@ -23,7 +23,6 @@ typedef struct UINT8 cutStatus; /* spks·״̬ */ UINT32 flockStartNum; /*ʼ*/ UINT8 TotalSpksDriveOutDis; /*SKPKSSPKSָʾƱ־*/ - UINT32 dwSpksBtnPressCycNum; /*SPKSťʼں*/ } SpksDataStruct; extern SpksDataStruct spksDataBuff[SPKS_SUM_MAX]; /* */ @@ -114,23 +113,6 @@ extern "C" { */ UINT8 GetDriveOutDisFlag(const UINT16 spksId); -/* -* ȡSPKSťʼ -* ˵const UINT16 spksId SPKS -* ֵSPKSťʼ -* Created By LQ 2025.06.26 -*/ -UINT32 GetSpksPressCycNum(const UINT16 spksId); - -/* -* SPKSťʼ -* ˵const UINT16 spksId SPKS -* const UINT32 dwCycNum ں -* ֵ -* Created By LQ 2025.06.26 -*/ -void SetSpksPressCycNum(const UINT16 spksId, const UINT32 dwCycNum); - #ifdef __cplusplus }; #endif diff --git a/TSCP/src/APP/ciapp/SPKS/SpksDefine.h b/TSCP/src/APP/ciapp/SPKS/SpksDefine.h index ceecbf1..9b53341 100644 --- a/TSCP/src/APP/ciapp/SPKS/SpksDefine.h +++ b/TSCP/src/APP/ciapp/SPKS/SpksDefine.h @@ -17,7 +17,7 @@ /* SPKSֵ */ #define SPKS_SUM_MAX ((UINT16)500) /* SPKSֵ */ -#define SPKS_MAX_SEC_NUM ((UINT16)150) /* SPKSťӦ */ +#define SPKS_MAX_SEC_NUM ((UINT16)100) /* SPKSťӦ */ #define MJ_MAX_SPKSNUM ((UINT16)15) /* һŽɹSPKS */ #define SPKS_MAX_MJNUM ((UINT16)15) /* һSPKSɹŽ */ #define MJ_SUM_MAX ((UINT16)500) /* Ž̵ֵ */ diff --git a/TSCP/src/APP/ciapp/Section/AxisSectionConfigDataManage.c b/TSCP/src/APP/ciapp/Section/AxisSectionConfigDataManage.c index cbf9f51..9b09620 100644 --- a/TSCP/src/APP/ciapp/Section/AxisSectionConfigDataManage.c +++ b/TSCP/src/APP/ciapp/Section/AxisSectionConfigDataManage.c @@ -1123,31 +1123,5 @@ UINT8 GetAxisSecBorderProperty(const UINT16 axisSectionId) retVal = CI_ERROR; } - return retVal; -} - -/* -* ȡָIDεCBTC -* ˵const UINT16 axisSectionId ID -* ֵ0x55 CBTC -* 0xAA CBTC -* Created By LQ 2025.08.05 -*/ -UINT8 GetAxisSecCbtcProperty(const UINT16 axisSectionId) -{ - UINT16 bufIndex = 0u; /*±*/ - UINT8 retVal = AXIS_SEC_CBTC_PROPERTY_NO; - - bufIndex = GetAxisSecConfigBufIndex(axisSectionId); /*ȡ±*/ - - if (bufIndex < AXIS_SECTION_SUM_MAX) - { - retVal = AxisSectionConfigDataStru[bufIndex].cAcCbtcAttr; - } - else - { - /**/ - } - return retVal; } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/Section/AxisSectionConfigDataManage.h b/TSCP/src/APP/ciapp/Section/AxisSectionConfigDataManage.h index 7511d5e..19bc44f 100644 --- a/TSCP/src/APP/ciapp/Section/AxisSectionConfigDataManage.h +++ b/TSCP/src/APP/ciapp/Section/AxisSectionConfigDataManage.h @@ -52,7 +52,6 @@ typedef struct S_AxisSectionConfigDataStruct UINT8 cBorderAttr; /*߽*/ UINT8 chAxisLinXian; /*-ǷΪ·-ӵͼLink*/ UINT32 dwAxisTotalLen; /*linkܳ*/ - UINT8 cAcCbtcAttr; /*CBTCԣ0x55-CBTCԣ0xaa-CBTC*/ } AxisSectionConfigDataStruct; extern AxisSectionConfigDataStruct AxisSectionConfigDataStru[AXIS_SECTION_SUM_MAX]; /*ݽṹ,cgh-ϲCID-2539-1˴гʼͳһŵInitAllStaticDataStrнгʼΪں˹*/ @@ -312,15 +311,6 @@ UINT32 GetAxisSecTotalLen(const UINT16 axisSectionId); */ UINT8 GetAxisSecBorderProperty(const UINT16 axisSectionId); -/* -* ȡָIDεCBTC -* ˵const UINT16 axisSectionId ID -* ֵ0x55 CBTC -* 0xAA CBTC -* Created By LQ 2025.08.05 -*/ -UINT8 GetAxisSecCbtcProperty(const UINT16 axisSectionId); - #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/Section/LinkConfigDataManage.c b/TSCP/src/APP/ciapp/Section/LinkConfigDataManage.c index 7a82247..d102c02 100644 --- a/TSCP/src/APP/ciapp/Section/LinkConfigDataManage.c +++ b/TSCP/src/APP/ciapp/Section/LinkConfigDataManage.c @@ -2033,7 +2033,7 @@ UINT8 GetAxisSeqFromLinkSeq(UINT16* linkId, UINT16 LinkNum, UINT16 *AxleSgmtId, UINT8 chLoopIndex = 0U; UINT16 szLoopLinkId[AXIS_INCLUDE_LINK_SUM_MAX] = { 0U }; AxisSwitchStruct szLoopSwitchInfo[AXIS_INCLUDE_SWITCH_SUM_MAX] = { 0U }; - UINT8 cFuncSwitch = 0U; + /*μ*/ if ((NULL == linkId) || (0U == LinkNum) || (NULL == AxleSgmtId) || (NULL == AxleSgmtNum) || (acNum >= maxSize)) @@ -2214,18 +2214,11 @@ UINT8 GetAxisSeqFromLinkSeq(UINT16* linkId, UINT16 LinkNum, UINT16 *AxleSgmtId, { /** ˷֧execValidһóɳɹ*/ execValid = CI_ERROR; - cFuncSwitch = GetCiFunctionSwitchConfig(FUNC_ROUTE_DRV_SWITCH_EARLY); + for (cycleAC = 0U; cycleAC < tmpSameLinkOfACCnt; cycleAC++) { /** Ҫ */ - if (FUNC_SWITCH_ON == cFuncSwitch) - { - chCheckStart = FLAG_UNSET; /*޸ȱYF0083-2106*/ - } - else - { - chCheckStart = FLAG_SET; - } + chCheckStart = FLAG_UNSET; /** ȡϵĵϢ*/ tmpSwCntInAC = GetAxisSwitchSum(tmpSameLinkOfACID[cycleAC]); @@ -4300,129 +4293,4 @@ UINT8 GetAgLinkExistRelCgFlag(const UINT16 wLinkId) } return chRtnValue; -} - -/* -* @brief ȡlink -* @param wLinkId -* @return 0 ߱ -* >0 -* by cgh 20250818 -*/ -UINT16 GetLinkSpecialEaAttr(const UINT16 wLinkId) -{ - UINT16 wRtnValue = 0U; - UINT16 wIndex = 0U; - - wIndex = GetLinkIndexById(wLinkId); - - if ((0U < wIndex) && (LINK_SUM_MAX > wIndex)) - { - wRtnValue = g_szLinkConfigData[wIndex].wLinkSpecialEa; - } - else - { - ; /*δ󣬷Ĭֵ*/ - } - - return wRtnValue; -} - -/* -* @brief ȡlinkͷǰ -* @param wLinkId -* @return 0 ʧ -* >0 ͷǰ -* by cgh 20250818 -*/ -UINT32 GetLinkSpecialEaFrontDis(const UINT16 wLinkId) -{ - UINT32 dwRtnValue = 0U; - UINT16 wIndex = 0U; - - wIndex = GetLinkIndexById(wLinkId); - - if ((0U < wIndex) && (LINK_SUM_MAX > wIndex)) - { - dwRtnValue = g_szLinkConfigData[wIndex].dwFrontDis; - } - else - { - ; /*δ󣬷Ĭֵ*/ - } - - return dwRtnValue; -} - -/* -* @brief ȡlinkβ -* @param wLinkId -* @return 0 ʧ -* >0 β -* by cgh 20250818 -*/ -UINT32 GetLinkSpecialEaBehindDis(const UINT16 wLinkId) -{ - UINT32 dwRtnValue = 0U; - UINT16 wIndex = 0U; - - wIndex = GetLinkIndexById(wLinkId); - - if ((0U < wIndex) && (LINK_SUM_MAX > wIndex)) - { - dwRtnValue = g_szLinkConfigData[wIndex].dwBehindDis; - } - else - { - ; /*δ󣬷Ĭֵ*/ - } - - return dwRtnValue; -} - -/** -* @brief ݲѯȡlinkʣƫ -* @param struct_PathPoint pPoint LINKϢ -* @param UINT8 chDir ѯ -* @return UINT32_MAX ȡʧ -* ȡֵ linkʣƫ -* by cgh 20250819 -*/ -UINT32 GetRelDirLinkOffset(struct_PathPoint pPoint, UINT8 chDir) -{ - UINT32 dwRtn = UINT32_MAX; - - if ((DIR_SAME == chDir) || (DIR_CONVERT == chDir)) - { - dwRtn = GetLinkLengthById(pPoint.wLinkId); - if (UINT32_MAX != dwRtn) - { - if (((0U == pPoint.dwOffset) && (DIR_SAME == chDir)) - || ((dwRtn == pPoint.dwOffset) && (DIR_CONVERT == chDir))) - { - ; /*LINK*/ - } - else - { - if (DIR_SAME == chDir) - { - dwRtn -= pPoint.dwOffset; - } - else - { - dwRtn = pPoint.dwOffset; - } - } - } - else - { - ; - } - } - else - { - ; /*ʧ*/ - } - - return dwRtn; } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/Section/LinkConfigDataManage.h b/TSCP/src/APP/ciapp/Section/LinkConfigDataManage.h index 65efb29..0583327 100644 --- a/TSCP/src/APP/ciapp/Section/LinkConfigDataManage.h +++ b/TSCP/src/APP/ciapp/Section/LinkConfigDataManage.h @@ -88,9 +88,6 @@ typedef struct UINT8 chRelPhySecIsAGorBG; /*LinkΪAG/BG0x55 AG;0xAA BG;0xFF AGBG*/ UINT8 chExistRelCGFlag; /*LINKǷڹCG־*/ UINT16 wBGLinkRelAGLink; /*BGlinkAGlink*/ - UINT16 wLinkSpecialEa; /*LINK*/ - UINT32 dwFrontDis; /*LINKͷǰ*/ - UINT32 dwBehindDis; /*LINKβ*/ }LinkDataConfigStru; typedef struct @@ -731,43 +728,6 @@ UINT8 GetLinkTmlAxleSecOccSta(const UINT16 wLinkId); */ UINT8 GetAgLinkExistRelCgFlag(const UINT16 wLinkId); -/* -* @brief ȡlink -* @param wLinkId -* @return 0 ߱ -* >0 -* by cgh 20250818 -*/ -UINT16 GetLinkSpecialEaAttr(const UINT16 wLinkId); - -/* -* @brief ȡlinkͷǰ -* @param wLinkId -* @return 0 ʧ -* >0 ͷǰ -* by cgh 20250818 -*/ -UINT32 GetLinkSpecialEaFrontDis(const UINT16 wLinkId); - -/* -* @brief ȡlinkβ -* @param wLinkId -* @return 0 ʧ -* >0 β -* by cgh 20250818 -*/ -UINT32 GetLinkSpecialEaBehindDis(const UINT16 wLinkId); - -/** -* @brief ݲѯȡlinkʣƫ -* @param struct_PathPoint pPoint LINKϢ -* @param UINT8 chDir ѯ -* @return UINT32_MAX ȡʧ -* ȡֵ linkʣƫ -* by cgh 20250819 -*/ -UINT32 GetRelDirLinkOffset(struct_PathPoint pPoint, UINT8 chDir); - #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/Section/LogicSectionDataManage.c b/TSCP/src/APP/ciapp/Section/LogicSectionDataManage.c index 0f5bed2..5dbedea 100644 --- a/TSCP/src/APP/ciapp/Section/LogicSectionDataManage.c +++ b/TSCP/src/APP/ciapp/Section/LogicSectionDataManage.c @@ -4967,15 +4967,14 @@ void SetLogSecLogLockState(const UINT16 wLogSectionId, const UINT8 chLogLockStat LogicSectionDataStru[wBufIndex].LogSecLogLockDir = chLogLockDir; } else if (LOG_SECTION_LOGLOCK_EXCEPT == chLogLockState) - { + { /**/ LogicSectionDataStru[wBufIndex].LogSecLogLockState = chLogLockState; LogicSectionDataStru[wBufIndex].LogSecLogLockDir = chLogLockDir; - - SetLogSecRelAllLogRouteState(wLogSectionId); } else { - ; /*ɴ֧*/ + LogicSectionDataStru[wBufIndex].LogSecLogLockState = chLogLockState; + LogicSectionDataStru[wBufIndex].LogSecLogLockDir = chLogLockDir; } } else @@ -5731,43 +5730,4 @@ void SetLogSecRLockRouteIdHlht(UINT16 wLogSectionId, const UINT16 routeId) { /**/ } -} - -/* -* ߼ι߼·״̬ -* ˵ const UINT16 wLogSectionId, ߼ID -* ֵ VOID -* by cgh 20250416 -*/ -void SetLogSecRelAllLogRouteState(const UINT16 wLogSectionId) -{ - UINT16 wBufIndex = 0U; /*±*/ - UINT8 ii = 0U; - UINT8 chLogSecLockBelLogRouteSum = 0U;/*߼߼·*/ - LogSecLockBelLogRouteStruct* szLogSecLockBelLogRouteData = NULL;/*߼߼·*/ - - wBufIndex = GetlogSectionBufIndex(wLogSectionId); /*ȡ±*/ - if (LOGIC_SECTION_SUM_MAX > wBufIndex) - { - /*ȡ߼߼·*/ - chLogSecLockBelLogRouteSum = GetLogSecLockBelLogRouteSum(wLogSectionId); - szLogSecLockBelLogRouteData = GetLogSecLockBelLogRouteData(wLogSectionId); - if (NULL != szLogSecLockBelLogRouteData) - { - for (ii = 0U; ii < chLogSecLockBelLogRouteSum; ii++) - { - (void)SetLogicalRouteState(szLogSecLockBelLogRouteData[ii].wLogSecLockBelLogRouteId, ROUTE_LOGICAL_STATE_UNLOCKDELAY); - /*߼·״̬ʱʼںţʱȻΪ0˴ͬ*/ - SetLogRouteDelayErrLockStartCyc(szLogSecLockBelLogRouteData[ii].wLogSecLockBelLogRouteId, 0U); - } - } - else - { - ; /*ִ*/ - } - } - else - { - - } } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/Section/LogicSectionDataManage.h b/TSCP/src/APP/ciapp/Section/LogicSectionDataManage.h index 9402c7a..f76d995 100644 --- a/TSCP/src/APP/ciapp/Section/LogicSectionDataManage.h +++ b/TSCP/src/APP/ciapp/Section/LogicSectionDataManage.h @@ -1294,14 +1294,6 @@ void SetLogSecPLockRouteIdHlht(UINT16 wLogSectionId, const UINT16 routeId); */ void SetLogSecRLockRouteIdHlht(UINT16 wLogSectionId, const UINT16 routeId); -/* -* ߼ι߼·״̬ -* ˵ const UINT16 wLogSectionId, ߼ID -* ֵ VOID -* by cgh 20250416 -*/ -void SetLogSecRelAllLogRouteState(const UINT16 wLogSectionId); - #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/Section/PhysicalSectionConfigDataManage.c b/TSCP/src/APP/ciapp/Section/PhysicalSectionConfigDataManage.c index c0ec92e..1358e09 100644 --- a/TSCP/src/APP/ciapp/Section/PhysicalSectionConfigDataManage.c +++ b/TSCP/src/APP/ciapp/Section/PhysicalSectionConfigDataManage.c @@ -1565,49 +1565,4 @@ void SetPhyPossibleArbTag(const UINT16 wPhySecId, UINT8 chArbTag) { PhysicalSectionConfigDataStru[bufIndex].chArbPossibleTag = chArbTag; } -} - -/* -* ͨϵͳŻȡID -* ˵ const UINT8 chAxleId ϵͳID -* ˵ const UINT16 wIndexInAxle, ϵͳ -* ֵ 0:ʧ -* >0:ID -* by cgh 20250415 -*/ -UINT16 GetPhyIdByIndexInAxle(const UINT8 chAxleId, const UINT16 wIndexInAxle) -{ - UINT16 wPhyCurNum = 0U; /*ǰ*/ - UINT16 ii = 0U; - UINT16 wCurPhyId = 0U; /*ǰID*/ - UINT16 wPhyIndex = 0U; /**/ - UINT16 wReval = 0U; /*صID*/ - - if (AXIS_TO_CI_SECTION_SUM_MAX > wIndexInAxle) - { - wPhyCurNum = GetPhySecCurSum(); /**/ - - for (ii = 0U; ii < wPhyCurNum; ii++) - { - wCurPhyId = GetPhySecId(ii); - wPhyIndex = GetPhySecConfigBufIndex(wCurPhyId);/*±*/ - - if ((PhysicalSectionConfigDataStru[wPhyIndex].wIndexInAxle == wIndexInAxle) - && (PhysicalSectionConfigDataStru[wPhyIndex].BelongAxleSysID == chAxleId)) - { - wReval = wCurPhyId; - break; - } - else - { - /**/ - } - } - } - else - { - /**/ - } - - return wReval; } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/Section/PhysicalSectionConfigDataManage.h b/TSCP/src/APP/ciapp/Section/PhysicalSectionConfigDataManage.h index fdb6af5..c60f321 100644 --- a/TSCP/src/APP/ciapp/Section/PhysicalSectionConfigDataManage.h +++ b/TSCP/src/APP/ciapp/Section/PhysicalSectionConfigDataManage.h @@ -72,7 +72,6 @@ typedef struct S_PhysicalSectionConfigData UINT16 AdjacentPhySecBuf[PHYSEC_ADJACENT_SEC_SUM_MAX]; /*ֱ*/ UINT16 IndirectNearPhySecBuf[PHYSEC_INDIRECTNEAR_SEC_SUM_MAX]; /*λڼڽ*/ UINT8 chArbPossibleTag; /*ǷArb*/ - UINT16 wIndexInAxle; /*ڼϵͳе*/ } PhysicalSectionConfigDataStruct; @@ -501,17 +500,6 @@ UINT8 GetPhyPossibleArbTag(const UINT16 wPhySecId); * Create fan 20240822 */ void SetPhyPossibleArbTag(const UINT16 wPhySecId, UINT8 chArbTag); - -/* -* ͨϵͳŻȡID -* ˵ const UINT8 chAxleId ϵͳID -* ˵ const UINT16 wIndexInAxle, ϵͳ -* ֵ 0:ʧ -* >0:ID -* by cgh 20250415 -*/ -UINT16 GetPhyIdByIndexInAxle(const UINT8 chAxleId, const UINT16 wIndexInAxle); - #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/Section/PhysicalSectionDataManage.c b/TSCP/src/APP/ciapp/Section/PhysicalSectionDataManage.c index 6ac7be5..5e17407 100644 --- a/TSCP/src/APP/ciapp/Section/PhysicalSectionDataManage.c +++ b/TSCP/src/APP/ciapp/Section/PhysicalSectionDataManage.c @@ -2665,7 +2665,7 @@ UINT16 GetZFWRelayId_UseVirCI(const UINT16 ciId,UINT8 virCIid) * ȡָIDεǰCTUTռ״̬ * ˵ const UINT16 phySecId, ID * ֵ 0: ȡʧ -* 0x55 ޳ռ 0xaaUT 0xbbCT +* >0: ǰռ״̬ */ UINT8 GetPhySecCurCtOrUtOccupyState(const UINT16 phySecId) { @@ -2678,7 +2678,6 @@ UINT8 GetPhySecCurCtOrUtOccupyState(const UINT16 phySecId) UINT16 ii = 0u; /*α*/ UINT16 kk = 0u; /*α*/ UINT8 retVal = CI_ERROR; - UINT8 chFindOccupy = CI_ERROR; axisSecSum = GetPAxisSectionSum(phySecId); /*ȡΰļĿ*/ axisSecIdBuf = GetPAxisSectionIdBuf(phySecId); /*ȡΰļ*/ @@ -2696,13 +2695,11 @@ UINT8 GetPhySecCurCtOrUtOccupyState(const UINT16 phySecId) if (LOGICSECTION_OCCUPY_CT == occupyState) { retVal = LOGICSECTION_OCCUPY_CT; - chFindOccupy = CI_SUCCESS; break; } else if(LOGICSECTION_OCCUPY_UT == occupyState) { retVal = LOGICSECTION_OCCUPY_UT; - chFindOccupy = CI_SUCCESS; } else { @@ -2715,15 +2712,7 @@ UINT8 GetPhySecCurCtOrUtOccupyState(const UINT16 phySecId) break; } } - if (CI_ERROR == chFindOccupy) - { - /*м߼ξռ*/ - retVal = LOGICSECTION_OCCUPY_NO; - } - else - { - ;/*ctutռ*/ - } + return retVal; } @@ -2908,176 +2897,6 @@ UINT8 GetPhySecPreResetState(const UINT16 phySecId) return retVal; } -/* -* ָIDεǰֱӸλ״̬ -* ˵ const UINT16 wPhySectionId, ID -* const UINT8 chResetState, ֱӸλ״̬ -* ֵ -* by cgh 20250326 -*/ -void SetPhySecDirectResetState(const UINT16 wPhySectionId, const UINT8 chResetState) -{ - UINT16 wBufIndex = 0U; /*±*/ - - wBufIndex = GetPhySecConfigBufIndex(wPhySectionId); /*ȡ±*/ - - if (wBufIndex < PHYSICAL_SECTION_SUM_MAX) - { - if ((PHYSICAL_DIRECT_RESET_YES == chResetState) || (PHYSICAL_DIRECT_RESET_NO == chResetState)) - { - /*ֱӸλ״̬*/ - PhysicalSectionDataStru[wBufIndex].chDirectResetRst = chResetState; - } - else - { - /**/ - } - } - else - { - /**/ - } -} - -/* -* ȡָIDμֱӸλ״̬ -* ˵ const UINT16 wPhySecId, ID -* ֵ 0: ȡʧ -* >0: ǰֱӸλ״̬ -* by cgh 20250326 -*/ -UINT8 GetPhySecDirectResetState(const UINT16 wPhySecId) -{ - UINT16 wBufIndex = 0U; /*±*/ - UINT8 chRetVal = CI_ERROR; - - wBufIndex = GetPhySecConfigBufIndex(wPhySecId); /*ȡ±*/ - - if (wBufIndex < PHYSICAL_SECTION_SUM_MAX) - { - chRetVal = PhysicalSectionDataStru[wBufIndex].chDirectResetRst; /*ȡμֱӸλ״̬*/ - } - else - { - chRetVal = CI_ERROR; - } - - return chRetVal; -} - -/* -* ָIDεǰԤλ״̬ -* ˵ const UINT16 wPhySectionId, ID -* const UINT8 chPreResetBack, Ԥλ״̬ -* ֵ -* by cgh 20250326 -*/ -void SetPhySecPreResetBack(const UINT16 wPhySectionId, const UINT8 chPreResetBack) -{ - UINT16 wBufIndex = 0U; /*±*/ - - wBufIndex = GetPhySecConfigBufIndex(wPhySectionId); /*ȡ±*/ - - if (wBufIndex < PHYSICAL_SECTION_SUM_MAX) - { - if ((PHY_RESET_BACK_RECIVE_YES == chPreResetBack) || (PHY_RESET_BACK_RECIVE_NO == chPreResetBack)) - { - PhysicalSectionDataStru[wBufIndex].chPreResetBack = chPreResetBack; /*Ԥλ״̬*/ - } - else - { - /**/ - } - } - else - { - /**/ - } -} - -/* -* ȡָIDμԤλ״̬ -* ˵ const UINT16 wPhySecId, ID -* ֵ 0: ȡʧ -* >0: ǰԤλ״̬ -* by cgh 20250326 -*/ -UINT8 GetPhySecPreResetBack(const UINT16 wPhySecId) -{ - UINT16 wBufIndex = 0U; /*±*/ - UINT8 chRetVal = CI_ERROR; - - wBufIndex = GetPhySecConfigBufIndex(wPhySecId); /*ȡ±*/ - - if (wBufIndex < PHYSICAL_SECTION_SUM_MAX) - { - chRetVal = PhysicalSectionDataStru[wBufIndex].chPreResetBack; /*ȡμԤλ״̬*/ - } - else - { - chRetVal = CI_ERROR; - } - - return chRetVal; -} - -/* -* ָIDεǰֱӸλ״̬ -* ˵ const UINT16 wPhySectionId, ID -* const UINT8 chResetBack, ֱӸλ״̬ -* ֵ -* by cgh 20250326 -*/ -void SetPhySecDirectResetBack(const UINT16 wPhySectionId, const UINT8 chResetBack) -{ - UINT16 wBufIndex = 0U; /*±*/ - - wBufIndex = GetPhySecConfigBufIndex(wPhySectionId); /*ȡ±*/ - - if (wBufIndex < PHYSICAL_SECTION_SUM_MAX) - { - if ((PHY_RESET_BACK_RECIVE_YES == chResetBack) || (PHY_RESET_BACK_RECIVE_NO == chResetBack)) - { - /*ֱӸλ״̬*/ - PhysicalSectionDataStru[wBufIndex].chDirectResetBack = chResetBack; - } - else - { - /**/ - } - } - else - { - /**/ - } -} - -/* -* ȡָIDμֱӸλ״̬ -* ˵ const UINT16 wPhySecId, ID -* ֵ 0: ȡʧ -* >0: ǰֱӸλ״̬ -* by cgh 20250326 -*/ -UINT8 GetPhySecDirectResetBack(const UINT16 wPhySecId) -{ - UINT16 wBufIndex = 0U; /*±*/ - UINT8 chRetVal = CI_ERROR; - - wBufIndex = GetPhySecConfigBufIndex(wPhySecId); /*ȡ±*/ - - if (wBufIndex < PHYSICAL_SECTION_SUM_MAX) - { - chRetVal = PhysicalSectionDataStru[wBufIndex].chDirectResetBack; /*ȡμֱӸλ״̬*/ - } - else - { - chRetVal = CI_ERROR; - } - - return chRetVal; -} - /**********JumpLockStateToZC******/ /* @@ -4030,11 +3849,11 @@ void SetPhySecInHumidRailFlag(const UINT16 phySectionId, const UINT8 cInHumidRai /* * ʪʪ־ -* ˵const UINT16 wAreaHumidRailId ʪID +* ˵const UINT32 dwAreaHumidRailId ʪID * ֵ * Created By LQ 2024.09.20 */ -void SetPlatFormRelPSHumidRailFlag(const UINT16 wAreaHumidRailId) +void SetPlatFormRelPSHumidRailFlag(const UINT32 dwAreaHumidRailId) { UINT8 ii = 0U; UINT16 jj = 0U; @@ -4048,10 +3867,10 @@ void SetPlatFormRelPSHumidRailFlag(const UINT16 wAreaHumidRailId) UINT8 cPhySecBelongCiId = 0U; /*SPKSε*/ UINT8 cLocalCiId = 0U; /*CI ID*/ - if (0U != wAreaHumidRailId) + if (0U != dwAreaHumidRailId) { cLocalCiId = GetSystemParaLocalCiId(); - cPlatFormRelSpksNum = GetPlatFormRelSpksNum(wAreaHumidRailId, szPlatFormRelSpksId); /*ȡվ̨SPKS*/ + cPlatFormRelSpksNum = GetPlatFormRelSpksNum((UINT16)dwAreaHumidRailId, szPlatFormRelSpksId); /*ȡվ̨SPKS*/ if (CI_ERROR != cPlatFormRelSpksNum) { @@ -4188,49 +4007,4 @@ void SetSecColOccupyStartCycNum(const UINT16 phySectionId, const UINT32 startCyc { /**/ } -} - -/* -* ûͨCIָIDCT/UTռ״̬ -* ˵const UINT16 phySecId, ID - const UINT8 flag ֮ǰCTUTռ״̬ -* ֵ -* Created By LQ 2025.05.28 -*/ -void SetHlhtPhySecCtOrUtOccState(const UINT16 phySecId, const UINT8 flag) -{ - UINT16 bufIndex = 0u; /*±*/ - UINT32 dwCurCycNum = 0U; - - bufIndex = GetPhySecConfigBufIndex(phySecId); /*ȡ±*/ - - if ((bufIndex < PHYSICAL_SECTION_SUM_MAX) && ((LOGICSECTION_OCCUPY_UT == flag) || (LOGICSECTION_OCCUPY_CT == flag) || (LOGICSECTION_OCCUPY_NO == flag))) - { - /*CT/UTռʼ*/ - if (LOGICSECTION_OCCUPY_NO == flag) - { - PhysicalSectionDataStru[bufIndex].UtOrCtOccuStartCycNum = 0U; /*УCT/UTռʼ*/ - } - else - { - if ((PhysicalSectionDataStru[bufIndex].UtOrCtOccFlag != flag) - && ((PHYSICAL_SECTION_LOCK_NORMAL == PhysicalSectionDataStru[bufIndex].LockState) || (PHYSICAL_SECTION_LOCK_EXCEPT == PhysicalSectionDataStru[bufIndex].LockState))) - { - dwCurCycNum = Get2oo2CurCycleNum(); - PhysicalSectionDataStru[bufIndex].UtOrCtOccuStartCycNum = dwCurCycNum; /*CT/UTռʼ*/ - } - else - { - /**/ - } - } - - /*CT/UTռ״̬*/ - PhysicalSectionDataStru[bufIndex].UtOrCtOccFlag = flag; - - } - else - { - /**/ - } } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/Section/PhysicalSectionDataManage.h b/TSCP/src/APP/ciapp/Section/PhysicalSectionDataManage.h index e9eaa03..9ed0d12 100644 --- a/TSCP/src/APP/ciapp/Section/PhysicalSectionDataManage.h +++ b/TSCP/src/APP/ciapp/Section/PhysicalSectionDataManage.h @@ -70,9 +70,6 @@ typedef struct S_PhysicalSectionDataStruct UINT8 StopCheckFlag; /*ֹͣ־(δ/) (ֶ̬)*/ UINT8 JumpLockState; /*Ծ״̬ (ֶ̬)*/ UINT8 PhySecPreResetState; /*Ԥλ״̬ (ֶ̬)*/ - UINT8 chPreResetBack; /*Ԥλ*/ - UINT8 chDirectResetRst; /*ֱӸλ*/ - UINT8 chDirectResetBack; /*ֱӸλ*/ UINT32 SecJumpDelayUnlockStartCycNum; /*Ծʱʼ (ֶ̬)*/ UINT8 JumpLockDelayUnlockFlag; /*Ծʱñ־ֶ̬Σ*/ UINT32 LockDelayStartCycNum; /* ʱʼں(ֶ̬) */ @@ -680,7 +677,7 @@ UINT32 GetSecUtOrCtOccuStartCycNum(const UINT16 phySectionId); * ȡָIDεǰCTUTռ״̬ * ˵ const UINT16 phySecId, ID * ֵ 0: ȡʧ -* 0x55 ޳ռ 0xaaUT 0xbbCT +* >0: ǰռ״̬ */ UINT8 GetPhySecCurCtOrUtOccupyState(const UINT16 phySecId); @@ -726,60 +723,6 @@ void SetPhySecPreResetState(const UINT16 phySectionId, const UINT8 preResetState */ UINT8 GetPhySecPreResetState(const UINT16 phySecId); -/* -* ָIDεǰֱӸλ״̬ -* ˵ const UINT16 wPhySectionId, ID -* const UINT8 chResetState, ֱӸλ״̬ -* ֵ -* by cgh 20250326 -*/ -void SetPhySecDirectResetState(const UINT16 wPhySectionId, const UINT8 chResetState); - -/* -* ȡָIDμֱӸλ״̬ -* ˵ const UINT16 wPhySecId, ID -* ֵ 0: ȡʧ -* >0: ǰֱӸλ״̬ -* by cgh 20250326 -*/ -UINT8 GetPhySecDirectResetState(const UINT16 wPhySecId); - -/* -* ָIDεǰԤλ״̬ -* ˵ const UINT16 wPhySectionId, ID -* const UINT8 chPreResetBack, Ԥλ״̬ -* ֵ -* by cgh 20250326 -*/ -void SetPhySecPreResetBack(const UINT16 wPhySectionId, const UINT8 chPreResetBack); - -/* -* ȡָIDμԤλ״̬ -* ˵ const UINT16 wPhySecId, ID -* ֵ 0: ȡʧ -* >0: ǰԤλ״̬ -* by cgh 20250326 -*/ -UINT8 GetPhySecPreResetBack(const UINT16 wPhySecId); - -/* -* ָIDεǰֱӸλ״̬ -* ˵ const UINT16 wPhySectionId, ID -* const UINT8 chResetBack, ֱӸλ״̬ -* ֵ -* by cgh 20250326 -*/ -void SetPhySecDirectResetBack(const UINT16 wPhySectionId, const UINT8 chResetBack); - -/* -* ȡָIDμֱӸλ״̬ -* ˵ const UINT16 wPhySecId, ID -* ֵ 0: ȡʧ -* >0: ǰֱӸλ״̬ -* by cgh 20250326 -*/ -UINT8 GetPhySecDirectResetBack(const UINT16 wPhySecId); - /* * ȡָIDθZCԾ״̬ @@ -1040,11 +983,11 @@ void SetPhySecInHumidRailFlag(const UINT16 phySectionId, const UINT8 cInHumidRai /* * ʪʪ־ -* ˵const UINT16 dwAreaHumidRailId ʪID +* ˵const UINT32 dwAreaHumidRailId ʪID * ֵ * Created By LQ 2024.09.20 */ -void SetPlatFormRelPSHumidRailFlag(const UINT16 dwAreaHumidRailId); +void SetPlatFormRelPSHumidRailFlag(const UINT32 dwAreaHumidRailId); /* * ȡָIDιǷ߱ARB״̬ @@ -1070,15 +1013,6 @@ UINT32 GetSecColOccupyStartCycNum(const UINT16 phySectionId); */ void SetSecColOccupyStartCycNum(const UINT16 phySectionId, const UINT32 startCycNum); -/* -* ûͨCIָIDCT/UTռ״̬ -* ˵const UINT16 phySecId, ID - const UINT8 flag ֮ǰCTUTռ״̬ -* ֵ -* Created By LQ 2025.05.28 -*/ -void SetHlhtPhySecCtOrUtOccState(const UINT16 phySecId, const UINT8 flag); - #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/Section/SectionDefine.h b/TSCP/src/APP/ciapp/Section/SectionDefine.h index 6c113cf..93f8746 100644 --- a/TSCP/src/APP/ciapp/Section/SectionDefine.h +++ b/TSCP/src/APP/ciapp/Section/SectionDefine.h @@ -24,7 +24,7 @@ #define AXIS_INCLUDE_LINK_SUM_MAX ((UINT16)5) /*ΰLINKֵ*/ #define LOGSEC_INCLUDE_LINK_SUM_MAX ((UINT16)8) /*߼ΰLINKֵ*/ #define PHYSICAL_INCLUDE_SWITCH_SUM_MAX ((UINT16)10) /*ΰĵֵ*/ -#define SEC_INVASECT_N_CONDSWIT_SUM_MAX ((UINT16)20) /*ΰֵ*/ +#define SEC_INVASECT_N_CONDSWIT_SUM_MAX ((UINT16)12) /*ΰֵ*/ #define LOGSEC_INV_N_CONDSWIT_SUM_MAX ((UINT16)8) /*߼ΰֵ*/ #define LINK_SUM_MAX ((UINT16)1300) /*LINKֵ*//* add 2022.02.28 */ #define LOGSEC_INCLUDE_AXIS_SUM_MAX ((UINT16)8) /*߼ΰļֵ*//* add 20220919 TIOC5.0*/ @@ -204,10 +204,6 @@ #define PHYSICAL_SECTION_PRE_RESET_YES ((UINT8)0x55) /*Ԥλ*/ #define PHYSICAL_SECTION_PRE_RESET_NO ((UINT8)0xaa) /*δԤλ*/ -/*λ״̬*/ -#define PHYSICAL_DIRECT_RESET_YES ((UINT8)0x55U) /*ֱӸλ*/ -#define PHYSICAL_DIRECT_RESET_NO ((UINT8)0xaaU) /*δֱӸλ*/ - #define AXIS_SECTION_JUMPLOCK_APPLY_NO ((UINT8)0x55) /*Ծ*/ #define AXIS_SECTION_JUMPLOCK_APPLY_YES ((UINT8)0xAA) /*Ծ*/ @@ -356,12 +352,4 @@ #define PHY_SECTION_ARB_NO ((UINT8)0x55) /*δARB*/ #define PHY_SECTION_ARB_YES ((UINT8)0xaa) /*ARB*/ -/*Ḵλ*/ -#define PHY_RESET_BACK_RECIVE_YES ((UINT8)0x55U) /*յḴλ*/ -#define PHY_RESET_BACK_RECIVE_NO ((UINT8)0xaaU) /*δյḴλ*/ - -/*CBTC*/ -#define AXIS_SEC_CBTC_PROPERTY_YES ((UINT8)0x55) /*ξCBTCԣlinkCBTCԣ*/ -#define AXIS_SEC_CBTC_PROPERTY_NO ((UINT8)0xaa) /*βCBTCԣlinkCBTCԣ*/ - #endif diff --git a/TSCP/src/APP/ciapp/Signal/SignalDataManage.c b/TSCP/src/APP/ciapp/Signal/SignalDataManage.c index 8f50e36..a9072a4 100644 --- a/TSCP/src/APP/ciapp/Signal/SignalDataManage.c +++ b/TSCP/src/APP/ciapp/Signal/SignalDataManage.c @@ -1574,13 +1574,12 @@ UINT8 SetNearCISignalCurColor(const UINT16 signalId, const UINT8 curColor) { UINT16 bufIndex = 0u; /*±*/ UINT8 localCi = 0u;/*ID*/ - UINT8 belongCiId = 0u;/*źŻID*/ + UINT8 belongCiId = 0u;/*·ID*/ UINT8 reVal = CI_ERROR; - - bufIndex = GetSignalConfigBufIndex(signalId); /*ȡźŻ±*/ + + bufIndex = GetSignalConfigBufIndex(signalId); /*ȡ±*/ localCi = GetSystemParaLocalCiId();/*ID*/ belongCiId = GetSignalBelongCiId(signalId);/*ȡźŻ*/ - if(localCi !=belongCiId) { if (bufIndex < SIGNAL_SUM_MAX) @@ -1591,7 +1590,7 @@ UINT8 SetNearCISignalCurColor(const UINT16 signalId, const UINT8 curColor) } else { - reVal = CI_ERROR; + reVal = CI_ERROR; } } else @@ -1600,7 +1599,6 @@ UINT8 SetNearCISignalCurColor(const UINT16 signalId, const UINT8 curColor) } return reVal; } - /* * ȡָIDźŻ֮ǰʾɫ * ˵ const UINT16 signalId, źŻID @@ -1686,10 +1684,12 @@ void SetSignalCurDriveColor(const UINT16 signalId, const UINT8 driveColor) UINT8 localCiPattern = CI_PATTERN_TRADITIONAL; UINT8 chDriveColor = SIGNAL_DRIVECOLOUR_RED; UINT8 funSwitchGreenYellow = GetCiFunctionSwitchConfig(CI_FUNCTION_SWITCH_SHOW_SIGNAL_GreenYellow);/*ʾ̻ƹܿǷ*/ + bufIndex = GetSignalConfigBufIndex(signalId); /*ȡźŻ±*/ curDrvColor = GetSignalCurDriveColor(signalId);/*ȡǰɫ*/ sigDrvEnable = GetSignalDrvEnable(signalId);/*ȡźŻǷ־*/ sigVirtAttr = GetSignalVirtualAttr(signalId);/*ȡźŻ*/ + localCiPattern = GetLocalCiPattern(); if (CI_PATTERN_FULL_ELECTRONIC == localCiPattern) { @@ -1788,8 +1788,6 @@ void SetSignalCurDriveColor(const UINT16 signalId, const UINT8 driveColor) {/*źɫIJҸɫЧʱ,ɫʼں,±֮ǰɫ.δΪ˽̻ʱ,ڼֻƵƵ*/ SignalDataStru[bufIndex].DriveNewSigStartCycNum = Get2oo2CurCycleNum(); SignalDataStru[bufIndex].OldDriveColor = SignalDataStru[bufIndex].PreDriveColor; - /*OCɼȫ ɼȫʼں*/ - SetOcSignalStartCycNum(signalId, 0U); } else { @@ -1884,26 +1882,6 @@ UINT8 GetSignalWhiteDsBreakFlag(const UINT16 signalId) return reVal; } -/* -* ȡָIDźŻ˿˿־ -* ˵ const UINT16 signalId, źŻID -* ֵ 0: ȡʧ -* >0: ˿־ -*/ -UINT8 GetSignalBlueDsBreakFlag(const UINT16 signalId) -{ - UINT16 bufIndex = 0u; /*±*/ - UINT8 reVal = CI_ERROR; - - bufIndex = GetSignalConfigBufIndex(signalId); /*ȡ±*/ - - if (SIGNAL_SUM_MAX > bufIndex) - { - reVal = SignalDataStru[bufIndex].BlueDsBreakFlag; - } - return reVal; -} - /* * ȡָIDźŻƵ˿˿־ * ˵ const UINT16 signalId, źŻID @@ -3616,7 +3594,7 @@ UINT8 RefreshSignalLightUpState(void) chFlag = GetSignalShine(wSignalId); if ((UINT16_MAX == wSignalId) - || (MAX_SIGNAL_LIGHTUPLINK_NUM < wSignalLightUpLinkIdSum) + || (UINT16_MAX == wSignalLightUpLinkIdSum) || (NULL == pSignalLightUpLinkIdBuff) || ((DIR_SAME != chDir) && (DIR_CONVERT != chDir))) { @@ -3644,7 +3622,6 @@ UINT8 RefreshSignalLightUpState(void) ; /*ûз任㣬DZ䷽*/ } } - else { ; /*linkⷽһlinkҪת*/ } @@ -3750,7 +3727,7 @@ UINT8 RefreshSignalLightUpState(void) chTransmitStat = GetCiTransmitState(CI_SYSTEM_TYPE_CI, chLinkOcId); dwLeftLen = dwDdLen - dwUsedLen; - if ((TRANSMIT_STATE_GOOD != chTransmitStat) || ((UINT32_MAX != strCfpOther.dwDis) && (dwLeftLen <= strCfpOther.dwDis))) + if ((TRANSMIT_STATE_GOOD != chTransmitStat) || ((UINT32_MAX != strCfpOther.dwDis) && (dwLeftLen < strCfpOther.dwDis))) { ; /*ͨŲãTIOCгռãѳƾ룬õνӽгID*/ } @@ -3802,7 +3779,7 @@ UINT8 RefreshSignalLightUpState(void) (void)SetSignalLightExtinctState(wSignalId, SIGNAL_LIGHT_EXTICT_STATE_NO); } - else if ((UINT32_MAX != strCfpOther.dwDis) && (dwLeftLen <= strCfpOther.dwDis)) + else if ((UINT32_MAX != strCfpOther.dwDis) && (dwLeftLen < strCfpOther.dwDis)) {/* TIOCгռãΪVBTCѳƾ룬 */ SetSignalLightUpTrainId(wSignalId, 0U); if (SIGNAL_LIGHT_CONFIG_CBTC_CLOSE != chFlag) /*RCгռãΪVBTCѳƾ룬źŻΪ̬ʱ߼*/ @@ -4050,20 +4027,21 @@ UINT16 GetEnginVehicCroCloBelongRoute(const UINT16 signalId) void OcSetSignalCurColor(const UINT16 signalId, const UINT8 curColor) { UINT16 bufIndex = 0u; /*±*/ + UINT8 signalColorValid = 0u; UINT8 signalState = 0u; + UINT8 funSwitchGreenYellow = GetCiFunctionSwitchConfig(CI_FUNCTION_SWITCH_SHOW_SIGNAL_GreenYellow);/*ʾ̻ƹܿǷ*/ bufIndex = GetSignalConfigBufIndex(signalId); /*ȡ±*/ if(SIGNAL_SUM_MAX > bufIndex) { /*źŻǰɫ*/ - if (SIGNAL_SHOWCOLOUR_REDFAULT == curColor) + SignalDataStru[bufIndex].CurColor = curColor; + signalColorValid = CheckSignalShowColorValid(curColor); + /*ɫЧ*/ + if(CI_SUCCESS == signalColorValid) { - SignalDataStru[bufIndex].CurColor = SIGNAL_SHOWCOLOUR_REDBREAK; - } - else - { - SignalDataStru[bufIndex].CurColor = curColor; + SignalDataStru[bufIndex].DsBreakFlag = SIGNAL_DS_BREAK_NO;/*δ˿־*/ } /*Բͬɫö˿״̬*/ switch(curColor) @@ -4105,7 +4083,14 @@ void OcSetSignalCurColor(const UINT16 signalId, const UINT8 curColor) case SIGNAL_SHOWCOLOUR_GREENCLOSE: case SIGNAL_SHOWCOLOUR_GREENYELLOWCLOSE: case SIGNAL_SHOWCOLOUR_YELLOWCLOSE: - /*ϴGetOcSignalColor*/ + if (FUNC_SWITCH_ON == funSwitchGreenYellow) + { + SignalDataStru[bufIndex].BlueDsBreakFlag = SIGNAL_DS_BREAK_NO;/*δ˿־*/ + } + else + { + ; /**/ + } break; /*ƶ*/ case SIGNAL_SHOWCOLOUR_YELLOWBREAK: @@ -4119,13 +4104,13 @@ void OcSetSignalCurColor(const UINT16 signalId, const UINT8 curColor) case SIGNAL_SHOWCOLOUR_REDBREAK: SignalDataStru[bufIndex].DsBreakFlag = SIGNAL_DS_BREAK_YES;/*ö˿־*/ break; - case SIGNAL_SHOWCOLOUR_REDFAULT: - /*ͨжϲ־*/ - break; /*׶*/ case SIGNAL_SHOWCOLOUR_WHITEBREAK: SignalDataStru[bufIndex].WhiteDsBreakFlag = SIGNAL_DS_BREAK_YES;/*ö˿־*/ break; + case SIGNAL_SHOWCOLOUR_BLUEBREAK: + SignalDataStru[bufIndex].BlueDsBreakFlag = SIGNAL_DS_BREAK_YES;/*ö˿־*/ + break; default: /*ɴ֧*/ break; @@ -5103,532 +5088,4 @@ void SetSignalInHumidRailFlag(const UINT16 signalId, const UINT8 cInHumidRailFla { /*μʧܣ*/ } -} - -/* -* ָIDźŻǰ˿־ -* ˵ const UINT16 signalId, źŻID -* ֵ -bit71ʾںƶ˿0δ˿ -bit61ʾƶ˿0δ˿ -bit5~bit411ʾ̵ƶ˿00δ˿Ƿ -bit3~bit211ʾڻƵƶ˿00δ˿Ƿ -bit1~bit911ʾڰ׵ƶ˿00δ˿Ƿ -* Created By fan 2025.05.06 -*/ -UINT8 GetSignalCurBreakFlag(const UINT16 signalId) -{ - UINT16 bufIndex = 0u; /*±*/ - UINT8 reVal = 0U; - UINT8 chDsFlag = 0U; - - bufIndex = GetSignalConfigBufIndex(signalId); /*ȡ±*/ - - if (bufIndex < SIGNAL_SUM_MAX) - { - /*ȡƶ˿־*/ - chDsFlag = GetSignalDsBreakFlag(signalId); - if (SIGNAL_DS_BREAK_YES== chDsFlag) - { - reVal |= SIGNAL_DS_BREAK_RED; - } - else - { - ; /**/ - } - /*ȡƶ˿־*/ - chDsFlag = GetSignalBlueDsBreakFlag(signalId); - if (SIGNAL_DS_BREAK_YES == chDsFlag) - { - reVal |= SIGNAL_DS_BREAK_BLUE; - } - else - { - ; /**/ - } - /*ȡ̵ƶ˿־*/ - chDsFlag = GetSignalGreenDsBreakFlag(signalId); - if (SIGNAL_DS_BREAK_YES == chDsFlag) - { - reVal |= SIGNAL_DS_BREAK_GREEN; - } - else - { - ; /**/ - } - /*ȡƵƶ˿־*/ - chDsFlag = GetSignalYellowDsBreakFlag(signalId); - if (SIGNAL_DS_BREAK_YES == chDsFlag) - { - reVal |= SIGNAL_DS_BREAK_YELLOW; - } - else - { - ; /**/ - } - /*ȡ׵ƶ˿־*/ - chDsFlag = GetSignalWhiteDsBreakFlag(signalId); - if (SIGNAL_DS_BREAK_YES == chDsFlag) - { - reVal |= SIGNAL_DS_BREAK_WHITE; - } - else - { - ; /**/ - } - } - else - { - reVal = 0xFFU; - } - return reVal; -} - -/* -* ָIDźŻǰ˿־ -* ˵ const UINT16 signalId, źŻID -* const UINT8 curDsFlag, Ͷ˿־ -* ֵ -* Created By fan 2025.05.06 -*/ -void SetNearCISignalCurDsFlag(const UINT16 signalId, const UINT8 curDsFlag) -{ - UINT16 bufIndex = 0u; /*±*/ - UINT8 localCi = 0u;/*ID*/ - UINT8 belongCiId = 0u;/*źŻID*/ - - bufIndex = GetSignalConfigBufIndex(signalId); /*ȡźŻ±*/ - localCi = GetSystemParaLocalCiId();/*ID*/ - belongCiId = GetSignalBelongCiId(signalId);/*ȡźŻ*/ - - if (localCi != belongCiId) - { - if (bufIndex < SIGNAL_SUM_MAX) - { - if (SIGNAL_DS_BREAK_RED == (curDsFlag & SIGNAL_DS_BREAK_RED)) - { - /*ںϱ־*/ - SignalDataStru[bufIndex].DsBreakFlag = SIGNAL_DS_BREAK_YES; - } - else - { - /*ϱ־*/ - SignalDataStru[bufIndex].DsBreakFlag = SIGNAL_DS_BREAK_NO; - } - - if (SIGNAL_DS_BREAK_BLUE == (curDsFlag & SIGNAL_DS_BREAK_BLUE)) - { - /*ϱ־*/ - SignalDataStru[bufIndex].BlueDsBreakFlag = SIGNAL_DS_BREAK_YES; - } - else - { - /*ϱ־*/ - SignalDataStru[bufIndex].BlueDsBreakFlag = SIGNAL_DS_BREAK_NO; - } - - if (SIGNAL_DS_BREAK_GREEN == (curDsFlag & SIGNAL_DS_BREAK_GREEN)) - { - /*̶ϱ־*/ - SignalDataStru[bufIndex].GreenDsBreakFlag = SIGNAL_DS_BREAK_YES; - } - else - { - /*̶ϱ־*/ - SignalDataStru[bufIndex].GreenDsBreakFlag = SIGNAL_DS_BREAK_NO; - } - - if (SIGNAL_DS_BREAK_YELLOW == (curDsFlag & SIGNAL_DS_BREAK_YELLOW)) - { - /*ڻƶϱ־*/ - SignalDataStru[bufIndex].YellowDsBreakFlag = SIGNAL_DS_BREAK_YES; - } - else - { - /*ƶϱ־*/ - SignalDataStru[bufIndex].YellowDsBreakFlag = SIGNAL_DS_BREAK_NO; - } - - if (SIGNAL_DS_BREAK_WHITE == (curDsFlag & SIGNAL_DS_BREAK_WHITE)) - { - /*ڰ׶ϱ־*/ - SignalDataStru[bufIndex].WhiteDsBreakFlag = SIGNAL_DS_BREAK_YES; - } - else - { - /*׶ϱ־*/ - SignalDataStru[bufIndex].WhiteDsBreakFlag = SIGNAL_DS_BREAK_NO; - } - } - else - { - ; /**/ - } - } - else - { - ; /**/ - } -} - -/* -* ûͨCIָIDźŻƶ˿־ -* ˵const UINT16 wSignalId źŻID -* const UINT8 cFlag ˿־ -* ֵ -* Created By LQ 2025.05.31 -*/ -void SetHlhtCiSignalBlueDsBreakFlag(const UINT16 wSignalId, const UINT8 cFlag) -{ - UINT16 bufIndex = 0U; /*±*/ - - bufIndex = GetSignalConfigBufIndex(wSignalId); /*ȡ±*/ - - if ((SIGNAL_SUM_MAX > bufIndex) && ((SIGNAL_DS_BREAK_NO == cFlag) || (SIGNAL_DS_BREAK_YES == cFlag))) - { - SignalDataStru[bufIndex].BlueDsBreakFlag = cFlag; /*ƶ˿־*/ - } - else - { - /**/ - } -} - -/* -* źŻ۳·ť״̬ -* ˵const UINT16 signalId, źŻID -* const UINT8 cFlag ·ť״̬ -* ֵ -* Created By LQ 2025.06.19 -*/ -void SetDetCutBtnState(const UINT16 signalId, const UINT8 cState) -{ - UINT16 bufIndex = 0U; /*±*/ - - bufIndex = GetSignalConfigBufIndex(signalId); /*ȡźŻ±*/ - - if (bufIndex < SIGNAL_SUM_MAX) - { - if ((SIGNAL_DETAIN_CUT_VALID_NO == cState) || (SIGNAL_DETAIN_CUT_VALID_YES == cState)) - { - SignalDataStru[bufIndex].cDetCutBtnState = cState; /*·ť״̬*/ - } - else - { - /**/ - } - } - else - { - /*±󣬲*/ - } -} - -/* -* ȡźŻ۳·ť״̬ -* ˵const UINT16 signalId źŻID -* ֵ0: ȡʧ -* >0: ȡɹ -* Created By LQ 2025.06.19 -*/ -UINT8 GetDetCutBtnState(const UINT16 signalId) -{ - UINT16 bufIndex = 0U; /*±*/ - UINT8 reVal = CI_ERROR; - - bufIndex = GetSignalConfigBufIndex(signalId); /*ȡźŻ±*/ - - if (bufIndex < SIGNAL_SUM_MAX) - { - if ((SIGNAL_DETAIN_CUT_VALID_NO == SignalDataStru[bufIndex].cDetCutBtnState) - || (SIGNAL_DETAIN_CUT_VALID_YES == SignalDataStru[bufIndex].cDetCutBtnState)) - { - reVal = SignalDataStru[bufIndex].cDetCutBtnState; - } - else - { - /**/ - } - } - else - { - /*±󣬲*/ - } - - return reVal; -} - -/* -* źŻ۳·ť -* ˵const UINT16 signalId źŻID -* const UINT32 startCycNum ں -* ֵ -* Created By LQ 2025.06.19 -*/ -void SetDetCutBtnPressCycNum(const UINT16 signalId, const UINT32 startCycNum) -{ - UINT16 bufIndex = 0U; /*±*/ - - bufIndex = GetSignalConfigBufIndex(signalId); /*ȡźŻ±*/ - - if (bufIndex < SIGNAL_SUM_MAX) - { - SignalDataStru[bufIndex].DetCutBtnPressCycNum = startCycNum; - } - else - { - /**/ - } -} - -/* -* ȡźŻ۳·ť -* ˵const UINT16 signalId źŻID -* ֵ źŻ۳·ť -* Created By LQ 2025.06.19 -*/ -UINT32 GetDetCutBtnPressCycNum(const UINT16 signalId) -{ - UINT16 bufIndex = 0U; /*±*/ - UINT32 reVal = CI_ERROR; - - bufIndex = GetSignalConfigBufIndex(signalId); /*ȡźŻ±*/ - - if (bufIndex < SIGNAL_SUM_MAX) - { - reVal = SignalDataStru[bufIndex].DetCutBtnPressCycNum; - } - else - { - /**/ - } - - return reVal; -} - -/* -* źŻ۳·ť󴥷 -* ˵const UINT16 signalId źŻID -* const UINT32 startCycNum ں -* ֵ -* Created By LQ 2025.06.19 -*/ -void SetDetCutBtnErrTrigPressCycNum(const UINT16 signalId, const UINT32 startCycNum) -{ - UINT16 bufIndex = 0U; /*±*/ - - bufIndex = GetSignalConfigBufIndex(signalId); /*ȡźŻ±*/ - - if (bufIndex < SIGNAL_SUM_MAX) - { - SignalDataStru[bufIndex].DetCutBtnErrTrigPressCycNum = startCycNum; - } - else - { - /*δ󣬲*/ - } -} - -/* -* ȡźŻ۳·ť󴥷 -* const UINT16 signalId źŻID -* -* ֵ źŻ۳·ť󴥷 -* Created By LQ 2025.06.19 -*/ -UINT32 GetDetCutBtnErrTrigPressCycNum(const UINT16 signalId) -{ - UINT16 bufIndex = 0U; /*±*/ - UINT32 reVal = CI_ERROR; - - bufIndex = GetSignalConfigBufIndex(signalId); /*ȡźŻ±*/ - - if (bufIndex < SIGNAL_SUM_MAX) - { - reVal = SignalDataStru[bufIndex].DetCutBtnErrTrigPressCycNum; - } - else - { - /*δ󣬷ʧ*/ - } - - return reVal; -} - -/* -* źŻ۳·ťϱ־ -* ˵const UINT16 signalId źŻID -* const UINT8 cBtnErrFlag źŻ۳·ťϱ־ -* ֵ -* Created By LQ 2025.06.19 -*/ -void SetSignalDetCutBtnErrFlag(const UINT16 signalId, const UINT8 cBtnErrFlag) -{ - UINT16 bufIndex = 0U; /*±*/ - - bufIndex = GetSignalConfigBufIndex(signalId); /*ȡźŻ±*/ - - if (bufIndex < SIGNAL_SUM_MAX) - { - if ((SIGNAL_ZFS_BTN_ERR_FLAG_NO == cBtnErrFlag) || (SIGNAL_ZFS_BTN_ERR_FLAG_YES == cBtnErrFlag)) - { - SignalDataStru[bufIndex].cDetCutBtnErrFlag = cBtnErrFlag; /*źŻ۳·ťϱ־*/ - } - else - { - /**/ - } - } - else - { - /**/ - } -} - -/* -* ȡźŻ۳·ťϱ־ -* ˵const UINT16 signalId źŻID -* ֵ0: ȡʧ -* >0: ȡɹ -* Created By LQ 2025.06.19 -*/ -UINT8 GetSignalDetCutBtnErrFlag(const UINT16 signalId) -{ - UINT16 bufIndex = 0U; /*±*/ - UINT8 reVal = CI_ERROR; - - bufIndex = GetSignalConfigBufIndex(signalId); /*ȡźŻ±*/ - - if (bufIndex < SIGNAL_SUM_MAX) - { - if ((SIGNAL_ZFS_BTN_ERR_FLAG_NO == SignalDataStru[bufIndex].cDetCutBtnErrFlag) || (SIGNAL_ZFS_BTN_ERR_FLAG_YES == SignalDataStru[bufIndex].cDetCutBtnErrFlag)) - { - reVal = SignalDataStru[bufIndex].cDetCutBtnErrFlag; - } - else - { - /**/ - } - } - else - { - /**/ - } - - return reVal; -} - -/* -* źŻ۳·ťɼ̵״̬ -* ˵const UINT16 signalId źŻID -* const UINT8 cRelayDownState ̵״̬ -* ֵ -* Created By LQ 2025.06.19 -*/ -void SetDetCutBtnRelayDownState(const UINT16 signalId, const UINT8 cRelayDownState) -{ - UINT16 bufIndex = 0U; /*±*/ - - bufIndex = GetSignalConfigBufIndex(signalId); /*ȡźŻ±*/ - - if (bufIndex < SIGNAL_SUM_MAX) - { - if ((SIGNAL_RELAY_ERROR_DOWN_NO == cRelayDownState) || (SIGNAL_RELAY_ERROR_DOWN_YES == cRelayDownState)) - { - SignalDataStru[bufIndex].cDetCutBtnRelayDownState = cRelayDownState; /*ÿ۳·ťɼ̵״̬*/ - } - else - { - /*״̬󣬲*/ - } - } - else - { - /*±󣬲*/ - } -} - -/* -* ȡźŻ۳·ťɼ̵״̬ -* ˵const UINT16 signalId źŻID -* ֵ 0 ȡʧ -* 0x55 -* 0xaa ͨ쳣 -* Created By LQ 2025.06.19 -*/ -UINT8 GetDetCutBtnRelayDownState(const UINT16 signalId) -{ - UINT16 bufIndex = 0U; /*±*/ - UINT8 reVal = CI_ERROR; - - bufIndex = GetSignalConfigBufIndex(signalId); /*ȡźŻ±*/ - - if (bufIndex < SIGNAL_SUM_MAX) - { - if ((SIGNAL_RELAY_ERROR_DOWN_NO == SignalDataStru[bufIndex].cDetCutBtnRelayDownState) - || (SIGNAL_RELAY_ERROR_DOWN_YES == SignalDataStru[bufIndex].cDetCutBtnRelayDownState)) - { - reVal = SignalDataStru[bufIndex].cDetCutBtnRelayDownState; - } - else - { - /*״̬󣬷0ʧ*/ - } - } - else - { - /*±󣬷0ʧ*/ - } - - return reVal; -} - -/* -* źŻ۳ť2 -* const UINT16 signalId źŻID -* const UINT32 startCycNum ں -* -* ֵ -* Created By LQ 2025.06.26 -*/ -void SetDetainSndBtnPressCycNum(const UINT16 signalId, const UINT32 startCycNum) -{ - UINT16 bufIndex = 0u; /*±*/ - - bufIndex = GetSignalConfigBufIndex(signalId); /*ȡźŻ±*/ - - if (bufIndex < SIGNAL_SUM_MAX) - { - SignalDataStru[bufIndex].DetainSndBtnPressCycNum = startCycNum; - } - else - { - /**/ - } -} - -/* -* ȡźŻ۳ť2 -* const UINT16 signalId źŻID -* -* ֵźŻ۳ť2 -* Created By LQ 2025.06.26 -*/ -UINT32 GetDetainSndBtnPressCycNum(const UINT16 signalId) -{ - UINT16 bufIndex = 0u; /*±*/ - UINT32 reVal = CI_ERROR; - - bufIndex = GetSignalConfigBufIndex(signalId); /*ȡźŻ±*/ - - if (bufIndex < SIGNAL_SUM_MAX) - { - reVal = SignalDataStru[bufIndex].DetainSndBtnPressCycNum; - } - else - { - /**/ - } - - return reVal; } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/Signal/SignalDataManage.h b/TSCP/src/APP/ciapp/Signal/SignalDataManage.h index 774c07c..1e667d4 100644 --- a/TSCP/src/APP/ciapp/Signal/SignalDataManage.h +++ b/TSCP/src/APP/ciapp/Signal/SignalDataManage.h @@ -72,7 +72,6 @@ typedef struct S_SignalDataStruct UINT8 DetainBtnErrFlag; /*۳ť1ϱ־0x55δϣ0xaa*/ UINT8 CancelDetainBtnErrFlag; /*ȡ۳ť1ϱ־0x55δϣ0xaa*/ UINT32 DetainBtnPressCycNum; /*۳ť1*/ - UINT32 DetainSndBtnPressCycNum; /*۳ť2*/ UINT32 CancelDetainBtnPressCycNum; /*ȡ۳ť*/ UINT32 CancelDetainErrTrigPressCycNum; /*ȡ۳ť󴥷*/ UINT8 CancelDetainBtnValidFlag; /*ȡ۳ťЧ־0x55Ч0xaaЧ*/ @@ -97,11 +96,6 @@ typedef struct S_SignalDataStruct UINT8 VobcCroSigInPhyOccSta; /*гѹźŻڷһռѹ״̬*/ UINT8 cSleepTrainLightUpFlag; /*߳źŻ־0x55 Ч0xAA Ч*/ UINT8 cInHumidRailFlag; /*źŻʪ־0x55 Ч0xAA Ч*/ - UINT8 cDetCutBtnState; /*۳·ť״̬0x55 Ч0xAA Ч*/ - UINT32 DetCutBtnPressCycNum; /*۳·ť*/ - UINT32 DetCutBtnErrTrigPressCycNum; /*۳·ť󴥷*/ - UINT8 cDetCutBtnErrFlag; /*۳·ťϱ־0x55δϣ0xaa*/ - UINT8 cDetCutBtnRelayDownState; /*۳·ťɼ̵״̬0x55ɼ£0xaaͨ쳣*/ } SignalDataStruct; extern SignalDataStruct SignalDataStru[SIGNAL_SUM_MAX]; /*źŻݽṹ*/ @@ -254,14 +248,6 @@ UINT8 GetSignalYellowDsBreakFlag(const UINT16 signalId); */ UINT8 GetSignalWhiteDsBreakFlag(const UINT16 signalId); -/* -* ȡָIDźŻ˿˿־ -* ˵ const UINT16 signalId, źŻID -* ֵ 0: ȡʧ -* >0: ˿־ -*/ -UINT8 GetSignalBlueDsBreakFlag(const UINT16 signalId); - /* * ȡָIDźŻƵ˿˿־ * ˵ const UINT16 signalId, źŻID @@ -1042,146 +1028,6 @@ UINT8 GetSignalInHumidRailFlag(const UINT16 signalId); */ void SetSignalInHumidRailFlag(const UINT16 signalId, const UINT8 cInHumidRailFlag); -/* -* ָIDźŻǰ˿־ -* ˵ const UINT16 signalId, źŻID -* ֵ -bit71ʾںƶ˿0δ˿ -bit61ʾƶ˿0δ˿ -bit5~bit411ʾ̵ƶ˿00δ˿Ƿ -bit3~bit211ʾڻƵƶ˿00δ˿Ƿ -bit1~bit911ʾڰ׵ƶ˿00δ˿Ƿ -* Created By fan 2025.05.06 -*/ -UINT8 GetSignalCurBreakFlag(const UINT16 signalId); - -/* -* ָIDźŻǰ˿־ -* ˵ const UINT16 signalId, źŻID -* const UINT8 curDsFlag, Ͷ˿־ -* ֵ -* Created By fan 2025.05.06 -*/ -void SetNearCISignalCurDsFlag(const UINT16 signalId, const UINT8 curDsFlag); - -/* -* ûͨCIָIDźŻƶ˿־ -* ˵const UINT16 wSignalId źŻID -* const UINT8 cFlag ˿־ -* ֵ -* Created By LQ 2025.05.31 -*/ -void SetHlhtCiSignalBlueDsBreakFlag(const UINT16 wSignalId, const UINT8 cFlag); - -/* -* źŻ۳·ť״̬ -* ˵const UINT16 signalId, źŻID -* const UINT8 cFlag ·ť״̬ -* ֵ -* Created By LQ 2025.06.19 -*/ -void SetDetCutBtnState(const UINT16 signalId, const UINT8 cState); - -/* -* ȡźŻ۳·ť״̬ -* ˵const UINT16 signalId źŻID -* ֵ0: ȡʧ -* >0: ȡɹ -* Created By LQ 2025.06.19 -*/ -UINT8 GetDetCutBtnState(const UINT16 signalId); - -/* -* źŻ۳·ť -* ˵const UINT16 signalId źŻID -* const UINT32 startCycNum ں -* ֵ -* Created By LQ 2025.06.19 -*/ -void SetDetCutBtnPressCycNum(const UINT16 signalId, const UINT32 startCycNum); - -/* -* ȡźŻ۳·ť -* ˵const UINT16 signalId źŻID -* ֵ źŻ۳·ť -* Created By LQ 2025.06.19 -*/ -UINT32 GetDetCutBtnPressCycNum(const UINT16 signalId); - -/* -* źŻ۳·ť󴥷 -* ˵const UINT16 signalId źŻID -* const UINT32 startCycNum ں -* ֵ -* Created By LQ 2025.06.19 -*/ -void SetDetCutBtnErrTrigPressCycNum(const UINT16 signalId, const UINT32 startCycNum); - -/* -* ȡźŻ۳·ť󴥷 -* const UINT16 signalId źŻID -* -* ֵ źŻ۳·ť󴥷 -* Created By LQ 2025.06.19 -*/ -UINT32 GetDetCutBtnErrTrigPressCycNum(const UINT16 signalId); - -/* -* źŻ۳·ťϱ־ -* ˵const UINT16 signalId źŻID -* const UINT8 cBtnErrFlag źŻ۳·ťϱ־ -* ֵ -* Created By LQ 2025.06.19 -*/ -void SetSignalDetCutBtnErrFlag(const UINT16 signalId, const UINT8 cBtnErrFlag); - -/* -* ȡźŻ۳·ťϱ־ -* ˵const UINT16 signalId źŻID -* ֵ0: ȡʧ -* >0: ȡɹ -* Created By LQ 2025.06.19 -*/ -UINT8 GetSignalDetCutBtnErrFlag(const UINT16 signalId); - -/* -* źŻ۳·ťɼ̵״̬ -* ˵const UINT16 signalId źŻID -* const UINT8 cRelayDownState ̵״̬ -* ֵ -* Created By LQ 2025.06.19 -*/ -void SetDetCutBtnRelayDownState(const UINT16 signalId, const UINT8 cRelayDownState); - -/* -* ȡźŻ۳·ťɼ̵״̬ -* ˵const UINT16 signalId źŻID -* ֵ 0 ȡʧ -* 0x55 -* 0xaa ͨ쳣 -* Created By LQ 2025.06.19 -*/ -UINT8 GetDetCutBtnRelayDownState(const UINT16 signalId); - -/* -* źŻ۳ť2 -* const UINT16 signalId źŻID -* const UINT32 startCycNum ں -* -* ֵ -* Created By LQ 2025.06.26 -*/ -void SetDetainSndBtnPressCycNum(const UINT16 signalId, const UINT32 startCycNum); - -/* -* ȡźŻ۳ť2 -* const UINT16 signalId źŻID -* -* ֵźŻ۳ť2 -* Created By LQ 2025.06.26 -*/ -UINT32 GetDetainSndBtnPressCycNum(const UINT16 signalId); - #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/Signal/SignalDefine.h b/TSCP/src/APP/ciapp/Signal/SignalDefine.h index a325c28..234299a 100644 --- a/TSCP/src/APP/ciapp/Signal/SignalDefine.h +++ b/TSCP/src/APP/ciapp/Signal/SignalDefine.h @@ -85,7 +85,6 @@ #define SIGNAL_SHOWCOLOUR_WHITE ((UINT8)0x08) /*׵*/ #define SIGNAL_SHOWCOLOUR_RED_WHITE ((UINT8)0x09) /*ףɫƹİλ*/ #define SIGNAL_SHOWCOLOUR_REDBREAK ((UINT8)0x40) /**/ -#define SIGNAL_SHOWCOLOUR_REDFAULT ((UINT8)0x60) /*ͨк*/ #define SIGNAL_SHOWCOLOUR_BLUEBREAK ((UINT8)0x50) /**/ #define SIGNAL_SHOWCOLOUR_GREENBREAK ((UINT8)0x10) /*̶*/ #define SIGNAL_SHOWCOLOUR_YELLOWBREAK ((UINT8)0x20) /*ƶ*/ @@ -124,12 +123,6 @@ #define SIGNAL_DS_BREAK_NO ((UINT8)0x55) /*δ˿*/ #define SIGNAL_DS_BREAK_YES ((UINT8)0xaa) /*˿*/ -/*źŻ˿־*/ -#define SIGNAL_DS_BREAK_RED ((UINT8)0x80) /*ƶ˿*/ -#define SIGNAL_DS_BREAK_BLUE ((UINT8)0x40) /*Ƶƶ˿*/ -#define SIGNAL_DS_BREAK_GREEN ((UINT8)0x30) /*̵ƶ˿*/ -#define SIGNAL_DS_BREAK_YELLOW ((UINT8)0x0C) /*Ƶƶ˿*/ -#define SIGNAL_DS_BREAK_WHITE ((UINT8)0x03) /*׵ƶ˿*/ /*źŻŹر״̬*/ #define SIGNAL_CLOSE ((UINT8)0x55) /*ر*/ @@ -179,11 +172,8 @@ #define SIGNAL_CANCEL_DETAIN_VALID_NO ((UINT8)0x55) /*źŻԸʽȡ۳ťЧ*/ #define SIGNAL_CANCEL_DETAIN_VALID_YES ((UINT8)0xaa) /*źŻԸʽȡ۳ťЧ*/ -#define SIGNAL_DETAIN_CUT_VALID_NO ((UINT8)0x55) /*źŻ·ťЧ*/ -#define SIGNAL_DETAIN_CUT_VALID_YES ((UINT8)0xaa) /*źŻ·ťЧ*/ - -#define SIGNAL_RELAY_ERROR_DOWN_NO ((UINT8)0x55) /*۳ť̵*/ -#define SIGNAL_RELAY_ERROR_DOWN_YES ((UINT8)0xaa) /*۳ť̵ͨ쳣*/ +#define SIGNAL_RELAY_ERROR_DOWN_NO ((UINT8)0x55) /*ȡ۳ť̵*/ +#define SIGNAL_RELAY_ERROR_DOWN_YES ((UINT8)0xaa) /*ȡ۳ť̵ͨ쳣*/ #define SIGNAL_RELAY_ACTION_TIMEMAX ((UINT8)0x0a) /*źŻ̵*/ #define SIGNAL_OPEN_TO_CLOSE_TIME_DELAY ((UINT8)0x07) /*źŻرն*/ @@ -260,10 +250,6 @@ #define OC_SIGNAL_SHOWCOLOR_BLUE_BREAK ((UINT8)0xff) /*ƶ˿*/ #define OC_SIGNAL_SHOWCOLOR_YELLOW_2_BREAK ((UINT8)0x3a) /*Ƶ2˿*/ #define OC_SIGNAL_SHOWCOLOR_GREEN_2_BREAK ((UINT8)0xac) /*̵2˿*/ -#define OC_SIGNAL_SHOWCOLOR_DL_OVERLOAD ((UINT8)0x96) /**/ -#define OC_SIGNAL_SHOWCOLOR_DY_OVERLOAD ((UINT8)0x69) /*ѹ*/ -#define OC_SIGNAL_SHOWCOLOR_DLDY_OVERLOAD ((UINT8)0xf5) /*ѹ*/ -#define OC_SIGNAL_SHOWCOLOR_DY_ZERO ((UINT8)0x5f) /*޵ѹ*/ #define OC_SIGNAL_SHOWCOLOR_UNKNOWN ((UINT8)0x00) /*״̬δ֪ ݰն˿*/ #define OC_SIGNAL_DRIVECOLOR_RED ((UINT16)0x00aa) /*oc*/ diff --git a/TSCP/src/APP/ciapp/Switch/SwitchDataManage.c b/TSCP/src/APP/ciapp/Switch/SwitchDataManage.c index 4a53cbc..e9760f2 100644 --- a/TSCP/src/APP/ciapp/Switch/SwitchDataManage.c +++ b/TSCP/src/APP/ciapp/Switch/SwitchDataManage.c @@ -960,15 +960,6 @@ void SetSingleSwitchCurPosition(const UINT16 switchId, const UINT8 curPosition) if (bufIndex < SWITCH_SUM_MAX) { - if (0U < SwitchDataStru[bufIndex].SwitDriveStartCycNum) - { - /*־*/ - SetSwitchDrivedFlag(switchId, SWITCH_DRIVED_FLAG_YES); - } - else - { - ; /**/ - } if ((SWITCH_POSITION_DINGWEI == curPosition) || (SWITCH_POSITION_FANWEI == curPosition)) {/* zt ɾش 2022-02-15 */ @@ -978,20 +969,21 @@ void SetSingleSwitchCurPosition(const UINT16 switchId, const UINT8 curPosition) /*ʼʱ*/ SetSwitchMoveStartCycNum(switchId,0u); - if(((SWITCH_POSITION_DINGWEI == curPosition) && (SWITCH_DRIVE_POS_DINGWEI == SwitchDataStru[bufIndex].switchLastValidDrvPos)) - || ((SWITCH_POSITION_FANWEI == curPosition) && (SWITCH_DRIVE_POS_FANWEI == SwitchDataStru[bufIndex].switchLastValidDrvPos))) - { - /*һλú͵ǰλͬΪ*/ - SetSwitchDrivedFlag(switchId, SWITCH_DRIVED_FLAG_NO); - } - else - { - ; - } + SetSwitchDrivedFlag(switchId, SWITCH_DRIVED_FLAG_NO); } else if ((SWITCH_POSITION_SIKAI == curPosition) || (SWITCH_POSITION_MOVE == curPosition)) { + if (0U < SwitchDataStru[bufIndex].SwitDriveStartCycNum) + { + /*־*/ + SetSwitchDrivedFlag(switchId,SWITCH_DRIVED_FLAG_YES); + } + else + { + ; /**/ + } + moveTimeState = SystemOverTimeCheck(GetSwitchMoveStartCycNum(switchId), GetSystemParaSwitchMoveCyc()); if (moveTimeState == CI_TIME_NO) { @@ -2747,7 +2739,7 @@ UINT32 GetSwitchCollTolerateCycNum(const UINT16 switchId) { retVal = SwitchDataStru[bufIndex].SwitchCollTolerateCycNum; } - return retVal; + return(retVal); } /* @@ -2782,35 +2774,5 @@ UINT8 GetSwitchCollPos(const UINT16 switchId) { retVal = SwitchDataStru[bufIndex].SwitchColPosition; } - return retVal; -} - -/* -* ûͨCIָIDķ״̬ -* ˵const UINT16 switchId ID -* const UINT8 lockStatus ״̬ -* ֵ -* Created By LQ 2025.05.27 -*/ -void SetHlhtCiSwitchPlockStatus(const UINT16 switchId, const UINT8 lockStatus) -{ - UINT16 bufIndex = 0U; /*±*/ - - bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ - - if (SWITCH_SUM_MAX > bufIndex) - { - if ((SWITCH_LOCK_STATUS_PROTECT == lockStatus) || (SWITCH_LOCK_STATUS_NO == lockStatus)) - { - SwitchDataStru[bufIndex].LockStatus = lockStatus; - } - else - { - /*״̬Ƿ*/ - } - } - else - { - /*IDǷ*/ - } + return(retVal); } diff --git a/TSCP/src/APP/ciapp/Switch/SwitchDataManage.h b/TSCP/src/APP/ciapp/Switch/SwitchDataManage.h index 7010824..94c8c69 100644 --- a/TSCP/src/APP/ciapp/Switch/SwitchDataManage.h +++ b/TSCP/src/APP/ciapp/Switch/SwitchDataManage.h @@ -679,15 +679,6 @@ void SetSwitchCollPos(const UINT16 switchId, const UINT8 chSwitchColpos); */ UINT8 GetSwitchCollPos(const UINT16 switchId); -/* -* ûͨCIָIDķ״̬ -* ˵const UINT16 switchId ID -* const UINT8 lockStatus ״̬ -* ֵ -* Created By LQ 2025.05.27 -*/ -void SetHlhtCiSwitchPlockStatus(const UINT16 switchId, const UINT8 lockStatus); - #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/Switch/SwitchDefine.h b/TSCP/src/APP/ciapp/Switch/SwitchDefine.h index 26e5d10..1db219f 100644 --- a/TSCP/src/APP/ciapp/Switch/SwitchDefine.h +++ b/TSCP/src/APP/ciapp/Switch/SwitchDefine.h @@ -141,9 +141,5 @@ #define COLLTOLERATE_CYCNUM 2U /*ɼ*/ -#define SEND_CIM_COLLTOLERATE_DW 0x55u /*λ*/ -#define SEND_CIM_COLLTOLERATE_FW 0xAAu /*λ*/ -#define SEND_CIM_COLLTOLERATE_NO 0xffu /*޲*/ - #endif diff --git a/TSCP/src/APP/ciapp/System/CiSystemDefine.h b/TSCP/src/APP/ciapp/System/CiSystemDefine.h index 674c207..24b43d8 100644 --- a/TSCP/src/APP/ciapp/System/CiSystemDefine.h +++ b/TSCP/src/APP/ciapp/System/CiSystemDefine.h @@ -90,7 +90,6 @@ #define CI_DEVICE_TYPE_PLATFORM ((UINT8)0x07) /*վ̨*/ #define CI_DEVICE_TYPE_AXISSEC ((UINT8)0x08) /**/ #define CI_DEVICE_TYPE_ESB ((UINT8)0x09) /*վ̨رհť*/ -#define CI_DEVICE_TYPE_PSD_EXCEPT_OPEN ((UINT8)0x0A) /*վ̨ţ쳣򿪣*/ #define CI_DEVICE_TYPE_PSD ((UINT8)0x10) /*վ̨*/ #define CI_DEVICE_TYPE_STOP ((UINT8)0x11) /*гͣϢ*/ #define CI_DEVICE_TYPE_RELAY ((UINT8)0x12) /*̵*/ @@ -152,7 +151,6 @@ #define CI_UNLOCK_OVERLAP_REQURE ((UINT8)0x02) /*CTʱ뱣ν*/ #define CI_CHECK_LEN_ERROR ((UINT8)0x4) /*У*/ #define CI_ERROR_QXZC ((UINT8)0x05) /*˽·ʱȡղ̵µµRouteExceptLastSecOccuClearCheckʧ*/ -#define CI_OVERLAP_OCC_UNLOCK ((UINT8)0x06) /*ռִ*/ /*----------Common----------*/ #define CI_TRUE ((UINT8)0x55) /*سɹ*/ @@ -222,11 +220,6 @@ #define CI_ALL_SNOW_VALID ((UINT8)0x55) /*ȫѩģʽЧ*/ #define CI_ALL_SNOW_UNVALID ((UINT8)0xAA) /*ȫѩģʽЧ*/ -/*ʪģʽȼ*/ -#define CI_SNOW_LEVEL_DEFAULT ((UINT8)0x00) /*Ĭֵʪ/ѩģʽΪѩģʽ*/ -#define CI_SNOW_LEVEL_ONE ((UINT8)0x01) /*ʪһ*/ -#define CI_SNOW_LEVEL_TWO ((UINT8)0x02) /*ʪ*/ - /*ȫѩģʽ*/ #define CI_ITE_LINE_CUT_VALID ((UINT8)0x55) /*гITE*/ #define CI_ITE_LINE_CUT_INVALID ((UINT8)0xAA) /*ʹITE*/ @@ -251,7 +244,7 @@ #define COMM_TRAIN_TEST_DEV_STATE_VALID ((UINT8)0x55) /*豸״̬Ч*/ #define COMM_TRAIN_TEST_DEV_STATE_INVALID ((UINT8)0xAA) /*豸״̬Ч*/ -#define VOBC_SUM_MAX 255U /*豸IDΪ1ֽڣУidС255*/ +#define VOBC_SUM_MAX 100U /*豸IDΪ1ֽڣĿǰVOBC100*/ #define VOBC_BACKUP_SUM_MAX 256U /*ĿǰͨVOBC255*/ #define ITE_SUM_MAX ((UINT8)VOBC_SUM_MAX) /*ITEֵ*/ diff --git a/TSCP/src/APP/ciapp/System/SystemConfigDefine.h b/TSCP/src/APP/ciapp/System/SystemConfigDefine.h index 127c74b..a71feb5 100644 --- a/TSCP/src/APP/ciapp/System/SystemConfigDefine.h +++ b/TSCP/src/APP/ciapp/System/SystemConfigDefine.h @@ -59,10 +59,10 @@ /*V13.0汾ݽṹ 2018.8.3*/ /*汾*/ -#define VER_MAIN_SUBCI_CI_CID ((UINT8)22) /*ϵͳ汾*/ +#define VER_MAIN_SUBCI_CI_CID ((UINT8)19) /*ϵͳ汾*/ #define VER_SUB_SUBCI_CI_CID ((UINT8)0) /*ϵͳӰ汾*/ -#define VER_BRUNCH_CI_CID ((UINT8)2) /*֧汾..........0....֧1 2 */ -#define VER_RETURN_SUBCI_CI_CID ((UINT8)1) /*ϵͳع汾*/ +#define VER_BRUNCH_CI_CID ((UINT8)0) /*֧汾..........0....֧1 2 */ +#define VER_RETURN_SUBCI_CI_CID ((UINT8)2) /*ϵͳع汾*/ #ifdef SCADE_MODE /*SCADE汾*/ @@ -75,14 +75,14 @@ /*д汾*/ #define VER_SOFT_PRODUCT ((UINT8)40) /*Ʒ*/ #define VER_SOFT_MODUAL_APP ((UINT8)1) /*ģ*/ -#define VER_SOFT_MIANVERSION ((UINT8)22) /*汾*/ -#define VER_SOFT_SUBVERSION ((UINT8)8) /*Ӱ汾*/ +#define VER_SOFT_MIANVERSION ((UINT8)19) /*汾*/ +#define VER_SOFT_SUBVERSION ((UINT8)3) /*Ӱ汾*/ #endif /*ɼݵĹݽṹ汾*/ #define VER_1_PUBLIC_FS_1 ((UINT8)30) -#define VER_1_PUBLIC_FS_2 ((UINT8)21) +#define VER_1_PUBLIC_FS_2 ((UINT8)14) #define VER_1_PUBLIC_FS_3 ((UINT8)0) #define VER_1_PUBLIC_FS_4 ((UINT8)0) @@ -91,15 +91,15 @@ #define VER_2_PUBLIC_FS_3 ((UINT8)0) #define VER_2_PUBLIC_FS_4 ((UINT8)0) -#define VER_3_PUBLIC_FS_1 ((UINT8)28) -#define VER_3_PUBLIC_FS_2 ((UINT8)0) -#define VER_3_PUBLIC_FS_3 ((UINT8)0) -#define VER_3_PUBLIC_FS_4 ((UINT8)14) +#define VER_3_PUBLIC_FS_1 ((UINT8)0xFF) +#define VER_3_PUBLIC_FS_2 ((UINT8)0xFF) +#define VER_3_PUBLIC_FS_3 ((UINT8)0xFF) +#define VER_3_PUBLIC_FS_4 ((UINT8)0xFF) /*ɼݵ˽ݽṹ汾*/ -#define VER_1_PRIVATE_FS_1 ((UINT8)44) -#define VER_1_PRIVATE_FS_2 ((UINT8)1) +#define VER_1_PRIVATE_FS_1 ((UINT8)39) +#define VER_1_PRIVATE_FS_2 ((UINT8)0) #define VER_2_PRIVATE_FS_1 ((UINT8)0xFF) #define VER_2_PRIVATE_FS_2 ((UINT8)0xFF) @@ -108,7 +108,7 @@ #define VER_3_PRIVATE_FS_2 ((UINT8)0xFF) /*ɼOCݽṹ汾*/ -#define VER_1_OCDATA_FS_1 ((UINT8)29) /*oc 3.0 ݰ汾*/ +#define VER_1_OCDATA_FS_1 ((UINT8)27) /*oc 3.0 ݰ汾*/ #define VER_1_OCDATA_FS_2 ((UINT8)0) #define VER_2_OCDATA_FS_1 ((UINT8)24) /*oc 2.1.6*/ diff --git a/TSCP/src/APP/ciapp/System/SystemParameterManage.c b/TSCP/src/APP/ciapp/System/SystemParameterManage.c index 7e96388..0f93563 100644 --- a/TSCP/src/APP/ciapp/System/SystemParameterManage.c +++ b/TSCP/src/APP/ciapp/System/SystemParameterManage.c @@ -28,7 +28,6 @@ static UINT8 LocalRcWorkMode = 0u; /* RC static UINT8 gLocalRcLinkLineAttr = 0u; /* RC */ UINT8 gLocalOcType = 0u; /*OCݽṹ*/ -UINT8 gLocalPublicDataType = 0u; /*ͣ28.0.0.11¹ݽṹʹã*/ SystemParameterStructNew SystemParameterStruNew;/*ϵͳ*/ @@ -109,7 +108,6 @@ UINT32 dwSelfCancelButErrTriggerCount = 0U; /* UINT16 wArbNearSecProtectDistance = 0U; /*ARB*/ UINT32 dwArbNearSecNoUtCount = 0U; /*ARBʱ*/ UINT32 dwNonReturnBtnErrEnsureTime = 0U;/*۷ťж*/ -UINT32 dwOcCollTolerateCount = 0U; /*OCɼ*/ UINT8 gCTFlyingRedunCount = 0u; UINT16 StationTrackDistance = 0U; /*-վ̨׷ʱг루cm*/ UINT32 LineMinTrainLength = 0U; /*-·С*/ @@ -328,9 +326,6 @@ void SystemParaTimeToCycleCount(void) paraVal = GetSystemParaValue(NONRETURN_BTN_ERR_ENSURE_TIME); dwNonReturnBtnErrEnsureTime = TimeToCycleCount((UINT32)paraVal * 1000U, appCycleTime); /*۷ťжʱ䣨/S*/ - - paraVal = GetSystemParaValue(OC_COLL_TOLERATE_TIME); - dwOcCollTolerateCount = TimeToCycleCount((UINT32)paraVal, appCycleTime); /*CɼESB/PSD/SPKS/۳ms*/ } /* @@ -1340,9 +1335,7 @@ UINT8 CheckTiocPublicFsVersion(UINT8* pSrcFsVersion) if (NULL != pSrcFsVersion) { - SetLocalPublicDataType(DATA_TYPE_NEW); - /*ѯݽṹ汾Ƿڿɼݵİ汾 - 28.0.0.14汾ֻ֧õݽṹ VER_3_PUBLIC*/ + /*ѯݽṹ汾Ƿڿɼݵİ汾*/ if ((VER_1_PUBLIC_FS_1 == pSrcFsVersion[0]) && (VER_1_PUBLIC_FS_2 == pSrcFsVersion[1]) && (VER_1_PUBLIC_FS_3 == pSrcFsVersion[2]) && (VER_1_PUBLIC_FS_4 == pSrcFsVersion[3])) { retVal = CI_SUCCESS; @@ -1353,7 +1346,6 @@ UINT8 CheckTiocPublicFsVersion(UINT8* pSrcFsVersion) } else if ((VER_3_PUBLIC_FS_1 == pSrcFsVersion[0]) && (VER_3_PUBLIC_FS_2 == pSrcFsVersion[1]) && (VER_3_PUBLIC_FS_3 == pSrcFsVersion[2]) && (VER_3_PUBLIC_FS_4 == pSrcFsVersion[3])) { - SetLocalPublicDataType(DATA_TYPE_OLD); retVal = CI_SUCCESS; } else @@ -1421,11 +1413,11 @@ UINT8 CheckTiocOcFsVersion(UINT8* pSrcFsVersion) /*ѯOCݽṹ汾Ƿڿɼݵİ汾*/ if ((VER_1_OCDATA_FS_1 == pSrcFsVersion[0]) && (VER_1_OCDATA_FS_2 == pSrcFsVersion[1])) { - retVal = SetLocalOcPattern(DATA_TYPE_NEW); + retVal = SetLocalOcPattern(OC_DATA_TYPE_NEW); } else if ((VER_2_OCDATA_FS_1 == pSrcFsVersion[0]) && (VER_2_OCDATA_FS_2 == pSrcFsVersion[1])) { - retVal = SetLocalOcPattern(DATA_TYPE_OLD); + retVal = SetLocalOcPattern(OC_DATA_TYPE_OLD); } else { @@ -2355,20 +2347,6 @@ UINT16 GetTiocSystemParameterData(UINT32* pConfigDataAdderBuf, UINT16* pConfigDa { ;/* ޴ */ } - - /* OCɼ */ - wTmpLen = 1U + wTmpConfigDataSum; - if (wBufMaxLen >= wTmpLen) - { - pConfigDataAdderBuf[wTmpConfigDataSum] = &dwOcCollTolerateCount; - pConfigDataLenBuf[wTmpConfigDataSum] = (UINT16)sizeof(UINT32); - wTmpConfigDataSum++; - } - else - { - ;/* ޴ */ - } - /* ci-ocϵ */ wTmpLen = 1u + wTmpConfigDataSum; if (wBufMaxLen >= wTmpLen) @@ -2804,7 +2782,7 @@ OtherCiParaStruct GetOtherCiPara(const UINT8 chOtherCiId) } /* -* ȡCվBUTʱ׷ٹܿ +* ȡCվBUTǿ׷ٹܿ * ˵ * ֵaaر 55 * by cgh 20240815 @@ -2857,7 +2835,7 @@ UINT8 SetLocalOcPattern(UINT8 localOcPattern) { UINT8 rtn = CI_ERROR; /*ֵ*/ - if ((DATA_TYPE_NEW == localOcPattern) || (DATA_TYPE_OLD == localOcPattern)) + if ((OC_DATA_TYPE_NEW == localOcPattern) || (OC_DATA_TYPE_OLD == localOcPattern)) { gLocalOcType = localOcPattern; rtn = CI_SUCCESS; @@ -2872,7 +2850,7 @@ UINT8 SetLocalOcPattern(UINT8 localOcPattern) * ֵ0x55 °汾 0xaa Ͼɰ汾 * Create: fan 20250210 */ -UINT8 GetLocalOcPattern(void) +UINT8 GetLocalOcPattern() { return gLocalOcType; } @@ -2908,40 +2886,4 @@ UINT8 SetLocalRcLinkLineAttr(UINT8 cLinkLineAttr) UINT8 GetLocalRcLinkLineAttr(void) { return gLocalRcLinkLineAttr; -} - -/* -* õǰݰ汾 -* ˵ݰ汾 -* ֵɹ CI_SUCCESS ʧCI_ERROR -* Create: fan 20250521 -*/ -void SetLocalPublicDataType(UINT8 localPublicData) -{ - if ((DATA_TYPE_NEW == localPublicData) || (DATA_TYPE_OLD == localPublicData)) - { - gLocalPublicDataType = localPublicData; - } -} - -/* -* ȡǰݰ汾 -* ˵ -* ֵ0x55 °汾 0xaa Ͼɰ汾 -* Create: fan 20250521 -*/ -UINT8 GetLocalPublicDataType(void) -{ - return gLocalPublicDataType; -} - -/* -* ȡOCɼ -* ˵void -* ֵOCɼ -* Created By LQ 2025.06.30 -*/ -UINT32 GetOcCollTolerateCount(void) -{ - return dwOcCollTolerateCount; } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/System/SystemParameterManage.h b/TSCP/src/APP/ciapp/System/SystemParameterManage.h index 92f6d4b..822edb1 100644 --- a/TSCP/src/APP/ciapp/System/SystemParameterManage.h +++ b/TSCP/src/APP/ciapp/System/SystemParameterManage.h @@ -34,7 +34,6 @@ extern "C" { #define CHECK_SWITCH_LOCKING_BEFORE_LOCKING_SWITCH_CONF ((UINT8)3) /*ʱ*/ #define CHECK_SWITCH_DANLOCK_FLOCKING_SWITCH_CONF ((UINT8)4) /*ʱ*/ #define VOBC_INTERFACE_IDENTITY ((UINT8)5) /*VOBCӿͱʶ1ΪFAO2Ϊͨ*/ -#define FUNC_OC_INTERFACE_CONF ((UINT8)7) /*OCӿڱʶ1ΪOC200-2.1.92ΪOC200-3.23ΪOC200-3.2֮汾4ΪOC300-1.0.1֮汾*/ #define SCX_CLD_INTERFACE_TYPE ((UINT8)8) /*Գ복νӿͱʶ0x55Ϊ̵ӿڣ0xAAΪͨŽӿ*/ #define LINE_RAILWAY_TYPE_CONF ((UINT8)9) /*·ͱʶ0x55Ϊǹ콻ͨ0xAAΪ콻ͨ*/ #define DISTRIBUTED_IO_ENABLE_INDEX ((UINT8)10) /*ܿ10Ƿ÷ֲʽIO*/ @@ -93,10 +92,6 @@ extern "C" { #define FUNC_ZQX_CHECK_HUMID_RAIL ((UINT8)63) /*ȡǷ·ʼźŻʪ췶Χ(0xAAȡʪģʽ״̬ 0x55أȡʪģʽ״̬)*/ #define FUNC_AXIS_COMM_BAD_KEEP_CBTC ((UINT8)64) /*ϵͳͨжϺǷܹάCBTC(0xAAǣ 0x55)*/ #define FUNC_INIT_XIANDI_HAVE_POWER ((UINT8)65) /*ϵʼֵǷȨ(0x55:޿Ȩ;0xAA:пȨ)*/ -#define FUNC_LEADROUTE_FLOODGATE_CHECK ((UINT8)67) /*·Ƿ״̬(0x55:;0xAA:)*/ -#define FUNC_LEADROUTE_ESB_CHECK ((UINT8)68) /*·ǷESB״̬(0x55:;0xAA:)*/ -#define FUNC_SWITCH_ZX_ALLCLOSE_USEBLUE ((UINT8)69) /*ƾƿأ0xAA 0x55ر*/ -#define FUNC_NVRAM_TRAIN_FlYING_OVER ((UINT8)70) /*ʹNVRAMλλüලЧгɳ崻أ0xAA-ɳ崻 0x55-ɳ崻*/ #define CiSum_ID ((UINT16)1)/*ʵվ */ @@ -171,12 +166,10 @@ extern "C" { #define ARB_CHECK_ALXE_SEC_LEN (70U) /*ARBμ᳤(M)*/ #define ARB_CHECK_ALXE_TIME (71U) /*ARBμ޻ʱms*/ #define NONRETURN_BTN_ERR_ENSURE_TIME (72U) /*۷ťжʱ䣨/S*/ -#define OC_COLL_TOLERATE_TIME (73U) /*OCɼʱ䣨ESB/PSD/SPKS/۳ms*/ #define FUNC_SWITCH_ON ((UINT8)0xAA) /*ÿش*/ #define FUNC_SWITCH_OFF ((UINT8)0x55) /*ÿعر*/ #define FUNC_SWITCH_UNDEF ((UINT8)0xFF) /*ÿδ*/ -#define FUNC_SWITCH_ESB_NINGXIANG_RAIL ((UINT8)0x5A) /*ESB·*/ #define LINE_FAO ((UINT8)0x01) /*·ΪFAO*/ #define LINE_HLHT ((UINT8)0x02) /*·Ϊͨ*/ #define LINE_FAOHLHT ((UINT8)0x03) /*·ΪFAO+ͨ»*/ @@ -188,7 +181,6 @@ extern "C" { #define SCX_CLD_SERIAL_PORT_COMM ((UINT8)0x5A) /*Գ복βôڽӿ*/ #define SCX_NONELOCAL_MODE ((UINT8)0xA5) /*Գ*/ - #define UP_VALID ((UINT8)0x55) /*۳̵Ч*/ #define DOWN_VALID ((UINT8)0xaa) /*۳̵Ч*/ @@ -216,13 +208,8 @@ extern "C" { #define FUNC_OVERLAP_LOCK_BY_ATS ((UINT8)0x01) /*ATSձ*/ #define FUNC_OVERLAP_LOCK_BY_CI ((UINT8)0x02) /*ձ*/ -#define DATA_TYPE_NEW ((UINT8)0x55u) /*ݽṹ__OC3.2 ݽṹ¹ݽṹ30.X*/ -#define DATA_TYPE_OLD ((UINT8)0xAAu) /*ݵOCݽṹ_򺼵ݽṹ28.0.0.X*/ - -#define OC200_VER2_1_9 ((UINT8)0x01u)/*ܿ7Ϊ1OC200 2.1.9ӿ*/ -#define OC200_VER3_2 ((UINT8)0x02u)/*ܿ7Ϊ2OC200 3.2ӿ*/ -#define OC200_VER3_2_AFTER ((UINT8)0x03u)/*ܿ7Ϊ3OC200 3.2汾Ժӿ*/ -#define OC300_VER1_0_1_ANDAFTER ((UINT8)0x04u)/*ܿ7Ϊ4OC300 1.0.1汾Ժӿ*/ +#define OC_DATA_TYPE_NEW ((UINT8)0x55u) /*OCݽṹ__OC3.0 ݽṹ26.0*/ +#define OC_DATA_TYPE_OLD ((UINT8)0xAAu) /*ݵOCݽṹ_OC2.1.6 ݽṹ24.0*/ #define RC_LINK_LINE_YES ((UINT8)0x55U) /*߱*/ #define RC_LINK_LINE_NO ((UINT8)0xAAU) /*߱*/ @@ -400,8 +387,6 @@ typedef struct S_CI_OC_Relation extern UINT8 LocalCiId; /*ID*/ extern SystemParameterStructNew SystemParameterStruNew;/*ϵͳ*/ extern DquCiFuncSwitchStructNew CiFuncSwitConfStruNew[CI_FUNCTION_SWITCH_SUM_MAX];/*ܿؽṹ*/ -extern UINT8 gLocalOcType; /*OCݽṹ*/ -extern UINT8 gLocalPublicDataType; /*ͣ28.0.0.11¹ݽṹʹã*/ extern UINT32 StartUnlockCount; /*ϵ (ʼֶ)*/ extern UINT32 RouteXuanPaiCount; /*·ѡų (ʼֶ)*/ extern UINT32 RouteLockCount; /*·ճ (ʼֶ)*/ @@ -475,7 +460,6 @@ extern UINT32 dwSelfCancelButErrTriggerCount; /* extern UINT16 wArbNearSecProtectDistance; /*ARB*/ extern UINT32 dwArbNearSecNoUtCount; /*ARBʱ*/ extern UINT32 dwNonReturnBtnErrEnsureTime; /*۷ťж*/ -extern UINT32 dwOcCollTolerateCount; /*OCɼ*/ extern UINT8 gCTFlyingRedunCount; extern CiOcRelateion CiOcRelationArr[CI_SUM_MAX];/*ci ocϵ*/ @@ -1376,7 +1360,7 @@ UINT8 SetLocalOcPattern(UINT8 localOcPattern); * ֵ0x55 °汾 0xaa Ͼɰ汾 * Create: fan 20250210 */ -UINT8 GetLocalOcPattern(void); +UINT8 GetLocalOcPattern(); /* * ܣRC @@ -1393,30 +1377,6 @@ UINT8 SetLocalRcLinkLineAttr(UINT8 cLinkLineAttr); */ UINT8 GetLocalRcLinkLineAttr(void); -/* -* õǰݰ汾 -* ˵ݰ汾 -* ֵɹ CI_SUCCESS ʧCI_ERROR -* Create: fan 20250521 -*/ -void SetLocalPublicDataType(UINT8 localPublicData); - -/* -* ȡǰݰ汾 -* ˵ -* ֵ0x55 °汾 0xaa Ͼɰ汾 -* Create: fan 20250521 -*/ -UINT8 GetLocalPublicDataType(void); - -/* -* ȡOCɼ -* ˵void -* ֵOCɼ -* Created By LQ 2025.06.30 -*/ -UINT32 GetOcCollTolerateCount(void); - #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/Train/EvacuationAreaManage.c b/TSCP/src/APP/ciapp/Train/EvacuationAreaManage.c index e8e28c9..fc79fc2 100644 --- a/TSCP/src/APP/ciapp/Train/EvacuationAreaManage.c +++ b/TSCP/src/APP/ciapp/Train/EvacuationAreaManage.c @@ -25,36 +25,10 @@ static void EaCmdProc(void); /** * @brief ɢ * @param chIndex -* @param chType * @return CI_ERRORʧܣCI_SUCCESSɹ -* edit cgh 20250527 */ static UINT8 EvacuationAreaCalcu(UINT8 chEaIndex, const UINT8 chType); -/** -* @brief ӷ -* @param chEaIndex -* @param wAxisSecId ID -* @param chType -* @param wTrainId ɢгID -* @param chEaconfigId -* @return CI_ERROR ʧ -* CI_SUCCESS ɹ -* BY CGH 20250527 -*/ -static UINT8 AddEaAxisSec(UINT8 chEaIndex, UINT16 wAxisSecId, UINT8 chType, UINT16 wTrainId, UINT8 chEaconfigId); - -/** -* @brief Ƿ -* @param const UINT16 wAcId α -* @param const UINT16 wSpecialEaId -* @return UINT8_MAX 쳣 -* CI_ERROR ڲ -* CI_SUCCESS Ҫڲ -* by cgh 20250818 -*/ -static UINT8 CheckAddSpecialEaAxis(const UINT16 wAcId, const UINT16 wSpecialEaId); - /** * @brief ȡͨųijһɢгǷͬ⽨ * @param wEaTrainId ɢгID @@ -64,17 +38,13 @@ static UINT8 GetAllCtTrainAgreeSetEva(UINT16 wEaTrainId); /** * @brief ɢгߡɢԵ -* @param chType * @param wTrainId ɢгID * @param pMidLine ɢг߹ * @param pMinEdge ɢС * @param pMaxEdge ɢ -* @param pEaconfigId ɢ -* @param wSpecialEaId * @return CI_ERROR ʧ CI_SUCCESS ɹ -* edit cgh 20250310 */ -static UINT8 EaGetMidLineAndEdgeKm(const UINT8 chType, const UINT16 wTrainId, UINT8* pEaOut, UINT32* pMidLine, UINT32* pMinEdge, UINT32* pMaxEdge, UINT8* pEaconfigId, UINT16* wSpecialEaId); +static UINT8 EaGetMidLineAndEdgeKm(const UINT8 chType, const UINT16 wTrainId, UINT8 * pEaOut, UINT32 * pMidLine, UINT32 * pMinEdge, UINT32 * pMaxEdge, UINT8* pEaconfigId); /** * @brief ѯվһ䲻վ̨ķڵվ̨ @@ -188,33 +158,6 @@ static UINT8 EaIsLinkSeqAllLocal(UINT8 chEaIndex); */ static UINT8 PaGetIndex(const UINT16 wTrainId, const UINT8 chType); -/** -* @brief Ƿȫ -* @param wTrainId ɢгID -* @param UINT16* wSpecialEaId ID -* @return CI_ERROR ȫ CI_SUCCESS ȫ -* edit cgh 20250818 -*/ -static UINT8 CalcSpecialEa(const UINT16 wTrainId, UINT16* wSpecialEaId); - -/** -* @brief ѯǰlinklinkĿǰڳжϣ -* @param struct_PathPoint pPoint ǰlinkϢ -* @param UINT8 chDirection ѯ -* @param UINT32 dwSearchLen ѯ -* @return CI_SUCCESS ͨ CI_ERROR ʧ -* BY CGH 20250818 -*/ -static UINT8 EaFindLinkAdjacentLinkID(struct_PathPoint pPoint, UINT8 chDirection, UINT32 dwSearchLen); - -/** -* @brief ȡ -* @param const UINT16 wAcId α -* @return -* by cgh 20250826 -*/ -static UINT16 GetAxisSpecialEaId(const UINT16 wAcId); - /** * @brief ʼ * @param @@ -371,7 +314,7 @@ UINT8 EaConfigInit(void) if (CI_SUCCESS == chRtn) { chStationFlag = IsLinkPlatform(wAdjacentLinkId); - if ((CI_SUCCESS == chStationFlag) && (EA_BD_LINK_SUM_MAX > g_szEaConfig[wIndex].chStartStationLinkSum)) + if (CI_SUCCESS == chStationFlag) { /*ڣµLINK*/ g_szEaConfig[wIndex].wSzStartStationLinkId[g_szEaConfig[wIndex].chStartStationLinkSum] = wAdjacentLinkId; @@ -411,7 +354,7 @@ UINT8 EaConfigInit(void) if (CI_SUCCESS == chRtn) { chStationFlag = IsLinkPlatform(wAdjacentLinkId); - if((CI_SUCCESS == chStationFlag) && (EA_BD_LINK_SUM_MAX > g_szEaConfig[wIndex].chEndStationLinkSum)) + if (CI_SUCCESS == chStationFlag) { g_szEaConfig[wIndex].wSzEndStationLinkId[g_szEaConfig[wIndex].chEndStationLinkSum] = wAdjacentLinkId; g_szEaConfig[wIndex].chEndStationLinkSum++; @@ -768,7 +711,6 @@ static void EaCmdProc(void) * @param chIndex * @param chType * @return CI_ERRORʧܣCI_SUCCESSɹ -* edit cgh 20250527 */ static UINT8 EvacuationAreaCalcu(UINT8 chEaIndex, const UINT8 chType) { @@ -795,22 +737,25 @@ static UINT8 EvacuationAreaCalcu(UINT8 chEaIndex, const UINT8 chType) UINT8 chPlatformFlag = 0u; UINT16 wLinkTioc = 0u; UINT8 chLocalId = 0u; + UINT8 chAcBelongCiId = 0; /*ID*/ + UINT8 chAcBelongCiType = 0; /**/ + UINT16 wEaMode = 0u; UINT32 dwKmTmpMin = 0u; UINT32 dwKmTmpMax = 0u; UINT8 dwEaConfigId = 0u; + UINT8 chAxisSecAddFlag = CI_ERROR;/*Ƿ־*/ UINT16 wAxisBelLinkId = 0U;/*LINK ID*/ UINT16 wEaConfigIndex = 0U;/**/ - UINT8 chAxisBelCiIdCheck = 0U; /**/ - UINT8 chAcBelongCiId = 0U; /*ID*/ - UINT8 chAxisSecAddFlag = CI_ERROR;/*Ƿ־*/ - UINT16 wSpecialEaId = 0U;/**/ chLocalId = GetSystemParaLocalCiId(); /* ȡID */ wTrainId = GetEvacuatingTrainIdByIndex(chEaIndex); /* ȡӦɢгID */ /* ߡ߽繫 */ - rtnValue = EaGetMidLineAndEdgeKm(chType, wTrainId, &chEaOut, &dwKmTemp, &dwKm2, &dwKm1, &dwEaConfigId,&wSpecialEaId); + rtnValue = EaGetMidLineAndEdgeKm(chType, wTrainId, &chEaOut, &dwKmTemp, &dwKm2, &dwKm1, &dwEaConfigId); + + /* ȡɢ */ + wEaMode = GetSystemParaValue(EA_MODE_ID); if (CI_SUCCESS == rtnValue) { @@ -953,11 +898,6 @@ static UINT8 EvacuationAreaCalcu(UINT8 chEaIndex, const UINT8 chType) } } - else if (EA_OUT_SEVEN == chEaOut) - { - /*ʵʴ*/ - ; - } else { chCalFlag = FLAG_UNSET; @@ -965,12 +905,38 @@ static UINT8 EvacuationAreaCalcu(UINT8 chEaIndex, const UINT8 chType) if (FLAG_SET == chCalFlag) { - /*ӹ귶Χڵļ*/ - rtnValue = AddEaAxisSec(chEaIndex, g_szEaAcConfig[wAcIndex].AxisSectionId, chType, wTrainId, dwEaConfigId); - - if (CI_ERROR == rtnValue) + /*ȥ*/ + for (chIndex = 0u; chIndex < g_szEaData[chEaIndex].strAcInfo.chObjNum; chIndex++) { - break; + /*ǷѾ¼*/ + if (g_szEaData[chEaIndex].strAcInfo.szObjId[chIndex] == g_szEaAcConfig[wAcIndex].AxisSectionId) + { + break; + } + else + { + ; + } + } + /*ûм¼*/ + if (g_szEaData[chEaIndex].strAcInfo.chObjNum == chIndex) + { + /*жϸüǷԳ*/ + chAcBelongCiId = (UINT8)GetAxisBelongTiocAllLine(g_szEaAcConfig[wAcIndex].AxisSectionId); + chAcBelongCiType = GetCiType(chAcBelongCiId);/*ȡǰ*/ + /*ҪݹܿжǷн*/ + chAxisSecAddFlag = AxisSecAddProAreaCheck(g_szEaAcConfig[wAcIndex].AxisSectionId, chType, wTrainId); + + if (((CI_TYPE_ZX == chAcBelongCiType) || (CI_TYPE_SCX == chAcBelongCiType)) && (CI_SUCCESS == chAxisSecAddFlag)) + { + g_szEaData[chEaIndex].strAcInfo.szObjId[g_szEaData[chEaIndex].strAcInfo.chObjNum] = g_szEaAcConfig[wAcIndex].AxisSectionId; + g_szEaData[chEaIndex].strAcInfo.chObjNum++; + g_szEaData[chEaIndex].chEaConfigId = dwEaConfigId; + } + else + { + /*߻ԳӼ*/ + } } else { @@ -983,67 +949,13 @@ static UINT8 EvacuationAreaCalcu(UINT8 chEaIndex, const UINT8 chType) } } - - } - - if (CI_SUCCESS == rtnValue) - { - if (0U == wSpecialEaId) + if (EA_SECTION_MAX_NUM < g_szEaData[chEaIndex].strAcInfo.chObjNum) { - /*ȫߣҪ佨*/ - /* ļ */ - for (chEaAcIndex = 0u; chEaAcIndex < g_szEaData[chEaIndex].strAcInfo.chObjNum; chEaAcIndex++) - { - wSpecialEaId = GetAxisSpecialEaId(g_szEaData[chEaIndex].strAcInfo.szObjId[chEaAcIndex]); - - if (0U != wSpecialEaId) - { - break; - } - else - { - ; /**/ - } - } + rtnValue = CI_ERROR; } else { - ; /*ѾID*/ - } - - if (0U != wSpecialEaId) - { - /*߱ԲпΪ*/ - for (wAcIndex = 0U; wAcIndex < g_eaAcConfigNum; wAcIndex++) - { - chAxisSecAddFlag = CheckAddSpecialEaAxis(g_szEaAcConfig[wAcIndex].AxisSectionId, wSpecialEaId); - - if (CI_SUCCESS == chAxisSecAddFlag) - { - rtnValue = AddEaAxisSec(chEaIndex, g_szEaAcConfig[wAcIndex].AxisSectionId, chType, wTrainId, dwEaConfigId); - } - else if (CI_ERROR == chAxisSecAddFlag) - { - ; /**/ - } - else - { - rtnValue = CI_ERROR; /*쳣*/ - } - - if (CI_ERROR == rtnValue) - { - break; - } - else - { - ; - } - } - } - else - { - ; /*Ӳ*/ + ; } } @@ -1167,7 +1079,7 @@ static UINT8 EvacuationAreaCalcu(UINT8 chEaIndex, const UINT8 chType) { debug_infor_printf((const)"Train:%x PaType = %x\n", wTrainId, g_szEaData[chEaIndex].chPaType); - debug_infor_printf((const)"Train:%x pMidLine = %u pMinEdge = %u pMaxEdge = %u\n", wTrainId,dwKmTemp,dwKm2,dwKm1); + debug_infor_printf((const)"Train:%x pMidLine = %d pMinEdge = %d pMaxEdge = %d\n", wTrainId,dwKmTemp,dwKm2,dwKm1); debug_infor_printf((const)"Train:%x PaAcSeq:num = %d\n", wTrainId, g_szEaData[chEaIndex].strAcInfo.chObjNum); for (chEaAcIndex = 0U; chEaAcIndex < g_szEaData[chEaIndex].strAcInfo.chObjNum; chEaAcIndex++) @@ -1408,12 +1320,10 @@ static UINT8 GetAllCtTrainAgreeSetEva(UINT16 wEaTrainId) * @param pMidLine ɢг߹ * @param pMinEdge ɢС * @param pMaxEdge ɢ -* @param pEaconfigId ɢ -* @param wSpecialEaId * @return CI_ERROR ʧ CI_SUCCESS ɹ * edit cgh 20250310 */ -static UINT8 EaGetMidLineAndEdgeKm(const UINT8 chType, const UINT16 wTrainId, UINT8 * pEaOut, UINT32 * pMidLine, UINT32 * pMinEdge, UINT32 * pMaxEdge, UINT8 * pEaconfigId, UINT16* wSpecialEaId) +static UINT8 EaGetMidLineAndEdgeKm(const UINT8 chType, const UINT16 wTrainId, UINT8 * pEaOut, UINT32 * pMidLine, UINT32 * pMinEdge, UINT32 * pMaxEdge, UINT8 * pEaconfigId) { UINT16 wMaxHeadLink = 0u; UINT32 dwMaxHeadOff = 0u; @@ -1425,7 +1335,7 @@ static UINT8 EaGetMidLineAndEdgeKm(const UINT8 chType, const UINT16 wTrainId, UI UINT16 wEaMode = 0u; UINT16 wEaStationMode = 0u; UINT8 chTrainDir_Maxhead = 0u; /*гǰΪ׼*/ - UINT8 chTrainDir_outTail = 0u; /*βķСȡ*/ + UINT8 chTrainDir_outTail = 0u; /*βķ򣬴ǰȡ*/ UINT32 dwFrontDis = 0u; UINT32 dwBehindDis = 0u; UINT32 dwKm1 = 0u; /*ͷɢԵ*/ @@ -1445,15 +1355,13 @@ static UINT8 EaGetMidLineAndEdgeKm(const UINT8 chType, const UINT16 wTrainId, UI UINT32 wMinTailLinkTmnlPointKm = 0u; /*βյ㹫*/ UINT16 wBasicLinkId = 0U;/*׼LINK ID*/ UINT8 chConfigLinkIndex = 0U;/*LINK*/ - UINT8 chCalcSpecialEa = 0U;/**/ - + /* ȡгλ */ wMaxHeadLink = GetTrainMaxHeadLink(wTrainId); dwMaxHeadOff = GetTrainMaxHeadOffset(wTrainId); wMinTailLink = GetTrainMinTailLink(wTrainId); dwMinTailOff = GetTrainMinTailOffset(wTrainId); chTrainDir_Maxhead = GetTrainDir_MaxHead(wTrainId); - chTrainDir_outTail = GetTrainDir(wTrainId); wACOfMaxSafeHeadLoc = elm_PrepareACOfMaxSafeHeadLoc(wTrainId); /*ȡID*/ wACOfMinSafeTailLoc = elm_PrepareACOfMinSafeTailLoc(wTrainId); @@ -1503,65 +1411,56 @@ static UINT8 EaGetMidLineAndEdgeKm(const UINT8 chType, const UINT16 wTrainId, UI wEaStationMode = GetSystemParaValue(EA_STATION_MODE_ID); if ((PA_TYPE_DA == chType) || (EA_MODE_DIS == wEaMode) || ((EA_STATION_MODE_DIS == wEaStationMode) && (wMaxHeadLink == wMinTailLink) && (CI_SUCCESS == chPlatformFlag))) { - chCalcSpecialEa = CalcSpecialEa(wTrainId,wSpecialEaId); - if (CI_SUCCESS == chCalcSpecialEa) - { - *pEaOut = EA_OUT_SEVEN; - *pMidLine = UINT32_MAX; + /* ȡɢΧ */ + dwFrontDis = GetEaFrontDis(); + dwBehindDis = GetEaBehindDis(); + chTrainDir_outTail = ConvertTrainDir(chTrainDir_Maxhead); /*ǰȡ*/ + + /*ͷ*/ + if (DIR_SAME == chTrainDir_Maxhead) + {/*ͷشǰۼ*/ + dwKm1 = dwMaxHeadKm + dwFrontDis; + } + else if (DIR_CONVERT == chTrainDir_Maxhead) + {/*ͷشǰۼ*/ + if (dwMaxHeadKm >= dwFrontDis) + { + dwKm1 = dwMaxHeadKm - dwFrontDis; + } + else + { + dwKm1 = 0u; + } } else { - /* ȡɢΧ */ - dwFrontDis = GetEaFrontDis(); - dwBehindDis = GetEaBehindDis(); - chTrainDir_outTail = ConvertTrainDir(chTrainDir_outTail); /*Сȡ*/ - - /*ͷ*/ - if (DIR_SAME == chTrainDir_Maxhead) - {/*ͷشǰۼ*/ - dwKm1 = dwMaxHeadKm + dwFrontDis; - } - else if (DIR_CONVERT == chTrainDir_Maxhead) - {/*ͷشǰۼ*/ - if (dwMaxHeadKm >= dwFrontDis) - { - dwKm1 = dwMaxHeadKm - dwFrontDis; - } - else - { - dwKm1 = 0u; - } - } - else - { - chRtn = CI_ERROR; - } - - /*β*/ - if (DIR_SAME == chTrainDir_outTail) - {/*βسβⷽۼ*/ - dwKm2 = dwMinTailKm + dwBehindDis; - } - else if (DIR_CONVERT == chTrainDir_outTail) - {/*βسβⷽۼ*/ - if (dwMinTailKm >= dwBehindDis) - { - dwKm2 = dwMinTailKm - dwBehindDis; - } - else - { - dwKm2 = 0u; - } - } - else - { - chRtn = CI_ERROR; - } - - *pMinEdge = (dwKm1 < dwKm2) ? dwKm1 : dwKm2; - *pMaxEdge = (dwKm1 < dwKm2) ? dwKm2 : dwKm1; - *pEaOut = EA_OUT_ONE; + chRtn = CI_ERROR; } + + /*β*/ + if (DIR_SAME == chTrainDir_outTail) + {/*βسβⷽۼ*/ + dwKm2 = dwMinTailKm + dwBehindDis; + } + else if (DIR_CONVERT == chTrainDir_outTail) + {/*βسβⷽۼ*/ + if (dwMinTailKm >= dwBehindDis) + { + dwKm2 = dwMinTailKm - dwBehindDis; + } + else + { + dwKm2 = 0u; + } + } + else + { + chRtn = CI_ERROR; + } + + *pMinEdge = (dwKm1 < dwKm2) ? dwKm1 : dwKm2; + *pMaxEdge = (dwKm1 < dwKm2) ? dwKm2 : dwKm1; + *pEaOut = EA_OUT_ONE; } else if ((EA_STATION_MODE_PLAT == wEaStationMode) && (wMaxHeadLink == wMinTailLink) && (CI_SUCCESS == chPlatformFlag)) { @@ -2137,7 +2036,7 @@ static void EaAtsCancleFst(void) strCfmFst->chFlag = FLAG_SET; strCfmFst->chTiocId = chLocalId; strCfmFst->chStation = strMsgFst->chStation; - strCfmFst->wIndex = strMsgFst->wIndex; + strCfmFst->chIndex = strMsgFst->chIndex; strCfmFst->dwTime = dwCycle; chRtn = dquHlhtId2VobcName(strMsgFst->dwEaTrainId, &wTrainId, &wTrainLgcId); @@ -2160,7 +2059,7 @@ static void EaAtsCancleFst(void) if (TRAIN_EA_CMD_STATE_INVALID != chEaCmdState) { /* гǰɢ״̬ */ - strCfmFst->chOpStatus = CONFIRM_TRAIN_IN_EA; + strCfmFst->chOpStatus = CONFIRM_FIRST_EING; } else { @@ -2182,8 +2081,8 @@ static void EaAtsCancleFst(void) ii++; szCrcTmp[ii] = strMsgFst->chStation; ii++; - ShortToChar(strMsgFst->wIndex, &szCrcTmp[ii]); - ii += 2U; + szCrcTmp[ii] = strMsgFst->chIndex; + ii++; LongToChar(strMsgFst->dwEaTrainId, &szCrcTmp[ii]); ii += 4u; LongToChar(strMsgFst->dwTime, &szCrcTmp[ii]); @@ -2254,7 +2153,7 @@ static void EaAtsCancleSnd(void) strCfmSnd->chFlag = FLAG_SET; strCfmSnd->chTiocId = chLocalId; strCfmSnd->chStation = strMsgSnd->chStation; - strCfmSnd->wIndex = strMsgSnd->wIndex; + strCfmSnd->chIndex = strMsgSnd->chIndex; strCfmSnd->dwTime = dwCycle; if (FLAG_SET != strMsgFst->chFlag) @@ -2269,45 +2168,20 @@ static void EaAtsCancleSnd(void) } else if ((strMsgSnd->chAtsId != strMsgFst->chAtsId) || (strMsgSnd->chStation != strMsgFst->chStation) - || (strMsgSnd->wIndex != strMsgFst->wIndex) - || (strMsgSnd->chType != strMsgFst->chType)) + || (strMsgSnd->chIndex != strMsgFst->chIndex) + || (strMsgSnd->chType != strMsgFst->chType) + || (strMsgSnd->chLine != strMsgFst->chLine)) { /* ATS벻һ£δ֪ */ strCfmSnd->chOpStatus = CONFIRM_UNKNOWN; chFlag = FLAG_SET; } - else if (strMsgSnd->chLine != strMsgFst->chLine) - { - /* ·Բһ */ - strCfmSnd->chOpStatus = CONFIRM_EA_SND_LINE_DIFF; - chFlag = FLAG_SET; - } else { /**/ ; } - if (FLAG_UNSET == chFlag) - { - chFunRtn = dquHlhtId2VobcName(strMsgSnd->dwEaTrainId, &wTrainId, &wTrainLgcId); - chEaCmdState = GetTrainEaCmdState(wTrainId); - if (TRAIN_EA_CMD_STATE_INVALID != chEaCmdState) - { - /* гǰɢ״̬ */ - strCfmSnd->chOpStatus = CONFIRM_TRAIN_IN_EA; - chFlag = FLAG_SET; - } - else - { - ; - } - } - else - { - ; - } - if (FLAG_UNSET == chFlag) { szCrcTmp[ii] = strMsgSnd->chTiocId; @@ -2335,11 +2209,30 @@ static void EaAtsCancleSnd(void) ; } + if (FLAG_UNSET == chFlag) + { + chFunRtn = dquHlhtId2VobcName(strMsgSnd->dwEaTrainId, &wTrainId, &wTrainLgcId); + chEaCmdState = GetTrainEaCmdState(wTrainId); + if (TRAIN_EA_CMD_STATE_INVALID != chEaCmdState) + { + /* гǰɢ״̬ */ + strCfmSnd->chOpStatus = CONFIRM_FIRST_EING; + chFlag = FLAG_SET; + } + else + { + ; + } + } + else + { + ; + } + ii = 0u; szCrcTmp[ii++] = strMsgSnd->chAtsId; szCrcTmp[ii++] = strMsgSnd->chStation; - ShortToChar(strMsgSnd->wIndex, &szCrcTmp[ii]); - ii += 2U; + szCrcTmp[ii++] = strMsgSnd->chIndex; LongToChar(strMsgSnd->dwEaTrainId, &szCrcTmp[ii]); ii += 4u; LongToChar(strMsgFst->dwTime, &szCrcTmp[ii]); @@ -2349,7 +2242,6 @@ static void EaAtsCancleSnd(void) szCrcTmp[ii++] = strMsgSnd->chType; szCrcTmp[ii++] = strMsgSnd->chLine; strCfmSnd->dwCrc32 = Tioc_CommonCrc32(szCrcTmp, ii); - if (FLAG_UNSET == chFlag) {/* ͨȷϳɹ */ chFunRtn = dquHlhtId2VobcName(strMsgSnd->dwEaTrainId, &wTrainId, &wTrainLgcId); @@ -3100,7 +2992,7 @@ void DaAtsCancleFst(void) strCfmFst->chFlag = FLAG_SET; strCfmFst->chTiocId = chLocalId; strCfmFst->chStation = strMsgFst->chStation; - strCfmFst->wIndex = strMsgFst->wIndex; + strCfmFst->chIndex = strMsgFst->chIndex; strCfmFst->dwTime = dwCycle; chRtn = dquHlhtId2VobcName(strMsgFst->dwDaTrainId, &wTrainId, &wTrainLgcId); @@ -3144,8 +3036,8 @@ void DaAtsCancleFst(void) ii++; szCrcTmp[ii] = strMsgFst->chStation; ii++; - ShortToChar(strMsgFst->wIndex, &szCrcTmp[ii]); - ii += 2U; + szCrcTmp[ii] = strMsgFst->chIndex; + ii++; LongToChar(strMsgFst->dwDaTrainId, &szCrcTmp[ii]); ii += 4u; LongToChar(strMsgFst->dwTime, &szCrcTmp[ii]); @@ -3217,7 +3109,7 @@ void DaAtsCancleSnd(void) strCfmSnd->chFlag = FLAG_SET; strCfmSnd->chTiocId = chLocalId; strCfmSnd->chStation = strMsgSnd->chStation; - strCfmSnd->wIndex = strMsgSnd->wIndex; + strCfmSnd->chIndex = strMsgSnd->chIndex; strCfmSnd->dwTime = dwCycle; if (FLAG_SET != strMsgFst->chFlag) @@ -3232,44 +3124,20 @@ void DaAtsCancleSnd(void) } else if ((strMsgSnd->chAtsId != strMsgFst->chAtsId) || (strMsgSnd->chStation != strMsgFst->chStation) - || (strMsgSnd->wIndex != strMsgFst->wIndex) - || (strMsgSnd->chType != strMsgFst->chType)) + || (strMsgSnd->chIndex != strMsgFst->chIndex) + || (strMsgSnd->chType != strMsgFst->chType) + || (strMsgSnd->chLine != strMsgFst->chLine) + ) {/* ATS벻һ£δ֪ */ strCfmSnd->chOpStatus = CONFIRM_DA_SND_UNKNOWN; chFlag = FLAG_SET; } - else if (strMsgSnd->chLine != strMsgFst->chLine) - { - /* ·Բһ */ - strCfmSnd->chOpStatus = CONFIRM_DA_SND_LINE_DIFF; - chFlag = FLAG_SET; - } else { /**/ ; } - if (FLAG_UNSET == chFlag) - { - chFunRtn = dquHlhtId2VobcName(strMsgSnd->dwDaTrainId, &wTrainId, &wTrainLgcId); - chDerailment = GetTrainDerailment(wTrainId); - if (TRAIN_DERAIL_NO != chDerailment) - { - /* гǰѹ״̬ */ - strCfmSnd->chOpStatus = CONFIRM_DA_SND_DERAIL; - chFlag = FLAG_SET; - } - else - { - ; - } - } - else - { - ; - } - if (FLAG_UNSET == chFlag) { szCrcTmp[ii] = strMsgSnd->chTiocId; @@ -3297,11 +3165,30 @@ void DaAtsCancleSnd(void) ; } + if (FLAG_UNSET == chFlag) + { + chFunRtn = dquHlhtId2VobcName(strMsgSnd->dwDaTrainId, &wTrainId, &wTrainLgcId); + chDerailment = GetTrainDerailment(wTrainId); + if (TRAIN_DERAIL_NO != chDerailment) + { + /* гǰѹ״̬ */ + strCfmSnd->chOpStatus = CONFIRM_DA_SND_DERAIL; + chFlag = FLAG_SET; + } + else + { + ; + } + } + else + { + ; + } + ii = 0u; szCrcTmp[ii++] = strMsgSnd->chAtsId; szCrcTmp[ii++] = strMsgSnd->chStation; - ShortToChar(strMsgSnd->wIndex, &szCrcTmp[ii]); - ii += 2U; + szCrcTmp[ii++] = strMsgSnd->chIndex; LongToChar(strMsgSnd->dwDaTrainId, &szCrcTmp[ii]); ii += 4u; LongToChar(strMsgFst->dwTime, &szCrcTmp[ii]); @@ -3925,423 +3812,4 @@ UINT16 GetEaIndex(const UINT16 wEaId) return wReval; } -/** -* @brief ӷ -* @param chEaIndex -* @param wAxisSecId ID -* @param chType -* @param wTrainId ɢгID -* @param chEaconfigId -* @return CI_ERROR ʧ -* CI_SUCCESS ɹ -* BY CGH 20250527 -*/ -static UINT8 AddEaAxisSec(UINT8 chEaIndex, UINT16 wAxisSecId, UINT8 chType, UINT16 wTrainId, UINT8 chEaconfigId) -{ - UINT8 chReval = CI_ERROR; - UINT8 chIndex = 0U; - UINT8 chAcBelongCiId = 0; /*ID*/ - UINT8 chAcBelongCiType = 0; /**/ - UINT8 chAxisSecAddFlag = CI_ERROR;/*Ƿ־*/ - - if ((0U < wAxisSecId) && (AXIS_SECTION_SUM_MAX > wAxisSecId)) - { - chReval = CI_SUCCESS; - /*ȥ*/ - for (chIndex = 0u; chIndex < g_szEaData[chEaIndex].strAcInfo.chObjNum; chIndex++) - { - /*ǷѾ¼*/ - if (g_szEaData[chEaIndex].strAcInfo.szObjId[chIndex] == wAxisSecId) - { - break; - } - else - { - ; - } - } - /*ûм¼*/ - if (g_szEaData[chEaIndex].strAcInfo.chObjNum == chIndex) - { - /*жϸüǷԳ*/ - chAcBelongCiId = (UINT8)GetAxisBelongTiocAllLine(wAxisSecId); - chAcBelongCiType = GetCiType(chAcBelongCiId);/*ȡǰ*/ - /*ҪݹܿжǷн*/ - chAxisSecAddFlag = AxisSecAddProAreaCheck(wAxisSecId, chType, wTrainId); - - if (((CI_TYPE_ZX == chAcBelongCiType) || (CI_TYPE_SCX == chAcBelongCiType)) - && (CI_SUCCESS == chAxisSecAddFlag)) - { - - if (EA_SECTION_MAX_NUM > g_szEaData[chEaIndex].strAcInfo.chObjNum) - { - g_szEaData[chEaIndex].strAcInfo.szObjId[g_szEaData[chEaIndex].strAcInfo.chObjNum] = wAxisSecId; - g_szEaData[chEaIndex].strAcInfo.chObjNum++; - g_szEaData[chEaIndex].chEaConfigId = chEaconfigId; - } - else - { - chReval = CI_ERROR; - } - } - else - { - /*߻ԳӼ*/ - } - } - else - { - ; - } - - - } - else - { - ; - } - - return chReval; -} - -/** -* @brief Ƿ -* @param const UINT16 wAcId α -* @param const UINT16 wSpecialEaId -* @return UINT8_MAX 쳣 -* CI_ERROR ڲ -* CI_SUCCESS Ҫڲ -* by cgh 20250818 -*/ -static UINT8 CheckAddSpecialEaAxis(const UINT16 wAcId,const UINT16 wSpecialEaId) -{ - UINT8 chRtn = CI_ERROR; - UINT8 chLinkNum = 0U; - UINT16* pLinkIdBuff = NULL; - UINT8 ii = 0U; - UINT16 wLinkSpecialEa = 0U; /**/ - - if ((0U < wAcId) && (AXIS_SECTION_SUM_MAX > wAcId) && (0U < wSpecialEaId)) - { - chLinkNum = EaGetAcLinkNum(wAcId); - pLinkIdBuff = EaGetAcLinkId(wAcId); - - if (NULL != pLinkIdBuff) - { - for (ii = 0U; ii < chLinkNum; ii++) - { - wLinkSpecialEa = GetLinkSpecialEaAttr(pLinkIdBuff[ii]); - - if (wSpecialEaId == wLinkSpecialEa) - { - chRtn = CI_SUCCESS; - break; - } - else - { - ; - } - } - } - else - { - chRtn = UINT8_MAX; /*쳣*/ - } - } - else - { - chRtn = UINT8_MAX; /*쳣*/ - } - - return chRtn; -} - -/** -* @brief Ƿȫ -* @param wTrainId ɢгID -* @param UINT16* wSpecialEaId ID -* @return CI_ERROR ȫ CI_SUCCESS ȫ -* edit cgh 20250818 -*/ -static UINT8 CalcSpecialEa(const UINT16 wTrainId, UINT16* wSpecialEaId) -{ - UINT8 chRtn = CI_ERROR; - UINT16 wMaxHeadLinkId = 0U; /*ǰLINK ID*/ - UINT16 wMinTailLinkId = 0U; /*СLINK ID*/ - UINT8 chTrainDir_Maxhead = 0u; /*гǰΪ׼*/ - UINT8 chTrainDir_outTail = 0u; /*βķСȡ*/ - UINT16 wMaxHeadLinkSpecialEa = 0U; /*ǰ*/ - UINT16 wMinTailLinkSpecialEa = 0U; /*С*/ - UINT16 wMaxHeadLinkBelCiId = 0U; /*ǰLINKID*/ - UINT16 wMinTailLinkBelCiId = 0U; /*СLINKID*/ - UINT8 chMaxHeadLinkBelCiType = 0U; /*ǰLINK*/ - UINT8 chMinTailLinkBelCiType = 0U; /*СLINK*/ - UINT32 dwSearchLen = 0U;/*ѯ*/ - UINT32 errorCode = 0U; - struct_PathPoint pPoint = { 0U }; /*λϢ*/ - - wMaxHeadLinkId = GetTrainMaxHeadLink(wTrainId); - wMinTailLinkId = GetTrainMinTailLink(wTrainId); - - if ((0U < wMaxHeadLinkId) && (LINK_SUM_MAX > wMaxHeadLinkId) && (0U < wMinTailLinkId) && (LINK_SUM_MAX > wMinTailLinkId) && (NULL != wSpecialEaId)) - { - wMaxHeadLinkSpecialEa = GetLinkSpecialEaAttr(wMaxHeadLinkId); - wMinTailLinkSpecialEa = GetLinkSpecialEaAttr(wMinTailLinkId); - wMaxHeadLinkBelCiId = GetLinkManageTiocById(wMaxHeadLinkId); - wMinTailLinkBelCiId = GetLinkManageTiocById(wMinTailLinkId); - chMaxHeadLinkBelCiType = GetCiType(wMaxHeadLinkBelCiId); - chMinTailLinkBelCiType = GetCiType(wMinTailLinkBelCiId); - - if (((0U != wMaxHeadLinkSpecialEa) || (CI_TYPE_CLD == chMaxHeadLinkBelCiType)) - && ((0U != wMinTailLinkSpecialEa) || (CI_TYPE_CLD == chMinTailLinkBelCiType))) - { - /*ǰСڳڳΪҲ*/ - - /*ڷֻҪ򣬾ΪгյķΪӦ*/ - chRtn = CI_SUCCESS; - - if (0U != wMaxHeadLinkSpecialEa) - { - *wSpecialEaId = wMaxHeadLinkSpecialEa; - chTrainDir_Maxhead = GetTrainDir_MaxHead(wTrainId); - dwSearchLen = GetLinkSpecialEaFrontDis(wMaxHeadLinkId); - pPoint.wLinkId = wMaxHeadLinkId; - pPoint.dwOffset = GetTrainMaxHeadOffset(wTrainId); - chRtn = EaFindLinkAdjacentLinkID(pPoint, chTrainDir_Maxhead, dwSearchLen); - } - else - { - - } - - if (CI_SUCCESS == chRtn) - { - if (0U != wMinTailLinkSpecialEa) - { - *wSpecialEaId = wMinTailLinkSpecialEa; - chTrainDir_outTail = GetTrainDir(wTrainId); - chTrainDir_outTail = ConvertTrainDir(chTrainDir_outTail); /*Сȡ*/ - dwSearchLen = GetLinkSpecialEaBehindDis(wMinTailLinkId); - pPoint.wLinkId = wMinTailLinkId; - pPoint.dwOffset = GetTrainMinTailOffset(wTrainId); - chRtn = EaFindLinkAdjacentLinkID(pPoint, chTrainDir_outTail, dwSearchLen); - } - else - { - ; - } - - if (CI_SUCCESS != chRtn) - { - errorCode += 0x04000000U; - } - else - { - ; - } - } - else - { - errorCode += 0x08000000U; - } - } - else - { - if (0U != wMaxHeadLinkSpecialEa) - { - *wSpecialEaId = wMaxHeadLinkSpecialEa; - errorCode += 0x40000000U; - } - else - { - if (0U != wMinTailLinkSpecialEa) - { - *wSpecialEaId = wMinTailLinkSpecialEa; - errorCode += 0x20000000U; - } - else - { - errorCode += 0x10000000U; - } - } - } - } - else - { - errorCode += 0x80000000U; - } - - debug_infor_printf((const)"\CalcSpecialEa Error errorCode:0x%08x\n", errorCode); - return chRtn; -} - -/** -* @brief ѯǰlinklinkĿǰڳжϣ -* @param struct_PathPoint pPoint ǰlinkϢ -* @param UINT8 chDirection ѯ -* @param UINT32 dwSearchLen ѯ -* @return CI_SUCCESS ͨ CI_ERROR ʧ -* BY CGH 20250818 -*/ -static UINT8 EaFindLinkAdjacentLinkID(struct_PathPoint pPoint, UINT8 chDirection, UINT32 dwSearchLen) -{ - UINT16 wFindLinkId = 0U;/*ֵ*/ - UINT8 chReturn = CI_ERROR; - LinkPointDataStru pathTreeTemp = { 0U };/*˵Ϣ*/ - UINT8 chDirectionPointfirst = 0U; /*仯1*/ - UINT8 chDirectionPointsecond = 0U; /*仯2*/ - UINT8 chTempDir = 0U; /*ʱ*/ - UINT32 dwAddSearchLen = 0U;/*ۼӳ*/ - UINT16 wLinkBelCiId = 0U; /*LINKID*/ - UINT8 chLinkBelCiType = 0U; /*LINK*/ - UINT16 wLinkSpecialEa = 0U; /**/ - UINT8 chCheckFinishFlag = CI_FALSE; /*־*/ - UINT16 wCurrentLinkId = 0U; - - if ((DIR_SAME == chDirection) || (DIR_CONVERT == chDirection)) - { - chReturn = CI_SUCCESS; - chTempDir = chDirection; - dwAddSearchLen = GetRelDirLinkOffset(pPoint, chTempDir); - wCurrentLinkId = pPoint.wLinkId; - while ((dwAddSearchLen < dwSearchLen) && (CI_FALSE == chCheckFinishFlag)) - { - /*ѯlink˵Ϣ*/ - chReturn = GetLinkPointInfo(chTempDir, wCurrentLinkId, &pathTreeTemp); - if (CI_SUCCESS != chReturn) - { - /*زѯʧ*/ - chReturn = CI_ERROR; - chCheckFinishFlag = CI_TRUE; - } - else - { - if (UINT16_MAX == pathTreeTemp.wMainLinkId) - { - /*linkѯʧ*/ - chReturn = CI_ERROR; - chCheckFinishFlag = CI_TRUE; - } - else - { - if (EMAP_AXLE_DOT == pathTreeTemp.wPointType) - { - /* ȡһlinkID*/ - wFindLinkId = pathTreeTemp.wMainLinkId; - dwAddSearchLen += GetLinkLengthById(wFindLinkId); - wLinkSpecialEa = GetLinkSpecialEaAttr(wFindLinkId); - wLinkBelCiId = GetLinkManageTiocById(wFindLinkId); - chLinkBelCiType = GetCiType(wLinkBelCiId); - - if (CI_TYPE_CLD == chLinkBelCiType) - { - chCheckFinishFlag = CI_TRUE; - } - else if(0U != wLinkSpecialEa) - { - /*˵Ϊ㣬ѯlinkһlinkIDǷз仯㣬link仯ΪԶ㣬ֱӷlinkID仯Ϣ*/ - chDirectionPointfirst = GetLinkLogicDirChangedById(wCurrentLinkId); - chDirectionPointsecond = GetLinkLogicDirChangedById(wFindLinkId); - if (((LINK_DIRCHANGE_BEGIN == chDirectionPointfirst) || (LINK_DIRCHANGE_END == chDirectionPointfirst)) - && (chDirectionPointsecond == chDirectionPointfirst)) - { - chTempDir = ConvertTrainDir(chTempDir); - } - else - { - ; /*û仯㣬*/ - } - - wCurrentLinkId = wFindLinkId; - } - else - { - /*dzҲ߱ԣ˵*/ - chReturn = CI_ERROR; - chCheckFinishFlag = CI_TRUE; - } - - - } - else if (EMAP_POINT_DOT == pathTreeTemp.wPointType) - { - wFindLinkId = pathTreeTemp.wMainLinkId; - dwAddSearchLen += GetLinkLengthById(wFindLinkId); - wLinkBelCiId = GetLinkManageTiocById(wFindLinkId); - chLinkBelCiType = GetCiType(wLinkBelCiId); - if (CI_TYPE_CLD == chLinkBelCiType) - { - chCheckFinishFlag = CI_TRUE; - } - else - { - /*ҵеLINKDzdzεģ˵*/ - chReturn = CI_ERROR; - chCheckFinishFlag = CI_TRUE; - } - } - else - { - /*linkѯʧ*/ - chReturn = CI_ERROR; - chCheckFinishFlag = CI_TRUE; - } - } - } - } - } - else - { - ; - } - - return chReturn; -} - -/** -* @brief ȡ -* @param const UINT16 wAcId α -* @return -* by cgh 20250826 -*/ -static UINT16 GetAxisSpecialEaId(const UINT16 wAcId) -{ - UINT16 wRtn = CI_ERROR; - UINT8 chLinkNum = 0U; - UINT16* pLinkIdBuff = NULL; - UINT8 ii = 0U; - - if ((0U < wAcId) && (AXIS_SECTION_SUM_MAX > wAcId)) - { - chLinkNum = EaGetAcLinkNum(wAcId); - pLinkIdBuff = EaGetAcLinkId(wAcId); - - if (NULL != pLinkIdBuff) - { - for (ii = 0U; ii < chLinkNum; ii++) - { - wRtn = GetLinkSpecialEaAttr(pLinkIdBuff[ii]); - - if (0U != wRtn) - { - break; - } - else - { - ; - } - } - } - else - { - ; - } - } - else - { - ; - } - - return wRtn; -} diff --git a/TSCP/src/APP/ciapp/Train/EvacuationAreaManage.h b/TSCP/src/APP/ciapp/Train/EvacuationAreaManage.h index 10310d5..6579ff8 100644 --- a/TSCP/src/APP/ciapp/Train/EvacuationAreaManage.h +++ b/TSCP/src/APP/ciapp/Train/EvacuationAreaManage.h @@ -4,7 +4,7 @@ #include "TrainDefine.h" #define EA_CFG_SUM_MAX 50u /* */ -#define EA_BD_LINK_SUM_MAX 10u /* յ߽ */ +#define EA_BD_LINK_SUM_MAX 5u /* յ߽ */ #define EA_MODE_DIS 0x55u /* ʽ */ #define EA_MODE_SEC 0xAAu /* ʽվһ䲻վ̨ */ #define EA_MODE_PLATION 0x33u /* ʽվһ京վ̨ */ @@ -17,7 +17,6 @@ #define EA_OUT_FOUR 4u /* վһҪյվ̨ */ #define EA_OUT_FIVE 5u /* վһ䲻Ҫվ̨ */ #define EA_OUT_SIX 6u /* վһҪ估վ̨ */ -#define EA_OUT_SEVEN 7u /* */ #define EA_DST_ALLOWED_YES 0x55u /* ʱĿTIOC */ #define EA_DST_ALLOWED_NO 0xaau /* ʱĿTIOC */ diff --git a/TSCP/src/APP/ciapp/Train/TrainDataManage.c b/TSCP/src/APP/ciapp/Train/TrainDataManage.c index b8161de..d35b492 100644 --- a/TSCP/src/APP/ciapp/Train/TrainDataManage.c +++ b/TSCP/src/APP/ciapp/Train/TrainDataManage.c @@ -27,10 +27,8 @@ UINT8 gAtsScreenNum = 0u; TrainAtsScreenStru gszAtsScreenInfo[TRAIN_SUM_MAX] = { 0u }; UINT8 gFlyTrainCnt = 0U; /*ɳ崻г*/ -TrainFlyProtectStru gFlyTrainData[SHUT_DOWN_TRAIN_NUMMAX] = { 0U };/*ɳ崻г*/ +TrainFlyProtectStru gFlyTrainData[SHUT_DOWN_TRAIN_NUMMAX] = { 0 };/*ɳ崻г*/ -UINT8 gNvramFlyTrainCnt = 0U; /*ʹNVRAMλüලЧķɳг*/ -UINT16 gNvramFlyTrainId[SHUT_DOWN_TRAIN_NUMMAX] = { 0U }; /*ʹNVRAMλüලЧķɳгID*/ /** * @brief гǰȫϢгȫλú @@ -311,9 +309,6 @@ UINT8 TrainDataModuleInit(void) gstTrainInfo[chCycle].wTrainPosMonitorInLink = 0U; /*гλüලЧʱlinkΪ0*/ gstTrainInfo[chCycle].dwStartFlyCycNum = 0U; /*ɳ¼ڳʼ*/ gstTrainInfo[chCycle].chEaCmdState = TRAIN_EA_CMD_STATE_INVALID; /*гɢʼΪЧ*/ - gstTrainInfo[chCycle].strJumpBackData.chJumpBackApplyState = TRAIN_JUMP_BACK_STATE_INVALID;/*ʼδ*/ - gstTrainInfo[chCycle].strJumpBackData.chJumpBackReplyState = TRAIN_JUMP_BACK_STATE_NONE;/*ʼĬֵ*/ - gstTrainInfo[chCycle].strJumpBackData.dwJumpBackApplySn = 0U;/*ʼĬк*/ gszTrainId[gTrainSum] = gstTrainInfo[chCycle].wTrainId; gTrainSum++; @@ -2269,6 +2264,7 @@ static void CalHeadTrainSafePosFromUnSafe(UINT16 wTrainId, UINT32 dwHeadDistance pMaxHead.Off = dwTrainHeadOffset; wAcId = GetLinkBelongAcId(wSleepLink); + chSleepStt = GetTrainSleepState(wTrainId); if ((TRAIN_SLEEP_YES == chSleepStt) && (wSleepLink == Temp_TrainSafeLoc.wHeadLink)) { chTempCheckFlag = elm_PrepareACLoc(wAcId, chDir, &tmpACLoc); @@ -2300,7 +2296,7 @@ static void CalHeadTrainSafePosFromUnSafe(UINT16 wTrainId, UINT32 dwHeadDistance } else if ((TRAIN_NVRAM_POS_FLAG_NO != chNvramPosFlag) && (TRAIN_SLEEP_YES != chSleepStt) && (CI_SUCCESS == chTempCheckFlag) && (wTrainHeadLink == Temp_TrainSafeLoc.wHeadLink)) { - /*гȫ߻ѹʹNVRAMλã쵽յ*/ + /*гȫ߻ѹʹNVRAMλãڴǰǰ˵ǰ*/ wHeadAcId = GetLinkBelongAcId(wTrainHeadLink); chTempCheckFlag = elm_PrepareACLoc(wHeadAcId, chDir, &tmpHeadACLoc); @@ -2314,7 +2310,6 @@ static void CalHeadTrainSafePosFromUnSafe(UINT16 wTrainId, UINT32 dwHeadDistance { (void)SetTrainSafeHeadLink(wTrainId, 0U); (void)SetTrainSafeHeadOffset(wTrainId, UINT32_MAX); - ClearTrainSafeHeadDir(wTrainId); SetTrainVirHeadScreenPassFlag(wTrainId, TRAIN_VIR_SCREEN_PASS_FLAG_INVALID); SetTrainVirTailScreenPassFlag(wTrainId, TRAIN_VIR_SCREEN_PASS_FLAG_INVALID); SetTrainFullEnterLjkCycNum(wTrainId, 0U); @@ -2351,7 +2346,6 @@ static void CalHeadTrainSafePosFromUnSafe(UINT16 wTrainId, UINT32 dwHeadDistance /*ȫλڲѯʧ*/ (void)SetTrainSafeHeadLink(wTrainId, 0U); (void)SetTrainSafeHeadOffset(wTrainId, UINT32_MAX); - ClearTrainSafeHeadDir(wTrainId); } } (void)SetTrainSafeHeadFlag(wTrainId); @@ -2431,7 +2425,7 @@ static void CalTailTrainSafePosFromUnSafe(UINT16 trainID, UINT32 tailDistance, } else if ((TRAIN_NVRAM_POS_FLAG_NO != chNvramPosFlag) && (TRAIN_SLEEP_YES != chSleepStt) && (CI_SUCCESS == chTempCheckFlag) && (trainTailLink == strTrainSafeLoc.wTailLink)) { - /*гȫ߻ѹʹNVRAMλã쵽ȥյ*/ + /*гȫ߻ѹʹNVRAMλãСǰ˵ǰ*/ wTailAcId = GetLinkBelongAcId(trainTailLink); chTempCheckFlag = elm_PrepareACLoc(wTailAcId, trainDirection, &tmpTailACLoc); @@ -2445,7 +2439,6 @@ static void CalTailTrainSafePosFromUnSafe(UINT16 trainID, UINT32 tailDistance, { (void)SetTrainSafeTailLink(trainID, 0U); (void)SetTrainSafeTailOffset(trainID, UINT32_MAX); - ClearTrainSafeTailDir(trainID); SetTrainVirHeadScreenPassFlag(trainID, TRAIN_VIR_SCREEN_PASS_FLAG_INVALID); SetTrainVirTailScreenPassFlag(trainID, TRAIN_VIR_SCREEN_PASS_FLAG_INVALID); @@ -2483,7 +2476,6 @@ static void CalTailTrainSafePosFromUnSafe(UINT16 trainID, UINT32 tailDistance, { (void)SetTrainSafeTailLink(trainID, 0U); (void)SetTrainSafeTailOffset(trainID, UINT32_MAX); - ClearTrainSafeTailDir(trainID); } } } @@ -2520,7 +2512,6 @@ static void CalTrainSafePosition(void) UINT8 chSss = 0u; UINT8 chResult = CI_ERROR; UINT32 dwTailDistance = 0U;/*о*/ - UINT8 chTrainIsSwTrackFlag = CI_ERROR;/*г߻ѹ־*/ wTailDis = GetBackProtectMaxLen(); @@ -2558,11 +2549,11 @@ static void CalTrainSafePosition(void) gradeAcc = (FLOAT64)strTrainInfo.WorstGrade / 10.0; chSss = GetTrainStopSteadyState(wTrainId); - chTrainIsSwTrackFlag = CheckTrainIsSwTrack(wTrainId); + chSleepState = GetTrainSleepState(wTrainId); - if ((TRAIN_SS_YES == chSss) && (CI_SUCCESS == chTrainIsSwTrackFlag)) + if ((TRAIN_SS_YES == chSss) && (TRAIN_SLEEP_YES == chSleepState)) { - /*г߻ѹͣ׼ͣȺ󣬳ͷǰΪ0*/ + /*߳ͣ׼ͣȣͨʱͷǰΪ0*/ dwHeadDistance = 0; } else @@ -2646,8 +2637,6 @@ static void CalTrainSafePosition(void) else { /*аȫͨгķǰȫλü*/ - ClearTrainSafeHeadDir(wTrainId); - ClearTrainSafeTailDir(wTrainId); chResult = SetTrainSafeHeadLink(wTrainId, 0u); chResult &= SetTrainSafeHeadOffset(wTrainId, UINT32_MAX); chResult &= SetTrainSafeTailLink(wTrainId, 0u); @@ -2793,9 +2782,6 @@ void ClearTrainInfo(UINT16 wTrainId) gstTrainInfo[wBufIndex].dwStartFlyCycNum = 0U; gstTrainInfo[wBufIndex].chEaCmdState = TRAIN_EA_CMD_STATE_INVALID; /*гɢЧ*/ - gstTrainInfo[wBufIndex].strJumpBackData.chJumpBackApplyState = TRAIN_JUMP_BACK_STATE_INVALID;/*ʼδ*/ - gstTrainInfo[wBufIndex].strJumpBackData.chJumpBackReplyState = TRAIN_JUMP_BACK_STATE_NONE;/*ʼĬֵ*/ - gstTrainInfo[wBufIndex].strJumpBackData.dwJumpBackApplySn = 0U;/*ʼĬк*/ } else { @@ -5109,15 +5095,6 @@ static void TrainScreenProc(void) SetTrainEnterLjkLinkId(wTrainId, wMaxHeadLink); SetTrainVirHeadScreenPassFlag(wTrainId,TRAIN_VIR_SCREEN_PASS_FLAG_VALID); - if (0U == pElmTemp->tailTrainID) - { - SetTrainVirTailScreenPassFlag(wTrainId, TRAIN_VIR_SCREEN_PASS_FLAG_VALID); - } - else - { - ; - } - /*ɸѡͨгλüලЧ*/ SetTrainPosMonitorState(wTrainId, TRAIN_POS_MONITOR_VALID); SetTrainPosMonitorInLink(wTrainId, wMaxHeadLink); @@ -5160,15 +5137,6 @@ static void TrainScreenProc(void) /*ɸ־ЧIVOC޿*/ SetTrainVirTailScreenPassFlag(wTrainId, TRAIN_VIR_SCREEN_PASS_FLAG_VALID); - if (0U == pElmTemp->headTrainID) - { - SetTrainVirHeadScreenPassFlag(wTrainId, TRAIN_VIR_SCREEN_PASS_FLAG_VALID); - } - else - { - ; - } - /*ɸѡͨгλüලЧ*/ SetTrainPosMonitorState(wTrainId, TRAIN_POS_MONITOR_VALID); SetTrainPosMonitorInLink(wTrainId, wMaxHeadLink); @@ -5259,7 +5227,7 @@ static void TrainAtsScreenFst(void) strCfmFst->chFlag = FLAG_SET; strCfmFst->chTiocId = chLocalId; strCfmFst->chStation = strMsgFst->chStation; - strCfmFst->wIndex = strMsgFst->wIndex; + strCfmFst->chIndex = strMsgFst->chIndex; strCfmFst->dwTime = dwCycle; for (chAtsIndex = 0u; chAtsIndex < strMsgFst->chTrainNum; chAtsIndex++) @@ -5357,7 +5325,7 @@ static UINT8 IsAtsFstSndSame(void) if ((strMsgFst->chAtsId == strMsgSnd->chAtsId) && (strMsgFst->chStation == strMsgSnd->chStation) - && (strMsgFst->wIndex == strMsgSnd->wIndex) + && (strMsgFst->chIndex == strMsgSnd->chIndex) && (strMsgFst->chTrainNum == strMsgSnd->chTrainNum)) {/* ATS/վ/վ/гһ */ chRtn = CI_SUCCESS; @@ -5442,7 +5410,7 @@ static void TrainAtsScreenSnd(void) strCfmSnd->chFlag = FLAG_SET; strCfmSnd->chTiocId = chLocalId; strCfmSnd->chStation = strMsgSnd->chStation; - strCfmSnd->wIndex = strMsgSnd->wIndex; + strCfmSnd->chIndex = strMsgSnd->chIndex; strCfmSnd->dwTime = dwCycle; for (chAtsIndex = 0u; chAtsIndex < strMsgSnd->chTrainNum; chAtsIndex++) { @@ -5487,6 +5455,36 @@ static void TrainAtsScreenSnd(void) } } + if (FLAG_UNSET == chFlag) + { + ii = 0u; + szCrcTmp[ii++] = strMsgSnd->chTiocId; + LongToChar(strCfmFst->dwTime, &szCrcTmp[ii]); + ii += 4u; + szCrcTmp[ii++] = strMsgSnd->chTrainNum; + for (chAtsIndex = 0u; chAtsIndex < strMsgSnd->chTrainNum; chAtsIndex++) + { + LongToChar(strMsgSnd->strTrainInfo[chAtsIndex].dwTrainId, &szCrcTmp[ii]); + ii += 4u; + ShortToChar(strMsgSnd->strTrainInfo[chAtsIndex].wLgcId, &szCrcTmp[ii]); + ii += 2u; + } + dwCrc = Tioc_CommonCrc32(szCrcTmp, ii); + if (dwCrc != strMsgSnd->dwCrc32) + {/* CRC32ATSϢCRC32һ */ + strCfmSnd->chOpStatus = CONFIRM_SECOND_CRC; + chFlag = FLAG_SET; + } + else + { + ; + } + } + else + { + ; + } + if (FLAG_UNSET == chFlag) { if (FLAG_SET != strMsgFst->chFlag) @@ -5522,36 +5520,6 @@ static void TrainAtsScreenSnd(void) ; } - if (FLAG_UNSET == chFlag) - { - ii = 0u; - szCrcTmp[ii++] = strMsgSnd->chTiocId; - LongToChar(strCfmFst->dwTime, &szCrcTmp[ii]); - ii += 4u; - szCrcTmp[ii++] = strMsgSnd->chTrainNum; - for (chAtsIndex = 0u; chAtsIndex < strMsgSnd->chTrainNum; chAtsIndex++) - { - LongToChar(strMsgSnd->strTrainInfo[chAtsIndex].dwTrainId, &szCrcTmp[ii]); - ii += 4u; - ShortToChar(strMsgSnd->strTrainInfo[chAtsIndex].wLgcId, &szCrcTmp[ii]); - ii += 2u; - } - dwCrc = Tioc_CommonCrc32(szCrcTmp, ii); - if (dwCrc != strMsgSnd->dwCrc32) - {/* CRC32ATSϢCRC32һ */ - strCfmSnd->chOpStatus = CONFIRM_SECOND_CRC; - chFlag = FLAG_SET; - } - else - { - ; - } - } - else - { - ; - } - ii = 0u; szCrcTmp[ii++] = strMsgFst->chAtsId; LongToChar(strMsgFst->dwTime, &szCrcTmp[ii]); @@ -5571,6 +5539,7 @@ static void TrainAtsScreenSnd(void) {/* ͨȷϳɹ */ strCfmSnd->chOpStatus = CONFIRM_FIRST_SUCCESS; + SetTrainAtsScreenProc(); } else @@ -6851,16 +6820,13 @@ UINT16 GetTrainTailITEScreen(const UINT16 wTrainId, UINT8* devState) * const UINT8 cQueryDir ߼ζӦIJѯ߼ * const UINT8 cLogSecSum ߼ * const UINT16 pLogSecIdBuff[] ߼ID -* const UINT8 cFunctionId ID -* const UINT8 cSendLevel ͼ * UINT8* pHalfRouteSwitchMoveFlag ؽ·ɶ־ * UINT16 *pTrainOccLogSecSum г߼ * UINT16 pTrainOccLogSecID[] г߼ID * ֵ CI_SUCCESSͨ CI_ERROR: 鲻ͨ */ -UINT8 TrainResAndDirCheck(const UINT16 wTrainId, const UINT8 cQueryDir, const UINT8 cLogSecSum, const UINT16 pLogSecIdBuff[], - UINT8* pHalfRouteSwitchMoveFlag, UINT16* pTrainOccLogSecSum, UINT16 pTrainOccLogSecID[], const UINT8 cFunctionId, const UINT8 cSendLevel) +UINT8 TrainResAndDirCheck(const UINT16 wTrainId, const UINT8 cQueryDir, const UINT8 cLogSecSum, const UINT16 pLogSecIdBuff[], UINT8* pHalfRouteSwitchMoveFlag, UINT16* pTrainOccLogSecSum, UINT16 pTrainOccLogSecID[]) { /*ֲʼ*/ UINT8 retVal = CI_ERROR; @@ -6899,24 +6865,16 @@ UINT8 TrainResAndDirCheck(const UINT16 wTrainId, const UINT8 cQueryDir, const UI UINT8 cLogSecLockState = LOG_SECTION_LOCK_NO; /*߼ν·״̬*/ UINT8 cLogSecLogLockState = LOG_SECTION_LOGLOCK_NO; /*߼߼״̬*/ UINT16 wOutLogSecNum = 0U; /*г*/ - UINT8 jj = 0U; - UINT8 kk = 0U; - UINT16 wLockBelongRouteId = 0U; /*߼ν··ID*/ - UINT16 wFstLockedLogSecId = 0U; /*·һյ߼ID*/ - UINT8 chLogSecLockBelLogRouteSum = 0U;/*߼߼·*/ - LogSecLockBelLogRouteStruct* szLogSecLockBelLogRouteData = NULL;/*߼߼·*/ - UINT16 wFstLogLockedLogSecId = 0U; /*·һ߼յ߼ID*/ - UINT8 mm = 0U; /*μ飨гIDݲ飩*/ - if (((DIR_SAME == cQueryDir) || (DIR_CONVERT == cQueryDir)) && (0U != cLogSecSum) && (NULL != pLogSecIdBuff) && ((ESEND_LEVEL_ATS == cSendLevel) || (ESEND_LEVEL_ZERO == cSendLevel))) + if (((DIR_SAME == cQueryDir) || (DIR_CONVERT == cQueryDir)) && (0U != cLogSecSum) && (NULL != pLogSecIdBuff)) { retVal = CI_SUCCESS; cCommStateWithTrain = GetTrainTransitmitStat(wTrainId); if (TRAIN_COMM_STATE_GOOD == cCommStateWithTrain) /*гIDϷж*/ { cTrainMaxTailDir = GetTrainDir_MaxTail(wTrainId); - + if ((DIR_SAME == cTrainMaxTailDir) || (DIR_CONVERT == cTrainMaxTailDir)) { /*ȡгλ*/ @@ -6927,7 +6885,7 @@ UINT8 TrainResAndDirCheck(const UINT16 wTrainId, const UINT8 cQueryDir, const UI strMinTailPoint.wLinkId = GetTrainMinTailLink(wTrainId); strMinTailPoint.dwOffset = GetTrainMinTailOffset(wTrainId); - dwCrossDis = (UINT32)GetSigCrossMaxLen(); + dwCrossDis = (UINT32)GetSigCrossMaxLen(); dwCrossDis = dwCrossDis * 100U; /*ѹתcm*/ cFuncResult = dsuNewLocAndObsByOffsetDis(strMaxTailPoint, dwCrossDis, cTrainMaxTailDir, &strMaxTailCrossPoint, &wSwitchId); /*гλãͷһѹ*/ @@ -6945,7 +6903,7 @@ UINT8 TrainResAndDirCheck(const UINT16 wTrainId, const UINT8 cQueryDir, const UI { cErrStep = 2U; retVal = CI_ERROR; /*쳣0ʧ*/ - } + } if (CI_SUCCESS == retVal) { @@ -6970,12 +6928,12 @@ UINT8 TrainResAndDirCheck(const UINT16 wTrainId, const UINT8 cQueryDir, const UI retVal = CI_ERROR; /*г߼Ƿ0ʧ*/ } } - else if ((0U != cLocalCiId) && (0U != cMaxHeadBelongCiId) && (0U != cMinTailBelongCiId) + else if((0U != cLocalCiId) && (0U != cMaxHeadBelongCiId) && (0U != cMinTailBelongCiId) && (cLocalCiId != cMaxHeadBelongCiId) && (cLocalCiId != cMinTailBelongCiId)) { cTrianAllInOtherRcFlag = FLAG_SET; /*гȫڱִ*/ } - else + else { cErrStep = 3U; retVal = CI_ERROR; /*ȡʧܣ0ʧ*/ @@ -6993,7 +6951,7 @@ UINT8 TrainResAndDirCheck(const UINT16 wTrainId, const UINT8 cQueryDir, const UI wMaxTailLinkId = GetTrainMaxTailLink(wTrainId); cLogSecIncLinkNum = GetSecIntrudeLinkSum(pLogSecIdBuff[0]); pLogSecIncLinkId = GetSecIntrudeLinkIdBuf(pLogSecIdBuff[0]); - + if ((CI_ERROR != wMaxTailLinkId) && (NULL != pLogSecIncLinkId) && (0U < cLogSecIncLinkNum) && (LOGSEC_INCLUDE_LINK_SUM_MAX >= cLogSecIncLinkNum)) { strCurPoint.Lnk = pLogSecIncLinkId[0U]; @@ -7041,7 +6999,7 @@ UINT8 TrainResAndDirCheck(const UINT16 wTrainId, const UINT8 cQueryDir, const UI if (CI_SUCCESS == retVal) { cHrSwitchMoveFlag = ROUTE_HALF_SWITCH_MOVE_VALID; - retVal = CI_SUCCESS; + retVal = CI_SUCCESS; } else @@ -7090,146 +7048,6 @@ UINT8 TrainResAndDirCheck(const UINT16 wTrainId, const UINT8 cQueryDir, const UI { /*ʧ*/ } - - if (CI_SUCCESS == retVal) - { - /*߼εĽ··ĵһ߼Ƿ*/ - for (jj = 0U; jj < cLogSecSum; jj++) - { - wLockBelongRouteId = GetLogSecLockBelongRoute(pLogSecIdBuff[jj]); - wFstLockedLogSecId = GetRouteFirstLockedLogSecId(wLockBelongRouteId); /*ȡ·ڷһյ߼ID*/ - if (0U != wFstLockedLogSecId) - { - for (kk = 0U; kk < cLogSecSum; kk++) - { - /*߼Ƿ*/ - if (wFstLockedLogSecId == pLogSecIdBuff[kk]) - { - break; - } - else - { - /**/ - } - } - - if (kk == cLogSecSum) - { - retVal = CI_ERROR; - break; /*δ·ڷһյ߼Σֹͣʧ*/ - } - else - { - /**/ - } - } - else - { - /*գ*/ - } - } - - if (CI_SUCCESS == retVal) - { - /*ͨ*/ - } - else - { - cLogSecLockState = GetLogSecLockState(wFstLockedLogSecId); - SetErrorData(cFunctionId, CI_DEVICE_TYPE_LOGICSEC, wFstLockedLogSecId, ETYPE_LOGSEC_LOCK_STATE, cLogSecLockState, cSendLevel); - cErrStep = 6U; - retVal = CI_ERROR; /*ʧ*/ - } - } - else - { - SetErrorData(cFunctionId, CI_SYSTEM_TYPE_VOBC, (wTrainId & 0x00FFU), ETYPE_PART_ROUTE_RES, 0U, cSendLevel); - /**/ - } - - if (CI_SUCCESS == retVal) - { - /*߼εĽ·߼·ĵһ߼Ƿ*/ - for (jj = 0U; jj < cLogSecSum; jj++) - { - chLogSecLockBelLogRouteSum = GetLogSecLockBelLogRouteSum(pLogSecIdBuff[jj]); - szLogSecLockBelLogRouteData = GetLogSecLockBelLogRouteData(pLogSecIdBuff[jj]); - - if (NULL != szLogSecLockBelLogRouteData) - { - for (mm = 0U; mm < chLogSecLockBelLogRouteSum; mm++) - { - wFstLogLockedLogSecId = GetLogRouteFirLogLockLogId(szLogSecLockBelLogRouteData[mm].wLogSecLockBelLogRouteId); - if (0U != wFstLogLockedLogSecId) - { - for (kk = 0U; kk < cLogSecSum; kk++) - { - /*߼Ƿ*/ - if (wFstLogLockedLogSecId == pLogSecIdBuff[kk]) - { - break; - } - else - { - /**/ - } - } - - if (kk == cLogSecSum) - { - retVal = CI_ERROR; - break; /*δ߼·ڷһյ߼Σֹͣʧ*/ - } - else - { - /**/ - } - } - else - { - /*գ*/ - } - - if (CI_ERROR == retVal) - { - break; - } - else - { - ; /**/ - } - } - } - else - { - retVal = CI_ERROR; - } - if (CI_ERROR == retVal) - { - break; - } - else - { - ; /**/ - } - } - - if (CI_SUCCESS == retVal) - { - /*ͨ*/ - } - else - { - cLogSecLogLockState = GetLogSecLogLockState(wFstLogLockedLogSecId); - SetErrorData(cFunctionId, CI_DEVICE_TYPE_LOGICSEC, wFstLogLockedLogSecId, ETYPE_LOGSEC_LOCK_STATE, cLogSecLogLockState, cSendLevel); - cErrStep = 7U; - retVal = CI_ERROR; /*ʧ*/ - } - } - else - { - /**/ - } } else if (CI_ERROR != cCommStateWithTrain) { @@ -7237,7 +7055,7 @@ UINT8 TrainResAndDirCheck(const UINT16 wTrainId, const UINT8 cQueryDir, const UI } else { - /*Чֱӷسɹ*/ + /*Чֱӷسɹ*/ } } else @@ -7251,7 +7069,7 @@ UINT8 TrainResAndDirCheck(const UINT16 wTrainId, const UINT8 cQueryDir, const UI *pHalfRouteSwitchMoveFlag = cHrSwitchMoveFlag; if (ROUTE_HALF_SWITCH_MOVE_VALID == cHrSwitchMoveFlag) { - /*ɶ¼г߼*/ + /*ɶ¼г߼*/ debug_infor_printf((const)"Dynamic Route TrainOccLogSecID["); for (i = 0U; i < wTrainMinTMaxHLogNum; i++) { @@ -7279,7 +7097,7 @@ UINT8 TrainResAndDirCheck(const UINT16 wTrainId, const UINT8 cQueryDir, const UI } else { - /*1-ηǷ2-гʧܣ3-ȡг߼ʧܣ4-ȡгlinkʧܣ5-߼згƥ䣻6-δ߼·ĵһյ߼*/ + /*1-ηǷ2-гʧܣ3-ȡг߼ʧܣ4-ȡгlinkʧܣ5-߼згƥ*/ debug_infor_printf((const)"Dynamic Route TrainResAndDirCheck ErrStep[%d]\n", cErrStep); } @@ -7306,18 +7124,13 @@ void TrainResRecycle(void) UINT8 trainOTStat = 0U; UINT16 routeInTrainId[LOGIC_SECTION_RES_SUM_MAX] = { 0U }; UINT8 chTrainSleepState = 0U;/*г״̬*/ - UINT16 wStartSigID = 0U; - UINT16 wLightUpTrainID = 0U;/*гID*/ - UINT8 chLocalCiType = 0U; /**/ - UINT8 chDelete = 0U; - UINT8 chRouteState = 0U; + localCiId = GetSystemParaLocalCiId(); routeCurSum = GetRouteCurSum(); /*ȡ·*/ - chLocalCiType = GetLocalCiType(); - /*·*/ + /*·*/ for (ii = 0u; ii < routeCurSum; ii++) { - + routeId = GetRouteId(ii); /*ȡ·ID*/ routeBelongCiId = GetRouteBelongCiId(routeId); /*ȡ·ID*/ @@ -7327,62 +7140,27 @@ void TrainResRecycle(void) funcRetval = RouteAllLockCheck(routeId); /*ȡҪ·гϢ*/ funcRetval &= GetRouteReadyEnterTrainInfo(routeId, &routeInTrainNum, routeInTrainId); - wStartSigID = GetRouteStartSignalId(routeId); - chRouteState = GetRouteState(routeId); - if (0U < wStartSigID) - { - wLightUpTrainID = GetSignalLightUpTrainId(wStartSigID); - } - else - { - wLightUpTrainID = 0U; - } + if (CI_SUCCESS == funcRetval) { for (trainIndex = 0U; trainIndex < routeInTrainNum; trainIndex++) { - chDelete = CI_SUCCESS; - trainOTStat = GetTrainResRecycleOTStat(routeInTrainId[trainIndex]); + trainOTStat=GetTrainResRecycleOTStat(routeInTrainId[trainIndex]); chTrainSleepState = GetTrainSleepState(routeInTrainId[trainIndex]); - if ((0U < wLightUpTrainID) - &&((ROUTE_STATE_YUXIAN_OPEN == chRouteState) ||(ROUTE_STATE_NEAR_OPEN == chRouteState))) - { - if (((routeInTrainId[trainIndex] & 0x00ffU) != wLightUpTrainID)&&(CI_TYPE_CLD == chLocalCiType)) - { - /*ڽӽɾηӽԴ*/ - chDelete = CI_ERROR; - } - else - { - ; /**/ - } - } - if ((CI_SUCCESS == chDelete)&&(CI_SUCCESS == trainOTStat) && (TRAIN_SLEEP_YES !=chTrainSleepState)) + if ((CI_SUCCESS == trainOTStat) && (TRAIN_SLEEP_YES !=chTrainSleepState)) { /*ȡ·ӽǷпг*/ funcRetval = GetRouteSuspiciousInNearSec(routeId); if (CI_SUCCESS == funcRetval) { /*ԴȡʱʱҲΪ߳ŻԴ߳Դ*/ - chDelete = CI_ERROR; + RemoveRouteInCiRes(routeId, routeInTrainId[trainIndex]); /*ɾг·Դ*/ } else { ; } } - else - { - ; /*Դ*/ - } - if (CI_ERROR == chDelete) - { - RemoveRouteInCiRes(routeId, routeInTrainId[trainIndex]); /*ɾг·Դ*/ - } - else - { - ; /*Դ*/ - } } } else @@ -7600,7 +7378,7 @@ UINT8 CheckTrainDirToOtherPointDir(LOD_STRU pMaxHead,LOD_STRU pMinHead,LOD_STRU dwlen_tomaxtail = dsuLenByPoint_GetDir(&pMinTail, &pMaxTail, &linknum_MaxTail, linkID_maxtail, &dirToMaxTail, &changerPNumtoMaxTail); if ((UINT32_MAX != dwlen_tomaxhead) && (UINT32_MAX != dwlen_tominhead) && (UINT32_MAX != dwlen_tomaxtail) - && (dwlen_tomaxhead > dwlen_tominhead) && (dwlen_tomaxhead > dwlen_tomaxtail)) + && (dwlen_tomaxhead > dwlen_tominhead) && (dwlen_tominhead > dwlen_tomaxtail)) { if ((0u != linknum_MaxHead) && (0u != linknum_MinHead) && (0u != linknum_MaxTail) @@ -7611,17 +7389,14 @@ UINT8 CheckTrainDirToOtherPointDir(LOD_STRU pMaxHead,LOD_STRU pMinHead,LOD_STRU } else { - debug_infor_printf((const)"\nCheckTrainDirToOtherPointDir ERR\n"); chRetVal = CI_ERROR; } } else { - debug_infor_printf((const)"\nCheckTrainDirToOtherPointDir ERR\n"); chRetVal = CI_ERROR; } } - return chRetVal; } @@ -9780,8 +9555,6 @@ void TrainPosMonitorProc(void) UINT16* pPhySecIncAxleSecId = NULL; /*ΰļ*/ UINT8 cPreMonitorState = TRAIN_POS_MONITOR_INVALID; /*һгλüල״̬*/ UINT8 cMonitorFailState = TRAIN_POS_MONITOR_INVALID; /*ʧܺҪõļල״̬*/ - UINT8 chAgTrainLeaveAgCheck = 0U; - UINT8 chNvramFlag = 0U; for (cTrainIndex = 0U; cTrainIndex < TRAIN_SUM_MAX; cTrainIndex++) { @@ -9835,10 +9608,9 @@ void TrainPosMonitorProc(void) { /*δгID*/ } - chNvramFlag = GetTrainNvramPosFlag(wTrainId); + /*2.гλüල־*/ - if (((TRAIN_POS_MONITOR_DIFF == cMonitorFailState) || (TRAIN_POS_MONITOR_DIFF == cPreMonitorState)) - && (TRAIN_NVRAM_POS_FLAG_NO != chNvramFlag)) + if ((TRAIN_POS_MONITOR_DIFF == cMonitorFailState) || (TRAIN_POS_MONITOR_DIFF == cPreMonitorState)) { SetTrainPosMonitorState(wTrainId, TRAIN_POS_MONITOR_DIFF); /*гȫڼලlinkһڼල״̬λòһ£üලλòһ*/ } @@ -9852,20 +9624,11 @@ void TrainPosMonitorProc(void) /*3.гǰɸѡ־*/ if (TRAIN_POS_MONITOR_VALID == cPreMonitorState) { - chAgTrainLeaveAgCheck = AgTrainLeaveAgCheck(wTrainPosMonitorInLink); - if (CI_ERROR == chAgTrainLeaveAgCheck) - { - /*гλüල״̬ЧЧгǰɸѡ־*/ - SetTrainVirHeadScreenPassFlag(wTrainId, TRAIN_VIR_SCREEN_PASS_FLAG_INVALID); - SetTrainVirTailScreenPassFlag(wTrainId, TRAIN_VIR_SCREEN_PASS_FLAG_INVALID); - SetTrainEnterLjkLinkId(wTrainId, 0U); - SetTrainFullEnterLjkCycNum(wTrainId, 0U); - } - else - { - /*гAGʻֻںţɸѡ־*/ - SetTrainFullEnterLjkCycNum(wTrainId, 0U); - } + /*гλüල״̬ЧЧгǰɸѡ־*/ + SetTrainVirHeadScreenPassFlag(wTrainId, TRAIN_VIR_SCREEN_PASS_FLAG_INVALID); + SetTrainVirTailScreenPassFlag(wTrainId, TRAIN_VIR_SCREEN_PASS_FLAG_INVALID); + SetTrainEnterLjkLinkId(wTrainId, 0U); + SetTrainFullEnterLjkCycNum(wTrainId, 0U); } else { @@ -10409,9 +10172,6 @@ UINT8 AGTrainPosMonitorOccCheck(const UINT16 wAGLinkId) UINT16 wDGLinkId = 0U; /*DGlink*/ UINT16 wDGAxleSecId = 0U; UINT8 cDGAxleSecOccState = AXIS_SECTION_OCCUPY_YES; /*DGβɼռ״̬*/ - UINT16 wBGPhySecId = 0U; - UINT8 cBGPreOccState = 0U; /*BG֮ǰɼռ״̬*/ - UINT8 cBGCurOccState = 0U; /*BGǰɼռ״̬*/ wLinkIndex = GetLinkIndexById(wAGLinkId); if ((0U < wLinkIndex) && (LINK_SUM_MAX > wLinkIndex)) @@ -10457,29 +10217,17 @@ UINT8 AGTrainPosMonitorOccCheck(const UINT16 wAGLinkId) } else { - /*CGDG+BGIJɼռ״̬*/ + /*CGDGIJɼռ״̬*/ wDGAxleSecId = GetLinkBelongAcId(wDGLinkId); cDGAxleSecOccState = GetAxisOccupyState(wDGAxleSecId); /*ȡDGβɼռ״̬*/ if (AXIS_SECTION_OCCUPY_NO == cDGAxleSecOccState) { - /*DGռãBGռ״̬*/ - wBGPhySecId = GetLinkRelatedPhySec(wAGRelBGLinkId); - cBGPreOccState = GetPhySecPreOccupyState(wBGPhySecId); - cBGCurOccState = GetPhySecCurOccupyState(wBGPhySecId); - if ((SECTION_OCCUPY_NO == cBGPreOccState) && (SECTION_OCCUPY_YES == cBGCurOccState)) - { - cRetVal = CI_ERROR; /*BGɿеռãʧ*/ - } - else - { - cRetVal = CI_SUCCESS; /*DG޲ɼռãسɹ*/ - } + cRetVal = CI_SUCCESS; /*DG޲ɼռãسɹ*/ } else { cRetVal = CI_ERROR; /*DGڲɼռãʧ*/ } - } } else @@ -11099,537 +10847,3 @@ UINT8 GetTrainEaCmdState(const UINT16 wTrainId) return cRetVal; } - -/* -* Գ߷ԳڼɳϢ -* ˵ -* ֵ -* Created By LQ 2025.04.02 -*/ -void ScxClearFlyProtectInfo(void) -{ - UINT8 ii = 0U; - - /*гɳʼ*/ - for (ii = 1U; ii < TRAIN_SUM_MAX; ii++) - { - gstTrainInfo[ii].dwStartFlyCycNum = 0U; - } - - /*ɳ崻гϢ*/ - gFlyTrainCnt = 0U; - (void)CommonMemSet(&gFlyTrainData, (UINT32)(SHUT_DOWN_TRAIN_NUMMAX * sizeof(TrainFlyProtectStru)), 0U, (UINT32)(SHUT_DOWN_TRAIN_NUMMAX * sizeof(TrainFlyProtectStru))); - - /*ɳ崻ʼ*/ - gFlyProtectOverCyc = 0U; -} - -/* -* AGгʻAG -* ˵const UINT16 wLinkId link ID -* ֵCI_ERROR AGгʻAG -* CI_SUCCESS AGгʻAG -* BY CGH 202050718 -*/ -UINT8 AgTrainLeaveAgCheck(const UINT16 wLinkId) -{ - UINT8 chRetVal = CI_ERROR; - UINT8 chAGorBGAttr = 0U;/*ABG*/ - UINT16 wAGRelBGLinkId = 0U; /*AGLinkBGlink*/ - UINT16 wAGRelOrgLinkId = 0U; /*AGlink*/ - UINT16 wAGRelTmlLinkId = 0U; /*AGյlink*/ - UINT8 chOrgLinkAttr = LINK_REL_PHYSEC_DEFAULT; - UINT8 chTmlLinkAttr = LINK_REL_PHYSEC_DEFAULT; - UINT16 wAGAxleSecId = 0U; /*AGID*/ - UINT16 wDGLinkId = 0U; /*DGlink*/ - UINT16 wDGAxleSecId = 0U;/*DGID*/ - UINT16 wBGAxleSecId = 0U;/*BGID*/ - UINT8 chSecRelEnvelopeCnt = 0U; /*ιĿ*/ - UINT16 szSecEnvelopeIds[SECTION_REL_ENVELOPE_SUM_MAX] = { 0U }; /*ι*/ - const EnvelopeStruct* pTempDgEnvelope = NULL; /*DG*/ - UINT8 chAgRelEnvelopeCnt = 0U; /*AGĿ*/ - UINT16 szAgEnvelopeIds[SECTION_REL_ENVELOPE_SUM_MAX] = { 0U }; /*AG*/ - const EnvelopeStruct* pTempAgEnvelope = NULL; /*AG*/ - UINT8 chVirHeadScreenPassFlag = 0U; /*ǰɸ־*/ - UINT8 chVirTailScreenPassFlag = 0U; /*ɸ־*/ - UINT8 ii = 0U; - UINT32 errorCode = 0U; - - chAGorBGAttr = GetLinkRelPhySecAGorBGAttr(wLinkId); /*ȡAG/BG*/ - - if (LINK_REL_PHYSEC_AG == chAGorBGAttr) - { - wAGAxleSecId = GetLinkBelongAcId(wLinkId); - wAGRelOrgLinkId = GetLinkOrgnJointMainLkIdById(wLinkId); - wAGRelTmlLinkId = GetLinkTmnlJointMainLkById(wLinkId); - chOrgLinkAttr = GetLinkRelPhySecAGorBGAttr(wAGRelOrgLinkId); - chTmlLinkAttr = GetLinkRelPhySecAGorBGAttr(wAGRelTmlLinkId); - - if (LINK_REL_PHYSEC_BG == chOrgLinkAttr) - { - wAGRelBGLinkId = wAGRelOrgLinkId; - wDGLinkId = wAGRelTmlLinkId; - } - else if (LINK_REL_PHYSEC_BG == chTmlLinkAttr) - { - wAGRelBGLinkId = wAGRelTmlLinkId; - wDGLinkId = wAGRelOrgLinkId; - } - else - { - /*AGBGδֱCG*/ - } - - if (0U != wAGRelBGLinkId) - { - /*CG*/ - chAgRelEnvelopeCnt = elm_GetEnvelopeIDsInAC(wAGAxleSecId, szAgEnvelopeIds); - if (1U == chAgRelEnvelopeCnt) - { - pTempDgEnvelope = elm_GetEnvelopeInfoByID(szAgEnvelopeIds[0]); - - if (NULL != pTempDgEnvelope) - { - wDGAxleSecId = GetLinkBelongAcId(wDGLinkId); - wBGAxleSecId = GetLinkBelongAcId(wAGRelBGLinkId); - - for (ii = 0U; ii < pTempDgEnvelope->ACCnt; ii++) - { - if (wBGAxleSecId == pTempDgEnvelope->ACID[ii]) - { - /*ǰ쵽BG*/ - break; - } - else - { - ; /**/ - } - } - - if (ii == pTempDgEnvelope->ACCnt) - { - /* ȡDGİ */ - chSecRelEnvelopeCnt = elm_GetEnvelopeIDsInAC(wDGAxleSecId, szSecEnvelopeIds); - } - else - { - /* ȡBGİ */ - chSecRelEnvelopeCnt = elm_GetEnvelopeIDsInAC(wBGAxleSecId, szSecEnvelopeIds); - } - - - if ((1U == chSecRelEnvelopeCnt) && (szSecEnvelopeIds[0] == szAgEnvelopeIds[0])) - { - chVirHeadScreenPassFlag = GetTrainVirHeadScreenPassFlag(pTempDgEnvelope->trainID[0]); - chVirTailScreenPassFlag = GetTrainVirTailScreenPassFlag(pTempDgEnvelope->trainID[0]); - - if (((0U == pTempDgEnvelope->headTrainID) || ((pTempDgEnvelope->endPos.Lnk == wLinkId) && (TRAIN_VIR_SCREEN_PASS_FLAG_VALID == chVirHeadScreenPassFlag))) && - ((0U == pTempDgEnvelope->tailTrainID) || ((pTempDgEnvelope->startPos.Lnk == wLinkId) && (TRAIN_VIR_SCREEN_PASS_FLAG_VALID == chVirTailScreenPassFlag)))) - { - /*޿ɣʻ - ųɸѡ־λüල֮󣬵DGͬʱռãCTӿɵʱɸѡ־ЧģΪ޿ɣ*/ - chRetVal = CI_SUCCESS; - } - else - { - errorCode += 0x04000000U; - } - } - else - { - /*طAGгʻ*/ - errorCode += 0x08000000U; - } - } - else - { - /*طAGгʻ*/ - errorCode += 0x10000000U; - } - } - else - { - /*طAGгʻ*/ - errorCode += 0x20000000U; - } - } - else - { - errorCode += 0x40000000U; - } - } - else - { - /*AG*/ - errorCode += 0x80000000U; - } - - debug_infor_printf((const)"\nAgTrainLeaveAgCheck Error errorCode:0x%08x\n", errorCode); - - return chRetVal; -} - -/* -* ָгԾ״̬ -* ˵const UINT16 wTrainId гID -* const UINT8 chJumpBackReplyState Ծ״̬ -* ֵ -* by fan 20250725 -*/ -void SetTrainJumpBackReplyState(const UINT16 wTrainId, const UINT8 chJumpBackReplyState) -{ - UINT16 wBufIndex = 0U; - - wBufIndex = GetTrainBufIndex(wTrainId); - - if (TRAIN_SUM_MAX > wBufIndex) - { - if ((TRAIN_JUMP_BACK_STATE_VALID == chJumpBackReplyState) || (TRAIN_JUMP_BACK_STATE_INVALID == chJumpBackReplyState) - || (TRAIN_JUMP_BACK_STATE_NONE == chJumpBackReplyState)) - { - gstTrainInfo[wBufIndex].strJumpBackData.chJumpBackReplyState = chJumpBackReplyState; - } - else - { - /**/ - } - } - else - { - /**/ - } -} - -/* -* ȡָгԾ״̬ -* ˵const UINT16 wTrainId гID -* ֵ0x55 0xAA 0x00 /Ĭֵ -* by fan 20250725 -*/ -UINT8 GetTrainJumpBackReplyState(const UINT16 wTrainId) -{ - UINT8 cRetVal = TRAIN_JUMP_BACK_STATE_NONE; - UINT16 wBufIndex = 0U; - - wBufIndex = GetTrainBufIndex(wTrainId); - - if (TRAIN_SUM_MAX > wBufIndex) - { - cRetVal = gstTrainInfo[wBufIndex].strJumpBackData.chJumpBackReplyState; - } - else - { - /*Ĭֵ*/ - } - - return cRetVal; -} -/* -* ָгԾ״̬ -* ˵const UINT16 wTrainId гID -* const UINT8 chJumpBackApplyState Ծ״̬ -* ֵ -* by fan 20250725 -*/ -void SetTrainJumpBackApplyState(const UINT16 wTrainId, const UINT8 chJumpBackApplyState) -{ - UINT16 wBufIndex = 0U; - - wBufIndex = GetTrainBufIndex(wTrainId); - - if (TRAIN_SUM_MAX > wBufIndex) - { - if ((TRAIN_JUMP_BACK_STATE_VALID == chJumpBackApplyState) || (TRAIN_JUMP_BACK_STATE_INVALID == chJumpBackApplyState)) - { - gstTrainInfo[wBufIndex].strJumpBackData.chJumpBackApplyState = chJumpBackApplyState; - } - else - { - /**/ - } - } - else - { - /**/ - } -} - -/* -* ȡָгԾ״̬ -* ˵const UINT16 wTrainId гID -* ֵ0x55 0xAA δ -* by fan 20250725 -*/ -UINT8 GetTrainJumpBackApplyState(const UINT16 wTrainId) -{ - UINT8 cRetVal = TRAIN_JUMP_BACK_STATE_INVALID; - UINT16 wBufIndex = 0U; - - wBufIndex = GetTrainBufIndex(wTrainId); - - if (TRAIN_SUM_MAX > wBufIndex) - { - cRetVal = gstTrainInfo[wBufIndex].strJumpBackData.chJumpBackApplyState; - } - else - { - /*Ĭֵ*/ - } - - return cRetVal; -} -/* -* ָгԾк -* ˵const UINT16 wTrainId гID -* const UINT32 dwJumpBackSNԾк -* ֵ -* by fan 20250725 -*/ -void SetTrainJumpBackApplySN(const UINT16 wTrainId, const UINT32 dwJumpBackSN) -{ - UINT16 wBufIndex = 0U; - - wBufIndex = GetTrainBufIndex(wTrainId); - - if (TRAIN_SUM_MAX > wBufIndex) - { - gstTrainInfo[wBufIndex].strJumpBackData.dwJumpBackApplySn = dwJumpBackSN; - } - else - { - /**/ - } -} - -/* -* ȡָгԾк -* ˵const UINT16 wTrainId гID -* ֵUINT32 к -* by fan 20250725 -*/ -UINT32 GetTrainJumpBackApplySN(const UINT16 wTrainId) -{ - UINT32 dwRetVal = 0U; - UINT16 wBufIndex = 0U; - - wBufIndex = GetTrainBufIndex(wTrainId); - - if (TRAIN_SUM_MAX > wBufIndex) - { - dwRetVal = gstTrainInfo[wBufIndex].strJumpBackData.dwJumpBackApplySn; - } - else - { - /*Ĭֵ*/ - } - - return dwRetVal; -} - -/* -* гȫͷ -* ˵ const UINT16 wTrainId, гID -* ֵ void -* by cgh 20250818 -*/ -void ClearTrainSafeHeadDir(const UINT16 wTrainId) -{ - UINT16 wBufIndex = 0U; - - wBufIndex = GetTrainBufIndex(wTrainId); - if (TRAIN_SUM_MAX > wBufIndex) - { - gstTrainInfo[wBufIndex].strSafeLoc.chHeadDir = 0U; - } - else - { - ; - } -} - -/* -* гȫβ -* ˵ const UINT16 wTrainId, гID -* ֵ void -* by cgh 20250818 -*/ -void ClearTrainSafeTailDir(const UINT16 wTrainId) -{ - UINT16 wBufIndex = 0U; - - wBufIndex = GetTrainBufIndex(wTrainId); - if (TRAIN_SUM_MAX > wBufIndex) - { - gstTrainInfo[wBufIndex].strSafeLoc.chTailDir = 0U; - } - else - { - ; - } -} - -/* -* гǷȫͬһ߻ѹ -* ˵ const UINT16 wTrainId, гID -* ֵ CI_ERROR: гȫͬһ߻ѹ -* CI_SUCCESS: гȫͬһ߻ѹ -* by cgh 20250915 -*/ -UINT8 CheckTrainIsSwTrack(const UINT16 wTrainId) -{ - UINT8 chRetVal = CI_ERROR; - UINT16 wBufIndex = 0U; - UINT8 chSleepFlag = 0U; /*߹жϱ־*/ - - wBufIndex = GetTrainBufIndex(wTrainId); - - if (TRAIN_SUM_MAX > wBufIndex) - { - if ((gstTrainInfo[wBufIndex].wTrainMinTailLink == gstTrainInfo[wBufIndex].wTrainMaxHeadLink) - && (0U < gstTrainInfo[wBufIndex].wTrainMaxHeadLink) && (LINK_SUM_MAX > gstTrainInfo[wBufIndex].wTrainMaxHeadLink)) - { - chSleepFlag = IsLinkSwTrack(gstTrainInfo[wBufIndex].wTrainMaxHeadLink); - - if (CI_SUCCESS == chSleepFlag) - { - chRetVal = CI_SUCCESS; - } - else - { - ; - } - } - else - { - ; /*ȫͬһ߻ѹ*/ - } - } - else - { - ; - } - - return chRetVal; -} - -/* -* гǷΪ׷UT -* ˵ const UINT16 wEnvelopeID, ID -* ֵ CI_ERROR: -* CI_SUCCESS: -* by cgh 20250915 -*/ -UINT8 CheckTrainIsFollowUt(const UINT16 wEnvelopeID) -{ - UINT8 chRetVal = CI_ERROR; - UINT8 chNoCGFollowUtSwitch = 0U; - const EnvelopeStruct* pEnvelop = NULL; - UINT8 chTrainHeadRelAbgAttr = 0U; /*гͷACG*/ - UINT8 chTrainTailRelAbgAttr = 0U; /*гβACG*/ - - chNoCGFollowUtSwitch = GetNoCGFollowUtSwitch(); - if (FUNC_SWITCH_ON == chNoCGFollowUtSwitch) - { - pEnvelop = elm_GetEnvelopeInfoPtr(wEnvelopeID); - - if (NULL != pEnvelop) - { - chTrainHeadRelAbgAttr = GetLinkRelPhySecAGorBGAttr(pEnvelop->endPos.Lnk); - chTrainTailRelAbgAttr = GetLinkRelPhySecAGorBGAttr(pEnvelop->startPos.Lnk); - - if ((LINK_REL_PHYSEC_AG == chTrainHeadRelAbgAttr) || (LINK_REL_PHYSEC_BG == chTrainHeadRelAbgAttr) - || (LINK_REL_PHYSEC_AG == chTrainTailRelAbgAttr) || (LINK_REL_PHYSEC_BG == chTrainTailRelAbgAttr)) - { - chRetVal = CI_SUCCESS; - } - else - { - ; /*ȫABG*/ - } - } - else - { - - } - } - else - { - ; /*ܿعر*/ - } - - return chRetVal; -} - -/* -* ȡʹNVRAMλüලЧķɳID -* ˵UINT8 chIndex -* ֵUINT16* gNvramFlyTrainId ʹNVRAMλüලЧķɳID -* Created By LQ 2025.09.15 -*/ -UINT16* GetNvramFlyProtectId(void) -{ - return gNvramFlyTrainId; -} - -/* -* ȡʹNVRAMλüලЧķɳ -* ˵ -* ֵUINT8 gNvramFlyTrainCnt ʹNVRAMλüලЧķɳ -* Created By LQ 2025.09.15 -*/ -UINT8 GetNvramFlyProtectNum(void) -{ - return gNvramFlyTrainCnt; -} - -/** -* ʹNVRAMλüලЧķɳ -* ˵UINT16 wTrainID гID -* ֵ -* Created By LQ 2025.09.15 -*/ -void AddNvramFlyingTrain(UINT16 wTrainID) -{ - UINT8 ii = 0U; - - if (SHUT_DOWN_TRAIN_NUMMAX > gNvramFlyTrainCnt) - { - for (ii = 0U; ii < gNvramFlyTrainCnt; ii++) - { - if (gNvramFlyTrainId[ii] == wTrainID) - { - break; /*Ѵڣֹͣ*/ - } - else - { - /*Ƚ*/ - } - } - - if (ii == gNvramFlyTrainCnt) - { - gNvramFlyTrainId[gNvramFlyTrainCnt] = wTrainID; - gNvramFlyTrainCnt++; - } - else - { - ; /*ӣظ*/ - } - } - else - { - ; /**/ - } -} - -/** -* ʹNVRAMλüලЧķɳ -* ˵ -* ֵ -* Created By LQ 2025.09.15 -*/ -void ClearNvramFlyingTrain(void) -{ - gNvramFlyTrainCnt = 0U; - (void)CommonMemSet(gNvramFlyTrainId, (UINT32)(sizeof(UINT16) * SHUT_DOWN_TRAIN_NUMMAX), 0U, (UINT32)(sizeof(UINT16) * SHUT_DOWN_TRAIN_NUMMAX)); -} \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/Train/TrainDataManage.h b/TSCP/src/APP/ciapp/Train/TrainDataManage.h index ec183b6..bd74db8 100644 --- a/TSCP/src/APP/ciapp/Train/TrainDataManage.h +++ b/TSCP/src/APP/ciapp/Train/TrainDataManage.h @@ -184,14 +184,6 @@ typedef struct S_TrainIteDataStruct UINT16 wBackOffset; /*λcm*/ } TrainIteDataStruct; -/*ԾϢṹ*/ -typedef struct S_JumpBackInfoStru -{ - UINT8 chJumpBackApplyState; /*Ծ״̬*/ - UINT8 chJumpBackReplyState; /*Ծظ״̬*/ - UINT32 dwJumpBackApplySn; /*Ծк*/ -}JumpBackInfoStru; - /*гϢṹ*/ typedef struct S_TrainInfoStru { @@ -275,7 +267,6 @@ typedef struct S_TrainInfoStru UINT16 wTrainPosMonitorInLink; /*гλüලЧʱlink*/ UINT32 dwStartFlyCycNum; /*гɳʼں*/ UINT8 chEaCmdState; /*ɢ״̬*/ - JumpBackInfoStru strJumpBackData; /*гԾ*/ }TrainInfoStru; /*̬Խṹ*/ @@ -311,9 +302,6 @@ extern TrainAtsScreenStru gszAtsScreenInfo[TRAIN_SUM_MAX]; extern UINT8 gFlyTrainCnt; extern TrainFlyProtectStru gFlyTrainData[SHUT_DOWN_TRAIN_NUMMAX]; -extern UINT8 gNvramFlyTrainCnt; /*ʹNVRAMλüලЧķɳг*/ -extern UINT16 gNvramFlyTrainId[SHUT_DOWN_TRAIN_NUMMAX]; /*ʹNVRAMλüලЧķɳгID*/ - /*================================================================================== *ܣʼгϢṹ塣 *úʵгϢṹijʼ @@ -1487,16 +1475,13 @@ extern UINT8 IsTrainPosValid(const UINT16 wTrainId); * const UINT8 cQueryDir ߼ζӦIJѯ߼ * const UINT8 cLogSecSum ߼ * const UINT16 pLogSecIdBuff[] ߼ID -* const UINT8 cFunctionId ID -* const UINT8 cSendLevel ͼ * UINT8* pHalfRouteSwitchMoveFlag ؽ·ɶ־ * UINT16 *pTrainOccLogSecSum г߼ * UINT16 pTrainOccLogSecID[] г߼ID * ֵ CI_SUCCESSͨ CI_ERROR: 鲻ͨ */ -UINT8 TrainResAndDirCheck(const UINT16 wTrainId, const UINT8 cQueryDir, const UINT8 cLogSecSum, const UINT16 pLogSecIdBuff[], - UINT8* pHalfRouteSwitchMoveFlag, UINT16* pTrainOccLogSecSum, UINT16 pTrainOccLogSecID[], const UINT8 cFunctionId, const UINT8 cSendLevel); +UINT8 TrainResAndDirCheck(const UINT16 wTrainId, const UINT8 cQueryDir, const UINT8 cLogSecSum, const UINT16 pLogSecIdBuff[], UINT8* pHalfRouteSwitchMoveFlag, UINT16* pTrainOccLogSecSum, UINT16 pTrainOccLogSecID[]); /* * гԴ @@ -2463,139 +2448,6 @@ void SetTrainEaCmdState(const UINT16 wTrainId, const UINT8 chEaCmdState); */ UINT8 GetTrainEaCmdState(const UINT16 wTrainId); -/* -* Գ߷ԳڼɳϢ -* ˵ -* ֵ -* Created By LQ 2025.04.02 -*/ -void ScxClearFlyProtectInfo(void); - -/* -* AGгʻAG -* ˵const UINT16 wLinkId link ID -* ֵCI_ERROR AGгʻAG -* CI_SUCCESS AGгʻAG -* BY CGH 202050718 -*/ -UINT8 AgTrainLeaveAgCheck(const UINT16 wLinkId); -/* -* ָгԾ״̬ -* ˵const UINT16 wTrainId гID -* const UINT8 chJumpBackReplyState Ծ״̬ -* ֵ -* by fan 20250725 -*/ -void SetTrainJumpBackReplyState(const UINT16 wTrainId, const UINT8 chJumpBackReplyState); - -/* -* ȡָгԾ״̬ -* ˵const UINT16 wTrainId гID -* ֵ0x55 0xAA 0x00 /Ĭֵ -* by fan 20250725 -*/ -UINT8 GetTrainJumpBackReplyState(const UINT16 wTrainId); - -/* -* ָгԾ״̬ -* ˵const UINT16 wTrainId гID -* const UINT8 chJumpBackApplyState Ծ״̬ -* ֵ -* by fan 20250725 -*/ -void SetTrainJumpBackApplyState(const UINT16 wTrainId, const UINT8 chJumpBackApplyState); - -/* -* ȡָгԾ״̬ -* ˵const UINT16 wTrainId гID -* ֵ0x55 0xAA δ -* by fan 20250725 -*/ -UINT8 GetTrainJumpBackApplyState(const UINT16 wTrainId); - -/* -* ָгԾк -* ˵const UINT16 wTrainId гID -* const UINT32 dwJumpBackSNԾк -* ֵ -* by fan 20250725 -*/ -void SetTrainJumpBackApplySN(const UINT16 wTrainId, const UINT32 dwJumpBackSN); - -/* -* ȡָгԾк -* ˵const UINT16 wTrainId гID -* ֵUINT32 к -* by fan 20250725 -*/ -UINT32 GetTrainJumpBackApplySN(const UINT16 wTrainId); - -/* -* гȫͷ -* ˵ const UINT16 wTrainId, гID -* ֵ void -* by cgh 20250818 -*/ -void ClearTrainSafeHeadDir(const UINT16 wTrainId); - -/* -* гȫβ -* ˵ const UINT16 wTrainId, гID -* ֵ void -* by cgh 20250818 -*/ -void ClearTrainSafeTailDir(const UINT16 wTrainId); - -/* -* гǷȫͬһ߻ѹ -* ˵ const UINT16 wTrainId, гID -* ֵ CI_ERROR: гȫͬһ߻ѹ -* CI_SUCCESS: гȫͬһ߻ѹ -* by cgh 20250915 -*/ -UINT8 CheckTrainIsSwTrack(const UINT16 wTrainId); - -/* -* гǷΪ׷UT -* ˵ const UINT16 wEnvelopeID, ID -* ֵ CI_ERROR: -* CI_SUCCESS: -* by cgh 20250915 -*/ -UINT8 CheckTrainIsFollowUt(const UINT16 wEnvelopeID); - -/* -* ȡʹNVRAMλüලЧķɳID -* ˵UINT8 chIndex -* ֵUINT16* gNvramFlyTrainId ʹNVRAMλüලЧķɳID -* Created By LQ 2025.09.15 -*/ -UINT16* GetNvramFlyProtectId(void); - -/* -* ȡʹNVRAMλüලЧķɳ -* ˵ -* ֵUINT8 gNvramFlyTrainCnt ʹNVRAMλüලЧķɳ -* Created By LQ 2025.09.15 -*/ -UINT8 GetNvramFlyProtectNum(void); - -/** -* ʹNVRAMλüලЧķɳ -* ˵UINT16 wTrainID гID -* ֵ -* Created By LQ 2025.09.15 -*/ -void AddNvramFlyingTrain(UINT16 wTrainID); - -/** -* ʹNVRAMλüලЧķɳ -* ˵ -* ֵ -* Created By LQ 2025.09.15 -*/ -void ClearNvramFlyingTrain(void); - #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/Train/TrainDefine.h b/TSCP/src/APP/ciapp/Train/TrainDefine.h index 9780b84..bdb35cb 100644 --- a/TSCP/src/APP/ciapp/Train/TrainDefine.h +++ b/TSCP/src/APP/ciapp/Train/TrainDefine.h @@ -231,18 +231,13 @@ #define TRAIN_DEL_SLEEP_ENV_INVALID (UINT8)0xAAU /*ɾ߳־Ч*/ -#define TRAIN_FLYALARM_SECNUM_MAX (UINT8)10U /*гɳ*/ +#define TRAIN_FLYALARM_SECNUM_MAX (UINT8)5U /*гɳ*/ #define SHUT_DOWN_TRAIN_NUMMAX (UINT8)253u /*ɳ崻гĿ*/ /*гɢ״̬*/ #define TRAIN_EA_CMD_STATE_VALID (UINT8)0x55U /*гɢЧ*/ #define TRAIN_EA_CMD_STATE_INVALID (UINT8)0xAAU /*гɢЧ*/ -/*гԾ״̬*/ -#define TRAIN_JUMP_BACK_STATE_VALID (UINT8)0x55U /*гԾ RCԾ*/ -#define TRAIN_JUMP_BACK_STATE_INVALID (UINT8)0xAAU /*гδԾ RCԾ*/ -#define TRAIN_JUMP_BACK_STATE_NONE (UINT8)0x00U /*RCԾظĬֵ*/ - #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/Transmit/TransmitDefine.h b/TSCP/src/APP/ciapp/Transmit/TransmitDefine.h index 4ae1999..7aa6ddc 100644 --- a/TSCP/src/APP/ciapp/Transmit/TransmitDefine.h +++ b/TSCP/src/APP/ciapp/Transmit/TransmitDefine.h @@ -36,11 +36,6 @@ #define TRANSMIT_2OO2_STATE_LINK ((UINT8)0x02) /*ά*/ #define TRANSMIT_2OO2_STATE_BAD ((UINT8)0x03) /*ͨж*/ -/*ͨ״̬(ڷATS豸״̬֡ͨϢ)*/ -#define TRANSMIT_CI_STATE_GOOD ((UINT8)0x55) /*ͨ*/ -#define TRANSMIT_CI_STATE_LINK ((UINT8)0xAA) /*ά*/ -#define TRANSMIT_CI_STATE_BAD ((UINT8)0xFF) /*ͨж*/ - /*ͨŹж*/ #define COM_ERROR_FSIO_MAXCYCLENUM ((UINT16)5) /*IOͨŹж*/ #define COM_ERROR_LEU_MAXCYCLENUM ((UINT32)100) /*LEUͨŹж*/ diff --git a/TSCP/src/APP/ciapp/Transmit/TransmitStateDataManage.c b/TSCP/src/APP/ciapp/Transmit/TransmitStateDataManage.c index 8e4cb2b..f27b840 100644 --- a/TSCP/src/APP/ciapp/Transmit/TransmitStateDataManage.c +++ b/TSCP/src/APP/ciapp/Transmit/TransmitStateDataManage.c @@ -164,8 +164,8 @@ UINT32 GetCiTransmitRecvDataCycNum(const UINT8 localCiId, const UINT8 DeviceType { if ((CI_SYSTEM_TYPE_ATS == DeviceType) || (CI_SYSTEM_TYPE_ZC == DeviceType) || - (CI_SYSTEM_TYPE_XIANDI == DeviceType) || - (CI_SYSTEM_TYPE_TMC == DeviceType)) + (CI_SYSTEM_TYPE_XIANDI == DeviceType) + ) { for (ii = 0u; ii < TransmitStateDataCurSum; ii++) { @@ -329,7 +329,6 @@ UINT8 UpdateCiTransmitState(const UINT8 localCiId, const UINT8 DeviceType, const UINT32 dwRedBadComCycNum = 0U; UINT32 dwBlueBadComCycNum = 0U; UINT32 badEnsureCount = 0u; - if ((0u == localCiId) || (CI_SUM_MAX < localCiId)) { retVal = CI_ERROR; @@ -621,14 +620,14 @@ UINT8 UpdateCiTransmitState(const UINT8 localCiId, const UINT8 DeviceType, const /*ͨ*/ badComCycNum = Get2oo2CurCycleNum() - TransmitStateDataStru[ii].RecvDataCycNum; badEnsureCount = GetCiAndOcTransmitBadEnsureCnt(); - if ((badComCycNum > badEnsureCount)||(0U == TransmitStateDataStru[ii].RecvDataCycNum)) + if (badComCycNum > badEnsureCount) { /*ͨųʱ*/ TransmitStateDataStru[ii].transmitState = TRANSMIT_STATE_BAD; } else { - /*ͨ*/ + /*ͨ*/ TransmitStateDataStru[ii].transmitState = TRANSMIT_STATE_GOOD; } @@ -636,14 +635,12 @@ UINT8 UpdateCiTransmitState(const UINT8 localCiId, const UINT8 DeviceType, const TransmitStateDataStru[ii].RecvDataBlueCycNum = gBlueTransmitObjRcvCyc[ii] == 0U ? TransmitStateDataStru[ii].RecvDataBlueCycNum : gBlueTransmitObjRcvCyc[ii]; dwRedBadComCycNum = Get2oo2CurCycleNum() - TransmitStateDataStru[ii].RecvDataRedCycNum; dwBlueBadComCycNum = Get2oo2CurCycleNum() - TransmitStateDataStru[ii].RecvDataBlueCycNum; - if ((dwRedBadComCycNum <= badEnsureCount) && (dwBlueBadComCycNum <= badEnsureCount)&& - (0U != TransmitStateDataStru[ii].RecvDataRedCycNum) && (0U !=TransmitStateDataStru[ii].RecvDataBlueCycNum)) + if ((dwRedBadComCycNum <= badEnsureCount) && (dwBlueBadComCycNum <= badEnsureCount)) { /*˫*/ TransmitStateDataStru[ii].redundantTransmitState = TRANSMIT_2OO2_STATE_GOOD; } - else if (((dwRedBadComCycNum <= badEnsureCount)&&(0U != TransmitStateDataStru[ii].RecvDataRedCycNum)) - || (dwBlueBadComCycNum <= badEnsureCount)&& (0U != TransmitStateDataStru[ii].RecvDataBlueCycNum)) + else if ((dwRedBadComCycNum <= badEnsureCount) || (dwBlueBadComCycNum <= badEnsureCount)) { /*ͨ*/ TransmitStateDataStru[ii].redundantTransmitState = TRANSMIT_2OO2_STATE_LINK; @@ -1027,4 +1024,4 @@ UINT16 GetATSInterfaceTypeId(void) } return retVal; -} \ No newline at end of file +} diff --git a/TSCP/src/APP/ciapp/WLBrake/WLBrakeDataManage.c b/TSCP/src/APP/ciapp/WLBrake/WLBrakeDataManage.c index 2fbd136..fb1b656 100644 --- a/TSCP/src/APP/ciapp/WLBrake/WLBrakeDataManage.c +++ b/TSCP/src/APP/ciapp/WLBrake/WLBrakeDataManage.c @@ -118,7 +118,7 @@ static void WlbAtsCmdFst(void) strCfmFst->chFlag = FLAG_SET; strCfmFst->chTiocId = chLocalId; strCfmFst->chStation = strMsgFst->chStation; - strCfmFst->wIndex = strMsgFst->wIndex; + strCfmFst->chIndex = strMsgFst->chIndex; strCfmFst->dwTime = dwCycle; switch (strMsgFst->chBrakeType) @@ -188,8 +188,8 @@ static void WlbAtsCmdFst(void) ii++; szCrcTmp[ii] = strMsgFst->chStation; ii++; - ShortToChar(strMsgFst->wIndex, &szCrcTmp[ii]); - ii += 2U; + szCrcTmp[ii] = strMsgFst->chIndex; + ii++; szCrcTmp[ii] = strMsgFst->chBrakeType; ii++; szCrcTmp[ii] = strMsgFst->chBrakeCount; @@ -260,7 +260,7 @@ static void WlbAtsCmdSnd(void) strCfmSnd->chFlag = FLAG_SET; strCfmSnd->chTiocId = chLocalId; strCfmSnd->chStation = strMsgSnd->chStation; - strCfmSnd->wIndex = strMsgSnd->wIndex; + strCfmSnd->chIndex = strMsgSnd->chIndex; strCfmSnd->dwTime = dwCycle; if (FLAG_SET != strMsgFst->chFlag) @@ -270,14 +270,11 @@ static void WlbAtsCmdSnd(void) } else if ((strMsgSnd->chAtsId != strMsgFst->chAtsId) || (strMsgSnd->chStation != strMsgFst->chStation) - || (strMsgSnd->wIndex != strMsgFst->wIndex)) + || (strMsgSnd->chIndex != strMsgFst->chIndex) + || (strMsgSnd->chBrakeType != strMsgFst->chBrakeType) + || (strMsgSnd->wBrakeIndex != strMsgFst->wBrakeIndex)) { - strCfmSnd->chOpStatus = CONFIRM_WLB_SND_UNKNOWN; /* ATSһ֡ͷ벻һ£δ֪ */ - chFlag = FLAG_SET; - } - else if ((strMsgSnd->chBrakeType != strMsgFst->chBrakeType) || (strMsgSnd->wBrakeIndex != strMsgFst->wBrakeIndex)) - { - strCfmSnd->chOpStatus = CONFIRM_WLB_SND_INFO_DIFF; /* ATSһ벻һ£Ϣһ */ + strCfmSnd->chOpStatus = CONFIRM_WLB_SND_UNKNOWN; /* ATSһ벻һ£δ֪ */ chFlag = FLAG_SET; } else @@ -320,8 +317,7 @@ static void WlbAtsCmdSnd(void) ii = 0u; szCrcTmp[ii++] = strMsgSnd->chAtsId; szCrcTmp[ii++] = strMsgSnd->chStation; - ShortToChar(strMsgSnd->wIndex, &szCrcTmp[ii]); - ii += 2U; + szCrcTmp[ii++] = strMsgSnd->chIndex; szCrcTmp[ii] = strMsgSnd->chBrakeType; ii++; szCrcTmp[ii] = strMsgSnd->chBrakeCount; diff --git a/TSCP/src/APP/ciapp/WLScreen/WLScreenLogicProcess.c b/TSCP/src/APP/ciapp/WLScreen/WLScreenLogicProcess.c index 2626b0a..91f4d51 100644 --- a/TSCP/src/APP/ciapp/WLScreen/WLScreenLogicProcess.c +++ b/TSCP/src/APP/ciapp/WLScreen/WLScreenLogicProcess.c @@ -1,7 +1,6 @@ #include "WLScreenLogicProcess.h" #include "WLScreenDataManage.h" #include "WLScreenDataPrepare.h" -#include "EnvelopeManage.h" /* ================================̬==============================*/ @@ -196,7 +195,6 @@ void wls_JudgeWLScreenSeqChange(void) UINT8 reFreshSeq = CI_ERROR; UINT8 cFunRetVal = CI_ERROR; const WLSreenInfoStruct *pTemp = NULL; - UINT8 chTrainNvramPosCheck = 0U; /*гNVRAMλñʶ*/ pTemp = wls_GetWholeLineScreeInfo(); @@ -245,38 +243,28 @@ void wls_JudgeWLScreenSeqChange(void) /** ȡг״̬Ƿı䣨гǰسޱСܿسӻ߼٣*/ isStatusChange = wls_JudgeStatusChangeAndSus(); - chTrainNvramPosCheck = CheckInControlTrainNvramPos(); - - if (CI_ERROR == chTrainNvramPosCheck) + if ((NEED_REFRESH_NOW == isStatusChange) || (NEED_REFRESH_NOW == isHaveUT)) { - ELM_LOG(ELM_LOG_FATAL, " wls_SetUTFlag,because use nvram pos"); reFreshSeq = CI_SUCCESS; cFunRetVal = wls_SetUTFlag(UNKNOWN_TRAIN_EXIST); } - else + else if (((NEED_REFRESH == isStatusChange) || (NEED_REFRESH == isHaveUT)) && + ((NULL != pTemp) && (UNKNOWN_TRAIN_EXIST != pTemp->UTFlag))) { - if ((NEED_REFRESH_NOW == isStatusChange) || (NEED_REFRESH_NOW == isHaveUT)) - { - reFreshSeq = CI_SUCCESS; - cFunRetVal = wls_SetUTFlag(UNKNOWN_TRAIN_EXIST); - } - else if (((NEED_REFRESH == isStatusChange) || (NEED_REFRESH == isHaveUT)) && - ((NULL != pTemp) && (UNKNOWN_TRAIN_EXIST != pTemp->UTFlag))) - { - /** ˷֧Ϊȫ֧ܳӦ޷ */ - reFreshSeq = CI_SUCCESS; - cFunRetVal = wls_SetUTFlag(UNKNOWN_TRAIN_EXIST); - } - else if ((UNNEED_REFRESH == isStatusChange) && (UNNEED_REFRESH == isHaveUT) && - (NULL != pTemp) && (UNKNOWN_TRAIN_EXIST == pTemp->UTFlag)) - { - cFunRetVal = wls_SetUTFlag(UNKNOWN_TRAIN_UNEXIST); - } - else - { - /** ά֮ǰ״̬ */ - } + /** ˷֧Ϊȫ֧ܳӦ޷ */ + reFreshSeq = CI_SUCCESS; + cFunRetVal = wls_SetUTFlag(UNKNOWN_TRAIN_EXIST); } + else if ((UNNEED_REFRESH == isStatusChange) && (UNNEED_REFRESH == isHaveUT) && + (NULL != pTemp) && (UNKNOWN_TRAIN_EXIST == pTemp->UTFlag)) + { + cFunRetVal = wls_SetUTFlag(UNKNOWN_TRAIN_UNEXIST); + } + else + { + /** ά֮ǰ״̬ */ + } + /** ɸк */ if (CI_SUCCESS == reFreshSeq) @@ -333,55 +321,4 @@ void wls_JudgeWLScreenPermit(void) wls_SetRedunTime(0u,redunTime); wls_SetWLScreenProcessFlag(WHOLE_LINE_SCREEN_UNVAILD); } -} - -/** - * @brief ܿسNVRAMλñʶ - * @param[in] - * @param[out] - * @return CI_ERROR гʹNVRAMλ - * CI_SUCCESS гδʹNVRAMλ - * @note by cgh 20250704 - */ -UINT8 CheckInControlTrainNvramPos(void) -{ - UINT8 chReval = CI_ERROR; - UINT16 wCycle = 0U; - UINT8 chTrainNvramPosFlag = 0U; /*гNVRAMλñʶ*/ - UINT8 relEnvelopeCnt = TRAIN_REL_ENVELOPE_SUM_MAX; /*гİ*/ - UINT16 relEnvelopeID[TRAIN_REL_ENVELOPE_SUM_MAX] = { 0u }; /*гİ*/ - const EnvelopeStruct* pEnvelopeInfo = NULL; - - for (wCycle = 1U; wCycle < LINE_MAX_TRAIN; wCycle++) - { - chReval = CI_SUCCESS; - relEnvelopeCnt = elm_GetRelELIdByTrainID(wCycle, relEnvelopeID); - - if (1U == relEnvelopeCnt) - { - pEnvelopeInfo = elm_GetEnvelopeInfoPtr(relEnvelopeID[0u]); - - if ((NULL != pEnvelopeInfo) && - ((TYPE_CT_ENVELOPE == pEnvelopeInfo->envelopeType) || (TYPE_UCT_ENVELOPE == pEnvelopeInfo->envelopeType))) - { - chTrainNvramPosFlag = GetTrainNvramPosFlag(wCycle); - - if (TRAIN_NVRAM_POS_FLAG_NO == chTrainNvramPosFlag) - { - ; /*ʹNVRAMλü*/ - } - else - { - chReval = CI_ERROR; - break; - } - } - } - else - { - /* 账 */ - } - } - - return chReval; } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/WLScreen/WLScreenLogicProcess.h b/TSCP/src/APP/ciapp/WLScreen/WLScreenLogicProcess.h index 56ce592..a50ed78 100644 --- a/TSCP/src/APP/ciapp/WLScreen/WLScreenLogicProcess.h +++ b/TSCP/src/APP/ciapp/WLScreen/WLScreenLogicProcess.h @@ -31,14 +31,5 @@ void wls_JudgeWLScreenSeqChange(void); */ void wls_JudgeWLScreenPermit(void); -/** - * @brief ܿسNVRAMλñʶ - * @param[in] - * @param[out] - * @return CI_ERROR гʹNVRAMλ - * CI_SUCCESS гδʹNVRAMλ - * @note by cgh 20250704 - */ -UINT8 CheckInControlTrainNvramPos(void); #endif \ No newline at end of file diff --git a/TSCP/src/DRV/imx8_drv_gpio.c b/TSCP/src/DRV/imx8_drv_gpio.c index 73cb1c9..304e98c 100644 --- a/TSCP/src/DRV/imx8_drv_gpio.c +++ b/TSCP/src/DRV/imx8_drv_gpio.c @@ -9,54 +9,23 @@ static volatile uintptr_t gpio_base_4; static volatile uintptr_t gpio_base_5; static uintptr_t tbase; -static volatile unsigned int cnt = 0; +static volatile unsigned int cnt; static int val; static pthread_t timer_thread; -static pthread_t gpioFeedbackIrq_thread; -static pthread_t gpioChanAIrq_thread; -static pthread_t gpioChanBIrq_thread; static struct sigevent event; static intrspin_t spinner; -static struct sigevent gpioFeedbackIrqEvent = {0}; -static struct sigevent gpioChanAIrqEvent = {0}; -static struct sigevent gpioChanBIrqEvent = {0}; -static uint32_t irqCnt[3U] = {0}; - - -/*AB Sync*/ -static volatile uint8_t s_isABSyncStart = 0u; -static volatile uint8_t s_ECapPause[3u] = {0u};//采集开关控制 -static volatile uint32_t s_ABSynDuty = 0u;//定义双系心跳信号输出的占空比:0.5--对应输出是50% -static volatile struct SCapInfo s_CapInfo[3u] = {0U}; -static volatile ABSynMsgType g_userSetSyncMsgType = ABSynMsgType_0; - -static float sSyncMsgErrInfo[ABSynMsgType_MAX] = {0.0f}; - -static void calculate(uint8_t index,float *Duty,float *Period,uint32_t* pPulseCnt); -static ABSynMsgType drvPWMAnalyze(float Duty,float Period); -static void pulseCount(uint8_t index); -static void drvGetABSyn(float *Duty,float *Period,uint32_t* pPulseCnt); -static void Task_ABSyncPulse(void); - -void* gpioChanAIrq( void * arg); -const struct sigevent *gpioChanAIrq_handler (void *not_used, int id); -void* gpioChanBIrq( void * arg); -const struct sigevent *gpioChanBIrq_handler (void *not_used, int id); -void* gpioFeedbackIrq( void * arg); -const struct sigevent *gpioFeedbackIrq_handler (void *not_used, int id); - -char drv_vsr[4] = {93, 8, 0, 30}; +char drv_vsr[4] = {93u, 8u, 0u, 9u}; /*GPIO init*/ int imx8_gpio_init(void) { int ret = 0; - gpio_base_0 = mmap_device_io((size_t)IMX_GPIO_SIZE, (uint64_t)IMX_GPIO0_BASE); + gpio_base_0 = mmap_device_io((size_t)0x10, (uint64_t)IMX_GPIO0_BASE); if(gpio_base_0 == MAP_DEVICE_FAILED) { - perror("Can't map device base 0 I/O"); + //perror("Can't map device base 0 I/O"); ret = -1; } else @@ -64,7 +33,7 @@ int imx8_gpio_init(void) } - gpio_base_1 = mmap_device_io((size_t)IMX_GPIO_SIZE, (uint64_t)IMX_GPIO1_BASE); + gpio_base_1 = mmap_device_io((size_t)0x10, (uint64_t)IMX_GPIO1_BASE); if(gpio_base_1 == MAP_DEVICE_FAILED) { perror("Can't map device base 1 I/O"); @@ -75,7 +44,7 @@ int imx8_gpio_init(void) } - gpio_base_2 = mmap_device_io((size_t)IMX_GPIO_SIZE, (uint64_t)IMX_GPIO2_BASE); + gpio_base_2 = mmap_device_io((size_t)0x10, (uint64_t)IMX_GPIO2_BASE); if(gpio_base_2 == MAP_DEVICE_FAILED) { perror("Can't map device base 2 I/O"); @@ -86,7 +55,7 @@ int imx8_gpio_init(void) } - gpio_base_3 = mmap_device_io((size_t)IMX_GPIO_SIZE, (uint64_t)IMX_GPIO3_BASE); + gpio_base_3 = mmap_device_io((size_t)0x10, (uint64_t)IMX_GPIO3_BASE); if(gpio_base_3 == MAP_DEVICE_FAILED) { perror("Can't map device base 3 I/O"); @@ -97,7 +66,7 @@ int imx8_gpio_init(void) } - gpio_base_4 = mmap_device_io((size_t)IMX_GPIO_SIZE, (uint64_t)IMX_GPIO4_BASE); + gpio_base_4 = mmap_device_io((size_t)0x10, (uint64_t)IMX_GPIO4_BASE); if(gpio_base_4 == MAP_DEVICE_FAILED) { perror("Can't map device base 4 I/O"); @@ -108,7 +77,7 @@ int imx8_gpio_init(void) } - gpio_base_5 = mmap_device_io((size_t)IMX_GPIO_SIZE, (uint64_t)IMX_GPIO5_BASE); + gpio_base_5 = mmap_device_io((size_t)0x10, (uint64_t)IMX_GPIO5_BASE); if(gpio_base_5 == MAP_DEVICE_FAILED) { perror("Can't map device base 5 I/O"); @@ -684,6 +653,7 @@ const struct sigevent *handler (void *not_used, int id) void* timer( void * arg) { int ret = 0; + ret = ThreadCtl (_NTO_TCTL_IO, 0); SIGEV_INTR_INIT (&event); @@ -709,9 +679,6 @@ void* timer( void * arg) ret = InterruptWait(0, 0); ret = InterruptUnmask(IMX_GPT0_IRQ, val); } - - /*you will never reach here*/ - return NULL; } /*create 8khz timer*/ @@ -739,20 +706,10 @@ int imx8_create_timer_pthread(void) /*25% timer irq function*/ const struct sigevent *handler_25 (void *not_used, int id) { - unsigned int cpuid = 0; cnt++; - InterruptLock( &spinner ); - cpuid = imx8_read_cpuid(); - if (1U == cpuid) - { - Task_ABSyncPulse(); - } - else - { - /*do nothing*/ - } + InterruptLock( &spinner ); if((cnt%(uint32_t)4) == (uint32_t)0) { @@ -806,9 +763,6 @@ void* timer_25( void * arg) ret = InterruptUnmask(IMX_GPT0_IRQ, val); } - /*you will never reach here*/ - ret = NULL; - return ret; } @@ -834,6 +788,7 @@ int imx8_create_timer_pthread_25(void) } /************************************************************************/ + int imx8_gpio_release(void) { int ret = 0; @@ -905,715 +860,3 @@ int imx8_gpio_release(void) return ret; } - -const struct sigevent *gpioFeedbackIrq_handler (void *not_used, int id) -{ - if (NULL == not_used) - { - return &gpioFeedbackIrqEvent; - } - uint8_t index = *(uint8_t*)not_used; - InterruptLock( &spinner ); - irqCnt[index]++; - pulseCount(index); - InterruptUnlock( &spinner ); - return &gpioFeedbackIrqEvent; -} - -void* gpioFeedbackIrq( void * arg) -{ - int feedval = 0; - uint8_t index = 2u; - uint32_t regVal = 0u; - - (void)ThreadCtl (_NTO_TCTL_IO, NULL); - - /*disable gpio irq*/ - regVal = (in32(gpio_base_3 + IMX_GPIO_IMR) & (uint32_t)~(1UL << 26U)); - out32(gpio_base_3 + IMX_GPIO_IMR, regVal); - /*config gpio irq*/ - /*dir is input*/ - regVal = (in32(gpio_base_3 + IMX_GPIO_GDIR) & (uint32_t)~(1UL << 26U)); - out32(gpio_base_3 + IMX_GPIO_GDIR, regVal); - /*select trigger way--rising edge sensitive*/ - regVal = (in32(gpio_base_3 + IMX_GPIO_ICR2) | (uint32_t)(2UL << 20U)); - out32(gpio_base_3 + IMX_GPIO_ICR2, regVal); - /*clear isr reg*/ - regVal = (in32(gpio_base_3 + IMX_GPIO_ISR) | (uint32_t)(1UL << 26U)); - out32(gpio_base_3 + IMX_GPIO_ISR, regVal); - /*reg intr service*/ - SIGEV_INTR_INIT(&gpioFeedbackIrqEvent); - feedval = InterruptAttach(666, gpioFeedbackIrq_handler, (const void*)&index, 1,_NTO_INTR_FLAGS_TRK_MSK); -#if 0 - printf("gpio 3_26 irq init finished\n"); - printf("gpio3 IMR val is %x\n",in32(gpio_base_3 + IMX_GPIO_IMR)); - printf("gpio3 ISR val is %x\n",in32(gpio_base_3 + IMX_GPIO_ISR)); - printf("gpio3 GDIR val is %x\n",in32(gpio_base_3 + IMX_GPIO_GDIR)); - printf("gpio3 ICR2 val is %x\n",in32(gpio_base_3 + IMX_GPIO_ICR2)); -#endif - /*enable gpio irq*/ - regVal = (in32(gpio_base_3 + IMX_GPIO_IMR) | (uint32_t)(1UL << 26U)); - out32(gpio_base_3 + IMX_GPIO_IMR, regVal); - - - while(1) - { - (void)InterruptWait(0, NULL); - (void)InterruptUnmask(666, feedval); - } - - /*you will never reach here*/ - return NULL; - -} - - - -const struct sigevent *gpioChanBIrq_handler (void *not_used, int id) -{ - if (NULL == not_used) - { - return &gpioChanBIrqEvent; - } - uint8_t index = *(uint8_t*)not_used; - InterruptLock( &spinner ); - irqCnt[index]++; - pulseCount(index); - InterruptUnlock( &spinner ); - return &gpioChanBIrqEvent; -} - -void* gpioChanBIrq( void * arg) -{ - int chanBval = 0; - uint8_t index = 1u; - uint32_t regVal = 0u; - - (void)ThreadCtl (_NTO_TCTL_IO, NULL); - - /*disable gpio irq*/ - regVal = (in32(gpio_base_4 + IMX_GPIO_IMR) & (uint32_t)~(1UL << 2U)); - out32(gpio_base_4 + IMX_GPIO_IMR, regVal); - /*config gpio0_12 irq*/ - /*dir is input*/ - regVal = (in32(gpio_base_4 + IMX_GPIO_GDIR) & (uint32_t)~(1UL << 2U)); - out32(gpio_base_4 + IMX_GPIO_GDIR, regVal); - /*select trigger way--rising edge sensitive*/ - regVal = (in32(gpio_base_4 + IMX_GPIO_ICR1) | (uint32_t) (2UL << 4U)); - out32(gpio_base_4 + IMX_GPIO_ICR1, regVal); - /*clear isr reg*/ - regVal = (in32(gpio_base_4 + IMX_GPIO_ISR) | (uint32_t)(1UL << 2U)); - out32(gpio_base_4 + IMX_GPIO_ISR, regVal); - /*reg intr service*/ - SIGEV_INTR_INIT(&gpioChanBIrqEvent); - /*This step maybe enable the IMR?*/ - chanBval = InterruptAttach(674, gpioChanBIrq_handler, (const void*)&index, 1,_NTO_INTR_FLAGS_TRK_MSK); -#if 0 - printf("Chan B(4_2) irq init finished\n"); - printf("gpio4 IMR val is %x\n",in32(gpio_base_4 + IMX_GPIO_IMR)); - printf("gpio4 ISR val is %x\n",in32(gpio_base_4 + IMX_GPIO_ISR)); - printf("gpio4 GDIR val is %x\n",in32(gpio_base_4 + IMX_GPIO_GDIR)); - printf("gpio4 ICR1 val is %x\n",in32(gpio_base_4 + IMX_GPIO_ICR1)); -#endif - /*enable gpio irq*/ - regVal = (in32(gpio_base_4 + IMX_GPIO_IMR) | (uint32_t)(1UL << 2U)); - out32(gpio_base_4 + IMX_GPIO_IMR, regVal); - - - while(1) - { - (void)InterruptWait(0, NULL); - (void)InterruptUnmask(674, chanBval); - } - - /*you will never reach here*/ - return NULL; -} - - -const struct sigevent *gpioChanAIrq_handler (void *not_used, int id) -{ - if (NULL == not_used) - { - return &gpioChanAIrqEvent; - } - uint8_t index = *(uint8_t*)not_used; - InterruptLock( &spinner ); - irqCnt[index]++; - pulseCount(index); - InterruptUnlock( &spinner ); - return &gpioChanAIrqEvent; -} - -void* gpioChanAIrq( void * arg) -{ - int chanAval = 0; - uint8_t index = 0u; - uint32_t regVal = 0u; - - (void)ThreadCtl (_NTO_TCTL_IO, NULL); - - /*disable gpio irq*/ - regVal = in32(gpio_base_4 + IMX_GPIO_IMR) & (uint32_t)~(1UL << 1U); - out32(gpio_base_4 + IMX_GPIO_IMR, regVal); - /*config gpio0_9 irq*/ - /*dir is input*/ - regVal = in32(gpio_base_4 + IMX_GPIO_GDIR) & (uint32_t)~(1UL << 1U); - out32(gpio_base_4 + IMX_GPIO_GDIR,regVal); - /*select trigger way--rising edge sensitive*/ - regVal = (in32(gpio_base_4 + IMX_GPIO_ICR1) | (uint32_t)(2UL << 2U)); - out32(gpio_base_4 + IMX_GPIO_ICR1, regVal); - /*clear isr reg*/ - regVal = (in32(gpio_base_4 + IMX_GPIO_ISR) | (uint32_t)(1UL << 1U)); - out32(gpio_base_4 + IMX_GPIO_ISR, regVal); - /*reg intr service*/ - SIGEV_INTR_INIT(&gpioChanAIrqEvent); - chanAval = InterruptAttach(673, gpioChanAIrq_handler, (const void*)&index, 1,_NTO_INTR_FLAGS_TRK_MSK); -#if 0 - printf("gpio ChanA(4_1) irq init finished\n"); - printf("gpio4 IMR val is %x\n",in32(gpio_base_4 + IMX_GPIO_IMR)); - printf("gpio4 ISR val is %x\n",in32(gpio_base_4 + IMX_GPIO_ISR)); - printf("gpio4 GDIR val is %x\n",in32(gpio_base_4 + IMX_GPIO_GDIR)); - printf("gpio4 ICR1 val is %x\n",in32(gpio_base_4 + IMX_GPIO_ICR1)); -#endif - /*enable gpio irq*/ - regVal = (in32(gpio_base_4 + IMX_GPIO_IMR) | (uint32_t)(1UL << 1U)); - out32(gpio_base_4 + IMX_GPIO_IMR, regVal); - - - while(1) - { - (void)InterruptWait(0, NULL); - (void)InterruptUnmask(673, chanAval); - } - - /*you will never reach here*/ - return NULL; -} - -int imx8_create_gpio_irq_pthread(void) -{ - int ret = 0; - - ret = pthread_create(&gpioFeedbackIrq_thread, NULL, gpioFeedbackIrq, NULL); - ret = pthread_create(&gpioChanAIrq_thread, NULL, gpioChanAIrq, NULL); - ret = pthread_create(&gpioChanBIrq_thread, NULL, gpioChanBIrq, NULL); - - return ret; -} - - -/* 函数功能:双系心跳信号功能开启。 - * 输入参数:无。 - * 输出参数:无。 - * 返回值 :无。 - * 使用注意:板级初始化之后调用一次该函数启动功能。 - */ -void drvStartABSynSwitch(void) -{ - int i = 0; - - s_CapInfo[0U].isLocked = 0; - s_CapInfo[1U].isLocked = 0; - - for (i=0;i<(uint8_t)ABSynMsgType_MAX;i++) - { - sSyncMsgErrInfo[i] = 0.0f; - } - - (void)imx8_output(5,1); - s_isABSyncStart = 1; -} - - -/* 函数功能:双系心跳信号功能关闭 - * 输入参数:无。 - * 输出参数:无。 - * 返回值 :无。 - * 使用注意: - */ -void drvStopABSynSwitch(void) -{ - s_isABSyncStart = 0; - (void)imx8_output(5,0); -} -/* 函数功能:发送双系硬通信信号。 - * 输入参数:MsgType:硬通信的信息:ABSynMsgType_0..ABSynMsgType_7 - * 输出参数:无。 - * 返回值 :无。 - * 使用注意:倒切方案由于硬件限制,发送频率不高于500Hz,最大使用ABSynMsgType_4。 - */ -void drvSetABSynMsg(ABSynMsgType MsgType) -{ - g_userSetSyncMsgType = MsgType; - switch((uint8_t)MsgType) - { - case 0: - s_ABSynDuty = 0; - break; - case 1://200hz - s_ABSynDuty = 80; - break; - case 2://300hz - s_ABSynDuty = 53; - break; - case 3://400hz - s_ABSynDuty = 40; - break; - case 4://500hz - s_ABSynDuty = 32; - break; - case 5://600hz - s_ABSynDuty = 27; - break; - case 6://700hz - s_ABSynDuty = 23; - break; - case 7://800hz - s_ABSynDuty = 20; - break; - default: - s_ABSynDuty =0; - break; - } -} - - -/* 函数功能:输出PWM - * 输入参数:无。 - * 输出参数:无。 - * 返回值 :无。 - * 使用注意:放在定时器中断服务程序中,产生PWM - */ -static void Task_ABSyncPulse(void) -{ - static uint32_t PulseCount = 0u; - static uint32_t PinValue = 1u; - uint32_t regVal = 0u; - uint32_t syncDuty = 0u; - - if(s_isABSyncStart == 1u) - { - PulseCount++; - syncDuty = s_ABSynDuty; - if((syncDuty > 0u) && (PulseCount >= syncDuty)) - { - PulseCount = 0; - PinValue ^= 0x1u; - if (0U == PinValue) - { - regVal = (in32(gpio_base_0 + IMX_GPIO_DR) & (uint32_t)~(1UL << 6U)); - out32(gpio_base_0 + IMX_GPIO_DR,regVal); - } - else - { - regVal = (in32(gpio_base_0 + IMX_GPIO_DR) | (uint32_t)(1UL << 6U)); - out32(gpio_base_0 + IMX_GPIO_DR, regVal); - - } - } - } -} - - - - -/* 函数功能:获取双系硬通信的反馈。 - * 输入参数:无。 - * 输出参数:pABSynMsgType *pMsgType, 采集到的type信息 - * 返回值 :UINT8, - * 0x00,正常。 - * 0x81,命令与反馈不一致 - * 0x82,指针为空 - * 使用注意:发送与采集间隔至少为40ms。 - */ -uint8_t drvFeedbackkABSynMsg(ABSynMsgType *pMsgType) -{ - uint8_t ret = 0U; - float Duty = 0.0f; - float period = 0.0f; - uint32_t PulseCnt = 0u; - if (NULL != pMsgType) - { - calculate(2U,&Duty,&period,&PulseCnt); - *pMsgType = drvPWMAnalyze(Duty,period); - if (g_userSetSyncMsgType == *pMsgType) - { - ret =0u; - } - else - { - ret = 0x81u; - } - } - else - { - ret = 0x82U; - } - return ret; -} - -/* 函数功能:查询当前各通道收到的外部脉冲个数。 - * 输入参数:无。 - * 输出参数: uint8_t index -- 通道索引:0-对方A系通道 1-对方B系通道 2-自身反馈通道 - * uint32_t* pPulseCnt -- 外部存储变量地址 - * 返回值 :uint8_t 0-成功 1-失败:入参错误。 - */ -uint8_t drvCheckABSynPulCnt(uint8_t index,uint32_t* pPulseCnt) -{ - uint8_t ret = 0U; - if ((index > 2U) || (NULL == pPulseCnt)) - { - ret = 1u; - return ret; - } - - *pPulseCnt = s_CapInfo[index].capCount; - - return ret; -} - - -/* 函数功能:获取对系双通道硬通信信号。 - * 输入参数:无。 - * 输出参数:pMsgType[0]:对方A系发出的硬通信信息:ABSynMsgType_0..ABSynMsgType_15 - * pMsgType[1]:对方B系发出的硬通信信息:ABSynMsgType_0..ABSynMsgType_15 - * pPulseCnt[0]:收到对方A系发出的脉冲计数,如果此数为0,说明对方A系停止输出脉冲 - * pPulseCnt[1]:收到对方B系发出的脉冲计数,如果此数为0,说明对方B系停止输出脉冲 - * 返回值 :无。 - */ -void drvGetABSynMsg(ABSynMsgType *pMsgType,uint32_t* pPulseCnt) -{ - float Duty[2] = {0.0f}; - float Period[2] = {0.0f}; - - if(( NULL != pMsgType) && (NULL != pPulseCnt)) - { - drvGetABSyn(Duty,Period,pPulseCnt); - pMsgType[0] = drvPWMAnalyze(Duty[0],Period[0]); - pMsgType[1] = drvPWMAnalyze(Duty[1],Period[1]); - } - else - { - ; - } - -} - - -/* 函数功能:获取当前系间信号脉冲的最大误差值。 - * 输入参数:uint8_t index - * 输出参数:无 - * 返回值 :float -- 误差百分比。 - */ -float drvGetSyncSigErr(ABSynMsgType msgType) -{ - uint8_t index = 0u; - float ret = -1.0f; - if (msgType < ABSynMsgType_MAX) - { - index = (uint8_t)msgType; - ret = sSyncMsgErrInfo[index]; - } - - return ret; -} - -/* 函数功能:获取双系硬切系信号的占空比及频率。 - * 输入参数:无。 - * 输出参数:Duty[0]:对系CPU1占空比,保留3位有效小数,如30%占空比表示为0.300 - * Period[0]:对系CPU1频率,单位为Hz - * Duty[1]:对系CPU2占空比,保留3位有效小数,如30%占空比表示为0.300 - * Period[1]:对系CPU2频率,单位为Hz - * 返回值 :无。 - * 使用注意:Period为0时表示错误。 - */ -static void drvGetABSyn(float *Duty,float *Period,uint32_t* pPulseCnt) -{ - if ((NULL == Duty) || (NULL == Period) || (NULL == pPulseCnt)) - { - return; - } - /*使用IO中断方式*/ - calculate(0U,&Duty[0],&Period[0],&pPulseCnt[0]); - calculate(1U,&Duty[1],&Period[1],&pPulseCnt[1]); -} - - -/* 函数功能:PWM信号解析为双系MsgType。 - * 输入参数:Duty:采集到的PWM占空比 - * Period:采集到的PWM频率 - * 输出参数:无。 - * 返回值 :ABSynMsgType:双系通信的具体信息。 - * 使用注意:。 - */ -static ABSynMsgType drvPWMAnalyze(float Duty,float Period) -{ - ABSynMsgType ABSynMsgTypetemp = ABSynMsgType_0; - float syncErr = 0.0f; - float tmp = 0.0f; - float baseFreq = 0.0f; - uint8_t index = 0u; - - if((Duty > 0.45f) && (Duty < 0.55f) ) - { - if((Period > 150.0f) && (Period < 250.0f)) - { - ABSynMsgTypetemp = ABSynMsgType_1; - } - else if((Period > 250.0f) && (Period < 350.0f)) - { - ABSynMsgTypetemp = ABSynMsgType_2; - } - else if((Period > 350.0f) && (Period < 450.0f)) - { - ABSynMsgTypetemp = ABSynMsgType_3; - } - else if((Period > 450.0f) && (Period < 550.0f)) - { - ABSynMsgTypetemp = ABSynMsgType_4; - } - else if((Period > 550.0f) && (Period < 650.0f)) - { - ABSynMsgTypetemp = ABSynMsgType_5; - } - else if((Period > 650.0f) && (Period < 750.0f)) - { - ABSynMsgTypetemp = ABSynMsgType_6; - } - else if((Period > 750.0f) && (Period < 850.0f)) - { - ABSynMsgTypetemp = ABSynMsgType_7; - } - else - { - ABSynMsgTypetemp = ABSynMsgType_0; - } - } - else//占空比无或不正常 - { - ABSynMsgTypetemp = ABSynMsgType_0; - } - - index = (uint8_t)ABSynMsgTypetemp; - baseFreq = (float)(index + 1u) * 100.0f; - tmp = (Period > baseFreq) ? (Period - baseFreq) : (baseFreq - Period); - syncErr = tmp / baseFreq * 100.0f; - tmp = sSyncMsgErrInfo[index]; - tmp = (syncErr > tmp) ? syncErr : tmp; - sSyncMsgErrInfo[index] = tmp; - - return ABSynMsgTypetemp; -} - -/*使用io中断获取对端脉冲频率*/ -static void calculate(uint8_t index,float *Duty,float *Period,uint32_t* pPulseCnt) -{ - uint32_t curTimeStamp = 0u; - uint32_t startTimeStamp = 0u; - float tmp = 0.0f; - - if ((index > 2U) || (NULL == Duty) || (NULL == Period) || (NULL == pPulseCnt)) - { - return; - } - - s_ECapPause[index] = 1U; - curTimeStamp = s_CapInfo[index].cap1CurrentTime; - startTimeStamp = s_CapInfo[index].cap1StartTime; - - uint32_t useTime = (curTimeStamp > startTimeStamp) ? \ - (curTimeStamp - startTimeStamp) : \ - (0xFFFFFFFFU - startTimeStamp + curTimeStamp); - - tmp = (float)useTime / (float)s_CapInfo[index].capCount; - s_CapInfo[index].fre = (32000.0f / tmp); - - *Period = s_CapInfo[index].fre; - *Duty = 0.5f; - *pPulseCnt = s_CapInfo[index].capCount; - s_CapInfo[index].cap1CurrentTime = 0u; - s_CapInfo[index].cap1StartTime = 0u; - s_CapInfo[index].capCount = 0u; - s_CapInfo[index].isLocked = 0u; - s_ECapPause[index] = 0U; -} - - -static void pulseCount(uint8_t index) -{ - uint8_t capPause = 0u; - uint8_t syncStart = 0u; - if (index < 3u) - { - capPause = s_ECapPause[index]; - syncStart = s_isABSyncStart; - if ((0u == capPause) && (1u == syncStart)) - { - if(0u == s_CapInfo[index].isLocked) - { - s_CapInfo[index].isLocked = 1u; - s_CapInfo[index].capCount = 0u; - s_CapInfo[index].cap1StartTime = cnt; - } - s_CapInfo[index].cap1CurrentTime = cnt; - s_CapInfo[index].capCount++; - } - else - { - /*do nothing*/ - } - } -} - - -/************************************************************************/ -/* -* @brief 读取phy寄存器相关维护信息 -* -* 该函数通过创建套接字并发送SIOCGDRVSPEC控制命令,读取指定网络接口的PHY寄存器状态 -* -* @param[in] -* const char* fecx 需要检查的网络接口名称(如"fec0","fec1") -* uint16_t infoLen - 寄存器信息数组长度,此长度应该大于等于12 -* @param[out] -* uint16_t * Info - 寄存器信息数组存储首地址 -* @return rtn 返回状态 -* - n: n为实际读取的寄存器个数 -* - -1: 链路异常或操作失败 -* -*/ -int drvPhyRegInfoUpdate(const char* fecx,uint16_t *Info,uint16_t infoLen) -{ - /*- 变量初始化*/ - int sockfd = -1; - int rtn = -1; - int n = 0; - /*uint16_t regInfo[12u] = {0u};*/ - uint8_t regList[12] = {0u,1u,4u,5u,6u,7u,8u,9u,10u,15u,21u,31u}; - uint8_t i = 0u; - - if ((NULL == fecx) || (NULL == Info) || (0u == infoLen)) - { - return rtn; - } - - /*- 创建DGRAM类型套接字*/ - sockfd = socket(AF_INET, SOCK_DGRAM, 0); - if (-1 == sockfd) - { - perror("socket"); - } - else - { - /*- 配置网络接口名称*/ - strncpy((char*)&phycmd.ifd.ifd_name, fecx, IFNAMSIZ); - - /*- 设置PHY寄存器访问参数*/ - phycmd.ifd.ifd_cmd = READ_PHY_REG; /* PHY寄存器读取命令 */ - phycmd.ifd.ifd_len = sizeof(phy_access_t); - phycmd.ifd.ifd_data = (void*)&phycmd.req; - phycmd.req.phy_id = 7U; /* PHY设备地址 */ - phycmd.req.phy_reg = 1U; /* PHY状态寄存器地址 */ - phycmd.req.phy_data = 0U; /* 初始化数据域 */ - - n = ((12U <= infoLen)? 12 : (int)infoLen); - - for(i = 0u;i < n;i++) - { - phycmd.req.phy_reg = regList[i]; /* PHY状态寄存器地址 */ - /*- 发送驱动控制命令获取PHY状态*/ - devctl(sockfd, SIOCGDRVSPEC, &phycmd,sizeof(phycmd),0); - Info[i] = phycmd.req.phy_data; - } - rtn = n; - close(sockfd); - } - /*- 返回最终检测结果*/ - return rtn; -} - - -#if 0 -/*调试接口*/ -void checkisr(void) -{ - static int ret = 0; - printf("irq cnt 0 is %d\n",irqCnt[0]); - printf("irq cnt 1 is %d\n",irqCnt[1]); - printf("irq cnt 2 is %d\n",irqCnt[2]); - printf("cur cnt is %d\n",cnt); -} -#endif - - -/************************************************************************/ -/* -* @brief 通过PHY寄存器检查指定网卡链路状态 -* -* 该函数通过创建套接字并发送SIOCGDRVSPEC控制命令,读取指定网络接口的PHY寄存器状态, -* 根据寄存器值的特定位判断链路是否正常。 -* -* @param[in] fecx 需要检查的网络接口名称(如"fec0","fec1") -* @return rtn 返回状态 -* - 0: 链路状态正常(PHY寄存器bit2为1) -* - -1: 链路异常或操作失败 -* -* @note 函数执行流程: -* 1. 创建UDP套接字 -* 2. 配置phycmd控制结构体: -* - ifd_name: 网络接口名称 -* - ifd_cmd: 使用READ_PHY_REG命令 -* - phy_id: PHY地址7 -* - phy_reg: 寄存器地址1(状态寄存器) -* 3. 通过devctl发送控制命令 -* 4. 解析phy_data寄存器值的bit2判断链路状态 -*/ -int phytool(const char* fecx) -{ - /*- 变量初始化*/ - int sockfd = -1; - int rtn = -1; - - if (NULL == fecx) - { - return rtn; - } - - /*- 创建DGRAM类型套接字*/ - sockfd = socket(AF_INET, SOCK_DGRAM, 0); - if (-1 == sockfd) - { - perror("socket"); - } - else - { - /*- 配置网络接口名称*/ - strncpy((char*)&phycmd.ifd.ifd_name, fecx, IFNAMSIZ); - - /*- 设置PHY寄存器访问参数*/ - phycmd.ifd.ifd_cmd = READ_PHY_REG; /* PHY寄存器读取命令 */ - phycmd.ifd.ifd_len = sizeof(phy_access_t); - phycmd.ifd.ifd_data = (void*)&phycmd.req; - phycmd.req.phy_id = 7U; /* PHY设备地址 */ - phycmd.req.phy_reg = 1U; /* PHY状态寄存器地址 */ - phycmd.req.phy_data = 0U; /* 初始化数据域 */ - - /*- 发送驱动控制命令获取PHY状态*/ - devctl(sockfd, SIOCGDRVSPEC, &phycmd,sizeof(phycmd),0); - - close(sockfd); - - /*- 解析状态寄存器bit2(0x04)链路状态标志*/ - if(1U == ((phycmd.req.phy_data & 0x04U)>>2U)) - { - rtn = 0; /* 链路正常 */ - } - else - { - ; /* 保持默认失败状态 */ - } - } - /*- 返回最终检测结果*/ - return rtn; -} diff --git a/TSCP/src/DRV/imx8_drv_gpio.h b/TSCP/src/DRV/imx8_drv_gpio.h index 744dc67..a430781 100644 --- a/TSCP/src/DRV/imx8_drv_gpio.h +++ b/TSCP/src/DRV/imx8_drv_gpio.h @@ -17,51 +17,6 @@ #include #include -#include -#include -#include - - -/*双系脉冲通信信号类型定义*/ -typedef enum { //占空比-频率 - ABSynMsgType_0,//0.0-0,ErrorDuty-ErrorFrequency固定为驱动程序检测到以下故障中的一种:a、未收到有效的PWM信号(包含:无PWM信号、信号参数不符合预设的范围) - ABSynMsgType_1,//0.5-200 固定为驱动程序检测到以下故障中的一种:a、发送端的MsgType不是规定的枚举类型; - ABSynMsgType_2,//0.5-300 固定为驱动程序检测到以下故障中的一种:a、双系PWM信号使能标志没有周期翻转(main函数跑飞); - ABSynMsgType_3,//0.5-400 平台自由确定其含义 - ABSynMsgType_4,//0.5-500 平台自由确定其含义 - ABSynMsgType_5,//0.5-600 平台自由确定其含义 - ABSynMsgType_6,//0.5-700 平台自由确定其含义 - ABSynMsgType_7,//0.5-800 平台自由确定其含义 - ABSynMsgType_MAX = 0x08 -} ABSynMsgType; - -struct SCapInfo{ - uint8_t vaild;//0无效 1有效 - uint8_t isLocked;//1锁定 - uint32_t capCount; - uint32_t cap1StartTime; //first rising - uint32_t cap1CurrentTime; //first falling - uint32_t cycle; //周期 - uint32_t pulseWidth; //脉宽 - float dutyCycle; //占空比 - float fre; //频率 -}; - - -#define READ_PHY_REG 0x400U - -typedef struct { - uint8_t phy_id; - uint8_t phy_reg; - uint16_t phy_data; -}phy_access_t; - -static struct ifdrv2{ - struct ifdrv ifd; - phy_access_t req; -}phycmd; - - #define IMX_GPIO0_BASE 0x5D080000 #define IMX_GPIO1_BASE 0x5D090000 #define IMX_GPIO2_BASE 0x5D0A0000 @@ -74,18 +29,8 @@ static struct ifdrv2{ #define IMX_GPIO_DR 0x0U #define IMX_GPIO_GDIR 0x4U #define IMX_GPIO_PSR 0x8U -/*20250707--zhangzhongqi add*/ -#define IMX_GPIO_ICR1 0xCU -#define IMX_GPIO_ICR2 0x10U -#define IMX_GPIO_IMR 0x14U -#define IMX_GPIO_ISR 0x18U -#define IMX_GPIO_EDGE_SEL 0x1CU -#define IMX_GPIO_SIZE 0x20U -#define IMX_GPIO0_IRQ 168 -#define IMX_GPIO1_IRQ 169 - /*timer regisger */ #define IMX_GPT0_BASE 0x5D140000 #define IMX_GPT_SIZE 0x10000 @@ -138,111 +83,3 @@ const struct sigevent *handler_25 (void *not_used, int id); const struct sigevent *handler (void *not_used, int id); void* timer_25( void * arg); void* timer( void * arg); - -/* 函数功能:创建脉冲检测中断线程 - * 输入参数:void - * 输出参数:无。 - * 返回值 :无。 - * 使用注意:板级初始化之后调用一次该函数启动功能。 - */ -int imx8_create_gpio_irq_pthread(void); -/* 函数功能:发送双系硬通信信号。 - * 输入参数:MsgType:硬通信的信息:ABSynMsgType_0..ABSynMsgType_7 - * 输出参数:无。 - * 返回值 :无。 - * 使用注意:倒切方案由于硬件限制,发送频率不高于500Hz,最大使用ABSynMsgType_4。 - */ -void drvSetABSynMsg(ABSynMsgType MsgType); -/* 函数功能:获取对系双通道硬通信信号。 - * 输入参数:无。 - * 输出参数:pMsgType[0]:对方A系发出的硬通信信息:ABSynMsgType_0..ABSynMsgType_15 - * pMsgType[1]:对方B系发出的硬通信信息:ABSynMsgType_0..ABSynMsgType_15 - * pPulseCnt[0]:收到对方A系发出的脉冲计数,如果此数为0,说明对方A系停止输出脉冲 - * pPulseCnt[1]:收到对方B系发出的脉冲计数,如果此数为0,说明对方B系停止输出脉冲 - * 返回值 :无。 - */ -void drvGetABSynMsg(ABSynMsgType *pMsgType,uint32_t* pPulseCnt); -/* 函数功能:双系心跳信号功能开启。 - * 输入参数:无。 - * 输出参数:无。 - * 返回值 :无。 - * 使用注意:板级初始化之后调用一次该函数启动功能。 - */ -void drvStartABSynSwitch(void); - -/* 函数功能:双系心跳信号功能关闭 - * 输入参数:无。 - * 输出参数:无。 - * 返回值 :无。 - * 使用注意: - */ -void drvStopABSynSwitch(void); - -/* 函数功能:获取双系硬通信的反馈。 - * 输入参数:无。 - * 输出参数:pABSynMsgType *pMsgType, 采集到的type信息 - * 返回值 :UINT8, - * 0x00,正常。 - * 0x81,命令与反馈不一致 - * 0x82,指针为空 - * 使用注意:发送与采集间隔至少为40ms。 - */ -uint8_t drvFeedbackkABSynMsg(ABSynMsgType *pMsgType); - -/* 函数功能:获取当前系间信号脉冲的最大误差值。 - * 输入参数:uint8_t index - * 输出参数:无 - * 返回值 :float -- 误差百分比。 - */ -float drvGetSyncSigErr(ABSynMsgType msgType); - -/* 函数功能:查询当前各通道收到的外部脉冲个数。 - * 输入参数:无。 - * 输出参数: uint8_t index -- 通道索引:0-自身反馈通道 1-对方A系通道 2-对方B系通道 - * uint32_t* pPulseCnt -- 外部存储变量地址 - * 返回值 :uint8_t 0-成功 1-失败:入参错误。 - */ -uint8_t drvCheckABSynPulCnt(uint8_t index,uint32_t* pPulseCnt); - - -/************************************************************************/ -/* -* @brief 读取phy寄存器相关维护信息 -* -* 该函数通过创建套接字并发送SIOCGDRVSPEC控制命令,读取指定网络接口的PHY寄存器状态 -* -* @param[in] -* const char* fecx 需要检查的网络接口名称(如"fec0","fec1") -* uint16_t infoLen - 寄存器信息数组长度,此长度应该大于等于12 -* @param[out] -* uint16_t * Info - 寄存器信息数组存储首地址 -* @return rtn 返回状态 -* - n: n为实际读取的寄存器个数 -* - -1: 链路异常或操作失败 -* -*/ -int drvPhyRegInfoUpdate(const char* fecx,uint16_t *Info,uint16_t infoLen); - -/************************************************************************/ -/* -* @brief 通过PHY寄存器检查指定网卡链路状态 -* -* 该函数通过创建套接字并发送SIOCGDRVSPEC控制命令,读取指定网络接口的PHY寄存器状态, -* 根据寄存器值的特定位判断链路是否正常。 -* -* @param[in] fecx 需要检查的网络接口名称(如"fec0","fec1") -* @return rtn 返回状态 -* - 0: 链路状态正常(PHY寄存器bit2为1) -* - -1: 链路异常或操作失败 -* -* @note 函数执行流程: -* 1. 创建UDP套接字 -* 2. 配置phycmd控制结构体: -* - ifd_name: 网络接口名称 -* - ifd_cmd: 使用READ_PHY_REG命令 -* - phy_id: PHY地址7 -* - phy_reg: 寄存器地址1(状态寄存器) -* 3. 通过devctl发送控制命令 -* 4. 解析phy_data寄存器值的bit2判断链路状态 -*/ -int phytool(const char* fecx); diff --git a/TSCP/src/DRV/imx8_drv_i2c.c b/TSCP/src/DRV/imx8_drv_i2c.c index 633374b..3fc5f11 100644 --- a/TSCP/src/DRV/imx8_drv_i2c.c +++ b/TSCP/src/DRV/imx8_drv_i2c.c @@ -27,7 +27,7 @@ int16_t temperature_read(int fd, uint8_t reg, uint8_t slave_addr) if((devctl(fd, DCMD_I2C_SENDRECV, (void *)&read, sizeof(read),(int *)NULL)) > 0) { - perror("Failed to read to temp ! "); + //perror("Failed to read to temp ! "); } else { diff --git a/TSCP/src/MSCP/Area/Area.c b/TSCP/src/MSCP/Area/Area.c new file mode 100644 index 0000000..60a9288 --- /dev/null +++ b/TSCP/src/MSCP/Area/Area.c @@ -0,0 +1,1210 @@ +/* + * Area.c + * + * Created on: 2025年12月2日 + * Author: adan + */ +#include "CM_Types.h" +#include "CM_Memory.h" +#include "CM_Socket.h" +#include "CM_UDP.h" +#include "CM_Convert.h" +#include "PFM_Cfg.h" +#include "CM_Sem.h" +#include "CM_MultiThread.h" +#include "CM_MultiThread_Priority.h" +#include "CM_Time.h" +#include "DFM_Time.h" +#include "MSCP_Define.h" +#include "PFM_LOG.h" +#include "Area.h" +#include "DFM_Time.h" +#include "CM_CRC32.h" +#include "Area_2oo2.h" +#include "CFM_Sync.h" +#include "OFM_Base.h" + +#define MSCP_MSG_AREA_ARQ_TYPE 0x01 /**< 区域通信请求消息类型 */ +#define MSCP_MSG_AREA_RSP_TYPE 0x02 /**< 区域通信响应消息类型 */ +#define MSCP_MSG_DEST_ALL 0xFF /**< 所有设备接收消息类型 */ + +#define Area_MSG_NUM_MAX (200u) +#define Area_RAW_MSG_SIZE (2048u) + +#define AREA_TIME_MAX 30u + +typedef struct +{ + CM_UINT32 BoardID; /**< 板卡ID 插箱id */ + CM_UINT32 Cpuid; /**< cpu id */ + CM_UINT32 Partner_BoardID; /**< 对系板卡id */ + CM_UINT32 Partner_Area_A_BoardID; /**< 对系id */ + CM_UINT32 Partner_Area_B_BoardID; /**< 对系id */ + STR_Area_IP_Cfg IP_Cfg_Area_A; /**< IP配置 */ + STR_Area_IP_Cfg IP_Cfg_Area_B; /**< IP配置 */ +}STR_Area_Cfg; + +typedef struct +{ + CM_UINT32 *Area_init; /* 初始化函数指针 */ + CM_UINT32 *get_Area_state; /* 获取区域状态函数指针 */ + CM_UINT32 *set_Area_state; /* 设置区域状态函数指针 */ + STR_Area_Cfg Area_Cfg; /**< 区域配置 */ + CM_SEM_T m_AreaStart; /* 区域开始信号量 */ + CM_SEM_T m_AreaStop; /* 区域停止信号量 */ + +}STR_Area_Ctl; + +STR_Area_State g_Area_State ; + +void Area_init(); +static void Area_Net_init(); +static void Area_Send_Req(); +static void Prepare_for_Area_Data(); +void Area_Msg_Recv(STR_Area_IP_Cfg *pCtrl,CM_UINT8 *p_buf, CM_UINT16 *p_len, CM_UINT16 BufSize); +void set_Area_Net_Status(CM_UINT8 index, CM_UINT8 state); +void Area_Req_Process(STR_Area_Req *p_Area_Req_tmp); +void clear_Area_ALL_Net_Status(); +void Area_Rsp_Process(STR_Area_Req *p_Area_Req_tmp, CM_UINT8 net); +void Area_Data_Exchange(); +void Area_Recv_Rsp(); +void Area_Data_Pack(CM_UINT8 *p_buf, CM_UINT16 *p_len, CM_UINT16 bufsize); +void net_state_cal(); +/** + * @brief 区域通信请求组包 + * + * @param p_Area_Req 指向区域通信请求结构体的指针 + * @param p_buf 指向区域通信请求存储的指针 + * @param BufSize 区域通信请求存储缓冲区大小 + * @param p_len 指向区域通信请求长度的指针 + */ +void Area_Req_Pack(STR_Area_Req *p_Area_Req, CM_UINT8 *p_buf, CM_UINT16 BufSize, CM_UINT16 *p_len); + +void get_Other_BoardId(CM_UINT32 local_Board_Id, CM_UINT32 *partner_Board_Id, CM_UINT32 *partner_Area_A_Board_Id, CM_UINT32 *partner_Area_B_Board_Id); + +STR_Area_State_Ctl g_Area_Status_Ctl[8] = {0}; +static STR_Area_Ctl g_Area_Ctl ={0}; + + + +static CM_THREAD_FUNC_T Area_Work_Thread(IN CM_Thread_Arg_Struct_T* arg); + +void Area_init() +{ + /* 初始化函数指针*/ + + g_Area_Ctl.Area_Cfg.BoardID = g_PFM_Cfg.BOARD_ID;/**< 板卡ID 插箱id */ + g_Area_Ctl.Area_Cfg.Cpuid = g_PFM_Cfg.CPU_ID;/**< cpu id */ + /* 设置区域id*/ + if((MSCP_AREA_A_BOARD_ID_A == g_Area_Ctl.Area_Cfg.BoardID ) || (MSCP_AREA_A_BOARD_ID_B == g_Area_Ctl.Area_Cfg.BoardID )) + { + g_Area_Status_Ctl[g_Area_Ctl.Area_Cfg.BoardID].Area_ID = MSCP_AREA_ID_A; + g_Area_4x_Ctl.Area_ID = MSCP_AREA_ID_A; + } + else + { + g_Area_Status_Ctl[g_Area_Ctl.Area_Cfg.BoardID].Area_ID = MSCP_AREA_ID_B; + g_Area_4x_Ctl.Area_ID = MSCP_AREA_ID_B; + } + + /* 获取对系、对地板卡id*/ + get_Other_BoardId(g_Area_Ctl.Area_Cfg.BoardID, &g_Area_Ctl.Area_Cfg.Partner_BoardID, &g_Area_Ctl.Area_Cfg.Partner_Area_A_BoardID, &g_Area_Ctl.Area_Cfg.Partner_Area_B_BoardID); + + CM_Memset(&g_Area_State, 0 , sizeof(STR_Area_State), sizeof(STR_Area_State)); + /** 初始化区域网络配置 */ + Area_Net_init(); + /** 初始化区域信号量 */ + CM_Sem_Init(&g_Area_Ctl.m_AreaStart); + CM_Sem_Init(&g_Area_Ctl.m_AreaStop); + + /**创建区域通信线程 */ + CM_Thread_Create(NULL, (CM_THREAD_FUNC_T)Area_Work_Thread, "Area_Work_Thread", 4096*100, CM_TASK_PRIORITY_73, NULL); +} + +void get_Other_BoardId(CM_UINT32 local_Board_Id, CM_UINT32 *partner_Board_Id, CM_UINT32 *partner_Area_A_Board_Id, CM_UINT32 *partner_Area_B_Board_Id) +{ + if(NULL == partner_Board_Id || NULL == partner_Area_A_Board_Id || NULL == partner_Area_B_Board_Id) + { + + } + else + { + switch(local_Board_Id) + { + case MSCP_AREA_A_BOARD_ID_A: + *partner_Board_Id = MSCP_AREA_A_BOARD_ID_B; + *partner_Area_A_Board_Id = MSCP_AREA_B_BOARD_ID_A; + *partner_Area_B_Board_Id = MSCP_AREA_B_BOARD_ID_B; + break; + case MSCP_AREA_A_BOARD_ID_B: + *partner_Board_Id = MSCP_AREA_A_BOARD_ID_A; + *partner_Area_A_Board_Id = MSCP_AREA_B_BOARD_ID_A; + *partner_Area_B_Board_Id = MSCP_AREA_B_BOARD_ID_B; + break; + case MSCP_AREA_B_BOARD_ID_A: + *partner_Board_Id = MSCP_AREA_B_BOARD_ID_B; + *partner_Area_A_Board_Id = MSCP_AREA_A_BOARD_ID_A; + *partner_Area_B_Board_Id = MSCP_AREA_A_BOARD_ID_B; + break; + case MSCP_AREA_B_BOARD_ID_B: + *partner_Board_Id = MSCP_AREA_B_BOARD_ID_A; + *partner_Area_A_Board_Id = MSCP_AREA_A_BOARD_ID_A; + *partner_Area_B_Board_Id = MSCP_AREA_A_BOARD_ID_B; + break; + default: + break; + + } + + } +} +/** + * @brief 初始化区域网络配置 + * + */ +static void Area_Net_init() +{ + ENUM_CM_RETURN rt = ENUM_CM_TRUE;/**< 返回值 */ + CM_INT32 val = 0; + CM_BOOL rtCheck = 0; + Area_2oo2_Init(); + /*- 初始化板卡id等信息*/ + g_Area_Ctl.Area_Cfg.BoardID = g_PFM_Cfg.BOARD_ID;/**< 板卡ID 插箱id */ + g_Area_Ctl.Area_Cfg.Cpuid = g_PFM_Cfg.CPU_ID;/**< cpu id */ + + /** 获取区域网络A配置 */ + rt = CM_Memcpy(g_Area_Ctl.Area_Cfg.IP_Cfg_Area_A.IP_Local, 32, g_PFM_Cfg.Local_Cfg.IP_Area,32);/**< 本地通信IP */ + CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_1); + + rt = CM_Memcpy(g_Area_Ctl.Area_Cfg.IP_Cfg_Area_A.IP_Partner, 32, g_PFM_Cfg.Partner_Cfg.IP_Area,32);/**< 对系通信IP */ + CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_1); + + rt = CM_Memcpy(g_Area_Ctl.Area_Cfg.IP_Cfg_Area_A.IP_Partner_Area_A, 32, g_PFM_Cfg.Partner_Area_A_Cfg.IP_Area,32);/**< 对地通信IP */ + CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_1); + + rt = CM_Memcpy(g_Area_Ctl.Area_Cfg.IP_Cfg_Area_A.IP_Partner_Area_B, 32, g_PFM_Cfg.Partner_Area_B_Cfg.IP_Area,32);/**< 对地通信IP */ + CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_1); + + g_Area_Ctl.Area_Cfg.IP_Cfg_Area_A.port = g_PFM_Cfg.Local_Cfg.Port_Area_State;/**< 端口号 */ + + rt = Area_LogMQ_Init(); + CM_ASSERT(ENUM_CM_TRUE == rt, 0,0,0); + + AREA_LOG_MSG("nat a cfg %s, %s %s %s \r\n",g_PFM_Cfg.Local_Cfg.IP_Area, g_PFM_Cfg.Partner_Cfg.IP_Area, + g_PFM_Cfg.Partner_Area_A_Cfg.IP_Area, g_PFM_Cfg.Partner_Area_B_Cfg.IP_Area); + /** 初始化区域网络套接字 */ + /*- 创建socket */ + rt = CM_UDP_Socket_Create(&g_Area_Ctl.Area_Cfg.IP_Cfg_Area_A.Socket, CM_FALSE, (CM_UINT32)inet_addr(g_Area_Ctl.Area_Cfg.IP_Cfg_Area_A.IP_Local), g_Area_Ctl.Area_Cfg.IP_Cfg_Area_A.port, 0u, (CM_UINT8)1); + CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_1); + + val = (CM_INT32)NET_UDP_BUF_MAX; + (void)setsockopt(g_Area_Ctl.Area_Cfg.IP_Cfg_Area_A.Socket, SOL_SOCKET, SO_RCVBUF, (void*)(&val), (unsigned int)sizeof(val)); + + /*初始化消息队列*/ + rt = CM_MQ_Init(&g_Area_Ctl.Area_Cfg.IP_Cfg_Area_A.MsgQ, (CM_UINT16)Area_MSG_NUM_MAX, (CM_UINT16)Area_RAW_MSG_SIZE); + CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_1); + /*创建udp 接收线程*/ + rtCheck = CM_Thread_Create((CM_THREAD_T*)NULL, (CM_THREAD_FUNC_T)t_Area_UdpRecvThread, "Area_Rx_A", 0, CM_TASK_PRIORITY_73, (CM_Thread_Arg_Struct_T*)&g_Area_Ctl.Area_Cfg.IP_Cfg_Area_A); + CM_NM_ASSERT(CM_TRUE == rtCheck, NET_MODE,DARK_FAULT_CODE_FUN_ORDER_1, TSCP_DARK_ASSERT_24); + + + /** 获取区域网络B配置 */ + rt = CM_Memcpy(g_Area_Ctl.Area_Cfg.IP_Cfg_Area_B.IP_Local, 32, g_PFM_Cfg.Local_Cfg.IP_4x2,32);/**< 本地通信IP */ + CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_1); + rt = CM_Memcpy(g_Area_Ctl.Area_Cfg.IP_Cfg_Area_B.IP_Partner, 32, g_PFM_Cfg.Partner_Cfg.IP_4x2,32);/**< 对系通信IP */ + CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_1); + + rt = CM_Memcpy(g_Area_Ctl.Area_Cfg.IP_Cfg_Area_B.IP_Partner_Area_A, 32, g_PFM_Cfg.Partner_Area_A_Cfg.IP_4x2,32);/**< 对地通信IP */ + CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_1); + + rt = CM_Memcpy(g_Area_Ctl.Area_Cfg.IP_Cfg_Area_B.IP_Partner_Area_B, 32, g_PFM_Cfg.Partner_Area_B_Cfg.IP_4x2,32);/**< 对地通信IP */ + CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_1); + + g_Area_Ctl.Area_Cfg.IP_Cfg_Area_B.port = g_PFM_Cfg.Local_Cfg.Port_Area_State;/**< 端口号 */ + + AREA_LOG_MSG("nat b cfg %s, %s %s %s \r\n",g_PFM_Cfg.Local_Cfg.IP_4x2, g_PFM_Cfg.Partner_Cfg.IP_4x2, + g_PFM_Cfg.Partner_Area_A_Cfg.IP_4x2, g_PFM_Cfg.Partner_Area_B_Cfg.IP_4x2); + + /** 初始化区域网络套接字 */ + /*- 创建socket */ + rt = CM_UDP_Socket_Create(&g_Area_Ctl.Area_Cfg.IP_Cfg_Area_B.Socket, CM_FALSE, (CM_UINT32)inet_addr(g_Area_Ctl.Area_Cfg.IP_Cfg_Area_B.IP_Local), g_Area_Ctl.Area_Cfg.IP_Cfg_Area_B.port, 0u, (CM_UINT8)1); + CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_1); + + val = (CM_INT32)NET_UDP_BUF_MAX; + (void)setsockopt(g_Area_Ctl.Area_Cfg.IP_Cfg_Area_B.Socket, SOL_SOCKET, SO_RCVBUF, (void*)(&val), (unsigned int)sizeof(val)); + + /*初始化消息队列*/ + rt = CM_MQ_Init(&g_Area_Ctl.Area_Cfg.IP_Cfg_Area_B.MsgQ, (CM_UINT16)Area_MSG_NUM_MAX, (CM_UINT16)Area_RAW_MSG_SIZE); + CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_1); + /*创建udp 接收线程*/ + rtCheck = CM_Thread_Create((CM_THREAD_T*)NULL, (CM_THREAD_FUNC_T)t_Area_UdpRecvThread, "Area_Rx_B", 0, CM_TASK_PRIORITY_73, (CM_Thread_Arg_Struct_T*)&g_Area_Ctl.Area_Cfg.IP_Cfg_Area_B); + CM_NM_ASSERT(CM_TRUE == rtCheck, NET_MODE,DARK_FAULT_CODE_FUN_ORDER_1, TSCP_DARK_ASSERT_24); +} + +/** + * @brief 获取区域状态 + * + * @return ENUM_Area_State 区域状态 + */ +ENUM_AREA_STATE Area_Get_State() +{ + return g_Area_4x_Ctl.Local_state; +} + +/** + * @brief 获取区域状态 + * + * @return ENUM_Area_State 区域状态 + */ +ENUM_AREA_STATE Area_Get_Partner_State() +{ + return g_Area_4x_Ctl.Partner_state; +} + +void Area_Get_All_State(STR_Area_State *p_all_State) +{ + if(NULL == p_all_State) + { + + } + else + { + p_all_State->Local_state = g_Area_4x_Ctl.Local_state; + p_all_State->Partner_state = g_Area_4x_Ctl.Partner_state; + p_all_State->Partner_Area_A_state = g_Area_4x_Ctl.Partner_Area_A_state; + p_all_State->Partner_Area_B_state = g_Area_4x_Ctl.Partner_Area_B_state; + } + +} + +/** + * @brief 设置区域状态 + * + * @param State 区域状态 + */ +void Area_Set_State(ENUM_AREA_STATE State) +{ + g_Area_4x_Ctl.Local_state = State; +} + + +/** + * @brief 区域开始 + * + */ +void Area_Start() +{ + /** 区域开始信号量 */ + CM_Sem_Post(g_Area_Ctl.m_AreaStart); + AREA_LOG_MSG("*** Area thread star \n"); +} +/** + * @brief 等待区域开始 + * + */ +void Area_Wait_Start() +{ + /** 区域开始信号量 */ + CM_Sem_Wait(g_Area_Ctl.m_AreaStart); +} + +/** + * @brief 区域停止 + * + */ +void Area_Stop() +{ + /** 区域停止信号量 */ + CM_Sem_Post(g_Area_Ctl.m_AreaStop); +} +/** + * @brief 等待区域停止 + * + */ +void Area_Wait_Stop() +{ + /** 区域停止信号量 */ + CM_Sem_Wait(g_Area_Ctl.m_AreaStop); +} + +/** + * @brief 创建区域工作线程 + * + * @return CM_UINT32 + */ +static CM_THREAD_FUNC_T Area_Work_Thread(IN CM_Thread_Arg_Struct_T* arg) +{ + // STR_Area_Ctl *p_Area_Ctl = (STR_Area_Ctl *)arg; + /**todo 设置线程cpu亲和力 */ + CM_UINT32 cpu_mask = 0; + /*- 本线程锁定在 A53 core 1 */ + cpu_mask = (0x04u); + set_thread_affinity(cpu_mask); + /** 清空 队列 */ + CM_MQ_Clear(&g_Area_Ctl.Area_Cfg.IP_Cfg_Area_B.MsgQ); + CM_MQ_Clear(&g_Area_Ctl.Area_Cfg.IP_Cfg_Area_A.MsgQ); + CM_INT64 tick = 0; + while(1) + { + /** 区域开始信号量 */ + Area_Wait_Start(); + /**< 延时等待100ms */ + CM_Sleep(200); + tick = CM_GetTick(); + AREA_LOG_MSG("#### area start time = %lld####\r\n",tick / 1000000); + /**< 2oo2 交互区域状态 和主备系同步标识 以及AB 网状态*/ + Prepare_for_Area_Data(); + AREA_LOG_MSG("#### Prepare_for_Area_Data ####\r\n"); + /*清除上周期网络状态*/ + clear_Area_ALL_Net_Status(); + + /**< 发送区域通信请求 */ + Area_Send_Req(); + AREA_LOG_MSG("#### Area_Send_Req %llu ####\r\n",CM_GetTick()/1000000); + /*读队列处理数据 读取20ms 超时后退出*/ + + /**< 接收区域通信应答 */ + Area_Recv_Rsp(); + AREA_LOG_MSG("#### Area_Recv_Rsp ####\r\n"); + /**2oo2 交互接收数据 更新网络状态*/ + Area_Data_Exchange(); + /*主备地表决*/ + Area_vote(&g_Area_Status_Ctl[0], g_Area_Ctl.Area_Cfg.BoardID); + AREA_LOG_MSG("#### area end state %d usetime = %lld####\r\n", g_Area_4x_Ctl.Local_state, (CM_GetTick() - tick) / 1000000); + /** 区域停止信号量 */ + Area_Stop(); + } + + return 0; +} + + +void updata_Local_State() +{ + CM_UINT32 Local_BoardId = 0; + CM_UINT32 Partner_BoardId = 0; + CM_UINT32 Area_A_BoardID = 0; + CM_UINT32 Area_B_BoardID = 0; + Local_BoardId = g_Area_Ctl.Area_Cfg.BoardID; + + get_Other_BoardId(Local_BoardId, &Partner_BoardId, &Area_A_BoardID, &Area_B_BoardID); + AREA_LOG_MSG("board %d %d %d %d \r\n", Local_BoardId, Partner_BoardId, Area_A_BoardID, Area_B_BoardID); + AREA_LOG_MSG("g_Area_Status_Ctl state %d %d %d %d \r\n", g_Area_Status_Ctl[Local_BoardId].Area_Req.Localstate, g_Area_Status_Ctl[Partner_BoardId].Area_Req.Localstate, + g_Area_Status_Ctl[Area_A_BoardID].Area_Req.Localstate, g_Area_Status_Ctl[Area_B_BoardID].Area_Req.Localstate); + g_Area_4x_Ctl.Partner_state = g_Area_Status_Ctl[Partner_BoardId].Area_Req.Localstate; + g_Area_4x_Ctl.Partner_Area_A_state = g_Area_Status_Ctl[Area_A_BoardID].Area_Req.Localstate; + g_Area_4x_Ctl.Partner_Area_B_state = g_Area_Status_Ctl[Area_B_BoardID].Area_Req.Localstate; + + /*更新网络健康度*/ + net_state_cal(); + +} + + +void net_state_cal() +{ + CM_UINT16 index = 0; + + for(index = 1; index <= MSCP_AREA_DEVICE_MAX; index ++) + { + g_Area_Status_Ctl[index].Net_Health = 0; + if(MSCP_AREA_NET_FILD == g_Area_Status_Ctl[index].Local_Net_A_state) + { + g_Area_Status_Ctl[index].Local_Net_A_state_ErrCnt ++; + } + else + { + g_Area_Status_Ctl[index].Local_Net_A_state_ErrCnt = 0; + g_Area_Status_Ctl[index].Net_Health++; + } + + if(MSCP_AREA_NET_FILD == g_Area_Status_Ctl[index].Local_Net_B_state) + { + g_Area_Status_Ctl[index].Local_Net_B_state_ErrCnt ++; + } + else + { + g_Area_Status_Ctl[index].Local_Net_B_state_ErrCnt = 0; + g_Area_Status_Ctl[index].Net_Health++; + } + + if(MSCP_AREA_NET_FILD == g_Area_Status_Ctl[index].Peer_Net_A_state) + { + g_Area_Status_Ctl[index].Peer_Net_A_state_ErrCnt ++; + } + else + { + g_Area_Status_Ctl[index].Peer_Net_A_state_ErrCnt = 0; + g_Area_Status_Ctl[index].Net_Health++; + } + + if(MSCP_AREA_NET_FILD == g_Area_Status_Ctl[index].Peer_Net_B_state) + { + g_Area_Status_Ctl[index].Peer_Net_B_state_ErrCnt ++; + } + else + { + g_Area_Status_Ctl[index].Peer_Net_B_state_ErrCnt = 0; + g_Area_Status_Ctl[index].Net_Health++; + } + /* + * 判断4线是否同时中断,通过判断未收到数据计数判断 + * 任意3个数据相等或者4个数据相等,则认为通信是ok的, + * 否则认为非同时通信中断。此处无容忍,一周期断则认为是断 + * 公式如下: + * if ((A == B && B == C) || + (A == B && B == D) || + (A == C && C == D) || + (B == C && C == D)) + * */ + if ((g_Area_Status_Ctl[index].Local_Net_A_state_ErrCnt == g_Area_Status_Ctl[index].Local_Net_B_state_ErrCnt + && g_Area_Status_Ctl[index].Local_Net_B_state_ErrCnt == g_Area_Status_Ctl[index].Peer_Net_A_state_ErrCnt) + + ||(g_Area_Status_Ctl[index].Local_Net_A_state_ErrCnt == g_Area_Status_Ctl[index].Local_Net_B_state_ErrCnt + && g_Area_Status_Ctl[index].Local_Net_B_state_ErrCnt == g_Area_Status_Ctl[index].Peer_Net_B_state_ErrCnt) + + ||(g_Area_Status_Ctl[index].Local_Net_A_state_ErrCnt == g_Area_Status_Ctl[index].Peer_Net_A_state_ErrCnt + && g_Area_Status_Ctl[index].Peer_Net_A_state_ErrCnt == g_Area_Status_Ctl[index].Peer_Net_B_state_ErrCnt) + + ||(g_Area_Status_Ctl[index].Local_Net_B_state_ErrCnt == g_Area_Status_Ctl[index].Peer_Net_A_state_ErrCnt + && g_Area_Status_Ctl[index].Peer_Net_A_state_ErrCnt == g_Area_Status_Ctl[index].Peer_Net_B_state_ErrCnt)) + { + g_Area_Status_Ctl[index].Net_ERR_FLAG = MSCP_AREA_NET_SYNC_ERR_FLAG; + } + else + { + g_Area_Status_Ctl[index].Net_ERR_FLAG = MSCP_AREA_NET_ASYNC_ERR_FLAG; + } + + AREA_LOG_MSG("board index %d health %d recverr lo_A %d Lo_B %d peer_a %d peer_B %d\r\n",index,g_Area_Status_Ctl[index].Net_Health, + g_Area_Status_Ctl[index].Local_Net_A_state_ErrCnt, g_Area_Status_Ctl[index].Local_Net_B_state_ErrCnt + ,g_Area_Status_Ctl[index].Peer_Net_A_state_ErrCnt, g_Area_Status_Ctl[index].Peer_Net_B_state_ErrCnt); + + } +} + +void Area_Data_Exchange() +{ + + CM_UINT8 sendbuf[MSCP_MSG_BUF_MAX] = {0}; + CM_UINT8 recvbuf[MSCP_MSG_BUF_MAX] = {0}; + CM_UINT16 send_len = 0; + CM_UINT16 recvLen = 0; + CM_UINT16 index = 0; + CM_UINT16 idx = 0; + STR_Area_Req Area_Req_tmp = {0}; + /*数据打包*/ + Area_Data_Pack(&sendbuf[0], &send_len, MSCP_MSG_BUF_MAX); + /**2oo2 交互 */ + + recvLen = Area_2oo2_Currency_NoSplit(&sendbuf[0], send_len, &recvbuf[0], MSCP_MSG_BUF_MAX); + if(recvLen > 0) + { + /** 解析2oo2 数据 */ + idx = 0; + for(index = 1; index <= MSCP_AREA_DEVICE_MAX; index ++) + { + g_Area_Status_Ctl[index].Peer_Net_A_state = recvbuf[idx]; + idx += 1; + g_Area_Status_Ctl[index].Peer_Net_B_state = recvbuf[idx]; + idx += 1; + + CM_Memcpy(&Area_Req_tmp, sizeof(STR_Area_Req), &recvbuf[idx],sizeof(STR_Area_Req)); + AREA_LOG_MSG("Peer_Net_A_state %d %d \r\n",g_Area_Status_Ctl[index].Peer_Net_A_state,g_Area_Status_Ctl[index].Peer_Net_B_state); + + AREA_LOG_MSG("2oo2 state arq %d local arq %d state %d %d index %d \r\n",Area_Req_tmp.arqCount, g_Area_Status_Ctl[index].Area_Req.Localstate,g_Area_Status_Ctl[index].Area_Req.arqCount, Area_Req_tmp.Localstate, index); + + if(Area_Req_tmp.arqCount > g_Area_Status_Ctl[index].Area_Req.arqCount) + { + g_Area_Status_Ctl[index].Area_Req = Area_Req_tmp; + } + else + { + + } + idx += sizeof(STR_Area_Req); + } + } + /*更新状态 */ + updata_Local_State(); + +} + +/* + * 区域状态数据打包*/ +void Area_Data_Pack(CM_UINT8 *p_buf, CM_UINT16 *p_len, CM_UINT16 bufsize) +{ + CM_UINT16 index = 0; + CM_UINT16 idx = 0; + if((NULL == p_buf) && (NULL == p_len)) + { + + } + else + { + for(index = 1; index <= MSCP_AREA_DEVICE_MAX; index ++) + { + p_buf[idx] = g_Area_Status_Ctl[index].Local_Net_A_state; + idx++; + p_buf[idx] = g_Area_Status_Ctl[index].Local_Net_B_state; + idx++; + CM_Memcpy(&p_buf[idx] ,bufsize - idx , &g_Area_Status_Ctl[index].Area_Req ,sizeof(STR_Area_Req)); + +// MSCP_LOG_MSG("!!![0x%x] [0x%x] [0x%x] [0x%x] [0x%x] [0x%x] [0x%x] [0x%x]\r\n", sizeof(STR_Area_Req), g_Area_Status_Ctl[index].Area_Req.Localstate, +// g_Area_Status_Ctl[index].Area_Req.msgType, g_Area_Status_Ctl[index].Area_Req.arqCount, +// g_Area_Status_Ctl[index].Area_Req.srcId, g_Area_Status_Ctl[index].Area_Req.destId, +// g_Area_Status_Ctl[index].Area_Req.Localstate,g_Area_Status_Ctl[index].Area_Req.crc1); + + + idx+= sizeof(STR_Area_Req); + } + *p_len = idx; + } + + +} + + +/** + * @brief 准备区域数据 + * + */ +static void Prepare_for_Area_Data() +{ + CM_UINT16 index = 0; + CM_UINT8 idx = 0; + CM_UINT16 index_tmp = 0; + CM_UINT8 cpuid = 0; + CM_UINT32 crc = 0; + CM_UINT32 recvLen = 0; + CM_UINT8 sendbuf[MSCP_MSG_BUF_MAX] = {0}; + CM_UINT8 recvbuf[MSCP_MSG_BUF_MAX] = {0}; + cpuid = g_Area_Ctl.Area_Cfg.Cpuid; + index = g_Area_Ctl.Area_Cfg.BoardID; + + /*清空所有全局变量的状态,*/ + for(index_tmp = 1; index_tmp <= MSCP_AREA_DEVICE_MAX; index_tmp ++) + { + CM_Memset(&g_Area_Status_Ctl[index_tmp].Area_Req, 0, sizeof(STR_Area_Req),sizeof(STR_Area_Req)); + g_Area_Status_Ctl[index_tmp].Area_Req.Localstate = ENUM_AREA_SHUTDOWN; + } + + g_Area_Status_Ctl[index].Area_Req.Localstate = g_Area_4x_Ctl.Local_state; + g_Area_4x_Ctl.sync_finish_flag = CFM_GetSyncHealth(); + /*同步失败标志*//*todo 此标志位为输出比较失败标志,已经完成2oo2交互,此处可以不交互,如果双cpu不一致,需要交互此标志位*/ + g_Area_4x_Ctl.Sync_Fail_Flag = CFM_GetSyncFailFlag(); + + sendbuf[idx] = g_Area_4x_Ctl.Local_state; + idx += 1; + sendbuf[idx] = g_Area_4x_Ctl.sync_finish_flag; + idx += 1; + sendbuf[idx] = g_Area_Status_Ctl[index].Local_Net_A_state; + idx += 1; + sendbuf[idx] = g_Area_Status_Ctl[index].Local_Net_B_state; + idx += 1; + + + /**2oo2 交互 */ + AREA_LOG_MSG("#### first 2oo2 ####\r\n"); + recvLen = Area_2oo2_Currency_NoSplit(&sendbuf[0], idx , &recvbuf[0], MSCP_MSG_BUF_MAX); + if(recvLen > 0) + { + /** 解析2oo2 数据 */ + idx = 0; + g_Area_Status_Ctl[index].Area_Req.Localstate = g_Area_4x_Ctl.Local_state & recvbuf[idx]; + idx += 1; + g_Area_Status_Ctl[index].Area_Req.sync_finish_flag = g_Area_4x_Ctl.sync_finish_flag & recvbuf[idx]; + idx += 1; + g_Area_Status_Ctl[index].Peer_Net_A_state = recvbuf[idx]; + idx += 1; + g_Area_Status_Ctl[index].Peer_Net_B_state = recvbuf[idx]; + idx += 1; + } + + idx = 0; + + sendbuf[idx] = g_Area_Status_Ctl[index].Area_Req.Localstate; + idx += 1; + CM_LongToChar(g_Area_Status_Ctl[index].Area_Req.sync_finish_flag, &sendbuf[idx]); + idx += 4; + if(1 == cpuid) + { + crc = CM_Crc32_1(&sendbuf[0], idx); + g_Area_Status_Ctl[index].Area_Req.crc1 = crc; + + } + else + { + crc = CM_Crc32_2(&sendbuf[0], idx); + g_Area_Status_Ctl[index].Area_Req.crc2 = crc; + } + AREA_LOG_MSG("Prepare_for_Area_Data crc 0x%x\r\n", crc); + CM_LongToChar(crc, &sendbuf[idx]); + idx += 4; + /**2oo2 交互 */ + recvLen = Area_2oo2_Currency_NoSplit(&sendbuf[0], idx + 4, &recvbuf[0], MSCP_MSG_BUF_MAX); + if(recvLen > 0) + { + /** 解析2oo2 数据 */ + idx = 5; + AREA_LOG_MSG("Prepare_for_Area_Data peer_crc 0x%x\r\n", CM_LongFromChar(&recvbuf[idx])); + if(1 == cpuid) + { + g_Area_Status_Ctl[index].Area_Req.crc2 = CM_LongFromChar(&recvbuf[idx]); + } + else + { + g_Area_Status_Ctl[index].Area_Req.crc1 = CM_LongFromChar(&recvbuf[idx]); + } + + } + +} + +/** + * @brief 区域通信请求 + * + */ + +static void Area_Send_Req() +{ + CM_UINT16 index = 0; + CM_UINT16 send_len = 0; + + index = g_Area_Ctl.Area_Cfg.BoardID; + + g_Area_Status_Ctl[index].Area_Req.len = sizeof(STR_Area_Req); + g_Area_Status_Ctl[index].Area_Req.msgType = MSCP_MSG_AREA_ARQ_TYPE; + g_Area_Status_Ctl[index].Area_Req.arqCount = DFM_GetBirthCount(); + g_Area_Status_Ctl[index].Area_Req.srcId = (g_Area_Ctl.Area_Cfg.BoardID); /*(g_Area_Ctl.Area_Cfg.BoardID << 16) + (g_Area_Ctl.Area_Cfg.Cpuid);*/ + g_Area_Status_Ctl[index].Area_Req.destId = MSCP_MSG_DEST_ALL; + g_Area_Status_Ctl[index].Area_Req.Localstate = g_Area_4x_Ctl.Local_state; + g_Area_Status_Ctl[index].Area_Req.sync_finish_flag = g_Area_4x_Ctl.sync_finish_flag; +// g_Area_Status_Ctl[index].Area_Req.crc1 = 0; +// g_Area_Status_Ctl[index].Area_Req.crc2 = 0; + CM_Memset(&g_Area_Status_Ctl[index].Area_Req.reserver[0], 0, 8,sizeof(g_Area_Status_Ctl[index].Area_Req.reserver)); + g_Area_Status_Ctl[index].Area_Req.crc = 0; + + AREA_LOG_MSG("Send_Req LOCAL dtate %d sn %d \r\n",g_Area_Status_Ctl[index].Area_Req.Localstate, g_Area_Status_Ctl[index].Area_Req.arqCount); + /** 区域通信请求组包 */ + CM_Memset(&g_Area_Status_Ctl[index].send_buf[0], 0, MSCP_MSG_BUF_MAX, MSCP_MSG_BUF_MAX); + Area_Req_Pack(&g_Area_Status_Ctl[index].Area_Req, &g_Area_Status_Ctl[index].send_buf[0], MSCP_MSG_BUF_MAX, &send_len); + + /** 发送区域通信请求 */ + CM_UDP_Send_Msg(g_Area_Ctl.Area_Cfg.IP_Cfg_Area_A.Socket, (CM_UINT8 *)&g_Area_Status_Ctl[index].send_buf[0], send_len, inet_addr(g_Area_Ctl.Area_Cfg.IP_Cfg_Area_A.IP_Partner), g_Area_Ctl.Area_Cfg.IP_Cfg_Area_A.port); + CM_UDP_Send_Msg(g_Area_Ctl.Area_Cfg.IP_Cfg_Area_B.Socket, (CM_UINT8 *)&g_Area_Status_Ctl[index].send_buf[0], send_len, inet_addr(g_Area_Ctl.Area_Cfg.IP_Cfg_Area_B.IP_Partner), g_Area_Ctl.Area_Cfg.IP_Cfg_Area_B.port); + + CM_UDP_Send_Msg(g_Area_Ctl.Area_Cfg.IP_Cfg_Area_A.Socket, (CM_UINT8 *)&g_Area_Status_Ctl[index].send_buf[0], send_len, inet_addr(g_Area_Ctl.Area_Cfg.IP_Cfg_Area_A.IP_Partner_Area_A), g_Area_Ctl.Area_Cfg.IP_Cfg_Area_A.port); + CM_UDP_Send_Msg(g_Area_Ctl.Area_Cfg.IP_Cfg_Area_B.Socket, (CM_UINT8 *)&g_Area_Status_Ctl[index].send_buf[0], send_len, inet_addr(g_Area_Ctl.Area_Cfg.IP_Cfg_Area_B.IP_Partner_Area_A), g_Area_Ctl.Area_Cfg.IP_Cfg_Area_B.port); + + CM_UDP_Send_Msg(g_Area_Ctl.Area_Cfg.IP_Cfg_Area_A.Socket, (CM_UINT8 *)&g_Area_Status_Ctl[index].send_buf[0], send_len, inet_addr(g_Area_Ctl.Area_Cfg.IP_Cfg_Area_A.IP_Partner_Area_B), g_Area_Ctl.Area_Cfg.IP_Cfg_Area_A.port); + CM_UDP_Send_Msg(g_Area_Ctl.Area_Cfg.IP_Cfg_Area_B.Socket, (CM_UINT8 *)&g_Area_Status_Ctl[index].send_buf[0], send_len, inet_addr(g_Area_Ctl.Area_Cfg.IP_Cfg_Area_B.IP_Partner_Area_B), g_Area_Ctl.Area_Cfg.IP_Cfg_Area_B.port); + + AREA_LOG_MSG("Send_Req dest ip %s port %d \r\n",g_Area_Ctl.Area_Cfg.IP_Cfg_Area_A.IP_Partner_Area_A, g_Area_Ctl.Area_Cfg.IP_Cfg_Area_A.port); + + +} + + +/** + * @brief 区域通信请求组包 + * + * @param p_Area_Req 指向区域通信请求结构体的指针 + * @param p_buf 指向区域通信请求存储的指针 + * @param BufSize 区域通信请求存储缓冲区大小 + * @param p_len 指向区域通信请求长度的指针 + */ +void Area_Req_Pack(STR_Area_Req *p_Area_Req, CM_UINT8 *p_buf, CM_UINT16 BufSize, CM_UINT16 *p_len) +{ + CM_UINT32 idx = 0;/** buf 数组索引 */ + if((NULL == p_buf) && (BufSize < sizeof(STR_Area_Req)) && (NULL == p_len)) + { + CM_ASSERT(0, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_1); + } + else + { + + /** 区域通信请求组包 */ + + /* 2字节长度 + 1个字节消息类型 + 8字节序列号 + 4字节源ID + 4字节目的ID + 1字节本机状态 + 4字节同步状态 + 4字节CRC1 + 4字节CRC2 + 8字节预留 + 4字节CRC*/ + idx = 0; + CM_ShortToChar(p_Area_Req->len,&p_buf[idx]); + idx += sizeof(CM_UINT16); + + p_buf[idx] = p_Area_Req->msgType; + idx += sizeof(CM_UINT8); + + CM_LongToChar(p_Area_Req->arqCount,&p_buf[idx]); + idx += sizeof(CM_UINT32); + + CM_LongToChar(p_Area_Req->srcId,&p_buf[idx]); + idx += sizeof(CM_UINT32); + + CM_LongToChar(p_Area_Req->destId,&p_buf[idx]); + idx += sizeof(CM_UINT32); + + p_buf[idx] = p_Area_Req->Localstate; + idx += sizeof(CM_UINT8); + + CM_LongToChar(p_Area_Req->sync_finish_flag,&p_buf[idx]); + idx += sizeof(CM_UINT32); + + CM_LongToChar(p_Area_Req->crc1,&p_buf[idx]); + idx += sizeof(CM_UINT32); + + CM_LongToChar(p_Area_Req->crc2,&p_buf[idx]); + idx += sizeof(CM_UINT32); + + CM_Memcpy(&p_buf[idx], sizeof(p_Area_Req->reserver), &p_Area_Req->reserver[0], sizeof(p_Area_Req->reserver)); + idx += sizeof(p_Area_Req->reserver); + + p_Area_Req->crc = CM_Crc32((CM_UINT8 *)p_buf, idx); + CM_LongToChar(p_Area_Req->crc,&p_buf[idx]); + idx += sizeof(CM_UINT32); + + *p_len = idx; + + + } + +} + +CM_UINT8 Area_Req_Unpack(STR_Area_Req *p_Area_Req, CM_UINT8 *p_buf, CM_UINT16 len) +{ + CM_UINT32 idx = 0;/** buf 数组索引 */ + CM_UINT32 crc = 0; + CM_UINT32 buf_crc = 0; + CM_UINT32 buf_len = 0; + CM_UINT8 msg_Type = 0; +// CM_UINT32 srcId = 0; + CM_UINT32 crc1 = 0; + CM_UINT32 crc2 = 0; + CM_UINT8 rt = 0; + if((NULL == p_buf) ) + { + rt = 0; + CM_ASSERT(0, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_1); + } + else + { + /** 区域通信请求解包 */ + idx = 0; + /** 区域通信请求长度 */ + buf_len = CM_ShortFromChar(&p_buf[idx]); + idx += sizeof(CM_UINT16); + /** 区域通信请求校验和计算 */ + crc = CM_Crc32((CM_UINT8 *)p_buf, buf_len - 4); + /** 区域通信请求校验和提取*/ + buf_crc = CM_LongFromChar(&p_buf[buf_len - 4]); + /** 区域通信请求校验和校验 */ + if(crc != buf_crc) + { + CM_ASSERT(0, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_1); + rt = 0; + } + else + { + + p_Area_Req->len = buf_len; + + /** 获取区域通信请求消息类型 */ + msg_Type = p_buf[idx]; + idx += sizeof(CM_UINT8); + p_Area_Req->msgType = msg_Type; + + /** 获取区域通信请求arqCount */ + p_Area_Req->arqCount = CM_LongFromChar(&p_buf[idx]); + idx += sizeof(CM_UINT32); + + /** 获取区域通信请求srcId */ + p_Area_Req->srcId = CM_LongFromChar(&p_buf[idx]); + idx += sizeof(CM_UINT32); + /** 获取区域通信请求destId */ + p_Area_Req->destId = CM_LongFromChar(&p_buf[idx]); + idx += sizeof(CM_UINT32); + /*校验双crc*/ + crc1 = CM_Crc32_1(&p_buf[idx],5); + crc2 = CM_Crc32_2(&p_buf[idx],5); + /** 获取区域通信请求Localstate */ + p_Area_Req->Localstate = p_buf[idx]; + idx += sizeof(CM_UINT8); + /** 获取区域通信请求sync_finish_flag */ + p_Area_Req->sync_finish_flag = CM_LongFromChar(&p_buf[idx]); + idx += sizeof(CM_UINT32); + /** 获取区域通信请求crc1 */ + p_Area_Req->crc1 = CM_LongFromChar(&p_buf[idx]); + idx += sizeof(CM_UINT32); + /** 获取区域通信请求crc2 */ + p_Area_Req->crc2 = CM_LongFromChar(&p_buf[idx]); + idx += sizeof(CM_UINT32); + + /** 获取区域通信请求reserver */ + CM_Memcpy(&p_Area_Req->reserver[0], sizeof(p_Area_Req->reserver), &p_buf[idx], sizeof(p_Area_Req->reserver)); + idx += sizeof(p_Area_Req->reserver); + p_Area_Req->crc = CM_LongFromChar(&p_buf[idx]); + idx += sizeof(CM_UINT32); + + if(MSCP_MSG_AREA_RSP_TYPE == msg_Type) + { + if((crc1 == p_Area_Req->crc1) && (crc2 == p_Area_Req->crc2)) + { + AREA_LOG_MSG("Area_Req_Unpack ok \r\n"); + rt = 1; + } + else + { + rt = 0; + AREA_LOG_MSG("Area_Req_Unpack double crc err srcid %d local_crc [0x%x][0x%x] crc [0x%x][0x%x]\r\n",p_Area_Req->srcId, crc1, crc2, p_Area_Req->crc1,p_Area_Req->crc2); + CM_Memset(p_Area_Req, 0 , sizeof(STR_Area_Req), sizeof(STR_Area_Req)); + } + } + else + { + rt = 1; + } + + + + + } + + } + return rt; + +} + + +/** + * @brief 区域通信应答 + * + */ + void Area_Recv_Rsp() + { + CM_UINT8 *p_buf = NULL; + CM_UINT16 index = 0; + CM_UINT16 recv_len = MSCP_MSG_BUF_MAX; + CM_UINT8 i = 0; + CM_UINT8 rt = 0; + + STR_Area_IP_Cfg *p_cfg[2] = {0}; /**临时变量 */ + STR_Area_Req Area_Req_tmp = {0}; /** 临时变量 */ + + + CM_UINT64 end_Time = 0; + end_Time = CM_GetTick()/CM_MILLION + AREA_TIME_MAX; + + p_cfg[MSCP_AREA_NET_A] = &g_Area_Ctl.Area_Cfg.IP_Cfg_Area_A; + p_cfg[MSCP_AREA_NET_B] = &g_Area_Ctl.Area_Cfg.IP_Cfg_Area_B; + + index = g_Area_Ctl.Area_Cfg.BoardID; + CM_Memset(&g_Area_Status_Ctl[index].recv_buf[0], 0, MSCP_MSG_BUF_MAX, MSCP_MSG_BUF_MAX); + p_buf = g_Area_Status_Ctl[index].recv_buf; + if((NULL == p_buf) && (NULL == p_cfg)) + { + + } + else + { + AREA_LOG_MSG("st time %d ms \r\n",(CM_GetTick()/CM_MILLION)); + while(end_Time > (CM_GetTick()/CM_MILLION)) + { + CM_Sleep(2); + for(i = 0; i < 2; i++) + { + do { + recv_len = MSCP_MSG_BUF_MAX; + + /** udp 数据接收*/ + Area_Msg_Recv(p_cfg[i], p_buf, &recv_len, MSCP_MSG_BUF_MAX); + if(recv_len > 0) + { + CM_Memset(&Area_Req_tmp, 0,sizeof(Area_Req_tmp), sizeof(Area_Req_tmp)); + rt = 0; + + /*设置本机通信状态*/ + set_Area_Net_Status(i, MSCP_AREA_NET_OK); + + rt = Area_Req_Unpack(&Area_Req_tmp, p_buf, recv_len); + if(rt == 1) + { + if(Area_Req_tmp.msgType == MSCP_MSG_AREA_ARQ_TYPE) + { + AREA_LOG_MSG("recv data ok i = %d ARQ\r\n",i ); + /** 区域通信应答处理 */ + Area_Req_Process(&Area_Req_tmp); + } + else if(Area_Req_tmp.msgType == MSCP_MSG_AREA_RSP_TYPE) + { + AREA_LOG_MSG("recv data ok i = %d RSP\r\n",i ); + /** 区域通信应答处理 */ + Area_Rsp_Process(&Area_Req_tmp, i); + } + else + { + + } + } + } + else + { + /** 无操作 */ + } + + + }while (recv_len > 0); + + } + } + + AREA_LOG_MSG("end time %d ms %d ms\r\n",(CM_GetTick()/CM_MILLION), (CM_GetTick()/CM_MILLION) - end_Time); + } + + + } + +/** @brief 区域通信请求处理 + * @param p_Area_Req_tmp 区域通信请求结构体指针 +*/ +void Area_Req_Process(STR_Area_Req *p_Area_Req_tmp) +{ + CM_UINT32 index = 0; + CM_UINT32 srcid = 0; + CM_UINT16 send_len = 0; + CM_UINT8 *p_buf = NULL; + CM_UINT16 recv_len = 0; + /**获取板卡id作为管理结构体下标 */ + index = g_Area_Ctl.Area_Cfg.BoardID; + srcid = p_Area_Req_tmp->srcId; + p_buf = g_Area_Status_Ctl[index].send_buf; + + CM_UINT32 Partner_BoardId = 0; + CM_UINT32 Area_A_BoardID = 0; + CM_UINT32 Area_B_BoardID = 0; + + get_Other_BoardId(index, &Partner_BoardId, &Area_A_BoardID, &Area_B_BoardID); + + if((NULL == p_Area_Req_tmp) && (NULL == p_buf)) + { + + } + else + { + + p_Area_Req_tmp->destId = srcid; + p_Area_Req_tmp->srcId = g_Area_Status_Ctl[index].Area_Req.srcId; + p_Area_Req_tmp->msgType = MSCP_MSG_AREA_RSP_TYPE; + p_Area_Req_tmp->Localstate = g_Area_Status_Ctl[index].Area_Req.Localstate; + p_Area_Req_tmp->sync_finish_flag = g_Area_Status_Ctl[index].Area_Req.sync_finish_flag; + /** 区域通信应答crc1 */ + p_Area_Req_tmp->crc1 = g_Area_Status_Ctl[index].Area_Req.crc1; + /** 区域通信应答crc2 */ + p_Area_Req_tmp->crc2 = g_Area_Status_Ctl[index].Area_Req.crc2; + + AREA_LOG_MSG("srcid %d sn %d crc [0x%x] [0x%x]\r\n",srcid,p_Area_Req_tmp->arqCount,g_Area_Status_Ctl[index].Area_Req.crc1, g_Area_Status_Ctl[index].Area_Req.crc2); + /** 打包数据 */ + CM_Memset(p_buf, 0, MSCP_MSG_BUF_MAX, MSCP_MSG_BUF_MAX); + Area_Req_Pack(p_Area_Req_tmp, p_buf, MSCP_MSG_BUF_MAX, &send_len); + + if(srcid == Partner_BoardId) + { + CM_UDP_Send_Msg(g_Area_Ctl.Area_Cfg.IP_Cfg_Area_A.Socket, (CM_UINT8 *)&g_Area_Status_Ctl[index].send_buf[0], send_len, inet_addr(g_Area_Ctl.Area_Cfg.IP_Cfg_Area_A.IP_Partner), g_Area_Ctl.Area_Cfg.IP_Cfg_Area_A.port); + CM_UDP_Send_Msg(g_Area_Ctl.Area_Cfg.IP_Cfg_Area_B.Socket, (CM_UINT8 *)&g_Area_Status_Ctl[index].send_buf[0], send_len, inet_addr(g_Area_Ctl.Area_Cfg.IP_Cfg_Area_B.IP_Partner), g_Area_Ctl.Area_Cfg.IP_Cfg_Area_B.port); + } + else if(srcid == Area_A_BoardID) + { + CM_UDP_Send_Msg(g_Area_Ctl.Area_Cfg.IP_Cfg_Area_A.Socket, (CM_UINT8 *)&g_Area_Status_Ctl[index].send_buf[0], send_len, inet_addr(g_Area_Ctl.Area_Cfg.IP_Cfg_Area_A.IP_Partner_Area_A), g_Area_Ctl.Area_Cfg.IP_Cfg_Area_A.port); + CM_UDP_Send_Msg(g_Area_Ctl.Area_Cfg.IP_Cfg_Area_B.Socket, (CM_UINT8 *)&g_Area_Status_Ctl[index].send_buf[0], send_len, inet_addr(g_Area_Ctl.Area_Cfg.IP_Cfg_Area_B.IP_Partner_Area_A), g_Area_Ctl.Area_Cfg.IP_Cfg_Area_B.port); + + + } + else if(srcid == Area_B_BoardID) + { + CM_UDP_Send_Msg(g_Area_Ctl.Area_Cfg.IP_Cfg_Area_A.Socket, (CM_UINT8 *)&g_Area_Status_Ctl[index].send_buf[0], send_len, inet_addr(g_Area_Ctl.Area_Cfg.IP_Cfg_Area_A.IP_Partner_Area_B), g_Area_Ctl.Area_Cfg.IP_Cfg_Area_A.port); + CM_UDP_Send_Msg(g_Area_Ctl.Area_Cfg.IP_Cfg_Area_B.Socket, (CM_UINT8 *)&g_Area_Status_Ctl[index].send_buf[0], send_len, inet_addr(g_Area_Ctl.Area_Cfg.IP_Cfg_Area_B.IP_Partner_Area_B), g_Area_Ctl.Area_Cfg.IP_Cfg_Area_B.port); + } + + + + } + +} + +/** 区域通信应答处理 + */ +void Area_Rsp_Process(STR_Area_Req *p_Area_Req_tmp, CM_UINT8 net) +{ + CM_UINT32 index = 0; + CM_UINT32 srcid = 0; + CM_UINT32 local_SN = 0; + if(NULL == p_Area_Req_tmp) + { + + } + else + { + /**获取板卡id作为管理结构体下标 */ + index = g_Area_Ctl.Area_Cfg.BoardID; + srcid = p_Area_Req_tmp->srcId; + /** 获取本机序列号*/ + local_SN = g_Area_Status_Ctl[index].Area_Req.arqCount; + /** 如果时间同步失败 则接收3周期的旧数据,如果时间同步成功,必须是自己的数据 */ + if (MSCP_AREA_TIME_SYNC_OK != CFM_GetTimeSyncFlag()) + { + /** 校验应答是否为自己发出的 且目标id为自己*/ + if(((local_SN - 3)< p_Area_Req_tmp->arqCount) && (p_Area_Req_tmp->destId == index)) + { + + /** 保存接收状态 */ + CM_Memcpy(&g_Area_Status_Ctl[srcid].Area_Req, sizeof(STR_Area_Req), p_Area_Req_tmp, sizeof(STR_Area_Req)); + AREA_LOG_MSG("recv state = %d sn %d srcid %d \r\n",p_Area_Req_tmp->Localstate, p_Area_Req_tmp->arqCount, srcid); + if(MSCP_AREA_NET_A == net) + { + g_Area_Status_Ctl[srcid].Local_Net_A_state = MSCP_AREA_NET_OK; + } + else + { + g_Area_Status_Ctl[srcid].Local_Net_B_state = MSCP_AREA_NET_OK; + } + } + else + { + AREA_LOG_MSG("no sync time local_SN %d ,sn %d id %d %d\r\n",local_SN,p_Area_Req_tmp->arqCount,p_Area_Req_tmp->destId,index); + /** 不是自己发出的应答,忽略 */ + } + } + else + { + /* 根据接收到的数据 设置接收数据状态*/ + if(MSCP_AREA_NET_A == net) + { + g_Area_Status_Ctl[srcid].Local_Net_A_state = MSCP_AREA_NET_OK; + } + else + { + g_Area_Status_Ctl[srcid].Local_Net_B_state = MSCP_AREA_NET_OK; + } + + if((local_SN == p_Area_Req_tmp->arqCount) && (p_Area_Req_tmp->destId == index)) + { + AREA_LOG_MSG("recv time %llu local_SN %d ,sn %d id %d %d\r\n",CM_GetTick()/1000000,local_SN,p_Area_Req_tmp->arqCount,p_Area_Req_tmp->destId, srcid); + + /** 保存接收状态 */ + CM_Memcpy(&g_Area_Status_Ctl[srcid].Area_Req, sizeof(STR_Area_Req), p_Area_Req_tmp, sizeof(STR_Area_Req)); + AREA_LOG_MSG("RSP recv state = %d sn %d srcid %d \r\n",p_Area_Req_tmp->Localstate, p_Area_Req_tmp->arqCount, srcid); + + } + else + { + AREA_LOG_MSG("sync time local_SN %d ,sn %d id %d %d\r\n",local_SN,p_Area_Req_tmp->arqCount,p_Area_Req_tmp->destId,srcid); + /** 不是自己发出的应答,忽略 */ + } + } + + } + +} + +/** @brief 设置区域通信网络状态 + * @param index 区域通信网络索引 + * @param state 区域通信网络状态 +*/ + +void set_Area_Net_Status(CM_UINT8 net, CM_UINT8 state) +{ + /**获取板卡id作为管理结构体下标 */ + CM_UINT32 index = 0; + index = g_Area_Ctl.Area_Cfg.BoardID; + + if(MSCP_AREA_NET_A == net) + { + g_Area_Status_Ctl[index].Local_Net_A_state = state; + } + else if(MSCP_AREA_NET_B == net) + { + g_Area_Status_Ctl[index].Local_Net_B_state = state; + } + else + { + CM_ASSERT(0, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_1); + } +} + +void clear_Area_Net_Status() +{ + CM_UINT32 index= 0; + /**获取板卡id作为管理结构体下标 */ + index = g_Area_Ctl.Area_Cfg.BoardID; + + g_Area_Status_Ctl[index].Local_Net_A_state = MSCP_AREA_NET_FILD; + g_Area_Status_Ctl[index].Local_Net_B_state = MSCP_AREA_NET_FILD; + +} + +void clear_Area_ALL_Net_Status() +{ + CM_UINT32 index= 0; + for(index = 1; index <= MSCP_AREA_DEVICE_MAX; index++) + { + g_Area_Status_Ctl[index].Local_Net_A_state = MSCP_AREA_NET_FILD; + g_Area_Status_Ctl[index].Local_Net_B_state = MSCP_AREA_NET_FILD; + } +} + + + +/** @brief 是否存在区域备地 + * @return CM_BOOL 是否存在区域备地 +*/ +CM_BOOL Area_Slave_Is_Exist() +{ + CM_BOOL rt = CM_FALSE; + if((ENUM_AREA_SLAVE == g_Area_4x_Ctl.Local_state) || (ENUM_AREA_SLAVE == g_Area_4x_Ctl.Partner_state) + || (ENUM_AREA_SLAVE == g_Area_4x_Ctl.Partner_Area_A_state) || (ENUM_AREA_SLAVE == g_Area_4x_Ctl.Partner_Area_B_state)) + { + rt = CM_TRUE; + } + else + { + + } + return rt; +} + + +/** + * @brief 区域通信消息接收 + * + */ + void Area_Msg_Recv(STR_Area_IP_Cfg *pCtrl,CM_UINT8 *p_buf, CM_UINT16 *p_len, CM_UINT16 BufSize) + { + ENUM_CM_RETURN rt = ENUM_CM_FALSE; + if((NULL == p_buf) || (NULL == p_len)) + { + CM_ASSERT(0, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_1); + } + else + { + rt = CM_MQ_Read(&pCtrl->MsgQ, p_buf, p_len); + if(ENUM_CM_FALSE == rt ) + { + *p_len = 0; + } + } + } + +void Area_Clear_MQ() +{ + CM_MQ_Clear(&g_Area_Ctl.Area_Cfg.IP_Cfg_Area_B.MsgQ); + CM_MQ_Clear(&g_Area_Ctl.Area_Cfg.IP_Cfg_Area_A.MsgQ); +} + +CM_UINT32 Area_GetArea_A_ID(void) +{ + return g_Area_Ctl.Area_Cfg.Partner_Area_A_BoardID; +} +CM_UINT32 Area_GetArea_B_ID(void) +{ + return g_Area_Ctl.Area_Cfg.Partner_Area_B_BoardID; +} + + diff --git a/TSCP/src/MSCP/Area/Area.h b/TSCP/src/MSCP/Area/Area.h new file mode 100644 index 0000000..a183c8e --- /dev/null +++ b/TSCP/src/MSCP/Area/Area.h @@ -0,0 +1,73 @@ +/* + * Area.h + * + * Created on: 2025年12月2日 + * Author: adan + */ + +#ifndef AREA_AREA_H_ +#define AREA_AREA_H_ +#include "CM_Types.h" +#include "Area_State_Vote.h" +#include "Area_state.h" + +typedef struct +{ + ENUM_AREA_STATE Local_state;/**< 区域状态*/ + ENUM_AREA_STATE Partner_state;/**< 区域状态*/ + ENUM_AREA_STATE Partner_Area_A_state;/**< 区域状态*/ + ENUM_AREA_STATE Partner_Area_B_state;/**< 区域状态*/ +}STR_Area_State; +/** + * @brief 区域开始 + * + */ +void Area_Start(); +/** + * @brief 等待区域停止 + * + */ +void Area_Wait_Stop(); + +/** + * @brief 区域停止 + * + */ +void Area_Stop(); + +/** + * @brief 获取区域状态 + * + * @return ENUM_Area_State 区域状态 + */ +ENUM_AREA_STATE Area_Get_State(); +/** + * @brief 设置区域状态 + * + * @param State 区域状态 + */ +void Area_Set_State(ENUM_AREA_STATE State); + +/** + * @brief 获取区域状态 + * + * @return ENUM_Area_State 区域状态 + */ +ENUM_AREA_STATE Area_Get_Partner_State(); + +/**<是否存在区域备地*/ +CM_BOOL Area_Slave_Is_Exist(); + +void Area_init(); + +void Area_Clear_MQ(); + +void Area_Get_All_State(STR_Area_State *p_all_State); + +CM_UINT32 Area_GetArea_A_ID(void); + +CM_UINT32 Area_GetArea_B_ID(void); + +/*日志转换*/ +void Area_LOG_Transition(void); +#endif /* AREA_AREA_H_ */ diff --git a/TSCP/src/MSCP/Area/Area_2oo2.c b/TSCP/src/MSCP/Area/Area_2oo2.c new file mode 100644 index 0000000..d1141cf --- /dev/null +++ b/TSCP/src/MSCP/Area/Area_2oo2.c @@ -0,0 +1,133 @@ +#include "CM_Types.h" +#include "CFM_Net.h" +#include "PFM_Cfg.h" +#include "CM_Memory.h" +#include "CM_UDP.h" +#include "CM_MultiThread_Priority.h" +#include "CM_MultiThread.h" +#include "Area_2oo2.h" +#include "CM_Socket.h" +#include "PFM_Cfg.h" +#include "MSCP_Define.h" +#include "PFM_Log.h" + +/* + * Area_2oo2.c + * + * Created on: 2025年12月2日 + * Author: adan + */ + + +#define Area_2oo2_MSG_NUM_MAX (200u) +#define Area_INNET_RAW_MSG_SIZE (2048u) + + +ENUM_CM_RETURN Area_2oo2_Send(IN const CM_UINT8* p_data, IN CM_INT32 len); +CM_INT32 Area_2oo2_Recv(OUT CM_UINT8* p_data, IN CM_UINT32 BufSize); + + + + STR_Area_Net_Cfg g_Area_2oo2_Cfg; + /** + * @brief 2oo2初始化 + * + */ + +void Area_2oo2_Init() +{ + CM_UINT32 val= 0; + ENUM_CM_RETURN rt = ENUM_CM_FALSE; + CM_BOOL rtCheck = 0; + /** 2oo2网络结构体初始化 */ + g_Area_2oo2_Cfg.Net_2oo2_Ctl.SN = 0; + g_Area_2oo2_Cfg.Net_2oo2_Ctl.DataSend = Area_2oo2_Send; + g_Area_2oo2_Cfg.Net_2oo2_Ctl.DataRecv = Area_2oo2_Recv; + /** 2oo2网络初始化 */ + CM_Memcpy(g_Area_2oo2_Cfg.IP_Local, 32 , g_PFM_Cfg.Local_Cfg.IP_2oo2 , 32); + CM_Memcpy(g_Area_2oo2_Cfg.IP_Pear, 32 , g_PFM_Cfg.Peer_Cfg.IP_2oo2, 32); + g_Area_2oo2_Cfg.Port = g_PFM_Cfg.Local_Cfg.Port_2oo2_Area; + /*- 创建socket */ + rt = CM_UDP_Socket_Create(&g_Area_2oo2_Cfg.Socket, CM_FALSE, (CM_UINT32)inet_addr(g_Area_2oo2_Cfg.IP_Local), g_Area_2oo2_Cfg.Port, 0u, (CM_UINT8)1u); + CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_1); + /*- 配置socket */ + val = (CM_INT32)NET_UDP_BUF_MAX; + (void)setsockopt(g_Area_2oo2_Cfg.Socket, SOL_SOCKET, SO_RCVBUF, (void*)(&val), (unsigned int)sizeof(val)); + + /** 2oo2接收消息队列初始化 */ + rt = CM_MQ_Init(&g_Area_2oo2_Cfg.MsgQ, (CM_UINT16)Area_2oo2_MSG_NUM_MAX, (CM_UINT16)Area_INNET_RAW_MSG_SIZE); + CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_1); + + /*- 启动2oo2接收线程 */ + rtCheck = CM_Thread_Create((CM_THREAD_T*)NULL, (CM_THREAD_FUNC_T)t_Area_2oo2_UdpRecvThread, "Area_2oo2_Rx", 0, CM_TASK_PRIORITY_73, (CM_Thread_Arg_Struct_T*)&g_Area_2oo2_Cfg); + CM_NM_ASSERT(CM_TRUE == rtCheck, NET_MODE,DARK_FAULT_CODE_FUN_ORDER_1, TSCP_DARK_ASSERT_24); + + + +} + +/** + * @brief 2oo2发送数据 + * + * @param p_data 指向要发送数据的指针 + * @param len 要发送数据的长度 + * @return ENUM_CM_RETURN 发送状态 + */ +ENUM_CM_RETURN Area_2oo2_Send(IN const CM_UINT8* p_data, IN CM_INT32 len) +{ + ENUM_CM_RETURN rt = ENUM_CM_FALSE; + if(NULL != p_data) + { + rt = CFM_2oo2_Send_Currency(g_Area_2oo2_Cfg.Socket, p_data, len, g_Area_2oo2_Cfg.Port); + CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_1); + } + else + { + CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_1); + } + return rt; +} +/** + * @brief 2oo2接收数据 + * + * @param p_data 指向接收数据存储的指针 + * @param BufSize 接收数据存储缓冲区大小 + * @return CM_INT32 实际接收数据长度 + */ +CM_INT32 Area_2oo2_Recv(OUT CM_UINT8* p_data, IN CM_UINT32 BufSize) +{ + CM_UINT16 rcvlen = 1024; + ENUM_CM_RETURN rt = ENUM_CM_FALSE; + CM_UINT8 buf[1024] = {0}; + if(NULL != p_data) + { + //MSCP_LOG_MSG("2oo2 Qlen %d \r\n", CM_MQ_Get_Msg_Num(&g_Area_2oo2_Cfg.MsgQ)); + rt = CM_MQ_Read(&g_Area_2oo2_Cfg.MsgQ, buf, &rcvlen); + /*- 是否获取成功 */ + if ((ENUM_CM_TRUE == rt) && (0u < rcvlen)) + { + /*- 输出接收数据 */ + rt = CM_Memcpy((void*)p_data, (CM_SIZE_T)BufSize, (void*)buf, (CM_SIZE_T)rcvlen); + //CM_RE_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_39, TSCP_DARK_ASSERT_2); + } + else + { + rcvlen = 0u; + } + + } + else + { + CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_1); + } + return rcvlen; +} + + + + +CM_INT32 Area_2oo2_Currency_NoSplit(IN const CM_UINT8 * pMyData, IN CM_INT32 DataLen, OUT CM_UINT8 * pPeerData, IN CM_UINT32 DataSize) +{ + return CFM_2oo2_Currency_NoSplit(&g_Area_2oo2_Cfg.Net_2oo2_Ctl, pMyData, DataLen, pPeerData, DataSize); +} + diff --git a/TSCP/src/MSCP/Area/Area_2oo2.h b/TSCP/src/MSCP/Area/Area_2oo2.h new file mode 100644 index 0000000..9cea5ef --- /dev/null +++ b/TSCP/src/MSCP/Area/Area_2oo2.h @@ -0,0 +1,5 @@ +#include "CM_Types.h" +#include "Area_Net.h" + +CM_INT32 Area_2oo2_Currency_NoSplit(IN const CM_UINT8 * pMyData, IN CM_INT32 DataLen, OUT CM_UINT8 * pPeerData, IN CM_UINT32 DataSize); +void Area_2oo2_Init(); diff --git a/TSCP/src/MSCP/Area/Area_Net.c b/TSCP/src/MSCP/Area/Area_Net.c new file mode 100644 index 0000000..5c8b7fa --- /dev/null +++ b/TSCP/src/MSCP/Area/Area_Net.c @@ -0,0 +1,237 @@ +/* + * Area.c + * + * Created on: 2025年12月2日 + * Author: adan + */ +#include "CM_Types.h" +#include "CM_Memory.h" +#include "CM_Socket.h" +#include "CM_UDP.h" +#include "CM_Convert.h" +#include "PFM_Cfg.h" +#include "CM_Sem.h" +#include "CM_MultiThread.h" +#include "CM_MultiThread_Priority.h" +#include "CM_Time.h" +#include "DFM_Time.h" +#include "MSCP_Define.h" +#include "PFM_LOG.h" +#include "DFM_Time.h" +#include "CM_CRC32.h" +#include "Area_Net.h" +#include "MSCP_APP_Interface.h" +#include "CM_MQ.h" +#include "stdarg.h" + +static CM_MQ_Struct_T s_AreaLogMsgQ; + /** + * @brief UDP接收线程 + * @param arg 指向STRU_CFM_RECV_CTRL的指针 + * @details + * 创建本线程之前应先配置好STRU_CFM_RECV_CTRL,包括创建阻塞通信的socket + * 本线程将以阻塞方式接收UDP报文并写入线程接收队列 + */ + CM_THREAD_FUNC_T t_Area_2oo2_UdpRecvThread(IN CM_Thread_Arg_Struct_T* arg) + { + /*- 变量初始化 */ + STR_Area_Net_Cfg* pCtrl = (STR_Area_Net_Cfg*)arg; /* 线程控制信息 */ + ENUM_CM_RETURN rt = ENUM_CM_FALSE; /* 函数返回值 */ + CM_UINT8* rcvBuf = NULL; + CM_INT32 len; /* 报文长度 */ + CM_UINT32 srcIP;/* 源IP */ + CM_UINT16 srcPort;/* 源端口 */ + CM_SOCKADDR_T addr;/* 地址转换*/ + CM_UINT32 cpu_mask = 0; + /*- 本线程锁定在 A53 core 1 */ + cpu_mask = (0x04u); + set_thread_affinity(cpu_mask); + MSCP_LOG_MSG("IP:%s:%d UDP recv Start\n", pCtrl->IP_Local, pCtrl->Port); + /*- 循环接收UDP数据 */ + while (1) + { + /*- UDP阻塞接收 */ + rcvBuf = CM_MQ_Get_BufAddr(&pCtrl->MsgQ); + if(NULL != rcvBuf) + { + len = CM_UDP_Recv_Msg(pCtrl->Socket, &rcvBuf[0u], (CM_INT32)CM_UNSIGNED_SHORT_EXP(pCtrl->MsgQ.maxMsgSize), &srcIP, &srcPort); + /*- 是否收到有效数据 */ + if (len > 0) + { + /*- 源IP端口是否合法 */ + if ((srcIP == inet_addr(pCtrl->IP_Pear)) && (srcPort== pCtrl->Port)) + { + /*- 保存通信数据 */ + rt = CM_MQ_UpData(&pCtrl->MsgQ,(CM_UINT16)CM_SIGNED_INT_EXP(len)); + /*- 数据保存是否成功 */ + if (ENUM_CM_TRUE == rt) + { + /*成功无操作*/ + } + else + { + /*- 防御性清空*/ + MSCP_LOG_MSG("port %d rx overflow(msgLen=%d),t\n", pCtrl->Port, len); + rt = CM_MQ_Clear(&pCtrl->MsgQ); + CM_RE_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_11, TSCP_DARK_ASSERT_1); + } + } + else + { + /*- 来自非预期IP端口的数据*/ + addr.sin_addr.s_addr = srcIP; + MSCP_LOG_MSG("rx err want port:%d src [%s:%d]:%d \n", pCtrl->Port, inet_ntoa(addr.sin_addr), srcPort, len); + CM_RE_ASSERT(0, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_11, TSCP_DARK_ASSERT_2); + } + } + else + { + /*- 接收出错 */ + MSCP_LOG_MSG("warning ASSERT1103: port %d rx err(len=%d)\n", pCtrl->Port, len); + (void)CFM_DarkLog_Storage(DARK_LOG_HEX, TSCP_DARK_WARNING, 4U, DARK_FAULT_CODE_MERGE(NET_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_1)); + } + } + else + { + /*获取队列指针失败,清空队列*/ + rt = CM_MQ_Clear(&pCtrl->MsgQ); + MSCP_LOG_MSG("buf clear\n"); + CM_RE_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_11, TSCP_DARK_ASSERT_4); + } + } + return NULL; + } + + + CM_THREAD_FUNC_T t_Area_UdpRecvThread(IN STR_Area_IP_Cfg* arg) + { + /*- 变量初始化 */ + STR_Area_IP_Cfg* pCtrl = (STR_Area_IP_Cfg*)arg; /* 线程控制信息 */ + ENUM_CM_RETURN rt = ENUM_CM_FALSE; /* 函数返回值 */ + CM_UINT8* rcvBuf = NULL; + CM_INT32 len; /* 报文长度 */ + CM_UINT32 srcIP;/* 源IP */ + CM_UINT16 srcPort;/* 源端口 */ + CM_SOCKADDR_T addr;/* 地址转换*/ + + CM_UINT32 cpu_mask = 0; + /*- 本线程锁定在 A53 core 1 */ + cpu_mask = (0x04u); + set_thread_affinity(cpu_mask); + MSCP_LOG_MSG("IP:%s:%d UDP recv Start\n", pCtrl->IP_Local, pCtrl->port); + /*- 循环接收UDP数据 */ + while (1) + { + /*- UDP阻塞接收 */ + rcvBuf = CM_MQ_Get_BufAddr(&pCtrl->MsgQ); + if(NULL != rcvBuf) + { + len = CM_UDP_Recv_Msg(pCtrl->Socket, &rcvBuf[0u], (CM_INT32)CM_UNSIGNED_SHORT_EXP(pCtrl->MsgQ.maxMsgSize), &srcIP, &srcPort); + /*- 是否收到有效数据 */ + if (len > 0) + { + /*- 源IP端口是否合法 */ + if ((srcIP != 0) && (srcPort != 0)) + { + /*- @alias 将收到的报文写入线程接收队列 */ +// MSCP_LOG_MSG("!!! area recv len = %d \r\n",len); + /*- 保存通信数据 */ + rt = CM_MQ_UpData(&pCtrl->MsgQ,(CM_UINT16)CM_SIGNED_INT_EXP(len)); + /*- 数据保存是否成功 */ + if (ENUM_CM_TRUE == rt) + { + /*成功无操作*/ + } + else + { + /*- 防御性清空*/ + rt = CM_MQ_Clear(&pCtrl->MsgQ); + CM_RE_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_11, TSCP_DARK_ASSERT_1); + } + + } + else + { + /*- 来自非预期IP端口的数据*/ + addr.sin_addr.s_addr = srcIP; + CM_RE_ASSERT(0, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_11, TSCP_DARK_ASSERT_2); + } + } + else + { + /*- 接收出错 */ + MSCP_LOG_MSG("warning ASSERT1103: port %d rx err(len=%d)\n", pCtrl->port, len); + (void)CFM_DarkLog_Storage(DARK_LOG_HEX, TSCP_DARK_WARNING, 4U, DARK_FAULT_CODE_MERGE(NET_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_1)); + } + } + else + { + /*获取队列指针失败,清空队列*/ + rt = CM_MQ_Clear(&pCtrl->MsgQ); + MSCP_LOG_MSG("buf clear\n"); + CM_RE_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_11, TSCP_DARK_ASSERT_4); + } + } + return NULL; + } + + ENUM_CM_RETURN Area_LogMQ_Init(void) + { + return CM_MQ_Init(&s_AreaLogMsgQ, (CM_UINT16)CFM_INNET_LOG_SIZE, (CM_UINT16)(CFM_INNET_LOG_SIZE)); + } + /** + * @brief 平台记录格式化字符串日志 + * @param filename 文件路径 + * @param func 函数名 + * @param line 行号 + * @param fmt 格式化字符串 + */ +void Area_LOG_MSG(IN const CM_CHAR *filename, IN CM_INT32 line, IN const CM_CHAR* fmt, ...) + { + /*- 变量初始化 */ + va_list argList; + CM_CHAR msgBuf[1024]; + CM_INT32 headLen = 0; + CM_INT32 msgLen = 0; + if(NULL == fmt) + { + /* 无处理 */ + } + else + { + /*- 记录文件名、函数名、行号 */ + headLen = snprintf(msgBuf, sizeof(msgBuf), "ps_Area:%s:%d:", filename, line); + va_start(argList, (fmt)); + /*- 记录日志内容 */ + msgLen += vsnprintf(msgBuf + headLen, sizeof(msgBuf) - (CM_SIZE_T)headLen, fmt, argList); + va_end(argList); + #ifdef WIN32 + Bootprintf("%s", msgBuf + headLen); + #endif + /*printf("%s", msgBuf + headLen);*/ + /*- 输出日志信息 */ + CM_MQ_Write((CM_MQ_Struct_T*)&s_AreaLogMsgQ, (CM_UINT8*)msgBuf, (CM_UINT16)headLen + msgLen); + } + } + /*日志转换*/ + void Area_LOG_Transition(void) + { + ENUM_CM_RETURN rt = ENUM_CM_FALSE; + CM_UINT8 buf[1024] = {0}; + CM_UINT16 len = 1024; + while(1) + { + len = 1024; + rt = CM_MQ_Read(&s_AreaLogMsgQ, buf, (CM_UINT16*)&len); + if(ENUM_CM_TRUE == rt) + { + /*- 输出日志信息 */ + (void)CFM_BaseLog_Send((CM_UINT8*)buf, len); + } + else + { + /*无处理*/ + break; + } + } + } diff --git a/TSCP/src/MSCP/Area/Area_Net.h b/TSCP/src/MSCP/Area/Area_Net.h new file mode 100644 index 0000000..ce1c7d0 --- /dev/null +++ b/TSCP/src/MSCP/Area/Area_Net.h @@ -0,0 +1,35 @@ +#include "CM_Types.h" +#include "CFM_Net.h" +#include "CM_MQ.h" +#include "CM_MultiThread.h" + +#define NET_UDP_BUF_MAX ((1024*256) - (1)) /*UDP协议栈缓冲区大小(用于接收代码)*/ + + typedef struct + { + CM_CHAR IP_Local[32]; /**< 本地通信IP */ + CM_CHAR IP_Pear[32]; /**< 对端通信IP */ + CM_UINT16 Port; /**< 通信端口 */ + CM_SOCKET Socket; /**< 通信socket */ + CM_MQ_Struct_T MsgQ; /**< 接收消息队列 */ + STRU_2OO2_NET_NO_PACK_T Net_2oo2_Ctl; /**< 2oo2网络无包结构体 */ + }STR_Area_Net_Cfg; + + typedef struct + { + CM_CHAR IP_Local[32]; /**< 本地通信IP */ + CM_CHAR IP_Partner[32]; /**< 对系通信IP */ + CM_CHAR IP_Partner_Area_A[32]; /**< 对地通信IP */ + CM_CHAR IP_Partner_Area_B[32]; /**< 对地通信IP */ + CM_SOCKET Socket; /**< 套接字 */ + CM_UINT16 port; /**< 端口号 */ + CM_MQ_Struct_T MsgQ; /**< 接收消息队列 */ + }STR_Area_IP_Cfg; + + CM_THREAD_FUNC_T t_Area_2oo2_UdpRecvThread(IN CM_Thread_Arg_Struct_T* arg); + CM_THREAD_FUNC_T t_Area_UdpRecvThread(IN STR_Area_IP_Cfg* arg); + ENUM_CM_RETURN Area_LogMQ_Init(void); + void Area_LOG_MSG(IN const CM_CHAR *filename, IN CM_INT32 line, IN const CM_CHAR* fmt, ...); +#define AREA_LOG_MSG(fmt, ...) (Area_LOG_MSG(FILENAME(__FILE__),(CM_INT32)__LINE__,(fmt), ##__VA_ARGS__)) + + diff --git a/TSCP/src/MSCP/Area/Area_State_Vote.c b/TSCP/src/MSCP/Area/Area_State_Vote.c new file mode 100644 index 0000000..7a9c9b3 --- /dev/null +++ b/TSCP/src/MSCP/Area/Area_State_Vote.c @@ -0,0 +1,283 @@ +/* + * Area_State_Vote.c + * + * Created on: 2025年12月9日 + * Author: adan + */ + +#include "Area_State_Vote.h" +#include "PFM_LOG.h" +#include "Area_Net.h" +STR_Area_4x_Ctl g_Area_4x_Ctl = {0}; + +extern STR_Area_State_Ctl g_Area_Status_Ctl[8]; + + +void Unknow_Vote(STR_Area_State_Ctl *p_Area_Status_Ctl, CM_UINT32 Local_BoardId) +{ + + CM_UINT32 Partner_BoardId = 0; + CM_UINT32 Area_A_BoardID = 0; + CM_UINT32 Area_B_BoardID = 0; + + get_Other_BoardId(Local_BoardId, &Partner_BoardId, &Area_A_BoardID, &Area_B_BoardID); + + if(NULL == p_Area_Status_Ctl) + { + /** 宕机 */ + CM_ASSERT(0,0,0,0); + } + else + { + /** 相邻地是未知地,本地是B地 */ + if( ( (ENUM_AREA_UNKNOW == g_Area_4x_Ctl.Partner_Area_A_state) || (ENUM_AREA_UNKNOW == g_Area_4x_Ctl.Partner_Area_B_state) ) + && (MSCP_AREA_ID_B == g_Area_4x_Ctl.Area_ID) ) + { + g_Area_4x_Ctl.Local_state = ENUM_AREA_OFFLINE; + AREA_LOG_MSG("01 ENUM_AREA_UNKNOW >>>> ENUM_AREA_OFFLINE \r\n"); + } + /** 本系上电,判断存在备地。*/ + else if((ENUM_AREA_SLAVE == g_Area_4x_Ctl.Partner_Area_A_state) || (ENUM_AREA_SLAVE == g_Area_4x_Ctl.Partner_Area_B_state) + || (ENUM_AREA_SLAVE == g_Area_4x_Ctl.Partner_state) ) + { + g_Area_4x_Ctl.Local_state = ENUM_AREA_OFFLINE; + AREA_LOG_MSG("02 ENUM_AREA_UNKNOW >>>> ENUM_AREA_OFFLINE \r\n"); + } + /**不存在备地 另一地是主地 */ + else if((ENUM_AREA_MASTER == g_Area_4x_Ctl.Partner_Area_A_state) || (ENUM_AREA_MASTER == g_Area_4x_Ctl.Partner_Area_B_state) ) + { + g_Area_4x_Ctl.Local_state = ENUM_AREA_OFFLINE; + AREA_LOG_MSG("03 ENUM_AREA_UNKNOW >>>> ENUM_AREA_OFFLINE \r\n "); + } + /** 相邻地是未知地,且本地是是A地 */ + else if( ( (ENUM_AREA_UNKNOW == g_Area_4x_Ctl.Partner_Area_A_state) || (ENUM_AREA_UNKNOW == g_Area_4x_Ctl.Partner_Area_B_state) ) + && (MSCP_AREA_ID_A == g_Area_4x_Ctl.Area_ID) ) + { + g_Area_4x_Ctl.Unknow_count++; + if(g_Area_4x_Ctl.Unknow_count > MSCP_AREA_UNKNOW_COUNT_MAX) + { + g_Area_4x_Ctl.Local_state = ENUM_AREA_MASTER; + AREA_LOG_MSG("04 ENUM_AREA_UNKNOW >>>> ENUM_AREA_MASTER \r\n"); + g_Area_4x_Ctl.Unknow_count = 0; + } + } + /** 相邻地是宕机 */ + else if( ( (ENUM_AREA_SHUTDOWN == g_Area_4x_Ctl.Partner_Area_A_state) || (ENUM_AREA_SHUTDOWN == g_Area_4x_Ctl.Partner_Area_B_state) ) ) + { + g_Area_4x_Ctl.Unknow_count++; + if(g_Area_4x_Ctl.Unknow_count > MSCP_AREA_UNKNOW_COUNT_MAX) + { + g_Area_4x_Ctl.Local_state = ENUM_AREA_MASTER; + AREA_LOG_MSG("05 ENUM_AREA_UNKNOW >>>> ENUM_AREA_MASTER \r\n"); + g_Area_4x_Ctl.Unknow_count = 0; + } + } + /** 相邻地是离线 */ + else if( ( (ENUM_AREA_OFFLINE == g_Area_4x_Ctl.Partner_Area_A_state) || (ENUM_AREA_OFFLINE == g_Area_4x_Ctl.Partner_Area_B_state) ) ) + { + g_Area_4x_Ctl.Unknow_count++; + if(g_Area_4x_Ctl.Unknow_count > MSCP_AREA_UNKNOW_COUNT_MAX) + { + g_Area_4x_Ctl.Local_state = ENUM_AREA_MASTER; + AREA_LOG_MSG("06 ENUM_AREA_UNKNOW >>>> ENUM_AREA_MASTER \r\n"); + g_Area_4x_Ctl.Unknow_count = 0; + } + else + { + ; + } + } + else + { + + } + } + + +} + +void Offline_Vote(STR_Area_State_Ctl *p_Area_Status_Ctl, CM_UINT32 Local_BoardId) +{ + CM_UINT32 Partner_BoardId = 0; + CM_UINT32 Area_A_BoardID = 0; + CM_UINT32 Area_B_BoardID = 0; + + get_Other_BoardId(Local_BoardId, &Partner_BoardId, &Area_A_BoardID, &Area_B_BoardID); + + if(NULL == p_Area_Status_Ctl) + { + /** 宕机 */ + CM_ASSERT(0,0,0,0); + } + else + { + /** 时间同步完成 且主用地在本地 */ + if( ( ENUM_AREA_MASTER == g_Area_4x_Ctl.Partner_state) + && (1 == g_Area_4x_Ctl.sync_finish_flag) ) + { + AREA_LOG_MSG("01 ENUM_AREA_OFFLINE >>>> ENUM_AREA_MASTER \r\n"); + g_Area_4x_Ctl.Local_state = ENUM_AREA_MASTER; + } + /** 本系上电,判断存在备地。*/ + else if((( ENUM_AREA_MASTER == g_Area_4x_Ctl.Partner_Area_A_state) || ( ENUM_AREA_MASTER == g_Area_4x_Ctl.Partner_Area_B_state) ) + && (1 == g_Area_4x_Ctl.sync_finish_flag) /*&& (MSCP_AREA_NET_HEALTH_LOW < p_Area_Status_Ctl->Net_Health)*/) + { + AREA_LOG_MSG("02 ENUM_AREA_OFFLINE >>>> ENUM_AREA_SLAVE \r\n"); + g_Area_4x_Ctl.Local_state = ENUM_AREA_SLAVE; + } + /**不存在备地 另一地是主地 */ + else if((ENUM_AREA_MASTER == g_Area_4x_Ctl.Partner_Area_A_state) || (ENUM_AREA_MASTER == g_Area_4x_Ctl.Partner_Area_B_state) ) + { + AREA_LOG_MSG("03 ENUM_AREA_OFFLINE >>>> ENUM_AREA_OFFLINE \r\n"); + g_Area_4x_Ctl.Local_state = ENUM_AREA_OFFLINE; + } + } +} + + +void Master_Vote(STR_Area_State_Ctl *p_Area_Status_Ctl, CM_UINT32 Local_BoardId) +{ + + CM_UINT32 Partner_BoardId = 0; + CM_UINT32 Area_A_BoardID = 0; + CM_UINT32 Area_B_BoardID = 0; + + get_Other_BoardId(Local_BoardId, &Partner_BoardId, &Area_A_BoardID, &Area_B_BoardID); + + if(NULL == p_Area_Status_Ctl) + { + AREA_LOG_MSG("01 AREA BOTH MASTER \r\n"); + /** 宕机 */ + CM_ASSERT(0,0,0,0); + + } + else + { + /* 双主地宕机*/ + if((ENUM_AREA_MASTER == g_Area_4x_Ctl.Partner_Area_A_state) || (ENUM_AREA_MASTER == g_Area_4x_Ctl.Partner_Area_B_state)) + { + CM_ASSERT(0,0,0,0); + } + /* 预留将来 远程切系*/ + else + { + + } + } + + +} + +void Salve_Vote(STR_Area_State_Ctl *p_Area_Status_Ctl, CM_UINT32 Local_BoardId) +{ + CM_UINT32 Partner_BoardId = 0; + CM_UINT32 Area_A_BoardID = 0; + CM_UINT32 Area_B_BoardID = 0; + + get_Other_BoardId(Local_BoardId, &Partner_BoardId, &Area_A_BoardID, &Area_B_BoardID); + + if(NULL == p_Area_Status_Ctl) + { + /** 宕机 */ + CM_ASSERT(0,0,0,0); + } + else + { + /** 数据同步失败 */ + if(0 == g_Area_4x_Ctl.Sync_Fail_Flag) + { + AREA_LOG_MSG("01 ENUM_AREA_SLAVE >>>> ENUM_AREA_OFFLINE \r\n"); + g_Area_4x_Ctl.Local_state = ENUM_AREA_OFFLINE; + } +#if 0 + /** 本系上电,判断存在备地。*/ + else if(MSCP_AREA_NET_HEALTH_LOW > p_Area_Status_Ctl->Net_Health) + { + AREA_LOG_MSG("02 ENUM_AREA_SLAVE >>>> ENUM_AREA_OFFLINE \r\n"); + g_Area_4x_Ctl.Local_state = ENUM_AREA_OFFLINE; + } +#endif + /**主用主 宕机 且四线同时中断 */ + else if((ENUM_AREA_SHUTDOWN == g_Area_4x_Ctl.Partner_Area_A_state) && (ENUM_AREA_SHUTDOWN == g_Area_4x_Ctl.Partner_Area_B_state) + &&(MSCP_AREA_NET_SYNC_ERR_FLAG == g_Area_Status_Ctl[Area_A_BoardID].Net_ERR_FLAG) + && (MSCP_AREA_NET_SYNC_ERR_FLAG == g_Area_Status_Ctl[Area_B_BoardID].Net_ERR_FLAG) ) + { + AREA_LOG_MSG("03 ENUM_AREA_SLAVE >>>> ENUM_AREA_MASTER \r\n"); + g_Area_4x_Ctl.Local_state = ENUM_AREA_MASTER; + } + /*本地是备地 但是相邻地是主地*/ + else if((ENUM_AREA_SLAVE == g_Area_4x_Ctl.Local_state) && (ENUM_AREA_MASTER == g_Area_4x_Ctl.Partner_state)) + { + AREA_LOG_MSG("04 ENUM_AREA_SLAVE >>>> ENUM_AREA_MASTER \r\n"); + g_Area_4x_Ctl.Local_state = ENUM_AREA_MASTER; + } + /**主用主 宕机 且四线非同时中断 */ + else if((ENUM_AREA_SHUTDOWN == g_Area_4x_Ctl.Partner_Area_A_state) && (ENUM_AREA_SHUTDOWN == g_Area_4x_Ctl.Partner_Area_B_state) + && ( ( MSCP_AREA_NET_ASYNC_ERR_FLAG == g_Area_Status_Ctl[Area_A_BoardID].Net_ERR_FLAG) + || ( MSCP_AREA_NET_ASYNC_ERR_FLAG == g_Area_Status_Ctl[Area_B_BoardID].Net_ERR_FLAG) )/*&& ( 四线同事中断)*/) + { + AREA_LOG_MSG("05 ENUM_AREA_SLAVE >>>> ENUM_AREA_SHUTDOWN \r\n"); + CM_ASSERT(0,0,0,0); + } + /* 本系为备地 对地两系都不是主地 备地升主*/ + else if(((ENUM_AREA_OFFLINE == g_Area_4x_Ctl.Partner_Area_A_state) && (ENUM_AREA_OFFLINE == g_Area_4x_Ctl.Partner_Area_B_state)) + ||((ENUM_AREA_OFFLINE == g_Area_4x_Ctl.Partner_Area_A_state)&&((ENUM_AREA_SHUTDOWN == g_Area_4x_Ctl.Partner_Area_B_state) && (MSCP_AREA_NET_SYNC_ERR_FLAG == g_Area_Status_Ctl[Area_B_BoardID].Net_ERR_FLAG))) + ||(((ENUM_AREA_SHUTDOWN == g_Area_4x_Ctl.Partner_Area_A_state) && (MSCP_AREA_NET_SYNC_ERR_FLAG == g_Area_Status_Ctl[Area_A_BoardID].Net_ERR_FLAG))&&(ENUM_AREA_OFFLINE == g_Area_4x_Ctl.Partner_Area_B_state))) + { + AREA_LOG_MSG("06 ENUM_AREA_SLAVE >>>> ENUM_AREA_MASTER \r\n"); + g_Area_4x_Ctl.Local_state = ENUM_AREA_MASTER; + } + else + { + AREA_LOG_MSG("07 ENUM_AREA_SLAVE >>>> ENUM_AREA_SLAVE \r\n"); + } + } +} + + +void ShtuDown_Vote(STR_Area_State_Ctl *p_Area_Status_Ctl, CM_UINT32 Local_BoardId) +{ + /* 预留将来 远程切系*/ + if(NULL == p_Area_Status_Ctl) + { + /** 宕机 */ + CM_ASSERT(0,0,0,0); + } + else + { + g_Area_4x_Ctl.Local_state = ENUM_AREA_UNKNOW; + } +} + +void Area_vote(STR_Area_State_Ctl *p_Area_Status_Ctl, CM_UINT32 Local_BoardId) +{ + /*获取当前通道状态*/ + + switch(g_Area_4x_Ctl.Local_state) + { + case ENUM_AREA_SHUTDOWN: + ShtuDown_Vote(p_Area_Status_Ctl, Local_BoardId); + break; + case ENUM_AREA_UNKNOW: + Unknow_Vote(p_Area_Status_Ctl, Local_BoardId); + break; + case ENUM_AREA_OFFLINE: + Offline_Vote(p_Area_Status_Ctl, Local_BoardId); + break; + case ENUM_AREA_MASTER: + Master_Vote(p_Area_Status_Ctl, Local_BoardId); + break; + case ENUM_AREA_SLAVE: + Salve_Vote(p_Area_Status_Ctl, Local_BoardId); + break; + + } + +} + + + + + + + diff --git a/TSCP/src/MSCP/Area/Area_State_Vote.h b/TSCP/src/MSCP/Area/Area_State_Vote.h new file mode 100644 index 0000000..c522628 --- /dev/null +++ b/TSCP/src/MSCP/Area/Area_State_Vote.h @@ -0,0 +1,33 @@ +/* + * Area_State_Vote.h + * + * Created on: 2025年12月9日 + * Author: adan + */ + +#ifndef MSCP_AREA_AREA_STATE_VOTE_H_ +#define MSCP_AREA_AREA_STATE_VOTE_H_ + +#include "CM_Types.h" +#include "Area_state.h" + + + +typedef struct +{ + ENUM_AREA_STATE Local_state;/**< 区域状态*/ + ENUM_AREA_STATE Partner_state;/**< 区域状态*/ + ENUM_AREA_STATE Partner_Area_A_state;/**< 区域状态*/ + ENUM_AREA_STATE Partner_Area_B_state;/**< 区域状态*/ + CM_UINT32 Unknow_count;/**< 未知状态计数*/ + CM_UINT8 Area_ID;/**< 区域ID*/ + CM_INT32 sync_finish_flag; /**< 同步完成标识 */ + CM_INT32 Sync_Fail_Flag; /**< 同步失败标识 */ +}STR_Area_4x_Ctl; + +extern STR_Area_4x_Ctl g_Area_4x_Ctl; + + +void Area_vote(STR_Area_State_Ctl *p_Area_Status_Ctl, CM_UINT32 Local_BoardId); + +#endif /* MSCP_AREA_AREA_STATE_VOTE_H_ */ diff --git a/TSCP/src/MSCP/Area/Area_state.h b/TSCP/src/MSCP/Area/Area_state.h new file mode 100644 index 0000000..f0978a1 --- /dev/null +++ b/TSCP/src/MSCP/Area/Area_state.h @@ -0,0 +1,91 @@ +/* + * Area_state.h + * + * Created on: 2025年12月9日 + * Author: adan + */ + +#ifndef MSCP_AREA_AREA_STATE_H_ +#define MSCP_AREA_AREA_STATE_H_ +#include "CM_Types.h" + +#define MSCP_AREA_NET_A 0 /**< 区域通信A网 */ +#define MSCP_AREA_NET_B 1 /**< 区域通信B网 */ + +#define MSCP_AREA_NET_OK 0x05u /**< 网络状态正常 */ +#define MSCP_AREA_NET_FILD 0x0au /**< 网络状态不正常 */ + +#define MSCP_AREA_DEVICE_MAX 0x04 /**< 区域设备最大数量 */ + +#define MSCP_AREA_ID_A 0x05 /**< A地区域通信id */ +#define MSCP_AREA_ID_B 0x0A /**< B地区域通信id */ + +#define MSCP_AREA_A_BOARD_ID_A 0x01 +#define MSCP_AREA_A_BOARD_ID_B 0x02 +#define MSCP_AREA_B_BOARD_ID_A 0x03 +#define MSCP_AREA_B_BOARD_ID_B 0x04 + +#define MSCP_AREA_UNKNOW_COUNT_MAX 0x0au + +#define MSCP_MSG_BUF_MAX 1024u /**< 区域通信消息最大缓冲区大小 */ + +#define MSCP_AREA_NET_HEALTH_LOW 0x02u +#define MSCP_AREA_NET_HEALTH_MAX 0x02u + + +#define MSCP_AREA_TIME_SYNC_OK 0x01u + +#define MSCP_AREA_NET_SYNC_ERR_FLAG 0x01u /*网络同时故障宏*/ +#define MSCP_AREA_NET_ASYNC_ERR_FLAG 0x00u /*网络非同时故障宏*/ +/*定义枚举型函数返回值*/ +typedef enum +{ + ENUM_AREA_SHUTDOWN = 0x00u, + ENUM_AREA_UNKNOW = 0x01u, /**< 未知地 */ + ENUM_AREA_OFFLINE = 0x02u, /**< 离线地 */ + ENUM_AREA_MASTER = 0x03u, /**< 主地 */ + ENUM_AREA_SLAVE = 0x04u /**< 备地 */ +}ENUM_AREA_STATE; + +#pragma pack(1) /** 声明为一字节对齐 */ +typedef struct +{ + CM_UINT16 len; /**< 消息长度 */ + CM_UINT8 msgType; /**< 消息类型 */ + CM_UINT64 arqCount; /**< 区域通信请求序号 */ + CM_UINT32 srcId; /**< 源ID */ + CM_UINT32 destId; /**< 目的ID */ + ENUM_AREA_STATE Localstate; /**< 区域状态 */ + CM_INT32 sync_finish_flag; /**< 同步完成标识 */ + CM_UINT32 crc1;/**< 校验和1 */ + CM_UINT32 crc2;/**< 校验和2 */ + CM_UINT8 reserver[8];/**< 保留字段 */ + CM_UINT32 crc; /**< 校验和 */ +}STR_Area_Req; +#pragma pack() + + +typedef struct +{ +// ENUM_AREA_STATE state;/**< 区域状态*/ + CM_UINT8 Area_ID;/**< 区域ID*/ + + CM_UINT8 Local_Net_A_state;/**< 本地 A 网网络状态*/ + CM_UINT32 Local_Net_A_state_ErrCnt;/**< 本地 A 网网络错误状态计数器*/ + CM_UINT8 Local_Net_B_state;/**< 本地B 网网络状态*/ + CM_UINT32 Local_Net_B_state_ErrCnt;/**< 本地 B 网网络错误状态计数器*/ + CM_UINT8 Peer_Net_A_state;/**< 邻机 A 网网络状态*/ + CM_UINT32 Peer_Net_A_state_ErrCnt;/**< 邻机 A 网网络错误状态计数器*/ + CM_UINT8 Peer_Net_B_state;/**< 邻机 B 网网络状态*/ + CM_UINT32 Peer_Net_B_state_ErrCnt;/**< 邻机 B 网网络错误状态计数器*/ + + CM_UINT32 Net_Health;/**< 网络健康状态*/ + CM_UINT32 Net_ERR_FLAG;/**< 网络4线同时中断标志位状态,有3根线。4根线存在认为正常,其余情况都是非同时中断*/ + + CM_UINT8 send_buf[MSCP_MSG_BUF_MAX];/**< 发送缓冲区*/ + CM_UINT8 recv_buf[MSCP_MSG_BUF_MAX];/**< 接收缓冲区*/ + + STR_Area_Req Area_Req ; +}STR_Area_State_Ctl; + +#endif /* MSCP_AREA_AREA_STATE_H_ */ diff --git a/TSCP/src/MSCP/CFM/CFM_Net.c b/TSCP/src/MSCP/CFM/CFM_Net.c index 34cff21..6f0c7a8 100644 --- a/TSCP/src/MSCP/CFM/CFM_Net.c +++ b/TSCP/src/MSCP/CFM/CFM_Net.c @@ -98,7 +98,8 @@ typedef struct /** 2乘线程控制*/ static STRU_CFM_RECV_CTRL_T s_CFM_Rx2x2; /**< 2x2数据通信接收线程控制 */ -static STRU_CFM_RECV_CTRL_T s_CFM_State2x2; /**< 2x2数据通信接收线程控制 */ +static STRU_CFM_RECV_CTRL_T s_CFM_State2x2; /**< 2x2状态数据通信接收线程控制 */ +static STRU_CFM_RECV_CTRL_T s_CFM_State2x2Extend; /**< 2x2状态数据扩展通信接收线程控制 */ /** 2取线程控制*/ static STRU_CFM_RECV_CTRL_T s_CFM_Rx2oo2; /**< 2oo2数据通信接收线程控制 */ static STRU_CFM_RECV_CTRL_T s_CFM_Rx2oo2_App; /**< 应用2oo2数据通信接收线程控制 */ @@ -119,23 +120,10 @@ static STRU_CFM_SEND_DARKLOG s_Log_CtrlQ; /*注册透传算法函数指针数组*/ RAW_ALGORITHM p_ALGORITHM_Fun[INNET_RAW_DOUBLE_PASS_NUM] = {NULL}; -/** 时钟同步控制 */ -typedef struct -{ - CM_CHAR IP[32]; /* 本机IP */ - CM_UINT16 port; /* 本机端口 */ - CM_SOCKET* pSock; /* 本地socket */ - - /* - * delay和offset受互斥信号量mutex保护, - * 读写delay和offset时需要先取得互斥信号量 - */ - CM_MUTEX_T mutex; /* 互斥信号量 */ - ENUM_CM_RETURN isOK; /* 校时成功标志 */ - CM_INT64 delay; /* 延迟时间 */ - CM_INT64 offset; /* 偏移时间 */ - -}STRU_CFM_TIME_CTRL_T; +/*发送2x2状态扩展通道数据,注册函数指针*/ +EXTEND_DATA_SEND p_2x2_ExtendDataSend; +/*接收2x2状态扩展通道数据,注册函数指针*/ +EXTEND_DATA_RECV p_2x2_ExtendDataRecv; /** 周期同步控制 */ typedef struct @@ -155,16 +143,17 @@ typedef struct /** 通信层socket管理 */ typedef struct { - CM_SOCKET Sock_2oo2_Time; /**< 2oo2校时socket */ CM_SOCKET Sock_2oo2_Data; /**< 2oo2数据通信socket */ CM_SOCKET Sock_2oo2_Data_App; /**< 应用2oo2数据通信socket */ CM_SOCKET Sock_2oo2_Maintenance; /**< 2oo2维护模式socket */ CM_SOCKET Sock_2oo2_2x2_State; /**< 2oo2上电同步socket */ - CM_SOCKET Sock_2x2_Time; /**< 2x2校时socket */ - CM_SOCKET Sock_2x2_Data; /**< 2x2数据通信socket */ - CM_SOCKET Sock_2x2_Syn; /**< 2x2周期同步socket */ - CM_SOCKET Sock_2x2_State; /**< 2x2状态切换socket */ + CM_SOCKET Sock_4x2_Data_Send; /**< 4x2数据通信socket */ + CM_SOCKET Sock_4x2_Data_Rcv; /**< 4x2数据通信socket */ + CM_SOCKET Sock_4x2_Syn_Send; /**< 4x2周期同步socket */ + CM_SOCKET Sock_4x2_Syn_Rcv; /**< 4x2周期同步socket */ + CM_SOCKET Sock_2x2_State; /**< 2x2状态切换socket */ + CM_SOCKET Sock_2x2_State_Extend;/**< 2x2状态切换扩展socket */ CM_SOCKET Sock_InnetSafe; /**< 内网安全通信socket */ CM_SOCKET Sock_OutnetSafe; /**< 外网安全通信socket */ @@ -183,8 +172,6 @@ typedef struct static STRU_CFM_SOCKS_T s_CFM_Sock; /**< 通信层socket管理 */ -static STRU_CFM_TIME_CTRL_T s_CFM_2oo2_Time; /**< 2oo2时钟同步控制 */ -static STRU_CFM_TIME_CTRL_T s_CFM_2x2_Time; /**< 2x2时钟同步控制 */ static STRU_CFM_SYN_CTRL_T s_CFM_2x2_Syn; /**< 2x2周期同步控制 */ static CM_UINT8 s_CFM_UDP_Cache[65535]; /**< 临时缓冲区 */ @@ -197,15 +184,6 @@ STRU_HARDWARE_BOOT_COM_T g_Hardware_boot_com_state; * @brief 2oo2相关网络通信初始化 */ static void s_NetInit_2oo2(void); -/** -* @brief 通用2oo2数据发送 -* @param pBuf 发送报文指针 取值范围:非空 -* @param BufLen 发送报文长度 取值范围:0~0x7FFFFFFF -* @return 发送结果 -* - ENUM_CM_TRUE 成功 -* - ENUM_CM_FALSE 失败 -*/ -static ENUM_CM_RETURN CFM_2oo2_Send_Currency(IN CM_SOCKET sock,IN const CM_UINT8* pBuf, IN CM_INT32 BufLen,IN CM_UINT16 nPortDest); /** * @brief 2oo2重传请求与应答ACK发送 @@ -233,6 +211,16 @@ static void s_NetInit_2x2(void); * @see :: CFM_2x2_SyncRecv */ static CM_THREAD_FUNC_T t_SyncThread(IN CM_Thread_Arg_Struct_T* arg); +/** +* @brief 数据接收通用接口 +* @param *ctrl 控制结构体 +* @param pBuf 接收报文指针 +* @param BufLen 接收报文缓冲区大小 +* @return 接收报文长度 +* - 正整数 接收报文长度 +* - 0 接收失败 +*/ +static CM_INT32 CFM_Recv_ComInterface(STRU_CFM_RECV_CTRL_T *pctrl,OUT CM_UINT8* pBuf, IN CM_UINT32 BufSize,CM_UINT16 Offset); /*********************************内网通信相关*****************************************/ @@ -297,20 +285,6 @@ static CM_THREAD_FUNC_T t_UdpRecvThread(IN CM_Thread_Arg_Struct_T* arg); */ static CM_THREAD_FUNC_T t_UdpRecvMaintenanceThread(IN CM_Thread_Arg_Struct_T* arg); -/** -* @brief 时钟同步线程 -* @param arg 指向STRU_CFM_TIME_CTRL的指针 -* @return 线程函数返回值(实际永远不会返回) -* @details -* 创建本线程之前应先配置好STRU_CFM_TIME_CTRL,包括创建阻塞通信的socket -* 本线程将以阻塞方式接收时钟同步报文并作出应答 -* 收到请求报文时立即给出应答 -* 收到应答报文时记录并计算延迟时间、偏移时间 -* @see :: CFM_2oo2_TimeReq -* @see :: CFM_2oo2_TimeGet -*/ -static CM_THREAD_FUNC_T t_TimeThread(IN CM_Thread_Arg_Struct_T* arg); - /** * @brief 远程部署接收线程 * @param arg 指向STRU_CFM_RECV_CTRL的指针 @@ -332,27 +306,25 @@ static void s_NetInit_2oo2(void) CM_INT32 val = 0; /* 临时变量 */ CM_BOOL rtCheck = CM_FALSE; /* 临时变量 */ - /*- 创建时间同步socket */ - rt = CM_UDP_Socket_Create(&s_CFM_Sock.Sock_2oo2_Time, CM_FALSE,(CM_UINT32)inet_addr(g_PFM_Cfg.Local_Cfg.IP_2oo2), g_PFM_Cfg.Local_Cfg.Port_2oo2_Time, 0u, (CM_UINT8)0u); - CM_NM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE,DARK_FAULT_CODE_FUN_ORDER_1, TSCP_DARK_ASSERT_1); /*- 创建平台数据2取socket */ - rt = CM_UDP_Socket_Create(&s_CFM_Sock.Sock_2oo2_Data, CM_FALSE, (CM_UINT32)inet_addr(g_PFM_Cfg.Local_Cfg.IP_2oo2), g_PFM_Cfg.Local_Cfg.Port_2oo2_Data, 0u, (CM_UINT8)0u); + rt = CM_UDP_Socket_Create(&s_CFM_Sock.Sock_2oo2_Data, CM_FALSE, (CM_UINT32)inet_addr(g_PFM_Cfg.Local_Cfg.IP_2oo2), g_PFM_Cfg.Local_Cfg.Port_2oo2_Data, 0u, (CM_UINT8)1u); CM_NM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE,DARK_FAULT_CODE_FUN_ORDER_1, TSCP_DARK_ASSERT_2); /*- 创建应用数据2取socket */ - rt = CM_UDP_Socket_Create(&s_CFM_Sock.Sock_2oo2_Data_App, CM_FALSE, (CM_UINT32)inet_addr(g_PFM_Cfg.Local_Cfg.IP_2oo2), g_PFM_Cfg.Local_Cfg.Port_2oo2_Data_App, 0u, (CM_UINT8)0u); + rt = CM_UDP_Socket_Create(&s_CFM_Sock.Sock_2oo2_Data_App, CM_FALSE, (CM_UINT32)inet_addr(g_PFM_Cfg.Local_Cfg.IP_2oo2), g_PFM_Cfg.Local_Cfg.Port_2oo2_Data_App, 0u, (CM_UINT8)1u); CM_NM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE,DARK_FAULT_CODE_FUN_ORDER_1, TSCP_DARK_ASSERT_3); /*- 创建2x状态2取socket */ - rt = CM_UDP_Socket_Create(&s_CFM_Sock.Sock_2oo2_2x2_State, CM_FALSE, (CM_UINT32)inet_addr(g_PFM_Cfg.Local_Cfg.IP_2oo2), g_PFM_Cfg.Local_Cfg.Port_2oo2_2x2_State,0u, (CM_UINT8)0u); + rt = CM_UDP_Socket_Create(&s_CFM_Sock.Sock_2oo2_2x2_State, CM_FALSE, (CM_UINT32)inet_addr(g_PFM_Cfg.Local_Cfg.IP_2oo2), g_PFM_Cfg.Local_Cfg.Port_2oo2_2x2_State,0u, (CM_UINT8)1u); CM_NM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE,DARK_FAULT_CODE_FUN_ORDER_1, TSCP_DARK_ASSERT_6); if ((0x55u == g_PFM_Cfg.M_RemoteUpdate_Enable) &&(0x00u != g_Maintenance_Id)) { /*- 创建维护模式下的2取socket */ - rt = CM_UDP_Socket_Create(&s_CFM_Sock.Sock_2oo2_Maintenance, CM_FALSE, (CM_UINT32)inet_addr(g_PFM_Cfg.Local_Cfg.IP_2oo2), g_PFM_Cfg.Local_Cfg.Port_2oo2_Maintenance, 0u, (CM_UINT8)0u); + rt = CM_UDP_Socket_Create(&s_CFM_Sock.Sock_2oo2_Maintenance, CM_FALSE, (CM_UINT32)inet_addr(g_PFM_Cfg.Local_Cfg.IP_2oo2), g_PFM_Cfg.Local_Cfg.Port_2oo2_Maintenance, 0u, (CM_UINT8)1u); CM_NM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_1, TSCP_DARK_ASSERT_18); } else { + /*- 无处理 */ } @@ -363,16 +335,6 @@ static void s_NetInit_2oo2(void) (void)setsockopt(s_CFM_Sock.Sock_2oo2_Data_App, SOL_SOCKET, SO_RCVBUF, (void*)(&val), (unsigned int)sizeof(val)); (void)setsockopt(s_CFM_Sock.Sock_2oo2_Data_App, SOL_SOCKET, SO_SNDBUF, (void*)(&val), (unsigned int)sizeof(val)); /*- 初始化控制信息 */ - CM_NM_ASSERT(s_CFM_2oo2_Time.IP != NULL, NET_MODE,DARK_FAULT_CODE_FUN_ORDER_1, TSCP_DARK_ASSERT_7); - (void)sprintf(s_CFM_2oo2_Time.IP, "%s", g_PFM_Cfg.Local_Cfg.IP_2oo2); - s_CFM_2oo2_Time.port = g_PFM_Cfg.Local_Cfg.Port_2oo2_Time; - s_CFM_2oo2_Time.pSock = &s_CFM_Sock.Sock_2oo2_Time; - rt = CM_Mutex_Init(&s_CFM_2oo2_Time.mutex); - CM_NM_ASSERT(ENUM_CM_TRUE == rt,NET_MODE,DARK_FAULT_CODE_FUN_ORDER_1, TSCP_DARK_ASSERT_8); - - /*- 启动2oo2时钟同步线程 */ - rtCheck = CM_Thread_Create((CM_THREAD_T*)NULL, (CM_THREAD_FUNC_T)t_TimeThread, "2oo2_T", 0, CM_TASK_PRIORITY_72, (CM_Thread_Arg_Struct_T*)&s_CFM_2oo2_Time); - CM_NM_ASSERT(CM_TRUE == rtCheck, NET_MODE,DARK_FAULT_CODE_FUN_ORDER_1, TSCP_DARK_ASSERT_11); /*- 配置接收线程 */ CM_NM_ASSERT(s_CFM_Rx2oo2.IP != NULL, NET_MODE,DARK_FAULT_CODE_FUN_ORDER_1, TSCP_DARK_ASSERT_9); @@ -486,69 +448,6 @@ ENUM_CM_RETURN CFM_2oo2_InitSync(void) return SyncFlag; } -/** -* @brief 发起一次2oo2时钟同步 -* @details -* 发送一个2oo2时钟同步请求报文 -* 由双方的时钟同步线程完成一次NTP校时操作 -* 操作完成后本方的时钟同步线程会记录到延迟时间和偏移时间 -* @see :: CFM_2oo2_TimeGet -* @see :: t_TimeThread -*/ -void CFM_2oo2_TimeReq(void) -{ - /*- 变量初始化 */ - CM_UINT8 buf[100]; - CM_INT32 len = 0; - CM_ATOMIC CM_UINT64 tick = 0u; - - /*- 生成时钟同步请求报文 */ - len = 9; - buf[0] = (CM_UINT8)ENUM_TIME_REQ; - - tick = DFM_GetCycTick(); - - CM_64ToChar(tick, buf + 1); - /*- 发送时钟同步请求报文 */ - (void)CM_UDP_Send_Msg(s_CFM_Sock.Sock_2oo2_Time, buf, len, inet_addr(g_PFM_Cfg.Peer_Cfg.IP_2oo2),g_PFM_Cfg.Peer_Cfg.Port_2oo2_Time); -} - -/** -* @brief 读取时钟同步结果 -* @param pDelay 延迟时间 -* @param pOffset 偏移时间 -* @return 执行结果 -* - ENUM_CM_TRUE 成功 -* - ENUM_CM_FALSE 失败 -*/ -ENUM_CM_RETURN CFM_2oo2_TimeGet(OUT CM_INT64* pDelay, OUT CM_INT64* pOffset) -{ - /*- 变量初始化 */ - ENUM_CM_RETURN rt = ENUM_CM_FALSE; - - /*- 锁定互斥锁 */ - rt = CM_Mutex_Lock(s_CFM_2oo2_Time.mutex); - CM_RE_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_15, TSCP_DARK_ASSERT_1); - /*- 是否保存了时钟同步结果 */ - if (ENUM_CM_TRUE == s_CFM_2oo2_Time.isOK) - { - /*- 读取时钟同步结果 */ - *pDelay = s_CFM_2oo2_Time.delay; - *pOffset = s_CFM_2oo2_Time.offset; - /*- 清除时钟同步结果 */ - s_CFM_2oo2_Time.isOK = ENUM_CM_FALSE; - rt = ENUM_CM_TRUE; - } - else - { - /*- 无处理 */ - } - /*- 释放互斥锁 */ - rt = CM_Mutex_Unlock(s_CFM_2oo2_Time.mutex); - CM_RE_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_15, TSCP_DARK_ASSERT_2); - /*- 返回执行结果 */ - return rt; -} /** * @brief 通用2oo2数据发送 * @param pBuf 发送报文指针 取值范围:非空 @@ -557,7 +456,7 @@ ENUM_CM_RETURN CFM_2oo2_TimeGet(OUT CM_INT64* pDelay, OUT CM_INT64* pOffset) * - ENUM_CM_TRUE 成功 * - ENUM_CM_FALSE 失败 */ -static ENUM_CM_RETURN CFM_2oo2_Send_Currency(IN CM_SOCKET sock,IN const CM_UINT8* pBuf, IN CM_INT32 BufLen,IN CM_UINT16 nPortDest) +ENUM_CM_RETURN CFM_2oo2_Send_Currency(IN CM_SOCKET sock,IN const CM_UINT8* pBuf, IN CM_INT32 BufLen,IN CM_UINT16 nPortDest) { /*- 变量初始化 */ ENUM_CM_RETURN rt = ENUM_CM_FALSE; @@ -998,76 +897,142 @@ static void s_NetInit_2x2(void) /*- 变量初始化 */ ENUM_CM_RETURN rt = ENUM_CM_FALSE; /* 临时变量 */ CM_INT32 val = 0; /* 临时变量 */ - CM_BOOL rtCheck = CM_FALSE; /* 临时变量 */ - /*- 创建socket */ - rt = CM_UDP_Socket_Create(&s_CFM_Sock.Sock_2x2_Time, CM_FALSE, (CM_UINT32)inet_addr(g_PFM_Cfg.Local_Cfg.IP_2x2), g_PFM_Cfg.Local_Cfg.Port_2x2_Time, 0u, (CM_UINT8)0); - CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_1); + CM_BOOL rtCheck = CM_FALSE; /* 临时变量 */ + /*判断使用组播还是单拨*/ + if(0 == g_PFM_Cfg.Multicast_Flag) + { + /*使用单播发送4x2数据*/ + rt = CM_UDP_Socket_Create(&s_CFM_Sock.Sock_4x2_Data_Send, CM_FALSE, (CM_UINT32)inet_addr(g_PFM_Cfg.Local_Cfg.IP_4x2), g_PFM_Cfg.Local_Cfg.Port_4x2_Data_Send, 0, ENUM_UNICAST); + CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_1); - rt = CM_UDP_Socket_Create(&s_CFM_Sock.Sock_2x2_Data, CM_FALSE, (CM_UINT32)inet_addr(g_PFM_Cfg.Local_Cfg.IP_2x2), g_PFM_Cfg.Local_Cfg.Port_2x2_Data, 0u, (CM_UINT8)0); - CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_2); - rt = CM_UDP_Socket_Create(&s_CFM_Sock.Sock_2x2_Syn, CM_FALSE, (CM_UINT32)inet_addr(g_PFM_Cfg.Local_Cfg.IP_2x2), g_PFM_Cfg.Local_Cfg.Port_2x2_Syn, 0u, (CM_UINT8)0); - CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_3); - /*- 创建2x状态切换独立线程socket */ - rt = CM_UDP_Socket_Create(&s_CFM_Sock.Sock_2x2_State, CM_FALSE, (CM_UINT32)inet_addr(g_PFM_Cfg.Local_Cfg.IP_2x2), g_PFM_Cfg.Local_Cfg.Port_2x2_State, 0u, (CM_UINT8)0); - CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_13); + /*使用单播发送4x2同步信息*/ + rt = CM_UDP_Socket_Create(&s_CFM_Sock.Sock_4x2_Syn_Send, CM_FALSE, (CM_UINT32)inet_addr(g_PFM_Cfg.Local_Cfg.IP_4x2), g_PFM_Cfg.Local_Cfg.Port_4x2_Syn_Send, 0, ENUM_UNICAST); + CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_3); + /*- 配置socket */ + val = (CM_INT32)(NET_UDP_BUF_DOUBLESIZE); + (void)setsockopt(s_CFM_Sock.Sock_4x2_Data_Rcv, SOL_SOCKET, SO_RCVBUF, (void*)(&val), (unsigned int)sizeof(val)); + (void)setsockopt(s_CFM_Sock.Sock_4x2_Syn_Send,SOL_SOCKET, SO_SNDBUF, (void*)(&val), (unsigned int)sizeof(val)); - /*- 初始化控制信息 */ - CM_ASSERT(s_CFM_2x2_Time.IP != NULL, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_4); - (void)sprintf(s_CFM_2x2_Time.IP, "%s", g_PFM_Cfg.Local_Cfg.IP_2x2); - s_CFM_2x2_Time.port = g_PFM_Cfg.Local_Cfg.Port_2x2_Time; - s_CFM_2x2_Time.pSock = &s_CFM_Sock.Sock_2x2_Time; - rt = CM_Mutex_Init(&s_CFM_2x2_Time.mutex); + /*配置接收同步报文线程参数*/ + CM_ASSERT(s_CFM_2x2_Syn.IP != NULL, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_6); + (void)sprintf(s_CFM_2x2_Syn.IP, "%s", g_PFM_Cfg.Local_Cfg.IP_4x2); + s_CFM_2x2_Syn.port = g_PFM_Cfg.Local_Cfg.Port_4x2_Syn_Send; + s_CFM_2x2_Syn.pSock = &s_CFM_Sock.Sock_4x2_Syn_Send; + rt = CM_Mutex_Init(&s_CFM_2x2_Syn.mutex); + CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_7); + + /*- 配置接收线程 */ + CM_ASSERT(s_CFM_Rx2x2.IP != NULL, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_8); + (void)sprintf(s_CFM_Rx2x2.IP, "%s", g_PFM_Cfg.Local_Cfg.IP_4x2); + s_CFM_Rx2x2.port = g_PFM_Cfg.Local_Cfg.Port_4x2_Data_Send; + s_CFM_Rx2x2.pSock = &s_CFM_Sock.Sock_4x2_Data_Send; + s_CFM_Rx2x2.rmtIP = 0; + s_CFM_Rx2x2.rmtPort = g_PFM_Cfg.Local_Cfg.Port_4x2_Data_Send; + rt = CM_MQ_Init(&s_CFM_Rx2x2.MsgQ, (CM_UINT16)CFM_2X2_MSG_NUM_MAX, (CM_UINT16)NET_UDP_2X2_BUF_SIZE); + CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_9); + + } + else + { + /*使用组播发送4x2数据*/ + rt = CM_UDP_Socket_Create(&s_CFM_Sock.Sock_4x2_Data_Send, CM_FALSE, (CM_UINT32)inet_addr(g_PFM_Cfg.Local_Cfg.IP_4x2), g_PFM_Cfg.Local_Cfg.Port_4x2_Data_Send, (CM_UINT32)inet_addr(g_PFM_Cfg.Local_Cfg.IP_Area_Multicast), ENUM_MULTICAST_SEND); + CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_1); + rt = CM_UDP_Socket_Create(&s_CFM_Sock.Sock_4x2_Data_Rcv, CM_FALSE, (CM_UINT32)inet_addr(g_PFM_Cfg.Local_Cfg.IP_4x2), g_PFM_Cfg.Local_Cfg.Port_4x2_Data_Rcv, (CM_UINT32)inet_addr(g_PFM_Cfg.Local_Cfg.IP_Area_Multicast), ENUM_MULTICAST_RCV); + CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_2); + /*使用组播发送4x2同步信息*/ + rt = CM_UDP_Socket_Create(&s_CFM_Sock.Sock_4x2_Syn_Send, CM_FALSE, (CM_UINT32)inet_addr(g_PFM_Cfg.Local_Cfg.IP_4x2), g_PFM_Cfg.Local_Cfg.Port_4x2_Syn_Send, (CM_UINT32)inet_addr(g_PFM_Cfg.Local_Cfg.IP_Area_Multicast), ENUM_MULTICAST_SEND); + CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_3); + rt = CM_UDP_Socket_Create(&s_CFM_Sock.Sock_4x2_Syn_Rcv, CM_FALSE, (CM_UINT32)inet_addr(g_PFM_Cfg.Local_Cfg.IP_4x2), g_PFM_Cfg.Local_Cfg.Port_4x2_Syn_Rcv, (CM_UINT32)inet_addr(g_PFM_Cfg.Local_Cfg.IP_Area_Multicast), ENUM_MULTICAST_RCV); + CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_4); + + /*- 配置socket */ + val = (CM_INT32)(NET_UDP_BUF_DOUBLESIZE); + (void)setsockopt(s_CFM_Sock.Sock_4x2_Data_Rcv, SOL_SOCKET, SO_RCVBUF, (void*)(&val), (unsigned int)sizeof(val)); + (void)setsockopt(s_CFM_Sock.Sock_4x2_Data_Send,SOL_SOCKET, SO_SNDBUF, (void*)(&val), (unsigned int)sizeof(val)); + + /*配置接收同步报文线程参数*/ + CM_ASSERT(s_CFM_2x2_Syn.IP != NULL, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_6); + (void)sprintf(s_CFM_2x2_Syn.IP, "%s", g_PFM_Cfg.Local_Cfg.IP_4x2); + s_CFM_2x2_Syn.port = g_PFM_Cfg.Local_Cfg.Port_4x2_Syn_Rcv; + s_CFM_2x2_Syn.pSock = &s_CFM_Sock.Sock_4x2_Syn_Rcv; + rt = CM_Mutex_Init(&s_CFM_2x2_Syn.mutex); + CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_7); + + /*- 配置接收线程 */ + CM_ASSERT(s_CFM_Rx2x2.IP != NULL, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_8); + (void)sprintf(s_CFM_Rx2x2.IP, "%s", g_PFM_Cfg.Local_Cfg.IP_4x2); + s_CFM_Rx2x2.port = g_PFM_Cfg.Local_Cfg.Port_4x2_Data_Rcv; + s_CFM_Rx2x2.pSock = &s_CFM_Sock.Sock_4x2_Data_Rcv; + s_CFM_Rx2x2.rmtIP = 0; + s_CFM_Rx2x2.rmtPort = g_PFM_Cfg.Local_Cfg.Port_4x2_Data_Send; + rt = CM_MQ_Init(&s_CFM_Rx2x2.MsgQ, (CM_UINT16)CFM_2X2_MSG_NUM_MAX, (CM_UINT16)NET_UDP_2X2_BUF_SIZE); + CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_9); + } + + + /*- 创建2x状态切换独立线程socket */ + rt = CM_UDP_Socket_Create(&s_CFM_Sock.Sock_2x2_State, CM_FALSE, (CM_UINT32)inet_addr(g_PFM_Cfg.Local_Cfg.IP_4x2), g_PFM_Cfg.Local_Cfg.Port_2x2_State, 0u, ENUM_UNICAST); CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_5); - /*- 配置socket */ - val = (CM_INT32)(NET_UDP_BUF_DOUBLESIZE); - (void)setsockopt(s_CFM_Sock.Sock_2x2_Data, SOL_SOCKET, SO_RCVBUF, (void*)(&val), (unsigned int)sizeof(val)); - (void)setsockopt(s_CFM_Sock.Sock_2x2_Data, SOL_SOCKET, SO_SNDBUF, (void*)(&val), (unsigned int)sizeof(val)); - - CM_ASSERT(s_CFM_2x2_Syn.IP != NULL, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_6); - (void)sprintf(s_CFM_2x2_Syn.IP, "%s", g_PFM_Cfg.Local_Cfg.IP_2x2); - s_CFM_2x2_Syn.port = g_PFM_Cfg.Local_Cfg.Port_2x2_Syn; - s_CFM_2x2_Syn.pSock = &s_CFM_Sock.Sock_2x2_Syn; - rt = CM_Mutex_Init(&s_CFM_2x2_Syn.mutex); - CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_7); - - /*- 配置接收线程 */ - CM_ASSERT(s_CFM_Rx2x2.IP != NULL, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_8); - (void)sprintf(s_CFM_Rx2x2.IP, "%s", g_PFM_Cfg.Local_Cfg.IP_2x2); - s_CFM_Rx2x2.port = g_PFM_Cfg.Local_Cfg.Port_2x2_Data; - s_CFM_Rx2x2.pSock = &s_CFM_Sock.Sock_2x2_Data; - s_CFM_Rx2x2.rmtIP = inet_addr(g_PFM_Cfg.Partner_Cfg.IP_2x2); - s_CFM_Rx2x2.rmtPort = g_PFM_Cfg.Partner_Cfg.Port_2x2_Data; - rt = CM_MQ_Init(&s_CFM_Rx2x2.MsgQ, (CM_UINT16)CFM_2X2_MSG_NUM_MAX, (CM_UINT16)NET_UDP_2X2_BUF_SIZE); - CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_9); /*-配置状态切换线程 */ - CM_ASSERT(s_CFM_State2x2.IP != NULL, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_14); - (void)sprintf(s_CFM_State2x2.IP, "%s", g_PFM_Cfg.Local_Cfg.IP_2x2); + CM_ASSERT(s_CFM_State2x2.IP != NULL, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_10); + (void)sprintf(s_CFM_State2x2.IP, "%s", g_PFM_Cfg.Local_Cfg.IP_4x2); s_CFM_State2x2.port = g_PFM_Cfg.Local_Cfg.Port_2x2_State; s_CFM_State2x2.pSock = &s_CFM_Sock.Sock_2x2_State; - s_CFM_State2x2.rmtIP = inet_addr(g_PFM_Cfg.Partner_Cfg.IP_2x2); + s_CFM_State2x2.rmtIP = inet_addr(g_PFM_Cfg.Partner_Cfg.IP_4x2); s_CFM_State2x2.rmtPort = g_PFM_Cfg.Partner_Cfg.Port_2x2_State; s_CFM_State2x2.threadNumBer = (CM_UINT8)ENUM_THREAD_2x2_StateRecv; rt = CM_MQ_Init(&s_CFM_State2x2.MsgQ, (CM_UINT16)CFM_2X2_MSG_NUM_MAX, (CM_UINT16)CFM_2X2_MSG_NUM_MAX); - CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_15); + CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_11); - /*- 启动2x2时钟同步线程 */ - rtCheck = CM_Thread_Create((CM_THREAD_T*)NULL, (CM_THREAD_FUNC_T)t_TimeThread, "2x2_T", 0, CM_TASK_PRIORITY_76, (CM_Thread_Arg_Struct_T*)&s_CFM_2x2_Time); - CM_ASSERT(CM_TRUE == rtCheck,NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_10); - CM_Sleep(100u);/* 延时等待线程启动 */ /*- 启动2x2周期同步线程 */ rtCheck = CM_Thread_Create((CM_THREAD_T*)NULL, (CM_THREAD_FUNC_T)t_SyncThread, "2x2_Syn", 0, CM_TASK_PRIORITY_77, (CM_Thread_Arg_Struct_T*)&s_CFM_2x2_Syn); - CM_ASSERT(CM_TRUE == rtCheck, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_16); - CM_Sleep(100u);/* 延时等待线程启动 */ - - /*- 启动2x2平台数据接收线程 */ - rtCheck = CM_Thread_Create((CM_THREAD_T*)NULL, (CM_THREAD_FUNC_T)t_UdpRecvThread, "2x2_Rx", 0, CM_TASK_PRIORITY_77, (CM_Thread_Arg_Struct_T*)&s_CFM_Rx2x2); - CM_ASSERT(CM_TRUE == rtCheck, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_11); - /*- 启动2x2平台数据接收线程 */ - rtCheck = CM_Thread_Create((CM_THREAD_T*)NULL, (CM_THREAD_FUNC_T)t_UdpRecvThread, "2x2_RxState", 0, CM_TASK_PRIORITY_77, (CM_Thread_Arg_Struct_T*)&s_CFM_State2x2); CM_ASSERT(CM_TRUE == rtCheck, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_12); CM_Sleep(100u);/* 延时等待线程启动 */ + /*- 启动2x2平台数据接收线程 */ + rtCheck = CM_Thread_Create((CM_THREAD_T*)NULL, (CM_THREAD_FUNC_T)t_UdpRecvThread, "2x2_Rx", 0, CM_TASK_PRIORITY_77, (CM_Thread_Arg_Struct_T*)&s_CFM_Rx2x2); + CM_ASSERT(CM_TRUE == rtCheck, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_13); + /*- 启动2x2状态数据接收线程 */ + rtCheck = CM_Thread_Create((CM_THREAD_T*)NULL, (CM_THREAD_FUNC_T)t_UdpRecvThread, "2x2_RxState", 0, CM_TASK_PRIORITY_77, (CM_Thread_Arg_Struct_T*)&s_CFM_State2x2); + CM_ASSERT(CM_TRUE == rtCheck, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_14); + CM_Sleep(100u);/* 延时等待线程启动 */ + /*初始化以太网*/ + if(0x01 == g_PFM_Cfg.M_2x2_Com_Cfg) + { + /*- 创建2x状态切换独立线程socket */ + rt = CM_UDP_Socket_Create(&s_CFM_Sock.Sock_2x2_State_Extend, CM_FALSE, (CM_UINT32)inet_addr(g_PFM_Cfg.Local_Cfg.IP_Area), g_PFM_Cfg.Local_Cfg.Port_2x2_State, 0u, ENUM_UNICAST); + CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_13); + /*-配置状态切换线程 */ + CM_ASSERT(s_CFM_State2x2Extend.IP != NULL, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_15); + (void)sprintf(s_CFM_State2x2Extend.IP, "%s", g_PFM_Cfg.Local_Cfg.IP_Area); + s_CFM_State2x2Extend.port = g_PFM_Cfg.Local_Cfg.Port_2x2_State; + s_CFM_State2x2Extend.pSock = &s_CFM_Sock.Sock_2x2_State_Extend; + s_CFM_State2x2Extend.rmtIP = inet_addr(g_PFM_Cfg.Partner_Cfg.IP_Area); + s_CFM_State2x2Extend.rmtPort = g_PFM_Cfg.Partner_Cfg.Port_2x2_State; + s_CFM_State2x2Extend.threadNumBer = (CM_UINT8)ENUM_THREAD_2x2_StateRecv; + rt = CM_MQ_Init(&s_CFM_State2x2Extend.MsgQ, (CM_UINT16)CFM_2X2_MSG_NUM_MAX, (CM_UINT16)CFM_2X2_MSG_NUM_MAX); + CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_16); + /*- 启动2x2状态数据接收线程 */ + rtCheck = CM_Thread_Create((CM_THREAD_T*)NULL, (CM_THREAD_FUNC_T)t_UdpRecvThread, "2x2_RxState", 0, CM_TASK_PRIORITY_77, (CM_Thread_Arg_Struct_T*)&s_CFM_State2x2Extend); + CM_ASSERT(CM_TRUE == rtCheck, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_17); + CM_Sleep(100u);/* 延时等待线程启动 */ + /*注册函数指针*/ + p_2x2_ExtendDataSend = CFM_2x2_StateChangeExtend_Send; + p_2x2_ExtendDataRecv = CFM_2x2_StateChangeExtend_Recv; + } + else/*初始化串口*/ + { +#ifdef QNX + /*- 串口通信初始化*/ + (void)CM_COM_INIT(115200u, 8u); + /*- 开启临机串口接收线程*/ + CM_Com_RcvOtherThreadInit(); + /*注册函数指针*/ + p_2x2_ExtendDataSend = CM_Com_LocalDataSend; + p_2x2_ExtendDataRecv = CM_Com_OtherDataRecv; +#endif /*QNX*/ + } } @@ -1087,7 +1052,7 @@ ENUM_CM_RETURN CFM_2x2_StateChange_Send(IN const CM_UINT8* pBuf, IN CM_INT32 Buf if(NULL != pBuf) { /*- 2x状态切换UDP通信通道向对系发送 */ - rt = CM_UDP_Send_Msg(s_CFM_Sock.Sock_2x2_State, pBuf, BufLen, inet_addr(g_PFM_Cfg.Partner_Cfg.IP_2x2),g_PFM_Cfg.Partner_Cfg.Port_2x2_State); + rt = CM_UDP_Send_Msg(s_CFM_Sock.Sock_2x2_State, pBuf, BufLen, inet_addr(g_PFM_Cfg.Partner_Cfg.IP_4x2),g_PFM_Cfg.Partner_Cfg.Port_2x2_State); } else { @@ -1098,7 +1063,7 @@ ENUM_CM_RETURN CFM_2x2_StateChange_Send(IN const CM_UINT8* pBuf, IN CM_INT32 Buf } /** -* @brief 通用2x2状态数据接收 +* @brief 2x2状态数据接收 * @param pBuf 接收报文指针 取值范围:非空 * @param BufLen 接收报文缓冲区大小 取值范围:0~0xFFFFFFFF * @return 接收报文长度 @@ -1107,111 +1072,46 @@ ENUM_CM_RETURN CFM_2x2_StateChange_Send(IN const CM_UINT8* pBuf, IN CM_INT32 Buf */ CM_INT32 CFM_2x2_StateChange_Recv(CM_UINT8* pBuf, IN CM_UINT32 BufSize) { - /*- 变量初始化 */ - CM_UINT16 len = (BufSize > 65535u) ? (CM_UINT16)(65535u) : (CM_UINT16)(BufSize); - ENUM_CM_RETURN rt = ENUM_CM_FALSE; - CM_UINT8 tempBuf[200] = {0}; - CM_RE_ASSERT(NULL != pBuf, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_40, TSCP_DARK_ASSERT_1); - /*- 从接收线程获取输入报文 */ - rt = CM_MQ_Read(&s_CFM_State2x2.MsgQ, tempBuf, &len); - /*- 是否获取成功 */ - if ((rt == ENUM_CM_TRUE) && (len > 6u)) - { - /*- 输出接收数据 */ - rt = CM_Memcpy((void*)pBuf, (CM_SIZE_T)BufSize, (void*)(tempBuf), (CM_SIZE_T)len); - CM_RE_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_40, TSCP_DARK_ASSERT_2); - } - else - { - /*- 接收长度为0 */ - len = 0u; - } - /*- 返回接收长度 */ - return (CM_INT32)len; + return CFM_Recv_ComInterface(&s_CFM_State2x2,pBuf,BufSize,0u); } /** -* @brief 发起一次2x2时钟同步 -* @details -* 发送一个2x2时钟同步请求报文 -* 由双方的时钟同步线程完成一次NTP校时操作 -* 操作完成后本方的时钟同步线程会记录到延迟时间和偏移时间 -* @see :: CFM_2x2_TimeGet -* @see :: t_TimeThread -*/ -void CFM_2x2_TimeReq(void) -{ - /*- 变量初始化 */ - CM_UINT8 buf[100]; - CM_INT32 len = 0; - CM_ATOMIC CM_UINT64 tick = 0u; - ENUM_CM_RETURN rt = ENUM_CM_FALSE; - /*- 生成时钟同步请求报文 */ - len = 9; - buf[0] = (CM_UINT8)ENUM_TIME_REQ; - - tick = DFM_GetCycTick(); - - CM_64ToChar(tick, buf + 1); - /*- 发送时钟同步请求报文 */ - rt = CM_UDP_Send_Msg(s_CFM_Sock.Sock_2x2_Time, buf, len, inet_addr(g_PFM_Cfg.Partner_Cfg.IP_2x2), g_PFM_Cfg.Partner_Cfg.Port_2x2_Time); - if(ENUM_CM_TRUE != rt) - { - (void)CFM_DarkLog_Storage(DARK_LOG_HEX, TSCP_DARK_WARNING, 4U, DARK_FAULT_CODE_MERGE(NET_MODE, DARK_FAULT_CODE_FUN_ORDER_1, TSCP_DARK_ASSERT_1)); - MSCP_LOG_MSG("CFM_2x2_TimeReq UDP_SEND Error!\n"); - } - else - { - /*- 不处理 */ - } -} -/** -* @brief 读取2x2时钟同步结果 -* @param pDelay 延迟时间 -* @param pOffset 偏移时间 -* @return 执行结果 +* @brief 2x2状态数据扩展通道发送 +* @param pBuf 发送报文指针 取值范围:非空 +* @param BufLen 发送报文长度 取值范围:0~0x7FFFFFFF +* @return 发送结果 * - ENUM_CM_TRUE 成功 * - ENUM_CM_FALSE 失败 */ -ENUM_CM_RETURN CFM_2x2_TimeGet(OUT CM_INT64* pDelay, OUT CM_INT64* pOffset) +ENUM_CM_RETURN CFM_2x2_StateChangeExtend_Send(IN CM_UINT8* pBuf, IN CM_UINT32 BufLen) { - /*- 变量初始化 */ ENUM_CM_RETURN rt = ENUM_CM_FALSE; - /*- 指针不为空 */ - if((NULL != pDelay) && (NULL != pOffset)) - { - /*- 锁定互斥锁 */ - rt = CM_Mutex_Lock(s_CFM_2x2_Time.mutex); - CM_RE_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_16, TSCP_DARK_ASSERT_1); - /*- 是否保存了时钟同步结果 */ - if (ENUM_CM_TRUE == s_CFM_2x2_Time.isOK) - { - /*- 读取时钟同步结果 */ - *pDelay = s_CFM_2x2_Time.delay; - *pOffset = s_CFM_2x2_Time.offset; - /*- 清除时钟同步结果 */ - s_CFM_2x2_Time.isOK = ENUM_CM_FALSE; - rt = ENUM_CM_TRUE; - } - else - { - //TSCP_DARK_CFMNET_2x2TIMEGET_REDERROR - (void)CFM_DarkLog_Storage(DARK_LOG_HEX, TSCP_DARK_WARNING, 4U, DARK_FAULT_CODE_MERGE(NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_1)); - MSCP_LOG_MSG("s_CFM_2x2_Time.isOK != ENUM_CM_TRUE\n"); - } - /*- 释放互斥锁 */ - rt = CM_Mutex_Unlock(s_CFM_2x2_Time.mutex); - CM_RE_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_16, TSCP_DARK_ASSERT_2); - } - else - { - //TSCP_DARK_CFMNET_2x2TIMEGET_REDNULL - (void)CFM_DarkLog_Storage(DARK_LOG_HEX, TSCP_DARK_WARNING, 4U, DARK_FAULT_CODE_MERGE(NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_2)); - MSCP_LOG_MSG("pDelay == NULL || pOffset == NULL\n"); - } - /*- 返回执行结果 */ + /*- 入参指针防空 */ + if(NULL != pBuf) + { + /*- 2x状态切换UDP通信通道向对系发送 */ + rt = CM_UDP_Send_Msg(s_CFM_Sock.Sock_2x2_State_Extend, pBuf, BufLen, inet_addr(g_PFM_Cfg.Partner_Cfg.IP_Area),g_PFM_Cfg.Partner_Cfg.Port_2x2_State); + } + else + { + /*空指针返回失败*/ + } + /*- 返回发送结果 */ return rt; } + +/** +* @brief 2x2状态数据扩展通道接收 +* @param pBuf 接收报文指针 取值范围:非空 +* @param BufLen 接收报文缓冲区大小 取值范围:0~0xFFFFFFFF +* @return 接收报文长度 +* - 1~0xFFFFFFFF 接收报文长度 +* - 0 接收失败 +*/ +CM_UINT16 CFM_2x2_StateChangeExtend_Recv(CM_UINT8* pBuf, IN CM_UINT32 BufSize) +{ + return (CM_UINT16)CFM_Recv_ComInterface(&s_CFM_State2x2Extend,pBuf,BufSize,0u); +} /** * @brief 周期同步线程 * @param arg 指向STRU_CFM_SYN_CTRL的指针 @@ -1280,8 +1180,18 @@ ENUM_CM_RETURN CFM_2x2_SyncSend(IN const CM_UINT8* pBuf, IN CM_INT32 BufLen) { /*- 变量初始化 */ ENUM_CM_RETURN rt = ENUM_CM_FALSE; - /* UDP方式从2x2周期同步通道发送 */ - rt = CM_UDP_Send_Msg(s_CFM_Sock.Sock_2x2_Syn, pBuf, BufLen, inet_addr(g_PFM_Cfg.Partner_Cfg.IP_2x2),g_PFM_Cfg.Partner_Cfg.Port_2x2_Syn); + if(0 == g_PFM_Cfg.Multicast_Flag) + { + /*- UDP方式从2x2数据通道发送报文 */ + CM_UDP_Send_Msg(s_CFM_Sock.Sock_4x2_Data_Send, pBuf, BufLen, inet_addr(g_PFM_Cfg.Partner_Cfg.IP_4x2), g_PFM_Cfg.Local_Cfg.Port_4x2_Data_Send); + CM_UDP_Send_Msg(s_CFM_Sock.Sock_4x2_Data_Send, pBuf, BufLen, inet_addr(g_PFM_Cfg.Partner_Area_A_Cfg.IP_4x2), g_PFM_Cfg.Local_Cfg.Port_4x2_Data_Send); + CM_UDP_Send_Msg(s_CFM_Sock.Sock_4x2_Data_Send, pBuf, BufLen, inet_addr(g_PFM_Cfg.Partner_Area_B_Cfg.IP_4x2), g_PFM_Cfg.Local_Cfg.Port_4x2_Data_Send); + } + else + { + /* UDP方式从2x2周期同步通道发送 */ + rt = CM_UDP_Send_Msg(s_CFM_Sock.Sock_4x2_Syn_Send, pBuf, BufLen, inet_addr(g_PFM_Cfg.Local_Cfg.IP_Area_Multicast),g_PFM_Cfg.Local_Cfg.Port_4x2_Syn_Rcv); + } /*- 返回发送结果 */ return rt; } @@ -1340,13 +1250,24 @@ ENUM_CM_RETURN CFM_2x2_DataSend(IN const CM_UINT8* pBuf, IN CM_INT32 BufLen) { /*- 变量初始化 */ ENUM_CM_RETURN rt = ENUM_CM_FALSE; - /*- UDP方式从2x2数据通道发送报文 */ - rt = CM_UDP_Send_Msg(s_CFM_Sock.Sock_2x2_Data, pBuf, BufLen, inet_addr(g_PFM_Cfg.Partner_Cfg.IP_2x2), g_PFM_Cfg.Partner_Cfg.Port_2x2_Data); + if(0 == g_PFM_Cfg.Multicast_Flag) + { + /*- UDP方式从2x2数据通道发送报文 */ + CM_UDP_Send_Msg(s_CFM_Sock.Sock_4x2_Data_Send, pBuf, BufLen, inet_addr(g_PFM_Cfg.Partner_Cfg.IP_4x2), g_PFM_Cfg.Local_Cfg.Port_4x2_Data_Send); + CM_UDP_Send_Msg(s_CFM_Sock.Sock_4x2_Data_Send, pBuf, BufLen, inet_addr(g_PFM_Cfg.Partner_Area_A_Cfg.IP_4x2), g_PFM_Cfg.Local_Cfg.Port_4x2_Data_Send); + CM_UDP_Send_Msg(s_CFM_Sock.Sock_4x2_Data_Send, pBuf, BufLen, inet_addr(g_PFM_Cfg.Partner_Area_B_Cfg.IP_4x2), g_PFM_Cfg.Local_Cfg.Port_4x2_Data_Send); + } + else + { + /*- UDP方式从2x2数据通道发送报文 */ + CM_UDP_Send_Msg(s_CFM_Sock.Sock_4x2_Data_Send, pBuf, BufLen, inet_addr(g_PFM_Cfg.Local_Cfg.IP_Area_Multicast), g_PFM_Cfg.Local_Cfg.Port_4x2_Data_Rcv); + } + /*- 返回发送结果 */ return rt; } /** -* @brief 2x2串口数据发送 +* @brief 2x2状态数据扩展通道发送(串口或以太网) * @param pBuf 发送报文指针 取值范围(非空) * @param BufLen 发送报文长度 取值范围(0~0xffffffff) * @param msgType 发送报文类型 @@ -1355,15 +1276,18 @@ ENUM_CM_RETURN CFM_2x2_DataSend(IN const CM_UINT8* pBuf, IN CM_INT32 BufLen) * - ENUM_CM_NULL 发送条件不满足 * - ENUM_CM_FALSE 失败 */ -ENUM_CM_RETURN CFM_2x2_UartDataSend(IN CM_UINT8* pBuf, IN CM_UINT16 BufLen) +ENUM_CM_RETURN CFM_2x2_ExtendDataSend(IN CM_UINT8* pBuf, IN CM_UINT16 BufLen) { ENUM_CM_RETURN rtnval = ENUM_CM_FALSE; -#ifdef QNX - /*- 返回发送结果 */ - rtnval = CM_Com_LocalDataSend((CM_UINT8*)pBuf, BufLen); -#else - rtnval = ENUM_CM_TRUE; -#endif + if((NULL != pBuf) && (NULL != p_2x2_ExtendDataSend)) + { + /*- 返回发送结果 */ + rtnval = (*p_2x2_ExtendDataSend)((CM_UINT8*)pBuf, BufLen); + } + else + { + rtnval = ENUM_CM_FALSE; + } return rtnval; } /** @@ -1398,24 +1322,58 @@ CM_INT32 CFM_2x2_DataRecv(OUT CM_UINT8* pBuf, IN CM_UINT32 BufSize) return (CM_INT32)len; } /** -* @brief 2x2串口数据接收 +* @brief 2x2状态数据扩展通道接收(串口或以太网) * @param pBuf 接收报文指针(非空) * @param BufLen 接收报文缓冲区大小(0~0xffffffff) * @return 接收报文长度 * - 正整数 接收报文长度 * - 0或负数 接收失败 */ -CM_UINT16 CFM_2x2_UartDataRecv(OUT CM_UINT8* pBuf, IN CM_UINT32 BufSize) +CM_UINT16 CFM_2x2_ExtendDataRecv(OUT CM_UINT8* pBuf, IN CM_UINT32 BufSize) { -#ifdef QNX - - /*- 返回发送结果 */ - return CM_Com_OtherDataRecv(pBuf, BufSize); -#else - return 0; -#endif + if((NULL != pBuf) && (NULL != p_2x2_ExtendDataRecv)) + { + /*- 返回发送结果 */ + return (*p_2x2_ExtendDataRecv)(pBuf, BufSize); + } + else + { + return 0; + } +} +/** +* @brief 数据接收通用接口 +* @param *ctrl 控制结构体 +* @param pBuf 接收报文指针 +* @param BufLen 接收报文缓冲区大小 +* @return 接收报文长度 +* - 正整数 接收报文长度 +* - 0 接收失败 +*/ +static CM_INT32 CFM_Recv_ComInterface(STRU_CFM_RECV_CTRL_T *pctrl,OUT CM_UINT8* pBuf, IN CM_UINT32 BufSize,CM_UINT16 Offset) +{ + /*- 变量初始化 */ + CM_UINT16 len = (CM_UINT16)((BufSize > 65535u) ? 65535u : BufSize); + ENUM_CM_RETURN rt = ENUM_CM_FALSE; + /*- 指针防空*/ + CM_ASSERT_MAINTAIN(NULL != pBuf); + /*- 从接收线程获取输入报文 */ + rt = CM_MQ_Read(&pctrl->MsgQ, pctrl->cache_buf, &len); + /*- 是否获取成功 */ + if ((ENUM_CM_TRUE == rt) && (Offset < len)) + { + /*- 输出接收数据 */ + len -= Offset; + (void)CM_Memcpy((void*)pBuf, (CM_SIZE_T)BufSize, (void*)(&pctrl->cache_buf[Offset]), (CM_SIZE_T)len); + } + else + { + /*- 接收长度为0 */ + len = 0u; + } + /*- 返回接收长度 */ + return (CM_INT32)len; } - /*********************************内网通信相关*****************************************/ /** @@ -1436,7 +1394,7 @@ static void s_NetInit_Innet(void) STRU_PFM_INNET_CFG_T *pCom = NULL; /*- 创建安全通信socket */ - rt = CM_UDP_Socket_Create(&s_CFM_Sock.Sock_InnetSafe, CM_FALSE, (CM_UINT32)inet_addr(g_PFM_Cfg.Local_Cfg.IP_Com), g_PFM_Cfg.Local_Cfg.Port_Innet_Safe, 0u, (CM_UINT8)0); + rt = CM_UDP_Socket_Create(&s_CFM_Sock.Sock_InnetSafe, CM_FALSE, (CM_UINT32)inet_addr(g_PFM_Cfg.Local_Cfg.IP_Com), g_PFM_Cfg.Local_Cfg.Port_Innet_Safe, 0u, (CM_UINT8)1u); CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_3, TSCP_DARK_ASSERT_1); (void)setsockopt(s_CFM_Sock.Sock_InnetSafe, SOL_SOCKET, SO_RCVBUF, (void*)(&rcv_val), (unsigned int)sizeof(rcv_val)); (void)setsockopt(s_CFM_Sock.Sock_InnetSafe, SOL_SOCKET, SO_SNDBUF, (void*)(&send_val), (unsigned int)sizeof(send_val)); @@ -1496,12 +1454,13 @@ static void s_NetInit_Innet(void) /*UDP通信*/ if (RAW_COM_BROADCAST == g_PFM_Cfg.Local_Cfg.Innet_Raw_Parameter[i].Port_Type_Enable) { - bCast = 1;/*广播模式*/ + bCast = 2;/*广播模式*/ } else { - bCast = 0;/*默认单播组播模式*/ + bCast = 1;/*默认单播组播模式*/ } + printf("InnetRaw_%d_%s %d\n",i,g_PFM_Cfg.Local_Cfg.Innet_Raw_Parameter[i].IP_InnetRaw_maddr, bCast); rt = CM_UDP_Socket_Create(&s_CFM_Sock.Sock_InnetRaw[i], CM_FALSE, (CM_UINT32)inet_addr(p_tmpIPCom), @@ -1845,7 +1804,7 @@ static CM_THREAD_FUNC_T t_TcpRecvThread(IN CM_Thread_Arg_Struct_T* arg) tick = CM_GetTick(); tick = tick + (CM_UINT64)(100000000u); - if(ENUM_2x2_MASTER == SFM_2x2_GetLocal2x2State()) + if(ENUM_4x2_MASTER == SFM_GetLocal4x2State()) { /*- 查询套接字状态 */ ret = CM_TCP_Msgstate_Query(tcpId, &tcpsock, &TcpState, &ServeraddrIP, &ServerportNumber); @@ -2179,7 +2138,7 @@ static void s_NetInit_Outnet(void) CM_BOOL rtCheck; /* 临时变量 */ /*- 创建socket */ - rt = CM_UDP_Socket_Create(&s_CFM_Sock.Sock_OutnetSafe, CM_FALSE, (CM_UINT32)inet_addr(g_PFM_Cfg.Local_Cfg.IP_Out), g_PFM_Cfg.Local_Cfg.Port_Outnet_Safe, 0u, (CM_UINT8)0); + rt = CM_UDP_Socket_Create(&s_CFM_Sock.Sock_OutnetSafe, CM_FALSE, (CM_UINT32)inet_addr(g_PFM_Cfg.Local_Cfg.IP_Out), g_PFM_Cfg.Local_Cfg.Port_Outnet_Safe, 0u, (CM_UINT8)1); CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_4, TSCP_DARK_ASSERT_1); /*- 配置socket */ @@ -2201,7 +2160,7 @@ static void s_NetInit_Outnet(void) CM_ASSERT(CM_TRUE == rtCheck, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_4, TSCP_DARK_ASSERT_4); /*- 创建外网心跳socket */ - rt = CM_UDP_Socket_Create(&s_CFM_Sock.Sock_OutnetHeart, CM_FALSE, (CM_UINT32)inet_addr(g_PFM_Cfg.Local_Cfg.IP_Out), g_PFM_Cfg.Local_Cfg.Port_Outnet_Heart, 0u, (CM_UINT8)0); + rt = CM_UDP_Socket_Create(&s_CFM_Sock.Sock_OutnetHeart, CM_FALSE, (CM_UINT32)inet_addr(g_PFM_Cfg.Local_Cfg.IP_Out), g_PFM_Cfg.Local_Cfg.Port_Outnet_Heart, 0u, (CM_UINT8)1); CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_4, TSCP_DARK_ASSERT_9); /*- 配置接收线程 */ @@ -2220,7 +2179,7 @@ static void s_NetInit_Outnet(void) if(0x55u == (CM_UINT32)g_PFM_Cfg.M_OutnetRaw_Enable) { /*- 创建socket */ - rt = CM_UDP_Socket_Create(&s_CFM_Sock.Sock_OutnetRaw, CM_FALSE, (CM_UINT32)inet_addr(g_PFM_Cfg.Local_Cfg.IP_Out), g_PFM_Cfg.Local_Cfg.Port_Outnet_Raw, 0u, (CM_UINT8)0); + rt = CM_UDP_Socket_Create(&s_CFM_Sock.Sock_OutnetRaw, CM_FALSE, (CM_UINT32)inet_addr(g_PFM_Cfg.Local_Cfg.IP_Out), g_PFM_Cfg.Local_Cfg.Port_Outnet_Raw, 0u, (CM_UINT8)1); CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_4, TSCP_DARK_ASSERT_5); @@ -2315,11 +2274,11 @@ static void s_NetInit_Maintain(void) ENUM_CM_RETURN rt = ENUM_CM_FALSE; /* 临时变量 */ CM_INT32 val = 0; /* 临时变量 */ /*- 创建socket */ - rt = CM_UDP_Socket_Create(&s_CFM_Sock.Sock_LogBase, CM_FALSE, (CM_UINT32)inet_addr(g_PFM_Cfg.Local_Cfg.IP_Maintain), g_PFM_Cfg.Local_Cfg.Port_Log_Base, 0u, (CM_UINT8)0); + rt = CM_UDP_Socket_Create(&s_CFM_Sock.Sock_LogBase, CM_FALSE, (CM_UINT32)inet_addr(g_PFM_Cfg.Local_Cfg.IP_Maintain), g_PFM_Cfg.Local_Cfg.Port_Log_Base, 0u, (CM_UINT8)1); CM_NM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_1); s_CFM_Send_LogStr.pSock = &s_CFM_Sock.Sock_LogBase; - rt = CM_UDP_Socket_Create(&s_CFM_Sock.Sock_LogCiphertext, CM_FALSE, (CM_UINT32)inet_addr(g_PFM_Cfg.Local_Cfg.IP_Maintain), g_PFM_Cfg.Local_Cfg.Port_Log_Ciphertext, 0u, (CM_UINT8)0); + rt = CM_UDP_Socket_Create(&s_CFM_Sock.Sock_LogCiphertext, CM_FALSE, (CM_UINT32)inet_addr(g_PFM_Cfg.Local_Cfg.IP_Maintain), g_PFM_Cfg.Local_Cfg.Port_Log_Ciphertext, 0u, (CM_UINT8)1); CM_NM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_2); s_Log_CtrlQ.pSock = &s_CFM_Sock.Sock_LogCiphertext; @@ -2778,7 +2737,7 @@ static void s_NetInit_RemoteUpdate(void) } /*- 创建socket */ - rt = CM_UDP_Socket_Create(&s_CFM_Sock.Sock_Remote_Update, CM_FALSE, (CM_UINT32)inet_addr(g_PFM_Cfg.Local_Cfg.IP_Maintain), g_PFM_Cfg.Local_Cfg.Port_Remote_Update, 0u, (CM_UINT8)0); + rt = CM_UDP_Socket_Create(&s_CFM_Sock.Sock_Remote_Update, CM_FALSE, (CM_UINT32)inet_addr(g_PFM_Cfg.Local_Cfg.IP_Maintain), g_PFM_Cfg.Local_Cfg.Port_Remote_Update, 0u, (CM_UINT8)1); CM_NM_ASSERT(ENUM_CM_TRUE == rt,NET_MODE, DARK_FAULT_CODE_FUN_ORDER_9, TSCP_DARK_ASSERT_1); /*- 配置socket */ @@ -2878,6 +2837,12 @@ void CFM_NetworkCard_Init(void) (void)sprintf(str, "ifconfig %s %s", "wm0", g_PFM_Cfg.Local_Cfg.IP_Maintain); (void)printf("%s\n",str); (void)system(str); + + /*- 配置区域通信网卡IP*/ + (void)memset(str, 0, sizeof(str)); + (void)sprintf(str, "ifconfig %s %s", "wm1", g_PFM_Cfg.Local_Cfg.IP_Area); + (void)printf("%s\n",str); + (void)system(str); } /** * @brief UDP接收线程 @@ -3060,115 +3025,7 @@ static CM_THREAD_FUNC_T t_UdpRecvMaintenanceThread(IN CM_Thread_Arg_Struct_T* ar } return NULL; } -/** -* @brief 时钟同步线程 -* @param arg 指向STRU_CFM_TIME_CTRL的指针 -* @return 线程函数返回值(实际永远不会返回) -* @details -* 创建本线程之前应先配置好STRU_CFM_TIME_CTRL,包括创建阻塞通信的socket -* 本线程将以阻塞方式接收时钟同步报文并作出应答 -* 收到请求报文时立即给出应答 -* 收到应答报文时记录并计算延迟时间、偏移时间 -* @see :: CFM_2oo2_TimeReq -* @see :: CFM_2oo2_TimeGet -*/ -static CM_THREAD_FUNC_T t_TimeThread(IN CM_Thread_Arg_Struct_T* arg) -{ - /*- 变量初始化 */ - STRU_CFM_TIME_CTRL_T* pCtrl = (STRU_CFM_TIME_CTRL_T*)arg; /* 线程参数 */ - CM_UINT8 buf[100] = { 0u }; /* 接收缓冲区 */ - CM_INT32 len; /* 数据长度 */ - CM_UINT32 srcIP; /* 源IP */ - CM_UINT16 srcPort; /* 源端口 */ - CM_UINT64 tick = 0u; /* 精确时间 */ - CM_UINT64 T1 = 0u; /* 时钟同步参数 */ - CM_UINT64 T2 = 0u; /* 时钟同步参数 */ - CM_UINT64 T3 = 0u; /* 时钟同步参数 */ - CM_UINT64 T4 = 0u; /* 时钟同步参数 */ - ENUM_CM_RETURN rt = ENUM_CM_FALSE; -#if QNX - void* pmask = NULL; - /*- 本线程锁定在 A53 core 1 */ - pmask = (void*)(0x01u|0x02u); - (void)ThreadCtl(_NTO_TCTL_RUNMASK, pmask); -#endif - MSCP_LOG_MSG("IP:%s:%d Time Service Start\n", pCtrl->IP, (CM_INT32)pCtrl->port); - /*- 循环执行接收线程 */ - while (1) - { - /*- 阻塞接收时钟同步报文 */ - len = CM_UDP_Recv_Msg(*(pCtrl->pSock), buf, (CM_INT32)sizeof(buf), &srcIP, &srcPort); - tick = DFM_GetCycTick(); - /*- 是否收到有效报文 */ - if (len > 0) - { - /*- 报文类型 */ - switch ((ENUM_TIME_MSG_T)buf[0]) - { - case ENUM_TIME_REQ: /*-< 时钟同步请求 */ - /*- 长度是否合法 */ - if (9 == len) - { - /*- 解析请求报文 */ - T1 = CM_64FromChar(buf + 1); - /*- 生成应答报文 */ - T2 = tick; - buf[0] = (CM_UINT8)ENUM_TIME_ACK; - CM_64ToChar(T1, buf + 1); - CM_64ToChar(T2, buf + 9); - T3 = DFM_GetCycTick(); - CM_64ToChar(T3, buf + 17); - /*- 发送应答报文 */ - (void)CM_UDP_Send_Msg(*(pCtrl->pSock), buf, (CM_INT32)25, srcIP, srcPort); - } - else - { - /*- 无处理 */ - } - /*- 返回 */ - break; - case ENUM_TIME_ACK:/*-< 时钟同步应答 */ - /*- 长度是否合法 */ - if (25 == len) - { - /*- 解析应答报文 */ - T1 = CM_64FromChar(buf + 1); - T2 = CM_64FromChar(buf + 9); - T3 = CM_64FromChar(buf + 17); - T4 = tick; - /*- 记录延迟时间和偏移时间 */ - rt = CM_Mutex_Lock(pCtrl->mutex); - CM_RE_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_14, TSCP_DARK_ASSERT_1); - pCtrl->isOK = ENUM_CM_TRUE; - pCtrl->delay = (CM_INT64)((T4 - T1) - (T3 - T2)) / 2; - pCtrl->offset = (CM_INT64)((T2 + T3) - (T4 + T1)) / 2; - rt = CM_Mutex_Unlock(pCtrl->mutex); - CM_RE_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_14, TSCP_DARK_ASSERT_2); - } - else - { - /*- 无处理 */ - } - /*- 返回 */ - break; - case ENUM_TIME_ERROR:/*-< 保留字 */ - /*- 宕机 */ - CM_RE_ASSERT(0, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_14, TSCP_DARK_ASSERT_3); - /*- 返回 */ - break; - default: - /*- 返回 */ - break; - } - } - else - { - /*- 不处理 */ - } - } - return NULL; -} /** * @brief 远程部署接收线程 diff --git a/TSCP/src/MSCP/CFM/CFM_Net.h b/TSCP/src/MSCP/CFM/CFM_Net.h index 72b6b64..983efa1 100644 --- a/TSCP/src/MSCP/CFM/CFM_Net.h +++ b/TSCP/src/MSCP/CFM/CFM_Net.h @@ -21,6 +21,7 @@ #include "MSCP_APP_Interface.h" #include "CM_Mutex.h" #include "PFM_Cfg.h" +#include "CM_Socket.h" #if QNX #include /* ThreadCtl BMP绑定CPU*/ #endif @@ -47,13 +48,6 @@ extern "C" #define DARK_LOG_HEX (0xAAu) #define DARK_LOG_DEC (0xFFu) - /*- 时钟同步报文类型 */ - typedef enum - { - ENUM_TIME_ERROR = 0, /**< 保留 */ - ENUM_TIME_REQ, /**< 时钟同步请求 */ - ENUM_TIME_ACK /**< 时钟同步应答 */ - }ENUM_TIME_MSG_T; typedef struct { @@ -105,33 +99,18 @@ extern "C" }STRU_HARDWARE_BOOT_COM_T; extern STRU_HARDWARE_BOOT_COM_T g_Hardware_boot_com_state; + /*发送2x2状态扩展通道数据,注册函数指针*/ + typedef ENUM_CM_RETURN(*EXTEND_DATA_SEND) (CM_UINT8*,CM_UINT32); + extern EXTEND_DATA_SEND p_2x2_ExtendDataSend; + /*接收2x2状态扩展通道数据,注册函数指针*/ + typedef CM_UINT16(*EXTEND_DATA_RECV) (CM_UINT8*,CM_UINT32); + extern EXTEND_DATA_RECV p_2x2_ExtendDataRecv; /** * @brief 2oo2上电同步 * @details */ ENUM_CM_RETURN CFM_2oo2_InitSync(void); - /** - * @brief 发起一次2oo2时钟同步 - * @details - * 发送一个2oo2时钟同步请求报文 - * 由双方的时钟同步线程完成一次NTP校时操作 - * 操作完成后本方的时钟同步线程会记录到延迟时间和偏移时间 - * @see :: CFM_2oo2_TimeGet - * @see :: t_TimeThread - */ - void CFM_2oo2_TimeReq(void); - - /** - * @brief 读取时钟同步结果 - * @param pDelay 延迟时间 - * @param pOffset 偏移时间 - * @return 执行结果 - * - ENUM_CM_TRUE 成功 - * - ENUM_CM_FALSE 失败 - */ - ENUM_CM_RETURN CFM_2oo2_TimeGet(OUT CM_INT64* pDelay, OUT CM_INT64* pOffset); - /** * @brief 2oo2数据发送 * @param pBuf 发送报文指针 @@ -262,27 +241,24 @@ extern "C" * - 0 接收失败 */ CM_INT32 CFM_2x2_StateChange_Recv(CM_UINT8* pBuf, IN CM_UINT32 BufSize); - /** - * @brief 发起一次2x2时钟同步 - * @details - * 发送一个2x2时钟同步请求报文 - * 由双方的时钟同步线程完成一次NTP校时操作 - * 操作完成后本方的时钟同步线程会记录到延迟时间和偏移时间 - * @see :: CFM_2x2_TimeGet - * @see :: t_TimeThread - */ - void CFM_2x2_TimeReq(void); - - /** - * @brief 读取2x2时钟同步结果 - * @param pDelay 延迟时间 - * @param pOffset 偏移时间 - * @return 执行结果 + * @brief 2x2状态数据扩展通道发送 + * @param pBuf 发送报文指针 取值范围:非空 + * @param BufLen 发送报文长度 取值范围:0~0x7FFFFFFF + * @return 发送结果 * - ENUM_CM_TRUE 成功 * - ENUM_CM_FALSE 失败 */ - ENUM_CM_RETURN CFM_2x2_TimeGet(OUT CM_INT64* pDelay, OUT CM_INT64* pOffset); + ENUM_CM_RETURN CFM_2x2_StateChangeExtend_Send(IN CM_UINT8* pBuf, IN CM_UINT32 BufLen); + /** + * @brief 2x2状态数据扩展通道接收 + * @param pBuf 接收报文指针 取值范围:非空 + * @param BufLen 接收报文缓冲区大小 取值范围:0~0xFFFFFFFF + * @return 接收报文长度 + * - 1~0xFFFFFFFF 接收报文长度 + * - 0 接收失败 + */ + CM_UINT16 CFM_2x2_StateChangeExtend_Recv(CM_UINT8* pBuf, IN CM_UINT32 BufSize); /** * @brief 2x2同步发送 @@ -316,7 +292,7 @@ extern "C" ENUM_CM_RETURN CFM_2x2_DataSend(IN const CM_UINT8* pBuf, IN CM_INT32 BufLen); /** - * @brief 2x2串口数据发送 + * @brief 2x2状态数据扩展通道发送(串口或以太网) * @param pBuf 发送报文指针 取值范围(非空) * @param BufLen 发送报文长度 取值范围(0~0xffffffff) * @param msgType 发送报文类型 @@ -325,7 +301,7 @@ extern "C" * - ENUM_CM_NULL 发送条件不满足 * - ENUM_CM_FALSE 失败 */ - ENUM_CM_RETURN CFM_2x2_UartDataSend(IN CM_UINT8* pBuf, IN CM_UINT16 BufLen); + ENUM_CM_RETURN CFM_2x2_ExtendDataSend(IN CM_UINT8* pBuf, IN CM_UINT16 BufLen); /** * @brief 2x2数据接收 @@ -337,15 +313,16 @@ extern "C" */ CM_INT32 CFM_2x2_DataRecv(OUT CM_UINT8* pBuf, IN CM_UINT32 BufSize); + /** - * @brief 2x2串口数据接收 + * @brief 2x2状态数据扩展通道接收(串口或以太网) * @param pBuf 接收报文指针(非空) * @param BufLen 接收报文缓冲区大小(0~0xffffffff) * @return 接收报文长度 * - 正整数 接收报文长度 * - 0或负数 接收失败 */ - CM_UINT16 CFM_2x2_UartDataRecv(OUT CM_UINT8* pBuf, IN CM_UINT32 BufSize); + CM_UINT16 CFM_2x2_ExtendDataRecv(OUT CM_UINT8* pBuf, IN CM_UINT32 BufSize); /* @brief 内网透传TCP通信数据发送 * @param ch 内网透传通道序号,[1...n]有效 @@ -656,6 +633,15 @@ extern "C" * - ENUM_CM_FALSE 失败 */ ENUM_CM_RETURN CFM_OutnetHeart_Send(IN const CM_UINT8* pBuf, IN CM_INT32 Len, IN ENUM_OUTNET_CHN_T Chn); + /** + * @brief 通用2oo2数据发送 + * @param pBuf 发送报文指针 取值范围:非空 + * @param BufLen 发送报文长度 取值范围:0~0x7FFFFFFF + * @return 发送结果 + * - ENUM_CM_TRUE 成功 + * - ENUM_CM_FALSE 失败 + */ + ENUM_CM_RETURN CFM_2oo2_Send_Currency(IN CM_SOCKET sock,IN const CM_UINT8* pBuf, IN CM_INT32 BufLen,IN CM_UINT16 nPortDest); #ifdef __cplusplus } diff --git a/TSCP/src/MSCP/CFM/CFM_Raw.c b/TSCP/src/MSCP/CFM/CFM_Raw.c index 82ed3dd..dd93fd6 100644 --- a/TSCP/src/MSCP/CFM/CFM_Raw.c +++ b/TSCP/src/MSCP/CFM/CFM_Raw.c @@ -825,6 +825,7 @@ CM_UINT32 CFM_RxOutnetHeart(OUT CM_UINT8 buf[], IN CM_UINT32 bufSize) CM_UINT8 rcv_2oo2_buf[16] = {0u}; CM_INT32 rcv_len = 0; CM_UINT32 cycle = DFM_GetBirthCount(); + CM_UINT8 cut = 0; CM_UINT8 ccState[2] = {0,0}; CM_UINT8 sebState[2] = {0,0}; /*- 如果入参指针不为空 */ @@ -903,7 +904,8 @@ CM_UINT32 CFM_RxOutnetHeart(OUT CM_UINT8 buf[], IN CM_UINT32 bufSize) (1u == PFM_CCUSEB_Comstate(2))? (sebState[1] = 0xaau) : (sebState[1] = 0x55u); (1u == PFM_CCUSEB_Comstate(3))? (sebState[0] = 0xaau) : (sebState[0] = 0x55u); MSCP_LOG_MSG("rCC = %d, bCC = %d, rSEB = %d, bSEB = %d\n", ccState[1], ccState[0], sebState[1], sebState[0]); - + /*记录健康度*/ + SFM_2x2_UpdataLocalCC_Health(ccState,2u); /*- 填写暗文日志 */ (void)CFM_DarkLog_Storage(DARK_LOG_HEX, TSCP_DARK_CCSTATE, 2U, &ccState); (void)CFM_DarkLog_Storage(DARK_LOG_HEX, TSCP_DARK_SEBSTATE, 2U, &sebState); diff --git a/TSCP/src/MSCP/CFM/CFM_Sync.c b/TSCP/src/MSCP/CFM/CFM_Sync.c new file mode 100644 index 0000000..1737006 --- /dev/null +++ b/TSCP/src/MSCP/CFM/CFM_Sync.c @@ -0,0 +1,1002 @@ +/** + * @file CFM_Sync.c + * @brief 时间和信息同步功能实现文件 + * + * 该文件包含了系统所需的时间同步和信息同步相关函数, + * 负责维护系统内各模块间的时间一致性以及数据信息的同步处理。 + * + * 主要功能包括: + * - 系统时间同步机制 + * - 模块间信息同步处理 + * - 同步状态监控与维护 + * + * @author [硬件平台部平台软件组] + * @date [2025-12-01] + * @version [1.0] + */ + + +#include "CFM_Sync.h" +#include "CFM_Net.h" +#include "PFM_Log.h" +#include "SFM_2oo2.h" +#include "CM_MultiThread.h" +#include "CM_Memory.h" +#include "CM_Atomic.h" +#include "CM_UDP.h" +#include "DFM_Time.h" +#include "CM_Convert.h" +#include "SFM_2x2.h" + + + +#define TIME_SYNC_2oo2 (0) //2oo2时间同步结构体下标 +#define TIME_SYNC_2x (1) //2x时间同步结构体下标 +#define TIME_OFFSET_LOCAL (0) //本地时间偏移量 +#define TIME_OFFSET_PEER (1) //对端时间偏移量 +static STRU_CFM_TIME_CTRL_T s_TimeCtrl[10] = {0}; +#define SFM_2oo2_TM_FIX_VAL_NS (3 * CM_MILLION) /* 2oo2校时门限,单位:ns */ +#define SFM_2x2_TM_FIX_VAL_NS (10 * CM_MILLION) /* 2x最小调整偏差,单位:ns */ +#define SFM_TIME_SYNC_TOLERANCE_COUNT (5u) /* 时间同步切换, 丢失容忍次数*/ + +static CM_THREAD_FUNC_T t_Sync_TimeThread(IN CM_Thread_Arg_Struct_T* arg); +/** + * @brief 计算平均偏移量(去除极值后) + * + * 维护一个大小为10的环形数组,当数组满时进行排序并去除极值后计算平均值 + * + * @param offset 当前时间偏移量 + * @param circular_buf 环形数组结构体指针 + * @return 计算出的平均值,如果数组未满则返回当前offset + */ +static CM_INT64 calculate_average_offset(CM_INT64 offset, STRU_CIRCULAR_BUFFER_T *circular_buf); + +/** + * @brief 清空环形缓冲区 + * + * 将环形缓冲区的计数器和索引重置为0,并将缓冲区内的所有数据清零, + * 实现环形缓冲区的一键清空功能。 + * + * @param[in,out] circular_buf 环形缓冲区结构体指针 + * + * @note 该函数会: + * - 将缓冲区数据计数器(count)重置为0 + * - 将写入索引(index)重置为0 + * - 将缓冲区内的所有数据清零 + * + * @see STRU_CIRCULAR_BUFFER_T + */ +static void CFM_ClearCircularBuf(STRU_CIRCULAR_BUFFER_T *p_circular); +static ENUM_CM_RETURN CircularBuf_Init(STRU_CIRCULAR_BUFFER_T *p_circular); +static CM_INT64 CFM_Get_2x_offset(CM_INT64 local_offse, CM_INT64 peer_offset); +static CM_INT64 CFM_Get_2oo2_offset(CM_INT64 local_offset, CM_INT64 peer_offset); + +/** + * @brief 获取时间同步配置信息 + * + * 从全局配置结构体中提取时间同步相关配置信息,包括本机和对端的IP地址 + * 及端口号,填充到时间同步地址结构体中。 + * + * @param[out] pCfg 时间同步地址配置结构体指针 + * + * @note 该函数会填充以下配置信息: + * - 本机2oo2时间同步地址和端口 + * - 对端2oo2时间同步地址和端口 + * - 本机2x时间同步地址和端口 + * - 对端2x时间同步地址和端口 + * - 对端区域A时间同步地址和端口 + * - 对端区域B时间同步地址和端口 + * + * @see STRU_CFM_TIME_ADDR_T + * @see g_PFM_Cfg + */ +void CFM_Get_Cfg(OUT STRU_CFM_TIME_ADDR_T *pCfg) +{ + if(NULL != pCfg) + { + (void)CM_Memcpy(pCfg->Local_2oo2_Addr.IP, sizeof(pCfg->Local_2oo2_Addr.IP), g_PFM_Cfg.Local_Cfg.IP_2oo2, sizeof(g_PFM_Cfg.Local_Cfg.IP_2oo2));//获取本机2oo2IP地址 + pCfg->Local_2oo2_Addr.Port = g_PFM_Cfg.Local_Cfg.Port_2oo2_Sync_Time;//获取本机2oo2校时端口号 + + (void)CM_Memcpy(pCfg->Peer_2oo2_Addr.IP, sizeof(pCfg->Peer_2oo2_Addr.IP), g_PFM_Cfg.Peer_Cfg.IP_2oo2, sizeof(g_PFM_Cfg.Peer_Cfg.IP_2oo2));//获取对端2oo2IP地址 + pCfg->Peer_2oo2_Addr.Port = g_PFM_Cfg.Peer_Cfg.Port_2oo2_Sync_Time;//获取对端2oo2校时端口号 + + (void)CM_Memcpy(pCfg->Local_4x_Addr.IP, sizeof(pCfg->Local_4x_Addr.IP), g_PFM_Cfg.Local_Cfg.IP_4x2, sizeof(g_PFM_Cfg.Local_Cfg.IP_4x2));//获取本机2xIP地址 + pCfg->Local_4x_Addr.Port = g_PFM_Cfg.Local_Cfg.Port_4x2_Sync_Time;//获取本机2x校时端口号 + + (void)CM_Memcpy(pCfg->Partner_Addr.IP, sizeof(pCfg->Partner_Addr.IP), g_PFM_Cfg.Partner_Cfg.IP_4x2, sizeof(g_PFM_Cfg.Partner_Cfg.IP_4x2));//获取对端2xIP地址 + pCfg->Partner_Addr.Port = g_PFM_Cfg.Partner_Cfg.Port_4x2_Sync_Time;//获取对端2x校时端口号 + + (void)CM_Memcpy(pCfg->Partner_Area_Addr_A.IP, sizeof(pCfg->Partner_Area_Addr_A.IP), g_PFM_Cfg.Partner_Area_A_Cfg.IP_4x2, sizeof(g_PFM_Cfg.Partner_Area_A_Cfg.IP_4x2));//获取对端2xIP地址 + pCfg->Partner_Area_Addr_A.Port = g_PFM_Cfg.Partner_Area_A_Cfg.Port_4x2_Sync_Time;//获取对端2x校时端口号 + + (void)CM_Memcpy(pCfg->Partner_Area_Addr_B.IP, sizeof(pCfg->Partner_Area_Addr_B.IP), g_PFM_Cfg.Partner_Area_B_Cfg.IP_4x2, sizeof(g_PFM_Cfg.Partner_Area_B_Cfg.IP_4x2));//获取对端2xIP地址 + pCfg->Partner_Area_Addr_B.Port = g_PFM_Cfg.Partner_Area_B_Cfg.Port_4x2_Sync_Time;//获取对端2x校时端口号 + + + } + else + { + CM_NM_ASSERT(0, 0,0,0); + } +} + +/** + * @brief 初始化时间同步功能 + * + * 创建UDP套接字、互斥锁,并启动时间同步线程,完成时间同步模块的初始化工作。 + * + * @param[in] TimeType 时间同步类型(ENUM_TIME_2oo2或ENUM_TIME_2x) + * @param[in] IP 本地IP地址字符串 + * @param[in] Port 本地端口号 + * @param[in] DevNum 目标设备数量 + * @param[in] DevAddr 目标设备地址数组指针 + * @param[in,out] TimeCtrl 时间同步控制结构体指针 + * + * @return ENUM_CM_RETURN + * @retval ENUM_CM_TRUE 初始化成功 + * @retval ENUM_CM_FALSE 初始化失败 + * + * @note 该函数会创建一个时间同步线程,负责处理时间同步协议流程 + * @see t_Sync_TimeThread + */ +ENUM_CM_RETURN CFM_TimeSync_Init(IN CM_UINT8 DevNum) +{ + ENUM_CM_RETURN rt = ENUM_CM_FALSE; + CM_BOOL rtThread = CM_FALSE; + CM_UINT8 i = 0; + CM_CHAR threadName[32] = {0}; // 用于存储线程名称 + + for(i = 0; i < DevNum; i++) + { + /* 读取配置相关配置 */ + CFM_Get_Cfg(&s_TimeCtrl[i].time_addr); + + /*互斥锁初始化*/ + rt = CM_Mutex_Init(&s_TimeCtrl[i].mutex); + CM_NM_ASSERT(ENUM_CM_TRUE == rt, 0,0,0); + + + if(TIME_SYNC_2oo2 == i) + { + + /*二取时间初始化*/ + s_TimeCtrl[i].circular_buf.size = CIRCULAR_BUFFER_SIZE; + s_TimeCtrl[i].destDev_Num = 1; + s_TimeCtrl[i].time_type = TIME_SYNC_2oo2; + (void)CM_Memcpy(s_TimeCtrl[i].local_addr.IP , sizeof(s_TimeCtrl[i].local_addr.IP), s_TimeCtrl[i].time_addr.Local_2oo2_Addr.IP, sizeof(s_TimeCtrl[i].time_addr.Local_2oo2_Addr.IP)); + s_TimeCtrl[i].local_addr.Port = s_TimeCtrl[i].time_addr.Local_2oo2_Addr.Port; /*本地设备地址*/ + s_TimeCtrl[i].destDev_addr[0] = s_TimeCtrl[i].time_addr.Peer_2oo2_Addr; /*目标设备地址*/ + + } + else if(TIME_SYNC_2x == i) + { + /*二乘时间初始化*/ + s_TimeCtrl[i].circular_buf.size = CFM_TIME_2X_COUNT; + s_TimeCtrl[i].destDev_Num = 3; + s_TimeCtrl[i].time_type = TIME_SYNC_2x; + (void)CM_Memcpy(s_TimeCtrl[i].local_addr.IP , sizeof(s_TimeCtrl[i].local_addr.IP), s_TimeCtrl[i].time_addr.Local_4x_Addr.IP, sizeof(s_TimeCtrl[i].time_addr.Local_4x_Addr.IP)); + s_TimeCtrl[i].local_addr.Port = s_TimeCtrl[i].time_addr.Local_4x_Addr.Port; /*本地设备地址*/ + s_TimeCtrl[i].destDev_addr[0] = s_TimeCtrl[i].time_addr.Partner_Addr; /*目标设备地址*/ + s_TimeCtrl[i].destDev_addr[1] = s_TimeCtrl[i].time_addr.Partner_Area_Addr_A; /*目标设备地址*/ + s_TimeCtrl[i].destDev_addr[2] = s_TimeCtrl[i].time_addr.Partner_Area_Addr_B; /*目标设备地址*/ + } + else + { + s_TimeCtrl[i].destDev_Num = i; + s_TimeCtrl[i].time_type = i; + } + + s_TimeCtrl[i].isOK = ENUM_CM_FALSE; + + /* 初始化环形缓冲区 */ + rt = CircularBuf_Init(&s_TimeCtrl[i].circular_buf); + CM_NM_ASSERT(ENUM_CM_TRUE == rt, 0,0,0); + /*创建本地通信socket*/ + rt = CM_UDP_Socket_Create(&s_TimeCtrl[i].pSock, CM_FALSE, (CM_UINT32)inet_addr(s_TimeCtrl[i].local_addr.IP), s_TimeCtrl[i].local_addr.Port, 0u, (CM_UINT8)1u); + CM_NM_ASSERT(ENUM_CM_TRUE == rt, 0,0,0); + + s_TimeCtrl[TIME_SYNC_2x].TimeSyncFlag = CM_FALSE; + + /* 创建唯一的线程名称 */ + (void)snprintf(threadName, sizeof(threadName), "TimeSync_%d", i); + /*创建时间同步线程*/ + rtThread = CM_Thread_Create((CM_THREAD_T*)NULL, (CM_THREAD_FUNC_T)t_Sync_TimeThread, "TimeSync", 0, CM_TASK_PRIORITY_72, (CM_Thread_Arg_Struct_T*)&s_TimeCtrl[i]); + CM_NM_ASSERT(CM_TRUE == rtThread, 0,0,0); + } + rt = ENUM_CM_TRUE; + + return rt; +} +static ENUM_CM_RETURN CircularBuf_Init(STRU_CIRCULAR_BUFFER_T *p_circular) +{ + ENUM_CM_RETURN rt = ENUM_CM_FALSE; + /* 检查输入参数是否为空指针 */ + if(NULL != p_circular) + { + /* 初始化缓冲区数据计数器为0 */ + p_circular->count = 0; + /* 初始化写入索引为0 */ + p_circular->index = 0; + /* 初始化缓冲区指针为NULL */ + p_circular->pBuffer = (CM_INT64 *)CM_Malloc(p_circular->size * sizeof(CM_INT64)); + if(NULL != p_circular->pBuffer) + { + rt = ENUM_CM_TRUE; + } + else + { + /* 缓冲区指针为空,返回错误 */ + rt = ENUM_CM_FALSE; + } + + } + else + { + /* 如果输入参数为空指针,记录错误日志 */ + rt = ENUM_CM_FALSE; + } + + return rt; +} +/** + * @brief 清空环形缓冲区 + * + * 将环形缓冲区的计数器和索引重置为0,并将缓冲区内的所有数据清零, + * 实现环形缓冲区的一键清空功能。 + * + * @param[in,out] circular_buf 环形缓冲区结构体指针 + * + * @note 该函数会: + * - 将缓冲区数据计数器(count)重置为0 + * - 将写入索引(index)重置为0 + * - 将缓冲区内的所有数据清零 + * + * @see STRU_CIRCULAR_BUFFER_T + */ +static void CFM_ClearCircularBuf(STRU_CIRCULAR_BUFFER_T *p_circular) +{ + /* 检查输入参数是否为空指针 */ + if(NULL != p_circular) + { + /* 重置缓冲区数据计数器为0 */ + p_circular->count = 0; + /* 重置写入索引为0 */ + p_circular->index = 0; + /* 将缓冲区内的所有数据清零 */ + (void)CM_Memset(p_circular->pBuffer, 0, p_circular->size * sizeof(CM_INT64), p_circular->size * sizeof(CM_INT64)); + } + else + { + /* 如果输入参数为空指针,记录错误日志 */ + MSCP_LOG_MSG("circular_buf is NULL\n"); + } +} + +static CM_THREAD_FUNC_T t_Sync_TimeThread(IN CM_Thread_Arg_Struct_T* arg) +{ + /*- 变量初始化 */ + STRU_CFM_TIME_CTRL_T* pCtrl = (STRU_CFM_TIME_CTRL_T*)arg; /* 线程参数 */ + CM_UINT8 buf[100] = { 0u }; /* 接收缓冲区 */ + CM_INT32 len = 0; /* 数据长度 */ + CM_UINT32 srcIP = 0u; /* 源IP */ + CM_UINT16 srcPort = 0u; /* 源端口 */ + CM_UINT64 tick = 0u; /* 精确时间 */ + CM_UINT64 T1 = 0u; /* 时钟同步参数 */ + CM_UINT64 T2 = 0u; /* 时钟同步参数 */ + CM_UINT64 T3 = 0u; /* 时钟同步参数 */ + CM_UINT64 T4 = 0u; /* 时钟同步参数 */ + CM_UINT8 i = 0u; + ENUM_CM_RETURN sendRtn = ENUM_CM_FALSE; + + void* pmask = NULL; +#if QNX + /*- 本线程锁定在 A53 core 1 */ + pmask = (void*)(0x01u|0x02u); + (void)ThreadCtl(_NTO_TCTL_RUNMASK, pmask); +#else + set_thread_affinity(*pmask); +#endif + MSCP_LOG_MSG("[%d]Time Service Start\n", pCtrl->time_type); + + while (1) + { + CM_ASSERT(1,0,0,0);//与主线程同步宕机 + /*- 阻塞接收时钟同步报文或主线程启动T1发送请求 */ + len = CM_UDP_Recv_Msg(pCtrl->pSock, buf, (CM_INT32)sizeof(buf), &srcIP, &srcPort); + tick = DFM_GetCycTick(); + + /*判断消息类型*/ + switch ((ENUM_TIME_MSG_T)buf[0]) + { + case ENUM_TIME_START: + + /*- 发送时钟同步T1请求 */ + buf[0] = ENUM_TIME_REQ; + CM_64ToChar(tick , buf + 1); + len = 9; + /*- 发送时钟同步T1请求 */ + for(i = 0u; i < pCtrl->destDev_Num; i++) + { + sendRtn = CM_UDP_Send_Msg(pCtrl->pSock, buf, len, inet_addr(pCtrl->destDev_addr[i].IP), pCtrl->destDev_addr[i].Port); + if(ENUM_CM_FALSE == sendRtn) + { + MSCP_LOG_MSG("Time ARQ senf fial %d\n",i); + } + else + { + ; + } + + } + break; + case ENUM_TIME_REQ: + /*- 接收时钟同步T1响应 */ + if(9 == len) + { + /*- 解析请求报文 */ + T1 = CM_64FromChar(buf + 1); + /*- 生成应答报文 */ + T2 = tick; + buf[0] = (CM_UINT8)ENUM_TIME_ACK; + CM_64ToChar(T1, buf + 1); + CM_64ToChar(T2, buf + 9); + T3 = DFM_GetCycTick(); + CM_64ToChar(T3, buf + 17); + /*- 发送应答报文 */ + (void)CM_UDP_Send_Msg(pCtrl->pSock, buf, (CM_INT32)25, srcIP, srcPort); + } + else + { + MSCP_LOG_MSG("Time Service Receive Time Request len = %d\n",len); + } + break; + case ENUM_TIME_ACK: + /*- 接收时钟同步T2响应 */ + if(25 == len) + { + /*返回最终全部时间*/ + buf[0] = ENUM_TIME_RET; + /*- 解析响应报文 */ + T1 = CM_64FromChar(buf + 1); + T2 = CM_64FromChar(buf + 9); + T3 = CM_64FromChar(buf + 17); + T4 = tick; + + if(TIME_SYNC_2oo2 == pCtrl->time_type) + { + /*二取双向校时 计算offset*/ + CM_Mutex_Lock(pCtrl->mutex); + pCtrl->offset = (CM_INT64)((T2 + T3) - (T4 + T1)) / 2; + pCtrl->isOK = ENUM_CM_TRUE; + CM_Mutex_Unlock(pCtrl->mutex); + } + else if(TIME_SYNC_2x == pCtrl->time_type) + { + /*二取双向校时 响应T2请求*/ + CM_64ToChar(T1, buf + 1); + CM_64ToChar(T2, buf + 9); + CM_64ToChar(T3, buf + 17); + CM_64ToChar(T4, buf + 25); + /*- 发送最终时间 */ + (void)CM_UDP_Send_Msg(pCtrl->pSock, buf, (CM_INT32)33, srcIP, srcPort); + } + else + { + ;/*- 其他类型报文不处理 */ + } + } + else + { + MSCP_LOG_MSG("Time Service Receive Time Ack len = %d\n",len); + } + break; + case ENUM_TIME_RET: + /*- 接收时钟同步T4响应 时间具备 可以计算offset*/ + if(33 == len) + { + /*- 解析响应报文 */ + T1 = CM_64FromChar(buf + 1); + T2 = CM_64FromChar(buf + 9); + T3 = CM_64FromChar(buf + 17); + T4 = CM_64FromChar(buf + 25); + + /*- 计算本次间偏移量 */ + CM_Mutex_Lock(pCtrl->mutex); + pCtrl->offset = (CM_INT64)((T2 + T3) - (T4 + T1)) / 2; + pCtrl->isOK = ENUM_CM_TRUE; + CM_Mutex_Unlock(pCtrl->mutex); + } + else + { + MSCP_LOG_MSG("Time Service Receive Time Return len = %d\n",len); + } + break; + default: + break; + } + } + + return NULL; +} + +/** + * @brief 计算平均偏移量(去除极值后) + * + * 维护一个环形数组,当数组满时进行排序并去除极值后计算平均值 + * + * @param offset 当前时间偏移量 + * @param circular_buf 环形数组结构体指针 + * @return 计算出的平均值,如果数组未满则返回当前offset + */ +static CM_INT64 calculate_average_offset(CM_INT64 offset, STRU_CIRCULAR_BUFFER_T *circular_buf) +{ + CM_INT64 average = 0; + CM_INT32 i = 0, j = 0; + CM_INT64 temp = 0; + CM_INT64 sum = 0; + CM_INT64 temp_buffer[300] = {0}; /* 创建临时数组用于排序 */ + + /* 参数检查 */ + if ((NULL == circular_buf) || (circular_buf->size > 300)) + { + CM_ASSERT(0,0,0,0); + } + else + { + /* 将新的offset值添加到环形数组中 */ + circular_buf->pBuffer[circular_buf->index] = offset; + circular_buf->index = (circular_buf->index + 1) % circular_buf->size; /* 环形移动索引 */ + + /* 更新数组元素计数 */ + if (circular_buf->count < circular_buf->size) + { + circular_buf->count++; + average = 0; + } + else + { + /* 拷贝数据到临时数组,注意拷贝的字节数 */ + (void)CM_Memcpy(temp_buffer, sizeof(CM_INT64) * circular_buf->count, circular_buf->pBuffer, circular_buf->count * sizeof(CM_INT64)); + + /* 使用冒泡排序对数组进行从小到大排序 */ + for (i = 0; i < circular_buf->count - 1; i++) + { + for (j = 0; j < circular_buf->count - i - 1; j++) + { + if (temp_buffer[j] > temp_buffer[j + 1]) + { + temp = temp_buffer[j]; + temp_buffer[j] = temp_buffer[j + 1]; + temp_buffer[j + 1] = temp; + } + } + } + /* 去除一个最大值(最后一个元素)和一个最小值(第一个元素),计算剩余n个数的平均值 */ + sum = 0; + for (i = 1; i < circular_buf->count - 1; i++) /* 跳过最大值和最小值 */ + { + sum += temp_buffer[i]; + } + average = sum / (circular_buf->count - 2); + + return average; + } + } + + return average; +} + +/** + * @brief 获取时间偏移量 + * + * 根据指定的时间同步类型获取相应的时间偏移量,并重置获取标志 + * + * @param[out] p_avg_offset 平均时间偏移量输出指针 + * @param[out] p_offset 时间偏移量输出指针 + * @param[in] type 时间同步类型(ENUM_TIME_2oo2或ENUM_TIME_2x) + * + * @return ENUM_CM_RETURN + * @retval ENUM_CM_TRUE 获取成功 + * @retval ENUM_CM_FALSE 获取失败 + */ +ENUM_CM_RETURN CFM_Get_Time(OUT CM_INT64 *p_offset,CM_UINT8 type) +{ + ENUM_CM_RETURN ret = ENUM_CM_FALSE; + + /* 检查输入参数是否有效 */ + if(NULL != p_offset) + { + /* 加锁保护共享资源访问 */ + CM_Mutex_Lock(s_TimeCtrl[type].mutex); + + /* 检查时间同步是否已完成 */ + if (ENUM_CM_TRUE == s_TimeCtrl[type].isOK) + { + /* 获取当前时间偏移量 */ + *p_offset = s_TimeCtrl[type].offset; + /*获取完数值置0 */ + s_TimeCtrl[type].offset = 0; + /* 重置获取标志,避免重复获取相同数据 */ + s_TimeCtrl[type].isOK = ENUM_CM_FALSE; + /* 设置返回值为成功 */ + ret = ENUM_CM_TRUE; + } + else + { + *p_offset = CM_INT64_MAX; + /* 时间同步未完成,记录错误日志 */ + MSCP_LOG_MSG("Time Service Get Time Offset Failed\n"); + /* 设置返回值为失败 */ + ret = ENUM_CM_FALSE; + } + /* 解锁释放共享资源 */ + CM_Mutex_Unlock(s_TimeCtrl[type].mutex); + } + else + { + /* 输入参数无效,记录错误日志 */ + MSCP_LOG_MSG("Time Service Get Time param is NULL\n"); + /* 设置返回值为失败 */ + ret = ENUM_CM_FALSE; + } + /* 返回执行结果 */ + return ret; +} +/** + * @brief 获取时间偏移量并计算校时结果 + * + * 根据时间同步类型获取相应的本地和对端时间偏移量,通过2oo2交换机制获取对端数据, + * 并根据系统状态和预设门限计算最终的时间调整值。 + * + * @param[out] p_avg_offset_2x 2x时间同步类型的平均偏移量输出指针 + * @param[out] p_avg_offset_2oo2 2oo2时间同步类型的平均偏移量输出指针 + * + * @note 该函数会根据主从状态和时间偏移量大小决定是否需要调整时钟 + * @see CFM_Get_Time + * @see SFM_2oo2_Exchange_Currency + * @see SFM_GetLocal4x2State + */ +void CFM_Get_Offset(CM_INT64 *p_avg_offset_2x, CM_INT64 *p_avg_offset_2oo2) +{ + /* 存储本地和对端的时间偏移量 [本地/对端][2oo2/2x] */ + CM_INT64 offset[2][2] = {{0}}; + CM_UINT8 peer_buf[30] = {0}; /* 存储从对端接收的数据缓冲区 */ + CM_UINT8 local_buf[30] = {0}; /* 存储本地发送的数据缓冲区 */ + ENUM_CM_RETURN result = ENUM_CM_FALSE; + + /* 检查输出参数是否有效 */ + if((NULL != p_avg_offset_2x) && (NULL != p_avg_offset_2oo2)) + { + /* 获取本地时间偏移量 */ + result = CFM_Get_Time(&offset[TIME_OFFSET_LOCAL][TIME_SYNC_2oo2], TIME_SYNC_2oo2); + + if(result == ENUM_CM_TRUE) + { + ; + } + else + { + offset[TIME_OFFSET_LOCAL][TIME_SYNC_2oo2] = CM_INT64_MAX; + } + + result = CFM_Get_Time(&offset[TIME_OFFSET_LOCAL][TIME_SYNC_2x], TIME_SYNC_2x); + + if(result == ENUM_CM_TRUE) + { + ; + } + else + { + offset[TIME_OFFSET_LOCAL][TIME_SYNC_2x] = CM_INT64_MAX; + } + + /* 将本地时间偏移量打包到缓冲区 8字节2取偏移量 +8字节2乘偏移量 */ + CM_64ToChar(offset[TIME_OFFSET_LOCAL][TIME_SYNC_2oo2], local_buf); + CM_64ToChar(offset[TIME_OFFSET_LOCAL][TIME_SYNC_2x], local_buf + 8); + + /* 通过2oo2交换机制获取对端数据 */ + (void)SFM_2oo2_Exchange_Currency(local_buf, 16, peer_buf, 16, ENUM_2oo2_SYNC); + /* 解析对端时间偏移量 */ + offset[TIME_OFFSET_PEER][TIME_SYNC_2oo2] = (CM_INT64)CM_64FromChar(peer_buf); + offset[TIME_OFFSET_PEER][TIME_SYNC_2x] = (CM_INT64)CM_64FromChar(peer_buf + 8); + MSCP_LOG_MSG("first get offset 2x %lld %lld 2oo2 %lld %lld\n",offset[TIME_OFFSET_LOCAL][TIME_SYNC_2x], offset[TIME_OFFSET_PEER][TIME_SYNC_2x], offset[TIME_OFFSET_LOCAL][TIME_SYNC_2oo2],offset[TIME_OFFSET_PEER][TIME_SYNC_2oo2]); + /* 计算2x时间同步类型的最终时间调整值 */ + *p_avg_offset_2x = CFM_Get_2x_offset(offset[TIME_OFFSET_LOCAL][TIME_SYNC_2x], offset[TIME_OFFSET_PEER][TIME_SYNC_2x]); + + /* 计算2oo2时间同步类型的最终时间调整值 */ + *p_avg_offset_2oo2 = CFM_Get_2oo2_offset(offset[TIME_OFFSET_LOCAL][TIME_SYNC_2oo2], offset[TIME_OFFSET_PEER][TIME_SYNC_2oo2]); + } + else + { + /* 参数为空指针,记录错误日志 */ + MSCP_LOG_MSG("Time Service Get Time Offset Failed param is NULL\n"); + CM_ASSERT(0,0,0,0); + } +} +/** + * @brief 计算平均时间偏移量 + * + * 根据本地和对端的时间偏移量计算平均值,用于时间同步精度优化。 + * 当本地和对端都有有效偏移量时,取两者的平均值; + * 当只有一方有有效偏移量时,直接使用该偏移量; + * 当双方都无有效偏移量时,返回0。 + * + * @param[in] local_offse 本地时间偏移量 + * @param[in] peer_offset 对端时间偏移量 + * + * @return CM_INT64 计算得到的平均时间偏移量 + * @retval 0 本地和对端偏移量都为0,或计算异常 + * @retval 其他值 计算得到的平均偏移量 + * + * @note 该函数用于提高时间同步的准确性和稳定性 + * @see CFM_Get_2x_offset + * @see CFM_Get_2oo2_offset + */ +static CM_INT64 CFM_Get_Avg_2oo2offset(CM_INT64 local_offse, CM_INT64 peer_offset) +{ + CM_INT64 avg_offset = 0; /* 计算得到的平均时间偏移量 */ + + + /* 当本地和对端都有有效偏移量时,计算平均值 */ + if((0 != local_offse) && (0 != peer_offset)) + { + /* 取本地和对端偏移量的平均值 */ + avg_offset = (local_offse - peer_offset) / 2; + MSCP_LOG_MSG("myOffset = %lld,The calibration result is the average value of 2oo2 dual machines\n", avg_offset); + } + /* 当只有本地有有效偏移量时,直接使用本地偏移量 */ + else if(0 != local_offse) + { + /* 直接使用本地偏移量作为平均值 */ + avg_offset = local_offse; + MSCP_LOG_MSG("The calibration result is the local calibration result\n"); + } + /* 当只有对端有有效偏移量时,直接使用对端偏移量 */ + else if(0 != peer_offset) + { + /* 直接使用对端偏移量作为平均值 */ + avg_offset = -peer_offset; + MSCP_LOG_MSG("The calibration result is the calibration result of the neighboring machine\n"); + } + /* 当双方都无有效偏移量时,返回0 */ + else + { + /* 本地和对端偏移量都为0,返回0 */ + avg_offset = 0; + MSCP_LOG_MSG("Failed to calibrate this period\n"); + } + + /* 返回计算得到的平均偏移量 */ + return avg_offset; +} +static CM_INT64 CFM_Get_Avg_2x2offset(CM_INT64 local_offse, CM_INT64 peer_offset) +{ + CM_INT64 avg_offset = CM_INT64_MAX; /* 计算得到的平均时间偏移量 */ + + + /* 当本地和对端都有有效偏移量时,计算平均值 */ + if(((local_offse > CM_INT64_MIN) && (local_offse < CM_INT64_MAX)) && ((peer_offset > CM_INT64_MIN) && (peer_offset < CM_INT64_MAX))) + { + /* 取本地和对端偏移量的平均值 */ + avg_offset = (local_offse + peer_offset) / 2; + MSCP_LOG_MSG("myOffset = %lld,The calibration result is the average value of 2oo2 dual machines\n", avg_offset); + } + /* 当只有本地有有效偏移量时,直接使用本地偏移量 */ + else if((local_offse > CM_INT64_MIN) && (local_offse < CM_INT64_MAX)) + { + /* 直接使用本地偏移量作为平均值 */ + avg_offset = local_offse; + MSCP_LOG_MSG("The calibration result is the local calibration result\n"); + } + /* 当只有对端有有效偏移量时,直接使用对端偏移量 */ + else if((peer_offset > CM_INT64_MIN) && (peer_offset < CM_INT64_MAX)) + { + /* 直接使用对端偏移量作为平均值 */ + avg_offset = peer_offset; + MSCP_LOG_MSG("The calibration result is the calibration result of the neighboring machine\n"); + } + /* 当双方都无有效偏移量时,返回0 */ + else + { + /* 返回无效值 */ + avg_offset = CM_INT64_MAX; + MSCP_LOG_MSG("Failed to calibrate this period\n"); + } + + /* 返回计算得到的平均偏移量 */ + return avg_offset; +} +/** + * @brief 计算2x时间同步偏移量 + * + * 根据本地和对端的2x时间偏移量计算最终的时间调整值,用于2x时间同步。 + * 该函数首先计算平均偏移量,然后根据系统状态和预设门限判断是否需要进行时间调整, + * 并设置相应的时间同步标志位。 + * + * @param[in] local_offse 本地时间偏移量 + * @param[in] peer_offset 对端时间偏移量 + * + * @return CM_INT64 计算得到的时间调整值 + * @retval 0 不需要时间调整 + * @retval 正值 需要延长时间周期 + * @retval 负值 需要缩短时间周期 + * + * @note 该函数仅在非主系状态下进行时间调整计算 + * @see SFM_2x2_TM_FIX_VAL_NS + * @see s_TimeCtrl + * @see SFM_GetLocal4x2State + */ +static CM_INT64 CFM_Get_2x_offset(CM_INT64 local_offse, CM_INT64 peer_offset) +{ + CM_INT64 rtn_offset = 0; /* 返回的时间调整值 */ + CM_INT64 avg_2x_offset = 0; /* 平均时间偏移量 */ + CM_INT64 aveOffset = 0; /* 经过滤波处理后的平均时间偏移量 */ + ENUM_4x2_STATE_T state = SFM_GetLocal4x2State(); /* 获取当前2x2状态 */ + CM_INT64 cyctime_ns = (CM_INT64)(g_PFM_Cfg.CYC_TIME) * CM_MILLION; /* 周期时间(ns) */ + static CM_UINT32 TimeSyncToleranceCount = 0u; /* 时间同步容忍次数*/ + + + /* 非主系才需要调整时钟 */ + if(ENUM_4x2_MASTER != state) + { + /* 计算本地和对端的平均时间偏移量 */ + avg_2x_offset = CFM_Get_Avg_2x2offset(local_offse, peer_offset); + MSCP_LOG_MSG("2x2 get offset = %lld cyc = %u\n",avg_2x_offset, SFM_2x2_GetSysCount()); + /* 判断时间同步是否完成,设置相应的时间同步标志 */ + if(CM_ABS(avg_2x_offset) >= SFM_2x2_TM_FIX_VAL_NS * 2) + { + if((CM_TRUE == CM_ATOMIC_LOAD(&s_TimeCtrl[TIME_SYNC_2x].TimeSyncFlag)) && (TimeSyncToleranceCount < SFM_TIME_SYNC_TOLERANCE_COUNT)) + { + /* 上次时间同步成功 进行容忍次数计数*/ + TimeSyncToleranceCount++; + } + else + { + TimeSyncToleranceCount = 0u; + } + + if(TimeSyncToleranceCount >= SFM_TIME_SYNC_TOLERANCE_COUNT) + { + /* 平均偏移量超过阈值的2倍,标记时间同步失败 */ + CM_ATOMIC_STORE(&s_TimeCtrl[TIME_SYNC_2x].TimeSyncFlag, CM_FALSE); + MSCP_LOG_MSG("*** time sync too big\n"); + } + + } + else + { + /* 平均偏移量在允许范围内,标记时间同步成功 */ + CM_ATOMIC_STORE(&s_TimeCtrl[TIME_SYNC_2x].TimeSyncFlag, CM_TRUE); + TimeSyncToleranceCount = 0u; + } + + /* 根据系统状态决定是否清空或处理环形缓冲区 */ + if(avg_2x_offset != CM_INT64_MAX) + { + if(ENUM_4x2_OFFLINE == state) + { + aveOffset = avg_2x_offset; + /* 系统处于离线或预主状态时,清空环形缓冲区 */ + CFM_ClearCircularBuf(&s_TimeCtrl[TIME_SYNC_2x].circular_buf); + } + else + { + /* 系统处于正常工作状态时,对平均偏移量进行滤波处理 */ + aveOffset = (calculate_average_offset(avg_2x_offset, &s_TimeCtrl[TIME_SYNC_2x].circular_buf)); + if(CM_ABS(aveOffset) >= SFM_2x2_TM_FIX_VAL_NS) + { + s_TimeCtrl[TIME_SYNC_2x].circular_buf.count = 0; + } + else + { + ; + } + } + } + else + { + aveOffset = 0; + } + MSCP_LOG_MSG("avg offset = %lld\n",aveOffset); + + /* 判断是否需要调大时钟超过一个周期 */ + if (aveOffset >= cyctime_ns) + { + /* 本次只做周期基准时间调整,不调整周期定时器(将偏移量四舍五入到整周期)*/ + rtn_offset = ((CM_INT64)(aveOffset + cyctime_ns / 2) / cyctime_ns) * cyctime_ns; + MSCP_LOG_MSG("Increase the clock by more than one cycle *pOffset = %lld\n",rtn_offset); + } + /* 判断是否需要调小时钟超过一个周期 */ + else if (aveOffset <= -cyctime_ns) + { + /* 本次只做周期基准时间调整,不调整周期定时器(将偏移量四舍五入到整周期)*/ + rtn_offset = ((CM_INT64)(aveOffset - cyctime_ns / 2) / cyctime_ns) * cyctime_ns; + MSCP_LOG_MSG("Set the clock more than one cycle*pOffset = %lld\n",rtn_offset); + } + /* 判断是否需要调大时钟不超过一个周期 */ + else if (aveOffset >= (CM_INT64)SFM_2x2_TM_FIX_VAL_NS) + { + /* 本周期定时器延长10ms */ + rtn_offset = SFM_2x2_TM_FIX_VAL_NS; + MSCP_LOG_MSG("The interval timer is extended by 10ms\n"); + } + /* 判断是否需要调小时钟不超过一个周期 */ + else if (aveOffset <= -(CM_INT64)SFM_2x2_TM_FIX_VAL_NS) + { + /* 本周期定时器缩短10ms */ + rtn_offset = -SFM_2x2_TM_FIX_VAL_NS; + MSCP_LOG_MSG("The interval timer is shortened by 10ms\n"); + } + else + { + /* 不需要调整时钟 */ + rtn_offset = 0; + } + } + else + { + /* 主系不需要调整时钟 */ + rtn_offset = 0; + } + + /* 返回计算得到的时间调整值 */ + return rtn_offset; +} +/** + * @brief 计算2oo2时间同步偏移量 + * + * 根据本地和对端的2oo2时间偏移量计算最终的时间调整值,用于2oo2时间同步。 + * 该函数首先计算平均偏移量,然后根据预设门限判断是否需要进行时间调整。 + * 当平均偏移量超过门限值时,进行相应的时间调整;否则不调整。 + * + * @param[in] local_offset 本地时间偏移量 + * @param[in] peer_offset 对端时间偏移量 + * + * @return CM_INT64 计算得到的时间调整值 + * @retval 0 偏差在允许范围内,不需要调整时钟 + * @retval -CM_MILLION 本地时钟过慢,需要缩短周期时间1ms + * @retval CM_MILLION 本地时钟过快,需要延长周期时间1ms + * + * @note 该函数用于2oo2时间同步机制中的时钟调整计算 + * @see SFM_2oo2_TM_FIX_VAL_NS + * @see CFM_Get_Avg_offset + */ +static CM_INT64 CFM_Get_2oo2_offset(CM_INT64 local_offset, CM_INT64 peer_offset) +{ + CM_INT64 rtn_offset = 0; /* 返回的时间调整值 */ + CM_INT64 ave_offset = 0; /* 平均时间偏移量 */ + + /* 计算本地和对端的平均时间偏移量 */ + ave_offset = CFM_Get_Avg_2oo2offset(local_offset, peer_offset); + + MSCP_LOG_MSG("2oo2 get offset = %lld\n",ave_offset); + + /* 检查本次测得的偏移量是否在合理范围内(±10ms) */ + if (CM_ABS(ave_offset) < (10 * CM_MILLION)) + { + /* 对平均偏移量再次进行滤波处理,去除噪声影响 */ + ave_offset = calculate_average_offset(ave_offset, &s_TimeCtrl[TIME_SYNC_2oo2].circular_buf); + + if(CM_ABS(ave_offset) >= SFM_2oo2_TM_FIX_VAL_NS) + { + s_TimeCtrl[TIME_SYNC_2oo2].circular_buf.count = 0; + } + else + { + + } + + /* 判断本机时钟偏差并设置调整值 */ + if (ave_offset > SFM_2oo2_TM_FIX_VAL_NS) + { + /* 本地时钟过慢,需要缩短本周期时间1ms */ + rtn_offset = -CM_MILLION; + } + /* 判断本机时钟是否过快 */ + else if (ave_offset < -SFM_2oo2_TM_FIX_VAL_NS) + { + /* 本地时钟过快,需要延长本周期时间1ms */ + rtn_offset = CM_MILLION; + } + else + { + /* 偏差在允许范围内(±3ms),不需要调整时钟 */ + rtn_offset = 0; + } + } + else + { + /* 偏移量超出合理范围(±10ms),认为测量异常,不进行调整 */ + rtn_offset = 0; + } + + /* 返回计算得到的时间调整值 */ + return rtn_offset; +} +/** + * @brief 获取时间同步状态标志 + * + * 获取系统时间同步完成状态标志,用于判断时间同步是否已完成且在有效范围内。 + * 该标志由时间同步算法根据计算出的时间偏移量与预设门限值比较后设置。 + * + * @param[in] void 无参数 + * + * @return CM_BOOL 时间同步状态 + * @retval CM_TRUE 时间同步完成且在允许误差范围内 + * @retval CM_FALSE 时间同步未完成或超出允许误差范围 + * + * @note 该函数通过原子操作读取标志位,保证多线程环境下的数据一致性 + */ +CM_UINT8 CFM_GetTimeSyncFlag(void) +{ + ENUM_4x2_STATE_T state = SFM_GetLocal4x2State(); /* 获取当前2x2系统的状态 */ + CM_UINT8 time_flag = CM_FALSE; /* 时间同步状态标志 */ + + if(ENUM_4x2_MASTER == state) + { + /* 主系默认时间同步成功,直接返回CM_TRUE */ + time_flag = CM_TRUE; + } + else + { + /* 非主系从时间控制结构中读取时间同步标志 */ + time_flag = CM_ATOMIC_LOAD(&s_TimeCtrl[TIME_SYNC_2x].TimeSyncFlag); + } + + return time_flag; +} +/** + * @brief 发送时间同步请求消息 + * + * 向2oo2和2x时间同步通道发送时间同步启动请求消息,触发时间同步过程。 + * 通过UDP协议向配置的本地地址和端口发送ENUM_TIME_START消息。 + * + * @param[in] void 无参数 + * + * @return 无 + * + * @note 该函数会同时向2oo2和2x两个时间同步通道发送启动请求 + * @see ENUM_TIME_START + * @see s_TimeCtrl + */ +void CFM_SendLocalARQ(void) +{ + static CM_UINT8 buf[10] = {0u}; /* 发送缓冲区 */ + ENUM_CM_RETURN ret = ENUM_CM_FALSE; /* 函数返回值 */ + ENUM_4x2_STATE_T state = SFM_GetLocal4x2State(); + + /* 设置消息类型为时间同步启动请求 */ + buf[0] = ENUM_TIME_START; + + if(ENUM_4x2_MASTER == state) + { + /* 向2x时间同步通道发送启动请求消息 */ + ret = CM_UDP_Send_Msg(s_TimeCtrl[TIME_SYNC_2x].pSock, buf, 10, inet_addr(s_TimeCtrl[TIME_SYNC_2x].local_addr.IP), s_TimeCtrl[TIME_SYNC_2x].local_addr.Port); + CM_ASSERT(ENUM_CM_TRUE == ret,0,0,0); + } + else + { + ; + } + /* 向2oo2时间同步通道发送启动请求消息 */ + ret = CM_UDP_Send_Msg(s_TimeCtrl[TIME_SYNC_2oo2].pSock, buf, 10, inet_addr(s_TimeCtrl[TIME_SYNC_2oo2].local_addr.IP), s_TimeCtrl[TIME_SYNC_2oo2].local_addr.Port); + CM_ASSERT(ENUM_CM_TRUE == ret,0,0,0); +} + + +/*获取本地输出比较结果,输出校验与应用跟随比较结果,比较一致返回CM_TRUE,失败返回CM_FALSE*/ +CM_UINT8 CFM_GetSyncFailFlag(void) +{ + return SFM_GetLocalSyncFailFlag(); +} + +/*获取失步次数,没有收到输出校验与应用跟随数据的周期计数*/ +CM_UINT32 CFM_GetOutOfSync(void) +{ + return SFM_GetLocalOutOfSync(); +} +/*获取本地同步健康度:全部参数同步成功,离线升备,或升主条件,同步成功返回CM_TRUE,失败返回CM_FALSE*/ +CM_UINT8 CFM_GetSyncHealth(void) +{ + return SFM_GetLocalSyncHealth(); +} diff --git a/TSCP/src/MSCP/CFM/CFM_Sync.h b/TSCP/src/MSCP/CFM/CFM_Sync.h new file mode 100644 index 0000000..f3de870 --- /dev/null +++ b/TSCP/src/MSCP/CFM/CFM_Sync.h @@ -0,0 +1,148 @@ +/** + * @file CFM_Sync.h + * @brief 时间和信息同步功能头文件 + * + * 该头文件定义了系统时间同步和信息同步相关的接口函数、 + * 数据结构和常量定义,为系统内各模块提供统一的时间同步服务。 + * + * 主要包含: + * - 时间同步接口函数声明 + * - 信息同步相关数据结构定义 + * - 同步状态枚举和常量定义 + * - 错误码定义 + * + * @author [硬件平台部平台软件组] + * @date [2025-12-01] + * @version [1.0] + */ +#ifndef CFM_SYNC_H +#define CFM_SYNC_H + +#include "CM_Types.h" +#include "CM_Mutex.h" +#include "CM_Socket.h" +#include "CM_Atomic.h" +#include "PFM_Cfg.h" + +#define CFM_MAX_DEV_NUM 100 /* 最大设备数量 暂定100 个设备 */ +#define CIRCULAR_BUFFER_SIZE (10) /* 环形缓冲区大小 */ +#define CFM_TIME_2X_COUNT (10) +#define CFM_TIME_SYNC_OBJECT (2) //使用校时服务的功能数量,目前为2 + +typedef enum +{ + ENUM_TIME_ERROR = 0, /**< 保留 */ + ENUM_TIME_START, /**< 时钟同步开始 */ + ENUM_TIME_REQ, /**< 时钟同步请求 */ + ENUM_TIME_ACK, /**< 时钟同步应答 */ + ENUM_TIME_RET, /**< 时钟同步结果返回 */ + ENUM_TIME_PEER_RESULT /**< 对端结果 */ +} ENUM_TIME_MSG_T; + +/** + * @brief 环形数组统计结构体 + * + * 用于维护环形数组的状态信息,包括数组本身、元素计数和插入位置 + */ +typedef struct +{ + CM_INT64 *pBuffer; /**< 环形数组缓冲区指针 */ + CM_INT32 size; /**< 环形数组大小 */ + CM_INT32 count; /**< 数组元素计数 */ + CM_INT32 index; /**< 当前插入位置 */ +} STRU_CIRCULAR_BUFFER_T; + +typedef struct +{ + CM_CHAR IP[32]; /* 源IP */ + CM_UINT16 Port; /* 目标端口 */ +}STRU_CFM_TIME_MSG_T; + +typedef struct +{ + STRU_CFM_TIME_MSG_T Local_2oo2_Addr; + STRU_CFM_TIME_MSG_T Peer_2oo2_Addr; + STRU_CFM_TIME_MSG_T Local_4x_Addr; + STRU_CFM_TIME_MSG_T Partner_Addr; + STRU_CFM_TIME_MSG_T Partner_Area_Addr_A; + STRU_CFM_TIME_MSG_T Partner_Area_Addr_B; +}STRU_CFM_TIME_ADDR_T; + +/** 时钟同步控制 */ +typedef struct +{ + CM_SOCKET pSock; /* 本地socket */ + + CM_UINT8 destDev_Num; /* 目标设备数量 */ + STRU_CFM_TIME_ADDR_T time_addr; /* 时间同步地址信息 */ + STRU_CFM_TIME_MSG_T local_addr; /* 本地设备地址信息 */ + STRU_CFM_TIME_MSG_T destDev_addr[CFM_MAX_DEV_NUM]; /* 目标设备地址信息 */ + + STRU_CIRCULAR_BUFFER_T circular_buf; /* 环形数组统计结构体 */ + + CM_UINT8 time_type; /* 时间同步类型 */ + /* + * delay和offset受互斥信号量mutex保护, + * 读写offset时需要先取得互斥信号量 + */ + CM_MUTEX_T mutex; /* 互斥信号量 */ + ENUM_CM_RETURN isOK; /* 校时成功标志 */ + CM_INT64 offset; /* 偏移时间 */ + CM_ATOMIC CM_UINT8 TimeSyncFlag; /* 时间同步标志 */ + CM_INT64 cyc_time; /* 周期时间 */ +}STRU_CFM_TIME_CTRL_T; + +/** + * @brief 获取时间偏移量并计算校时结果 + * + * 根据时间同步类型获取相应的本地和对端时间偏移量,通过2oo2交换机制获取对端数据, + * 并根据系统状态和预设门限计算最终的时间调整值。 + * + * @param[out] p_avg_offset_2x 2x时间同步类型的平均偏移量输出指针 + * @param[out] p_avg_offset_2oo2 2oo2时间同步类型的平均偏移量输出指针 + * + * @note 该函数会根据主从状态和时间偏移量大小决定是否需要调整时钟 + * @see CFM_Get_Time + * @see SFM_2oo2_Exchange_Currency + * @see SFM_GetLocal4x2State + */ +void CFM_Get_Offset(CM_INT64 *p_avg_offset_2x, CM_INT64 *p_avg_offset_2oo2); +/** + * @brief 发送时间同步请求消息 + * + * 向2oo2和2x时间同步通道发送时间同步启动请求消息,触发时间同步过程。 + * 通过UDP协议向配置的本地地址和端口发送ENUM_TIME_START消息。 + * + * @param[in] void 无参数 + * + * @return 无 + * + * @note 该函数会同时向2oo2和2x两个时间同步通道发送启动请求 + * @see ENUM_TIME_START + * @see s_TimeCtrl + */ +void CFM_SendLocalARQ(void); +/** + * @brief 获取时间同步状态标志 + * + * 获取系统时间同步完成状态标志,用于判断时间同步是否已完成且在有效范围内。 + * 该标志由时间同步算法根据计算出的时间偏移量与预设门限值比较后设置。 + * + * @param[in] void 无参数 + * + * @return CM_BOOL 时间同步状态 + * @retval CM_TRUE 时间同步完成且在允许误差范围内 + * @retval CM_FALSE 时间同步未完成或超出允许误差范围 + * + */ +CM_UINT8 CFM_GetTimeSyncFlag(void); +ENUM_CM_RETURN CFM_TimeSync_Init(IN CM_UINT8 DevNum); + +/*获取本地输出比较结果,输出校验与应用跟随比较结果,比较一致返回CM_TRUE,失败返回CM_FALSE*/ +CM_UINT8 CFM_GetSyncFailFlag(void); +/*获取失步次数,没有收到输出校验与应用跟随数据的周期计数*/ +CM_UINT32 CFM_GetOutOfSync(void); +/*获取本地同步健康度:全部参数同步成功,离线升备,或升主条件,同步成功返回CM_TRUE,失败返回CM_FALSE*/ +CM_UINT8 CFM_GetSyncHealth(void); + +#endif // CFM_SYNC_H diff --git a/TSCP/src/MSCP/CM/CM_CRC32.c b/TSCP/src/MSCP/CM/CM_CRC32.c index ab74be7..81d9e71 100644 --- a/TSCP/src/MSCP/CM/CM_CRC32.c +++ b/TSCP/src/MSCP/CM/CM_CRC32.c @@ -1,19 +1,110 @@ -/** -* @file CM_CRC32.c -* @brief 计算32位CRC函数 -* @author GT-BU -* @date 2021.02.01 -* @version V1.1 -* @copyright TCT -* @par 修改日志 -* -*
Date Version Author Description -*
2017.12.20 V1.0 MSCP项目组 创建初始版本 -*
2021.02.01 V1.1 GT-BU TSCP项目集成、更新 -*
-*/ + #include "CM_CRC32.h" +/*CRC32查找表,copy from RSSP(RsspCommon.c) by lmy 20170416*/ +const CM_UINT32 CM_CrcmTab[2][256u] = { +{ + 0x00000000u, 0x1942B361u, 0x328566C2u, 0x2BC7D5A3u, 0x650ACD84u, 0x7C487EE5u, 0x578FAB46u, 0x4ECD1827u, + 0xCA159B08u, 0xD3572869u, 0xF890FDCAu, 0xE1D24EABu, 0xAF1F568Cu, 0xB65DE5EDu, 0x9D9A304Eu, 0x84D8832Fu, + 0x18CE5601u, 0x018CE560u, 0x2A4B30C3u, 0x330983A2u, 0x7DC49B85u, 0x648628E4u, 0x4F41FD47u, 0x56034E26u, + 0xD2DBCD09u, 0xCB997E68u, 0xE05EABCBu, 0xF91C18AAu, 0xB7D1008Du, 0xAE93B3ECu, 0x8554664Fu, 0x9C16D52Eu, + 0x319CAC02u, 0x28DE1F63u, 0x0319CAC0u, 0x1A5B79A1u, 0x54966186u, 0x4DD4D2E7u, 0x66130744u, 0x7F51B425u, + 0xFB89370Au, 0xE2CB846Bu, 0xC90C51C8u, 0xD04EE2A9u, 0x9E83FA8Eu, 0x87C149EFu, 0xAC069C4Cu, 0xB5442F2Du, + 0x2952FA03u, 0x30104962u, 0x1BD79CC1u, 0x02952FA0u, 0x4C583787u, 0x551A84E6u, 0x7EDD5145u, 0x679FE224u, + 0xE347610Bu, 0xFA05D26Au, 0xD1C207C9u, 0xC880B4A8u, 0x864DAC8Fu, 0x9F0F1FEEu, 0xB4C8CA4Du, 0xAD8A792Cu, + 0x63395804u, 0x7A7BEB65u, 0x51BC3EC6u, 0x48FE8DA7u, 0x06339580u, 0x1F7126E1u, 0x34B6F342u, 0x2DF44023u, + 0xA92CC30Cu, 0xB06E706Du, 0x9BA9A5CEu, 0x82EB16AFu, 0xCC260E88u, 0xD564BDE9u, 0xFEA3684Au, 0xE7E1DB2Bu, + 0x7BF70E05u, 0x62B5BD64u, 0x497268C7u, 0x5030DBA6u, 0x1EFDC381u, 0x07BF70E0u, 0x2C78A543u, 0x353A1622u, + 0xB1E2950Du, 0xA8A0266Cu, 0x8367F3CFu, 0x9A2540AEu, 0xD4E85889u, 0xCDAAEBE8u, 0xE66D3E4Bu, 0xFF2F8D2Au, + 0x52A5F406u, 0x4BE74767u, 0x602092C4u, 0x796221A5u, 0x37AF3982u, 0x2EED8AE3u, 0x052A5F40u, 0x1C68EC21u, + 0x98B06F0Eu, 0x81F2DC6Fu, 0xAA3509CCu, 0xB377BAADu, 0xFDBAA28Au, 0xE4F811EBu, 0xCF3FC448u, 0xD67D7729u, + 0x4A6BA207u, 0x53291166u, 0x78EEC4C5u, 0x61AC77A4u, 0x2F616F83u, 0x3623DCE2u, 0x1DE40941u, 0x04A6BA20u, + 0x807E390Fu, 0x993C8A6Eu, 0xB2FB5FCDu, 0xABB9ECACu, 0xE574F48Bu, 0xFC3647EAu, 0xD7F19249u, 0xCEB32128u, + 0xC672B008u, 0xDF300369u, 0xF4F7D6CAu, 0xEDB565ABu, 0xA3787D8Cu, 0xBA3ACEEDu, 0x91FD1B4Eu, 0x88BFA82Fu, + 0x0C672B00u, 0x15259861u, 0x3EE24DC2u, 0x27A0FEA3u, 0x696DE684u, 0x702F55E5u, 0x5BE88046u, 0x42AA3327u, + 0xDEBCE609u, 0xC7FE5568u, 0xEC3980CBu, 0xF57B33AAu, 0xBBB62B8Du, 0xA2F498ECu, 0x89334D4Fu, 0x9071FE2Eu, + 0x14A97D01u, 0x0DEBCE60u, 0x262C1BC3u, 0x3F6EA8A2u, 0x71A3B085u, 0x68E103E4u, 0x4326D647u, 0x5A646526u, + 0xF7EE1C0Au, 0xEEACAF6Bu, 0xC56B7AC8u, 0xDC29C9A9u, 0x92E4D18Eu, 0x8BA662EFu, 0xA061B74Cu, 0xB923042Du, + 0x3DFB8702u, 0x24B93463u, 0x0F7EE1C0u, 0x163C52A1u, 0x58F14A86u, 0x41B3F9E7u, 0x6A742C44u, 0x73369F25u, + 0xEF204A0Bu, 0xF662F96Au, 0xDDA52CC9u, 0xC4E79FA8u, 0x8A2A878Fu, 0x936834EEu, 0xB8AFE14Du, 0xA1ED522Cu, + 0x2535D103u, 0x3C776262u, 0x17B0B7C1u, 0x0EF204A0u, 0x403F1C87u, 0x597DAFE6u, 0x72BA7A45u, 0x6BF8C924u, + 0xA54BE80Cu, 0xBC095B6Du, 0x97CE8ECEu, 0x8E8C3DAFu, 0xC0412588u, 0xD90396E9u, 0xF2C4434Au, 0xEB86F02Bu, + 0x6F5E7304u, 0x761CC065u, 0x5DDB15C6u, 0x4499A6A7u, 0x0A54BE80u, 0x13160DE1u, 0x38D1D842u, 0x21936B23u, + 0xBD85BE0Du, 0xA4C70D6Cu, 0x8F00D8CFu, 0x96426BAEu, 0xD88F7389u, 0xC1CDC0E8u, 0xEA0A154Bu, 0xF348A62Au, + 0x77902505u, 0x6ED29664u, 0x451543C7u, 0x5C57F0A6u, 0x129AE881u, 0x0BD85BE0u, 0x201F8E43u, 0x395D3D22u, + 0x94D7440Eu, 0x8D95F76Fu, 0xA65222CCu, 0xBF1091ADu, 0xF1DD898Au, 0xE89F3AEBu, 0xC358EF48u, 0xDA1A5C29u, + 0x5EC2DF06u, 0x47806C67u, 0x6C47B9C4u, 0x75050AA5u, 0x3BC81282u, 0x228AA1E3u, 0x094D7440u, 0x100FC721u, + 0x8C19120Fu, 0x955BA16Eu, 0xBE9C74CDu, 0xA7DEC7ACu, 0xE913DF8Bu, 0xF0516CEAu, 0xDB96B949u, 0xC2D40A28u, + 0x460C8907u, 0x5F4E3A66u, 0x7489EFC5u, 0x6DCB5CA4u, 0x23064483u, 0x3A44F7E2u, 0x11832241u, 0x08C19120u}, +{ + 0x00000000u, 0x1EF09C7Eu, 0x3DE138FCu, 0x2311A482u, 0x7BC271F8u, 0x6532ED86u, 0x46234904u, 0x58D3D57Au, + 0xF784E3F0u, 0xE9747F8Eu, 0xCA65DB0Cu, 0xD4954772u, 0x8C469208u, 0x92B60E76u, 0xB1A7AAF4u, 0xAF57368Au, + 0xFF048983u, 0xE1F415FDu, 0xC2E5B17Fu, 0xDC152D01u, 0x84C6F87Bu, 0x9A366405u, 0xB927C087u, 0xA7D75CF9u, + 0x08806A73u, 0x1670F60Du, 0x3561528Fu, 0x2B91CEF1u, 0x73421B8Bu, 0x6DB287F5u, 0x4EA32377u, 0x5053BF09u, + 0xEE045D65u, 0xF0F4C11Bu, 0xD3E56599u, 0xCD15F9E7u, 0x95C62C9Du, 0x8B36B0E3u, 0xA8271461u, 0xB6D7881Fu, + 0x1980BE95u, 0x077022EBu, 0x24618669u, 0x3A911A17u, 0x6242CF6Du, 0x7CB25313u, 0x5FA3F791u, 0x41536BEFu, + 0x1100D4E6u, 0x0FF04898u, 0x2CE1EC1Au, 0x32117064u, 0x6AC2A51Eu, 0x74323960u, 0x57239DE2u, 0x49D3019Cu, + 0xE6843716u, 0xF874AB68u, 0xDB650FEAu, 0xC5959394u, 0x9D4646EEu, 0x83B6DA90u, 0xA0A77E12u, 0xBE57E26Cu, + 0xCC05F4A9u, 0xD2F568D7u, 0xF1E4CC55u, 0xEF14502Bu, 0xB7C78551u, 0xA937192Fu, 0x8A26BDADu, 0x94D621D3u, + 0x3B811759u, 0x25718B27u, 0x06602FA5u, 0x1890B3DBu, 0x404366A1u, 0x5EB3FADFu, 0x7DA25E5Du, 0x6352C223u, + 0x33017D2Au, 0x2DF1E154u, 0x0EE045D6u, 0x1010D9A8u, 0x48C30CD2u, 0x563390ACu, 0x7522342Eu, 0x6BD2A850u, + 0xC4859EDAu, 0xDA7502A4u, 0xF964A626u, 0xE7943A58u, 0xBF47EF22u, 0xA1B7735Cu, 0x82A6D7DEu, 0x9C564BA0u, + 0x2201A9CCu, 0x3CF135B2u, 0x1FE09130u, 0x01100D4Eu, 0x59C3D834u, 0x4733444Au, 0x6422E0C8u, 0x7AD27CB6u, + 0xD5854A3Cu, 0xCB75D642u, 0xE86472C0u, 0xF694EEBEu, 0xAE473BC4u, 0xB0B7A7BAu, 0x93A60338u, 0x8D569F46u, + 0xDD05204Fu, 0xC3F5BC31u, 0xE0E418B3u, 0xFE1484CDu, 0xA6C751B7u, 0xB837CDC9u, 0x9B26694Bu, 0x85D6F535u, + 0x2A81C3BFu, 0x34715FC1u, 0x1760FB43u, 0x0990673Du, 0x5143B247u, 0x4FB32E39u, 0x6CA28ABBu, 0x725216C5u, + 0x8806A731u, 0x96F63B4Fu, 0xB5E79FCDu, 0xAB1703B3u, 0xF3C4D6C9u, 0xED344AB7u, 0xCE25EE35u, 0xD0D5724Bu, + 0x7F8244C1u, 0x6172D8BFu, 0x42637C3Du, 0x5C93E043u, 0x04403539u, 0x1AB0A947u, 0x39A10DC5u, 0x275191BBu, + 0x77022EB2u, 0x69F2B2CCu, 0x4AE3164Eu, 0x54138A30u, 0x0CC05F4Au, 0x1230C334u, 0x312167B6u, 0x2FD1FBC8u, + 0x8086CD42u, 0x9E76513Cu, 0xBD67F5BEu, 0xA39769C0u, 0xFB44BCBAu, 0xE5B420C4u, 0xC6A58446u, 0xD8551838u, + 0x6602FA54u, 0x78F2662Au, 0x5BE3C2A8u, 0x45135ED6u, 0x1DC08BACu, 0x033017D2u, 0x2021B350u, 0x3ED12F2Eu, + 0x918619A4u, 0x8F7685DAu, 0xAC672158u, 0xB297BD26u, 0xEA44685Cu, 0xF4B4F422u, 0xD7A550A0u, 0xC955CCDEu, + 0x990673D7u, 0x87F6EFA9u, 0xA4E74B2Bu, 0xBA17D755u, 0xE2C4022Fu, 0xFC349E51u, 0xDF253AD3u, 0xC1D5A6ADu, + 0x6E829027u, 0x70720C59u, 0x5363A8DBu, 0x4D9334A5u, 0x1540E1DFu, 0x0BB07DA1u, 0x28A1D923u, 0x3651455Du, + 0x44035398u, 0x5AF3CFE6u, 0x79E26B64u, 0x6712F71Au, 0x3FC12260u, 0x2131BE1Eu, 0x02201A9Cu, 0x1CD086E2u, + 0xB387B068u, 0xAD772C16u, 0x8E668894u, 0x909614EAu, 0xC845C190u, 0xD6B55DEEu, 0xF5A4F96Cu, 0xEB546512u, + 0xBB07DA1Bu, 0xA5F74665u, 0x86E6E2E7u, 0x98167E99u, 0xC0C5ABE3u, 0xDE35379Du, 0xFD24931Fu, 0xE3D40F61u, + 0x4C8339EBu, 0x5273A595u, 0x71620117u, 0x6F929D69u, 0x37414813u, 0x29B1D46Du, 0x0AA070EFu, 0x1450EC91u, + 0xAA070EFDu, 0xB4F79283u, 0x97E63601u, 0x8916AA7Fu, 0xD1C57F05u, 0xCF35E37Bu, 0xEC2447F9u, 0xF2D4DB87u, + 0x5D83ED0Du, 0x43737173u, 0x6062D5F1u, 0x7E92498Fu, 0x26419CF5u, 0x38B1008Bu, 0x1BA0A409u, 0x05503877u, + 0x5503877Eu, 0x4BF31B00u, 0x68E2BF82u, 0x761223FCu, 0x2EC1F686u, 0x30316AF8u, 0x1320CE7Au, 0x0DD05204u, + 0xA287648Eu, 0xBC77F8F0u, 0x9F665C72u, 0x8196C00Cu, 0xD9451576u, 0xC7B58908u, 0xE4A42D8Au, 0xFA54B1F4u } +}; +/*反转表,copy from RSSP(RsspCommon.c) by lmy 20170416*/ +const CM_UINT8 CM_Reflected_Byte[256u] = { + 0x00u, 0x80u, 0x40u, 0xC0u, 0x20u, 0xA0u, 0x60u, 0xE0u, + 0x10u, 0x90u, 0x50u, 0xD0u, 0x30u, 0xB0u, 0x70u, 0xF0u, + 0x08u, 0x88u, 0x48u, 0xC8u, 0x28u, 0xA8u, 0x68u, 0xE8u, + 0x18u, 0x98u, 0x58u, 0xD8u, 0x38u, 0xB8u, 0x78u, 0xF8u, + 0x04u, 0x84u, 0x44u, 0xC4u, 0x24u, 0xA4u, 0x64u, 0xE4u, + 0x14u, 0x94u, 0x54u, 0xD4u, 0x34u, 0xB4u, 0x74u, 0xF4u, + 0x0Cu, 0x8Cu, 0x4Cu, 0xCCu, 0x2Cu, 0xACu, 0x6Cu, 0xECu, + 0x1Cu, 0x9Cu, 0x5Cu, 0xDCu, 0x3Cu, 0xBCu, 0x7Cu, 0xFCu, + 0x02u, 0x82u, 0x42u, 0xC2u, 0x22u, 0xA2u, 0x62u, 0xE2u, + 0x12u, 0x92u, 0x52u, 0xD2u, 0x32u, 0xB2u, 0x72u, 0xF2u, + 0x0Au, 0x8Au, 0x4Au, 0xCAu, 0x2Au, 0xAAu, 0x6Au, 0xEAu, + 0x1Au, 0x9Au, 0x5Au, 0xDAu, 0x3Au, 0xBAu, 0x7Au, 0xFAu, + 0x06u, 0x86u, 0x46u, 0xC6u, 0x26u, 0xA6u, 0x66u, 0xE6u, + 0x16u, 0x96u, 0x56u, 0xD6u, 0x36u, 0xB6u, 0x76u, 0xF6u, + 0x0Eu, 0x8Eu, 0x4Eu, 0xCEu, 0x2Eu, 0xAEu, 0x6Eu, 0xEEu, + 0x1Eu, 0x9Eu, 0x5Eu, 0xDEu, 0x3Eu, 0xBEu, 0x7Eu, 0xFEu, + 0x01u, 0x81u, 0x41u, 0xC1u, 0x21u, 0xA1u, 0x61u, 0xE1u, + 0x11u, 0x91u, 0x51u, 0xD1u, 0x31u, 0xB1u, 0x71u, 0xF1u, + 0x09u, 0x89u, 0x49u, 0xC9u, 0x29u, 0xA9u, 0x69u, 0xE9u, + 0x19u, 0x99u, 0x59u, 0xD9u, 0x39u, 0xB9u, 0x79u, 0xF9u, + 0x05u, 0x85u, 0x45u, 0xC5u, 0x25u, 0xA5u, 0x65u, 0xE5u, + 0x15u, 0x95u, 0x55u, 0xD5u, 0x35u, 0xB5u, 0x75u, 0xF5u, + 0x0Du, 0x8Du, 0x4Du, 0xCDu, 0x2Du, 0xADu, 0x6Du, 0xEDu, + 0x1Du, 0x9Du, 0x5Du, 0xDDu, 0x3Du, 0xBDu, 0x7Du, 0xFDu, + 0x03u, 0x83u, 0x43u, 0xC3u, 0x23u, 0xA3u, 0x63u, 0xE3u, + 0x13u, 0x93u, 0x53u, 0xD3u, 0x33u, 0xB3u, 0x73u, 0xF3u, + 0x0Bu, 0x8Bu, 0x4Bu, 0xCBu, 0x2Bu, 0xABu, 0x6Bu, 0xEBu, + 0x1Bu, 0x9Bu, 0x5Bu, 0xDBu, 0x3Bu, 0xBBu, 0x7Bu, 0xFBu, + 0x07u, 0x87u, 0x47u, 0xC7u, 0x27u, 0xA7u, 0x67u, 0xE7u, + 0x17u, 0x97u, 0x57u, 0xD7u, 0x37u, 0xB7u, 0x77u, 0xF7u, + 0x0Fu, 0x8Fu, 0x4Fu, 0xCFu, 0x2Fu, 0xAFu, 0x6Fu, 0xEFu, + 0x1Fu, 0x9Fu, 0x5Fu, 0xDFu, 0x3Fu, 0xBFu, 0x7Fu, 0xFFu +}; /** * @brief CRC32函数 * @param pData 数据指针 @@ -86,3 +177,92 @@ CM_UINT32 CM_Crc32(IN const CM_UINT8 pData[],IN CM_UINT32 dataLen) /*- 返回CRC结果 */ return crc; } +/************************************************************* +* 功能描述: Crc32计算函数,使用CRC32查找表1 +* 参数说明: +* pData, 数据指针 +* DataLen, 数据长度(字节) +* 返回值: 返回值crc32Result为CRC值 +* 说明: 为保障平台小型化系统处理的安全性增加该CRC算法 +* add by lmy 20180411 +**************************************************************/ +CM_UINT32 CM_Crc32_1(const CM_UINT8 *pData, CM_UINT32 DataLen) +{ + CM_UINT32 crc32Result = 0u; + + /*入口参数检查*/ + if ((NULL != pData) && (0u < DataLen)) + { + crc32Result = CM_Crc32_common(pData, DataLen, CM_CrcmTab[0u]);/*使用CRC32查找表计算CRC值*/ + } + else + { + /*入口参数不合法*/ + crc32Result = 0u; + } + + return crc32Result; +} + +/************************************************************* +* 功能描述: Crc32函数,使用CRC32查找表2 +* 参数说明: +* pData, 数据指针 +* DataLen, 数据长度(字节) +* 返回值: 返回值crc32Result为CRC值 +* 说明: 为保障平台小型化系统处理的安全性增加该CRC算法 +* add by lmy 20180411 +**************************************************************/ +CM_UINT32 CM_Crc32_2(const CM_UINT8 *pData, CM_UINT32 DataLen) +{ + CM_UINT32 crc32Result = 0u; + + /*入口参数检查*/ + if ((NULL != pData) && (0u < DataLen)) + { + crc32Result = CM_Crc32_common(pData, DataLen, CM_CrcmTab[1u]);/*使用CRC32查找表计算CRC值*/ + } + else + { + /*入口参数不合法*/ + crc32Result = 0u; + } + + return crc32Result; +} + +/************************************************************* +* 功能描述: Crc32计算函数 +* 参数说明: +* pData, 数据指针 +* DataLen, 数据长度(字节) +* CRC32Table, CRC32查找表 +* 返回值: 返回值crc32Result为CRC值 +* 说明: 为保障平台小型化系统处理的安全性增加该CRC算法, +* 该函数与RSSP-I协议中的(RsspCommon.c)CRC_Compute_Crc函数功能相同, +* 但是参数不一样,需要注意。 +* add by lmy 20180411 +**************************************************************/ +CM_UINT32 CM_Crc32_common(const CM_UINT8 *pData, CM_UINT32 DataLen, const CM_UINT32 *CRC32Table) +{ + CM_UINT32 index = 0u; + CM_UINT32 crc32Result = 0u; + + /*入口参数检查*/ + if ((NULL != pData) && (0u < DataLen) && (NULL != CRC32Table)) + { + /*依据相应的查找表计算CRC*/ + for(index = 0u; index < DataLen; index++) + { + crc32Result = (crc32Result >> 8u) ^ CRC32Table[(crc32Result ^ CM_Reflected_Byte[*pData]) & CM_UINT8_MAX]; + pData++; + } + } + else + { + /*入口参数不合法*/ + crc32Result = 0u; + } + + return crc32Result; +} diff --git a/TSCP/src/MSCP/CM/CM_CRC32.h b/TSCP/src/MSCP/CM/CM_CRC32.h index 9d673c8..1916ce8 100644 --- a/TSCP/src/MSCP/CM/CM_CRC32.h +++ b/TSCP/src/MSCP/CM/CM_CRC32.h @@ -1,17 +1,4 @@ -/** -* @file CM_CRC32.h -* @brief 计算32位CRC函数 -* @author GT-BU -* @date 2021.02.01 -* @version V1.1 -* @copyright TCT -* @par 修改日志 -* -*
Date Version Author Description -*
2017.12.20 V1.0 MSCP项目组 创建初始版本 -*
2021.02.01 V1.1 GT-BU TSCP项目集成、更新 -*
-*/ + #ifndef CM_CRC32_H_ #define CM_CRC32_H_ @@ -26,7 +13,18 @@ extern "C" /* 计算CRC */ CM_UINT32 CM_Crc32(IN const CM_UINT8 pData[],IN CM_UINT32 dataLen); - + /************************************************************* + * 功能描述: Crc32计算函数,使用CRC32查找表1 + **************************************************************/ + CM_UINT32 CM_Crc32_1(const CM_UINT8 *pData, CM_UINT32 DataLen); + /************************************************************* + * 功能描述: Crc32函数,使用CRC32查找表2 + **************************************************************/ + CM_UINT32 CM_Crc32_2(const CM_UINT8 *pData, CM_UINT32 DataLen); + /************************************************************* + * 功能描述: Crc32计算函数 + **************************************************************/ + CM_UINT32 CM_Crc32_common(const CM_UINT8 *pData, CM_UINT32 DataLen, const CM_UINT32 *CRC32Table); #ifdef __cplusplus } #endif diff --git a/TSCP/src/MSCP/CM/CM_Com.c b/TSCP/src/MSCP/CM/CM_Com.c index f85e908..6a50139 100644 --- a/TSCP/src/MSCP/CM/CM_Com.c +++ b/TSCP/src/MSCP/CM/CM_Com.c @@ -360,7 +360,7 @@ static ENUM_CM_RETURN CM_Com_Clear(STRUCT_QNX_FD* pCtrl) * - 正整数 接收报文长度 * - 0 接收失败 */ -ENUM_CM_RETURN CM_Com_LocalDataSend(OUT CM_UINT8* pBuf, IN CM_UINT16 BufSize) +ENUM_CM_RETURN CM_Com_LocalDataSend(OUT CM_UINT8* pBuf, IN CM_UINT32 BufSize) { ENUM_CM_RETURN rtnval = ENUM_CM_FALSE; CM_INT32 cmpval = 0xff; diff --git a/TSCP/src/MSCP/CM/CM_Com.h b/TSCP/src/MSCP/CM/CM_Com.h index 4b9bb26..7e4184f 100644 --- a/TSCP/src/MSCP/CM/CM_Com.h +++ b/TSCP/src/MSCP/CM/CM_Com.h @@ -53,7 +53,7 @@ void CM_Com_RcvOtherThreadInit(void); * - ������ ���ձ��ij��� * - 0 ����ʧ�� */ -ENUM_CM_RETURN CM_Com_LocalDataSend(OUT CM_UINT8* pBuf, IN CM_UINT16 BufSize); +ENUM_CM_RETURN CM_Com_LocalDataSend(OUT CM_UINT8* pBuf, IN CM_UINT32 BufSize); /** * @brief ���ڱ������ݽ��� diff --git a/TSCP/src/MSCP/CM/CM_UDP.c b/TSCP/src/MSCP/CM/CM_UDP.c index 6c1ef2a..83c4359 100644 --- a/TSCP/src/MSCP/CM/CM_UDP.c +++ b/TSCP/src/MSCP/CM/CM_UDP.c @@ -170,7 +170,7 @@ ENUM_CM_RETURN CM_UDP_Is_Write_Ready(IN CM_SOCKET sock) * - ENUM_CM_TRUE 成功 * - ENUM_CM_FALSE 失败 */ -ENUM_CM_RETURN CM_UDP_Socket_Create(OUT CM_SOCKET* pSock, IN CM_BOOL isNonBlockMode, IN CM_UINT32 addrIP, IN CM_UINT16 portNumber, IN CM_UINT32 maddr, IN CM_UINT8 broadFlag) +ENUM_CM_RETURN CM_UDP_Socket_Create(OUT CM_SOCKET* pSock, IN CM_BOOL isNonBlockMode, IN CM_UINT32 addrIP, IN CM_UINT16 portNumber, IN CM_UINT32 maddr, IN ENUM_ETHERENT_TYPE broadType) { /*- 变量初始化 */ CM_SOCKADDR_T addrHost; /* 主机地址 */ @@ -198,54 +198,51 @@ ENUM_CM_RETURN CM_UDP_Socket_Create(OUT CM_SOCKET* pSock, IN CM_BOOL isNonBlockM retError = CM_Memset((void*) &addrHost, (CM_UINT8)0U, (size_t)(sizeof(CM_SOCKADDR_T)), (size_t)(sizeof(CM_SOCKADDR_T))); addrHost.sin_family = (CM_INT16)AF_INET; addrHost.sin_port = htons(portNumber); -#ifdef WIN32 - addrHost.sin_addr.s_addr = addrIP; - if(1 == broadFlag) + /*组播发送*/ + switch(broadType) { - /*广播*/ - setsockopt(*pSock, SOL_SOCKET, SO_BROADCAST, (void*)(&bCast), (unsigned int)sizeof(bCast)); - } - else - { - /*单播-组播*/ - } -#else - if(1u == broadFlag) - { - /*广播*/ - addrHost.sin_addr.s_addr = INADDR_ANY; - (void)setsockopt(*pSock, SOL_SOCKET, SO_BROADCAST, (void*)(&bCast), (unsigned int)sizeof(bCast)); - } - else - { - if (0u != maddr) - { - /*组播*/ - addrHost.sin_addr.s_addr = INADDR_ANY; - /*设置端口复用*/ - (void)setsockopt(*pSock,SOL_SOCKET,SO_REUSEPORT ,(void*)(&bCast), (unsigned int)sizeof(bCast)); - /*- 配置组播地址 */ - multiCast.imr_interface.s_addr = addrIP; - multiCast.imr_multiaddr.s_addr = maddr; - ret = setsockopt(*pSock, IPPROTO_IP, IP_ADD_MEMBERSHIP, (void*)(&multiCast), (unsigned int)sizeof(multiCast)); - } - else - { + case ENUM_UNICAST: /*单播*/ addrHost.sin_addr.s_addr = addrIP; - } - } -#endif + break; + case ENUM_MULTICAST_SEND: + /*组播发送*/ + addrHost.sin_addr.s_addr = addrIP; + (void)setsockopt(*pSock, IPPROTO_IP, IP_MULTICAST_IF, &addrHost.sin_addr, sizeof(addrHost.sin_addr)); + break; + case ENUM_MULTICAST_RCV: + /*组播接收*/ + if (0u != maddr) + { + /*组播*/ + addrHost.sin_addr.s_addr = INADDR_ANY; + /*设置端口复用*/ + (void)setsockopt(*pSock,SOL_SOCKET,SO_REUSEPORT ,(void*)(&bCast), (unsigned int)sizeof(bCast)); + /*- 配置组播地址 */ + multiCast.imr_interface.s_addr = addrIP; + multiCast.imr_multiaddr.s_addr = maddr; + (void)setsockopt(*pSock, IPPROTO_IP, IP_ADD_MEMBERSHIP, (void*)(&multiCast), (unsigned int)sizeof(multiCast)); + } + else + { + printf("maddr is null!!\n"); + } + break; + case ENUM_BROADCAST: + /*广播*/ + addrHost.sin_addr.s_addr = INADDR_ANY; + (void)setsockopt(*pSock, SOL_SOCKET, SO_BROADCAST, (void*)(&bCast), (unsigned int)sizeof(bCast)); + break; + default: + /*参数错误宕机*/ + break; + } ret = (CM_INT32)bind(*pSock, (CM_SOCKADDR*) &addrHost, (unsigned int)sizeof(CM_SOCKADDR)); /*- 绑定是否成功 */ if ((ret != CM_SOCKET_ERROR) && (ENUM_CM_TRUE == retError)) { /*- 设置socket的阻塞模式 */ -#ifdef WIN32 - ret = ioctlsocket(*pSock, (long)FIONBIO, (unsigned long *)&isNonBlockMode); -#else/*Linux Vxworks常用PIOX标准*/ ret = ioctl(*pSock, FIONBIO, &isNonBlockMode); -#endif /*- 设置socket的阻塞模式是否失败 */ if (CM_SOCKET_ERROR == ret) { @@ -270,6 +267,7 @@ ENUM_CM_RETURN CM_UDP_Socket_Create(OUT CM_SOCKET* pSock, IN CM_BOOL isNonBlockM else { /*- 无处理 */ + printf("socket create fial type = %d\n",broadType); } } /*- 返回创建结果 */ diff --git a/TSCP/src/MSCP/CM/CM_UDP.h b/TSCP/src/MSCP/CM/CM_UDP.h index 3eae6ed..b368123 100644 --- a/TSCP/src/MSCP/CM/CM_UDP.h +++ b/TSCP/src/MSCP/CM/CM_UDP.h @@ -28,7 +28,16 @@ extern "C" /** @brief UDP传输时分包的大小 */ #define CM_UDP_LAN_MSG_SIZE_MAX (1472) /**< 局域网下每条UDP消息大小 */ #define CM_UDP_WAN_MSG_SIZE_MAX (548) /**< 广域网下每条UDP消息大小 */ - + /*定义枚举型函数返回值*/ + typedef enum + { + ENUM_DISENABLE = 0u, /**< 禁用 */ + ENUM_UNICAST = 1u, /**< 单播 */ + ENUM_BROADCAST = 2u, /**< 广播 */ + ENUM_MULTICAST_SEND = 3u, /**< 组播发送 */ + ENUM_MULTICAST_RCV = 4u, /**< 组播接收 */ + ENUM_COM_TCP = 5u /**< TCP协议 */ + }ENUM_ETHERENT_TYPE; /** * @brief CM_UDP_Init * @@ -38,17 +47,17 @@ extern "C" ENUM_CM_RETURN CM_UDP_Init(void); /** - * @brief CM_UDP_Create_Socket - * - * Detailed description. - * @param[out] pSocket - * @param[in] isNonBlockMode - * @param[in] pAddrIP - * @param[in] portNumber - * @param[in] maddr - * @return ENUM_CM_RETURN + * @brief 创建UDP socket + * @param pSock socket指针 + * @param isNonBlockMode 是否是非阻塞模式 CM_TRUE:非阻塞,CM_FALSE:阻塞 + * @param addrIP IP地址 + * @param portNumber 端口号 + * @param maddr 所属组播地址,0为不加入组播 + * @return 创建结果 + * - ENUM_CM_TRUE 成功 + * - ENUM_CM_FALSE 失败 */ - ENUM_CM_RETURN CM_UDP_Socket_Create(OUT CM_SOCKET* pSock, IN CM_BOOL isNonBlockMode, IN CM_UINT32 addrIP, IN CM_UINT16 portNumber, IN CM_UINT32 maddr, IN CM_UINT8 broadFlag); + ENUM_CM_RETURN CM_UDP_Socket_Create(OUT CM_SOCKET* pSock, IN CM_BOOL isNonBlockMode, IN CM_UINT32 addrIP, IN CM_UINT16 portNumber, IN CM_UINT32 maddr, IN ENUM_ETHERENT_TYPE broadType); /** * @brief CM_UDP_Send_Msg diff --git a/TSCP/src/MSCP/DFM/DFM_Time.c b/TSCP/src/MSCP/DFM/DFM_Time.c index f64c2e3..7c3d16d 100644 --- a/TSCP/src/MSCP/DFM/DFM_Time.c +++ b/TSCP/src/MSCP/DFM/DFM_Time.c @@ -121,3 +121,5 @@ CM_UINT32 DFM_GetBirthCount(void) /*- 返回上电周期号 */ return g_MSCP_BirthCount; } + + diff --git a/TSCP/src/MSCP/MSCP_APP_API.c b/TSCP/src/MSCP/MSCP_APP_API.c index 0316222..04b09fe 100644 --- a/TSCP/src/MSCP/MSCP_APP_API.c +++ b/TSCP/src/MSCP/MSCP_APP_API.c @@ -285,10 +285,10 @@ CM_UINT8 MSCP_InnetRaw_AppSend(IN CM_INT32 ch, IN CM_UINT16 dstName, IN const CM /* * @brief 获取上一周期的本系热备状态 * @return 本系热备状态 -* - ENUM_2x2_OFFLINE 离线 -* - ENUM_2x2_PRE_MASTER 预升主 -* - ENUM_2x2_MASTER 主系 -* - ENUM_2x2_SLAVE 备系 +* - ENUM_4x2_OFFLINE 离线 +* - ENUM_4x2_PRE_MASTER 预升主 +* - ENUM_4x2_MASTER 主系 +* - ENUM_4x2_SLAVE 备系 * @note * 宕机状态下应用逻辑不会被执行, * 所以应用本函数不可能返回“宕机”。 @@ -297,7 +297,7 @@ CM_UINT8 MSCP_InnetRaw_AppSend(IN CM_INT32 ch, IN CM_UINT16 dstName, IN const CM * 在“离线”和“备系”状态下且本周期收到有效跟随数据时, * 将在周期应用逻辑执行之前进行跟随数据覆盖。 */ -ENUM_2x2_STATE_T MSCP_GetLastLocal2x2State(void) +ENUM_4x2_STATE_T MSCP_GetLastLocal2x2State(void) { return SFM_2x2_GetLastLocal2x2State(); } @@ -305,19 +305,45 @@ ENUM_2x2_STATE_T MSCP_GetLastLocal2x2State(void) /** * @brief 获取对系上一周期的热备状态 * @return 对系热备状态 -* - ENUM_2x2_SHUTDOWN 宕机 -* - ENUM_2x2_OFFLINE 离线 -* - ENUM_2x2_PRE_MASTER 预升主 -* - ENUM_2x2_MASTER 主系 -* - ENUM_2x2_SLAVE 备系 +* - ENUM_4x2_SHUTDOWN 宕机 +* - ENUM_4x2_OFFLINE 离线 +* - ENUM_4x2_PRE_MASTER 预升主 +* - ENUM_4x2_MASTER 主系 +* - ENUM_4x2_SLAVE 备系 * @note * 与对系通信中断时默认对系状态为“宕机” */ -ENUM_2x2_STATE_T MSCP_GetLastPartner2x2State(void) +ENUM_4x2_STATE_T MSCP_GetLastPartner2x2State(void) { return SFM_2x2_GetLastPartner2x2State(); } +/* +* @brief 获取上一周期的区域A系热备状态 +* @return 本系热备状态 +* - ENUM_4x2_SHUTDOWN 宕机 +* - ENUM_4x2_OFFLINE 离线 +* - ENUM_4x2_MASTER 主系 +* - ENUM_4x2_SLAVE 备系 +*/ +ENUM_4x2_STATE_T MSCP_GetLastArea_A_2x2State(void) +{ + return SFM_2x2_GetLastArea_A_2x2State(); +} +/** +* @brief 获取上一周期的区域B系热备状态 +* @return 对系热备状态 +* - ENUM_4x2_SHUTDOWN 宕机 +* - ENUM_4x2_OFFLINE 离线 +* - ENUM_4x2_MASTER 主系 +* - ENUM_4x2_SLAVE 备系 +* @note +* 与对系通信中断时默认对系状态为“宕机” +*/ +ENUM_4x2_STATE_T MSCP_GetLastArea_B_2x2State(void) +{ + return SFM_2x2_GetLastArea_B_2x2State(); +} /** * @brief 设置跟随数据 * @param[in] Data[] 跟随数据数组 diff --git a/TSCP/src/MSCP/MSCP_APP_API.h b/TSCP/src/MSCP/MSCP_APP_API.h index a7a25eb..6416b35 100644 --- a/TSCP/src/MSCP/MSCP_APP_API.h +++ b/TSCP/src/MSCP/MSCP_APP_API.h @@ -160,10 +160,9 @@ extern "C" /* * @brief 获取上一周期的本系热备状态 * @return 本系热备状态 - * - ENUM_2x2_OFFLINE 离线 - * - ENUM_2x2_PRE_MASTER 预升主 - * - ENUM_2x2_MASTER 主系 - * - ENUM_2x2_SLAVE 备系 + * - ENUM_4x2_OFFLINE 离线 + * - ENUM_4x2_MASTER 主系 + * - ENUM_4x2_SLAVE 备系 * @note * 宕机状态下应用逻辑不会被执行, * 所以应用本函数不可能返回“宕机”。 @@ -172,21 +171,41 @@ extern "C" * 在“离线”和“备系”状态下且本周期收到有效跟随数据时, * 将在周期应用逻辑执行之前进行跟随数据覆盖。 */ - ENUM_2x2_STATE_T MSCP_GetLastLocal2x2State(void); + ENUM_4x2_STATE_T MSCP_GetLastLocal2x2State(void); /** * @brief 获取对系上一周期的热备状态 * @return 对系热备状态 - * - ENUM_2x2_SHUTDOWN 宕机 - * - ENUM_2x2_OFFLINE 离线 - * - ENUM_2x2_PRE_MASTER 预升主 - * - ENUM_2x2_MASTER 主系 - * - ENUM_2x2_SLAVE 备系 + * - ENUM_4x2_SHUTDOWN 宕机 + * - ENUM_4x2_OFFLINE 离线 + * - ENUM_4x2_MASTER 主系 + * - ENUM_4x2_SLAVE 备系 * @note * 与对系通信中断时默认对系状态为“宕机” */ - ENUM_2x2_STATE_T MSCP_GetLastPartner2x2State(void); + ENUM_4x2_STATE_T MSCP_GetLastPartner2x2State(void); + /* + * @brief 获取上一周期的区域A系热备状态 + * @return 本系热备状态 + * - ENUM_4x2_SHUTDOWN 宕机 + * - ENUM_4x2_OFFLINE 离线 + * - ENUM_4x2_MASTER 主系 + * - ENUM_4x2_SLAVE 备系 + */ + ENUM_4x2_STATE_T MSCP_GetLastArea_A_2x2State(void); + + /** + * @brief 获取上一周期的区域B系热备状态 + * @return 对系热备状态 + * - ENUM_4x2_SHUTDOWN 宕机 + * - ENUM_4x2_OFFLINE 离线 + * - ENUM_4x2_MASTER 主系 + * - ENUM_4x2_SLAVE 备系 + * @note + * 与对系通信中断时默认对系状态为“宕机” + */ + ENUM_4x2_STATE_T MSCP_GetLastArea_B_2x2State(void); /** * @brief 设置跟随数据 * @param[in] Data[] 跟随数据数组 diff --git a/TSCP/src/MSCP/MSCP_APP_Interface.h b/TSCP/src/MSCP/MSCP_APP_Interface.h index 4e3cfec..14c2b0f 100644 --- a/TSCP/src/MSCP/MSCP_APP_Interface.h +++ b/TSCP/src/MSCP/MSCP_APP_Interface.h @@ -11,6 +11,8 @@ extern "C" * @{ */ #define MSCP_MAIN_A (1u) /**< 主机板A系 */ #define MSCP_MAIN_B (2u) /**< 主机板B系 */ +#define MSCP_MAIN_C (3u) /**< 主机板C系 */ +#define MSCP_MAIN_D (4u) /**< 主机板D系 */ #define MSCP_CC_R (3u) /**< 红网通控 */ #define MSCP_CC_B (4u) /**< 蓝网通控 */ /** @} */ @@ -39,13 +41,12 @@ typedef ENUM_CM_RETURN(*pSetAppfunc)(void); /* 应用周期调用函数 */ extern CM_UINT8 gCpuUsageParaFlag; /** 双机热备状态 */ typedef enum { - ENUM_2x2_SHUTDOWN = 0, /**< 宕机 */ - ENUM_2x2_OFFLINE, /**< 离线 */ - ENUM_2x2_PRE_MASTER, /**< 预升主 */ - ENUM_2x2_MASTER, /**< 主系 */ - ENUM_2x2_SLAVE /**< 备系 */ - } ENUM_2x2_STATE_T; - + ENUM_4x2_SHUTDOWN = 0, /**< 宕机 */ + ENUM_4x2_OFFLINE, /**< 离线 */ + ENUM_4x2_PRE_MASTER, /**< 预升主 */ + ENUM_4x2_MASTER, /**< 主系 */ + ENUM_4x2_SLAVE /**< 备系 */ + } ENUM_4x2_STATE_T; /** 应用通信通道 */ typedef enum { ENUM_MSG_ERROR = 0, /**< 保留值,禁止使用 */ @@ -138,7 +139,7 @@ typedef ENUM_CM_RETURN(*pSetAppfunc)(void); /* 应用周期调用函数 */ * - ENUM_CM_TRUE 成功 * - ENUM_CM_FALSE 失败(平台立即宕机) * @note - * 当本系热备状态为:ENUM_2x2_OFFLINE,ENUM_2x2_SLAVE,且收到了邻系正确的跟随数据时 + * 当本系热备状态为:ENUM_4x2_OFFLINE,ENUM_4x2_SLAVE,且收到了邻系正确的跟随数据时 * 本函数将在APP_API_MainFunc()之前执行; * 否则,本函数不执行。 * 应用跟随数据的最大长度不得超过1024*1000字节 diff --git a/TSCP/src/MSCP/MSCP_main.c b/TSCP/src/MSCP/MSCP_main.c index b5f36d0..583b6cc 100644 --- a/TSCP/src/MSCP/MSCP_main.c +++ b/TSCP/src/MSCP/MSCP_main.c @@ -39,6 +39,7 @@ #include "PFM_CPUUsage.h" #include "SFM_Prtcl.h" #include "PFM_RemoteUpdate.h" +#include "CFM_Sync.h" #if QNX #include #include @@ -117,7 +118,6 @@ static void SelfCheckInit(void); static void selfCheckSemWait(void); static void selfCheckSemPost(void); - /** * @brief 主程序入口 * @details 调用初始化入口和周期循环入口 @@ -189,11 +189,14 @@ static void MSCP_Init(void) PFM_LOG_SET_STOPTIMER(TSCP_DARK_TSCPINIT); /*- 应用版本号初始化,必须在应用软件初始化前 */ PFM_CFG_RegisterVerson_Init(); + /*初始化读MainId.ini*/ + PFM_CFG_MAINID_Init(); /*- 应用软件初始化内网安全协议参数-以及配置文件参数 */ APP_API_Data_Init(); PFM_LOG_SET_INIT_STAGE(ENUM_INIT_API_DATA); /*- 平台配置文件管理初始化 */ PFM_CFG_Init(); + save_to_file("A new startup ******************************\r\n"); PFM_LOG_SET_INIT_STAGE(ENUM_INIT_CFG); /*- 网卡初始化 */ CFM_NetworkCard_Init(); @@ -204,15 +207,8 @@ static void MSCP_Init(void) /*- 控制流状态监督初始化 */ PFM_CFC_Init(); PFM_LOG_SET_INIT_STAGE(ENUM_INIT_CFC); - /*- 是否开启2x2功能 */ - if (0x55u == g_PFM_Cfg.M_2x2_Enable) - { -#ifdef QNX - /*- 串口通信初始化*/ - (void)CM_COM_INIT(115200u, 8u); - PFM_LOG_SET_INIT_STAGE(ENUM_INIT_COM); -#endif /*QNX*/ - } + + PFM_LOG_SET_INIT_STAGE(ENUM_INIT_COM); /*- 微周期控制初始化 */ PFM_Init(); PFM_LOG_SET_INIT_STAGE(ENUM_INIT_MICROCYCLE); @@ -224,6 +220,7 @@ static void MSCP_Init(void) PFM_LOG_SET_STOPTIMER(TSCP_DARK_SOFTTNIT); /*- CFM:网络通信初始化 */ CFM_UpdateAnd2oo2_Net_Init(); + PFM_LOG_SET_INIT_STAGE(ENUM_INIT_UPDATE_NET); /*- 2取数据初始化 */ SFM_2oo2_DataInit(); @@ -240,22 +237,14 @@ static void MSCP_Init(void) PFM_LOG_SET_INIT_STAGE(ENUM_INIT_APP); /*- 外网安全协议初始化 */ SFM_PrtclOutInit(); - PFM_LOG_SET_INIT_STAGE(ENUM_INIT_PRTCL_RSSP); /*- 应用调度初始化(必须在应用软件初始化后) */ s_appCtrlInit(); - PFM_LOG_SET_INIT_STAGE(ENUM_INIT_APP_CTRL); - /*- 是否开启2x2功能 */ - if (0x55u == g_PFM_Cfg.M_2x2_Enable) - { -#ifdef QNX + PFM_LOG_SET_INIT_STAGE(ENUM_INIT_2X2USART); + CFM_TimeSync_Init(2);//时间同步初始化 + Area_init();//区域初始化 - /*- 开启临机串口接收线程*/ - CM_Com_RcvOtherThreadInit(); - PFM_LOG_SET_INIT_STAGE(ENUM_INIT_2X2USART); -#endif - } /*- 是否开启2oo2功能 */ if (0x55u == g_PFM_Cfg.M_2oo2_Enable) { @@ -296,13 +285,12 @@ static CM_THREAD_FUNC_T MSCP_CycBase(void) { /*- 变量初始化 */ CM_UINT64 costlog[20]; /* 耗时记录 */ - CM_INT32 delayTime = 0; /* 延迟时间 */ CM_UINT64 leftTime = 0u; /* 剩余时间 */ CM_INT64 offset_2oo2 = 0; /* 2oo2时钟修正量 */ CM_INT64 offset_2x2 = 0; /* 2x2时钟修正量 */ CM_INT32 i = 0; /* 循环变量 */ - ENUM_2x2_STATE_T localState = ENUM_2x2_SHUTDOWN; - ENUM_2x2_STATE_T peerState = ENUM_2x2_SHUTDOWN; + ENUM_4x2_STATE_T localState = ENUM_4x2_SHUTDOWN; + ENUM_4x2_STATE_T peerState = ENUM_4x2_SHUTDOWN; ENUM_CM_RETURN rt = ENUM_CM_FALSE; CM_UINT32 darkInPutTime = 0u; CM_UINT32 darkOutPutTime = 0u; @@ -333,15 +321,18 @@ static CM_THREAD_FUNC_T MSCP_CycBase(void) PFM_CFC_WatchDog(); /*- 清空通信缓冲区 */ CFM_NetFlush(); + Area_Clear_MQ(); /*发送2x状态结束信号量*/ SFM_2x2_SemPost(); + /*< 发送区域通信结束信号量*/ + Area_Stop(); (void)DFM_SetIO_OutPut(0x00u); /*- 循环执行周期逻辑 */ while (1) { /*- 更新周期号*/ g_MSCP_SysCount++; - localState = SFM_2x2_GetLocal2x2State(); + localState = SFM_GetLocal4x2State(); peerState = SFM_2x2_GetPartner2x2State(); MSCP_LOG_MSG("time left:%lld us\n", leftTime); MSCP_LOG_MSG("==========CPU:%d-%d=CYC=%d==M/S:0x%x==Partner:0x%x============\n",g_PFM_Cfg.BOARD_ID,g_PFM_Cfg.CPU_ID,g_MSCP_SysCount,localState,peerState); @@ -409,6 +400,7 @@ static CM_THREAD_FUNC_T MSCP_CycBase(void) SFM_2oo2_Reset_AutoRbootCut(); MSCP_LOG_MSG("timecurr 19 Time = %lld us\n", NOW_USED_TIME); /*- 空闲微周期:等待新周期开始 */ + CFM_Get_Offset(&offset_2x2, &offset_2oo2); if (0 != offset_2oo2) { CM_ATOMIC_ADD(&g_CycBaseTick, offset_2oo2); /* parasoft-suppress GJB8114-R_1_7_2 "QNX宏不符合编码规范" */ @@ -446,7 +438,7 @@ static CM_THREAD_FUNC_T MSCP_CycBase(void) PFM_CFC_WatchDog(); g_MSCP_BirthCount++; MSCP_LOG_MSG("-----MSCP_BirthCount:%d,M/S:0x%x--Partner:0x%x,N/D:%d/%d-err_cut:%d,err_cyc:%d,apperr_cut:%d,apperr_cyc:%d---version:%d.%d.%d.%d\n", - g_MSCP_BirthCount,SFM_2x2_GetLocal2x2State(),SFM_2x2_GetPartner2x2State(), + g_MSCP_BirthCount,SFM_GetLocal4x2State(),SFM_2x2_GetPartner2x2State(), MSCP_Get_AutoRbootCut(),g_PFM_Cfg.M_AutoReboot_Count, s_2oo2_Ctrl.FrameCtrl.err_cut,s_2oo2_Ctrl.FrameCtrl.err_cyc, s_2oo2_Ctrl_App.FrameCtrl.err_cut,s_2oo2_Ctrl_App.FrameCtrl.err_cyc, @@ -454,33 +446,14 @@ static CM_THREAD_FUNC_T MSCP_CycBase(void) DFM_Drv_CycLog(); /*TODO 发送2x状态起始信号量*/ SFM_2x2_Thread_PostStart(); + /* 发送区域线程开始信号*/ + Area_Start(); PFM_CFC_Check(24); - /*- @alias 2oo2周期校时 */ - if (0x55u == g_PFM_Cfg.M_2oo2_Enable) - { - MSCP_LOG_MSG("2oo2start time left:%lld us\n",leftTime); - costlog[0] = SFM_2oo2_Sync(&offset_2oo2); - } - else - { - costlog[0] = CM_GetTick(); - } + /*- 发起校时请求*/ + CFM_SendLocalARQ(); + SFM_4x2_Sync(); PFM_CFC_Check(25); - /*- @alias 2x2周期校时 */ - if (0x55u == g_PFM_Cfg.M_2x2_Enable) - { - MSCP_LOG_MSG("2x2start\n"); - SFM_2x2_Sync(g_CycTick, &offset_2x2); - } - else - { - /* 无处理 */ - } - costlog[1] = CM_GetTick(); /**************↑↑↑↑↑禁止添加代码,包括打印!***************/ - delayTime = (CM_INT32)CM_UNSIGNED_LONG_INT_EXP((costlog[0] - g_CycTick) / 1000u); - MSCP_LOG_MSG("2oo2 sync delay = %d us\n", delayTime); - MSCP_LOG_MSG("2x2 sync delay = %lld us\n", (costlog[1] - costlog[0]) / 1000u); MSCP_LOG_MSG("BASE_CYC_CTRL_SYNC = %lld us\n", NOW_USED_TIME); /*- ***********数据输入阶段*/ /*#############输入微周期#############*/ @@ -670,16 +643,8 @@ static void SelfCheckInit(void) PFM_BoardCheck_TolerateThreetimes(); selfCheckSemPost(); selfCheckSemWait(); - /*- 是否开启2x2功能 */ - if (0x55u == g_PFM_Cfg.M_2x2_Enable) - { - /*- 串口自检*/ - PFM_UartComCheck(); - } - else - { - ; - } + /*- 串口自检*/ + PFM_UartComCheck(); } @@ -852,14 +817,14 @@ static void s_LogicProc(ENUM_CM_RETURN(*pAppfunc)(void)) { /*- 变量初始化 */ ENUM_CM_RETURN ret = ENUM_CM_FALSE; - ENUM_2x2_STATE_T localState = SFM_2x2_GetLocal2x2State(); + ENUM_4x2_STATE_T localState = SFM_GetLocal4x2State(); /*- 是否关闭了2x2功能 */ if (0xAAu == g_PFM_Cfg.M_2x2_Enable) { /*- 本系默认为主 */ - localState = ENUM_2x2_MASTER; + localState = ENUM_4x2_MASTER; } else { @@ -870,26 +835,26 @@ static void s_LogicProc(ENUM_CM_RETURN(*pAppfunc)(void)) /*- 本系热备状态 */ switch (localState) { - case ENUM_2x2_SHUTDOWN: /*-< 宕机 */ - /*- 什么都不做*/ + case ENUM_4x2_SHUTDOWN: /*-< 宕机 */ + ret = ENUM_CM_TRUE; /*- 返回 */ break; - case ENUM_2x2_OFFLINE: /*-< 离线 */ + case ENUM_4x2_OFFLINE: /*-< 离线 */ /*- 执行周期逻辑(但不会被输出) */ ret = (*pAppfunc)(); /*- 返回 */ break; - case ENUM_2x2_PRE_MASTER: /*-< 预升主 */ + case ENUM_4x2_PRE_MASTER: /*-< 预升主 */ /*- 执行周期逻辑(但不会被输出) */ ret = (*pAppfunc)(); /*- 返回 */ break; - case ENUM_2x2_MASTER: /*-< 主系 */ + case ENUM_4x2_MASTER: /*-< 主系 */ /*- 执行周期逻辑(会被输出) */ ret = (*pAppfunc)(); /*- 返回 */ break; - case ENUM_2x2_SLAVE:/*-< 备系 */ + case ENUM_4x2_SLAVE:/*-< 备系 */ /*- 执行应用周期逻辑(但不会被输出) */ ret = (*pAppfunc)(); /*- 返回 */ @@ -916,10 +881,3 @@ static void s_LogicProc(ENUM_CM_RETURN(*pAppfunc)(void)) /*- 无处理 */ } } - - - - - - - diff --git a/TSCP/src/MSCP/OFM/OFM_Base.c b/TSCP/src/MSCP/OFM/OFM_Base.c new file mode 100644 index 0000000..2a52019 --- /dev/null +++ b/TSCP/src/MSCP/OFM/OFM_Base.c @@ -0,0 +1,148 @@ +/* + * vos_Base.c + * + * Created on: 2025年9月8日 + * Author: adan + */ +#include "CM_Types.h" +#include "OFM_Base.h" +#include "MSCP_Define.h" +#include "CM_Socket.h" +#include + +#define CPU_MAX 16u + +/* + *设置cpu亲和力 + * */ +void set_thread_affinity(CM_UINT32 mask_bits) +{ +#if QNX + void* pmask = (void*)mask_bits; + + ThreadCtl(_NTO_TCTL_RUNMASK, pmask) ; +#elif LINUX + cpu_set_t mask; + CPU_ZERO(&mask); + for (int i = 0; mask_bits; i++) + { + /*根据输入参数掩码设置cpu*/ + if (mask_bits & (1UL << i)) + { + CPU_SET(i, &mask); + } + } + sched_setaffinity(0, sizeof(cpu_set_t), &mask); + +#elif SylixOS + cpu_set_t mask; + CPU_ZERO(&mask); + for (int i = 0; i < CPU_MAX; i++) + { + /*根据输入参数掩码设置cpu*/ + if (mask_bits & (1UL << i)) + { + CPU_SET(i, &mask); + } + } + sched_setaffinity(0, sizeof(cpu_set_t), &mask); + +#elif ReWorks + cpuset_t affinity; + CM_THREAD_T tid; + CPUSET_ZERO(affinity); + /*根据输入参数掩码设置cpu*/ + for (int i = 0; i < CPU_MAX; i++) + { + /*根据输入参数掩码设置cpu*/ + if (mask_bits & (1UL << i)) + { + CPUSET_SET(affinity, i); + } + } + + tid = pthread_self(); + pthread_affinity_set(tid, affinity); + +#else + +#endif +} + +#if 0 +/* + * 设置网卡ip + * */ +void set_network_ip(CM_UINT8 *p_ifname, CM_UINT8 *p_ifaddr, CM_UINT8 *p_netmask, CM_UINT8 *p_gateway) +{ + const char *ifname = NULL;//需要设置的网卡名 + const char *ipaddr = NULL;//需要设置的ip地址 + const char *netmask = NULL;//需要设置的子网掩码 + const char *gateway = NULL;//需要设置的网关 + + + CM_SOCKET sockfd = 0; + struct ifreq ifr = {0}; + int ret; + CM_SOCKADDR_T *sin = NULL; + + + if((NULL !=p_ifname)&&(NULL !=p_ifaddr)&&(NULL !=p_netmask)&&(NULL !=p_gateway)) + { + ifname = p_ifname; + ipaddr = p_ifaddr; + netmask = p_netmask; + gateway = p_gateway; + + //创建一个socket + sockfd = socket(AF_INET, SOCK_DGRAM, 0); + if(sockfd < 0) + { + + } + else + { + memset(&ifr, 0, sizeof(struct ifreq)); + + strcpy(ifr.ifr_name, (const char *)ifname); + sin = (struct sockaddr_in *)&ifr.ifr_addr; + sin->sin_family = AF_INET; + + /* IP地址设置 */ + /*将点分十进制 转换为网络字节序*/ + inet_aton(ipaddr, &(sin->sin_addr)); + ret = ioctl(sockfd, SIOCSIFADDR, &ifr); + if(ret < 0) + { + close(sockfd); + /*设置ip失败*/ + + } + else + { + /* 子网掩码设置 */ + inet_aton(netmask, &(sin->sin_addr)); + ret = ioctl(sockfd, SIOCSIFNETMASK, &ifr); + if(ret < 0) + { + /*设置子网掩码失败*/ + close(sockfd); + } + else + { + + /*暂不设置网关*/ + } + } + + } + } + else + { + //CM_ASSERT(0,MAIN_MODE, DARK_FAULT_CODE_FUN_ORDER_3, TSCP_DARK_ASSERT_1); + } +} + +#endif + + diff --git a/TSCP/src/MSCP/OFM/OFM_Base.h b/TSCP/src/MSCP/OFM/OFM_Base.h new file mode 100644 index 0000000..ba64bb2 --- /dev/null +++ b/TSCP/src/MSCP/OFM/OFM_Base.h @@ -0,0 +1,83 @@ + +/* + * vos_Base.h + * + * Created on: 2025年9月8日 + * Author: adan + */ + +#ifndef SRC_VOS_VOS_BASE_H_ +#define SRC_VOS_VOS_BASE_H_ + +#include "CM_Types.h" + +#if QNX +#include +#include +#include /* ThreadCtl BMP绑定CPU*/ +#include +#include +#include +#include +#include +#include + +#endif + +#if LINUX +#include +#define _GNU_SOURCE +#include +#include +#endif + +#if SylixOS +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +#if ReWorks +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + + +typedef fd_set vos_fd_set;/*将描述符集合更名为 vos_fd_set*/ + +/* + * 设置线程亲和性 + * */ +void set_thread_affinity(CM_UINT32 mask_bits); + +/* + * 设置网卡ip + * */ +void set_network_ip(CM_UINT8 *p_ifname, CM_UINT8 *p_ifaddr, CM_UINT8 *p_netmask, CM_UINT8 *p_gateway); + + +/* + * 封装描述符集合 + * */ +#define VOS_FD_ZERO(fd) FD_ZERO(fd) +#define VOS_FD_SET(sock,fd) FD_SET(sock, fd) +/* 将FD_ISSET封装成布尔语义:返回 0 或 1 1在集合中,0不在集合中*/ +#define VOS_FD_ISSET(sock, fd) ((FD_ISSET(sock, fd)) ? 1 : 0) + +#endif /* SRC_VOS_VOS_BASE_H_ */ diff --git a/TSCP/src/MSCP/PFM/PFM_Cfg.c b/TSCP/src/MSCP/PFM/PFM_Cfg.c index 73a7fab..3a93d53 100644 --- a/TSCP/src/MSCP/PFM/PFM_Cfg.c +++ b/TSCP/src/MSCP/PFM/PFM_Cfg.c @@ -40,7 +40,7 @@ CM_CHAR FS_FILE_PATH[100]; /** 平台软件版本号 */ -const CM_UINT8 MSCP_SW_VERION[4] = { 93u, 1u, 1u, 53u }; +const CM_UINT8 MSCP_SW_VERION[4] = { 93u, 14u, 0u, 1u }; /** 驱动软件版本号 */ CM_UINT8 MSCP_DRV_VERION[4] = {0}; /** 与维护一体机接口文档版本号(接口文档发生改变时升级版本号) */ @@ -63,6 +63,38 @@ static STRU_APP_CFG_T g_AppCfgInterface; static void s_str2md5(IN const CM_CHAR* str, OUT CM_UINT8 md5[16]); static void PFM_CFG_Check_BoardID(void); /** +* @brief 确认其他CPUID +*/ +static void PFM_CFG_Another_CPUID(CPUID_TYPE Local_CpuId,CPUID_TYPE *Peer_CpuId,CPUID_TYPE *Partner_CpuId,CPUID_TYPE *Partner_Area_A_CpuId,CPUID_TYPE *Partner_Area_B_CpuId); +/** + * @brief 初始化读取mainid + */ +void PFM_CFG_MAINID_Init(void) +{ + /*- 读取ID信息 */ + g_PFM_Cfg.CPU_ID = (CM_UINT8)CM_GetProfileInt(MAIN_ID_INI,"ID","CPU_ID"); + CM_NM_ASSERT(0u != g_PFM_Cfg.CPU_ID, CFG_MODE, DARK_FAULT_CODE_FUN_ORDER_1, TSCP_DARK_ASSERT_1); + g_PFM_Cfg.BOARD_ID = (CM_UINT8)CM_GetProfileInt(MAIN_ID_INI, "ID", "BOARD_ID"); + CM_NM_ASSERT(0u != g_PFM_Cfg.BOARD_ID, CFG_MODE, DARK_FAULT_CODE_FUN_ORDER_1, TSCP_DARK_ASSERT_2); + + /*检查配置文件ID与硬件ID是否一致*/ + PFM_CFG_Check_BoardID(); + + g_PFM_Cfg.OUTNET_ID = (CM_UINT16)CM_GetProfileHex(MAIN_ID_INI, "ID", "OUTNET_ID"); + CM_NM_ASSERT(0u != g_PFM_Cfg.OUTNET_ID,CFG_MODE, DARK_FAULT_CODE_FUN_ORDER_1, TSCP_DARK_ASSERT_3); + g_PFM_Cfg.INNET_ID = (CM_UINT16)CM_GetProfileHex(MAIN_ID_INI, "ID", "INNET_ID"); + CM_NM_ASSERT(0u != g_PFM_Cfg.INNET_ID,CFG_MODE, DARK_FAULT_CODE_FUN_ORDER_1, TSCP_DARK_ASSERT_4); + + g_PFM_Cfg.INNET_ID_RM = (CM_UINT16)CM_GetProfileHex(MAIN_ID_INI, "ID", "INNET_ID_RM"); + MSCP_LOG_MSG("Remote Update INNET_ID_RM = 0x%.2x",g_PFM_Cfg.INNET_ID_RM); + (void)CFM_DarkLog_Multiple(DARK_LOG_HEX, TSCP_DARK_PFMCFG_INIT1, 5, \ + sizeof(CM_UINT8),g_PFM_Cfg.CPU_ID, + sizeof(CM_UINT8),g_PFM_Cfg.BOARD_ID, + sizeof(CM_UINT16),g_PFM_Cfg.OUTNET_ID, + sizeof(CM_UINT16),g_PFM_Cfg.INNET_ID, + sizeof(CM_UINT16),g_PFM_Cfg.INNET_ID_RM); +} +/** * @brief 平台配置文件初始化 */ void PFM_CFG_Init(void) @@ -70,6 +102,10 @@ void PFM_CFG_Init(void) /*- 变量初始化 */ CM_INT32 cpuID = 0; /* CPU ID*/ CM_INT32 i = 0; /* 循环变量 */ + CPUID_TYPE Peer_CpuId = ENUM_CPUID_ERR;/*2oo2邻机CPUID*/ + CPUID_TYPE Partner_CpuId = ENUM_CPUID_ERR;/*2x2对系CPUID*/ + CPUID_TYPE Partner_Area_A_CpuId = ENUM_CPUID_ERR;/*4x2异地A系CPUID*/ + CPUID_TYPE Partner_Area_B_CpuId = ENUM_CPUID_ERR;/*4x2异地B系CPUID*/ ENUM_CM_RETURN rt = 0; /* 函数返回值 */ CM_UINT64 tickstart = 0; /* 上电时间计时 */ CM_CHAR buf[100]; /* 临时缓冲区 */ @@ -78,28 +114,7 @@ void PFM_CFG_Init(void) MSCP_SW_VERION[0], MSCP_SW_VERION[1], MSCP_SW_VERION[2], MSCP_SW_VERION[3], __DATE__, __TIME__); (void)printf("MSCP start version:%d.%d.%d.%d \n", MSCP_SW_VERION[0], MSCP_SW_VERION[1], MSCP_SW_VERION[2], MSCP_SW_VERION[3]); - /*- 读取ID信息 */ - g_PFM_Cfg.CPU_ID = (CM_UINT8)CM_GetProfileInt(MAIN_ID_INI,"ID","CPU_ID"); - CM_NM_ASSERT(0u != g_PFM_Cfg.CPU_ID, CFG_MODE, DARK_FAULT_CODE_FUN_ORDER_1, TSCP_DARK_ASSERT_1); - g_PFM_Cfg.BOARD_ID = (CM_UINT8)CM_GetProfileInt(MAIN_ID_INI, "ID", "BOARD_ID"); - CM_NM_ASSERT(0u != g_PFM_Cfg.BOARD_ID, CFG_MODE, DARK_FAULT_CODE_FUN_ORDER_1, TSCP_DARK_ASSERT_2); - /*检查配置文件ID与硬件ID是否一致*/ - PFM_CFG_Check_BoardID(); - - g_PFM_Cfg.OUTNET_ID = (CM_UINT16)CM_GetProfileHex(MAIN_ID_INI, "ID", "OUTNET_ID"); - CM_NM_ASSERT(0u != g_PFM_Cfg.OUTNET_ID,CFG_MODE, DARK_FAULT_CODE_FUN_ORDER_1, TSCP_DARK_ASSERT_3); - g_PFM_Cfg.INNET_ID = (CM_UINT16)CM_GetProfileHex(MAIN_ID_INI, "ID", "INNET_ID"); - CM_NM_ASSERT(0u != g_PFM_Cfg.INNET_ID,CFG_MODE, DARK_FAULT_CODE_FUN_ORDER_1, TSCP_DARK_ASSERT_4); - - g_PFM_Cfg.INNET_ID_RM = (CM_UINT16)CM_GetProfileHex(MAIN_ID_INI, "ID", "INNET_ID_RM"); - MSCP_LOG_MSG("Remote Update INNET_ID_RM = 0x%.2x",g_PFM_Cfg.INNET_ID_RM); - (void)CFM_DarkLog_Multiple(DARK_LOG_HEX, TSCP_DARK_PFMCFG_INIT1, 5, \ - sizeof(CM_UINT8),g_PFM_Cfg.CPU_ID, - sizeof(CM_UINT8),g_PFM_Cfg.BOARD_ID, - sizeof(CM_UINT16),g_PFM_Cfg.OUTNET_ID, - sizeof(CM_UINT16),g_PFM_Cfg.INNET_ID, - sizeof(CM_UINT16),g_PFM_Cfg.INNET_ID_RM); (void)strcpy(FS_FILE_PATH,g_AppCfgInterface.FS_NAME); (void)strcpy(g_PFM_Cfg.APP_NAME,g_AppCfgInterface.APP_NAME); MSCP_LOG_MSG("FS_NAME:%s\n",FS_FILE_PATH); @@ -123,6 +138,8 @@ void PFM_CFG_Init(void) g_PFM_Cfg.CC_VER = 0u; g_PFM_Cfg.M_2oo2_Enable = g_AppCfgInterface.M_2oo2_Enable; g_PFM_Cfg.M_2x2_Enable = g_AppCfgInterface.M_2x2_Enable; + g_PFM_Cfg.M_4x2_Enable = g_AppCfgInterface.M_4x2_Enable; + g_PFM_Cfg.M_2x2_Com_Cfg = g_AppCfgInterface.M_2x2_Com_Cfg; g_PFM_Cfg.M_InnetSafe_Enable = g_AppCfgInterface.M_InnetSafe_Enable; g_PFM_Cfg.M_InnetRaw_Enable = g_AppCfgInterface.M_InnetRaw_Enable; g_PFM_Cfg.M_OutnetSafe_Enable = g_AppCfgInterface.M_OutnetSafe_Enable; @@ -133,11 +150,15 @@ void PFM_CFG_Init(void) g_PFM_Cfg.reboot_replycount = g_AppCfgInterface.reboot_replycount; g_PFM_Cfg.M_AutoReboot_Count = g_AppCfgInterface.M_AutoReboot_Count; g_PFM_Cfg.M_AutoClear_Days = g_AppCfgInterface.M_AutoClear_Days; + g_PFM_Cfg.Multicast_Flag = g_AppCfgInterface.Multicast_Flag;/* 组播通信标志位,如果是0 则为单拨,否则为组播*/ + MSCP_LOG_MSG("CYC_TIME:%d\n",g_PFM_Cfg.CYC_TIME); MSCP_LOG_MSG("app_num:%d\n",g_PFM_Cfg.app_num); MSCP_LOG_MSG("CC_VER:%d\n",g_PFM_Cfg.CC_VER); MSCP_LOG_MSG("M_2oo2_Enable:0x%x\n",g_PFM_Cfg.M_2oo2_Enable); MSCP_LOG_MSG("M_2x2_Enable:0x%x\n",g_PFM_Cfg.M_2x2_Enable); + MSCP_LOG_MSG("M_4x2_Enable:0x%x\n",g_PFM_Cfg.M_4x2_Enable); + MSCP_LOG_MSG("M_2x2_Com_Cfg:0x%x\n",g_PFM_Cfg.M_2x2_Com_Cfg); MSCP_LOG_MSG("M_InnetSafe_Enable:0x%x\n",g_PFM_Cfg.M_InnetSafe_Enable); MSCP_LOG_MSG("M_InnetRaw_Enable:0x%x\n",g_PFM_Cfg.M_InnetRaw_Enable); MSCP_LOG_MSG("M_OutnetSafe_Enable:0x%x\n",g_PFM_Cfg.M_OutnetSafe_Enable); @@ -160,27 +181,48 @@ void PFM_CFG_Init(void) { } - /*- @alias 读取2x2oo2平台各CPU的通信配置 */ - for (cpuID = 1; cpuID <= 4; cpuID++) + /*- @alias 读取4x2oo2平台各CPU的通信配置 */ + for (cpuID = 1; cpuID <= 8; cpuID++) { (void)strcpy(g_PFM_Cfg.CPU_CFG[cpuID].IP_2oo2,g_AppCfgInterface.CPU[cpuID-1].IP_2oo2); - g_PFM_Cfg.CPU_CFG[cpuID].Port_2oo2_Data = 51001; - g_PFM_Cfg.CPU_CFG[cpuID].Port_2oo2_Data_App = 51005; - g_PFM_Cfg.CPU_CFG[cpuID].Port_2oo2_2x2_State = 51006; + g_PFM_Cfg.CPU_CFG[cpuID].Port_2oo2_Data = 51001; /*主线程2取端口*/ + g_PFM_Cfg.CPU_CFG[cpuID].Port_2oo2_Data_App = 51002; + g_PFM_Cfg.CPU_CFG[cpuID].Port_2oo2_2x2_State = 51003; + g_PFM_Cfg.CPU_CFG[cpuID].Port_2oo2_Sync_Time = 51004; /*2取校时交互端口*/ + g_PFM_Cfg.CPU_CFG[cpuID].Port_2oo2_Sync_Req = 51005; /*2取校时发送请求端口*/ + g_PFM_Cfg.CPU_CFG[cpuID].Port_2oo2_Maintenance = 51006; /*维护模式2取端口*/ + g_PFM_Cfg.CPU_CFG[cpuID].Port_2oo2_Area = 51007; /*区域2取端口*/ + //g_PFM_Cfg.CPU_CFG[cpuID].Port_2oo2_Assert = 51008; /*宕机2取端口*/ - g_PFM_Cfg.CPU_CFG[cpuID].Port_2oo2_Time = 51002; - g_PFM_Cfg.CPU_CFG[cpuID].Port_2oo2_Maintenance = 51004; + (void)strcpy(g_PFM_Cfg.CPU_CFG[cpuID].IP_4x2,g_AppCfgInterface.CPU[cpuID-1].IP_4x2); + g_PFM_Cfg.CPU_CFG[cpuID].Port_2x2_State = 52001;/*2x独立线程通信端口,双网卡共用*/ + g_PFM_Cfg.CPU_CFG[cpuID].Port_4x2_Data_Send = 52002;/*加入组播发送*/ + g_PFM_Cfg.CPU_CFG[cpuID].Port_4x2_Data_Rcv = 52003;/*加入组播接收*/ + g_PFM_Cfg.CPU_CFG[cpuID].Port_4x2_Syn_Send = 52004;/*加入组播发送*/ + g_PFM_Cfg.CPU_CFG[cpuID].Port_4x2_Syn_Rcv = 52005;/*加入组播接收*/ - (void)strcpy(g_PFM_Cfg.CPU_CFG[cpuID].IP_2x2,g_AppCfgInterface.CPU[cpuID-1].IP_2x2); - g_PFM_Cfg.CPU_CFG[cpuID].Port_2x2_Data = 52001; - g_PFM_Cfg.CPU_CFG[cpuID].Port_2x2_Time = 52002; - g_PFM_Cfg.CPU_CFG[cpuID].Port_2x2_Syn = 52003; - g_PFM_Cfg.CPU_CFG[cpuID].Port_2x2_State = 52004; + (void)strcpy(g_PFM_Cfg.CPU_CFG[cpuID].IP_Area,g_AppCfgInterface.CPU[cpuID-1].IP_Area); + g_PFM_Cfg.CPU_CFG[cpuID].Port_Area_State = 52010;/*4x2区域通信端口,双网卡共用*/ + (void)strcpy(g_PFM_Cfg.CPU_CFG[cpuID].IP_Sync_Time_A, g_AppCfgInterface.CPU[cpuID-1].IP_Sync_Time_A); + (void)strcpy(g_PFM_Cfg.CPU_CFG[cpuID].IP_Sync_Time_B, g_AppCfgInterface.CPU[cpuID-1].IP_Sync_Time_B); + g_PFM_Cfg.CPU_CFG[cpuID].Port_4x2_Sync_Time = 52021;/*4x区域校时端口,双网卡可共用*/ + g_PFM_Cfg.CPU_CFG[cpuID].Port_4x2_Sync_Req_A = 52022;/*4x区域校时A请求端口*/ + g_PFM_Cfg.CPU_CFG[cpuID].Port_4x2_Sync_Req_B = 52023;/*4x区域校时B请求端口*/ + + (void)strcpy(g_PFM_Cfg.CPU_CFG[cpuID].IP_Out, g_AppCfgInterface.CPU[cpuID-1].IP_Out); (void)strcpy(g_PFM_Cfg.CPU_CFG[cpuID].IP_Maintain, g_AppCfgInterface.CPU[cpuID-1].IP_Maintain); (void)strcpy(g_PFM_Cfg.CPU_CFG[cpuID].IP_Com, g_AppCfgInterface.CPU[cpuID-1].IP_Com); - (void)strcpy(g_PFM_Cfg.CPU_CFG[cpuID].IP_Out, g_AppCfgInterface.CPU[cpuID-1].IP_Out); (void)strcpy(g_PFM_Cfg.CPU_CFG[cpuID].IP_Com_Extend, g_AppCfgInterface.CPU[cpuID-1].IP_Com_Extend); + /*配置组播地址*/ + if (1u == g_PFM_Cfg.CPU_ID) + { + (void)strcpy(g_PFM_Cfg.CPU_CFG[cpuID].IP_Area_Multicast,g_AppCfgInterface.IP_Area_G_Multicast); + } + else + { + (void)strcpy(g_PFM_Cfg.CPU_CFG[cpuID].IP_Area_Multicast,g_AppCfgInterface.IP_Area_P_Multicast); + } /*读取内网透传参数*/ g_PFM_Cfg.CPU_CFG[cpuID].Port_Innet_Raw_Num = g_AppCfgInterface.Port_Innet_Raw_Num; @@ -211,21 +253,26 @@ void PFM_CFG_Init(void) g_PFM_Cfg.CPU_CFG[cpuID].Port_Log_Ciphertext = g_AppCfgInterface.CPU[cpuID-1].Logger_PortCiphertext; g_PFM_Cfg.CPU_CFG[cpuID].Port_Remote_Update = g_AppCfgInterface.Port_Remote_Update; MSCP_LOG_MSG("CPU[%d]IP_2oo2:%s\n",cpuID,g_PFM_Cfg.CPU_CFG[cpuID].IP_2oo2); - MSCP_LOG_MSG("CPU[%d]IP_2x2:%s\n",cpuID,g_PFM_Cfg.CPU_CFG[cpuID].IP_2x2); + MSCP_LOG_MSG("CPU[%d]IP_4x2:%s\n",cpuID,g_PFM_Cfg.CPU_CFG[cpuID].IP_4x2); MSCP_LOG_MSG("CPU[%d]IP_Maintain:%s\n",cpuID,g_PFM_Cfg.CPU_CFG[cpuID].IP_Maintain); MSCP_LOG_MSG("CPU[%d]IP_Com:%s\n",cpuID,g_PFM_Cfg.CPU_CFG[cpuID].IP_Com); MSCP_LOG_MSG("CPU[%d]IP_Out:%s\n",cpuID,g_PFM_Cfg.CPU_CFG[cpuID].IP_Out); MSCP_LOG_MSG("CPU[%d]IP_Com_Extend:%s\n",cpuID,g_PFM_Cfg.CPU_CFG[cpuID].IP_Com_Extend); + MSCP_LOG_MSG("CPU[%d]IP_Area:%s\n",cpuID,g_PFM_Cfg.CPU_CFG[cpuID].IP_Area); - (void)CFM_DarkLog_Multiple(DARK_LOG_HEX, (TSCP_DARK_PFMCFG_INIT2 + cpuID - 1), 18, \ + (void)CFM_DarkLog_Multiple(DARK_LOG_HEX, (TSCP_DARK_PFMCFG_INIT2 + cpuID - 1), 22, \ sizeof(CM_UINT16),g_PFM_Cfg.CPU_CFG[cpuID].Port_2oo2_Data, sizeof(CM_UINT16),g_PFM_Cfg.CPU_CFG[cpuID].Port_2oo2_Data_App, sizeof(CM_UINT16),g_PFM_Cfg.CPU_CFG[cpuID].Port_2oo2_2x2_State, - sizeof(CM_UINT16),g_PFM_Cfg.CPU_CFG[cpuID].Port_2oo2_Time, + sizeof(CM_UINT16),g_PFM_Cfg.CPU_CFG[cpuID].Port_2oo2_Sync_Time, sizeof(CM_UINT16),g_PFM_Cfg.CPU_CFG[cpuID].Port_2oo2_Maintenance, - sizeof(CM_UINT16),g_PFM_Cfg.CPU_CFG[cpuID].Port_2x2_Data, - sizeof(CM_UINT16),g_PFM_Cfg.CPU_CFG[cpuID].Port_2x2_Time, - sizeof(CM_UINT16),g_PFM_Cfg.CPU_CFG[cpuID].Port_2x2_Syn, + sizeof(CM_UINT16),g_PFM_Cfg.CPU_CFG[cpuID].Port_2oo2_Area, + sizeof(CM_UINT16),g_PFM_Cfg.CPU_CFG[cpuID].Port_2oo2_Assert, + sizeof(CM_UINT16),g_PFM_Cfg.CPU_CFG[cpuID].Port_2x2_State, + sizeof(CM_UINT16),g_PFM_Cfg.CPU_CFG[cpuID].Port_4x2_Data_Send, + sizeof(CM_UINT16),g_PFM_Cfg.CPU_CFG[cpuID].Port_4x2_Data_Rcv, + sizeof(CM_UINT16),g_PFM_Cfg.CPU_CFG[cpuID].Port_4x2_Syn_Send, + sizeof(CM_UINT16),g_PFM_Cfg.CPU_CFG[cpuID].Port_4x2_Syn_Rcv, sizeof(CM_UINT16),g_PFM_Cfg.CPU_CFG[cpuID].Port_2x2_State, sizeof(CM_INT32),g_PFM_Cfg.CPU_CFG[cpuID].Port_Innet_Raw_Num, sizeof(CM_INT32),g_PFM_Cfg.CPU_CFG[cpuID].Port_Innet_Raw_Extend_Num, @@ -239,35 +286,67 @@ void PFM_CFG_Init(void) } /*- 确定本机通信配置 */ - cpuID = (CM_INT32)CM_UNSIGNED_INT_EXP((((CM_UINT32)g_PFM_Cfg.BOARD_ID - 1u) * 2u) + (CM_UINT32)g_PFM_Cfg.CPU_ID); - rt = CM_Memcpy(&g_PFM_Cfg.Local_Cfg, sizeof(STRU_PFM_CPU_CFG_T), &g_PFM_Cfg.CPU_CFG[cpuID], sizeof(STRU_PFM_CPU_CFG_T)); - CM_NM_ASSERT(ENUM_CM_TRUE == rt, CFG_MODE, DARK_FAULT_CODE_FUN_ORDER_1, TSCP_DARK_ASSERT_9); + cpuID = (CM_INT32)CM_UNSIGNED_INT_EXP((((CM_UINT32)g_PFM_Cfg.BOARD_ID - 1u) * 2u) + (CM_UINT32)g_PFM_Cfg.CPU_ID); + rt = CM_Memcpy(&g_PFM_Cfg.Local_Cfg, sizeof(STRU_PFM_CPU_CFG_T), &g_PFM_Cfg.CPU_CFG[cpuID], sizeof(STRU_PFM_CPU_CFG_T)); + CM_NM_ASSERT(ENUM_CM_TRUE == rt, CFG_MODE, DARK_FAULT_CODE_FUN_ORDER_1, TSCP_DARK_ASSERT_9); + PFM_CFG_Another_CPUID(cpuID,&Peer_CpuId,&Partner_CpuId,&Partner_Area_A_CpuId,&Partner_Area_B_CpuId); + /*- 确定2oo2邻机通信配置 */ + rt = CM_Memcpy(&g_PFM_Cfg.Peer_Cfg, sizeof(STRU_PFM_CPU_CFG_T), &g_PFM_Cfg.CPU_CFG[Peer_CpuId], sizeof(STRU_PFM_CPU_CFG_T)); + /*- 确定2x2对系通信配置 */ + rt = CM_Memcpy(&g_PFM_Cfg.Partner_Cfg, sizeof(STRU_PFM_CPU_CFG_T), &g_PFM_Cfg.CPU_CFG[Partner_CpuId], sizeof(STRU_PFM_CPU_CFG_T)); + /*- 确定4x2异地A系通信配置 */ + rt = CM_Memcpy(&g_PFM_Cfg.Partner_Area_A_Cfg, sizeof(STRU_PFM_CPU_CFG_T), &g_PFM_Cfg.CPU_CFG[Partner_Area_A_CpuId], sizeof(STRU_PFM_CPU_CFG_T)); + /*- 确定4x2异地B系通信配置 */ + rt = CM_Memcpy(&g_PFM_Cfg.Partner_Area_B_Cfg, sizeof(STRU_PFM_CPU_CFG_T), &g_PFM_Cfg.CPU_CFG[Partner_Area_B_CpuId], sizeof(STRU_PFM_CPU_CFG_T)); - /*- 确定2oo2邻机通信配置 */ - cpuID = (CM_INT32)CM_UNSIGNED_INT_EXP((((CM_UINT32)g_PFM_Cfg.BOARD_ID - 1u) * 2u) + (3u - (CM_UINT32)g_PFM_Cfg.CPU_ID)); - rt = CM_Memcpy(&g_PFM_Cfg.Peer_Cfg, sizeof(STRU_PFM_CPU_CFG_T), &g_PFM_Cfg.CPU_CFG[cpuID], sizeof(STRU_PFM_CPU_CFG_T)); - CM_NM_ASSERT(ENUM_CM_TRUE == rt,CFG_MODE, DARK_FAULT_CODE_FUN_ORDER_1, TSCP_DARK_ASSERT_10); - /*- 确定2x2对机(对系)通信配置 */ - cpuID = (CM_INT32)CM_UNSIGNED_INT_EXP(((2u - (CM_UINT32)g_PFM_Cfg.BOARD_ID) * 2u) + (CM_UINT32)g_PFM_Cfg.CPU_ID); - rt = CM_Memcpy(&g_PFM_Cfg.Partner_Cfg, sizeof(STRU_PFM_CPU_CFG_T), &g_PFM_Cfg.CPU_CFG[cpuID], sizeof(STRU_PFM_CPU_CFG_T)); - CM_NM_ASSERT(ENUM_CM_TRUE == rt, CFG_MODE, DARK_FAULT_CODE_FUN_ORDER_1, TSCP_DARK_ASSERT_11); + /*- @alias 读取日志记录的IP配置 和通控配置 */ + if (((CM_UINT8)1u == g_PFM_Cfg.CPU_ID) && (((CM_UINT8)1u == g_PFM_Cfg.BOARD_ID) || ((CM_UINT8)2u == g_PFM_Cfg.BOARD_ID))) + { + /*- 日志IP配置*/ + (void)strcpy(g_PFM_Cfg.Logger_IP,g_AppCfgInterface.Logger_G_IP_A); + /*- 通控IP配置*/ + (void)strcpy(g_PFM_Cfg.CC_R_IP,g_AppCfgInterface.OutNetRed.CC_G_IP_A); + (void)strcpy(g_PFM_Cfg.CC_B_IP,g_AppCfgInterface.OutNetBlue.CC_G_IP_A); + (void)strcpy(g_PFM_Cfg.EXTEND_R_IP,g_AppCfgInterface.OutNetRed.EXTEND_G_IP_A); + (void)strcpy(g_PFM_Cfg.EXTEND_B_IP,g_AppCfgInterface.OutNetBlue.EXTEND_G_IP_A); + + } + else if(((CM_UINT8)2u == g_PFM_Cfg.CPU_ID) && (((CM_UINT8)1u == g_PFM_Cfg.BOARD_ID) || ((CM_UINT8)2u == g_PFM_Cfg.BOARD_ID))) + { + (void)strcpy(g_PFM_Cfg.Logger_IP,g_AppCfgInterface.Logger_P_IP_A); + /*- 通控IP配置*/ + (void)strcpy(g_PFM_Cfg.CC_R_IP,g_AppCfgInterface.OutNetRed.CC_P_IP_A); + (void)strcpy(g_PFM_Cfg.CC_B_IP,g_AppCfgInterface.OutNetBlue.CC_P_IP_A); + (void)strcpy(g_PFM_Cfg.EXTEND_R_IP,g_AppCfgInterface.OutNetRed.EXTEND_P_IP_A); + (void)strcpy(g_PFM_Cfg.EXTEND_B_IP,g_AppCfgInterface.OutNetBlue.EXTEND_P_IP_A); + } + else if(((CM_UINT8)1u == g_PFM_Cfg.CPU_ID) && (((CM_UINT8)3u == g_PFM_Cfg.BOARD_ID) || ((CM_UINT8)4u == g_PFM_Cfg.BOARD_ID))) + { + (void)strcpy(g_PFM_Cfg.Logger_IP,g_AppCfgInterface.Logger_G_IP_B); + /*- 通控IP配置*/ + (void)strcpy(g_PFM_Cfg.CC_R_IP,g_AppCfgInterface.OutNetRed.CC_G_IP_B); + (void)strcpy(g_PFM_Cfg.CC_B_IP,g_AppCfgInterface.OutNetBlue.CC_G_IP_B); + (void)strcpy(g_PFM_Cfg.EXTEND_R_IP,g_AppCfgInterface.OutNetRed.EXTEND_G_IP_B); + (void)strcpy(g_PFM_Cfg.EXTEND_B_IP,g_AppCfgInterface.OutNetBlue.EXTEND_G_IP_B); + } + else if(((CM_UINT8)2u == g_PFM_Cfg.CPU_ID) && (((CM_UINT8)3u == g_PFM_Cfg.BOARD_ID) || ((CM_UINT8)4u == g_PFM_Cfg.BOARD_ID))) + { + (void)strcpy(g_PFM_Cfg.Logger_IP,g_AppCfgInterface.Logger_P_IP_B); + /*- 通控IP配置*/ + (void)strcpy(g_PFM_Cfg.CC_R_IP,g_AppCfgInterface.OutNetRed.CC_P_IP_B); + (void)strcpy(g_PFM_Cfg.CC_B_IP,g_AppCfgInterface.OutNetBlue.CC_P_IP_B); + (void)strcpy(g_PFM_Cfg.EXTEND_R_IP,g_AppCfgInterface.OutNetRed.EXTEND_P_IP_B); + (void)strcpy(g_PFM_Cfg.EXTEND_B_IP,g_AppCfgInterface.OutNetBlue.EXTEND_P_IP_B); + } + else + { + MSCP_LOG_MSG("PFM Get Logger and CC IP fail\n"); + CM_ASSERT(0,0,0,0); + } + MSCP_LOG_MSG("Logger_IP:%s\n CC_R_IP:%s\n CC_B_IP:%s\n EXTEND_R_IP:%s\n EXTEND_B_IP:%s",g_PFM_Cfg.Logger_IP,\ + g_PFM_Cfg.CC_R_IP, g_PFM_Cfg.CC_B_IP, g_PFM_Cfg.EXTEND_R_IP, g_PFM_Cfg.EXTEND_B_IP); - /*- @alias 读取通控(CC)的IP配置 */ - if (1u == g_PFM_Cfg.CPU_ID) - { - (void)strcpy(g_PFM_Cfg.CC_R_IP,g_AppCfgInterface.OutNetRed.CC_G_IP); - (void)strcpy(g_PFM_Cfg.CC_B_IP,g_AppCfgInterface.OutNetBlue.CC_G_IP); - (void)strcpy(g_PFM_Cfg.EXTEND_R_IP,g_AppCfgInterface.OutNetRed.EXTEND_G_IP); - (void)strcpy(g_PFM_Cfg.EXTEND_B_IP,g_AppCfgInterface.OutNetBlue.EXTEND_G_IP); - } - else - { - (void)strcpy(g_PFM_Cfg.CC_R_IP,g_AppCfgInterface.OutNetRed.CC_P_IP); - (void)strcpy(g_PFM_Cfg.CC_B_IP,g_AppCfgInterface.OutNetBlue.CC_P_IP); - (void)strcpy(g_PFM_Cfg.EXTEND_R_IP,g_AppCfgInterface.OutNetRed.EXTEND_P_IP); - (void)strcpy(g_PFM_Cfg.EXTEND_B_IP,g_AppCfgInterface.OutNetBlue.EXTEND_P_IP); - } /*- 读取通控的端口配置 */ g_PFM_Cfg.CC_R_OutnetSafe_Port = g_AppCfgInterface.OutNetRed.OutnetSafe_Port; g_PFM_Cfg.CC_R_OutnetRaw_Port = g_AppCfgInterface.OutNetRed.OutnetRaw_Port; @@ -298,17 +377,6 @@ void PFM_CFG_Init(void) sizeof(CM_UINT16),g_PFM_Cfg.CC_B_OutnetRaw_Port, sizeof(CM_UINT16),g_PFM_Cfg.CC_B_InnetRaw_Port, sizeof(CM_UINT16),g_PFM_Cfg.CC_B_Heart_Port); - - /*- @alias 读取日志记录的IP配置 */ - if ((CM_UINT8)1u == g_PFM_Cfg.CPU_ID) - { - (void)strcpy(g_PFM_Cfg.Logger_IP,g_AppCfgInterface.Logger_G_IP); - } - else - { - (void)strcpy(g_PFM_Cfg.Logger_IP,g_AppCfgInterface.Logger_P_IP); - } - MSCP_LOG_MSG("Logger_IP:%s\n",g_PFM_Cfg.Logger_IP); /*读取内网通信设备的通信配置*/ /*- 读取内通信设备数量 */ g_PFM_Cfg.INNET_COM_NUM = g_AppCfgInterface.INNET_COM_NUM; @@ -703,6 +771,42 @@ void PFM_CFG_IfconfigIp(void) sprintf(str, "ifconfig %s %s", "wm0", "192.168.19.104"); /*- 跳出 */ break; + /*3-1*/ + case 0x83U: + sprintf(str, "ifconfig %s %s", "wm0", "192.168.146.201"); + /*- 跳出 */ + break; + case 0x23U: + sprintf(str, "ifconfig %s %s", "wm0", "192.168.144.201"); + /*- 跳出 */ + break; + /*3-2*/ + case 0x85U: + sprintf(str, "ifconfig %s %s", "wm0", "192.168.18.202"); + /*- 跳出 */ + break; + case 0x25U: + sprintf(str, "ifconfig %s %s", "wm0", "192.168.16.202"); + /*- 跳出 */ + break; + /*4-1*/ + case 0x76U: + sprintf(str, "ifconfig %s %s", "wm0", "192.168.146.203"); + /*- 跳出 */ + break; + case 0xD6U: + sprintf(str, "ifconfig %s %s", "wm0", "192.168.144.203"); + /*- 跳出 */ + break; + /*4-2*/ + case 0x7AU: + sprintf(str, "ifconfig %s %s", "wm0", "192.168.18.204"); + /*- 跳出 */ + break; + case 0xDAU: + sprintf(str, "ifconfig %s %s", "wm0", "192.168.16.204"); + /*- 跳出 */ + break; default: MSCP_LOG_MSG("drv_boardidErr:0x%x,ini:0x%x,0x%x\r\n",DrvBoard_ID,g_PFM_Cfg.BOARD_ID,g_PFM_Cfg.CPU_ID); /*- 跳出 */ @@ -775,7 +879,7 @@ static void PFM_CFG_Check_BoardID(void) case 0x33U: case 0x63U: case 0x03U: - CM_NM_ASSERT(((CM_UINT8)1U == g_PFM_Cfg.BOARD_ID) && ((CM_UINT8)1U == g_PFM_Cfg.CPU_ID), CFG_MODE, DARK_FAULT_CODE_FUN_ORDER_4, TSCP_DARK_ASSERT_1); + CM_NM_ASSERT((((CM_UINT8)1U == g_PFM_Cfg.BOARD_ID) && ((CM_UINT8)1U == g_PFM_Cfg.CPU_ID)), CFG_MODE, DARK_FAULT_CODE_FUN_ORDER_4, TSCP_DARK_ASSERT_1); /*- 跳出 */ break; /*1-2*/ @@ -783,7 +887,7 @@ static void PFM_CFG_Check_BoardID(void) case 0x35U: case 0x65U: case 0x05U: - CM_NM_ASSERT(((CM_UINT8)1U == g_PFM_Cfg.BOARD_ID) && ((CM_UINT8)2U == g_PFM_Cfg.CPU_ID), CFG_MODE, DARK_FAULT_CODE_FUN_ORDER_4, TSCP_DARK_ASSERT_1); + CM_NM_ASSERT((((CM_UINT8)1U == g_PFM_Cfg.BOARD_ID) && ((CM_UINT8)2U == g_PFM_Cfg.CPU_ID)), CFG_MODE, DARK_FAULT_CODE_FUN_ORDER_4, TSCP_DARK_ASSERT_1); /*- 跳出 */ break; /*2-1*/ @@ -791,7 +895,7 @@ static void PFM_CFG_Check_BoardID(void) case 0xC6U: case 0x96U: case 0xF6U: - CM_NM_ASSERT(((CM_UINT8)2U == g_PFM_Cfg.BOARD_ID) && ((CM_UINT8)1U == g_PFM_Cfg.CPU_ID), CFG_MODE, DARK_FAULT_CODE_FUN_ORDER_4, TSCP_DARK_ASSERT_1); + CM_NM_ASSERT((((CM_UINT8)2U == g_PFM_Cfg.BOARD_ID) && ((CM_UINT8)1U == g_PFM_Cfg.CPU_ID)), CFG_MODE, DARK_FAULT_CODE_FUN_ORDER_4, TSCP_DARK_ASSERT_1); /*- 跳出 */ break; /*2-2*/ @@ -799,9 +903,29 @@ static void PFM_CFG_Check_BoardID(void) case 0xCAU: case 0x9AU: case 0xFAU: - CM_NM_ASSERT(((CM_UINT8)2U == g_PFM_Cfg.BOARD_ID) && ((CM_UINT8)2U == g_PFM_Cfg.CPU_ID), CFG_MODE, DARK_FAULT_CODE_FUN_ORDER_4, TSCP_DARK_ASSERT_1); + CM_NM_ASSERT((((CM_UINT8)2U == g_PFM_Cfg.BOARD_ID) && ((CM_UINT8)2U == g_PFM_Cfg.CPU_ID)), CFG_MODE, DARK_FAULT_CODE_FUN_ORDER_4, TSCP_DARK_ASSERT_1); /*- 跳出 */ break; + /*3-1*/ + case 0x83U: + case 0x23U: + CM_NM_ASSERT((((CM_UINT8)3U == g_PFM_Cfg.BOARD_ID) && ((CM_UINT8)1U == g_PFM_Cfg.CPU_ID)), CFG_MODE, DARK_FAULT_CODE_FUN_ORDER_4, TSCP_DARK_ASSERT_1); + break; + /*3-2*/ + case 0x85U: + case 0x25U: + CM_NM_ASSERT((((CM_UINT8)3U == g_PFM_Cfg.BOARD_ID) && ((CM_UINT8)2U == g_PFM_Cfg.CPU_ID)), CFG_MODE, DARK_FAULT_CODE_FUN_ORDER_4, TSCP_DARK_ASSERT_1); + break; + /*4-1*/ + case 0x76U: + case 0xD6U: + CM_NM_ASSERT((((CM_UINT8)4U == g_PFM_Cfg.BOARD_ID) && ((CM_UINT8)1U == g_PFM_Cfg.CPU_ID)), CFG_MODE, DARK_FAULT_CODE_FUN_ORDER_4, TSCP_DARK_ASSERT_1); + break; + /*4-2*/ + case 0x7AU: + case 0xDAU: + CM_NM_ASSERT((((CM_UINT8)4U == g_PFM_Cfg.BOARD_ID) && ((CM_UINT8)2U == g_PFM_Cfg.CPU_ID)), CFG_MODE, DARK_FAULT_CODE_FUN_ORDER_4, TSCP_DARK_ASSERT_1); + break; default: MSCP_LOG_MSG("drv_boardidErr:0x%x,ini:0x%x,0x%x\r\n",DrvBoard_ID,g_PFM_Cfg.BOARD_ID,g_PFM_Cfg.CPU_ID); CM_NM_ASSERT(0, CFG_MODE, DARK_FAULT_CODE_FUN_ORDER_4, TSCP_DARK_ASSERT_1); @@ -810,7 +934,66 @@ static void PFM_CFG_Check_BoardID(void) } #endif /*QNX*/ } - +/** +* @brief 确认其他CPUID +*/ +static void PFM_CFG_Another_CPUID(CPUID_TYPE Local_CpuId,CPUID_TYPE *Peer_CpuId,CPUID_TYPE *Partner_CpuId,CPUID_TYPE *Partner_Area_A_CpuId,CPUID_TYPE *Partner_Area_B_CpuId) +{ + switch(Local_CpuId) + { + case ENUM_CPUID_A_A_1: + *Peer_CpuId = ENUM_CPUID_A_A_2;/*2oo2邻机CPUID*/ + *Partner_CpuId = ENUM_CPUID_A_B_1;/*2x2对系CPUID*/ + *Partner_Area_A_CpuId = ENUM_CPUID_B_A_1;/*4x2异地A系CPUID*/ + *Partner_Area_B_CpuId = ENUM_CPUID_B_B_1;/*4x2异地B系CPUID*/ + break; + case ENUM_CPUID_A_A_2: + *Peer_CpuId = ENUM_CPUID_A_A_1;/*2oo2邻机CPUID*/ + *Partner_CpuId = ENUM_CPUID_A_B_2;/*2x2对系CPUID*/ + *Partner_Area_A_CpuId = ENUM_CPUID_B_A_2;/*4x2异地A系CPUID*/ + *Partner_Area_B_CpuId = ENUM_CPUID_B_B_2;/*4x2异地B系CPUID*/ + break; + case ENUM_CPUID_A_B_1: + *Peer_CpuId = ENUM_CPUID_A_B_2;/*2oo2邻机CPUID*/ + *Partner_CpuId = ENUM_CPUID_A_A_1;/*2x2对系CPUID*/ + *Partner_Area_A_CpuId = ENUM_CPUID_B_A_1;/*4x2异地A系CPUID*/ + *Partner_Area_B_CpuId = ENUM_CPUID_B_B_1;/*4x2异地B系CPUID*/ + break; + case ENUM_CPUID_A_B_2: + *Peer_CpuId = ENUM_CPUID_A_B_1;/*2oo2邻机CPUID*/ + *Partner_CpuId = ENUM_CPUID_A_A_2;/*2x2对系CPUID*/ + *Partner_Area_A_CpuId = ENUM_CPUID_B_A_2;/*4x2异地A系CPUID*/ + *Partner_Area_B_CpuId = ENUM_CPUID_B_B_2;/*4x2异地B系CPUID*/ + break; + case ENUM_CPUID_B_A_1: + *Peer_CpuId = ENUM_CPUID_B_A_2;/*2oo2邻机CPUID*/ + *Partner_CpuId = ENUM_CPUID_B_B_1;/*2x2对系CPUID*/ + *Partner_Area_A_CpuId = ENUM_CPUID_A_A_1;/*4x2异地A系CPUID*/ + *Partner_Area_B_CpuId = ENUM_CPUID_A_B_1;/*4x2异地B系CPUID*/ + break; + case ENUM_CPUID_B_A_2: + *Peer_CpuId = ENUM_CPUID_B_A_1;/*2oo2邻机CPUID*/ + *Partner_CpuId = ENUM_CPUID_B_B_2;/*2x2对系CPUID*/ + *Partner_Area_A_CpuId = ENUM_CPUID_A_A_2;/*4x2异地A系CPUID*/ + *Partner_Area_B_CpuId = ENUM_CPUID_A_B_2;/*4x2异地B系CPUID*/ + break; + case ENUM_CPUID_B_B_1: + *Peer_CpuId = ENUM_CPUID_B_B_2;/*2oo2邻机CPUID*/ + *Partner_CpuId = ENUM_CPUID_B_A_1;/*2x2对系CPUID*/ + *Partner_Area_A_CpuId = ENUM_CPUID_A_A_1;/*4x2异地A系CPUID*/ + *Partner_Area_B_CpuId = ENUM_CPUID_A_B_1;/*4x2异地B系CPUID*/ + break; + case ENUM_CPUID_B_B_2: + *Peer_CpuId = ENUM_CPUID_B_B_1;/*2oo2邻机CPUID*/ + *Partner_CpuId = ENUM_CPUID_B_A_2;/*2x2对系CPUID*/ + *Partner_Area_A_CpuId = ENUM_CPUID_A_A_2;/*4x2异地A系CPUID*/ + *Partner_Area_B_CpuId = ENUM_CPUID_A_B_2;/*4x2异地B系CPUID*/ + break; + default: + /*此处宕机*/ + break; + } +} void PFM_CFG_SendDarkCfg(void) { (void)CFM_DarkLog_Multiple(DARK_LOG_HEX, TSCP_DARK_PFMCFG_SENDDARKCFG, 14u, \ diff --git a/TSCP/src/MSCP/PFM/PFM_Cfg.h b/TSCP/src/MSCP/PFM/PFM_Cfg.h index d2b7f7a..4983b58 100644 --- a/TSCP/src/MSCP/PFM/PFM_Cfg.h +++ b/TSCP/src/MSCP/PFM/PFM_Cfg.h @@ -38,7 +38,19 @@ extern CM_UINT8 TSCP_QNX_VERION[10]; /** 操作系统版本号 */ #define MSCP_DOUBLE_PASS_ALL_NUM (INNET_RAW_DOUBLE_PASS_NUM + 5u) #define TSCP_CYC_DATAMAX_LEN (40000u) - + /** CPUID */ + typedef enum + { + ENUM_CPUID_ERR = 0, /**< 错误的CPUID */ + ENUM_CPUID_A_A_1 = 1, /**< A地A系cpu1*/ + ENUM_CPUID_A_A_2 = 2, /**< A地A系cpu2*/ + ENUM_CPUID_A_B_1 = 3, /**< A地B系cpu1*/ + ENUM_CPUID_A_B_2 = 4, /**< A地B系cpu2*/ + ENUM_CPUID_B_A_1 = 5, /**< B地A系cpu1*/ + ENUM_CPUID_B_A_2 = 6, /**< B地A系cpu2*/ + ENUM_CPUID_B_B_1 = 7, /**< B地B系cpu1*/ + ENUM_CPUID_B_B_2 = 8, /**< B地B系cpu2*/ + }CPUID_TYPE; /** 网络通信开关类型 */ typedef enum { @@ -65,20 +77,34 @@ extern CM_UINT8 TSCP_QNX_VERION[10]; /** 操作系统版本号 */ CM_CHAR IP_2oo2[32]; /**< 2oo2通信IP */ CM_UINT16 Port_2oo2_Data; /**< 2oo2数据通信端口 */ CM_UINT16 Port_2oo2_Data_App; /**< 应用2oo2数据通信端口 */ - CM_UINT16 Port_2oo2_Time; /**< 2oo2校时端口 */ + CM_UINT16 Port_2oo2_Sync_Time; /**< 2oo2交互校时offset端口 */ + CM_UINT16 Port_2oo2_Sync_Req; /**< 2oo2校时请求端口 */ CM_UINT16 Port_2oo2_Maintenance; /**< 2oo2维护端口 */ CM_UINT16 Port_2oo2_2x2_State; /**< 2oo2 2x状态交互端口 */ + CM_UINT16 Port_2oo2_Area; /**< 2oo2 区域状态交互端口 */ + CM_UINT16 Port_2oo2_Assert; /**< 2oo2 宕机状态交互端口 */ - CM_CHAR IP_2x2[32]; /**< 2x2通信IP */ - CM_UINT16 Port_2x2_Data; /**< 2x2数据通信端口 */ - CM_UINT16 Port_2x2_Time; /**< 2x2校时端口 */ - CM_UINT16 Port_2x2_Syn; /**< 2x2同步端口 */ - CM_UINT16 Port_2x2_State; /**< 2x2状态交互端口 */ + CM_CHAR IP_4x2[32]; /**< 4x2通信IP */ + CM_UINT16 Port_4x2_Data_Send; /**< 4x2组播数据发送端口 */ + CM_UINT16 Port_4x2_Data_Rcv; /**< 4x2组播数据接收端口 */ + CM_UINT16 Port_4x2_Syn_Send; /**< 4x2组播同步发送端口 */ + CM_UINT16 Port_4x2_Syn_Rcv; /**< 4x2组播同步接收端口 */ + CM_UINT16 Port_2x2_State; /**< 2x2状态交互端口 */ + + CM_CHAR IP_Area[32]; /**< 区域通信IP */ + CM_UINT16 Port_Area_State; /**< 4x2区域状态交互端口 */ + + CM_CHAR IP_Sync_Time_A[32]; /**< 校时A通信IP */ + CM_CHAR IP_Sync_Time_B[32]; /**< 校时B通信IP */ + CM_UINT16 Port_4x2_Sync_Time; /**< 4x2校时端口 */ + CM_UINT16 Port_4x2_Sync_Req_A; /**< 4x2校时A请求端口 */ + CM_UINT16 Port_4x2_Sync_Req_B; /**< 4x2校时B请求端口 */ CM_CHAR IP_Com[32]; /**< 通用通信IP */ CM_CHAR IP_Out[32]; /**< 外网通信IP */ CM_CHAR IP_Com_Extend[32]; /**< 通用通信扩展IP */ CM_CHAR IP_Maintain[32]; /**< 维护通信IP */ + CM_CHAR IP_Area_Multicast[32];/**< 组播通信IP */ CM_UINT16 Port_Outnet_Safe; /**< 外网安全通信端口 */ CM_UINT16 Port_Innet_Safe; /**< 内网安全通信端口 */ CM_UINT16 Port_Outnet_Raw; /**< 外网透明传输端口 */ @@ -118,6 +144,8 @@ extern CM_UINT8 TSCP_QNX_VERION[10]; /** 操作系统版本号 */ CM_UINT16 OUTNET_ID; /**< 外网通信ID */ CM_UINT16 INNET_ID; /**< 内网通信ID */ CM_UINT16 INNET_ID_RM; /**< 远程部署内网通信ID */ + + CM_UINT8 Multicast_Flag; /**< 通信组播标志位 */ CM_UINT32 CYC_TIME; /**< 系统周期 */ CM_INT32 app_num; /**< app任务数 */ @@ -125,6 +153,8 @@ extern CM_UINT8 TSCP_QNX_VERION[10]; /** 操作系统版本号 */ CM_UINT32 OutnetSafePack_Len;/**< 外网安全通信最大数据长度(根据周期长度计算) */ CM_UINT32 M_2oo2_Enable; /**< 2oo2功能开关 */ CM_UINT32 M_2x2_Enable; /**< 2x2功能开关*/ + CM_UINT32 M_4x2_Enable; /**< 4x2功能开关*/ + CM_UINT32 M_2x2_Com_Cfg; /**< 2x2配置功能开关*/ CM_UINT32 M_InnetSafe_Enable; /**< 内网安全通信功能开关 */ CM_UINT32 M_InnetRaw_Enable; /**< 内网透传通信功能开关 */ CM_UINT32 M_OutnetSafe_Enable;/**< 外网安全通信功能开关 */ @@ -139,6 +169,8 @@ extern CM_UINT8 TSCP_QNX_VERION[10]; /** 操作系统版本号 */ STRU_PFM_CPU_CFG_T Local_Cfg; /*本机通信配置*/ STRU_PFM_CPU_CFG_T Peer_Cfg; /*2oo2邻机通信配置*/ STRU_PFM_CPU_CFG_T Partner_Cfg; /*2x2对机(对系)通信配置*/ + STRU_PFM_CPU_CFG_T Partner_Area_A_Cfg; /*4x2异地(A系)通信配置*/ + STRU_PFM_CPU_CFG_T Partner_Area_B_Cfg; /*4x2异地(B系)通信配置*/ CM_CHAR CC_R_IP[32]; /**< 红网通控的内网IP */ CM_CHAR EXTEND_R_IP[32]; /**< 红网扩展板卡的内网IP */ @@ -159,7 +191,7 @@ extern CM_UINT8 TSCP_QNX_VERION[10]; /** 操作系统版本号 */ CM_UINT16 Logger_PortCiphertext; /**< 暗文日志对端端口 */ /*以下通常仅PFM_CFG内部使用*/ - STRU_PFM_CPU_CFG_T CPU_CFG[5]; /**< 各CPU的通信配置,数组1-4有效 */ + STRU_PFM_CPU_CFG_T CPU_CFG[9]; /**< 各CPU的通信配置,数组1-4有效 */ CM_UINT16 INNET_COM_NUM; /**< 内网通信设备数量 */ STRU_PFM_INNET_CFG_T INNET_COM_CFG[256]; /**< 内网通信设备通信配置(数组1-INNET_COM_NUM有效) */ }STRU_PFM_CFG_T; @@ -188,9 +220,12 @@ extern CM_UINT8 TSCP_QNX_VERION[10]; /** 操作系统版本号 */ { /*注意IP字段必须为32字节*/ CM_CHAR IP_2oo2[32]; /**< 2oo2通信IP */ - CM_CHAR IP_2x2[32]; /**< 2x2通信IP */ + CM_CHAR IP_4x2[32]; /**< 2x2通信IP */ CM_CHAR IP_Out[32]; /**< 外网通信IP */ CM_CHAR IP_Maintain[32]; /**< 维护通信IP */ + CM_CHAR IP_Area[32]; /**< 区域通信IP */ + CM_CHAR IP_Sync_Time_A[32]; /**< 校时A通信IP */ + CM_CHAR IP_Sync_Time_B[32]; /**< 校时B通信IP */ /*适用透传通道-选配*/ CM_CHAR IP_Com[32]; /**< 通用通信IP */ CM_CHAR IP_Com_Extend[32];/**< 通用通信扩展IP */ @@ -200,10 +235,14 @@ extern CM_UINT8 TSCP_QNX_VERION[10]; /** 操作系统版本号 */ /** 应用外网配置数据 */ typedef struct { - CM_CHAR CC_G_IP[32]; /**< 通控的内网IP */ - CM_CHAR CC_P_IP[32]; /**< 通控的内网IP */ - CM_CHAR EXTEND_G_IP[32]; /**< 扩展板卡的内网IP */ - CM_CHAR EXTEND_P_IP[32]; /**< 扩展板卡的内网IP */ + CM_CHAR CC_G_IP_A[32]; /**< 通控的内网IP */ + CM_CHAR CC_P_IP_A[32]; /**< 通控的内网IP */ + CM_CHAR CC_G_IP_B[32]; /**< 通控的内网IP */ + CM_CHAR CC_P_IP_B[32]; /**< 通控的内网IP */ + CM_CHAR EXTEND_G_IP_A[32]; /**< 扩展板卡的内网IP */ + CM_CHAR EXTEND_P_IP_A[32]; /**< 扩展板卡的内网IP */ + CM_CHAR EXTEND_G_IP_B[32]; /**< 扩展板卡的内网IP */ + CM_CHAR EXTEND_P_IP_B[32]; /**< 扩展板卡的内网IP */ CM_UINT16 OutnetSafe_Port; /**< 外网安全通信端口 */ CM_UINT16 OutnetRaw_Port; /**< 外网透传通信端口 */ CM_UINT16 InnetRaw_Port; /**< 内网透传通信端口 */ @@ -219,6 +258,8 @@ extern CM_UINT8 TSCP_QNX_VERION[10]; /** 操作系统版本号 */ CM_INT32 app_num; /**< app任务数 */ CM_UINT32 M_2oo2_Enable; /**< 2oo2功能开关 */ CM_UINT32 M_2x2_Enable; /**< 2x2功能开关*/ + CM_UINT32 M_4x2_Enable; /**< 4x2功能开关*/ + CM_UINT32 M_2x2_Com_Cfg; /**< 2x2配置功能开关*/ CM_UINT32 M_InnetSafe_Enable; /**< 内网安全通信功能开关 */ CM_UINT32 M_InnetRaw_Enable; /**< 内网透传通信功能开关 */ CM_UINT32 M_OutnetSafe_Enable; /**< 外网安全通信功能开关 */ @@ -231,7 +272,9 @@ extern CM_UINT8 TSCP_QNX_VERION[10]; /** 操作系统版本号 */ CM_UINT8 M_AutoReboot_Count; /**< 自动重启次数 */ CM_UINT16 M_AutoClear_Days; /**< 连续运行多久清空宕机次数的天数 */ /*IP配置*/ - STRU_APP_CPU_CFG_T CPU[4]; /*每个CPU的IP配置*/ + STRU_APP_CPU_CFG_T CPU[8]; /*每个CPU的IP配置*/ + CM_CHAR IP_Area_G_Multicast[32]; /**< 绿网区域组播通信端口 */ + CM_CHAR IP_Area_P_Multicast[32]; /**< 紫网区域组播通信端口 */ /*通用端口配置*/ CM_UINT16 Port_Outnet_Safe; /**< 外网安全通信端口 */ CM_UINT16 Port_Innet_Safe; /**< 内网安全通信端口 */ @@ -245,11 +288,16 @@ extern CM_UINT8 TSCP_QNX_VERION[10]; /** 操作系统版本号 */ STRU_APP_CC_CFG_T OutNetRed; /*外网红网通信配置*/ STRU_APP_CC_CFG_T OutNetBlue; /*外网蓝网通信配置*/ /*日志记录目标设备IP配置*/ - CM_CHAR Logger_G_IP[32]; /**< 绿网日志记录IP */ - CM_CHAR Logger_P_IP[32]; /**< 紫网日志记录IP */ + CM_CHAR Logger_G_IP_A[32]; /**< A地绿网日志记录IP */ + CM_CHAR Logger_P_IP_A[32]; /**< A地紫网日志记录IP */ + CM_CHAR Logger_G_IP_B[32]; /**< B地绿网日志记录IP */ + CM_CHAR Logger_P_IP_B[32]; /**< B地紫网日志记录IP */ + /*内网通信设备注册最大支持0-254*/ CM_UINT16 INNET_COM_NUM; /**< 内网通信设备数量 */ STRU_PFM_INNET_CFG_T INNET_COM_CFG[255]; /**< 内网通信设备通信配置(数组0-254有效) */ + + CM_UINT8 Multicast_Flag; /*组播通信标志位*/ }STRU_APP_CFG_T; typedef struct diff --git a/TSCP/src/MSCP/PFM/PFM_InputOutput.c b/TSCP/src/MSCP/PFM/PFM_InputOutput.c index dd59bb6..c1b3b86 100644 --- a/TSCP/src/MSCP/PFM/PFM_InputOutput.c +++ b/TSCP/src/MSCP/PFM/PFM_InputOutput.c @@ -94,9 +94,9 @@ static void s_input_2x2sync(void) { /*- 变量初始化 */ CM_INT32 i = 0; - ENUM_2x2_STATE_T state_2x2 = SFM_2x2_GetLocal2x2State(); /* 本系热备状态 */ + ENUM_4x2_STATE_T state_2x2 = SFM_GetLocal4x2State(); /* 本系热备状态 */ /*- 本机是否为主系 */ - if (ENUM_2x2_MASTER == state_2x2) + if (ENUM_4x2_MASTER == state_2x2) { /*- 从第一个2x2oo2通信队列开始|是否遍历完成|下一个队列 */ for (i = 1; i <= g_2x2oo2_data_num; i++) @@ -455,7 +455,7 @@ void PFM_InputProc(void) { /*- 变量初始化 */ CM_INT32 i = 0; - ENUM_2x2_STATE_T p_state_2x2 = ENUM_2x2_SHUTDOWN; /* 对系热备状态 */ + ENUM_4x2_STATE_T p_state_2x2 = ENUM_4x2_SHUTDOWN; /* 对系热备状态 */ /************************平台数据接收*************************/ /*- 外网安全数据接收 */ @@ -557,7 +557,7 @@ void PFM_InputProc(void) SFM_WriteInnetSafeRmInput(g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_RemoteUpdate].p_peer_buf, g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_RemoteUpdate].peer_len, ENUM_INNET_GREEN); - if (ENUM_2x2_MASTER == p_state_2x2) + if (ENUM_4x2_MASTER == p_state_2x2) { /* 对系为主系,只使用主系输入 */ PFM_CFC_Check(40); @@ -592,7 +592,7 @@ void PFM_InputProc(void) SFM_WriteInnetSafeRmInput(g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_RemoteUpdate].p_mine_buf, g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_RemoteUpdate].mine_len, ENUM_INNET_PURPLE); - if (ENUM_2x2_MASTER == p_state_2x2) + if (ENUM_4x2_MASTER == p_state_2x2) { /* 对系为主系,只使用主系输入 */ PFM_CFC_Check(40); @@ -642,7 +642,7 @@ void PFM_OutputProc(void) CM_INT32 i = 0; /* 循环变量 */ CM_UINT8 buf_peer[500] = { 0u }; /* 邻机接收缓冲区 */ CM_INT32 ret = 0; /* 临时变量 */ - ENUM_2x2_STATE_T state_2x2 = ENUM_2x2_SHUTDOWN; /* 本系热备状态 */ + ENUM_4x2_STATE_T state_2x2 = ENUM_4x2_SHUTDOWN; /* 本系热备状态 */ /*########################从协议适配层获取输出数据########################*/ @@ -724,7 +724,7 @@ void PFM_OutputProc(void) if (0x55u == g_PFM_Cfg.M_2x2_Enable) { /*热备状态切换*/ - SFM_2x2_ChangeState(); + SFM_4x2_ChangeState(); } else { @@ -732,11 +732,11 @@ void PFM_OutputProc(void) } PFM_CFC_Check(16); /*- 获取当前热备状态 */ - state_2x2 = SFM_2x2_GetLocal2x2State(); + state_2x2 = SFM_GetLocal4x2State(); MSCP_LOG_MSG("SFM_2x2_GetSysCount() = %d, s_txSn = %d\n", SFM_2x2_GetSysCount(), SFM_GetTxSn()); MSCP_LOG_MSG("timecurr 16.1 = %lld us\n", NOW_USED_TIME); /*- 本系是否为主 */ - if (ENUM_2x2_MASTER == state_2x2) + if (ENUM_4x2_MASTER == state_2x2) { MSCP_LOG_MSG("Out:innetSafe = %d, innetRaw = %d, outnetSafe = %d\n", (CM_UINT32)g_2x2oo2_tx[g_2x2oo2_base][s_2x2oo2_InnetSafe].buf_len, (CM_UINT32)PFM_RAW_TX(i).buf_len, (CM_UINT32)g_2x2oo2_tx[g_2x2oo2_base][s_2x2oo2_OutnetSafe].buf_len); /*- 发送内网安全输出数据 */ @@ -803,9 +803,8 @@ void PFM_EndProc(void) if (0x55u == g_PFM_Cfg.M_2oo2_Enable) { /*- 生成跟随数据的特征信息 */ - crc = CM_Crc32(g_TxAppFollow, (CM_UINT32)g_TxAppFollow_len); CM_LongToChar((CM_UINT32)g_TxAppFollow_len, mybuf); - CM_LongToChar(crc, mybuf + 4); + CM_Memcpy(mybuf + 4, 4, g_TxAppFollow, 4); /*- 2oo2交换特征信息 */ len = SFM_2oo2_Exchange_Currency(mybuf, 8, peerbuf, 8u, ENUM_2oo2_OUTPUT_CHECK); /*- 2oo2严格比较特征信息 */ @@ -1018,7 +1017,7 @@ CM_UINT32 PFM_OutnetRaw_AppRecv(OUT CM_UINT8* rxBuf, IN CM_UINT32 rxSize) CM_UINT32 msgLen = 0u; /* 消息长度 */ CM_UINT32 rt = 0u; /* 函数返回值 */ ENUM_CM_RETURN ret = ENUM_CM_FALSE; - ENUM_2x2_STATE_T state_2x2 = SFM_2x2_GetLastPartner2x2State(); /*获取上周期对系热备状态*/ + ENUM_4x2_STATE_T state_2x2 = SFM_2x2_GetLastPartner2x2State(); /*获取上周期对系热备状态*/ g_2x2oo2_rx[s_2x2oo2_app][s_2x2oo2_OutnetRaw].app_index_log++;/*记录应用调用次数,每周期清零*/ CM_UINT8 *p_Mine_Buf = NULL; CM_UINT32 Mine_len = 0u; @@ -1026,7 +1025,7 @@ CM_UINT32 PFM_OutnetRaw_AppRecv(OUT CM_UINT8* rxBuf, IN CM_UINT32 rxSize) CM_UINT32 Peer_len = 0u; CM_MUTEX_T *p_mutex = NULL; /*根据主备状态分配缓冲区 */ - if(ENUM_2x2_MASTER != state_2x2) + if(ENUM_4x2_MASTER != state_2x2) { p_Mine_Buf = g_2x2oo2_rx[s_2x2oo2_app][s_2x2oo2_OutnetRaw].p_mine_buf; Mine_len = g_2x2oo2_rx[s_2x2oo2_app][s_2x2oo2_OutnetRaw].mine_len; @@ -1520,7 +1519,7 @@ CM_UINT32 PFM_OutnetHeart_AppRecv(OUT CM_UINT8* rxBuf, IN CM_UINT32 rxSize) /*- 入参检查 */ CM_ASSERT(NULL != rxBuf, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_17, TSCP_DARK_ASSERT_1); /*- 本系是否为主系 */ - if(ENUM_2x2_MASTER == SFM_2x2_GetLastLocal2x2State()) + if(ENUM_4x2_MASTER == SFM_2x2_GetLastLocal2x2State()) { /*- 自己是否是CPU1 */ if (1u == g_PFM_Cfg.CPU_ID) @@ -1613,7 +1612,7 @@ CM_UINT32 PFM_OutnetHeart_AppRecv(OUT CM_UINT8* rxBuf, IN CM_UINT32 rxSize) } } /*- 对系是否是主系 */ - else if(ENUM_2x2_MASTER == SFM_2x2_GetLastPartner2x2State()) + else if(ENUM_4x2_MASTER == SFM_2x2_GetLastPartner2x2State()) { /*- 自己是否是CPU1 */ if (1u == g_PFM_Cfg.CPU_ID) diff --git a/TSCP/src/MSCP/PFM/PFM_Log.c b/TSCP/src/MSCP/PFM/PFM_Log.c index 124f091..825fd1e 100644 --- a/TSCP/src/MSCP/PFM/PFM_Log.c +++ b/TSCP/src/MSCP/PFM/PFM_Log.c @@ -132,7 +132,7 @@ void MSCP_PFM_LOG_MSG(IN const CM_CHAR *filename, IN CM_INT32 line, IN const CM_ #ifdef WIN32 Bootprintf("%s", msgBuf + headLen); #endif - /* printf("%s", msgBuf + headLen);*/ + //printf("%s", msgBuf + headLen); /*- 输出日志信息 */ (void)CFM_BaseLog_Send((CM_UINT8*)msgBuf, headLen + msgLen); } @@ -246,7 +246,7 @@ void MSCP_ASSERT(unsigned int x, unsigned int MaintenanceFlag, unsigned short Mo CM_INT32 rxLen = 0; /*- 填充暗文故障码*/ CM_UINT32 darkBuf = (Mode<<16u)|(faultCode<<8u)|funNum; - ENUM_2x2_STATE_T localState = ENUM_2x2_SHUTDOWN; + ENUM_4x2_STATE_T localState = ENUM_4x2_SHUTDOWN; CM_UINT8 countFalse = 0xff; CM_UINT8 tmepIndex = 0u; /*- 全局宕机标志是否有效 */ @@ -270,6 +270,7 @@ void MSCP_ASSERT(unsigned int x, unsigned int MaintenanceFlag, unsigned short Mo /*- 置位全局宕机标志 */ s_stopflag = 0x55u; SFM_2x2_LOG_Transition(); + Area_LOG_Transition(); /*- 控制台输出断言失效信息 */ MSCP_LOG_MSG("ASSERT: %s:%s:%d,version:%d.%d.%d.%d,Cyc = %d,DefaultNum:0x%x\n", filename, func, line,MSCP_SW_VERION[0], MSCP_SW_VERION[1], MSCP_SW_VERION[2], MSCP_SW_VERION[3],g_MSCP_SysCount,darkBuf); (void)printf("ASSERT: %s:%s:%d,version:%d.%d.%d.%d,Cyc = %d,DefaultNum:0x%x\n", filename, func, line,MSCP_SW_VERION[0], MSCP_SW_VERION[1], MSCP_SW_VERION[2], MSCP_SW_VERION[3],g_MSCP_SysCount,darkBuf); @@ -329,7 +330,7 @@ void MSCP_ASSERT(unsigned int x, unsigned int MaintenanceFlag, unsigned short Mo (void)CFM_DarkLog_Storage(DARK_LOG_HEX, TSCP_DARK_INFO_ERR_TYPE, 4u, &darkBuf);/*发送暗文故障编码*/ /*- 更改热备状态为宕机,通过暗文再次发送热备状态帧(要保证这个帧是该暗文日志最后一个热备状态帧) */ SFM_2x2_SetLocal2x2State(localState); - localState = SFM_2x2_GetLocal2x2State(); + localState = SFM_GetLocal4x2State(); (void)CFM_DarkLog_Storage(DARK_LOG_HEX, TSCP_DARK_LOCAL, 1U, &localState); /*- 暗文标志位至为发送 */ if(ENUM_INIT_MAIN_NET <= PFM_LOG_GET_INIT_STAGE()) @@ -381,6 +382,8 @@ void MSCP_ASSERT(unsigned int x, unsigned int MaintenanceFlag, unsigned short Mo PFM_LOG_MaintenanceMode(MaintenanceFlag, darkBuf); } } + + /** * @brief 自动重启断言 * @param x 断言结果 @@ -398,7 +401,7 @@ void MSCP_REBOOT_ASSERT(unsigned int x, unsigned int MaintenanceFlag,unsigned sh CM_UINT8 AutoReboot_Flag = 0u; /*- 填充暗文故障码*/ CM_UINT32 darkBuf = (Mode<<16u)|(faultCode<<8u)|funNum; - ENUM_2x2_STATE_T localState = ENUM_2x2_SHUTDOWN; + ENUM_4x2_STATE_T localState = ENUM_4x2_SHUTDOWN; CM_UINT8 lightPs = 0x55; /*- 全局宕机标志是否有效 */ if(0x55u == s_stopflag) @@ -445,7 +448,7 @@ void MSCP_REBOOT_ASSERT(unsigned int x, unsigned int MaintenanceFlag,unsigned sh (void)CFM_DarkLog_Storage(DARK_LOG_HEX, TSCP_DARK_PSLIGHT, 1U, &lightPs); /*- 更改热备状态为宕机,通过暗文再次发送热备状态帧(要保证这个帧是该暗文日志最后一个热备状态帧) */ SFM_2x2_SetLocal2x2State(localState); - localState = SFM_2x2_GetLocal2x2State(); + localState = SFM_GetLocal4x2State(); (void)CFM_DarkLog_Storage(DARK_LOG_HEX, TSCP_DARK_LOCAL, 1U, &localState); /*- 暗文标志位至为发送 */ if(ENUM_INIT_MAIN_NET <= PFM_LOG_GET_INIT_STAGE()) @@ -831,7 +834,7 @@ static void PFM_LOG_MaintenanceMode(CM_UINT32 MaintenanceFlag, CM_UINT32 darkBuf CM_UINT64 s_count = 0; ENUM_BOARD_STATE_T boardState = PFM_GetBoardState(); CM_UINT8 lightPs = 0x55; - ENUM_2x2_STATE_T localState = SFM_2x2_GetLocal2x2State(); + ENUM_4x2_STATE_T localState = SFM_GetLocal4x2State(); CM_UINT64 costlog[2] = {0}; /*- 清空2取缓冲区数据 */ SFM_2oo2_CtrlInit(); diff --git a/TSCP/src/MSCP/PFM/PFM_RemoteUpdate.c b/TSCP/src/MSCP/PFM/PFM_RemoteUpdate.c index dd9d423..8a9f284 100644 --- a/TSCP/src/MSCP/PFM/PFM_RemoteUpdate.c +++ b/TSCP/src/MSCP/PFM/PFM_RemoteUpdate.c @@ -1051,7 +1051,7 @@ ENUM_CM_RETURN PFM_DevStateSend(CM_UINT8 ifCyc) CM_ShortToChar(g_RMUP_Cfg.OUTNET_ID, &txBuf[offset]); offset += 2u; /* 本系热备状态 */ - m2x2State = SFM_2x2_GetLocal2x2State(); + m2x2State = SFM_GetLocal4x2State(); txBuf[offset] = m2x2State; offset += 1u; /* 板卡类型(主机板\通控板\串口板) */ @@ -1881,7 +1881,7 @@ static void PFM_Data_HardWareReastart(CM_UINT8* mData,CM_UINT32 dataOffset,CM_UI CM_UINT8 boottype = 0u;/**<临时 重启请求命令 0x55:未更新重启 0xaa:升级重启 0xd1~d7:硬重启 */ static CM_UINT8 s_boottype = 0u;/**<静态 重启请求命令 0x55:未更新重启 0xaa:升级重启 ,0xd1~d7:硬重启 */ CM_UINT8 recvType = 0u; - ENUM_2x2_STATE_T localState = SFM_2x2_GetLocal2x2State(); + ENUM_4x2_STATE_T localState = SFM_GetLocal4x2State(); /*- 如果帧类型是一次请求确认 */ if(0xa5u == packType) { @@ -1939,7 +1939,7 @@ static void PFM_Data_HardWareReastart(CM_UINT8* mData,CM_UINT32 dataOffset,CM_UI (void)CFM_DarkLog_Storage(DARK_LOG_HEX, TSCP_DARK_WARNING, 4U, DARK_FAULT_CODE_MERGE(REMOTE_UPDATE, DARK_FAULT_CODE_FUN_ORDER_13, TSCP_DARK_ASSERT_2)); MSCP_LOG_MSG("error pack 0xa5 boottype=%d\n",boottype); } - else if((ENUM_2x2_SLAVE == localState) && ((boottype == 0xd1) || (boottype == 0xd7))) + else if((ENUM_4x2_SLAVE == localState) && ((boottype == 0xd1) || (boottype == 0xd7))) { /*- 非法包丢弃 */ s_boottype = 0u; @@ -2064,9 +2064,9 @@ static void PFM_Data_RemoteSwitch(CM_UINT8* mData,CM_UINT32 dataOffset,CM_UINT16 CM_UINT8 boardId = 0u; CM_UINT32 packSwitchCrc = 0u; /*重启请求命令crc*/ CM_UINT8 recvType = 0u; - ENUM_2x2_STATE_T localState = SFM_2x2_GetLocal2x2State(); - ENUM_2x2_STATE_T partnerState = SFM_2x2_GetPartner2x2State(); - static ENUM_2x2_STATE_T s_firstState = ENUM_2x2_SHUTDOWN; + ENUM_4x2_STATE_T localState = SFM_GetLocal4x2State(); + ENUM_4x2_STATE_T partnerState = SFM_2x2_GetPartner2x2State(); + static ENUM_4x2_STATE_T s_firstState = ENUM_4x2_SHUTDOWN; /*- 如果帧类型是一次请求确认 */ if(0xa7u == packType) @@ -2111,7 +2111,7 @@ static void PFM_Data_RemoteSwitch(CM_UINT8* mData,CM_UINT32 dataOffset,CM_UINT16 ,s_switch2xFlag,s_switchRmFlag,g_iostate); (void)CFM_DarkLog_Storage(DARK_LOG_HEX, TSCP_DARK_WARNING, 4U, DARK_FAULT_CODE_MERGE(REMOTE_UPDATE, DARK_FAULT_CODE_FUN_ORDER_14, TSCP_DARK_ASSERT_2)); } - else if(((localState + partnerState) != (ENUM_2x2_SLAVE + ENUM_2x2_MASTER)) || (1u == SFM_2x2_Get_LeastDoubleCom_State())) + else if(((localState + partnerState) != (ENUM_4x2_SLAVE + ENUM_4x2_MASTER)) || (1u == SFM_2x2_Get_LeastDoubleCom_State())) { /*- 切系状态未满足切系条件丢弃错误包 */ s_packSwitchAccredit = 1u; @@ -2123,7 +2123,7 @@ static void PFM_Data_RemoteSwitch(CM_UINT8* mData,CM_UINT32 dataOffset,CM_UINT16 { s_packSwitchAccredit = 0u; s_switchAuthorization = 0u; - s_firstState = SFM_2x2_GetLocal2x2State(); + s_firstState = SFM_GetLocal4x2State(); } /*首次应答*/ recvType = 0x57u; @@ -2194,7 +2194,7 @@ static void PFM_Data_RemoteSwitch(CM_UINT8* mData,CM_UINT32 dataOffset,CM_UINT16 二次请求 主离线 离线放,一次主回失败,一次时候得备回允许(兼容网络延迟 同上) 二次请求 备离线 同上 */ - if(ENUM_2x2_MASTER == s_firstState) + if(ENUM_4x2_MASTER == s_firstState) { /*- 而此请求热备状态不一致 */ s_packSwitchAccredit = 1u; @@ -2211,7 +2211,7 @@ static void PFM_Data_RemoteSwitch(CM_UINT8* mData,CM_UINT32 dataOffset,CM_UINT16 } } /*- 切换条件是否正确 */ - else if(((localState + partnerState) != (ENUM_2x2_SLAVE + ENUM_2x2_MASTER)) || (1u == SFM_2x2_Get_LeastDoubleCom_State())) + else if(((localState + partnerState) != (ENUM_4x2_SLAVE + ENUM_4x2_MASTER)) || (1u == SFM_2x2_Get_LeastDoubleCom_State())) { /*- 切系状态未满足切系条件丢弃错误包 */ s_packSwitchAccredit = 1u; @@ -2228,7 +2228,7 @@ static void PFM_Data_RemoteSwitch(CM_UINT8* mData,CM_UINT32 dataOffset,CM_UINT16 } /*再次应答*/ recvType = 0x58u; - s_firstState = ENUM_2x2_SHUTDOWN; + s_firstState = ENUM_4x2_SHUTDOWN; } /*- 切系命令请求回复 */ PFM_RemoteSwitch_Send(recvType,packTimer,s_packSwitchAccredit,s_switchAuthorization); @@ -2337,7 +2337,7 @@ void PFM_HardWareBoot_OutPut(void) { case 0xd1: /*- 1100:PUB&IOB*/ - if(ENUM_2x2_MASTER == SFM_2x2_GetLocal2x2State()) + if(ENUM_4x2_MASTER == SFM_GetLocal4x2State()) { MSCP_LOG_MSG("PFM_HardWareBoot_OutPut 1\n"); checkselfret = PFM_HardWareBoot_CheckSelf(0x0Cu,ENUM_TYPE_PUB,type); @@ -2378,7 +2378,7 @@ void PFM_HardWareBoot_OutPut(void) case 0xd7: /*- 1111:ALL*/ MSCP_LOG_MSG("PFM_HardWareBoot_OutPut 8\n"); - if(ENUM_2x2_MASTER == SFM_2x2_GetLocal2x2State()) + if(ENUM_4x2_MASTER == SFM_GetLocal4x2State()) { MSCP_LOG_MSG("PFM_HardWareBoot_OutPut 9\n"); checkselfret = PFM_HardWareBoot_CheckSelf(0x0Fu,ENUM_TYPE_ALL,type); @@ -2930,19 +2930,19 @@ CM_UINT8 PFM_CCUSEB_Comstate(CM_UINT8 type) { case 0: /*- 判断红通控是否通信中断 */ - ret = ((g_Hardware_boot_com_state.SYS_Count - g_Hardware_boot_com_state.CCU_A_Count) > 1)?1u:0u; + ret = ((g_Hardware_boot_com_state.SYS_Count - g_Hardware_boot_com_state.CCU_A_Count) > 3)?1u:0u; break; case 1: /*- 判断蓝通控是否通信中断 */ - ret = ((g_Hardware_boot_com_state.SYS_Count - g_Hardware_boot_com_state.CCU_B_Count) > 1)?1u:0u; + ret = ((g_Hardware_boot_com_state.SYS_Count - g_Hardware_boot_com_state.CCU_B_Count) > 3)?1u:0u; break; case 2: /*- 判断红串口是否通信中断 */ - ret = ((g_Hardware_boot_com_state.SYS_Count - g_Hardware_boot_com_state.SEB_A_Count) > 1)?1u:0u; + ret = ((g_Hardware_boot_com_state.SYS_Count - g_Hardware_boot_com_state.SEB_A_Count) > 3)?1u:0u; break; case 3: /*- 判断蓝串口是否通信中断 */ - ret = ((g_Hardware_boot_com_state.SYS_Count - g_Hardware_boot_com_state.SEB_B_Count) > 1)?1u:0u; + ret = ((g_Hardware_boot_com_state.SYS_Count - g_Hardware_boot_com_state.SEB_B_Count) > 3)?1u:0u; break; default: ret = 1u; diff --git a/TSCP/src/MSCP/PFM/PFM_SelfCheck.c b/TSCP/src/MSCP/PFM/PFM_SelfCheck.c index 2de7219..9e89a1e 100644 --- a/TSCP/src/MSCP/PFM/PFM_SelfCheck.c +++ b/TSCP/src/MSCP/PFM/PFM_SelfCheck.c @@ -247,23 +247,30 @@ void PFM_UartComCheck(void) CM_UINT16 offset = 2u; CM_UINT8 SendBuf[20u] = {0u}; CM_UINT32 crc = 0u; - - /*自检发送组包 2字节长度+1字节类型+1字节板卡ID+1字节CPUID+4字节CRC*/ - SendBuf[offset] = (CM_UINT8)ENUM_COM_SelfCheck; - offset++; - SendBuf[offset] = g_PFM_Cfg.BOARD_ID; - offset++; - SendBuf[offset] = g_PFM_Cfg.CPU_ID; - offset++; - CM_ShortToChar((offset - (CM_UINT16)2u),&SendBuf[0u]); - crc = CM_Crc32(SendBuf,(CM_UINT32)offset); - CM_LongToChar(crc,&SendBuf[offset]); - len = offset + 4u; + /*- 是否开启2x2功能 */ + if ((0x55u == g_PFM_Cfg.M_2x2_Enable) && (0x00 == g_PFM_Cfg.M_2x2_Com_Cfg)) + { + /*自检发送组包 2字节长度+1字节类型+1字节板卡ID+1字节CPUID+4字节CRC*/ + SendBuf[offset] = (CM_UINT8)ENUM_COM_SelfCheck; + offset++; + SendBuf[offset] = g_PFM_Cfg.BOARD_ID; + offset++; + SendBuf[offset] = g_PFM_Cfg.CPU_ID; + offset++; + CM_ShortToChar((offset - (CM_UINT16)2u),&SendBuf[0u]); + crc = CM_Crc32(SendBuf,(CM_UINT32)offset); + CM_LongToChar(crc,&SendBuf[offset]); + len = offset + 4u; #ifdef QNX - /*串口数据发送*/ - ret = CM_Com_LocalDataSend(SendBuf,len); - CM_NM_ASSERT(ENUM_CM_TRUE == ret, SELF_CHECK_MODE, DARK_FAULT_CODE_FUN_ORDER_5, TSCP_DARK_ASSERT_1); + /*串口数据发送*/ + ret = CM_Com_LocalDataSend(SendBuf,len); + CM_NM_ASSERT(ENUM_CM_TRUE == ret, SELF_CHECK_MODE, DARK_FAULT_CODE_FUN_ORDER_5, TSCP_DARK_ASSERT_1); #endif + } + else + { + + } } /** diff --git a/TSCP/src/MSCP/SFM/SFM_2oo2.c b/TSCP/src/MSCP/SFM/SFM_2oo2.c index 0d70b3e..a91841f 100644 --- a/TSCP/src/MSCP/SFM/SFM_2oo2.c +++ b/TSCP/src/MSCP/SFM/SFM_2oo2.c @@ -604,151 +604,6 @@ CM_INT32 SFM_2oo2_Currency_App(IN const CM_UINT8 pMyData[], IN CM_INT32 DataLen, return rxLen; } -/** -* @brief 2oo2同步 -* @param pOffset 本机时钟调整量 -* @return 2oo2同步完成的时刻 -* @details -* 通过互发时钟同步报文并检查接收的方式实现2oo2同步 -* 互发的同步报文同时交换了上一次时钟同步的结果 -* 每次2oo2同步之后都会发起一次新的时钟同步(由时钟同步线程接收、处理) -*/ -CM_UINT64 SFM_2oo2_Sync(OUT CM_INT64 *pOffset) -{ - /*- 变量初始化 */ - static CM_INT64 s_tm_mysum = 0; - static CM_INT64 s_tm_peersum = 0; - static CM_UINT32 s_tm_count = 0u; - static CM_UINT32 s_tm_nadd = 0u; - static CM_UINT32 s_tm_nsub = 0u; - CM_INT32 rxLen = 0; /* 接收数据长度 */ - CM_UINT8 myBuf[100] = { 0u }; /* 本机报文缓冲区 */ - CM_UINT8 peerBuf[100] = { 0u }; /* 邻机报文缓冲区 */ - CM_INT64 myDelay = 0; /* 本机延迟时间 */ - CM_INT64 myOffset = 0; /* 本机偏移时间 */ - CM_INT64 peerDelay = 0; - CM_INT64 peerOffset = 0; - CM_INT64 val = 0; - CM_INT64 aveOffset = 0; - CM_INT64 tempval = 0; /*临时变量*/ - CM_UINT64 rxTick = 0u; - CM_UINT64 costlog[20]; /* 耗时记录 */ - ENUM_CM_RETURN ret = ENUM_CM_FALSE; - if(NULL != pOffset) - { - costlog[0] = CM_GetTick(); - /*- 取得上一次校时结果 */ - ret = CFM_2oo2_TimeGet(&myDelay, &myOffset); - /*- 是否成功取得校时结果 */ - if (ENUM_CM_TRUE == ret) - { - /*- 无处理 */ - } - else - { - /*- 校时结果置为无效值 */ - myDelay = (CM_INT64)CM_SIGNED_INT_EXP(100 * CM_MILLION); - myOffset = (CM_INT64)CM_SIGNED_INT_EXP(100 * CM_MILLION); - } - - /*- 2oo2同步,并交换校时结果 */ - CM_64ToChar(myDelay, myBuf); - CM_64ToChar(myOffset, myBuf + 8); - costlog[1] = CM_GetTick(); - MSCP_LOG_MSG("SFM_2oo2_Sync1 = %d us\n", (costlog[1] - costlog[0]) / 1000u); - rxLen = SFM_2oo2_Exchange_Currency(myBuf, (CM_INT32)16, peerBuf, (CM_UINT32)16, ENUM_2oo2_SYNC); - costlog[2] = CM_GetTick(); - MSCP_LOG_MSG("SFM_2oo2_Sync2 = %d us\n", (costlog[2] - costlog[1]) / 1000u); - /*- 记录同步完成时间 */ - rxTick = CM_GetTick(); - - /*- 检查同步数据长度是否一致 */ - CM_ASSERT(16 == rxLen, SFM_2oo2_MODE, DARK_FAULT_CODE_FUN_ORDER_10, TSCP_DARK_ASSERT_1); - - /*- 发起下一次校时备用*/ - CFM_2oo2_TimeReq(); - costlog[3] = CM_GetTick(); - MSCP_LOG_MSG("SFM_2oo2_Sync3 = %d us\n", (costlog[3] - costlog[2]) / 1000u); - (void)CFM_DarkLog_Multiple(DARK_LOG_HEX, TSCP_DARK_2OO2_SYNC_TIME,3u, - sizeof(CM_UINT64),(costlog[1] - costlog[0]) / 1000u, - sizeof(CM_UINT64),(costlog[2] - costlog[1]) / 1000u, - sizeof(CM_UINT64),(costlog[3] - costlog[2]) / 1000u); - peerDelay = (CM_INT64)CM_64FromChar(peerBuf); - peerOffset = (CM_INT64)CM_64FromChar(peerBuf + 8); - *pOffset = 0; - /*- 本次测得的偏移量是否在合理范围内 */ - if ((CM_ABS(myOffset) < (10 * CM_MILLION)) && (CM_ABS(peerOffset) < (10 * CM_MILLION))) - { - /*- 更新环形队列和累计数据 */ - (void)CM_RB_Get(&s_2oo2_TmRing, (CM_UINT16)SFM_2oo2_TM_RING_SIZE, &val); - s_tm_mysum -= val; - (void)CM_RB_Write(&s_2oo2_TmRing, myOffset); - s_tm_mysum += myOffset; - (void)CM_RB_Get(&s_2oo2_TmRing, (CM_UINT16)SFM_2oo2_TM_RING_SIZE, &val); - s_tm_peersum -= val; - (void)CM_RB_Write(&s_2oo2_TmRing, peerOffset); - s_tm_peersum += peerOffset; - /*- 累加同步次数 */ - s_tm_count += 2u; - /*- 是否累计了足够多的数据 */ - if (s_tm_count >= SFM_2oo2_TM_RING_SIZE) - { - /*- 计算平均偏移量 */ - aveOffset = (s_tm_mysum - s_tm_peersum) / (CM_INT64)CM_UNSIGNED_INT_EXP(SFM_2oo2_TM_RING_SIZE); - /*- 本机时钟是否过慢 */ - if (aveOffset > (SFM_2oo2_TM_FIX_VAL * CM_MILLION)) - { - /*- 缩短本周期时间1ms */ - *pOffset = -CM_MILLION; - s_tm_nsub++; - s_tm_count = 0u; - } - /*- 本机时钟是否过快 */ - else if (aveOffset < (-SFM_2oo2_TM_FIX_VAL * CM_MILLION)) - { - /*- 延长本周期时间 1ms */ - *pOffset = CM_MILLION; - s_tm_nadd++; - s_tm_count = 0u; - } - else - { - MSCP_LOG_MSG("aveOffset = %d\n", aveOffset); - } - } - else - { - MSCP_LOG_MSG("s_tm_count = %d\n", s_tm_count); - } - /*- 记录同步结果 */ - tempval = (CM_INT64)CM_UNSIGNED_INT_EXP(SFM_2oo2_TM_RING_SIZE / 2u); - MSCP_LOG_MSG("2oo2 sync:%lld,%lld,%lld,%lld(us)\n", myDelay / tempval, myOffset / tempval, peerDelay / tempval, peerOffset / tempval); - MSCP_LOG_MSG("2oo2 offset_sum:%lld,%lld(us),%d,%d\n", s_tm_mysum / tempval, s_tm_peersum / tempval ,s_tm_nadd,s_tm_nsub); - (void)CFM_DarkLog_Multiple(DARK_LOG_HEX, TSCP_DARK_2OO2_ALIGN_TIME,8u, - sizeof(CM_INT64),myDelay / tempval, - sizeof(CM_INT64),myOffset / tempval, - sizeof(CM_INT64),peerDelay / tempval, - sizeof(CM_INT64),peerOffset / tempval, - sizeof(CM_INT64),s_tm_mysum / tempval, - sizeof(CM_INT64),s_tm_peersum / tempval, - sizeof(CM_UINT32),s_tm_nadd, - sizeof(CM_UINT32),s_tm_nsub); - } - else - { - /*- 无处理 */ - /* 上电初始化阶段尚未校准周期定时器,此时获取的offset无效 */ - MSCP_LOG_MSG("tm sync fail:%lld,%lld\n", myOffset,peerOffset); - } - } - else - { - MSCP_LOG_MSG("pOffset = NULL\n"); - } - /*- 返回同步完成时间 */ - return rxTick; -} - /** * @brief 2oo2发送(用于维护模式下的2取发送) * @param Data 发送报文指针 diff --git a/TSCP/src/MSCP/SFM/SFM_2x2.c b/TSCP/src/MSCP/SFM/SFM_2x2.c index 5a1b74f..297d71f 100644 --- a/TSCP/src/MSCP/SFM/SFM_2x2.c +++ b/TSCP/src/MSCP/SFM/SFM_2x2.c @@ -30,7 +30,9 @@ #include "PFM_ControlFlowCheck.h" #include "DFM_DRV.h" #include "PFM_SelfCheck.h" +#include "CFM_Sync.h" #include "stdarg.h" +#include "Area_state.h" /*通信中断时间和同步超时时间可以相同,此时优先执行通信中断切系*/ @@ -69,9 +71,7 @@ static CM_UINT8 g_RxAppFollowCrc[8]; /**< 收到的应用跟随数据报文 */ CM_INT32 g_TxAppFollow_len = 0; /**< 发送的应用跟随数据长度 */ CM_UINT8 g_TxAppFollow[MSCP_FOLLOW_BUFF_SIZE*2]; /**< 发送的应用跟随数据报文 */ -#define SFM_2x2_TM_RING_SIZE (10) /**< 2x2时钟同步累计的周期数 */ -#define SFM_2x2_TM_FIX_VAL (10) /**< 最小调整偏差 */ -static STRU_CM_RING_T s_2x2_TmRing; /**< 2x2时钟同步数据 */ + static STRU_2X2_CTRL_T s_2x2_Ctrl; /**< 主线程2x2控制 */ static STRU_2X2_STATE_CTRL_T s_2x2_state_Ctrl; /**< 子线程2x2状态控制 */ STRU_2X2_STATE_THRRAD_T s_2x2_thread_Ctrl;/**< 子线程2x2参数 */ @@ -96,7 +96,16 @@ static CM_BOOL s_State_2x2_Analysis(OUT STRU_2X2_STATE_CTRL_T *p_partner_state,C /*2x状态同步*/ static ENUM_CM_RETURN s_State_2x2Sync(OUT STRU_2X2_STATE_CTRL_T *p_partner_state); static void s_State_Transition(void); - +/** +* @brief 2x2切系开关状态初始化 +* @details +*/ +static void s_State_SwitchState_Init(void); +/** +* @brief 2x2切系本地通信状态管理 +* @details +*/ +static ENUM_CM_RETURN s_State_Get_CommunicationState(ENUM_2x2_COM_STATE_T ComState); /** * @brief 2X状态切换独立线程 */ @@ -119,6 +128,52 @@ static void SFM_2x2_Input2oo2Exchange(STRU_2X2_CTRL_T *peerCtrl); /* 判断2x422以及以太网的通信状况并且填写暗文日志 */ static void SFM_2x2_Eth422StateDark(void); + + +// 主要实现函数 +void save_to_file(const char *format, ...) +{ + FILE *fp = NULL; + va_list args; + int result = 0; + + // 检查参数有效性 + if (format == NULL) { + fprintf(stderr, "Error: Invalid parameters\n"); + } + + // 以追加模式打开文件,如果文件不存在则创建 + fp = fopen("2xStateChange", "a"); + if (fp == NULL) { + fprintf(stderr, "Error: Cannot open file \n"); + } + + // 获取可变参数 + va_start(args, format); + + // 将格式化的字符串写入文件 + result = vfprintf(fp, format, args); + + // 添加时间戳(可选) +// if (result >= 0) { +// time_t now; +// struct tm *timeinfo; +// char timestamp[64]; +// +// time(&now); +// timeinfo = localtime(&now); +// strftime(timestamp, sizeof(timestamp), "\n[%Y-%m-%d %H:%M:%S]\n", timeinfo); +// fputs(timestamp, fp); +// } + + // 清理可变参数列表 + va_end(args); + + // 关闭文件 + fclose(fp); + +} + /* 输入周期号同步函数 */ static void SFM_2x2_InputSysCycSyn(STRU_2X2_CTRL_T *peerCtrl){ if(s_2x2_Ctrl.RxInputSysCyc > peerCtrl->RxInputSysCyc) @@ -130,6 +185,8 @@ static void SFM_2x2_InputSysCycSyn(STRU_2X2_CTRL_T *peerCtrl){ { /*- 更新本机输入同步周期号*/ s_2x2_Ctrl.RxInputSysCyc = peerCtrl->RxInputSysCyc; + /**用于记录综合主系ID */ + SFM_2x2_SetMasterID(peerCtrl->MasterID); } else { @@ -150,6 +207,8 @@ static CM_INT32 SFM_2x2_BaseFollowSyn(STRU_2X2_CTRL_T *peerCtrl){ /*需要从邻机接收跟随数据*/ g_RxBaseFollow_len = SFM_2oo2_Exchange_Currency(g_RxBaseFollow, (CM_INT32)0, g_RxBaseFollow, (CM_UINT32)sizeof(g_RxBaseFollow), ENUM_2oo2_INPUT_EX);/*通过输入"0"实现只收不发*/ s_2x2_Ctrl.RxBaseFollowSysCyc = peerCtrl->RxBaseFollowSysCyc; + /**用于记录综合主系ID */ + SFM_2x2_SetMasterID(peerCtrl->MasterID); } else { @@ -267,17 +326,23 @@ static void s_State_2xBefore_2oo2Sync(STRU_2OO2_NET_NO_PACK_T *p_2oo2_Ctrl,OUT S /*- 校验2oo2双机的热备状态是否一致 */ /* 本地状态*/ CM_RE_ASSERT(s_2x2_state_Ctrl.LocalState == p_peer_state->LocalState, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_17, TSCP_DARK_ASSERT_4); - SFM_LOG_MSG_2X("2oo2:MyoffLineCut = %d, OtheroffLineCut = %d\n",s_2x2_state_Ctrl.offLineCounter,p_peer_state->offLineCounter); - CM_RE_ASSERT(s_2x2_state_Ctrl.offLineCounter == p_peer_state->offLineCounter, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_17, TSCP_DARK_ASSERT_5); + /* 对系状态*/ + CM_RE_ASSERT(s_2x2_state_Ctrl.PartnerState == p_peer_state->PartnerState, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_17, TSCP_DARK_ASSERT_10); + /* 预升主计数*/ CM_RE_ASSERT(s_2x2_state_Ctrl.preMasterCounter == p_peer_state->preMasterCounter, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_17, TSCP_DARK_ASSERT_6); /* 本地通信状态,主线程2取同步过*/ - CM_RE_ASSERT(s_2x2_state_Ctrl.LastRxInputSysCyc == p_peer_state->LastRxInputSysCyc, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_17, TSCP_DARK_ASSERT_7); - CM_RE_ASSERT(s_2x2_state_Ctrl.LastFollowCyc == p_peer_state->LastFollowCyc, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_17, TSCP_DARK_ASSERT_8); - CM_RE_ASSERT(s_2x2_state_Ctrl.LastCheckOKCount == p_peer_state->LastCheckOKCount, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_17, TSCP_DARK_ASSERT_10); CM_RE_ASSERT(s_2x2_state_Ctrl.LastLocalState == p_peer_state->LastLocalState, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_17, TSCP_DARK_ASSERT_11); CM_RE_ASSERT(s_2x2_state_Ctrl.LastPartnerState == p_peer_state->LastPartnerState, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_17, TSCP_DARK_ASSERT_12); - CM_RE_ASSERT(s_2x2_state_Ctrl.OutPutCheckFailFlag == p_peer_state->OutPutCheckFailFlag, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_17, TSCP_DARK_ASSERT_13); - CM_RE_ASSERT(s_2x2_state_Ctrl.AppFollowCmpFlag == p_peer_state->AppFollowCmpFlag,SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_17, TSCP_DARK_ASSERT_14); + /*区域状态*/ + CM_RE_ASSERT(s_2x2_state_Ctrl.LocalAreaState == p_peer_state->LocalAreaState, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_17, TSCP_DARK_ASSERT_13); + /*健康度参数*/ + CM_RE_ASSERT(s_2x2_state_Ctrl.LocalCC_Health == p_peer_state->LocalCC_Health, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_17, TSCP_DARK_ASSERT_14); + CM_RE_ASSERT(s_2x2_state_Ctrl.PartnerCC_Health == p_peer_state->PartnerCC_Health, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_17, TSCP_DARK_ASSERT_15); + CM_RE_ASSERT(s_2x2_state_Ctrl.LocalSync_Health == p_peer_state->LocalSync_Health, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_17, TSCP_DARK_ASSERT_16); + CM_RE_ASSERT(s_2x2_state_Ctrl.PartnerSync_Health == p_peer_state->PartnerSync_Health, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_17, TSCP_DARK_ASSERT_17); + /*失步次数*/ + CM_RE_ASSERT(s_2x2_state_Ctrl.LocalOutOfSync == p_peer_state->LocalOutOfSync, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_17, TSCP_DARK_ASSERT_18); + CM_RE_ASSERT(s_2x2_state_Ctrl.LocalSyncFailFlag == p_peer_state->LocalSyncFailFlag, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_17, TSCP_DARK_ASSERT_19); /*同步按钮状态*/ s_2x2_state_Ctrl.PeerSwitchState = p_peer_state->LocalSwitchState; @@ -314,7 +379,7 @@ static void s_State_2xAfter_2oo2Sync(STRU_2OO2_NET_NO_PACK_T *p_2oo2_Ctrl,OUT ST for(i = 0u;i <= MSCP_2X2_COM_THIS_STATE_NUM;i++) { s_2x2_state_Ctrl.PeerComOKCount[i] = p_peer_state->MineComOKCount[i]; - s_2x2_state_Ctrl.PeerUartOKCount[i] = p_peer_state->MineUartOKCount[i]; + s_2x2_state_Ctrl.PeerExtendOKCount[i] = p_peer_state->MineExtendOKCount[i]; } /*- @alias 系内同步收到的状态帧 */ @@ -325,7 +390,11 @@ static void s_State_2xAfter_2oo2Sync(STRU_2OO2_NET_NO_PACK_T *p_2oo2_Ctrl,OUT ST s_2x2_state_Ctrl.RxStateMicroCyc = p_peer_state->RxStateMicroCyc; s_2x2_state_Ctrl.RxStateSysCyc = p_peer_state->RxStateSysCyc; s_2x2_state_Ctrl.PartnerState = p_peer_state->PartnerState; - s_2x2_state_Ctrl.LastPartnerState = p_peer_state->LastPartnerState; + s_2x2_state_Ctrl.LastPartnerState = p_peer_state->LastPartnerState; + /*健康度*/ + s_2x2_state_Ctrl.PartnerCC_Health = p_peer_state->PartnerCC_Health; + s_2x2_state_Ctrl.PartnerSync_Health = p_peer_state->PartnerSync_Health; + //s_2x2_state_Ctrl.PartnerHealth_ChangeFlag = p_peer_state->PartnerHealth_ChangeFlag; /*更新对系所有切系状态*/ s_2x2_state_Ctrl.PartnerSwitchState = p_peer_state->PartnerSwitchState; s_2x2_state_Ctrl.PartPeerSwitchState = p_peer_state->PartPeerSwitchState; @@ -342,10 +411,10 @@ static void s_State_2xAfter_2oo2Sync(STRU_2OO2_NET_NO_PACK_T *p_2oo2_Ctrl,OUT ST /*- 无处理 */ } /*时间同步标志*/ - if(s_2x2_state_Ctrl.TimeSyncFlag != p_peer_state->TimeSyncFlag) + if(s_2x2_state_Ctrl.LocalSync_Health != p_peer_state->LocalSync_Health) { - s_2x2_state_Ctrl.TimeSyncFlag = CM_FALSE; - SFM_LOG_MSG_2X("2oo2:TimeSyncFlag is not sync!\n"); + s_2x2_state_Ctrl.LocalSync_Health = CM_FALSE; + SFM_LOG_MSG_2X("2oo2:LocalSync_Health is not sync!\n"); } /*判断切系状态*/ @@ -370,6 +439,7 @@ static void s_State_2xAfter_2oo2Sync(STRU_2OO2_NET_NO_PACK_T *p_2oo2_Ctrl,OUT ST s_2x2_state_Ctrl.ctrSwitchFlag = 0u; s_2x2_state_Ctrl.aidSwitchFlag = 0u; } + /*设置健康度切系标志位,只在第一周期切换*/ } /** * @brief 2x热备状态解析 @@ -400,10 +470,16 @@ static CM_BOOL s_State_2x2_Analysis(OUT STRU_2X2_STATE_CTRL_T *p_partner_state,C rcv_offset += 4u; p_partner_state->MicroCyc = recvbuf[rcv_offset]; rcv_offset ++; - p_partner_state->LocalState = CM_LongFromChar(&recvbuf[rcv_offset]); - rcv_offset += 4u; - p_partner_state->LastLocalState = CM_LongFromChar(&recvbuf[rcv_offset]); - rcv_offset += 4u; + p_partner_state->LocalState = recvbuf[rcv_offset]; + rcv_offset ++; + p_partner_state->LastLocalState = recvbuf[rcv_offset]; + rcv_offset ++; + p_partner_state->LocalCC_Health = recvbuf[rcv_offset]; + rcv_offset ++; + p_partner_state->LocalSync_Health = recvbuf[rcv_offset]; + rcv_offset ++; +// p_partner_state->LocalHealth_ChangeFlag = recvbuf[rcv_offset]; +// rcv_offset ++; /*解析切系状态*/ p_partner_state->LocalSwitchState = recvbuf[rcv_offset++]; p_partner_state->PeerSwitchState = recvbuf[rcv_offset++]; @@ -436,16 +512,20 @@ static CM_BOOL s_State_2x2_Analysis(OUT STRU_2X2_STATE_CTRL_T *p_partner_state,C if((msglen == (len - 4u - 6u)) && (p_partner_state->LocalID == s_2x2_state_Ctrl.PartnerID) && (p_partner_state->PartnerID == s_2x2_state_Ctrl.LocalID) && - (p_partner_state->SysCyc >= s_2x2_state_Ctrl.RxStateSysCyc) && + //(p_partner_state->SysCyc >= s_2x2_state_Ctrl.RxStateSysCyc) && ((current_time - time_stamp) <= MSCP_2X2_STATE_OVER_TIME)) { - if((p_partner_state->TxSN > s_2x2_state_Ctrl.RxSN)) + if(p_partner_state->TxSN > s_2x2_state_Ctrl.RxSN) { s_2x2_state_Ctrl.RxStateMicroCyc = p_partner_state->MicroCyc; s_2x2_state_Ctrl.RxStateSysCyc = p_partner_state->SysCyc; s_2x2_state_Ctrl.RxSN = p_partner_state->TxSN; s_2x2_state_Ctrl.PartnerState = p_partner_state->LocalState; s_2x2_state_Ctrl.LastPartnerState = p_partner_state->LastLocalState; + /*健康度*/ + s_2x2_state_Ctrl.PartnerCC_Health = p_partner_state->LocalCC_Health; + s_2x2_state_Ctrl.PartnerSync_Health = p_partner_state->LocalSync_Health; + //s_2x2_state_Ctrl.PartnerHealth_ChangeFlag = p_partner_state->LocalHealth_ChangeFlag; /*记录对系所有接收状态*/ s_2x2_state_Ctrl.PartnerSwitchState = p_partner_state->LocalSwitchState; s_2x2_state_Ctrl.PartPeerSwitchState = p_partner_state->PeerSwitchState; @@ -524,11 +604,15 @@ static ENUM_CM_RETURN s_State_2x2Sync(OUT STRU_2X2_STATE_CTRL_T *p_partner_state /*微周期号*/ sendbuf[send_offset++] = s_2x2_state_Ctrl.MicroCyc; /*本机当前状态*/ - CM_LongToChar(s_2x2_state_Ctrl.LocalState, &sendbuf[send_offset]); - send_offset += 4u; + sendbuf[send_offset++] = s_2x2_state_Ctrl.LocalState; /*本机上周期状态*/ - CM_LongToChar(s_2x2_state_Ctrl.LastLocalState, &sendbuf[send_offset]); - send_offset += 4u; + sendbuf[send_offset++] = s_2x2_state_Ctrl.LastLocalState; + /*本机通控健康度*/ + sendbuf[send_offset++] = s_2x2_state_Ctrl.LocalCC_Health; + /*本机同步健康度*/ + sendbuf[send_offset++] = s_2x2_state_Ctrl.LocalSync_Health; + /*本机健康度切系标志*/ + //sendbuf[send_offset++] = s_2x2_state_Ctrl.LocalHealth_ChangeFlag; /*切系按钮状态*/ sendbuf[send_offset++] = s_2x2_state_Ctrl.LocalSwitchState; sendbuf[send_offset++] = s_2x2_state_Ctrl.PeerSwitchState; @@ -545,8 +629,8 @@ static ENUM_CM_RETURN s_State_2x2Sync(OUT STRU_2X2_STATE_CTRL_T *p_partner_state /*2x交互本机2取后的热备状态、按钮状态、通信状态等*/ CFM_2x2_StateChange_Send(sendbuf,(CM_INT32)send_offset); - /*- 串口通信通道向对系发送 */ - CFM_2x2_UartDataSend(sendbuf,(CM_UINT16)send_offset); + /*- 扩展通信通道向对系发送 */ + CFM_2x2_ExtendDataSend(sendbuf,(CM_UINT16)send_offset); sTick = CM_GetTick(); CM_Sleep(MSCP_2X2_STATE_RCV_WITETIME); @@ -578,13 +662,13 @@ static ENUM_CM_RETURN s_State_2x2Sync(OUT STRU_2X2_STATE_CTRL_T *p_partner_state } else { - + ; } }while(rcvlen > 0); curTick2 = CM_GetTick(); do { - rcvlen = CFM_2x2_UartDataRecv(recvbuf,100); + rcvlen = CFM_2x2_ExtendDataRecv(recvbuf,200); if(rcvlen > 0) { /*解析2x数据*/ @@ -592,7 +676,7 @@ static ENUM_CM_RETURN s_State_2x2Sync(OUT STRU_2X2_STATE_CTRL_T *p_partner_state if(CM_TRUE == rtnCheck) { /*更新通信状态*/ - MSCP_UpData_2X_This_ComState(&s_2x2_state_Ctrl.MineUartOKCount[0],s_2x2_state_Ctrl.SysCyc,s_2x2_state_Ctrl.MicroCyc); + MSCP_UpData_2X_This_ComState(&s_2x2_state_Ctrl.MineExtendOKCount[0],s_2x2_state_Ctrl.SysCyc,s_2x2_state_Ctrl.MicroCyc); if(p_partner_state->MicroCyc == s_2x2_state_Ctrl.MicroCyc) { break; @@ -600,7 +684,7 @@ static ENUM_CM_RETURN s_State_2x2Sync(OUT STRU_2X2_STATE_CTRL_T *p_partner_state } else { - SFM_LOG_MSG_2X("2x2Sync:[%d]uart_2x2Sync-LID:0x%x-0x%x,PID:0x%x-0x%x,Scyc:%d-%d,Mcyc:%d-%d,SN:%d-%d\n",s_2x2_state_Ctrl.MicroCyc, + SFM_LOG_MSG_2X("2x2Sync:[%d]Extend_2x2Sync-LID:0x%x-0x%x,PID:0x%x-0x%x,Scyc:%d-%d,Mcyc:%d-%d,SN:%d-%d\n",s_2x2_state_Ctrl.MicroCyc, p_partner_state->LocalID,s_2x2_state_Ctrl.LocalID,p_partner_state->PartnerID,s_2x2_state_Ctrl.PartnerID, p_partner_state->SysCyc,s_2x2_state_Ctrl.RxStateSysCyc,p_partner_state->MicroCyc,s_2x2_state_Ctrl.MicroCyc, p_partner_state->TxSN,s_2x2_state_Ctrl.RxSN); @@ -621,6 +705,7 @@ static ENUM_CM_RETURN s_State_2x2Sync(OUT STRU_2X2_STATE_CTRL_T *p_partner_state sizeof(CM_UINT32),(curTick3 - sTick)/1000000u); return retError; } + /** * @brief 2x2状态机更新 * @details @@ -631,61 +716,18 @@ static void s_State_Transition(void) { /*- 变量初始化 */ CM_UINT8 boardID = 0u; /* 板卡ID */ - static CM_UINT32 dropCount = 0u; - ENUM_CM_RETURN Flag_Sick_Down = ENUM_CM_FALSE; /* TODO:如果自己健康度不足以升主 */ ENUM_2x2_STATE_T TempState = ENUM_2x2_SHUTDOWN; /*临时状态*/ boardID = g_PFM_Cfg.BOARD_ID; - SFM_LOG_MSG_2X("Transition:[%d]MineCom:%d-%d:%d-%d:%d-%d\r\n",s_2x2_state_Ctrl.MicroCyc,\ - s_2x2_state_Ctrl.MineComOKCount[0].SysCyc,s_2x2_state_Ctrl.MineComOKCount[0].MicroCyc,\ - s_2x2_state_Ctrl.MineComOKCount[1].SysCyc,s_2x2_state_Ctrl.MineComOKCount[1].MicroCyc,\ - s_2x2_state_Ctrl.MineComOKCount[2].SysCyc,s_2x2_state_Ctrl.MineComOKCount[2].MicroCyc); - SFM_LOG_MSG_2X("Transition:[%d]PeerCom:%d-%d:%d-%d:%d-%d\r\n",s_2x2_state_Ctrl.MicroCyc,\ - s_2x2_state_Ctrl.PeerComOKCount[0].SysCyc,s_2x2_state_Ctrl.PeerComOKCount[0].MicroCyc,\ - s_2x2_state_Ctrl.PeerComOKCount[1].SysCyc,s_2x2_state_Ctrl.PeerComOKCount[1].MicroCyc,\ - s_2x2_state_Ctrl.PeerComOKCount[2].SysCyc,s_2x2_state_Ctrl.PeerComOKCount[2].MicroCyc); - SFM_LOG_MSG_2X("Transition:[%d]MineUart:%d-%d:%d-%d:%d-%d\r\n",s_2x2_state_Ctrl.MicroCyc,\ - s_2x2_state_Ctrl.MineUartOKCount[0].SysCyc,s_2x2_state_Ctrl.MineUartOKCount[0].MicroCyc,\ - s_2x2_state_Ctrl.MineUartOKCount[1].SysCyc,s_2x2_state_Ctrl.MineUartOKCount[1].MicroCyc,\ - s_2x2_state_Ctrl.MineUartOKCount[2].SysCyc,s_2x2_state_Ctrl.MineUartOKCount[2].MicroCyc); - SFM_LOG_MSG_2X("Transition:[%d]PeerUart:%d-%d:%d-%d:%d-%d\r\n",s_2x2_state_Ctrl.MicroCyc,\ - s_2x2_state_Ctrl.PeerUartOKCount[0].SysCyc,s_2x2_state_Ctrl.PeerUartOKCount[0].MicroCyc,\ - s_2x2_state_Ctrl.PeerUartOKCount[1].SysCyc,s_2x2_state_Ctrl.PeerUartOKCount[1].MicroCyc,\ - s_2x2_state_Ctrl.PeerUartOKCount[2].SysCyc,s_2x2_state_Ctrl.PeerUartOKCount[2].MicroCyc); - /*记录暗文日志*/ - (void)CFM_DarkLog_Multiple(DARK_LOG_HEX, TSCP_DARK_2X2_COM_STATE,25u, - sizeof(CM_UINT8),s_2x2_state_Ctrl.MicroCyc, - sizeof(CM_UINT32),s_2x2_state_Ctrl.MineComOKCount[0].SysCyc,sizeof(CM_UINT8),s_2x2_state_Ctrl.MineComOKCount[0].MicroCyc,\ - sizeof(CM_UINT32),s_2x2_state_Ctrl.MineComOKCount[1].SysCyc,sizeof(CM_UINT8),s_2x2_state_Ctrl.MineComOKCount[1].MicroCyc,\ - sizeof(CM_UINT32),s_2x2_state_Ctrl.MineComOKCount[2].SysCyc,sizeof(CM_UINT8),s_2x2_state_Ctrl.MineComOKCount[2].MicroCyc, - sizeof(CM_UINT32),s_2x2_state_Ctrl.PeerComOKCount[0].SysCyc,sizeof(CM_UINT8),s_2x2_state_Ctrl.PeerComOKCount[0].MicroCyc,\ - sizeof(CM_UINT32),s_2x2_state_Ctrl.PeerComOKCount[1].SysCyc,sizeof(CM_UINT8),s_2x2_state_Ctrl.PeerComOKCount[1].MicroCyc,\ - sizeof(CM_UINT32),s_2x2_state_Ctrl.PeerComOKCount[2].SysCyc,sizeof(CM_UINT8),s_2x2_state_Ctrl.PeerComOKCount[2].MicroCyc, - sizeof(CM_UINT32),s_2x2_state_Ctrl.MineUartOKCount[0].SysCyc,sizeof(CM_UINT8),s_2x2_state_Ctrl.MineUartOKCount[0].MicroCyc,\ - sizeof(CM_UINT32),s_2x2_state_Ctrl.MineUartOKCount[1].SysCyc,sizeof(CM_UINT8),s_2x2_state_Ctrl.MineUartOKCount[1].MicroCyc,\ - sizeof(CM_UINT32),s_2x2_state_Ctrl.MineUartOKCount[2].SysCyc,sizeof(CM_UINT8),s_2x2_state_Ctrl.MineUartOKCount[2].MicroCyc, - sizeof(CM_UINT32),s_2x2_state_Ctrl.PeerUartOKCount[0].SysCyc,sizeof(CM_UINT8),s_2x2_state_Ctrl.PeerUartOKCount[0].MicroCyc,\ - sizeof(CM_UINT32),s_2x2_state_Ctrl.PeerUartOKCount[1].SysCyc,sizeof(CM_UINT8),s_2x2_state_Ctrl.PeerUartOKCount[1].MicroCyc,\ - sizeof(CM_UINT32),s_2x2_state_Ctrl.PeerUartOKCount[2].SysCyc,sizeof(CM_UINT8),s_2x2_state_Ctrl.PeerUartOKCount[2].MicroCyc); + (void)s_State_Get_CommunicationState(ENUM_2x2_COM_LOG); /*- 是否与对系通信中断 */ - if ((CM_FALSE == MSCP_Get_2X_VagueCom_State(&s_2x2_state_Ctrl.MineComOKCount[0])) && - (CM_FALSE == MSCP_Get_2X_VagueCom_State(&s_2x2_state_Ctrl.PeerComOKCount[0])) && - (CM_FALSE == MSCP_Get_2X_VagueCom_State(&s_2x2_state_Ctrl.MineUartOKCount[0])) && - (CM_FALSE == MSCP_Get_2X_VagueCom_State(&s_2x2_state_Ctrl.PeerUartOKCount[0])) && - ((s_2x2_thread_Ctrl.number_Cyc - 2) <= s_2x2_state_Ctrl.MicroCyc)) + if (ENUM_CM_FALSE == s_State_Get_CommunicationState(ENUM_2x2_COM_VAGUE_STATE)) { - /*- 当本系为离线状态,失去链接后对系最后的状态为主系或者备系,本系离线系宕机 */ - if((ENUM_2x2_SLAVE == s_2x2_state_Ctrl.PartnerState) || (ENUM_2x2_MASTER == s_2x2_state_Ctrl.PartnerState)) - { - if(ENUM_2x2_OFFLINE == s_2x2_state_Ctrl.LocalState) - { - CM_ASSERT(0, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_1, TSCP_DARK_ASSERT_1); - } - } /*- 将对系状态置为宕机 */ s_2x2_state_Ctrl.PartnerState = ENUM_2x2_SHUTDOWN; /*通信SN号清空-防止对系重新上电后不接收新的SN号*/ s_2x2_state_Ctrl.RxSN = 0u; + s_2x2_state_Ctrl.RxStateSysCyc = 0; } else { @@ -699,115 +741,66 @@ static void s_State_Transition(void) CM_RE_ASSERT(0, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_1, TSCP_DARK_ASSERT_2); /*- 返回 */ break; - case ENUM_2x2_OFFLINE: /*-< 离线 */ - /*- 自己健康度是否不足 */ - if (ENUM_CM_TRUE == Flag_Sick_Down) + case ENUM_2x2_INIT:/*-< 初始化 */ + if(s_2x2_state_Ctrl.LocalCC_Health > 0) { - /*- 自己保持离线 */ - } - /*- 对系是否为主 */ - else if (ENUM_2x2_MASTER == s_2x2_state_Ctrl.PartnerState) - { - /*- 对方是主,尝试与对方同步 */ - /*- 是否与对系同步成功 */ - if ((s_2x2_state_Ctrl.SysCyc == (s_2x2_state_Ctrl.LastRxInputSysCyc + 1)) && - (s_2x2_state_Ctrl.SysCyc == (s_2x2_state_Ctrl.LastFollowCyc + 1)) && - (s_2x2_state_Ctrl.SysCyc == s_2x2_state_Ctrl.LastCheckOKCount) && - (0u == s_2x2_state_Ctrl.OutPutCheckFailFlag) && - (CM_TRUE == s_2x2_state_Ctrl.TimeSyncFlag) && - (0u == s_2x2_state_Ctrl.AppFollowCmpFlag)) - { - /*- 同步成功自己转为备系 */ - s_2x2_state_Ctrl.LocalState = ENUM_2x2_SLAVE; - SFM_LOG_MSG_2X("Transition:2x2:OFFLINE>>>>>>>SLAVE\n"); - } - else - { - /*- 无处理 */ - SFM_LOG_MSG_2X("Transition:2x2:OFFLINE>SLAVE SysCyc:%d,BF:%d,AF:%d,COK:%d,OUT:%d,TS:%d,AFC:%d\n", - s_2x2_state_Ctrl.SysCyc,s_2x2_state_Ctrl.LastRxInputSysCyc, - s_2x2_state_Ctrl.LastCheckOKCount,s_2x2_state_Ctrl.OutPutCheckFailFlag, - s_2x2_state_Ctrl.TimeSyncFlag, - s_2x2_state_Ctrl.AppFollowCmpFlag); - } - /*记录暗文日志*/ - (void)CFM_DarkLog_Multiple(DARK_LOG_HEX, TSCP_DARK_2X2_FOLLOW_STATE,7u, - sizeof(CM_UINT32),s_2x2_state_Ctrl.SysCyc, - sizeof(CM_UINT32),s_2x2_state_Ctrl.LastRxInputSysCyc, - sizeof(CM_UINT32),s_2x2_state_Ctrl.LastFollowCyc, - sizeof(CM_UINT32),s_2x2_state_Ctrl.LastCheckOKCount, - sizeof(CM_UINT32),s_2x2_state_Ctrl.OutPutCheckFailFlag, - sizeof(CM_UINT8),s_2x2_state_Ctrl.TimeSyncFlag, - sizeof(CM_UINT8),s_2x2_state_Ctrl.AppFollowCmpFlag); - } - /*- 对系是否为预升主 */ - else if (ENUM_2x2_PRE_MASTER == s_2x2_state_Ctrl.PartnerState) - { - /*对方是预升主,等待对方升主*/ - } - /*- 本系的离线计时是否达到离线保持门限 */ - else if (s_2x2_state_Ctrl.offLineCounter >= (MSCP_2x2_OFFLINE_WAIT * (s_2x2_thread_Ctrl.number_Cyc - 1u))) - { - /*对系离线持续足够长时间,自己才可以转为预升主*/ - /*TODO:钥匙允许自己升主*/ - /*- 本系转为预升主 */ + /*- 健康度正常切换为预升主 */ s_2x2_state_Ctrl.LocalState = ENUM_2x2_PRE_MASTER; - SFM_LOG_MSG_2X("Transition:2x2:OFFLINE>>>>>>>PRE_MASTER\n"); - } - else - { - /*- 保持离线 */ + SFM_LOG_MSG_2X("Transition:2x2:INIT>>>>>>>PRE_MASTER\n"); + save_to_file("Transition:2x2:INIT>>>>>>>PRE_MASTER\n"); } - /*- @alias 更新离线计时器 */ - if (ENUM_2x2_OFFLINE != s_2x2_state_Ctrl.LocalState) + else { - /*如果自己将离开离线状态,复位离线计时器*/ - s_2x2_state_Ctrl.offLineCounter = 0u; + /*保持初始化状态*/ + SFM_LOG_MSG_2X("Transition:2x2:INIT>>>>>>>INIT(LocalCC_Health = %d)\n",s_2x2_state_Ctrl.LocalCC_Health); + save_to_file("Transition:2x2:INIT>>>>>>>INIT(LocalCC_Health = %d)\n",s_2x2_state_Ctrl.LocalCC_Health); } - else if ((ENUM_2x2_OFFLINE == s_2x2_state_Ctrl.PartnerState) || (ENUM_2x2_SHUTDOWN == s_2x2_state_Ctrl.PartnerState)) + break; + case ENUM_2x2_OFFLINE: /*-< 离线 */ + /*- 对方是主,尝试与对方同步 主可能不在本地 所以先判这个条件 */ + /*- 是否与主同步成功 */ + if ((CM_TRUE == s_2x2_state_Ctrl.LocalSync_Health) && (s_2x2_state_Ctrl.LocalCC_Health > 0)) { - /*如果对系宕机或离线,累积离线计时*/ - if (s_2x2_state_Ctrl.offLineCounter <= (MSCP_2x2_OFFLINE_WAIT * (s_2x2_thread_Ctrl.number_Cyc - 1u))) + /* 对系是主系 直接升备系*/ + if(ENUM_2x2_MASTER == s_2x2_state_Ctrl.PartnerState) { - s_2x2_state_Ctrl.offLineCounter++; + s_2x2_state_Ctrl.LocalState = ENUM_2x2_SLAVE; + SFM_LOG_MSG_2X("Transition:2x2:OFFLINE>>>>>>>SLAVE(PartnerState is MASTER)\n"); + save_to_file("Transition:2x2:OFFLINE>>>>>>>SLAVE(PartnerState is MASTER)\n"); } else { - /*- 无处理 */ + s_2x2_state_Ctrl.LocalState = ENUM_2x2_PRE_MASTER; + SFM_LOG_MSG_2X("Transition:2x2:OFFLINE>>>>>>>PRE_MASTER(PartnerState != MASTER)\n"); + save_to_file("Transition:2x2:OFFLINE>>>>>>>PRE_MASTER(PartnerState != MASTER)\n"); } } else { - /*不满足条件,复位离线计时*/ - s_2x2_state_Ctrl.offLineCounter = 0u; + /*- 无处理 */ + SFM_LOG_MSG_2X("Transition:2x2:OFFLINE>>>>>>>SLAVE FAIL LocalSync:%d,CC:%d\n",s_2x2_state_Ctrl.LocalSync_Health,s_2x2_state_Ctrl.LocalCC_Health); } /*- 返回 */ break; case ENUM_2x2_PRE_MASTER:/*-< 预升主 */ - /*- 自己是否健康度不足 */ - if (ENUM_CM_TRUE == Flag_Sick_Down) - { - /*- 本系转离线 */ - s_2x2_state_Ctrl.LocalState = ENUM_2x2_OFFLINE; - SFM_LOG_MSG_2X("Transition:2x2:PRE_MASTER>>>>>>>OFFLINE(Unhealthy)\n"); - } - /*TODO:如果钥匙不允许自己升主,则自己离线*/ /*- 对系是否为主或备 */ - else if ((ENUM_2x2_MASTER == s_2x2_state_Ctrl.PartnerState) || (ENUM_2x2_SLAVE == s_2x2_state_Ctrl.PartnerState)) + if ((ENUM_2x2_MASTER == s_2x2_state_Ctrl.PartnerState) || (ENUM_2x2_SLAVE == s_2x2_state_Ctrl.PartnerState)) { /*只要对方状态好,自己就不再预升主(走到这里其实对方不可能是备系,故障-安全措施)*/ /*- 本系转离线 */ s_2x2_state_Ctrl.LocalState = ENUM_2x2_OFFLINE; SFM_LOG_MSG_2X("Transition:2x2:PRE_MASTER>>>>>>>OFFLINE(Other Master)\n"); + save_to_file("Transition:2x2:PRE_MASTER>>>>>>>OFFLINE(Other Master)\n"); } /*- 是否是本系为B系且对系预升主 */ - else if ((ENUM_2x2_PRE_MASTER == s_2x2_state_Ctrl.PartnerState) && (MSCP_MAIN_B == boardID)) + else if ((ENUM_2x2_PRE_MASTER == s_2x2_state_Ctrl.PartnerState) && ((MSCP_MAIN_B == boardID) || (MSCP_MAIN_D == boardID))) { /*如果对系是预升主,而自己是B系,则让给对系*/ /*- 本系转离线 */ s_2x2_state_Ctrl.LocalState = ENUM_2x2_OFFLINE; SFM_LOG_MSG_2X("Transition:2x2:PRE_MASTER>>>>>>>OFFLINE(Other A will Master)\n"); + save_to_file("Transition:2x2:PRE_MASTER>>>>>>>OFFLINE(Other A will Master)\n"); } /*- 预升主计时是否达到了预升主等待时间 */ else if (s_2x2_state_Ctrl.preMasterCounter >= (MSCP_2x2_PREMASTER_WAIT * (s_2x2_thread_Ctrl.number_Cyc - 1u))) @@ -816,10 +809,13 @@ static void s_State_Transition(void) /*- 本系升主 */ s_2x2_state_Ctrl.LocalState = ENUM_2x2_MASTER; SFM_LOG_MSG_2X("Transition:2x2:PRE_MASTER>>>>>>>MASTER!!!(Will Master Success)\n"); + save_to_file("Transition:2x2:PRE_MASTER>>>>>>>MASTER!!!(Will Master Success)\n"); } else { /*- 保持预升主 */ + SFM_LOG_MSG_2X("Transition:2x2:PRE_MASTER>>>>>>>PRE_MASTER(keep count = %d)\n",s_2x2_state_Ctrl.preMasterCounter); + save_to_file("Transition:2x2:PRE_MASTER>>>>>>>PRE_MASTER(keep count = %d)\n",s_2x2_state_Ctrl.preMasterCounter); } /*- @alias 更新预升主计时器 */ @@ -842,40 +838,17 @@ static void s_State_Transition(void) /*- 返回 */ break; case ENUM_2x2_MASTER:/*-< 主系 */ - /*如果健康度表示需要切系,则自己降离线*/ - /*- 自己是否健康度不足 */ - if (ENUM_CM_TRUE == Flag_Sick_Down) - { - /*- 本系降离线 */ - s_2x2_state_Ctrl.LocalState = ENUM_2x2_OFFLINE; - s_2x2_state_Ctrl.LocalSwitchState = ENUM_2x2_SWITCH_CLOSE; - s_2x2_state_Ctrl.PeerSwitchState = ENUM_2x2_SWITCH_CLOSE; - s_2x2_state_Ctrl.PartnerSwitchState = ENUM_2x2_SWITCH_CLOSE; - s_2x2_state_Ctrl.PartPeerSwitchState = ENUM_2x2_SWITCH_CLOSE; - s_2x2_state_Ctrl.LocalAIDSwitchState = ENUM_2x2_AIDSWITCH_OVER; - s_2x2_state_Ctrl.PeerAIDSwitchState = ENUM_2x2_AIDSWITCH_OVER; - s_2x2_state_Ctrl.PartnerAIDSwitchState = ENUM_2x2_AIDSWITCH_OVER; - s_2x2_state_Ctrl.PartPeerAIDSwitchState = ENUM_2x2_AIDSWITCH_OVER; - s_2x2_state_Ctrl.ctrSwitchFlag = 0u; - s_2x2_state_Ctrl.aidSwitchFlag = 0u; -#if 0 - s_2x2_state_Ctrl.RxBaseFollowSysCyc = 0u; /**< 收到的对系跟随数据的周期号,2oo2交换 */ - s_2x2_state_Ctrl.RxAppFollowSysCyc = 0u; /**< 收到的对系应用跟随数据的周期号,2oo2交换 */ - s_2x2_state_Ctrl.LastFollowCyc = 0u; /**< 上次进行平台跟随的时间,2oo2比较,*/ - s_2x2_state_Ctrl.LastAppFollowCyc = 0u; /**< 上次进行应用跟随的时间,2oo2比较,*/ -#endif - SFM_LOG_MSG_2X("Transition:2x2:MASTER>>>>>>>OFFLINE(Unhealthy)\n"); - } - else if(((ENUM_2x2_MASTER == s_2x2_state_Ctrl.PartnerState) || (ENUM_2x2_SLAVE == s_2x2_state_Ctrl.PartnerState)) && /*对系为备系或主系*/ - ((ENUM_CM_TRUE == MSCP_Get_2X_Com_State(&s_2x2_state_Ctrl.MineComOKCount[0],0u)) || - (ENUM_CM_TRUE == MSCP_Get_2X_Com_State(&s_2x2_state_Ctrl.PeerComOKCount[0],0u)) || - (ENUM_CM_TRUE == MSCP_Get_2X_Com_State(&s_2x2_state_Ctrl.MineUartOKCount[0],0u)) || - (ENUM_CM_TRUE == MSCP_Get_2X_Com_State(&s_2x2_state_Ctrl.PeerUartOKCount[0],0u))) && /*本周期任一通道正常通信*/ + /*如果健康度表示需要切系,则自己降离线 */ + if(((ENUM_2x2_MASTER == s_2x2_state_Ctrl.PartnerState) || (ENUM_2x2_SLAVE == s_2x2_state_Ctrl.PartnerState)) && /*对系为备系或主系*/ + (ENUM_CM_TRUE == s_State_Get_CommunicationState(ENUM_2x2_COM_EXIST_1_LINE))&&/*本周期任一通道正常通信*/ ((s_2x2_state_Ctrl.RxStateMicroCyc != s_2x2_state_Ctrl.MicroCyc) || (s_2x2_state_Ctrl.RxStateSysCyc != s_2x2_state_Ctrl.SysCyc)))/*接收对系周期号错误*/ { /*防护因旧数据导致的双主问题*/ s_2x2_state_Ctrl.LocalState = ENUM_2x2_OFFLINE; - SFM_LOG_MSG_2X("Transition:2x2:MASTER>>>>>>>OFFLINE!!!(Old Data)\n"); + SFM_LOG_MSG_2X("Transition:2x2:MASTER>>>>>>>OFFLINE!!!(Old Data PartnerState = %d Rx:MyMicroCyc %d %d Rx:MyCyc %d %d)\n",s_2x2_state_Ctrl.PartnerState, s_2x2_state_Ctrl.RxStateMicroCyc, \ + s_2x2_state_Ctrl.MicroCyc, s_2x2_state_Ctrl.RxStateSysCyc, s_2x2_state_Ctrl.SysCyc ); + save_to_file("Transition:2x2:MASTER>>>>>>>OFFLINE!!!(Old Data PartnerState = %d Rx:MyMicroCyc %d %d Rx:MyCyc %d %d)\n",s_2x2_state_Ctrl.PartnerState, s_2x2_state_Ctrl.RxStateMicroCyc, \ + s_2x2_state_Ctrl.MicroCyc, s_2x2_state_Ctrl.RxStateSysCyc, s_2x2_state_Ctrl.SysCyc ); /* CM_RE_ASSERT(0, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_1, TSCP_DARK_ASSERT_4); */ } else if(ENUM_2x2_MASTER == s_2x2_state_Ctrl.PartnerState) @@ -886,51 +859,74 @@ static void s_State_Transition(void) /*- 检测到对系是主系,本系宕机*/ s_2x2_state_Ctrl.LocalState = ENUM_2x2_SHUTDOWN; SFM_LOG_MSG_2X("Transition:2x2:MASTER>>>>>>>Double MASTER!!!(Shut Down)\n"); + save_to_file("Transition:2x2:MASTER>>>>>>>Double MASTER!!!(Shut Down)\n"); CM_RE_ASSERT(0, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_1, TSCP_DARK_ASSERT_3); } else { /*恢复上周期状态*/ SFM_LOG_MSG_2X("Transition:2x2:Double MASTER Recovery!!!(Last State)\n"); + save_to_file("Transition:2x2:Double MASTER Recovery!!!(Last State)\n"); s_2x2_state_Ctrl.LocalState = s_2x2_state_Ctrl.LastLocalState; TempState = s_2x2_state_Ctrl.LastPartnerState; s_2x2_state_Ctrl.LastPartnerState = s_2x2_state_Ctrl.PartnerState; s_2x2_state_Ctrl.PartnerState = TempState; } + } + /*备地主,跟随失败降跟随,2x无此场景,由区域判断*/ + /*主-备,第0周期判断是否主动切系*/ + else if(0u == s_2x2_state_Ctrl.MicroCyc) + { + /*健康度切系1:主系同步失败场景*/ + if((ENUM_2x2_SLAVE == s_2x2_state_Ctrl.PartnerState) && (CM_TRUE == s_2x2_state_Ctrl.PartnerSync_Health) && (CM_FALSE == s_2x2_state_Ctrl.LocalSync_Health)) + { + /*- 检测到对系是备系,且同步成功,主系同步失败降为跟随*/ + s_2x2_state_Ctrl.LocalState = ENUM_2x2_OFFLINE; + SFM_LOG_MSG_2X("Transition:2x2:MASTER>>>>>>>OFFLINE(Health not enough)\n"); + save_to_file("Transition:2x2:MASTER>>>>>>>OFFLINE(Health not enough)\n"); - } - else if((ENUM_2x2_SLAVE == s_2x2_state_Ctrl.PartnerState) && (ENUM_2x2_SWITCH_OPEN == s_2x2_state_Ctrl.LocalSwitchState) && - (ENUM_2x2_SWITCH_OPEN == s_2x2_state_Ctrl.PartnerSwitchState) && (1u == s_2x2_state_Ctrl.ctrSwitchFlag) && (0u == s_2x2_state_Ctrl.MicroCyc)) - { - /*- 检测到对系是备系,且双系切系按钮状态为ENUM_2x2_SWITCH_OPEN,主系降为备系*/ - s_2x2_state_Ctrl.LocalState = ENUM_2x2_SLAVE; - s_2x2_state_Ctrl.LocalSwitchState = ENUM_2x2_SWITCH_CLOSE; - s_2x2_state_Ctrl.PeerSwitchState = ENUM_2x2_SWITCH_CLOSE; - s_2x2_state_Ctrl.PartnerSwitchState = ENUM_2x2_SWITCH_CLOSE; - s_2x2_state_Ctrl.PartPeerSwitchState = ENUM_2x2_SWITCH_CLOSE; - s_2x2_state_Ctrl.LocalAIDSwitchState = ENUM_2x2_AIDSWITCH_OVER; - s_2x2_state_Ctrl.PeerAIDSwitchState = ENUM_2x2_AIDSWITCH_OVER; - s_2x2_state_Ctrl.PartnerAIDSwitchState = ENUM_2x2_AIDSWITCH_OVER; - s_2x2_state_Ctrl.PartPeerAIDSwitchState = ENUM_2x2_AIDSWITCH_OVER; - s_2x2_state_Ctrl.ctrSwitchFlag = 0u; - s_2x2_state_Ctrl.aidSwitchFlag = 0u; - SFM_LOG_MSG_2X("Transition:2x2:MASTER>>>>>>>SLAVE(SWITCH)\n"); - } - else if((ENUM_2x2_SLAVE == s_2x2_state_Ctrl.PartnerState) && (1u == s_2x2_state_Ctrl.aidSwitchFlag) && (0u == s_2x2_state_Ctrl.MicroCyc)) - { - /*- 检测到对系是备系,且允许AID切系, 主系降为备系*/ - s_2x2_state_Ctrl.LocalState = ENUM_2x2_SLAVE; - s_2x2_state_Ctrl.LocalSwitchState = ENUM_2x2_SWITCH_CLOSE; - s_2x2_state_Ctrl.PeerSwitchState = ENUM_2x2_SWITCH_CLOSE; - s_2x2_state_Ctrl.PartnerSwitchState = ENUM_2x2_SWITCH_CLOSE; - s_2x2_state_Ctrl.PartPeerSwitchState = ENUM_2x2_SWITCH_CLOSE; - s_2x2_state_Ctrl.LocalAIDSwitchState = ENUM_2x2_AIDSWITCH_OVER; - s_2x2_state_Ctrl.PeerAIDSwitchState = ENUM_2x2_AIDSWITCH_OVER; - s_2x2_state_Ctrl.PartnerAIDSwitchState = ENUM_2x2_AIDSWITCH_OVER; - s_2x2_state_Ctrl.PartPeerAIDSwitchState = ENUM_2x2_AIDSWITCH_OVER; - s_2x2_state_Ctrl.ctrSwitchFlag = 0u; - s_2x2_state_Ctrl.aidSwitchFlag = 0u; - SFM_LOG_MSG_2X("Transition:2x2:MASTER>>>>>>>SLAVE(AID SWITCH)\n"); + } + /*健康度切系2:本机通控通信异常*/ + else if((ENUM_2x2_SLAVE == s_2x2_state_Ctrl.PartnerState) && (0 == s_2x2_state_Ctrl.LocalCC_Health) && (0 < s_2x2_state_Ctrl.PartnerCC_Health)) + { + s_2x2_state_Ctrl.LocalState = ENUM_2x2_OFFLINE; + SFM_LOG_MSG_2X("Transition:2x2:MASTER>>>>>>>OFFLINE(Local CC_Health not enough)\n"); + save_to_file("Transition:2x2:MASTER>>>>>>>OFFLINE(Local CC_Health not enough)\n"); + } + /*健康度切系3:本机通控通信异常,区域健康度切系,存在备地即降跟随*/ + else if((0 == s_2x2_state_Ctrl.LocalCC_Health) && (CM_TRUE == s_2x2_state_Ctrl.Area_Slave_Is_Exist)) + { + s_2x2_state_Ctrl.LocalState = ENUM_2x2_OFFLINE; + SFM_LOG_MSG_2X("Transition:2x2:MASTER>>>>>>>OFFLINE(Area CC_Health not enough)\n"); + save_to_file("Transition:2x2:MASTER>>>>>>>OFFLINE(Area CC_Health not enough)\n"); + } + /*手动切系*/ + else if((ENUM_2x2_SLAVE == s_2x2_state_Ctrl.PartnerState) && ((1u == s_2x2_state_Ctrl.ctrSwitchFlag) || (1u == s_2x2_state_Ctrl.aidSwitchFlag))) + { + if((ENUM_CM_TRUE == s_State_Get_CommunicationState(ENUM_2x2_COM_SWITCH_CONDITION)) && + (CM_TRUE == s_2x2_state_Ctrl.LocalSync_Health) && (CM_TRUE == s_2x2_state_Ctrl.PartnerSync_Health) && + (0 < s_2x2_state_Ctrl.LocalCC_Health) && (0 < s_2x2_state_Ctrl.PartnerCC_Health)) + { + /*- 检测到对系是备系,且允许切系,主系降为备系*/ + s_2x2_state_Ctrl.LocalState = ENUM_2x2_SLAVE; + SFM_LOG_MSG_2X("Transition:2x2:MASTER>>>>>>>SLAVE(SWITCH:0x%x,AID:0x%x)\n",s_2x2_state_Ctrl.ctrSwitchFlag,s_2x2_state_Ctrl.aidSwitchFlag); + save_to_file("Transition:2x2:MASTER>>>>>>>SLAVE(SWITCH:0x%x,AID:0x%x)\n",s_2x2_state_Ctrl.ctrSwitchFlag,s_2x2_state_Ctrl.aidSwitchFlag); + } + else + { + SFM_LOG_MSG_2X("Transition:2x2:MASTER>>>>>>>Do Not Change(SWITCH:0x%x,AID:0x%x,COM:0x%x,LSH:%d,PSH:%d,LCCH:%d,PCCH:%d)\n",s_2x2_state_Ctrl.ctrSwitchFlag,s_2x2_state_Ctrl.aidSwitchFlag, + s_State_Get_CommunicationState(ENUM_2x2_COM_SWITCH_CONDITION),s_2x2_state_Ctrl.LocalSync_Health,s_2x2_state_Ctrl.PartnerSync_Health, + s_2x2_state_Ctrl.LocalCC_Health,s_2x2_state_Ctrl.PartnerCC_Health); + save_to_file("Transition:2x2:MASTER>>>>>>>Do Not Change(SWITCH:0x%x,AID:0x%x,COM:0x%x,LSH:%d,PSH:%d,LCCH:%d,PCCH:%d)\n",s_2x2_state_Ctrl.ctrSwitchFlag,s_2x2_state_Ctrl.aidSwitchFlag, + s_State_Get_CommunicationState(ENUM_2x2_COM_SWITCH_CONDITION),s_2x2_state_Ctrl.LocalSync_Health,s_2x2_state_Ctrl.PartnerSync_Health, + s_2x2_state_Ctrl.LocalCC_Health,s_2x2_state_Ctrl.PartnerCC_Health); + } + s_State_SwitchState_Init(); + } + else + { + /*- 无处理 */ + } } else { @@ -939,58 +935,32 @@ static void s_State_Transition(void) /*- 返回 */ break; case ENUM_2x2_SLAVE:/*-< 备系 */ - /*- 自己是否健康度不足 */ - if (ENUM_CM_TRUE == Flag_Sick_Down) - { - /*- 本系降离线 */ - s_2x2_state_Ctrl.LocalState = ENUM_2x2_OFFLINE; - SFM_LOG_MSG_2X("Transition:2x2:SLAVE>>>>>>>OFFLINE(Unhealthy)\n"); - } - else - { - /*- 无处理 */ - } - /*TODO:对系不是主而钥匙不允许自己升主,则自己离线*/ /*- 本周期与对系的双通信通道是否全部中断 */ - if((ENUM_CM_FALSE == MSCP_Get_2X_Com_State(&s_2x2_state_Ctrl.MineComOKCount[0],0u)) && - (ENUM_CM_FALSE == MSCP_Get_2X_Com_State(&s_2x2_state_Ctrl.PeerComOKCount[0],0u)) && - (ENUM_CM_FALSE == MSCP_Get_2X_Com_State(&s_2x2_state_Ctrl.MineUartOKCount[0],0u)) && - (ENUM_CM_FALSE == MSCP_Get_2X_Com_State(&s_2x2_state_Ctrl.PeerUartOKCount[0],0u))) + if((ENUM_CM_FALSE == s_State_Get_CommunicationState(ENUM_2x2_COM_ALL_DIS) && (CM_TRUE == s_2x2_state_Ctrl.PartnerSync_Health))\ + || ((ENUM_CM_FALSE == s_State_Get_CommunicationState(ENUM_2x2_COM_VAGUE_STATE) && (CM_FALSE == s_2x2_state_Ctrl.PartnerSync_Health))) ) { /*前两个周期是否存在中断-本周期串口是否正常-并且对系不是主系则升主*/ - if( /*与当前周期差3-5认为正常,超过阈值认为不同时断线,通信故障*/ - (MSCP_Get_2X_DisCom_Count(&s_2x2_state_Ctrl.MineComOKCount[0],0u) <= MSCP_2X2_SYNC_TIMEOUT_CYC) && - (MSCP_Get_2X_DisCom_Count(&s_2x2_state_Ctrl.PeerComOKCount[0],0u) <= MSCP_2X2_SYNC_TIMEOUT_CYC) && - (MSCP_Get_2X_DisCom_Count(&s_2x2_state_Ctrl.MineUartOKCount[0],0u) <= MSCP_2X2_SYNC_TIMEOUT_CYC) && - (MSCP_Get_2X_DisCom_Count(&s_2x2_state_Ctrl.PeerUartOKCount[0],0u) <= MSCP_2X2_SYNC_TIMEOUT_CYC)) + if( ENUM_CM_TRUE == s_State_Get_CommunicationState(ENUM_2x2_COM_TOGETHER_DIS)) { - /*不存在断线,判断为宕机或断电升主*/ + /*不存在断线,本周期刚断 判断为宕机或断电升主*/ /*- 本系升主 */ s_2x2_state_Ctrl.LocalState = ENUM_2x2_MASTER; - s_2x2_state_Ctrl.LocalSwitchState = ENUM_2x2_SWITCH_CLOSE; - s_2x2_state_Ctrl.PeerSwitchState = ENUM_2x2_SWITCH_CLOSE; - s_2x2_state_Ctrl.PartnerSwitchState = ENUM_2x2_SWITCH_CLOSE; - s_2x2_state_Ctrl.PartPeerSwitchState = ENUM_2x2_SWITCH_CLOSE; - s_2x2_state_Ctrl.LocalAIDSwitchState = ENUM_2x2_AIDSWITCH_OVER; - s_2x2_state_Ctrl.PeerAIDSwitchState = ENUM_2x2_AIDSWITCH_OVER; - s_2x2_state_Ctrl.PartnerAIDSwitchState = ENUM_2x2_AIDSWITCH_OVER; - s_2x2_state_Ctrl.PartPeerAIDSwitchState = ENUM_2x2_AIDSWITCH_OVER; + s_State_SwitchState_Init(); /*- 将对系状态置为宕机 */ s_2x2_state_Ctrl.PartnerState = ENUM_2x2_SHUTDOWN; /*通信SN号清空-防止对系重新上电后不接收新的SN号*/ s_2x2_state_Ctrl.RxSN = 0u; + s_2x2_state_Ctrl.RxStateSysCyc = 0u; SFM_LOG_MSG_2X("Transition:2x2:SLAVE>>>>>>>MASTER!!!(ALL interrupt)\n"); + save_to_file("Transition:2x2:SLAVE>>>>>>>MASTER!!!(ALL interrupt) PartnerSync_Health = %d\n",s_2x2_state_Ctrl.PartnerSync_Health); } else { /*- 存在断线-宕机 */ s_2x2_state_Ctrl.LocalState = ENUM_2x2_SHUTDOWN; - SFM_LOG_MSG_2X("Transition:2x2:SLAVE>>>>>>>HAVE ALL interrupt(%d)(%d)(%d)(%d)\n", - MSCP_Get_2X_DisCom_Count(&s_2x2_state_Ctrl.MineComOKCount[0],0u), - MSCP_Get_2X_DisCom_Count(&s_2x2_state_Ctrl.PeerComOKCount[0],0u), - MSCP_Get_2X_DisCom_Count(&s_2x2_state_Ctrl.MineUartOKCount[0],0u), - MSCP_Get_2X_DisCom_Count(&s_2x2_state_Ctrl.PeerUartOKCount[0],0u)); + SFM_LOG_MSG_2X("Transition:2x2:SLAVE>>>>>>>SHUTDOWN ALL interrupt\n"); + save_to_file("Transition:2x2:SLAVE>>>>>>>SHUTDOWN ALL interrupt PartnerSync_Health = %d\n", s_2x2_state_Ctrl.PartnerSync_Health); CM_ASSERT(0, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_1, TSCP_DARK_ASSERT_5); } } @@ -999,86 +969,60 @@ static void s_State_Transition(void) (ENUM_2x2_MASTER == s_2x2_state_Ctrl.LastLocalState))) { s_2x2_state_Ctrl.LocalState = ENUM_2x2_MASTER; - s_2x2_state_Ctrl.LocalSwitchState = ENUM_2x2_SWITCH_CLOSE; - s_2x2_state_Ctrl.PeerSwitchState = ENUM_2x2_SWITCH_CLOSE; - s_2x2_state_Ctrl.PartnerSwitchState = ENUM_2x2_SWITCH_CLOSE; - s_2x2_state_Ctrl.PartPeerSwitchState = ENUM_2x2_SWITCH_CLOSE; - s_2x2_state_Ctrl.LocalAIDSwitchState = ENUM_2x2_AIDSWITCH_OVER; - s_2x2_state_Ctrl.PeerAIDSwitchState = ENUM_2x2_AIDSWITCH_OVER; - s_2x2_state_Ctrl.PartnerAIDSwitchState = ENUM_2x2_AIDSWITCH_OVER; - s_2x2_state_Ctrl.PartPeerAIDSwitchState = ENUM_2x2_AIDSWITCH_OVER; - s_2x2_state_Ctrl.ctrSwitchFlag = 0u; - s_2x2_state_Ctrl.aidSwitchFlag = 0u; - SFM_LOG_MSG_2X("Transition:2x2:SLAVE>>>>>>>MASTER(ROLLBACK\n"); + s_State_SwitchState_Init(); + SFM_LOG_MSG_2X("Transition:2x2:SLAVE>>>>>>>MASTER(ROLLBACK PartnerState = %d LastLocalState = %d)\n",s_2x2_state_Ctrl.PartnerState,s_2x2_state_Ctrl.LastLocalState); + save_to_file("Transition:2x2:SLAVE>>>>>>>MASTER(ROLLBACK PartnerState = %d LastLocalState = %d)\n",s_2x2_state_Ctrl.PartnerState,s_2x2_state_Ctrl.LastLocalState); } /*- 与主系输出不一致 或应用跟随数据不一致*/ - else if((1u == s_2x2_state_Ctrl.OutPutCheckFailFlag) || (1u == s_2x2_state_Ctrl.AppFollowCmpFlag)) + else if(CM_FALSE == s_2x2_state_Ctrl.LocalSyncFailFlag) { s_2x2_state_Ctrl.LocalState = ENUM_2x2_OFFLINE; - SFM_LOG_MSG_2X("Transition:2x2:SLAVE>>>>>>>OFFLINE(OutPut failed)\n"); - s_2x2_state_Ctrl.LocalSwitchState = ENUM_2x2_SWITCH_CLOSE; - s_2x2_state_Ctrl.PeerSwitchState = ENUM_2x2_SWITCH_CLOSE; - s_2x2_state_Ctrl.PartnerSwitchState = ENUM_2x2_SWITCH_CLOSE; - s_2x2_state_Ctrl.PartPeerSwitchState = ENUM_2x2_SWITCH_CLOSE; - s_2x2_state_Ctrl.LocalAIDSwitchState = ENUM_2x2_AIDSWITCH_OVER; - s_2x2_state_Ctrl.PeerAIDSwitchState = ENUM_2x2_AIDSWITCH_OVER; - s_2x2_state_Ctrl.PartnerAIDSwitchState = ENUM_2x2_AIDSWITCH_OVER; - s_2x2_state_Ctrl.PartPeerAIDSwitchState = ENUM_2x2_AIDSWITCH_OVER; - s_2x2_state_Ctrl.ctrSwitchFlag = 0u; - s_2x2_state_Ctrl.aidSwitchFlag = 0u; + SFM_LOG_MSG_2X("Transition:2x2:SLAVE>>>>>>>OFFLINE(OutPut failed or appflow failed)\n"); + save_to_file("Transition:2x2:SLAVE>>>>>>>OFFLINE(OutPut failed or appflow failed)\n"); + s_State_SwitchState_Init(); } else if((ENUM_2x2_MASTER == s_2x2_state_Ctrl.PartnerState) && ((1u == s_2x2_state_Ctrl.aidSwitchFlag)||(1u == s_2x2_state_Ctrl.ctrSwitchFlag)) && (0u == s_2x2_state_Ctrl.MicroCyc)) { /*是否满足至少一个以太网和任一通道*/ - if(((ENUM_CM_TRUE == MSCP_Get_2X_Com_State(&s_2x2_state_Ctrl.MineComOKCount[0],0u)) && - (ENUM_CM_TRUE == MSCP_Get_2X_Com_State(&s_2x2_state_Ctrl.PeerComOKCount[0],0u))) || - ((ENUM_CM_TRUE == MSCP_Get_2X_Com_State(&s_2x2_state_Ctrl.MineComOKCount[0],0u)) && - (ENUM_CM_TRUE == MSCP_Get_2X_Com_State(&s_2x2_state_Ctrl.MineUartOKCount[0],0u))) || - ((ENUM_CM_TRUE == MSCP_Get_2X_Com_State(&s_2x2_state_Ctrl.MineComOKCount[0],0u)) && - (ENUM_CM_TRUE == MSCP_Get_2X_Com_State(&s_2x2_state_Ctrl.PeerUartOKCount[0],0u))) || - ((ENUM_CM_TRUE == MSCP_Get_2X_Com_State(&s_2x2_state_Ctrl.PeerComOKCount[0],0u)) && - (ENUM_CM_TRUE == MSCP_Get_2X_Com_State(&s_2x2_state_Ctrl.MineUartOKCount[0],0u))) || - ((ENUM_CM_TRUE == MSCP_Get_2X_Com_State(&s_2x2_state_Ctrl.PeerComOKCount[0],0u)) && - (ENUM_CM_TRUE == MSCP_Get_2X_Com_State(&s_2x2_state_Ctrl.PeerUartOKCount[0],0u)))) + if((ENUM_CM_TRUE == s_State_Get_CommunicationState(ENUM_2x2_COM_SWITCH_CONDITION)) && + (CM_TRUE == s_2x2_state_Ctrl.LocalSync_Health) && (CM_TRUE == s_2x2_state_Ctrl.PartnerSync_Health) && + (0 < s_2x2_state_Ctrl.LocalCC_Health) && (0 < s_2x2_state_Ctrl.PartnerCC_Health)) { s_2x2_state_Ctrl.LocalState = ENUM_2x2_MASTER; - SFM_LOG_MSG_2X("Transition:2x2:SLAVE>>>>>>>MASTER(SWITCH BUTTON)\n"); + SFM_LOG_MSG_2X("Transition:2x2:SLAVE>>>>>>>MASTER((SWITCH:0x%x,AID:0x%x)\n",s_2x2_state_Ctrl.ctrSwitchFlag,s_2x2_state_Ctrl.aidSwitchFlag); + save_to_file("Transition:2x2:SLAVE>>>>>>>MASTER((SWITCH:0x%x,AID:0x%x)\n",s_2x2_state_Ctrl.ctrSwitchFlag,s_2x2_state_Ctrl.aidSwitchFlag); } else { /*报警禁止切系*/ - SFM_LOG_MSG_2X("Transition:2x2:SLAVE>>>>>>>SLAVE(NOT MASTER)\n"); + SFM_LOG_MSG_2X("Transition:2x2:SLAVE>>>>>>>Do Not Change(SWITCH:0x%x,AID:0x%x,COM:0x%x,LSH:%d,PSH:%d,LCCH:%d,PCCH:%d)\n",s_2x2_state_Ctrl.ctrSwitchFlag,s_2x2_state_Ctrl.aidSwitchFlag, + s_State_Get_CommunicationState(ENUM_2x2_COM_SWITCH_CONDITION),s_2x2_state_Ctrl.LocalSync_Health,s_2x2_state_Ctrl.PartnerSync_Health, + s_2x2_state_Ctrl.LocalCC_Health,s_2x2_state_Ctrl.PartnerCC_Health); + save_to_file("Transition:2x2:SLAVE>>>>>>>Do Not Change(SWITCH:0x%x,AID:0x%x,COM:0x%x,LSH:%d,PSH:%d,LCCH:%d,PCCH:%d)\n",s_2x2_state_Ctrl.ctrSwitchFlag,s_2x2_state_Ctrl.aidSwitchFlag, + s_State_Get_CommunicationState(ENUM_2x2_COM_SWITCH_CONDITION),s_2x2_state_Ctrl.LocalSync_Health,s_2x2_state_Ctrl.PartnerSync_Health, + s_2x2_state_Ctrl.LocalCC_Health,s_2x2_state_Ctrl.PartnerCC_Health); } - s_2x2_state_Ctrl.LocalSwitchState = ENUM_2x2_SWITCH_CLOSE; - s_2x2_state_Ctrl.PeerSwitchState = ENUM_2x2_SWITCH_CLOSE; - s_2x2_state_Ctrl.PartnerSwitchState = ENUM_2x2_SWITCH_CLOSE; - s_2x2_state_Ctrl.PartPeerSwitchState = ENUM_2x2_SWITCH_CLOSE; - s_2x2_state_Ctrl.LocalAIDSwitchState = ENUM_2x2_AIDSWITCH_OVER; - s_2x2_state_Ctrl.PeerAIDSwitchState = ENUM_2x2_AIDSWITCH_OVER; - s_2x2_state_Ctrl.PartnerAIDSwitchState = ENUM_2x2_AIDSWITCH_OVER; - s_2x2_state_Ctrl.PartPeerAIDSwitchState = ENUM_2x2_AIDSWITCH_OVER; - s_2x2_state_Ctrl.ctrSwitchFlag = 0u; - s_2x2_state_Ctrl.aidSwitchFlag = 0u; + s_State_SwitchState_Init(); } /*- 与对系是否同步超时 */ - else if ((s_2x2_state_Ctrl.SysCyc - s_2x2_state_Ctrl.LastCheckOKCount) >= MSCP_2X2_SYNC_TIMEOUT_CYC) + else if (s_2x2_state_Ctrl.LocalOutOfSync >= MSCP_2X2_SYNC_TIMEOUT_CYC) { /* * 如果失去同步,则自己离线 * 注意,为了在双网通信中断与失去同步同时发生时能优先执行通信中断切系,这个if必须放在最后 */ /*- 本系离线 */ - dropCount ++ ; s_2x2_state_Ctrl.LocalState = ENUM_2x2_OFFLINE; SFM_LOG_MSG_2X("Transition:2x2:SLAVE>>>>>>>OFFLINE(Lose Sync)\n"); + save_to_file("Transition:2x2:SLAVE>>>>>>>OFFLINE(Lose Sync)\n"); } else { /* 无处理 */ } - SFM_LOG_MSG_2X("Transition:SLAVE:live time:%d\n", s_2x2_state_Ctrl.SysCyc - s_2x2_state_Ctrl.LastCheckOKCount); + SFM_LOG_MSG_2X("Transition:SLAVE:live time:%d\n", s_2x2_state_Ctrl.LocalOutOfSync); /*- 返回 */ break; default: @@ -1086,6 +1030,8 @@ static void s_State_Transition(void) break; } } + + /** * @brief 2X状态切换独立线程 */ @@ -1155,12 +1101,14 @@ static CM_THREAD_FUNC_T SFM_2x2_StateChange_Thread(void) /*- 检测到对系是主系,本系宕机*/ s_2x2_state_Ctrl.LocalState = ENUM_2x2_SHUTDOWN; SFM_LOG_MSG_2X("Transition:2x2:MASTER>>>>>>>Double MASTER!!!(Shut Down)\n"); + save_to_file("Transition:2x2:MASTER>>>>>>>Double MASTER!!!(Shut Down)\n"); CM_RE_ASSERT(0, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_4, TSCP_DARK_ASSERT_1); } else { /*恢复上周期状态*/ SFM_LOG_MSG_2X("Transition:2x2:Double MASTER Recovery!!!(Last State)\n"); + save_to_file("Transition:2x2:Double MASTER Recovery!!!(Last State)\n"); s_2x2_state_Ctrl.LocalState = s_2x2_state_Ctrl.LastLocalState; TempState = s_2x2_state_Ctrl.LastPartnerState; s_2x2_state_Ctrl.LastPartnerState = s_2x2_state_Ctrl.PartnerState; @@ -1181,15 +1129,6 @@ static CM_THREAD_FUNC_T SFM_2x2_StateChange_Thread(void) (curTick[2] - sTick)/CM_UNSIGNED_MILLION,(curTick[3] - sTick)/CM_UNSIGNED_MILLION, (curTick[4] - sTick)/CM_UNSIGNED_MILLION,(curTick[5] - sTick)/CM_UNSIGNED_MILLION, s_2x2_state_Ctrl.LocalState,s_2x2_state_Ctrl.PartnerState); - /*记录暗文日志*/ - (void)CFM_DarkLog_Multiple(DARK_LOG_HEX, TSCP_DARK_2X2_THREAD_SHOWTIME,7u, - sizeof(CM_UINT8),s_2x2_state_Ctrl.MicroCyc, - sizeof(CM_UINT32),(curTick[0] - sTick)/CM_UNSIGNED_MILLION, - sizeof(CM_UINT32),(curTick[1] - sTick)/CM_UNSIGNED_MILLION, - sizeof(CM_UINT32),(curTick[2] - sTick)/CM_UNSIGNED_MILLION, - sizeof(CM_UINT32),(curTick[3] - sTick)/CM_UNSIGNED_MILLION, - sizeof(CM_UINT32),(curTick[4] - sTick)/CM_UNSIGNED_MILLION, - sizeof(CM_UINT32),(curTick[5] - sTick)/CM_UNSIGNED_MILLION); /*- 板卡硬件自检 3次*/ PFM_BoardCheck_TolerateThreetimes(); } @@ -1229,7 +1168,7 @@ static void SFM_2x2_LOG_MSG(IN const CM_CHAR *filename, IN CM_INT32 line, IN con #ifdef WIN32 Bootprintf("%s", msgBuf + headLen); #endif - /* printf("%s", msgBuf + headLen);*/ + //printf("%s", msgBuf + headLen); /*- 输出日志信息 */ CM_MQ_Write((CM_MQ_Struct_T*)&s_2x2_thread_Ctrl.LogMsgQ, (CM_UINT8*)msgBuf, (CM_UINT16)headLen + msgLen); } @@ -1280,55 +1219,138 @@ ENUM_2x2_AID_SWITCH_STATE SFM_2x2_Get_AIDSwitchStart(void) return s_2x2_Ctrl.AIDSwitchState; } /*输出处理与发送阶段之前的等待2x逻辑结束的最后处理函数*/ -void SFM_2x2_ChangeState(void) +/** + * @brief SFM_4x2_ChangeState函数 + * 该函数用于处理4x2系统的状态变更逻辑,包括同步状态检查、热备状态更新、IO数据处理等 + */ +void SFM_4x2_ChangeState(void) { static CM_UINT8 AIDEnable_Cut = 0u; + CM_UINT32 AppOutOfSync = 0u; + CM_UINT32 CheckOutOfSync = 0u; STRU_2X2_CTRL_T peerCtrl = { 0 }; /* 邻机热备状态 */ - /*- 等待结束信号量*/ + /*全部区域状态*/ + STR_Area_State Area_State = { 0 }; + + /*- 等待2x结束信号量*/ CM_Sem_Wait(s_2x2_thread_Ctrl.m_Stop); - MSCP_LOG_MSG("SFM_2x2_ChangeState start\n"); + /*- 等待Area结束信号量*/ + Area_Wait_Stop(); + Area_LOG_Transition(); + MSCP_LOG_MSG("SFM_4x2_ChangeState start\n"); /*- 执行最后的切系逻辑*/ s_2x2_Ctrl.MineComState = MSCP_Get_2X_VagueCom_State(&s_2x2_state_Ctrl.MineComOKCount[0]); /**< 本机通信状态,2oo2交换 */ s_2x2_Ctrl.PeerComState = MSCP_Get_2X_VagueCom_State(&s_2x2_state_Ctrl.PeerComOKCount[0]); /**< 邻机通信状态,2oo2交换 */ - s_2x2_Ctrl.MineUartState = MSCP_Get_2X_VagueCom_State(&s_2x2_state_Ctrl.MineUartOKCount[0]); /**< 本机串口通信状态,2oo2交换 */ - s_2x2_Ctrl.PeerUartState = MSCP_Get_2X_VagueCom_State(&s_2x2_state_Ctrl.PeerUartOKCount[0]); /**< 邻机串口通信状态,2oo2交换 */ + s_2x2_Ctrl.MineExtendState = MSCP_Get_2X_VagueCom_State(&s_2x2_state_Ctrl.MineExtendOKCount[0]); /**< 本机串口通信状态,2oo2交换 */ + s_2x2_Ctrl.PeerExtendState = MSCP_Get_2X_VagueCom_State(&s_2x2_state_Ctrl.PeerExtendOKCount[0]); /**< 邻机串口通信状态,2oo2交换 */ + /**获取区域状态 */ + Area_Get_All_State(&Area_State); /*- 切系完成*/ if(ENUM_2x2_AIDSWITCH_OVER == s_2x2_state_Ctrl.LocalAIDSwitchState) { s_2x2_Ctrl.AIDSwitchState = ENUM_2x2_AIDSWITCH_DISABLE; - MSCP_LOG_MSG("SFM_2x2_ChangeState:s_2x2_Ctrl.AIDSwitchState = ENUM_2x2_AIDSWITCH_DISABLE\n"); + MSCP_LOG_MSG("SFM_4x2_ChangeState:s_2x2_Ctrl.AIDSwitchState = ENUM_2x2_AIDSWITCH_DISABLE\n"); } + /*主线乘获取时间同步标志*/ + s_2x2_Ctrl.TimeSyncFlag = CFM_GetTimeSyncFlag(); + s_2x2_Ctrl.LastLocalState = s_2x2_Ctrl.LocalState; + s_2x2_Ctrl.LastPartnerState = s_2x2_Ctrl.PartnerState; + s_2x2_Ctrl.LastArea_A_State = s_2x2_Ctrl.Area_A_State; + s_2x2_Ctrl.LastArea_B_State = s_2x2_Ctrl.Area_B_State; + MSCP_LOG_MSG("******time flag = %d\n",s_2x2_Ctrl.TimeSyncFlag); + /*- 主线程认为自己是主系*/ - if (ENUM_2x2_MASTER == s_2x2_Ctrl.LocalState) + if (ENUM_4x2_MASTER == s_2x2_Ctrl.LocalState) { /*- 主系一直更新输出比较状态,防止切系降离线 */ s_2x2_Ctrl.RxInputSysCyc = SFM_2x2_GetSysCount() - 1u; s_2x2_Ctrl.LastFollowCyc = SFM_2x2_GetSysCount() - 1u; + s_2x2_Ctrl.LastAppFollowCyc = SFM_2x2_GetSysCount() - 1u; s_2x2_Ctrl.LastCheckOKCount = SFM_2x2_GetSysCount(); s_2x2_Ctrl.OutPutCheckFailFlag = 0u; - s_2x2_Ctrl.AppFollowCmpFlag = 0u; + s_2x2_Ctrl.AppFollowCmpFailFlag = 0u; + s_2x2_Ctrl.RxSN = 0; + /*独立线程*/ + s_2x2_state_Ctrl.LocalSync_Health = CM_TRUE; + s_2x2_state_Ctrl.LocalSyncFailFlag = CM_TRUE; + s_2x2_state_Ctrl.LocalOutOfSync = 0; } else { - /*无处理*/ + /*计算同步健康标志*/ + if ((SFM_2x2_GetSysCount() == (s_2x2_Ctrl.RxInputSysCyc + 1)) && + (SFM_2x2_GetSysCount() == (s_2x2_Ctrl.LastFollowCyc + 1)) && + (SFM_2x2_GetSysCount() == (s_2x2_Ctrl.LastAppFollowCyc + 1)) && + (SFM_2x2_GetSysCount() == s_2x2_Ctrl.LastCheckOKCount) && + (0u == s_2x2_Ctrl.OutPutCheckFailFlag) && + (CM_TRUE == s_2x2_Ctrl.TimeSyncFlag) && + (0u == s_2x2_Ctrl.AppFollowCmpFailFlag)) + { + s_2x2_state_Ctrl.LocalSync_Health = CM_TRUE; + } + else + { + + s_2x2_state_Ctrl.LocalSync_Health = CM_FALSE; + + + MSCP_LOG_MSG("2x2:Sync false SysCyc:%d,InC:%d,FC:%d,AFC:%d,Cok:%d,OutF:%d,TSF:%d,ACF:%d\n", + SFM_2x2_GetSysCount(),s_2x2_Ctrl.RxInputSysCyc,s_2x2_Ctrl.LastFollowCyc, + s_2x2_Ctrl.LastAppFollowCyc,s_2x2_Ctrl.LastCheckOKCount, + s_2x2_Ctrl.OutPutCheckFailFlag,s_2x2_Ctrl.TimeSyncFlag, + s_2x2_Ctrl.AppFollowCmpFailFlag); + } + /*计算比较失败标志*/ + if ((1u == s_2x2_Ctrl.OutPutCheckFailFlag) || (1u == s_2x2_Ctrl.AppFollowCmpFailFlag) ) + { + s_2x2_state_Ctrl.LocalSyncFailFlag = CM_FALSE; + } + else + { + s_2x2_state_Ctrl.LocalSyncFailFlag = CM_TRUE; + } + + /*计算失步次数*/ + AppOutOfSync = SFM_2x2_GetSysCount() - s_2x2_Ctrl.LastAppFollowCyc - 1; + CheckOutOfSync = SFM_2x2_GetSysCount() - s_2x2_Ctrl.LastCheckOKCount; + s_2x2_state_Ctrl.LocalOutOfSync = (AppOutOfSync >= CheckOutOfSync)?AppOutOfSync:CheckOutOfSync; } + + MSCP_LOG_MSG("timecurr 16.0.0 = %lld us\n", NOW_USED_TIME); /*- 记录上周期状态用于回滚*/ - s_2x2_state_Ctrl.LastLocalState = s_2x2_Ctrl.LocalState; - s_2x2_state_Ctrl.LastPartnerState = s_2x2_Ctrl.PartnerState; + s_2x2_state_Ctrl.LastLocalState = s_2x2_state_Ctrl.LocalState; + s_2x2_state_Ctrl.LastPartnerState = s_2x2_state_Ctrl.PartnerState; + /*通控健康度更新*/ + //s_2x2_state_Ctrl.LocalCC_Health = s_2x2_Ctrl.LocalCC_Health; + s_2x2_state_Ctrl.LocalCC_Health = 2; + /**< 本系区域状态 */ + s_2x2_state_Ctrl.LocalAreaState = Area_State.Local_state; + MSCP_LOG_MSG("s_2x2_state_Ctrl.LocalAreaState = %d 2x2 = %d\n",Area_State.Local_state, s_2x2_state_Ctrl.LocalState); + /**<是否存在区域备地*/ + s_2x2_state_Ctrl.Area_Slave_Is_Exist = Area_Slave_Is_Exist(); /*- 2x线程->更新主线程热备状态*/ - s_2x2_Ctrl.LocalState = s_2x2_state_Ctrl.LocalState; - s_2x2_Ctrl.PartnerState = s_2x2_state_Ctrl.PartnerState; + s_2x2_Ctrl.LocalState = SFM_2x2_StateDecision(s_2x2_state_Ctrl.LocalAreaState,s_2x2_state_Ctrl.LocalState); + /* 判断3乘是离线则将地状态设置为离线, + * (通控健康度2乘、数据同步失败导致离线需要将地的状态拉下来) */ + if ((ENUM_2x2_OFFLINE == s_2x2_state_Ctrl.LocalState) && ((ENUM_AREA_MASTER == s_2x2_state_Ctrl.LocalAreaState) || (ENUM_AREA_SLAVE == s_2x2_state_Ctrl.LocalAreaState))) + { + Area_Set_State(ENUM_AREA_OFFLINE); + MSCP_LOG_MSG("2x state is %d set area offline\n",s_2x2_state_Ctrl.LocalAreaState); + } + else + { + ; /* do nothing */ + } + s_2x2_Ctrl.PartnerState = SFM_2x2_StateDecision(Area_State.Partner_state,s_2x2_state_Ctrl.PartnerState); + s_2x2_Ctrl.Area_A_State = SFM_2x2_AreaDecision(Area_State.Partner_Area_A_state,CM_TRUE); + s_2x2_Ctrl.Area_B_State = SFM_2x2_AreaDecision(Area_State.Partner_Area_B_state,CM_FALSE); + MSCP_LOG_MSG("STATE_L[%d],P[%d],A[%d],B[%d]\n",s_2x2_Ctrl.LocalState,s_2x2_Ctrl.PartnerState,s_2x2_Ctrl.Area_A_State,s_2x2_Ctrl.Area_B_State); /*- 2取双CPU同步标志与热备状态*/ s_Ctrl_2oo2Sync(&peerCtrl); MSCP_LOG_MSG("timecurr 16.0.1 = %lld us\n", NOW_USED_TIME); /*- 主线程参数同步到2x独立线程*/ - s_2x2_state_Ctrl.LastCheckOKCount = s_2x2_Ctrl.LastCheckOKCount; - s_2x2_state_Ctrl.OutPutCheckFailFlag = s_2x2_Ctrl.OutPutCheckFailFlag; - s_2x2_state_Ctrl.TimeSyncFlag = s_2x2_Ctrl.TimeSyncFlag;/*更新时间同步标志*/ - s_2x2_state_Ctrl.LastRxInputSysCyc = s_2x2_Ctrl.RxInputSysCyc; - s_2x2_state_Ctrl.LastFollowCyc = s_2x2_Ctrl.LastFollowCyc; - s_2x2_state_Ctrl.AppFollowCmpFlag = s_2x2_Ctrl.AppFollowCmpFlag; + /*- AID切系标志*/ if((ENUM_2x2_AIDSWITCH_ENABLE == s_2x2_Ctrl.AIDSwitchState) && (AIDEnable_Cut <= 10u)) { @@ -1345,10 +1367,11 @@ void SFM_2x2_ChangeState(void) s_2x2_state_Ctrl.PartPeerSwitchState = ENUM_2x2_SWITCH_CLOSE; s_2x2_state_Ctrl.PartnerAIDSwitchState = ENUM_2x2_AIDSWITCH_DISABLE; s_2x2_state_Ctrl.PartPeerAIDSwitchState = ENUM_2x2_AIDSWITCH_DISABLE; - /*- 如果对系宕机,清空本系接收标志*/ - if(ENUM_2x2_SHUTDOWN == s_2x2_Ctrl.PartnerState) + /*- 如果综合主系发生切换或无主系,清空本系接收SN标志*/ + if(CM_TRUE == SFM_2x2_Master_Is_Change()) { s_2x2_Ctrl.RxSN = 0; + MSCP_LOG_MSG("SFM_2x2_Master_Is_Change,SN:%d\n",s_2x2_Ctrl.RxSN); } MSCP_LOG_MSG("timecurr 16.0.2 = %lld us\n", NOW_USED_TIME); /*- 拷贝全部IO数据*/ @@ -1364,13 +1387,153 @@ void SFM_2x2_ChangeState(void) MSCP_LOG_MSG("timecurr 16.0.0 = %lld us\n", NOW_USED_TIME); /*- 更新系统周期号*/ s_2x2_state_Ctrl.SysCyc = SFM_2x2_GetSysCount(); /*系统周期号*/ + s_2x2_Ctrl.MasterID = 0; MSCP_LOG_MSG("timecurr 16.0.3 = %lld us\n", NOW_USED_TIME); (void)CFM_DarkLog_Storage(DARK_LOG_HEX, TSCP_DARK_LOCAL, 1U, &s_2x2_Ctrl.LocalState); (void)CFM_DarkLog_Storage(DARK_LOG_HEX, TSCP_DARK_PARTNER, 1U, &s_2x2_Ctrl.PartnerState); SFM_2x2_LOG_Transition(); MSCP_LOG_MSG("timecurr 16.0.4 = %lld us\n", NOW_USED_TIME); - MSCP_LOG_MSG("SFM_2x2_ChangeState stop\n"); + MSCP_LOG_MSG("SFM_4x2_ChangeState stop\n"); +} +/*状态决策*/ +/** + * @brief 决策4x2状态 + * @details 根据区域状态和2x2临时状态,决定最终的4x2状态。 + * 如果区域为主且2x2临时状态为主,则为4x2主; + * 如果区域为主且2x2临时状态为备,则为4x2备; + * 如果区域为备且2x2临时状态为主或备,则为4x2备; + * 如果区域为初始化或2x2临时状态为宕机,则为4x2宕机; + * 其他情况,如果2x2临时状态为离线且区域状态高于离线,则将区域状态设为离线,并返回4x2离线。 + * @param[in] Area 区域状态 + * @param[in] State_2x2 2x2临时状态 + * @return 最终的4x2状态(主线程状态) + */ +ENUM_4x2_STATE_T SFM_2x2_StateDecision(ENUM_AREA_STATE Area, ENUM_2x2_STATE_T State_2x2) +{ + ENUM_4x2_STATE_T rtn_state = ENUM_4x2_SHUTDOWN; + + /* 如果区域为主且2x2临时状态为主,则返回4x2主 */ + if ((ENUM_AREA_MASTER == Area) && (ENUM_2x2_MASTER == State_2x2)) + { + rtn_state = ENUM_4x2_MASTER; + } + /* 如果区域为主且2x2临时状态为备,则返回4x2备 */ + else if ((ENUM_AREA_MASTER == Area) && (ENUM_2x2_SLAVE == State_2x2)) + { + rtn_state = ENUM_4x2_SLAVE; + } + /* 如果区域为备且2x2临时状态为主或备,则返回4x2备 */ + else if ((ENUM_AREA_SLAVE == Area) && ((ENUM_2x2_MASTER == State_2x2) || (ENUM_2x2_SLAVE == State_2x2))) + { + rtn_state = ENUM_4x2_SLAVE; + } + /* 如果区域为初始化或2x2临时状态为宕机,则返回4x2宕机 */ + else if ((ENUM_AREA_SHUTDOWN == Area) || (ENUM_2x2_SHUTDOWN == State_2x2)) + { + rtn_state = ENUM_4x2_SHUTDOWN; + } + + else + { + /* 返回4x2离线状态 */ + rtn_state = ENUM_4x2_OFFLINE; + } + + MSCP_LOG_MSG("Local Area state = %d 2x = %d Final = %d\n",Area, State_2x2,rtn_state); + return rtn_state; +} +/** + * @brief 决策区域4x2状态 + * @details + * @param[in] Area 异地区域状态 + * @param[in] isA 是否是A系 + * @return 最终的异地4x2状态(主线程状态) + */ +ENUM_4x2_STATE_T SFM_2x2_AreaDecision(ENUM_AREA_STATE PartnerAreaState,CM_BOOL isA) +{ + ENUM_4x2_STATE_T rtn_state = ENUM_4x2_SHUTDOWN; + CM_UINT32 masterHighByte = 0u; + switch (PartnerAreaState) + { + case ENUM_AREA_OFFLINE: + case ENUM_AREA_UNKNOW: + rtn_state = ENUM_4x2_OFFLINE; + break; + case ENUM_AREA_SLAVE: + rtn_state = ENUM_4x2_SLAVE; + break; + case ENUM_AREA_MASTER: + masterHighByte = (CM_UINT32)(s_2x2_Ctrl.MasterID >> 8); + if (isA == CM_TRUE) + { + // A系主备配对:0x01<->0x03 + rtn_state = (masterHighByte == Area_GetArea_A_ID())? ENUM_4x2_MASTER : ENUM_4x2_SLAVE; + } + else + { + // B系主备配对:0x02<->0x04 + rtn_state = (masterHighByte == Area_GetArea_B_ID())? ENUM_4x2_MASTER : ENUM_4x2_SLAVE; + } + break; + default: + return ENUM_4x2_SHUTDOWN; + break; + } + return rtn_state; +} +/** + * @brief 检查主系状态变化 + * + * 当其他三系中主系发生切换或主系发生宕机时返回CM_TRUE + */ +CM_BOOL SFM_2x2_Master_Is_Change(void) +{ + CM_BOOL rtn = CM_FALSE; + // 首先确定上周期哪个状态是主系 + CM_UINT8 last_master_location = 0u; // 0: 未知, 1:Partner, 2:Area_A, 3:Area_B + ENUM_4x2_STATE_T current_state = ENUM_4x2_SHUTDOWN; + /**记录上周期主系位置 */ + if (s_2x2_Ctrl.LastPartnerState == ENUM_4x2_MASTER) { + last_master_location = 1u; + } else if (s_2x2_Ctrl.LastArea_A_State == ENUM_4x2_MASTER) { + last_master_location = 2u; + } else if (s_2x2_Ctrl.LastArea_B_State == ENUM_4x2_MASTER) { + last_master_location = 3u; + } + // 如果上周期有主系 + if (last_master_location != 0u) + { + switch (last_master_location) + { + case 1: + current_state = s_2x2_Ctrl.PartnerState; + break; + case 2: + current_state = s_2x2_Ctrl.Area_A_State; + break; + case 3: + current_state = s_2x2_Ctrl.Area_B_State; + break; + default: + current_state = ENUM_4x2_SHUTDOWN; + } + + // 如果上周期的主系现在宕机了 + if (current_state != ENUM_4x2_MASTER) + { + rtn = CM_TRUE; + } + else + { + rtn = CM_FALSE; + } + } + else + { + rtn = CM_FALSE; + } + return rtn; } /** * @brief 2x2上电初始化 @@ -1404,31 +1567,61 @@ void SFM_2x2_Init(IN const CM_UINT8 *VitalBuf, IN CM_UINT16 VitalLen, INOUT CM_U CM_ASSERT(0u); #endif /*- 变量初始化 */ - s_2x2_Ctrl.LocalState = ENUM_2x2_OFFLINE; - s_2x2_Ctrl.PartnerState = ENUM_2x2_SHUTDOWN; - s_2x2_Ctrl.AppFollowCmpFlag = 1u; + s_2x2_Ctrl.LocalState = ENUM_4x2_OFFLINE; + s_2x2_Ctrl.PartnerState = ENUM_4x2_SHUTDOWN; + s_2x2_Ctrl.Area_A_State = ENUM_4x2_SHUTDOWN; + s_2x2_Ctrl.Area_B_State = ENUM_4x2_SHUTDOWN; + s_2x2_Ctrl.AppFollowCmpFailFlag = 1u; + s_2x2_Ctrl.RxBaseFollowSyncFlag = 0u; /*- 更新上一周期的主备状态为这周期的主备状态(给应用用) */ s_2x2_Ctrl.LastLocalState = s_2x2_Ctrl.LocalState; s_2x2_Ctrl.LastPartnerState = s_2x2_Ctrl.PartnerState; + s_2x2_Ctrl.LastArea_A_State = s_2x2_Ctrl.Area_A_State; + s_2x2_Ctrl.LastArea_B_State = s_2x2_Ctrl.Area_B_State; - s_2x2_Ctrl.LocalID =(g_PFM_Cfg.BOARD_ID * 256u) + g_PFM_Cfg.CPU_ID; - s_2x2_Ctrl.PartnerID = ((3u - (CM_UINT32)g_PFM_Cfg.BOARD_ID) * 256u) + (CM_UINT32)g_PFM_Cfg.CPU_ID; + if(g_PFM_Cfg.BOARD_ID <= 2) + { + s_2x2_Ctrl.LocalID =(g_PFM_Cfg.BOARD_ID * 256u) + g_PFM_Cfg.CPU_ID; + s_2x2_Ctrl.PartnerID = ((3u - (CM_UINT32)g_PFM_Cfg.BOARD_ID) * 256u) + (CM_UINT32)g_PFM_Cfg.CPU_ID; + } + else + { + s_2x2_Ctrl.LocalID =(g_PFM_Cfg.BOARD_ID * 256u) + g_PFM_Cfg.CPU_ID; + s_2x2_Ctrl.PartnerID = ((7u - (CM_UINT32)g_PFM_Cfg.BOARD_ID) * 256u) + (CM_UINT32)g_PFM_Cfg.CPU_ID; + } s_2x2_Ctrl.AIDSwitchState = 0xAA; s_2x2_Ctrl.TimeSyncFlag = CM_FALSE; - /*独立线程状态结构体初始化*/ - s_2x2_state_Ctrl.LocalState = s_2x2_Ctrl.LocalState; - s_2x2_state_Ctrl.PartnerState = s_2x2_Ctrl.PartnerState; - /*- 更新上一周期的主备状态为这周期的主备状态(给应用用) */ - s_2x2_state_Ctrl.LastLocalState = s_2x2_Ctrl.LastLocalState; - s_2x2_state_Ctrl.LastPartnerState = s_2x2_Ctrl.LastPartnerState; - - s_2x2_state_Ctrl.LocalAIDSwitchState = ENUM_2x2_AIDSWITCH_DISABLE; - s_2x2_state_Ctrl.PartnerAIDSwitchState = ENUM_2x2_AIDSWITCH_DISABLE; - + s_2x2_Ctrl.LocalCC_Health = 0; + s_2x2_Ctrl.MasterID = 0; + /*独立线程状态结构体初始化*/ s_2x2_state_Ctrl.LocalID =s_2x2_Ctrl.LocalID; s_2x2_state_Ctrl.PartnerID = s_2x2_Ctrl.PartnerID; - s_2x2_state_Ctrl.TimeSyncFlag = s_2x2_Ctrl.TimeSyncFlag; + s_2x2_state_Ctrl.LocalState = ENUM_2x2_INIT; + s_2x2_state_Ctrl.PartnerState = ENUM_2x2_SHUTDOWN; + /*- 更新上一周期的主备状态为这周期的主备状态(给应用用) */ + s_2x2_state_Ctrl.LastLocalState = s_2x2_state_Ctrl.LocalState; + s_2x2_state_Ctrl.LastPartnerState = s_2x2_state_Ctrl.PartnerState; + + s_2x2_state_Ctrl.LocalSwitchState = ENUM_2x2_SWITCH_CLOSE; /**< 自己的主动切系按钮状态 */ + s_2x2_state_Ctrl.PeerSwitchState = ENUM_2x2_SWITCH_CLOSE; /**< 邻机的主动切系按钮状态 */ + s_2x2_state_Ctrl.PartnerSwitchState = ENUM_2x2_SWITCH_CLOSE; /**< 对系的主动切系按钮状态 */ + s_2x2_state_Ctrl.PartPeerSwitchState = ENUM_2x2_SWITCH_CLOSE; /**< 对系的邻机的主动切系按钮状态 */ + + s_2x2_state_Ctrl.LocalAIDSwitchState = ENUM_2x2_AIDSWITCH_DISABLE; /**< 自己的AID切系状态 */ + s_2x2_state_Ctrl.PeerAIDSwitchState = ENUM_2x2_AIDSWITCH_DISABLE; /**< 邻机的AID切系状态 */ + s_2x2_state_Ctrl.PartnerAIDSwitchState = ENUM_2x2_AIDSWITCH_DISABLE; /**< 对系的主动切系按钮状态 */ + s_2x2_state_Ctrl.PartPeerAIDSwitchState = ENUM_2x2_AIDSWITCH_DISABLE; /**< 对系的邻机的主动切系按钮状态 */ + s_2x2_state_Ctrl.ctrSwitchFlag = 0; /**< 按钮切系控制标志 */ + s_2x2_state_Ctrl.aidSwitchFlag = 0; /**< aid切系控制标志 */ + /*健康度参数*/ + s_2x2_state_Ctrl.LocalCC_Health = 0; /**< 本系与通控通信健康度0:无通信;1:有通信;2:通信正常 */ + s_2x2_state_Ctrl.PartnerCC_Health = 0; /**< 对系与通控通信健康度0:无通信;1:有通信;2:通信正常 */ + s_2x2_state_Ctrl.LocalSync_Health = CM_FALSE; /**< 本系4x同步健康度CM_TRUE:同步成功;CM_FALSE:同步失败*/ + s_2x2_state_Ctrl.PartnerSync_Health = CM_FALSE;/**< 对系4x同步健康度CM_TRUE:同步成功;CM_FALSE:同步失败*/ + /*失步次数*/ + s_2x2_state_Ctrl.LocalOutOfSync = 0; /**< 本系失步次数 ,与应用跟随数据和输出比较有关*/ + s_2x2_state_Ctrl.LocalSyncFailFlag = CM_FALSE; /**< 本系输出或应用跟随比较失败 */ /*独立线程参数初始化*/ s_2x2_thread_Ctrl.number_Cyc = (g_PFM_Cfg.CYC_TIME - 60U) / MSCP_2X2_THREAD_TIME;/*根据周期计算,预留60ms*/ (s_2x2_thread_Ctrl.number_Cyc > 1u)?(s_2x2_thread_Ctrl.number_Cyc) : (s_2x2_thread_Ctrl.number_Cyc = 1u); @@ -1439,8 +1632,6 @@ void SFM_2x2_Init(IN const CM_UINT8 *VitalBuf, IN CM_UINT16 VitalLen, INOUT CM_U g_TxAppFollow_len = 4; CM_LongToChar(0u, g_TxAppFollow); - checkRet = CM_RB_Init(&s_2x2_TmRing, (CM_UINT32)SFM_2x2_TM_RING_SIZE); - CM_ASSERT(ENUM_CM_TRUE == checkRet, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_1); /* 系间时钟同步 */ /*- 生成系间同步报文 */ /* @@ -1464,7 +1655,7 @@ void SFM_2x2_Init(IN const CM_UINT8 *VitalBuf, IN CM_UINT16 VitalLen, INOUT CM_U { /*- 检查双系同步报文是否一致,若不一致则宕机 */ CM_ASSERT(s_2x2_RxSyncLen == (CM_INT32)s_2x2_TxSyncLen, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_3); - CM_ASSERT((s_2x2_RxSyncMsg[0] + s_2x2_TxSyncMsg[0]) == 3u, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_4); + CM_ASSERT(((s_2x2_RxSyncMsg[0] + s_2x2_TxSyncMsg[0]) >= 3u) && ((s_2x2_RxSyncMsg[0] + s_2x2_TxSyncMsg[0]) <= 7u), SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_4); CM_ASSERT(0 == CM_Memcmp((void*)(s_2x2_RxSyncMsg + 1u), (void*)(s_2x2_TxSyncMsg + 1u), (CM_SIZE_T)s_2x2_TxSyncLen - 1u), SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_5); } else @@ -1531,7 +1722,7 @@ void SFM_2x2_Init(IN const CM_UINT8 *VitalBuf, IN CM_UINT16 VitalLen, INOUT CM_U else { /*- 默认本机为主 */ - s_2x2_Ctrl.LocalState = ENUM_2x2_MASTER; + s_2x2_Ctrl.LocalState = ENUM_4x2_MASTER; s_2x2_Ctrl.LastLocalState = s_2x2_Ctrl.LocalState; /*至少2个周期*/ offset = (CM_UINT64)(MSCP_CYC_TIME * (CM_UINT64)CM_UNSIGNED_MILLION); @@ -1559,7 +1750,7 @@ void SFM_2x2_Send(IN const CM_UINT8 *Data, IN CM_UINT32 DataLen, IN ENUM_2x2_MSG CM_UINT32 FrameLen = 0u; /* 帧长度 */ CM_UINT32 crc = 0u; /* CRC */ CM_UINT32 SysCyc = SFM_2x2_GetSysCount(); /* 系统周期号 */ - ENUM_CM_RETURN checkRet = ENUM_CM_NULL; + ENUM_CM_RETURN checkRet = ENUM_CM_NULL, sendResult = ENUM_CM_NULL; PFM_LOG_SET_STOPTIMER(TSCP_DARK_2x2); /*- 入口检查 */ CM_ASSERT(NULL != Data, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_3, TSCP_DARK_ASSERT_1); @@ -1582,7 +1773,7 @@ void SFM_2x2_Send(IN const CM_UINT8 *Data, IN CM_UINT32 DataLen, IN ENUM_2x2_MSG /*- 填充报文头 */ CM_LongToChar(NET_20K_SIZE + 25u, &s_2x2_Cache[0u]); /*长度(暂时填写满帧)*/ CM_LongToChar(s_2x2_Ctrl.LocalID, &s_2x2_Cache[4u]); /*源ID*/ - CM_LongToChar(s_2x2_Ctrl.PartnerID, &s_2x2_Cache[8u]); /*目的ID*/ + CM_LongToChar(0xFFu, &s_2x2_Cache[8u]); /*目的ID*/ CM_LongToChar(SysCyc, &s_2x2_Cache[12u]); /*周期号*/ s_2x2_Ctrl.TxSN++; CM_LongToChar(s_2x2_Ctrl.TxSN, &s_2x2_Cache[16u]); /*序列号*/ @@ -1616,233 +1807,36 @@ void SFM_2x2_Send(IN const CM_UINT8 *Data, IN CM_UINT32 DataLen, IN ENUM_2x2_MSG } /** -* @brief 2x2周期同步 -* @param cycTick 周期开始时刻 +* @brief 4x2周期同步对比参数 +* @param */ -void SFM_2x2_Sync(IN CM_UINT64 cycTick, OUT CM_INT64 *pOffset) +void SFM_4x2_Sync(void) { - /*本周期同步标志*/ - static ENUM_CM_RETURN g_syncFlag = ENUM_CM_FALSE; - static CM_INT32 s_count = 0; - static CM_INT64 s_sum = 0; - static CM_INT32 s_nsub = 0; - static CM_INT32 s_nadd = 0; - if(NULL == pOffset) + /*- 变量初始化 */ + ENUM_4x2_STATE_T state_2x2 = ENUM_4x2_SHUTDOWN; /* 本系热备状态 */ + (void)CFM_2x2_SyncSend(s_2x2_TxSyncMsg, (CM_INT32)s_2x2_TxSyncLen); + s_2x2_RxSyncLen = CFM_2x2_SyncRecv(s_2x2_RxSyncMsg, (CM_UINT32)sizeof(s_2x2_RxSyncMsg), &s_2x2_RxSyncTick); + /*TODO 统计、调整*/ + /*- 是否收到对系的周期同步报文 */ + if (s_2x2_RxSyncLen > 0) { - MSCP_LOG_MSG("ERROR: NULL !!! \n"); - CM_ASSERT(0, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_5, TSCP_DARK_ASSERT_1); - /*- 无需操作 */ + /*- 获取本系状态 */ + state_2x2 = SFM_GetLocal4x2State(); + MSCP_LOG_MSG("Obtain department status Obtain department status = %d\n",state_2x2); + /*- 本系是否非主 */ + if(ENUM_4x2_MASTER != state_2x2) + { + /*- 判断本系的关键数据是否与对系一致,若不一致,则本系宕机 */ + CM_RE_ASSERT(0 == CM_Memcmp((void*)(s_2x2_RxSyncMsg + 1), (void*)(s_2x2_TxSyncMsg + 1), (CM_SIZE_T)s_2x2_TxSyncLen - 1u), SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_5, TSCP_DARK_ASSERT_2); + } + else + { + /*- 无需操作 */ + } } else { - /*- 变量初始化 */ - CM_INT64 myDelay = 0; /* 本机延迟 */ - CM_INT64 myOffset = 0; /* 本机偏移 */ - CM_INT64 peerOffset = 0;/* 邻机偏移 */ - CM_INT64 aveOffset = 0; /* 平均偏移量 */ - CM_INT64 offset = 0; /* 修正量 */ - CM_INT64 cyctime_ns = 0; /* 周期时间ns值 */ - CM_INT64 val = 0; /* 临时变量 */ - CM_UINT8 myBuf[32] = {0u}; /* 2oo2缓冲区 */ - CM_UINT8 peerBuf[32] = {0u}; /* 2oo2缓冲区 */ - ENUM_CM_RETURN rt = ENUM_CM_FALSE; /* 函数返回值 */ - ENUM_2x2_STATE_T state_2x2 = ENUM_2x2_SHUTDOWN; /* 本系热备状态 */ - *pOffset = 0; - (void)CFM_2x2_SyncSend(s_2x2_TxSyncMsg, (CM_INT32)s_2x2_TxSyncLen); - s_2x2_RxSyncLen = CFM_2x2_SyncRecv(s_2x2_RxSyncMsg, (CM_UINT32)sizeof(s_2x2_RxSyncMsg), &s_2x2_RxSyncTick); - /*TODO 统计、调整*/ - /*- 是否收到对系的周期同步报文 */ - if (s_2x2_RxSyncLen > 0) - { - /*- 获取本系状态 */ - state_2x2 = SFM_2x2_GetLocal2x2State(); - MSCP_LOG_MSG("Obtain department status Obtain department status = %d\n",state_2x2); - /*- 本系是否非主 */ - if(ENUM_2x2_MASTER != state_2x2) - { - /*- 判断本系的关键数据是否与对系一致,若不一致,则本系宕机 */ - CM_RE_ASSERT(0 == CM_Memcmp((void*)(s_2x2_RxSyncMsg + 1), (void*)(s_2x2_TxSyncMsg + 1), (CM_SIZE_T)s_2x2_TxSyncLen - 1u), SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_5, TSCP_DARK_ASSERT_2); - } - else - { - /*- 无需操作 */ - } - } - else - { - /*- 无需操作 */ - } - myOffset = CM_INT64_MAX; - rt = CFM_2x2_TimeGet(&myDelay, &myOffset); - /*- 是不是修正完的下一周期,如果是则offset无效 */ - if(ENUM_CM_TRUE == g_syncFlag) - { - myOffset = CM_INT64_MAX; - g_syncFlag = ENUM_CM_FALSE; - } - else - { - /*- 无需操作 */ - } - - MSCP_LOG_MSG("myOffset = %lld\n",myOffset); - CFM_2x2_TimeReq(); - MSCP_LOG_MSG("CFM_2x2_TimeReq\n"); - if (g_PFM_Cfg.M_2oo2_Enable == 0x55u) - { - CM_64ToChar(myOffset, myBuf); - (void)SFM_2oo2_Exchange_Currency(myBuf, 8, peerBuf, 8u, (CM_UINT32)ENUM_2oo2_SYNC); - peerOffset = CM_64FromChar(peerBuf); - if ((myOffset < CM_INT64_MAX) && (peerOffset < CM_INT64_MAX) && (myOffset > CM_INT64_MIN) && (peerOffset > CM_INT64_MIN)) - { - myOffset = (myOffset + peerOffset) / 2; - MSCP_LOG_MSG("myOffset = %d,The calibration result is the average value of 2OO2 dual machines\n", myOffset); - rt = ENUM_CM_TRUE; - } - else if ((myOffset < CM_INT64_MAX) && (myOffset > CM_INT64_MIN)) - { - MSCP_LOG_MSG("The calibration result is the local calibration result\n"); - rt = ENUM_CM_TRUE; - } - else if ((peerOffset < CM_INT64_MAX) && (peerOffset > CM_INT64_MIN)) - { - MSCP_LOG_MSG("The calibration result is the calibration result of the neighboring machine\n"); - myOffset = peerOffset; - rt = ENUM_CM_TRUE; - } - else - { - rt = ENUM_CM_FALSE; - MSCP_LOG_MSG("Failed to calibrate this period\n"); - } - } - else - { - /*- 无需操作 */ - } - - if (ENUM_CM_TRUE == rt) - { - if((myOffset >= (20 * CM_MILLION)) || (myOffset <= -(20 * CM_MILLION))) - { - MSCP_LOG_MSG("WARING[%d][%lldms]:2X offset deviation is too large\n",SFM_2x2_GetSysCount(),myOffset/CM_MILLION); - s_2x2_Ctrl.TimeSyncFlag = CM_FALSE; - } - else - { - /*- 无需操作 */ - MSCP_LOG_MSG("WARING[%d][%lldms]:2X offset sync success\n",SFM_2x2_GetSysCount(),myOffset/CM_MILLION); - s_2x2_Ctrl.TimeSyncFlag = CM_TRUE; - } - if(ENUM_2x2_OFFLINE == s_2x2_Ctrl.LocalState) - { - aveOffset = myOffset; - g_syncFlag = ENUM_CM_TRUE; - } - else - { - (void)CM_RB_Get(&s_2x2_TmRing, (CM_UINT16)SFM_2x2_TM_RING_SIZE, &val); - s_sum -= val; - (void)CM_RB_Write(&s_2x2_TmRing, myOffset); - s_sum += myOffset; - s_count++; - MSCP_LOG_MSG("Whether effective calibration results have been achieved %lld(ns)\n",s_sum); - if (s_count >= SFM_2x2_TM_RING_SIZE) - { - aveOffset = (s_sum) / (CM_INT64)SFM_2x2_TM_RING_SIZE; - g_syncFlag = ENUM_CM_TRUE; - } - else - { - - } - } - if (ENUM_CM_TRUE == g_syncFlag) - { - if (aveOffset >= (SFM_2x2_TM_FIX_VAL * CM_MILLION)) - { - offset = -aveOffset; - MSCP_LOG_MSG("offset = %lld\n",offset); - s_nsub++; - s_count = 0; - } - else if (aveOffset <= (-SFM_2x2_TM_FIX_VAL * CM_MILLION)) - { - offset = -aveOffset; - MSCP_LOG_MSG("offset = %lld\n",offset); - s_nadd++; - s_count = 0; - } - else - { - /*- 无需操作 */ - } - } - else - { - /*- 无需操作 */ - } - } - else - { - /*- 无需操作 */ - } - /*- 是否对系为主系 */ - if (ENUM_2x2_MASTER == s_2x2_Ctrl.PartnerState) - { - cyctime_ns = (CM_INT64)(g_PFM_Cfg.CYC_TIME) * CM_MILLION; - /*- 是否需要调大时钟超过一周期 */ - if (offset >= cyctime_ns) - { - /*- 本次只做周期基准时间调整,不调整周期定时器 (将偏移量四舍五入到整周期)*/ - *pOffset = ((CM_INT64)(offset + cyctime_ns / 2) / cyctime_ns) * cyctime_ns; - MSCP_LOG_MSG("Increase the clock by more than one cycle *pOffset = %lld\n",*pOffset); - } - /*- 是否需要调小时钟超过一周期 */ - else if (offset <= -cyctime_ns) - { - /*- 本次只做周期基准时间调整,不调整周期定时器 (将偏移量四舍五入到整周期) */ - *pOffset = ((CM_INT64)(offset - cyctime_ns / 2) / cyctime_ns) * cyctime_ns; - MSCP_LOG_MSG("Set the clock more than one cycle*pOffset = %lld\n",*pOffset); - } - /*- 是否需要调大时钟不超过一周期 */ - else if (offset >= (CM_INT64)SFM_2x2_TM_FIX_VAL * CM_MILLION) - { - /*- 本周期定时器延长10ms */ - *pOffset = SFM_2x2_TM_FIX_VAL * CM_MILLION; - MSCP_LOG_MSG("The interval timer is extended by 10ms\n"); - } - /*- 是否需要调小时钟不超过一周期 */ - else if (offset <= -(CM_INT64)SFM_2x2_TM_FIX_VAL * CM_MILLION) - { - /*- 本周期定时器缩短10ms */ - *pOffset = -SFM_2x2_TM_FIX_VAL * CM_MILLION; - MSCP_LOG_MSG("The interval timer is shortened by 10ms\n"); - } - else - { - /*- 不需要调整时钟 */ - *pOffset = 0; - } - } - else - { - /*- 不需要调整时钟 */ - *pOffset = 0; - } - /*- 记录同步结果 */ - MSCP_LOG_MSG("2x2 sync:%lld,%lld,%lld(us)\n", myOffset / 1000, peerOffset / 1000, *pOffset/1000); - MSCP_LOG_MSG("2x2 offset_sum:%lld(us),%d,%d\n", s_sum / 1000, s_nadd, s_nsub); - /*记录暗文日志*/ - (void)CFM_DarkLog_Multiple(DARK_LOG_HEX, TSCP_DARK_2X2_SYNC_TIME,8u, - sizeof(CM_UINT8),s_2x2_Ctrl.TimeSyncFlag, - sizeof(CM_UINT32),SFM_2x2_GetSysCount(), - sizeof(CM_UINT32),myOffset / 1000, - sizeof(CM_UINT32),peerOffset / 1000, - sizeof(CM_UINT32),*pOffset / 1000, - sizeof(CM_UINT32),s_sum / 1000, - sizeof(CM_UINT32),s_nadd, - sizeof(CM_UINT32),s_nsub); + /*- 无需操作 */ } } @@ -1905,11 +1899,11 @@ static void s_2x2_Recv(void) FrameIndex = CM_ShortFromChar(s_2x2_Cache + 23); msgCrc = CM_LongFromChar(s_2x2_Cache + msgLen); calcCrc = CM_Crc32(s_2x2_Cache, msgLen); + /**用于记录综合主系ID */ + SFM_2x2_SetMasterID(SrcID); /*- 校验报文头是否合法 */ - if ((SrcID == s_2x2_Ctrl.PartnerID) - && (DstID == s_2x2_Ctrl.LocalID) - /*&& msgCyc*/ - && (msgSN >= s_2x2_Ctrl.RxSN) + if ((DstID == 0xFFu) + && ((msgSN >= s_2x2_Ctrl.RxSN) || (msgCyc >= s_2x2_Ctrl.SysCycSync)) && (msgCrc == calcCrc)) { /*- 更新通信状态 */ @@ -1988,7 +1982,7 @@ static void s_2x2_Recv(void) break; case ENUM_2x2_MSG_APP_FOLLOW_CRC:/*-< 应用跟随报文 只比较CRC */ /*- @alias 分帧接收新跟随报文 */ - if (msgCyc > s_2x2_Ctrl.RxAppFollowSysCyc) + if (msgCyc > s_2x2_Ctrl.RxAppFollowSysCrcCyc) { /*- 分帧接收跟随报文 */ CM_RE_ASSERT(FrameNum <= (SFM_FOLLOW_BUFF_SIZE / NET_20K_SIZE), SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_6, TSCP_DARK_ASSERT_17); @@ -1999,7 +1993,7 @@ static void s_2x2_Recv(void) { /*- 更新跟随报文状态 */ CM_RE_ASSERT(8 == g_RxAppFollowCrc_len, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_6, TSCP_DARK_ASSERT_18); - s_2x2_Ctrl.RxAppFollowSysCyc = msgCyc; + s_2x2_Ctrl.RxAppFollowSysCrcCyc = msgCyc; MSCP_LOG_MSG("2x2 RxAppFollowCrcCyc = %d,rcvlen = %d,Time:%d us\r\n", msgCyc,g_RxAppFollowCrc_len,NOW_USED_TIME); } else @@ -2013,9 +2007,9 @@ static void s_2x2_Recv(void) } /*记录暗文日志*/ (void)CFM_DarkLog_Multiple(DARK_LOG_HEX, TSCP_DARK_2X2_RCV_APP_STATE_CRC,5u, - sizeof(CM_UINT8),(msgCyc > s_2x2_Ctrl.RxAppFollowSysCyc), + sizeof(CM_UINT8),(msgCyc > s_2x2_Ctrl.RxAppFollowSysCrcCyc), sizeof(CM_UINT32),msgCyc, - sizeof(CM_UINT32),s_2x2_Ctrl.RxAppFollowSysCyc, + sizeof(CM_UINT32),s_2x2_Ctrl.RxAppFollowSysCrcCyc, sizeof(CM_UINT32),g_RxAppFollowCrc_len, sizeof(CM_UINT32),NOW_USED_TIME); break; @@ -2196,7 +2190,7 @@ void SFM_2x2_InputProc(void) /*######################## 发送跟随数据(主系)########################*/ PFM_CFC_Check(33); /*- 本系是否为主 */ - if ((ENUM_2x2_MASTER == s_2x2_Ctrl.LocalState)) + if ((ENUM_4x2_MASTER == s_2x2_Ctrl.LocalState)) { /*- 填写适配层(-1)跟随数据 */ len = SFM_GetPrtclFollowData(g_TxBaseFollow + 4, (CM_UINT32)(sizeof(g_TxBaseFollow)) - 4u); @@ -2225,7 +2219,7 @@ void SFM_2x2_InputProc(void) /*- 接收对系数据 */ s_2x2_Recv(); /*- 本系是否非主 */ - if (ENUM_2x2_MASTER != s_2x2_Ctrl.LocalState) + if (ENUM_4x2_MASTER != s_2x2_Ctrl.LocalState) { /*- 记录当前时刻 */ sTick = CM_GetTick(); @@ -2299,8 +2293,8 @@ void SFM_2x2_InputProc(void) /*########################关键数据覆盖########################*/ PFM_CFC_Check(39); /*- 本系是否为离线或备 */ - if ((ENUM_2x2_OFFLINE == s_2x2_Ctrl.LocalState) - || (ENUM_2x2_SLAVE == s_2x2_Ctrl.LocalState)) + if ((ENUM_4x2_OFFLINE == s_2x2_Ctrl.LocalState) + || (ENUM_4x2_SLAVE == s_2x2_Ctrl.LocalState)) { if ((g_RxBaseFollow_len >= 12u) && (s_2x2_Ctrl.RxBaseFollowSysCyc > 0u))/*通过数据长度判断是否有新数据*/ { @@ -2325,7 +2319,8 @@ void SFM_2x2_InputProc(void) /*- 本周期是否跟随成功 */ /*- 记录本次跟随时间 */ s_2x2_Ctrl.LastFollowCyc = s_2x2_Ctrl.RxBaseFollowSysCyc; - MSCP_LOG_MSG("follow cyc = %d->%d\n",s_2x2_Ctrl.LastFollowCyc,sysCyc); + s_2x2_Ctrl.RxBaseFollowSyncFlag = 1u; + MSCP_LOG_MSG("follow cyc = %d->%d recv cyc = %d\n",s_2x2_Ctrl.LastFollowCyc,sysCyc,s_2x2_Ctrl.LastFollowCyc); /*记录暗文日志*/ (void)CFM_DarkLog_Multiple(DARK_LOG_HEX, TSCP_DARK_2X2_BASE_FOLLOW_HANDLE,4u, sizeof(CM_UINT8),1u, @@ -2384,7 +2379,7 @@ void SFM_2x2_OutputProc(IN const CM_UINT8 *CheckBuf, CM_INT32 CheckLen) /*########################发送输出校验########################*/ PFM_CFC_Check(10); /*- 本系是否为主系 */ - if (ENUM_2x2_MASTER == s_2x2_Ctrl.LocalState) + if (ENUM_4x2_MASTER == s_2x2_Ctrl.LocalState) { /*- 发送输出校验帧*/ SFM_2x2_Send(CheckBuf, (CM_UINT32)CheckLen, ENUM_2x2_MSG_OUTCHECK); @@ -2398,7 +2393,7 @@ void SFM_2x2_OutputProc(IN const CM_UINT8 *CheckBuf, CM_INT32 CheckLen) PFM_CFC_Check(11); /*- 接收2x2数据(状态帧、输出校验帧)*/ /*- 本系是否非主 */ - if (ENUM_2x2_MASTER != s_2x2_Ctrl.LocalState) + if (ENUM_4x2_MASTER != s_2x2_Ctrl.LocalState) { /*- 记录当前时刻 */ sTick = CM_GetTick(); @@ -2441,6 +2436,8 @@ void SFM_2x2_OutputProc(IN const CM_UINT8 *CheckBuf, CM_INT32 CheckLen) { s_2x2_Ctrl.RxCheckSysCyc = peerCtrl.RxCheckSysCyc; s_2x2_Ctrl.RxCheckLen = peerCtrl.RxCheckLen; + /**用于记录综合主系ID */ + SFM_2x2_SetMasterID(peerCtrl.MasterID); retError = CM_Memset((void*)s_2x2_Ctrl.RxCheckFrame, (CM_UINT8)0u, sizeof(s_2x2_Ctrl.RxCheckFrame), sizeof(s_2x2_Ctrl.RxCheckFrame)); CM_RE_ASSERT(ENUM_CM_TRUE == retError, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_2); (void)CM_Memcpy((void*)s_2x2_Ctrl.RxCheckFrame, sizeof(s_2x2_Ctrl.RxCheckFrame), (void*)peerCtrl.RxCheckFrame, (CM_SIZE_T)(peerCtrl.RxCheckLen)); @@ -2459,13 +2456,14 @@ void SFM_2x2_OutputProc(IN const CM_UINT8 *CheckBuf, CM_INT32 CheckLen) /*######################## 输出校验(非主)########################*/ PFM_CFC_Check(13); /*- 本系是否为备系或离线 */ - if ((ENUM_2x2_SLAVE == s_2x2_Ctrl.LocalState) || (ENUM_2x2_OFFLINE == s_2x2_Ctrl.LocalState)) + if ((ENUM_4x2_SLAVE == s_2x2_Ctrl.LocalState) || (ENUM_4x2_OFFLINE == s_2x2_Ctrl.LocalState)) { /*- 检查输出校验数据是否一致且为最新 */ if ((sysCyc == s_2x2_Ctrl.RxCheckSysCyc) && (CheckLen == s_2x2_Ctrl.RxCheckLen)) { /*- 进行输出比较 */ ret = CM_Memcmp((const void*)CheckBuf, (void*)s_2x2_Ctrl.RxCheckFrame, (CM_SIZE_T)CheckLen); + ret = 0;//qap /*- 输出比较是否一致 */ if (0 == ret) { @@ -2497,14 +2495,6 @@ void SFM_2x2_OutputProc(IN const CM_UINT8 *CheckBuf, CM_INT32 CheckLen) sizeof(CM_UINT32),s_2x2_Ctrl.RxCheckSysCyc); MSCP_LOG_MSG("Out Put failed_[%d]!\n",i); MSCP_LOG_BIN(CheckBuf,CheckLen); - if(ENUM_2x2_SLAVE == s_2x2_Ctrl.LocalState) - { - CM_RE_ASSERT(0, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_3); - } - else - { - /*- 无处理 */ - } } } else @@ -2524,36 +2514,32 @@ void SFM_2x2_OutputProc(IN const CM_UINT8 *CheckBuf, CM_INT32 CheckLen) SFM_2x2_Eth422StateDark(); } + /** * @brief 应用跟随数据接收 * @param sysCyc 系统周期号(0~0xFFFF) stat 本机热备状态(0~4) * @details * 接收主系发送的应用跟随数据 +* @ return rtn 0 二取未打开或 */ -static void SFM_2x2_RecvAppFollowData(CM_UINT32 sysCyc, ENUM_2x2_STATE_T stat) +static CM_UINT8 SFM_2x2_RecvAppFollowData(CM_UINT32 sysCyc) { - CM_UINT64 delta_Tick = 0u; + CM_UINT64 delta_Tick = (CM_UINT64)CM_UNSIGNED_INT_EXP(g_PFM_Cfg.CYC_TIME * CM_UNSIGNED_MILLION/5u); CM_UINT64 curTick = 0u; /* 当前时刻 */ CM_UINT64 sTick[3] = {0u}; /* 起始Tick */ CM_INT32 ret = 0; /* 返回值 */ STRU_2X2_CTRL_T peerCtrl = { 0 }; /* 邻机2x2状态 */ - if(ENUM_2x2_SLAVE == stat) - { - delta_Tick = (CM_UINT64)CM_UNSIGNED_INT_EXP(g_PFM_Cfg.CYC_TIME * CM_UNSIGNED_MILLION/10u); - } - else - { - delta_Tick = (CM_UINT64)CM_UNSIGNED_INT_EXP(g_PFM_Cfg.CYC_TIME * CM_UNSIGNED_MILLION/5u); - } - + CM_UINT8 rtn = 0u; + CM_UINT32 MaxSysCyc = 0; + CM_UINT32 MaxCrcCyc = 0; sTick[0] = CM_GetTick(); - /*- 持续接收对系输入同步数据,尝试(周期时间/10)ms */ + /*- 持续接收对系输入同步数据,尝试(周期时间/5)ms */ do { /*- 接收2x2数据 */ - /*- 是否收到了应用跟随数据 */ s_2x2_Recv(); - if (s_2x2_Ctrl.RxAppFollowSysCyc >= sysCyc) + /*- 是否收到了应用跟随数据 */ + if ((s_2x2_Ctrl.RxAppFollowSysCyc >= sysCyc) || (s_2x2_Ctrl.RxAppFollowSysCrcCyc >= sysCyc)) { /*- 返回 */ MSCP_LOG_MSG("rx app follow success\n"); @@ -2568,60 +2554,70 @@ static void SFM_2x2_RecvAppFollowData(CM_UINT32 sysCyc, ENUM_2x2_STATE_T stat) curTick = CM_GetTick(); } while (curTick < (sTick[0] + delta_Tick)); sTick[1] = CM_GetTick(); - - if(0x55u == g_PFM_Cfg.M_2oo2_Enable) - { - /*- 2oo2同步本系热备状态 */ - s_Ctrl_2oo2Sync(&peerCtrl); - /*- 是否需要向邻机发送应用同步数据 */ - if (s_2x2_Ctrl.RxAppFollowSysCyc > peerCtrl.RxAppFollowSysCyc) + /* 获取对系状态(如果2oo2使能) */ + if (0x55u == g_PFM_Cfg.M_2oo2_Enable) + { + s_Ctrl_2oo2Sync(&peerCtrl); + MaxSysCyc = (s_2x2_Ctrl.RxAppFollowSysCyc >= peerCtrl.RxAppFollowSysCyc)?s_2x2_Ctrl.RxAppFollowSysCyc:peerCtrl.RxAppFollowSysCyc; + MaxCrcCyc = (s_2x2_Ctrl.RxAppFollowSysCrcCyc >= peerCtrl.RxAppFollowSysCrcCyc)?s_2x2_Ctrl.RxAppFollowSysCrcCyc:peerCtrl.RxAppFollowSysCrcCyc; + /*交互原始数据*/ + if(MaxSysCyc > MaxCrcCyc) { - /*- 自己是否是备系*/ - if(ENUM_2x2_SLAVE == stat) + /*- 本周期收到应用跟随数据是全部数据*/ + if (s_2x2_Ctrl.RxAppFollowSysCyc > peerCtrl.RxAppFollowSysCyc) { - /*- 发送跟随数据的CRC和长度*/ - MSCP_LOG_MSG("A-B:g_RxAppFollowCrc_len:%lld\n",g_RxAppFollowCrc_len); - ret = SFM_2oo2_Exchange_Currency(g_RxAppFollowCrc, g_RxAppFollowCrc_len, g_RxAppFollowCrc, 0u, ENUM_2oo2_END_EX); - } - else - { - /*- 发送全部应用跟随数据*/ MSCP_LOG_MSG("A-B:g_RxAppFollow_len:%lld\n",g_RxAppFollow_len); ret = SFM_2oo2_Exchange_Currency(g_RxAppFollow, g_RxAppFollow_len, g_RxAppFollow, 0u, ENUM_2oo2_END_EX); } - - CM_RE_ASSERT(0 == ret, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_9, TSCP_DARK_ASSERT_1); - } - /*- 是否需要从邻机接收应用同步数据 */ - else if (s_2x2_Ctrl.RxAppFollowSysCyc < peerCtrl.RxAppFollowSysCyc) - { - /*- 自己是否是备系*/ - if(ENUM_2x2_SLAVE == stat) + else if(s_2x2_Ctrl.RxAppFollowSysCyc < peerCtrl.RxAppFollowSysCyc) { - /*- 接收应用跟随数据的CRC和长度*/ - MSCP_LOG_MSG("B-A:g_RxAppFollowCrc_len:%lld\n",g_RxAppFollowCrc_len); - g_RxAppFollow_len = SFM_2oo2_Exchange_Currency(g_RxAppFollowCrc, 0, g_RxAppFollowCrc, sizeof(g_RxAppFollowCrc), ENUM_2oo2_END_EX); + MSCP_LOG_MSG("B-A:g_RxAppFollow_len:%lld\n",g_RxAppFollow_len); + g_RxAppFollow_len = SFM_2oo2_Exchange_Currency(g_RxAppFollow, 0, g_RxAppFollow, sizeof(g_RxAppFollow), ENUM_2oo2_END_EX); + s_2x2_Ctrl.RxAppFollowSysCyc = peerCtrl.RxAppFollowSysCyc; + /**用于记录综合主系ID */ + SFM_2x2_SetMasterID(peerCtrl.MasterID); } else { - /*- 接收全部应用跟随数据*/ - MSCP_LOG_MSG("B-A:g_RxAppFollow_len:%lld\n",g_RxAppFollow_len); - g_RxAppFollow_len = SFM_2oo2_Exchange_Currency(g_RxAppFollow, 0, g_RxAppFollow, sizeof(g_RxAppFollow), ENUM_2oo2_END_EX); + ; } - /*- 更新结接收应用跟随数据周期号*/ - s_2x2_Ctrl.RxAppFollowSysCyc = peerCtrl.RxAppFollowSysCyc; + s_2x2_Ctrl.RxAppFollowSysCrcCyc = s_2x2_Ctrl.RxAppFollowSysCyc; + rtn = 2u; + } + /*交互CRC*/ + else if(MaxSysCyc < MaxCrcCyc) + { + /*- 本周期接收到主系的CRC同步数据*/ + if(s_2x2_Ctrl.RxAppFollowSysCrcCyc > peerCtrl.RxAppFollowSysCrcCyc) + { + MSCP_LOG_MSG("A-B:g_RxAppFollowCrc_len:%lld\n",g_RxAppFollowCrc_len); + ret = SFM_2oo2_Exchange_Currency(g_RxAppFollowCrc, g_RxAppFollowCrc_len, g_RxAppFollowCrc, 0u, ENUM_2oo2_END_EX); + } + else if(s_2x2_Ctrl.RxAppFollowSysCrcCyc < peerCtrl.RxAppFollowSysCrcCyc) + { + MSCP_LOG_MSG("B-A:g_RxAppFollowCrc_len:%lld\n",g_RxAppFollowCrc_len); + g_RxAppFollow_len = SFM_2oo2_Exchange_Currency(g_RxAppFollowCrc, 0, g_RxAppFollowCrc, sizeof(g_RxAppFollowCrc), ENUM_2oo2_END_EX); + s_2x2_Ctrl.RxAppFollowSysCrcCyc = peerCtrl.RxAppFollowSysCrcCyc; + /**用于记录综合主系ID */ + SFM_2x2_SetMasterID(peerCtrl.MasterID); + } + else + { + ; + } + s_2x2_Ctrl.RxAppFollowSysCyc = s_2x2_Ctrl.RxAppFollowSysCrcCyc; + rtn = 1u; } else { - /*- 无处理 */ + } } - else - { - /*- 无处理 */ - } + sTick[2] = CM_GetTick(); - MSCP_LOG_MSG("2xRecv over time = %lld ,2oo2 time = %lld\n",(sTick[1] - sTick[0]) / 1000u, (sTick[2] - sTick[1]) / 1000u); + MSCP_LOG_MSG("2xRecv use time = %lld ,2oo2 time = %lld\n",(sTick[1] - sTick[0]) / 1000u, (sTick[2] - sTick[1]) / 1000u); + + return rtn; } /** @@ -2631,81 +2627,102 @@ void SFM_2x2_EndProc(void) { /*- 变量初始化 */ CM_UINT32 sysCyc = SFM_2x2_GetSysCount(); /* 系统周期号 */ - ENUM_2x2_STATE_T stat = SFM_2x2_GetLocal2x2State(); /* 本机热备状态 */ + ENUM_4x2_STATE_T stat = SFM_GetLocal4x2State(); /* 本机热备状态 */ + //ENUM_2x2_STATE_T PartnerSate = SFM_2x2_GetPartner2x2State(); /* 对系热备状态 */ ENUM_CM_RETURN retFollowUp = ENUM_CM_FALSE; CM_UINT64 curTickTest[10] = {0u}; /* 当前时刻 */ CM_INT32 cmp_ret = 1; + CM_UINT8 type = 0u; /*接收到的跟随数据类型 1 CRC 2 全数据*/ + static CM_UINT8 debounce = 0u; /*防抖计数*/ + CM_UINT8 SendFollowDataType = 0u; - switch(stat) - { - case ENUM_2x2_MASTER: - curTickTest[0] = CM_GetTick(); - if(ENUM_2x2_SLAVE == SFM_2x2_GetPartner2x2State()) - { - /*- 发送跟随数据 */ - SFM_2x2_Send(g_TxAppFollow, (CM_UINT32)8, ENUM_2x2_MSG_APP_FOLLOW_CRC); - MSCP_LOG_MSG("Iam master partner is slave send appfollowcrc\n"); - } - else - { - SFM_2x2_Send(g_TxAppFollow + 4, (CM_UINT32)g_TxAppFollow_len, ENUM_2x2_MSG_APP_FOLLOW); - MSCP_LOG_MSG("Iam master partner is offline send appfollow\n"); - } - curTickTest[1] = CM_GetTick(); - break; - case ENUM_2x2_SLAVE: - SFM_2x2_RecvAppFollowData(sysCyc, stat); - curTickTest[0] = CM_GetTick(); - if (s_2x2_Ctrl.RxAppFollowSysCyc >= sysCyc) - { - cmp_ret = CM_Memcmp(g_TxAppFollow, g_RxAppFollowCrc, 8);//如果同步失败 备系降为离线 - if(0 == cmp_ret) - { - /*- 跟随数据和主系一致*/ - s_2x2_Ctrl.AppFollowCmpFlag = 0u; - MSCP_LOG_MSG("CRC cmp is OK\n"); - } - else - { - /*- 比较失败 降离线*/ - s_2x2_Ctrl.AppFollowCmpFlag = 1u; - MSCP_LOG_MSG("CRC cmp is fail\n"); - } - } - else - { - /*没有收到数据 将离线*/ - s_2x2_Ctrl.AppFollowCmpFlag = 1u; - } - curTickTest[1] = CM_GetTick(); - break; - case ENUM_2x2_OFFLINE: - case ENUM_2x2_PRE_MASTER: - SFM_2x2_RecvAppFollowData(sysCyc, stat); - curTickTest[0] = CM_GetTick(); - /* 应用跟随数据覆盖 */ - /*- 是否收到了最新的应用跟随数据 */ - if (s_2x2_Ctrl.RxAppFollowSysCyc >= sysCyc) + + if(ENUM_4x2_MASTER == stat) + { + /*本系时主 执行发送跟随数据*/ + curTickTest[0] = CM_GetTick(); + /* 条件 本地对系是备或者宕机 && 对地A是备或者宕机 && 对地B是备或者宕机*/ + SendFollowDataType = SFM_GetAppFollowType(); + if(1u == SendFollowDataType) { - /*- 调用应用API覆盖应用关键数据 */ - retFollowUp = APP_API_FollowUp(g_RxAppFollow, (CM_UINT32)g_RxAppFollow_len); - CM_RE_ASSERT(ENUM_CM_TRUE == retFollowUp, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_9, TSCP_DARK_ASSERT_2); - s_2x2_Ctrl.AppFollowCmpFlag = 0u; + /*- 发送跟随数据 */ + if(debounce++ >= 3u) + { + /*- 发送跟随数据 */ + SFM_2x2_Send(g_TxAppFollow, (CM_UINT32)8, ENUM_2x2_MSG_APP_FOLLOW_CRC); + MSCP_LOG_MSG("Iam master partner is slave send appfollowcrc\n"); + debounce = 3u; + //MSCP_LOG_BIN(g_TxAppFollow + 8, g_TxAppFollow_len - 4);//qap + } + else + { + /*- 全部跟随数据*/ + SFM_2x2_Send(g_TxAppFollow + 4, (CM_UINT32)g_TxAppFollow_len, ENUM_2x2_MSG_APP_FOLLOW); + MSCP_LOG_MSG("Iam master partner is offline send appfollow len = %d\n",g_TxAppFollow_len); + } } else { - s_2x2_Ctrl.AppFollowCmpFlag = 1u; + debounce = 0u; + SFM_2x2_Send(g_TxAppFollow + 4, (CM_UINT32)g_TxAppFollow_len, ENUM_2x2_MSG_APP_FOLLOW); + MSCP_LOG_MSG("Iam master partner is offline send appfollow len = %d\n",g_TxAppFollow_len); } - curTickTest[1] = CM_GetTick(); - break; - default: - break; - } + curTickTest[1] = CM_GetTick(); + } + else if((ENUM_4x2_OFFLINE == stat) || (ENUM_4x2_SLAVE == stat)) + { + /*- 本地不是主地主, 接收跟随数据*/ + type = SFM_2x2_RecvAppFollowData(sysCyc); + curTickTest[0] = CM_GetTick(); + if(1u == type) + { + /*- 主发的是CRC数据*/ + cmp_ret = CM_Memcmp(g_TxAppFollow, g_RxAppFollowCrc, 8);//如果同步失败 备系降为离线 + if(0 == cmp_ret) + { + /*- 跟随数据和主系一致*/ + s_2x2_Ctrl.AppFollowCmpFailFlag = 0u; + MSCP_LOG_MSG("CRC cmp is OK!!! LL:%d,LC:0x%x,PL:%d,PC:0x%x\n",CM_LongFromChar(&g_TxAppFollow[4]),CM_LongFromChar(&g_TxAppFollow[0]),CM_LongFromChar(&g_RxAppFollowCrc[4]),CM_LongFromChar(&g_RxAppFollowCrc[0])); + } + else + { + /*- 比较失败 降离线*/ + s_2x2_Ctrl.AppFollowCmpFailFlag = 1u; + MSCP_LOG_MSG("CRC cmp is fail!!! LL:%d,LC:0x%x,PL:%d,PC:0x%x\n",CM_LongFromChar(&g_TxAppFollow[4]),CM_LongFromChar(&g_TxAppFollow[0]),CM_LongFromChar(&g_RxAppFollowCrc[4]),CM_LongFromChar(&g_RxAppFollowCrc[0])); + MSCP_LOG_BIN(g_TxAppFollow + 8, g_TxAppFollow_len - 4); + } + } + else if(2u == type) + { + /*- 是否收到了最新的应用跟随数据 */ + /*- 调用应用API覆盖应用关键数据 */ + //retFollowUp = APP_API_FollowUp(g_RxAppFollow, (CM_UINT32)g_RxAppFollow_len); + //CM_RE_ASSERT(ENUM_CM_TRUE == retFollowUp, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_9, TSCP_DARK_ASSERT_2); + s_2x2_Ctrl.AppFollowCmpFailFlag = 0u; + } + else + { + MSCP_LOG_MSG("no follow data\n"); + } + } + else + { + ;/*预升主不做跟随*/ + } + + + /*- 记录日志*/ MSCP_LOG_MSG("slef stata is %d use time = %lld\n",stat,(curTickTest[1] - curTickTest[0]) / 1000u); + /*主线程状态同步到应用*/ + s_2x2_Ctrl.LastAppFollowCyc = s_2x2_Ctrl.RxAppFollowSysCyc; + s_2x2_Ctrl.LastLocalState = s_2x2_Ctrl.LocalState; + s_2x2_Ctrl.LastPartnerState = s_2x2_Ctrl.PartnerState; /*更新周期号*/ - if ((s_2x2_Ctrl.RxBaseFollowSysCyc >= sysCyc) && (ENUM_2x2_MASTER != stat)) + if ((1u == s_2x2_Ctrl.RxBaseFollowSyncFlag) && (ENUM_4x2_MASTER != stat)) { g_MSCP_SysCount = s_2x2_Ctrl.SysCycSync; + s_2x2_Ctrl.RxBaseFollowSysCyc = 0u; + s_2x2_Ctrl.RxBaseFollowSyncFlag = 0u; } else { @@ -2715,9 +2732,6 @@ void SFM_2x2_EndProc(void) (void)CFM_DarkLog_Multiple(DARK_LOG_HEX, TSCP_DARK_2X2_APP_FOLLOW_HANDLE,2u, sizeof(CM_UINT32),s_2x2_Ctrl.RxAppFollowSysCyc, sizeof(CM_UINT32),(curTickTest[1] - curTickTest[0])/1000u); - /*主线程状态同步到应用*/ - s_2x2_Ctrl.LastLocalState = s_2x2_Ctrl.LocalState; - s_2x2_Ctrl.LastPartnerState = s_2x2_Ctrl.PartnerState; (void)SFM_2x2_SyncIoInput(s_2x2_InputIoState,40u); /*- 清空待发送的应用跟随数据,待应用下周期填写 */ g_TxAppFollow_len = 4; @@ -2755,14 +2769,13 @@ static void s_Ctrl_2oo2Sync(OUT STRU_2X2_CTRL_T *pPeerCtrl) CM_RE_ASSERT(s_2x2_Ctrl.LastLocalState == pPeerCtrl->LastLocalState, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_10, TSCP_DARK_ASSERT_7); CM_RE_ASSERT(s_2x2_Ctrl.LastPartnerState == pPeerCtrl->LastPartnerState, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_10, TSCP_DARK_ASSERT_8); CM_RE_ASSERT(s_2x2_Ctrl.OutPutCheckFailFlag == pPeerCtrl->OutPutCheckFailFlag, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_10, TSCP_DARK_ASSERT_9); - CM_RE_ASSERT(s_2x2_Ctrl.AppFollowCmpFlag == pPeerCtrl->AppFollowCmpFlag, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_10, TSCP_DARK_ASSERT_12); + CM_RE_ASSERT(s_2x2_Ctrl.AppFollowCmpFailFlag == pPeerCtrl->AppFollowCmpFailFlag, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_10, TSCP_DARK_ASSERT_12); } /** * @brief 获取本系热备状态 * @return 本系热备状态 * - ENUM_2x2_OFFLINE 离线 -* - ENUM_2x2_PRE_MASTER 预升主 * - ENUM_2x2_MASTER 主系 * - ENUM_2x2_SLAVE 备系 * @details @@ -2772,14 +2785,14 @@ static void s_Ctrl_2oo2Sync(OUT STRU_2X2_CTRL_T *pPeerCtrl) * 将在周期应用逻辑执行之前进行跟随数据覆盖。 * @see :: APP_API_FollowUp */ -ENUM_2x2_STATE_T SFM_2x2_GetLocal2x2State(void) +ENUM_4x2_STATE_T SFM_GetLocal4x2State(void) { /*每次查询控制主备指示灯*/ - if(ENUM_2x2_MASTER == s_2x2_Ctrl.LocalState) + if(ENUM_4x2_MASTER == s_2x2_Ctrl.LocalState) { DFM_ledMS(1u); } - else if(ENUM_2x2_SLAVE == s_2x2_Ctrl.LocalState) + else if(ENUM_4x2_SLAVE == s_2x2_Ctrl.LocalState) { DFM_ledMS(3u); } @@ -2796,13 +2809,12 @@ ENUM_2x2_STATE_T SFM_2x2_GetLocal2x2State(void) * @return 对系热备状态 * - ENUM_2x2_SHUTDOWN 宕机 * - ENUM_2x2_OFFLINE 离线 -* - ENUM_2x2_PRE_MASTER 预升主 * - ENUM_2x2_MASTER 主系 * - ENUM_2x2_SLAVE 备系 * @details * 与对系通信中断时默认对系状态为“宕机” */ -ENUM_2x2_STATE_T SFM_2x2_GetPartner2x2State(void) +ENUM_4x2_STATE_T SFM_2x2_GetPartner2x2State(void) { /*- 输出对系热备状态 */ return CM_ATOMIC_LOAD(&s_2x2_Ctrl.PartnerState); @@ -2813,18 +2825,10 @@ ENUM_2x2_STATE_T SFM_2x2_GetPartner2x2State(void) * @brief 获取上一周期的本系热备状态 * @return 本系热备状态 * - ENUM_2x2_OFFLINE 离线 -* - ENUM_2x2_PRE_MASTER 预升主 * - ENUM_2x2_MASTER 主系 * - ENUM_2x2_SLAVE 备系 -* @note -* 宕机状态下应用逻辑不会被执行, -* 所以应用本函数不可能返回“宕机”。 -* 其它状态下周期应用逻辑都会被执行, -* 但只有“主系”状态下本机的输出才会被真实输出, -* 在“离线”和“备系”状态下且本周期收到有效跟随数据时, -* 将在周期应用逻辑执行之前进行跟随数据覆盖。 */ -ENUM_2x2_STATE_T SFM_2x2_GetLastLocal2x2State(void) +ENUM_4x2_STATE_T SFM_2x2_GetLastLocal2x2State(void) { return CM_ATOMIC_LOAD(&s_2x2_Ctrl.LastLocalState); } @@ -2834,17 +2838,73 @@ ENUM_2x2_STATE_T SFM_2x2_GetLastLocal2x2State(void) * @return 对系热备状态 * - ENUM_2x2_SHUTDOWN 宕机 * - ENUM_2x2_OFFLINE 离线 -* - ENUM_2x2_PRE_MASTER 预升主 * - ENUM_2x2_MASTER 主系 * - ENUM_2x2_SLAVE 备系 * @note * 与对系通信中断时默认对系状态为“宕机” */ -ENUM_2x2_STATE_T SFM_2x2_GetLastPartner2x2State(void) +ENUM_4x2_STATE_T SFM_2x2_GetLastPartner2x2State(void) { return CM_ATOMIC_LOAD(&s_2x2_Ctrl.LastPartnerState); } +/** +* @brief 获取区域A系热备状态 +* @return 本系热备状态 +* - ENUM_4x2_OFFLINE 离线 +* - ENUM_4x2_MASTER 主系 +* - ENUM_4x2_SLAVE 备系 +* @details +*/ +ENUM_4x2_STATE_T SFM_2x2_GetArea_A_2x2State(void) +{ + /*- 输出本系热备状态 */ + return CM_ATOMIC_LOAD(&s_2x2_Ctrl.Area_A_State); +} +/** +* @brief 获取区域B系热备状态 +* @return 对系热备状态 +* - ENUM_4x2_SHUTDOWN 宕机 +* - ENUM_4x2_OFFLINE 离线 +* - ENUM_4x2_MASTER 主系 +* - ENUM_4x2_SLAVE 备系 +* @details +* 与对系通信中断时默认对系状态为“宕机” +*/ +ENUM_4x2_STATE_T SFM_2x2_GetArea_B_2x2State(void) +{ + /*- 输出对系热备状态 */ + return CM_ATOMIC_LOAD(&s_2x2_Ctrl.Area_B_State); +} + + +/* +* @brief 获取上一周期的区域A系热备状态 +* @return 本系热备状态 +* - ENUM_4x2_SHUTDOWN 宕机 +* - ENUM_4x2_OFFLINE 离线 +* - ENUM_4x2_MASTER 主系 +* - ENUM_4x2_SLAVE 备系 +*/ +ENUM_4x2_STATE_T SFM_2x2_GetLastArea_A_2x2State(void) +{ + return CM_ATOMIC_LOAD(&s_2x2_Ctrl.LastArea_A_State); +} + +/** +* @brief 获取上一周期的区域B系热备状态 +* @return 对系热备状态 +* - ENUM_4x2_SHUTDOWN 宕机 +* - ENUM_4x2_OFFLINE 离线 +* - ENUM_4x2_MASTER 主系 +* - ENUM_4x2_SLAVE 备系 +* @note +* 与对系通信中断时默认对系状态为“宕机” +*/ +ENUM_4x2_STATE_T SFM_2x2_GetLastArea_B_2x2State(void) +{ + return CM_ATOMIC_LOAD(&s_2x2_Ctrl.LastArea_B_State); +} /** * @brief 设置跟随数据 * @param Data 跟随数据数组 @@ -2885,6 +2945,11 @@ CM_UINT8 SFM_2x2_SetFollowData(IN const CM_UINT8 Data[], IN CM_UINT32 Len) /*- 返回执行结果 */ return rt; } +/*设置综合主系ID*/ +void SFM_2x2_SetMasterID(CM_UINT32 master_id) +{ + s_2x2_Ctrl.MasterID = master_id; +} /** * @brief 获取系统周期号 @@ -2899,6 +2964,23 @@ CM_UINT32 SFM_2x2_GetSysCount(void) return g_MSCP_SysCount; } /** +* @brief 2x2切系开关状态初始化 +* @details +*/ +static void s_State_SwitchState_Init(void) +{ + s_2x2_state_Ctrl.LocalSwitchState = ENUM_2x2_SWITCH_CLOSE; + s_2x2_state_Ctrl.PeerSwitchState = ENUM_2x2_SWITCH_CLOSE; + s_2x2_state_Ctrl.PartnerSwitchState = ENUM_2x2_SWITCH_CLOSE; + s_2x2_state_Ctrl.PartPeerSwitchState = ENUM_2x2_SWITCH_CLOSE; + s_2x2_state_Ctrl.LocalAIDSwitchState = ENUM_2x2_AIDSWITCH_OVER; + s_2x2_state_Ctrl.PeerAIDSwitchState = ENUM_2x2_AIDSWITCH_OVER; + s_2x2_state_Ctrl.PartnerAIDSwitchState = ENUM_2x2_AIDSWITCH_OVER; + s_2x2_state_Ctrl.PartPeerAIDSwitchState = ENUM_2x2_AIDSWITCH_OVER; + s_2x2_state_Ctrl.ctrSwitchFlag = 0u; + s_2x2_state_Ctrl.aidSwitchFlag = 0u; +} +/** * @brief 更新本周期通信状态通用函数 * @param ComOKCountBuf 更新状态通信ok次数数组 * @param ComOKCount 通信OK次数 @@ -2999,6 +3081,133 @@ CM_BOOL MSCP_Get_2X_VagueCom_State(STRU_2X2_COM_STATE_RECORD_T *ComOKCount) return CM_FALSE; } /** +* @brief 2x2切系本地通信状态管理 +* @details +*/ +static ENUM_CM_RETURN s_State_Get_CommunicationState(ENUM_2x2_COM_STATE_T ComState) +{ + ENUM_CM_RETURN rtn = ENUM_CM_FALSE; + CM_UINT8 i = 0u; + CM_UINT8 OkCount = 0u; + STRU_2X2_COM_STATE_RECORD_T *tempCount[4] = {0}; + CM_UINT8 tempSum = 0u; + switch(ComState) + { + case ENUM_2x2_COM_LOG:/*通信状态日志*/ + SFM_LOG_MSG_2X("Transition:[%d]MineCom:%d-%d:%d-%d:%d-%d\r\n",s_2x2_state_Ctrl.MicroCyc,\ + s_2x2_state_Ctrl.MineComOKCount[0].SysCyc,s_2x2_state_Ctrl.MineComOKCount[0].MicroCyc,\ + s_2x2_state_Ctrl.MineComOKCount[1].SysCyc,s_2x2_state_Ctrl.MineComOKCount[1].MicroCyc,\ + s_2x2_state_Ctrl.MineComOKCount[2].SysCyc,s_2x2_state_Ctrl.MineComOKCount[2].MicroCyc); + SFM_LOG_MSG_2X("Transition:[%d]PeerCom:%d-%d:%d-%d:%d-%d\r\n",s_2x2_state_Ctrl.MicroCyc,\ + s_2x2_state_Ctrl.PeerComOKCount[0].SysCyc,s_2x2_state_Ctrl.PeerComOKCount[0].MicroCyc,\ + s_2x2_state_Ctrl.PeerComOKCount[1].SysCyc,s_2x2_state_Ctrl.PeerComOKCount[1].MicroCyc,\ + s_2x2_state_Ctrl.PeerComOKCount[2].SysCyc,s_2x2_state_Ctrl.PeerComOKCount[2].MicroCyc); + SFM_LOG_MSG_2X("Transition:[%d]MineUart:%d-%d:%d-%d:%d-%d\r\n",s_2x2_state_Ctrl.MicroCyc,\ + s_2x2_state_Ctrl.MineExtendOKCount[0].SysCyc,s_2x2_state_Ctrl.MineExtendOKCount[0].MicroCyc,\ + s_2x2_state_Ctrl.MineExtendOKCount[1].SysCyc,s_2x2_state_Ctrl.MineExtendOKCount[1].MicroCyc,\ + s_2x2_state_Ctrl.MineExtendOKCount[2].SysCyc,s_2x2_state_Ctrl.MineExtendOKCount[2].MicroCyc); + SFM_LOG_MSG_2X("Transition:[%d]PeerUart:%d-%d:%d-%d:%d-%d\r\n",s_2x2_state_Ctrl.MicroCyc,\ + s_2x2_state_Ctrl.PeerExtendOKCount[0].SysCyc,s_2x2_state_Ctrl.PeerExtendOKCount[0].MicroCyc,\ + s_2x2_state_Ctrl.PeerExtendOKCount[1].SysCyc,s_2x2_state_Ctrl.PeerExtendOKCount[1].MicroCyc,\ + s_2x2_state_Ctrl.PeerExtendOKCount[2].SysCyc,s_2x2_state_Ctrl.PeerExtendOKCount[2].MicroCyc); + rtn = ENUM_CM_TRUE; + break; + case ENUM_2x2_COM_VAGUE_STATE:/*模糊状态断线检测*/ + if ((CM_FALSE == MSCP_Get_2X_VagueCom_State(&s_2x2_state_Ctrl.MineComOKCount[0])) && + (CM_FALSE == MSCP_Get_2X_VagueCom_State(&s_2x2_state_Ctrl.PeerComOKCount[0])) && + (CM_FALSE == MSCP_Get_2X_VagueCom_State(&s_2x2_state_Ctrl.MineExtendOKCount[0])) && + (CM_FALSE == MSCP_Get_2X_VagueCom_State(&s_2x2_state_Ctrl.PeerExtendOKCount[0])) && + ((s_2x2_thread_Ctrl.number_Cyc - 2) <= s_2x2_state_Ctrl.MicroCyc)) + { + rtn = ENUM_CM_FALSE; + } + else + { + rtn = ENUM_CM_TRUE; + } + break; + case ENUM_2x2_COM_EXIST_1_LINE:/*存在一根线通信正常*/ + if((ENUM_CM_TRUE == MSCP_Get_2X_Com_State(&s_2x2_state_Ctrl.MineComOKCount[0],0u)) || + (ENUM_CM_TRUE == MSCP_Get_2X_Com_State(&s_2x2_state_Ctrl.PeerComOKCount[0],0u)) || + (ENUM_CM_TRUE == MSCP_Get_2X_Com_State(&s_2x2_state_Ctrl.MineExtendOKCount[0],0u)) || + (ENUM_CM_TRUE == MSCP_Get_2X_Com_State(&s_2x2_state_Ctrl.PeerExtendOKCount[0],0u))) + { + rtn = ENUM_CM_TRUE; + } + else + { + rtn = ENUM_CM_FALSE; + } + break; + case ENUM_2x2_COM_ALL_DIS:/*是否全部中断*/ + if((ENUM_CM_FALSE == MSCP_Get_2X_Com_State(&s_2x2_state_Ctrl.MineComOKCount[0],0u)) && + (ENUM_CM_FALSE == MSCP_Get_2X_Com_State(&s_2x2_state_Ctrl.PeerComOKCount[0],0u)) && + (ENUM_CM_FALSE == MSCP_Get_2X_Com_State(&s_2x2_state_Ctrl.MineExtendOKCount[0],0u)) && + (ENUM_CM_FALSE == MSCP_Get_2X_Com_State(&s_2x2_state_Ctrl.PeerExtendOKCount[0],0u))) + { + rtn = ENUM_CM_FALSE; + } + else + { + rtn = ENUM_CM_TRUE; + } + break; + case ENUM_2x2_COM_TOGETHER_DIS:/*是否同时中断*/ + tempCount[0] = &s_2x2_state_Ctrl.MineComOKCount[0]; + tempCount[1] = &s_2x2_state_Ctrl.PeerComOKCount[0]; + tempCount[2] = &s_2x2_state_Ctrl.MineExtendOKCount[0]; + tempCount[3] = &s_2x2_state_Ctrl.PeerExtendOKCount[0]; + for(i = 0;i < 4u;i++) + { + if(MSCP_Get_2X_DisCom_Count(tempCount[i],0u) <= MSCP_2X2_SYNC_TIMEOUT_CYC) + { + OkCount++;//5个小周期 认为没断 计数 + } + } + if( 3 <= OkCount) + { + rtn = ENUM_CM_TRUE;//至少3根在 认为没断 + } + else + { + rtn = ENUM_CM_FALSE; + } + SFM_LOG_MSG_2X("Transition:2x2:ENUM_2x2_COM_TOGETHER_DIS(%d)(%d)(%d)(%d)\n", + MSCP_Get_2X_DisCom_Count(&s_2x2_state_Ctrl.MineComOKCount[0],0u), + MSCP_Get_2X_DisCom_Count(&s_2x2_state_Ctrl.PeerComOKCount[0],0u), + MSCP_Get_2X_DisCom_Count(&s_2x2_state_Ctrl.MineExtendOKCount[0],0u), + MSCP_Get_2X_DisCom_Count(&s_2x2_state_Ctrl.PeerExtendOKCount[0],0u)); + break; + case ENUM_2x2_COM_SWITCH_CONDITION:/*是否满足至少一个以太网和任一通道*/ + tempCount[0] = &s_2x2_state_Ctrl.MineComOKCount[0]; + tempCount[1] = &s_2x2_state_Ctrl.PeerComOKCount[0]; + tempCount[2] = &s_2x2_state_Ctrl.MineExtendOKCount[0]; + tempCount[3] = &s_2x2_state_Ctrl.PeerExtendOKCount[0]; + for(i = 0;i < 4u;i++) + { + if(ENUM_CM_TRUE == MSCP_Get_2X_Com_State(tempCount[i],0u)) + { + OkCount++; + tempSum += i; + } + } + if((3 <= OkCount) || ((2 == OkCount) && (5 > tempSum)))/*等于5只能是两个串口*/ + { + rtn = ENUM_CM_TRUE; + } + else + { + rtn = ENUM_CM_FALSE; + } + break; + default: + rtn = ENUM_CM_FALSE; + break; + + } + return rtn; +} +/** * @brief 和邻机交换从对系获得的输入数据 * @param pPeerCtrl:邻机状态 取值范围:非空 * @return 无 @@ -3177,16 +3386,16 @@ static void SFM_2x2_Eth422StateDark(void) { u_state.stru_state.bit1 = 0x01 & (s_2x2_Ctrl.MineComState); u_state.stru_state.bit2 = 0x01 & (s_2x2_Ctrl.PeerComState); - u_state.stru_state.bit3 = 0x01 & (s_2x2_Ctrl.MineUartState); - u_state.stru_state.bit4 = 0x01 & (s_2x2_Ctrl.PeerUartState); + u_state.stru_state.bit3 = 0x01 & (s_2x2_Ctrl.MineExtendState); + u_state.stru_state.bit4 = 0x01 & (s_2x2_Ctrl.PeerExtendState); u_state.stru_state.bit5 = 0; } else { u_state.stru_state.bit1 = 0x01 & (s_2x2_Ctrl.PeerComState); u_state.stru_state.bit2 = 0x01 & (s_2x2_Ctrl.MineComState); - u_state.stru_state.bit3 = 0x01 & (s_2x2_Ctrl.PeerUartState); - u_state.stru_state.bit4 = 0x01 & (s_2x2_Ctrl.MineUartState); + u_state.stru_state.bit3 = 0x01 & (s_2x2_Ctrl.PeerExtendState); + u_state.stru_state.bit4 = 0x01 & (s_2x2_Ctrl.MineExtendState); u_state.stru_state.bit5 = 0; } /*- 写入2乘的422eth通信状况至暗文队列 */ @@ -3205,11 +3414,42 @@ static void SFM_2x2_Eth422StateDark(void) * 3, 主系 * 4, 备系 */ -void SFM_2x2_SetLocal2x2State(ENUM_2x2_STATE_T localState) +void SFM_2x2_SetLocal2x2State(ENUM_4x2_STATE_T localState) { /*- 设置本系热备状态 */ s_2x2_Ctrl.LocalState = localState; } +/*更新本机通控健康度*/ +void SFM_2x2_UpdataLocalCC_Health(CM_UINT8 *buf,CM_UINT8 len) +{ + CM_UINT8 i = 0u; + s_2x2_Ctrl.LocalCC_Health = 0u; + static CM_UINT8 startcount = 0u; + + if(startcount < 5u) + { + startcount++; + } + else + { + ; + } + + if(startcount >= 5u) + { + for(i = 0;i0 为健康*/ +CM_UINT8 SFM_GetLocalCCHealth(void) +{ + return s_2x2_state_Ctrl.LocalCC_Health; +} + + diff --git a/TSCP/src/MSCP/SFM/SFM_2x2.h b/TSCP/src/MSCP/SFM/SFM_2x2.h index fb51f6a..ecd13a8 100644 --- a/TSCP/src/MSCP/SFM/SFM_2x2.h +++ b/TSCP/src/MSCP/SFM/SFM_2x2.h @@ -22,6 +22,7 @@ #include "CM_MultiThread.h" #include "CM_MQ.h" #include "PFM_Cfg.h" +#include "Area.h" #ifdef __cplusplus extern "C" { @@ -30,7 +31,7 @@ extern CM_UINT32 g_MSCP_SysCount; #define SFM_FOLLOW_BUFF_SIZE (1024u*1024u*2u) /* 主备系间通信通道UDP缓冲区大小 1024k*2,应用许用量为1500k */ /*双机热备参数*/ -#define MSCP_2x2_OFFLINE_WAIT (5) /**< 离线保持时间(单位:ms)在离线状态保持大于等该时间长度之后才会进入预升主状态*/ +//#define MSCP_2x2_OFFLINE_WAIT (5) /**< 离线保持时间(单位:ms)在离线状态保持大于等该时间长度之后才会进入预升主状态*/ #define MSCP_2x2_PREMASTER_WAIT (5) /**< 预升主等待时间(单位:ms)在预升主状态保持大于等于该时间长度之后才会进入主状态*/ #define MSCP_2X2_COM_FAIL_CYC (1u) /**< 主备通信中断的判断时间(单位:周期),双网均收不到对系数据的周期数大于等于该值时视为通信中断*/ @@ -74,7 +75,24 @@ extern CM_UINT32 g_MSCP_SysCount; ENUM_2x2_MSG_OUTCHECK = 25, /**< 输出校验报文 */ ENUM_2x2_MSG_APP_FOLLOW_CRC = 26 /**< 应用跟随报文 CRC比较 */ }ENUM_2x2_MSG_T; - + /** 双机热备状态 */ + typedef enum { + ENUM_2x2_SHUTDOWN = 0, /**< 宕机 */ + ENUM_2x2_INIT, /**< 初始化 */ + ENUM_2x2_OFFLINE, /**< 跟随 */ + ENUM_2x2_PRE_MASTER, /**< 预升主 */ + ENUM_2x2_SLAVE, /**< 备系-已同步 */ + ENUM_2x2_MASTER /**< 主系-已同步 */ + } ENUM_2x2_STATE_T; + /** 通信状态枚举 */ + typedef enum { + ENUM_2x2_COM_LOG = 0, /**< 日志输出 */ + ENUM_2x2_COM_VAGUE_STATE, /**< 模糊状态4线断线检测 */ + ENUM_2x2_COM_EXIST_1_LINE, /**<存在1线通信正常*/ + ENUM_2x2_COM_ALL_DIS, /**< 是否全部中断 */ + ENUM_2x2_COM_TOGETHER_DIS, /**< 是否同时中断 */ + ENUM_2x2_COM_SWITCH_CONDITION,/**< 是否满足至少一个以太网和任一通道*/ + } ENUM_2x2_COM_STATE_T; /** 2x2oo2的接收通道 */ typedef struct { @@ -151,17 +169,23 @@ extern CM_UINT32 g_MSCP_SysCount; CM_UINT32 TxSN; /**< 发送序列号 */ CM_UINT32 RxSN; /**< 接收序列号 */ CM_UINT32 SysCycSync;/**< 系统周期号 */ - - ENUM_2x2_STATE_T LocalState; /**< 本系热备状态,2oo2比较 */ - ENUM_2x2_STATE_T PartnerState; /**< 收到的对系热备状态,2oo2交换 */ - ENUM_2x2_STATE_T LastLocalState; /**< 本系上一周期的热备状态,2oo2比较 */ - ENUM_2x2_STATE_T LastPartnerState; /**< 收到的对系上一周期热备状态,2oo2交换 */ + CM_UINT32 MasterID; /**< 综合主系ID */ + + ENUM_4x2_STATE_T LocalState; /**< 本系热备状态 */ + ENUM_4x2_STATE_T PartnerState; /**< 收到的对系热备状态 */ + ENUM_4x2_STATE_T Area_A_State; /**< 区域A热备状态*/ + ENUM_4x2_STATE_T Area_B_State; /**< 区域B热备状态 */ + ENUM_4x2_STATE_T LastLocalState; /**< 本系上一周期的热备状态 */ + ENUM_4x2_STATE_T LastPartnerState; /**< 收到的对系上一周期热备状态*/ + ENUM_4x2_STATE_T LastArea_A_State; /**< 区域A上一周期的热备状态*/ + ENUM_4x2_STATE_T LastArea_B_State; /**< 区域B上一周期热备状态 */ /*通信状态 */ CM_BOOL MineComState; /**< 本机通信状态,2oo2交换 */ CM_BOOL PeerComState; /**< 邻机通信状态,2oo2交换 */ - CM_BOOL MineUartState; /**< 本机串口通信状态,2oo2交换 */ - CM_BOOL PeerUartState; /**< 邻机串口通信状态,2oo2交换 */ - + CM_BOOL MineExtendState; /**< 本机扩展通信状态,2oo2交换 */ + CM_BOOL PeerExtendState; /**< 邻机扩展通信状态,2oo2交换 */ + /*健康度参数*/ + CM_UINT8 LocalCC_Health; /**< 本系与通控通信健康度0:无通信;1:有通信;2:通信正常 */ /*输入数据*/ CM_UINT32 RxInputSysCyc; /**< 收到的对系输入数据的周期号,2oo2交换 */ CM_UINT32 InputMineSysCyc; /**< 当周期从对系收到的本cpu输入数据标志 */ @@ -177,12 +201,14 @@ extern CM_UINT32 g_MSCP_SysCount; /*跟随数据*/ CM_UINT32 RxBaseFollowSysCyc; /**< 收到的对系跟随数据的周期号,2oo2交换 */ CM_UINT32 RxAppFollowSysCyc; /**< 收到的对系应用跟随数据的周期号,2oo2交换 */ + CM_UINT32 RxAppFollowSysCrcCyc; /**< 收到主系发来的周期号-主系发送的是CRC数据*/ CM_UINT32 LastFollowCyc; /**< 上次进行平台跟随的时间,2oo2比较,*/ - + CM_UINT32 LastAppFollowCyc; /**< 上次进行应用跟随的时间,2oo2比较,*/ + CM_UINT32 RxBaseFollowSyncFlag; /**< 本周期接收平台跟随数据成功标志位*/ /*输出比较信息*/ CM_UINT32 LastCheckOKCount; /**< 上次输出比较成功(跟随成功)的本地时间,2oo2比较 (这个标志用来判断如果未收到主系的数据,则停止更新,后将为离线)*/ CM_UINT32 OutPutCheckFailFlag; /**< 上次输出比较成功(跟随成功)的本地时间,2oo2比较 (这个标志用来判断收到输出数据后是否比较成功, 比较失败则降级)*/ - CM_UINT32 AppFollowCmpFlag; /**< 上次应用跟随数据比较结果,只有备系使用 (这个标志用来判断备系和主系应用跟随数据是否比较成功, 比较失败则降级)*/ + CM_UINT32 AppFollowCmpFailFlag; /**< 上次应用跟随数据比较结果,只有备系使用 (这个标志用来判断备系和主系应用跟随数据是否比较成功, 比较失败则降级)*/ CM_UINT32 RxCheckSysCyc; /**< 收到的输出校验帧的周期号,2oo2交换 */ CM_INT32 RxCheckLen; /**< 收到的输出校验帧长度,2oo2交换 */ CM_UINT8 RxCheckFrame[100]; /**< 收到的输出校验帧报文,2oo2交换 */ @@ -201,18 +227,20 @@ extern CM_UINT32 g_MSCP_SysCount; CM_UINT32 RxSN; /**< 接收序列号 */ /*双系热备状态*/ - ENUM_2x2_STATE_T LocalState; /**< 本系热备状态,2oo2比较 */ - ENUM_2x2_STATE_T PartnerState; /**< 收到的对系热备状态,2oo2交换 */ - ENUM_2x2_STATE_T LastLocalState; /**< 本系上一周期的热备状态,2oo2比较 */ - ENUM_2x2_STATE_T LastPartnerState; /**< 收到的对系上一周期热备状态,2oo2交换 */ + ENUM_2x2_STATE_T LocalState; /**< 本系热备状态,2oo2比较 */ + ENUM_2x2_STATE_T PartnerState; /**< 收到的对系热备状态,2oo2交换 */ + ENUM_2x2_STATE_T LastLocalState; /**< 本系上一周期的热备状态,2oo2比较 */ + ENUM_2x2_STATE_T LastPartnerState; /**< 收到的对系上一周期热备状态,2oo2交换 */ + + ENUM_AREA_STATE LocalAreaState; /**< 本系区域状态 */ + CM_BOOL Area_Slave_Is_Exist; /**<是否存在区域备地*/ - CM_UINT32 offLineCounter; /**< 离线计时器,2oo2比较 */ CM_UINT32 preMasterCounter; /**< 预升主计时器,2oo2比较 */ /*通信状态 ABS((B-A)*5-ABS(b-a)),大小周期计算,考虑结构体数组*/ STRU_2X2_COM_STATE_RECORD_T MineComOKCount[3u]; /**< 本机通信状态计数,2oo2交换 */ STRU_2X2_COM_STATE_RECORD_T PeerComOKCount[3u]; /**< 邻机通信状态计数,2oo2交换 */ - STRU_2X2_COM_STATE_RECORD_T MineUartOKCount[3u]; /**< 本机串口通信状态计数,2oo2交换 */ - STRU_2X2_COM_STATE_RECORD_T PeerUartOKCount[3u]; /**< 邻机串口通信状态计数,2oo2交换 */ + STRU_2X2_COM_STATE_RECORD_T MineExtendOKCount[3u]; /**< 本机串口通信状态计数,2oo2交换 */ + STRU_2X2_COM_STATE_RECORD_T PeerExtendOKCount[3u]; /**< 邻机串口通信状态计数,2oo2交换 */ CM_UINT8 MineInputIoState[10]; /*IO数据同步*/ CM_UINT8 PeerInputIoState[10]; /*IO数据同步*/ @@ -220,22 +248,17 @@ extern CM_UINT32 g_MSCP_SysCount; CM_UINT8 RmtPeerInputIoState[10]; /*IO数据同步*/ /*状态信息*/ - CM_UINT32 LastStateCount; /**< 上次收到对系状态的时间,2oo2交换 */ CM_UINT32 RxStateSysCyc; /**< 收到的状态帧的周期号,2oo2交换 */ CM_UINT32 RxStateMicroCyc; /**< 收到的状态帧的周期号,2oo2交换 */ - /*输入数据*/ - CM_UINT32 LastRxInputSysCyc; /**< 收到的对系输入数据的周期号,2oo2交换 */ - /*跟随数据*/ - CM_UINT32 LastFollowCyc; /**< 上次进行平台跟随的时间,2oo2比较,*/ - CM_UINT32 AppFollowCmpFlag; /**< 上次应用跟随数据比较结果,只有备系使用 (这个标志用来判断备系和主系应用跟随数据是否比较成功, 比较失败则降级)*/ - - /*输出比较信息*/ - CM_UINT32 LastCheckOKCount; /**< 上次输出比较成功(跟随成功)的本地时间,2oo2比较 (这个标志用来判断如果未收到主系的数据,则停止更新,后将为离线)*/ - CM_UINT32 OutPutCheckFailFlag; /**< 上次输出比较成功(跟随成功)的本地时间,2oo2比较 (这个标志用来判断收到输出数据后是否比较成功, 比较失败则降级)*/ - - /*时间同步完成标志*/ - CM_UINT8 TimeSyncFlag; + /*健康度参数*/ + CM_UINT8 LocalCC_Health; /**< 本系与通控通信健康度0:无通信;1:有通信;2:通信正常 */ + CM_UINT8 PartnerCC_Health; /**< 对系与通控通信健康度0:无通信;1:有通信;2:通信正常 */ + CM_BOOL LocalSync_Health; /**< 本系4x同步健康度CM_TRUE:同步成功;CM_FALSE:同步失败 跟随升备 主系健康度切系使用*/ + CM_BOOL PartnerSync_Health;/**< 对系4x同步健康度CM_TRUE:同步成功;CM_FALSE:同步失败*/ + /*失步次数*/ + CM_UINT32 LocalOutOfSync; /**< 本系失步次数 ,与应用跟随数据和输出比较有关*/ + CM_BOOL LocalSyncFailFlag; /**< 本系输出或应用跟随比较失败 */ /*主动切系状态*/ ENUM_2x2_SWITCH_STATE LocalSwitchState; /**< 自己的主动切系按钮状态 */ ENUM_2x2_SWITCH_STATE PeerSwitchState; /**< 邻机的主动切系按钮状态 */ @@ -247,6 +270,7 @@ extern CM_UINT32 g_MSCP_SysCount; ENUM_2x2_AID_SWITCH_STATE PartnerAIDSwitchState; /**< 对系的主动切系按钮状态 */ ENUM_2x2_AID_SWITCH_STATE PartPeerAIDSwitchState; /**< 对系的邻机的主动切系按钮状态 */ CM_UINT8 aidSwitchFlag; /**< aid切系控制标志 */ + }STRU_2X2_STATE_CTRL_T; /*2x状态切换线程参数*/ typedef struct @@ -285,8 +309,11 @@ extern CM_UINT32 g_MSCP_SysCount; */ void SFM_2x2_UartSend(IN const CM_UINT8 *Data, IN CM_UINT32 DataLen, IN ENUM_2x2_MSG_T msgType); - /* 2x2周期同步 */ - void SFM_2x2_Sync(IN CM_UINT64 cycTick, OUT CM_INT64* pOffset); + /** + * @brief 4x2周期同步对比参数 + * @param + */ + void SFM_4x2_Sync(void); /** * @brief 获取本系热备状态 * @return 本系热备状态 @@ -302,7 +329,7 @@ extern CM_UINT32 g_MSCP_SysCount; * 在“离线”和“备系”状态下且本周期收到有效跟随数据时, * 将在周期应用逻辑执行之前进行跟随数据覆盖。 */ - ENUM_2x2_STATE_T SFM_2x2_GetLocal2x2State(void); + ENUM_4x2_STATE_T SFM_GetLocal4x2State(void); /** * @brief 获取对系热备状态 * @return 对系热备状态 @@ -314,7 +341,7 @@ extern CM_UINT32 g_MSCP_SysCount; * @note * 与对系通信中断时默认对系状态为“宕机” */ - ENUM_2x2_STATE_T SFM_2x2_GetPartner2x2State(void); + ENUM_4x2_STATE_T SFM_2x2_GetPartner2x2State(void); /* * @brief 获取上一周期的本系热备状态 @@ -331,7 +358,7 @@ extern CM_UINT32 g_MSCP_SysCount; * 在“离线”和“备系”状态下且本周期收到有效跟随数据时, * 将在周期应用逻辑执行之前进行跟随数据覆盖。 */ - ENUM_2x2_STATE_T SFM_2x2_GetLastLocal2x2State(void); + ENUM_4x2_STATE_T SFM_2x2_GetLastLocal2x2State(void); /** * @brief 获取对系上一周期的热备状态 * @return 对系热备状态 @@ -343,7 +370,50 @@ extern CM_UINT32 g_MSCP_SysCount; * @note * 与对系通信中断时默认对系状态为“宕机” */ - ENUM_2x2_STATE_T SFM_2x2_GetLastPartner2x2State(void); + ENUM_4x2_STATE_T SFM_2x2_GetLastPartner2x2State(void); + /** + * @brief 获取区域A系热备状态 + * @return 本系热备状态 + * - ENUM_4x2_OFFLINE 离线 + * - ENUM_4x2_MASTER 主系 + * - ENUM_4x2_SLAVE 备系 + * @details + */ + ENUM_4x2_STATE_T SFM_2x2_GetArea_A_2x2State(void); + + /** + * @brief 获取区域B系热备状态 + * @return 对系热备状态 + * - ENUM_4x2_SHUTDOWN 宕机 + * - ENUM_4x2_OFFLINE 离线 + * - ENUM_4x2_MASTER 主系 + * - ENUM_4x2_SLAVE 备系 + * @details + * 与对系通信中断时默认对系状态为“宕机” + */ + ENUM_4x2_STATE_T SFM_2x2_GetArea_B_2x2State(void); + + /* + * @brief 获取上一周期的区域A系热备状态 + * @return 本系热备状态 + * - ENUM_4x2_SHUTDOWN 宕机 + * - ENUM_4x2_OFFLINE 离线 + * - ENUM_4x2_MASTER 主系 + * - ENUM_4x2_SLAVE 备系 + */ + ENUM_4x2_STATE_T SFM_2x2_GetLastArea_A_2x2State(void); + + /** + * @brief 获取上一周期的区域B系热备状态 + * @return 对系热备状态 + * - ENUM_4x2_SHUTDOWN 宕机 + * - ENUM_4x2_OFFLINE 离线 + * - ENUM_4x2_MASTER 主系 + * - ENUM_4x2_SLAVE 备系 + * @note + * 与对系通信中断时默认对系状态为“宕机” + */ + ENUM_4x2_STATE_T SFM_2x2_GetLastArea_B_2x2State(void); /** * @brief 设置跟随数据 @@ -359,6 +429,8 @@ extern CM_UINT32 g_MSCP_SysCount; * @see :: APP_API_FollowUp */ CM_UINT8 SFM_2x2_SetFollowData(IN const CM_UINT8 Data[], IN CM_UINT32 Len); + /*设置综合主系ID*/ + void SFM_2x2_SetMasterID(CM_UINT32 master_id); /** * @brief 获取系统周期号 * @return 当前的系统周期号 @@ -427,8 +499,9 @@ extern CM_UINT32 g_MSCP_SysCount; CM_UINT8 SFM_2x2_GetSwitchFlag(void); /* 设置本系热备状态 */ - void SFM_2x2_SetLocal2x2State(ENUM_2x2_STATE_T localState); - + void SFM_2x2_SetLocal2x2State(ENUM_4x2_STATE_T localState); + /*更新本机通控健康度*/ + void SFM_2x2_UpdataLocalCC_Health(CM_UINT8 *buf,CM_UINT8 len); /** * @brief 获取2x切系标志位 * @return s_2x2_Ctrl.ctrSwitchFlag 切系标志位 取值范围:1正在切系 0不在切系 @@ -454,11 +527,42 @@ extern CM_UINT32 g_MSCP_SysCount; /*获取AID切系状态*/ ENUM_2x2_AID_SWITCH_STATE SFM_2x2_Get_AIDSwitchStart(void); /*输出处理与发送阶段之前的等待2x逻辑结束的最后处理函数*/ - void SFM_2x2_ChangeState(void); + void SFM_4x2_ChangeState(void); + /*状态决策*/ + ENUM_4x2_STATE_T SFM_2x2_StateDecision(ENUM_AREA_STATE Area,ENUM_2x2_STATE_T State_2x2); + /** + * @brief 决策区域4x2状态 + */ + ENUM_4x2_STATE_T SFM_2x2_AreaDecision(ENUM_AREA_STATE PartnerAreaState,CM_BOOL isA); + /*时间同步失败清空消息队列*/ void SFM_2x2_ClearRcvMsgQ(void); void SFM_2x2_SemPost(void); + + CM_BOOL SFM_2x2_Master_Is_Change(void); + /** + * @brief 获取其他三系热备状态 + * @param 无 + * @details + * 通过其他三系的地的状态 判断是否为备或者宕机 + * @ return 0 其他但系存在离线系 1 其三系都是备系 + */ + CM_UINT8 SFM_GetAppFollowType(void); + + CM_BOOL SFM_GetLocalSyncHealth(void); + + + CM_BOOL SFM_GetLocalSyncFailFlag(void); + + + CM_UINT32 SFM_GetLocalOutOfSync(void); + + /*获取通控健康度 >0 为健康*/ + CM_UINT8 SFM_GetLocalCCHealth(void); + + void save_to_file(const char *format, ...);//qap test + #ifdef __cplusplus } #endif diff --git a/TSCP/src/MSCP/SFM/SFM_4x2.c b/TSCP/src/MSCP/SFM/SFM_4x2.c new file mode 100644 index 0000000..1f0482f --- /dev/null +++ b/TSCP/src/MSCP/SFM/SFM_4x2.c @@ -0,0 +1,163 @@ +/* + * SFM_4x2.c + * + * Created on: 2025年12月20日 + * Author: 14284 + */ + +#include "SFM_4x2.h" +#include "CM_MQ.h" +#include "CM_Types.h" +#include "SFM_2x2.h" + +#if 0 +ENUM_CM_RETURN SFM_4x2_Get_2xStat(STRU_4x_CTRL_T *pCtrl); + +#define SFM_LOG_SIZE (1024u * 5u) //状态汇总模块日志大小 +ENUM_4x2_STATE_T s_4x2_State = ENUM_4x2_SHUTDOWN; +static CM_UINT8 g_SendAppFollowType = 0u; //应用跟随类型 + + + + + +/** +* @brief 获取其他三系热备状态 +* @param 无 +* @details +* 通过其他三系的地的状态 判断是否为备或者宕机 +* @ return 0 其他但系存在离线系 1 其三系都是备系 +*/ +static CM_UINT8 SFM_GetAreaPartnerState(void); +/** + * @brief 初始化区域日志消息队列 + * @param 无 + * @details + * 初始化用于4x2状态管理模块的日志消息队列,分配指定大小的内存空间 + * 队列大小由SFM_LOG_SIZE宏定义确定 + * @return ENUM_CM_RETURN 操作结果 + * - ENUM_CM_TRUE: 初始化成功 + * - ENUM_CM_FALSE: 初始化失败 + */ + ENUM_CM_RETURN Area_LogMQ_Init(void) + { + return CM_MQ_Init(&s_4x2_LogMsgQ, (CM_UINT16)SFM_LOG_SIZE, (CM_UINT16)(SFM_LOG_SIZE)); + } + +/** + * @brief 处理并转发4x2模块日志 + * @param 无 + * @details + * 从日志消息队列中读取日志数据,并通过基础日志发送接口进行输出 + * 循环处理直到队列为空为止 + * @return 无 + */ +void SFM_4x2_LOG_Transition(void) +{ + ENUM_CM_RETURN rt = ENUM_CM_FALSE; + CM_UINT8 buf[1024] = {0}; + CM_UINT16 len = 1024; + while(1) + { + len = 1024; + rt = CM_MQ_Read(&s_4x2_LogMsgQ, buf, (CM_UINT16*)&len); + if(ENUM_CM_TRUE == rt) + { + /*- 输出日志信息 */ + (void)CFM_BaseLog_Send((CM_UINT8*)buf, len); + } + else + { + /*无处理*/ + break; + } + } +} +/** + * @brief 更新4x2状态 + * @param 无 + * @details + * 执行状态更新流程: + * 1. 调用2x2状态变更处理 + * 2. 获取本地2x2状态 + * 3. 获取区域状态 + * 4. 进行状态决策计算 + * 5. 获取伙伴区域状态 + * @return 无 + */ +void SFM_4x2_ChangeState(void) +{ + ENUM_AREA_STATE State_Area = 0; //区域状态 + ENUM_4x2_STATE_T State_2x2 = 0; //2x2状态 + + SFM_2x2_ChangeState(); + /*获取2乘状态*/ + State_2x2 = SFM_GetLocal4x2State(); + /*获取地的状态*/ + State_Area = Area_Get_State(); + + /*状态决策*/ + s_4x2_State = SFM_4x2_StateDecision(State_Area, State_2x2); + + SFM_GetAreaPartnerState(); + + +} + +/** + * @brief 决策4x2状态 + * @details 根据区域状态和2x2临时状态,决定最终的4x2状态。 + * 如果区域为主且2x2临时状态为主,则为4x2主; + * 如果区域为主且2x2临时状态为备,则为4x2备; + * 如果区域为备且2x2临时状态为主或备,则为4x2备; + * 如果区域为初始化或2x2临时状态为宕机,则为4x2宕机; + * 其他情况,如果2x2临时状态为离线且区域状态高于离线,则将区域状态设为离线,并返回4x2离线。 + * @param[in] Area 区域状态 + * @param[in] State_2x2 2x2临时状态 + * @return 最终的4x2状态(主线程状态) + * - ENUM_4x2_MASTER: 主系状态 + * - ENUM_4x2_SLAVE: 备系状态 + * - ENUM_4x2_PRE_MASTER: 预主系状态 + * - ENUM_4x2_SHUTDOWN: 关闭状态 + * - ENUM_4x2_OFFLINE: 离线状态 + */ +ENUM_4x2_STATE_T SFM_4x2_StateDecision(ENUM_AREA_STATE Area, ENUM_4x2_STATE_T State_2x2) +{ + ENUM_4x2_STATE_T rtn_state = ENUM_4x2_SHUTDOWN; /* 默认返回关闭状态 */ + + /* 如果区域为主且2x2临时状态为主,则返回4x2主 */ + if ((ENUM_AREA_MASTER == Area) && (ENUM_2x2_TEMP_MASTER == State_2x2)) + { + rtn_state = ENUM_4x2_MASTER; + } + /* 如果区域为主且2x2临时状态为备,则返回4x2备 */ + else if ((ENUM_AREA_MASTER == Area) && (ENUM_4x2_SLAVE == State_2x2)) + { + rtn_state = ENUM_4x2_SLAVE; + } + /* 如果区域为备且2x2临时状态为主或备,则返回4x2备 */ + else if ((ENUM_AREA_SLAVE == Area) && ((ENUM_2x2_TEMP_MASTER == State_2x2) || (ENUM_2x2_TEMP_SLAVE == State_2x2))) + { + rtn_state = ENUM_4x2_SLAVE; + } + /* 如果区域为初始化或2x2临时状态为宕机,则返回4x2宕机 */ + else if ((ENUM_AREA_SHUTDOWN == Area) || (ENUM_2x2_TEMP_SHUTDOWN == State_2x2)) + { + rtn_state = ENUM_4x2_SHUTDOWN; + } + else if(ENUM_2x2_TEMP_PRE_MASTER == State_2x2) + { + rtn_state = ENUM_4x2_PRE_MASTER; + } + else + { + /* 返回4x2离线状态 */ + rtn_state = ENUM_4x2_OFFLINE; + } + + MSCP_LOG_MSG("Local Area state = %d 2x = %d Final = %d\n",Area, State_2x2,rtn_state); + return rtn_state; +} +#endif + + diff --git a/TSCP/src/MSCP/SFM/SFM_4x2.h b/TSCP/src/MSCP/SFM/SFM_4x2.h new file mode 100644 index 0000000..b6ce67f --- /dev/null +++ b/TSCP/src/MSCP/SFM/SFM_4x2.h @@ -0,0 +1,48 @@ +/* + * @Author: error: error: git config user.name & please set dead value or install git && error: git config user.email & please set dead value or install git & please set dead value or install git + * @Date: 2025-12-20 15:59:31 + * @LastEditors: error: error: git config user.name & please set dead value or install git && error: git config user.email & please set dead value or install git & please set dead value or install git + * @LastEditTime: 2025-12-20 17:25:50 + * @FilePath: \TSCP\src\MSCP\SFM\SFM_4x2.h + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ + +/* + * SFM_4x2.h + * + * Created on: 2025年12月20日 + * Author: 14284 + */ + +#ifndef MSCP_SFM_SFM_4X2_H_ +#define MSCP_SFM_SFM_4X2_H_ +#include "CM_MQ.h" +#include "CM_Types.h" +#include "SFM_2x2.h" +#if 0 + /** 四机热备状态 */ + typedef enum { + ENUM_4x2_SHUTDOWN = 0, /**< 宕机 */ + ENUM_4x2_OFFLINE, /**< 离线 */ + ENUM_4x2_PRE_MASTER, /**< 预升主 需要次状态 在预升主时候 不接收主的同步数据*/ + ENUM_4x2_SLAVE, /**< 备系 */ + ENUM_4x2_MASTER /**< 主系 */ + } ENUM_4x2_STATE_T; + + /** 2x2控制 */ + typedef struct + { + STRU_2X2_CTRL_T state_2x2; + STR_Area_State state_area; + }STRU_4x_CTRL_T; +#endif + + /** + * @brief 获取其他三系热备状态 + * @param 无 + * @details + * 通过其他三系的地的状态 判断是否为备或者宕机 + * @ return 0 其他但系存在离线系 1 其三系都是备系 + */ + CM_UINT8 SFM_GetAppFollowType(void); +#endif /* MSCP_SFM_SFM_4X2_H_ */ diff --git a/TSCP/src/dqu_common/dqu_cbtc_common/dquCbtcConfigData.c b/TSCP/src/dqu_common/dqu_cbtc_common/dquCbtcConfigData.c index 10aab04..e27d6f6 100644 --- a/TSCP/src/dqu_common/dqu_cbtc_common/dquCbtcConfigData.c +++ b/TSCP/src/dqu_common/dqu_cbtc_common/dquCbtcConfigData.c @@ -50,8 +50,6 @@ UINT8 dfsInitSubSystemCommonConfigData_CC(UINT8 *pDataAddr, UINT32 dataSize, UIN UINT8 dfsInitTrainDepotConfigData(UINT8 *pDataAddr, UINT32 dataSize, UINT16 rowCount); /* ߽ݽṹ */ UINT8 dfsInitBoundaryAxleConfigData(UINT8* pDataAddr, UINT32 dataSize, UINT16 rowCount); -/*ʼ[ѹ]*/ -UINT8 dfsInitSpecialEaConfigData(UINT8* pDataAddr, UINT32 dataSize, UINT16 rowCount); /*ݰ汾ݴ̺*/ static UINT8 initConfigCbtcInfoTaskTab(void); @@ -70,7 +68,6 @@ static INIT_TASK_TAB_STRU g_struInitTaskTab[]= {DQU_QFUN_TRUE, CBTC_CONFIG_DEPOT_ID, dfsInitTrainDepotConfigData, 5,1,0}, {DQU_QFUN_TRUE, CBTC_CONFIG_DATA_ID, dfsInitSubSystemCommonConfigData_CC, 5,1,0}, {DQU_QFUN_TRUE, CBTC_CONFIG_BOUNDARY_AXLE_ID,dfsInitBoundaryAxleConfigData, 5,1,0}, - {DQU_QFUN_TRUE, CBTC_SPECIAL_EA_ID, dfsInitSpecialEaConfigData, 5,1,0}, }; /*ʼǼDZĿ*/ static const UINT16 MAX_INITTASK_COUNT=sizeof(g_struInitTaskTab)/sizeof(INIT_TASK_TAB_STRU); @@ -122,27 +119,24 @@ static UINT8 initConfigCbtcInfoTaskTab(void) g_struInitTaskTab[6].bIsEffective=DQU_QFUN_FASLE;/*ϿĬϲִУ*/ g_struInitTaskTab[7].bIsEffective = DQU_QFUN_FASLE;/*ϿĬϲִУ*/ g_struInitTaskTab[8].bIsEffective = DQU_QFUN_FASLE;/*ϿĬϲִУ߽*/ - g_struInitTaskTab[9].bIsEffective = DQU_QFUN_FASLE;/*ϿĬϲִУѹ*/ - rtnValue = 1U; + rtnValue = 1; } else if (DQU_CBTC_FAO == cbtcVersionType) /*FAO*/ { g_struInitTaskTab[2].bIsEffective=DQU_QFUN_FASLE;/*FAOĬϲִУϵͳýṹ3-CPK*/ g_struInitTaskTab[4].bIsEffective=DQU_QFUN_FASLE;/*FAOĬϲִУϵͳýṹ3-HLT*/ g_struInitTaskTab[5].bIsEffective=DQU_QFUN_FASLE;/*FAOĬϲִУϵͳýṹ3-DG*/ - g_struInitTaskTab[7].bIsEffective = DQU_QFUN_FASLE;/*FAOĬϲִУ*/ - g_struInitTaskTab[8].bIsEffective = DQU_QFUN_FASLE;/*FAOĬϲִУ߽*/ - g_struInitTaskTab[9].bIsEffective = DQU_QFUN_FASLE;/*FAOĬϲִУѹ*/ - rtnValue = 1U; + g_struInitTaskTab[7].bIsEffective = DQU_QFUN_FASLE;/*ϿĬϲִУ*/ + g_struInitTaskTab[8].bIsEffective = DQU_QFUN_FASLE;/*ϿĬϲִУ߽*/ + rtnValue = 1; } else if(DQU_CBTC_HLT == cbtcVersionType) /*ͨ*/ { g_struInitTaskTab[2].bIsEffective=DQU_QFUN_FASLE;/*ͨĬϲִУϵͳýṹ3-CPK*/ g_struInitTaskTab[3].bIsEffective=DQU_QFUN_FASLE;/*ͨĬϲִУϵͳýṹ3-FAO*/ g_struInitTaskTab[5].bIsEffective=DQU_QFUN_FASLE;/*ͨĬϲִУϵͳýṹ3-DG*/ - g_struInitTaskTab[7].bIsEffective = DQU_QFUN_FASLE;/*ͨĬϲִУ*/ - g_struInitTaskTab[8].bIsEffective = DQU_QFUN_FASLE;/*ͨĬϲִУ߽*/ - g_struInitTaskTab[9].bIsEffective = DQU_QFUN_FASLE;/*ͨĬϲִУѹ*/ + g_struInitTaskTab[7].bIsEffective = DQU_QFUN_FASLE;/*ϿĬϲִУ*/ + g_struInitTaskTab[8].bIsEffective = DQU_QFUN_FASLE;/*ϿĬϲִУ߽*/ rtnValue = 1; } else if(DQU_CBTC_DG == cbtcVersionType)/*칦*/ @@ -150,10 +144,9 @@ static UINT8 initConfigCbtcInfoTaskTab(void) g_struInitTaskTab[2].bIsEffective=DQU_QFUN_FASLE;/*DGĬϲִУϵͳýṹ3-CPK*/ g_struInitTaskTab[3].bIsEffective=DQU_QFUN_FASLE;/*DGĬϲִУϵͳýṹ3-FAO*/ g_struInitTaskTab[4].bIsEffective=DQU_QFUN_FASLE;/*DGĬϲִУϵͳýṹ3-HLT*/ - g_struInitTaskTab[7].bIsEffective = DQU_QFUN_FASLE;/*DGĬϲִУ*/ - g_struInitTaskTab[8].bIsEffective = DQU_QFUN_FASLE;/*DGĬϲִУ߽*/ - g_struInitTaskTab[9].bIsEffective = DQU_QFUN_FASLE;/*DGĬϲִУѹ*/ - rtnValue = 1U; + g_struInitTaskTab[7].bIsEffective = DQU_QFUN_FASLE;/*ϿĬϲִУ*/ + g_struInitTaskTab[8].bIsEffective = DQU_QFUN_FASLE;/*ϿĬϲִУ߽*/ + rtnValue = 1; } else if (DQU_CBTC_CC == cbtcVersionType)/**/ { @@ -161,7 +154,7 @@ static UINT8 initConfigCbtcInfoTaskTab(void) g_struInitTaskTab[3].bIsEffective = DQU_QFUN_FASLE;/*ĬϲִУϵͳýṹ3-FAO*/ g_struInitTaskTab[4].bIsEffective = DQU_QFUN_FASLE;/*ĬϲִУϵͳýṹ3-HLT*/ g_struInitTaskTab[5].bIsEffective = DQU_QFUN_FASLE;/*ĬϲִУϵͳýṹ3-DG*/ - rtnValue = 1U; + rtnValue = 1; } else /*δֵð汾ֵδñ־λ*/ { @@ -1346,85 +1339,5 @@ UINT8 dfsInitBoundaryAxleConfigData(UINT8* pDataAddr, UINT32 dataSize, UINT16 ro rtnValue = 0U; /*׵ַָΪգ0*/ } - return rtnValue; -} - -/********************************************** -* ܣʼ[ѹ]-CC -* pDataAddr: ׵ַ -* dataSize: ֽڳ -* rowCount: -* -* ֵ:1: ɹ, -* 0: ʧ -* BY cgh 20250818 -**********************************************/ -UINT8 dfsInitSpecialEaConfigData(UINT8* pDataAddr, UINT32 dataSize, UINT16 rowCount) -{ - UINT8 rtnValue = 0U; - UINT16 ii = 0U; - UINT32 rowDataLen = 0U; - UINT8* pData = pDataAddr; - UINT16 jj = 0U; - - if (NULL != pDataAddr) - { - rtnValue = 1U; - - if ((0U < rowCount) && (5U >= rowCount) && (0U != dataSize)) - { - g_pCbtcConfigDataStru->BoundarySpecialEaInfoLen = rowCount; - rowDataLen = dataSize / rowCount; - - for (ii = 0U; ii < rowCount; ii++) - { - pData = pDataAddr + rowDataLen * ii; - - /**/ - g_pCbtcConfigDataStru->cbtcSpecialEaInfo[ii].wIndex = ShortFromChar(pData); - pData += 2U; - - /*ͷǰ*/ - g_pCbtcConfigDataStru->cbtcSpecialEaInfo[ii].dwFrontDis = LongFromChar(pData); - pData += 4U; - - /*β*/ - g_pCbtcConfigDataStru->cbtcSpecialEaInfo[ii].dwBehindDis = LongFromChar(pData); - pData += 4U; - - /*link*/ - g_pCbtcConfigDataStru->cbtcSpecialEaInfo[ii].wLinkSum = ShortFromChar(pData); - pData += 2U; - - if ((0U < g_pCbtcConfigDataStru->cbtcSpecialEaInfo[ii].wLinkSum) && (21U > g_pCbtcConfigDataStru->cbtcSpecialEaInfo[ii].wLinkSum)) - { - for (jj = 0U; jj < g_pCbtcConfigDataStru->cbtcSpecialEaInfo[ii].wLinkSum; jj++) - { - g_pCbtcConfigDataStru->cbtcSpecialEaInfo[ii].szLinkId[jj] = ShortFromChar(pData); - pData += 2U; - } - } - else - { - rtnValue = 0U; - break; - } - - } - } - else if ((0U == rowCount) || (0U == dataSize)) - { - g_pCbtcConfigDataStru->BoundarySpecialEaInfoLen = 0U; /*Ϊ0ȡ*/ - } - else - { - rtnValue = 0U; /*ޣ0*/ - } - } - else - { - rtnValue = 0U; /*׵ַָΪգ0*/ - } - return rtnValue; } \ No newline at end of file diff --git a/TSCP/src/dqu_common/dqu_cbtc_common/dquCbtcConfigData.h b/TSCP/src/dqu_common/dqu_cbtc_common/dquCbtcConfigData.h index 82141d7..fb05b52 100644 --- a/TSCP/src/dqu_common/dqu_cbtc_common/dquCbtcConfigData.h +++ b/TSCP/src/dqu_common/dqu_cbtc_common/dquCbtcConfigData.h @@ -145,15 +145,6 @@ extern "C" { UINT8 cStorageLineType; /*泵*/ } CBTC_BOUNDARY_AXLE_CONFIG_STRU; - /*ѹṹ*/ - typedef struct { - UINT16 wIndex; /**/ - UINT32 dwFrontDis; /*ͷǰ*/ - UINT32 dwBehindDis; /*β*/ - UINT16 wLinkSum; /*LINKĿ*/ - UINT16 szLinkId[20]; /*LINK*/ - } CBTC_SPECIAL_EA_CONFIG_STRU; - /*CBTCϢ*/ typedef struct CBTC_ConfigDataStruct { @@ -170,9 +161,6 @@ extern "C" { CBTC_BOUNDARY_AXLE_CONFIG_STRU cbtcBoundaryAxleInfo[100]; /*߽Ϣṹ飬ʼ*/ UINT16 BoundaryAxleInfoLen; /*鳤*/ - - CBTC_SPECIAL_EA_CONFIG_STRU cbtcSpecialEaInfo[5]; /*ѹ򣬳ʼ*/ - UINT16 BoundarySpecialEaInfoLen; /*鳤*/ }CBTC_CFG_DATA_STRU; /********************************************* diff --git a/TSCP/src/dqu_common/dqu_dfs_common/dquDataTypeDefine.h b/TSCP/src/dqu_common/dqu_dfs_common/dquDataTypeDefine.h index 329932c..ea3c7b4 100644 --- a/TSCP/src/dqu_common/dqu_dfs_common/dquDataTypeDefine.h +++ b/TSCP/src/dqu_common/dqu_dfs_common/dquDataTypeDefine.h @@ -108,7 +108,6 @@ #define CBTC_CONFIG_DATA_ID 3 /*ϵͳID*/ #define CBTC_CONFIG_DEPOT_ID 4 /*ϢID*/ #define CBTC_CONFIG_BOUNDARY_AXLE_ID 5 /*߽ñID*/ -#define CBTC_SPECIAL_EA_ID 6 /*ѹID*/ /*Э 궨*/ #define DSU_DATA_PROTCL_TYPE 0x30 /*ЭbookId*/ diff --git a/TSCP/src/dqu_common/dqu_emap_common/dquEmapInit.c b/TSCP/src/dqu_common/dqu_emap_common/dquEmapInit.c index a199720..35e6951 100644 --- a/TSCP/src/dqu_common/dqu_emap_common/dquEmapInit.c +++ b/TSCP/src/dqu_common/dqu_emap_common/dquEmapInit.c @@ -2576,7 +2576,6 @@ static UINT8 AxleSgmtStru_CC() /*ʼlinkĩlinkڣwMiddleLinkIdΪ0xFFFF*/ if (pTempAxleSgmtStru->wTmnlLkId == linkId1) { - /*мlink*/ pTempAxleSgmtStru->wMiddleLinkId[0] = UINT16_MAX; } else @@ -2594,10 +2593,10 @@ static UINT8 AxleSgmtStru_CC() } if (0U != rtnValue) - { + { + /*мlinkΪlinkId1*/ if (pTempAxleSgmtStru->wTmnlLkId == linkId2) { - /*мlinkΪlinkId1*/ pTempAxleSgmtStru->wMiddleLinkId[0] = linkId1; } else @@ -2615,10 +2614,10 @@ static UINT8 AxleSgmtStru_CC() } if (0U != rtnValue) - { + { + /*мlinkΪlinkId1*/ if (pTempAxleSgmtStru->wTmnlLkId == linkId3) { - /*мlinkΪlinkId1+linkId2*/ pTempAxleSgmtStru->wMiddleLinkId[0] = linkId1; pTempAxleSgmtStru->wMiddleLinkId[1] = linkId2; } @@ -2637,17 +2636,17 @@ static UINT8 AxleSgmtStru_CC() } if (0U != rtnValue) - { + { + /*мlinkΪlinkId1*/ if (pTempAxleSgmtStru->wTmnlLkId == linkId4) { - /*мlinkΪlinkId1+linkId2+linkId3*/ pTempAxleSgmtStru->wMiddleLinkId[0] = linkId1; pTempAxleSgmtStru->wMiddleLinkId[1] = linkId2; pTempAxleSgmtStru->wMiddleLinkId[2] = linkId3; } else { - /*γ5link,ܳ*/ + /*γ5link,ܳ*/ rtnValue = 0U; } } @@ -9158,7 +9157,7 @@ UINT8 initScreen(UINT8 *pDataAddr, UINT32 dataSize, UINT16 rowCount) rowDataLen = dataSize/rowCount; /*鳤ȼ*/ - initFlag = SCREEN_STRU_init(pDataAddr + dataSize - rowDataLen, &stru,(UINT16)rowDataLen); + initFlag = SCREEN_STRU_init(pDataAddr + dataSize - rowDataLen, &stru); /*ΪID + 1*/ dsuEmapIndexStru->SCREENINDEXNUM = stru.wId; @@ -9234,7 +9233,7 @@ UINT8 initScreen(UINT8 *pDataAddr, UINT32 dataSize, UINT16 rowCount) pData = pDataAddr + rowDataLen*j; /*ݽṹ*/ - initFlag = SCREEN_STRU_init(pData, pCurrentStru, (UINT16)rowDataLen); + initFlag = SCREEN_STRU_init(pData, pCurrentStru); if (0U == initFlag) { /*initָ*/ @@ -16619,7 +16618,7 @@ UINT8 initEa(UINT8 *pDataAddr, UINT32 dataSize, UINT16 rowCount) if (2U == rtnValue) { /*̬ռ*/ - dsuStaticHeadStru->pEaStru = (DSU_EMAP_EA_STRU *)MyNew(sizeof(DSU_EMAP_EA_STRU) * dsuDataLenStru->wEaLen); + dsuStaticHeadStru->pEaStru = (DSU_LINK_STRU *)MyNew(sizeof(DSU_LINK_STRU) * dsuDataLenStru->wEaLen); /*̬ռʧ*/ if (NULL == dsuStaticHeadStru->pEaStru) @@ -16629,7 +16628,7 @@ UINT8 initEa(UINT8 *pDataAddr, UINT32 dataSize, UINT16 rowCount) else { /*ڴΪЧ*/ - memset(dsuStaticHeadStru->pEaStru, 0xFF, sizeof(DSU_EMAP_EA_STRU) * dsuDataLenStru->wEaLen); + memset(dsuStaticHeadStru->pEaStru, 0xFF, sizeof(DSU_LINK_STRU) * dsuDataLenStru->wEaLen); } } } diff --git a/TSCP/src/dqu_common/dqu_emap_common/dquStructInit.c b/TSCP/src/dqu_common/dqu_emap_common/dquStructInit.c index ff8880e..8baba03 100644 --- a/TSCP/src/dqu_common/dqu_emap_common/dquStructInit.c +++ b/TSCP/src/dqu_common/dqu_emap_common/dquStructInit.c @@ -921,54 +921,54 @@ UINT8 AXLE_STRU_init(UINT8 *pDataAdd,DSU_AXLE_STRU *pAxleStru) if ((NULL != pDataAdd) && (NULL != pAxleStru)) { UINT8 *pData = pDataAdd; - UINT8 i = 0U; + UINT8 i = 0; /**/ pAxleStru->wId = ShortFromChar(pData); - pData += 2U; + pData += 2; /**/ - for (i = 0U; i<16U; i++) + for (i = 0; i<16; i++) { pAxleStru->szCaption[i] = *pData; - pData += 1U; + pData += 1; } /*Ϣ*/ pAxleStru->wType = ShortFromChar(pData); - pData += 2U; + pData += 2; /**/ pAxleStru->dwAxleKilo = LongFromChar(pData); - pData += 4U; + pData += 4; /*link*/ pAxleStru->wLkId = ShortFromChar(pData); - pData += 2U; + pData += 2; /*linkƫ(cm)*/ pAxleStru->dwLkOfst = LongFromChar(pData); - pData += 4U; + pData += 4; /*ű־*/ pAxleStru->dwAxleKiloPlueMinusSign = *pData; - pData += 1U; + pData += 1; - rtnValue = 1U; + rtnValue = 1; } return rtnValue; } /************************************** ܣȫݽṹʼ -˵[in] pDataAdd ݵַļ UINT16 rowlen +˵[in] pDataAdd ݵַļ [out] pScreenStru ʼĽṹָ ֵ0ʧܣ1ɹ עṹ UINT16 wManageLogicCI; ߼CI **ݽṹ ɾͣ mod by qw.liu 2022-02-22 ***************************/ -UINT8 SCREEN_STRU_init(UINT8 * pDataAdd, DSU_SCREEN_STRU * pScreenStru, UINT16 rowlen) +UINT8 SCREEN_STRU_init(UINT8 * pDataAdd,DSU_SCREEN_STRU * pScreenStru) { UINT8 rtnValue = 0U; /*ָ*/ @@ -976,32 +976,20 @@ UINT8 SCREEN_STRU_init(UINT8 * pDataAdd, DSU_SCREEN_STRU * pScreenStru, UINT16 r { UINT8 * pData = pDataAdd; pScreenStru->wId = ShortFromChar(pData); - pData += 2U; + pData += 2; #if 0 pScreenStru->wLocalPlatformId = ShortFromChar(pData); pData += 2; #endif pScreenStru->wRelatLkId = ShortFromChar(pData); - pData += 2U; + pData += 2; pScreenStru->wwRelatLkOrient = ShortFromChar(pData); - pData += 2U; + pData += 2; pScreenStru->wVobcCiID = ShortFromChar(pData); - pData += 2U; - - if (8U < rowlen) - { - pScreenStru->wFstProLinkId = ShortFromChar(pData); - pData += 2U; - - pScreenStru->wSndProLinkId = ShortFromChar(pData); - pData += 2U; - - pScreenStru->wTrdProLinkId = ShortFromChar(pData); - pData += 2U; - } + pData += 2; rtnValue = 1; } @@ -1589,106 +1577,68 @@ UINT8 STOPPOINT_STRU_init(UINT8 * pDataAdd,DSU_STOPPOINT_STRU * pStoppointStru,U UINT8 AXLE_SGMT_STRU_init(UINT8 * pDataAdd, DSU_AXLE_SGMT_STRU * pAxleSgmtStru) { UINT8 rtnValue = 0U; - UINT8 * pData = pDataAdd; - UINT16 i= 0U; - UINT8 chSwitchFind = 0U; - UINT16 wLength = 0U; - UINT8 chDataType = gLocalPublicDataType; /*ָ*/ if ((NULL != pDataAdd) && (NULL != pAxleSgmtStru)) { - rtnValue = 1U; - + UINT8 * pData = pDataAdd; + UINT8 i = 0; /**/ pAxleSgmtStru->wId = ShortFromChar(pData); - pData += 2U; - - if (0x55 == chDataType)/*°*/ - { - wLength = 16U; - } - else - { - wLength = 32U; - } + pData += 2; /**/ - for (i = 0U; iszCaption[i] = *pData; - pData += 1U; + pData += 1; } /**/ pAxleSgmtStru->wOrgnAxleId = ShortFromChar(pData); - pData += 2U; + pData += 2; /*յ*/ pAxleSgmtStru->wTmnlAxleId = ShortFromChar(pData); - pData += 2U; + pData += 2; /*link*/ pAxleSgmtStru->wOrgnLkId = ShortFromChar(pData); - pData += 2U; + pData += 2; /*յlink*/ pAxleSgmtStru->wTmnlLkId = ShortFromChar(pData); - pData += 2U; + pData += 2; /*ΰ߼εĸ*/ pAxleSgmtStru->wIncludeLogicSgmtNum = ShortFromChar(pData); - pData += 2U; - if (MAX_ALEX_HAVE_LG_NUM >= pAxleSgmtStru->wIncludeLogicSgmtNum) - { - /*߼θϷ ΰ߼εı*/ - for (i = 0U; iwIncludeLogicSgmtNum; i++) - { - pAxleSgmtStru->wLogicSgmtId[i] = ShortFromChar(pData); - pData += 2U; - } - for (i = 0U; i < (MAX_ALEX_HAVE_LG_NUM - pAxleSgmtStru->wIncludeLogicSgmtNum) +1U; i++) - { - /*Ŀ*/ - pAxleSgmtStru->wRelatPointNum = ShortFromChar(pData); - pData += 2U; - if ((DSU_NULL_16 != pAxleSgmtStru->wRelatPointNum)&&( 4U >= pAxleSgmtStru->wRelatPointNum)) - { - chSwitchFind = 1U; - break; - } - else - { - ;/*ȡЧֵ*/ - } - } - } - else - { - rtnValue = 0U; - debug_infor_printf("AXLE_SGMT_STRU_init fail,ALEX%d log num%d, MAX: \n", pAxleSgmtStru->wId, pAxleSgmtStru->wIncludeLogicSgmtNum, MAX_ALEX_HAVE_LG_NUM); - } - if ((0U != rtnValue) &&(0U != chSwitchFind)) - { - for (i = 0U; i < 4U; i++) - { - /**/ - pAxleSgmtStru->wRelatPointId[i] = ShortFromChar(pData); - pData += 2U; - /*״̬*/ - pAxleSgmtStru->wRelatPointStatus[i] = ShortFromChar(pData); - pData += 2U; - } + pData += 2; - /*Id*/ - pAxleSgmtStru->wRelatePhysicalSgmtId = ShortFromChar(pData); - pData += 2U; - - rtnValue = 1U; - } - else + /*ΰ߼εı*/ + for (i = 0; i<50; i++) { - rtnValue = 0U; + pAxleSgmtStru->wLogicSgmtId[i] = ShortFromChar(pData); + pData += 2; } + + /*Ŀ*/ + pAxleSgmtStru->wRelatPointNum = ShortFromChar(pData); + pData += 2; + + for (i = 0; i<4; i++) + { + /**/ + pAxleSgmtStru->wRelatPointId[i] = ShortFromChar(pData); + pData += 2; + /*״̬*/ + pAxleSgmtStru->wRelatPointStatus[i] = ShortFromChar(pData); + pData += 2; + } + + /*Id*/ + pAxleSgmtStru->wRelatePhysicalSgmtId = ShortFromChar(pData); + pData += 2; + + rtnValue = 1; } return rtnValue; } @@ -2547,8 +2497,6 @@ UINT8 ROUTE_STRU_init(UINT8 *pDataAdd,DSU_ROUTE_STRU *pRouteStru) UINT8 LOGIC_SGMT_STRU_init(UINT8 * pDataAdd, DSU_LOGIC_SGMT_STRU * pLogicSgmtStru) { UINT8 rtnValue = 0U; - UINT16 wLength = 0U; - UINT8 chDataType = gLocalPublicDataType; /*ָ*/ if ((NULL != pDataAdd) && (NULL != pLogicSgmtStru)) { @@ -2558,16 +2506,7 @@ UINT8 LOGIC_SGMT_STRU_init(UINT8 * pDataAdd, DSU_LOGIC_SGMT_STRU * pLogicSgmtStr pLogicSgmtStru->wId = ShortFromChar(pData); pData += 2; - if (0x55 == chDataType)/*°*/ - { - wLength = 16U; - } - else - { - wLength = 32U; - } - - for (i = 0U; iszCaption[i] = *pData; @@ -2665,11 +2604,11 @@ UINT8 CBTC_ACCESS_LINK_STRU_init(UINT8 *pDataAdd, DSU_CBTC_ACCESS_LINK_STRU *pCB pCBTCAccessLinkStru->wId = ShortFromChar(pData); pData += 2; - /*߼Ŀ*/ + /*ļĿ*/ pCBTCAccessLinkStru->wIncludeLogicSgmtNum = ShortFromChar(pData); pData += 2; - /*߼α*/ + /*ļα*/ for (i = 0; i<(pCBTCAccessLinkStru->wIncludeLogicSgmtNum); i++) { pCBTCAccessLinkStru->wIncludeLogicSgmtId[i] = ShortFromChar(pData); @@ -3358,12 +3297,12 @@ UINT32 dwVersionOfCIToTMC static UINT8 CI_STRU_init_CC(UINT8 * pDataAdd, DSU_CI_STRU * pCIStru) { UINT8 rtnValue = 0U; - UINT8 chDataType = gLocalPublicDataType; - UINT8 * pData = pDataAdd; - UINT16 i = 0; /*ָ*/ if ((NULL != pDataAdd) && (NULL != pCIStru)) { + UINT8 * pData = pDataAdd; + UINT16 i = 0; + /**/ pCIStru->wIndex = ShortFromChar(pData); pData += 2; @@ -3439,16 +3378,11 @@ static UINT8 CI_STRU_init_CC(UINT8 * pDataAdd, DSU_CI_STRU * pCIStru) pCIStru->RCIEntraceType = *pData; pData += 1; #endif - if (0x55 == chDataType)/*°*/ - { - /*ȫɸ*/ - pCIStru->cWLScreenType = *pData; - pData += 1; - } - else - { - ; - } + + /*ȫɸ*/ + pCIStru->cWLScreenType = *pData; + pData += 1; + rtnValue = 1; } return rtnValue; @@ -3667,29 +3601,17 @@ UINT8 CONGRADE_STRU_init(UINT8 * pDataAdd, DSU_CONGRADE_STRU * pConGradeStru) UINT8 PHYSICAL_SGMT_STRU_init(UINT8 * pDataAdd, DSU_PHYSICAL_SGMT_STRU * pPhysicalSgmtStru) { UINT8 rtnValue = 0U; - UINT8 chDataType = gLocalPublicDataType; - UINT8 * pData = pDataAdd; - UINT16 i = 0; - UINT16 wLength = 0U; /*ָ*/ if ((NULL != pDataAdd) && (NULL != pPhysicalSgmtStru)) { - + UINT8 * pData = pDataAdd; + UINT16 i = 0; /*ID*/ - - if (0x55 == chDataType)/*°*/ - { - wLength = 16U; - } - else - { - wLength = 32U; - } pPhysicalSgmtStru->wId = ShortFromChar(pData); pData += 2; /**/ - for (i = 0; iszName[i] = *pData; pData++; @@ -3718,33 +3640,26 @@ UINT8 PHYSICAL_SGMT_STRU_init(UINT8 * pDataAdd, DSU_PHYSICAL_SGMT_STRU * pPhysic UINT8 DSU_BLOC_TRG_AREA_STRU_init(UINT8 * pDataAdd, DSU_BLOC_TRG_AREA_STRU * pBlocTrgAreaStru) { UINT8 rtnValue = 0U; - UINT8 *pData = pDataAdd; - UINT16 i = 0U; /*ָ*/ if ((NULL != pDataAdd) && (NULL != pBlocTrgAreaStru)) { + UINT8 *pData = pDataAdd; + UINT16 i = 0; + /*ID*/ pBlocTrgAreaStru->wId = ShortFromChar(pData); - pData += 2U; + pData += 2; pBlocTrgAreaStru->wAxleSgmtNum = ShortFromChar(pData); - pData += 2U; + pData += 2; - if (MAX_BLOC_TRG_INCLUDE_SEC_NUM < pBlocTrgAreaStru->wAxleSgmtNum) + /*Ϣ*/ + for (i = 0; i<(pBlocTrgAreaStru->wAxleSgmtNum); i++) { - rtnValue = 0U; - /**/ - } - else - { - /*Ϣ*/ - for (i = 0U; i < (pBlocTrgAreaStru->wAxleSgmtNum); i++) - { - pBlocTrgAreaStru->wAxleSgmtId[i] = ShortFromChar(pData); - pData += 2U; - } - rtnValue = 1U; + pBlocTrgAreaStru->wAxleSgmtId[i] = ShortFromChar(pData); + pData += 2; } + rtnValue = 1; } return rtnValue; } @@ -3759,32 +3674,26 @@ UINT8 DSU_BLOC_TRG_AREA_STRU_init(UINT8 * pDataAdd, DSU_BLOC_TRG_AREA_STRU * pBl UINT8 DSU_CBTC_TRG_AREA_STRU_init(UINT8 * pDataAdd, DSU_CBTC_TRG_AREA_STRU * pCbtcTrgAreaStru) { UINT8 rtnValue = 0U; - UINT8 * pData = pDataAdd; - UINT16 i = 0U; /*ָ*/ if ((NULL != pDataAdd) && (NULL != pCbtcTrgAreaStru)) { + UINT8 * pData = pDataAdd; + UINT16 i = 0; + /*ID*/ pCbtcTrgAreaStru->wId = ShortFromChar(pData); - pData += 2U; + pData += 2; pCbtcTrgAreaStru->wLogicSgmtNum = ShortFromChar(pData); - pData += 2U; - if (MAX_CBTC_TRG_INCLUDE_SEC_NUM < pCbtcTrgAreaStru->wLogicSgmtNum) + pData += 2; + + /*Ϣ*/ + for (i = 0; i<(pCbtcTrgAreaStru->wLogicSgmtNum); i++) { - rtnValue = 0U; - /**/ - } - else - { - /*Ϣ*/ - for (i = 0U; i < (pCbtcTrgAreaStru->wLogicSgmtNum); i++) - { - pCbtcTrgAreaStru->wLogicSgmtId[i] = ShortFromChar(pData); - pData += 2U; - } - rtnValue = 1U; + pCbtcTrgAreaStru->wLogicSgmtId[i] = ShortFromChar(pData); + pData += 2; } + rtnValue = 1; } return rtnValue; } @@ -4144,65 +4053,37 @@ UINT8 DSU_SPKS_BUTTON_STRU_init(UINT8 *pDataAdd, DSU_SPKS_BUTTON_STRU *pSpksButt { UINT8 rtnValue = 0U; /*ָ*/ - UINT8 *pData = pDataAdd; - UINT16 i = 0U; - UINT16 wTempValue = 0U; - UINT8 chFindFlag = 0U; if ((NULL != pDataAdd) && (NULL != pSpksButtonStru)) { + UINT8 *pData = pDataAdd; + UINT16 i = 0; + /**/ pSpksButtonStru->wId = ShortFromChar(pData); - pData += 2U; + pData += 2; pSpksButtonStru->wPhysicalSgmtNum = ShortFromChar(pData); - pData += 2U; + pData += 2; - if (DSU_SPKS_STRU_PHYID < pSpksButtonStru->wPhysicalSgmtNum) + /*ID*/ + for (i = 0; iwRelatePhysicalSgmtId[i] = ShortFromChar(pData); + pData += 2; } - else - { - /*ID*/ - for (i = 0U; iwPhysicalSgmtNum; i++) - { - pSpksButtonStru->wRelatePhysicalSgmtId[i] = ShortFromChar(pData); - pData += 2U; - } - /*Ч*/ - for (i = 0U; i<(DSU_SPKS_STRU_PHYID-pSpksButtonStru->wPhysicalSgmtNum)+1U; i++) - { - wTempValue = ShortFromChar(pData); - pData += 2U; - if ((DSU_NULL_16 != wTempValue) && (DSU_NULL_8 >= wTempValue)) - { - /*Ч*/ - pSpksButtonStru->wManageCI = wTempValue; - chFindFlag = 1U; - break; - } - else - { - ; /**/ - } - } - if (0U == chFindFlag) - { - /*CI*/ - pSpksButtonStru->wManageCI = ShortFromChar(pData); - pData += 2U; - } - /*CI*/ - pSpksButtonStru->wManageVirCI = ShortFromChar(pData); - pData += 2U; + /*CI*/ + pSpksButtonStru->wManageCI = ShortFromChar(pData); + pData += 2; + /*CI*/ + pSpksButtonStru->wManageVirCI = ShortFromChar(pData); + pData += 2; - /*ѩվ̨ID*/ - pSpksButtonStru->wPlatFormId = ShortFromChar(pData); - pData += 2U; + /*ѩվ̨ID*/ + pSpksButtonStru->wPlatFormId = ShortFromChar(pData); + pData += 2; - rtnValue = 1U; - } + rtnValue = 1; } return rtnValue; } @@ -4595,11 +4476,6 @@ UINT8 PSC_STRU_init(UINT8 *pDataAdd, DSU_PSC_STRU *pPSCStru) UINT8 EA_STRU_init(UINT8 * pDataAdd, DSU_EMAP_EA_STRU* pEaStrc) { UINT8 rtnValue = 0U; - static UINT8 chRunCount = 0U; /*ִиúĴ жǷΪһν*/ - static UINT8 chMaxEaStartLinkNum = MAX_EA_BOUNDARY_NUM; /*߽Ŀ*/ - UINT16 wTempValue = 0U; /*ʱ2ֽڳнӱ*/ - UINT8 chTempValue = 0U; /*ʱ1ֽڳнӱ*/ - /*ָ*/ if ((NULL != pDataAdd) && (NULL != pEaStrc)) { @@ -4610,103 +4486,36 @@ UINT8 EA_STRU_init(UINT8 * pDataAdd, DSU_EMAP_EA_STRU* pEaStrc) pEaStrc->wId = ShortFromChar(pData); pData += 2U; - if (0U == chRunCount) + /*߽*/ + pEaStrc->chStartLinkNum = *pData; + pData++; + + for (chIndex = 0U; chIndex < 5u; chIndex++) { - /*߽*/ - chMaxEaStartLinkNum = *pData; + /* ߽link */ + pEaStrc->szStartLinkId[chIndex] = ShortFromChar(pData); + pData += 2U; + + /* ߽ѯյ߽߼ */ + pEaStrc->szStartLinkDir[chIndex] = *pData; pData++; - - if (MAX_EA_BOUNDARY_NUM >= chMaxEaStartLinkNum) - { - - for (chIndex = 0U; chIndex < chMaxEaStartLinkNum; chIndex++) - { - pData += 3U; - } - - for (chIndex = 0U; chIndex < MAX_EA_BOUNDARY_NUM; chIndex++) - { - wTempValue = ShortFromChar(pData); - pData += 2U; - - chTempValue = *pData; - pData++; - - /* ϶ȡݣЧֱֵȡȷֵʱ˳ */ - if ((wTempValue != DSU_NULL_16) && (chTempValue != DSU_NULL_8)) - { - break; - } - else - { - /*߽+1*/ - chMaxEaStartLinkNum++; - } - } - rtnValue = 1U; - } - else - { - ; /*ʧ*/ - } - - chRunCount++; } - else + + /*յ߽*/ + pEaStrc->chEndLinkNum = *pData; + pData++; + + for (chIndex = 0U; chIndex < 5u; chIndex++) { - if (MAX_EA_BOUNDARY_NUM < chMaxEaStartLinkNum) - { - ; /*ʧ*/ - } - else - { - /*߽*/ - pEaStrc->chStartLinkNum = *pData; - pData++; + /* յ߽link */ + pEaStrc->szEndLinkId[chIndex] = ShortFromChar(pData); + pData += 2U; - if (MAX_EA_BOUNDARY_NUM >= pEaStrc->chStartLinkNum) - { - for (chIndex = 0U; chIndex < chMaxEaStartLinkNum; chIndex++) - { - /* ߽link */ - pEaStrc->szStartLinkId[chIndex] = ShortFromChar(pData); - pData += 2U; - - /* ߽ѯյ߽߼ */ - pEaStrc->szStartLinkDir[chIndex] = *pData; - pData++; - } - - /*յ߽*/ - pEaStrc->chEndLinkNum = *pData; - pData++; - - if (MAX_EA_BOUNDARY_NUM >= pEaStrc->chEndLinkNum) - { - for (chIndex = 0U; chIndex < pEaStrc->chEndLinkNum; chIndex++) - { - /* յ߽link */ - pEaStrc->szEndLinkId[chIndex] = ShortFromChar(pData); - pData += 2U; - - /* յ߽ѯ߽߼ */ - pEaStrc->szEndLinkDir[chIndex] = *pData; - pData++; - } - - rtnValue = 1U; - } - else - { - ; /*ʧ*/ - } - } - else - { - ; /*ʧ*/ - } - } - } + /* յ߽ѯ߽߼ */ + pEaStrc->szEndLinkDir[chIndex] = *pData; + pData++; + } + rtnValue = 1; } return rtnValue; } @@ -4721,44 +4530,38 @@ UINT8 EA_STRU_init(UINT8 * pDataAdd, DSU_EMAP_EA_STRU* pEaStrc) UINT8 DSU_LOGSEC_SPKS_BUTTON_STRU_init(UINT8* pDataAdd, DSU_LOGSEC_SPKS_BUTTON_STRU* pSpksButtonStru) { UINT8 rtnValue = 0U; - UINT8* pData = pDataAdd; - UINT16 i = 0U; /*ָ*/ if ((NULL != pDataAdd) && (NULL != pSpksButtonStru)) { + UINT8* pData = pDataAdd; + UINT16 i = 0; + /**/ pSpksButtonStru->wId = ShortFromChar(pData); - pData += 2U; + pData += 2; pSpksButtonStru->wLogSecNum = ShortFromChar(pData); - pData += 2U; + pData += 2; - if (DSU_SPKS_STRU_LOGSECID < pSpksButtonStru->wLogSecNum) + /*߼ID*/ + for (i = 0; i < DSU_SPKS_STRU_LOGSECID; i++) { - rtnValue = 0U; + pSpksButtonStru->wRelateLogSecId[i] = ShortFromChar(pData); + pData += 2; } - else - { - /*߼ID*/ - for (i = 0; i < DSU_SPKS_STRU_LOGSECID; i++) - { - pSpksButtonStru->wRelateLogSecId[i] = ShortFromChar(pData); - pData += 2U; - } - /*CI*/ - pSpksButtonStru->wManageCI = ShortFromChar(pData); - pData += 2U; - /*CI*/ - pSpksButtonStru->wManageVirCI = ShortFromChar(pData); - pData += 2U; + /*CI*/ + pSpksButtonStru->wManageCI = ShortFromChar(pData); + pData += 2; + /*CI*/ + pSpksButtonStru->wManageVirCI = ShortFromChar(pData); + pData += 2; - /*ѩվ̨ID*/ - pSpksButtonStru->wPlatFormId = ShortFromChar(pData); - pData += 2U; + /*ѩվ̨ID*/ + pSpksButtonStru->wPlatFormId = ShortFromChar(pData); + pData += 2; - rtnValue = 1U; - } + rtnValue = 1; } return rtnValue; } diff --git a/TSCP/src/dqu_common/dqu_emap_common/dquStructInit.h b/TSCP/src/dqu_common/dqu_emap_common/dquStructInit.h index b8f5a6b..a89686e 100644 --- a/TSCP/src/dqu_common/dqu_emap_common/dquStructInit.h +++ b/TSCP/src/dqu_common/dqu_emap_common/dquStructInit.h @@ -16,12 +16,10 @@ #ifndef DQU_STRUCT_INIT_H #define DQU_STRUCT_INIT_H + #ifdef __cplusplus extern "C" { #endif - -extern UINT8 gLocalPublicDataType; /*ݰ汾*/ - /************************************** ܣlinkṹʼ ˵[in] pDataAdd ݵַļ @@ -81,13 +79,13 @@ UINT8 AXLE_STRU_init(UINT8 *pDataAdd,DSU_AXLE_STRU *pAxleStru); /************************************** ܣȫݽṹʼ -˵[in] pDataAdd ݵַļUINT16 rowlen +˵[in] pDataAdd ݵַļ [out] pScreenStru ʼĽṹָ ֵ0=ʧܣ1=ɹ עṹ UINT16 wManageLogicCI; ߼CI ***************************/ -UINT8 SCREEN_STRU_init(UINT8 * pDataAdd, DSU_SCREEN_STRU * pScreenStru, UINT16 rowlen); +UINT8 SCREEN_STRU_init(UINT8 *pDataAdd,DSU_SCREEN_STRU *pScreenStru); /************************************** diff --git a/TSCP/src/dqu_common/dqu_emap_common/dsuStruct.h b/TSCP/src/dqu_common/dqu_emap_common/dsuStruct.h index 8849269..d8c0393 100644 --- a/TSCP/src/dqu_common/dqu_emap_common/dsuStruct.h +++ b/TSCP/src/dqu_common/dqu_emap_common/dsuStruct.h @@ -80,14 +80,12 @@ #define MAX_BLOC_TRG_AREA_NUM 30U /*ʽ*/ #define MAX_CBTC_TRG_AREA_NUM 30U /*CBTC*/ #define MAX_ALEX_HAVE_LG_NUM 50U /*߼*/ -#define MAX_BLOC_TRG_INCLUDE_SEC_NUM 40U /*ʽΰθ*/ -#define MAX_CBTC_TRG_INCLUDE_SEC_NUM 40U /*CBTCΰθ*/ #define DSU_ROUTE_STRU_SWITCH ((UINT8)16) #define DSU_ROUTE_STRU_wLinkId ((UINT8)50) /*·linkֵ*/ #define DSU_ROUTE_STRU_AxleSgmtId ((UINT8)30) -#define DSU_SPKS_STRU_PHYID ((UINT8)150) /*SPKSӰ*/ +#define DSU_SPKS_STRU_PHYID ((UINT8)100) /*SPKSӰ*/ #define DSU_SPKS_STRU_LOGSECID ((UINT8)200) /*SPKSӰ߼*/ #define AXISSEC_NEXT_AXISSEC_MAX_NUM 16 /*by cgh 20230724 ڼĿ*/ @@ -96,8 +94,6 @@ #define MAX_PROTECT_AXIS_NUM ((UINT8)100U) /*Ź*/ #define MAX_ACCESS_AXIS_NUM ((UINT8)100U) /*Źӽ*/ -#define MAX_EA_BOUNDARY_NUM 10U /*߽*/ - #ifdef __cplusplus extern "C" { @@ -334,6 +330,8 @@ typedef struct DSU_AxleStruct UINT16 wLkId; /*link*/ UINT32 dwLkOfst; /*linkƫ(cm)*/ UINT8 dwAxleKiloPlueMinusSign; /*ű־*/ + + }DSU_AXLE_STRU; @@ -345,9 +343,8 @@ typedef struct DSU_ScreenStruct UINT16 wRelatLkId; /*Źlink*/ UINT16 wwRelatLkOrient; /*Թlink߼ķλ()*/ UINT16 wVobcCiID; /*VOBC-CIλ*/ - UINT16 wFstProLinkId; /*ŷlink1*/ - UINT16 wSndProLinkId; /*ŷlink2*/ - UINT16 wTrdProLinkId; /*ŷlink3*/ + + /* ݴĿУļɾֵҪ̬---Ϲѧ */ UINT16 wManageLogicCI; /*߼CI*/ @@ -433,7 +430,7 @@ typedef struct DSU_AxleSgmtStruct { UINT16 wId; /**/ - CHAR szCaption [32]; /**/ + CHAR szCaption [16]; /**/ UINT16 wOrgnAxleId; /**/ UINT16 wTmnlAxleId; /*յ*/ UINT16 wOrgnLkId; /*link*/ @@ -468,7 +465,7 @@ typedef struct DSU_AxleSgmtStruct typedef struct DSU_LogicSgmtStruct { UINT16 wId; /**/ - CHAR szCaption [32]; /*߼*/ + CHAR szCaption [16]; /*߼*/ UINT16 wOrgnLkId; /*link*/ UINT32 dwOrgnLkOfst; /*linkƫ(cm)*/ UINT16 wTmnlLkId; /*յlink*/ @@ -857,7 +854,7 @@ typedef struct DSU_ConGrade/**/ typedef struct DSU_PhysicalSgmt/**/ { UINT16 wId; /**/ - CHAR szName[32]; /**/ + CHAR szName[16]; /**/ UINT8 Type; /**/ UINT8 LjkFlag; /*м־*/ UINT16 BelongAxleSysID; /*ϵͳID*/ @@ -867,14 +864,14 @@ typedef struct DSU_BlocTrgAera/* { UINT16 wId; /**/ UINT16 wAxleSgmtNum; /*θ*/ - UINT16 wAxleSgmtId[MAX_BLOC_TRG_INCLUDE_SEC_NUM]; /* 40̬ ݻͨݽṹV13.0.0 by sds 2018-6-7*/ + UINT16 wAxleSgmtId[40]; /* 40̬ ݻͨݽṹV13.0.0 by sds 2018-6-7*/ }DSU_BLOC_TRG_AREA_STRU; typedef struct DSU_CbtcTrgAera/*CBTC*/ { UINT16 wId; /**/ UINT16 wLogicSgmtNum; /*߼θ*/ - UINT16 wLogicSgmtId[MAX_CBTC_TRG_INCLUDE_SEC_NUM]; /*߼ 40̬ ݻͨݽṹV13.0.0 by sds 2018-6-7*/ + UINT16 wLogicSgmtId[40]; /*߼ 40̬ ݻͨݽṹV13.0.0 by sds 2018-6-7*/ }DSU_CBTC_TRG_AREA_STRU; /*վ̨*/ @@ -995,11 +992,11 @@ typedef struct DSU_EmapEa { UINT16 wId; /* ӵͼñ */ UINT8 chStartLinkNum; /* ߽ */ - UINT16 szStartLinkId[MAX_EA_BOUNDARY_NUM]; /* ߽link */ - UINT8 szStartLinkDir[MAX_EA_BOUNDARY_NUM]; /* ߽ѯյ߼ */ + UINT16 szStartLinkId[5]; /* ߽link */ + UINT8 szStartLinkDir[5]; /* ߽ѯյ߼ */ UINT8 chEndLinkNum; /* յ߽ */ - UINT16 szEndLinkId[MAX_EA_BOUNDARY_NUM]; /* յ߽link */ - UINT8 szEndLinkDir[MAX_EA_BOUNDARY_NUM]; /* յ߽ѯ߼ */ + UINT16 szEndLinkId[5]; /* յ߽link */ + UINT8 szEndLinkDir[5]; /* յ߽ѯ߼ */ }DSU_EMAP_EA_STRU; typedef struct DSU_StaticHead/*ž̬ݸݽṹͷָ*/ diff --git a/TSCP/src/protocol/fsfb/common_fsfb/FsfbConfig.h b/TSCP/src/protocol/fsfb/common_fsfb/FsfbConfig.h index b7accbb..0c8d7cd 100644 --- a/TSCP/src/protocol/fsfb/common_fsfb/FsfbConfig.h +++ b/TSCP/src/protocol/fsfb/common_fsfb/FsfbConfig.h @@ -15,7 +15,9 @@ #define _FSFB_CONFIG_H_ /* ¼뿪 */ -#define FSFB_RECORD_SIMPLIFY_BIN /* ԶƷʽ¼ */ +#define FSFB_RECORD_ERR_ASCII /* ַʽ¼ */ +#define FSFB_RECORD_SIMPLIFY_BIN /* ԶƷʽ¼ */ +#undef FSFB_RECORD_SIMPLIFY_BIN #endif diff --git a/TSCP/src/protocol/fsfb/common_fsfb/FsfbLnkNodeMgr.c b/TSCP/src/protocol/fsfb/common_fsfb/FsfbLnkNodeMgr.c index 09659a5..aff89cc 100644 --- a/TSCP/src/protocol/fsfb/common_fsfb/FsfbLnkNodeMgr.c +++ b/TSCP/src/protocol/fsfb/common_fsfb/FsfbLnkNodeMgr.c @@ -39,7 +39,6 @@ #include "FsfbLnkNodeMgr.h" #include "FsfbConfig.h" #include "CommonRecord.h" -#include "FsfbRecordDelare.h" #ifdef __cplusplus @@ -61,7 +60,7 @@ static UINT8 FsfbSetNodeParam(const DSU_FSFB_LINK_RINFO_STRU* pRecvDsuLnkInf, static UINT8 FsfbCheckRecvDsuLnkInfo(UINT16 srcAddr,UINT16 destAddr, const DSU_FSFB_LINK_RINFO_STRU *pRecvLnkInfo); static UINT8 FsfbCheckInputAddr(UINT16 LocalDevName,UINT16 destName,const DSU_FSFB_LINK_RINFO_STRU *pRecvLnkInfo); -static void FsfbLnkNodeInfo2VarArray(const Fsfb_Lnk_Info_Node_Stru* pNode, UINT8* VarArray, UINT8* recordArray, UINT16 recordArraySize); +static void FsfbLnkNodeInfo2VarArray(const Fsfb_Lnk_Info_Node_Stru* pNode, UINT8* VarArray); /*-------------------------------------------------------------------- * ·ģڲ End *--------------------------------------------------------------------*/ @@ -148,8 +147,6 @@ UINT8 FsfbOutputReplaceLnkNode(UINT16 locName,UINT16 destName,UINT8 applyCat,Fsf ret = dsuFsfbSGetLnkInfo(locName,destName,applyCat,&outLnkInfo); if(ret == 0) { - PrintRecArrayByte(pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, OUT_FIND_LNK_ERR); /* ѯ· */ - return ret; } @@ -157,8 +154,6 @@ UINT8 FsfbOutputReplaceLnkNode(UINT16 locName,UINT16 destName,UINT8 applyCat,Fsf pLnkNodeInfo = FsfbInsertLnkNode(pFsfbStruct,destName,applyCat); if(NULL == pLnkNodeInfo) { - PrintRecArrayByte(pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, OUT_INSERT_NODE_ERR); /* ѯ· */ - /* ɸǽڵȡʧ 󷵻 */ ret = 0; return ret; @@ -174,15 +169,11 @@ UINT8 FsfbOutputReplaceLnkNode(UINT16 locName,UINT16 destName,UINT8 applyCat,Fsf if (ret == 0) { - PrintRecArrayByte(pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, OUT_INIT_NODE_ERR); /* ʼڵ */ - return ret; } } else { - PrintRecArrayByte(pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, OUT_ADDR_ERR); /* ַ */ - /* Ϣȡʧ ͨŹϵʽ CICC ַϵ */ ret = 0; return ret; @@ -377,80 +368,74 @@ UINT8 FsfbUptLnkNodeInfoBySsr(UINT8* pAppData,UINT8 applyCat,FSFB_INFO_STRU* pFs { /* 󷵻 */ retVal = 0; - - PrintRecArrayByte(pFsfbStrut->RecordArray, pFsfbStrut->RecordArraySize, IN_SSR_SSE_TC_ERR); /*SSRSSEŴ*/ - PrintRecArray4ByteB(pFsfbStrut->RecordArray, pFsfbStrut->RecordArraySize, SseTCe); - PrintRecArray4ByteB(pFsfbStrut->RecordArray, pFsfbStrut->RecordArraySize, pTmStmp->SseTC); } } else { /* 󷵻 0 */ retVal = 0; - - PrintRecArrayByte(pFsfbStrut->RecordArray, pFsfbStrut->RecordArraySize, IN_SSR_STATUS_ERR); /*SSR״̬*/ - PrintRecArrayByte(pFsfbStrut->RecordArray, pFsfbStrut->RecordArraySize, pFsfbLnkInfo->RecvLinkStatus); } } else { /* 󷵻 */ retVal =0; - - PrintRecArrayByte(pFsfbStrut->RecordArray, pFsfbStrut->RecordArraySize, IN_CAT_ERR); /*֡*/ - PrintRecArrayByte(pFsfbStrut->RecordArray, pFsfbStrut->RecordArraySize, applyCat); } return retVal; } - /** -* @brief FsfbUptLnkNodeInfoByAbt ABTϢͨŽڵϢ -* @param pAppData ȡֵΧ:ֽ -* @param pFsfbStrut FSFBṹ ȡֵΧ:οṹFSFB_INFO_STRU -* @param pLnkNode ·ڵ ȡֵΧ:οṹFsfb_Lnk_Info_Node_Stru - * @return 0:ʧ;1ɹ -*/ + + +/*********************************************************************** + * : FsfbUptLnkNodeInfoByAbt + * : ABTϢͨŽڵϢ + * : + * + * -------------------------------------------------------------- + * pAppData UINT8* IN һ֡ĸʽ + * pFsfbStrut FSFB_INFO_STRU* IN FSFBЭͳһṹ + * pLnkNode Fsfb_Lnk_Info_Node_Stru INOUT FSFB·Ϣ + * + + * ֵ : UINT8 1 0󷵻 + ***********************************************************************/ UINT8 FsfbUptLnkNodeInfoByAbt(UINT8* pAppData, FSFB_INFO_STRU* pFsfbStrut, Fsfb_Lnk_Info_Node_Stru* pLnkNode) { - UINT8 rtnVal = 0u; /*-< úֵΪʧ*/ + UINT8 rtnVal = 0u; /*ֵ*/ FsfbLinkInfoStru* lnkInfo = NULL; /*·Ϣ*/ ComTimeStampStru* timeStamp = NULL; /*ʱ*/ UINT32 tc = 0u; /**/ INT32 delayTc = 0; /**/ UINT8 funSidXorTnRtn = 0u; /*ûȡSidXorTnֵ*/ UINT8 funSvcRtn = 0u; /*SVCУ麯ֵ*/ - UINT8 procRst = 0u; /*-< ôΪ0*/ + UINT8 procRst = 0u; /**/ UINT32 sidXorTn[2] = { 0u }; /*SID XOR TN BSDļ*/ UINT8* recordArray = NULL; /*־*/ UINT16 recordArraySize = 0u; /*־鳤*/ - if ((NULL != pAppData) && (NULL != pFsfbStrut) && (NULL != pLnkNode) && (NULL != pFsfbStrut->RecordArray)) /*-< Ƿǿ*/ + if ((NULL != pAppData) && (NULL != pFsfbStrut) && (NULL != pLnkNode) && (NULL != pFsfbStrut->RecordArray)) /**/ { - lnkInfo = &pLnkNode->FsfbLinInfo; /*-< ·*/ - timeStamp = &lnkInfo->TimeStmp; /*-< ʱ*/ - recordArray = pFsfbStrut->RecordArray; /*-< ü¼*/ - recordArraySize = pFsfbStrut->RecordArraySize; /*-< ü¼鳤*/ + lnkInfo = &pLnkNode->FsfbLinInfo; + timeStamp = &lnkInfo->TimeStmp; + recordArray = pFsfbStrut->RecordArray; + recordArraySize = pFsfbStrut->RecordArraySize; - PrintRecArrayByte(recordArray, recordArraySize, IN_ABT_STATUS); /*ABT״̬*/ - PrintRecArrayByte(recordArray, recordArraySize, lnkInfo->RecvLinkStatus); - - if ((Fsfb_WaitBtm_Sseabt == lnkInfo->RecvLinkStatus) || (Fsfb_WaitBtm_Btcabt == lnkInfo->RecvLinkStatus) || (Fsfb_WaitBtm_AbtOrSse == lnkInfo->RecvLinkStatus)) /*-< ·״̬ǷȴBTMSSEABT֡ ȴBTMBTCABT֡ ȴBTMABT֡SSE֡*/ + if ((Fsfb_WaitBtm_Sseabt == lnkInfo->RecvLinkStatus) || (Fsfb_WaitBtm_Btcabt == lnkInfo->RecvLinkStatus) || (Fsfb_WaitBtm_AbtOrSse == lnkInfo->RecvLinkStatus)) /*ȴBTMSSEABT֡ ȴBTMBTCABT֡ ȴBTMABT֡SSE֡*/ { - tc = LongFromCharLE(&pAppData[FSFB_TC_POS]); /*-< յ*/ - delayTc = tc - timeStamp->NowRecvTCr - 1; /*-< յϴŲ*/ - if ((0 <= delayTc) && (COM_MAX_K > delayTc)) /*-< ŲǷڵ0 Сڲ鳤*/ + tc = LongFromCharLE(&pAppData[FSFB_TC_POS]); + delayTc = tc - timeStamp->NowRecvTCr - 1; + if ((0 <= delayTc) && (COM_MAX_K > delayTc)) /**/ { - funSidXorTnRtn = ComGetSidXorTn(pAppData, sidXorTn); /*-< ûȡSidXorTn*/ - funSvcRtn = ComCheckCRCM(sidXorTn, timeStamp->NowSINIT_ADD_SID_XOR_Tn, delayTc, lnkInfo->LocalNode.TSD_POST_RXDADA_K); /*üSVC*/ - if ((1u == funSidXorTnRtn) && (1u == funSvcRtn)) /*-< úǷɹ*/ + funSidXorTnRtn = ComGetSidXorTn(pAppData, sidXorTn); /*ȡSidXorTn*/ + funSvcRtn = ComCheckCRCM(sidXorTn, timeStamp->NowSINIT_ADD_SID_XOR_Tn, delayTc, lnkInfo->LocalNode.TSD_POST_RXDADA_K); /*SVC*/ + if ((1u == funSidXorTnRtn) && (1u == funSvcRtn)) /*ɹ*/ { - procRst = ComUpdtTmStmpStru(sidXorTn, tc, delayTc, lnkInfo->LocalNode.PREC_SINIT_K, timeStamp); /*-< øʱ,ֵ*/ + procRst = ComUpdtTmStmpStru(sidXorTn, tc, delayTc, lnkInfo->LocalNode.PREC_SINIT_K, timeStamp); /*ʱ*/ } else /*ʧ*/ { -#ifdef FSFB_RECORD_ERR_ASCII - /*- ¼úʧ־*/ +#ifdef FSFB_RECORD_ERR_ASCII PrintFiles(recordArray, recordArraySize, "W:ABT SVC Error.\n"); PrintFileU16Hex(recordArray, recordArraySize, pLnkNode->DestDevName); /*DestDevName*/ PrintFileU32Hex(recordArray, recordArraySize, sidXorTn[0]); /*sidXorTn[0]*/ @@ -459,96 +444,66 @@ UINT8 FsfbUptLnkNodeInfoByAbt(UINT8* pAppData, FSFB_INFO_STRU* pFsfbStrut, Fsfb_ PrintFileU32Hex(recordArray, recordArraySize, timeStamp->NowSINIT_ADD_SID_XOR_Tn[1]); /*NowSINIT_ADD_SID_XOR_Tn[1]*/ PrintFileU32Hex(recordArray, recordArraySize, delayTc); /*delayTc*/ #endif - - - PrintRecArrayByte(recordArray, recordArraySize, IN_ABT_SVC_ERR); /*ABTSVC*/ - PrintRecArray2ByteB(recordArray, recordArraySize, pLnkNode->DestDevName); /*DestDevName*/ - PrintRecArray4ByteB(recordArray, recordArraySize, sidXorTn[0]); /*sidXorTn[0]*/ - PrintRecArray4ByteB(recordArray, recordArraySize, sidXorTn[1]); /*sidXorTn[1]*/ - PrintRecArray4ByteB(recordArray, recordArraySize, timeStamp->NowSINIT_ADD_SID_XOR_Tn[0]); /*NowSINIT_ADD_SID_XOR_Tn[0]*/ - PrintRecArray4ByteB(recordArray, recordArraySize, timeStamp->NowSINIT_ADD_SID_XOR_Tn[1]); /*NowSINIT_ADD_SID_XOR_Tn[1]*/ - PrintRecArray4ByteB(recordArray, recordArraySize, tc); /*tc*/ - PrintRecArray4ByteB(recordArray, recordArraySize, timeStamp->NowRecvTCr); /*NowRecvTCr*/ - PrintRecArray4ByteB(recordArray, recordArraySize, delayTc); /*delayTc*/ - - procRst = 0u; /*-< ôΪ0*/ + procRst = 0u; } } else /**/ { #ifdef FSFB_RECORD_ERR_ASCII - /*- ¼־*/ PrintFiles(pFsfbStrut->RecordArray, pFsfbStrut->RecordArraySize, "W:ABT old tc\n"); PrintFileU16Hex(recordArray, recordArraySize, pLnkNode->DestDevName); /*DestDevName*/ PrintFileU32Hex(recordArray, recordArraySize, timeStamp->NowRecvTCr); /*NowRecvTCr*/ PrintFileU32Hex(recordArray, recordArraySize, tc); /*tc*/ #endif - - PrintRecArrayByte(recordArray, recordArraySize, IN_ABT_OLD_ERR); /*ABTŴ*/ - PrintRecArray2ByteB(recordArray, recordArraySize, pLnkNode->DestDevName); /*DestDevName*/ - PrintRecArray4ByteB(recordArray, recordArraySize, tc); /*tc*/ - PrintRecArray4ByteB(recordArray, recordArraySize, timeStamp->NowRecvTCr); /*NowRecvTCr*/ - PrintRecArray4ByteB(recordArray, recordArraySize, delayTc); /*delayTc*/ - - procRst = 0u; /*-< ôΪ0*/ + procRst = 0u; } - if (1u == procRst) /*-< Ƿ*/ + if (1u == procRst) /**/ { - if (Fsfb_WaitBtm_Sseabt == lnkInfo->RecvLinkStatus) /*-< ·״̬ǷΪ BTMSSE ABT*/ + if (Fsfb_WaitBtm_Sseabt == lnkInfo->RecvLinkStatus) /*ͨ·Ľ״̬Ϊ ȴSSR*/ { - lnkInfo->SendLinkStatus = Fsfb_SendBtm_Btc; /*-< ·״̬ΪBTC*/ + lnkInfo->SendLinkStatus = Fsfb_SendBtm_Btc; /*·״̬Ϊbtc*/ } else /*BTC ȴABT ȴBTMABT֡SSE֡*/ { - lnkInfo->RecvLinkStatus = Fsfb_RecvData; /*-< ·״̬Ϊ*/ - lnkInfo->SendLinkStatus = Fsfb_Halt; /*-< ·״̬Ϊж*/ - timeStamp->NowRecvTCr = LongFromCharLE(&pAppData[FSFB_TC_POS]); /*-< õǰյ*/ + lnkInfo->RecvLinkStatus = Fsfb_RecvData; /*··״̬Ϊ*/ + lnkInfo->SendLinkStatus = Fsfb_Halt; + timeStamp->NowRecvTCr = LongFromCharLE(&pAppData[FSFB_TC_POS]); /*ǰյʱ=ļ*/ } } } - else if (Fsfb_WaitBtm_SbtAbt == lnkInfo->RecvLinkStatus) /*-< ·״̬ǷȴBTMsbtAbt֡*/ + else if (Fsfb_WaitBtm_SbtAbt == lnkInfo->RecvLinkStatus) /*ȴBTMsbtAbt֡*/ { - tc = LongFromCharLE(&pAppData[FSFB_TC_POS]); /*-< յ*/ - delayTc = ComCheckTimeStamp(tc, timeStamp->NowRecvTCr, lnkInfo->LocalNode.MaxLost); /*-< üյϴյǷ󶪰*/ - if (delayTc < 0) /*-< úǷʧ*/ + tc = LongFromCharLE(&pAppData[FSFB_TC_POS]); + delayTc = ComCheckTimeStamp(tc, timeStamp->NowRecvTCr, lnkInfo->LocalNode.MaxLost); + if (delayTc < 0) { - lnkInfo->SendLinkStatus = Fsfb_SendSSE; /*-< ·״̬ΪSSE*/ + lnkInfo->SendLinkStatus = Fsfb_SendSSE; /*·״̬ΪSSE*/ } else { - lnkInfo->SendLinkStatus = Fsfb_SendBtm_Btc; /*-< ·״̬ΪBTC*/ + lnkInfo->SendLinkStatus = Fsfb_SendBtm_Btc; /*·״̬ΪBtc*/ } + timeStamp->NowRecvTCr = LongFromCharLE(&pAppData[FSFB_TC_POS]); /*ǰյʱ=ļ*/ - - PrintRecArrayByte(recordArray, recordArraySize, IN_ABT_SSE_BTC); /*ABTSSEBTC*/ - PrintRecArray4ByteB(recordArray, recordArraySize, tc); /*tc*/ - PrintRecArray4ByteB(recordArray, recordArraySize, timeStamp->NowRecvTCr); /*NowRecvTCr*/ - PrintRecArrayByte(recordArray, recordArraySize, lnkInfo->LocalNode.MaxLost); - PrintRecArray4ByteB(recordArray, recordArraySize, delayTc); /*delayTc*/ - PrintRecArrayByte(recordArray, recordArraySize, lnkInfo->SendLinkStatus); - PrintRecArray4ByteB(recordArray, recordArraySize, LongFromCharLE(&pAppData[FSFB_TC_POS])); /*NowRecvTCr*/ - - timeStamp->NowRecvTCr = LongFromCharLE(&pAppData[FSFB_TC_POS]); /*-< õǰյ*/ - - procRst = 1u; /*-< ôΪ1*/ + procRst = 1u; } else /*Ƿ״̬*/ { - lnkInfo->SendLinkStatus = Fsfb_Halt; /*-< ·״̬Ϊж*/ + lnkInfo->SendLinkStatus = Fsfb_Halt; } - if (1u == procRst) /*-< Ƿ*/ + if (1u == procRst) /**/ { - timeStamp->LastLocalRecTC = *pFsfbStrut->CycleNum; /*-< ϴյΪǰں*/ - timeStamp->LastRecvTCr = timeStamp->NowRecvTCr; /*-< ϴյΪ·ǰ*/ - lnkInfo->NoRecvDataCycleNum = 0u; /*-< Ϊ0*/ + timeStamp->LastLocalRecTC = *pFsfbStrut->CycleNum; /* ϴյĵıʱ */ + timeStamp->LastRecvTCr = timeStamp->NowRecvTCr; /* ϴνܱʱΪ ǰյʱ Ԥ */ + lnkInfo->NoRecvDataCycleNum = 0u; /* */ pLnkNode->IsSendFlag = 1u; - rtnVal = 1u; /*-< úֵΪɹ*/ + rtnVal = 1u; } - return rtnVal; /*-< غֵ*/ + return rtnVal; } } @@ -706,7 +661,7 @@ UINT16 FsfbWriteToVarArray(UINT8 *VarArray,FSFB_INFO_STRU *pFsfbStruct) if((pFsfbStruct->VarArraySize - index) >= FSFB_VAR_NODE_LEN) { /*ض·м*/ - FsfbLnkNodeInfo2VarArray(CurFillLnk, &VarArray[index], pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize); + FsfbLnkNodeInfo2VarArray(CurFillLnk,&VarArray[index]); index +=FSFB_VAR_NODE_LEN; /*¼¼,·״̬Ϣ*/ /*ǰ·Ľڵһڵ*/ @@ -1238,7 +1193,7 @@ static UINT8 FsfbCheckInputAddr(UINT16 LocalDevName,UINT16 destName,const DSU_FS * * ֵ : ***********************************************************************/ -static void FsfbLnkNodeInfo2VarArray(const Fsfb_Lnk_Info_Node_Stru* pNode, UINT8* VarArray, UINT8* recordArray, UINT16 recordArraySize) +static void FsfbLnkNodeInfo2VarArray(const Fsfb_Lnk_Info_Node_Stru* pNode, UINT8* VarArray) { UINT16 index = 0; const FsfbLinkInfoStru *pFsfbLnkInfo = &pNode->FsfbLinInfo; @@ -1452,37 +1407,6 @@ static void FsfbLnkNodeInfo2VarArray(const Fsfb_Lnk_Info_Node_Stru* pNode, UINT8 } } - - - PrintRecArrayByte(recordArray, recordArraySize, OUT_LNK); /*·*/ - PrintRecArray2ByteB(recordArray, recordArraySize, pNode->DestDevName); - PrintRecArrayByte(recordArray, recordArraySize, pNode->Applcat); - PrintRecArrayByte(recordArray, recordArraySize, pNode->IsSendFlag); - PrintRecArray2ByteB(recordArray, recordArraySize, pFsfbLnkInfo->rcvSrcAdd); - PrintRecArray2ByteB(recordArray, recordArraySize, pFsfbLnkInfo->sendSrcAdd); - PrintRecArray2ByteB(recordArray, recordArraySize, pFsfbLnkInfo->rcvDestAdd); - PrintRecArray2ByteB(recordArray, recordArraySize, pFsfbLnkInfo->sendDestAdd); - PrintRecArrayByte(recordArray, recordArraySize, pFsfbLnkInfo->RecvLinkStatus); - PrintRecArrayByte(recordArray, recordArraySize, pFsfbLnkInfo->SendLinkStatus); - PrintRecArrayByte(recordArray, recordArraySize, pFsfbLnkInfo->NoRecvDataCycleNum); - PrintRecArrayByte(recordArray, recordArraySize, pFsfbLnkInfo->NoAppDataCycleNum); - PrintRecArray4ByteB(recordArray, recordArraySize, pTmStmp->TC); - PrintRecArray4ByteB(recordArray, recordArraySize, pTmStmp->LastLocalRecTC); - PrintRecArray4ByteB(recordArray, recordArraySize, pTmStmp->LastRecvTCr); - PrintRecArray4ByteB(recordArray, recordArraySize, pTmStmp->NowRecvTCr); - PrintRecArray4ByteB(recordArray, recordArraySize, pTmStmp->RecvSseTCe); - PrintRecArray4ByteB(recordArray, recordArraySize, pTmStmp->SseTC); - PrintRecArrayByte(recordArray, recordArraySize, pTmStmp->NumSendSse); - PrintRecArray4ByteB(recordArray, recordArraySize, pTmStmp->SsrTc); - for (i = 0; i < 2; i++) - { - PrintRecArray4ByteB(recordArray, recordArraySize, pTmStmp->NowTn[i]); - PrintRecArray4ByteB(recordArray, recordArraySize, pTmStmp->LastTn[i]); - PrintRecArray4ByteB(recordArray, recordArraySize, pTmStmp->SseTn[i]); - PrintRecArray4ByteB(recordArray, recordArraySize, pTmStmp->SeqEng[i]); - PrintRecArray4ByteB(recordArray, recordArraySize, pTmStmp->NowSINIT_ADD_SID_XOR_Tn[i]); - PrintRecArray4ByteB(recordArray, recordArraySize, pTmStmp->LastSINIT_ADD_SID_XOR_Tn[i]); - } } diff --git a/TSCP/src/protocol/fsfb/common_fsfb/FsfbMessageInfo.c b/TSCP/src/protocol/fsfb/common_fsfb/FsfbMessageInfo.c index 07115f8..bd26383 100644 --- a/TSCP/src/protocol/fsfb/common_fsfb/FsfbMessageInfo.c +++ b/TSCP/src/protocol/fsfb/common_fsfb/FsfbMessageInfo.c @@ -53,7 +53,7 @@ #include "CommonRecord.h" #include "dsuFsfbFunc.h" #include "FsfbConfig.h" -#include "FsfbRecordDelare.h " +#include "FsfbRecordDelare.h" #include "FsfbMessageInfo.h" #include "FsfbLnkNodeMgr.h" /*-------------------------------------------------------------------- @@ -130,11 +130,10 @@ UINT8 AccordInfoCreateFrameData(const UINT8 *pAppData,UINT16 DataLen, PrintFiles(RecordArray,RecordSize,"\n"); #endif #ifdef FSFB_RECORD_SIMPLIFY_BIN /* */ - PrintRecArrayByte(RecordArray, RecordSize, OUT_APP_FRAME); /* һϢ֡ʼʶ */ - PrintRecArray2ByteB(RecordArray, RecordSize, localDevName); /* 豸 */ - PrintRecArray2ByteB(RecordArray, RecordSize, destDevName); /* Է豸 */ - PrintRecArray2ByteB(RecordArray, RecordSize, msgLen); /* Ӧݳ */ - PrintRecArrayByte(RecordArray, RecordSize, pAppData[DEST_APP_COMMAND_POS]); /**/ + PrintRecArrayByte(RecordArray,RecordSize,FSFB_MSG_IN_TAG); /* һϢ֡ʼʶ */ + PrintRecArray2ByteB(RecordArray,RecordSize,localDevName); /* 豸 */ + PrintRecArray2ByteB(RecordArray,RecordSize,destDevName); /* Է豸 */ + PrintRecArray2ByteB(RecordArray,RecordSize,msgLen); /* Ӧݳ */ #endif if(msgLen < 0) @@ -185,9 +184,6 @@ UINT8 AccordInfoCreateFrameData(const UINT8 *pAppData,UINT16 DataLen, } else { - PrintRecArrayByte(RecordArray, RecordSize, OUT_FRAME_TYPE_ERR); /* һϢ֡ʼʶ */ - PrintRecArrayByte(RecordArray, RecordSize, applycat); - retVal = 0; } } @@ -230,11 +226,6 @@ UINT8 ArrordLnkInfoCreateFrame(FSFB_INFO_STRU* pFsfbStruct,UINT8* outMsg,UINT16* /* SSR ֡ */ retVal=CreateSsrMsg(APPLCAT_TDM,CurFillLnk,&outMsg[index]); index+=SSR_SIZE; - - PrintRecArrayByte(pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, OUT_DATA_TYPE); /**/ - PrintRecArray2ByteB(pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, CurFillLnk->DestDevName); - PrintRecArrayByte(pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, APPLCAT_TDM); - PrintRecArrayByte(pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, FSFB_SSR_MSG); } else { @@ -254,12 +245,6 @@ UINT8 ArrordLnkInfoCreateFrame(FSFB_INFO_STRU* pFsfbStruct,UINT8* outMsg,UINT16* index +=SSR_SIZE; startFlag = 1; - - PrintRecArrayByte(pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, OUT_DATA_TYPE); /**/ - PrintRecArray2ByteB(pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, CurFillLnk->DestDevName); - PrintRecArrayByte(pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, APPLCAT_BTM); - PrintRecArrayByte(pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, FSFB_SSR_MSG); - case Fsfb_SendBtm_Btc: if (startFlag == 1) { @@ -279,9 +264,6 @@ UINT8 ArrordLnkInfoCreateFrame(FSFB_INFO_STRU* pFsfbStruct,UINT8* outMsg,UINT16* BuildBtcBody(pFsfbStruct->TmpDataBuff,&msgLen); retVal = CreateBtmMsg(pFsfbStruct->TmpDataBuff,msgLen,BTC_DF_SIZE,FSFB_BTC_MSG,&outMsg[index],CurFillLnk); index +=BTC_SIZE; - - PrintRecArrayByte(pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, FSFB_BTC_MSG); - break; case Fsfb_SendBtm_Abt: msgLen =0; @@ -289,13 +271,6 @@ UINT8 ArrordLnkInfoCreateFrame(FSFB_INFO_STRU* pFsfbStruct,UINT8* outMsg,UINT16* index+=4; retVal = CreateBtmMsg(pFsfbStruct->TmpDataBuff,msgLen,ABT_DF_SIZE,FSFB_ABT_MSG,&outMsg[index],CurFillLnk); index +=ABT_SIZE; - - PrintRecArrayByte(pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, OUT_DATA_TYPE); /**/ - PrintRecArray2ByteB(pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, CurFillLnk->DestDevName); - PrintRecArrayByte(pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, APPLCAT_BTM); - PrintRecArrayByte(pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, FSFB_ABT_MSG); - PrintRecArrayByte(pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, Fsfb_SendBtm_Abt); - break; case Fsfb_SendBtm_BtdAbt: msgLen =0; @@ -304,30 +279,12 @@ UINT8 ArrordLnkInfoCreateFrame(FSFB_INFO_STRU* pFsfbStruct,UINT8* outMsg,UINT16* retVal = CreateBtmMsg(pFsfbStruct->TmpDataBuff,msgLen,ABT_DF_SIZE,FSFB_ABT_MSG,&outMsg[index],CurFillLnk); CurFillLnk->FsfbLinInfo.SendLinkStatus = Fsfb_SendBtm_Sbt; index +=ABT_SIZE; - - PrintRecArrayByte(pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, OUT_DATA_TYPE); /**/ - PrintRecArray2ByteB(pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, CurFillLnk->DestDevName); - PrintRecArrayByte(pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, APPLCAT_BTM); - PrintRecArrayByte(pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, FSFB_ABT_MSG); - PrintRecArrayByte(pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, Fsfb_SendBtm_BtdAbt); - case Fsfb_SendBtm_Ebt: msgLen =0; LnkInfoBuildFrame(CurFillLnk->DestDevName,EBT_SIZE+2,&outMsg[index]); index+=4; retVal = CreateBtmMsg(pFsfbStruct->TmpDataBuff,msgLen,EBT_DF_SIZE,FSFB_EBT_MSG,&outMsg[index],CurFillLnk); - index += EBT_SIZE; - - CurFillLnk->FsfbLinInfo.RecvLinkStatus = Fsfb_Halt; /*-< ý״̬Ϊж*/ - CurFillLnk->FsfbLinInfo.SendLinkStatus = Fsfb_Halt; /*-< ÷״̬Ϊж*/ - CurFillLnk->FsfbLinInfo.NoRecvDataCycleNum = 0u; /*-< */ - CurFillLnk->FsfbLinInfo.NoAppDataCycleNum = 0u; /*-< ޷*/ - - PrintRecArrayByte(pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, OUT_DATA_TYPE); /**/ - PrintRecArray2ByteB(pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, CurFillLnk->DestDevName); - PrintRecArrayByte(pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, APPLCAT_BTM); - PrintRecArrayByte(pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, FSFB_EBT_MSG); - + index +=EBT_SIZE; break; case Fsfb_SendSSE: /* ֡ͷ */ @@ -335,12 +292,6 @@ UINT8 ArrordLnkInfoCreateFrame(FSFB_INFO_STRU* pFsfbStruct,UINT8* outMsg,UINT16* index+=4; retVal = CreateSseMsg(APPLCAT_BTM,CurFillLnk,&outMsg[index]); index +=SSE_SIZE; - - PrintRecArrayByte(pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, OUT_DATA_TYPE); /**/ - PrintRecArray2ByteB(pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, CurFillLnk->DestDevName); - PrintRecArrayByte(pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, APPLCAT_BTM); - PrintRecArrayByte(pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, FSFB_SSE_MSG); - break; default: retVal =1; @@ -486,7 +437,7 @@ UINT8 FsfbAnalysisSseMsg(UINT16 devName,UINT8 applyCat,UINT8* pAppData,FSFB_INFO PrintFiles(RecordArray,RecordArraySize,"W:NOT Node Msg.\n"); #endif #ifdef FSFB_RECORD_SIMPLIFY_BIN - PrintRecArrayByte(RecordArray, RecordArraySize, IN_ADDR_ERR); /*ַ*/ + PrintRecArray2ByteB(RecordArray,RecordArraySize,FSFB_WARN|FSFB_RECEIVE|FSFB_MSG_NOT_NODE_ERR|FSFB_ERROR_NULL); #endif } else /* ͨ */ @@ -502,7 +453,7 @@ UINT8 FsfbAnalysisSseMsg(UINT16 devName,UINT8 applyCat,UINT8* pAppData,FSFB_INFO PrintFiles(RecordArray,RecordArraySize,"W:Node Not Exist.\n"); #endif #ifdef FSFB_RECORD_SIMPLIFY_BIN - PrintRecArrayByte(RecordArray, RecordArraySize, IN_NO_LNK); /*·*/ + PrintRecArray2ByteB(RecordArray,RecordArraySize,FSFB_WARN|FSFB_RECEIVE|FSFB_MSG_NOT_NODE_ERR|FSFB_ERROR_NULL); #endif } } @@ -513,9 +464,7 @@ UINT8 FsfbAnalysisSseMsg(UINT16 devName,UINT8 applyCat,UINT8* pAppData,FSFB_INFO PrintFiles(RecordArray,RecordArraySize,"W:Msg Len Err.\n"); #endif #ifdef FSFB_RECORD_SIMPLIFY_BIN - PrintRecArrayByte(RecordArray, RecordArraySize, IN_CRC_ERR); /*CRC*/ - PrintRecArray2ByteB(RecordArray, RecordArraySize, calcCrc16); - PrintRecArray2ByteB(RecordArray, RecordArraySize, crc16); + PrintRecArray2ByteB(RecordArray,RecordArraySize,FSFB_WARN|FSFB_RECEIVE|FSFB_MSG_LEN_ERR|FSFB_ERROR_NULL); #endif } retVal = 1; @@ -567,7 +516,7 @@ UINT8 FsfbAnalysisSsrMsg(UINT16 devName,UINT8 applyCat,UINT8* pAppData,FSFB_INFO PrintFiles(RecordArray,RecordArraySize,"W:NOT Node Msg.\n"); #endif #ifdef FSFB_RECORD_SIMPLIFY_BIN - PrintRecArrayByte(RecordArray, RecordArraySize, IN_ADDR_ERR); /*ַ*/ + PrintRecArray2ByteB(RecordArray,RecordArraySize,FSFB_WARN|FSFB_RECEIVE|FSFB_MSG_NOT_NODE_ERR|FSFB_ERROR_NULL); #endif } else /* ͨ */ @@ -580,7 +529,9 @@ UINT8 FsfbAnalysisSsrMsg(UINT16 devName,UINT8 applyCat,UINT8* pAppData,FSFB_INFO #ifdef FSFB_RECORD_ERR_ASCII /* ַʽ */ PrintFiles(RecordArray,RecordArraySize,"W:SSR Msg Err.\n"); #endif - +#ifdef FSFB_RECORD_SIMPLIFY_BIN + PrintRecArray2ByteB(RecordArray,RecordArraySize,FSFB_WARN|FSFB_RECEIVE|FSFB_SSR_NOT_ILLEGAL|FSFB_ERROR_NULL); +#endif } else { @@ -595,7 +546,7 @@ UINT8 FsfbAnalysisSsrMsg(UINT16 devName,UINT8 applyCat,UINT8* pAppData,FSFB_INFO PrintFiles(RecordArray,RecordArraySize,"W:NOT Node Msg.\n"); #endif #ifdef FSFB_RECORD_SIMPLIFY_BIN - PrintRecArrayByte(RecordArray, RecordArraySize, IN_NO_LNK); /*·*/ + PrintRecArray2ByteB(RecordArray,RecordArraySize,FSFB_WARN|FSFB_RECEIVE|FSFB_MSG_NOT_NODE_ERR|FSFB_ERROR_NULL); #endif } } @@ -606,9 +557,7 @@ UINT8 FsfbAnalysisSsrMsg(UINT16 devName,UINT8 applyCat,UINT8* pAppData,FSFB_INFO PrintFiles(RecordArray,RecordArraySize,"W:Msg Len Err.\n"); #endif #ifdef FSFB_RECORD_SIMPLIFY_BIN - PrintRecArrayByte(RecordArray, RecordArraySize, IN_CRC_ERR); /*CRC*/ - PrintRecArray2ByteB(RecordArray, RecordArraySize, calcCrc16); - PrintRecArray2ByteB(RecordArray, RecordArraySize, crc16); + PrintRecArray2ByteB(RecordArray,RecordArraySize,FSFB_WARN|FSFB_RECEIVE|FSFB_MSG_LEN_ERR|FSFB_ERROR_NULL); #endif } @@ -672,7 +621,7 @@ UINT8 FsfbAnalysisAbtMsg(UINT16 devName,UINT8 applyCat,UINT8* pAppData,FSFB_INFO PrintFiles(RecordArray,RecordArraySize,"W:NOT Node Msg.\n"); #endif #ifdef FSFB_RECORD_SIMPLIFY_BIN - PrintRecArrayByte(RecordArray, RecordArraySize, IN_ADDR_ERR); /*ַ*/ + PrintRecArray2ByteB(RecordArray,RecordArraySize,FSFB_WARN|FSFB_RECEIVE|FSFB_MSG_NOT_NODE_ERR|FSFB_ERROR_NULL); #endif } @@ -685,6 +634,9 @@ UINT8 FsfbAnalysisAbtMsg(UINT16 devName,UINT8 applyCat,UINT8* pAppData,FSFB_INFO /* ³˵ǶӦSSR ô¼ */ #ifdef FSFB_RECORD_ERR_ASCII /* ַʽ */ PrintFiles(RecordArray,RecordArraySize,"W:SSR Msg Err.\n"); +#endif +#ifdef FSFB_RECORD_SIMPLIFY_BIN + PrintRecArray2ByteB(RecordArray,RecordArraySize,FSFB_WARN|FSFB_RECEIVE|FSFB_SSR_NOT_ILLEGAL|FSFB_ERROR_NULL); #endif } @@ -701,7 +653,7 @@ UINT8 FsfbAnalysisAbtMsg(UINT16 devName,UINT8 applyCat,UINT8* pAppData,FSFB_INFO PrintFiles(RecordArray,RecordArraySize,"W:NOT Node Msg.\n"); #endif #ifdef FSFB_RECORD_SIMPLIFY_BIN - PrintRecArrayByte(RecordArray, RecordArraySize, IN_NO_LNK); /*·*/ + PrintRecArray2ByteB(RecordArray,RecordArraySize,FSFB_WARN|FSFB_RECEIVE|FSFB_MSG_NOT_NODE_ERR|FSFB_ERROR_NULL); #endif } @@ -713,9 +665,7 @@ UINT8 FsfbAnalysisAbtMsg(UINT16 devName,UINT8 applyCat,UINT8* pAppData,FSFB_INFO PrintFiles(RecordArray,RecordArraySize,"W:Msg Len Err.\n"); #endif #ifdef FSFB_RECORD_SIMPLIFY_BIN - PrintRecArrayByte(RecordArray, RecordArraySize, IN_CRC_ERR); /*CRC*/ - PrintRecArray2ByteB(RecordArray, RecordArraySize, calcCrc16); - PrintRecArray2ByteB(RecordArray, RecordArraySize, crc16); + PrintRecArray2ByteB(RecordArray,RecordArraySize,FSFB_WARN|FSFB_RECEIVE|FSFB_MSG_LEN_ERR|FSFB_ERROR_NULL); #endif } @@ -775,7 +725,7 @@ UINT8 FsfbAnalysisEbtMsg(UINT16 devName,UINT8 applyCat,UINT8* pAppData,FSFB_INFO PrintFiles(RecordArray,RecordArraySize,"W:NOT Node Msg.\n"); #endif #ifdef FSFB_RECORD_SIMPLIFY_BIN - PrintRecArrayByte(RecordArray, RecordArraySize, IN_ADDR_ERR); /*ַ*/ + PrintRecArray2ByteB(RecordArray,RecordArraySize,FSFB_WARN|FSFB_RECEIVE|FSFB_MSG_NOT_NODE_ERR|FSFB_ERROR_NULL); #endif } else /* ͨ */ @@ -788,7 +738,9 @@ UINT8 FsfbAnalysisEbtMsg(UINT16 devName,UINT8 applyCat,UINT8* pAppData,FSFB_INFO #ifdef FSFB_RECORD_ERR_ASCII /* ַʽ */ PrintFiles(RecordArray,RecordArraySize,"W:SSR Msg Err.\n"); #endif - +#ifdef FSFB_RECORD_SIMPLIFY_BIN + PrintRecArray2ByteB(RecordArray,RecordArraySize,FSFB_WARN|FSFB_RECEIVE|FSFB_SSR_NOT_ILLEGAL|FSFB_ERROR_NULL); +#endif } else { @@ -803,7 +755,7 @@ UINT8 FsfbAnalysisEbtMsg(UINT16 devName,UINT8 applyCat,UINT8* pAppData,FSFB_INFO PrintFiles(RecordArray,RecordArraySize,"W:NOT Node Msg.\n"); #endif #ifdef FSFB_RECORD_SIMPLIFY_BIN - PrintRecArrayByte(RecordArray, RecordArraySize, IN_NO_LNK); /*·*/ + PrintRecArray2ByteB(RecordArray,RecordArraySize,FSFB_WARN|FSFB_RECEIVE|FSFB_MSG_NOT_NODE_ERR|FSFB_ERROR_NULL); #endif } } @@ -814,9 +766,7 @@ UINT8 FsfbAnalysisEbtMsg(UINT16 devName,UINT8 applyCat,UINT8* pAppData,FSFB_INFO PrintFiles(RecordArray,RecordArraySize,"W:Msg Len Err.\n"); #endif #ifdef FSFB_RECORD_SIMPLIFY_BIN - PrintRecArrayByte(RecordArray, RecordArraySize, IN_CRC_ERR); /*CRC*/ - PrintRecArray2ByteB(RecordArray, RecordArraySize, calcCrc16); - PrintRecArray2ByteB(RecordArray, RecordArraySize, crc16); + PrintRecArray2ByteB(RecordArray,RecordArraySize,FSFB_WARN|FSFB_RECEIVE|FSFB_MSG_LEN_ERR|FSFB_ERROR_NULL); #endif } @@ -862,10 +812,6 @@ UINT8 FsfbAnalysisBtdMsg(UINT16 devName,UINT8 applyCat,UINT8* pAppData,FSFB_INFO tmpSds = ShortFromCharLE(&pAppData[FSFB_DATA_SIZE_POS]); if ((tmpSds != BTD_SDS)||(applyCat != APPLCAT_BTM)) { - PrintRecArrayByte(RecordArray, RecordArraySize, IN_BTD_LEN_ERR); /*BTDijȴ*/ - PrintRecArray2ByteB(RecordArray, RecordArraySize, tmpSds); - PrintRecArrayByte(RecordArray, RecordArraySize, applyCat); - retVal = 0; return retVal; } @@ -884,7 +830,7 @@ UINT8 FsfbAnalysisBtdMsg(UINT16 devName,UINT8 applyCat,UINT8* pAppData,FSFB_INFO PrintFiles(RecordArray,RecordArraySize,"W:NOT Node Msg.\n"); #endif #ifdef FSFB_RECORD_SIMPLIFY_BIN - PrintRecArrayByte(RecordArray, RecordArraySize, IN_ADDR_ERR); /*ַ*/ + PrintRecArray2ByteB(RecordArray,RecordArraySize,FSFB_WARN|FSFB_RECEIVE|FSFB_MSG_NOT_NODE_ERR|FSFB_ERROR_NULL); #endif } else /* ͨ */ @@ -908,7 +854,9 @@ UINT8 FsfbAnalysisBtdMsg(UINT16 devName,UINT8 applyCat,UINT8* pAppData,FSFB_INFO #ifdef FSFB_RECORD_ERR_ASCII /* ַʽ */ PrintFiles(RecordArray,RecordArraySize,"W:BTD InVaild.\n"); #endif - +#ifdef FSFB_RECORD_SIMPLIFY_BIN + PrintRecArray2ByteB(RecordArray,RecordArraySize,FSFB_WARN|FSFB_RECEIVE|FSFB_MSG_NO_INVALID|FSFB_ERROR_NULL); +#endif /* ֤ʧ */ retVal =0; } @@ -917,9 +865,6 @@ UINT8 FsfbAnalysisBtdMsg(UINT16 devName,UINT8 applyCat,UINT8* pAppData,FSFB_INFO else { retVal = 0; - - PrintRecArrayByte(RecordArray, RecordArraySize, IN_NO_LNK); /*·*/ - /* ¼ͨŽڵ㲻Ϸ */ } } @@ -931,9 +876,7 @@ UINT8 FsfbAnalysisBtdMsg(UINT16 devName,UINT8 applyCat,UINT8* pAppData,FSFB_INFO PrintFiles(RecordArray,RecordArraySize,"W:Tsd CRC Err.\n"); #endif #ifdef FSFB_RECORD_SIMPLIFY_BIN - PrintRecArrayByte(RecordArray, RecordArraySize, IN_CRC_ERR); /*CRC*/ - PrintRecArray2ByteB(RecordArray, RecordArraySize, calcCrc16); - PrintRecArray2ByteB(RecordArray, RecordArraySize, crc16); + PrintRecArray2ByteB(RecordArray,RecordArraySize,FSFB_WARN|FSFB_RECEIVE|FSFB_MSG_CRC_ERR|FSFB_ERROR_NULL); #endif } return retVal; @@ -1395,9 +1338,6 @@ static UINT8 FsfbCheckBtdMsg(const UINT8 *pBtdMsg,Fsfb_Lnk_Info_Node_Stru *pLnkN UINT8 *RecordArray = pFsfbStruct->RecordArray; UINT16 RecordArraySize = pFsfbStruct->RecordArraySize; - PrintRecArrayByte(RecordArray, RecordArraySize, IN_BTD_STATUS); /*BTD״̬*/ - PrintRecArrayByte(RecordArray, RecordArraySize, pLnkNode->FsfbLinInfo.RecvLinkStatus); - /* ͨŽڵ״̬Ϊ ״̬ */ if( Fsfb_RecvData == pLnkNode->FsfbLinInfo.RecvLinkStatus) { @@ -1429,73 +1369,45 @@ static UINT8 FsfbCheckBtdMsg(const UINT8 *pBtdMsg,Fsfb_Lnk_Info_Node_Stru *pLnkN /* ˵Ѿյһ֡ݣҪʱ */ Tout = 0; } - if (Tout >= 0) /* Ϸʱյ */ + if(Tout >= 0) /* Ϸʱյ */ { /* RSDȡSID XOR TN CRCM[chan] ^ CRC[chan] ^ SYS_CHK_WD[chan] */ - tmpret = ComGetSidXorTn(pBtdMsg, SidXorTn); + tmpret = ComGetSidXorTn(pBtdMsg,SidXorTn); /* CRCMЧ */ - retVal = ComCheckCRCM(SidXorTn, pTmStmp->NowSINIT_ADD_SID_XOR_Tn, - DelayTCr, pNodeParam->TSD_POST_RXDADA_K); - if ((1 == retVal) && (tmpret == 1)) /* ɹ ӦϢ */ + retVal = ComCheckCRCM(SidXorTn,pTmStmp->NowSINIT_ADD_SID_XOR_Tn , + DelayTCr,pNodeParam->TSD_POST_RXDADA_K); + if((1 == retVal)&&(tmpret == 1)) /* ɹ ӦϢ */ { /* ʱṹ : pTmStmpStruǿգֵ϶Ϊ1 */ - retVal = ComUpdtTmStmpStru(SidXorTn, TCr, DelayTCr, pNodeParam->PREC_SINIT_K, pTmStmp); + retVal = ComUpdtTmStmpStru(SidXorTn,TCr,DelayTCr,pNodeParam->PREC_SINIT_K,pTmStmp); retVal = 1; /* */ } else { #ifdef FSFB_RECORD_ERR_ASCII /* ַʽ */ - PrintFiles(RecordArray, RecordArraySize, "W:CRCM Error.\n"); + PrintFiles(RecordArray,RecordArraySize,"W:CRCM Error.\n"); #endif - - PrintRecArrayByte(RecordArray, RecordArraySize, IN_BTD_SVC_ERR); /*BTDSVC*/ - PrintRecArray2ByteB(RecordArray, RecordArraySize, pLnkNode->DestDevName); /*DestDevName*/ - PrintRecArray4ByteB(RecordArray, RecordArraySize, SidXorTn[0]); /*sidXorTn[0]*/ - PrintRecArray4ByteB(RecordArray, RecordArraySize, SidXorTn[1]); /*sidXorTn[1]*/ - PrintRecArray4ByteB(RecordArray, RecordArraySize, pTmStmp->NowSINIT_ADD_SID_XOR_Tn[0]); /*NowSINIT_ADD_SID_XOR_Tn[0]*/ - PrintRecArray4ByteB(RecordArray, RecordArraySize, pTmStmp->NowSINIT_ADD_SID_XOR_Tn[1]); /*NowSINIT_ADD_SID_XOR_Tn[1]*/ - PrintRecArray4ByteB(RecordArray, RecordArraySize, TCr); /*tc*/ - PrintRecArray4ByteB(RecordArray, RecordArraySize, pTmStmp->NowRecvTCr); /*NowRecvTCr*/ - PrintRecArrayByte(RecordArray, RecordArraySize, pNodeParam->MaxLost); /*BTDSVC*/ - PrintRecArray4ByteB(RecordArray, RecordArraySize, DelayTCr); /*delayTc*/ - - /* ʧ 󷵻 */ + /* ʧ 󷵻 */ retVal = 0; - } + } } else /* ʱ */ { #ifdef FSFB_RECORD_ERR_ASCII /* ַʽ */ PrintFiles(RecordArray,RecordArraySize,"W:Time Out.\n"); #endif - - PrintRecArrayByte(RecordArray, RecordArraySize, IN_BTD_DELAY_ERR); /*BTDӳٳ*/ - PrintRecArray2ByteB(RecordArray, RecordArraySize, pLnkNode->DestDevName); /*DestDevName*/ - PrintRecArray4ByteB(RecordArray, RecordArraySize, *pFsfbStruct->CycleNum); /*tc*/ - PrintRecArray4ByteB(RecordArray, RecordArraySize, pTmStmp->LastLocalRecTC); /*NowRecvTCr*/ - PrintRecArrayByte(RecordArray, RecordArraySize, pNodeParam->Tout); - PrintRecArray4ByteB(RecordArray, RecordArraySize, Tout); - retVal = 0; } } else { #ifdef FSFB_RECORD_ERR_ASCII /* ַʽ */ - PrintFiles(RecordArray, RecordArraySize, "DelayTCr > MaxLost\n"); + PrintFiles(RecordArray,RecordArraySize,"DelayTCr > MaxLost\n"); #endif - - PrintRecArrayByte(RecordArray, RecordArraySize, IN_BTD_LOST_ERR); /*BTDʧ*/ - PrintRecArray2ByteB(RecordArray, RecordArraySize, pLnkNode->DestDevName); /*DestDevName*/ - PrintRecArray4ByteB(RecordArray, RecordArraySize, TCr); /*tc*/ - PrintRecArray4ByteB(RecordArray, RecordArraySize, pTmStmp->NowRecvTCr); /*NowRecvTCr*/ - PrintRecArrayByte(RecordArray, RecordArraySize, pNodeParam->MaxLost); - PrintRecArray4ByteB(RecordArray, RecordArraySize, DelayTCr); /*delayTc*/ - - /* Ķ طSSEͬ */ + /* Ķ طSSEͬ */ pLnkNode->FsfbLinInfo.RecvLinkStatus = Fsfb_SendBtm_Sbt; retVal = 0; - } + } } else if( Fsfb_Halt == pLnkNode->FsfbLinInfo.RecvLinkStatus) { diff --git a/TSCP/src/protocol/fsfb/common_fsfb/FsfbProtcl.c b/TSCP/src/protocol/fsfb/common_fsfb/FsfbProtcl.c index 484dd2f..a8812cd 100644 --- a/TSCP/src/protocol/fsfb/common_fsfb/FsfbProtcl.c +++ b/TSCP/src/protocol/fsfb/common_fsfb/FsfbProtcl.c @@ -58,7 +58,7 @@ #include "CommonRecord.h" #include "dsuFsfbFunc.h" #include "FsfbConfig.h" -#include "FsfbRecordDelare.h " +#include "FsfbRecordDelare.h" #include "FsfbProtclCommon.h" #include "FsfbLnkNodeMgr.h" #include "FsfbMessageInfo.h" @@ -180,10 +180,6 @@ UINT8 FsfbProtclOutPut(FSFB_INFO_STRU* pFsfbStruct) Fsfb_Lnk_Info_Node_Stru* pNode = NULL; /* ͨŽڵָ */ Fsfb_Lnk_Info_Node_Stru* CurFillLnk;/*嵱ǰָ;*/ - - PrintRecArrayByte(pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, OUT_APP); /**/ - PrintRecArray4ByteB(pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, QueueStatus(&pFsfbStruct->OutputDataQueue)); - CurFillLnk=pFsfbStruct->LnkHead; /* ޷ۼ */ @@ -220,19 +216,12 @@ UINT8 FsfbProtclOutPut(FSFB_INFO_STRU* pFsfbStruct) if (tmpRetVal == 0) { - PrintRecArrayByte(pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, OUT_READ_ERR); /*Ӧݴ*/ - PrintRecArray2ByteB(pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, fsfbVarLen); - LongToChar(0,pFsfbStruct->AppArray); break; } } else { - PrintRecArrayByte(pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, OUT_FRAME_LEN_ERR); /*Ӧ֡ݳȴ*/ - PrintRecArray2ByteB(pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, msgLen); - PrintRecArray2ByteB(pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, maxMagLen); - QueueElementDiscard( msgLen, &pFsfbStruct->OutputDataQueue);/*֡*/ } } @@ -265,7 +254,7 @@ UINT8 FsfbProtclOutPut(FSFB_INFO_STRU* pFsfbStruct) *******************************************************/ fsfbVarLen = FsfbWriteToVarArray(&pFsfbStruct->VarArray[2],pFsfbStruct); - redunVarLen = RpHandleOutput(&pFsfbStruct->RpInfoStru, pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize); + redunVarLen = RpHandleOutput(&pFsfbStruct->RpInfoStru); /*ദṹемFSFBЭм*/ ComMemCopy(pFsfbStruct->RpInfoStru.VarArray,&pFsfbStruct->VarArray[2+fsfbVarLen],redunVarLen); @@ -281,11 +270,6 @@ UINT8 FsfbProtclOutPut(FSFB_INFO_STRU* pFsfbStruct) LongToChar(0,pFsfbStruct->AppArray); ShortToChar(0,pFsfbStruct->VarArray); /*Խ,Ӧò崻*/ - - PrintRecArrayByte(pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, OUT_ALL_LEN_ERR); /**/ - PrintRecArray2ByteB(pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, fsfbVarLen); - PrintRecArray2ByteB(pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, redunVarLen); - retVal = 0; } } @@ -311,7 +295,6 @@ UINT8 FsfbProtclReceiveData(FSFB_INFO_STRU* pFsfbStruct) UINT16 MaxLen = 0; /* һ֡С */ UINT8 *RecordArray = pFsfbStruct->RecordArray; /* ¼ */ UINT16 RecordSize = pFsfbStruct->RecordArraySize; /* ¼С */ - UINT32 inputQueLen = 0u; /*г*/ /* ¼ */ ShortToChar(0,pFsfbStruct->RecordArray); @@ -320,14 +303,11 @@ UINT8 FsfbProtclReceiveData(FSFB_INFO_STRU* pFsfbStruct) #endif #ifdef FSFB_RECORD_SIMPLIFY_BIN /* */ /* RSR뵥Ԫʶ */ - PrintRecArray2ByteB(RecordArray, RecordSize, FSFB_CYCLE_TAG); /* ڿʼ0xEE */ /* M_2010_05_10 */ + PrintRecArrayByte(RecordArray,RecordSize,FSFB_CYCLE_TAG); /* ڿʼ0xEE */ /* M_2010_05_10 */ PrintRecArray4ByteB(RecordArray,RecordSize,*pFsfbStruct->CycleNum); /* ں */ /*M_2010_05_10 */ + PrintRecArrayByte(RecordArray,RecordSize,FSFB_RCV_TAG); PrintRecArrayByte(RecordArray,RecordSize,pFsfbStruct->LocalType); /* */ PrintRecArrayByte(RecordArray,RecordSize,pFsfbStruct->LocalID); /* ID */ - inputQueLen = QueueStatus(&pFsfbStruct->OutnetQueueR); - PrintRecArray4ByteB(RecordArray, RecordSize, inputQueLen); /**/ - inputQueLen = QueueStatus(&pFsfbStruct->OutnetQueueB); - PrintRecArray4ByteB(RecordArray, RecordSize, inputQueLen); /**/ #endif QueueClear(&pFsfbStruct->DataToApp); /* */ @@ -338,11 +318,9 @@ UINT8 FsfbProtclReceiveData(FSFB_INFO_STRU* pFsfbStruct) ClearNetsRecvPkgNum(pFsfbStruct); /* Ժյݽд */ - PrintRecArrayByte(RecordArray, RecordSize, IN_RED); /**/ retVal = ReadQueueData(&pFsfbStruct->OutnetQueueR, MaxLen, pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, 0, pFsfbStruct); /* յݽд */ - PrintRecArrayByte(RecordArray, RecordSize, IN_BLUE); /**/ retVal = ReadQueueData(&pFsfbStruct->OutnetQueueB, MaxLen, pFsfbStruct->RecordArray, pFsfbStruct->RecordArraySize, 1, pFsfbStruct); @@ -959,8 +937,7 @@ static UINT8 ReadQueueData(QueueStruct *pQueueData,UINT16 MaxLen,UINT8 *RecordAr PrintFiles(RecordArray,RecordSize,"W:Write Que Err\n"); /* ʧ */ #endif #ifdef FSFB_RECORD_SIMPLIFY_BIN /* */ - PrintRecArrayByte(RecordArray, RecordSize, IN_READ_FRAME_ERR); /*ȡ֡ȴ*/ - PrintRecArray2ByteB(RecordArray, RecordSize, MsgLen); /*֡ȴ*/ + PrintRecArray2ByteB(RecordArray,RecordSize,FSFB_WARN|FSFB_RECEIVE|FSFB_ERROR_NULL|FSFB_QUEUE_READ); /* ʧ */ #endif break; } @@ -983,14 +960,6 @@ static UINT8 ReadQueueData(QueueStruct *pQueueData,UINT16 MaxLen,UINT8 *RecordAr /* 1ֽ Ϣ */ messageType = pFsfbStruct->TmpDataBuff[index+FSFB_MSG_TYPE_POS]; - - PrintRecArrayByte(RecordArray, RecordSize, IN_READ_FRAME); /*ȡ֡*/ - PrintRecArrayByte(RecordArray, RecordSize, applyCat); /*֡*/ - PrintRecArrayByte(RecordArray, RecordSize, messageType); /*֡*/ - PrintRecArray2ByteB(RecordArray, RecordSize, desDevName); /*豸ID*/ - PrintRecArray2ByteB(RecordArray, RecordSize, ShortFromCharLE(&pFsfbStruct->TmpDataBuff[index + FSFB_SRC_ADD_POS])); /*֡Դ豸ID*/ - PrintRecArray2ByteB(RecordArray, RecordSize, ShortFromCharLE(&pFsfbStruct->TmpDataBuff[index + FSFB_DEST_ADD_POS])); /*֡Ŀ豸ID*/ - PrintRecArray4ByteB(RecordArray, RecordSize, LongFromCharLE(&pFsfbStruct->TmpDataBuff[index + FSFB_TC_POS])); /*֡*/ switch(messageType) { @@ -1089,9 +1058,6 @@ static UINT8 ReadQueueData(QueueStruct *pQueueData,UINT16 MaxLen,UINT8 *RecordAr else {/*֡ݶ*/ QueueElementDiscard(MsgLen,pQueueData); - - PrintRecArrayByte(RecordArray, RecordSize, IN_FRAME_LEN_ERR); /*֡ȴ*/ - PrintRecArray2ByteB(RecordArray, RecordSize, MsgLen); /*֡*/ } } return retVal; diff --git a/TSCP/src/protocol/fsfb/common_fsfb/FsfbRecordDelare.h b/TSCP/src/protocol/fsfb/common_fsfb/FsfbRecordDelare.h index b22288c..d79a357 100644 --- a/TSCP/src/protocol/fsfb/common_fsfb/FsfbRecordDelare.h +++ b/TSCP/src/protocol/fsfb/common_fsfb/FsfbRecordDelare.h @@ -23,43 +23,7 @@ ********************************************************************************/ /* ־λ */ -#define FSFB_CYCLE_TAG (0xF4FB) /* FSFBڿʼʶ */ -#define IN_RED (0x01) /**/ -#define IN_BLUE (0x02) /**/ -#define IN_FRAME_LEN_ERR (0x03) /*֡ȴ*/ -#define IN_READ_FRAME_ERR (0x04) /*ȡ֡ȴ*/ -#define IN_READ_FRAME (0x05) /*ȡ֡*/ -#define IN_CRC_ERR (0x06) /*CRC*/ -#define IN_NO_LNK (0x07) /*·*/ -#define IN_CAT_ERR (0x08) /*֡*/ -#define IN_ADDR_ERR (0x09) /*֡*/ -#define IN_SSR_STATUS_ERR (0x0A) /*SSR״̬*/ -#define IN_SSR_SSE_TC_ERR (0x0B) /*SSRSSEŴ*/ -#define IN_ABT_STATUS (0x0C) /*ABT״̬*/ -#define IN_ABT_SVC_ERR (0x0D) /*ABTSVC*/ -#define IN_ABT_OLD_ERR (0x0E) /*ABTŴ*/ -#define IN_ABT_SSE_BTC (0x0F) /*ABTSSEBTC*/ -#define IN_BTD_LEN_ERR (0x10) /*BTDijȴ*/ -#define IN_BTD_STATUS (0x11) /*BTD״̬*/ -#define IN_BTD_LOST_ERR (0x12) /*BTDʧ*/ -#define IN_BTD_DELAY_ERR (0x13) /*BTDӳٳ*/ -#define IN_BTD_SVC_ERR (0x14) /*BTDSVC*/ -#define OUT_APP (0x15) /**/ -#define OUT_FRAME_LEN_ERR (0x16) /*Ӧ֡ݳȴ*/ -#define OUT_READ_ERR (0x17) /*Ӧݴ*/ -#define OUT_APP_FRAME (0x18) /*Ӧ֡*/ -#define OUT_FRAME_TYPE_ERR (0x19) /*֡ʹ*/ -#define OUT_ADDR_ERR (0x1A) /*ַ*/ -#define OUT_FIND_LNK_ERR (0x1B) /*ѯ·*/ -#define OUT_INSERT_NODE_ERR (0x1C) /*ڵ*/ -#define OUT_INIT_NODE_ERR (0x1D) /*ʼڵ*/ -#define OUT_DATA_TYPE (0x1E) /**/ -#define OUT_LNK (0x1F) /*·*/ -#define OUT_RP_LNK (0x20) /*RP·*/ -#define OUT_ALL_LEN_ERR (0x21) /*ܳȴ*/ - - - +#define FSFB_CYCLE_TAG 0xDD /* FSFBڿʼʶ */ #define FSFB_RCV_TAG 0xF4 /* FSFB뵥Ԫʶ */ #define FSFB_OUT_TAG 0xF5 /* FSFBԪʶ */ #define FSFB_MSG_IN_TAG 0x04 /* FSFBһ֡Ϣʼʶ(B 0000 0100) */ diff --git a/TSCP/src/protocol/fsfb/common_fsfb/RpHandleInterface.c b/TSCP/src/protocol/fsfb/common_fsfb/RpHandleInterface.c index 4119842..27077b2 100644 --- a/TSCP/src/protocol/fsfb/common_fsfb/RpHandleInterface.c +++ b/TSCP/src/protocol/fsfb/common_fsfb/RpHandleInterface.c @@ -16,7 +16,6 @@ #include "CommonMemory.h" #include "RpHandlePlatform.h" #include "dsuFsfbFunc.h" -#include "FsfbRecordDelare.h" UINT8 RpHandle_init_SnStack(RPHANDLE_INFO_STRU *pRedunStruct); @@ -105,7 +104,7 @@ UINT8 RpHandleInit(RPHANDLE_INFO_STRU *pRedunStruct)/* %RELAX */ * RPHANDLE_INFO_STRU *pRedunStruct ͳһṹ *ֵ:ݳ *****************************************************************************************/ -UINT16 RpHandleOutput(RPHANDLE_INFO_STRU *pRedunStruct,UINT8* recordArray,UINT16 recordArraySize)/* %RELAX */ +UINT16 RpHandleOutput(RPHANDLE_INFO_STRU *pRedunStruct)/* %RELAX */ { UINT8 ret = 0; UINT16 index = 0; @@ -136,13 +135,6 @@ UINT16 RpHandleOutput(RPHANDLE_INFO_STRU *pRedunStruct,UINT8* recordArray,UINT16 /* 1ֽ 󶪰 */ pRedunStruct->VarArray[index] = CurNumLink->SnLink_Info.maxLostSn; index++; - - - PrintRecArrayByte(recordArray, recordArraySize, OUT_RP_LNK); /*RP·*/ - PrintRecArray2ByteB(recordArray, recordArraySize, CurNumLink->SnLink_Info.DestDevName); - PrintRecArray4ByteB(recordArray, recordArraySize, CurNumLink->SnLink_Info.LastSn); - PrintRecArrayByte(recordArray, recordArraySize, CurNumLink->SnLink_Info.maxLostSn); - CurNumLink = CurNumLink->NextNode; } diff --git a/TSCP/src/protocol/fsfb/common_fsfb/RpHandlePlatform.h b/TSCP/src/protocol/fsfb/common_fsfb/RpHandlePlatform.h index f74e5dc..4e2a260 100644 --- a/TSCP/src/protocol/fsfb/common_fsfb/RpHandlePlatform.h +++ b/TSCP/src/protocol/fsfb/common_fsfb/RpHandlePlatform.h @@ -111,7 +111,7 @@ UINT8 RpHandleReceive(QueueStruct* OutnetQueueA,QueueStruct* OutnetQueueB, RPHAN *ֵ: * ദЭм; *****************************************************************************************/ -UINT16 RpHandleOutput(RPHANDLE_INFO_STRU* pRpStruct, UINT8* recordArray, UINT16 recordArraySize); +UINT16 RpHandleOutput(RPHANDLE_INFO_STRU *pRpStruct); /***************************************************************************************** *: * ˢм diff --git a/TSCP/src/protocol/sfp_record_cbtc1/common_sfp_nr_config/sfpConfig.h b/TSCP/src/protocol/sfp_record_cbtc1/common_sfp_nr_config/sfpConfig.h index 7998cbb..0756986 100644 --- a/TSCP/src/protocol/sfp_record_cbtc1/common_sfp_nr_config/sfpConfig.h +++ b/TSCP/src/protocol/sfp_record_cbtc1/common_sfp_nr_config/sfpConfig.h @@ -1,27 +1,27 @@ /******************************************************************************* -* �ļ��� �� sfpConfig.h -* ��Ȩ˵�� �� -* �汾�� �� 1.0 -* ����ʱ�� �� 2010.05.04 -* ���� �� ���� -* �������� �� ���ļ�ΪSFPЭ�������ļ� -* ʹ��ע�� �� - �� -* �޸ļ�¼ �� +* ļ sfpConfig.h +* Ȩ˵ +* 汾 1.0 +* ʱ 2010.05.04 +* +* ļΪSFPЭļ +* ʹע + +* ޸ļ¼ *******************************************************************************/ #ifndef _SFPCONFIG_H #define _SFPCONFIG_H -/**************************Э���¼�궨�忪��**********************************/ -/*#define PRTCL_RECORD_DATA_ASC*/ /*���ݲ����ַ��ͼ�¼����*/ -/*#define PRTCL_RECORD_ERR_ASC*/ /*���󲿷��ַ��ͼ�¼����*/ +/**************************Э¼궨忪**********************************/ +/*#define PRTCL_RECORD_DATA_ASC*/ /*ݲַͼ¼*/ +/*#define PRTCL_RECORD_ERR_ASC*/ /*󲿷ַͼ¼*/ -#define PRTCL_RECORD_SIMPLIFY_BIN /*�����Ƽ�¼����*/ -#define USE_DSU_SFP /*ʹ��SFP��ѯ����*/ -#define SWAP_CRC /*����CRC*/ +#define PRTCL_RECORD_SIMPLIFY_BIN /*Ƽ¼*/ +#define USE_DSU_SFP /*ʹSFPѯ*/ +/*#define SWAP_CRC */ /*CRC*/ #else #endif