2 Commits

Author SHA1 Message Date
lh 1d8175fa77 增加外网数据长度,包数,耗时打印 2026-06-22 17:14:10 +08:00
lh 23d920c861 测试提交 2026-06-22 16:35:21 +08:00
203 changed files with 11433 additions and 38789 deletions
+63 -245
View File
@@ -16,10 +16,6 @@
static CM_UINT32 gFollowDataLen = 0u; /*应用跟随数据长度*/ static CM_UINT32 gFollowDataLen = 0u; /*应用跟随数据长度*/
static CM_UINT8 gFollowData[MSCP_FOLLOW_BUFF_SIZE] = { 0 }; /*应用跟随数据*/ static CM_UINT8 gFollowData[MSCP_FOLLOW_BUFF_SIZE] = { 0 }; /*应用跟随数据*/
static CM_UINT32 gCiRcFollowDataLen = 0u; /*CI-RC同步数据长度*/
static CM_UINT8 gCiRcFollowData[MSCP_FOLLOW_BUFF_SIZE] = { 0 }; /*CI-RC同步数据*/
extern UINT8 LocalCiId; /*系统配置文件中定义的联锁ID*/
/* 内网安全通信配置参数,示例: */ /* 内网安全通信配置参数,示例: */
/* 内网安全通信配置参数,示例: */ /* 内网安全通信配置参数,示例: */
/*ATP、ATO、MMI间通信时,SFP协议使用的数据库数组: /*ATP、ATO、MMI间通信时,SFP协议使用的数据库数组:
@@ -29,15 +25,14 @@ extern UINT8 LocalCiId; /*系
const CM_UINT8 g_SfpInnetParam[] = const CM_UINT8 g_SfpInnetParam[] =
{ {
0,5,/*不同设备通信关系表记录个数*/ 0,4,/*不同设备通信关系表记录个数*/
/*记录的格式如下:*/ /*记录的格式如下:*/
/* 发起方 发起方发送数据 发起方报文 发起方报文 发起方接收Ack 跟随方 跟随方发送数据 跟随方运行 跟随方报文 此通信关系中成功发送 */ /* 发起方 发起方发送数据 发起方报文 发起方报文 发起方接收Ack 跟随方 跟随方发送数据 跟随方运行 跟随方报文 此通信关系中成功发送 */
/* 设备类型 通信类型 发送周期长度 最大延时 报文最大延时差 设备类型 通信类型 周期长度 最大延时 一包数据所需最小周期数 */ /* 设备类型 通信类型 发送周期长度 最大延时 报文最大延时差 设备类型 通信类型 周期长度 最大延时 一包数据所需最小周期数 */
/*ZC->CI*/ 0x22, 0x55, 0x01,0x1D, 0x01,0x1D, 0x01,0x1D, 0xff, 0x55, 0x00,0xC8, 0x00,0xC8, 0x02, /*ZC->CI*/ 0x22, 0x55, 0x01,0x1D, 0x01,0x1D, 0x01,0x1D, 0xff, 0x55, 0x00,0xC8, 0x00,0xC8, 0x02,
/*AOM->TIAS*/ 0x15, 0x55, 0x00,0xC8, 0x00,0xC8, 0x00,0xC8, 0x03, 0x55, 0x00,0xC8, 0x00,0xC8, 0x02, /*AOM->TIAS*/ 0x15, 0x55, 0x00,0xC8, 0x00,0xC8, 0x00,0xC8, 0x03, 0x55, 0x00,0xC8, 0x00,0xC8, 0x02,
/*AOM->ATP*/ 0x14, 0x55, 0x00,0xC8, 0x00,0xC8, 0x00,0xC8, 0x15, 0x55, 0x00,0xC8, 0x00,0xC8, 0x02, /*AOM->ATP*/ 0x14, 0x55, 0x00,0xC8, 0x00,0xC8, 0x00,0xC8, 0x15, 0x55, 0x00,0xC8, 0x00,0xC8, 0x02,
/*RC主机->维护机*/ 0xD9, 0x55, 0x01,0x2c, 0x01,0x2C, 0x01,0x2C, 0xf8, 0x55, 0x00,0xc8, 0x00,0xc8, 0x02, /*主机->维护机*/ 0xD9, 0x55, 0x01,0x2c, 0x01,0x2C, 0x01,0x2C, 0xf8, 0x55, 0x00,0xc8, 0x00,0xc8, 0x02,
/*CI主机->维护机*/ 0xDE, 0x55, 0x01,0x2c, 0x01,0x2C, 0x01,0x2C, 0xf8, 0x55, 0x00,0xc8, 0x00,0xc8, 0x02,
0,2,/*相同设备通信关系表记录个数*/ 0,2,/*相同设备通信关系表记录个数*/
/*记录的格式如下:*/ /*记录的格式如下:*/
/* 发起方 发起方 发起方发送数据 发起方报文 发起方报文 发起方接收Ack 跟随方 跟随方 跟随方发送数据 跟随方运行 跟随方报文 此通信关系中成功发送 */ /* 发起方 发起方 发起方发送数据 发起方报文 发起方报文 发起方接收Ack 跟随方 跟随方 跟随方发送数据 跟随方运行 跟随方报文 此通信关系中成功发送 */
@@ -190,7 +185,6 @@ ENUM_CM_RETURN APP_API_Init(OUT CM_UINT8 VitalBuf[200], OUT CM_UINT16* pVitalLen
MSCP_SetOutAtsVobcFunc(pReserveOutVobc); MSCP_SetOutAtsVobcFunc(pReserveOutVobc);
pReserveInAts = SerialInVobcAtsFunc; pReserveInAts = SerialInVobcAtsFunc;
MSCP_SetInVobcAtsFunc(pReserveInAts); MSCP_SetInVobcAtsFunc(pReserveInAts);
MSCP_SetRCFollowUpFunc(SetCiGeneralData);
#if 1 #if 1
cSwtichFalg = GetCiFunctionSwitchConfig(FUNC_OC_200_INOUTNET); cSwtichFalg = GetCiFunctionSwitchConfig(FUNC_OC_200_INOUTNET);
@@ -230,65 +224,11 @@ void APP_API_Data_Init()
UINT16 ii = 0U; UINT16 ii = 0U;
UINT8 szFSFILEVersionFS[DFS_VERSION_LENGTH] = { 0 }; UINT8 szFSFILEVersionFS[DFS_VERSION_LENGTH] = { 0 };
UINT8 funcRetVal = 0U; UINT8 funcRetVal = 0U;
UINT8 cBoardInfo = 0U;
UINT8 cPluginId = 0U;
UINT8 cBoardId = 0U;
UINT8 cRetVal = CI_ERROR;
UINT16 locTypeId = 0U;
UINT8 cDevType = 0U;
UINT8 cSystemWorkType = SYSTEM_WORK_MODE_ONLY;
funcRetVal = dquGetFSVersion(DataPath, szFSFILEVersionFS); funcRetVal = dquGetFSVersion(DataPath, szFSFILEVersionFS);
locTypeId = MSCP_GetOutnetID();
LocalCiId = (UINT8)(locTypeId & 0x00FFU); /*联锁设备ID*/
cDevType = (UINT8)((locTypeId >> 8U) & 0x00FFU); /*RC/CI类型*/
cRetVal = CiPatternInit((const)DataPath); /*初始化当前联锁类型配置数据*/
if ((CI_SUCCESS == cRetVal) && (CI_SUCCESS == funcRetVal)) /*初始化当前联锁类型配置数据*/
{
cSystemWorkType = GetSystemWorkType();
#if (kPLATFORM==kVXWORKS) #if (kPLATFORM==kVXWORKS)
/*若为真机,则通过平台获取设备类型*/ /*文件配置*/
cBoardInfo = MSCP_GetDrvBoardID(); STRU_APP_CFG_T AppCfgInterface = {
PlatSheBeiType = &gSheBeiType; /*联锁设备类型*/
cPluginId = ((cBoardInfo >> 4U) & 0x0FU);
cBoardId = (cBoardInfo & 0x0FU);
if (((0x03U == cPluginId) && ((0x03U == cBoardId) || (0x05U == cBoardId)))
|| ((0x0CU == cPluginId) && ((0x06U == cBoardId) || (0x0AU == cBoardId))))
{
(void)SetLocalRcWorkMode(RC_WORK_MODE_TIOC);
gSheBeiType = RC_WORK_MODE_TIOC;
}
else if (((0x04U == cPluginId) && ((0x03U == cBoardId) || (0x05U == cBoardId)))
|| ((0x0BU == cPluginId) && ((0x06U == cBoardId) || (0x0AU == cBoardId))))
{
(void)SetLocalRcWorkMode(RC_WORK_MODE_CI);
gSheBeiType = RC_WORK_MODE_CI;
}
else
{
debug_infor_printf((const)"APP_API_Data_Init Error: CI_SYSTEM_TYPE Error.\n");
printf((const)"APP_API_Data_Init Error: CI_SYSTEM_TYPE Error.\n");
}
/*真机需校验设备类型是否一致*/
locTypeId = MSCP_GetOutnetID();
cDevType = (UINT8)((locTypeId >> 8U) & 0x00FFU); /*RC/CI类型*/
if (gSheBeiType == cDevType)
{
/*继续处理*/
}
else
{
debug_infor_printf((const)"APP_API_Data_Init Error: DevType[0x%x] And [0x%x] Is Not Equal \n", gSheBeiType, cDevType);
cRetVal = CI_ERROR;
}
}
if(CI_SUCCESS == cRetVal)
{
/*文件配置*/
STRU_APP_CFG_T AppCfgInterface = {
.FS_NAME = "RCI.FS", /**< FS文件名称 */ .FS_NAME = "RCI.FS", /**< FS文件名称 */
.APP_NAME = "RCOCI", /**< 应用文件名称 */ .APP_NAME = "RCOCI", /**< 应用文件名称 */
.CYC_TIME = 300, /**< 系统周期 */ .CYC_TIME = 300, /**< 系统周期 */
@@ -306,28 +246,51 @@ void APP_API_Data_Init()
.reboot_replycount = 10, /**< 重启确认报文回复次数 */ .reboot_replycount = 10, /**< 重启确认报文回复次数 */
.M_AutoReboot_Count = 3, /**< 自动重启次数 */ .M_AutoReboot_Count = 3, /**< 自动重启次数 */
.M_AutoClear_Days = 1, /**< 连续运行多久清空宕机次数的天数 */ .M_AutoClear_Days = 1, /**< 连续运行多久清空宕机次数的天数 */
.M_Area_Enable = 0, /**< 区域状态开关配置 */ .CPU[0].IP_2oo2 = "192.168.0.11", /**< 2oo2通信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 */
/*适用透传通道-选配*/
.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_PortBase = 55011, /**< 明文日志记录发送端口 */
.CPU[0].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */ .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_Out = "192.168.2.62", /**< 外网通信IP */
.CPU[1].IP_Maintain = "192.168.18.102", /**< 维护通信IP */
/*适用透传通道-选配*/
.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_PortBase = 55012, /**< 明文日志记录发送端口 */
.CPU[1].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */ .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_Out = "192.168.1.64", /**< 外网通信IP */
.CPU[2].IP_Maintain = "192.168.146.103", /**< 维护通信IP */
/*适用透传通道-选配*/
.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_PortBase = 55021, /**< 明文日志记录发送端口 */
.CPU[2].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */ .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_Out = "192.168.2.64", /**< 外网通信IP */
.CPU[3].IP_Maintain = "192.168.18.104", /**< 维护通信IP */
/*适用透传通道-选配*/
.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_PortBase = 55022, /**< 明文日志记录发送端口 */
.CPU[3].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */ .CPU[3].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */
/*通用端口配置*/ /*通用端口配置*/
.Port_Outnet_Safe = 54001, /**< 外网安全通信端口 */ .Port_Outnet_Safe = 54001, /**< 外网安全通信端口 */
.Port_Innet_Safe = 53001, /**< 内网安全通信端口 */ .Port_Innet_Safe = 53001, /**< 内网安全通信端口 */
.Port_Outnet_Raw = 54002, /**< 外网透明传输端口 */ .Port_Outnet_Raw = 54002, /**< 外网透明传输端口 */
.Port_Remote_Update = 50000, /**< 远程部署通信端口 */ .Port_Remote_Update = 50000, /**< 远程部署通信端口 */
/*透传配置-选配*/ /*透传配置-选配*/
.Port_Innet_Raw_Num = 0, /**< 内网透传端口数量 */ .Port_Innet_Raw_Num = 0, /**< 内网透传端口数量 */
.Port_Innet_Raw_Extend_Num = 0, /**< 内网透传扩展端口数量 */ .Port_Innet_Raw_Extend_Num = 0, /**< 内网透传扩展端口数量 */
.Innet_Raw_Parameter[0].Port_Innet_Raw = 3956, /**< 内网透明传输端口 */ .Innet_Raw_Parameter[0].Port_Innet_Raw = 3956, /**< 内网透明传输端口 */
@@ -345,7 +308,7 @@ void APP_API_Data_Init()
.Innet_Raw_Parameter[1].INNET_2oo2_RAW = 0X55, /**< 透传通道2取开关 */ .Innet_Raw_Parameter[1].INNET_2oo2_RAW = 0X55, /**< 透传通道2取开关 */
.Innet_Raw_Parameter[1].INNET_2x2_RAW = 0XAA, /**< 透传通道2乘开关 */ .Innet_Raw_Parameter[1].INNET_2x2_RAW = 0XAA, /**< 透传通道2乘开关 */
.Innet_Raw_Parameter[1].IP_InnetRaw_maddr = "224.0.0.32",/**< 内网透传的组播IP */ .Innet_Raw_Parameter[1].IP_InnetRaw_maddr = "224.0.0.32",/**< 内网透传的组播IP */
/*外网通信配置*/ /*外网通信配置*/
.OutNetRed.CC_G_IP = "192.168.1.60", /**< 通控的内网IP */ .OutNetRed.CC_G_IP = "192.168.1.60", /**< 通控的内网IP */
.OutNetRed.CC_P_IP = "192.168.2.60", /**< 通控的内网IP */ .OutNetRed.CC_P_IP = "192.168.2.60", /**< 通控的内网IP */
.OutNetRed.EXTEND_G_IP = "192.168.1.70", /**< 扩展板卡的内网IP */ .OutNetRed.EXTEND_G_IP = "192.168.1.70", /**< 扩展板卡的内网IP */
@@ -361,183 +324,41 @@ void APP_API_Data_Init()
.OutNetBlue.OutnetSafe_Port = 54001, /**< 外网安全通信端口 */ .OutNetBlue.OutnetSafe_Port = 54001, /**< 外网安全通信端口 */
.OutNetBlue.OutnetRaw_Port = 54002, /**< 外网透传通信端口 */ .OutNetBlue.OutnetRaw_Port = 54002, /**< 外网透传通信端口 */
.OutNetBlue.InnetRaw_Port = 53003, /**< 内网透传通信端口 */ .OutNetBlue.InnetRaw_Port = 53003, /**< 内网透传通信端口 */
/*日志记录目标设备IP配置*/
.Logger_G_IP = "192.168.146.100", /**< 绿网日志记录IP */
.Logger_P_IP = "192.168.18.100", /**< 紫网日志记录IP */
/*内网通信设备注册最大支持0-255*/
.INNET_COM_NUM = 1, /**< 内网通信设备数量 */ .INNET_COM_NUM = 1, /**< 内网通信设备数量 */
.INNET_COM_CFG[0].InnetID = DEVICE_TYPE_AIM, /**< 内网通信ID */ .INNET_COM_CFG[0].InnetID = DEVICE_TYPE_AIM, /**< 内网通信ID */
.INNET_COM_CFG[0].IP_G = (CM_UINT32)inet_addr("192.168.146.100"),/**< 绿网IP */
.INNET_COM_CFG[0].Port_Raw_G = 55004, /**< 绿网透传端口 */ .INNET_COM_CFG[0].Port_Raw_G = 55004, /**< 绿网透传端口 */
.INNET_COM_CFG[0].Port_Safe_G = 55003, /**< 绿网安全端口 */ .INNET_COM_CFG[0].Port_Safe_G = 55003, /**< 绿网安全端口 */
.INNET_COM_CFG[0].IP_P = (CM_UINT32)inet_addr("192.168.18.100"),/**< 紫网IP */
.INNET_COM_CFG[0].Port_Raw_P = 55004, /**< 紫网透传端口 */ .INNET_COM_CFG[0].Port_Raw_P = 55004, /**< 紫网透传端口 */
.INNET_COM_CFG[0].Port_Safe_P = 55003, /**< 紫网安全端口 */ .INNET_COM_CFG[0].Port_Safe_P = 55003, /**< 紫网安全端口 */
};
}; MSCP_Set_APP_ConfigData(&AppCfgInterface);
if (RC_WORK_MODE_TIOC == CI_SYSTEM_TYPE_RCI)
{
/*设置IP 与CIIP一致*/
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[0].IP_2oo2), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.0.11"), (UINT32)sizeof("192.168.0.11"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[0].IP_2x2), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.62"), (UINT32)sizeof("192.168.1.62"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[0].IP_Out), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.62"), (UINT32)sizeof("192.168.1.62"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[0].IP_Com), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.62"), (UINT32)sizeof("192.168.1.62"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[0].IP_Com_Extend), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.62"), (UINT32)sizeof("192.168.1.62"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[1].IP_2oo2), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.0.12"), (UINT32)sizeof("192.168.0.12"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[1].IP_2x2), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.62"), (UINT32)sizeof("192.168.2.62"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[1].IP_Out), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.62"), (UINT32)sizeof("192.168.2.62"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[1].IP_Com), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.62"), (UINT32)sizeof("192.168.2.62"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[1].IP_Com_Extend), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.62"), (UINT32)sizeof("192.168.2.62"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[2].IP_2oo2), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.0.21"), (UINT32)sizeof("192.168.0.21"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[2].IP_2x2), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.64"), (UINT32)sizeof("192.168.1.64"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[2].IP_Out), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.64"), (UINT32)sizeof("192.168.1.64"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[2].IP_Com), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.64"), (UINT32)sizeof("192.168.1.64"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[2].IP_Com_Extend), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.64"), (UINT32)sizeof("192.168.1.64"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[3].IP_2oo2), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.0.22"), (UINT32)sizeof("192.168.0.22"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[3].IP_2x2), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.64"), (UINT32)sizeof("192.168.2.64"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[3].IP_Out), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.64"), (UINT32)sizeof("192.168.2.64"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[3].IP_Com), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.64"), (UINT32)sizeof("192.168.2.64"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[3].IP_Com_Extend), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.64"), (UINT32)sizeof("192.168.2.64"));
/*CPU1*/
(void)CommonMemCpy((void*)(AppCfgInterface.AREA_CPU[0].IP_Area_A), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.66"), (UINT32)sizeof("192.168.1.66"));
(void)CommonMemCpy((void*)(AppCfgInterface.AREA_CPU[0].IP_Area_B), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.68"), (UINT32)sizeof("192.168.1.68"));
(void)CommonMemCpy((void*)(AppCfgInterface.AREA_CPU[0].IP_Multicast_Mine), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("239.0.0.21"), (UINT32)sizeof("239.0.0.21"));
(void)CommonMemCpy((void*)(AppCfgInterface.AREA_CPU[0].IP_Multicast_Dest), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("239.0.0.11"), (UINT32)sizeof("239.0.0.11"));
/*CPU2*/
(void)CommonMemCpy((void*)(AppCfgInterface.AREA_CPU[1].IP_Area_A), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.66"), (UINT32)sizeof("192.168.2.66"));
(void)CommonMemCpy((void*)(AppCfgInterface.AREA_CPU[1].IP_Area_B), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.68"), (UINT32)sizeof("192.168.2.68"));
(void)CommonMemCpy((void*)(AppCfgInterface.AREA_CPU[1].IP_Multicast_Mine), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("239.0.0.22"), (UINT32)sizeof("239.0.0.22"));
(void)CommonMemCpy((void*)(AppCfgInterface.AREA_CPU[1].IP_Multicast_Dest), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("239.0.0.12"), (UINT32)sizeof("239.0.0.12"));
/*内网 通控与扩展板卡*/
(void)CommonMemCpy((void*)(AppCfgInterface.OutNetRed.CC_G_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.60"), (UINT32)sizeof("192.168.1.60"));
(void)CommonMemCpy((void*)(AppCfgInterface.OutNetRed.CC_P_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.60"), (UINT32)sizeof("192.168.2.60"));
(void)CommonMemCpy((void*)(AppCfgInterface.OutNetRed.EXTEND_G_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.70"), (UINT32)sizeof("192.168.1.70"));
(void)CommonMemCpy((void*)(AppCfgInterface.OutNetRed.EXTEND_P_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.70"), (UINT32)sizeof("192.168.2.70"));
(void)CommonMemCpy((void*)(AppCfgInterface.OutNetBlue.CC_G_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.61"), (UINT32)sizeof("192.168.1.61"));
(void)CommonMemCpy((void*)(AppCfgInterface.OutNetBlue.CC_P_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.61"), (UINT32)sizeof("192.168.2.61"));
(void)CommonMemCpy((void*)(AppCfgInterface.OutNetBlue.EXTEND_G_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.71"), (UINT32)sizeof("192.168.1.71"));
(void)CommonMemCpy((void*)(AppCfgInterface.OutNetBlue.EXTEND_P_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.71"), (UINT32)sizeof("192.168.2.71"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[0].IP_Maintain), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.146.101"), (UINT32)sizeof("192.168.146.101"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[1].IP_Maintain), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.18.102"), (UINT32)sizeof("192.168.18.102"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[2].IP_Maintain), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.146.103"), (UINT32)sizeof("192.168.146.103"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[3].IP_Maintain), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.18.104"), (UINT32)sizeof("192.168.18.104"));
(void)CommonMemCpy((void*)(AppCfgInterface.Logger_G_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.146.100"), (UINT32)sizeof("192.168.146.100"));
(void)CommonMemCpy((void*)(AppCfgInterface.Logger_P_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.18.100"), (UINT32)sizeof("192.168.18.100"));
AppCfgInterface.INNET_COM_CFG[0].IP_G = (CM_UINT32)inet_addr("192.168.146.100");
AppCfgInterface.INNET_COM_CFG[0].IP_P = (CM_UINT32)inet_addr("192.168.18.100");
}
else
{/*设置IP 与CIIP一致*/
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[0].IP_2oo2), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.0.11"), (UINT32)sizeof("192.168.0.11"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[0].IP_2x2), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.66"), (UINT32)sizeof("192.168.1.66"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[0].IP_Out), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.66"), (UINT32)sizeof("192.168.1.66"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[0].IP_Com), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.66"), (UINT32)sizeof("192.168.1.66"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[0].IP_Com_Extend), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.66"), (UINT32)sizeof("192.168.1.66"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[1].IP_2oo2), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.0.12"), (UINT32)sizeof("192.168.0.12"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[1].IP_2x2), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.66"), (UINT32)sizeof("192.168.2.66"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[1].IP_Out), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.66"), (UINT32)sizeof("192.168.2.66"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[1].IP_Com), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.66"), (UINT32)sizeof("192.168.2.66"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[1].IP_Com_Extend), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.66"), (UINT32)sizeof("192.168.2.66"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[2].IP_2oo2), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.0.21"), (UINT32)sizeof("192.168.0.21"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[2].IP_2x2), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.68"), (UINT32)sizeof("192.168.1.68"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[2].IP_Out), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.68"), (UINT32)sizeof("192.168.1.68"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[2].IP_Com), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.68"), (UINT32)sizeof("192.168.1.68"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[2].IP_Com_Extend), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.68"), (UINT32)sizeof("192.168.1.68"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[3].IP_2oo2), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.0.22"), (UINT32)sizeof("192.168.0.22"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[3].IP_2x2), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.68"), (UINT32)sizeof("192.168.2.68"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[3].IP_Out), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.68"), (UINT32)sizeof("192.168.2.68"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[3].IP_Com), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.68"), (UINT32)sizeof("192.168.2.68"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[3].IP_Com_Extend), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.68"), (UINT32)sizeof("192.168.2.68"));
/*CPU1*/
(void)CommonMemCpy((void*)(AppCfgInterface.AREA_CPU[0].IP_Area_A), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.62"), (UINT32)sizeof("192.168.1.62"));
(void)CommonMemCpy((void*)(AppCfgInterface.AREA_CPU[0].IP_Area_B), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.64"), (UINT32)sizeof("192.168.1.64"));
(void)CommonMemCpy((void*)(AppCfgInterface.AREA_CPU[0].IP_Multicast_Mine), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("239.0.0.11"), (UINT32)sizeof("239.0.0.11"));
(void)CommonMemCpy((void*)(AppCfgInterface.AREA_CPU[0].IP_Multicast_Dest), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("239.0.0.21"), (UINT32)sizeof("239.0.0.21"));
/*CPU2*/
(void)CommonMemCpy((void*)(AppCfgInterface.AREA_CPU[1].IP_Area_A), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.62"), (UINT32)sizeof("192.168.2.62"));
(void)CommonMemCpy((void*)(AppCfgInterface.AREA_CPU[1].IP_Area_B), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.64"), (UINT32)sizeof("192.168.2.64"));
(void)CommonMemCpy((void*)(AppCfgInterface.AREA_CPU[1].IP_Multicast_Mine), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("239.0.0.12"), (UINT32)sizeof("239.0.0.12"));
(void)CommonMemCpy((void*)(AppCfgInterface.AREA_CPU[1].IP_Multicast_Dest), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("239.0.0.22"), (UINT32)sizeof("239.0.0.22"));
/*内网 通控与扩展板卡*/
(void)CommonMemCpy((void*)(AppCfgInterface.OutNetRed.CC_G_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.80"), (UINT32)sizeof("192.168.1.80"));
(void)CommonMemCpy((void*)(AppCfgInterface.OutNetRed.CC_P_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.80"), (UINT32)sizeof("192.168.2.80"));
(void)CommonMemCpy((void*)(AppCfgInterface.OutNetRed.EXTEND_G_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.90"), (UINT32)sizeof("192.168.1.90"));
(void)CommonMemCpy((void*)(AppCfgInterface.OutNetRed.EXTEND_P_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.90"), (UINT32)sizeof("192.168.2.90"));
(void)CommonMemCpy((void*)(AppCfgInterface.OutNetBlue.CC_G_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.81"), (UINT32)sizeof("192.168.1.81"));
(void)CommonMemCpy((void*)(AppCfgInterface.OutNetBlue.CC_P_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.81"), (UINT32)sizeof("192.168.2.81"));
(void)CommonMemCpy((void*)(AppCfgInterface.OutNetBlue.EXTEND_G_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.91"), (UINT32)sizeof("192.168.1.91"));
(void)CommonMemCpy((void*)(AppCfgInterface.OutNetBlue.EXTEND_P_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.91"), (UINT32)sizeof("192.168.2.91"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[0].IP_Maintain), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.148.101"), (UINT32)sizeof("192.168.148.101"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[1].IP_Maintain), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.20.102"), (UINT32)sizeof("192.168.20.102"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[2].IP_Maintain), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.148.103"), (UINT32)sizeof("192.168.148.103"));
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[3].IP_Maintain), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.20.104"), (UINT32)sizeof("192.168.20.104"));
(void)CommonMemCpy((void*)(AppCfgInterface.Logger_G_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.148.100"), (UINT32)sizeof("192.168.148.100"));
(void)CommonMemCpy((void*)(AppCfgInterface.Logger_P_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.20.100"), (UINT32)sizeof("192.168.20.100"));
AppCfgInterface.INNET_COM_CFG[0].IP_G = (CM_UINT32)inet_addr("192.168.148.100");
AppCfgInterface.INNET_COM_CFG[0].IP_P = (CM_UINT32)inet_addr("192.168.20.100");
}
if(SYSTEM_WORK_MODE_ONLY == cSystemWorkType)
{
/*单系统运行:区域开关设置为0*/
AppCfgInterface.M_Area_Enable = 0u;
}
else
{
/*双系统运行*/
if (RC_WORK_MODE_TIOC == CI_SYSTEM_TYPE_RCI)
{
/*RC区域开关设置为0xAA*/
AppCfgInterface.M_Area_Enable = 0xAAu;
}
else
{
/*设置CI IP+区域IP*/
AppCfgInterface.M_Area_Enable = 0x55u;
}
}
MSCP_Set_APP_ConfigData(&AppCfgInterface);
#endif #endif
/*组FS版本号*/ /*组FS版本号*/
ii = 0U; ii = 0U;
fsVersBuffer[ii++] = szFSFILEVersionFS[0]; fsVersBuffer[ii++] = szFSFILEVersionFS[0];
fsVersBuffer[ii++] = szFSFILEVersionFS[1]; fsVersBuffer[ii++] = szFSFILEVersionFS[1];
fsVersBuffer[ii++] = szFSFILEVersionFS[2]; fsVersBuffer[ii++] = szFSFILEVersionFS[2];
fsVersBuffer[ii++] = szFSFILEVersionFS[3]; fsVersBuffer[ii++] = szFSFILEVersionFS[3];
/*组软件版本号*/ /*组软件版本号*/
ii = 0U; ii = 0U;
appVersBuffer[ii++] = VER_INTE_PROJECT; appVersBuffer[ii++] = VER_INTE_PROJECT;
appVersBuffer[ii++] = VER_INTE_PRODUCT >> 2U; appVersBuffer[ii++] = VER_INTE_PRODUCT >> 2U;
appVersBuffer[ii++] = (VER_INTE_PRODUCT << 6U) + (VER_INTE_EXE & (UINT8)0x3F); appVersBuffer[ii++] = (VER_INTE_PRODUCT << 6U) + (VER_INTE_EXE & (UINT8)0x3F);
appVersBuffer[ii++] = VER_INTE_TIME; appVersBuffer[ii++] = VER_INTE_TIME;
/*设置平台调用获取外网信息函数*/ /*设置平台调用获取外网信息函数*/
MSCP_SetSrcId(SetOutNetPara); MSCP_SetSrcId(SetOutNetPara);
/*设置内网参数*/ /*设置内网参数*/
MSCP_SetSfpInnetPara(g_SfpInnetParam); MSCP_SetSfpInnetPara(g_SfpInnetParam);
MSCP_SetAppVersion(appVersBuffer); MSCP_SetAppVersion(appVersBuffer);
MSCP_SetFsVersion(fsVersBuffer); MSCP_SetFsVersion(fsVersBuffer);
}
} }
/** /**
* @brief 应用周期主逻辑 * @brief 应用周期主逻辑
@@ -575,9 +396,6 @@ ENUM_CM_RETURN APP_API_MainFunc(void)
gFollowDataLen = GetCiAppData(gFollowData); gFollowDataLen = GetCiAppData(gFollowData);
MSCP_SetFollowData(gFollowData, gFollowDataLen); MSCP_SetFollowData(gFollowData, gFollowDataLen);
gCiRcFollowDataLen = GetCiGeneralData(gCiRcFollowData);
MSCP_CISendAppData(gCiRcFollowData, gCiRcFollowDataLen);
return retVal; return retVal;
} }
@@ -718,7 +536,7 @@ ENUM_CM_RECCUSEB Is_Send_ExtendBoard(IN const CM_UINT16 dstDevTypeId)
chDstCiType = GetCiType(devId); chDstCiType = GetCiType(devId);
chCldScxCommMode = GetCiFunctionSwitchConfig(SCX_CLD_INTERFACE_TYPE); chCldScxCommMode = GetCiFunctionSwitchConfig(SCX_CLD_INTERFACE_TYPE);
if ((SCX_CLD_SERIAL_PORT_COMM == chCldScxCommMode) && (CI_SYSTEM_TYPE_RCI == devType)) if ((SCX_CLD_SERIAL_PORT_COMM == chCldScxCommMode) && (CI_SYSTEM_TYPE_CI == devType))
{ {
if (((CI_TYPE_CLD == chLocalCiType) && (CI_TYPE_SCX == chDstCiType)) || ((CI_TYPE_SCX == chLocalCiType) && (CI_TYPE_CLD == chDstCiType))) if (((CI_TYPE_CLD == chLocalCiType) && (CI_TYPE_SCX == chDstCiType)) || ((CI_TYPE_SCX == chLocalCiType) && (CI_TYPE_CLD == chDstCiType)))
{ {
@@ -943,7 +761,7 @@ ENUM_CM_RETURN SerialOutAtsVobcFunc(UINT16 inDstId IN, UINT16* outSrcId OUT, UIN
inDstType = (UINT8)((inDstId & 0xff00U) >> 8); inDstType = (UINT8)((inDstId & 0xff00U) >> 8);
if ((CI_SYSTEM_TYPE_VOBC_BACKUP == inDstType) || (CI_SYSTEM_TYPE_ITE == inDstType)) if ((CI_SYSTEM_TYPE_VOBC_BACKUP == inDstType) || (CI_SYSTEM_TYPE_ITE == inDstType))
{ {
*outSrcId = (CI_SYSTEM_TYPE_RCI << 8) + GetSystemParaLocalCiId(); *outSrcId = (CI_SYSTEM_TYPE_CI << 8) + GetSystemParaLocalCiId();
*outDstId = GetATSInterfaceTypeId(); *outDstId = GetATSInterfaceTypeId();
retVal = ENUM_CM_TRUE; retVal = ENUM_CM_TRUE;
@@ -22,14 +22,14 @@
/*预编译指令,用于文件的条件编译*/ /*Ԥָļ*/
#ifndef _CI_INTEGRATE_CONFIG_H #ifndef _CI_INTEGRATE_CONFIG_H
#define _CI_INTEGRATE_CONFIG_H #define _CI_INTEGRATE_CONFIG_H
/*手写版集成内核版本号*/ /*дں˰汾*/
#define VER_INTE_PROJECT 220 /*项目编号*/ #define VER_INTE_PROJECT 220 /*Ŀ*/
#define VER_INTE_PRODUCT 40 /*产品编号*/ #define VER_INTE_PRODUCT 40 /*Ʒ*/
#define VER_INTE_EXE 1 /*可执行编号*/ #define VER_INTE_EXE 99 /*ִб*/
#define VER_INTE_TIME 105 /*集成次数编号*/ #define VER_INTE_TIME 102 /*ɴ*/
#endif/*endif of #define _CI_INTEGRATE_CONFIG_H*/ #endif/*endif of #define _CI_INTEGRATE_CONFIG_H*/
File diff suppressed because it is too large Load Diff
@@ -188,280 +188,6 @@ UINT32 GetCiAppData(UINT8 *pCiAppDataPointer);
*/ */
UINT8 SetCiAppData(const UINT8 *pCiAppDataPointer,const UINT32 len); UINT8 SetCiAppData(const UINT8 *pCiAppDataPointer,const UINT32 len);
/**
* @brief 拷贝获取现地有效互联互通头
* @param[in] UINT8 *pCurCiAppDataPointer:当前数据指针
* @param[in] UINT16 struNum:数组长度
* @param[in] struLength:结构体长度
* @return 无
* @note by cgh 20251103
*/
UINT32 CopyValidGetXiandiHlht(UINT8* pCurCiAppDataPointer, UINT16 struNum, UINT16 struLength);
/**
* @brief 拷贝设置现地有效互联互通头
* @param[in] UINT8 *pCurCiAppDataPointer:当前数据指针
* @param[in] UINT16 struNum:数组长度
* @param[in] struLength:结构体长度
* @return 无
* @note by cgh 20251103
*/
UINT32 CopyValidSetXiandiHlht(const UINT8* pCurCiAppDataPointer, UINT16 struNum, UINT16 struLength);
/**
* @brief 拷贝获取ATS有效互联互通头
* @param[in] UINT8 *pCurCiAppDataPointer:当前数据指针
* @param[in] UINT16 struNum:数组长度
* @param[in] struLength:结构体长度
* @return 无
* @note by cgh 20251103
*/
UINT32 CopyValidGetAtsHlht(UINT8* pCurCiAppDataPointer, UINT16 struNum, UINT16 struLength);
/**
* @brief 拷贝设置ATS有效互联互通头
* @param[in] UINT8 *pCurCiAppDataPointer:当前数据指针
* @param[in] UINT16 struNum:数组长度
* @param[in] struLength:结构体长度
* @return 无
* @note by cgh 20251103
*/
UINT32 CopyValidSetAtsiHlht(const UINT8* pCurCiAppDataPointer, UINT16 struNum, UINT16 struLength);
/*
* 功能描述: CI待发送RC应用数据
* 参数说明: UINT8 *pCiAppDataPointer, CI应用数据指针
* 返回值 void
*/
UINT32 GetCiGeneralData(UINT8* pCiAppDataPointer);
/*
* 功能描述: RC设置CI的应用数据
* 参数说明: UINT8 *pCiAppDataPointer, CI应用数据指针
* const UINT32 len,数据长度
* 返回值 UINT8
*/
UINT8 SetCiGeneralData(const UINT8* pCiAppDataPointer, const UINT32 len);
/*
* 功能描述:二乘拷贝互联互通报文头
* 参数说明:UINT8 *pCurCiAppDataPointer 当前数据指针
* UINT16 struNum 数组长度
* struLength 结构体长度
* HLHTHeadContextStru pstrHLHTHeadCtxs[] 待拷贝的互联互通报文头
* 返 回 值:拷贝的数据长度
* Created By LQ 2025.11.04
*/
UINT32 CopyValidGetHlhtHeadCtxs(UINT8* pCurCiAppDataPointer, UINT16 struNum, UINT16 struLength, HLHTHeadContextStru pstrHLHTHeadCtxs[]);
/*
* 功能描述:二乘设置互联互通报文头
* 参数说明:UINT8 *pCurCiAppDataPointer 当前数据指针
* UINT16 struNum 数组长度
* struLength 结构体长度
* HLHTHeadContextStru pstrHLHTHeadCtxs[] 待设置的互联互通报文头
* 返 回 值:拷贝的数据长度
* Created By LQ 2025.11.04
*/
UINT32 CopyValidSetHlhtHeadCtxs(const UINT8* pCurCiAppDataPointer, UINT16 struNum, UINT16 struLength, HLHTHeadContextStru pstrHLHTHeadCtxs[]);
/*
* 功能描述:二乘拷贝信号机结构体-车车
* 参数说明:UINT8 *pCurCiAppDataPointer 当前数据指针
* UINT16 struNum 数组长度
* SignalDataStructCC pstSignalDataStruCC[] 待拷贝的结构体
* 返 回 值:拷贝的数据长度
* Created By LYJ 2025.11.07
*/
UINT32 CopyValidGetSigDataCC(UINT8* pCurCiAppDataPointer, UINT16 struNum, SignalDataStructCC pstSignalDataStruCC[]);
/*
* 功能描述:二乘设置信号机结构体-车车
* 参数说明:UINT8 *pCurCiAppDataPointer 当前数据指针
* UINT16 struNum 数组长度
* SignalDataStructCC pstSignalDataStruCC[] 待设置的结构体
* 返 回 值:拷贝的数据长度
* Created By LYJ 2025.11.07
*/
UINT32 CopyValidSetSigDataCC(UINT8* pCurCiAppDataPointer, UINT16 struNum, SignalDataStructCC pstSignalDataStruCC[]);
/*
* 功能描述:二乘拷贝防淹门结构体-车车
* 参数说明:UINT8 *pCurCiAppDataPointer 当前数据指针
* UINT16 struNum 数组长度
* FloodGateDataStructCC pstFloodGateDataStruCC[] 待拷贝的结构体
* 返 回 值:拷贝的数据长度
* Created By LYJ 2025.11.07
*/
UINT32 CopyValidGetFloodGateDataCC(UINT8* pCurCiAppDataPointer, UINT16 struNum, FloodGateDataStructCC pstFloodGateDataStruCC[]);
/*
* 功能描述:二乘设置防淹门结构体-车车
* 参数说明:UINT8 *pCurCiAppDataPointer 当前数据指针
* UINT16 struNum 数组长度
* FloodGateDataStructCC pstFloodGateDataStruCC[] 待拷贝的结构体
* 返 回 值:拷贝的数据长度
* Created By LYJ 2025.11.07
*/
UINT32 CopyValidSetFloodGateDataCC(UINT8* pCurCiAppDataPointer, UINT16 struNum, FloodGateDataStructCC pstFloodGateDataStruCC[]);
/*
* 功能描述:二乘拷贝逻辑区段结构体-车车
* 参数说明:UINT8 *pCurCiAppDataPointer 当前数据指针
* UINT16 struNum 数组长度
* LogicSectionDataStructCC pstLogSecDataStruCC[] 待拷贝的结构体
* 返 回 值:拷贝的数据长度
* Created By LYJ 2025.11.07
*/
UINT32 CopyValidGetLogicSecDataCC(UINT8* pCurCiAppDataPointer, UINT16 struNum, LogicSectionDataStructCC pstLogSecDataStruCC[]);
/*
* 功能描述:二乘设置逻辑区段结构体-车车
* 参数说明:UINT8 *pCurCiAppDataPointer 当前数据指针
* UINT16 struNum 数组长度
* LogicSectionDataStructCC pstLogSecDataStruCC[] 待拷贝的结构体
* 返 回 值:拷贝的数据长度
* Created By LYJ 2025.11.07
*/
UINT32 CopyValidSetLogicSecDataCC(UINT8* pCurCiAppDataPointer, UINT16 struNum, LogicSectionDataStructCC pstLogSecDataStruCC[]);
/*
* 功能描述:二乘拷贝进路结构体-车车
* 参数说明:UINT8 *pCurCiAppDataPointer 当前数据指针
* UINT16 struNum 数组长度
* RouteDataStructCC pstRouteDataStruCC[] 待拷贝的结构体
* 返 回 值:拷贝的数据长度
* Created By LYJ 2025.11.10
*/
UINT32 CopyValidGetRouteDataCC(UINT8* pCurCiAppDataPointer, UINT16 struNum, RouteDataStructCC pstRouteDataStruCC[]);
/*
* 功能描述:二乘拷贝进路结构体-车车
* 参数说明:UINT8 *pCurCiAppDataPointer 当前数据指针
* UINT16 struNum 数组长度
* RouteDataStructCC pstRouteDataStruCC[] 待拷贝的结构体
* 返 回 值:拷贝的数据长度
* Created By LYJ 2025.11.10
*/
UINT32 CopyValidSetRouteDataCC(UINT8* pCurCiAppDataPointer, UINT16 struNum, RouteDataStructCC pstRouteDataStruCC[]);
/*
* 功能描述:拷贝ZC发送的信号机数据
* 参数说明:UINT8* pCurCiAppDataPointer 当前数据指针
* 返 回 值:拷贝数据的长度
* Created By LQ 2025.11.10
*/
UINT32 CopyGetZcSignalDymDataStru(UINT8* pCurCiAppDataPointer);
/*
* 功能描述:同步ZC发送的信号机数据
* 参数说明:UINT8* pCurCiAppDataPointer 当前数据指针
* 返 回 值:拷贝数据的长度
* Created By LQ 2025.11.10
*/
UINT32 CopySetZcSignalDymDataStru(const UINT8* pCurCiAppDataPointer);
/*
* 功能描述:拷贝ZC发送的逻辑区段数据
* 参数说明:UINT8* pCurCiAppDataPointer 当前数据指针
* 返 回 值:拷贝数据的长度
* Created By LQ 2025.11.10
*/
UINT32 CopyGetZcLogSecDymDataStru(UINT8* pCurCiAppDataPointer);
/*
* 功能描述:同步ZC发送的逻辑区段数据
* 参数说明:UINT8* pCurCiAppDataPointer 当前数据指针
* 返 回 值:拷贝数据的长度
* Created By LQ 2025.11.10
*/
UINT32 CopySetZcLogSecDymDataStru(const UINT8* pCurCiAppDataPointer);
/*
* 功能描述:拷贝ZC发送的计轴区段数据
* 参数说明:UINT8* pCurCiAppDataPointer 当前数据指针
* 返 回 值:拷贝数据的长度
* Created By LQ 2025.11.10
*/
UINT32 CopyGetZcAxisSecDymDataStru(UINT8* pCurCiAppDataPointer);
/*
* 功能描述:同步ZC发送的计轴区段数据
* 参数说明:UINT8* pCurCiAppDataPointer 当前数据指针
* 返 回 值:拷贝数据的长度
* Created By LQ 2025.11.10
*/
UINT32 CopySetZcAxisSecDymDataStru(const UINT8* pCurCiAppDataPointer);
/*
* 功能描述:拷贝ZC发送的物理区段数据
* 参数说明:UINT8* pCurCiAppDataPointer 当前数据指针
* 返 回 值:拷贝数据的长度
* Created By LQ 2025.11.10
*/
UINT32 CopyGetZcPhySecDymDataStru(UINT8* pCurCiAppDataPointer);
/*
* 功能描述:同步ZC发送的物理区段数据
* 参数说明:UINT8* pCurCiAppDataPointer 当前数据指针
* 返 回 值:拷贝数据的长度
* Created By LQ 2025.11.10
*/
UINT32 CopySetZcPhySecDymDataStru(const UINT8* pCurCiAppDataPointer);
/*
* 功能描述:拷贝ZC发送的进路数据
* 参数说明:UINT8* pCurCiAppDataPointer 当前数据指针
* 返 回 值:拷贝数据的长度
* Created By LQ 2025.11.10
*/
UINT32 CopyGetZcRouteDymDataStru(UINT8* pCurCiAppDataPointer);
/*
* 功能描述:同步ZC发送的进路数据
* 参数说明:UINT8* pCurCiAppDataPointer 当前数据指针
* 返 回 值:拷贝数据的长度
* Created By LQ 2025.11.10
*/
UINT32 CopySetZcRouteDymDataStru(const UINT8* pCurCiAppDataPointer);
/*
* 功能描述:二乘设置OC有效数据
* 参数说明:UINT8 *pCurCiAppDataPointer 当前数据指针
* UINT16 struNum 数组长度
* 返 回 值:拷贝的数据长度
* Created By fan 2025.11.12
*/
UINT32 CopyValidSetOcOrginData(UINT8* pCurCiAppDataPointer, UINT16 struNum, OcToCiOriginDataStruct OcRecvData[]);
/*
* 功能描述:二乘拷贝OC原始数据有效值
* 参数说明:UINT8 *pCurCiAppDataPointer 当前数据指针
* UINT16 struNum 数组长度
* OcToCiOriginDataStruct OcRecvData[] 待拷贝的结构体
* 返 回 值:拷贝的数据长度
* Created By fan 2025.11.12
*/
UINT32 CopyValidGetOcOrginData(UINT8* pCurCiAppDataPointer, UINT16 struNum, OcToCiOriginDataStruct OcRecvData[]);
/*
* 功能描述: 设置报文上下文数据
* 参数说明:
输入参数
const UINT8 *pCurCiAppDataPointer:当前数据指针
UINT16 struNum:数组长度,
输出参数
HLHTHeadContextStru *pDataStru:结构体指针,
* 返回值 拷贝数据的长度
* 注 意 ; 只适用于报文上下文
*/
UINT32 CopyValidSetHlhtHeadDataStru(const UINT8 *pCurCiAppDataPointer, UINT16 struNum, HLHTHeadContextStru *pDataStru);
/*
* 功能描述: 拷贝报文上下文数据数据
输入参数
const HLHTHeadContextStru *pDataStru 结构体指针
UINT16 struNum:数组长度,
输出参数
UINT8 *pCurCiAppDataPointer:当前数据指针,
* 返回值 拷贝数据的长度
* 注 意 ; 只适用于报文上下文
*/
UINT32 CopyValidGetHlhtHeadDataStru(UINT8 *pCurCiAppDataPointer, UINT16 struNum, const HLHTHeadContextStru *pDataStru);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
@@ -10,6 +10,7 @@
********************************************************/ ********************************************************/
#include "../2oo2/2oo2InterfaceDataManage.h" #include "../2oo2/2oo2InterfaceDataManage.h"
#include "MSCP_APP_API.h"
#include "stdarg.h" #include "stdarg.h"
#include "protclStruct.h" #include "protclStruct.h"
#include "ParsePackCommon.h" #include "ParsePackCommon.h"
@@ -28,7 +29,9 @@ extern UINT8 processor_mode; /*ƽ̨
extern UINT8 FSIOLinkStatusInfo; /*联锁机与FSIO之间连接状态*/ extern UINT8 FSIOLinkStatusInfo; /*联锁机与FSIO之间连接状态*/
extern UINT8 LEULinkStatusInfo; /*联锁与LEU通信状态*/ extern UINT8 LEULinkStatusInfo; /*联锁与LEU通信状态*/
extern UINT8 ZCLinkStatusInfo; /*联锁与ZC通信状态*/ extern UINT8 ZCLinkStatusInfo; /*联锁与ZC通信状态*/
extern UINT8 gSheBeiType; /*对外的设备类型*/
extern UINT8 gSheBeiID; /*对外的设备ID*/ extern UINT8 gSheBeiID; /*对外的设备ID*/
extern UINT8 LocalCiId; /*系统配置文件中定义的联锁ID*/
extern QueueStruct logPrintfQue; /*日志存储数据队列*/ extern QueueStruct logPrintfQue; /*日志存储数据队列*/
UINT8 gSheBeiType; UINT8 gSheBeiType;
#endif #endif
@@ -94,52 +97,52 @@ QueueStruct logPrintfQue; /*
/* /*
* 功能描述: 平台初始化 * 功能描述: 平台初始化
* 参数说明: void * 参数说明: void
* 返回值 0: 失败 * 返回值 NULL: 获取数据失败
* 1: 成功 * !NULL: 平台ATS到CI接口队列
* Modified By LQ 2025.08.27
*/ */
UINT8 Initial2oo2Interface(void) UINT8 Initial2oo2Interface(void)
{ {
UINT8 rtn = CI_ERROR; UINT8 rtn = 0u;
UINT8 result = 0U; UINT16 locTypeId = 0;
UINT8 result = 0u;
/*定义平台数据队列指针*/
/*定义平台数据队列指针*/
#ifdef PLATFORM_2OO2 #ifdef PLATFORM_2OO2
rtn = CI_SUCCESS;
ProtocolToCiDataQueue = &gCbtcData.DataToApp; /*初始化协议到CI数据队列*/ ProtocolToCiDataQueue = &gCbtcData.DataToApp; /*初始化协议到CI数据队列*/
CiToProtocolDataQueue = &gCbtcData.OutputDataQueue; /*初始化CI到协议数据队列*/ CiToProtocolDataQueue = &gCbtcData.OutputDataQueue; /*初始化CI到协议数据队列*/
FsfbToCiDataQueue = &Fsfb_Info.DataToApp; /*初始化Fsfb到CI数据队列*/ FsfbToCiDataQueue = &Fsfb_Info.DataToApp; /*初始化Fsfb到CI数据队列*/
CiToFsfbDataQueue = &Fsfb_Info.OutputDataQueue; /*初始化CI到Fsfb数据队列*/ CiToFsfbDataQueue = &Fsfb_Info.OutputDataQueue; /*初始化CI到Fsfb数据队列*/
CurCycleNum = &CycleNum; /*初始化平台周期*/ CurCycleNum = &CycleNum; /*初始化平台周期*/
StartCycleNum = MSCP_GetSysCount(); /*上电周期号*/ StartCycleNum = MSCP_GetSysCount(); /*上电周期号*/
PlatComputerId = &Computer_Id_Local_File; PlatComputerId = &Computer_Id_Local_File;
PlatRunMode = &processor_mode; PlatRunMode = &processor_mode;
IoToCiDataQueue = &canQueueRecv; /*初始化IO到CI数据队列*/ IoToCiDataQueue = &canQueueRecv; /*初始化IO到CI数据队列*/
CiToIoDataQueue = &canQueueSend; /*初始化CI到IO数据队列*/ CiToIoDataQueue = &canQueueSend; /*初始化CI到IO数据队列*/
AtsToCiDataQueue = NULL; /*初始化ATS到CI数据队列*/ AtsToCiDataQueue = NULL; /*初始化ATS到CI数据队列*/
CiToAtsDataQueue = CiToProtocolDataQueue; /*初始化CI到ATS数据队列*/ CiToAtsDataQueue = CiToProtocolDataQueue; /*初始化CI到ATS数据队列*/
XianDiToCiDataQueue = NULL; /*初始化ATS到CI数据队列*/ XianDiToCiDataQueue = NULL; /*初始化ATS到CI数据队列*/
CiToXianDiDataQueue = CiToProtocolDataQueue; /*初始化CI到ATS数据队列*/ CiToXianDiDataQueue = CiToProtocolDataQueue; /*初始化CI到ATS数据队列*/
ZcToCiDataQueue = NULL; /*初始化ZC到CI数据队列*/ ZcToCiDataQueue = NULL; /*初始化ZC到CI数据队列*/
CiToZcDataQueue = CiToProtocolDataQueue; /*初始化CI到ZC数据队列*/ CiToZcDataQueue = CiToProtocolDataQueue; /*初始化CI到ZC数据队列*/
AxisToCiDataQueue = NULL; /*初始化Axis到CI数据队列*/ AxisToCiDataQueue = NULL; /*初始化Axis到CI数据队列*/
CiToAxisDataQueue = CiToProtocolDataQueue; /*初始化CI到Axis数据队列*/ CiToAxisDataQueue = CiToProtocolDataQueue; /*初始化CI到Axis数据队列*/
CiRecvFromCiDataQueue = NULL; /*初始化CI接受其他CI数据队列*/ CiRecvFromCiDataQueue = NULL; /*初始化CI接受其他CI数据队列*/
CiSendToCiDataQueue = CiToProtocolDataQueue; /*初始化CI发送到其他CI数据队列*/ CiSendToCiDataQueue = CiToProtocolDataQueue; /*初始化CI发送到其他CI数据队列*/
VobcToCiDataQueue = NULL; /*初始化Vobc到CI数据队列*/ VobcToCiDataQueue = NULL; /*初始化Vobc到CI数据队列*/
CiToVobcDataQueue = CiToProtocolDataQueue; /*初始化CI到Vobc数据队列*/ CiToVobcDataQueue = CiToProtocolDataQueue; /*初始化CI到Vobc数据队列*/
PlatformToCiDataQueue = NULL; /*初始化Psd到CI数据队列*/ PlatformToCiDataQueue = NULL; /*初始化Psd到CI数据队列*/
@@ -147,67 +150,56 @@ UINT8 Initial2oo2Interface(void)
PscToCiDataQueue = NULL; /*初始化PSC到CI数据队列*/ PscToCiDataQueue = NULL; /*初始化PSC到CI数据队列*/
CiToPscDataQueue = CiToProtocolDataQueue; /*初始化CI到PSC数据队列*/ CiToPscDataQueue = CiToProtocolDataQueue; /*初始化CI到PSC数据队列*/
LEUToCiDataQueue = NULL; /*初始化Leu到CI数据队列*/ LEUToCiDataQueue = NULL; /*初始化Leu到CI数据队列*/
CiToLEUDataQueue = CiToFsfbDataQueue; /*初始化CI到Leu数据队列*/ CiToLEUDataQueue = CiToFsfbDataQueue; /*初始化CI到Leu数据队列*/
CiAndIoComState = &FSIOLinkStatusInfo; /*联锁与IO通信状态*/ CiAndIoComState = &FSIOLinkStatusInfo; /*联锁与IO通信状态*/
locTypeId = MSCP_GetOutnetID();
/*LocalCiId = gSheBeiID;*/ /*联锁设备ID*/
PlatSheBeiType = &gSheBeiType; /*联锁设备类型*/
LocalCiId = (UINT8)(locTypeId & 0xFFu); /*联锁设备ID*/
gSheBeiType = (UINT8)((locTypeId >> 8u) & 0xFFu);
OcToCiDataQueue = NULL; /*初始化Oc到Ci的数据队列*/ OcToCiDataQueue = NULL; /*初始化Oc到Ci的数据队列*/
CiToOcDataQueue = CiToProtocolDataQueue; /*初始化Ci到Oc的数据队列*/ CiToOcDataQueue = CiToProtocolDataQueue; /*初始化Ci到Oc的数据队列*/
if (CI_SUCCESS == rtn) if (1U != QueueInitial(&logPrintfQue, 500000U)) /*初始化日志缓存队列*/
{ {
if (1U != QueueInitial(&logPrintfQue, 500000U)) /*初始化日志缓存队列*/ debug_infor_printf((const)"canQueueRecv init error \n");
{ }
debug_infor_printf((const)"canQueueRecv init error \n");
rtn = CI_ERROR;
}
else
{
#if 0 #if 0
/*联锁与LEU、ZC、CI等的通信状态描述*/ /*联锁与LEU、ZC、CI等的通信状态描述*/
if (TransmitRelaDataCurSum < TRANSMIT_OBJECT_SUM_MAX) if (TransmitRelaDataCurSum < TRANSMIT_OBJECT_SUM_MAX)
{ {
for (ii = 0u; ii < TRANSMIT_OBJECT_SUM_MAX; ii++) for (ii = 0u; ii < TRANSMIT_OBJECT_SUM_MAX; ii++)
{ {
PlatComStatusStru[ii].SystemType = &(ComDevStatusInfo[ii].DeviceTypeOther); PlatComStatusStru[ii].SystemType = &(ComDevStatusInfo[ii].DeviceTypeOther);
PlatComStatusStru[ii].SystemNum = &(ComDevStatusInfo[ii].ComDevSum); PlatComStatusStru[ii].SystemNum = &(ComDevStatusInfo[ii].ComDevSum);
for (jj = 0u; jj < TRANSMIT_OBJECT_DEVICE_SUM_MAX; jj++) for (jj = 0u; jj < TRANSMIT_OBJECT_DEVICE_SUM_MAX; jj++)
{ {
PlatComStatusStru[ii].SystemIdBuf[jj] = &(ComDevStatusInfo[ii].ComDevIdBuf[jj]); PlatComStatusStru[ii].SystemIdBuf[jj] = &(ComDevStatusInfo[ii].ComDevIdBuf[jj]);
PlatComStatusStru[ii].CommunicationStatusBuf[jj] = &(ComDevStatusInfo[ii].ComDevIdComStatusBuf[jj]); PlatComStatusStru[ii].CommunicationStatusBuf[jj] = &(ComDevStatusInfo[ii].ComDevIdComStatusBuf[jj]);
} }
} }
} }
else else
{ {
} }
#endif #endif
#endif #endif
result = HLHTCiIdMapInitial(); result = HLHTCiIdMapInitial();
if (CI_SUCCESS == result) if (CI_SUCCESS == result)
{
rtn = CI_SUCCESS;
}
else
{
debug_infor_printf((const)"Initial2oo2Interface init error: HLHTCiIdMapInitial Error\n");
rtn = CI_ERROR; /*返回失败*/
}
}
}
else
{ {
rtn = CI_ERROR; /*返回失败*/ rtn = 1;
} }
return rtn; return rtn;
} }
/* /*
@@ -512,7 +504,7 @@ QueueStruct* Get2oo2CiToPscDataQueue(void)
UINT32 Get2oo2CurCycleNum(void) UINT32 Get2oo2CurCycleNum(void)
{ {
#if (kPLATFORM==kVXWORKS) #if (kPLATFORM==kVXWORKS)
return MSCP_GetAreaSysCount(); return MSCP_GetSysCount();
#else #else
return *CurCycleNum; return *CurCycleNum;
#endif #endif
@@ -21,7 +21,6 @@
#include "CommonQueue.h" #include "CommonQueue.h"
#include "../Transmit/TransmitStateDataManage.h" #include "../Transmit/TransmitStateDataManage.h"
#include "MSCP_APP_API.h"
#ifdef PLATFORM_2OO2 #ifdef PLATFORM_2OO2
#include "sfpplatform.h" #include "sfpplatform.h"
#include "RsspWl.h" #include "RsspWl.h"
@@ -90,14 +89,12 @@ extern UINT8* CiAndCiComDeviceNum; /*
extern UINT8* CiAndCiComIdBuf; /*联锁与联锁通信设备ID*/ extern UINT8* CiAndCiComIdBuf; /*联锁与联锁通信设备ID*/
extern UINT8* CiAndCiComState; /*联锁与联锁通信状态*/ extern UINT8* CiAndCiComState; /*联锁与联锁通信状态*/
extern UINT8* PlatSheBeiType; /*平台对外设备类型*/ extern UINT8* PlatSheBeiType; /*平台对外设备类型*/
extern UINT8 gSheBeiType; /*对外的设备类型*/
/* /*
* 功能描述: 平台初始化 * 功能描述: 平台初始化
* 参数说明: void * 参数说明: void
* 返回值 0: 失败 * 返回值 NULL: 获取数据失败
* 1: 成功 * !NULL: 平台ATS到CI接口队列
* Modified By LQ 2025.08.27
*/ */
UINT8 Initial2oo2Interface(void); UINT8 Initial2oo2Interface(void);
@@ -41,5 +41,5 @@
#define ALL_AUTO_RETURN_DICHU_COMMR ((UINT8)0x06) /*抵触的普通进路已办理*/ #define ALL_AUTO_RETURN_DICHU_COMMR ((UINT8)0x06) /*抵触的普通进路已办理*/
#define ALL_AUTO_RETURN_HAVE_BLOCK ((UINT8)0x02) /*全自动折返进路存在封锁*/ #define ALL_AUTO_RETURN_HAVE_BLOCK ((UINT8)0x02) /*全自动折返进路存在封锁*/
#define ALL_AUTO_RETURN_FLOOD_STATE_ERR ((UINT8)0x03) /*全自动折返进路存在防淹门不满足*/ #define ALL_AUTO_RETURN_FLOOD_STATE_ERR ((UINT8)0x03) /*全自动折返进路存在防淹门不满足*/
#define ALL_AUTO_RETURN_COUPROUTE_SET ((UINT8)0x07) /*联挂进路已办理*/
#endif #endif
@@ -41,5 +41,5 @@
#define AUTO_RETURN_DICHU_COMMROUTE ((UINT8)0x06) /*抵触的普通进路已办理*/ #define AUTO_RETURN_DICHU_COMMROUTE ((UINT8)0x06) /*抵触的普通进路已办理*/
#define AUTO_RETURN_HAVE_BLOCK ((UINT8)0x02) /*自动折返进路存在封锁*/ #define AUTO_RETURN_HAVE_BLOCK ((UINT8)0x02) /*自动折返进路存在封锁*/
#define AUTO_RETURN_FLOOD_STATE_ERR ((UINT8)0x03) /*自动折返进路存在防淹门不满足*/ #define AUTO_RETURN_FLOOD_STATE_ERR ((UINT8)0x03) /*自动折返进路存在防淹门不满足*/
#define AUTO_RETURN_COUPROUTE_SET ((UINT8)0x07) /*联挂进路已办理*/
#endif #endif
@@ -36,7 +36,7 @@
#define AUTO_ROUTE_DICHU_COMMROUTE ((UINT8)0x06) /*抵触普通进路已办理*/ #define AUTO_ROUTE_DICHU_COMMROUTE ((UINT8)0x06) /*抵触普通进路已办理*/
#define AUTO_ROUTE_HAVE_BLOCK ((UINT8)0x02) /*自动进路存在封锁*/ #define AUTO_ROUTE_HAVE_BLOCK ((UINT8)0x02) /*自动进路存在封锁*/
#define AUTO_ROUTE_FLOOD_STATE_ERR ((UINT8)0x03) /*自动进路存在防淹门不满足*/ #define AUTO_ROUTE_FLOOD_STATE_ERR ((UINT8)0x03) /*自动进路存在防淹门不满足*/
#define AUTO_ROUTE_COUPROUTE_SET ((UINT8)0x07) /*联挂进路已办理*/
#endif #endif
@@ -1629,7 +1629,7 @@ void OtherCfpTrainInfoCal(UINT16 wLinkId,UINT32 dwOffSet,UINT32 dwLocalOffSet, C
{ {
chLinkTiocId = (UINT8)GetLinkManageTiocById(wLinkId); chLinkTiocId = (UINT8)GetLinkManageTiocById(wLinkId);
strCfpInfo = GetCfpOtherOcTrainInfo(wCfpId); strCfpInfo = GetCfpOtherOcTrainInfo(wCfpId);
chTransmitStat = GetCiTransmitState(CI_SYSTEM_TYPE_RCI, chLinkTiocId); chTransmitStat = GetCiTransmitState(CI_SYSTEM_TYPE_CI, chLinkTiocId);
if ((TRANSMIT_STATE_GOOD != chTransmitStat) || (UINT16_MAX == strCfpInfo.wTrainId)) if ((TRANSMIT_STATE_GOOD != chTransmitStat) || (UINT16_MAX == strCfpInfo.wTrainId))
{ {
;/*通信不良好,或者分界点列车信息获取失败*/ ;/*通信不良好,或者分界点列车信息获取失败*/
@@ -43,7 +43,6 @@ UINT8 GetCiEmapCheckVer(const UINT8 ciId, UINT32 *emapVer,const UINT8 commDevTyp
switch (commDevType) switch (commDevType)
{/*根据通信设备类型获取CI与该通信设备的共用数据校验信息*/ {/*根据通信设备类型获取CI与该通信设备的共用数据校验信息*/
case CI_SYSTEM_TYPE_VOBC: case CI_SYSTEM_TYPE_VOBC:
case CI_SYSTEM_TYPE_IVOC:
case CI_SYSTEM_TYPE_ITE: case CI_SYSTEM_TYPE_ITE:
*emapVer = gEmapCiConfigStrus[ciId].dataVerCheckCIAndVOBC; /*ITE使用与VOBC相同的校验信息*/ *emapVer = gEmapCiConfigStrus[ciId].dataVerCheckCIAndVOBC; /*ITE使用与VOBC相同的校验信息*/
break; break;
@@ -58,7 +57,7 @@ UINT8 GetCiEmapCheckVer(const UINT8 ciId, UINT32 *emapVer,const UINT8 commDevTyp
*emapVer = gEmapCiConfigStrus[ciId].dataVerCheckCIAndTMC; *emapVer = gEmapCiConfigStrus[ciId].dataVerCheckCIAndTMC;
break; break;
default: default:
/*CI_SYSTEM_TYPE_RCI等情况*/ /*CI_SYSTEM_TYPE_CI等情况*/
break; break;
} }
@@ -112,8 +111,8 @@ UINT8 IsSameLineCI(const UINT8 ciA, const UINT8 ciB)
UINT8 dquDevNameA = CI_ERROR; UINT8 dquDevNameA = CI_ERROR;
UINT8 dquDevNameB = CI_ERROR; UINT8 dquDevNameB = CI_ERROR;
u16CiA = (UINT16)((CI_SYSTEM_TYPE_RCI * 256u) + ciA); u16CiA = (UINT16)((CI_SYSTEM_TYPE_CI * 256u) + ciA);
u16CiB = (UINT16)((CI_SYSTEM_TYPE_RCI * 256u) + ciB); u16CiB = (UINT16)((CI_SYSTEM_TYPE_CI * 256u) + ciB);
cbtcSysType = GetCbtcSysType(); cbtcSysType = GetCbtcSysType();
@@ -203,55 +202,28 @@ UINT32 GetCiTranCiDataCheckVer(const UINT8 ciId, const UINT16 deviceName)
UINT32 retDataVer = CI_ERROR; UINT32 retDataVer = CI_ERROR;
UINT8 ii = 0U; UINT8 ii = 0U;
UINT8 chBreakFlag = 0U; UINT8 chBreakFlag = 0U;
UINT8 chDevType = 0U;
chDevType = (UINT8)((deviceName & 0xFF00) >> 8U); if ((ciId > 0U) && (ciId < CI_SUM_MAX) && (deviceName > 0U))
if ((ciId > 0U) && (ciId < CI_SUM_MAX) &&
((RC_WORK_MODE_CI == chDevType)||(RC_WORK_MODE_TIOC == chDevType)))
{ {
if (gEmapCiConfigStrus[ciId].devId == ciId) if (gEmapCiConfigStrus[ciId].devId == ciId)
{ {
if (RC_WORK_MODE_CI == chDevType) for (ii = 0U; ii < gEmapCiConfigStrus[ciId].chAdjoinCICount; ii++)
{ {
for (ii = 0U; ii < gEmapCiConfigStrus[ciId].chAdjoinCICount; ii++) if (ii < CI_TRAINSMIT_CI_MAX_NUM)
{ {
if (ii < CI_TRAINSMIT_CI_MAX_NUM) if ((deviceName == gEmapCiConfigStrus[ciId].wAdjoinCIId[ii]) && (gEmapCiConfigStrus[ciId].wAdjoinCIId[ii] > 0U) && (gEmapCiConfigStrus[ciId].wAdjoinCIId[ii] < 0xFFFFU))
{
if ((deviceName == gEmapCiConfigStrus[ciId].wAdjoinCIId[ii]) && (gEmapCiConfigStrus[ciId].wAdjoinCIId[ii] > 0U) && (gEmapCiConfigStrus[ciId].wAdjoinCIId[ii] < 0xFFFFU))
{
retDataVer = gEmapCiConfigStrus[ciId].dwAdjoinCIShareCheckData[ii];
chBreakFlag = 1U;
}
}
else
{ {
retDataVer = gEmapCiConfigStrus[ciId].dwAdjoinCIShareCheckData[ii];
chBreakFlag = 1U; chBreakFlag = 1U;
} }
if (1U == chBreakFlag)
{
break;
}
} }
} else
else
{
for (ii = 0U; ii < gEmapCiConfigStrus[ciId].chAdjoinRCCount; ii++)
{ {
if (ii < CI_TRAINSMIT_CI_MAX_NUM) chBreakFlag = 1U;
{ }
if ((deviceName == gEmapCiConfigStrus[ciId].wAdjoinRCId[ii]) && (gEmapCiConfigStrus[ciId].wAdjoinRCId[ii] > 0U) && (gEmapCiConfigStrus[ciId].wAdjoinRCId[ii] < 0xFFFFU)) if (1U == chBreakFlag)
{ {
retDataVer = gEmapCiConfigStrus[ciId].dwAdjoinRCShareCheckData[ii]; break;
chBreakFlag = 1U;
}
}
else
{
chBreakFlag = 1U;
}
if (1U == chBreakFlag)
{
break;
}
} }
} }
} }
@@ -36,15 +36,11 @@ typedef struct S_EmapCheckVerConfigStruct
UINT8 chAdjoinCICount; /*相邻CI数量*/ UINT8 chAdjoinCICount; /*相邻CI数量*/
UINT16 wAdjoinCIId[CI_TRAINSMIT_CI_MAX_NUM]; /*相邻CI[1-6]的ID*/ UINT16 wAdjoinCIId[CI_TRAINSMIT_CI_MAX_NUM]; /*相邻CI[1-6]的ID*/
UINT32 dwAdjoinCIShareCheckData[CI_TRAINSMIT_CI_MAX_NUM]; /*与相邻CI[1-6]的共用数据校验信息*/ UINT32 dwAdjoinCIShareCheckData[CI_TRAINSMIT_CI_MAX_NUM]; /*与相邻CI[1-6]的共用数据校验信息*/
UINT8 chAdjoinRCCount; /*相邻RC数量*/
UINT16 wAdjoinRCId[CI_TRAINSMIT_CI_MAX_NUM]; /*相邻RC[1-6]的ID*/
UINT32 dwAdjoinRCShareCheckData[CI_TRAINSMIT_CI_MAX_NUM]; /*与相邻RC[1-6]的共用数据校验信息*/
UINT16 ciTransmitAxisId[CI_TRAINSMIT_AXIS_MAX_NUM];/*与联锁通信的计轴系统ID*/ UINT16 ciTransmitAxisId[CI_TRAINSMIT_AXIS_MAX_NUM];/*与联锁通信的计轴系统ID*/
UINT32 ciTransmitAxisCheckData[CI_TRAINSMIT_AXIS_MAX_NUM];/*与联锁通信的计轴系统校验信息*/ UINT32 ciTransmitAxisCheckData[CI_TRAINSMIT_AXIS_MAX_NUM];/*与联锁通信的计轴系统校验信息*/
UINT8 chAdjoinOcCount; /*与CI通信的oc数量*/ UINT8 chAdjoinOcCount; /*与CI通信的oc数量*/
UINT16 wAdjoinOcId[CI_TRAINSMIT_OC_MAX_NUM]; /*Oc[1-10]的ID*/ UINT16 wAdjoinOcId[CI_TRAINSMIT_OC_MAX_NUM]; /*Oc[1-10]的ID*/
UINT32 dwAdjoinOcShareCheckData[CI_TRAINSMIT_OC_MAX_NUM]; /*与OC[1-10]的共用数据校验信息*/ UINT32 dwAdjoinOcShareCheckData[CI_TRAINSMIT_OC_MAX_NUM]; /*与OC[1-10]的共用数据校验信息*/
UINT32 dwLocalShareCheckData; /*与本控区RC/CI校验信息*/
} EmapCiConfigStru; } EmapCiConfigStru;
extern EmapCiConfigStru gEmapCiConfigStrus[CI_SUM_MAX];/*存储各CI使用的电子地图版本*/ extern EmapCiConfigStru gEmapCiConfigStrus[CI_SUM_MAX];/*存储各CI使用的电子地图版本*/
@@ -46,8 +46,6 @@ UINT8 g_AllTsrFlag = CI_ALL_TSR_UNVALID; /*
UINT8 g_AllSnowModel = CI_ALL_SNOW_UNVALID; /*全线雨雪模式命令:0x55-有效;0xAA-无效*/ UINT8 g_AllSnowModel = CI_ALL_SNOW_UNVALID; /*全线雨雪模式命令:0x55-有效;0xAA-无效*/
UINT8 g_AllSnowModelCC = CI_ALL_SNOW_UNVALID; /*全线雨雪模式命令CC0x55-有效;0xAA-无效*/
UINT8 g_AllSnowLevel = CI_SNOW_LEVEL_DEFAULT; /*全线湿轨级别:0-默认值;1-一级;2-二级*/ UINT8 g_AllSnowLevel = CI_SNOW_LEVEL_DEFAULT; /*全线湿轨级别:0-默认值;1-一级;2-二级*/
UINT8 g_IteLineCutState = CI_ITE_LINE_CUT_DEFAULT; /*ITE全线切除状态:0x55:切除ITE0xAA:使用ITE0xFF:默认值*/ UINT8 g_IteLineCutState = CI_ITE_LINE_CUT_DEFAULT; /*ITE全线切除状态:0x55:切除ITE0xAA:使用ITE0xFF:默认值*/
@@ -88,15 +86,11 @@ CtrlPowerStruct ctrlpowerFlag[VIRTUAL_CI_MAX] = { 0u };
UINT8 LocalAreaSnowNum = 0U; /*本地区间雨雪站台数量*/ UINT8 LocalAreaSnowNum = 0U; /*本地区间雨雪站台数量*/
AreaSnowInfoStruct szLocalAreaSnow[LOCAL_AREA_SNOW_SUM_MAX] = { 0U }; /*本地区间雨雪数组*/ AreaSnowInfoStruct szLocalAreaSnow[LOCAL_AREA_SNOW_SUM_MAX] = { 0U }; /*本地区间雨雪数组*/
UINT8 gLocalAreaSnowNumCC = 0U; /*本地区间雨雪站台数量CC*/
AreaSnowInfoStruct gszLocalAreaSnowCC[LOCAL_AREA_SNOW_SUM_MAX] = { 0U }; /*本地区间雨雪数组CC*/
LineCommTrainStruct gStrLineCommTrain = { 0U }; /*全线通信车结构体*/ LineCommTrainStruct gStrLineCommTrain = { 0U }; /*全线通信车结构体*/
UINT32 gFlyProtectOverCyc = 0U; /*飞车宕机报警起始周期*/ UINT32 gFlyProtectOverCyc = 0U; /*飞车宕机报警起始周期*/
UINT8 g_LocalSnowModel = CI_LOCAL_SNOW_UNVALID; /*本地雨雪模式命令*/ UINT8 g_LocalSnowModel = CI_LOCAL_SNOW_UNVALID; /*本地雨雪模式命令*/
UINT8 g_LocalSnowModelCC = CI_LOCAL_SNOW_UNVALID; /*本地雨雪模式命令CC*/
UINT8 gLocalAreaIteCutNum = 0U; /*本地区间ITE切除数量*/ UINT8 gLocalAreaIteCutNum = 0U; /*本地区间ITE切除数量*/
UINT16 gSzLocalAreaIteCutId[ALL_AREA_SNOW_SUM_MAX] = { 0U }; /*本地区间ITE切除ID数组——需要存储ZC发送的所有区间ID*/ UINT16 gSzLocalAreaIteCutId[ALL_AREA_SNOW_SUM_MAX] = { 0U }; /*本地区间ITE切除ID数组——需要存储ZC发送的所有区间ID*/
@@ -1269,16 +1263,8 @@ void RouteDrvInnerSwitch(const UINT16 routeId, const UINT8 DrivFlag)
chSwitchBelCiId = GetSwitchBelongCiId(switchId); chSwitchBelCiId = GetSwitchBelongCiId(switchId);
if ((chLocalCiId == chSwitchBelCiId) && (0U != chLocalCiId)) if ((chLocalCiId == chSwitchBelCiId) && (0U != chLocalCiId))
{ {
funRtn = CheckSwitchPosAndMoveValid(pRouteProtectSwitchStru[ii].ProtectSwitchId, pRouteProtectSwitchStru[ii].ProtectPosition, ESEND_LEVEL_ZERO); switchExpPos = pRouteProtectSwitchStru[ii].ProtectPosition;
if (CI_ERROR == funRtn) (void)SwitchDriveProcess(switchId, switchExpPos); /*设置进路关联防护道岔的驱动状态为驱动中*/
{
/*不可动防护道岔不进行驱动,已在锁闭条件中通过二级侧防进行防护*/
}
else
{
switchExpPos = pRouteProtectSwitchStru[ii].ProtectPosition;
(void)SwitchDriveProcess(switchId, switchExpPos); /*设置进路关联防护道岔的驱动状态为驱动中*/
}
} }
else else
{ {
@@ -1714,7 +1700,6 @@ void DriveSignalOpen(const UINT16 signalId, const UINT16 routeId)
UINT8 sigalMaintainState = 0u; UINT8 sigalMaintainState = 0u;
UINT8 signalIsfushiFlag = 0u; UINT8 signalIsfushiFlag = 0u;
UINT8 signalCurDriveColor = 0u; UINT8 signalCurDriveColor = 0u;
UINT8 chRoutelightFlag = 0U;
routeLevel = GetRouteLevel(routeId); /*获取进路级别*/ routeLevel = GetRouteLevel(routeId); /*获取进路级别*/
if(ROUTE_LEVEL_BLOC == routeLevel) if(ROUTE_LEVEL_BLOC == routeLevel)
@@ -1816,16 +1801,7 @@ void DriveSignalOpen(const UINT16 signalId, const UINT16 routeId)
lightExtinctState = GetSignalLightExtinctState(signalId);/*信号机亮灭状态*/ lightExtinctState = GetSignalLightExtinctState(signalId);/*信号机亮灭状态*/
sigalMaintainState = GetSignalMaintainState(signalId);/*信号机维修点灯状态*/ sigalMaintainState = GetSignalMaintainState(signalId);/*信号机维修点灯状态*/
chRoutelightFlag = GetSignalShine(signalId);
if (SIGNAL_LIGHT_CONFIG_CBTC_CLOSE == chRoutelightFlag)
{
lightExtinctState = SIGNAL_LIGHT_EXTICT_STATE_YES;
}
else
{
/*数据配置常亮,CBTC接近时灭灯,驱动亮灯;配置其他依据亮灭灯状态*/
}
signalIsfushiFlag = GetSignalIsfushiFlag(signalId); signalIsfushiFlag = GetSignalIsfushiFlag(signalId);
signalCurDriveColor = GetSignalCurDriveColor(signalId); signalCurDriveColor = GetSignalCurDriveColor(signalId);
if ((SIGNAL_DRIVECOLOUR_NULL == signalCurDriveColor)&&(SIGNALTYPE_FUSHI_YES != signalIsfushiFlag))/*驱开放增加是否复示防护逻辑,避免数据配错导致的异常情况*/ if ((SIGNAL_DRIVECOLOUR_NULL == signalCurDriveColor)&&(SIGNALTYPE_FUSHI_YES != signalIsfushiFlag))/*驱开放增加是否复示防护逻辑,避免数据配错导致的异常情况*/
@@ -2093,7 +2069,6 @@ UINT8 DriveSignalClose(const UINT16 signalId)
UINT8 routeLeadProperty = 0U; UINT8 routeLeadProperty = 0U;
UINT8 routeState = 0U; UINT8 routeState = 0U;
UINT16 wStartSignalId = 0u; UINT16 wStartSignalId = 0u;
UINT8 chRoutelightFlag = 0U;
if ((0u == signalId) || (signalId >= SIGNAL_SUM_MAX)) if ((0u == signalId) || (signalId >= SIGNAL_SUM_MAX))
{ {
reVal = CI_ERROR; reVal = CI_ERROR;
@@ -2128,15 +2103,6 @@ UINT8 DriveSignalClose(const UINT16 signalId)
routeState = GetRouteState(routeId);/*获取进路状态*/ routeState = GetRouteState(routeId);/*获取进路状态*/
wStartSignalId = GetRouteStartSignalId(routeId); wStartSignalId = GetRouteStartSignalId(routeId);
chRoutelightFlag = GetSignalShine(signalId);
if (SIGNAL_LIGHT_CONFIG_CBTC_CLOSE == chRoutelightFlag)
{
lightExtinctState = SIGNAL_LIGHT_EXTICT_STATE_YES;
}
else
{
/*数据配置常亮,CBTC接近时灭灯,驱动亮灯;配置其他依据亮灭灯状态*/
}
if (((ROUTE_LEAD_PROPERTY_YES == routeLeadProperty) || (ROUTE_LEAD_PROPERTY_CBTC_YES == routeLeadProperty)) if (((ROUTE_LEAD_PROPERTY_YES == routeLeadProperty) || (ROUTE_LEAD_PROPERTY_CBTC_YES == routeLeadProperty))
&& ((ROUTE_STATE_LEAD_LOCK == routeState) && ((ROUTE_STATE_LEAD_LOCK == routeState)
|| (ROUTE_STATE_LEAD_LOCKERR == routeState) || (ROUTE_STATE_LEAD_LOCKERR == routeState)
@@ -9111,13 +9077,7 @@ void SetSigleRouteAutoTriggerManage(UINT8 virCIid, UINT16 routeId, UINT8 setFlag
UINT8 belongVirCI = 0u; UINT8 belongVirCI = 0u;
UINT8 flag = 0u; UINT8 flag = 0u;
UINT8 autoTriggerType = 0u; /*自动触发进路属性*/ UINT8 autoTriggerType = 0u; /*自动触发进路属性*/
UINT8 chRoutCouplinkFlag = 0U;
UINT16 wLastPhyId = 0U;
UINT16 wLockRouteId = 0U;
UINT16 wSigId = 0U;
UINT16 wSameStartSigRouteNum = 0U;
UINT16* pSameStartSigRouteBuf = NULL;
UINT16 jj = 0U;
autoTriggerType = GetAutoTriggerType(routeId); /*获取进路自动触发进路属性*/ autoTriggerType = GetAutoTriggerType(routeId); /*获取进路自动触发进路属性*/
localCiId = GetSystemParaLocalCiId(); /*获取本机联锁ID*/ localCiId = GetSystemParaLocalCiId(); /*获取本机联锁ID*/
belongCiId = GetRouteBelongCiId(routeId); /*获取进路所属联锁ID*/ belongCiId = GetRouteBelongCiId(routeId); /*获取进路所属联锁ID*/
@@ -9140,71 +9100,7 @@ void SetSigleRouteAutoTriggerManage(UINT8 virCIid, UINT16 routeId, UINT8 setFlag
{ {
/*检查自动触发进路封锁状态*/ /*检查自动触发进路封锁状态*/
chkFState = ChekAutoTriggerRouteFlockState(routeId); chkFState = ChekAutoTriggerRouteFlockState(routeId);
if (CI_SUCCESS == chkFState)
{
/*检查进路无联挂标志*/
chRoutCouplinkFlag = GetRouteCouplinkFlag(routeId);
if (ROUTE_COUPLINK_FLAG_NO == chRoutCouplinkFlag)
{
/*继续检查*/
}
else
{
chkFState = CI_ERROR;
}
/*进路最后区段锁闭所属进路不存在联挂标志*/
if (CI_SUCCESS == chkFState)
{
wLastPhyId = GetRouteLastPhySectionId(routeId); /*获取进路最后物理区段*/
wLockRouteId = GetPhySecRLockBelongRouteId(wLastPhyId); /*获取物理区段锁闭所属进路*/
chRoutCouplinkFlag = GetRouteCouplinkFlag(wLockRouteId);/*获取联挂标志*/
if (ROUTE_COUPLINK_FLAG_NO == chRoutCouplinkFlag)
{
/*不存在联挂标志*/
}
else
{
chkFState = CI_ERROR;
}
}
else
{
/*不处理*/
}
if (CI_SUCCESS == chkFState)
{
/*进路始端信号机为始端的其他进路也不存在联挂标志*/
wSigId = GetRouteStartSignalId(routeId);
wSameStartSigRouteNum = GetStartSignalRouteSum(wSigId); /*获取始端信号机进路数量和数组*/
pSameStartSigRouteBuf = GetStartSignalRouteBuf(wSigId);
if ((NULL != pSameStartSigRouteBuf) && (0U < wSameStartSigRouteNum))
{
for (jj = 0U; jj < wSameStartSigRouteNum; jj++)
{
chRoutCouplinkFlag = GetRouteCouplinkFlag(pSameStartSigRouteBuf[jj]);
if (ROUTE_COUPLINK_FLAG_NO == chRoutCouplinkFlag)
{
/*不存在联挂标志*/
}
else
{
chkFState = CI_ERROR;
break;
}
}
}
else
{
chkFState = CI_ERROR;
}
}
else
{
/*不处理*/
}
}
if (CI_SUCCESS == chkFState) if (CI_SUCCESS == chkFState)
{ {
/*检查自动触发进路防淹门状态*/ /*检查自动触发进路防淹门状态*/
@@ -11470,157 +11366,4 @@ UINT16 GetRouteFirstLockedLogSecId(UINT16 wRouteId)
} }
return wRetVal; return wRetVal;
}
/*
*
* const UINT16 wLogSectionId ID
* const UINT8 chExiansuState
*
* by 20250916
*/
void EmergXianSuProcess(const UINT16 wLogSectionId, const UINT8 chExiansuState)
{
UINT8 chBelongCiId = 0U;
UINT8 chLocalCiId = 0U;
UINT8 chPerLogSecExiansuState = 0U;
if ((0U < wLogSectionId) && (LOGIC_SECTION_SUM_MAX > wLogSectionId))
{
chBelongCiId = GetLogSecBelongCiId(wLogSectionId);/*逻辑区段所属联锁*/
chLocalCiId = GetSystemParaLocalCiId();
if ((chLocalCiId == chBelongCiId) && (0U != chLocalCiId))
{
chPerLogSecExiansuState = GetLogSecEmergXianSu(wLogSectionId);
SetLogSecEmergXianSu(wLogSectionId, chExiansuState);/*设置逻辑区段紧急临时限速*/
if ((LOGSEC_EMERG_XS_SET_YES != chPerLogSecExiansuState) && (LOGSEC_EMERG_XS_SET_YES == chExiansuState))
{
/*由未设置到设置*/
ClearLgcSecBelongRtXsCfm(wLogSectionId); /*清除限速确认*/
}
else
{
/*不处理*/
}
}
else
{
/*非本联锁逻辑区段,不处理*/
}
}
else
{
/*不处理*/
}
}
/*
* 线CC
* void
* 0x55
* 0xAA
* Created By LQ 2025.11.07
*/
UINT8 GetAllSnowModelCC(void)
{
return g_AllSnowModelCC;
}
/*
* 线CC
* UINT8 setmodle 线
* void
* Created By LQ 2025.11.07
*/
void SetAllSnowModelCC(UINT8 setmodle)
{
if ((CI_ALL_SNOW_VALID == setmodle) || (CI_ALL_SNOW_UNVALID == setmodle))
{
g_AllSnowModelCC = setmodle;
}
else
{
/*不处理*/
}
}
/*
* CC
*
*
* Created By LQ 2025.11.06
*/
UINT8 GetLocalAreaSnowNumCC(void)
{
return gLocalAreaSnowNumCC;
}
/*
* CC
*
*
* Created By LQ 2025.11.06
*/
AreaSnowInfoStruct* GetLocalAreaSnowCC(void)
{
return gszLocalAreaSnowCC;
}
/*
* CC
* const UINT8 cAreaSnowNum
* const AreaSnowInfoStruct pAreaSnowBuf[LOCAL_AREA_SNOW_SUM_MAX]
*
* Created By LQ 2025.11.06
*/
void SetLocalAreaSnowInfoCC(const UINT8 cAreaSnowNum, const AreaSnowInfoStruct pAreaSnowBuf[LOCAL_AREA_SNOW_SUM_MAX])
{
UINT8 ii = 0U;
if ((LOCAL_AREA_SNOW_SUM_MAX >= cAreaSnowNum) && (NULL != pAreaSnowBuf))
{
/*清除本地区间雨雪站台信息CC*/
(void)CommonMemSet(gszLocalAreaSnowCC, (UINT32)(sizeof(AreaSnowInfoStruct) * LOCAL_AREA_SNOW_SUM_MAX), 0U, (UINT32)(sizeof(AreaSnowInfoStruct) * LOCAL_AREA_SNOW_SUM_MAX));
gLocalAreaSnowNumCC = cAreaSnowNum;
for (ii = 0U; ii < cAreaSnowNum; ii++)
{
gszLocalAreaSnowCC[ii] = pAreaSnowBuf[ii]; /*存储本控区的区间雨雪状态信息*/
}
}
else
{
/*入参非法,不处理*/
}
}
/*
* CC
*
* 0x55
* 0xAA
* Created By LQ 2025.11.06
*/
UINT8 GetLocalSnowModelCC(void)
{
return g_LocalSnowModelCC;
}
/*
* CC
* UINT8 setmodle
*
* Created By LQ 2025.11.06
*/
void SetLocalSnowModelCC(UINT8 setmodle)
{
if ((CI_LOCAL_SNOW_UNVALID == setmodle) || (CI_LOCAL_SNOW_VALID == setmodle))
{
g_LocalSnowModelCC = setmodle;
}
else
{
; /*不处理*/
}
} }
@@ -190,8 +190,6 @@ extern UINT8 g_AllTsrFlag; /*
extern UINT8 g_AllSnowModel; /*全线雨雪模式命令*/ extern UINT8 g_AllSnowModel; /*全线雨雪模式命令*/
extern UINT8 g_AllSnowModelCC; /*全线雨雪模式命令CC0x55-有效;0xAA-无效*/
extern UINT8 g_AllSnowLevel; /*全线湿轨级别:0-默认值;1-一级;2-二级*/ extern UINT8 g_AllSnowLevel; /*全线湿轨级别:0-默认值;1-一级;2-二级*/
extern UINT8 g_IteLineCutState; /*ITE全线切除状态:0x55:切除ITE0xAA:使用ITE0xFF:默认值*/ extern UINT8 g_IteLineCutState; /*ITE全线切除状态:0x55:切除ITE0xAA:使用ITE0xFF:默认值*/
@@ -234,16 +232,11 @@ extern CtrlPowerStruct ctrlpowerFlag[VIRTUAL_CI_MAX];
extern UINT8 LocalAreaSnowNum; /*本地区间雨雪站台数量*/ extern UINT8 LocalAreaSnowNum; /*本地区间雨雪站台数量*/
extern AreaSnowInfoStruct szLocalAreaSnow[LOCAL_AREA_SNOW_SUM_MAX]; /*本地区间雨雪数组*/ extern AreaSnowInfoStruct szLocalAreaSnow[LOCAL_AREA_SNOW_SUM_MAX]; /*本地区间雨雪数组*/
extern UINT8 gLocalAreaSnowNumCC; /*本地区间雨雪站台数量CC*/
extern AreaSnowInfoStruct gszLocalAreaSnowCC[LOCAL_AREA_SNOW_SUM_MAX]; /*本地区间雨雪数组CC*/
extern LineCommTrainStruct gStrLineCommTrain; /*全线通信车结构体*/ extern LineCommTrainStruct gStrLineCommTrain; /*全线通信车结构体*/
extern UINT32 gFlyProtectOverCyc; /*飞车宕机报警起始周期*/ extern UINT32 gFlyProtectOverCyc; /*飞车宕机报警起始周期*/
extern UINT8 g_LocalSnowModel; /*本地雨雪模式命令*/ extern UINT8 g_LocalSnowModel; /*本地雨雪模式命令*/
extern UINT8 g_LocalSnowModelCC; /*本地雨雪模式命令CC*/
extern UINT8 gLocalAreaIteCutNum; /*本地区间ITE切除数量*/ extern UINT8 gLocalAreaIteCutNum; /*本地区间ITE切除数量*/
extern UINT16 gSzLocalAreaIteCutId[ALL_AREA_SNOW_SUM_MAX]; /*本地区间ITE切除ID数组*/ extern UINT16 gSzLocalAreaIteCutId[ALL_AREA_SNOW_SUM_MAX]; /*本地区间ITE切除ID数组*/
@@ -1904,73 +1897,5 @@ void SetLocalAreaIteCutInfo(const UINT8 cAreaIteCutNum, const UINT16 pAreaIteCut
* Created By LQ 2025.05.08 * Created By LQ 2025.05.08
*/ */
UINT16 GetRouteFirstLockedLogSecId(UINT16 wRouteId); UINT16 GetRouteFirstLockedLogSecId(UINT16 wRouteId);
/*
* 功能描述:紧急临时限速处理
* 参数说明:const UINT16 wPhySectionId 逻辑区段ID
* const UINT8 chExiansuState 限速状态
* 返 回 值:无
* by 202500916
*/
void EmergXianSuProcess(const UINT16 wPhySectionId, const UINT8 chExiansuState);
/*
* 功能描述:获取全线雨雪模式命令CC
* 参数说明:void
* 返 回 值:0x55 有效
* 0xAA 无效
* Created By LQ 2025.11.07
*/
UINT8 GetAllSnowModelCC(void);
/*
* 功能描述:设置全线雨雪模式命令CC
* 参数说明:UINT8 setmodle 全线雨雪模式
* 返 回 值:void
* Created By LQ 2025.11.07
*/
void SetAllSnowModelCC(UINT8 setmodle);
/*
* 功能描述:获取本地区间雨雪站台数量CC
* 参数说明:无
* 返 回 值:区间雨雪站台数量
* Created By LQ 2025.11.06
*/
UINT8 GetLocalAreaSnowNumCC(void);
/*
* 功能描述:获取本地区间雨雪信息CC
* 参数说明:无
* 返 回 值:区间雨雪信息
* Created By LQ 2025.11.06
*/
AreaSnowInfoStruct* GetLocalAreaSnowCC(void);
/*
* 功能描述:设置本地区间雨雪站台信息CC
* 参数说明:const UINT8 cAreaSnowNum 区间雨雪数量
* const AreaSnowInfoStruct pAreaSnowBuf[LOCAL_AREA_SNOW_SUM_MAX] 区间雨雪数组
* 返 回 值:无
* Created By LQ 2025.11.06
*/
void SetLocalAreaSnowInfoCC(const UINT8 cAreaSnowNum, const AreaSnowInfoStruct pAreaSnowBuf[LOCAL_AREA_SNOW_SUM_MAX]);
/*
* 功能描述:获取本地雨雪模式命令CC
* 参数说明:无
* 返 回 值:0x55 无效
* 0xAA 有效
* Created By LQ 2025.11.06
*/
UINT8 GetLocalSnowModelCC(void);
/*
* 功能描述:设置本地雨雪模式命令CC
* 参数说明:UINT8 setmodle 本地雨雪模式
* 返 回 值:无
* Created By LQ 2025.11.06
*/
void SetLocalSnowModelCC(UINT8 setmodle);
#endif #endif
@@ -443,14 +443,14 @@ UINT8 CheckRCIAPowerFaultState(void)
gPlatDataGPIOTolercance.powerANode_TolCyc = dwCurCyc; gPlatDataGPIOTolercance.powerANode_TolCyc = dwCurCyc;
retVal = CI_SUCCESS; retVal = CI_SUCCESS;
} }
else if (CI_TIME_IN == chCheckState) else if(CI_TIME_IN == chCheckState)
{ {
retVal = CI_SUCCESS;/*继续容忍*/ retVal = CI_SUCCESS;/*继续容忍*/
} }
else else
{ {
retVal = CI_ERROR; retVal = CI_ERROR;
debug_infor_printf((const)"\nPLATIO_A_Node_Power_FaultState StartTime%d\n", dwErrorStartCyc); debug_infor_printf((const)"PLATIO_A_Node_Power_FaultState StartTime%d\n", dwErrorStartCyc);
} }
} }
else else
@@ -494,7 +494,7 @@ UINT8 CheckRCIBPowerFaultState(void)
else else
{ {
retVal = CI_ERROR; retVal = CI_ERROR;
debug_infor_printf((const)"\nPLATIO_B_Node_Power_FaultState StartTime%d\n", dwErrorStartCyc); debug_infor_printf((const)"PLATIO_B_Node_Power_FaultState StartTime%d\n", dwErrorStartCyc);
} }
} }
else else
@@ -515,6 +515,7 @@ UINT8 CheckRCIBPowerFaultState(void)
UINT8 CheckRCIAPowerModeFaultState(void) UINT8 CheckRCIAPowerModeFaultState(void)
{ {
UINT8 retVal = CI_ERROR; UINT8 retVal = CI_ERROR;
UINT8 powerAPUBAState = 0U; /*PUB A采集的24VA电源状态 1*/ UINT8 powerAPUBAState = 0U; /*PUB A采集的24VA电源状态 1*/
UINT8 powerBPUBAState = 0U; /*PUB A采集的24VB电源状态 3*/ UINT8 powerBPUBAState = 0U; /*PUB A采集的24VB电源状态 3*/
UINT8 vol1Flag = 0U; /*CPI A采集24VA电源 1*/ UINT8 vol1Flag = 0U; /*CPI A采集24VA电源 1*/
@@ -550,7 +551,7 @@ UINT8 CheckRCIAPowerModeFaultState(void)
else else
{ {
retVal = CI_ERROR; retVal = CI_ERROR;
debug_infor_printf((const)"\nPLATIO_A_Mode_Power_FaultState StartTime%d\n", dwErrorStartCyc); debug_infor_printf((const)"PLATIO_A_Mode_Power_FaultState StartTime%d\n", dwErrorStartCyc);
} }
} }
else else
@@ -588,7 +589,7 @@ UINT8 CheckRCIBPowerModeFaultState(void)
dwCurCyc = Get2oo2CurCycleNum(); dwCurCyc = Get2oo2CurCycleNum();
/* 1、PUB B采集的24VA电源异常、或24VB电源异常 /* 1、PUB B采集的24VA电源异常、或24VB电源异常
2、CPI B采集24VA电源、或24VB电源电压为0V */ 2、CPI B采集24VA电源、或24VB电源电压为0V */
if (((CHECK_VOLTAGE_ZERO == vol2Flag) || (CHECK_VOLTAGE_ZERO == vol4Flag)) if (((CHECK_VOLTAGE_ZERO == vol2Flag) || (CHECK_VOLTAGE_ZERO == vol4Flag))
&& ((POWER_STATUS_ABNORMAL == powerAPUBBState) || (POWER_STATUS_ABNORMAL == powerBPUBBState))) && ((POWER_STATUS_ABNORMAL == powerAPUBBState) || (POWER_STATUS_ABNORMAL == powerBPUBBState)))
{ {
@@ -606,7 +607,7 @@ UINT8 CheckRCIBPowerModeFaultState(void)
else else
{ {
retVal = CI_ERROR; retVal = CI_ERROR;
debug_infor_printf((const)"\nPLATIO_B_Mode_Power_FaultState StartTime%d\n", dwErrorStartCyc); debug_infor_printf((const)"PLATIO_B_Mode_Power_FaultState StartTime%d\n", dwErrorStartCyc);
} }
} }
else else
@@ -59,6 +59,7 @@
#define CCU_CommBadEnsureTime_CycleCount ((UINT16)5u) /*应用与通控通信中断判断周期数*/ #define CCU_CommBadEnsureTime_CycleCount ((UINT16)5u) /*应用与通控通信中断判断周期数*/
#define VOLTAGE_MAX_TO_0 ((UINT16)500U) /*电压判断为0的阈值*/ #define VOLTAGE_MAX_TO_0 ((UINT16)500U) /*电压判断为0的阈值*/
#define IO_POWERSTATE_TOLERANCE ((UINT8)0x02) /*平台电源报警容忍周期数,容忍3周期,超过2周期报警*/ #define IO_POWERSTATE_TOLERANCE ((UINT8)0x02) /*平台电源报警容忍周期数,容忍3周期,超过2周期报警*/
/*平台心跳帧信息结构*/ /*平台心跳帧信息结构*/
@@ -101,6 +102,7 @@ typedef struct S_PlatGPIODataStruct
UINT8 ModepowerBState_PUB; /*机柜B系电源插箱中为CPUB供电的24VDC电源模块状态*/ UINT8 ModepowerBState_PUB; /*机柜B系电源插箱中为CPUB供电的24VDC电源模块状态*/
}PlatGPIODataStruct; }PlatGPIODataStruct;
/*平台发送的电源采集状态容忍同步数据*/ /*平台发送的电源采集状态容忍同步数据*/
typedef struct S_PlatGPIOToleranceData typedef struct S_PlatGPIOToleranceData
{ {
@@ -112,7 +114,6 @@ typedef struct S_PlatGPIOToleranceData
/* /*
* 功能描述: 清空指定通控板卡发送的心跳数据 * 功能描述: 清空指定通控板卡发送的心跳数据
* 参数说明: 板卡ID * 参数说明: 板卡ID
-7
View File
@@ -110,7 +110,6 @@
#define EFUNC_SWITCHTESTLOGIC ((UINT8)0x80U) /*函数:SetSwitchTestLogicManage道岔定反位测试*/ #define EFUNC_SWITCHTESTLOGIC ((UINT8)0x80U) /*函数:SetSwitchTestLogicManage道岔定反位测试*/
#define EFUNC_OVERLAP_VALIDMASK_CHECK ((UINT8)0x4A) /*函数:OverlapValidMaskCheck 计算保护区段有效码位检查*/ #define EFUNC_OVERLAP_VALIDMASK_CHECK ((UINT8)0x4A) /*函数:OverlapValidMaskCheck 计算保护区段有效码位检查*/
#define EFUNC_ROUTE_LOCK_DRIVE_SWITCH ((UINT8)0xD2) /*RouteLockDriveSwitch 锁闭道岔*/ #define EFUNC_ROUTE_LOCK_DRIVE_SWITCH ((UINT8)0xD2) /*RouteLockDriveSwitch 锁闭道岔*/
#define EFUNC_ROUTE_COUPLINK_SET ((UINT8)0xD7) /*SetCouplinkRouteLogicManage 办理联挂进路逻辑管理*/
/*车辆段联锁逻辑检查*/ /*车辆段联锁逻辑检查*/
#define EFUNC_SET_LEAD_ROUTE_CHECK ((UINT8)0x4B) /*办理引导进路检查*/ #define EFUNC_SET_LEAD_ROUTE_CHECK ((UINT8)0x4B) /*办理引导进路检查*/
@@ -215,9 +214,6 @@
#define EFUNC_OVERLAP_ZHAOCHA_CHECK ((UINT8)0xD3) /*保护区段照查条件检查*/ #define EFUNC_OVERLAP_ZHAOCHA_CHECK ((UINT8)0xD3) /*保护区段照查条件检查*/
#define EFUNC_PARSE_LOCAL_CI2RC_DATA ((UINT8)0xD4U) /*函数:ParseCiToLocalRcDataFrame*/
#define EFUNC_PARSE_LOCAL_RC2CI_DATA ((UINT8)0xD5U) /*函数:ParseRcToLocalCiDataFrame*/
/*************************************************分界线******************************************************************************/ /*************************************************分界线******************************************************************************/
/*************************************************分界线******************************************************************************/ /*************************************************分界线******************************************************************************/
@@ -239,7 +235,6 @@
#define ETYPE_ROUTE_XUANPAI_OVERTIME ((UINT8)0x10) /*进路选排超时*/ #define ETYPE_ROUTE_XUANPAI_OVERTIME ((UINT8)0x10) /*进路选排超时*/
#define ETYPE_GROUP_AUTO_ROUTE_STATE ((UINT8)0x16) /*组合自动进路*/ #define ETYPE_GROUP_AUTO_ROUTE_STATE ((UINT8)0x16) /*组合自动进路*/
#define ETYPE_ROUTE_APPLY_SWITCH_MOVE ((UINT8)0xA4) /*进路道岔单操中*/ #define ETYPE_ROUTE_APPLY_SWITCH_MOVE ((UINT8)0xA4) /*进路道岔单操中*/
#define ETYPE_COUPLINK_ROUTE_IDLE ((UINT8)0xA5) /*联挂进路内无被联挂车*/
#define ETYPE_COMM_WITH_VOBC ((UINT8)0x11) /*与VOBC通信*/ #define ETYPE_COMM_WITH_VOBC ((UINT8)0x11) /*与VOBC通信*/
@@ -250,7 +245,6 @@
#define ETYPE_COMM_WITH_PSC ((UINT8)0x15) /*CI与PSC通信*/ #define ETYPE_COMM_WITH_PSC ((UINT8)0x15) /*CI与PSC通信*/
#define ETYPE_COMM_WITH_TMC ((UINT8)0x17) /*与TMC通信*/ #define ETYPE_COMM_WITH_TMC ((UINT8)0x17) /*与TMC通信*/
#define ETYPE_COMM_WITH_RC ((UINT8)0x18U) /*与RC通信*/
/* 信号机故障类型编码 (UINT8)0x21-(UINT8)0x3f */ /* 信号机故障类型编码 (UINT8)0x21-(UINT8)0x3f */
/* 设备类型 CI_DEVICE_TYPE_SIGNAL */ /* 设备类型 CI_DEVICE_TYPE_SIGNAL */
@@ -304,7 +298,6 @@
/*保护区段类型*/ /*保护区段类型*/
#define ETYPE_OVERLAP_LABORUNLOCK_FAIL ((UINT8)0x51U) /*保护区段人工锁闭条件不满足*/ #define ETYPE_OVERLAP_LABORUNLOCK_FAIL ((UINT8)0x51U) /*保护区段人工锁闭条件不满足*/
#define ETYPE_OVERLAP_RES_CHECK_FAIL ((UINT8)0x52U) /*保护区段资源检查条件不满足*/ #define ETYPE_OVERLAP_RES_CHECK_FAIL ((UINT8)0x52U) /*保护区段资源检查条件不满足*/
#define ETYPE_OVERLAP_LABORUNLOCK_STATE ((UINT8)0x53U) /*保护区段人工解锁状态不满足*/
/* 道岔类型编码 (UINT8)0x61-(UINT8)0x7f */ /* 道岔类型编码 (UINT8)0x61-(UINT8)0x7f */
/* 设备类型 CI_DEVICE_TYPE_SWITCH */ /* 设备类型 CI_DEVICE_TYPE_SWITCH */
@@ -176,7 +176,7 @@ else
UINT8 elm_PrepareTrainSafeLoc(UINT16 trainID,INOUT ELM_TrainSafeLocStruct* pTrainSafeLoc) UINT8 elm_PrepareTrainSafeLoc(UINT16 trainID,INOUT ELM_TrainSafeLocStruct* pTrainSafeLoc)
{ {
UINT8 chRtnVal = CI_ERROR; UINT8 chRtnVal = CI_ERROR;
UINT16 wTrainID = (UINT16)(TRAIN_ID_MIN_IVOC + (trainID & 0x00ffU)); UINT16 wTrainID = (UINT16)(0x1400u + (trainID & 0x00ffu));
if (NULL != pTrainSafeLoc) if (NULL != pTrainSafeLoc)
{ {
@@ -1012,7 +1012,7 @@ UINT32 elm_PrepareTrainLength(UINT16 trainid)
UINT8 chTrainType = 0u; UINT8 chTrainType = 0u;
UINT8 chFunRtn = CI_ERROR; UINT8 chFunRtn = CI_ERROR;
UINT32 dwRtnVal = 0u; UINT32 dwRtnVal = 0u;
UINT16 wTrainID = (UINT16)(TRAIN_ID_MIN_IVOC + (trainid & 0x00ffU)); UINT16 wTrainID = (UINT16)(0x1400u + (trainid & 0x00ffu));
/*获取列车类型*/ /*获取列车类型*/
chFunRtn = dquGetTrainType(wTrainID, &chTrainType); chFunRtn = dquGetTrainType(wTrainID, &chTrainType);
@@ -1074,7 +1074,7 @@ UINT8 elm_PrepareNextAcMinSafeHeadLoc(UINT16 trainid, OUT UINT16 acID[AC_MAXCNT_
UINT8 chFunRtn = CI_ERROR; UINT8 chFunRtn = CI_ERROR;
LinkPointDataStru strPoint = { 0u }; LinkPointDataStru strPoint = { 0u };
UINT16 wSwitchId = 0u; UINT16 wSwitchId = 0u;
UINT16 wTrainID = (UINT16)(TRAIN_ID_MIN_IVOC + (trainid & 0x00ffU)); UINT16 wTrainID = (UINT16)(0x1400u + (trainid & 0x00ffu));
UINT8 cDirectionPointFlag = 0U; /*是否具有方向变化点标志*/ UINT8 cDirectionPointFlag = 0U; /*是否具有方向变化点标志*/
@@ -1135,7 +1135,7 @@ UINT8 elm_PrepareMaxSafeHeadLoc(UINT16 trainid, OUT LOD_STRU *pLoc)
UINT16 wLink = 0u; UINT16 wLink = 0u;
UINT32 dwOff = UINT32_MAX; UINT32 dwOff = UINT32_MAX;
UINT8 chDir = 0u; UINT8 chDir = 0u;
UINT16 wTrainID = (UINT16)(TRAIN_ID_MIN_IVOC + (trainid & 0x00ffU)); UINT16 wTrainID = (UINT16)(0x1400u + (trainid & 0x00ffu));
wLink = GetTrainMaxHeadLink(wTrainID); wLink = GetTrainMaxHeadLink(wTrainID);
@@ -1169,7 +1169,7 @@ UINT8 elm_PrepareMinSafeHeadLoc(UINT16 trainid, OUT LOD_STRU *pLoc)
UINT16 wLink = 0u; UINT16 wLink = 0u;
UINT32 dwOff = UINT32_MAX; UINT32 dwOff = UINT32_MAX;
UINT8 chDir = 0u; UINT8 chDir = 0u;
UINT16 wTrainID = (UINT16)(TRAIN_ID_MIN_IVOC + (trainid & 0x00ffU)); UINT16 wTrainID = (UINT16)(0x1400u + (trainid & 0x00ffu));
wLink = GetTrainMinHeadLink(wTrainID); wLink = GetTrainMinHeadLink(wTrainID);
@@ -1200,7 +1200,7 @@ UINT16 elm_PrepareACOfMaxSafeHeadLoc(UINT16 trainid)
UINT16 wMinHeadLink = 0u; UINT16 wMinHeadLink = 0u;
UINT8 chFunRtn = CI_ERROR; UINT8 chFunRtn = CI_ERROR;
UINT16 wRtn = 0u; UINT16 wRtn = 0u;
UINT16 wTrainID = (UINT16)(TRAIN_ID_MIN_IVOC + (trainid & 0x00ffU)); UINT16 wTrainID = (UINT16)(0x1400u + (trainid & 0x00ffu));
wMinHeadLink = GetTrainMaxHeadLink(wTrainID); wMinHeadLink = GetTrainMaxHeadLink(wTrainID);
chFunRtn = IsLinkIdValid(wMinHeadLink); chFunRtn = IsLinkIdValid(wMinHeadLink);
@@ -1227,7 +1227,7 @@ UINT16 elm_PrepareACOfMinSafeHeadLoc(UINT16 trainid)
UINT16 wMinHeadLink = 0u; UINT16 wMinHeadLink = 0u;
UINT8 chFunRtn = CI_ERROR; UINT8 chFunRtn = CI_ERROR;
UINT16 wRtn = 0u; UINT16 wRtn = 0u;
UINT16 wTrainID = (UINT16)(TRAIN_ID_MIN_IVOC + (trainid & 0x00ffU)); UINT16 wTrainID = (UINT16)(0x1400u + (trainid & 0x00ffu));
wMinHeadLink = GetTrainMinHeadLink(wTrainID); wMinHeadLink = GetTrainMinHeadLink(wTrainID);
chFunRtn = IsLinkIdValid(wMinHeadLink); chFunRtn = IsLinkIdValid(wMinHeadLink);
@@ -1261,7 +1261,7 @@ UINT8 elm_PrepareNextAcMaxSafeTailLoc(UINT16 trainid, OUT UINT16 acID[AC_MAXCNT_
UINT8 chFunRtn = CI_ERROR; UINT8 chFunRtn = CI_ERROR;
LinkPointDataStru strPoint = { 0u }; LinkPointDataStru strPoint = { 0u };
UINT16 wSwitchId = 0u; UINT16 wSwitchId = 0u;
UINT16 wTrainID = (UINT16)(TRAIN_ID_MIN_IVOC + (trainid & 0x00ffU)); UINT16 wTrainID = (UINT16)(0x1400u + (trainid & 0x00ffu));
UINT8 cDirectionPointFlag = 0U; /*是否具有方向变化点标志*/ UINT8 cDirectionPointFlag = 0U; /*是否具有方向变化点标志*/
@@ -1324,7 +1324,7 @@ UINT8 elm_PrepareMaxSafeTailLoc(UINT16 trainid, OUT LOD_STRU *pLoc)
UINT16 wLink = 0u; UINT16 wLink = 0u;
UINT32 dwOff = UINT32_MAX; UINT32 dwOff = UINT32_MAX;
UINT8 chDir = 0u; UINT8 chDir = 0u;
UINT16 wTrainID = (UINT16)(TRAIN_ID_MIN_IVOC + (trainid & 0x00ffU)); UINT16 wTrainID = (UINT16)(0x1400u + (trainid & 0x00ffu));
wLink = GetTrainMaxTailLink(wTrainID); wLink = GetTrainMaxTailLink(wTrainID);
dwOff = GetTrainMaxTailOffset(wTrainID); dwOff = GetTrainMaxTailOffset(wTrainID);
@@ -1357,7 +1357,7 @@ UINT8 elm_PrepareMinSafeTailLoc(UINT16 trainid, OUT LOD_STRU *pLoc)
UINT16 wLink = 0u; UINT16 wLink = 0u;
UINT32 dwOff = UINT32_MAX; UINT32 dwOff = UINT32_MAX;
UINT8 chDir = 0u; UINT8 chDir = 0u;
UINT16 wTrainID = (UINT16)(TRAIN_ID_MIN_IVOC + (trainid & 0x00ffU)); UINT16 wTrainID = (UINT16)(0x1400u + (trainid & 0x00ffu));
wLink = GetTrainMinTailLink(wTrainID); wLink = GetTrainMinTailLink(wTrainID);
dwOff = GetTrainMinTailOffset(wTrainID); dwOff = GetTrainMinTailOffset(wTrainID);
@@ -1387,7 +1387,7 @@ UINT16 elm_PrepareACOfMaxSafeTailLoc(UINT16 trainid)
UINT16 wMaxTailLink = 0u; UINT16 wMaxTailLink = 0u;
UINT8 chFunRtn = CI_ERROR; UINT8 chFunRtn = CI_ERROR;
UINT16 wRtn = 0u; UINT16 wRtn = 0u;
UINT16 wTrainID = (UINT16)(TRAIN_ID_MIN_IVOC + (trainid & 0x00ffU)); UINT16 wTrainID = (UINT16)(0x1400u + (trainid & 0x00ffu));
wMaxTailLink = GetTrainMaxTailLink(wTrainID); wMaxTailLink = GetTrainMaxTailLink(wTrainID);
chFunRtn = IsLinkIdValid(wMaxTailLink); chFunRtn = IsLinkIdValid(wMaxTailLink);
@@ -1414,7 +1414,7 @@ UINT16 elm_PrepareACOfMinSafeTailLoc(UINT16 trainid)
UINT16 wMaxTailLink = 0u; UINT16 wMaxTailLink = 0u;
UINT8 chFunRtn = CI_ERROR; UINT8 chFunRtn = CI_ERROR;
UINT16 wRtn = 0u; UINT16 wRtn = 0u;
UINT16 wTrainID = (UINT16)(TRAIN_ID_MIN_IVOC + (trainid & 0x00ffU)); UINT16 wTrainID = (UINT16)(0x1400u + (trainid & 0x00ffu));
wMaxTailLink = GetTrainMinTailLink(wTrainID); wMaxTailLink = GetTrainMinTailLink(wTrainID);
chFunRtn = IsLinkIdValid(wMaxTailLink); chFunRtn = IsLinkIdValid(wMaxTailLink);
@@ -1652,7 +1652,7 @@ UINT8 elm_PrepareComOCID(IN const UINT8 **pOCIDbuff)
else else
{ {
/** 获取本OC通信的OC数量 */ /** 获取本OC通信的OC数量 */
ret = GetCiTransmitSpecifySysDevSum(CI_SYSTEM_TYPE_RCI); ret = GetCiTransmitSpecifySysDevSum(CI_SYSTEM_TYPE_CI);
/** 判断是否存在,不存在直接返回*/ /** 判断是否存在,不存在直接返回*/
if (0u == ret) if (0u == ret)
@@ -1662,7 +1662,7 @@ UINT8 elm_PrepareComOCID(IN const UINT8 **pOCIDbuff)
else else
{ {
/** 获取相邻通信的TIOC ID */ /** 获取相邻通信的TIOC ID */
(*pOCIDbuff) = GetCiTransmitSpecifySysDevBuf(CI_SYSTEM_TYPE_RCI); (*pOCIDbuff) = GetCiTransmitSpecifySysDevBuf(CI_SYSTEM_TYPE_CI);
} }
} }
@@ -1684,7 +1684,7 @@ UINT8 elm_PrepareOCCommStatus(UINT8 OCID)
UINT8 funRtn = TRANSMIT_STATE_BAD; UINT8 funRtn = TRANSMIT_STATE_BAD;
/** 获取OC通信状态 */ /** 获取OC通信状态 */
funRtn = GetCiTransmitState(CI_SYSTEM_TYPE_RCI,OCID); funRtn = GetCiTransmitState(CI_SYSTEM_TYPE_CI,OCID);
/** 设置函数返回值 */ /** 设置函数返回值 */
ASSERT_SETRET(TRANSMIT_STATE_GOOD == funRtn,ret,ELM_COM_STATUS_OK,ELM_COM_STATUS_ERROR) ASSERT_SETRET(TRANSMIT_STATE_GOOD == funRtn,ret,ELM_COM_STATUS_OK,ELM_COM_STATUS_ERROR)
@@ -1771,7 +1771,7 @@ UINT8 elm_PrepareTrainSafeHeadFlag(UINT16 trainId)
{ {
UINT8 ret = CI_ERROR; UINT8 ret = CI_ERROR;
UINT16 funRtn = TRAIN_HEAD_FLAG_YES; UINT16 funRtn = TRAIN_HEAD_FLAG_YES;
UINT16 wTrainID = (UINT16)(TRAIN_ID_MIN_IVOC + (trainId & 0x00ffU)); UINT16 wTrainID = (UINT16)(0x1400u + (trainId & 0x00ffu));
funRtn = GetTrainSafeHeadFlag(wTrainID); funRtn = GetTrainSafeHeadFlag(wTrainID);
@@ -330,6 +330,12 @@ static void elm_FlyingProtect(void)
UINT16 wTrainId = 0U; UINT16 wTrainId = 0U;
UINT8 chTimeCheck = 0u; UINT8 chTimeCheck = 0u;
UINT32 dwFlyOverCyc = 0U; UINT32 dwFlyOverCyc = 0U;
UINT8 cNvramFlag = 0U; /*列车使用NVRAM标志*/
UINT8 cPosMonistorState = 0U; /*列车位置监督状态*/
UINT8 cFuncSwitch = 0U; /*使用NVRAM位置且位置监督无效的列车飞车不宕机开关:0xAA-飞车不宕机 0x55-飞车宕机*/
/*周期清除使用NVRAM位置且位置监督无效的飞车信息*/
ClearNvramFlyingTrain();
chCTCheck = elm_FlyingProtect_CT(); /*检查CT飞车*/ chCTCheck = elm_FlyingProtect_CT(); /*检查CT飞车*/
elm_FlyingProtect_UCT();/*UCT包络飞车删除为UKT*/ elm_FlyingProtect_UCT();/*UCT包络飞车删除为UKT*/
@@ -344,7 +350,7 @@ static void elm_FlyingProtect(void)
{ {
/** 获取数据配置的飞车宕机最大冗余时间 */ /** 获取数据配置的飞车宕机最大冗余时间 */
maxShutdownRedunTime = elm_PrepareCTFlyingRedunTime(); maxShutdownRedunTime = elm_PrepareCTFlyingRedunTime();
cFuncSwitch = GetCiFunctionSwitchConfig(FUNC_NVRAM_TRAIN_FlYING_OVER);
for (ii = 0U; ii < trainCnt; ii++) for (ii = 0U; ii < trainCnt; ii++)
{ {
wTrainId = GetTrainId(ii); wTrainId = GetTrainId(ii);
@@ -352,13 +358,23 @@ static void elm_FlyingProtect(void)
{ {
dwFlyStartCyc = GetTrainStartFlyProtectCycNum(wTrainId); dwFlyStartCyc = GetTrainStartFlyProtectCycNum(wTrainId);
chTimeCheck = SystemOverTimeCheck(dwFlyStartCyc, (UINT32)maxShutdownRedunTime); chTimeCheck = SystemOverTimeCheck(dwFlyStartCyc, (UINT32)maxShutdownRedunTime);
if (CI_TIME_OUT== chTimeCheck)
if (CI_TIME_OUT== chTimeCheck)
{ {
SetFlyProtectOverCyc(dwCurCyc); /*飞车标志*/ 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); /*飞车标志*/
}
} }
else else
{ {
; /*未超过冗余时间*/ ; /*未超过冗余时间或列车通信中断*/
} }
} }
} }
@@ -2066,7 +2082,7 @@ void elm_SafeProtectProcess(void)
else else
{ {
/** CT/UCT车飞车防护--宕机防护*/ /** CT/UCT车飞车防护--宕机防护*/
elm_FlyingProtect(); /*elm_FlyingProtect();*/
} }
/** 本OC范围内的计轴映射表合法性校验 */ /** 本OC范围内的计轴映射表合法性校验 */
@@ -3048,9 +3064,13 @@ UINT8 elm_UCTEnvelopeLeaveAC(UINT8 flag,IN const EnvelopeStruct* pEnvelope,UINT1
UINT32 dwFlyStartCyc = 0U; UINT32 dwFlyStartCyc = 0U;
UINT8 chTimeCheck = 0U; UINT8 chTimeCheck = 0U;
UINT8 flyCheck = 0U; UINT8 flyCheck = 0U;
UINT8 cNvramFlag = 0U; /*列车使用NVRAM标志*/
UINT8 cPosMonistorState = 0U; /*列车位置监督状态*/
UINT8 cFuncSwitch = 0U; /*使用NVRAM位置且位置监督无效的列车飞车不宕机开关:0xAA-飞车不宕机 0x55-飞车宕机*/
/** CT飞车防护*/ /** CT飞车防护*/
trainCnt = elm_PrepareCommTrainID(trainID); trainCnt = elm_PrepareCommTrainID(trainID);
cFuncSwitch = GetCiFunctionSwitchConfig(FUNC_NVRAM_TRAIN_FlYING_OVER);
/** 遍历所有的通信车 */ /** 遍历所有的通信车 */
for (cycle = 0u; cycle < trainCnt; cycle++) for (cycle = 0u; cycle < trainCnt; cycle++)
{ {
@@ -3097,7 +3117,17 @@ UINT8 elm_UCTEnvelopeLeaveAC(UINT8 flag,IN const EnvelopeStruct* pEnvelope,UINT1
chTimeCheck = SystemOverTimeCheck(dwFlyStartCyc, (UINT32)maxShutdownRedunTime); chTimeCheck = SystemOverTimeCheck(dwFlyStartCyc, (UINT32)maxShutdownRedunTime);
if (CI_TIME_OUT == chTimeCheck) if (CI_TIME_OUT == chTimeCheck)
{ {
elm_AddFlyingTrain(trainID[cycle], pEnvelop->id); 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);
}
} }
flyCheck++; flyCheck++;
} }
@@ -2114,8 +2114,10 @@ static UINT8 elm_UCTEnvelopeHeadHandle(UINT8 endlineFlag, IN const EnvelopeStruc
wAgLink = GetBGLinkRelAGLinkId(wLinkId); wAgLink = GetBGLinkRelAGLinkId(wLinkId);
chBgUtSwitch = GetNoCGFollowUtSwitch(); chBgUtSwitch = GetNoCGFollowUtSwitch();
wNextLinkId = FindAdjacentLinkIDSafe(wLinkId, ptemp->endPos.Dir, &wSwitchId, &cDirectionPointFlag); 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))) if ((FUNC_SWITCH_ON == chBgUtSwitch) && (LINK_REL_PHYSEC_BG == chBgAtt) && (wNextLinkId == wAgLink)
{/* B轨UT可追踪开关打开,UCT处于B轨,相邻区段是A轨,CT包络在A轨,此场景不延伸 */ && ((pPretemp->startPos.Lnk == wAgLink) || (pPretemp->endPos.Lnk == wAgLink))
&& (1U == ptemp->ACCnt))
{/* B轨UT可追踪开关打开,UCT仅处于B轨,相邻区段是A轨,CT包络在A轨,此场景不延伸 */
ret = 0x55u; ret = 0x55u;
} }
else else
@@ -2784,8 +2786,10 @@ static UINT8 elm_UCTEnvelopeTailHandle(UINT8 endlineFlag, const EnvelopeStruct *
wAgLink = GetBGLinkRelAGLinkId(wLinkId); wAgLink = GetBGLinkRelAGLinkId(wLinkId);
chBgUtSwitch = GetNoCGFollowUtSwitch(); chBgUtSwitch = GetNoCGFollowUtSwitch();
wNextLinkId = FindAdjacentLinkIDSafe(wLinkId, ~ptemp->startPos.Dir, &wSwitchId, &cDirectionPointFlag); 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))) if ((FUNC_SWITCH_ON == chBgUtSwitch) && (LINK_REL_PHYSEC_BG == chBgAtt) && (wNextLinkId == wAgLink)
{/* B轨UT可追踪开关打开,UCT处于B轨,相邻区段是A轨,CT包络在A轨,此场景不延伸 */ && ((pBacktemp->startPos.Lnk == wAgLink) || (pBacktemp->endPos.Lnk == wAgLink))
&& (1U == ptemp->ACCnt))
{/* B轨UT可追踪开关打开,UCT仅处于B轨,相邻区段是A轨,CT包络在A轨,此场景不延伸 */
ret = 0x55u; ret = 0x55u;
} }
else else
@@ -3291,10 +3295,11 @@ static UINT8 elm_UCTEnvelopeMoving(const EnvelopeStruct* ptemp)
* @return CI_ERROR 转换失败 * @return CI_ERROR 转换失败
* CI_SUCCESS 转换成功 * CI_SUCCESS 转换成功
* @note CT包络转换成UCT时,需要满足: * @note CT包络转换成UCT时,需要满足:
1,无前端可疑 1,无前端可疑
2、包络内包含的道岔无四开且占用, 2、包络内包含的道岔无四开且占用,
3,不为休眠车, 3,不为休眠车,
4、列车车长不小于两倍线路最小车长 4、列车车长不小于两倍线路最小车长
* by cgh 20250915
*/ */
static UINT8 elm_ConvertToUCTCheck(const EnvelopeStruct* ptemp) static UINT8 elm_ConvertToUCTCheck(const EnvelopeStruct* ptemp)
{ {
@@ -3306,6 +3311,7 @@ static UINT8 elm_ConvertToUCTCheck(const EnvelopeStruct* ptemp)
UINT32 minTrainLength = 0U; UINT32 minTrainLength = 0U;
UINT32 dwTempLength = 0U; UINT32 dwTempLength = 0U;
UINT8 chTrainNvramPosFlag = 0U; UINT8 chTrainNvramPosFlag = 0U;
UINT8 chTrainIsIsFollowUtFlag = 0U;/*是否为列车可追踪UT*/
/** 入口参数校验 */ /** 入口参数校验 */
ASSERT_RET_VALUE(NULL == ptemp,ret,0x80000000U); ASSERT_RET_VALUE(NULL == ptemp,ret,0x80000000U);
@@ -3357,6 +3363,17 @@ static UINT8 elm_ConvertToUCTCheck(const EnvelopeStruct* ptemp)
{ {
; /* 不满足转为UCT条件 */ ; /* 不满足转为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); ASSERT_SETRET(0U == errorCode,ret,CI_SUCCESS,CI_ERROR);
@@ -14,7 +14,6 @@
FloodGateDataStruct FloodGateDataStru[FLOOD_GATE_SUM_MAX]; /*定义防淹门动态数据*/ FloodGateDataStruct FloodGateDataStru[FLOOD_GATE_SUM_MAX]; /*定义防淹门动态数据*/
FloodGateDataStructCC FloodGateDataStruCC[FLOOD_GATE_SUM_MAX]; /*定义防淹门动态数据-车车*/
/* /*
@@ -27,16 +26,7 @@ FloodGateDataStruct *GetFloodGateData(void)
{ {
return FloodGateDataStru; return FloodGateDataStru;
} }
/*
* 功能描述: 获取防淹门数据结构体指针车车
* 参数说明:
* 返回值
FloodGateDataStructCC *
*/
FloodGateDataStructCC* GetFloodGateDataCC(void)
{
return FloodGateDataStruCC;
}
/* /*
* 功能描述: 获取指定ID防淹门开门锁闭状态 * 功能描述: 获取指定ID防淹门开门锁闭状态
@@ -492,7 +482,7 @@ UINT8 GetFloodGateCloseApplyIvocSum(const UINT16 floodGateId)
if (0u < bufIndex) if (0u < bufIndex)
{ {
reVal = FloodGateDataStruCC[bufIndex].FloodGateCloseApplyIvocSum; reVal = FloodGateDataStru[bufIndex].FloodGateCloseApplyIvocSum;
} }
else else
{ {
@@ -515,7 +505,7 @@ void SetFloodGateCloseApplyIvocSum(const UINT16 floodGateId, const UINT8 wTrainS
if (0u < bufIndex) if (0u < bufIndex)
{ {
FloodGateDataStruCC[bufIndex].FloodGateCloseApplyIvocSum = wTrainSum; FloodGateDataStru[bufIndex].FloodGateCloseApplyIvocSum = wTrainSum;
} }
else else
{ {
@@ -537,7 +527,7 @@ UINT16* GetFloodGateCloseApplyIvocId(const UINT16 floodGateId)
if (0u < bufIndex) if (0u < bufIndex)
{ {
applyIvocBuf = FloodGateDataStruCC[bufIndex].FloodGateCloseApplyIvocId; applyIvocBuf = FloodGateDataStru[bufIndex].FloodGateCloseApplyIvocId;
} }
else else
{ {
@@ -559,11 +549,11 @@ void SetFloodGateCloseApplyIvocId(const UINT16 floodGateId, const UINT16* applyI
if (0u < bufIndex) if (0u < bufIndex)
{ {
(void)CommonMemSet(FloodGateDataStruCC[bufIndex].FloodGateCloseApplyIvocId, (void)CommonMemSet(FloodGateDataStru[bufIndex].FloodGateCloseApplyIvocId,
(UINT32)(sizeof(UINT16)*FLOOD_GATE_APPLY_TRAIN_SUM_MAX), (UINT32)(sizeof(UINT16)*FLOOD_GATE_APPLY_TRAIN_SUM_MAX),
0U, (UINT32)(sizeof(UINT16)*FLOOD_GATE_APPLY_TRAIN_SUM_MAX)); /*先出清,防止脏数据*/ 0U, (UINT32)(sizeof(UINT16)*FLOOD_GATE_APPLY_TRAIN_SUM_MAX)); /*先出清,防止脏数据*/
(void)CommonMemCpy(FloodGateDataStruCC[bufIndex].FloodGateCloseApplyIvocId, /*赋值申请的列车ID*/ (void)CommonMemCpy(FloodGateDataStru[bufIndex].FloodGateCloseApplyIvocId, /*赋值申请的列车ID*/
(UINT32)(sizeof(UINT16)*FLOOD_GATE_APPLY_TRAIN_SUM_MAX), (UINT32)(sizeof(UINT16)*FLOOD_GATE_APPLY_TRAIN_SUM_MAX),
applyIvocBuf, (UINT32)(sizeof(UINT16)*FLOOD_GATE_APPLY_TRAIN_SUM_MAX)); applyIvocBuf, (UINT32)(sizeof(UINT16)*FLOOD_GATE_APPLY_TRAIN_SUM_MAX));
} }
@@ -584,7 +574,7 @@ FloodGateTrainAnsStruct* GetFloodGateCloseFromIvocStru(const UINT16 floodGateId)
if (0u < bufIndex) if (0u < bufIndex)
{ {
retVal = FloodGateDataStruCC[bufIndex].FloodGateCloseFromIvocStru; retVal = FloodGateDataStru[bufIndex].FloodGateCloseFromIvocStru;
} }
else else
{ {
@@ -620,7 +610,7 @@ void SetFloodGateAllowCloseFlagIVOC(UINT16 floodGateId, UINT16 wTrainId, UINT8 a
trainSumIndex = chIvocSum; trainSumIndex = chIvocSum;
for (ii = 0U; ii < chIvocSum; ii++) for (ii = 0U; ii < chIvocSum; ii++)
{ {
if (FloodGateDataStruCC[bufIndex].FloodGateCloseFromIvocStru[ii].wTrainId == wTrainId) if (FloodGateDataStru[bufIndex].FloodGateCloseFromIvocStru[ii].wTrainId == wTrainId)
{ {
retVal = CI_ERROR; /*已存入过的列车,且回复了,不再存入*/ retVal = CI_ERROR; /*已存入过的列车,且回复了,不再存入*/
break; break;
@@ -629,8 +619,8 @@ void SetFloodGateAllowCloseFlagIVOC(UINT16 floodGateId, UINT16 wTrainId, UINT8 a
if (CI_SUCCESS == retVal) if (CI_SUCCESS == retVal)
{ {
FloodGateDataStruCC[bufIndex].FloodGateCloseFromIvocStru[trainSumIndex].wTrainId = wTrainId; FloodGateDataStru[bufIndex].FloodGateCloseFromIvocStru[trainSumIndex].wTrainId = wTrainId;
FloodGateDataStruCC[bufIndex].FloodGateCloseFromIvocStru[trainSumIndex].wFloodGateCloseIvocFlag = agreeFlag; /*检查标志的时候,查所有起始周期询问的列车是否都回复了同意*/ FloodGateDataStru[bufIndex].FloodGateCloseFromIvocStru[trainSumIndex].wFloodGateCloseIvocFlag = agreeFlag; /*检查标志的时候,查所有起始周期询问的列车是否都回复了同意*/
chIvocSum++; chIvocSum++;
SetFloodGateCloseAnsIvocSum(floodGateId, chIvocSum); SetFloodGateCloseAnsIvocSum(floodGateId, chIvocSum);
} }
@@ -663,8 +653,8 @@ void ClearFloodGateAllowClosFlagIVOC(UINT16 floodGateId)
{ {
for (ii = 0U; ii < chIvocSum; ii++) for (ii = 0U; ii < chIvocSum; ii++)
{ {
FloodGateDataStruCC[bufIndex].FloodGateCloseFromIvocStru[ii].wTrainId = 0U; FloodGateDataStru[bufIndex].FloodGateCloseFromIvocStru[ii].wTrainId = 0U;
FloodGateDataStruCC[bufIndex].FloodGateCloseFromIvocStru[ii].wFloodGateCloseIvocFlag = FLOOD_GATE_NOT_ALLOWCLOSE_IVOC; FloodGateDataStru[bufIndex].FloodGateCloseFromIvocStru[ii].wFloodGateCloseIvocFlag = FLOOD_GATE_NOT_ALLOWCLOSE_IVOC;
} }
SetFloodGateCloseAnsIvocSum(floodGateId, 0U); SetFloodGateCloseAnsIvocSum(floodGateId, 0U);
} }
@@ -684,7 +674,7 @@ UINT8 GetFloodGateAccessUTFlag(const UINT16 floodGateId)
if (0u < bufIndex) if (0u < bufIndex)
{ {
reVal = FloodGateDataStruCC[bufIndex].FloodGateAccessUTFlag; reVal = FloodGateDataStru[bufIndex].FloodGateAccessUTFlag;
} }
else else
{ {
@@ -709,7 +699,7 @@ void SetFloodGateAccessUTFlag(const UINT16 floodGateId, const UINT8 accessUTFlag
{ {
if ((FLOOD_GATE_ACCESS_UT_YES == accessUTFlag) || (FLOOD_GATE_ACCESS_UT_NO == accessUTFlag)) if ((FLOOD_GATE_ACCESS_UT_YES == accessUTFlag) || (FLOOD_GATE_ACCESS_UT_NO == accessUTFlag))
{/*混跑或者纯CT跑*/ {/*混跑或者纯CT跑*/
FloodGateDataStruCC[bufIndex].FloodGateAccessUTFlag = accessUTFlag; FloodGateDataStru[bufIndex].FloodGateAccessUTFlag = accessUTFlag;
} }
} }
else else
@@ -732,7 +722,7 @@ UINT8 GetFloodGateCloseAnsIvocSum(const UINT16 floodGateId)
if (0u < bufIndex) if (0u < bufIndex)
{ {
reVal = FloodGateDataStruCC[bufIndex].FloodGateCloseAnsIvocSum; reVal = FloodGateDataStru[bufIndex].FloodGateCloseAnsIvocSum;
} }
else else
{ {
@@ -755,7 +745,7 @@ void SetFloodGateCloseAnsIvocSum(const UINT16 floodGateId, const UINT8 wTrainSum
if (0u < bufIndex) if (0u < bufIndex)
{ {
FloodGateDataStruCC[bufIndex].FloodGateCloseAnsIvocSum = wTrainSum; FloodGateDataStru[bufIndex].FloodGateCloseAnsIvocSum = wTrainSum;
} }
else else
{ {
@@ -50,23 +50,21 @@ typedef struct S_FloodGateDataStruct
* 条件1为当前关门请求为是,且条件2满足,当前同意关门状态才为同意; * 条件1为当前关门请求为是,且条件2满足,当前同意关门状态才为同意;
*/ */
UINT8 CurAgreeCloseStateOut; /*当前同意关门输出状态(动态字段):FLOOD_GATE_AGREE_CLOSE、FLOOD_GATE_NOT_AGREE_CLOSE*/ UINT8 CurAgreeCloseStateOut; /*当前同意关门输出状态(动态字段):FLOOD_GATE_AGREE_CLOSE、FLOOD_GATE_NOT_AGREE_CLOSE*/
UINT32 CurYGJCrossLineStartCount;/*当前YGJ混线开始时间*/
UINT32 CurFloodGateDelayCloseStartCyc; /*防淹门接近区段占压延时关门开始时间*/
} FloodGateDataStruct;
/*防淹门数据结构体*/ UINT32 CurYGJCrossLineStartCount;/*当前YGJ混线开始时间*/
typedef struct S_FloodGateDataStructCC
{ UINT32 CurFloodGateDelayCloseStartCyc; /*防淹门接近区段占压延时关门开始时间*/
UINT16 FloodGateId; /*防淹门ID (初始化字段)*/
UINT8 FloodGateCloseApplyIvocSum; /*防淹门关门申请列车数量*/ UINT8 FloodGateCloseApplyIvocSum; /*防淹门关门申请列车数量*/
UINT16 FloodGateCloseApplyIvocId[FLOOD_GATE_APPLY_TRAIN_SUM_MAX]; /*防淹门关门申请列车ID*/ UINT16 FloodGateCloseApplyIvocId[FLOOD_GATE_APPLY_TRAIN_SUM_MAX]; /*防淹门关门申请列车ID*/
UINT8 FloodGateCloseAnsIvocSum; /*防淹门关门允许,列车回复数量*/ UINT8 FloodGateCloseAnsIvocSum; /*防淹门关门允许,列车回复数量*/
FloodGateTrainAnsStruct FloodGateCloseFromIvocStru[FLOOD_GATE_APPLY_TRAIN_SUM_MAX]; /*列车同意防淹门关门请求结构体*/ FloodGateTrainAnsStruct FloodGateCloseFromIvocStru[FLOOD_GATE_APPLY_TRAIN_SUM_MAX]; /*列车同意防淹门关门请求结构体*/
UINT8 FloodGateAccessUTFlag; /*防淹门接近区段是否有非通信车标志*/ UINT8 FloodGateAccessUTFlag; /*防淹门接近区段是否有非通信车标志*/
}FloodGateDataStructCC; } FloodGateDataStruct;
/*******************************全局变量声明*******************************/ /*******************************全局变量声明*******************************/
extern FloodGateDataStruct FloodGateDataStru[FLOOD_GATE_SUM_MAX]; /*定义防淹门动态数据*/ extern FloodGateDataStruct FloodGateDataStru[FLOOD_GATE_SUM_MAX]; /*定义防淹门动态数据*/
extern FloodGateDataStructCC FloodGateDataStruCC[FLOOD_GATE_SUM_MAX]; /*定义防淹门动态数据-车车*/
/* /*
* 功能描述: 获取防淹门数据结构体指针 * 功能描述: 获取防淹门数据结构体指针
* 参数说明: * 参数说明:
@@ -74,13 +72,6 @@ extern FloodGateDataStructCC FloodGateDataStruCC[FLOOD_GATE_SUM_MAX]; /*
FloodGateDataStruct * FloodGateDataStruct *
*/ */
FloodGateDataStruct *GetFloodGateData(void); FloodGateDataStruct *GetFloodGateData(void);
/*
* 功能描述: 获取防淹门数据结构体指针车车
* 参数说明:
* 返回值
FloodGateDataStructCC *
*/
FloodGateDataStructCC* GetFloodGateDataCC(void);
/* /*
* 功能描述: 获取指定ID防淹门开门锁闭状态 * 功能描述: 获取指定ID防淹门开门锁闭状态
@@ -14,7 +14,7 @@
#include "WLScreenDataPrepare.h" #include "WLScreenDataPrepare.h"
GaragedoorDataStruct GaragedoorDataStru[GARAGE_DOOR_SUM_MAX]; /*定义车库门数据结构体*/ GaragedoorDataStruct GaragedoorDataStru[GARAGE_DOOR_SUM_MAX]; /*定义车库门数据结构体*/
GaragedoorDataStructCC GaragedoorDataStruCC[GARAGE_DOOR_SUM_MAX]; /*定义车库门数据结构体-车车*/
/* /*
* 功能描述: 获取指定车库门数据 * 功能描述: 获取指定车库门数据
@@ -26,16 +26,7 @@ GaragedoorDataStruct *GetGaragedoorData(void)
{ {
return GaragedoorDataStru; return GaragedoorDataStru;
} }
/*
* 功能描述: 获取指定车库门数据-车车
* 参数说明:
* 返回值
GaragedoorDataStructCC *
*/
GaragedoorDataStructCC* GetGaragedoorDataCC(void)
{
return GaragedoorDataStruCC;
}
/* /*
* 功能描述: 获取指定ID车库门状态 * 功能描述: 获取指定ID车库门状态
* 参数说明: const UINT16 garagedoorId, 车库门ID * 参数说明: const UINT16 garagedoorId, 车库门ID
@@ -152,7 +143,7 @@ UINT8 GetGaragedoorAllowCloseFlagIVOC(const UINT16 garagedoorId)
if (bufIndex < GARAGE_DOOR_SUM_MAX) if (bufIndex < GARAGE_DOOR_SUM_MAX)
{ {
reVal = GaragedoorDataStruCC[bufIndex].GDAllowCloseFlagIVOC; reVal = GaragedoorDataStru[bufIndex].GDAllowCloseFlagIVOC;
} }
return reVal; return reVal;
@@ -176,7 +167,7 @@ void SetGaragedoorAllowCloseFlagIVOC(const UINT16 garagedoorId, const UINT8 allo
if ((GARAGE_DOOR_ALLOW_CLOSE_YES == allowCloseFlag) || (GARAGE_DOOR_ALLOW_CLOSE_NO == allowCloseFlag)) if ((GARAGE_DOOR_ALLOW_CLOSE_YES == allowCloseFlag) || (GARAGE_DOOR_ALLOW_CLOSE_NO == allowCloseFlag))
{ {
GaragedoorDataStruCC[bufIndex].GDAllowCloseFlagIVOC = allowCloseFlag; /*允许关门标志*/ GaragedoorDataStru[bufIndex].GDAllowCloseFlagIVOC = allowCloseFlag; /*允许关门标志*/
} }
} }
@@ -199,7 +190,7 @@ UINT16 GetGaragedoorNearestTrainId(const UINT16 garagedoorId)
if (bufIndex < GARAGE_DOOR_SUM_MAX) if (bufIndex < GARAGE_DOOR_SUM_MAX)
{ {
reVal = GaragedoorDataStruCC[bufIndex].GDAkuNearestTrainId; reVal = GaragedoorDataStru[bufIndex].GDAkuNearestTrainId;
} }
return reVal; return reVal;
@@ -224,7 +215,7 @@ void SetGaragedoorNearestTrainId(const UINT16 garagedoorId, const UINT16 trainId
if (UINT16_MAX!= trainId) if (UINT16_MAX!= trainId)
{ {
GaragedoorDataStruCC[bufIndex].GDAkuNearestTrainId = trainId; /*允许关门标志*/ GaragedoorDataStru[bufIndex].GDAkuNearestTrainId = trainId; /*允许关门标志*/
} }
} }
@@ -570,7 +561,7 @@ void SetWaiteIVOCResponseStartCycNum(const UINT16 garagedoorId, const UINT32 sta
if (bufIndex < GARAGE_DOOR_SUM_MAX) if (bufIndex < GARAGE_DOOR_SUM_MAX)
{ {
GaragedoorDataStruCC[bufIndex].waiteIVOCResponseStartCycNum = startCycNum; /*起始周期号*/ GaragedoorDataStru[bufIndex].waiteIVOCResponseStartCycNum = startCycNum; /*起始周期号*/
} }
} }
@@ -590,7 +581,7 @@ UINT32 GetWaiteIVOCResponseStartCycNum(const UINT16 garagedoorId)
if (bufIndex < GARAGE_DOOR_SUM_MAX) if (bufIndex < GARAGE_DOOR_SUM_MAX)
{ {
ret = GaragedoorDataStruCC[bufIndex].waiteIVOCResponseStartCycNum; ret = GaragedoorDataStru[bufIndex].waiteIVOCResponseStartCycNum;
} }
return ret; return ret;
@@ -32,7 +32,8 @@ typedef struct S_GaragedoorDataStruct
UINT16 GaragedoorId; /*车库门ID (初始化字段)*/ UINT16 GaragedoorId; /*车库门ID (初始化字段)*/
UINT8 GaragedoorState; /*车库门状态 (动态字段)*/ UINT8 GaragedoorState; /*车库门状态 (动态字段)*/
UINT8 GaragedoorAllowCloseFlag; /*车库门允许关门标志,ZC发送*/ UINT8 GaragedoorAllowCloseFlag; /*车库门允许关门标志,ZC发送*/
UINT8 GDAllowCloseFlagIVOC; /*车库门允许关门标志,IVOC发送*/
UINT16 GDAkuNearestTrainId; /*A库物理区段上最接近的列车*/
UINT8 GaragedoorModeState; /*车库门模式状态*/ UINT8 GaragedoorModeState; /*车库门模式状态*/
UINT8 GaragedoorFaultState; /*车库门故障状态*/ UINT8 GaragedoorFaultState; /*车库门故障状态*/
UINT8 GaragedoorPangLuState; /*车库门旁路状态*/ UINT8 GaragedoorPangLuState; /*车库门旁路状态*/
@@ -40,21 +41,14 @@ typedef struct S_GaragedoorDataStruct
UINT8 cmdProcessState; /* 命令处理状态 */ UINT8 cmdProcessState; /* 命令处理状态 */
UINT32 drvDoorStartCycle; /* 驱动开始时间,预留 */ UINT32 drvDoorStartCycle; /* 驱动开始时间,预留 */
UINT32 waiteZCResponseStartCycNum; /*等待ZC反馈开始时间*/ UINT32 waiteZCResponseStartCycNum; /*等待ZC反馈开始时间*/
UINT32 waiteIVOCResponseStartCycNum; /*等待IVOC反馈开始时间*/
UINT32 GaragedoorOpenStartCycNum; /*车库门打开开始周期 (动态字段)*/ UINT32 GaragedoorOpenStartCycNum; /*车库门打开开始周期 (动态字段)*/
UINT32 GaragedoorCloseStartCycNum; /*车库门关闭开始周期 (动态字段)*/ UINT32 GaragedoorCloseStartCycNum; /*车库门关闭开始周期 (动态字段)*/
} GaragedoorDataStruct; } GaragedoorDataStruct;
/*车库门数据结构体*/
typedef struct S_GaragedoorDataStructCC
{
UINT16 GaragedoorId; /*车库门ID (初始化字段)*/
UINT8 GDAllowCloseFlagIVOC; /*车库门允许关门标志,IVOC发送*/
UINT16 GDAkuNearestTrainId; /*A库物理区段上最接近的列车*/
UINT32 waiteIVOCResponseStartCycNum; /*等待IVOC反馈开始时间*/
}GaragedoorDataStructCC;
extern GaragedoorDataStruct GaragedoorDataStru[GARAGE_DOOR_SUM_MAX]; /*定义车库门数据结构体*/ extern GaragedoorDataStruct GaragedoorDataStru[GARAGE_DOOR_SUM_MAX]; /*定义车库门数据结构体*/
extern GaragedoorDataStructCC GaragedoorDataStruCC[GARAGE_DOOR_SUM_MAX]; /*定义车库门数据结构体-车车*/
/* /*
* 功能描述: 获取指定车库门数据 * 功能描述: 获取指定车库门数据
* 参数说明: * 参数说明:
@@ -62,13 +56,6 @@ extern GaragedoorDataStructCC GaragedoorDataStruCC[GARAGE_DOOR_SUM_MAX]; /*
GaragedoorDataStruct * GaragedoorDataStruct *
*/ */
GaragedoorDataStruct *GetGaragedoorData(void); GaragedoorDataStruct *GetGaragedoorData(void);
/*
* 功能描述: 获取指定车库门数据-车车
* 参数说明:
* 返回值
GaragedoorDataStructCC *
*/
GaragedoorDataStructCC* GetGaragedoorDataCC(void);
/* /*
* 功能描述: 获取指定ID车库门驱动状态 * 功能描述: 获取指定ID车库门驱动状态
@@ -93,7 +93,7 @@ UINT8 HLHTRecvCommonPacketHeadCheck(UINT16 LocalDevName, UINT16 RemoteDevName, U
UINT32 LocalEtcsId = 0u; /*发送方标识*/ UINT32 LocalEtcsId = 0u; /*发送方标识*/
UINT32 RemoteEtcsId = 0u; /*接收方标识*/ UINT32 RemoteEtcsId = 0u; /*接收方标识*/
UINT32 emapVer = 0U;/*应该使用的电子地图版本*/ UINT32 emapVer = 0U;/*应该使用的电子地图版本*/
UINT8 emapCheckVer = CI_ERROR; /*电子地图版本获取结果*/ UINT8 emapCheckVer = 0U; /*电子地图版本校验结果*/
UINT8 chRet = 0U; UINT8 chRet = 0U;
/*错误码每次都清零*/ /*错误码每次都清零*/
@@ -109,65 +109,29 @@ UINT8 HLHTRecvCommonPacketHeadCheck(UINT16 LocalDevName, UINT16 RemoteDevName, U
; ;
} }
/*发送方校验*/
if ((CI_SYSTEM_TYPE_OC == devType) || (CI_SYSTEM_TYPE_XIANDI == devType) || (CI_SYSTEM_TYPE_ATS == devType)) chRet = dquDevName2HlhtId(LocalDevName, logId, &LocalEtcsId);
if ((CI_ERROR == chRet) || (pMICommonPackage->sourceId != LocalEtcsId))
{ {
/*OC/现地/ATS无互联互通ID*/ *pErrorCode |= GAL_COMPARE_SEND_FLAG_ERR;
if ((UINT16)(pMICommonPackage->sourceId & 0x0000FFFFU) != LocalDevName)
{
*pErrorCode |= GAL_COMPARE_SEND_FLAG_ERR;
}
else
{
;
}
if((UINT16)(pMICommonPackage->destId & 0x0000FFFFU) != RemoteDevName)
{
*pErrorCode |= GAL_COMPARE_RECV_FLAG_ERR;
}
else
{
;
}
} }
else else
{ {
/*发送方校验*/ ;
chRet = dquDevName2HlhtId(LocalDevName, logId, &LocalEtcsId);
if ((CI_ERROR == chRet) || (pMICommonPackage->sourceId != LocalEtcsId))
{
*pErrorCode |= GAL_COMPARE_SEND_FLAG_ERR;
}
else
{
;
}
/*接收方校验*/
chRet = dquDevName2HlhtId(RemoteDevName, logId, &RemoteEtcsId);
if ((CI_ERROR == chRet) || (pMICommonPackage->destId != RemoteEtcsId))
{
*pErrorCode |= GAL_COMPARE_RECV_FLAG_ERR;
}
else
{
;
}
} }
if ((CI_SYSTEM_TYPE_CI == devType) || (CI_SYSTEM_TYPE_RC == devType)) /*接收方校验*/
chRet = dquDevName2HlhtId(RemoteDevName, logId, &RemoteEtcsId);
if ((CI_ERROR == chRet) || (pMICommonPackage->destId != RemoteEtcsId))
{ {
emapVer = GetCiTranCiDataCheckVer((UINT8)(RemoteDevName & 0x00FFU), LocalDevName); *pErrorCode |= GAL_COMPARE_RECV_FLAG_ERR;
emapCheckVer = CI_SUCCESS;
}
else if (CI_SYSTEM_TYPE_OC == devType)
{
emapVer = GetCiTranOcDataCheckVer((UINT8)(RemoteDevName & 0x00FFU), LocalDevName);
emapCheckVer = CI_SUCCESS;
} }
else else
{ {
emapCheckVer = GetCiEmapCheckVer((UINT8)RemoteDevName, &emapVer, devType); ;
} }
emapCheckVer = GetCiEmapCheckVer((UINT8)RemoteDevName, &emapVer, devType);
if (CI_SUCCESS == emapCheckVer) if (CI_SUCCESS == emapCheckVer)
{ {
/*电子地图版本校验信息(4字节CRC比较)*/ /*电子地图版本校验信息(4字节CRC比较)*/
@@ -15,20 +15,15 @@
#include "../2oo2/2oo2InterfaceDataManage.h" #include "../2oo2/2oo2InterfaceDataManage.h"
#include "CommonMemory.h" #include "CommonMemory.h"
HLHTHeadContextStru ciHLHTHeadCtxs[CI_SUM_MAX]={0U};/*存放与本控区通信的相邻CI互联互通报文头上下文数据*/ HLHTHeadContextStru ciHLHTHeadCtxs[CI_SUM_MAX]={0};/*存放与本CI通信的相邻CI互联互通报文头上下文数据*/
HLHTHeadContextStru gSzRcHLHTHeadCtxs[CI_SUM_MAX] = { 0U }; /*存放与本控区通信的相邻RC互联互通报文头上下文数据*/ HLHTHeadContextStru vobcHLHTHeadCtxs[VOBC_SUM_MAX]={0};/*存放与本CI通信的VOBC互联互通报文头上下文数据*/
HLHTHeadContextStru vobcHLHTHeadCtxs[VOBC_SUM_MAX]={0U};/*存放与本CI通信的VOBC互联互通报文头上下文数据*/ HLHTHeadContextStru vobcBackupHLHTHeadCtxs[VOBC_BACKUP_SUM_MAX] = { 0 };/*存放与本CI通信的后备模式VOBC互联互通报文头上下文数据*/
HLHTHeadContextStru vobcBackupHLHTHeadCtxs[VOBC_BACKUP_SUM_MAX] = { 0U };/*存放与本CI通信的后备模式VOBC互联互通报文头上下文数据*/ HLHTHeadContextStru zcHLHTHeadCtxs[ZC_SUM_MAX]={0};/*存放与本CI通信的ZC互联互通报文头上下文数据*/
HLHTHeadContextStru zcHLHTHeadCtxs[ZC_SUM_MAX]={0U};/*存放与本CI通信的ZC互联互通报文头上下文数据*/ HLHTHeadContextStru ocHLHTHeadCtxs[OC_SUM_MAX]={0};/*存放与本CI通信的OC互联互通报文头上下文数据*/
HLHTHeadContextStru ocHLHTHeadCtxs[OC_SUM_MAX]={0U};/*存放与本CI通信的OC互联互通报文头上下文数据*/ HLHTHeadContextStru axleHLHTHeadCtxs[AXLE_SUM_MAX] = { 0 };/*存放与本CI通信的计轴系统互联互通报文头上下文数据*/
HLHTHeadContextStru ocHLHTHeadCtxsCiToRc[OC_SUM_MAX] = { 0U };/*存放同步的CI通-OC互联互通报文头上下文数据*/ HLHTHeadContextStru tmcHLHTHeadCtxs[TMC_SUM_MAX] = { 0 };/*存放与本TIOC通信的TMC互联互通报文头上下文数据*/
HLHTHeadContextStru axleHLHTHeadCtxs[AXLE_SUM_MAX] = { 0U };/*存放与本CI通信的计轴系统互联互通报文头上下文数据*/
HLHTHeadContextStru gSzRcAxleHLHTHeadCtxs[AXLE_SUM_MAX] = { 0U };/*存放与RC通信的计轴系统互联互通报文头上下文数据*/
HLHTHeadContextStru tmcHLHTHeadCtxs[TMC_SUM_MAX] = { 0U };/*存放与本TIOC通信的TMC互联互通报文头上下文数据*/
HLHTHeadContextStru IteHLHTHeadCtxs[ITE_SUM_MAX][VOBC_INC_ITE_SUM_MAX] = { 0U };/*存放与本TIOC通信的ITE互联互通报文头上下文数据*/ HLHTHeadContextStru IteHLHTHeadCtxs[ITE_SUM_MAX][VOBC_INC_ITE_SUM_MAX] = { 0U };/*存放与本TIOC通信的ITE互联互通报文头上下文数据*/
HLHTHeadContextStru gSzXiandiHLHTHeadCtxs[ATS_SUM_MAX] = { 0U };/*存放与本CI通信的现地互联互通报文头上下文数据*/
HLHTHeadContextStru gSzAtsHLHTHeadCtxs[ATS_SUM_MAX] = { 0U };/*存放与本CI通信的ATS互联互通报文头上下文数据*/
HLHTHeadContextStru vobcToRcHLHTHeadCtxs[VOBC_SUM_MAX] = { 0 };/*RC模式下,存放与本RC通信的510 VOBC互联互通报文头上下文数据。CI模式下不使用*/
/* /*
* 功能描述:本地函数,获得某种设备类型的用于后续运算的互联互通头上下文数据 * 功能描述:本地函数,获得某种设备类型的用于后续运算的互联互通头上下文数据
* 参数说明: * 参数说明:
@@ -422,7 +417,6 @@ void ProcHlhtHeadCtxTimeOut(void)
{ {
UINT32 timeoutSnCount = 0U; UINT32 timeoutSnCount = 0U;
UINT32 timeoutSpan = 0U; UINT32 timeoutSpan = 0U;
UINT8 chSystemWorkType = GetSystemWorkType();; /*系统工作类型*/
/*处理VOBC通用报文头的时效性*/ /*处理VOBC通用报文头的时效性*/
timeoutSnCount = GetCiAndVobcTransBadEnsureCnt(); timeoutSnCount = GetCiAndVobcTransBadEnsureCnt();
@@ -442,11 +436,6 @@ void ProcHlhtHeadCtxTimeOut(void)
timeoutSpan = GetCiAndCiTransmitBadEnsureTime(); timeoutSpan = GetCiAndCiTransmitBadEnsureTime();
ProcHlhtHeadCtxTimeOutDiffSys(timeoutSnCount, timeoutSpan, ciHLHTHeadCtxs, CI_SUM_MAX); ProcHlhtHeadCtxTimeOutDiffSys(timeoutSnCount, timeoutSpan, ciHLHTHeadCtxs, CI_SUM_MAX);
/*处理RC通用报文头的时效性*/
timeoutSnCount = GetCiAndCiTransBadEnsureCnt();
timeoutSpan = GetCiAndCiTransmitBadEnsureTime();
ProcHlhtHeadCtxTimeOutDiffSys(timeoutSnCount, timeoutSpan, gSzRcHLHTHeadCtxs, CI_SUM_MAX);
/*处理与CI通信的ZC通用报文头的时效性*/ /*处理与CI通信的ZC通用报文头的时效性*/
timeoutSnCount = GetCiAndZcTransBadEnsureCnt(); timeoutSnCount = GetCiAndZcTransBadEnsureCnt();
timeoutSpan = GetCiAndZcTransmitBadEnsureTime(); timeoutSpan = GetCiAndZcTransmitBadEnsureTime();
@@ -462,38 +451,10 @@ void ProcHlhtHeadCtxTimeOut(void)
timeoutSpan = GetCiAndOcTransmitBadEnsureTime(); timeoutSpan = GetCiAndOcTransmitBadEnsureTime();
ProcHlhtHeadCtxTimeOutDiffSys(timeoutSnCount, timeoutSpan, ocHLHTHeadCtxs, OC_SUM_MAX); ProcHlhtHeadCtxTimeOutDiffSys(timeoutSnCount, timeoutSpan, ocHLHTHeadCtxs, OC_SUM_MAX);
#if 0
/*不需要处理CI同步过来的数据 需要留着周期号用来做接收数据判断*/
ProcHlhtHeadCtxTimeOutDiffSys(timeoutSnCount, timeoutSpan, ocHLHTHeadCtxsCiToRc, OC_SUM_MAX);
#endif
/*处理与AXLE通信报文头的时效性*/ /*处理与AXLE通信报文头的时效性*/
timeoutSnCount = GetCiAndAxleTransBadEnsureCnt(); timeoutSnCount = GetCiAndAxleTransBadEnsureCnt();
timeoutSpan = GetCiAndAxleTransBadEnsureTime(); timeoutSpan = GetCiAndAxleTransBadEnsureTime();
ProcHlhtHeadCtxTimeOutDiffSys(timeoutSnCount, timeoutSpan, axleHLHTHeadCtxs, AXLE_SUM_MAX); ProcHlhtHeadCtxTimeOutDiffSys(timeoutSnCount, timeoutSpan, axleHLHTHeadCtxs, AXLE_SUM_MAX);
if ((SYSTEM_WORK_MODE_ALL == chSystemWorkType) && (RC_WORK_MODE_TIOC == CI_SYSTEM_TYPE_RCI))
{
/*双系统RC还需要处理RC通用报文头*/
ProcHlhtHeadCtxTimeOutDiffSys(timeoutSnCount, timeoutSpan, gSzRcAxleHLHTHeadCtxs, AXLE_SUM_MAX);
}
else
{
;
}
/*处理与现地通信报文头的时效性*/
timeoutSnCount = GetCiAndAtsTransBadEnsureCnt();
timeoutSpan = GetCiAndAtsTransBadEnsureTime();
ProcHlhtHeadCtxTimeOutDiffSys(timeoutSnCount, timeoutSpan, gSzXiandiHLHTHeadCtxs, ATS_SUM_MAX);
/*处理与ATS通信报文头的时效性*/
timeoutSnCount = GetCiAndAtsTransBadEnsureCnt();
timeoutSpan = GetCiAndAtsTransBadEnsureTime();
ProcHlhtHeadCtxTimeOutDiffSys(timeoutSnCount, timeoutSpan, gSzAtsHLHTHeadCtxs, ATS_SUM_MAX);
/*处理VOBC通用报文头的时效性*/
timeoutSnCount = GetCiAndVobcTransBadEnsureCnt();
timeoutSpan = GetCiAndVobcTransBadEnsureTime();
ProcHlhtHeadCtxTimeOutDiffSys(timeoutSnCount, timeoutSpan, vobcToRcHLHTHeadCtxs, VOBC_SUM_MAX);
} }
/* /*
* 功能描述: 根据设备类型,获得具备初始通信互联互通头的所有设备ID * 功能描述: 根据设备类型,获得具备初始通信互联互通头的所有设备ID
@@ -576,43 +537,18 @@ static UINT8 GetHLHTHeadCtxTmepVars(const UINT8 devType, UINT16 *devMaxSum, HLHT
UINT8 retVal = CI_ERROR; UINT8 retVal = CI_ERROR;
UINT16 maxDevSum = 0u; UINT16 maxDevSum = 0u;
HLHTHeadContextStru *tempHeadCtxPtr = NULL; HLHTHeadContextStru *tempHeadCtxPtr = NULL;
UINT8 chSystemWorkType = GetSystemWorkType();; /*系统工作类型*/
UINT8 cRcWorkMode = 0U;/*本系统当前工作模式*/
cRcWorkMode = GetLocalRcWorkMode(); if ((CI_SYSTEM_TYPE_CI == devType))
if (CI_SYSTEM_TYPE_CI == devType)
{ {
maxDevSum = CI_SUM_MAX; maxDevSum = CI_SUM_MAX;
tempHeadCtxPtr = ciHLHTHeadCtxs; tempHeadCtxPtr = ciHLHTHeadCtxs;
retVal = CI_SUCCESS; retVal = CI_SUCCESS;
} }
else if (CI_SYSTEM_TYPE_RC == devType)
{
maxDevSum = CI_SUM_MAX;
tempHeadCtxPtr = gSzRcHLHTHeadCtxs;
retVal = CI_SUCCESS;
}
else if (CI_SYSTEM_TYPE_VOBC == devType) else if (CI_SYSTEM_TYPE_VOBC == devType)
{ {
maxDevSum = VOBC_SUM_MAX; maxDevSum = VOBC_SUM_MAX;
if (RC_WORK_MODE_CI == cRcWorkMode) tempHeadCtxPtr = vobcHLHTHeadCtxs;
{
tempHeadCtxPtr = vobcHLHTHeadCtxs;
}
else
{/*RC模式下*/
tempHeadCtxPtr = vobcToRcHLHTHeadCtxs;
}
retVal = CI_SUCCESS;
}
else if (CI_SYSTEM_TYPE_IVOC == devType)
{
maxDevSum = VOBC_SUM_MAX;
tempHeadCtxPtr = vobcHLHTHeadCtxs;
retVal = CI_SUCCESS; retVal = CI_SUCCESS;
} }
@@ -640,15 +576,8 @@ static UINT8 GetHLHTHeadCtxTmepVars(const UINT8 devType, UINT16 *devMaxSum, HLHT
else if (CI_SYSTEM_TYPE_AXIS == devType) else if (CI_SYSTEM_TYPE_AXIS == devType)
{ {
maxDevSum = AXLE_SUM_MAX; maxDevSum = AXLE_SUM_MAX;
if((SYSTEM_WORK_MODE_ALL == chSystemWorkType) && (RC_WORK_MODE_TIOC == CI_SYSTEM_TYPE_RCI)) tempHeadCtxPtr = axleHLHTHeadCtxs;
{
tempHeadCtxPtr = gSzRcAxleHLHTHeadCtxs;
}
else
{
tempHeadCtxPtr = axleHLHTHeadCtxs;
}
retVal = CI_SUCCESS; retVal = CI_SUCCESS;
} }
else if (CI_SYSTEM_TYPE_TMC == devType) else if (CI_SYSTEM_TYPE_TMC == devType)
@@ -658,20 +587,6 @@ static UINT8 GetHLHTHeadCtxTmepVars(const UINT8 devType, UINT16 *devMaxSum, HLHT
retVal = CI_SUCCESS; retVal = CI_SUCCESS;
} }
else if (CI_SYSTEM_TYPE_XIANDI == devType)
{
maxDevSum = ATS_SUM_MAX;
tempHeadCtxPtr = gSzXiandiHLHTHeadCtxs;
retVal = CI_SUCCESS;
}
else if (CI_SYSTEM_TYPE_ATS == devType)
{
maxDevSum = ATS_SUM_MAX;
tempHeadCtxPtr = gSzAtsHLHTHeadCtxs;
retVal = CI_SUCCESS;
}
else else
{ {
retVal = CI_ERROR; retVal = CI_ERROR;
@@ -737,7 +652,7 @@ static void ProcHlhtHeadCtxTimeOutDiffSys(const UINT32 timeoutSnCount, const UIN
if (0u == headValid) if (0u == headValid)
{ {
if ((headCtxs == axleHLHTHeadCtxs) || (headCtxs == gSzRcAxleHLHTHeadCtxs)) /*计轴系统中断时,GAL层对方序号,收到对方数据时本方序号,设置0xFFFFFFFF*/ if (headCtxs == axleHLHTHeadCtxs) /*计轴系统中断时,GAL层对方序号,收到对方数据时本方序号,设置0xFFFFFFFF*/
{ {
headCtxs[i].logId = 0u; headCtxs[i].logId = 0u;
headCtxs[i].sourceRecvOppMsgSN = 0u; headCtxs[i].sourceRecvOppMsgSN = 0u;
@@ -1267,27 +1182,4 @@ void ProcIteHlhtHeadCtxTimeOut(const UINT32 dwTimeoutSnCount, const UINT32 dwTim
} }
} }
} }
}
/*
* 功能描述:获取指定oc的CI-RC同步互联互通报文头上下文数据
* 参数说明:const UINT8 oc ID
* 返 回 值:NULL 获取数据失败
* 非NULL 获取数据成功
* Created By fan 2025.11.12
*/
HLHTHeadContextStru* GetCiToRcHLHTOcHeadCtx(const UINT8 ocId)
{
HLHTHeadContextStru* pstrRetVal = NULL;
if ((0U < ocId) && (OC_SUM_MAX > ocId))
{
pstrRetVal = &ocHLHTHeadCtxsCiToRc[ocId];
}
else
{
/*不处理*/
}
return pstrRetVal;
} }
@@ -38,20 +38,15 @@ extern "C" {
} HLHTHeadContextStru; } HLHTHeadContextStru;
/*******************************全局变量声明*******************************/ /*******************************全局变量声明*******************************/
extern HLHTHeadContextStru ciHLHTHeadCtxs[CI_SUM_MAX];/*存放与本控区通信的相邻CI互联互通报文头上下文数据*/ extern HLHTHeadContextStru ciHLHTHeadCtxs[CI_SUM_MAX];/*存放与本CI通信的相邻CI互联互通报文头上下文数据*/
extern HLHTHeadContextStru gSzRcHLHTHeadCtxs[CI_SUM_MAX]; /*存放与本控区通信的相邻RC互联互通报文头上下文数据*/
extern HLHTHeadContextStru vobcHLHTHeadCtxs[VOBC_SUM_MAX];/*存放与本CI通信的VOBC互联互通报文头上下文数据*/ extern HLHTHeadContextStru vobcHLHTHeadCtxs[VOBC_SUM_MAX];/*存放与本CI通信的VOBC互联互通报文头上下文数据*/
extern HLHTHeadContextStru vobcBackupHLHTHeadCtxs[VOBC_BACKUP_SUM_MAX];/*存放与本CI通信的后备模式VOBC互联互通报文头上下文数据*/ extern HLHTHeadContextStru vobcBackupHLHTHeadCtxs[VOBC_BACKUP_SUM_MAX];/*存放与本CI通信的后备模式VOBC互联互通报文头上下文数据*/
extern HLHTHeadContextStru zcHLHTHeadCtxs[ZC_SUM_MAX];/*存放与本CI通信的ZC互联互通报文头上下文数据*/ extern HLHTHeadContextStru zcHLHTHeadCtxs[ZC_SUM_MAX];/*存放与本CI通信的ZC互联互通报文头上下文数据*/
extern HLHTHeadContextStru ocHLHTHeadCtxs[OC_SUM_MAX];/*存放与本CI通信的OC互联互通报文头上下文数据*/ extern HLHTHeadContextStru ocHLHTHeadCtxs[OC_SUM_MAX];/*存放与本CI通信的OC互联互通报文头上下文数据*/
extern HLHTHeadContextStru ocHLHTHeadCtxsCiToRc[OC_SUM_MAX];/*存放与本CI通信的OC互联互通报文头上下文数据*/
extern HLHTHeadContextStru axleHLHTHeadCtxs[AXLE_SUM_MAX];/*存放与本CI通信的计轴系统互联互通报文头上下文数据*/ extern HLHTHeadContextStru axleHLHTHeadCtxs[AXLE_SUM_MAX];/*存放与本CI通信的计轴系统互联互通报文头上下文数据*/
extern HLHTHeadContextStru gSzRcAxleHLHTHeadCtxs[AXLE_SUM_MAX];/*存放与RC通信的计轴系统互联互通报文头上下文数据*/
extern HLHTHeadContextStru tmcHLHTHeadCtxs[TMC_SUM_MAX];/*存放与本TIOC通信的TMC互联互通报文头上下文数据*/ extern HLHTHeadContextStru tmcHLHTHeadCtxs[TMC_SUM_MAX];/*存放与本TIOC通信的TMC互联互通报文头上下文数据*/
extern HLHTHeadContextStru IteHLHTHeadCtxs[ITE_SUM_MAX][VOBC_INC_ITE_SUM_MAX];/*存放与本TIOC通信的ITE互联互通报文头上下文数据*/ extern HLHTHeadContextStru IteHLHTHeadCtxs[ITE_SUM_MAX][VOBC_INC_ITE_SUM_MAX];/*存放与本TIOC通信的ITE互联互通报文头上下文数据*/
extern HLHTHeadContextStru gSzXiandiHLHTHeadCtxs[ATS_SUM_MAX]; /*存放与本CI通信的现地互联互通报文头上下文数据*/
extern HLHTHeadContextStru gSzAtsHLHTHeadCtxs[ATS_SUM_MAX]; /*存放与本CI通信的ATS互联互通报文头上下文数据*/
extern HLHTHeadContextStru vobcToRcHLHTHeadCtxs[VOBC_SUM_MAX];/*RC模式下,存放与本RC通信的510 VOBC互联互通报文头上下文数据。CI模式下不使用*/
/* /*
* 功能描述:获取某个设备最近一次给CI发送数据时其当前的序号 * 功能描述:获取某个设备最近一次给CI发送数据时其当前的序号
* 参数说明: * 参数说明:
@@ -290,14 +285,6 @@ extern "C" {
* Created By LQ 2024.06.11 * Created By LQ 2024.06.11
*/ */
void ProcIteHlhtHeadCtxTimeOut(const UINT32 dwTimeoutSnCount, const UINT32 dwTimeoutSpan); void ProcIteHlhtHeadCtxTimeOut(const UINT32 dwTimeoutSnCount, const UINT32 dwTimeoutSpan);
/*
* 功能描述:获取指定oc的CI-RC同步互联互通报文头上下文数据
* 参数说明:const UINT8 oc ID
* 返 回 值:NULL 获取数据失败
* 非NULL 获取数据成功
* Created By fan 2025.11.12
*/
HLHTHeadContextStru* GetCiToRcHLHTOcHeadCtx(const UINT8 ocId);
#ifdef __cplusplus #ifdef __cplusplus
} }
+47 -268
View File
@@ -362,10 +362,6 @@ void OcSwitchDeviceOutput(void)
chSwitchJichaState = GetSwitchPrompylyAlarmInfo(switchId); chSwitchJichaState = GetSwitchPrompylyAlarmInfo(switchId);
/*只有静态红闪和动态红闪可以设置,其他设置不了一直为0*/ /*只有静态红闪和动态红闪可以设置,其他设置不了一直为0*/
SetSwitchJichaState(switchId, chSwitchJichaState); SetSwitchJichaState(switchId, chSwitchJichaState);
/*OC道岔转辙机标识灯状态处理 */
SetOcSwitchIndicatorLightStatus(switchId);
} }
} }
} }
@@ -522,9 +518,6 @@ void OcSwitchDeviceInput(void)
/*设置所有道岔单独位置*/ /*设置所有道岔单独位置*/
SetAllSingleSwitchCurPosition(switchCurSum); SetAllSingleSwitchCurPosition(switchCurSum);
/*设置所有道岔转辙机状态*/
SetAllSingleSwitchZzjState(switchCurSum);
/*设置道岔当前逻辑位置*/ /*设置道岔当前逻辑位置*/
UpdataSwitchCurPostion(switchCurSum); UpdataSwitchCurPostion(switchCurSum);
@@ -1142,8 +1135,6 @@ void OcSignalDeviceInput(void)
UINT32 signalDiffCyc = 0U; /*信号开放颜色不一致周期*/ UINT32 signalDiffCyc = 0U; /*信号开放颜色不一致周期*/
UINT8 cFuncRet = 0U; UINT8 cFuncRet = 0U;
UINT8 cControlState = GetLocalCiBackUpPattern();
curCycNum= Get2oo2CurCycleNum(); curCycNum= Get2oo2CurCycleNum();
signalCurSum = GetTotalSignalCurNum(); /*获取信号机总数*/ signalCurSum = GetTotalSignalCurNum(); /*获取信号机总数*/
localCiId = GetSystemParaLocalCiId(); /*获取本机联锁ID*/ localCiId = GetSystemParaLocalCiId(); /*获取本机联锁ID*/
@@ -1265,11 +1256,8 @@ void OcSignalDeviceInput(void)
} }
else else
{ {
if (SYSTEM_WORK_MODE_MAIN == cControlState) /*设置信号机驱动无效*/
{ SetSignalCurDriveColor(signalId, SIGNAL_DRIVECOLOUR_NULL);
/*设置信号机驱动无效*/
SetSignalCurDriveColor(signalId, SIGNAL_DRIVECOLOUR_NULL);
}
} }
/*设置当前显示颜色*/ /*设置当前显示颜色*/
@@ -1693,7 +1681,7 @@ void DetZfsCancelBtnActFlagProc(const UINT16 wSignalId, const UINT16 wCancelDetB
/******************************OC spks指示灯输出处理****************************/ /******************************OC spks指示灯输出处理****************************/
/* /*
* OC spks指示灯spks旁路指示灯及蜂鸣继电器处理 * OC spks指示灯spks旁路指示灯输出处理
* void * void
* void * void
*/ */
@@ -1712,9 +1700,6 @@ void SpksDisplayDrivOutput(void)
UINT32 dwSpksIndicDelayCount = 0u; UINT32 dwSpksIndicDelayCount = 0u;
UINT8 checkCycOut = 0u; UINT8 checkCycOut = 0u;
UINT8 cSpksState = 0U; UINT8 cSpksState = 0U;
UINT16 wSpksBuzzRelayId = 0U;
UINT16 wSpksCutBuzzRelayId = 0U;
UINT8 chRelayDriveState = 0U;/*继电器当前驱动状态*/
spksCurSum = GetSpksSum(); /*获取spks数量,默认为每个spks都有对应的指示灯*/ spksCurSum = GetSpksSum(); /*获取spks数量,默认为每个spks都有对应的指示灯*/
chLocalCiId = GetSystemParaLocalCiId(); /*获取本地联锁ID*/ chLocalCiId = GetSystemParaLocalCiId(); /*获取本地联锁ID*/
@@ -1737,8 +1722,7 @@ void SpksDisplayDrivOutput(void)
cutSpksId = GetSpksCutRelayId(spksId); /*获取spks旁路按钮继电器ID*/ cutSpksId = GetSpksCutRelayId(spksId); /*获取spks旁路按钮继电器ID*/
cutSpksDisplayId = GetSpksCutDisRelayId(spksId); /*根据spks ID获取spks旁路指示灯ID*/ cutSpksDisplayId = GetSpksCutDisRelayId(spksId); /*根据spks ID获取spks旁路指示灯ID*/
wSpksBuzzRelayId = GetSpksBuzzRelayId(spksId);/*获取蜂鸣继电器ID*/
wSpksCutBuzzRelayId = GetSpksCutBuzzRelayId(spksId);/*获取切除蜂鸣继电器ID*/
devBlongCiId = GetSpksBelongCiId(spksId); /*获取设备所属联锁ID*/ devBlongCiId = GetSpksBelongCiId(spksId); /*获取设备所属联锁ID*/
if ((0u != cutSpksId) && (UINT16_MAX != cutSpksId)) if ((0u != cutSpksId) && (UINT16_MAX != cutSpksId))
@@ -1804,64 +1788,6 @@ void SpksDisplayDrivOutput(void)
/*spks室外指示灯驱动*/ /*spks室外指示灯驱动*/
spksflockStartNum = GetSpksflockStartNum(spksId); spksflockStartNum = GetSpksflockStartNum(spksId);
SpksOutsideDisPlayDriv(spksId,spksflockStartNum); SpksOutsideDisPlayDriv(spksId,spksflockStartNum);
/*SPKS蜂鸣继电器处理*/
if ((0u != wSpksBuzzRelayId) && (UINT16_MAX != wSpksBuzzRelayId))
{
/*蜂鸣器驱动状态*/
chRelayDriveState = GetRelayDriveState(wSpksBuzzRelayId);
/*spks有效*/
if ((SPKS_STATUS_YES == cSpksState)&&(RELAY_STATE_UP != tmpCutRelayColState))/*未旁路*/
{
/*驱动蜂鸣器吸起*/
(void)SetRelayDriveState(wSpksBuzzRelayId, RELAY_DRIVE_STATE_UP);
}
else
{
/*没有驱动*/
if (RELAY_DRIVE_STATE_NULL == chRelayDriveState)
{
/*驱动蜂鸣器落下*/
(void)SetRelayDriveState(wSpksBuzzRelayId, RELAY_DRIVE_STATE_DOWN);
}
else
{
;/*已有驱动,不处理*/
}
}
}
else
{
;/*此spks无蜂鸣继电器,不处理*/
}
/*SPKS切除蜂鸣继电器处理*/
if ((0u != wSpksCutBuzzRelayId) && (UINT16_MAX != wSpksCutBuzzRelayId))
{
/*继电器驱动状态*/
chRelayDriveState = GetRelayDriveState(wSpksCutBuzzRelayId);
if ((SPKS_STATUS_YES == cSpksState) && (RELAY_STATE_UP != tmpCutRelayColState))/*未旁路*/
{
/*驱动复原蜂鸣器落下*/
(void)SetRelayDriveState(wSpksCutBuzzRelayId, RELAY_DRIVE_STATE_DOWN);
}
else
{
/*没有驱动*/
if (RELAY_DRIVE_STATE_NULL == chRelayDriveState)
{
/*驱动蜂鸣器吸起*/
(void)SetRelayDriveState(wSpksCutBuzzRelayId, RELAY_DRIVE_STATE_UP);
}
else
{
;/*已有驱动,不处理*/
}
}
}
else
{
;/*此spks无蜂鸣切除继电器,不处理*/
}
} }
else else
{ {
@@ -6147,13 +6073,10 @@ void PhySecResetToRelayStateProc(void)
UINT8 overTimeCheck = 0u; UINT8 overTimeCheck = 0u;
UINT16 wPhySecFwRelayId = 0U;/*物理区段复位继电器ID*/ UINT16 wPhySecFwRelayId = 0U;/*物理区段复位继电器ID*/
UINT32 dwPhyResetCount = 0U; /*计轴复位超时周期数*/ UINT32 dwPhyResetCount = 0U; /*计轴复位超时周期数*/
UINT8 chCurSystemAreaState = 0U; /*系统当前区域状态*/
localCi = GetSystemParaLocalCiId(); localCi = GetSystemParaLocalCiId();
relayZFWId = GetZFWRelayId(localCi); /*总复位继电器ID*/ relayZFWId = GetZFWRelayId(localCi); /*总复位继电器ID*/
retGeneralResetFlag = GetPhySecGeneralResetFlag(); /*获取物理区段计轴总复位继电器状态有效性*/ retGeneralResetFlag = GetPhySecGeneralResetFlag(); /*获取物理区段计轴总复位继电器状态有效性*/
chCurSystemAreaState = GetLocalCiBackUpPattern();
if (relayZFWId > 0u) if (relayZFWId > 0u)
{ {
relayZFWState = GetRelayCollState(relayZFWId); /*ZFWJ继电器采集状态*/ relayZFWState = GetRelayCollState(relayZFWId); /*ZFWJ继电器采集状态*/
@@ -6280,17 +6203,6 @@ void PhySecResetToRelayStateProc(void)
retValid = CI_ERROR; /*计轴总复位继电器状态有效性值置位为无效*/ retValid = CI_ERROR; /*计轴总复位继电器状态有效性值置位为无效*/
phySecId = GetPhySecId(ii);/*获取物理区段ID*/ phySecId = GetPhySecId(ii);/*获取物理区段ID*/
if (SYSTEM_WORK_MODE_MAIN != chCurSystemAreaState)
{
/*当前系统不为主系,设置计轴复位起始周期号为0,不处理及对外组包计轴复位命令*/
SetPhySecResetStartCycNum(phySecId, 0U);
}
else
{
;
}
startCycNum = GetPhySecResetStartCycNum(phySecId); startCycNum = GetPhySecResetStartCycNum(phySecId);
wPhySecFwRelayId = GetPhySecFWRelayId(phySecId); wPhySecFwRelayId = GetPhySecFWRelayId(phySecId);
@@ -6644,6 +6556,7 @@ void PsdRelayToDeviceStateProc(void)
UINT8 chPsdCloseState = 0U; UINT8 chPsdCloseState = 0U;
UINT8 chPsdClose2State = 0U; UINT8 chPsdClose2State = 0U;
UINT8 chPsdButtonState = 0U; UINT8 chPsdButtonState = 0U;
UINT8 chPsdReOpenRelayState = 0U;
UINT8 reVal = CI_SUCCESS; UINT8 reVal = CI_SUCCESS;
UINT8 relayCollState = 0u; UINT8 relayCollState = 0u;
UINT8 buttonState = 0u; UINT8 buttonState = 0u;
@@ -6653,8 +6566,7 @@ void PsdRelayToDeviceStateProc(void)
UINT32 dwCycNum = 0U; UINT32 dwCycNum = 0U;
UINT8 chDsnLinSwitch = 0U; UINT8 chDsnLinSwitch = 0U;
UINT8 cFuncRet = 0U; UINT8 cFuncRet = 0U;
UINT16 wpsdReopenButtonRelayId2 = 0U;
UINT8 relayCollState2 = 0U;
chDsnLinSwitch = GetCiFunctionSwitchConfig(FUNC_DSN_LINE_SWITCH); chDsnLinSwitch = GetCiFunctionSwitchConfig(FUNC_DSN_LINE_SWITCH);
psdSum = GetPsdSum(); psdSum = GetPsdSum();
@@ -6729,52 +6641,41 @@ void PsdRelayToDeviceStateProc(void)
if (CI_SUCCESS == reVal) if (CI_SUCCESS == reVal)
{ {
psdReopenButtonRelayId = GetPsdReOpenRelayId(psdId); psdReopenButtonRelayId = GetPsdReOpenRelayId(psdId);
wpsdReopenButtonRelayId2 = GetPsdReOpenRelayId2(psdId);
/*屏蔽门开门按钮状态更新*/ /*屏蔽门开门按钮状态更新*/
if ((0u != psdReopenButtonRelayId) && (UINT16_MAX != psdReopenButtonRelayId)) if ((0u != psdReopenButtonRelayId) && (UINT16_MAX != psdReopenButtonRelayId))
{/*站台开门按钮继电器ID有效*/ {/*站台开门按钮继电器ID有效*/
relayCollState = GetRelayCollState(psdReopenButtonRelayId); relayCollState = GetRelayCollState(psdReopenButtonRelayId);
} if (RELAY_STATE_UP == relayCollState)
else
{
relayCollState = RELAY_STATE_DOWN;
}
if ((0u != wpsdReopenButtonRelayId2) && (UINT16_MAX != wpsdReopenButtonRelayId2))
{
relayCollState2 = GetRelayCollState(wpsdReopenButtonRelayId2);
}
else
{
relayCollState2 = RELAY_STATE_DOWN;
}
if ((RELAY_STATE_UP == relayCollState) || (RELAY_STATE_UP == relayCollState2))
{
buttonPressCycNum = GetPOBPressCycNum(psdId);
curCycNum = Get2oo2CurCycleNum();
if (0U == buttonPressCycNum)
{/*若未计时,则设置起始周期*/
(void)SetPOBPressCycNum(psdId, curCycNum);
}
buttonState = SetPsdOpenButtonState(psdId, PSD_OPEN_BUTTON_STATE_VALID);
if (CI_ERROR == buttonState)
{ {
reVal = CI_ERROR; buttonPressCycNum = GetPOBPressCycNum(psdId);
curCycNum = Get2oo2CurCycleNum();
if (0U == buttonPressCycNum)
{/*若未计时,则设置起始周期*/
(void)SetPOBPressCycNum(psdId, curCycNum);
}
buttonState = SetPsdOpenButtonState(psdId, PSD_OPEN_BUTTON_STATE_VALID);
if (CI_ERROR == buttonState)
{
reVal = CI_ERROR;
}
} }
} else if (RELAY_STATE_DOWN == relayCollState)
else if ((RELAY_STATE_DOWN == relayCollState) && (RELAY_STATE_DOWN == relayCollState2))
{
(void)SetPOBPressCycNum(psdId, 0u); /*清除POB按下起始周期号*/
buttonState = SetPsdOpenButtonState(psdId, PSD_OPEN_BUTTON_STATE_INVALID);
if (CI_ERROR == buttonState)
{ {
(void)SetPOBPressCycNum(psdId, 0u); /*清除POB按下起始周期号*/
buttonState = SetPsdOpenButtonState(psdId, PSD_OPEN_BUTTON_STATE_INVALID);
if (CI_ERROR == buttonState)
{
reVal = CI_ERROR;
}
}
else
{
(void)SetPOBPressCycNum(psdId, 0u); /*清除POB按下起始周期号*/
reVal = CI_ERROR; reVal = CI_ERROR;
} }
} }
else else
{ {/*有些线路PSD不配置开门按钮继电器,continue,继续执行*/
(void)SetPOBPressCycNum(psdId, 0u); /*清除POB按下起始周期号*/
reVal = CI_ERROR;
} }
} }
@@ -6986,52 +6887,32 @@ void PsdRelayToDeviceStateProc(void)
if (reVal == CI_SUCCESS) if (reVal == CI_SUCCESS)
{ {
psdReopenButtonRelayId = GetPsdReOpenRelayId(psdId); psdReopenButtonRelayId = GetPsdReOpenRelayId(psdId);
wpsdReopenButtonRelayId2 = GetPsdReOpenRelayId2(psdId);
/*屏蔽门开门按钮状态更新*/ /*屏蔽门开门按钮状态更新*/
if ((0u != psdReopenButtonRelayId) && (UINT16_MAX != psdReopenButtonRelayId)) if ((0u != psdReopenButtonRelayId) && (UINT16_MAX != psdReopenButtonRelayId))
{/*站台开门按钮继电器ID有效*/ {/*站台开门按钮继电器ID有效*/
relayCollState = GetRelayCollState(psdReopenButtonRelayId); chPsdReOpenRelayState = GetRelayCollState(psdReopenButtonRelayId);
} if (RELAY_STATE_UP == chPsdReOpenRelayState)
else
{
relayCollState = RELAY_STATE_DOWN;
}
if ((0u != wpsdReopenButtonRelayId2) && (UINT16_MAX != wpsdReopenButtonRelayId2))
{
relayCollState2 = GetRelayCollState(wpsdReopenButtonRelayId2);
}
else
{
relayCollState2 = RELAY_STATE_DOWN;
}
if ((RELAY_STATE_UP == relayCollState) || (RELAY_STATE_UP == relayCollState2))
{
buttonPressCycNum = GetPOBPressCycNum(psdId);
curCycNum = Get2oo2CurCycleNum();
if (0U == buttonPressCycNum)
{/*若未计时,则设置起始周期*/
(void)SetPOBPressCycNum(psdId, curCycNum);
}
buttonState = SetPsdOpenButtonState(psdId, PSD_OPEN_BUTTON_STATE_VALID);
if (CI_ERROR == buttonState)
{ {
reVal = CI_ERROR; dwCycNum = GetPOBPressCycNum(psdId);
if (0u == dwCycNum)
{/*若未计时,则设置起始周期*/
(void)SetPOBPressCycNum(psdId, Get2oo2CurCycleNum());
}
reVal = SetPsdOpenButtonState(psdId, PSD_OPEN_BUTTON_STATE_VALID);
} }
} else if (RELAY_STATE_DOWN == chPsdReOpenRelayState)
else if ((RELAY_STATE_DOWN == relayCollState) && (RELAY_STATE_DOWN == relayCollState2))
{
(void)SetPOBPressCycNum(psdId, 0u); /*清除POB按下起始周期号*/
buttonState = SetPsdOpenButtonState(psdId, PSD_OPEN_BUTTON_STATE_INVALID);
if (CI_ERROR == buttonState)
{ {
(void)SetPOBPressCycNum(psdId, 0u); /*清除POB按下起始周期号*/
reVal = SetPsdOpenButtonState(psdId, PSD_OPEN_BUTTON_STATE_INVALID);
}
else
{
(void)SetPOBPressCycNum(psdId, 0u); /*清除POB按下起始周期号*/
reVal = CI_ERROR; reVal = CI_ERROR;
} }
} }
else else
{ {/*有些线路PSD不配置开门按钮继电器,continue,继续执行*/
(void)SetPOBPressCycNum(psdId, 0u); /*清除POB按下起始周期号*/
reVal = CI_ERROR;
} }
} }
@@ -7277,11 +7158,6 @@ UINT8 PsdDeviceToRelayStateProc(void)
{/*八编组屏蔽门*/ {/*八编组屏蔽门*/
psdKMRelayId = GetEightGroupPsdOpenDrvRelayId(psdId); psdKMRelayId = GetEightGroupPsdOpenDrvRelayId(psdId);
} }
else if (PSD_THREE_EDIT_GROUP == psdEditGroupInfo)
{
/*三编组屏蔽门*/
psdKMRelayId = GetThreeGroupPsdOpenDrvRelayId(psdId);
}
else else
{/*编组无效*/ {/*编组无效*/
psdKMRelayId = 0u; psdKMRelayId = 0u;
@@ -7331,16 +7207,6 @@ UINT8 PsdDeviceToRelayStateProc(void)
reVal = CI_ERROR; reVal = CI_ERROR;
} }
} }
tmpPsdKMRelayId = GetThreeGroupPsdOpenDrvRelayId(psdId);
if (tmpPsdKMRelayId > 0u)
{
/*所有开门继电器驱落下*/
relayFlag = SetRelayDriveState(tmpPsdKMRelayId, RELAY_DRIVE_STATE_DOWN);
if (CI_ERROR == relayFlag)
{/*开门继电器*/
reVal = CI_ERROR;
}
}
} }
} }
@@ -7409,16 +7275,6 @@ UINT8 PsdDeviceToRelayStateProc(void)
reVal = CI_ERROR; reVal = CI_ERROR;
} }
} }
tmpPsdKMRelayId = GetThreeGroupPsdOpenDrvRelayId(psdId);
if (tmpPsdKMRelayId > 0u)
{
/*所有开门继电器驱落下*/
relayFlag = SetRelayDriveState(tmpPsdKMRelayId, RELAY_DRIVE_STATE_DOWN);
if (CI_ERROR == relayFlag)
{/*开门继电器*/
reVal = CI_ERROR;
}
}
} }
} }
else else
@@ -8565,6 +8421,7 @@ UINT8 GaragedoorRelayToDevStaProc(void)
gdOpenRelayState = GetRelayCollState(garagedoorOpenRelayId); gdOpenRelayState = GetRelayCollState(garagedoorOpenRelayId);
gdCloseRelayState = GetRelayCollState(garagedoorCloseRelayId); gdCloseRelayState = GetRelayCollState(garagedoorCloseRelayId);
gdKGHRelayState = GetRelayCollState(garagedoorKGHRelayId);
gdPangLuRelayState = GetRelayCollState(garagedoorPangLuRelayId); gdPangLuRelayState = GetRelayCollState(garagedoorPangLuRelayId);
gdGuZhangRelayState = GetRelayCollState(garagedoorFaultRelayId); gdGuZhangRelayState = GetRelayCollState(garagedoorFaultRelayId);
gdModeRelayState = GetRelayCollState(garagedoorModeRelayId); gdModeRelayState = GetRelayCollState(garagedoorModeRelayId);
@@ -8583,15 +8440,6 @@ UINT8 GaragedoorRelayToDevStaProc(void)
* : : * : :
*/ */
if ((0U < garagedoorKGHRelayId) && (UINT16_MAX > garagedoorKGHRelayId))
{/*配置了开关后节点继电器*/
gdKGHRelayState = GetRelayCollState(garagedoorKGHRelayId);
}
else
{/*未配置开关后节点继电器*/
gdKGHRelayState = RELAY_STATE_DOWN;
}
/*车库门开关*/ /*车库门开关*/
if ((RELAY_STATE_DOWN == gdOpenRelayState) && (RELAY_STATE_UP == gdCloseRelayState) if ((RELAY_STATE_DOWN == gdOpenRelayState) && (RELAY_STATE_UP == gdCloseRelayState)
&& (RELAY_STATE_DOWN == gdKGHRelayState) && (RELAY_STATE_DOWN == gdPangLuRelayState)) && (RELAY_STATE_DOWN == gdKGHRelayState) && (RELAY_STATE_DOWN == gdPangLuRelayState))
@@ -14560,75 +14408,6 @@ void SetAllSingleSwitchCurPosition(UINT16 switchCurSum)
} }
} }
/*
*
* UINT16 switchCurSum
*
*/
void SetAllSingleSwitchZzjState(UINT16 switchCurSum)
{
UINT16 belongOcId = 0u; /*道岔所属oc ID*/
UINT16 switchId = 0U; /*道岔ID*/
UINT16 ii = 0U; /*循环索引*/
UINT16 jj = 0U; /*循环索引*/
UINT8 flagFind = 0u;
UINT16 indexFind = 0u;
UINT8 chSwitchIncldeZzjNum = 0u; /*道岔对应转辙机数目,设备类型为信号机时,此个数为0*/
UINT8 szSwitchIncldeZzjState[MAX_OC_SWITCH_INCLUDE_ZZJ_NUM] = { 0 };/*转辙机状态*/
for (ii = 0U; ii < switchCurSum; ii++)
{
switchId = GetSwitchId(ii); /*获取道岔ID*/
belongOcId = GetSwitchBelongOcId(switchId);/*获取道岔所属Oc id*/
if ((0u < belongOcId) && (OC_SUM_MAX > belongOcId))
{
for (jj = 0u; jj < m_SwitchNum; jj++)
{
if (m_Switches[jj].DeviceId == switchId)
{
flagFind = 1u;
indexFind = jj;
break;
}
}
}
else
{
;/*不处理*/
}
if (1u == flagFind) /*找到了*/
{
flagFind = 0u;
chSwitchIncldeZzjNum = m_Switches[indexFind].chSwitchIncldeZzjNum;
if (0u == chSwitchIncldeZzjNum)
{
/* 不处理 */
}
else
{
for (jj = 0U; jj < MAX_OC_SWITCH_INCLUDE_ZZJ_NUM; jj++)
{
szSwitchIncldeZzjState[jj] = 0u;
}
for (jj = 0U; jj < chSwitchIncldeZzjNum; jj++)
{
szSwitchIncldeZzjState[jj] = m_Switches[indexFind].szSwitchIncldeZzjState[jj];
}
/* 保存完毕,开始存入动态结构体里面*/
SetOcSwitchZzjState(switchId, chSwitchIncldeZzjNum, szSwitchIncldeZzjState);
}
}
else
{
/*未找到*/
}
}
}
/* /*
* *
* UINT16 switchCurSum * UINT16 switchCurSum
@@ -354,7 +354,7 @@ void ProcessJXTCPulseInterfStopDrv(UINT16 startJXTCRelayId, UINT16 stopJXTCRelay
/******************************OC spks指示灯输出处理****************************/ /******************************OC spks指示灯输出处理****************************/
/* /*
* 功能描述: OC spks指示灯spks旁路指示灯及蜂鸣继电器处理 * 功能描述: OC spks指示灯spks旁路指示灯输出处理
* 参数说明: void * 参数说明: void
* 返回值 void * 返回值 void
*/ */
@@ -984,13 +984,6 @@ UINT8 GetFstDetBtnCollTolerateRet(const UINT16 wSignalId);
*/ */
UINT8 GetSndDetBtnCollTolerateRet(const UINT16 wSignalId); UINT8 GetSndDetBtnCollTolerateRet(const UINT16 wSignalId);
/*
* 功能描述: 设置所有道岔转辙机位置
* 参数说明: UINT16 switchCurSum 道岔总数
* 返回值
*/
void SetAllSingleSwitchZzjState(UINT16 switchCurSum);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
File diff suppressed because it is too large Load Diff
-80
View File
@@ -466,86 +466,6 @@ void ProcessOCToCiPsdData(void);
*/ */
void ProcessOcToCiRelayDiffData(void); void ProcessOcToCiRelayDiffData(void);
/*
* 功能描述:处理CI与RC间通信状态和数据
* 参数说明:void
* 返 回 值:无
* Created By LQ 2025.11.04
*/
void ProcessCiAndRcInfo(void);
/**
* @brief 保护区段解锁申请
* @param[in] 无
* @return 无
* @note by cgh 20251107
*/
void OverlapUnlockApplyDeal(void);
/**
* @brief 进路停车保证处理
* @param[in] 无
* @return 无
* @note by cgh 20251107
*/
void RouteStopensureDeal(void);
/**
* @brief 更新双系统融合数据
* @param[in] void
* @return 无
* @note by cgh 20251106
*/
void UpdateDoubleSystemMergeInfo(void);
/*
* 功能描述:逻辑区段信息融合处理
* 参数说明:无
* 返 回 值:无
* Created By LQ 2025.11.07
*/
void LogSecInfoMergePro(void);
/*
* 功能描述:雨雪信息融合处理
* 参数说明:无
* 返 回 值:无
* Created By LQ 2025.11.10
*/
void SnowInfoMergePro(void);
/**
* @brief 进路停车保证信息融合
* @param[in] void
* @return 无
* @note by cgh 20251106
*/
void RouteStopensureFlagMergeDeal(void);
/**
* @brief 信号机信息融合处理
* @param[in] void
* @return 无
* @note by cgh 20251106
*/
void SignalInfoMergeDeal(void);
/*
* 功能描述:信号机列车跨压处理
* 参数说明:无
* 返 回 值:无
* Created By LQ 2025.11.11
*/
void SignalTrainCrossPro(void);
/*
* 功能描述: 处理VOBC到CI数据
* 参数说明: void
* 返回值 void
*/
void ProcessIvocToRCData(void);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
+35 -111
View File
@@ -390,9 +390,6 @@ UINT8 GetAtsBackInfoParam(const UINT8 functionId,const UINT8 deviceStateType, co
case ETYPE_ROUTE_APPLY_SWITCH_MOVE: case ETYPE_ROUTE_APPLY_SWITCH_MOVE:
returnValue = CI_BACK_SWT_MOVE; /*道岔单操中办理进路*/ returnValue = CI_BACK_SWT_MOVE; /*道岔单操中办理进路*/
break; break;
case ETYPE_COUPLINK_ROUTE_IDLE:
returnValue = CI_BACK_COUPLINK_ROUTE_IDLE; /*联挂进路内无被联挂车*/
break;
/*信号机故障反馈*/ /*信号机故障反馈*/
case ETYPE_SIG_START_OPEN_STATE: case ETYPE_SIG_START_OPEN_STATE:
@@ -692,7 +689,6 @@ UINT8 GetAtsBackInfoParam(const UINT8 functionId,const UINT8 deviceStateType, co
case ETYPE_COMM_WITH_VOBC: case ETYPE_COMM_WITH_VOBC:
case ETYPE_COMM_WITH_ZC: case ETYPE_COMM_WITH_ZC:
case ETYPE_COMM_WITH_CI: case ETYPE_COMM_WITH_CI:
case ETYPE_COMM_WITH_RC:
case ETYPE_COMM_WITH_TMC: case ETYPE_COMM_WITH_TMC:
returnValue = deviceState; /*VOBC、ZC、CI、TMC与CI通信失败报警*/ returnValue = deviceState; /*VOBC、ZC、CI、TMC与CI通信失败报警*/
break; break;
@@ -842,10 +838,6 @@ UINT8 GetAtsBackInfoParam(const UINT8 functionId,const UINT8 deviceStateType, co
{ {
returnValue = CI_BACK_AUTO_ROUTE_HAVE_BLOCK; returnValue = CI_BACK_AUTO_ROUTE_HAVE_BLOCK;
} }
else if (AUTO_ROUTE_COUPROUTE_SET == deviceState)
{
returnValue = CI_BACK_AUTO_ROUTE_COUPROUTE_SET;
}
else else
{ {
returnValue = CI_BACK_AUTO_ROUTE_FLOOD_STATE_ERR; returnValue = CI_BACK_AUTO_ROUTE_FLOOD_STATE_ERR;
@@ -872,10 +864,6 @@ UINT8 GetAtsBackInfoParam(const UINT8 functionId,const UINT8 deviceStateType, co
{ {
returnValue = CI_BACK_AUTO_RETURN_HAVE_BLOCK; returnValue = CI_BACK_AUTO_RETURN_HAVE_BLOCK;
} }
else if (AUTO_RETURN_COUPROUTE_SET == deviceState)
{
returnValue = CI_BACK_AUTO_RETURN_COUPROUTE_SET;
}
else else
{ {
returnValue = CI_BACK_AUTO_RETURN_FLOOD_STATE_ERR; returnValue = CI_BACK_AUTO_RETURN_FLOOD_STATE_ERR;
@@ -902,10 +890,6 @@ UINT8 GetAtsBackInfoParam(const UINT8 functionId,const UINT8 deviceStateType, co
{ {
returnValue = CI_BACK_ALLAUTO_RETURN_HAVE_BLOCK; returnValue = CI_BACK_ALLAUTO_RETURN_HAVE_BLOCK;
} }
else if (ALL_AUTO_RETURN_COUPROUTE_SET == deviceState)
{
returnValue = CI_BACK_ALLAUTO_RETURN_COUPROUTE_SET;
}
else else
{ {
returnValue = CI_BACK_ALLAUTO_RETURN_FLOOD_STATE_ERR; returnValue = CI_BACK_ALLAUTO_RETURN_FLOOD_STATE_ERR;
@@ -1774,16 +1758,16 @@ void IndicatorStateProc(void)
&& (INDICATOR_TYPE_COMM_CI_LAST >= devType)) && (INDICATOR_TYPE_COMM_CI_LAST >= devType))
{/*第devType-INDICATOR_TYPE_COMM_CI_FIRST+1个相邻联锁通信状态*/ {/*第devType-INDICATOR_TYPE_COMM_CI_FIRST+1个相邻联锁通信状态*/
devRelaySum = Get2oo2CiAndOtherSysCommNum(CI_SYSTEM_TYPE_RCI); devRelaySum = Get2oo2CiAndOtherSysCommNum(CI_SYSTEM_TYPE_CI);
jj = devType - INDICATOR_TYPE_COMM_CI_FIRST; jj = devType - INDICATOR_TYPE_COMM_CI_FIRST;
if (devRelaySum > jj) if (devRelaySum > jj)
{ {
if (TRANSMIT_2OO2_STATE_GOOD == Get2oo2CiAndOtherSysCommState(CI_SYSTEM_TYPE_RCI,(UINT8)jj)) if (TRANSMIT_2OO2_STATE_GOOD == Get2oo2CiAndOtherSysCommState(CI_SYSTEM_TYPE_CI,(UINT8)jj))
{/*上第jj+1个相邻联锁 通信良好*/ {/*上第jj+1个相邻联锁 通信良好*/
SetIndicatorState(devId, INDICATOR_SHOW_COMM_GREEN);/*设置指示灯通信良好*/ SetIndicatorState(devId, INDICATOR_SHOW_COMM_GREEN);/*设置指示灯通信良好*/
} }
else if (TRANSMIT_2OO2_STATE_LINK == Get2oo2CiAndOtherSysCommState(CI_SYSTEM_TYPE_RCI,(UINT8)jj)) else if (TRANSMIT_2OO2_STATE_LINK == Get2oo2CiAndOtherSysCommState(CI_SYSTEM_TYPE_CI,(UINT8)jj))
{/*第jj+1个相邻联锁 通信一般*/ {/*第jj+1个相邻联锁 通信一般*/
SetIndicatorState(devId, INDICATOR_SHOW_COMM_YELLOW);/*设置指示灯通信一般*/ SetIndicatorState(devId, INDICATOR_SHOW_COMM_YELLOW);/*设置指示灯通信一般*/
@@ -3391,11 +3375,11 @@ void IndicatorStateProc_UseVirCI(UINT8 virCIid)
&& (INDICATOR_TYPE_COMM_CI_LAST >= devType)) && (INDICATOR_TYPE_COMM_CI_LAST >= devType))
{/*第devType-INDICATOR_TYPE_COMM_CI_FIRST+1个相邻联锁通信状态*/ {/*第devType-INDICATOR_TYPE_COMM_CI_FIRST+1个相邻联锁通信状态*/
devRelaySum = Get2oo2CiAndOtherSysCommNum(CI_SYSTEM_TYPE_RCI); devRelaySum = Get2oo2CiAndOtherSysCommNum(CI_SYSTEM_TYPE_CI);
jj = devType - INDICATOR_TYPE_COMM_CI_FIRST; jj = devType - INDICATOR_TYPE_COMM_CI_FIRST;
if (devRelaySum > jj) if (devRelaySum > jj)
{ {
commState = Get2oo2CiAndOtherSysCommState(CI_SYSTEM_TYPE_RCI,(UINT8)jj); commState = Get2oo2CiAndOtherSysCommState(CI_SYSTEM_TYPE_CI,(UINT8)jj);
if (TRANSMIT_2OO2_STATE_GOOD == commState) if (TRANSMIT_2OO2_STATE_GOOD == commState)
{/*上第jj+1个相邻联锁 通信良好*/ {/*上第jj+1个相邻联锁 通信良好*/
@@ -5770,6 +5754,7 @@ UINT16 GetOverlapUnlockBackTime(const UINT16 overlapId, UINT16 OverlapUnLockCoun
UINT32 laborUnlockOverlapTimeCount =0u; UINT32 laborUnlockOverlapTimeCount =0u;
UINT16 returnTime = 0u; UINT16 returnTime = 0u;
/*自动解锁倒计时*/ /*自动解锁倒计时*/
deltCount = (INT32)(curCycleNum - startCycNum); deltCount = (INT32)(curCycleNum - startCycNum);
if((deltCount >= 0) && (deltCount <= (INT32)OverlapUnLockCount))/*倒计时数值在合理范围内*/ if((deltCount >= 0) && (deltCount <= (INT32)OverlapUnLockCount))/*倒计时数值在合理范围内*/
@@ -5793,10 +5778,19 @@ UINT16 GetOverlapUnlockBackTime(const UINT16 overlapId, UINT16 OverlapUnLockCoun
} }
} }
if (0u < laborUnlockStartCycNum)/*已经设置人工解锁*/
if(0u < laborUnlockStartCycNum)/*已经设置人工解锁*/
{ {
/*有人工解锁,就用人工解锁时间*/ /*比较两个时间,返回最小的。因为在解锁;逻辑是以最小倒计时解锁的*/
returnTime = labortimeData; if(autotimeData > labortimeData)
{
returnTime = labortimeData;
}
else
{
returnTime = autotimeData;
}
} }
else else
{ {
@@ -6282,7 +6276,6 @@ void OverlapTimeDataBackProcess(const UINT16 wOverlapId)
UINT8 chTmpOvlpOccuSecSta = 0U;/*临时变量,用作调用函数的出口参数,本函数中不关心其值*/ UINT8 chTmpOvlpOccuSecSta = 0U;/*临时变量,用作调用函数的出口参数,本函数中不关心其值*/
UINT8 chFuncSwitchSendTime = 0u;/*CBTC是否发送保护区段解锁倒计时*/ UINT8 chFuncSwitchSendTime = 0u;/*CBTC是否发送保护区段解锁倒计时*/
UINT8 chABLFlag = 0U; /*进路最后物理区段ABL占用标志*/ UINT8 chABLFlag = 0U; /*进路最后物理区段ABL占用标志*/
UINT32 dwLaborUnlockStartCycNum = 0U; /*保护区段人工解锁起始周期号*/
chLocalCiId = GetSystemParaLocalCiId(); chLocalCiId = GetSystemParaLocalCiId();
chFuncSwitchSendTime = GetCiFunctionSwitchConfig(FUNC_SWITCH_SEND_UNLOCK_OVERLEP_TIMER_COUNTDOWN); chFuncSwitchSendTime = GetCiFunctionSwitchConfig(FUNC_SWITCH_SEND_UNLOCK_OVERLEP_TIMER_COUNTDOWN);
@@ -6302,9 +6295,6 @@ void OverlapTimeDataBackProcess(const UINT16 wOverlapId)
{ {
wRouteLastPhySectionId = GetRouteLastPhySectionId(wOverlapBelongRouteId); wRouteLastPhySectionId = GetRouteLastPhySectionId(wOverlapBelongRouteId);
dwUtCtStartOccuCount = GetSecUtOrCtOccuStartCycNum(wRouteLastPhySectionId); dwUtCtStartOccuCount = GetSecUtOrCtOccuStartCycNum(wRouteLastPhySectionId);
wOverlapAllClearRes = OverlapAllSecOccuClearCheck(wOverlapId, &wTmpOvlpOccuSecId, &chTmpOvlpOccuSecSta);
dwLaborUnlockStartCycNum = GetlaborUnlockStartCycNum(wOverlapId);
/*进路顺序占压到最后一个区段的起始周期*/ /*进路顺序占压到最后一个区段的起始周期*/
if (0U <dwUtCtStartOccuCount) if (0U <dwUtCtStartOccuCount)
{ {
@@ -6340,6 +6330,7 @@ void OverlapTimeDataBackProcess(const UINT16 wOverlapId)
} }
} }
wRouteStopSteadyPhySecId = GetRouteStopSteadyPhySecId(wRLockBelongRouteId);/*获取进路停稳物理区段ID*/ wRouteStopSteadyPhySecId = GetRouteStopSteadyPhySecId(wRLockBelongRouteId);/*获取进路停稳物理区段ID*/
wOverlapAllClearRes = OverlapAllSecOccuClearCheck(wOverlapId, &wTmpOvlpOccuSecId, &chTmpOvlpOccuSecSta);
if ((wRouteLastPhySectionId == wRouteStopSteadyPhySecId) && (CI_SUCCESS == wOverlapAllClearRes)) if ((wRouteLastPhySectionId == wRouteStopSteadyPhySecId) && (CI_SUCCESS == wOverlapAllClearRes))
{/*倒计时未超时*/ {/*倒计时未超时*/
@@ -6357,10 +6348,10 @@ void OverlapTimeDataBackProcess(const UINT16 wOverlapId)
{ {
dwCtOverlapUnLockCount = GetOtherCIRouteOverlapCTUnlockCount(wRLockBelongRouteId); dwCtOverlapUnLockCount = GetOtherCIRouteOverlapCTUnlockCount(wRLockBelongRouteId);
} }
if ((FUNC_SWITCH_ON == chFuncSwitchSendTime) || (0U < dwLaborUnlockStartCycNum)) if (FUNC_SWITCH_ON == chFuncSwitchSendTime)
{/*功能打开*/ {/*功能打开*/
wRouteStopSteadyPhySecId = GetRouteStopSteadyPhySecId(wRLockBelongRouteId);/*获取进路停稳物理区段ID*/ wRouteStopSteadyPhySecId = GetRouteStopSteadyPhySecId(wRLockBelongRouteId);/*获取进路停稳物理区段ID*/
wOverlapAllClearRes = OverlapAllSecOccuClearCheck(wOverlapId, &wTmpOvlpOccuSecId, &chTmpOvlpOccuSecSta);
if ((wRouteLastPhySectionId == wRouteStopSteadyPhySecId) && (CI_SUCCESS == wOverlapAllClearRes)) if ((wRouteLastPhySectionId == wRouteStopSteadyPhySecId) && (CI_SUCCESS == wOverlapAllClearRes))
{ {
wTimeData = GetOverlapUnlockBackTime(wOverlapId, (UINT16)dwCtOverlapUnLockCount, dwRelyonStartCycNum); wTimeData = GetOverlapUnlockBackTime(wOverlapId, (UINT16)dwCtOverlapUnLockCount, dwRelyonStartCycNum);
@@ -6370,41 +6361,24 @@ void OverlapTimeDataBackProcess(const UINT16 wOverlapId)
} }
else else
{ {
/*解决问题: /*占用类型故障*/
物理区段占用变空闲容忍时,CT/UT占用起始时间有效,但占用标志已经变成了未占用;此时要是有人工解锁,倒计时会消失占用变空闲时间*/
if ((0U < dwLaborUnlockStartCycNum) && (CI_SUCCESS == wOverlapAllClearRes))
{
wTimeData = GetOverlapLaborUnlockBackTime(wOverlapId);
}
else
{
SetOverlapUnlockTime(wOverlapId, 0U);
}
} }
if (0u < wTimeData)/*存在倒计时*/
{
if (wTimeData > UINT8_MAX)
{/*当倒计时时间超出最大值时,则同一周期发两包数,一包为高字节,一包为低字节*/
SetCiSendCmdBackInfoData(CI_BACK_COUNT_OVERLAP_UNLOCK_HIGH, CI_DEVICE_TYPE_PHYSEC, pOverlapPhySecBuf[0], (UINT8)(wTimeData >> 8), 0U);
}
SetCiSendCmdBackInfoData(CI_BACK_COUNT_OVERLAP_UNLOCK, CI_DEVICE_TYPE_PHYSEC, pOverlapPhySecBuf[0], (UINT8)wTimeData, 0U);
}
SetOverlapUnlockTime(wOverlapId, wTimeData);
} }
else else
{ {
/*人工解锁倒计时*/ SetOverlapUnlockTime(wOverlapId, 0U);/*清除倒计时,因为区段再次占用时,要重新以区段占用开始时间作为倒计时参考,重新记时*/
if ((0U < dwLaborUnlockStartCycNum) && (CI_SUCCESS == wOverlapAllClearRes))
{
wTimeData = GetOverlapLaborUnlockBackTime(wOverlapId);
}
else
{
SetOverlapUnlockTime(wOverlapId, 0U);/*清除倒计时,因为区段再次占用时,要重新以区段占用开始时间作为倒计时参考,重新记时*/
}
} }
if (0u < wTimeData)/*存在倒计时*/
{
if (wTimeData > UINT8_MAX)
{/*当倒计时时间超出最大值时,则同一周期发两包数,一包为高字节,一包为低字节*/
SetCiSendCmdBackInfoData(CI_BACK_COUNT_OVERLAP_UNLOCK_HIGH, CI_DEVICE_TYPE_PHYSEC, pOverlapPhySecBuf[0], (UINT8)(wTimeData >> 8), 0U);
}
SetCiSendCmdBackInfoData(CI_BACK_COUNT_OVERLAP_UNLOCK, CI_DEVICE_TYPE_PHYSEC, pOverlapPhySecBuf[0], (UINT8)wTimeData, 0U);
}
SetOverlapUnlockTime(wOverlapId, wTimeData);
} }
else else
{ {
@@ -6585,22 +6559,13 @@ void VobcBackUpOutputProcess(void)
UINT8 chMainValid = 0U;/*主用列车通信状态*/ UINT8 chMainValid = 0U;/*主用列车通信状态*/
UINT16 wVobcId = 0U;/*VOBC ID*/ UINT16 wVobcId = 0U;/*VOBC ID*/
UINT8 chBackUpValid = 0U;/*备用通信有效标志*/ UINT8 chBackUpValid = 0U;/*备用通信有效标志*/
UINT8 cRcWorkMode = 0U;
for (ii = 0U; ii < TRAIN_SUM_MAX; ii++) for (ii = 0U; ii < TRAIN_SUM_MAX; ii++)
{ {
wTrainId = GetTrainId(ii); wTrainId = GetTrainId(ii);
chBackUpValid = GetHLHTHeadCtxValid(CI_SYSTEM_TYPE_VOBC_BACKUP, (UINT8)(wTrainId & 0x00ffU)); chBackUpValid = GetHLHTHeadCtxValid(CI_SYSTEM_TYPE_VOBC_BACKUP, (UINT8)(wTrainId & 0x00ffU));
/*根据工作模式获取互联互通报文头*/ chMainValid = GetHLHTHeadCtxValid(CI_SYSTEM_TYPE_VOBC, (UINT8)(wTrainId & 0x00ffU));
if (RC_WORK_MODE_CI == cRcWorkMode)
{
chMainValid = GetHLHTHeadCtxValid(CI_SYSTEM_TYPE_VOBC, (UINT8)(wTrainId & 0x00ffU));
}
else
{
chMainValid = GetHLHTHeadCtxValid(CI_SYSTEM_TYPE_IVOC, (UINT8)(wTrainId & 0x00ffU));
}
wVobcId = 0U; wVobcId = 0U;
@@ -8608,44 +8573,3 @@ void RtnRealyAdhesionStatePro(void)
} }
} }
/*
* 功能描述: 获取人工解锁保护区段剩余倒计时
* 参数说明: const UINT16 overlapId 保护区段id
* 返回值 倒计时
* by cgh 20250928
*/
UINT16 GetOverlapLaborUnlockBackTime(const UINT16 overlapId)
{
UINT16 wLabortimeData = 0u;
INT32 deltCount = 0;
UINT32 curCycleNum = Get2oo2CurCycleNum();
UINT32 appCycTime = GetSystemParaAppCycleTime();/*获取联锁周期*/
UINT32 laborUnlockStartCycNum = 0u;
UINT32 laborUnlockOverlapTimeCount = 0u;
/*人工解锁倒计时*/
laborUnlockStartCycNum = GetlaborUnlockStartCycNum(overlapId);
if (0u < laborUnlockStartCycNum)/*已经设置人工解锁*/
{
deltCount = (INT32)(curCycleNum - laborUnlockStartCycNum);
laborUnlockOverlapTimeCount = GetlabarUnlockOverlapTimeCount();
if ((deltCount >= 0) && (deltCount <= (INT32)laborUnlockOverlapTimeCount))/*倒计时数值在合理范围内*/
{
wLabortimeData = (UINT16)(((laborUnlockOverlapTimeCount + laborUnlockStartCycNum - curCycleNum) * appCycTime) / 1000U);
}
else
{
;
}
}
else
{
}
return wLabortimeData;
}
@@ -456,14 +456,6 @@ UINT8 FindRouteLeaveAxis(const UINT16 routeId);
*/ */
void RtnRealyAdhesionStatePro(void); void RtnRealyAdhesionStatePro(void);
/*
*
* const UINT16 overlapId id
*
* by cgh 20250928
*/
UINT16 GetOverlapLaborUnlockBackTime(const UINT16 overlapId);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
@@ -1083,21 +1083,6 @@ UINT8 ReadConfigureData(void)
rtnVal = 2u; rtnVal = 2u;
} }
if (0u == rtnVal)
{
g_ret = QueryTrackBelongLink();
if (CI_ERROR == g_ret)
{
debug_infor_printf((const)"QueryTrackBelongLink Error\n");
rtnVal = 43u;
}
}
else
{
/*不处理*/
}
} }
+86 -451
View File
@@ -20,7 +20,6 @@
#include "NonAutoReturnConfigDataManage.h" #include "NonAutoReturnConfigDataManage.h"
#include "../Deployment/DeploymentExtern.h" #include "../Deployment/DeploymentExtern.h"
#include "NonAutoReturnDataManage.h" #include "NonAutoReturnDataManage.h"
#include "ParsePackZcData.h"
/****************************初始化动态数据队列********************************************/ /****************************初始化动态数据队列********************************************/
extern TransmitRelationDataStruct TransmitRelaDataStru[TRANSMIT_OBJECT_SUM_MAX]; /*引用已定义通信关系数据结构体*/ extern TransmitRelationDataStruct TransmitRelaDataStru[TRANSMIT_OBJECT_SUM_MAX]; /*引用已定义通信关系数据结构体*/
@@ -66,25 +65,18 @@ UINT8 InitialProcess(void)
} }
/*读取联锁配置数据*/ /*读取联锁配置数据*/
if (CI_SUCCESS == ret) if (0u != ReadConfigureData())
{ {
if (0u != ReadConfigureData())
{
#ifdef PLATFORM_2OO2 #ifdef PLATFORM_2OO2
(void)printf("ReadConfigureData Error\n"); (void)printf("ReadConfigureData Error\n");
debug_infor_printf((const)"ReadConfigureData Error\n"); debug_infor_printf((const)"ReadConfigureData Error\n");
#endif #endif
ret = CI_ERROR; ret = CI_ERROR;
} }
}
else
{
/*不处理*/
}
cRcWorkMode = GetLocalRcWorkMode(); cRcWorkMode = GetLocalRcWorkMode();
@@ -580,7 +572,9 @@ UINT8 InitialSignalData(void)
SignalDataStru[signalId].RelayDetainCmd = SIGNAL_DETAIN_CI_RELAY_NO;/*初始设成不扣车*/ SignalDataStru[signalId].RelayDetainCmd = SIGNAL_DETAIN_CI_RELAY_NO;/*初始设成不扣车*/
SignalDataStru[signalId].NeighbourSignalDetainDrive = NEIGHBOUR_SIGNAL_DETAIN_DRIVE_NO;/*邻站信号机扣车无驱动*/ SignalDataStru[signalId].NeighbourSignalDetainDrive = NEIGHBOUR_SIGNAL_DETAIN_DRIVE_NO;/*邻站信号机扣车无驱动*/
SignalDataStru[signalId].MaintainLightState = MAINTAIN_STATE_NO;/*信号机不处于维修点灯状态*/ SignalDataStru[signalId].MaintainLightState = MAINTAIN_STATE_NO;/*信号机不处于维修点灯状态*/
SignalDataStru[signalId].wSignalLightUpLinkIdSum = 0U;
(void)CommonMemSet(SignalDataStru[signalId].szSignalLightUpLinkIdBuf, (UINT32)sizeof(SignalDataStru[signalId].szSignalLightUpLinkIdBuf),0U, (UINT32)sizeof(SignalDataStru[signalId].szSignalLightUpLinkIdBuf));
SignalDataStru[signalId].wSignalLightUpTrainId = 0U;
if ((0U == detainBtnRelayId) || (UINT16_MAX == detainBtnRelayId)) if ((0U == detainBtnRelayId) || (UINT16_MAX == detainBtnRelayId))
{ {
SignalDataStru[signalId].DetainBtnActivateFlag = SIGNAL_ZFS_BTN_ACT_FLAG_NO; /*自复式未配置扣车按钮继电器,初始化扣车按钮未激活*/ SignalDataStru[signalId].DetainBtnActivateFlag = SIGNAL_ZFS_BTN_ACT_FLAG_NO; /*自复式未配置扣车按钮继电器,初始化扣车按钮未激活*/
@@ -597,7 +591,9 @@ UINT8 InitialSignalData(void)
SignalDataStru[signalId].CancelDetainErrTrigPressCycNum = 0U; /*取消扣车按钮误触发按下周期*/ SignalDataStru[signalId].CancelDetainErrTrigPressCycNum = 0U; /*取消扣车按钮误触发按下周期*/
SignalDataStru[signalId].CancelDetainBtnValidFlag = SIGNAL_CANCEL_DETAIN_VALID_NO; /*取消扣车按钮有效标志*/ SignalDataStru[signalId].CancelDetainBtnValidFlag = SIGNAL_CANCEL_DETAIN_VALID_NO; /*取消扣车按钮有效标志*/
SignalDataStru[signalId].CancelDetainRelayDownState = SIGNAL_RELAY_ERROR_DOWN_YES; /*取消扣车按钮采集继电器落下状态初始化为异常落下*/ SignalDataStru[signalId].CancelDetainRelayDownState = SIGNAL_RELAY_ERROR_DOWN_YES; /*取消扣车按钮采集继电器落下状态初始化为异常落下*/
SignalDataStru[signalId].LogRouteSignalErrCloseFlag = LOG_ROUTE_SIGNAL_CLOSE_NOERR; /*初始化为未异常关闭标志(逻辑进路异常关闭使用)*/
SignalDataStru[signalId].VobcCroSigInPhyOccSta = SECTION_OCCUPY_NO; /*初始化信号机内方第一区段为空闲,当占压后再给ZC组确认信息*/ 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].cInHumidRailFlag = SIGNAL_IN_HUMID_RAIL_NO;
SignalDataStru[signalId].cDetCutBtnState = SIGNAL_DETAIN_CUT_VALID_NO; /*扣车旁路按钮状态*/ SignalDataStru[signalId].cDetCutBtnState = SIGNAL_DETAIN_CUT_VALID_NO; /*扣车旁路按钮状态*/
SignalDataStru[signalId].DetCutBtnPressCycNum = 0U; /*扣车旁路按钮正常按下周期*/ SignalDataStru[signalId].DetCutBtnPressCycNum = 0U; /*扣车旁路按钮正常按下周期*/
@@ -607,6 +603,7 @@ UINT8 InitialSignalData(void)
/*初始化信号机临时限速状态有效*/ /*初始化信号机临时限速状态有效*/
SignalDataStru[signalId].LinShiXianSuSetFlag = SIGNAL_LINSHIXIANSUSET_STATE_YES;/*临时限速有效*/ SignalDataStru[signalId].LinShiXianSuSetFlag = SIGNAL_LINSHIXIANSUSET_STATE_YES;/*临时限速有效*/
routeSum = GetRouteCurSum(); routeSum = GetRouteCurSum();
for (jj = 0u; jj < routeSum; jj++) for (jj = 0u; jj < routeSum; jj++)
{ {
@@ -675,21 +672,6 @@ UINT8 InitialSignalData(void)
{ {
SignalDataStru[signalId].ProSecValid = SIGNAL_PRO_SEC_INVALID;/*设置成无效导向安全*/ SignalDataStru[signalId].ProSecValid = SIGNAL_PRO_SEC_INVALID;/*设置成无效导向安全*/
} }
/*初始化车车结构体成员*/
SignalDataStruCC[signalId].SignalId = signalId;
SignalDataStruCC[signalId].wSignalLightUpLinkIdSum = 0U;
(void)CommonMemSet(SignalDataStruCC[signalId].szSignalLightUpLinkIdBuf, (UINT32)sizeof(SignalDataStruCC[signalId].szSignalLightUpLinkIdBuf), 0U, (UINT32)sizeof(SignalDataStruCC[signalId].szSignalLightUpLinkIdBuf));
SignalDataStruCC[signalId].wSignalLightUpTrainId = 0U;
SignalDataStruCC[signalId].LogRouteSignalErrCloseFlag = LOG_ROUTE_SIGNAL_CLOSE_NOERR; /*初始化为未异常关闭标志(逻辑进路异常关闭使用)*/
SignalDataStruCC[signalId].cSleepTrainLightUpFlag = SIGNAL_SLEEP_TRAIN_LIGHTUP_NO; /*初始化休眠车点亮信号机标志无效*/
SignalDataStruCC[signalId].LightExtinctState = SIGNAL_LIGHT_EXTICT_STATE_YES; /*信号机亮灭状态CC(0x55:灭灯,0xaa:亮灯)*/
SignalDataStruCC[signalId].SignalCrossState = SIGNAL_CROSS_STATE_NO; /*通信车跨压通过信号机状态CC(0x55:未跨压,0xaa:跨压)*/
/*初始化ZC发送的信号机动态数据*/
gZcToCiDymDataStru.szSignalDataStruZc[signalId].SignalId = signalId;
gZcToCiDymDataStru.szSignalDataStruZc[signalId].LightExtinctState = SIGNAL_LIGHT_EXTICT_STATE_YES;
gZcToCiDymDataStru.szSignalDataStruZc[signalId].SignalCrossState = SIGNAL_CROSS_STATE_NO;
} }
/* 设置自动信号属性 */ /* 设置自动信号属性 */
@@ -779,7 +761,6 @@ UINT8 InitialSwitchData(void)
switchId = GetSwitchId(ii);/*获取配置文件中该索引下的道岔ID*/ switchId = GetSwitchId(ii);/*获取配置文件中该索引下的道岔ID*/
SwitchDataStru[switchId].SwitchId = switchId; SwitchDataStru[switchId].SwitchId = switchId;
SwitchDataStruCC[switchId].SwitchId = switchId;
SwitchDataStru[switchId].YLockState = SWITCH_LOCK_YINZONG_NO; SwitchDataStru[switchId].YLockState = SWITCH_LOCK_YINZONG_NO;
SwitchDataStru[switchId].LockStatus = SWITCH_LOCK_STATUS_NO; SwitchDataStru[switchId].LockStatus = SWITCH_LOCK_STATUS_NO;
SwitchDataStru[switchId].FLockState = SWITCH_LOCK_FENGSUO_NO; SwitchDataStru[switchId].FLockState = SWITCH_LOCK_FENGSUO_NO;
@@ -804,7 +785,7 @@ UINT8 InitialSwitchData(void)
SwitchDataStru[switchId].DFHRelayValidCycNum = 0u; SwitchDataStru[switchId].DFHRelayValidCycNum = 0u;
SwitchDataStru[switchId].SigleDFHRelayValidCycNum = 0u; SwitchDataStru[switchId].SigleDFHRelayValidCycNum = 0u;
SwitchDataStru[switchId].PLockedRouteNum = 0u; SwitchDataStru[switchId].PLockedRouteNum = 0u;
SwitchDataStruCC[switchId].PLockedLogRouteNum = 0u; SwitchDataStru[switchId].PLockedLogRouteNum = 0u;
SwitchDataStru[switchId].PLockedOverlapNum = 0u; SwitchDataStru[switchId].PLockedOverlapNum = 0u;
SwitchDataStru[switchId].PLockedNonRouteNum = 0u; SwitchDataStru[switchId].PLockedNonRouteNum = 0u;
SwitchDataStru[switchId].YCRelayValidCycNum = 0u; SwitchDataStru[switchId].YCRelayValidCycNum = 0u;
@@ -821,16 +802,10 @@ UINT8 InitialSwitchData(void)
for (jj=0; jj<SWITCH_MAX_PROTECT_LOCKED_NUM;jj++) for (jj=0; jj<SWITCH_MAX_PROTECT_LOCKED_NUM;jj++)
{ {
SwitchDataStru[switchId].PLockedRouteIdArr[jj] = 0u; SwitchDataStru[switchId].PLockedRouteIdArr[jj] = 0u;
SwitchDataStruCC[switchId].PLockedLogRouteIdArr[jj] = 0u; SwitchDataStru[switchId].PLockedLogRouteIdArr[jj] = 0u;
SwitchDataStru[switchId].PLockedOverlapIdArr[jj] = 0u; SwitchDataStru[switchId].PLockedOverlapIdArr[jj] = 0u;
SwitchDataStru[switchId].PLockedNonRouteIdArr[jj] = 0u; SwitchDataStru[switchId].PLockedNonRouteIdArr[jj] = 0u;
} }
/*初始化道岔转辙机数量、状态*/
SwitchDataStru[switchId].chSwitchIncldeZzjNum = 0u;
for (jj = 0; jj < SWITCH_ZZJ_POWER_STATE_MAX_NUM; jj++)
{
SwitchDataStru[switchId].szSwitchIncldeZzjState[jj] = OC_SWITCH_POSITION_SIKAI;
}
} }
reVal = CI_SUCCESS; reVal = CI_SUCCESS;
return reVal; return reVal;
@@ -887,8 +862,6 @@ UINT8 InitialPhySectionData(void)
PhysicalSectionDataStru[ii].FLockType = PHY_SEC_FLOCK_TYPE_NONE; PhysicalSectionDataStru[ii].FLockType = PHY_SEC_FLOCK_TYPE_NONE;
PhysicalSectionDataStru[ii].UtOrCtOccFlag = SECTION_OCCUPY_YES; PhysicalSectionDataStru[ii].UtOrCtOccFlag = SECTION_OCCUPY_YES;
PhysicalSectionDataStru[ii].UtOrCtOccuStartCycNum = 0u; PhysicalSectionDataStru[ii].UtOrCtOccuStartCycNum = 0u;
PhysicalSectionDataStru[ii].chResetCmdTag = 0U;
PhysicalSectionDataStru[ii].chResetCmdTagBack = 0U;
PhysicalSectionDataStru[ii].PhySecPreResetState = PHYSICAL_SECTION_PRE_RESET_NO; PhysicalSectionDataStru[ii].PhySecPreResetState = PHYSICAL_SECTION_PRE_RESET_NO;
PhysicalSectionDataStru[ii].chPreResetBack = PHY_RESET_BACK_RECIVE_YES; PhysicalSectionDataStru[ii].chPreResetBack = PHY_RESET_BACK_RECIVE_YES;
PhysicalSectionDataStru[ii].chDirectResetRst = PHYSICAL_DIRECT_RESET_NO; PhysicalSectionDataStru[ii].chDirectResetRst = PHYSICAL_DIRECT_RESET_NO;
@@ -914,19 +887,7 @@ UINT8 InitialPhySectionData(void)
{ {
break; break;
} }
else
{
/*不处理*/
}
/*初始化车车结构体成员*/
PhysicalSectionDataStruCC[phySectionId].PhysicalSectionId = phySectionId;
PhysicalSectionDataStruCC[phySectionId].SecUseBelongLogRouteId = 0U;
PhysicalSectionDataStruCC[phySectionId].StopSteadyFlag = PHYSICAL_SECTION_STOPSTEADY_NO;
/*初始化ZC发送的物理区段动态数据*/
gZcToCiDymDataStru.PhysicalSectionDataStruZc[phySectionId].PhysicalSectionId = phySectionId;
gZcToCiDymDataStru.PhysicalSectionDataStruZc[phySectionId].StopSteadyFlag = PHYSICAL_SECTION_STOPSTEADY_NO;
} }
#if 0 #if 0
@@ -989,22 +950,15 @@ UINT8 InitialAxisSectionData(void)
AxisSectionDataStru[axisSectionId].AxisArbState = AXIS_SECTION_ARB_NO; AxisSectionDataStru[axisSectionId].AxisArbState = AXIS_SECTION_ARB_NO;
AxisSectionDataStru[axisSectionId].BelongCiId = GetPhySecBelongCiId(belongPhySecId); AxisSectionDataStru[axisSectionId].BelongCiId = GetPhySecBelongCiId(belongPhySecId);
AxisSectionDataStru[axisSectionId].BelongVirCIid = GetPhySecBelongVirCiId(belongPhySecId); AxisSectionDataStru[axisSectionId].BelongVirCIid = GetPhySecBelongVirCiId(belongPhySecId);
AxisSectionDataStru[axisSectionId].AxisJumpLockApplyFlag = AXIS_SECTION_JUMPLOCK_APPLY_NO; AxisSectionDataStru[axisSectionId].AxisJumpLockApplyFlag = AXIS_SECTION_JUMPLOCK_APPLY_NO;
AxisSectionDataStru[axisSectionId].AxisJumpLockCancelApplyFlag = AXSEC_CANCEL_JUMPLOCK_APPLY_NO; AxisSectionDataStru[axisSectionId].AxisJumpLockCancelApplyFlag = AXSEC_CANCEL_JUMPLOCK_APPLY_NO;
AxisSectionDataStru[axisSectionId].AxisJumpLockApplyCylce = 0u; AxisSectionDataStru[axisSectionId].AxisJumpLockApplyCylce = 0u;
AxisSectionDataStru[axisSectionId].AxisJumpLockState = AXIS_SECTION_JUMPLOCK_STATE_IDLE; AxisSectionDataStru[axisSectionId].AxisJumpLockState = AXIS_SECTION_JUMPLOCK_STATE_IDLE;
AxisSectionDataStru[axisSectionId].AxisOccStatus = AXIS_SECTION_OCCUPY_YES;
/*初始化车车结构体成员*/ AxisSectionDataStru[axisSectionId].dwAxisOccCycNum = 0U;
AxisSectionDataStruCC[axisSectionId].AxisSectionId = axisSectionId; AxisSectionDataStru[axisSectionId].wPosMonitorTrainId = 0U;
AxisSectionDataStruCC[axisSectionId].AxisOccStatus = AXIS_SECTION_OCCUPY_YES; AxisSectionDataStru[axisSectionId].dwUtOccupyCycNum = 0U;
AxisSectionDataStruCC[axisSectionId].dwAxisOccCycNum = 0U;
AxisSectionDataStruCC[axisSectionId].wPosMonitorTrainId = 0U;
AxisSectionDataStruCC[axisSectionId].dwUtOccupyCycNum = 0U;
AxisSectionDataStruCC[axisSectionId].AxisArbState = AXIS_SECTION_ARB_NO;
/*初始化ZC发送的计轴区段动态数据*/
gZcToCiDymDataStru.AxisSectionDataStruZc[axisSectionId].AxisSectionId = axisSectionId;
gZcToCiDymDataStru.AxisSectionDataStruZc[axisSectionId].AxisArbState = AXIS_SECTION_ARB_NO;
} }
reVal = CI_SUCCESS; reVal = CI_SUCCESS;
return reVal; return reVal;
@@ -1066,51 +1020,39 @@ UINT8 InitialLogicSectionData(void)
LogicSectionDataStru[logicSectionId].LogUnlockStartCycNum = 0u; LogicSectionDataStru[logicSectionId].LogUnlockStartCycNum = 0u;
LogicSectionDataStru[logicSectionId].wPLockBelongRouteId = 0u; LogicSectionDataStru[logicSectionId].wPLockBelongRouteId = 0u;
LogicSectionDataStru[logicSectionId].OtherCiPLockBelongRouteId = 0U; LogicSectionDataStru[logicSectionId].OtherCiPLockBelongRouteId = 0U;
LogicSectionDataStru[logicSectionId].chResShareFlag = LOGIC_SECTION_RES_SHARE_NO;
LogicSectionDataStru[logicSectionId].JumpLockTrainId = 0u;
LogicSectionDataStru[logicSectionId].LogJumpLockState = LOGIC_SECTION_JUMP_LOCK_NO;
LogicSectionDataStru[logicSectionId].LogJumpLockDelayUnlockFlag = LOGIC_JUMPUNLOCK_DELAY_SET_NO;
LogicSectionDataStru[logicSectionId].LogSecJumpDelayUnlockStartCyc = 0u;
LogicSectionDataStru[logicSectionId].LogSecJumpLockPermFlag = LOGIC_JUMPUNLOCK_PERMISSIVE_NO;
LogicSectionDataStru[logicSectionId].chXianSuRemoveState = LOGIC_XIANSU_REMOVE_NO; LogicSectionDataStru[logicSectionId].chXianSuRemoveState = LOGIC_XIANSU_REMOVE_NO;
LogicSectionDataStru[logicSectionId].chTrainInfoSum = 0u;
LogicSectionDataStru[logicSectionId].chArbState = LGC_SECTION_ARB_NO; LogicSectionDataStru[logicSectionId].chArbState = LGC_SECTION_ARB_NO;
LogicSectionDataStru[logicSectionId].LogErrlockStartCycNum = 0U;
LogicSectionDataStru[logicSectionId].chLogicProResUsable = LOGIC_SECTION_PRO_RES_UNUSABLE; LogicSectionDataStru[logicSectionId].chLogicProResUsable = LOGIC_SECTION_PRO_RES_UNUSABLE;
LogicSectionDataStru[logicSectionId].chLogicSpksFLockState = LOGIC_SECTION_SPKS_FLOCK_NO;/*仅用于ATS显示;逻辑区段不一定关联SPKS,如果初始化成封锁,无法获取SPKS状态,此逻辑区段会一直为封锁状态*/ LogicSectionDataStru[logicSectionId].chLogicSpksFLockState = LOGIC_SECTION_SPKS_FLOCK_NO;/*仅用于ATS显示;逻辑区段不一定关联SPKS,如果初始化成封锁,无法获取SPKS状态,此逻辑区段会一直为封锁状态*/
LogicSectionDataStru[logicSectionId].chAblRelLogSecUsableFlag = LOGIC_ABLNEAR_USE_FLAG_NO; /*初始化ABL接近逻辑区段可用标志*/
LogicSectionDataStru[logicSectionId].cRouteLeaveLogFlag = LOGSEC_LEAVE_LOGSEC_REPLY_NO; /*离去区段ABL列车检查不通过*/
LogicSectionDataStru[logicSectionId].chLinShiXianSuSetSpeed = 0U; /*逻辑区段临时限速设置速度值*/ LogicSectionDataStru[logicSectionId].chLinShiXianSuSetSpeed = 0U; /*逻辑区段临时限速设置速度值*/
LogicSectionDataStru[logicSectionId].chLogSecEmergXianSu = LOGSEC_EMERG_XS_SET_NO; /*逻辑区段紧急临时限速*/
/*初始化车车结构体成员*/
LogicSectionDataStruCC[logicSectionId].LogicSectionId = logicSectionId;
LogicSectionDataStruCC[logicSectionId].chResShareFlag = LOGIC_SECTION_RES_SHARE_NO;
LogicSectionDataStruCC[logicSectionId].JumpLockTrainId = 0u;
LogicSectionDataStruCC[logicSectionId].LogJumpLockState = LOGIC_SECTION_JUMP_LOCK_NO;
LogicSectionDataStruCC[logicSectionId].LogJumpLockDelayUnlockFlag = LOGIC_JUMPUNLOCK_DELAY_SET_NO;
LogicSectionDataStruCC[logicSectionId].LogSecJumpDelayUnlockStartCyc = 0u;
LogicSectionDataStruCC[logicSectionId].LogSecJumpLockPermFlag = LOGIC_JUMPUNLOCK_PERMISSIVE_NO;
LogicSectionDataStruCC[logicSectionId].chTrainInfoSum = 0u;
LogicSectionDataStruCC[logicSectionId].LogErrlockStartCycNum = 0U;
LogicSectionDataStruCC[logicSectionId].chAblRelLogSecUsableFlag = LOGIC_ABLNEAR_USE_FLAG_NO; /*初始化ABL接近逻辑区段可用标志*/
LogicSectionDataStruCC[logicSectionId].cRouteLeaveLogFlag = LOGSEC_LEAVE_LOGSEC_REPLY_NO; /*离去区段ABL列车检查不通过*/
for (jj = 0U; jj < LOGIC_SECTION_RES_SUM_MAX; jj++) for (jj = 0U; jj < LOGIC_SECTION_RES_SUM_MAX; jj++)
{ {
LogicSectionDataStruCC[logicSectionId].szTrainResData[jj].wTrainId = 0U; LogicSectionDataStru[logicSectionId].szTrainResData[jj].wTrainId = 0U;
LogicSectionDataStruCC[logicSectionId].szTrainResData[jj].chLogicResUsable = LOGIC_SECTION_RES_UNUSABLE; LogicSectionDataStru[logicSectionId].szTrainResData[jj].chLogicResUsable = LOGIC_SECTION_RES_UNUSABLE;
LogicSectionDataStruCC[logicSectionId].szTrainResData[jj].chLogicReturnState = LOGIC_SECTION_TRAIN_RETURN_NO; LogicSectionDataStru[logicSectionId].szTrainResData[jj].chLogicReturnState = LOGIC_SECTION_TRAIN_RETURN_NO ;
LogicSectionDataStruCC[logicSectionId].szTrainResData[jj].chTrainApplyState = LOGIC_SECTION_TRAIN_APPLY_NO; LogicSectionDataStru[logicSectionId].szTrainResData[jj].chTrainApplyState = LOGIC_SECTION_TRAIN_APPLY_NO;
LogicSectionDataStruCC[logicSectionId].szTrainResData[jj].chLogicUnlockState = LOGIC_SECTION_TRAIN_UNLOCK_NO; LogicSectionDataStru[logicSectionId].szTrainResData[jj].chLogicUnlockState = LOGIC_SECTION_TRAIN_UNLOCK_NO;
LogicSectionDataStruCC[logicSectionId].szTrainResData[jj].dwRcvUnlockCmdCyc = 0U; LogicSectionDataStru[logicSectionId].szTrainResData[jj].dwRcvUnlockCmdCyc = 0U;
} }
LogicSectionDataStruCC[logicSectionId].chLogSecLockBelLogRouteSum = 0U; LogicSectionDataStru[logicSectionId].chLogSecLockBelLogRouteSum = 0U;
for (jj = 0U; jj < LOGSEC_RELATE_ROUTE_SUM_MAX; jj++) for (jj = 0U; jj < LOGSEC_RELATE_ROUTE_SUM_MAX; jj++)
{ {
LogicSectionDataStruCC[logicSectionId].szLogSecLockBelLogRouteData[jj].wLogSecLockBelLogRouteId = 0U; LogicSectionDataStru[logicSectionId].szLogSecLockBelLogRouteData[jj].wLogSecLockBelLogRouteId = 0U;
LogicSectionDataStruCC[logicSectionId].szLogSecLockBelLogRouteData[jj].chLogSecLockBelLogRouteState = ROUTE_LOGICAL_STATE_IDLE; LogicSectionDataStru[logicSectionId].szLogSecLockBelLogRouteData[jj].chLogSecLockBelLogRouteState = ROUTE_LOGICAL_STATE_IDLE;
LogicSectionDataStruCC[logicSectionId].szLogSecLockBelLogRouteData[jj].wLogSecLockBelLogRouteDir = CI_SYSTEM_DIRECTION_NONE; LogicSectionDataStru[logicSectionId].szLogSecLockBelLogRouteData[jj].wLogSecLockBelLogRouteDir = CI_SYSTEM_DIRECTION_NONE;
} }
LogicSectionDataStruCC[logicSectionId].LogSecLogLockState = LOG_SECTION_LOGLOCK_NO;
LogicSectionDataStruCC[logicSectionId].LinShiXianSuSetFlag = LOGSEC_LSXS_SET_STATE_NO; /*CI初始化为未设置临时限速,RC在下边再根据TMC开关重新初始化*/
LogicSectionDataStruCC[logicSectionId].OccupyState = LOGICSECTION_OCCUPY_UT;
LogicSectionDataStruCC[logicSectionId].TXOccupyState = LOGICSECTION_OCCUPY_NO_TX; /*非通信车占用状态*/
/*初始化ZC发送的逻辑区段动态数据*/ LogicSectionDataStru[logicSectionId].LogSecLogLockState = LOG_SECTION_LOGLOCK_NO;
gZcToCiDymDataStru.LogicSectionDataStruZc[logicSectionId].LogicSectionId = logicSectionId;
gZcToCiDymDataStru.LogicSectionDataStruZc[logicSectionId].LinShiXianSuSetFlag = LOGSEC_LSXS_SET_STATE_NO; /*先初始化为未设置临时限速,CI在下边再根据开关重新初始化*/
gZcToCiDymDataStru.LogicSectionDataStruZc[logicSectionId].OccupyState = LOGICSECTION_OCCUPY_UT;
gZcToCiDymDataStru.LogicSectionDataStruZc[logicSectionId].TXOccupyState = LOGICSECTION_OCCUPY_NO_TX;
} }
@@ -1123,14 +1065,10 @@ UINT8 InitialLogicSectionData(void)
if (FUNC_SWITCH_OFF == chTmcSwitch) if (FUNC_SWITCH_OFF == chTmcSwitch)
{ {
LogicSectionDataStru[logicSectionId].LinShiXianSuSetFlag = LOGSEC_LSXS_SET_STATE_NO; LogicSectionDataStru[logicSectionId].LinShiXianSuSetFlag = LOGSEC_LSXS_SET_STATE_NO;
LogicSectionDataStruCC[logicSectionId].LinShiXianSuSetFlag = LOGSEC_LSXS_SET_STATE_NO;
gZcToCiDymDataStru.LogicSectionDataStruZc[logicSectionId].LinShiXianSuSetFlag = LOGSEC_LSXS_SET_STATE_NO;
} }
else else
{ {
LogicSectionDataStru[logicSectionId].LinShiXianSuSetFlag = LOGSEC_LSXS_SET_STATE_YES; LogicSectionDataStru[logicSectionId].LinShiXianSuSetFlag = LOGSEC_LSXS_SET_STATE_YES;
LogicSectionDataStruCC[logicSectionId].LinShiXianSuSetFlag = LOGSEC_LSXS_SET_STATE_YES;
gZcToCiDymDataStru.LogicSectionDataStruZc[logicSectionId].LinShiXianSuSetFlag = LOGSEC_LSXS_SET_STATE_YES;
} }
} }
@@ -1193,14 +1131,10 @@ UINT8 InitialLogicSectionData(void)
{ {
LogicSectionDataStru[logicSectionId].LinShiXianSuSetFlag = LOGSEC_LSXS_SET_STATE_YES; LogicSectionDataStru[logicSectionId].LinShiXianSuSetFlag = LOGSEC_LSXS_SET_STATE_YES;
SetWholeLineLinShiXianSuFlag(WHOLE_LINE_LINSHIXIANSUSET_YES);/*本集中区有逻辑区段:有临时限速属性*/ SetWholeLineLinShiXianSuFlag(WHOLE_LINE_LINSHIXIANSUSET_YES);/*本集中区有逻辑区段:有临时限速属性*/
LogicSectionDataStruCC[logicSectionId].LinShiXianSuSetFlag = LOGSEC_LSXS_SET_STATE_YES;
gZcToCiDymDataStru.LogicSectionDataStruZc[logicSectionId].LinShiXianSuSetFlag = LOGSEC_LSXS_SET_STATE_YES;
} }
else else
{ {
LogicSectionDataStru[logicSectionId].LinShiXianSuSetFlag = LOGSEC_LSXS_SET_STATE_NO; LogicSectionDataStru[logicSectionId].LinShiXianSuSetFlag = LOGSEC_LSXS_SET_STATE_NO;
LogicSectionDataStruCC[logicSectionId].LinShiXianSuSetFlag = LOGSEC_LSXS_SET_STATE_NO;
gZcToCiDymDataStru.LogicSectionDataStruZc[logicSectionId].LinShiXianSuSetFlag = LOGSEC_LSXS_SET_STATE_NO;
} }
break; break;
} }
@@ -1217,8 +1151,6 @@ UINT8 InitialLogicSectionData(void)
if (jj > zcToCiMaskSum) if (jj > zcToCiMaskSum)
{ {
LogicSectionDataStru[logicSectionId].LinShiXianSuSetFlag = LOGSEC_LSXS_SET_STATE_INVALID; LogicSectionDataStru[logicSectionId].LinShiXianSuSetFlag = LOGSEC_LSXS_SET_STATE_INVALID;
LogicSectionDataStruCC[logicSectionId].LinShiXianSuSetFlag = LOGSEC_LSXS_SET_STATE_INVALID;
gZcToCiDymDataStru.LogicSectionDataStruZc[logicSectionId].LinShiXianSuSetFlag = LOGSEC_LSXS_SET_STATE_INVALID;
} }
else else
{ {
@@ -1293,7 +1225,6 @@ UINT8 InitialFloodGateData(void)
if ((0u < floodGateId) && (FLOOD_GATE_SUM_MAX> floodGateId)) if ((0u < floodGateId) && (FLOOD_GATE_SUM_MAX> floodGateId))
{ {
FloodGateDataStru[floodGateId].FloodGateId = floodGateId; FloodGateDataStru[floodGateId].FloodGateId = floodGateId;
FloodGateDataStruCC[floodGateId].FloodGateId = floodGateId;
FloodGateDataStru[floodGateId].CurAgreeCloseAckFromZC = FLOOD_GATE_NOT_ALLOWCLOSE_ZC; FloodGateDataStru[floodGateId].CurAgreeCloseAckFromZC = FLOOD_GATE_NOT_ALLOWCLOSE_ZC;
FloodGateDataStru[floodGateId].CurAgreeCloseStateIn = FLOOD_GATE_NOT_AGREE_CLOSE; FloodGateDataStru[floodGateId].CurAgreeCloseStateIn = FLOOD_GATE_NOT_AGREE_CLOSE;
FloodGateDataStru[floodGateId].CurAgreeCloseStateOut = FLOOD_GATE_NOT_AGREE_CLOSE; FloodGateDataStru[floodGateId].CurAgreeCloseStateOut = FLOOD_GATE_NOT_AGREE_CLOSE;
@@ -1301,15 +1232,15 @@ UINT8 InitialFloodGateData(void)
FloodGateDataStru[floodGateId].CurOpenLockStateFromFYM = FLOOD_GATE_NOT_OPENLOCK; FloodGateDataStru[floodGateId].CurOpenLockStateFromFYM = FLOOD_GATE_NOT_OPENLOCK;
FloodGateDataStru[floodGateId].CurYGJCrossLineStartCount = 0u;/*混线开始时间置为0*/ FloodGateDataStru[floodGateId].CurYGJCrossLineStartCount = 0u;/*混线开始时间置为0*/
FloodGateDataStru[floodGateId].CurFloodGateDelayCloseStartCyc = 0u;/*防淹门接近区段占压延时关门开始时间置为0*/ FloodGateDataStru[floodGateId].CurFloodGateDelayCloseStartCyc = 0u;/*防淹门接近区段占压延时关门开始时间置为0*/
FloodGateDataStruCC[floodGateId].FloodGateCloseApplyIvocSum = 0u;/*防淹门关门申请列车数量置为0*/ FloodGateDataStru[floodGateId].FloodGateCloseApplyIvocSum = 0u;/*防淹门关门申请列车数量置为0*/
for (jj = 0U; jj < FLOOD_GATE_APPLY_TRAIN_SUM_MAX; jj++) for (jj = 0U; jj < FLOOD_GATE_APPLY_TRAIN_SUM_MAX; jj++)
{ {
FloodGateDataStruCC[floodGateId].FloodGateCloseApplyIvocId[jj] = 0u;/*防淹门关门申请列车ID置为0*/ FloodGateDataStru[floodGateId].FloodGateCloseApplyIvocId[jj] = 0u;/*防淹门关门申请列车ID置为0*/
FloodGateDataStruCC[floodGateId].FloodGateCloseFromIvocStru[jj].wTrainId = 0u; /*防淹门关门回复列车ID置为0*/ FloodGateDataStru[floodGateId].FloodGateCloseFromIvocStru[jj].wTrainId = 0u; /*防淹门关门回复列车ID置为0*/
FloodGateDataStruCC[floodGateId].FloodGateCloseFromIvocStru[jj].wFloodGateCloseIvocFlag = FLOOD_GATE_NOT_ALLOWCLOSE_IVOC; /*防淹门关门回复标志置为不允许*/ FloodGateDataStru[floodGateId].FloodGateCloseFromIvocStru[jj].wFloodGateCloseIvocFlag = FLOOD_GATE_NOT_ALLOWCLOSE_IVOC; /*防淹门关门回复标志置为不允许*/
} }
FloodGateDataStruCC[floodGateId].FloodGateAccessUTFlag = FLOOD_GATE_ACCESS_UT_YES;/*防淹门接近区段占压是否有UT占压标志*/ FloodGateDataStru[floodGateId].FloodGateAccessUTFlag = FLOOD_GATE_ACCESS_UT_YES;/*防淹门接近区段占压是否有UT占压标志*/
FloodGateDataStruCC[floodGateId].FloodGateCloseAnsIvocSum = 0u;/*防淹门关门回复列车数量置为0*/ FloodGateDataStru[floodGateId].FloodGateCloseAnsIvocSum = 0u;/*防淹门关门回复列车数量置为0*/
} }
else else
{ {
@@ -1335,7 +1266,7 @@ UINT8 InitialPsdData(void)
UINT8 psdVirtual = 0u; UINT8 psdVirtual = 0u;
UINT16 wPsdButtenRelayId = 0u; UINT16 wPsdButtenRelayId = 0u;
UINT16 wCleFarePCBButRelayId = 0U;/*清客确认箱关门按钮继电器ID*/ UINT16 wCleFarePCBButRelayId = 0U;/*清客确认箱关门按钮继电器ID*/
UINT16 wPsdButtenRelayId2 = 0U;
psdDataSum = GetTotalPsdCurNum();/*本联锁和相邻联锁发送给本联锁的Psd总数目*/ psdDataSum = GetTotalPsdCurNum();/*本联锁和相邻联锁发送给本联锁的Psd总数目*/
/*数值大于等于PSD_SUM_MAX会返回0*/ /*数值大于等于PSD_SUM_MAX会返回0*/
@@ -1362,9 +1293,7 @@ UINT8 InitialPsdData(void)
} }
wPsdButtenRelayId = GetPsdReOpenRelayId(psdId); wPsdButtenRelayId = GetPsdReOpenRelayId(psdId);
wPsdButtenRelayId2 = GetPsdReOpenRelayId2(psdId); if ((0u == wPsdButtenRelayId) || (UINT16_MAX == wPsdButtenRelayId))
if (((0u == wPsdButtenRelayId) || (UINT16_MAX == wPsdButtenRelayId))
&& ((0u == wPsdButtenRelayId2) || (UINT16_MAX == wPsdButtenRelayId2)))
{ {
PsdDataStru[psdId].doorOpenButtonState = PSD_OPEN_BUTTON_STATE_INVALID; PsdDataStru[psdId].doorOpenButtonState = PSD_OPEN_BUTTON_STATE_INVALID;
} }
@@ -1455,13 +1384,6 @@ UINT8 InitialPsdData(void)
PsdDataStru[psdId].cPsdExceptOpenState = PSD_EXCEPT_OPEN_YES; /*初始化为PSD异常打开*/ PsdDataStru[psdId].cPsdExceptOpenState = PSD_EXCEPT_OPEN_YES; /*初始化为PSD异常打开*/
PsdDataStru[psdId].dwPsdRelayDownCycNum = 0U; /*PSD门关继电器落下起始周期*/ PsdDataStru[psdId].dwPsdRelayDownCycNum = 0U; /*PSD门关继电器落下起始周期*/
/*初始化车车结构体成员*/
PsdDataStruCC[psdId].PsdId = psdId;
PsdDataStruCC[psdId].psdEditGroupInfo = 0U; /*psd编组信息初始化为0*/
PsdDataStruCC[psdId].SrcVobcId = 0U;
PsdDataStruCC[psdId].PsdCmd = PSD_DEFAULT_CONTROL_CMD;
PsdDataStruCC[psdId].CmdSetCycle = 0U;
} }
reVal = CI_SUCCESS; reVal = CI_SUCCESS;
return reVal; return reVal;
@@ -1551,14 +1473,13 @@ UINT8 InitialOverlapData(void)
overlapId = GetOverlapId(ii);/*获取配置文件中该索引下的保护区段ID*/ overlapId = GetOverlapId(ii);/*获取配置文件中该索引下的保护区段ID*/
OverlapDataStru[overlapId].OverlapId = overlapId; OverlapDataStru[overlapId].OverlapId = overlapId;
OverlapDataStruCC[overlapId].OverlapId = overlapId;
OverlapDataStru[overlapId].BelongRouteId = 0u; OverlapDataStru[overlapId].BelongRouteId = 0u;
OverlapDataStru[overlapId].UnlockStartCycNum = 0u; OverlapDataStru[overlapId].UnlockStartCycNum = 0u;
OverlapDataStru[overlapId].XuanPaiStartCycNum = 0u; OverlapDataStru[overlapId].XuanPaiStartCycNum = 0u;
OverlapDataStru[overlapId].OverlapUnlockApplyFlag = UNLOCK_OVERLAP_APPLY_NO; OverlapDataStru[overlapId].OverlapUnlockApplyFlag = UNLOCK_OVERLAP_APPLY_NO;
OverlapDataStruCC[overlapId].wOverlapUnlockApplyTrainId = 0U; OverlapDataStru[overlapId].wOverlapUnlockApplyTrainId = 0U;
OverlapDataStruCC[overlapId].dwReqIvocUnLockStartCycNum = 0U; OverlapDataStru[overlapId].dwReqIvocUnLockStartCycNum = 0U;
OverlapDataStruCC[overlapId].cIvocAllowUnlockFlag = IVOC_ALLOW_UNLOCK_OVERLAP_NO; OverlapDataStru[overlapId].cIvocAllowUnlockFlag = IVOC_ALLOW_UNLOCK_OVERLAP_NO;
OverlapDataStru[overlapId].OverlapCanLaborUnlockFlag = CANNOT_LABOR_UNLOCK_OVERLAP; OverlapDataStru[overlapId].OverlapCanLaborUnlockFlag = CANNOT_LABOR_UNLOCK_OVERLAP;
OverlapDataStru[overlapId].OverlapLaborUnlockSetState = LABOR_UNLOCK_OVERLAP_NO; OverlapDataStru[overlapId].OverlapLaborUnlockSetState = LABOR_UNLOCK_OVERLAP_NO;
OverlapDataStru[overlapId].laborUnlockStartCycNum = 0u; OverlapDataStru[overlapId].laborUnlockStartCycNum = 0u;
@@ -1568,7 +1489,6 @@ UINT8 InitialOverlapData(void)
OverlapDataStru[overlapId].laborLockOverlapCmd = LOCK_OVERLAP_CMD_NO; OverlapDataStru[overlapId].laborLockOverlapCmd = LOCK_OVERLAP_CMD_NO;
OverlapDataStru[overlapId].cProSwitchCheckResultFlag = PROSWITCH_CHECK_RESULT_DEFAULT; OverlapDataStru[overlapId].cProSwitchCheckResultFlag = PROSWITCH_CHECK_RESULT_DEFAULT;
OverlapDataStru[overlapId].cProSwitchCheckStartFlag = PROSWITCH_CHECK_START_INVALID; OverlapDataStru[overlapId].cProSwitchCheckStartFlag = PROSWITCH_CHECK_START_INVALID;
OverlapDataStru[overlapId].chPreLaborUnlockState = PRO_PRE_LABOR_UNLOCK_STATE_NO;
} }
} }
@@ -1598,8 +1518,7 @@ UINT8 InitialRouteData(void)
} }
else else
{ {
(void)CommonMemSet(RouteDataStru, sizeof(RouteDataStru),0U,sizeof(RouteDataStru)); (void)memset(RouteDataStru,0,sizeof(RouteDataStru));
(void)CommonMemSet(RouteDataStruCC, sizeof(RouteDataStruCC),0U, sizeof(RouteDataStruCC));
for (ii = 0u; ii < routeSum; ii++) for (ii = 0u; ii < routeSum; ii++)
{ {
routeId = GetRouteId(ii);/*获取索引下的进路ID*/ routeId = GetRouteId(ii);/*获取索引下的进路ID*/
@@ -1613,6 +1532,7 @@ UINT8 InitialRouteData(void)
RouteDataStru[routeId].RouteLevelChangeCyc = 0U; RouteDataStru[routeId].RouteLevelChangeCyc = 0U;
RouteDataStru[routeId].AutoRouteId = 0u; RouteDataStru[routeId].AutoRouteId = 0u;
RouteDataStru[routeId].AutoReturnId = 0u; RouteDataStru[routeId].AutoReturnId = 0u;
RouteDataStru[routeId].XuanPaiStartCycNum = 0u; RouteDataStru[routeId].XuanPaiStartCycNum = 0u;
RouteDataStru[routeId].RouteLockStartCycNum = 0u; RouteDataStru[routeId].RouteLockStartCycNum = 0u;
RouteDataStru[routeId].OverlapLockStartCycNum = 0u; RouteDataStru[routeId].OverlapLockStartCycNum = 0u;
@@ -1647,43 +1567,35 @@ UINT8 InitialRouteData(void)
RouteDataStru[routeId].CancleDelayflag = ROUTE_ZQX_DELAY_NO; /*取消进路无延时解锁*/ RouteDataStru[routeId].CancleDelayflag = ROUTE_ZQX_DELAY_NO; /*取消进路无延时解锁*/
RouteDataStru[routeId].AutoSigCancleState = AUTO_ROUTE_CANCLE_NO; /*自动信号取消状态为无效*/ RouteDataStru[routeId].AutoSigCancleState = AUTO_ROUTE_CANCLE_NO; /*自动信号取消状态为无效*/
RouteDataStru[routeId].CancleAutoSigCmd = AUTO_ROUTE_CANCLE_CMD_NO; /*设置自动信号取消命令无效*/ RouteDataStru[routeId].CancleAutoSigCmd = AUTO_ROUTE_CANCLE_CMD_NO; /*设置自动信号取消命令无效*/
RouteDataStru[routeId].wStopEnsureTrainId = 0u;
RouteDataStru[routeId].dwStopEnsureCyc = 0u;
RouteDataStru[routeId].cResReqOtherCIId = 0u;
for (k = 0u; k < ROUTE_APPLY_RECD_TRAIN_SUM_MAX; k++)
{
RouteDataStru[routeId].wszResReqTrainId[k] = 0u;
}
RouteDataStru[routeId].ITSRouteApplyTrainIdSum = 0u;
for (k = 0u; k < ROUTE_APPLY_RECD_TRAIN_SUM_MAX; k++)
{
RouteDataStru[routeId].ITSRouteApplyTrainIdBuf[k] = 0u;
}
/*cgh-合并CID-2539-10*/ /*cgh-合并CID-2539-10*/
RouteDataStru[routeId].OverlapNeedCIlockFlag = OVERLAPCILOCK_NO; /*保护区段联锁锁闭标志无效*/ RouteDataStru[routeId].OverlapNeedCIlockFlag = OVERLAPCILOCK_NO; /*保护区段联锁锁闭标志无效*/
RouteDataStru[routeId].OverlapLockProcFlag = OVERLAP_LOCK_PROC_NO; /*保护区段不在锁闭过程中*/ RouteDataStru[routeId].OverlapLockProcFlag = OVERLAP_LOCK_PROC_NO; /*保护区段不在锁闭过程中*/
RouteDataStru[routeId].GroupRouteCmdFlag = ROUTE_GROUPROUTE_CMD_NO; /*进路不存在组合进路命令标志*/ RouteDataStru[routeId].GroupRouteCmdFlag = ROUTE_GROUPROUTE_CMD_NO; /*进路不存在组合进路命令标志*/
RouteDataStru[routeId].AutoTriggerFlag = AUTO_TRIGGER_SET_NO; /*进路没有设置自动触发标志*/ RouteDataStru[routeId].AutoTriggerFlag = AUTO_TRIGGER_SET_NO; /*进路没有设置自动触发标志*/
RouteDataStru[routeId].dwFirstElockStartCycNum = 0U; /*进路第一个锁闭的逻辑区段延时设置区段故障起始周期号*/
RouteDataStru[routeId].cRelZuHeRouteSGBJDelayFlag = ROUTE_SGBJ_DELAY_OPEN_VALID; /*关联组合进路声光报警延时标志有效*/ RouteDataStru[routeId].cRelZuHeRouteSGBJDelayFlag = ROUTE_SGBJ_DELAY_OPEN_VALID; /*关联组合进路声光报警延时标志有效*/
RouteDataStru[routeId].dwDelayOpenStartCycNum = 0U; /*声光报警进路延时开放延时起始周期*/ RouteDataStru[routeId].dwDelayOpenStartCycNum = 0U; /*声光报警进路延时开放延时起始周期*/
RouteDataStru[routeId].cRouteNeedDriveSGBJFlag = ROUTE_DRIVE_SGBJ_INVALID; /*进路驱动声光报警标志无效*/ RouteDataStru[routeId].cRouteNeedDriveSGBJFlag = ROUTE_DRIVE_SGBJ_INVALID; /*进路驱动声光报警标志无效*/
RouteDataStru[routeId].cRouteDrivedSGBJFlag = ROUTE_HAS_DRIVED_SGBJ_INVALID; /*初始化进路未驱动过声光报警*/ RouteDataStru[routeId].cRouteDrivedSGBJFlag = ROUTE_HAS_DRIVED_SGBJ_INVALID; /*初始化进路未驱动过声光报警*/
RouteDataStru[routeId].chRouteNearSecSearchState = ROUTE_NEAR_SEC_HAVE_UT; /*初始化进路接近区段查询状态为有故障车*/
RouteDataStru[routeId].chRouteApplySwitchCheckFlag = ROUTE_APPLY_SWITCH_CHECK_DEF; /*初始化进路办理相邻控区道岔检查标志*/ 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; /*初始化普通进路转引导进路标志为无效*/ RouteDataStru[routeId].cRouteToLeadFlag = ROUTE_TO_LEAD_FLAG_NO; /*初始化普通进路转引导进路标志为无效*/
RouteDataStru[routeId].chRoutCouplinkFlag = ROUTE_COUPLINK_FLAG_NO; /*初始化联挂标志无效*/
RouteDataStru[routeId].chCouplinkSuccessFlag = ROUTE_COUPLINK_RESULT_NOT; /*初始化联挂成功标志为未收到*/
RouteDataStru[routeId].chCouplinkErrorFlag = ROUTE_COUPLINK_RESULT_NOT; /*初始化联挂失败标志为未收到*/
/*初始化车车结构体成员*/
RouteDataStruCC[routeId].RouteId = routeId;
RouteDataStruCC[routeId].wStopEnsureTrainId = 0u;
RouteDataStruCC[routeId].dwStopEnsureCyc = 0u;
RouteDataStruCC[routeId].cResReqOtherCIId = 0u;
for (k = 0u; k < ROUTE_APPLY_RECD_TRAIN_SUM_MAX; k++)
{
RouteDataStruCC[routeId].wszResReqTrainId[k] = 0u;
}
RouteDataStruCC[routeId].ITSRouteApplyTrainIdSum = 0u;
for (k = 0u; k < ROUTE_APPLY_RECD_TRAIN_SUM_MAX; k++)
{
RouteDataStruCC[routeId].ITSRouteApplyTrainIdBuf[k] = 0u;
}
RouteDataStruCC[routeId].dwFirstElockStartCycNum = 0U; /*进路第一个锁闭的逻辑区段延时设置区段故障起始周期号*/
RouteDataStruCC[routeId].chRouteNearSecSearchState = ROUTE_NEAR_SEC_HAVE_UT; /*初始化进路接近区段查询状态为有故障车*/
RouteDataStruCC[routeId].StopensureFlag = ROUTE_STOPENSURE_NO;
/*初始化ZC发送的进路动态数据*/
gZcToCiDymDataStru.szRouteDataStruZc[routeId].RouteId = routeId;
gZcToCiDymDataStru.szRouteDataStruZc[routeId].StopensureFlag = ROUTE_STOPENSURE_NO;
} }
} }
@@ -1969,12 +1881,6 @@ UINT8 InitialTransmitStateData(void)
InitHlhtHeadCtx(CI_SYSTEM_TYPE_TMC); InitHlhtHeadCtx(CI_SYSTEM_TYPE_TMC);
InitHlhtHeadCtx(CI_SYSTEM_TYPE_AXIS); InitHlhtHeadCtx(CI_SYSTEM_TYPE_AXIS);
InitHlhtHeadCtx(CI_SYSTEM_TYPE_CI);
InitHlhtHeadCtx(CI_SYSTEM_TYPE_RC);
InitHlhtHeadCtx(CI_SYSTEM_TYPE_ZC);
InitHlhtHeadCtx(CI_SYSTEM_TYPE_OC);
InitHlhtHeadCtx(CI_SYSTEM_TYPE_ATS);
InitHlhtHeadCtx(CI_SYSTEM_TYPE_XIANDI);
} }
return reVal; return reVal;
@@ -2290,9 +2196,9 @@ void ResetDynamicState(const UINT8 ciId)
} }
} }
if (LOG_SECTION_LOGLOCK_NORMAL == LogicSectionDataStruCC[logicSectionId].LogSecLogLockState) if (LOG_SECTION_LOGLOCK_NORMAL == LogicSectionDataStru[logicSectionId].LogSecLogLockState)
{ {
LogicSectionDataStruCC[logicSectionId].LogSecLogLockState = LOG_SECTION_LOGLOCK_EXCEPT; /*与相邻联锁断通信,将相邻联锁逻辑正常锁闭的逻辑区段置为逻辑异常锁闭*/ LogicSectionDataStru[logicSectionId].LogSecLogLockState = LOG_SECTION_LOGLOCK_EXCEPT; /*与相邻联锁断通信,将相邻联锁逻辑正常锁闭的逻辑区段置为逻辑异常锁闭*/
} }
if ((localCi !=phyBelongCi) && (TRANSMIT_STATE_BAD == commState) && if ((localCi !=phyBelongCi) && (TRANSMIT_STATE_BAD == commState) &&
@@ -2313,15 +2219,14 @@ void ResetDynamicState(const UINT8 ciId)
LogicSectionDataStru[logicSectionId].OccupyState = LOGICSECTION_OCCUPY_UT; /*占用状态*/ LogicSectionDataStru[logicSectionId].OccupyState = LOGICSECTION_OCCUPY_UT; /*占用状态*/
LogicSectionDataStru[logicSectionId].TXOccupyState = LOGICSECTION_OCCUPY_NO_TX; /*TSCI合并添加 20221208-lc*/ LogicSectionDataStru[logicSectionId].TXOccupyState = LOGICSECTION_OCCUPY_NO_TX; /*TSCI合并添加 20221208-lc*/
} }
/*逻辑区段:占用、设置临时限速、未ARB、紧急临时限速有效*/ /*逻辑区段:占用、设置临时限速、未ARB*/
LogicSectionDataStru[logicSectionId].LinShiXianSuSetFlag= LOGSEC_LSXS_SET_STATE_YES; /*逻辑区段临时限速设置状态*/ LogicSectionDataStru[logicSectionId].LinShiXianSuSetFlag= LOGSEC_LSXS_SET_STATE_YES; /*逻辑区段临时限速设置状态*/
LogicSectionDataStru[logicSectionId].chLinShiXianSuSetSpeed = 0U; /*逻辑区段临时限速设置速度值*/ LogicSectionDataStru[logicSectionId].chLinShiXianSuSetSpeed = 0U; /*逻辑区段临时限速设置速度值*/
LogicSectionDataStru[logicSectionId].chXianSuRemoveState = LOGIC_XIANSU_REMOVE_NO; LogicSectionDataStru[logicSectionId].chXianSuRemoveState = LOGIC_XIANSU_REMOVE_NO;
LogicSectionDataStru[logicSectionId].chArbState = LGC_SECTION_ARB_NO; /* 设置未ARB */ LogicSectionDataStru[logicSectionId].chArbState = LGC_SECTION_ARB_NO; /* 设置未ARB */
LogicSectionDataStruCC[logicSectionId].chAblRelLogSecUsableFlag = LOGIC_ABLNEAR_USE_FLAG_NO; LogicSectionDataStru[logicSectionId].chAblRelLogSecUsableFlag = LOGIC_ABLNEAR_USE_FLAG_NO;
LogicSectionDataStruCC[logicSectionId].cRouteLeaveLogFlag = LOGSEC_LEAVE_LOGSEC_REPLY_NO; /*离去区段ABL列车检查不通过*/ LogicSectionDataStru[logicSectionId].cRouteLeaveLogFlag = LOGSEC_LEAVE_LOGSEC_REPLY_NO; /*离去区段ABL列车检查不通过*/
LogicSectionDataStru[logicSectionId].chLogicProResUsable = LOGIC_SECTION_PRO_RES_UNUSABLE; LogicSectionDataStru[logicSectionId].chLogicProResUsable = LOGIC_SECTION_PRO_RES_UNUSABLE;
LogicSectionDataStru[logicSectionId].chLogSecEmergXianSu = LOGSEC_EMERG_XS_SET_YES; /*逻辑区段紧急临时限速设置状态*/
} }
else else
{ {
@@ -2570,9 +2475,9 @@ void ResetDynamicState(const UINT8 ciId)
OverlapDataStru[devId].UnlockStartCycNum = 0u; OverlapDataStru[devId].UnlockStartCycNum = 0u;
OverlapDataStru[devId].XuanPaiStartCycNum = 0u; OverlapDataStru[devId].XuanPaiStartCycNum = 0u;
OverlapDataStru[devId].OverlapUnlockApplyFlag = UNLOCK_OVERLAP_APPLY_NO; OverlapDataStru[devId].OverlapUnlockApplyFlag = UNLOCK_OVERLAP_APPLY_NO;
OverlapDataStruCC[devId].wOverlapUnlockApplyTrainId = 0U; OverlapDataStru[devId].wOverlapUnlockApplyTrainId = 0U;
OverlapDataStruCC[devId].dwReqIvocUnLockStartCycNum = 0U; OverlapDataStru[devId].dwReqIvocUnLockStartCycNum = 0U;
OverlapDataStruCC[devId].cIvocAllowUnlockFlag = IVOC_ALLOW_UNLOCK_OVERLAP_NO; OverlapDataStru[devId].cIvocAllowUnlockFlag = IVOC_ALLOW_UNLOCK_OVERLAP_NO;
OverlapDataStru[devId].OverlapCanLaborUnlockFlag = CANNOT_LABOR_UNLOCK_OVERLAP; OverlapDataStru[devId].OverlapCanLaborUnlockFlag = CANNOT_LABOR_UNLOCK_OVERLAP;
OverlapDataStru[devId].OverlapLaborUnlockSetState = LABOR_UNLOCK_OVERLAP_NO; OverlapDataStru[devId].OverlapLaborUnlockSetState = LABOR_UNLOCK_OVERLAP_NO;
OverlapDataStru[devId].laborUnlockStartCycNum = 0u; OverlapDataStru[devId].laborUnlockStartCycNum = 0u;
@@ -2582,7 +2487,6 @@ void ResetDynamicState(const UINT8 ciId)
OverlapDataStru[devId].laborLockOverlapCmd = LOCK_OVERLAP_CMD_NO; OverlapDataStru[devId].laborLockOverlapCmd = LOCK_OVERLAP_CMD_NO;
OverlapDataStru[devId].cProSwitchCheckResultFlag = PROSWITCH_CHECK_RESULT_INVALID; OverlapDataStru[devId].cProSwitchCheckResultFlag = PROSWITCH_CHECK_RESULT_INVALID;
OverlapDataStru[devId].cProSwitchCheckStartFlag = PROSWITCH_CHECK_START_INVALID; OverlapDataStru[devId].cProSwitchCheckStartFlag = PROSWITCH_CHECK_START_INVALID;
OverlapDataStru[devId].chPreLaborUnlockState = PRO_PRE_LABOR_UNLOCK_STATE_NO;
} }
else if ((chOverlapCiId == localCi) && (devId > 0U) && (devId < OVERLAP_SUM_MAX)) else if ((chOverlapCiId == localCi) && (devId > 0U) && (devId < OVERLAP_SUM_MAX))
{ {
@@ -2757,18 +2661,17 @@ UINT8 InitialGaragedoorData(void)
garagedoorId = GetGaragedoorId(ii);/*获取配置文件中该索引下的车库门ID*/ garagedoorId = GetGaragedoorId(ii);/*获取配置文件中该索引下的车库门ID*/
GaragedoorDataStru[garagedoorId].GaragedoorId = garagedoorId; /*车库门ID (初始化字段)*/ GaragedoorDataStru[garagedoorId].GaragedoorId = garagedoorId; /*车库门ID (初始化字段)*/
GaragedoorDataStruCC[garagedoorId].GaragedoorId = garagedoorId; /*车库门ID (初始化字段)*/
GaragedoorDataStru[garagedoorId].GaragedoorState = GARAGE_DOOR_STATE_CLOSE; /*车库门状态 (动态字段)*/ GaragedoorDataStru[garagedoorId].GaragedoorState = GARAGE_DOOR_STATE_CLOSE; /*车库门状态 (动态字段)*/
GaragedoorDataStru[garagedoorId].GaragedoorModeState = GARAGE_DOOR_STATE_MODE_LOCAL; /*车库门模式状态*/ GaragedoorDataStru[garagedoorId].GaragedoorModeState = GARAGE_DOOR_STATE_MODE_LOCAL; /*车库门模式状态*/
GaragedoorDataStru[garagedoorId].GaragedoorFaultState = GARAGE_DOOR_FAULT_TRUE; /*车库门故障状态*/ GaragedoorDataStru[garagedoorId].GaragedoorFaultState = GARAGE_DOOR_FAULT_TRUE; /*车库门故障状态*/
GaragedoorDataStruCC[garagedoorId].GDAkuNearestTrainId = NAME_FAILUREAREA; /*A库轨最接近车库门的列车ID*/ GaragedoorDataStru[garagedoorId].GDAkuNearestTrainId = NAME_FAILUREAREA; /*A库轨最接近车库门的列车ID*/
GaragedoorDataStru[garagedoorId].GaragedoorAllowCloseFlag = GARAGE_DOOR_ALLOW_CLOSE_NO; /*车库门允许关门标志ZC*/ GaragedoorDataStru[garagedoorId].GaragedoorAllowCloseFlag = GARAGE_DOOR_ALLOW_CLOSE_NO; /*车库门允许关门标志ZC*/
GaragedoorDataStruCC[garagedoorId].GDAllowCloseFlagIVOC = GARAGE_DOOR_ALLOW_CLOSE_NO; /*车库门允许关门标志IVOC*/ GaragedoorDataStru[garagedoorId].GDAllowCloseFlagIVOC = GARAGE_DOOR_ALLOW_CLOSE_NO; /*车库门允许关门标志IVOC*/
GaragedoorDataStru[garagedoorId].drvDoorState = GARAGE_DOOR_DRV_NULL; /* 驱动车库门状态*/ GaragedoorDataStru[garagedoorId].drvDoorState = GARAGE_DOOR_DRV_NULL; /* 驱动车库门状态*/
GaragedoorDataStru[garagedoorId].cmdProcessState = GARAGE_DOOR_CMD_NULL; /* 命令处理状态 */ GaragedoorDataStru[garagedoorId].cmdProcessState = GARAGE_DOOR_CMD_NULL; /* 命令处理状态 */
GaragedoorDataStru[garagedoorId].drvDoorStartCycle = 0u; /* 驱动开始时间,预留 */ GaragedoorDataStru[garagedoorId].drvDoorStartCycle = 0u; /* 驱动开始时间,预留 */
GaragedoorDataStru[garagedoorId].waiteZCResponseStartCycNum = 0u; /*等待ZC反馈开始时间*/ GaragedoorDataStru[garagedoorId].waiteZCResponseStartCycNum = 0u; /*等待ZC反馈开始时间*/
GaragedoorDataStruCC[garagedoorId].waiteIVOCResponseStartCycNum = 0u; /*等待IVOC反馈开始时间*/ GaragedoorDataStru[garagedoorId].waiteIVOCResponseStartCycNum = 0u; /*等待IVOC反馈开始时间*/
GaragedoorDataStru[garagedoorId].GaragedoorOpenStartCycNum = 0u; /*车库门打开开始周期*/ GaragedoorDataStru[garagedoorId].GaragedoorOpenStartCycNum = 0u; /*车库门打开开始周期*/
GaragedoorDataStru[garagedoorId].GaragedoorCloseStartCycNum = 0u; /*车库门关闭开始周期*/ GaragedoorDataStru[garagedoorId].GaragedoorCloseStartCycNum = 0u; /*车库门关闭开始周期*/
GaragedoorDataStru[garagedoorId].GaragedoorPangLuState = GARAGE_DOOR_PANGLU_FALSE; /*车库门旁路状态*/ GaragedoorDataStru[garagedoorId].GaragedoorPangLuState = GARAGE_DOOR_PANGLU_FALSE; /*车库门旁路状态*/
@@ -2960,17 +2863,17 @@ void InitOcData(void)
m_OcToCiOrginDataArr[i].OcId = 0u; m_OcToCiOrginDataArr[i].OcId = 0u;
m_OcToCiOrginDataArr[i].OcDeviceNum = 0u; m_OcToCiOrginDataArr[i].OcDeviceNum = 0u;
m_OcToCiOrginDataArr[i].OcDIBoardDataNum = 0u; m_OcToCiOrginDataArr[i].OcDIBoardDataNum = 0u;
m_OcToCiOrginDataArr[i].OcSIBoardDataNum = 0u;
m_OcToCiOrginDataArr[i].OcDOBoardNum = 0u; m_OcToCiOrginDataArr[i].OcDOBoardNum = 0u;
m_OcToCiOrginDataArr[i].OcSOBoardNum = 0u;
m_OcToCiOrginDataArr[i].OcSORBoardNum = 0u; m_OcToCiOrginDataArr[i].OcSORBoardNum = 0u;
m_OcToCiOrginDataArr[i].OcGdNum = 0u; m_OcToCiOrginDataArr[i].OcGdNum = 0u;
m_OcToCiOrginDataArr[i].RecvErrorDevTypeCycle = 0u;
m_OcToCiOrginDataArr[i].PowerAState = (UINT8)0xFF; m_OcToCiOrginDataArr[i].PowerAState = (UINT8)0xFF;
m_OcToCiOrginDataArr[i].PowerBState = (UINT8)0xFF; m_OcToCiOrginDataArr[i].PowerBState = (UINT8)0xFF;
m_OcToCiOrginDataArr[i].OCDevFaultState = (UINT8)0xFF; m_OcToCiOrginDataArr[i].OCDevFaultState = (UINT8)0xFF;
m_OcToCiOrginDataArr[i].FanState = (UINT8)0xFF;/*风扇状态,初始化为正常*/ m_OcToCiOrginDataArr[i].FanState = (UINT8)0xFF;/*风扇状态,初始化为正常*/
m_OcToCiOrginDataArr[i].OCBoardSwapSysNum = 0U; /*OC切系板卡数初始化为零*/ m_OcToCiOrginDataArr[i].OCBoardSwapSysNum = 0U; /*OC切系板卡数初始化为零*/
for (j = 0U; j < MAX_OC_DEVICE_SWAP_MAX; j++) for (j = 0U; j < MAX_OC_DEVICE_NUM; j++)
{ {
m_OcToCiOrginDataArr[i].SwapSysBoardId[j] = 0U; m_OcToCiOrginDataArr[i].SwapSysBoardId[j] = 0U;
} }
@@ -3262,6 +3165,7 @@ UINT8 InitialRtnIndicStaData(void)
{ {
wNonAutoReturnId = GetNonReturnId(ii); wNonAutoReturnId = GetNonReturnId(ii);
NonReturnDataStru[wNonAutoReturnId].IndicatorDevID = wNonAutoReturnId; NonReturnDataStru[wNonAutoReturnId].IndicatorDevID = wNonAutoReturnId;
NonReturnDataStru[wNonAutoReturnId].cmdSetTrainId = 0U;
NonReturnDataStru[wNonAutoReturnId].VobcToCIAutoRtnIndicFlashState = VOBCTOCIAUTORTN_INDICT_MASK_INVALID; NonReturnDataStru[wNonAutoReturnId].VobcToCIAutoRtnIndicFlashState = VOBCTOCIAUTORTN_INDICT_MASK_INVALID;
NonReturnDataStru[wNonAutoReturnId].VobcToCIAutoRtnIndicSteadyState = VOBCTOCIAUTORTN_INDICT_MASK_INVALID; NonReturnDataStru[wNonAutoReturnId].VobcToCIAutoRtnIndicSteadyState = VOBCTOCIAUTORTN_INDICT_MASK_INVALID;
@@ -3281,10 +3185,6 @@ UINT8 InitialRtnIndicStaData(void)
NonReturnDataStru[wNonAutoReturnId].RtnRelayAdhesionState.RelayUpCycNum = 0U; NonReturnDataStru[wNonAutoReturnId].RtnRelayAdhesionState.RelayUpCycNum = 0U;
} }
/*初始化车车结构体成员*/
NonReturnDataStruCC[wNonAutoReturnId].IndicatorDevID = wNonAutoReturnId;
NonReturnDataStruCC[wNonAutoReturnId].cmdSetTrainId = 0U;
} }
} }
else else
@@ -3345,268 +3245,3 @@ UINT8 InitialRtnIndicStaData(void)
return chReval; return chReval;
} }
/*
* RC的设备动态数据
* void
* void
* Created By LQ 2025.11.07
*/
void ResetLocalRcDynamicState(void)
{
UINT16 jj = 0U;
UINT8 cLocalCiId = 0U;
UINT8 cBelongCiId = 0U; /*设备所属控区ID*/
UINT16 wRouteNum = 0U; /*进路数量*/
UINT16 wRouteId = 0U; /*进路ID*/
UINT16 wSignalNum = 0U; /*信号机数量*/
UINT16 wSignalId = 0U; /*信号机ID*/
UINT16 wAxisSecNum = 0U; /*计轴区段数量*/
UINT16 wAxisSecId = 0U; /*计轴区段ID*/
UINT16 wLogSecNum = 0U; /*逻辑区段数量*/
UINT16 wLogSecId = 0U; /*逻辑区段ID*/
UINT16 wPhySecNum = 0U; /*物理区段数量*/
UINT16 wPhySecId = 0U; /*物理区段ID*/
UINT16 wPsdNum = 0U; /*PSD数量*/
UINT16 wPsdSecId = 0U; /*PSD ID*/
cLocalCiId = GetSystemParaLocalCiId();
/****** 重置RC进路信息 ******/
wRouteNum = GetRouteCurSum(); /*获取进路数量*/
for (jj = 0U; jj < wRouteNum; jj++)
{
wRouteId = GetRouteId(jj);
cBelongCiId = GetRouteBelongCiId(wRouteId);
if (cBelongCiId == cLocalCiId)
{
SetRouteStopensureFlagCC(wRouteId, ROUTE_STOPENSURE_NO); /*设置RC进路停车保证为无停车保证*/
}
else
{
/*非本控区设备,不处理*/
}
}
/****** 重置RC信号机信息 ******/
wSignalNum = GetSignalCurSum(); /*获取信号机数量*/
for (jj = 0U; jj < wSignalNum; jj++)
{
wSignalId = GetSignalId(jj);
cBelongCiId = GetSignalBelongCiId(wSignalId);
if (cBelongCiId == cLocalCiId)
{
SetSignalLightExtinctStateCC(wSignalId, SIGNAL_LIGHT_EXTICT_STATE_YES); /*设置RC信号机亮灭状态为亮灯*/
SetSignalCrossStateCC(wSignalId, SIGNAL_CROSS_STATE_NO); /*设置RC信号机跨压状态为未跨压*/
}
else
{
/*非本控区设备,不处理*/
}
}
/****** 重置RC计轴区段信息 ******/
wAxisSecNum = GetAxisSecCurSum(); /*获取计轴区段数量*/
for (jj = 0U; jj < wAxisSecNum; jj++)
{
wAxisSecId = GetAxisSecId(jj);
cBelongCiId = GetAxisBelongTioc(wAxisSecId);
if (cBelongCiId == cLocalCiId)
{
SetAxisSecArbStateCC(wAxisSecId, AXIS_SECTION_ARB_NO); /*设置RC计轴区段ARB状态为未ARB*/
}
else
{
/*非本控区设备,不处理*/
}
}
/****** 重置RC逻辑区段信息 ******/
wLogSecNum = GetLogicSecCurSum(); /*获取逻辑区段数量*/
for (jj = 0U; jj < wLogSecNum; jj++)
{
wLogSecId = GetLogicSecId(jj);
cBelongCiId = GetLogSecBelongCiId(wLogSecId);
if (cBelongCiId == cLocalCiId)
{
SetLogSecLinShiXianSuStateCC(wLogSecId, LOGSEC_LSXS_SET_STATE_YES); /*设置RC逻辑区段临时限速设置状态为已设置临时限速*/
SetLogSecOccupyStateCC(wLogSecId, LOGICSECTION_OCCUPY_UT); /*设置RC逻辑区段初始占用状态为UT占用*/
SetLogSecTXOccupyStateCC(wLogSecId, LOGICSECTION_OCCUPY_NO_TX); /*设置RC逻辑区段通信车占用状态为非通信车占用*/
}
else
{
/*非本控区设备,不处理*/
}
}
/****** 重置RC物理区段信息 ******/
wPhySecNum = GetPhySecCurSum(); /*获取物理区段数量*/
for (jj = 0U; jj < wPhySecNum; jj++)
{
wPhySecId = GetPhySecId(jj);
cBelongCiId = GetPhySecBelongCiId(wPhySecId);
if (cBelongCiId == cLocalCiId)
{
SetPhySecStopSteadyFlagCC(wPhySecId, PHYSICAL_SECTION_STOPSTEADY_NO); /*设置RC物理区段停稳状态为未停稳*/
}
else
{
/*非本控区设备,不处理*/
}
}
/****** 重置RC PSD信息 ******/
wPsdNum = GetPsdSum(); /*获取PSD数量*/
for (jj = 0U; jj < wPsdNum; jj++)
{
wPsdSecId = GetPsdId(jj);
cBelongCiId = GetPsdBelongCiId(wPsdSecId);
if (cBelongCiId == cLocalCiId)
{
SetPsdEditGroupInfoDataCC(wPsdSecId, PSD_EDIT_GROUP_DEFAULT); /*设置RC的PSD编组信息为默认值*/
SetPsdVobcCmdCC(wPsdSecId, 0U, PSD_DEFAULT_CONTROL_CMD, 0U); /*设置RC的PSD命令操作信息无效*/
}
else
{
/*非本控区设备,不处理*/
}
}
}
/*
*
* void
*
* Created By LQ 2025.11.19
*/
void ResetDevStateProcess(void)
{
UINT8 cRcWorkMode = 0U;
cRcWorkMode = GetLocalRcWorkMode();
/*系统不可用期间,周期重置为未全站解封*/
SetStartFLockFlag(CI_START_FLOCK_YES);
/*系统不可用期间,周期重置为未上电解锁*/
SetStartLockFlag(CI_START_LOCK_YES);
/*初始化进路数据*/
(void)InitialRouteData();
/*初始化信号机数据*/
(void)InitialSignalData();
/*初始化道岔数据*/
(void)InitialSwitchData();
/*初始化物理区段数据*/
(void)InitialPhySectionData();
/*初始化计轴区段数据*/
(void)InitialAxisSectionData();
/*初始化逻辑区段数据*/
(void)InitialLogicSectionData();
/*初始化紧急停车按钮数据*/
(void)InitialEsbData();
/*初始化屏蔽门数据*/
(void)InitialPsdData();
/*初始化站台数据*/
(void)InitialPlatformData();
/*初始化站台门控制器数据*/
(void)InitialPscToCiData();
/*初始化继电器数据*/
(void)InitialRelayData();
/*初始化保护区段组数据*/
(void)InitialOverlapData();
/*初始化自动折返数据*/
(void)InitialAutoReturnRouteData();
/*初始化自动通过数据*/
(void)InitialAutoRouteRouteData();
/*初始化指示灯数据*/
(void)InitialIndicatorStateData();
/*初始化通信状态数据*/
(void)InitialTransmitStateData();
/*初始化全自动折返数据*/
(void)InitialAllAutoReturnRouteData();
/*初始化车库门数据*/
(void)InitialGaragedoorData();
/*初始化SPKS数据*/
(void)SpksDataManageInit();
/*初始化ESB数据*/
(void)EsbDataManageInit();
/*初始化防淹门数据*/
(void)InitialFloodGateData();
/*初始化列车管理模块*/
(void)TrainDataModuleInit();
/* 初始化倒切设备数据 */
(void)ReverseCutDataManageInit();
if (RC_WORK_MODE_TIOC == cRcWorkMode)
{
/*初始化分界点数据*/
(void)CutoffPointDataManageInit();
/*初始化动态进路数据*/
InitialDynamicRouteData();
/*初始化逻辑进路数据*/
InitialLogicalRouteData();
/*初始化包络数据*/
as_Init();
(void)elm_Init();
ssp_Init();
/*初始化全线免筛数据*/
(void)wls_Init();
/*初始化全线紧急制动*/
WlbInit();
}
else
{
; /* 无处理 */
}
/*初始化OC数据*/
InitOcData();
/*初始化oc设备*/
InitOcDevices();
/*初始化中央联锁结构体*/
InitCtrlPowerStru();
/*初始化OC站指示灯*/
(void)InitialOCStationIndicStaData();
/*初始化无人折返指示灯状态数据*/
(void)InitialRtnIndicStaData();
/*初始化平台发送的通控、扩展板数据*/
InitPlatDataStru();
/*初始化LEU数据*/
(void)InitLEUDataStru();
TiocTransCtInit();
}
@@ -330,22 +330,6 @@ UINT8 InitLEUDataStru(void);
*/ */
UINT8 InitialRtnIndicStaData(void); UINT8 InitialRtnIndicStaData(void);
/*
* RC的设备动态数据
* void
* void
* Created By LQ 2025.11.07
*/
void ResetLocalRcDynamicState(void);
/*
*
* void
*
* Created By LQ 2025.11.19
*/
void ResetDevStateProcess(void);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
+96 -178
View File
@@ -21,27 +21,18 @@ UINT16 colStringLength = 0u;
UINT8 drvString[RELAY_SUM_MAX] = {0u};/*驱动数据*/ UINT8 drvString[RELAY_SUM_MAX] = {0u};/*驱动数据*/
UINT16 drvStringLength = 0u; UINT16 drvStringLength = 0u;
AxisSectionDataStruct Record_AxisSecDataStru[AXIS_SECTION_SUM_MAX];/*参考计轴区段数据*/ AxisSectionDataStruct Record_AxisSecDataStru[AXIS_SECTION_SUM_MAX];/*参考计轴区段数据*/
AxisSectionDataStructCC Record_AxisSecDataStruCC[AXIS_SECTION_SUM_MAX];/*参考计轴区段数据-车车*/
SignalDataStruct Record_SignalDataStru[SIGNAL_SUM_MAX];/*参考信号机动态数据*/ SignalDataStruct Record_SignalDataStru[SIGNAL_SUM_MAX];/*参考信号机动态数据*/
SignalDataStructCC Record_SignalDataStruCC[SIGNAL_SUM_MAX];/*参考信号机动态数据-车车*/
EsbDataStruct Record_EsbDataStru[ESB_SUM_MAX]; /*参考ESB动态数据*/ EsbDataStruct Record_EsbDataStru[ESB_SUM_MAX]; /*参考ESB动态数据*/
SwitchDataStruct Record_SwitchDataStru[SWITCH_SUM_MAX];/*参考道岔动态数据*/ SwitchDataStruct Record_SwitchDataStru[SWITCH_SUM_MAX];/*参考道岔动态数据*/
PhysicalSectionDataStruct Record_PhysicalSectionDataStru[PHYSICAL_SECTION_SUM_MAX];/*参考物理区段动态数据*/ PhysicalSectionDataStruct Record_PhysicalSectionDataStru[PHYSICAL_SECTION_SUM_MAX];/*参考物理区段动态数据*/
PhysicalSectionDataStructCC Record_PhySecDataStruCC[PHYSICAL_SECTION_SUM_MAX] = { 0U };/*参考物理区段动态数据CC*/
RouteDataStruct Record_RouteDataStru[ROUTE_SUM_MAX];/*参考进路动态数据*/ RouteDataStruct Record_RouteDataStru[ROUTE_SUM_MAX];/*参考进路动态数据*/
RouteDataStructCC Record_RouteDataStruCC[ROUTE_SUM_MAX];/*参考进路动态数据-车车*/
NonRouteDataStruct Record_NonRouteDataStru[NONROUTE_ID_NUM_MAX]; /*参考非进路调车动态数据*/ NonRouteDataStruct Record_NonRouteDataStru[NONROUTE_ID_NUM_MAX]; /*参考非进路调车动态数据*/
LogicSectionDataStruct Record_LogicSecDataStru[LOGIC_SECTION_SUM_MAX];/*参考逻辑区段动态数据*/ LogicSectionDataStruct Record_LogicSecDataStru[LOGIC_SECTION_SUM_MAX];/*参考逻辑区段动态数据*/
LogicSectionDataStructCC Record_LogicSecDataStruCC[LOGIC_SECTION_SUM_MAX];/*参考逻辑区段动态数据-车车*/
WashMachineDataStruct Record_WashMachineDataStru[WASHMACHINE_SUM_MAX]; /*参考洗车机动态数据*/ WashMachineDataStruct Record_WashMachineDataStru[WASHMACHINE_SUM_MAX]; /*参考洗车机动态数据*/
PsdDataStruct Record_PsdDataStru[PSD_SUM_MAX];/*参考屏蔽门动态数据*/ PsdDataStruct Record_PsdDataStru[PSD_SUM_MAX];/*参考屏蔽门动态数据*/
PsdDataStructCC Record_PsdDataStruCC[PSD_SUM_MAX] = { 0U };/*参考屏蔽门动态数据CC*/
GaragedoorDataStruct Record_GaragedoorDataStru[GARAGE_DOOR_SUM_MAX]; /*参考车库门数据结构体*/ GaragedoorDataStruct Record_GaragedoorDataStru[GARAGE_DOOR_SUM_MAX]; /*参考车库门数据结构体*/
GaragedoorDataStructCC Record_GaragedoorDataStruCC[GARAGE_DOOR_SUM_MAX]; /*参考车库门数据结构体-车车*/ FloodGateDataStruct Record_FloodGateDataStru[FLOOD_GATE_SUM_MAX]; /**/
FloodGateDataStruct Record_FloodGateDataStru[FLOOD_GATE_SUM_MAX]; /*参考防烟门数据结构体*/
FloodGateDataStructCC Record_FloodGateDataStruCC[FLOOD_GATE_SUM_MAX]; /*参考防烟门数据结构体-车车*/
OverlapDataStruct Record_OverlapDataStru[OVERLAP_SUM_MAX];/*参考保护区段动态数据*/ OverlapDataStruct Record_OverlapDataStru[OVERLAP_SUM_MAX];/*参考保护区段动态数据*/
OverlapDataStructCC Record_OverlapDataStruCC[OVERLAP_SUM_MAX];/*参考保护区段动态数据-车车*/
VirCIKeyDataStru Record_VirCIKeyDataStru[VIRTUAL_CI_MAX]= {0u};/*记录虚拟联锁关键数据*/ VirCIKeyDataStru Record_VirCIKeyDataStru[VIRTUAL_CI_MAX]= {0u};/*记录虚拟联锁关键数据*/
VirCIKeyDataStru newVirCIKeyDataStru[VIRTUAL_CI_MAX]= {0u}; VirCIKeyDataStru newVirCIKeyDataStru[VIRTUAL_CI_MAX]= {0u};
SpksDataStruct Record_spksDataBuff[SPKS_SUM_MAX] = { 0u }; SpksDataStruct Record_spksDataBuff[SPKS_SUM_MAX] = { 0u };
@@ -51,7 +42,7 @@ TsrDataStruct Record_TsrInfo[TSR_MAX_SUM] = { 0u }; /*
OCStationIndicDataStru Record_OCStationIndicBuff[INDICATOR_SUM_MAX] = { 0u }; OCStationIndicDataStru Record_OCStationIndicBuff[INDICATOR_SUM_MAX] = { 0u };
LogicalRouteDataStruct Record_LogicalRouteDataStru[ROUTE_LOGICAL_SUM_MAX] = { 0U }; LogicalRouteDataStruct Record_LogicalRouteDataStru[ROUTE_LOGICAL_SUM_MAX] = { 0U };
NonAutoReturnDataStruct Record_NonReturnDataStru[NON_AUTO_RETURN_SUM_MAX] = { 0U }; NonAutoReturnDataStruct Record_NonReturnDataStru[NON_AUTO_RETURN_SUM_MAX] = { 0U };
NonAutoReturnDataStructCC Record_NonReturnDataStruCC[NON_AUTO_RETURN_SUM_MAX] = { 0U };
UINT8 outString[1024*1024] = {0u};/*比较后的设备打印数据缓冲*/ UINT8 outString[1024*1024] = {0u};/*比较后的设备打印数据缓冲*/
extern QueueStruct logPrintfQue; /*日志打印缓存队列*/ extern QueueStruct logPrintfQue; /*日志打印缓存队列*/
UINT16 logIndex = 0u; /*日志缓存索引*/ UINT16 logIndex = 0u; /*日志缓存索引*/
@@ -467,29 +458,19 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
UINT16 wTrainId = 0u; UINT16 wTrainId = 0u;
UINT8 returnValue = CI_SUCCESS;/*返回值*/ UINT8 returnValue = CI_SUCCESS;/*返回值*/
UINT8 comparaResult = 0u;/*比较结果*/ UINT8 comparaResult = 0u;/*比较结果*/
UINT8 comparaResultCC = 0u;/*比较结果*/
UINT16 floodGateTotalSum = 0u;/*防淹门总数量*/ UINT16 floodGateTotalSum = 0u;/*防淹门总数量*/
AxisSectionDataStruct* newAxisSecData = GetAxisSecData(); AxisSectionDataStruct* newAxisSecData = GetAxisSecData();
AxisSectionDataStructCC* pAxisSecDataCC = GetAxisSecDataCC();
SignalDataStruct* newSignalData = GetSignalData(); SignalDataStruct* newSignalData = GetSignalData();
SignalDataStructCC* pSignalDataCC = GetSignalDataCC();
SwitchDataStruct* newSwitchData = GetSwitchData(); SwitchDataStruct* newSwitchData = GetSwitchData();
PhysicalSectionDataStruct* newPhysicalSectionData = GetPhySecData(); PhysicalSectionDataStruct* newPhysicalSectionData = GetPhySecData();
PhysicalSectionDataStructCC* pPhysicalSectionDataCC = GetPhySecDataCC();
RouteDataStruct* newRouteData = GetRouteData(); RouteDataStruct* newRouteData = GetRouteData();
RouteDataStructCC* pRouteDataCC = GetRouteDataCC();
NonRouteDataStruct* newNonRouteDataStru = GetNonRouteDataPtr(); NonRouteDataStruct* newNonRouteDataStru = GetNonRouteDataPtr();
LogicSectionDataStruct* newLogicSecData = GetLogicSecData(); LogicSectionDataStruct* newLogicSecData = GetLogicSecData();
LogicSectionDataStructCC* pLogicSecDataCC = GetLogicSecDataCC();
WashMachineDataStruct* newWashMachineData = GetWashMachineData(); WashMachineDataStruct* newWashMachineData = GetWashMachineData();
PsdDataStruct * newPsdData = GetPsdData(); PsdDataStruct * newPsdData = GetPsdData();
PsdDataStructCC* pPsdDataCC = GetPsdDataCC();
GaragedoorDataStruct* newGaragedoorData = GetGaragedoorData(); /*获取车库门数据结构体*/ GaragedoorDataStruct* newGaragedoorData = GetGaragedoorData(); /*获取车库门数据结构体*/
GaragedoorDataStructCC* pGaragedoorDataCC = GetGaragedoorDataCC(); /*获取车库门数据结构体*/
FloodGateDataStruct *pNewFloodGateData = GetFloodGateData(); /*获取防淹门数据结构体*/ FloodGateDataStruct *pNewFloodGateData = GetFloodGateData(); /*获取防淹门数据结构体*/
FloodGateDataStructCC* pNewFloodGateDataCC = GetFloodGateDataCC(); /*获取防淹门数据结构体*/
OverlapDataStruct* newOverlapData = GetOverlapData(); OverlapDataStruct* newOverlapData = GetOverlapData();
OverlapDataStructCC* pOverlapDataCC = GetOverlapDataCC();
TrainInfoStru* pNewTrainInfoData = GetTrainInfoData(); TrainInfoStru* pNewTrainInfoData = GetTrainInfoData();
TsrDataStruct* pNewTsrInfo = GetTsrData(); /* 临时限速信息 */ TsrDataStruct* pNewTsrInfo = GetTsrData(); /* 临时限速信息 */
CfpDataStru * pNewCfpData = GetCfpData(); CfpDataStru * pNewCfpData = GetCfpData();
@@ -503,8 +484,8 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
UINT16 deviceNum = 0u; UINT16 deviceNum = 0u;
UINT8 localCiType = 0u; UINT8 localCiType = 0u;
UINT16 wNonAutoReturnCurSum = 0U;/*无人折返按钮当前总数*/ UINT16 wNonAutoReturnCurSum = 0U;/*无人折返按钮当前总数*/
NonAutoReturnDataStruct* pNonAutoReturnData = NULL; /*无人折返数据结构体指针*/ NonAutoReturnDataStruct* pNonAutoReturnData = NULL;/*无人折返数据结构体指针*/
NonAutoReturnDataStructCC* pNonReturnDataStruCC = NULL; /*无人折返数据结构体指针-CC*/
/*************************************打印物理区段数据********************************************/ /*************************************打印物理区段数据********************************************/
/*打印区段数据*/ /*打印区段数据*/
@@ -516,10 +497,9 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
deviceId = GetPhySecId(ii); deviceId = GetPhySecId(ii);
comparaResult = DeviceCompara((UINT8*)(&Record_PhysicalSectionDataStru[deviceId]), (UINT16)sizeof(PhysicalSectionDataStruct), comparaResult = DeviceCompara((UINT8*)(&Record_PhysicalSectionDataStru[deviceId]), (UINT16)sizeof(PhysicalSectionDataStruct),
(UINT8*)(&newPhysicalSectionData[deviceId]), (UINT16)sizeof(PhysicalSectionDataStruct)); (UINT8*)(&newPhysicalSectionData[deviceId]), (UINT16)sizeof(PhysicalSectionDataStruct));
comparaResultCC = DeviceCompara((UINT8*)(&Record_PhySecDataStruCC[deviceId]), (UINT16)sizeof(PhysicalSectionDataStructCC),
(UINT8*)(&pPhysicalSectionDataCC[deviceId]), (UINT16)sizeof(PhysicalSectionDataStructCC));
if ((1U == comparaResult) || (1U == comparaResultCC))
if(0u != comparaResult)
{/*比较数据不一致*/ {/*比较数据不一致*/
if (CI_ERROR != Flag) if (CI_ERROR != Flag)
@@ -549,15 +529,11 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outString[outStringLength++] = newPhysicalSectionData[deviceId].SectionResetType;/*区段计轴复位类型*/ outString[outStringLength++] = newPhysicalSectionData[deviceId].SectionResetType;/*区段计轴复位类型*/
LongToChar(newPhysicalSectionData[deviceId].SectionResetStartCycNum, &outString[outStringLength]);/*区段计轴复位开始周期*/ LongToChar(newPhysicalSectionData[deviceId].SectionResetStartCycNum, &outString[outStringLength]);/*区段计轴复位开始周期*/
outStringLength += 4u; outStringLength += 4u;
outString[outStringLength++] = newPhysicalSectionData[deviceId].chResetCmdTag;/*复位命令标签*/
outString[outStringLength++] = newPhysicalSectionData[deviceId].chResetCmdTagBack;/*复位命令标签反馈*/
outString[outStringLength++] = newPhysicalSectionData[deviceId].PhySecPreResetState;/*计轴预复位状态*/ outString[outStringLength++] = newPhysicalSectionData[deviceId].PhySecPreResetState;/*计轴预复位状态*/
outString[outStringLength++] = newPhysicalSectionData[deviceId].chPreResetBack;/*预复位命令反馈*/ outString[outStringLength++] = newPhysicalSectionData[deviceId].chPreResetBack;/*预复位命令反馈*/
outString[outStringLength++] = newPhysicalSectionData[deviceId].chDirectResetRst;/*直接复位结果*/ outString[outStringLength++] = newPhysicalSectionData[deviceId].chDirectResetRst;/*直接复位结果*/
outString[outStringLength++] = newPhysicalSectionData[deviceId].chDirectResetBack;/*直接复位命令反馈*/ outString[outStringLength++] = newPhysicalSectionData[deviceId].chDirectResetBack;/*直接复位命令反馈*/
outString[outStringLength++] = newPhysicalSectionData[deviceId].StopSteadyFlag;/*停稳状态信息*/ outString[outStringLength++] = newPhysicalSectionData[deviceId].StopSteadyFlag;/*停稳状态信息*/
outString[outStringLength] = pPhysicalSectionDataCC[deviceId].StopSteadyFlag;/*停稳状态信息CC(0x55-未停稳,0xAA-停稳)*/
outStringLength++;
outString[outStringLength++] = newPhysicalSectionData[deviceId].ArbState;/*ARB状态*/ outString[outStringLength++] = newPhysicalSectionData[deviceId].ArbState;/*ARB状态*/
outString[outStringLength++] = newPhysicalSectionData[deviceId].ProtectSecLockDelayTimeFlag;/*保护区段锁闭延时标志(动态字段)*/ outString[outStringLength++] = newPhysicalSectionData[deviceId].ProtectSecLockDelayTimeFlag;/*保护区段锁闭延时标志(动态字段)*/
outString[outStringLength++] = newPhysicalSectionData[deviceId].StopCheckFlag; /*物理区段停止检查标志(未设置/设置) (动态字段)*/ outString[outStringLength++] = newPhysicalSectionData[deviceId].StopCheckFlag; /*物理区段停止检查标志(未设置/设置) (动态字段)*/
@@ -591,10 +567,6 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outStringLength += 4u; outStringLength += 4u;
} }
} }
else
{
/*数据一致,不处理*/
}
} }
if (0u == outStringLength) if (0u == outStringLength)
@@ -641,14 +613,11 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
comparaResult = DeviceCompara((UINT8*)(&Record_SignalDataStru[deviceId]), (UINT16)sizeof(SignalDataStruct), comparaResult = DeviceCompara((UINT8*)(&Record_SignalDataStru[deviceId]), (UINT16)sizeof(SignalDataStruct),
(UINT8*)(&newSignalData[deviceId]), (UINT16)sizeof(SignalDataStruct)); (UINT8*)(&newSignalData[deviceId]), (UINT16)sizeof(SignalDataStruct));
comparaResultCC = DeviceCompara((UINT8*)(&Record_SignalDataStruCC[deviceId]), (UINT16)sizeof(SignalDataStructCC), if (0u==comparaResult)
(UINT8*)(&pSignalDataCC[deviceId]), (UINT16)sizeof(SignalDataStructCC));
if ((0U==comparaResult) && (0U == comparaResultCC))
{/*比较数据一致*/ {/*比较数据一致*/
} }
else if ((1U==comparaResult ) || (1U == comparaResultCC)) else if (1u==comparaResult )
{/*比较数据不一致*/ {/*比较数据不一致*/
if (CI_ERROR != Flag) if (CI_ERROR != Flag)
@@ -659,8 +628,6 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outStringLength += 2u; outStringLength += 2u;
outString[outStringLength++] = newSignalData[deviceId].FLockState;/*封锁状态*/ outString[outStringLength++] = newSignalData[deviceId].FLockState;/*封锁状态*/
outString[outStringLength++] = newSignalData[deviceId].LightExtinctState;/*亮灭灯状态*/ outString[outStringLength++] = newSignalData[deviceId].LightExtinctState;/*亮灭灯状态*/
outString[outStringLength] = pSignalDataCC[deviceId].LightExtinctState;/*亮灭灯状态CC(0x55:灭灯,0xaa:亮灯)*/
outStringLength++;
outString[outStringLength++] = newSignalData[deviceId].PreColor;/*之前显示颜色*/ outString[outStringLength++] = newSignalData[deviceId].PreColor;/*之前显示颜色*/
outString[outStringLength++] = newSignalData[deviceId].CurColor;/*当前显示颜色*/ outString[outStringLength++] = newSignalData[deviceId].CurColor;/*当前显示颜色*/
outString[outStringLength++] = newSignalData[deviceId].PreDriveColor;/*之前驱动颜色*/ outString[outStringLength++] = newSignalData[deviceId].PreDriveColor;/*之前驱动颜色*/
@@ -673,8 +640,6 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
LongToChar(newSignalData[deviceId].CollSigOpenStartCycNum,&outString[outStringLength]); /*采集信号机开放起始周期*/ LongToChar(newSignalData[deviceId].CollSigOpenStartCycNum,&outString[outStringLength]); /*采集信号机开放起始周期*/
outStringLength += 4u; outStringLength += 4u;
outString[outStringLength++] = newSignalData[deviceId].SignalCrossState;/*信号机跨压状态*/ outString[outStringLength++] = newSignalData[deviceId].SignalCrossState;/*信号机跨压状态*/
outString[outStringLength] = pSignalDataCC[deviceId].SignalCrossState;/*信号机跨压状态CC(0x55:未跨压,0xaa:跨压)*/
outStringLength++;
outString[outStringLength++] = newSignalData[deviceId].SignalYLockOpenState;/*引导总锁信号开放状态*/ outString[outStringLength++] = newSignalData[deviceId].SignalYLockOpenState;/*引导总锁信号开放状态*/
outString[outStringLength++] = newSignalData[deviceId].AtsDetainFlag;/*Ats人工扣车标志*/ outString[outStringLength++] = newSignalData[deviceId].AtsDetainFlag;/*Ats人工扣车标志*/
outString[outStringLength++] = newSignalData[deviceId].AtsDetainFlagAuto;/*Ats自动扣车标志*/ outString[outStringLength++] = newSignalData[deviceId].AtsDetainFlagAuto;/*Ats自动扣车标志*/
@@ -702,7 +667,7 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outString[outStringLength++] = newSignalData[deviceId].DoubleYellowDsBreakFlag;/*双黄灯丝断丝标志状态*/ outString[outStringLength++] = newSignalData[deviceId].DoubleYellowDsBreakFlag;/*双黄灯丝断丝标志状态*/
outString[outStringLength++] = newSignalData[deviceId].MaintainLightState;/*信号机维修点灯状态*/ outString[outStringLength++] = newSignalData[deviceId].MaintainLightState;/*信号机维修点灯状态*/
if (MAX_SIGNAL_LIGHTUPLINK_NUM < pSignalDataCC[deviceId].wSignalLightUpLinkIdSum) if (MAX_SIGNAL_LIGHTUPLINK_NUM < newSignalData[deviceId].wSignalLightUpLinkIdSum)
{ {
/* 数量合法 */ /* 数量合法 */
ShortToChar(0u, &outString[outStringLength]);/*信号机点灯link数量*/ ShortToChar(0u, &outString[outStringLength]);/*信号机点灯link数量*/
@@ -711,12 +676,12 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
else else
{ {
/* 数量合法 */ /* 数量合法 */
ShortToChar(pSignalDataCC[deviceId].wSignalLightUpLinkIdSum, &outString[outStringLength]);/*信号机点灯link数量*/ ShortToChar(newSignalData[deviceId].wSignalLightUpLinkIdSum, &outString[outStringLength]);/*信号机点灯link数量*/
outStringLength += 2u; outStringLength += 2u;
for (jj = 0u; jj < pSignalDataCC[deviceId].wSignalLightUpLinkIdSum; jj++) for (jj = 0u; jj < newSignalData[deviceId].wSignalLightUpLinkIdSum; jj++)
{ {
ShortToChar(pSignalDataCC[deviceId].szSignalLightUpLinkIdBuf[jj], &outString[outStringLength]);/*信号机点灯link数量*/ ShortToChar(newSignalData[deviceId].szSignalLightUpLinkIdBuf[jj], &outString[outStringLength]);/*信号机点灯link数量*/
outStringLength += 2u; outStringLength += 2u;
} }
} }
@@ -734,9 +699,9 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outStringLength += 4u; outStringLength += 4u;
LongToChar(newSignalData[deviceId].CancelDetainErrTrigPressCycNum, &outString[outStringLength]); /*取消扣车按钮误触发按下周期*/ LongToChar(newSignalData[deviceId].CancelDetainErrTrigPressCycNum, &outString[outStringLength]); /*取消扣车按钮误触发按下周期*/
outStringLength += 4u; outStringLength += 4u;
ShortToChar(pSignalDataCC[deviceId].wSignalLightUpTrainId, &outString[outStringLength]);/*信号机点灯区段接近列车ID*/ ShortToChar(newSignalData[deviceId].wSignalLightUpTrainId, &outString[outStringLength]);/*信号机点灯区段接近列车ID*/
outStringLength += 2u; outStringLength += 2u;
outString[outStringLength++] = pSignalDataCC[deviceId].cSleepTrainLightUpFlag; /*休眠车点亮信号机标志:0x55 无效,0xAA 有效*/ outString[outStringLength++] = newSignalData[deviceId].cSleepTrainLightUpFlag; /*休眠车点亮信号机标志:0x55 无效,0xAA 有效*/
outString[outStringLength++] = newSignalData[deviceId].cInHumidRailFlag; /*信号机湿轨标志:0x55 无效,0xAA 有效*/ outString[outStringLength++] = newSignalData[deviceId].cInHumidRailFlag; /*信号机湿轨标志:0x55 无效,0xAA 有效*/
outString[outStringLength] = newSignalData[deviceId].cDetCutBtnState; /*扣车旁路按钮状态:0x55-无效,0xAA-有效*/ outString[outStringLength] = newSignalData[deviceId].cDetCutBtnState; /*扣车旁路按钮状态:0x55-无效,0xAA-有效*/
outStringLength++; outStringLength++;
@@ -998,14 +963,11 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
comparaResult = DeviceCompara((UINT8*)(&Record_RouteDataStru[deviceId]), (UINT16)sizeof(RouteDataStruct), comparaResult = DeviceCompara((UINT8*)(&Record_RouteDataStru[deviceId]), (UINT16)sizeof(RouteDataStruct),
(UINT8*)(&newRouteData[deviceId]), (UINT16)sizeof(RouteDataStruct)); (UINT8*)(&newRouteData[deviceId]), (UINT16)sizeof(RouteDataStruct));
comparaResultCC = DeviceCompara((UINT8*)(&Record_RouteDataStruCC[deviceId]), (UINT16)sizeof(RouteDataStructCC), if (0u==comparaResult)
(UINT8*)(&pRouteDataCC[deviceId]), (UINT16)sizeof(RouteDataStructCC));
if ((0U == comparaResult) && (0U == comparaResultCC))
{/*比较数据一致*/ {/*比较数据一致*/
} }
else if ((1U==comparaResult) || (1U == comparaResultCC)) else if (1u==comparaResult )
{/*比较数据不一致*/ {/*比较数据不一致*/
if (CI_ERROR != Flag) if (CI_ERROR != Flag)
@@ -1041,8 +1003,6 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
ShortToChar(newRouteData[deviceId].AllAutoReturnId,&outString[outStringLength]);/*全自动折返进路ID*/ ShortToChar(newRouteData[deviceId].AllAutoReturnId,&outString[outStringLength]);/*全自动折返进路ID*/
outStringLength += 2u; outStringLength += 2u;
outString[outStringLength++] = newRouteData[deviceId].StopensureFlag;/*停车保证标志*/ outString[outStringLength++] = newRouteData[deviceId].StopensureFlag;/*停车保证标志*/
outString[outStringLength] = pRouteDataCC[deviceId].StopensureFlag;/*停车保证标志CC(0x55:已设置,0xAA:未设置)*/
outStringLength++;
outString[outStringLength++] = newRouteData[deviceId].StopKeepCheckFlag; /* 保持时候用的停车保证标志 */ outString[outStringLength++] = newRouteData[deviceId].StopKeepCheckFlag; /* 保持时候用的停车保证标志 */
outString[outStringLength++] = newRouteData[deviceId].RouteStateFlag; /*进路状态标志(1:表示有效;0:表示无效)*/ outString[outStringLength++] = newRouteData[deviceId].RouteStateFlag; /*进路状态标志(1:表示有效;0:表示无效)*/
outString[outStringLength++] = newRouteData[deviceId].TrainEnterFlag;/*列车驶入标志*/ outString[outStringLength++] = newRouteData[deviceId].TrainEnterFlag;/*列车驶入标志*/
@@ -1075,19 +1035,19 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outString[outStringLength++] = newRouteData[deviceId].AutoSigPropertyLoseEfficacyFlag; /*自动信号属性失效标志(未设置/设置)*/ outString[outStringLength++] = newRouteData[deviceId].AutoSigPropertyLoseEfficacyFlag; /*自动信号属性失效标志(未设置/设置)*/
outString[outStringLength++] = newRouteData[deviceId].OverlapNeedCIlockFlag; /*保护区段需要CI锁闭标志*/ outString[outStringLength++] = newRouteData[deviceId].OverlapNeedCIlockFlag; /*保护区段需要CI锁闭标志*/
outString[outStringLength++] = newRouteData[deviceId].OverlapLockProcFlag; /*保护区段在锁闭过程中标志*/ outString[outStringLength++] = newRouteData[deviceId].OverlapLockProcFlag; /*保护区段在锁闭过程中标志*/
ShortToChar(pRouteDataCC[deviceId].wStopEnsureTrainId, &outString[outStringLength]);/*进路停车保证列车ID*/ ShortToChar(newRouteData[deviceId].wStopEnsureTrainId, &outString[outStringLength]);/*进路停车保证列车ID*/
outStringLength += 2u; outStringLength += 2u;
LongToChar(pRouteDataCC[deviceId].dwStopEnsureCyc, &outString[outStringLength]);/*停车保证询问周期号*/ LongToChar(newRouteData[deviceId].dwStopEnsureCyc, &outString[outStringLength]);/*停车保证询问周期号*/
outStringLength += 4u; outStringLength += 4u;
outString[outStringLength++] = pRouteDataCC[deviceId].cResReqOtherCIId; /*发送资源申请的联锁ID*/ outString[outStringLength++] = newRouteData[deviceId].cResReqOtherCIId; /*发送资源申请的联锁ID*/
if (ROUTE_APPLY_RECD_TRAIN_SUM_MAX >= pRouteDataCC[deviceId].chResReqTrainSum) if (ROUTE_APPLY_RECD_TRAIN_SUM_MAX >= newRouteData[deviceId].chResReqTrainSum)
{ {
outString[outStringLength++] = pRouteDataCC[deviceId].chResReqTrainSum; /*发送资源申请的联锁ID*/ outString[outStringLength++] = newRouteData[deviceId].chResReqTrainSum; /*发送资源申请的联锁ID*/
for (jj = 0u; jj < pRouteDataCC[deviceId].chResReqTrainSum; jj++) for (jj = 0u; jj < newRouteData[deviceId].chResReqTrainSum; jj++)
{ {
ShortToChar(pRouteDataCC[deviceId].wszResReqTrainId[jj], &outString[outStringLength]);/*发送资源申请的列车ID*/ ShortToChar(newRouteData[deviceId].wszResReqTrainId[jj], &outString[outStringLength]);/*发送资源申请的列车ID*/
outStringLength += 2u; outStringLength += 2u;
} }
} }
@@ -1096,13 +1056,13 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outString[outStringLength++] = 0u; /*发送资源申请的联锁ID*/ outString[outStringLength++] = 0u; /*发送资源申请的联锁ID*/
} }
if (ROUTE_APPLY_RECD_TRAIN_SUM_MAX >= pRouteDataCC[deviceId].ITSRouteApplyTrainIdSum) if (ROUTE_APPLY_RECD_TRAIN_SUM_MAX >= newRouteData[deviceId].ITSRouteApplyTrainIdSum)
{ {
outString[outStringLength++] = pRouteDataCC[deviceId].ITSRouteApplyTrainIdSum; /*ITS申请路径命令的列车ID记录总数*/ outString[outStringLength++] = newRouteData[deviceId].ITSRouteApplyTrainIdSum; /*ITS申请路径命令的列车ID记录总数*/
for (jj = 0u; jj < pRouteDataCC[deviceId].ITSRouteApplyTrainIdSum; jj++) for (jj = 0u; jj < newRouteData[deviceId].ITSRouteApplyTrainIdSum; jj++)
{ {
ShortToChar(pRouteDataCC[deviceId].ITSRouteApplyTrainIdBuf[jj], &outString[outStringLength]);/*通过ITS申请路径命令记录的列车ID数组*/ ShortToChar(newRouteData[deviceId].ITSRouteApplyTrainIdBuf[jj], &outString[outStringLength]);/*通过ITS申请路径命令记录的列车ID数组*/
outStringLength += 2u; outStringLength += 2u;
} }
@@ -1113,16 +1073,16 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
} }
/*可动道岔标志*/ /*可动道岔标志*/
outString[outStringLength++] = pRouteDataCC[deviceId].HalfRouteDataSt.HalfRouteSwitchMoveValid; outString[outStringLength++] = newRouteData[deviceId].HalfRouteDataSt.HalfRouteSwitchMoveValid;
if (MAX_ROUTE_IN_LT_NUM > pRouteDataCC[deviceId].HalfRouteDataSt.RouteLockLgcSecNum) if (MAX_ROUTE_IN_LT_NUM > newRouteData[deviceId].HalfRouteDataSt.RouteLockLgcSecNum)
{ {
/*部分锁闭逻辑区段数量*/ /*部分锁闭逻辑区段数量*/
outString[outStringLength++] = pRouteDataCC[deviceId].HalfRouteDataSt.RouteLockLgcSecNum; outString[outStringLength++] = newRouteData[deviceId].HalfRouteDataSt.RouteLockLgcSecNum;
/*部分锁闭逻辑区段ID*/ /*部分锁闭逻辑区段ID*/
for (jj = 0u; jj < pRouteDataCC[deviceId].HalfRouteDataSt.RouteLockLgcSecNum; jj++) for (jj = 0u; jj < newRouteData[deviceId].HalfRouteDataSt.RouteLockLgcSecNum; jj++)
{ {
ShortToChar(pRouteDataCC[deviceId].HalfRouteDataSt.RouteLockLgcSecIdBuf[jj], &outString[outStringLength]);/*通过ITS申请路径命令记录的列车ID数组*/ ShortToChar(newRouteData[deviceId].HalfRouteDataSt.RouteLockLgcSecIdBuf[jj], &outString[outStringLength]);/*通过ITS申请路径命令记录的列车ID数组*/
outStringLength += 2u; outStringLength += 2u;
} }
@@ -1132,18 +1092,18 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outString[outStringLength++] = 0u; outString[outStringLength++] = 0u;
} }
/*部分锁闭列车ID*/ /*部分锁闭列车ID*/
ShortToChar(pRouteDataCC[deviceId].HalfRouteDataSt.HalfResReqTrainId, &outString[outStringLength]);/*通过ITS申请路径命令记录的列车ID数组*/ ShortToChar(newRouteData[deviceId].HalfRouteDataSt.HalfResReqTrainId, &outString[outStringLength]);/*通过ITS申请路径命令记录的列车ID数组*/
outStringLength += 2u; outStringLength += 2u;
if (ROUTE_TRAIN_LOC_MAX_LGC_SUM >= pRouteDataCC[deviceId].HalfRouteDataSt.TrainLocLgcSecNum) if (ROUTE_TRAIN_LOC_MAX_LGC_SUM >= newRouteData[deviceId].HalfRouteDataSt.TrainLocLgcSecNum)
{ {
/*部分锁闭列车身下资源数量*/ /*部分锁闭列车身下资源数量*/
outString[outStringLength++] = pRouteDataCC[deviceId].HalfRouteDataSt.TrainLocLgcSecNum; outString[outStringLength++] = newRouteData[deviceId].HalfRouteDataSt.TrainLocLgcSecNum;
for (jj = 0u; jj < pRouteDataCC[deviceId].HalfRouteDataSt.TrainLocLgcSecNum; jj++) for (jj = 0u; jj < newRouteData[deviceId].HalfRouteDataSt.TrainLocLgcSecNum; jj++)
{ {
/*部分锁闭列车身下资源逻辑区段ID*/ /*部分锁闭列车身下资源逻辑区段ID*/
ShortToChar(pRouteDataCC[deviceId].HalfRouteDataSt.TrainLocLgcSecIdBuf[jj], &outString[outStringLength]);/*通过ITS申请路径命令记录的列车ID数组*/ ShortToChar(newRouteData[deviceId].HalfRouteDataSt.TrainLocLgcSecIdBuf[jj], &outString[outStringLength]);/*通过ITS申请路径命令记录的列车ID数组*/
outStringLength += 2u; outStringLength += 2u;
} }
@@ -1152,7 +1112,7 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
{ {
outString[outStringLength++] = 0u; outString[outStringLength++] = 0u;
} }
LongToChar(pRouteDataCC[deviceId].dwFirstElockStartCycNum, &outString[outStringLength]); /*进路第一个锁闭的逻辑区段延时设置区段故障起始周期号*/ LongToChar(newRouteData[deviceId].dwFirstElockStartCycNum, &outString[outStringLength]); /*进路第一个锁闭的逻辑区段延时设置区段故障起始周期号*/
outStringLength += 4u; outStringLength += 4u;
outString[outStringLength++] = newRouteData[deviceId].cRelZuHeRouteSGBJDelayFlag; /*关联组合进路声光报警是否延时标志*/ outString[outStringLength++] = newRouteData[deviceId].cRelZuHeRouteSGBJDelayFlag; /*关联组合进路声光报警是否延时标志*/
@@ -1163,11 +1123,8 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outString[outStringLength++] = newRouteData[deviceId].cRouteNeedDriveSGBJFlag; /*进路驱动声光报警标志*/ outString[outStringLength++] = newRouteData[deviceId].cRouteNeedDriveSGBJFlag; /*进路驱动声光报警标志*/
outString[outStringLength++] = newRouteData[deviceId].cRouteDrivedSGBJFlag; /*进路驱动声光报警标志:0x55 未驱动过;0xAA 已驱动过*/ outString[outStringLength++] = newRouteData[deviceId].cRouteDrivedSGBJFlag; /*进路驱动声光报警标志:0x55 未驱动过;0xAA 已驱动过*/
outString[outStringLength++] = pRouteDataCC[deviceId].chRouteNearSecSearchState; /*进路接近区段查询状态是否有故障车*/ outString[outStringLength++] = newRouteData[deviceId].chRouteNearSecSearchState; /*进路接近区段查询状态是否有故障车*/
outString[outStringLength++] = newRouteData[deviceId].chRouteApplySwitchCheckFlag; /*进路办理相邻控区道岔检查标志*/ outString[outStringLength++] = newRouteData[deviceId].chRouteApplySwitchCheckFlag; /*进路办理相邻控区道岔检查标志*/
outString[outStringLength++] = newRouteData[deviceId].chRoutCouplinkFlag; /*进路联挂标志*/
outString[outStringLength++] = newRouteData[deviceId].chCouplinkSuccessFlag; /*进路联挂成功*/
outString[outStringLength++] = newRouteData[deviceId].chCouplinkErrorFlag; /*进路联挂失败*/
} }
} }
else else
@@ -1308,13 +1265,12 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
deviceId = GetLogicSecId(ii); deviceId = GetLogicSecId(ii);
comparaResult = DeviceCompara((UINT8*)(&Record_LogicSecDataStru[deviceId]), (UINT16)sizeof(LogicSectionDataStruct), comparaResult = DeviceCompara((UINT8*)(&Record_LogicSecDataStru[deviceId]), (UINT16)sizeof(LogicSectionDataStruct),
(UINT8*)(&newLogicSecData[deviceId]), (UINT16)sizeof(LogicSectionDataStruct)); (UINT8*)(&newLogicSecData[deviceId]), (UINT16)sizeof(LogicSectionDataStruct));
comparaResultCC = DeviceCompara((UINT8*)(&Record_LogicSecDataStruCC[deviceId]), (UINT16)sizeof(LogicSectionDataStructCC),
(UINT8*)(&pLogicSecDataCC[deviceId]), (UINT16)sizeof(LogicSectionDataStructCC)); if (0u==comparaResult)
if ((0U==comparaResult) && (0U == comparaResultCC))
{/*比较数据一致*/ {/*比较数据一致*/
} }
else if ((1U==comparaResult) || (1U == comparaResultCC)) else if (1u==comparaResult )
{/*比较数据不一致*/ {/*比较数据不一致*/
if (CI_ERROR==Flag) if (CI_ERROR==Flag)
@@ -1330,18 +1286,10 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outString[outStringLength++] = newLogicSecData[deviceId].PreOccupyState;/*逻辑区段之前占用状态*/ outString[outStringLength++] = newLogicSecData[deviceId].PreOccupyState;/*逻辑区段之前占用状态*/
outString[outStringLength++] = newLogicSecData[deviceId].CurOccupyState;/*逻辑区段当前占用状态*/ outString[outStringLength++] = newLogicSecData[deviceId].CurOccupyState;/*逻辑区段当前占用状态*/
outString[outStringLength++] = newLogicSecData[deviceId].LinShiXianSuSetFlag;/*逻辑区段临时限速*/ outString[outStringLength++] = newLogicSecData[deviceId].LinShiXianSuSetFlag;/*逻辑区段临时限速*/
outString[outStringLength] = pLogicSecDataCC[deviceId].LinShiXianSuSetFlag;/*逻辑区段临时限速CC(0x55-已未设置临时限速,0xAA-已设置临时限速,0xFF-临时限速无效)*/ outString[outStringLength++] = newLogicSecData[deviceId].OccupyState;/*逻辑区段占用状态*/
outStringLength++;
outString[outStringLength++] = newLogicSecData[deviceId].OccupyState;/*逻辑区段初始占用状态*/
outString[outStringLength] = pLogicSecDataCC[deviceId].OccupyState;/*逻辑区段初始占用状态CC(0x55-未占用,0xAA-非通信车占用,0xBB-通信车占用)*/
outStringLength++;
outString[outStringLength] = newLogicSecData[deviceId].TXOccupyState;/*逻辑区段通信车占用状态(0x55-无车或非通信车占用,0xAA-通信车占用)*/
outStringLength++;
outString[outStringLength] = pLogicSecDataCC[deviceId].TXOccupyState;/*逻辑区段通信车占用状态CC(0x55-无车或非通信车占用,0xAA-通信车占用)*/
outStringLength++;
outString[outStringLength++] = newLogicSecData[deviceId].LogLockState;/*逻辑区段锁闭状态*/ outString[outStringLength++] = newLogicSecData[deviceId].LogLockState;/*逻辑区段锁闭状态*/
outString[outStringLength++] = newLogicSecData[deviceId].LogLockDir;/*逻辑区段锁闭方向*/ outString[outStringLength++] = newLogicSecData[deviceId].LogLockDir;/*逻辑区段锁闭方向*/
outString[outStringLength++] = pLogicSecDataCC[deviceId].chResShareFlag;/*逻辑区段共享标志 0x55共享 0xAA非共享*/ outString[outStringLength++] = newLogicSecData[deviceId].chResShareFlag;/*逻辑区段共享标志 0x55共享 0xAA非共享*/
ShortToChar(newLogicSecData[deviceId].LogLockBelongRoute,&outString[outStringLength]);/*逻辑锁闭所属进路*/ ShortToChar(newLogicSecData[deviceId].LogLockBelongRoute,&outString[outStringLength]);/*逻辑锁闭所属进路*/
outStringLength += 2u; outStringLength += 2u;
LongToChar(newLogicSecData[deviceId].LogUnlockStartCycNum,&outString[outStringLength]);/*逻辑延时解锁周期号*/ LongToChar(newLogicSecData[deviceId].LogUnlockStartCycNum,&outString[outStringLength]);/*逻辑延时解锁周期号*/
@@ -1349,53 +1297,53 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
ShortToChar(newLogicSecData[deviceId].wPLockBelongRouteId, &outString[outStringLength]);/*防护锁闭的进路编号*/ ShortToChar(newLogicSecData[deviceId].wPLockBelongRouteId, &outString[outStringLength]);/*防护锁闭的进路编号*/
outStringLength += 2u; outStringLength += 2u;
outString[outStringLength++] = pLogicSecDataCC[deviceId].cResReqOtherCIId;/*发送资源请求的其他联锁ID*/ outString[outStringLength++] = newLogicSecData[deviceId].cResReqOtherCIId;/*发送资源请求的其他联锁ID*/
ShortToChar(pLogicSecDataCC[deviceId].wResReqTrainId, &outString[outStringLength]);/*发送资源请求的列车ID*/ ShortToChar(newLogicSecData[deviceId].wResReqTrainId, &outString[outStringLength]);/*发送资源请求的列车ID*/
outStringLength += 2u; outStringLength += 2u;
ShortToChar(pLogicSecDataCC[deviceId].JumpLockTrainId, &outString[outStringLength]);/*申请或释放跳跃锁闭命令的列车ID*/ ShortToChar(newLogicSecData[deviceId].JumpLockTrainId, &outString[outStringLength]);/*申请或释放跳跃锁闭命令的列车ID*/
outStringLength += 2u; outStringLength += 2u;
outString[outStringLength++] = pLogicSecDataCC[deviceId].LogJumpLockState;/*逻辑区段跳跃锁闭状态 0x55 未锁闭,0xAA 锁闭*/ outString[outStringLength++] = newLogicSecData[deviceId].LogJumpLockState;/*逻辑区段跳跃锁闭状态 0x55 未锁闭,0xAA 锁闭*/
outString[outStringLength++] = pLogicSecDataCC[deviceId].LogJumpLockDelayUnlockFlag;/*逻辑区段跳跃锁闭延时解锁设置标志 0x55 未设置,0xaa 设置*/ outString[outStringLength++] = newLogicSecData[deviceId].LogJumpLockDelayUnlockFlag;/*逻辑区段跳跃锁闭延时解锁设置标志 0x55 未设置,0xaa 设置*/
LongToChar(pLogicSecDataCC[deviceId].LogSecJumpDelayUnlockStartCyc, &outString[outStringLength]);/*逻辑区段跳跃锁闭延时解锁起始周期号*/ LongToChar(newLogicSecData[deviceId].LogSecJumpDelayUnlockStartCyc, &outString[outStringLength]);/*逻辑区段跳跃锁闭延时解锁起始周期号*/
outStringLength += 4u; outStringLength += 4u;
outString[outStringLength++] = pLogicSecDataCC[deviceId].LogSecJumpLockPermFlag;/*逻辑区段跳跃锁闭允许标志 0x55 允许,0xaa 禁止*/ outString[outStringLength++] = newLogicSecData[deviceId].LogSecJumpLockPermFlag;/*逻辑区段跳跃锁闭允许标志 0x55 允许,0xaa 禁止*/
if (LOGIC_SECTION_RES_SUM_MAX < pLogicSecDataCC[deviceId].chTrainInfoSum) if (LOGIC_SECTION_RES_SUM_MAX < newLogicSecData[deviceId].chTrainInfoSum)
{ {
/* 数量不合法 */ /* 数量不合法 */
outString[outStringLength++] = 0u;/*逻辑区段资源数量*/ outString[outStringLength++] = 0u;/*逻辑区段资源数量*/
} }
else else
{ {
outString[outStringLength++] = pLogicSecDataCC[deviceId].chTrainInfoSum;/*逻辑区段资源数量*/ outString[outStringLength++] = newLogicSecData[deviceId].chTrainInfoSum;/*逻辑区段资源数量*/
for (jj = 0u; jj < pLogicSecDataCC[deviceId].chTrainInfoSum; jj++) for (jj = 0u; jj < newLogicSecData[deviceId].chTrainInfoSum; jj++)
{ {
ShortToChar(pLogicSecDataCC[deviceId].szTrainResData[jj].wTrainId, &outString[outStringLength]);/*列车ID*/ ShortToChar(newLogicSecData[deviceId].szTrainResData[jj].wTrainId, &outString[outStringLength]);/*列车ID*/
outStringLength += 2u; outStringLength += 2u;
outString[outStringLength++] = pLogicSecDataCC[deviceId].szTrainResData[jj].chTrainApplyState;/*列车申请状态*/ outString[outStringLength++] = newLogicSecData[deviceId].szTrainResData[jj].chTrainApplyState;/*列车申请状态*/
outString[outStringLength++] = pLogicSecDataCC[deviceId].szTrainResData[jj].chLogicResUsable;/*列车资源状态*/ outString[outStringLength++] = newLogicSecData[deviceId].szTrainResData[jj].chLogicResUsable;/*列车资源状态*/
outString[outStringLength++] = pLogicSecDataCC[deviceId].szTrainResData[jj].chLogicReturnState;/*折返逻辑区段标志*/ outString[outStringLength++] = newLogicSecData[deviceId].szTrainResData[jj].chLogicReturnState;/*折返逻辑区段标志*/
outString[outStringLength++] = pLogicSecDataCC[deviceId].szTrainResData[jj].chLogicUnlockState;/*列车申请状态*/ outString[outStringLength++] = newLogicSecData[deviceId].szTrainResData[jj].chLogicUnlockState;/*列车申请状态*/
LongToChar(pLogicSecDataCC[deviceId].szTrainResData[jj].dwRcvUnlockCmdCyc, &outString[outStringLength]);/*逻辑延时解锁周期号*/ LongToChar(newLogicSecData[deviceId].szTrainResData[jj].dwRcvUnlockCmdCyc, &outString[outStringLength]);/*逻辑延时解锁周期号*/
outStringLength += 4u; outStringLength += 4u;
} }
} }
LongToChar(pLogicSecDataCC[deviceId].LogErrlockStartCycNum, &outString[outStringLength]);/*逻辑区段延时设置故障锁闭起始周期号*/ LongToChar(newLogicSecData[deviceId].LogErrlockStartCycNum, &outString[outStringLength]);/*逻辑区段延时设置故障锁闭起始周期号*/
outStringLength += 4U; outStringLength += 4U;
outString[outStringLength++] = newLogicSecData[deviceId].chLogicProResUsable;/*逻辑区段防护锁闭资源可用状态*/ outString[outStringLength++] = newLogicSecData[deviceId].chLogicProResUsable;/*逻辑区段防护锁闭资源可用状态*/
outString[outStringLength++] = newLogicSecData[deviceId].chLogicSpksFLockState;/*逻辑区段被SPKS封锁状态*/ outString[outStringLength++] = newLogicSecData[deviceId].chLogicSpksFLockState;/*逻辑区段被SPKS封锁状态*/
if (LOGSEC_RELATE_ROUTE_SUM_MAX >= pLogicSecDataCC[deviceId].chLogSecLockBelLogRouteSum) if (LOGSEC_RELATE_ROUTE_SUM_MAX >= newLogicSecData[deviceId].chLogSecLockBelLogRouteSum)
{ {
outString[outStringLength++] = pLogicSecDataCC[deviceId].chLogSecLockBelLogRouteSum; /*逻辑区段锁闭所属逻辑进路数量*/ outString[outStringLength++] = newLogicSecData[deviceId].chLogSecLockBelLogRouteSum; /*逻辑区段锁闭所属逻辑进路数量*/
for (kk = 0U; kk < pLogicSecDataCC[deviceId].chLogSecLockBelLogRouteSum; kk++) for (kk = 0U; kk < newLogicSecData[deviceId].chLogSecLockBelLogRouteSum; kk++)
{ {
ShortToChar(pLogicSecDataCC[deviceId].szLogSecLockBelLogRouteData[kk].wLogSecLockBelLogRouteId, &outString[outStringLength]); /*逻辑区段锁闭所属逻辑进路ID*/ ShortToChar(newLogicSecData[deviceId].szLogSecLockBelLogRouteData[kk].wLogSecLockBelLogRouteId, &outString[outStringLength]); /*逻辑区段锁闭所属逻辑进路ID*/
outStringLength += 2u; outStringLength += 2u;
outString[outStringLength++] = pLogicSecDataCC[deviceId].szLogSecLockBelLogRouteData[kk].chLogSecLockBelLogRouteState; /*逻辑区段锁闭所属逻辑进路状态*/ outString[outStringLength++] = newLogicSecData[deviceId].szLogSecLockBelLogRouteData[kk].chLogSecLockBelLogRouteState; /*逻辑区段锁闭所属逻辑进路状态*/
outString[outStringLength++] = pLogicSecDataCC[deviceId].szLogSecLockBelLogRouteData[kk].wLogSecLockBelLogRouteDir; /*逻辑区段被逻辑进路锁闭的方向ID*/ outString[outStringLength++] = newLogicSecData[deviceId].szLogSecLockBelLogRouteData[kk].wLogSecLockBelLogRouteDir; /*逻辑区段被逻辑进路锁闭的方向ID*/
} }
} }
else else
@@ -1403,12 +1351,11 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outString[outStringLength++] = 0U; /*逻辑区段锁闭所属逻辑进路数量超限,不解析*/ outString[outStringLength++] = 0U; /*逻辑区段锁闭所属逻辑进路数量超限,不解析*/
} }
outString[outStringLength++] = pLogicSecDataCC[deviceId].LogSecLogLockState; /*逻辑区段逻辑锁闭状态*/ outString[outStringLength++] = newLogicSecData[deviceId].LogSecLogLockState; /*逻辑区段逻辑锁闭状态*/
outString[outStringLength++] = pLogicSecDataCC[deviceId].LogSecLogLockDir; /*逻辑区段逻辑锁闭方向*/ outString[outStringLength++] = newLogicSecData[deviceId].LogSecLogLockDir; /*逻辑区段逻辑锁闭方向*/
outString[outStringLength++] = newLogicSecData[deviceId].chLinShiXianSuSetSpeed; /*逻辑区段临时限速值*/ outString[outStringLength++] = newLogicSecData[deviceId].chLinShiXianSuSetSpeed; /*逻辑区段临时限速值*/
outString[outStringLength++] = pLogicSecDataCC[deviceId].chAblRelLogSecUsableFlag; /*ABL列车关联逻辑区段允许使用标志*/ outString[outStringLength++] = newLogicSecData[deviceId].chAblRelLogSecUsableFlag; /*ABL列车关联逻辑区段允许使用标志*/
outString[outStringLength++] = pLogicSecDataCC[deviceId].cRouteLeaveLogFlag; /*离去区段ABL列车检查标志*/ outString[outStringLength++] = newLogicSecData[deviceId].cRouteLeaveLogFlag; /*离去区段ABL列车检查标志*/
outString[outStringLength++] = newLogicSecData[deviceId].chLogSecEmergXianSu;/*逻辑区段紧急临时限速*/
} }
} }
else else
@@ -1545,14 +1492,12 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
deviceId = GetPsdId(ii); deviceId = GetPsdId(ii);
comparaResult = DeviceCompara((UINT8*)(&Record_PsdDataStru[deviceId]), (UINT16)sizeof(PsdDataStruct), comparaResult = DeviceCompara((UINT8*)(&Record_PsdDataStru[deviceId]), (UINT16)sizeof(PsdDataStruct),
(UINT8*)(&newPsdData[deviceId]), (UINT16)sizeof(PsdDataStruct)); (UINT8*)(&newPsdData[deviceId]), (UINT16)sizeof(PsdDataStruct));
comparaResultCC = DeviceCompara((UINT8*)(&Record_PsdDataStruCC[deviceId]), (UINT16)sizeof(PsdDataStructCC),
(UINT8*)(&pPsdDataCC[deviceId]), (UINT16)sizeof(PsdDataStructCC));
if ((0U == comparaResult) && (0U == comparaResultCC)) if (0u==comparaResult)
{/*比较数据一致*/ {/*比较数据一致*/
} }
else if ((1U == comparaResult)|| (1U == comparaResultCC)) else if (1u==comparaResult )
{/*比较数据不一致*/ {/*比较数据不一致*/
if (CI_ERROR==Flag) if (CI_ERROR==Flag)
@@ -1567,8 +1512,6 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outStringLength += 2u; outStringLength += 2u;
ShortToChar(newPsdData[deviceId].psdEditGroupInfo,&outString[outStringLength]);/*PSD 编组信息*/ ShortToChar(newPsdData[deviceId].psdEditGroupInfo,&outString[outStringLength]);/*PSD 编组信息*/
outStringLength += 2u; outStringLength += 2u;
ShortToChar(pPsdDataCC[deviceId].psdEditGroupInfo, &outString[outStringLength]);/*PSD 编组信息CC(0-默认值,3-三编组,4-四编组,6-六编组,8-八编组)*/
outStringLength += 2U;
outString[outStringLength++] = newPsdData[deviceId].DoorButtonState;/*屏蔽门按钮状态*/ outString[outStringLength++] = newPsdData[deviceId].DoorButtonState;/*屏蔽门按钮状态*/
outString[outStringLength++] = newPsdData[deviceId].MutualLockRemoveState;/*屏蔽门互锁解除状态*/ outString[outStringLength++] = newPsdData[deviceId].MutualLockRemoveState;/*屏蔽门互锁解除状态*/
outString[outStringLength++] = newPsdData[deviceId].PsdDriveState;/*屏蔽门驱动状态*/ outString[outStringLength++] = newPsdData[deviceId].PsdDriveState;/*屏蔽门驱动状态*/
@@ -1578,12 +1521,6 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outString[outStringLength++] = newPsdData[deviceId].PsdCmd;/*操作屏蔽门的命令*/ outString[outStringLength++] = newPsdData[deviceId].PsdCmd;/*操作屏蔽门的命令*/
LongToChar(newPsdData[deviceId].CmdSetCycle,&outString[outStringLength]);/*命令设置周期*/ LongToChar(newPsdData[deviceId].CmdSetCycle,&outString[outStringLength]);/*命令设置周期*/
outStringLength += 4u; outStringLength += 4u;
ShortToChar(pPsdDataCC[deviceId].SrcVobcId, &outString[outStringLength]);/*操作该屏蔽门的当前VOBC编号CC*/
outStringLength += 2U;
outString[outStringLength] = pPsdDataCC[deviceId].PsdCmd;/*操作屏蔽门的命令CC(0x00-默认值,0x55-打开PSD命令,0xAA-关闭PSD命令,0xFF-查询PSD命令)*/
outStringLength++;
LongToChar(pPsdDataCC[deviceId].CmdSetCycle, &outString[outStringLength]);/*命令设置周期CC*/
outStringLength += 4U;
LongToChar(newPsdData[deviceId].CmdSetCyclePsc,&outString[outStringLength]);/*psc状态设置周期*/ LongToChar(newPsdData[deviceId].CmdSetCyclePsc,&outString[outStringLength]);/*psc状态设置周期*/
outStringLength += 4u; outStringLength += 4u;
outString[outStringLength++] = newPsdData[deviceId].doorOpenButtonState;/*站台开门按钮状态*/ outString[outStringLength++] = newPsdData[deviceId].doorOpenButtonState;/*站台开门按钮状态*/
@@ -1667,8 +1604,6 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
deviceId = GetGaragedoorId(ii); deviceId = GetGaragedoorId(ii);
comparaResult = DeviceCompara((UINT8*)(&Record_GaragedoorDataStru[deviceId]), (UINT16)sizeof(GaragedoorDataStruct), comparaResult = DeviceCompara((UINT8*)(&Record_GaragedoorDataStru[deviceId]), (UINT16)sizeof(GaragedoorDataStruct),
(UINT8*)(&newGaragedoorData[deviceId]), (UINT16)sizeof(GaragedoorDataStruct)); (UINT8*)(&newGaragedoorData[deviceId]), (UINT16)sizeof(GaragedoorDataStruct));
comparaResult += DeviceCompara((UINT8*)(&Record_GaragedoorDataStruCC[deviceId]), (UINT16)sizeof(GaragedoorDataStructCC),
(UINT8*)(&pGaragedoorDataCC[deviceId]), (UINT16)sizeof(GaragedoorDataStructCC));
if (0u==comparaResult) if (0u==comparaResult)
{/*比较数据一致*/ {/*比较数据一致*/
@@ -1689,7 +1624,7 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outStringLength += 2u; outStringLength += 2u;
outString[outStringLength++] = newGaragedoorData[deviceId].GaragedoorState; /*车库门状态 (动态字段)*/ outString[outStringLength++] = newGaragedoorData[deviceId].GaragedoorState; /*车库门状态 (动态字段)*/
outString[outStringLength++] = newGaragedoorData[deviceId].GaragedoorAllowCloseFlag; /*车库门允许关门标志ZC*/ outString[outStringLength++] = newGaragedoorData[deviceId].GaragedoorAllowCloseFlag; /*车库门允许关门标志ZC*/
outString[outStringLength++] = pGaragedoorDataCC[deviceId].GDAllowCloseFlagIVOC; /*车库门允许关门标志IVOC*/ outString[outStringLength++] = newGaragedoorData[deviceId].GDAllowCloseFlagIVOC; /*车库门允许关门标志IVOC*/
outString[outStringLength++] = newGaragedoorData[deviceId].GaragedoorModeState; /*车库门模式状态*/ outString[outStringLength++] = newGaragedoorData[deviceId].GaragedoorModeState; /*车库门模式状态*/
outString[outStringLength++] = newGaragedoorData[deviceId].GaragedoorFaultState; /*车库门故障状态*/ outString[outStringLength++] = newGaragedoorData[deviceId].GaragedoorFaultState; /*车库门故障状态*/
outString[outStringLength++] = newGaragedoorData[deviceId].GaragedoorPangLuState; /*车库门旁路状态*/; outString[outStringLength++] = newGaragedoorData[deviceId].GaragedoorPangLuState; /*车库门旁路状态*/;
@@ -1697,7 +1632,7 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outString[outStringLength++] = newGaragedoorData[deviceId].cmdProcessState; /* 命令处理状态 */ outString[outStringLength++] = newGaragedoorData[deviceId].cmdProcessState; /* 命令处理状态 */
LongToChar(newGaragedoorData[deviceId].waiteZCResponseStartCycNum,&outString[outStringLength]);/* 等待ZC反馈开始时间 */ LongToChar(newGaragedoorData[deviceId].waiteZCResponseStartCycNum,&outString[outStringLength]);/* 等待ZC反馈开始时间 */
outStringLength += 4u; outStringLength += 4u;
LongToChar(pGaragedoorDataCC[deviceId].waiteIVOCResponseStartCycNum, &outString[outStringLength]);/* 等待IVOC反馈开始时间 */ LongToChar(newGaragedoorData[deviceId].waiteIVOCResponseStartCycNum, &outString[outStringLength]);/* 等待IVOC反馈开始时间 */
outStringLength += 4u; outStringLength += 4u;
LongToChar(newGaragedoorData[deviceId].GaragedoorOpenStartCycNum,&outString[outStringLength]);/* 车库门打开开始周期 */ LongToChar(newGaragedoorData[deviceId].GaragedoorOpenStartCycNum,&outString[outStringLength]);/* 车库门打开开始周期 */
outStringLength += 4u; outStringLength += 4u;
@@ -1746,8 +1681,6 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
deviceId = GetFloodGateId(ii); deviceId = GetFloodGateId(ii);
comparaResult = DeviceCompara((UINT8*)(&Record_FloodGateDataStru[deviceId]), (UINT16)sizeof(FloodGateDataStruct), comparaResult = DeviceCompara((UINT8*)(&Record_FloodGateDataStru[deviceId]), (UINT16)sizeof(FloodGateDataStruct),
(UINT8*)(&pNewFloodGateData[deviceId]), (UINT16)sizeof(FloodGateDataStruct)); (UINT8*)(&pNewFloodGateData[deviceId]), (UINT16)sizeof(FloodGateDataStruct));
comparaResult += DeviceCompara((UINT8*)(&Record_FloodGateDataStruCC[deviceId]), (UINT16)sizeof(FloodGateDataStructCC),
(UINT8*)(&pNewFloodGateDataCC[deviceId]), (UINT16)sizeof(FloodGateDataStructCC));
if (0u==comparaResult ) if (0u==comparaResult )
{/*比较数据一致*/ {/*比较数据一致*/
@@ -1773,19 +1706,19 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outString[outStringLength++] = pNewFloodGateData[deviceId].CurAgreeCloseStateIn; /*当前同意关门采集状态*/; outString[outStringLength++] = pNewFloodGateData[deviceId].CurAgreeCloseStateIn; /*当前同意关门采集状态*/;
outString[outStringLength++] = pNewFloodGateData[deviceId].CurAgreeCloseStateOut; /* 当前同意关门输出状态(动态字段)*/ outString[outStringLength++] = pNewFloodGateData[deviceId].CurAgreeCloseStateOut; /* 当前同意关门输出状态(动态字段)*/
outString[outStringLength++] = pNewFloodGateDataCC[deviceId].FloodGateCloseApplyIvocSum; /*防淹门关门申请列车数量*/ outString[outStringLength++] = pNewFloodGateData[deviceId].FloodGateCloseApplyIvocSum; /*防淹门关门申请列车数量*/
for (jj = 0u; jj < pNewFloodGateDataCC[deviceId].FloodGateCloseApplyIvocSum; jj++) for (jj = 0u; jj < pNewFloodGateData[deviceId].FloodGateCloseApplyIvocSum; jj++)
{ {
ShortToChar(pNewFloodGateDataCC[deviceId].FloodGateCloseApplyIvocId[jj], &outString[outStringLength]);/*防淹门关门申请列车ID*/ ShortToChar(pNewFloodGateData[deviceId].FloodGateCloseApplyIvocId[jj], &outString[outStringLength]);/*防淹门关门申请列车ID*/
outStringLength += 2u; outStringLength += 2u;
} }
outString[outStringLength++] = pNewFloodGateDataCC[deviceId].FloodGateCloseAnsIvocSum; /*防淹门关门列车回复列车数量*/ outString[outStringLength++] = pNewFloodGateData[deviceId].FloodGateCloseAnsIvocSum; /*防淹门关门列车回复列车数量*/
for (jj = 0u; jj < pNewFloodGateDataCC[deviceId].FloodGateCloseAnsIvocSum; jj++) for (jj = 0u; jj < pNewFloodGateData[deviceId].FloodGateCloseAnsIvocSum; jj++)
{ {
ShortToChar(pNewFloodGateDataCC[deviceId].FloodGateCloseFromIvocStru[jj].wTrainId, &outString[outStringLength]);/*列车同意防淹门关门请求列车ID*/ ShortToChar(pNewFloodGateData[deviceId].FloodGateCloseFromIvocStru[jj].wTrainId, &outString[outStringLength]);/*列车同意防淹门关门请求列车ID*/
outStringLength += 2u; outStringLength += 2u;
outString[outStringLength++] = pNewFloodGateDataCC[deviceId].FloodGateCloseFromIvocStru[jj].wFloodGateCloseIvocFlag; /*列车同意防淹门关门请求状态*/ outString[outStringLength++] = pNewFloodGateData[deviceId].FloodGateCloseFromIvocStru[jj].wFloodGateCloseIvocFlag; /*列车同意防淹门关门请求状态*/
} }
} }
@@ -1829,8 +1762,6 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
deviceId = GetOverlapId(ii); deviceId = GetOverlapId(ii);
comparaResult = DeviceCompara((UINT8*)(&Record_OverlapDataStru[deviceId]), (UINT16)sizeof(OverlapDataStruct), comparaResult = DeviceCompara((UINT8*)(&Record_OverlapDataStru[deviceId]), (UINT16)sizeof(OverlapDataStruct),
(UINT8*)(&newOverlapData[deviceId]), (UINT16)sizeof(OverlapDataStruct)); (UINT8*)(&newOverlapData[deviceId]), (UINT16)sizeof(OverlapDataStruct));
comparaResult += DeviceCompara((UINT8*)(&Record_OverlapDataStruCC[deviceId]), (UINT16)sizeof(OverlapDataStructCC),
(UINT8*)(&pOverlapDataCC[deviceId]), (UINT16)sizeof(OverlapDataStructCC));
if (0u==comparaResult) if (0u==comparaResult)
{/*比较数据一致*/ {/*比较数据一致*/
@@ -1851,7 +1782,6 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outStringLength += 4u; outStringLength += 4u;
LongToChar(newOverlapData[deviceId].XuanPaiStartCycNum,&outString[outStringLength]);/*保护区段选排开始周期号*/ LongToChar(newOverlapData[deviceId].XuanPaiStartCycNum,&outString[outStringLength]);/*保护区段选排开始周期号*/
outStringLength += 4u; outStringLength += 4u;
outString[outStringLength++] = newOverlapData[deviceId].chPreLaborUnlockState; /*之前人工解锁状态*/
outString[outStringLength++] = newOverlapData[deviceId].OverlapUnlockApplyFlag;/*向ZC申请解锁保护区段解锁标志*/ outString[outStringLength++] = newOverlapData[deviceId].OverlapUnlockApplyFlag;/*向ZC申请解锁保护区段解锁标志*/
outString[outStringLength++] = newOverlapData[deviceId].OverlapCanLaborUnlockFlag;/*保护区段可以人工解锁标志*/ outString[outStringLength++] = newOverlapData[deviceId].OverlapCanLaborUnlockFlag;/*保护区段可以人工解锁标志*/
outString[outStringLength++] = newOverlapData[deviceId].OverlapLaborUnlockSetState;/*保护区段人工解锁设置状态*/ outString[outStringLength++] = newOverlapData[deviceId].OverlapLaborUnlockSetState;/*保护区段人工解锁设置状态*/
@@ -1868,10 +1798,10 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outStringLength += 2U; outStringLength += 2U;
outString[outStringLength++] = newOverlapData[deviceId].laborLockOverlapCmd;/*人工锁闭保护区段命令标志*/ outString[outStringLength++] = newOverlapData[deviceId].laborLockOverlapCmd;/*人工锁闭保护区段命令标志*/
ShortToChar(pOverlapDataCC[deviceId].wOverlapUnlockApplyTrainId, &outString[outStringLength]);/*申请解锁保护区段的列车ID*/ ShortToChar(newOverlapData[deviceId].wOverlapUnlockApplyTrainId, &outString[outStringLength]);/*申请解锁保护区段的列车ID*/
outStringLength += 2U; outStringLength += 2U;
LongToChar(pOverlapDataCC[deviceId].dwReqIvocUnLockStartCycNum, &outString[outStringLength]);/*向车申请解锁保护区段起始周期号*/ LongToChar(newOverlapData[deviceId].dwReqIvocUnLockStartCycNum, &outString[outStringLength]);/*向车申请解锁保护区段起始周期号*/
outStringLength += 4U; outStringLength += 4U;
outString[outStringLength++] = newOverlapData[deviceId].cProSwitchCheckResultFlag;/*跨控区防护道岔检查结果标志(0xFF:默认值,0x55:失败,0xAA:成功)*/ outString[outStringLength++] = newOverlapData[deviceId].cProSwitchCheckResultFlag;/*跨控区防护道岔检查结果标志(0xFF:默认值,0x55:失败,0xAA:成功)*/
@@ -1946,14 +1876,11 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
comparaResult = DeviceCompara((UINT8*)(&Record_AxisSecDataStru[deviceId]), (UINT16)sizeof(AxisSectionDataStruct), comparaResult = DeviceCompara((UINT8*)(&Record_AxisSecDataStru[deviceId]), (UINT16)sizeof(AxisSectionDataStruct),
(UINT8*)(&newAxisSecData[deviceId]), (UINT16)sizeof(AxisSectionDataStruct)); (UINT8*)(&newAxisSecData[deviceId]), (UINT16)sizeof(AxisSectionDataStruct));
comparaResultCC = DeviceCompara((UINT8*)(&Record_AxisSecDataStruCC[deviceId]), (UINT16)sizeof(AxisSectionDataStructCC), if (0u==comparaResult)
(UINT8*)(&pAxisSecDataCC[deviceId]), (UINT16)sizeof(AxisSectionDataStructCC));
if ((0u==comparaResult) && (0U == comparaResultCC))
{/*比较数据一致*/ {/*比较数据一致*/
} }
else if ((1U==comparaResult ) || (1U == comparaResultCC)) else if (1u==comparaResult )
{/*比较数据不一致*/ {/*比较数据不一致*/
if (CI_ERROR != Flag) if (CI_ERROR != Flag)
@@ -1963,19 +1890,17 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
ShortToChar(newAxisSecData[deviceId].AxisSectionId,&outString[outStringLength]);/*计轴区段ID*/ ShortToChar(newAxisSecData[deviceId].AxisSectionId,&outString[outStringLength]);/*计轴区段ID*/
outStringLength += 2u; outStringLength += 2u;
outString[outStringLength++] = newAxisSecData[deviceId].AxisArbState;/*计轴ARB状态 (动态字段)*/ outString[outStringLength++] = newAxisSecData[deviceId].AxisArbState;/*计轴ARB状态 (动态字段)*/
outString[outStringLength] = pAxisSecDataCC[deviceId].AxisArbState;/*计轴ARB状态CC(0x55-未ARB0xaa-ARB)*/
outStringLength++;
outString[outStringLength++] = newAxisSecData[deviceId].AxisJumpLockApplyFlag;/*跳跃锁闭申请标志*/ outString[outStringLength++] = newAxisSecData[deviceId].AxisJumpLockApplyFlag;/*跳跃锁闭申请标志*/
outString[outStringLength++] = newAxisSecData[deviceId].AxisJumpLockCancelApplyFlag;/*跳跃锁闭取消申请标志*/ outString[outStringLength++] = newAxisSecData[deviceId].AxisJumpLockCancelApplyFlag;/*跳跃锁闭取消申请标志*/
LongToChar(newAxisSecData[deviceId].AxisJumpLockApplyCylce,&outString[outStringLength]);/*跳跃锁闭申请周期号*/ LongToChar(newAxisSecData[deviceId].AxisJumpLockApplyCylce,&outString[outStringLength]);/*跳跃锁闭申请周期号*/
outStringLength += 4u; outStringLength += 4u;
outString[outStringLength++] = newAxisSecData[deviceId].AxisJumpLockState;/*跳跃锁闭状态*/ outString[outStringLength++] = newAxisSecData[deviceId].AxisJumpLockState;/*跳跃锁闭状态*/
outString[outStringLength++] = pAxisSecDataCC[deviceId].AxisOccStatus;/*计轴占用状态*/ outString[outStringLength++] = newAxisSecData[deviceId].AxisOccStatus;/*计轴占用状态*/
LongToChar(pAxisSecDataCC[deviceId].dwAxisOccCycNum, &outString[outStringLength]);/*计轴占用起始周期*/ LongToChar(newAxisSecData[deviceId].dwAxisOccCycNum, &outString[outStringLength]);/*计轴占用起始周期*/
outStringLength += 4u; outStringLength += 4u;
LongToChar(pAxisSecDataCC[deviceId].dwUtOccupyCycNum, &outString[outStringLength]);/*计轴最近坏车占用周期*/ LongToChar(newAxisSecData[deviceId].dwUtOccupyCycNum, &outString[outStringLength]);/*计轴最近坏车占用周期*/
outStringLength += 4u; outStringLength += 4u;
ShortToChar(pAxisSecDataCC[deviceId].wPosMonitorTrainId, &outString[outStringLength]); /*监督有效的列车ID*/ ShortToChar(newAxisSecData[deviceId].wPosMonitorTrainId, &outString[outStringLength]); /*监督有效的列车ID*/
outStringLength += 2u; outStringLength += 2u;
} }
} }
@@ -2362,9 +2287,6 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outString[outStringLength] = pNewTrainInfoData[deviceId].chTrainReportState; /*列车汇报状态*/ outString[outStringLength] = pNewTrainInfoData[deviceId].chTrainReportState; /*列车汇报状态*/
outStringLength++; outStringLength++;
outString[outStringLength++] = pNewTrainInfoData[deviceId].chEaCmdState; /*区间疏散命令状态:0x55 有效;0xAA 无效*/ outString[outStringLength++] = pNewTrainInfoData[deviceId].chEaCmdState; /*区间疏散命令状态:0x55 有效;0xAA 无效*/
outString[outStringLength++] = pNewTrainInfoData[deviceId].chtrainControlMode;/*当前控车模式*/
outString[outStringLength++] = pNewTrainInfoData[deviceId].chTrainPostionMode; /*列车位置模式,0无位置,1使用IVOC位置,2使用VOBC位置*/
} }
@@ -2783,19 +2705,17 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
break; break;
} }
pNonAutoReturnData = GetNonReturnData(); pNonAutoReturnData = GetNonReturnData();
pNonReturnDataStruCC = GetNonReturnDataCC();
/*比较数据*/ /*比较数据*/
deviceId = GetNonReturnId(ii); deviceId = GetNonReturnId(ii);
comparaResult = DeviceCompara((UINT8*)(&Record_NonReturnDataStru[deviceId]), (UINT16)sizeof(NonAutoReturnDataStruct), comparaResult = DeviceCompara((UINT8*)(&Record_NonReturnDataStru[deviceId]), (UINT16)sizeof(NonAutoReturnDataStruct),
(UINT8*)(&pNonAutoReturnData[deviceId]), (UINT16)sizeof(NonAutoReturnDataStruct)); (UINT8*)(&pNonAutoReturnData[deviceId]), (UINT16)sizeof(NonAutoReturnDataStruct));
comparaResultCC = DeviceCompara((UINT8*)(&Record_NonReturnDataStruCC[deviceId]), (UINT16)sizeof(NonAutoReturnDataStructCC), if (0u == comparaResult)
(UINT8*)(&pNonReturnDataStruCC[deviceId]), (UINT16)sizeof(NonAutoReturnDataStructCC));
if ((0U == comparaResult) && (0U == comparaResultCC))
{/*比较数据一致*/ {/*比较数据一致*/
} }
else if ((1U == comparaResult) || (1U == comparaResultCC)) else if (1u == comparaResult)
{/*比较数据不一致*/ {/*比较数据不一致*/
if (CI_ERROR == Flag) if (CI_ERROR == Flag)
@@ -2806,12 +2726,10 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
{ {
/**************打印数据信息****************/ /**************打印数据信息****************/
outString[outStringLength++] = pNonAutoReturnData[deviceId].IndicatorDevID; /*指示灯设备ID*/ outString[outStringLength++] = pNonAutoReturnData[deviceId].IndicatorDevID; /*指示灯设备ID*/
ShortToChar(pNonReturnDataStruCC[deviceId].cmdSetTrainId, &outString[outStringLength]);/*命令列车ID*/ ShortToChar(pNonAutoReturnData[deviceId].cmdSetTrainId, &outString[outStringLength]);/*命令列车ID*/
outStringLength += 2u; outStringLength += 2u;
outString[outStringLength] = pNonAutoReturnData[deviceId].VobcToCIAutoRtnIndicFlashState; /*车载给联锁的无人折返指示灯闪灯状态*/ outString[outStringLength++] = pNonAutoReturnData[deviceId].VobcToCIAutoRtnIndicFlashState; /*车载给联锁的无人折返指示灯闪灯状态*/
outStringLength++; outString[outStringLength++] = pNonAutoReturnData[deviceId].VobcToCIAutoRtnIndicSteadyState; /*车载给联锁的无人折返指示灯稳灯状态*/
outString[outStringLength] = pNonAutoReturnData[deviceId].VobcToCIAutoRtnIndicSteadyState; /*车载给联锁的无人折返指示灯稳灯状态*/
outStringLength++;
ShortToChar(pNonAutoReturnData[deviceId].RtnRelayAdhesionState.AdhesionRealyId, &outString[outStringLength]);/*粘连继电器ID*/ ShortToChar(pNonAutoReturnData[deviceId].RtnRelayAdhesionState.AdhesionRealyId, &outString[outStringLength]);/*粘连继电器ID*/
outStringLength += 2u; outStringLength += 2u;
outString[outStringLength++] = pNonAutoReturnData[deviceId].RtnRelayAdhesionState.AdhesionState; /*继电器粘连状态*/ outString[outStringLength++] = pNonAutoReturnData[deviceId].RtnRelayAdhesionState.AdhesionState; /*继电器粘连状态*/
@@ -564,8 +564,6 @@ void SetRouteRelProSwitchLockSta(const UINT16 routeId, const UINT8 lockCommand)
UINT16 protectSwitchId = 0u; /*防护道岔ID*/ UINT16 protectSwitchId = 0u; /*防护道岔ID*/
UINT8 routeProtectSwitchSum = 0u; /*防护道岔数目*/ UINT8 routeProtectSwitchSum = 0u; /*防护道岔数目*/
RouteProtectSwitchStruct* routeProtectSwitchStru = NULL; /*防护道岔数据*/ RouteProtectSwitchStruct* routeProtectSwitchStru = NULL; /*防护道岔数据*/
UINT8 cSwitchCurPos = 0U; /*道岔当前位置*/
UINT8 cFuncRet = CI_ERROR;
routeProtectSwitchSum = GetRouteRelatedProtectSwitchSum(routeId); /*获取防护道岔数目*/ routeProtectSwitchSum = GetRouteRelatedProtectSwitchSum(routeId); /*获取防护道岔数目*/
routeProtectSwitchStru = GetRouteRelatedProtSwitchData(routeId); /*获取防护道岔数据*/ routeProtectSwitchStru = GetRouteRelatedProtSwitchData(routeId); /*获取防护道岔数据*/
@@ -588,30 +586,20 @@ void SetRouteRelProSwitchLockSta(const UINT16 routeId, const UINT8 lockCommand)
if (CI_SUCCESS == retVal) if (CI_SUCCESS == retVal)
{ {
for (ii = 0u; ii < routeProtectSwitchSum; ii++) for (ii= 0u; ii < routeProtectSwitchSum; ii++)
{ {
protectSwitchId = routeProtectSwitchStru[ii].ProtectSwitchId; protectSwitchId = routeProtectSwitchStru[ii].ProtectSwitchId;
cSwitchCurPos = GetSwitchCurPosition(protectSwitchId); SetSwitchLockStatus(SWITCH_PLOCKTYPE_ROUTE,routeId,protectSwitchId, lockCommand); /*设置道岔防护锁闭状态*/
cFuncRet = checkSwtLastValDrvPosStayorNot(protectSwitchId, routeProtectSwitchStru[ii].ProtectPosition); /*RC 13.0.0 修:不检查防护道岔中双动道岔另一端*/
if ((SWITCH_LOCK_PROTECT_CANCEL == lockCommand)
|| ((SWITCH_LOCK_PROTECT_SET == lockCommand) && (cSwitchCurPos == routeProtectSwitchStru[ii].ProtectPosition) && (CI_SUCCESS == cFuncRet)))
{
SetSwitchLockStatus(SWITCH_PLOCKTYPE_ROUTE, routeId, protectSwitchId, lockCommand); /*设置道岔防护锁闭状态*/
/*RC 13.0.0 修:不检查防护道岔中双动道岔另一端*/
#if 0 #if 0
if (SWITCH_TYPE_DOUBLE == GetSwitchType(protectSwitchId)) if (SWITCH_TYPE_DOUBLE == GetSwitchType(protectSwitchId))
{ /*双动道岔*/ { /*双动道岔*/
SetSwitchLockStatus(SWITCH_PLOCKTYPE_ROUTE, routeId, GetDSwitchOtherId(protectSwitchId), lockCommand); /*设置道岔防护锁闭状态*/ SetSwitchLockStatus(SWITCH_PLOCKTYPE_ROUTE,routeId,GetDSwitchOtherId(protectSwitchId), lockCommand); /*设置道岔防护锁闭状态*/
}
else
{
}
#endif
} }
else else
{ {
/*防护道岔不在防护位置或防护道岔存在反向驱动,不设置防护锁闭*/
} }
#endif
} }
} }
else else
@@ -1939,18 +1927,6 @@ void ClearSomeFlagDependRouteState(const UINT16 routeId)
{ {
SetRouteGroupRouteCmdFlag(routeId, ROUTE_GROUPROUTE_CMD_NO); /*清除进路的组合进路命令标志*/ SetRouteGroupRouteCmdFlag(routeId, ROUTE_GROUPROUTE_CMD_NO); /*清除进路的组合进路命令标志*/
} }
/*若进路处于以下状态,清除联挂进路标志*/
if ((ROUTE_STATE_IDLE == routeState) || (ROUTE_STATE_DELAY_UNLOCK == routeState)
|| (ROUTE_STATE_LEAD_XUANPAI == routeState) || (ROUTE_STATE_LEAD_LOCK == routeState)
|| (ROUTE_STATE_LEAD_LOCKERR == routeState) || (ROUTE_STATE_LEAD_OPEN == routeState))
{
SetRouteCouplinkFlag(routeId, ROUTE_COUPLINK_FLAG_NO);
}
else
{
/*不处理*/
}
} }
/* /*
File diff suppressed because it is too large Load Diff
@@ -1142,12 +1142,12 @@ void LeadRouteFirstXuanPaiManage(const UINT16 routeId);
void SetOcPscPlConfirmFlag(UINT8 setFlag, const UINT16 ocPId); void SetOcPscPlConfirmFlag(UINT8 setFlag, const UINT16 ocPId);
/* /*
* *
* const UINT16 wRouteId ID * const UINT16 wRouteId ID
* *
* by cgh 20250928 * by cgh 20250617
*/ */
void OverlapStateUpdateManage(void); void OverlapZhaoChaRelayUpDateManage(void);
/* /*
* *
* *
@@ -1155,20 +1155,6 @@ void OverlapStateUpdateManage(void);
* Create: fan 20250725 * Create: fan 20250725
*/ */
void TrainJumpBackApplyProc(void); void TrainJumpBackApplyProc(void);
/*
*
* const UINT16 wRouteId
*
* Create: 20250917
*/
void SetCouplinkRouteLogicManage(const UINT16 wRouteId);
/*
*
* void
*
*/
void lockSwitchLogicManage(void);
#ifdef __cplusplus #ifdef __cplusplus
} }
@@ -189,7 +189,7 @@ UINT8 OpenCbtcLTrainRouteErrProcess(const UINT16 routeId, const UINT8 checkStep)
UINT8 sendLevel = ESEND_LEVEL_ZERO; UINT8 sendLevel = ESEND_LEVEL_ZERO;
UINT8 routeReverseProperty = 0u; UINT8 routeReverseProperty = 0u;
UINT8 airShaftRouteType = 0u; UINT8 airShaftRouteType = 0u;
UINT8 chRouteCouplinkFlag = 0U;
/* 联锁逻辑检查 */ /* 联锁逻辑检查 */
/* 进路监督模式为【CBTC】*/ /* 进路监督模式为【CBTC】*/
@@ -325,36 +325,24 @@ UINT8 OpenCbtcLTrainRouteErrProcess(const UINT16 routeId, const UINT8 checkStep)
{ {
routeReverseProperty = GetRouteReverseProperty(routeId); routeReverseProperty = GetRouteReverseProperty(routeId);
airShaftRouteType = GetAirShaftRouteType(routeId); airShaftRouteType = GetAirShaftRouteType(routeId);
chRouteCouplinkFlag = GetRouteCouplinkFlag(routeId); /*获取进路联挂标志*/ if ((ROUTE_REVERSE_PROPERTY_YES == routeReverseProperty) || (ROUTE_TYPE_AIRSHAFT == airShaftRouteType))
if ((ROUTE_REVERSE_PROPERTY_YES == routeReverseProperty)|| (ROUTE_TYPE_AIRSHAFT == airShaftRouteType)) { /*反向进路需检查所有区段的占用状态,之前由于不检查占用状态导致信号出清进路内方第一区段,信号机重开的问题*/
{ /*风井进路不允许追踪办理,故开放条件需增加对进路内方所有区段的占用状态检查*/
if (ROUTE_COUPLINK_FLAG_YES == chRouteCouplinkFlag) devId = 0u;
devState = 0u;
checkResult = RouteAllSecOccuClearCheck(routeId,&devId, &devState);
if (checkResult == CI_SUCCESS)
{ {
/* 反向联挂进路允许追踪,区段条件在OpenCbtcRouteSectionErrCheck */ /* 通过检查 */
/*存在联挂标志,不在查反向进路全部空闲,其他条件检查;风井进路设置不上联挂标志所以需要检查全部区段空闲*/ reResult = CI_SUCCESS;
} }
else else
{ {
/*反向进路需检查所有区段的占用状态,之前由于不检查占用状态导致信号出清进路内方第一区段,信号机重开的问题*/ /* 记录故障码 */
SetErrorData(functionId,CI_DEVICE_TYPE_PHYSEC,devId,ETYPE_PS_MERGY_OCU_STATE,devState,sendLevel);
/*风井进路不允许追踪办理,故开放条件需增加对进路内方所有区段的占用状态检查*/ /* 失败返回 */
devId = 0u; reResult = CI_ERROR;
devState = 0u;
checkResult = RouteAllSecOccuClearCheck(routeId, &devId, &devState);
if (checkResult == CI_SUCCESS)
{
/* 通过检查 */
reResult = CI_SUCCESS;
}
else
{
/* 记录故障码 */
SetErrorData(functionId, CI_DEVICE_TYPE_PHYSEC, devId, ETYPE_PS_MERGY_OCU_STATE, devState, sendLevel);
/* 失败返回 */
reResult = CI_ERROR;
}
} }
/* 防护进路联锁条件检查 */ /* 防护进路联锁条件检查 */
if (CI_SUCCESS == reResult) if (CI_SUCCESS == reResult)
{ {
@@ -775,7 +763,7 @@ UINT8 OpenCbtcReturnRouteErrProcess(const UINT16 routeId, const UINT8 checkStep)
/* 取消标志 */ /* 取消标志 */
UINT8 const zxqFlag = GetRouteZongQuXiaoFlag(routeId); UINT8 const zxqFlag = GetRouteZongQuXiaoFlag(routeId);
UINT8 const zrjFlag = GetRouteZongRenJieFlag(routeId); UINT8 const zrjFlag = GetRouteZongRenJieFlag(routeId);
UINT8 chRouteCouplinkFlag = 0U;
/*故障发送级别*/ /*故障发送级别*/
UINT8 sendLevel = ESEND_LEVEL_ZERO; UINT8 sendLevel = ESEND_LEVEL_ZERO;
@@ -912,16 +900,8 @@ UINT8 OpenCbtcReturnRouteErrProcess(const UINT16 routeId, const UINT8 checkStep)
{ {
devId = 0u; devId = 0u;
devState = 0u; devState = 0u;
chRouteCouplinkFlag = GetRouteCouplinkFlag(routeId); /*获取进路联挂标志*/ checkResult = RouteAllSecOccuClearCheck(routeId, &devId, &devState);
if (ROUTE_COUPLINK_FLAG_YES == chRouteCouplinkFlag) if (checkResult == CI_SUCCESS)
{
checkResult = SetCouplinkRouteSecOccCheck(routeId, &devId, &devState);
}
else
{
checkResult = RouteAllSecOccuClearCheck(routeId, &devId, &devState);
}
if (CI_SUCCESS == checkResult)
{ {
/* 通过检查 */ /* 通过检查 */
reResult = CI_SUCCESS; reResult = CI_SUCCESS;
@@ -1366,7 +1346,6 @@ UINT8 KeepCbtcLTrainRouteErrProcess(const UINT16 routeId)
UINT16 trainEnteringRouteState = 0u; UINT16 trainEnteringRouteState = 0u;
UINT8 signalCrossState = 0u; UINT8 signalCrossState = 0u;
UINT8 rcWorkMode = 0U; /*rc工作模式*/ UINT8 rcWorkMode = 0U; /*rc工作模式*/
UINT8 chRouteCouplinkFlag = 0U;
rcWorkMode = GetLocalRcWorkMode(); rcWorkMode = GetLocalRcWorkMode();
/* 联锁逻辑检查 */ /* 联锁逻辑检查 */
@@ -1492,16 +1471,7 @@ UINT8 KeepCbtcLTrainRouteErrProcess(const UINT16 routeId)
{ /*反向进路或风井进路需对进路内方所有区段的占压状态进行检查*/ { /*反向进路或风井进路需对进路内方所有区段的占压状态进行检查*/
devId = 0u; devId = 0u;
devState = 0u; devState = 0u;
chRouteCouplinkFlag = GetRouteCouplinkFlag(routeId); /*获取进路联挂标志*/ checkResult = RouteAllSecOccuClearCheck(routeId,&devId, &devState);
if (ROUTE_COUPLINK_FLAG_YES == chRouteCouplinkFlag)
{
checkResult = KeepCouplinkRouteSecOccCheck(routeId, &devId, &devState);;
}
else
{
checkResult = RouteAllSecOccuClearCheck(routeId, &devId, &devState);
}
if (checkResult == CI_SUCCESS) if (checkResult == CI_SUCCESS)
{ {
/* 通过检查 */ /* 通过检查 */
@@ -1886,7 +1856,6 @@ UINT8 KeepCbtcReturnRouteErrProcess(const UINT16 routeId)
UINT8 trainEnteringRouteState =0u; UINT8 trainEnteringRouteState =0u;
UINT8 signalCrossState = 0u; UINT8 signalCrossState = 0u;
UINT8 rcWorkMode = 0U; /*rc工作模式*/ UINT8 rcWorkMode = 0U; /*rc工作模式*/
UINT8 chRouteCouplinkFlag = 0U;
rcWorkMode = GetLocalRcWorkMode(); rcWorkMode = GetLocalRcWorkMode();
devState = GetRouteLevel(routeId); devState = GetRouteLevel(routeId);
if (ROUTE_LEVEL_CBTC == devState) if (ROUTE_LEVEL_CBTC == devState)
@@ -2022,16 +1991,7 @@ UINT8 KeepCbtcReturnRouteErrProcess(const UINT16 routeId)
} }
else if(RC_WORK_MODE_CI == rcWorkMode) else if(RC_WORK_MODE_CI == rcWorkMode)
{ {
chRouteCouplinkFlag = GetRouteCouplinkFlag(routeId); /*获取进路联挂标志*/ checkResult = RouteAllSecOccuClearCheck(routeId, &devId, &devState);
if (ROUTE_COUPLINK_FLAG_YES == chRouteCouplinkFlag)
{
checkResult = KeepCouplinkRouteSecOccCheck(routeId, &devId, &devState);
}
else
{
checkResult = RouteAllSecOccuClearCheck(routeId, &devId, &devState);
}
if (CI_SUCCESS == checkResult) if (CI_SUCCESS == checkResult)
{ {
/* 通过检查 */ /* 通过检查 */
@@ -3624,9 +3584,6 @@ static UINT8 OpenBlocRouteOverlapErrCheck(const UINT16 routeId)
/*防护进路*/ /*防护进路*/
UINT8 const overlapSum = GetRouteOverlapSum(routeId); UINT8 const overlapSum = GetRouteOverlapSum(routeId);
UINT16 const overlapId = GetRouteOverlapLockedId(routeId); UINT16 const overlapId = GetRouteOverlapLockedId(routeId);
UINT8 cSndSideProFuncSwitch = 0U;
cSndSideProFuncSwitch = GetSndSideProtectFuncSwitch(); /*二级侧防功能开关*/
UINT8 lineIdentity = CI_TRADITION_RAILWAY; UINT8 lineIdentity = CI_TRADITION_RAILWAY;
@@ -3689,6 +3646,8 @@ static UINT8 OpenBlocRouteOverlapErrCheck(const UINT16 routeId)
reResult = CI_ERROR; reResult = CI_ERROR;
} }
} }
} }
else else
{ {
@@ -3731,49 +3690,43 @@ static UINT8 OpenBlocRouteOverlapErrCheck(const UINT16 routeId)
} }
} }
if (FUNC_SWITCH_ON == cSndSideProFuncSwitch) /*保护区段关联防护道岔【位置正确】*/
if(CI_SUCCESS == reResult)
{ {
/*二级侧防开关配置为支持二级侧防时,可不检查保护区段防护道岔位置及可动性,通过检查侧防条件防护*/ devId = 0u;
} devState = 0u;
else checkResult = OvlpRelatedProtSwitchPosCheck(overlapId,&devId,&devState);
{ if (checkResult == CI_SUCCESS)
/*保护区段关联防护道岔【位置正确】*/
if (CI_SUCCESS == reResult)
{ {
devId = 0u; /* 通过检查 */
devState = 0u; reResult = CI_SUCCESS;
checkResult = OvlpRelatedProtSwitchPosCheck(overlapId, &devId, &devState); }
if (checkResult == CI_SUCCESS) else
{ {
/* 通过检查 */ /* 失败返回 */
reResult = CI_SUCCESS; reResult = CI_ERROR;
}
else
{
/* 失败返回 */
reResult = CI_ERROR;
}
} }
}
/*保护区段关联防护道岔【防护锁闭】或【单锁且防护锁闭】*/ /*保护区段关联防护道岔【防护锁闭】或【单锁且防护锁闭】*/
if (CI_SUCCESS == reResult) if (CI_SUCCESS == reResult)
{
devId = 0u;
devState = 0u;
checkResult = OvlpRelatedProtSwitchLockCheck(overlapId,&devId, &devState);
if (checkResult == CI_SUCCESS)
{ {
devId = 0u; /* 通过检查 */
devState = 0u; reResult = CI_SUCCESS;
checkResult = OvlpRelatedProtSwitchLockCheck(overlapId, &devId, &devState); }
if (checkResult == CI_SUCCESS) else
{ {
/* 通过检查 */ /* 失败返回 */
reResult = CI_SUCCESS; reResult = CI_ERROR;
}
else
{
/* 失败返回 */
reResult = CI_ERROR;
}
} }
} }
if (CI_SUCCESS == reResult) if (CI_SUCCESS == reResult)
{ {
/*检查进路侵限条件状态*/ /*检查进路侵限条件状态*/
@@ -3789,21 +3742,13 @@ static UINT8 OpenBlocRouteOverlapErrCheck(const UINT16 routeId)
/*保护区段侧防条件检查*/ /*保护区段侧防条件检查*/
if ((CI_SUCCESS == reResult) || (CI_ROUTE_RECOVER_ERR == reResult)) if ((CI_SUCCESS == reResult) || (CI_ROUTE_RECOVER_ERR == reResult))
{ {
if (FUNC_SWITCH_ON == cSndSideProFuncSwitch) /*检查保护区段侧防道岔区段状态*/
devId = 0u;
devState = 0u;
checkResult = OverlapLateralDfnCheck(overlapId, &devId, &devState);
if (CI_ERROR == checkResult)
{ {
/*仅在二级侧防开关配置为支持二级侧防时才进行侧防条件检查*/ reResult = checkResult;
/*检查保护区段侧防道岔区段状态*/
devId = 0u;
devState = 0u;
checkResult = OlapSideProtectConditionCheck(overlapId, 0U, 0U);
if (CI_ERROR == checkResult)
{
reResult = checkResult;
}
}
else
{
/*不处理*/
} }
} }
@@ -4320,8 +4265,7 @@ static UINT8 OpenCbtcRouteSectionErrCheck(const UINT16 routeId)
UINT8 functionId = EFUNC_OPENROUTESECTIONERRCHECK; UINT8 functionId = EFUNC_OPENROUTESECTIONERRCHECK;
UINT8 rcWorkMode = 0U; UINT8 rcWorkMode = 0U;
UINT8 cLocalCiType = 0U; /*本控区类型*/ UINT8 cLocalCiType = 0U; /*本控区类型*/
UINT8 chRouteCouplinkFlag = 0U;
UINT8 chSigCrossState = 0U;
rcWorkMode = GetLocalRcWorkMode(); rcWorkMode = GetLocalRcWorkMode();
/* 联锁逻辑检查 */ /* 联锁逻辑检查 */
@@ -4348,30 +4292,16 @@ static UINT8 OpenCbtcRouteSectionErrCheck(const UINT16 routeId)
} }
else if (RC_WORK_MODE_CI == rcWorkMode) else if (RC_WORK_MODE_CI == rcWorkMode)
{/*CI*/ {/*CI*/
/* 进路始端信号机【未跨压】且内方第一逻辑区段【空闲】*/
startSignalId = GetRouteStartSignalId(routeId); startSignalId = GetRouteStartSignalId(routeId);
chSigCrossState = GetSignalCrossState(startSignalId); devId = GetRouteInFirstLogSecId(routeId);
if (SIGNAL_CROSS_STATE_NO == chSigCrossState) devState = GetLogSecCurOccupyState(devId);
if ((GetSignalCrossState(startSignalId) == SIGNAL_CROSS_STATE_NO) &&
(devState == SECTION_OCCUPY_NO))
{ {
chRouteCouplinkFlag = GetRouteCouplinkFlag(routeId); /*获取进路联挂标志*/ /* 通过检查 */
if (ROUTE_COUPLINK_FLAG_YES == chRouteCouplinkFlag) reResult = CI_SUCCESS;
{
/*联挂进路区段占用检查*/
reResult = SetCouplinkRouteSecOccCheck(routeId, &devId, &devState);
}
else
{
devId = GetRouteInFirstLogSecId(routeId);
devState = GetLogSecCurOccupyState(devId);
if (SECTION_OCCUPY_NO == devState)
{
/* 通过检查 */
reResult = CI_SUCCESS;
}
else
{
reResult = CI_ERROR;
}
}
} }
else else
{ {
@@ -6120,11 +6120,11 @@ UINT16 GetReturnId(const UINT16 routeId)
for (ii = 0u; ii < starSigRouteSum; ii++) for (ii = 0u; ii < starSigRouteSum; ii++)
{ {
/*B库改为两条进路,当8编组车占压两条进路时,此时BG2进路解锁需要检查以差值信号机为始端的进路的状态*/ /*B库改为两条进路,当8编组车占压两条进路时,此时BG2进路解锁需要检查以差值信号机为始端的进路的状态*/
if ((ROUTE_STATE_IDLE == GetRouteState(starSigRouteBuf[ii])) &&(CI_SUCCESS == CheckRoutePhysicalType(starSigRouteBuf[ii]))) if ((ROUTE_STATE_IDLE == GetRouteState(starSigRouteBuf[ii])) &&(CI_SUCCESS == CheckRoutePhysicalType(starSigRouteBuf[ii])) &&
(SIGNAL_VIRTUAL_YES == GetSignalVirtualAttr(returnSigId)))
{ {
/*以并置信号机为始端的进路均为空闲且进路包含的区段均为列检库区段,且并置信号机为虚拟信号机, /*以并置信号机为始端的进路均为空闲且进路包含的区段均为列检库区段,且并置信号机为虚拟信号机,
线(SIGNAL_VIRTUAL_YES == GetSignalVirtualAttr(returnSigId))*/ 线*/
/*联挂功能去掉虚拟信号机检查条件*/
} }
else else
{ {
File diff suppressed because it is too large Load Diff
@@ -946,18 +946,6 @@ UINT8 RouteAllSecJumpLockStateCheck(UINT16 const routeId,UINT16 *pDevId,UINT8 *p
* CI_SUCCESS * CI_SUCCESS
*/ */
UINT8 KeepRouteSwitchCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel); UINT8 KeepRouteSwitchCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel);
/*
*
* UINT16 RouteId,
* UINT8 functionId,
* UINT8 sendLevel,
* CI_ERROR 0
* CI_SUCCESS 1
* Created By LQ 2025.09.29
*/
UINT8 KeepLeadRouteSwitchCheck(UINT16 routeId, UINT8 functionId, UINT8 sendLevel);
/* /*
* *
* *
@@ -982,18 +970,6 @@ UINT8 KeepLTrainRouteSignalCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel
*/ */
UINT8 LockBlocRouteSwitchCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel); UINT8 LockBlocRouteSwitchCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel);
/*
*
* UINT16 RouteId,
* UINT8 functionId,
* UINT8 sendLevel,
* CI_ERROR
* CI_SUCCESS
* RETURN_LOCK_ERR_SWITPOS
* Created By LQ 2025.09.29
*/
UINT8 LockLeadRouteSwitchCheck(UINT16 routeId, UINT8 functionId, UINT8 sendLevel);
/* /*
* *
* *
@@ -1189,17 +1165,6 @@ UINT8 OpenLTrainRouteSignalCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel
*/ */
UINT8 OpenBlocRouteSwitchCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel); UINT8 OpenBlocRouteSwitchCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel);
/*
*
* UINT16 RouteId,
* UINT8 functionId,
* UINT8 sendLevel,
* CI_ERROR 0
* CI_SUCCESS 1
* Created By LQ 2025.09.29
*/
UINT8 OpenLeadRouteSwitchCheck(UINT16 routeId, UINT8 functionId, UINT8 sendLevel);
/* L10_点式进路开放信号保护区段联锁条件检查 */ /* L10_点式进路开放信号保护区段联锁条件检查 */
/* /*
* *
@@ -1897,7 +1862,15 @@ UINT8 LockLeadRouteSectionCheck(UINT16 routeId, UINT8 functionId, UINT8 sendLeve
*/ */
UINT8 LogicSecSwitchLtrlDfncCheck(UINT16 const wLgcId, UINT16 *pDevId, UINT8 *pDevState); UINT8 LogicSecSwitchLtrlDfncCheck(UINT16 const wLgcId, UINT16 *pDevId, UINT8 *pDevState);
/*
*
* UINT16 routeId,
* UINT16 *pDevId, Id
* UINT8 *pDevState,
* CI_ERROR
* CI_SUCCESS
*/
UINT8 RouteAllLtrlDfncSwitchCheck(UINT16 const routeId, UINT16 *pDevId, UINT8 *pDevState);
/* /*
* 线 * 线
@@ -2231,7 +2204,15 @@ UINT8 LogSecSeqIncUTCheck(const UINT16 wTrainId, const UINT8 cLogSecSum, const U
*/ */
UINT8 RouteHalfProSwitchFLockCheck(UINT16 const routeId, UINT16* pDevId, UINT8* pDevState, UINT8* pYLockAlarmFlag); UINT8 RouteHalfProSwitchFLockCheck(UINT16 const routeId, UINT16* pDevId, UINT8* pDevState, UINT8* pYLockAlarmFlag);
/*
*
* UINT16 routeId,
* UINT16 *pDevId, Id
* UINT8 *pDevState,
* CI_ERROR
* CI_SUCCESS
*/
UINT8 RouteHalfLtrlDfncSwitchCheck(UINT16 const routeId, UINT16 *pDevId, UINT8 *pDevState);
/* /*
* 线 * 线
@@ -2518,7 +2499,16 @@ UINT8 CheckRouteZhefanJiesuo(UINT16 const routeId);
*/ */
UINT8 CheckOverlapPhysecOtherLock(UINT16 const overlapId, UINT16* pDevId, UINT8* pDevState); UINT8 CheckOverlapPhysecOtherLock(UINT16 const overlapId, UINT16* pDevId, UINT8* pDevState);
/*
*
* UINT16 const overlapId, OverlapID
* UINT16* pDevId Id
* UINT8* pDevState
* 0
* 1
* Created By LQ 2024.01.05
*/
UINT8 OverlapLateralDfnCheck(UINT16 const overlapId, UINT16* pDevId, UINT8* pDevState);
/* /*
* CBTC区域属性 * CBTC区域属性
@@ -2623,7 +2613,7 @@ UINT8 CtTrainHeadSuspCheck(const UINT16 wTrainId, const UINT8 cLogSecSeqDir, con
* *
* CI_ERROR 0 * CI_ERROR 0
* CI_SUCCESS 1 * CI_SUCCESS 1
* Created By LQ 2024.09.05 * Edit By cgh 2025.10.17
*/ */
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, const UINT8 cFunctionId, const UINT8 cSendLevel);
@@ -2716,13 +2706,13 @@ UINT8 OtherCiOvlpRelProSwMovValCheck(const UINT16 wOverlapId);
UINT8 OverlapProSwUsingCheck(const UINT16 wOverlapId, UINT16* pDevId, UINT8* pDevState, UINT8* pAlarmType); UINT8 OverlapProSwUsingCheck(const UINT16 wOverlapId, UINT16* pDevId, UINT8* pDevState, UINT8* pAlarmType);
/* /*
* *
* UINT16 const routeId, * const UINT16 routeId ID
* CI_ERROR *
* CI_SUCCESS * UINT16* switchID道岔IDUINT8* chSwitchState道岔状态
* BY CGH 20250224 * by cgh 20241202
*/ */
UINT8 RouteRelAllSwitchPosCheck(UINT16 const routeId); UINT8 RouteRelAllSwitchPosCheck(UINT16 const routeId, UINT16* switchID, UINT8* chSwitchState);
/* /*
* *
@@ -2771,155 +2761,28 @@ UINT8 RouteCldAttrCheck(UINT16 wRouteId);
* Created By LQ 2025.08.18 * Created By LQ 2025.08.18
*/ */
UINT8 OverlapOccuUnlockCheck(UINT16 overlapId, UINT8 functionId); UINT8 OverlapOccuUnlockCheck(UINT16 overlapId, UINT8 functionId);
/*
*
* const UINT16 wRouteId ID
* UINT16* pDevId ID
* UINT8* pDevState
* CI_ERROR 0
* CI_SUCCESS 1
* Created By 2025.09.18
*/
UINT8 SetCouplinkRouteSecOccCheck(const UINT16 wRouteId, UINT16* pDevId, UINT8* pDevState);
/*
*
* const UINT16 wRouteId ID
* UINT16* pDevId ID
* UINT8* pDevState
* CI_ERROR 0
* CI_SUCCESS 1
* Created By 2025.09.18
*/
UINT8 KeepCouplinkRouteSecOccCheck(const UINT16 wRouteId, UINT16* pDevId, UINT8* pDevState);
/* /*
* *
* SideProtecStru SidePretectData * const UINT16 wPhySecId ID
* UINT16 wDevId ID * const UINT16 wTrainId ID
* UINT8 cDevType *
* UINT8 functionId ID * CI_ERROR 0
* UINT8 sendLevel * CI_SUCCESS 1
* CI_ERROR 0 * by cgh 20251017
* CI_SUCCESS 1
*/ */
UINT8 SingleSideProtectCheck(SideProtecStru SidePretectData, UINT16 wDevId, UINT8 cDevType, UINT8 functionId, UINT8 sendLevel); UINT8 TrainOccSameSecCheck(const UINT16 wPhySecId, const UINT16 wTrainId);
/* /*
* *
* SideProtecSwitchData* pSideProtecSwitchBuf * const UINT16 wBasePhySecId ID
* UINT8 chSideProtecSwitchNum * const UINT16 wCheckPhySecId ID
* CI_ERROR 0 *
* CI_SUCCESS 1 * CI_ERROR 0
* CI_SUCCESS 1
* by cgh 20251017
*/ */
UINT8 SideProtectSwitchPosCheck(SideProtecSwitchData* pSideProtecSwitchBuf, UINT8 chSideProtecSwitchNum); UINT8 OccBelSameSecCheck(const UINT16 wBasePhySecId, const UINT16 wCheckPhySecId);
/*
*
* SideProtecStru SidePretectData
* UINT8 functionId ID
* UINT8 sendLevel
* CI_ERROR
* CI_SUCCESS
*/
UINT8 SideProtectPhySecCheck(SideProtecStru SidePretectData, UINT8 functionId, UINT8 sendLevel);
/*
*
* UINT16 routeId ID
UINT8 functionId ID
UINT8 sendLevel
* CI_ERROR
* CI_SUCCESS
*
*/
UINT8 RouteSideProtectConditionCheck(UINT16 routeId, UINT8 functionId, UINT8 sendLevel);
/*
*
* UINT16 wOverlapId ID
UINT8 functionId ID
UINT8 sendLevel
* CI_ERROR
* CI_SUCCESS
*
*/
UINT8 OlapSideProtectConditionCheck(UINT16 wOverlapId, UINT8 functionId, UINT8 sendLevel);
/*
*
* UINT16 const physicalId, ID
* SideProtecStru SidePretectData
* CI_ERROR 0
* CI_SUCCESS 1
*/
UINT8 SideProtectPhySecSwtPosCheck(const UINT16 physicalId, SideProtecStru SidePretectData);
/*
*
* const UINT16 overlapId overlap ID
* CI_ERROR 0
* CI_SUCCESS 1
* Created By LQ 2025.09.28
*/
UINT8 CheckOverlapSwitchPosRight(const UINT16 overlapId);
/*
*
*const UINT16 wRouteId ID
* UINT16 *pDevId, Id
* UINT8 *pDevState,
* CI_ERROR
* CI_SUCCESS
* by cgh 20250929
*/
UINT8 OverlapPreLaborUnLockStateCheck(UINT16 const wRouteId, UINT16* pDevId, UINT8* pDevState);
/*
*
* UINT16 wSwitchId ID
* UINT16 wDevId ID
* UINT8 cDevType
* CI_ERROR 0
* CI_SUCCESS 1
* Created By LQ 2025.09.29
*/
UINT8 SingleSideKeySwitchCheck(UINT16 wSwitchId, UINT16 wDevId, UINT8 cDevType);
/*
*
* UINT16 wPhySecId ID
* CI_ERROR 0
* CI_SUCCESS 1
* Created By LQ 2025.09.29
*/
UINT8 PhySecLockMaskSideProtectCheck(UINT16 wPhySecId);
/*
*
* const UINT16 wAutoRouteId ID
* const UINT8 chFunctionId ID
* CI_ERROR
* CI_SUCCESS
* by lyj 20250929
*/
UINT8 AutoRouteCouplinkStateCheck(const UINT16 wAutoRouteId, const UINT8 chFunctionId);
/*
*
* const UINT16 wAutoRouteId ID
* const UINT8 chFunctionId ID
* CI_ERROR
* CI_SUCCESS
* by lyj 20250929
*/
UINT8 AutoReturnRouteCouplinkCheck(const UINT16 wAutoRouteId, const UINT8 chFunctionId);
/*
*
* const UINT16 wAutoRouteId ID
* const UINT8 chFunctionId ID
* CI_ERROR
* CI_SUCCESS
* by lyj 20250929
*/
UINT8 AllAutoReturnRCouplinkCheck(const UINT16 wAutoRouteId, const UINT8 chFunctionId);
#endif #endif
File diff suppressed because it is too large Load Diff
@@ -688,15 +688,15 @@ void LgcSecUnlockProc(const UINT16 routeId, const UINT16 logSectionId);
* void * void
*/ */
void RouteLgcSecResReleaseProcess(const UINT16 wRouteId); void RouteLgcSecResReleaseProcess(const UINT16 wRouteId);
/* /*
* *
* const UINT16 overlapId, ID * const UINT16 overlapId, ID
* const UINT32 dwOverlapUnlockCount
* const UINT32 dwOverlapUnlockStartCyc
* CI_SUCCESS: * CI_SUCCESS:
CI_ERROR: CI_ERROR:
* edit cgh 20250928
*/ */
UINT8 CheckOverlapLaborUnlock(const UINT16 overlapId); UINT8 CheckOverlapLaborUnlock(const UINT16 overlapId, const UINT32 dwOverlapUnlockCount, const UINT32 dwOverlapUnlockStartCyc);
/* /*
* *
* const UINT16 overlapId, ID * const UINT16 overlapId, ID
@@ -824,23 +824,6 @@ UINT8 RouteLgcSecResReturnSecCheck(UINT16 wValidReturnSigId, const UINT16 wRoute
*/ */
UINT8 LgcOverlapUsableProcess(UINT16 const wLgcSecId); UINT8 LgcOverlapUsableProcess(UINT16 const wLgcSecId);
#endif #endif
/*
*
* const UINT16 wRouteId ID
* const UINT8 functionId ID
* const UINT8 sendLevel
*
* Create: 20250917
*/
UINT8 SetRouteCouplinkProcess(const UINT16 wRouteId, const UINT8 functionId, const UINT8 sendLevel);
/*
*
* const UINT16 wRouteId ID
*
* Create: 20250919
*/
void UpdateRouteCouplinkFlag(const UINT16 wRouteId);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
@@ -823,7 +823,7 @@ UINT8 SetLogRouteSwitchCheck(UINT16 logRouteId, UINT8 functionId, UINT8 sendLeve
{ {
devId = 0u; devId = 0u;
devState = 0u; devState = 0u;
checkResult = LogRouteCeFangSwitchCheck(logRouteId, functionId, sendLevel); checkResult = LogRouteCeFangSwitchCheck(logRouteId, &devId, &devState);
if (CI_SUCCESS == checkResult) if (CI_SUCCESS == checkResult)
{ {
/* 通过检查 */ /* 通过检查 */
@@ -831,7 +831,8 @@ UINT8 SetLogRouteSwitchCheck(UINT16 logRouteId, UINT8 functionId, UINT8 sendLeve
} }
else else
{ {
/* 记录故障码 */
SetErrorData(functionId, CI_DEVICE_TYPE_PHYSEC, devId, ETYPE_PS_NO_UT_CT_OCU_STATE, devState, sendLevel);
/* 失败返回 */ /* 失败返回 */
reResult = CI_ERROR; reResult = CI_ERROR;
} }
@@ -1033,7 +1034,7 @@ UINT8 LockLogRouteSwitchCheck(UINT16 logRouteId, UINT8 functionId, UINT8 sendLev
{ {
devId = 0u; devId = 0u;
devState = 0u; devState = 0u;
checkResult = LogRouteCeFangSwitchCheck(logRouteId, functionId, sendLevel); checkResult = LogRouteCeFangSwitchCheck(logRouteId, &devId, &devState);
if (CI_SUCCESS == checkResult) if (CI_SUCCESS == checkResult)
{ {
/* 通过检查 */ /* 通过检查 */
@@ -1041,7 +1042,8 @@ UINT8 LockLogRouteSwitchCheck(UINT16 logRouteId, UINT8 functionId, UINT8 sendLev
} }
else else
{ {
/* 记录故障码 */
SetErrorData(functionId, CI_DEVICE_TYPE_PHYSEC, devId, ETYPE_PS_NO_UT_CT_OCU_STATE, devState, sendLevel);
/* 失败返回 */ /* 失败返回 */
reResult = CI_ERROR; reResult = CI_ERROR;
} }
@@ -1296,39 +1298,46 @@ UINT8 LogRouteProSwitchFLockCheck(UINT16 const routeId, UINT16* pDevId, UINT8* p
/* /*
* *
* UINT16 routeId, * UINT16 routeId,
* UINT8 functionId, ID * UINT16 *pDevId, Id
* UINT8 sendLevel * UINT8 *pDevState,
* CI_ERROR * CI_ERROR
* CI_SUCCESS * CI_SUCCESS
*/ */
UINT8 LogRouteCeFangSwitchCheck(UINT16 const routeId,UINT8 functionId, UINT8 sendLevel) UINT8 LogRouteCeFangSwitchCheck(UINT16 const routeId, UINT16* pDevId, UINT8* pDevState)
{ {
/* 进路区段*/
UINT16 const checkSum = GetLogicalRouteInLogSecSum(routeId);
UINT16* const dataIdBuf = GetLogicalRouteInLogSecId(routeId);
/* 局部变量定义初始化 */ /* 局部变量定义初始化 */
UINT8 i = 0u; /* 循环变量 */ UINT16 i = 0u; /* 循环变量 */
UINT16 devId = 0u;
UINT8 reVal = CI_ERROR; UINT8 reVal = CI_ERROR;
SideProtecStru* pLogRoutSidePrtectData = NULL;
UINT8 chLogRoutSidePrtectDataNum = 0u;
UINT8 cDevType = 0u; if ((0u == checkSum) || (NULL == pDevId) || (NULL == pDevState))
UINT8 cDevStateType = 0u;
UINT16 cDevId = 0u;
UINT8 cDevState = 0u;
pLogRoutSidePrtectData = GetLogRoutSidePrtectData(routeId);
chLogRoutSidePrtectDataNum = GetLogRoutSidePrtectDataNum(routeId);
if (NULL == pLogRoutSidePrtectData)
{ {
/*区段数据错误*/ /*区段数据错误*/
reVal = CI_ERROR; reVal = CI_ERROR;
} }
else else
{ {
reVal = CI_SUCCESS; /*开始检查*/
/*功能预留*/ for (i = 0u; i < checkSum; i++)
{
devId = dataIdBuf[i];
reVal = LogicSecSwitchLtrlDfncCheck(devId, pDevId, pDevState);
if (CI_SUCCESS == reVal)
{
/* 通过检查*/
}
else
{
/*状态不一致返回故障状态*/
reVal = CI_ERROR;
break;
}
}
} }
/*全部通过检查*/ /*全部通过检查*/
return reVal; return reVal;
} }
@@ -2791,7 +2800,7 @@ UINT8 KeepLogRouteSwitchCheck(UINT16 wLogRouteId, UINT8 functionId, UINT8 sendLe
{ {
devId = 0u; devId = 0u;
devState = 0u; devState = 0u;
checkResult = LogRouteCeFangSwitchCheck(wLogRouteId, functionId, sendLevel); checkResult = LogRouteCeFangSwitchCheck(wLogRouteId, &devId, &devState);
if (CI_SUCCESS == checkResult) if (CI_SUCCESS == checkResult)
{ {
/* 通过检查 */ /* 通过检查 */
@@ -2799,7 +2808,8 @@ UINT8 KeepLogRouteSwitchCheck(UINT16 wLogRouteId, UINT8 functionId, UINT8 sendLe
} }
else else
{ {
/* 记录故障码 */
SetErrorData(functionId, CI_DEVICE_TYPE_PHYSEC, devId, ETYPE_PS_NO_UT_CT_OCU_STATE, devState, sendLevel);
/* 失败返回 */ /* 失败返回 */
reResult = CI_ERROR; reResult = CI_ERROR;
} }
@@ -138,12 +138,12 @@ UINT8 LogRouteProSwitchFLockCheck(UINT16 const routeId, UINT16* pDevId, UINT8* p
/* /*
* *
* UINT16 routeId, * UINT16 routeId,
* UINT8 functionId, ID * UINT16 *pDevId, Id
* UINT8 sendLevel * UINT8 *pDevState,
* CI_ERROR * CI_ERROR
* CI_SUCCESS * CI_SUCCESS
*/ */
UINT8 LogRouteCeFangSwitchCheck(UINT16 const routeId, UINT8 functionId, UINT8 sendLevel); UINT8 LogRouteCeFangSwitchCheck(UINT16 const routeId, UINT16* pDevId, UINT8* pDevState);
/* /*
* 线 * 线
@@ -28,47 +28,23 @@ UINT8 SetLTrainRouteP(const UINT16 routeId)
/* 局部变量定义初始化 */ /* 局部变量定义初始化 */
UINT8 devState = 0U; /*设备状态*/ UINT8 devState = 0U; /*设备状态*/
UINT8 reResult = CI_ERROR; /*返回值*/ UINT8 reResult = CI_ERROR; /*返回值*/
UINT8 chRouteCouplinkFlag = 0U;
UINT8 chRouteLevel = 0U;
/* 联锁条件检查 */ /* 联锁条件检查 */
chRouteCouplinkFlag = GetRouteCouplinkFlag(routeId); /*获取进路联挂标志*/
chRouteLevel = GetRouteLevel(routeId); /*获取进路监督级别*/
devState = GetRouteState(routeId); devState = GetRouteState(routeId);
if ((ROUTE_COUPLINK_FLAG_YES == chRouteCouplinkFlag) && (ROUTE_LEVEL_CBTC == chRouteLevel)) /*进路状态空闲或初选或自动解锁异常(ARB且故障锁闭)*/
if ((ROUTE_STATE_IDLE == devState) || (ROUTE_STATE_FIRST_XUANPAI == devState) || (ROUTE_STATE_AUTO_UNLOCKERR == devState))
{ {
/* 进路状态条件:进路状态空闲、进路初选、自动解锁正常、自动解锁异常(ARB)、初锁异常、预先锁闭、接近锁闭正常、接近锁闭异常都可以办理联挂进路 */ /* 返回成功 */
if ((ROUTE_STATE_IDLE == devState) || (ROUTE_STATE_FIRST_XUANPAI == devState) || (ROUTE_STATE_FIRST_LOCKERR == devState) reResult = CI_SUCCESS;
|| (ROUTE_STATE_YUXIAN_LOCK == devState) || (ROUTE_STATE_NEAR_LOCK == devState) || (ROUTE_STATE_NEAR_LOCKERR == devState)
|| (ROUTE_STATE_AUTO_UNLOCK == devState) || (ROUTE_STATE_AUTO_UNLOCKERR == devState))
{
/* 返回成功 */
reResult = CI_SUCCESS;
}
else
{
/* 记录故障码 */
SetErrorData(functionId, CI_DEVICE_TYPE_ROUTE, routeId, ETYPE_ROUTE_STATE, devState, sendLevel);
/* 失败返回 */
reResult = CI_ERROR;
}
} }
else else
{ {
/*进路状态空闲或初选或自动解锁异常(ARB且故障锁闭)*/ /* 记录故障码 */
if ((ROUTE_STATE_IDLE == devState) || (ROUTE_STATE_FIRST_XUANPAI == devState) || (ROUTE_STATE_AUTO_UNLOCKERR == devState)) SetErrorData(functionId, CI_DEVICE_TYPE_ROUTE, routeId, ETYPE_ROUTE_STATE, devState, sendLevel);
{ /* 失败返回 */
/* 返回成功 */ reResult = CI_ERROR;
reResult = CI_SUCCESS;
}
else
{
/* 记录故障码 */
SetErrorData(functionId, CI_DEVICE_TYPE_ROUTE, routeId, ETYPE_ROUTE_STATE, devState, sendLevel);
/* 失败返回 */
reResult = CI_ERROR;
}
} }
/*信号联锁条件检查*/ /*信号联锁条件检查*/
/*if ((CI_SUCCESS == reResult) && (CI_ERROR == SetLTrainRouteSignalCheck(routeId,functionId,sendLevel)))*/ /*if ((CI_SUCCESS == reResult) && (CI_ERROR == SetLTrainRouteSignalCheck(routeId,functionId,sendLevel)))*/
@@ -242,7 +218,7 @@ UINT8 SetLeadRouteP(const UINT16 routeId)
} }
/*道岔联锁条件检查*/ /*道岔联锁条件检查*/
if ((CI_SUCCESS == reResult) && (CI_ERROR == SetLeadRouteSwitchCheck(routeId,functionId,sendLevel))) if ((CI_SUCCESS == reResult) && (CI_ERROR == SetLTrainRouteSwitchCheck(routeId,functionId,sendLevel)))
{ {
/* 失败返回 */ /* 失败返回 */
reResult = CI_ERROR; reResult = CI_ERROR;
@@ -694,7 +670,7 @@ UINT8 LockLeadTrainRouteP(const UINT16 routeId)
if (CI_SUCCESS == reResult) if (CI_SUCCESS == reResult)
{ {
chCheckResult = SetLeadRouteSwitchCheck(routeId, functionId, sendLevel); chCheckResult = SetLTrainRouteSwitchCheck(routeId, functionId, sendLevel);
if (CI_ERROR == chCheckResult) if (CI_ERROR == chCheckResult)
{ {
/* 失败返回 */ /* 失败返回 */
@@ -2207,8 +2183,7 @@ UINT8 SetLTrainRouteSectionCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel
UINT16 devId = 0u; /*设备ID*/ UINT16 devId = 0u; /*设备ID*/
UINT8 devState = 0u; /*设备状态*/ UINT8 devState = 0u; /*设备状态*/
UINT8 chRouteCouplinkFlag = 0U;
UINT8 chRouteLevel = 0U;
/* 联锁逻辑检查 */ /* 联锁逻辑检查 */
/* 进路内所有区段未被封锁 */ /* 进路内所有区段未被封锁 */
@@ -2233,17 +2208,7 @@ UINT8 SetLTrainRouteSectionCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel
{ {
devId = 0u; devId = 0u;
devState = 0u; devState = 0u;
chRouteCouplinkFlag = GetRouteCouplinkFlag(routeId); /*获取进路联挂标志*/ checkResult = RouteAllSecOccuClearCheck(routeId,&devId, &devState);
chRouteLevel = GetRouteLevel(routeId); /*获取进路监督级别*/
if ((ROUTE_COUPLINK_FLAG_YES == chRouteCouplinkFlag) && (ROUTE_LEVEL_CBTC == chRouteLevel))
{
checkResult = SetCouplinkRouteSecOccCheck(routeId, &devId, &devState);
}
else
{
checkResult = RouteAllSecOccuClearCheck(routeId, &devId, &devState);
}
if (checkResult == CI_SUCCESS) if (checkResult == CI_SUCCESS)
{ {
/* 通过检查 */ /* 通过检查 */
@@ -2251,17 +2216,8 @@ UINT8 SetLTrainRouteSectionCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel
} }
else else
{ {
if (0U == devId) /* 记录故障码 */
{ SetErrorData(functionId,CI_DEVICE_TYPE_PHYSEC,devId,ETYPE_PS_MERGY_OCU_STATE,devState,sendLevel);
/* 记录故障码 */
SetErrorData(functionId, CI_DEVICE_TYPE_ROUTE, routeId, ETYPE_COUPLINK_ROUTE_IDLE, 0U, sendLevel);
}
else
{
/* 记录故障码 */
SetErrorData(functionId, CI_DEVICE_TYPE_PHYSEC, devId, ETYPE_PS_MERGY_OCU_STATE, devState, sendLevel);
}
/* 失败返回 */ /* 失败返回 */
reResult = CI_ERROR; reResult = CI_ERROR;
} }
@@ -2414,12 +2370,11 @@ UINT8 SetLTrainRouteSwitchCheck(UINT16 routeId, UINT8 functionId, UINT8 sendLeve
} }
} }
/*场段进路不查侧防条件*/
#if 0
/*进路侧防道岔条件检查*/ /*进路侧防道岔条件检查*/
if (CI_SUCCESS == reResult) if (CI_SUCCESS == reResult)
{ {
checkResult = RouteSideProtectConditionCheck(routeId, functionId, sendLevel); checkResult = RouteAllLtrlDfncSwitchCheck(routeId, &devId, &devState);
if (CI_SUCCESS == checkResult) if (CI_SUCCESS == checkResult)
{ {
/* 通过检查 */ /* 通过检查 */
@@ -2427,7 +2382,8 @@ UINT8 SetLTrainRouteSwitchCheck(UINT16 routeId, UINT8 functionId, UINT8 sendLeve
} }
else else
{ {
/* 记录故障码 */
SetErrorData(functionId, CI_DEVICE_TYPE_PHYSEC, devId, ETYPE_PS_NO_UT_CT_OCU_STATE, devState, sendLevel);
/* 失败返回 */ /* 失败返回 */
reResult = CI_ERROR; reResult = CI_ERROR;
} }
@@ -2437,7 +2393,6 @@ UINT8 SetLTrainRouteSwitchCheck(UINT16 routeId, UINT8 functionId, UINT8 sendLeve
/* 失败返回 */ /* 失败返回 */
reResult = CI_ERROR; reResult = CI_ERROR;
} }
#endif
if (CI_SUCCESS == reResult) if (CI_SUCCESS == reResult)
{ {
@@ -2609,285 +2564,6 @@ UINT8 SetLTrainRouteSwitchCheck(UINT16 routeId, UINT8 functionId, UINT8 sendLeve
return reResult; return reResult;
} }
/*
*
* UINT16 RouteId,
* UINT8 functionId,
* UINT8 sendLevel,
* CI_ERROR 0
* CI_SUCCESS 1
* Created By LQ 2025.09.29
*/
UINT8 SetLeadRouteSwitchCheck(UINT16 routeId, UINT8 functionId, UINT8 sendLevel)
{
/* 局部变量定义初始化 */
UINT8 reResult = CI_ERROR; /*返回值*/
UINT8 checkResult = CI_ERROR; /*检查结果*/
UINT16 devId = 0U; /*设备ID*/
UINT8 devState = 0U; /*设备状态*/
UINT8 reResultP = CI_ERROR; /*道岔位置局部检查返回值*/
UINT8 chConnetCheckFunc = 0U;
chConnetCheckFunc = GetCiFunctionSwitchConfig(FUNC_SETROUTE_CONNECT_CHECK); /*获取是否要检查联络线条件的开关*/
/*进路内所有道岔【未引导总锁】*/
devId = 0U;
devState = 0U;
checkResult = RouteSwitchYLockCheck(routeId, &devId, &devState);
if (CI_SUCCESS == checkResult)
{
/* 通过检查 */
reResult = CI_SUCCESS;
}
else
{
/* 记录故障码 */
SetErrorData(functionId, CI_DEVICE_TYPE_SWITCH, devId, ETYPE_SWT_YLOCK_STATE, devState, sendLevel);
/* 失败返回 */
reResult = CI_ERROR;
}
if (CI_SUCCESS == reResult)
{
/*进路内所有道岔【未封锁】*/
devId = 0U;
devState = 0U;
checkResult = RouteSwitchFLockCheck(routeId, &devId, &devState);
if (CI_SUCCESS == checkResult)
{
/* 通过检查 */
reResult = CI_SUCCESS;
}
else
{
/* 记录故障码 */
SetErrorData(functionId, CI_DEVICE_TYPE_SWITCH, devId, ETYPE_SWT_FLOCK_STATE, devState, sendLevel);
/* 失败返回 */
reResult = CI_ERROR;
}
}
else
{
; /*继续执行*/
}
if (CI_SUCCESS == reResult)
{
/*进路防护道岔【未封锁】*/
devId = 0U;
devState = 0U;
checkResult = RouteReltProtSwitchFLockCheck(routeId, &devId, &devState);
if (CI_SUCCESS == checkResult)
{
/* 通过检查 */
reResult = CI_SUCCESS;
}
else
{
/* 记录故障码 */
SetErrorData(functionId, CI_DEVICE_TYPE_SWITCH, devId, ETYPE_SWT_FLOCK_STATE, devState, sendLevel);
/* 失败返回 */
reResult = CI_ERROR;
}
}
#if 0
/*进路侧防道岔条件检查*/
if (CI_SUCCESS == reResult)
{
checkResult = RouteSideProtectConditionCheck(routeId, functionId, sendLevel);
if (CI_SUCCESS == checkResult)
{
/* 通过检查 */
reResult = CI_SUCCESS;
}
else
{
/* 失败返回 */
reResult = CI_ERROR;
}
}
else
{
/* 失败返回 */
reResult = CI_ERROR;
}
#endif
if (CI_SUCCESS == reResult)
{
if (FUNC_SWITCH_ON == chConnetCheckFunc)
{
; /*开关打开,不检查联络线条件*/
}
else
{
/*进路联络线设备条件检查*/
checkResult = RouteContactLineDevSwitchCheck(routeId, functionId, sendLevel);
if (CI_SUCCESS == checkResult)
{
/* 通过检查 */
reResult = CI_SUCCESS;
}
else
{
/* 失败返回 */
reResult = CI_ERROR;
}
}
}
if (CI_SUCCESS == reResult)
{
/*进路内所有道岔位置正确或位置不正确但可动作*/
devId = 0U;
devState = 0U;
checkResult = RouteSwitchPosAndMoveValidCheck(routeId, sendLevel);
if (CI_SUCCESS == checkResult)
{
/* 通过检查 */
reResult = CI_SUCCESS;
}
else
{
/* 失败返回 */
reResult = checkResult;
}
}
else
{
; /*继续执行*/
}
if (CI_SUCCESS == reResult)
{
/*进路内所有道岔位置正确
RETURN_LOCK_ERR_SWITPOS
CI_SUCCESS */
devId = 0U;
devState = 0U;
checkResult = RouteAllSwitchPosCheck(routeId, &devId, &devState);
if (checkResult == CI_SUCCESS)
{
/* 通过检查 */
reResult = CI_SUCCESS;
}
else
{
/* 失败返回 */
reResult = RETURN_LOCK_ERR_SWITPOS;
}
}
else
{
/*如果是进路内道岔等待相邻联锁反馈道岔检查状态,先不检查道岔是否全在位置,继续等待*/
}
if ((CI_SUCCESS == reResult) || (RETURN_LOCK_ERR_SWITPOS == reResult))
{
/*进路关联防护道岔【未引导总锁】*/
devId = 0U;
devState = 0U;
checkResult = RouteRelatedProSwitchYLockCheck(routeId, &devId, &devState);
if (CI_SUCCESS == checkResult)
{
/* 通过检查 */
reResultP = CI_SUCCESS;
}
else
{
/* 记录故障码 */
SetErrorData(functionId, CI_DEVICE_TYPE_SWITCH, devId, ETYPE_SWT_YLOCK_STATE, devState, sendLevel);
/* 失败返回 */
reResultP = CI_ERROR;
}
if (CI_SUCCESS == reResultP)
{
/*进路关联防护道岔位置正确或位置不正确但可动作*/
devId = 0U;
devState = 0U;
checkResult = RouteRelProSwiPosAndMovValCheck(routeId, sendLevel);
if (CI_SUCCESS == checkResult)
{
/* 能检查到防护道岔是否可动作,说明道岔全在本控区或相邻控区已反馈道岔检查状态 */
/* 通过检查 */
reResultP = CI_SUCCESS;
}
else
{
/* 失败返回 */
reResultP = checkResult;
}
}
else
{
reResultP = CI_ERROR;
}
if (CI_SUCCESS == reResultP)
{
/*进路关联防护道岔位置正确*/
devId = 0U;
devState = 0U;
checkResult = RouteRelatedProSwitchPosCheck(routeId, &devId, &devState);
if (checkResult == CI_SUCCESS)
{
/* 通过检查 */
reResultP = CI_SUCCESS;
}
else
{
/* 失败返回 */
reResultP = RETURN_LOCK_ERR_SWITPOS;
}
}
else
{
/*如果是进路防护道岔等待相邻联锁反馈道岔检查状态,先不检查防护道岔是否全在位置,继续等待*/
}
if (CI_ERROR == reResultP)
{/*如果防护道岔的检查结果为错误,则总的检查结果为错误*/
reResult = CI_ERROR;
}
else if (CI_SUCCESS == reResultP)
{
/*如果防护道岔的检查结果为成功,则总的检查结果保持不变*/
}
else if (RETURN_LOCK_ERR_WAIT_SWCHECK == reResultP)
{
/*如果防护道岔的检查结果等待检查,则总的检查结果等待检查*/
reResult = RETURN_LOCK_ERR_WAIT_SWCHECK;
}
else if (RETURN_LOCK_ERR_SWITPOS == reResultP)
{/*如果防护道岔的检查结果为锁闭位置错误,则总的检查结果为锁闭位置错误*/
reResult = RETURN_LOCK_ERR_SWITPOS;
}
else
{/*其它不存在的情况,置总的结果为错误*/
reResult = CI_ERROR;
}
}
else if (RETURN_LOCK_ERR_WAIT_SWCHECK == reResult)
{
/*进路内道岔等待相邻联锁反馈道岔检查状态,先不检查防护道岔状态,继续等待*/
;
}
else
{
/* 失败返回 */
reResult = CI_ERROR;
}
/* 返回结果 */
return reResult;
}
/* /*
* *
* *
@@ -3216,8 +2892,7 @@ UINT8 LockLTrainRouteSectionCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLeve
UINT16 devId = 0u; /*设备ID*/ UINT16 devId = 0u; /*设备ID*/
UINT8 devState = 0u; /*设备状态*/ UINT8 devState = 0u; /*设备状态*/
UINT8 chRouteCouplinkFlag = 0U;
UINT8 chRouteLevel = 0U;
/* 联锁逻辑检查 */ /* 联锁逻辑检查 */
/* 进路内所有区段未被封锁 */ /* 进路内所有区段未被封锁 */
@@ -3242,17 +2917,7 @@ UINT8 LockLTrainRouteSectionCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLeve
{ {
devId = 0u; devId = 0u;
devState = 0u; devState = 0u;
chRouteCouplinkFlag = GetRouteCouplinkFlag(routeId); /*获取进路联挂标志*/ checkResult = RouteAllSecOccuClearCheck(routeId,&devId, &devState);
chRouteLevel = GetRouteLevel(routeId); /*获取进路监督级别*/
if ((ROUTE_COUPLINK_FLAG_YES == chRouteCouplinkFlag) && (ROUTE_LEVEL_CBTC == chRouteLevel))
{
checkResult = SetCouplinkRouteSecOccCheck(routeId, &devId, &devState);
}
else
{
checkResult = RouteAllSecOccuClearCheck(routeId, &devId, &devState);
}
if (checkResult == CI_SUCCESS) if (checkResult == CI_SUCCESS)
{ {
/* 通过检查 */ /* 通过检查 */
@@ -3260,17 +2925,8 @@ UINT8 LockLTrainRouteSectionCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLeve
} }
else else
{ {
if (0U == devId) /* 记录故障码 */
{ SetErrorData(functionId,CI_DEVICE_TYPE_PHYSEC,devId,ETYPE_PS_MERGY_OCU_STATE,devState,sendLevel);
/* 记录故障码 */
SetErrorData(functionId, CI_DEVICE_TYPE_ROUTE, routeId, ETYPE_COUPLINK_ROUTE_IDLE, 0U, sendLevel);
}
else
{
/* 记录故障码 */
SetErrorData(functionId, CI_DEVICE_TYPE_PHYSEC, devId, ETYPE_PS_MERGY_OCU_STATE, devState, sendLevel);
}
/* 失败返回 */ /* 失败返回 */
reResult = CI_ERROR; reResult = CI_ERROR;
} }
@@ -4537,7 +4193,7 @@ UINT8 SetLeadRouteCheck(const UINT16 routeId)
/*道岔联锁条件检查*/ /*道岔联锁条件检查*/
if (CI_SUCCESS == reResult) if (CI_SUCCESS == reResult)
{ {
reResult = SetLeadRouteSwitchCheck(routeId, functionId, sendLevel); reResult = SetLTrainRouteSwitchCheck(routeId, functionId, sendLevel);
if (CI_ERROR == reResult) if (CI_ERROR == reResult)
{ {
/* 失败返回 */ /* 失败返回 */
@@ -266,17 +266,6 @@ UINT8 SetLTrainRouteSectionCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel
*/ */
UINT8 SetLTrainRouteSwitchCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel); UINT8 SetLTrainRouteSwitchCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel);
/*
*
* UINT16 RouteId,
* UINT8 functionId,
* UINT8 sendLevel,
* CI_ERROR 0
* CI_SUCCESS 1
* Created By LQ 2025.09.29
*/
UINT8 SetLeadRouteSwitchCheck(UINT16 routeId, UINT8 functionId, UINT8 sendLevel);
/* /*
* *
* *
-20
View File
@@ -46,7 +46,6 @@ UINT8 MainProcess(void)
UINT8 retVal = CI_SUCCESS; UINT8 retVal = CI_SUCCESS;
UINT8 localCiType = GetLocalCiType(); UINT8 localCiType = GetLocalCiType();
UINT16* pTiocFsVersion = NULL; UINT16* pTiocFsVersion = NULL;
UINT8 cControlState = 0U; /*主备用状态*/
unsigned long long cost[20] = {0U}; unsigned long long cost[20] = {0U};
#ifdef LOGPRINT #ifdef LOGPRINT
@@ -103,10 +102,6 @@ UINT8 MainProcess(void)
#endif/*2OO2平台标志结束*/ #endif/*2OO2平台标志结束*/
} }
/*更新当前系统升主起始周期号*/
UpdateSystemMainUseCyc();
debug_infor_printf((const)"\n\nSystemMainUseCyc: %d\n", gSystemUpdateMainUseCycNum);/*系统切换主用起始周期号*/
#endif/*打印标志结束*/ #endif/*打印标志结束*/
cost[0] = MSCP_GetTick(); cost[0] = MSCP_GetTick();
@@ -149,21 +144,6 @@ UINT8 MainProcess(void)
/*清除上周期故障码*/ /*清除上周期故障码*/
ClearErrorData(); ClearErrorData();
cControlState = GetLocalCiBackUpPattern();
if (SYSTEM_WORK_MODE_UNAVAILABLE == cControlState)
{
#if 0
/*系统不可用时,周期重置设备状态*/
ResetDevStateProcess();
debug_infor_printf((const)"\nMainProcess: ControlState[%d], ResetDevStateProcess\n", cControlState);
#endif
}
else
{
/*不处理*/
}
cost[6] = MSCP_GetTick(); cost[6] = MSCP_GetTick();
debug_infor_printf((const)"\n Parse :%dms InputData:%dms MainProcess:%dms Output:%dms PackOut:%dms SendLog:%dms \n", (cost[1] - cost[0]) / 1000, (cost[2] - cost[1]) / 1000, (cost[3] - cost[2]) / 1000, (cost[4] - cost[3]) / 1000, (cost[5] - cost[4]) / 1000, (cost[6] - cost[5]) / 1000); debug_infor_printf((const)"\n Parse :%dms InputData:%dms MainProcess:%dms Output:%dms PackOut:%dms SendLog:%dms \n", (cost[1] - cost[0]) / 1000, (cost[2] - cost[1]) / 1000, (cost[3] - cost[2]) / 1000, (cost[4] - cost[3]) / 1000, (cost[5] - cost[4]) / 1000, (cost[6] - cost[5]) / 1000);
@@ -50,7 +50,7 @@ UINT16 GetMaskId(const UINT8 SendsystemType, const UINT8 RecvsystemType, const U
{ {
UINT16 returnValue = 0u;/*·µ»ØÖµ*/ UINT16 returnValue = 0u;/*·µ»ØÖµ*/
if (SendsystemType == CI_SYSTEM_TYPE_RCI) if (SendsystemType == CI_SYSTEM_TYPE_CI)
{ {
switch (RecvsystemType) switch (RecvsystemType)
{ {
@@ -74,7 +74,7 @@ UINT16 GetMaskId(const UINT8 SendsystemType, const UINT8 RecvsystemType, const U
} }
else if (SendsystemType == CI_SYSTEM_TYPE_ZC) else if (SendsystemType == CI_SYSTEM_TYPE_ZC)
{ {
if (CI_SYSTEM_TYPE_RCI == RecvsystemType) if (CI_SYSTEM_TYPE_CI == RecvsystemType)
{ {
returnValue = ZcToCiMaskConfigDataStru[Index].MaskId; returnValue = ZcToCiMaskConfigDataStru[Index].MaskId;
} }
@@ -345,7 +345,7 @@ UINT16 GetMaskIndex(const UINT8 SendsystemType, const UINT8 RecvsystemType, cons
if (SendsystemType == CI_SYSTEM_TYPE_RCI) if (SendsystemType == CI_SYSTEM_TYPE_CI)
{ {
switch (RecvsystemType) switch (RecvsystemType)
{ {
@@ -390,7 +390,7 @@ UINT16 GetMaskIndex(const UINT8 SendsystemType, const UINT8 RecvsystemType, cons
} }
else if (SendsystemType == CI_SYSTEM_TYPE_ZC) else if (SendsystemType == CI_SYSTEM_TYPE_ZC)
{ {
if (CI_SYSTEM_TYPE_RCI == RecvsystemType) if (CI_SYSTEM_TYPE_CI == RecvsystemType)
{ {
for (ii = 1u; ii <= ZcToCiMaskCurSum; ii++) for (ii = 1u; ii <= ZcToCiMaskCurSum; ii++)
{ {
+1 -4
View File
@@ -50,7 +50,6 @@
#define MASK_TYPE_SWITCH_OPEN_CAP ((UINT8)0x0E) /*定义道岔所在板卡开盖状态*/ #define MASK_TYPE_SWITCH_OPEN_CAP ((UINT8)0x0E) /*定义道岔所在板卡开盖状态*/
#define MASK_TYPE_SWITCH_SUDDEN_JICHA ((UINT8)0x0F) /*定义道岔静态红闪码位*/ #define MASK_TYPE_SWITCH_SUDDEN_JICHA ((UINT8)0x0F) /*定义道岔静态红闪码位*/
#define MASK_TYPE_SWITCH_JICHA ((UINT8)0x10) /*定义道岔挤岔码位:28.0.0.14数据结构使用*/ #define MASK_TYPE_SWITCH_JICHA ((UINT8)0x10) /*定义道岔挤岔码位:28.0.0.14数据结构使用*/
#define MASK_TYPE_SWITCH_QINGXIAN ((UINT8)0x11) /*定义道岔侵限状态码位*/
/*单轨_道岔码位*/ /*单轨_道岔码位*/
/* zt 删除单轨相关代码 2022-02-15 */ /* zt 删除单轨相关代码 2022-02-15 */
@@ -141,7 +140,7 @@
#define MASK_TYPE_LOGICSECTION_JUMPLOCK ((UINT8)0x9A) /*定义逻辑区段跳跃锁闭码位*/ #define MASK_TYPE_LOGICSECTION_JUMPLOCK ((UINT8)0x9A) /*定义逻辑区段跳跃锁闭码位*/
#define MASK_TYPE_LOGICSECTION_ARB ((UINT8)0x9B) /*定义逻辑区段ARB状态码位*/ #define MASK_TYPE_LOGICSECTION_ARB ((UINT8)0x9B) /*定义逻辑区段ARB状态码位*/
#define MASK_TYPE_LOGICSECTION_SPKS_FLOCK ((UINT8)0x9C) /*定义逻辑区段SPKS封锁状态码位*/ #define MASK_TYPE_LOGICSECTION_SPKS_FLOCK ((UINT8)0x9C) /*定义逻辑区段SPKS封锁状态码位*/
#define MASK_TYPE_LOGICSECTION_EMERG_XIANSU ((UINT8)0x9D) /*定义逻辑区段紧急临时限速码位*/
/*保护区段相关码位*/ /*保护区段相关码位*/
@@ -168,8 +167,6 @@
#define MASK_TYPE_ROUTE_DC_AGREE ((UINT8)0x52) /*定义进路调车同意状态码位(CI-ATS)*/ #define MASK_TYPE_ROUTE_DC_AGREE ((UINT8)0x52) /*定义进路调车同意状态码位(CI-ATS)*/
#define MASK_TYPE_ROUTE_AUTO_TRIGGER ((UINT8)0x53) /*定义进路自动触发标码位(CI-ATS)*/ #define MASK_TYPE_ROUTE_AUTO_TRIGGER ((UINT8)0x53) /*定义进路自动触发标码位(CI-ATS)*/
#define MASK_TYPE_ROUTE_DC_AGREE_ERR ((UINT8)0x54) /*定义进路调车同意按钮故障状态码位(CI-ATS)*/ #define MASK_TYPE_ROUTE_DC_AGREE_ERR ((UINT8)0x54) /*定义进路调车同意按钮故障状态码位(CI-ATS)*/
#define MASK_TYPE_ROUTE_COUPLIN_SUCCESS ((UINT8)0xA8) /*定义进路联挂成功码位(ZC-CI)*/
#define MASK_TYPE_ROUTE_COUPLIN_ERROR ((UINT8)0xA9) /*定义进路联挂失败码位(ZC-CI)*/
/*站台相关码位*/ /*站台相关码位*/
@@ -15,8 +15,7 @@
NonAutoReturnDataStruct NonReturnDataStru[NON_AUTO_RETURN_SUM_MAX]; /*无人自动折返动态结构体*/ NonAutoReturnDataStruct NonReturnDataStru[NON_AUTO_RETURN_SUM_MAX]; /*无人自动折返动态结构体*/
NonAutoReturnDataStructCC NonReturnDataStruCC[NON_AUTO_RETURN_SUM_MAX]; /*无人自动折返动态结构体-车车*/
/* /*
* *
@@ -29,16 +28,6 @@ NonAutoReturnDataStruct* GetNonReturnData(void)
return NonReturnDataStru; return NonReturnDataStru;
} }
/*
* -
*
*
NonAutoReturnDataStruct *
*/
NonAutoReturnDataStruct* GetNonReturnDataCC(void)
{
return NonReturnDataStruCC;
}
/* /*
* ID无人自动折返按钮命令列车ID * ID无人自动折返按钮命令列车ID
* const UINT16 autoReturnId, ID * const UINT16 autoReturnId, ID
@@ -52,7 +41,7 @@ UINT16 GetNonRtnCmdSetTrainId(const UINT16 nonReturnId)
bufIndex = GetNonReturnBufIndex(nonReturnId); bufIndex = GetNonReturnBufIndex(nonReturnId);
if (bufIndex < NON_AUTO_RETURN_SUM_MAX) if (bufIndex < NON_AUTO_RETURN_SUM_MAX)
{ {
trainId = NonReturnDataStruCC[bufIndex].cmdSetTrainId; trainId = NonReturnDataStru[bufIndex].cmdSetTrainId;
} }
else else
{ {
@@ -75,7 +64,7 @@ void SetNonRtnCmdSetTrainId(const UINT16 nonReturnId,const UINT16 trainId)
if (bufIndex < NON_AUTO_RETURN_SUM_MAX) if (bufIndex < NON_AUTO_RETURN_SUM_MAX)
{ {
NonReturnDataStruCC[bufIndex].cmdSetTrainId = trainId; NonReturnDataStru[bufIndex].cmdSetTrainId = trainId;
} }
else else
{ {
@@ -35,21 +35,15 @@ typedef struct S_RtnRelayAdhesionStruct
/*无人自动自动折返数据结构体*/ /*无人自动自动折返数据结构体*/
typedef struct S_NonAutoReturnDataStruct typedef struct S_NonAutoReturnDataStruct
{ {
UINT16 cmdSetTrainId; /*命令列车ID (动态字段)*/
UINT8 IndicatorDevID; /*指示灯设备ID*/ UINT8 IndicatorDevID; /*指示灯设备ID*/
UINT8 VobcToCIAutoRtnIndicFlashState; /*车载给联锁的无人折返指示灯闪灯状态*/ UINT8 VobcToCIAutoRtnIndicFlashState; /*车载给联锁的无人折返指示灯闪灯状态*/
UINT8 VobcToCIAutoRtnIndicSteadyState; /*车载给联锁的无人折返指示灯稳灯状态*/ UINT8 VobcToCIAutoRtnIndicSteadyState; /*车载给联锁的无人折返指示灯稳灯状态*/
RtnRelayAdhesionStruct RtnRelayAdhesionState; /*无人折返继电器粘连状态*/ RtnRelayAdhesionStruct RtnRelayAdhesionState; /*无人折返继电器粘连状态*/
} NonAutoReturnDataStruct; } NonAutoReturnDataStruct;
/*无人自动自动折返数据结构体-车车*/
typedef struct S_NonAutoReturnDataStructCC
{
UINT8 IndicatorDevID; /*指示灯设备ID*/
UINT16 cmdSetTrainId; /*命令列车ID (动态字段)*/
} NonAutoReturnDataStructCC;
extern NonAutoReturnDataStruct NonReturnDataStru[NON_AUTO_RETURN_SUM_MAX]; /*无人自动折返动态结构体*/ extern NonAutoReturnDataStruct NonReturnDataStru[NON_AUTO_RETURN_SUM_MAX]; /*无人自动折返动态结构体*/
extern NonAutoReturnDataStructCC NonReturnDataStruCC[NON_AUTO_RETURN_SUM_MAX]; /*无人自动折返动态结构体-车车*/
/* /*
* ID无人自动折返按钮命令列车ID * ID无人自动折返按钮命令列车ID
* const UINT16 autoReturnId, ID * const UINT16 autoReturnId, ID
@@ -57,13 +51,6 @@ extern NonAutoReturnDataStructCC NonReturnDataStruCC[NON_AUTO_RETURN_SUM_MAX];
* >0: ID * >0: ID
*/ */
UINT16 GetNonRtnCmdSetTrainId(const UINT16 nonReturnId); UINT16 GetNonRtnCmdSetTrainId(const UINT16 nonReturnId);
/*
* -
*
*
NonAutoReturnDataStruct *
*/
NonAutoReturnDataStruct* GetNonReturnDataCC(void);
/* /*
* *
@@ -922,73 +922,4 @@ UINT16 GetOverlapThatZhaoChaRelayId(const UINT16 overlapId)
} }
return reVal; return reVal;
} }
/*
*
* const UINT16 wRouteId, ID
*
*/
SideProtecGroupStru GetOverlapSideProtecGroupData(const UINT16 wOverlapId)
{
SideProtecGroupStru cRetVal = { 0u };
UINT16 bufIndex = 0U; /*数组下标*/
bufIndex = GetOverlapConfigBufIndex(wOverlapId); /*获取数组下标*/
if (OVERLAP_SUM_MAX > bufIndex)
{
cRetVal = OverlapConfigDataStru[bufIndex].SideProtecGroupData;
}
else
{
/*无处理*/
}
return cRetVal;
}
/*
*
* const UINT16 wOverlapId, ID
* const UINT16 wSwitchId ID
*
* 12,0u
*
*/
UINT8 GetOverlapThisPortecSwitchPos(const UINT16 wOverlapId, const UINT16 wSwitchId)
{
UINT8 chRetVal = 0U;
UINT16 bufIndex = 0U;
UINT8 i = 0u;
bufIndex = GetOverlapConfigBufIndex(wOverlapId); /*获取保护区段数组下标*/
if (OVERLAP_SUM_MAX > bufIndex)
{
for (i = 0u; i < OverlapConfigDataStru[bufIndex].ProtectSwitchSum; i++)
{
if (OverlapConfigDataStru[bufIndex].ProtectSwitchStru[i].ProtectSwitchId == wSwitchId)
{
chRetVal = OverlapConfigDataStru[bufIndex].ProtectSwitchStru[i].ProtectPosition;
break;
}
}
}
else
{
/*不处理*/
}
if ((SWITCH_POSITION_DINGWEI == chRetVal) || (SWITCH_POSITION_FANWEI == chRetVal))
{
/*校验通过*/
}
else
{
chRetVal = 0u;
}
return chRetVal;
}
@@ -19,7 +19,7 @@
#include "CommonTypes.h" #include "CommonTypes.h"
#include "../System/CiSystemDefine.h" #include "../System/CiSystemDefine.h"
#include "../System/SystemParameterManage.h" #include "../System/SystemParameterManage.h"
#include "RouteConfigDataManage.h"
#ifdef __cplusplus #ifdef __cplusplus
@@ -74,7 +74,6 @@ typedef struct S_OverlapConfigDataStruct
UINT16 AxisSecFarId; /*保护区段最远端计轴区段ID*/ UINT16 AxisSecFarId; /*保护区段最远端计轴区段ID*/
UINT16 wOverlapThisZhaoChaRelayId; /*保护区段本端照查继电器ID*/ UINT16 wOverlapThisZhaoChaRelayId; /*保护区段本端照查继电器ID*/
UINT16 wOverlapThatZhaoChaRelayId; /*保护区段对端照查继电器ID*/ UINT16 wOverlapThatZhaoChaRelayId; /*保护区段对端照查继电器ID*/
SideProtecGroupStru SideProtecGroupData; /*保护区段侧防条件*/
} OverlapConfigDataStruct; } OverlapConfigDataStruct;
extern OverlapConfigDataStruct OverlapConfigDataStru[OVERLAP_SUM_MAX]; /*定义OVERLAP数据配置结构体,cgh-合并CID-2539-1:此处声明不进行初始化,统一放到InitAllStaticDataStr函数中进行初始化,为解决生成内核过大得问题*/ extern OverlapConfigDataStruct OverlapConfigDataStru[OVERLAP_SUM_MAX]; /*定义OVERLAP数据配置结构体,cgh-合并CID-2539-1:此处声明不进行初始化,统一放到InitAllStaticDataStr函数中进行初始化,为解决生成内核过大得问题*/
@@ -390,21 +389,7 @@ UINT16 GetOverlapThisZhaoChaRelayId(const UINT16 overlapId);
* by cgh 20250617 * by cgh 20250617
*/ */
UINT16 GetOverlapThatZhaoChaRelayId(const UINT16 overlapId); UINT16 GetOverlapThatZhaoChaRelayId(const UINT16 overlapId);
/*
*
* const UINT16 wRouteId, ID
*
*/
SideProtecGroupStru GetOverlapSideProtecGroupData(const UINT16 wOverlapId);
/*
*
* const UINT16 wOverlapId, ID
* const UINT16 wSwitchId ID
*
* 12,0u
*
*/
UINT8 GetOverlapThisPortecSwitchPos(const UINT16 wOverlapId, const UINT16 wSwitchId);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
+17 -193
View File
@@ -14,8 +14,8 @@
OverlapDataStruct OverlapDataStru[OVERLAP_SUM_MAX]; /*定义OVERLAP数据结构体*/ OverlapDataStruct OverlapDataStru[OVERLAP_SUM_MAX]; /*定义OVERLAP数据结构体*/
OverlapDataStructCC OverlapDataStruCC[OVERLAP_SUM_MAX]; /*定义OVERLAP数据结构体-车车*/
/* /*
@@ -28,16 +28,7 @@ OverlapDataStruct *GetOverlapData(void)
{ {
return OverlapDataStru; return OverlapDataStru;
} }
/*
* ID保护区段数据-
*
*
OverlapDataStructCC *
*/
OverlapDataStructCC* GetOverlapDataCC(void)
{
return OverlapDataStruCC;
}
/* /*
* ID保护区段所属进路ID * ID保护区段所属进路ID
* const UINT16 overlapId, ID * const UINT16 overlapId, ID
@@ -91,8 +82,6 @@ void SetOverlapRelateProtSwLockSta(const UINT16 overlapId, const UINT8 lockComma
UINT16 protectSwitchId = 0u; /*防护道岔ID*/ UINT16 protectSwitchId = 0u; /*防护道岔ID*/
UINT8 overlapProtectSwitchSum = 0u; /*防护道岔数目*/ UINT8 overlapProtectSwitchSum = 0u; /*防护道岔数目*/
OverlapProtectSwitchStruct* overlapProtectSwitchStru = NULL; /*防护道岔数据*/ OverlapProtectSwitchStruct* overlapProtectSwitchStru = NULL; /*防护道岔数据*/
UINT8 cSwitchCurPos = 0U;
UINT8 cFuncRet = CI_ERROR;
overlapProtectSwitchSum = GetOverlapRelatedProtSwitSum(overlapId); /*获取防护道岔数目*/ overlapProtectSwitchSum = GetOverlapRelatedProtSwitSum(overlapId); /*获取防护道岔数目*/
overlapProtectSwitchStru = GetOverlapRelatedProtSwitStru(overlapId); /*获取防护道岔数据*/ overlapProtectSwitchStru = GetOverlapRelatedProtSwitStru(overlapId); /*获取防护道岔数据*/
@@ -118,27 +107,17 @@ void SetOverlapRelateProtSwLockSta(const UINT16 overlapId, const UINT8 lockComma
for (ii= 0u; ii < overlapProtectSwitchSum; ii++) for (ii= 0u; ii < overlapProtectSwitchSum; ii++)
{ {
protectSwitchId = overlapProtectSwitchStru[ii].ProtectSwitchId; protectSwitchId = overlapProtectSwitchStru[ii].ProtectSwitchId;
cSwitchCurPos = GetSwitchCurPosition(protectSwitchId); SetSwitchLockStatus(SWITCH_PLOCKTYPE_OVERLAP,overlapId,protectSwitchId, lockCommand); /*设置道岔防护锁闭状态*/
cFuncRet = checkSwtLastValDrvPosStayorNot(protectSwitchId, overlapProtectSwitchStru[ii].ProtectPosition); /*RC 13.0.0 修:不检查防护道岔中双动道岔另一端*/
if ((SWITCH_LOCK_PROTECT_CANCEL == lockCommand)
|| ((SWITCH_LOCK_PROTECT_SET == lockCommand) && (cSwitchCurPos == overlapProtectSwitchStru[ii].ProtectPosition) && (CI_SUCCESS == cFuncRet)))
{
SetSwitchLockStatus(SWITCH_PLOCKTYPE_OVERLAP, overlapId, protectSwitchId, lockCommand); /*设置道岔防护锁闭状态*/
/*RC 13.0.0 修:不检查防护道岔中双动道岔另一端*/
#if 0 #if 0
if (SWITCH_TYPE_DOUBLE == GetSwitchType(protectSwitchId)) if (SWITCH_TYPE_DOUBLE == GetSwitchType(protectSwitchId))
{ /*双动道岔*/ { /*双动道岔*/
SetSwitchLockStatus(SWITCH_PLOCKTYPE_OVERLAP, overlapId, GetDSwitchOtherId(protectSwitchId), lockCommand); /*设置道岔防护锁 闭状态*/ SetSwitchLockStatus(SWITCH_PLOCKTYPE_OVERLAP,overlapId,GetDSwitchOtherId(protectSwitchId), lockCommand); /*设置道岔防护锁 闭状态*/
}
else
{
}
#endif
} }
else else
{ {
/*防护道岔不在防护位置或防护道岔存在反向驱动时,不设置防护锁闭*/
} }
#endif
} }
} }
else else
@@ -286,7 +265,7 @@ void SetOverlapUnlockApplyFlag(const UINT16 overlapId, const UINT8 overlapUnlock
* ID保护区段申请解锁的列车ID * ID保护区段申请解锁的列车ID
* const UINT16 overlapId, ID * const UINT16 overlapId, ID
* 0 * 0
* ID0x10 * ID0x14
*/ */
UINT16 GetOverlapUnlockApplyTrainId(const UINT16 overlapId) UINT16 GetOverlapUnlockApplyTrainId(const UINT16 overlapId)
{ {
@@ -297,7 +276,7 @@ UINT16 GetOverlapUnlockApplyTrainId(const UINT16 overlapId)
if (bufIndex < OVERLAP_SUM_MAX) if (bufIndex < OVERLAP_SUM_MAX)
{ {
reVal = OverlapDataStruCC[bufIndex].wOverlapUnlockApplyTrainId; reVal = OverlapDataStru[bufIndex].wOverlapUnlockApplyTrainId;
} }
return reVal; return reVal;
} }
@@ -306,7 +285,7 @@ UINT16 GetOverlapUnlockApplyTrainId(const UINT16 overlapId)
/* /*
* ID保护区段申请解锁的列车ID * ID保护区段申请解锁的列车ID
* const UINT16 overlapId, ID * const UINT16 overlapId, ID
* const UINT16 wTrainIdID0x10 * const UINT16 wTrainIdID0x14
* *
* *
*/ */
@@ -318,7 +297,7 @@ void SetOverlapUnlockApplyTrainId(const UINT16 overlapId, const UINT16 wTrainId)
if (bufIndex < OVERLAP_SUM_MAX) if (bufIndex < OVERLAP_SUM_MAX)
{ {
OverlapDataStruCC[bufIndex].wOverlapUnlockApplyTrainId = wTrainId; OverlapDataStru[bufIndex].wOverlapUnlockApplyTrainId = wTrainId;
} }
} }
@@ -643,7 +622,7 @@ void SetReqIvocUnlockStartCycNum(const UINT16 overlapId, const UINT32 reqIvocUnl
if (bufIndex < OVERLAP_SUM_MAX) if (bufIndex < OVERLAP_SUM_MAX)
{ {
OverlapDataStruCC[bufIndex].dwReqIvocUnLockStartCycNum = reqIvocUnlockStartCycNum; /*人工解锁起始周期号*/ OverlapDataStru[bufIndex].dwReqIvocUnLockStartCycNum = reqIvocUnlockStartCycNum; /*人工解锁起始周期号*/
} }
} }
@@ -662,7 +641,7 @@ UINT32 GetReqIvocUnlockStartCycNum(const UINT16 overlapId)
if (bufIndex < OVERLAP_SUM_MAX) if (bufIndex < OVERLAP_SUM_MAX)
{ {
reVal = OverlapDataStruCC[bufIndex].dwReqIvocUnLockStartCycNum; /*人工解锁起始周期号*/ reVal = OverlapDataStru[bufIndex].dwReqIvocUnLockStartCycNum; /*人工解锁起始周期号*/
} }
return reVal; return reVal;
} }
@@ -682,7 +661,7 @@ void SetOverlapIvocAllowUnlockFlag(const UINT16 overlapId, const UINT8 overlapIv
if ((bufIndex < OVERLAP_SUM_MAX) && ((IVOC_ALLOW_UNLOCK_OVERLAP_YES == overlapIvocUnlockFlag) || (IVOC_ALLOW_UNLOCK_OVERLAP_NO == overlapIvocUnlockFlag))) if ((bufIndex < OVERLAP_SUM_MAX) && ((IVOC_ALLOW_UNLOCK_OVERLAP_YES == overlapIvocUnlockFlag) || (IVOC_ALLOW_UNLOCK_OVERLAP_NO == overlapIvocUnlockFlag)))
{ {
OverlapDataStruCC[bufIndex].cIvocAllowUnlockFlag = overlapIvocUnlockFlag; OverlapDataStru[bufIndex].cIvocAllowUnlockFlag = overlapIvocUnlockFlag;
} }
else else
{ {
@@ -706,7 +685,7 @@ UINT8 GetOverlapIvocAllowUnlockFlag(const UINT16 overlapId)
if (bufIndex < OVERLAP_SUM_MAX) if (bufIndex < OVERLAP_SUM_MAX)
{ {
reVal = OverlapDataStruCC[bufIndex].cIvocAllowUnlockFlag; reVal = OverlapDataStru[bufIndex].cIvocAllowUnlockFlag;
} }
else else
{ {
@@ -996,159 +975,4 @@ UINT8 GetOverlapProSwtCheckStartFlag(const UINT16 wOverlapId)
} }
return cRetVal; return cRetVal;
}
/*
* ID保护区段之前人工解锁状态
* const UINT16 overlapId, ID
* 0:
* >0:
* BY CGH 20250928
*/
UINT8 GetOverlapPreLoaborUnlockState(const UINT16 overlapId)
{
UINT16 bufIndex = 0U; /*数组下标*/
UINT8 reVal = CI_ERROR;
bufIndex = GetOverlapConfigBufIndex(overlapId); /*获取数组下标*/
if (bufIndex < OVERLAP_SUM_MAX)
{
reVal = OverlapDataStru[bufIndex].chPreLaborUnlockState;
}
else
{
;
}
return reVal;
}
/*
* ID保护区段之前人工解锁状态
* const UINT16 overlapId, ID
* const UINT8 chPreLaborUnlockState,
* void
* by cgh 20250928
*/
void SetOverlapPreLoaborUnlockState(const UINT16 overlapId, const UINT8 chPreLaborUnlockState)
{
UINT16 bufIndex = 0U; /*数组下标*/
bufIndex = GetOverlapConfigBufIndex(overlapId); /*获取数组下标*/
if ((bufIndex < OVERLAP_SUM_MAX)
&& ((PRO_PRE_LABOR_UNLOCK_STATE_YES == chPreLaborUnlockState)
|| (PRO_PRE_LABOR_UNLOCK_STATE_NO == chPreLaborUnlockState)))
{
OverlapDataStru[bufIndex].chPreLaborUnlockState = chPreLaborUnlockState; /*设置解锁起始周期号*/
}
else
{
;
}
}
/*
*
* const UINT16 wOverlapId ID
* CI_SUCCESS
* CI_ERROR
* by cgh 20250928
*/
UINT8 OverlapLockRouteCheck(const UINT16 wOverlapId)
{
UINT8 chReval = CI_ERROR;
UINT16 dwOverlapRouteSum = 0U; /*保护区段进路数目*/
UINT16* pOverlapRouteBuf = NULL; /*保护区段进路数组*/
UINT16 jj = 0U;
UINT8 chRouteState = 0U; /*进路状态*/
UINT8 chFlag = 0U; /*检查标志*/
if ((0U < wOverlapId) && (OVERLAP_SUM_MAX > wOverlapId))
{
dwOverlapRouteSum = GetOverlapRouteIdSum(wOverlapId);
pOverlapRouteBuf = GetOverlapRouteIdBuf(wOverlapId);
if ((NULL != pOverlapRouteBuf))
{
for (jj = 0U; jj < dwOverlapRouteSum; jj++)
{
chRouteState = GetRouteState(pOverlapRouteBuf[jj]);
if ((ROUTE_STATE_IDLE != chRouteState))
{
chFlag = 1U;
break;
}
else
{
;
}
}
if (0U == chFlag)
{
chReval = CI_SUCCESS;
}
else
{
; /*存在不空闲的进路*/
}
}
else
{
;
}
}
else
{
;
}
return chReval;
}
/*
* ID保护区段关联物理区段停准停稳状态
* const UINT16 overlapId ID
* const UINT8 chSetFlag
*
*/
void SetOverlapBelPhyStopSteadyFlag(const UINT16 wOverlapId, const UINT8 chSetFlag)
{
UINT16 wOverlopBelRouteId = 0U; /*保护区段锁闭所属进路ID*/
UINT8 chRoutePhySecSum = 0U; /*进路包含的物理区段数目*/
RoutePhysicalSectionStruct* szRoutePhySecData = NULL; /*进路包含物理区段结构数组*/
if ((0U < wOverlapId) && (wOverlapId < OVERLAP_SUM_MAX)
&& ((PHYSICAL_SECTION_STOPSTEADY_NO == chSetFlag) || (PHYSICAL_SECTION_STOPSTEADY_YES == chSetFlag)))
{
wOverlopBelRouteId = GetOverlapBelongRouteId(wOverlapId);
if (0U != wOverlopBelRouteId)
{
chRoutePhySecSum = GetRoutePhysicalSectionSum(wOverlopBelRouteId);
szRoutePhySecData = GetRouteSectionData(wOverlopBelRouteId);
if (NULL != szRoutePhySecData)
{
/*设置车车的物理区段停稳状态*/
SetPhySecStopSteadyFlagCC(szRoutePhySecData[chRoutePhySecSum - 1U].PhysicalSectionId, chSetFlag);
}
else
{
;
}
}
else
{
/*无锁闭所属进路不处理*/
}
}
else
{
/*不处理*/
}
} }
+5 -60
View File
@@ -35,6 +35,9 @@ typedef struct S_OverlapDataStruct
UINT32 UnlockStartCycNum; /*保护区段解锁起始周期号 (动态字段)*/ UINT32 UnlockStartCycNum; /*保护区段解锁起始周期号 (动态字段)*/
UINT32 XuanPaiStartCycNum; /*保护区段选排开始周期号(动态字段)*/ UINT32 XuanPaiStartCycNum; /*保护区段选排开始周期号(动态字段)*/
UINT8 OverlapUnlockApplyFlag; /*向ZC申请解锁保护区段解锁标志,20181105*/ UINT8 OverlapUnlockApplyFlag; /*向ZC申请解锁保护区段解锁标志,20181105*/
UINT16 wOverlapUnlockApplyTrainId;/* 申请保护区段解锁的列车ID(不带0x14)*/
UINT32 dwReqIvocUnLockStartCycNum; /*向车申请解锁保护区段起始周期号*/
UINT8 cIvocAllowUnlockFlag; /*列车允许解锁保护区段标志,0xAA同意解锁,0x55不同意解锁*/
UINT8 OverlapCanLaborUnlockFlag;/*保护区段可以人工解锁标志*/ UINT8 OverlapCanLaborUnlockFlag;/*保护区段可以人工解锁标志*/
UINT8 OverlapLaborUnlockSetState;/*保护区段人工解锁设置状态*/ UINT8 OverlapLaborUnlockSetState;/*保护区段人工解锁设置状态*/
UINT32 laborUnlockStartCycNum;/*人工解锁起始周期号*/ UINT32 laborUnlockStartCycNum;/*人工解锁起始周期号*/
@@ -45,20 +48,10 @@ typedef struct S_OverlapDataStruct
UINT8 OverlapFromSetRouteCmdFlag;/*保护区段由进路办理时连带的标志*/ UINT8 OverlapFromSetRouteCmdFlag;/*保护区段由进路办理时连带的标志*/
UINT8 cProSwitchCheckResultFlag; /*跨控区防护道岔检查结果标志(0xFF:默认值,0x55:失败,0xAA:成功)*/ UINT8 cProSwitchCheckResultFlag; /*跨控区防护道岔检查结果标志(0xFF:默认值,0x55:失败,0xAA:成功)*/
UINT8 cProSwitchCheckStartFlag; /*跨控区防护道岔检查开始标志(0x55:检查开始,0xAA:检查停止)*/ UINT8 cProSwitchCheckStartFlag; /*跨控区防护道岔检查开始标志(0x55:检查开始,0xAA:检查停止)*/
UINT8 chPreLaborUnlockState; /*之前人工解锁状态*/
} OverlapDataStruct; } OverlapDataStruct;
/*保护区段数据结构体*/
typedef struct S_OverlapDataStructCC
{
UINT16 OverlapId; /*保护区段组ID (初始化字段)*/
UINT16 wOverlapUnlockApplyTrainId; /*申请保护区段解锁的列车ID(不带0x10)*/
UINT32 dwReqIvocUnLockStartCycNum; /*向车申请解锁保护区段起始周期号*/
UINT8 cIvocAllowUnlockFlag; /*列车允许解锁保护区段标志,0xAA同意解锁,0x55不同意解锁*/
}OverlapDataStructCC;
/*******************************全局变量声明*******************************/ /*******************************全局变量声明*******************************/
extern OverlapDataStruct OverlapDataStru[OVERLAP_SUM_MAX]; /*定义OVERLAP数据结构体*/ extern OverlapDataStruct OverlapDataStru[OVERLAP_SUM_MAX]; /*定义OVERLAP数据结构体*/
extern OverlapDataStructCC OverlapDataStruCC[OVERLAP_SUM_MAX]; /*定义OVERLAP数据结构体-车车*/
/* /*
* ID保护区段数据 * ID保护区段数据
* *
@@ -66,19 +59,6 @@ extern OverlapDataStructCC OverlapDataStruCC[OVERLAP_SUM_MAX]; /*
OverlapDataStruct * OverlapDataStruct *
*/ */
OverlapDataStruct *GetOverlapData(void); OverlapDataStruct *GetOverlapData(void);
/*
* ID保护区段数据-
*
*
OverlapDataStructCC *
*/
/*
* ID保护区段数据-
*
*
OverlapDataStructCC *
*/
OverlapDataStructCC* GetOverlapDataCC(void);
/* /*
* ID保护区段所属进路ID * ID保护区段所属进路ID
@@ -158,7 +138,7 @@ void SetOverlapUnlockApplyFlag(const UINT16 overlapId, const UINT8 overlapUnlock
* ID保护区段申请解锁的列车ID * ID保护区段申请解锁的列车ID
* const UINT16 overlapId, ID * const UINT16 overlapId, ID
* 0 * 0
* ID0x10 * ID0x14
*/ */
UINT16 GetOverlapUnlockApplyTrainId(const UINT16 overlapId); UINT16 GetOverlapUnlockApplyTrainId(const UINT16 overlapId);
@@ -166,7 +146,7 @@ UINT16 GetOverlapUnlockApplyTrainId(const UINT16 overlapId);
/* /*
* ID保护区段申请解锁的列车ID * ID保护区段申请解锁的列车ID
* const UINT16 overlapId, ID * const UINT16 overlapId, ID
* const UINT16 wTrainIdID0x10 * const UINT16 wTrainIdID0x14
* *
* *
*/ */
@@ -380,41 +360,6 @@ void SetOverlapProSwtCheckStartFlag(const UINT16 wOverlapId, const UINT8 cCheckS
*/ */
UINT8 GetOverlapProSwtCheckStartFlag(const UINT16 wOverlapId); UINT8 GetOverlapProSwtCheckStartFlag(const UINT16 wOverlapId);
/*
* ID保护区段之前人工解锁状态
* const UINT16 overlapId, ID
* 0:
* >0:
* BY CGH 20250928
*/
UINT8 GetOverlapPreLoaborUnlockState(const UINT16 overlapId);
/*
* ID保护区段之前人工解锁状态
* const UINT16 overlapId, ID
* const UINT8 chPreLaborUnlockState,
* void
* by cgh 20250928
*/
void SetOverlapPreLoaborUnlockState(const UINT16 overlapId, const UINT8 chPreLaborUnlockState);
/*
*
* const UINT16 wOverlapId ID
* CI_SUCCESS
* CI_ERROR
* by cgh 20250928
*/
UINT8 OverlapLockRouteCheck(const UINT16 wOverlapId);
/*
* ID保护区段关联物理区段停准停稳状态
* const UINT16 overlapId ID
* const UINT8 chSetFlag
*
*/
void SetOverlapBelPhyStopSteadyFlag(const UINT16 wOverlapId, const UINT8 chSetFlag);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
@@ -72,10 +72,6 @@
#define PROSWITCH_CHECK_START_VALID ((UINT8)0x55) /*开始检查*/ #define PROSWITCH_CHECK_START_VALID ((UINT8)0x55) /*开始检查*/
#define PROSWITCH_CHECK_START_INVALID ((UINT8)0xAA) /*停止检查*/ #define PROSWITCH_CHECK_START_INVALID ((UINT8)0xAA) /*停止检查*/
/*保护区段之前人工解锁标志*/
#define PRO_PRE_LABOR_UNLOCK_STATE_YES ((UINT8)0x55) /*之前成功人工解锁过*/
#define PRO_PRE_LABOR_UNLOCK_STATE_NO ((UINT8)0xAA) /*之前未人工解锁过*/
#define OVERLAP_USING_OVERTIME_CYC_NUM 10U /*保护区段征用超时周期数*/ #define OVERLAP_USING_OVERTIME_CYC_NUM 10U /*保护区段征用超时周期数*/
#endif #endif
+1 -94
View File
@@ -1065,97 +1065,4 @@ UINT8 GetPsdControlType(const UINT16 doorId)
} }
return retVal; return retVal;
} }
/*
* ID屏蔽门三编组驱动开门继电器ID
* const UINT16 doorId, ID
* 0:
* >0: ID
*/
UINT16 GetThreeGroupPsdOpenDrvRelayId(const UINT16 doorId)
{
UINT16 bufIndex = 0u; /*数组下标*/
UINT16 retVal = 0u;
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
if (PSD_SUM_MAX > bufIndex)
{
retVal = PsdConfigDataStru[bufIndex].OpenThreeEditGroupDriveRelayId;
}
else
{
retVal = CI_ERROR;
}
return retVal;
}
/*
* ID屏蔽门再次开门继电器ID2
* const UINT16 doorId, ID
* 0:
* >0: ID
*/
UINT16 GetPsdReOpenRelayId2(const UINT16 doorId)
{
UINT16 bufIndex = 0u; /*数组下标*/
UINT16 retVal = CI_ERROR;
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
if (PSD_SUM_MAX > bufIndex)
{
retVal = PsdConfigDataStru[bufIndex].doorReopenRelayId2;
}
else
{
retVal = CI_ERROR;
}
return retVal;
}
/*
* ID屏蔽门包含ESB
* const UINT16 doorId, ID
* ESB ID数组
*/
UINT16* GetPsdIncloudeEsbIdBuf(const UINT16 psdId)
{
UINT16 bufIndex = 0u; /*数组下标*/
UINT16* retVal = NULL;
bufIndex = GetPsdConfigBufIndex(psdId); /*获取屏蔽门数组下标*/
if (PSD_SUM_MAX > bufIndex)
{
retVal = PsdConfigDataStru[bufIndex].IncloudeEsbIdBuf;
}
else
{
retVal = NULL;
}
return retVal;
}
/*
* ID屏蔽门包含ESB数量
* const UINT16 doorId, ID
* ESB ID数组
*/
UINT8 GetPsdIncloudeEsbNum(const UINT16 psdId)
{
UINT16 bufIndex = 0u; /*数组下标*/
UINT8 retVal = NULL;
bufIndex = GetPsdConfigBufIndex(psdId); /*获取屏蔽门数组下标*/
if (PSD_SUM_MAX > bufIndex)
{
retVal = PsdConfigDataStru[bufIndex].IncloudeEsbNum;
}
else
{
retVal = NULL;
}
return retVal;
}
+1 -30
View File
@@ -39,7 +39,6 @@ typedef struct S_PsdConfigDataStruct
UINT16 MutualLockRelayId; /*互锁解除继电器ID (配置字段)*/ UINT16 MutualLockRelayId; /*互锁解除继电器ID (配置字段)*/
UINT16 wMutualLockRelayId2; /*互锁解除继电器ID2(配置字段) 迪斯尼*/ UINT16 wMutualLockRelayId2; /*互锁解除继电器ID2(配置字段) 迪斯尼*/
UINT16 CloseDriveRelayId; /*关门继电器ID (配置字段)*/ UINT16 CloseDriveRelayId; /*关门继电器ID (配置字段)*/
UINT16 OpenThreeEditGroupDriveRelayId; /*打开三编组屏蔽门的驱动继电器(配置字段)*/
UINT16 OpenFourEditGroupDriveRelayId; /*打开四编组屏蔽门的驱动继电器(配置字段)*/ UINT16 OpenFourEditGroupDriveRelayId; /*打开四编组屏蔽门的驱动继电器(配置字段)*/
UINT16 OpenSixEditGroupDriveRelayId; /*打开六编组屏蔽门的驱动继电器(配置字段)*/ UINT16 OpenSixEditGroupDriveRelayId; /*打开六编组屏蔽门的驱动继电器(配置字段)*/
UINT16 OpenEightEditGroupDriveRelayId; /*打开八编组屏蔽门的驱动继电器(配置字段)*/ UINT16 OpenEightEditGroupDriveRelayId; /*打开八编组屏蔽门的驱动继电器(配置字段)*/
@@ -47,7 +46,6 @@ typedef struct S_PsdConfigDataStruct
UINT16 wDoorStateRelayId2; /*门开采集继电器ID2(配置字段) 迪斯尼*/ UINT16 wDoorStateRelayId2; /*门开采集继电器ID2(配置字段) 迪斯尼*/
UINT16 wRelayDoorButtonId; /*屏蔽门再关门按钮继电器*/ UINT16 wRelayDoorButtonId; /*屏蔽门再关门按钮继电器*/
UINT16 doorReopenRelayId; /*站台门再次开门继电器*/ UINT16 doorReopenRelayId; /*站台门再次开门继电器*/
UINT16 doorReopenRelayId2; /*站台门再次开门继电器2*/
UINT16 departureConfirmRelayId; /*发车确认继电器*/ UINT16 departureConfirmRelayId; /*发车确认继电器*/
UINT16 detectStartRelayId; /*启动探测继电器*/ UINT16 detectStartRelayId; /*启动探测继电器*/
UINT16 detectStopRelayId; /*停止探测继电器*/ UINT16 detectStopRelayId; /*停止探测继电器*/
@@ -70,8 +68,6 @@ typedef struct S_PsdConfigDataStruct
UINT16 wPsdSndProLinkId; /*屏蔽门防护link2ID*/ UINT16 wPsdSndProLinkId; /*屏蔽门防护link2ID*/
UINT16 wPsdTrdProLinkId; /*屏蔽门防护link3ID*/ UINT16 wPsdTrdProLinkId; /*屏蔽门防护link3ID*/
UINT8 chPsdControlType; /*屏蔽门控制类型*/ UINT8 chPsdControlType; /*屏蔽门控制类型*/
UINT16 IncloudeEsbIdBuf[PSD_INCLUDE_ESB_NUM]; /*屏蔽门包含ESB ID*/
UINT8 IncloudeEsbNum; /*包含ESB数量*/
} PsdConfigDataStruct; } PsdConfigDataStruct;
@@ -425,32 +421,7 @@ UINT8 CheckPsdBelSendRange(const UINT16 wCheckPsdId);
* UINT8 0x55 OC-P控制 0xAA RCI控制 * UINT8 0x55 OC-P控制 0xAA RCI控制
*/ */
UINT8 GetPsdControlType(const UINT16 doorId); UINT8 GetPsdControlType(const UINT16 doorId);
/*
* ID屏蔽门三编组驱动开门继电器ID
* const UINT16 doorId, ID
* 0:
* >0: ID
*/
UINT16 GetThreeGroupPsdOpenDrvRelayId(const UINT16 doorId);
/*
* ID屏蔽门再次开门继电器ID2
* const UINT16 doorId, ID
* 0:
* >0: ID
*/
UINT16 GetPsdReOpenRelayId2(const UINT16 doorId);
/*
* ID屏蔽门包含ESB数量
* const UINT16 doorId, ID
* ESB ID数组
*/
UINT8 GetPsdIncloudeEsbNum(const UINT16 psdId);
/*
* ID屏蔽门包含ESB
* const UINT16 doorId, ID
* ESB ID数组
*/
UINT16* GetPsdIncloudeEsbIdBuf(const UINT16 psdId);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
+2 -263
View File
@@ -11,10 +11,8 @@
#include "PSDDataManage.h" #include "PSDDataManage.h"
#include "../ParsePack/ParsePackDefine.h" #include "../ParsePack/ParsePackDefine.h"
#include "ESBDataManage.h"
PsdDataStruct PsdDataStru[PSD_SUM_MAX] = { 0U }; /*定义屏蔽门数据结构体*/ PsdDataStruct PsdDataStru[PSD_SUM_MAX]; /*定义屏蔽门数据结构体*/
PsdDataStructCC PsdDataStruCC[PSD_SUM_MAX] = { 0U }; /*定义车车屏蔽门数据结构体*/
/* /*
* ID屏蔽门数据 * ID屏蔽门数据
@@ -26,16 +24,6 @@ PsdDataStruct *GetPsdData(void)
return PsdDataStru; return PsdDataStru;
} }
/*
* ID屏蔽门数据CC
*
*
*/
PsdDataStructCC* GetPsdDataCC(void)
{
return PsdDataStruCC;
}
/* /*
* ID屏蔽门互锁解除状态 * ID屏蔽门互锁解除状态
* const UINT16 doorId, ID * const UINT16 doorId, ID
@@ -531,9 +519,6 @@ void ResetPsdData(const UINT16 psdId)
PsdDataStru[bufIndex].PsdDriveState=PSD_DRIVE_STATE_INVALID; PsdDataStru[bufIndex].PsdDriveState=PSD_DRIVE_STATE_INVALID;
PsdDataStru[bufIndex].PsdPreDriveState=PSD_DRIVE_STATE_INVALID; PsdDataStru[bufIndex].PsdPreDriveState=PSD_DRIVE_STATE_INVALID;
SetPsdVobcCmdCC(psdId,0u, PSD_DEFAULT_CONTROL_CMD,0u);
SetPsdEditGroupInfoDataCC(psdId, PSD_EDIT_GROUP_DEFAULT); /*设置RC的PSD编组信息为默认值*/
} }
else else
{ {
@@ -2870,250 +2855,4 @@ void SetPsdRelayDownCycNum(const UINT16 doorId, const UINT32 startCycNum)
{ {
/*不处理*/ /*不处理*/
} }
} }
/*
* ID屏蔽门编组信息CC
* const UINT16 doorId, ID
* 0
* 3
* 4
* 6
* 8
* Created By LQ 2025.11.05
*/
UINT16 GetPsdEditGroupInfoDataCC(const UINT16 doorId)
{
UINT16 bufIndex = 0U; /*数组下标*/
UINT16 retVal = CI_ERROR;
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
if (bufIndex < PSD_SUM_MAX)
{
retVal = PsdDataStruCC[bufIndex].psdEditGroupInfo;
}
else
{
retVal = CI_ERROR;
}
return retVal;
}
/*
* ID屏蔽门编组信息CC
* const UINT16 doorId, ID
* const UINT16 wPsdEditGroupInfo
*
* Created By LQ 2025.11.05
*/
void SetPsdEditGroupInfoDataCC(const UINT16 doorId, const UINT16 wPsdEditGroupInfo)
{
UINT16 bufIndex = 0U; /*数组下标*/
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
if (bufIndex < PSD_SUM_MAX)
{
if ((PSD_THREE_EDIT_GROUP == wPsdEditGroupInfo)
|| (PSD_FOUR_EDIT_GROUP == wPsdEditGroupInfo)
|| (PSD_SIX_EDIT_GROUP == wPsdEditGroupInfo)
|| (PSD_EIGHT_EDIT_GROUP == wPsdEditGroupInfo)
|| (PSD_EDIT_GROUP_DEFAULT == wPsdEditGroupInfo))
{
PsdDataStruCC[bufIndex].psdEditGroupInfo = wPsdEditGroupInfo; /*不考虑FAO的特殊接口*/
}
else
{
/*不处理*/
}
}
else
{
/*不处理*/
}
}
/*
* PSD的VOBC控制命令CC
* const UINT16 doorId,ID
* 0x00-
* 0x55-PSD命令
* 0xAA-PSD命令
* 0xFF-PSD命令
* Created By LQ 2025.11.05
*/
UINT8 GetPsdVobcCmdCC(const UINT16 doorId)
{
UINT16 bufIndex = 0U; /*数组下标*/
UINT8 ctrlCmd = PSD_DEFAULT_CONTROL_CMD;
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
if (bufIndex < PSD_SUM_MAX)
{
ctrlCmd = PsdDataStruCC[bufIndex].PsdCmd;
}
else
{
ctrlCmd = PSD_DEFAULT_CONTROL_CMD;
}
return ctrlCmd;
}
/*
* PSD的VOBC的编号CC
* const UINT16 doorId,ID
* VOBC ID
* Created By LQ 2025.11.05
*/
UINT16 GetPsdVobcIdCC(const UINT16 doorId)
{
UINT16 bufIndex = 0U; /*数组下标*/
UINT16 vobcId = 0U;
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
if (bufIndex < PSD_SUM_MAX)
{
vobcId = PsdDataStruCC[bufIndex].SrcVobcId;
}
else
{
vobcId = 0U;
}
return vobcId;
}
/*
* PSD的控制命令的设置周期CC
* const UINT16 doorId,ID
* PSD的控制命令的设置周期
* Created By LQ 2025.11.05
*/
UINT32 GetPsdCmdSetCycleCC(const UINT16 doorId)
{
UINT16 bufIndex = 0U; /*数组下标*/
UINT32 setCycle = 0U;
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
if (bufIndex < PSD_SUM_MAX)
{
setCycle = PsdDataStruCC[bufIndex].CmdSetCycle;
}
else
{
setCycle = 0U;
}
return setCycle;
}
/*
* PSD的VOBC操作命令CC
* const UINT16 doorId ID
* const UINT16 vobcId VOBC ID
* const UINT8 operCmd VOBC的开关门命令
* const UINT32 dwCycNum
*
* Created By LQ 2025.11.05
*/
void SetPsdVobcCmdCC(const UINT16 doorId, const UINT16 vobcId, const UINT8 operCmd, const UINT32 dwCycNum)
{
UINT16 bufIndex = 0U; /*数组下标*/
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
if (bufIndex < PSD_SUM_MAX)
{
if ((PSD_DEFAULT_CONTROL_CMD == operCmd)
|| (VOBCTOCI_COMMAND_TYPE_PSDOPEN == operCmd)
|| (VOBCTOCI_COMMAND_TYPE_PSDCLOSE == operCmd)
|| (VOBCTOCI_COMMAND_TYPE_PSDCHECK_FAOHLHT == operCmd))
{
if (PsdDataStruCC[bufIndex].SrcVobcId == vobcId)
{
PsdDataStruCC[bufIndex].PsdCmd = operCmd;
}
else
{
/*另一个VOBC开始操作该屏蔽门,对之前VOBC操作该屏蔽门产生的上下文进行复位*/
PsdDataStruCC[bufIndex].SrcVobcId = vobcId;
PsdDataStruCC[bufIndex].PsdCmd = operCmd;
}
PsdDataStruCC[bufIndex].CmdSetCycle = dwCycNum;
}
else
{
/*命令非法,不处理*/
}
}
else
{
/*不做处理*/
}
}
/*
* ID屏蔽门编组信息CC
* const UINT16 doorId, ID
* 0
* 3
* 4
* 6
* 8
*/
UINT16 GetPsdEditGroupInfoData(const UINT16 doorId)
{
UINT16 bufIndex = 0U; /*数组下标*/
UINT16 retVal = CI_ERROR;
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
if (bufIndex < PSD_SUM_MAX)
{
retVal = PsdDataStru[bufIndex].psdEditGroupInfo;
}
else
{
retVal = CI_ERROR;
}
return retVal;
}
/*
* ID屏蔽门编组信息
* const UINT16 doorId, ID
* const UINT16 wPsdEditGroupInfo
*
*/
void SetPsdEditGroupInfoData(const UINT16 doorId, const UINT16 wPsdEditGroupInfo)
{
UINT16 bufIndex = 0U; /*数组下标*/
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
if (bufIndex < PSD_SUM_MAX)
{
if ((PSD_THREE_EDIT_GROUP == wPsdEditGroupInfo)
|| (PSD_FOUR_EDIT_GROUP == wPsdEditGroupInfo)
|| (PSD_SIX_EDIT_GROUP == wPsdEditGroupInfo)
|| (PSD_EIGHT_EDIT_GROUP == wPsdEditGroupInfo)
|| (PSD_EDIT_GROUP_DEFAULT == wPsdEditGroupInfo))
{
PsdDataStru[bufIndex].psdEditGroupInfo = wPsdEditGroupInfo; /*不考虑FAO的特殊接口*/
}
else
{
/*不处理*/
}
}
else
{
/*不处理*/
}
}
-95
View File
@@ -22,7 +22,6 @@
#include "CommonTypes.h" #include "CommonTypes.h"
#include "../System/CiSystemDefine.h" #include "../System/CiSystemDefine.h"
#include "../Relay/RelayConfigDataManage.h" #include "../Relay/RelayConfigDataManage.h"
#include "CiInterfaceDefine.h"
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
@@ -94,18 +93,7 @@ typedef struct S_PsdDataStruct
UINT32 dwPsdRelayDownCycNum; /*PSD门关继电器落下起始周期*/ UINT32 dwPsdRelayDownCycNum; /*PSD门关继电器落下起始周期*/
} PsdDataStruct; } PsdDataStruct;
/*屏蔽门数据结构体*/
typedef struct S_PsdDataStructCC
{
UINT16 PsdId; /*屏蔽门ID (初始化字段)*/
UINT16 psdEditGroupInfo; /*屏蔽门编组信息CC(0-默认值,3-三编组,4-四编组,6-六编组,8-八编组)*/
UINT16 SrcVobcId; /*操作该屏蔽门的当前VOBC编号CC*/
UINT8 PsdCmd; /*操作屏蔽门的命令CC(0x00-默认值,0x55-打开PSD命令,0xAA-关闭PSD命令,0xFF-查询PSD命令)*/
UINT32 CmdSetCycle;/*命令设置周期CC*/
} PsdDataStructCC;
extern PsdDataStruct PsdDataStru[PSD_SUM_MAX]; /*定义屏蔽门数据结构体*/ extern PsdDataStruct PsdDataStru[PSD_SUM_MAX]; /*定义屏蔽门数据结构体*/
extern PsdDataStructCC PsdDataStruCC[PSD_SUM_MAX]; /*定义车车屏蔽门数据结构体*/
/* /*
* PSD的VOBC操作命令 * PSD的VOBC操作命令
@@ -181,13 +169,6 @@ void ResetPsdData(const UINT16 psdId);
*/ */
PsdDataStruct *GetPsdData(void); PsdDataStruct *GetPsdData(void);
/*
* ID屏蔽门数据CC
*
*
*/
PsdDataStructCC* GetPsdDataCC(void);
/* /*
* ID屏蔽门互锁解除状态 * ID屏蔽门互锁解除状态
* const UINT16 doorId, ID * const UINT16 doorId, ID
@@ -1021,82 +1002,6 @@ UINT32 GetPsdRelayDownCycNum(const UINT16 doorId);
*/ */
void SetPsdRelayDownCycNum(const UINT16 doorId, const UINT32 startCycNum); void SetPsdRelayDownCycNum(const UINT16 doorId, const UINT32 startCycNum);
/*
* ID屏蔽门编组信息CC
* const UINT16 doorId, ID
* 0
* 3
* 4
* 6
* 8
* Created By LQ 2025.11.05
*/
UINT16 GetPsdEditGroupInfoDataCC(const UINT16 doorId);
/*
* ID屏蔽门编组信息CC
* const UINT16 doorId, ID
* const UINT16 wPsdEditGroupInfo
*
* Created By LQ 2025.11.05
*/
void SetPsdEditGroupInfoDataCC(const UINT16 doorId, const UINT16 wPsdEditGroupInfo);
/*
* PSD的VOBC控制命令CC
* const UINT16 doorId,ID
* 0x00-
* 0x55-PSD命令
* 0xAA-PSD命令
* 0xFF-PSD命令
* Created By LQ 2025.11.05
*/
UINT8 GetPsdVobcCmdCC(const UINT16 doorId);
/*
* PSD的VOBC的编号CC
* const UINT16 doorId,ID
* VOBC ID
* Created By LQ 2025.11.05
*/
UINT16 GetPsdVobcIdCC(const UINT16 doorId);
/*
* PSD的控制命令的设置周期CC
* const UINT16 doorId,ID
* PSD的控制命令的设置周期
* Created By LQ 2025.11.05
*/
UINT32 GetPsdCmdSetCycleCC(const UINT16 doorId);
/*
* PSD的VOBC操作命令CC
* const UINT16 doorId ID
* const UINT16 vobcId VOBC ID
* const UINT8 operCmd VOBC的开关门命令
* const UINT32 dwCycNum
*
* Created By LQ 2025.11.05
*/
void SetPsdVobcCmdCC(const UINT16 doorId, const UINT16 vobcId, const UINT8 operCmd, const UINT32 dwCycNum);
/*
* ID屏蔽门编组信息CC
* const UINT16 doorId, ID
* 0
* 3
* 4
* 6
* 8
*/
UINT16 GetPsdEditGroupInfoData(const UINT16 doorId);
/*
* ID屏蔽门编组信息
* const UINT16 doorId, ID
* const UINT16 wPsdEditGroupInfo
*
*/
void SetPsdEditGroupInfoData(const UINT16 doorId, const UINT16 wPsdEditGroupInfo);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
+3 -7
View File
@@ -92,11 +92,9 @@
#define PSD_SIX_EDIT_GROUP_FAO_YF ((UINT8)0x02U) /*六编组*/ #define PSD_SIX_EDIT_GROUP_FAO_YF ((UINT8)0x02U) /*六编组*/
/*屏蔽门编组信息定义*/ /*屏蔽门编组信息定义*/
#define PSD_EDIT_GROUP_DEFAULT ((UINT16)0x00U) /*默认值*/ #define PSD_FOUR_EDIT_GROUP ((UINT8)0x04U) /*Ëıà×é*/
#define PSD_THREE_EDIT_GROUP ((UINT16)0x03U) /*三编组*/ #define PSD_SIX_EDIT_GROUP ((UINT8)0x06U) /*Áù±à×é*/
#define PSD_FOUR_EDIT_GROUP ((UINT16)0x04U) /*四编组*/ #define PSD_EIGHT_EDIT_GROUP ((UINT8)0x08U) /*°Ë±à×é*/
#define PSD_SIX_EDIT_GROUP ((UINT16)0x06U) /*六编组*/
#define PSD_EIGHT_EDIT_GROUP ((UINT16)0x08U) /*八编组*/
/*办理出来的出站进路信号关闭是否在屏蔽门打开之前的标志*/ /*办理出来的出站进路信号关闭是否在屏蔽门打开之前的标志*/
#define PSD_OPEN_BEFORE_SIG_CLOSE_YES ((UINT8)0xaaU) /*屏蔽门打开之前信号关闭*/ #define PSD_OPEN_BEFORE_SIG_CLOSE_YES ((UINT8)0xaaU) /*屏蔽门打开之前信号关闭*/
@@ -209,6 +207,4 @@
#define HIGH_FOUR_CHAR ((UINT8)0U) /*高四字节*/ #define HIGH_FOUR_CHAR ((UINT8)0U) /*高四字节*/
#define LOW_FOUR_CHAR ((UINT8)1U) /*低四字节*/ #define LOW_FOUR_CHAR ((UINT8)1U) /*低四字节*/
#define PSD_INCLUDE_ESB_NUM ((UINT8)10U) /*ESB个数*/
#endif #endif
@@ -135,6 +135,9 @@
#define ATS_CMD_ROUTE_APPLY ((UINT8)0x92) /*申请路径*/ #define ATS_CMD_ROUTE_APPLY ((UINT8)0x92) /*申请路径*/
#define ATS_CMD_ROUTE_APPLY_CANCLE ((UINT8)0x93) /*取消申请路径*/ #define ATS_CMD_ROUTE_APPLY_CANCLE ((UINT8)0x93) /*取消申请路径*/
#define ATS_CMD_ROUTE_PART_APPLY ((UINT8)0x94) /*申请部分路径*/ #define ATS_CMD_ROUTE_PART_APPLY ((UINT8)0x94) /*申请部分路径*/
#define ATS_CMD_ROUTE_PART_APPLY_CANCEL ((UINT8)0x95) /*取消申请部分路径*/
#define ATS_CMD_AUTO_RETURN_SET_ONE ((UINT8)0x96) /*自动折返一次有效命令*/
#define ATS_CMD_AUTO_RETURN_CMD_CANCEL ((UINT8)0x97) /*取消自动折返命令*/
#define ATS_CMD_SET_PHYSEC_ERR ((UINT8)0x98) /*物理区段故障占用设置命令*/ #define ATS_CMD_SET_PHYSEC_ERR ((UINT8)0x98) /*物理区段故障占用设置命令*/
#define ATS_CMD_CANCEL_PHYSEC_FIRST ((UINT8)0x99) /*物理区段故障占用取消一次命令*/ #define ATS_CMD_CANCEL_PHYSEC_FIRST ((UINT8)0x99) /*物理区段故障占用取消一次命令*/
#define ATS_CMD_CANCEL_PHYSEC_SECOND ((UINT8)0x9a) /*物理区段故障占用取消二次命令*/ #define ATS_CMD_CANCEL_PHYSEC_SECOND ((UINT8)0x9a) /*物理区段故障占用取消二次命令*/
@@ -162,11 +165,6 @@
#define SCX_ATS_CMD_ESS_GO_POSITION (UINT8)0x89 /*ESS去位命令*/ #define SCX_ATS_CMD_ESS_GO_POSITION (UINT8)0x89 /*ESS去位命令*/
#define SCX_ATS_CMD_ESS_STOP_POSITION (UINT8)0x90 /*ESS停位命令*/ #define SCX_ATS_CMD_ESS_STOP_POSITION (UINT8)0x90 /*ESS停位命令*/
#define ATS_CMD_STATION_QK_SET (UINT8)0x91 /*站台清客标志设置 */ #define ATS_CMD_STATION_QK_SET (UINT8)0x91 /*站台清客标志设置 */
#define ATS_CMD_EMERG_XS_SET_ONE (UINT8)0xAC /*设置紧急临时限速一次命令 */
#define ATS_CMD_EMERG_XS_SET_TWO (UINT8)0xAD /*设置紧急临时限速二次命令 */
#define ATS_CMD_EMERG_XS_CANCEL_ONE (UINT8)0xAE /*取消紧急临时限速一次命令 */
#define ATS_CMD_EMERG_XS_CANCEL_TWO (UINT8)0xAF /*取消紧急临时限速二次命令 */
#define ATS_CMD_COUPLING_ROUTE_SET (UINT8)0xB0 /*联挂进路办理 */
/****联锁到其他联锁的命令宏定义****/ /****联锁到其他联锁的命令宏定义****/
#define CI_CMD_PHYSEC_USING_APPLY ((UINT16)0x0001) /*物理区段征用申请*/ #define CI_CMD_PHYSEC_USING_APPLY ((UINT16)0x0001) /*物理区段征用申请*/
@@ -251,7 +249,6 @@
#define CI_BACK_AUTO_TRIGGER_SET_ERR (UINT8)0x85 /*进路的自动触发标志设置失败*/ #define CI_BACK_AUTO_TRIGGER_SET_ERR (UINT8)0x85 /*进路的自动触发标志设置失败*/
#define CI_BACK_LEAD_ROUTE_CANCEL ((UINT8)0xA4) /*引导进路无法使用总取消解锁反馈*/ #define CI_BACK_LEAD_ROUTE_CANCEL ((UINT8)0xA4) /*引导进路无法使用总取消解锁反馈*/
#define CI_BACK_COUPLINK_ROUTE_IDLE ((UINT8)0xAF) /*联挂进路内无被联挂车*/
/*信号机故障反馈*/ /*信号机故障反馈*/
#define CI_BACK_SIG_START_OPEN ((UINT8)0x11) /*进路始端信号机开放*/ #define CI_BACK_SIG_START_OPEN ((UINT8)0x11) /*进路始端信号机开放*/
@@ -292,7 +289,6 @@
#define CI_BACK_PSEC_RESET_IN_CT ((UINT8)0x58) /*计轴复位中CT占用*/ #define CI_BACK_PSEC_RESET_IN_CT ((UINT8)0x58) /*计轴复位中CT占用*/
#define UNLOCK_OVELAP_CANNOT (UINT8)0x80 /*解锁保护区段条件不满足*/ #define UNLOCK_OVELAP_CANNOT (UINT8)0x80 /*解锁保护区段条件不满足*/
#define LOCK_OVELAP_OUT_CANNOT (UINT8)0x81 /*保护区段锁闭条件不满足*/ #define LOCK_OVELAP_OUT_CANNOT (UINT8)0x81 /*保护区段锁闭条件不满足*/
#define CI_BACK_PSEC_RESET_ING ((UINT8)0xAE) /*物理区段正在计轴复位*/
/*道岔故障反馈*/ /*道岔故障反馈*/
#define CI_BACK_SWT_YLOCK_YES ((UINT8)0x31) /*道岔引导总锁*/ #define CI_BACK_SWT_YLOCK_YES ((UINT8)0x31) /*道岔引导总锁*/
@@ -452,17 +448,15 @@
#define CI_BACK_AUTO_ROUTE_HAVE_BLOCK ((UINT8)0x95) /*自动通过进路自动进路存在封锁*/ #define CI_BACK_AUTO_ROUTE_HAVE_BLOCK ((UINT8)0x95) /*自动通过进路自动进路存在封锁*/
#define CI_BACK_AUTO_ROUTE_FLOOD_STATE_ERR ((UINT8)0x96) /*自动通过进路存在防淹门不满足*/ #define CI_BACK_AUTO_ROUTE_FLOOD_STATE_ERR ((UINT8)0x96) /*自动通过进路存在防淹门不满足*/
#define CI_BACK_AUTO_ROUTE_COUPROUTE_SET ((UINT8)0xB0) /*自动通过联挂进路已办理*/
#define CI_BACK_AUTO_RETURN_HAVE_BLOCK ((UINT8)0x98) /*自动折返进路存在封锁*/ #define CI_BACK_AUTO_RETURN_HAVE_BLOCK ((UINT8)0x98) /*自动折返进路存在封锁*/
#define CI_BACK_AUTO_RETURN_FLOOD_STATE_ERR ((UINT8)0x99) /*自动折返进路存在防淹门不满足*/ #define CI_BACK_AUTO_RETURN_FLOOD_STATE_ERR ((UINT8)0x99) /*自动折返进路存在防淹门不满足*/
#define CI_BACK_AUTO_RETURN_COUPROUTE_SET ((UINT8)0xB1) /*自动折返联挂进路已办理*/
#define CI_BACK_ALLAUTO_RETURN_HAVE_BLOCK ((UINT8)0x9B) /*全自动折返进路存在封锁*/ #define CI_BACK_ALLAUTO_RETURN_HAVE_BLOCK ((UINT8)0x9B) /*全自动折返进路存在封锁*/
#define CI_BACK_ALLAUTO_RETURN_FLOOD_STATE_ERR ((UINT8)0x9C) /*全自动折返进路存在防淹门不满足*/ #define CI_BACK_ALLAUTO_RETURN_FLOOD_STATE_ERR ((UINT8)0x9C) /*全自动折返进路存在防淹门不满足*/
#define CI_BACK_ALLAUTO_RETURN_COUPROUTE_SET ((UINT8)0xB2) /*全自动折返联挂进路已办理*/
#endif #endif
File diff suppressed because it is too large Load Diff
@@ -69,17 +69,6 @@
#define OC_TO_ATS_SWITCH_ZZJ_NORMAL ((UINT8)0x55) /*OC给ATS的多机牵引对应道岔状态-正常*/ #define OC_TO_ATS_SWITCH_ZZJ_NORMAL ((UINT8)0x55) /*OC给ATS的多机牵引对应道岔状态-正常*/
#define OC_TO_ATS_SWITCH_ZZJ_ALARM ((UINT8)0xAA) /*OC给ATS的多机牵引对应道岔状态-故障*/ #define OC_TO_ATS_SWITCH_ZZJ_ALARM ((UINT8)0xAA) /*OC给ATS的多机牵引对应道岔状态-故障*/
#define ATS_CI_INTERFACE_INFOTYPE ((UINT16)0x0407U) /*ATS-联锁接口类型*/
#define RCI_ATS_INFO_TYPE_COMMON_STATE ((UINT16)0x0201U) /*RCI->ATS通用状态信息,周期发送*/
#define RCI_ATS_INFO_TYPE_STATION_STATE ((UINT16)0x0202U) /*RCI->ATS站场状态信息,间隔1周期发送*/
#define RCI_ATS_INFO_TYPE_DEVICE_STATE ((UINT16)0x0203U) /*RCI->ATS设备状态信息,间隔1周期发送*/
#define ATS_CI_INFO_TYPE_HEART_STATE ((UINT16)0x0204U) /*ATS->CI心跳状态信息,周期发送*/
#define ATS_CI_INFO_TYPE_CMD_CONTROL ((UINT16)0x0205U) /*ATS->CI命令控制信息,ATS触发发送*/
#define SHOW_2OO2_STATE_MAIN ((UINT8)0x55U) /*显示主备系状态-主系*/
#define SHOW_2OO2_STATE_BACKUP ((UINT8)0xaaU) /*显示主备系状态-备系*/
#define SHOW_2OO2_STATE_UNKNOW ((UINT8)0xFFU) /*显示主备系状态-未知*/
/*执行电插箱相关信息*/ /*执行电插箱相关信息*/
typedef struct s_PlusBoxDataSendATS typedef struct s_PlusBoxDataSendATS
{ {
@@ -117,14 +106,6 @@ typedef struct s_SwitchZzjDataSendATS
UINT8 szSwitchIncldeZzjState[MAX_OC_SWITCH_INCLUDE_ZZJ_NUM]; /*给ATS组包的道岔对应转辙机状态*/ UINT8 szSwitchIncldeZzjState[MAX_OC_SWITCH_INCLUDE_ZZJ_NUM]; /*给ATS组包的道岔对应转辙机状态*/
}OcToATSSwitchZzjData; }OcToATSSwitchZzjData;
/*最近一次收到ATS命令数据的周期号信息*/
typedef struct s_ReciveAtsCmdDataCycInfo
{
UINT8 chDeviceType; /*设备类型*/
UINT8 chDeviceId; /*设备ID*/
UINT32 dwReciveCmdDataAtsCycNum; /*收到ATS命令数据时ATS周期号*/
}ReciveAtsCmdDataCycInfo;
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
@@ -140,32 +121,26 @@ extern CommandDataStruct CiSendBackDataTempStru[CI_TO_ATSORXIANDI_CMD_DATA_STRU_
extern UINT16 CiSendBackDataTempStruSum; extern UINT16 CiSendBackDataTempStruSum;
extern UINT8 LastCmdSourceSysType; extern UINT8 LastCmdSourceSysType;
extern UINT32 FirstCmdId; /*首次操作确认的命令ID号*/ extern UINT32 FirstCmdId; /*首次操作确认的命令ID号*/
extern ReciveAtsCmdDataCycInfo szReciveAtsCmdDataCycInfo[ATS_SUM_MAX * 2U]; /*收到ATS命令数据周期号信息数组*/
extern UINT16 gReciveAtsCmdDataDeviceSum; /*收到ATS命令数据设备数目*/
/* /*
* *
* const UINT8* dataBuf, * const UINT8* dataBuf,
* const UINT16 dataLength, * const UINT16 dataLength,
* const UINT8 chDevType
* const UINT8 chDeciveId ID
* 0: * 0:
* 1: * 1:
* edit by cgh 20251104
*/ */
UINT8 ParseAtsOrXianDiToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength, const UINT8 chDevType, const UINT8 chDeciveId); UINT8 ParseAtsOrXianDiToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength);
/* /*
* ATS或现地数据 * ATS或现地数据
* QueueStruct* ciToAtsDataQueue, *
* const UINT8 deviceId, ID * const UINT8 deviceId, ID
* const UINT8 targetDevType, * const UINT8 targetDevType,
* const UINT8 frame, * const UINT8 frame,
* UINT8* chSendXiandiorAtsBuf
* 0: * 0:
* 1: * 1:
*/ */
UINT8 PackCiToAtsOrXianDiData(const UINT8 deviceId, const UINT8 targetDevType, const UINT8 frame, UINT8* chSendXiandiorAtsBuf); UINT8 PackCiToAtsOrXianDiData( const UINT8 deviceId, const UINT8 targetDevType,const UINT8 frame);
/* /*
* CI接收的操作命令结构体数组长度 * CI接收的操作命令结构体数组长度
@@ -433,75 +408,6 @@ UINT8 GetOcPscConfirmFlag(UINT8 index);
*/ */
void PackCiDataToAts(UINT8* ciToXianDiDataBuffer, UINT16* ii); void PackCiDataToAts(UINT8* ciToXianDiDataBuffer, UINT16* ii);
/**
* @brief RC/CI设备通用状态处理
* @param[in] UINT8* ciToXianDiDataBuffer CI组包给ATS或现地的数据数组
* @param[in] UINT16* ii CI组包给ATS或现地的数据索引
* @return
* @note by cgh 20251103
*/
void RcOrCiDeciveCommonStateDeal(UINT8* ciToXianDiDataBuffer, UINT16* ii);
/**
* @brief ATS通用设备状态处理
* @param[in] UINT8* ciToXianDiDataBuffer CI组包给ATS或现地的数据数组
* @param[in] UINT16* wDataIndex CI组包给ATS或现地的数据索引
* @param[in] const UINT8 chDeviceId, ID
* @param[in] const UINT8 chTargetDevType,
* @return
* @note by cgh 20251103
*/
void SendAtsCommonDeviceStateDeal(UINT8* ciToXianDiDataBuffer, UINT16* wDataIndex, const UINT8 chDeviceId, const UINT8 chTargetDevType);
/**
* @brief ATS通用站场状态处理
* @param[in] UINT8* ciToXianDiDataBuffer CI组包给ATS或现地的数据数组
* @param[in] UINT16* wDataIndex CI组包给ATS或现地的数据索引
* @param[in] const UINT8 chDeviceId, ID
* @param[in] const UINT8 chTargetDevType,
* @param[in] UINT8* chSendXiandiorAtsBuf
* @return
* @note by cgh 20251103
*/
void SendAtsCommonStationStateDeal(UINT8* ciToXianDiDataBuffer, UINT16* wDataIndex, const UINT8 chDeviceId, const UINT8 chTargetDevType, UINT8* chSendXiandiorAtsBuf);
/**
* @brief ATS命令处理
* @param[in] const UINT8* dataBuf,
* @param[in] UINT16* dataIndex,
* @param[in] const UINT16 dataLength,
* @return CI_ERROR CI_SUCCESS
* @note by cgh 20251104
*/
UINT8 ReciveAtsCmdDeal(const UINT8* dataBuf, UINT16* dataIndex, const UINT16 wDataLength);
/**
* @brief ATS命令数据周期号信息
* @param[in] UINT8 chDeviceType
* @param[in] UINT8 chDeviceId ID
* @return
* @note by cgh 20251105
*/
void UpdateAtsCmdDataCycInfo(UINT8 chDeviceType, UINT8 chDeviceId);
/**
* @brief ATS命令数据时ATS周期号
* @param[in] UINT8 chDeviceType
* @param[in] UINT8 chDeviceId ID
* @return UINT32 ATS命令数据时ATS周期号
* @note by cgh 20251105
*/
UINT32 GetReciveCmdDataAtsCycNum(UINT8 chDeviceType, UINT8 chDeviceId);
/**
* @brief RC/CI设备通用状态信息
* @param[in] UINT8* ciToXianDiDataBuffer CI组包给ATS或现地的数据数组
* @param[in] UINT16* ii CI组包给ATS或现地的数据索引
* @return
* @note by cgh 20251111
*/
void PackRcOrCiDeciveCommonState(UINT8* ciToXianDiDataBuffer, UINT16* ii);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
+53 -282
View File
@@ -124,7 +124,7 @@ UINT8 InitAxleToCiDataStru(void)
UINT8 deviceSum = 0u; /*设备总数*/ UINT8 deviceSum = 0u; /*设备总数*/
UINT8* deviceIdBuf = NULL; /*设备ID数组*/ UINT8* deviceIdBuf = NULL; /*设备ID数组*/
UINT8 i = 0u; /*用于循环*/ UINT8 i = 0u; /*用于循环*/
UINT16 j = 0u; /*用于循环*/ UINT8 j = 0u; /*用于循环*/
UINT8 ciId = 0u; /*本CI ID*/ UINT8 ciId = 0u; /*本CI ID*/
UINT8 axleId = 0u; /*计轴ID*/ UINT8 axleId = 0u; /*计轴ID*/
UINT16 axleName = 0u; /*计轴设备名称:类型+ID*/ UINT16 axleName = 0u; /*计轴设备名称:类型+ID*/
@@ -137,18 +137,14 @@ UINT8 InitAxleToCiDataStru(void)
UINT8 belongAxleSysId = 0u; /*物理区段所属计轴ID*/ UINT8 belongAxleSysId = 0u; /*物理区段所属计轴ID*/
UINT16 axlePhySecSum = 0u; /*计轴系统包含物理区段数目*/ UINT16 axlePhySecSum = 0u; /*计轴系统包含物理区段数目*/
UINT8 pyhIsThisLine = 0u; UINT8 pyhIsThisLine = 0u;
UINT8 chAxisLogId = 0U;
ciId = GetSystemParaLocalCiId(); ciId = GetSystemParaLocalCiId();
ciName = (CI_SYSTEM_TYPE_RCI) * 256U + ciId; ciName = (CI_SYSTEM_TYPE_CI) * 256U + ciId;
rtn = DsuRsspInitWl((const)DataPath, 0, NULL, ciName, 0, &dsuRsspInfo); rtn = DsuRsspInitWl((const)DataPath,0,NULL,ciName, 0, &dsuRsspInfo);
if (CI_SUCCESS == rtn) if (CI_SUCCESS == rtn)
{ {
deviceSum = GetCiTransmitSpecifySysDevSum(CI_SYSTEM_TYPE_AXIS); /*获取通信Axis设备总数*/ deviceSum = GetCiTransmitSpecifySysDevSum(CI_SYSTEM_TYPE_AXIS); /*获取通信Axis设备总数*/
deviceIdBuf = GetCiTransmitSpecifySysDevBuf(CI_SYSTEM_TYPE_AXIS); /*获取通信Axis设备ID数组*/ deviceIdBuf = GetCiTransmitSpecifySysDevBuf(CI_SYSTEM_TYPE_AXIS); /*获取通信Axis设备ID数组*/
chAxisLogId = GetAxisLogId();
if ((deviceSum > 0u) && (deviceIdBuf != NULL)) if ((deviceSum > 0u) && (deviceIdBuf != NULL))
{ {
phySecCurSum = GetPhySecCurSum(); phySecCurSum = GetPhySecCurSum();
@@ -157,92 +153,66 @@ UINT8 InitAxleToCiDataStru(void)
axleId = deviceIdBuf[i]; axleId = deviceIdBuf[i];
axleName = (CI_SYSTEM_TYPE_AXIS) * 256u + axleId; axleName = (CI_SYSTEM_TYPE_AXIS) * 256u + axleId;
rtn = dquDevName2HlhtId(axleName, chAxisLogId, &axieEtcsId); /*获取计轴互联互通ID*/ rtn = dquDevName2HlhtId(axleName, 0U, &axieEtcsId); /*获取计轴互联互通ID*/
rtn &= dquDevName2HlhtId(ciName, 0U, &ciEtcsId); /*获取CI互联互通ID*/
rtn &= dquDevName2HlhtId(ciName, 0U, &ciEtcsId); /*获取联锁互联互通ID*/
if (CI_SUCCESS == rtn) /*GAL层互联互通ID获取成功*/ if (CI_SUCCESS == rtn) /*GAL层互联互通ID获取成功*/
{ {
if ((UINT16)axleId >= AXIS_TO_CI_SUM_MAX) if (axleId >= AXIS_TO_CI_SUM_MAX)
{ {
rtn = CI_ERROR;
break;/*防护代码,防止越界*/ break;/*防护代码,防止越界*/
} }
else axisToCiDataStru[axleId].deviceType = CI_SYSTEM_TYPE_AXIS;
axisToCiDataStru[axleId].axisSystemId = deviceIdBuf[i];
axisToCiDataStru[axleId].axisEtcsId = axieEtcsId;
axisToCiDataStru[axleId].ciEtcsId = ciEtcsId;
(void)memset(axisToCiDataStru[axleId].PhySecIdx, (INT32)AXISDATASTR_IDX, PHYSICAL_SECTION_SUM_MAX); /*默认设置下标为无效位置*/
for (j = 0u; j < phySecCurSum; j++) /*遍历物理区段*/
{ {
axisToCiDataStru[axleId].deviceType = CI_SYSTEM_TYPE_AXIS; phySecId = GetPhySecId(j);
axisToCiDataStru[axleId].axisSystemId = deviceIdBuf[i]; belongCiId = GetPhySecBelongCiId(phySecId);
axisToCiDataStru[axleId].axisEtcsId = axieEtcsId; belongAxleSysId = GetPhySecBelongAxisSysId(phySecId);
axisToCiDataStru[axleId].ciEtcsId = ciEtcsId; pyhIsThisLine = GetPhyIsThisLineState(phySecId); /*是否本线路*/
if ((0U < phySecId) && (phySecId < PHYSICAL_SECTION_SUM_MAX) && (belongCiId == ciId)
(void)CommonMemSet((void*)&axisToCiDataStru[axleId].PhySecIdx, (UINT32)sizeof(UINT8) * PHYSICAL_SECTION_SUM_MAX, AXISDATASTR_IDX, (UINT32)sizeof(UINT8) * PHYSICAL_SECTION_SUM_MAX); && (belongAxleSysId == axleId) && (DEV_IS_THIS_LINE_YES == pyhIsThisLine))
for (j = 0u; j < phySecCurSum; j++) /*遍历物理区段*/
{ {
phySecId = GetPhySecId(j); axlePhySecSum = axisToCiDataStru[axleId].SectionSum;
belongCiId = GetPhySecBelongCiId(phySecId);
belongAxleSysId = GetPhySecBelongAxisSysId(phySecId); if (CI_INCLUDE_AXIS_MAX_SUM > axlePhySecSum)
pyhIsThisLine = GetPhyIsThisLineState(phySecId); /*是否本线路*/
if ((0U < phySecId) && (phySecId < PHYSICAL_SECTION_SUM_MAX) && (belongCiId == ciId)
&& (belongAxleSysId == axleId) && (DEV_IS_THIS_LINE_YES == pyhIsThisLine))
{ {
axlePhySecSum = axisToCiDataStru[axleId].SectionSum; axisToCiDataStru[axleId].axisDataStr[axlePhySecSum].PhySecId = phySecId;
axisToCiDataStru[axleId].axisDataStr[axlePhySecSum].gdRelayState = RELAY_STATE_DOWN;
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;
if (CI_INCLUDE_AXIS_MAX_SUM > axlePhySecSum) axisToCiDataStru[axleId].PhySecIdx[phySecId] = (UINT8)(axlePhySecSum);
{
axisToCiDataStru[axleId].axisDataStr[axlePhySecSum].PhySecId = phySecId;
axisToCiDataStru[axleId].axisDataStr[axlePhySecSum].gdRelayState = RELAY_STATE_DOWN;
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].axisDataStr[axlePhySecSum].chResetCmdTagBack = 0U;
axisToCiDataStru[axleId].PhySecIdx[phySecId] = (UINT8)(axlePhySecSum); axisToCiDataStru[axleId].SectionSum++;
axisToCiDataStru[axleId].dwLastRecvDataCycNum = 0U;
axisToCiDataStru[axleId].SectionSum++;
}
else /*超出最大*/
{
rtn = CI_ERROR;
break;
}
} }
else else /*超出最大*/
{ {
; /*不处理*/ rtn = CI_ERROR;
break;
} }
} }
} }
} }
else
{
;
}
if (CI_ERROR == rtn)
{
debug_infor_printf((const)"InitAxleToCiDataStru fail,dquDevName2HlhtId error\r\n");
break;
}
else
{
; /*继续初始化*/
}
} }
} }
else else
{ {
; rtn = CI_SUCCESS;
} }
} }
else if (CI_ERROR == rtn)
{ {
debug_infor_printf((const)"InitAxleToCiDataStru fail,DsuRsspInitWl error\r\n"); debug_infor_printf((const)"InitAxleToCiDataStru fail.\r\n");
} }
return rtn; return rtn;
@@ -281,9 +251,6 @@ UINT8 ParseAxisToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength, cons
UINT16 axisDevName = 0U; /*计轴名称:类型+ID*/ UINT16 axisDevName = 0U; /*计轴名称:类型+ID*/
UINT16 wPhySecCurSum = 0U; /*本控区物理区段数目*/ UINT16 wPhySecCurSum = 0U; /*本控区物理区段数目*/
UINT16 wIndexInAxle = 0U; /*物理区段的索引号*/ UINT16 wIndexInAxle = 0U; /*物理区段的索引号*/
UINT8 chResetCmdTag = 0U; /*复位命令标签反馈*/
UINT8 chCurSystemAreaState = 0U; /*当前系统区域状态*/
UINT32 dwSystemUpdateMainUseCycNum = 0U; /*系统主用起始周期号*/
deviceSum = GetCiTransmitSpecifySysDevSum(CI_SYSTEM_TYPE_AXIS); /*获取通信Axis设备总数*/ deviceSum = GetCiTransmitSpecifySysDevSum(CI_SYSTEM_TYPE_AXIS); /*获取通信Axis设备总数*/
deviceIdBuf = GetCiTransmitSpecifySysDevBuf(CI_SYSTEM_TYPE_AXIS); /*获取通信Axis设备ID数组*/ deviceIdBuf = GetCiTransmitSpecifySysDevBuf(CI_SYSTEM_TYPE_AXIS); /*获取通信Axis设备ID数组*/
@@ -342,7 +309,7 @@ UINT8 ParseAxisToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength, cons
galPrtclVer = GetCiAndAxisPrtclCheckVer(); /*获取联锁与计轴系统协议版本号*/ galPrtclVer = GetCiAndAxisPrtclCheckVer(); /*获取联锁与计轴系统协议版本号*/
galAxisDataVer = GetCiTranAxisDataCheckVer(localCiId, axisDevName); /*获取计轴系统数据版本号*/ galAxisDataVer = GetCiTranAxisDataCheckVer(localCiId, axisDevName); /*获取计轴系统数据版本号*/
headRet = GalHeadCheck(axisToCiDataStru[systemId].axisEtcsId, axisToCiDataStru[systemId].ciEtcsId, GAL_INTERFACE, galPrtclVer, galAxisDataVer, &hlhtGalHead, &errCode); headRet = GalHeadCheck(axisToCiDataStru[systemId].axisEtcsId, axisToCiDataStru[systemId].ciEtcsId, GAL_INTERFACE, galPrtclVer, galAxisDataVer, &hlhtGalHead, &errCode);
debug_infor_printf((const)"\nAXLE %d GAL Check Result:%d errCode:%d\n", systemId, headRet, errCode); /*0x55正确,0xaa错误,0x33初始通信帧*/ debug_infor_printf((const)"\nAXLE %d GAL Check Result:%d errCode:%d", systemId, headRet, errCode); /*0x55正确,0xaa错误,0x33初始通信帧*/
if (HLHT_HEAD_SUCCESS == headRet) if (HLHT_HEAD_SUCCESS == headRet)
{ {
@@ -638,101 +605,6 @@ UINT8 ParseAxisToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength, cons
debug_infor_printf((const)"\nAxis phySecNum:%d ERROR,RC wPhySecCurSum::%d\n", phySecNum, wPhySecCurSum); debug_infor_printf((const)"\nAxis phySecNum:%d ERROR,RC wPhySecCurSum::%d\n", phySecNum, wPhySecCurSum);
} }
} }
else if (AXIS_TYPE_STANDARD_INTERFACE == acFty)
{
if (0XAAU == dataBuf[ii])
{
ii++; /*包类型*/
phySecNum = ShortFromChar(&dataBuf[ii]); /*获取计轴区段数量*/
ii += 2U;;
wPhySecCurSum = axisToCiDataStru[systemId].SectionSum;
if ((AXIS_TO_CI_SECTION_SUM_MAX > phySecNum) && (wPhySecCurSum == phySecNum))
{
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
{ /*01B:区段占用 11B:异常占用 00B:未知*/
axisToCiDataStru[systemId].axisDataStr[axisDataStrIdx].gdRelayState = RELAY_STATE_DOWN;
}
}
else
{
;
}
if (CI_SUCCESS == retVal)
{
if (0x01U == ((dataBuf[ii] >> 2U) & 0x03U))
{
/*计轴预复位成功*/
axisToCiDataStru[systemId].axisDataStr[axisDataStrIdx].PreResetRst = RELAY_STATE_UP;
}
else
{
/*计轴预复位未执行或者执行未成功*/
axisToCiDataStru[systemId].axisDataStr[axisDataStrIdx].PreResetRst = RELAY_STATE_DOWN;
}
}
else
{
;
}
if (CI_SUCCESS == retVal)
{
chResetCmdTag = (dataBuf[ii] >> 4U);
if (PHY_SEC_RESET_CMD_FLAG_SUM_MAX >= chResetCmdTag)
{
/*计轴预复位成功*/
axisToCiDataStru[systemId].axisDataStr[axisDataStrIdx].chResetCmdTagBack = chResetCmdTag;
}
else
{
retVal = CI_ERROR;
debug_infor_printf((const)"\nAxis chResetCmdTag:%d ERROR\n", chResetCmdTag);
}
ii++;
}
else
{
;
}
if (CI_SUCCESS != retVal)
{
retVal = CI_ERROR;
break; /*解析失败,停止解析,返回失败*/
}
else
{
/*继续解析*/
}
}
}
else
{
retVal = CI_ERROR;
debug_infor_printf((const)"\nAxis phySecNum:%d ERROR,RC wPhySecCurSum::%d\n", phySecNum, wPhySecCurSum);
}
}
else
{
retVal = CI_ERROR;
debug_infor_printf((const)"\nAxis PackageType:%d ERROR\n", dataBuf[ii]);
}
}
else else
{ {
retVal = CI_ERROR; retVal = CI_ERROR;
@@ -741,7 +613,7 @@ UINT8 ParseAxisToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength, cons
else /*无效*/ else /*无效*/
{ {
retVal = CI_ERROR; retVal = CI_ERROR;
debug_infor_printf((const)"\naxleSys gal check err.axleSysId=%d,remainValidiy=%d,curCycle=%d,RSN=%d,TSN=%d,LTSN=%d\n", systemId, remainValidiy, curCycleNo, hlhtGalHead.recvOppMsgSN, hlhtGalHead.crntOwnMsgSN, hlhtGalHead.preOwnMsgSN); debug_infor_printf((const)"\naxleSys gal check err.axleSysId=%d,remainValidiy=%d,curCycle=%d,RSN=%d,TSN=%d,LTSN=%d", systemId, remainValidiy, curCycleNo, hlhtGalHead.recvOppMsgSN, hlhtGalHead.crntOwnMsgSN, hlhtGalHead.preOwnMsgSN);
} }
if (CI_SUCCESS == retVal) if (CI_SUCCESS == retVal)
@@ -752,21 +624,6 @@ UINT8 ParseAxisToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength, cons
SetHLHTHeadCtxSrcOppSN(CI_SYSTEM_TYPE_AXIS, systemId, hlhtGalHead.recvOppMsgSN); SetHLHTHeadCtxSrcOppSN(CI_SYSTEM_TYPE_AXIS, systemId, hlhtGalHead.recvOppMsgSN);
SetHLHTHeadCtxSrcOwnSN(CI_SYSTEM_TYPE_AXIS, systemId, hlhtGalHead.preOwnMsgSN); SetHLHTHeadCtxSrcOwnSN(CI_SYSTEM_TYPE_AXIS, systemId, hlhtGalHead.preOwnMsgSN);
SetHLHTHeadCtxCiRcvSN(CI_SYSTEM_TYPE_AXIS, systemId, curCycleNo); SetHLHTHeadCtxCiRcvSN(CI_SYSTEM_TYPE_AXIS, systemId, curCycleNo);
chCurSystemAreaState = GetLocalCiBackUpPattern();
dwSystemUpdateMainUseCycNum = GetSystemUpdateMainUseCycNum();
/*通用报文头校验合法*/
if ((SYSTEM_WORK_MODE_MAIN != chCurSystemAreaState)
|| ((SYSTEM_WORK_MODE_MAIN == chCurSystemAreaState) && (hlhtGalHead.recvOppMsgSN < dwSystemUpdateMainUseCycNum)))
{
/*当前备用或主用但还未回复主用时发给计轴的数据,只存储通用报文头,不更新收到*/
debug_infor_printf((const)"\nnot deal axleSysId=%d data,because chCurSystemAreaState %d or hlhtGalHead.recvOppMsgSN %d < dwSystemUpdateMainUseCycNum,\n", systemId, chCurSystemAreaState, hlhtGalHead.recvOppMsgSN);
}
else
{
axisToCiDataStru[systemId].dwLastRecvDataCycNum = curCycleNo;
}
} }
} }
else if (HLHT_HEAD_INIT == headRet) else if (HLHT_HEAD_INIT == headRet)
@@ -829,6 +686,17 @@ UINT8 ParseAxisToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength, cons
return retVal; return retVal;
} }
/*
*
* void
* NULL:
* !NULL:
*/
AxisToCiDataStruct* GetCollAxisDataStruct(void)
{
return axisToCiDataStru;
}
/* /*
* Axis数据 * Axis数据
* void * void
@@ -887,9 +755,6 @@ UINT8 PackCiToAxisData(UINT8 axisSysId)
UINT8 chOffset = 0U;/*偏移量*/ UINT8 chOffset = 0U;/*偏移量*/
UINT8 chSecResetBackState = 0U;/*区段复位状态*/ UINT8 chSecResetBackState = 0U;/*区段复位状态*/
UINT16 wIndexInAxle = 0U; /*物理区段的索引号*/ UINT16 wIndexInAxle = 0U; /*物理区段的索引号*/
UINT8 chResetCmdTagBack = 0U; /*命令标签反馈*/
UINT8 chResetCmdTag = 0U; /*命令标签*/
UINT8 chAxisLogId = 0U; /*逻辑ID*/
axisDevName = (CI_SYSTEM_TYPE_AXIS) * 256U + axisSysId; axisDevName = (CI_SYSTEM_TYPE_AXIS) * 256U + axisSysId;
if (AXIS_TO_CI_SUM_MAX > axisSysId) if (AXIS_TO_CI_SUM_MAX > axisSysId)
@@ -1189,65 +1054,6 @@ UINT8 PackCiToAxisData(UINT8 axisSysId)
; /*不继续组包*/ ; /*不继续组包*/
} }
} }
else if (AXIS_TYPE_STANDARD_INTERFACE == acFty)
{
CiToAxisDataBuffer[ii] = 0X55U;
ii++;
phyCount = axisToCiDataStru[axisSysId].SectionSum;
ShortToChar(phyCount, &CiToAxisDataBuffer[ii]);
ii += 2U;
for (jj = 0U; jj < phyCount; jj++)
{
wIndexInAxle += 1U;
phySecId = GetPhyIdByIndexInAxle(axisSysId, wIndexInAxle); /*区段ID*/
fwCycle = GetPhySecResetStartCycNum(phySecId);
chResetCmdTagBack = GetPhySecResetCmdTagBack(phySecId);
chResetCmdTag = GetPhySecResetCmdTag(phySecId);
if (0U < fwCycle)
{
if (chResetCmdTagBack == chResetCmdTag)
{
CiToAxisDataBuffer[ii] = CiToAxisDataBuffer[ii] | (0X00U);
}
else
{
resetType = GetPhySecSectionResetType(phySecId);
if (PHYSICAL_SECTION_PRE_RESET_NO == resetType)
{
CiToAxisDataBuffer[ii] = CiToAxisDataBuffer[ii] | (0X0AU);
}
else if (PHYSICAL_SECTION_PRE_RESET_YES == resetType)
{
CiToAxisDataBuffer[ii] = CiToAxisDataBuffer[ii] | (0X05U);
}
else
{
retVal = CI_ERROR;
}
}
}
else
{
/*不发送*/
CiToAxisDataBuffer[ii] = CiToAxisDataBuffer[ii] | (0X00U);
}
CiToAxisDataBuffer[ii] = CiToAxisDataBuffer[ii] | ((UINT8)(chResetCmdTag << 4U));
ii++;
if (CI_ERROR == retVal)
{
break;
}
else
{
; /*继续*/
}
}
}
else else
{ {
retVal = CI_ERROR; retVal = CI_ERROR;
@@ -1275,8 +1081,7 @@ UINT8 PackCiToAxisData(UINT8 axisSysId)
if (CI_SUCCESS == retVal)/*如果之前的操作是成功的*/ if (CI_SUCCESS == retVal)/*如果之前的操作是成功的*/
{ {
dstDevId = (((UINT16)(CI_SYSTEM_TYPE_AXIS << 8u)) | ((UINT16)axisSysId)); dstDevId = (((UINT16)(CI_SYSTEM_TYPE_AXIS << 8u)) | ((UINT16)axisSysId));
chAxisLogId = GetAxisLogId(); outnetSafeSendRtn = OutnetSafeSend(dstDevId, 1U, &CiToAxisDataBuffer[0], ii);
outnetSafeSendRtn = OutnetSafeSend(dstDevId, chAxisLogId, &CiToAxisDataBuffer[0], ii);
if (1u == outnetSafeSendRtn) if (1u == outnetSafeSendRtn)
{ /*写队列成功*/ { /*写队列成功*/
#ifdef LOGPRINT/*日志打印宏*/ #ifdef LOGPRINT/*日志打印宏*/
@@ -1499,38 +1304,4 @@ UINT8 GetInAxlePhySecIdx(const UINT8 chAxleId, const UINT16 wIndexInAxle, UINT8*
} }
return ret; return ret;
}
/*
* ID
*
* ID
* by cgh 20250903
*/
UINT8 GetAxisLogId(void)
{
UINT8 rtn = CI_ERROR; /*返回值*/
UINT8 chSystemWorkMode = 0U; /*系统工作模式*/
UINT8 chSystemWorkType = 0U; /*系统工作类型*/
chSystemWorkMode = GetLocalRcWorkMode();
chSystemWorkType = GetSystemWorkType();
if (SYSTEM_WORK_MODE_ALL == chSystemWorkType)
{
if (RC_WORK_MODE_CI == chSystemWorkMode)
{
rtn = 1U;
}
else
{
rtn = 2U;
}
}
else
{
rtn = 1U;
}
return rtn;
} }
@@ -56,7 +56,7 @@ typedef struct S_AxisDataStruct
UINT8 chDirectResetRst; /*直接复位结果*/ UINT8 chDirectResetRst; /*直接复位结果*/
UINT8 chDirectResetBack; /*直接复位命令反馈*/ UINT8 chDirectResetBack; /*直接复位命令反馈*/
UINT8 State; /*状态*/ UINT8 State; /*状态*/
UINT8 chResetCmdTagBack; /*复位命令标签反馈*/
} AxisCollDataStruct; } AxisCollDataStruct;
typedef struct S_AxisToCiDataStruct typedef struct S_AxisToCiDataStruct
@@ -68,7 +68,6 @@ typedef struct S_AxisToCiDataStruct
UINT8 SectionSum; /*区段数量: 动态字段*/ UINT8 SectionSum; /*区段数量: 动态字段*/
UINT8 PhySecIdx[PHYSICAL_SECTION_SUM_MAX]; /*物理区段在计轴区段信息结构体数组中位置数组*/ UINT8 PhySecIdx[PHYSICAL_SECTION_SUM_MAX]; /*物理区段在计轴区段信息结构体数组中位置数组*/
AxisCollDataStruct axisDataStr[CI_INCLUDE_AXIS_MAX_SUM]; /*计轴区段信息结构体数组*/ AxisCollDataStruct axisDataStr[CI_INCLUDE_AXIS_MAX_SUM]; /*计轴区段信息结构体数组*/
UINT32 dwLastRecvDataCycNum; /*最后收到数据周期号*/
}AxisToCiDataStruct; }AxisToCiDataStruct;
@@ -89,6 +88,14 @@ extern "C" {
*/ */
UINT8 ParseAxisToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength, const UINT8 systemId); UINT8 ParseAxisToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength, const UINT8 systemId);
/*
*
* void
* NULL:
* !NULL:
*/
AxisToCiDataStruct* GetCollAxisDataStruct(void);
#if 0 #if 0
/* /*
* *
@@ -133,14 +140,6 @@ UINT8 InitAxleToCiDataStru(void);
*/ */
UINT8 GetInAxlePhySecIdx(const UINT8 chAxleId, const UINT16 wIndexInAxle, UINT8* pAxleDataStrIdx); UINT8 GetInAxlePhySecIdx(const UINT8 chAxleId, const UINT16 wIndexInAxle, UINT8* pAxleDataStrIdx);
/*
* ID
*
* ID
* by cgh 20250903
*/
UINT8 GetAxisLogId(void);
#ifdef __cplusplus #ifdef __cplusplus
} }
File diff suppressed because it is too large Load Diff
+17 -142
View File
@@ -100,16 +100,15 @@
#define PHYSEC_LOCKDIRECTION_OPPST_YES ((UINT8)0xAA) /*取反*/ #define PHYSEC_LOCKDIRECTION_OPPST_YES ((UINT8)0xAA) /*取反*/
#define PHYSEC_LOCKDIRECTION_OPPST_DEFAULT ((UINT8)0xFF) /*默认值*/ #define PHYSEC_LOCKDIRECTION_OPPST_DEFAULT ((UINT8)0xFF) /*默认值*/
#define CICI_VERSION ((UINT8)30) /*cici接口版本号,每次修改接口需要升级版本号——Last Modified On 2025.11.04*/ #define CICI_VERSION ((UINT16)29) /*cici接口版本号,每次修改接口需要升级版本号——Last Modified On 2025.09.22*/
#define CICI_BEGIN_TO_STATION_LEN ((UINT16)37) /*20251104更新为HLHT头长度+应用层保温内容前6字节*/ #define CICI_BEGIN_TO_STATION_LEN ((UINT16)16) /*从开始到站场长度止 cgh增加4个字节CI-CI校验信息*/
#define CICI_CICIVERINDEX (CICI_BEGIN_TO_STATION_LEN-6U-3U) /*20251104更新后CI接口版本信息索引*/
#define CICI_ONE_SWITCH_LEN ((UINT16)13) /*一个道岔数据长度*/ #define CICI_ONE_SWITCH_LEN ((UINT16)13) /*一个道岔数据长度*/
#define CICI_ONE_PHYSEC_LEN ((UINT16)23U)/*一个物理区段数据长度*/ #define CICI_ONE_PHYSEC_LEN ((UINT16)23U)/*一个物理区段数据长度*/
#define CICI_ONE_LOGSEC_LEN ((UINT16)11)/*一个逻辑区段数据长度*/ #define CICI_ONE_LOGSEC_LEN ((UINT16)10)/*一个逻辑区段数据长度*/
#define CICI_ONE_SIGNAL_LEN ((UINT16)11)/*一个信号机数据长度*/ #define CICI_ONE_SIGNAL_LEN ((UINT16)11)/*一个信号机数据长度*/
#define CICI_ONE_PSD_LEN ((UINT16)5)/*一个屏蔽门数据长度*/ #define CICI_ONE_PSD_LEN ((UINT16)5)/*一个屏蔽门数据长度*/
#define CICI_ONE_ESB_LEN ((UINT16)4)/*一个ESB数据长度*/ #define CICI_ONE_ESB_LEN ((UINT16)4)/*一个ESB数据长度*/
#define CICI_ONE_ROUTE_LEN ((UINT16)13)/*一个进路数据长度*/ #define CICI_ONE_ROUTE_LEN ((UINT16)12)/*一个进路数据长度*/
#define CICI_ONE_PHYSEC_LOCKSTATE_LEN ((UINT16)10)/*一个物理区段锁闭状态数据长度*/ #define CICI_ONE_PHYSEC_LOCKSTATE_LEN ((UINT16)10)/*一个物理区段锁闭状态数据长度*/
#define CICI_ONE_SPKS_LEN ((UINT16)4) /*一个SPKS数据长度*/ #define CICI_ONE_SPKS_LEN ((UINT16)4) /*一个SPKS数据长度*/
#define CICI_ONE_VIRTUAL_RELAY_LEN ((UINT16)3) /*一个虚拟SPKS数据长度*/ #define CICI_ONE_VIRTUAL_RELAY_LEN ((UINT16)3) /*一个虚拟SPKS数据长度*/
@@ -126,14 +125,6 @@
#define CICI_DR_CMD_FULL ((UINT8)0xaa) /*完整子进路*/ #define CICI_DR_CMD_FULL ((UINT8)0xaa) /*完整子进路*/
#define CICI_DR_CMD_LOGIC ((UINT8)0xbb) /*逻辑子进路*/ #define CICI_DR_CMD_LOGIC ((UINT8)0xbb) /*逻辑子进路*/
#define LOCAL_CI_RC_INTER_TYPE ((UINT16)0x0306U) /*本控区CI-RC接口类型*/
#define LOCAL_RC_TO_CI_INFO_DEV_STATE ((UINT16)0x0301U) /*本控区RC发送本控区CI设备状态帧*/
#define LOCAL_CI_TO_RC_INFO_HEART ((UINT16)0x0302U) /*本控区CI发送本控区RC心跳帧*/
#define LOCAL_RCI_INFO_STATE ((UINT16)0x0303U) /*同模式联锁间接口类型*/
#define LOCAL_CI_RC_PRTCL_VER ((UINT8)0x01U) /*本控区CI-RC协议版本号*/
/*物理区段数据结构体*/ /*物理区段数据结构体*/
typedef struct S_IntconPhySecDataStruct typedef struct S_IntconPhySecDataStruct
{ {
@@ -279,15 +270,20 @@ extern "C" {
extern ToCiAreaIteCutStruct szSendCiAreaIteCut[CI_COM_CI_MAX_NUM]; extern ToCiAreaIteCutStruct szSendCiAreaIteCut[CI_COM_CI_MAX_NUM];
/* /*
* CI单帧数据 * CI数据
* UINT8* dataBuf , UINT16 dataLength ,UINT8 chSendCiId id * void
* 0: * 0:
* 1: * 1:
* @note 20220419 wqm
1dsuCheckSameLoc返回值需要变量承接
2
*/ */
UINT8 ParseCiToCiDataFrame(UINT8* dataBuf, UINT16 dataLength, UINT8 sourceId); UINT8 ParseCiToCiData(void);
/*
* CI单帧数据
* void
* 0:
* 1:
*/
UINT8 ParseCiToCiDataFrame(UINT8* dataBuf, UINT16 dataLength);
/* /*
* CI间单帧数据 * CI间单帧数据
@@ -1015,127 +1011,6 @@ UINT8 PackManufacDefPacket(UINT8* pInputBuf, UINT16* pItemLen, const UINT8 dstCi
*/ */
UINT8 ParseManufacDefPacket(const UINT8* pInputData, UINT16* pItemLen, const UINT8 srcCiId); UINT8 ParseManufacDefPacket(const UINT8* pInputData, UINT16* pItemLen, const UINT8 srcCiId);
/*
* CI到本控区RC单帧数据
* const UINT8 cRcId RC ID
* CI_ERROR 0
* CI_SUCCESS 1:
* Created By LQ 2025.11.04
*/
UINT8 PackCiToLocalRcDataFrame(const UINT8 cRcId);
/*
* CI到本控区RC单帧数据
* const UINT8* dataBuf
* const UINT16 dataLength
* const UINT8 systemId ID
* CI_ERROR 0
* CI_SUCCESS 1
* Created By LQ 2025.11.04
*/
UINT8 ParseCiToLocalRcDataFrame(const UINT8* pDataBuf, const UINT16 dataLength, const UINT8 systemId);
/*
* RC到本控区CI单帧数据
* const UINT8 cCiId CI ID
* CI_ERROR 0
* CI_SUCCESS 1
* Created By LQ 2025.11.05
*/
UINT8 PackRcToLocalCiDataFrame(const UINT8 cCiId);
/*
* RC到本控区CI单帧数据
* const UINT8* dataBuf
* const UINT16 dataLength
* const UINT8 systemId ID
* CI_ERROR 0
* CI_SUCCESS 1
* Created By LQ 2025.11.05
*/
UINT8 ParseRcToLocalCiDataFrame(const UINT8* pDataBuf, const UINT16 dataLength, const UINT8 systemId);
/*
* RC发给CI的单帧数据
* UINT8* pDataBuf
* UINT16 dataLength
* UINT8 *pErrNo
* CI_ERROR 0
* CI_SUCCESS 0
* Created By LQ 2025.11.05
*/
UINT8 ParseRcToLocalCiDataCheck(UINT8* pDataBuf, UINT16 dataLength, UINT8* pErrNo);
/*
* RC发给CI的进路数据
* const UINT8* dataBuf
* UINT16* index
* 0
* 1
* Created By LQ 2025.11.05
*/
UINT8 CheckLocalRcToCiRouteData(const UINT8* dataBuf, UINT16* index);
/*
* RC发给CI的信号机数据
* const UINT8* dataBuf
* UINT16* index
* 0
* 1
* Created By LQ 2025.11.05
*/
UINT8 CheckLocalRcToCiSignalData(const UINT8* dataBuf, UINT16* index);
/*
* RC发给CI的计轴区段数据
* const UINT8* dataBuf
* UINT16* index
* 0
* 1
* Created By LQ 2025.11.05
*/
UINT8 CheckLocalRcToCiAxisSecData(const UINT8* dataBuf, UINT16* index);
/*
* RC发给CI的逻辑区段数据
* const UINT8* dataBuf
* UINT16* index
* 0
* 1
* Created By LQ 2025.11.05
*/
UINT8 CheckLocalRcToCiLogSecData(const UINT8* dataBuf, UINT16* index);
/*
* RC发给CI的物理区段数据
* const UINT8* dataBuf
* UINT16* index
* 0
* 1
* Created By LQ 2025.11.05
*/
UINT8 CheckLocalRcToCiPhySecData(const UINT8* dataBuf, UINT16* index);
/*
* RC发给CI的屏蔽门数据
* const UINT8* dataBuf
* UINT16* index
* 0
* 1
* Created By LQ 2025.11.05
*/
UINT8 CheckLocalRcToCiPsdData(const UINT8* dataBuf, UINT16* index);
/*
* RC发给CI的雨雪数据
* const UINT8* dataBuf
* UINT16* index
* 0
* 1
* Created By LQ 2025.11.05
*/
UINT8 CheckLocalRcToCiSnowData(const UINT8* dataBuf, UINT16* index);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
+23 -113
View File
@@ -31,8 +31,7 @@
PlatHeartDataStruct RecvHeartDataStru = { 0U }; /*平台心跳帧数据结构*/ PlatHeartDataStruct RecvHeartDataStru = { 0U }; /*平台心跳帧数据结构*/
PlatGPIODataStruct RecvPlatDataStruGPIO = { 0U };/*平台0x2D帧数据结构 GPIO采集状态*/ PlatGPIODataStruct RecvPlatDataStruGPIO = { 0U };/*平台0x2D帧数据结构 GPIO采集状态*/
PlatGPIOToleranceDataStruct gPlatDataGPIOTolercance = { 0U };/*平台硬件采集故障容忍*/ PlatGPIOToleranceDataStruct gPlatDataGPIOTolercance = { 0U };/*平台硬件采集故障容忍记录数据*/
/* /*
* *
@@ -798,8 +797,7 @@ UINT8 PhySectionMaskManage(UINT8 MaskType, UINT16 DeviceId, UINT16 MaskId, UINT8
UINT8 phySecStopSteadyFlag = 0u; UINT8 phySecStopSteadyFlag = 0u;
UINT8 chPhyFree = CI_ERROR; UINT8 chPhyFree = CI_ERROR;
UINT8 gdDLline = 0u; /*线路是否采用轨道电路*/ UINT8 gdDLline = 0u; /*线路是否采用轨道电路*/
UINT8 cFuncRet = CI_ERROR; funcSwitchJumpLockDriveSwitch = GetCiFunctionSwitchConfig(FUNC_SWITCH_JUMPLOCK_DRIVE_SWITCH);
funcSwitchJumpLockDriveSwitch = GetCiFunctionSwitchConfig(FUNC_SWITCH_JUMPLOCK_DRIVE_SWITCH);
/*判断是否采用轨道电路*/ /*判断是否采用轨道电路*/
gdDLline = GetCiFunctionSwitchConfig(FUNC_CLD_GD_DIANLU_LINE); gdDLline = GetCiFunctionSwitchConfig(FUNC_CLD_GD_DIANLU_LINE);
@@ -833,22 +831,14 @@ UINT8 PhySectionMaskManage(UINT8 MaskType, UINT16 DeviceId, UINT16 MaskId, UINT8
phySecLockState = GetPhySecLockState(DeviceId); phySecLockState = GetPhySecLockState(DeviceId);
localCiType = GetLocalCiType(); localCiType = GetLocalCiType();
phyIntruSecVainCheck = PhysicalIntruSecVainCheck(DeviceId); phyIntruSecVainCheck = PhysicalIntruSecVainCheck(DeviceId);
if (((PHYSICAL_SECTION_LOCK_NORMAL == phySecLockState) || if (((PHYSICAL_SECTION_LOCK_NORMAL == phySecLockState) ||
(PHYSICAL_SECTION_LOCK_DELAY == phySecLockState) || (PHYSICAL_SECTION_LOCK_DELAY == phySecLockState) ||
(PHYSICAL_SECTION_LOCK_FAULTDELAY == phySecLockState) || (PHYSICAL_SECTION_LOCK_FAULTDELAY == phySecLockState) ||
((PHYSICAL_SECTION_LOCK_EXCEPT == phySecLockState) && (CI_TYPE_CLD == localCiType))) ((PHYSICAL_SECTION_LOCK_EXCEPT == phySecLockState) && (CI_TYPE_CLD == localCiType)))
&& (CI_SUCCESS == phyIntruSecVainCheck)) && (CI_SUCCESS == phyIntruSecVainCheck))
{/*正常锁闭或延时解锁或区故解延时,车辆段且异常锁闭也发送锁闭状态,当该区段对应的侵限条件成立,则向ZC发送未锁闭,20190308*/ {/*正常锁闭或延时解锁或区故解延时,车辆段且异常锁闭也发送锁闭状态,当该区段对应的侵限条件成立,则向ZC发送未锁闭,20190308*/
cFuncRet = PhySecLockMaskSideProtectCheck(DeviceId); /*侧防条件检查*/
if (CI_SUCCESS== cFuncRet) SetMaskValue(MaskId, dataBuf);
{
SetMaskValue(MaskId, dataBuf);
}
else
{
/*侧防条件不满足,发0未锁闭*/
}
} }
else else
{ {
@@ -1210,7 +1200,7 @@ UINT8 LogicSectionMaskManage(UINT8 MaskType, UINT16 DeviceId, UINT16 MaskId, UIN
UINT8 cLogSecLogicLockState = LOG_SECTION_LOCK_NO; /*逻辑区段逻辑锁闭状态*/ UINT8 cLogSecLogicLockState = LOG_SECTION_LOCK_NO; /*逻辑区段逻辑锁闭状态*/
UINT8 cLogSecLockDir = CI_SYSTEM_DIRECTION_NONE; /*逻辑区段锁闭方向*/ UINT8 cLogSecLockDir = CI_SYSTEM_DIRECTION_NONE; /*逻辑区段锁闭方向*/
UINT8 chLogSecBelLogRouteSum = 0U;/*逻辑区段所属逻辑进路数目*/ UINT8 chLogSecBelLogRouteSum = 0U;/*逻辑区段所属逻辑进路数目*/
UINT8 chLogSecEmergXianSu = 0U;/*逻辑区段紧急临时限速状态*/
switch (MaskType) switch (MaskType)
{ {
case MASK_TYPE_LOGICSECTION_UTOCCUPY: case MASK_TYPE_LOGICSECTION_UTOCCUPY:
@@ -1388,19 +1378,6 @@ UINT8 LogicSectionMaskManage(UINT8 MaskType, UINT16 DeviceId, UINT16 MaskId, UIN
SetMaskValue(MaskId, dataBuf); SetMaskValue(MaskId, dataBuf);
} }
break;
case MASK_TYPE_LOGICSECTION_EMERG_XIANSU:
/* 逻辑区段紧急临时限速状态 */
chLogSecEmergXianSu = GetLogSecEmergXianSu(DeviceId);
if (LOGSEC_EMERG_XS_SET_NO == chLogSecEmergXianSu)
{
/*未设置限速码位为0*/
}
else
{
/*设置码位为1*/
SetMaskValue(MaskId, dataBuf);
}
break; break;
default: default:
returnValue = CI_ERROR; returnValue = CI_ERROR;
@@ -1516,8 +1493,6 @@ UINT8 OverlapMaskManage(UINT8 MaskType, UINT16 DeviceId, UINT16 MaskId, UINT8* d
returnValue = CI_ERROR; returnValue = CI_ERROR;
} }
if (CI_SUCCESS == returnValue) if (CI_SUCCESS == returnValue)
{ {
SetMaskValue(MaskId, dataBuf); SetMaskValue(MaskId, dataBuf);
@@ -2802,9 +2777,6 @@ UINT8 OverlapValidMaskCheck(const UINT16 rtOverlapLockedId)
UINT8 devState = 0u; UINT8 devState = 0u;
UINT32 laborUnlockStartCycNum = 0u; UINT32 laborUnlockStartCycNum = 0u;
UINT8 functionId = EFUNC_OVERLAP_VALIDMASK_CHECK; UINT8 functionId = EFUNC_OVERLAP_VALIDMASK_CHECK;
UINT8 cSndSideProFuncSwitch = 0U;
cSndSideProFuncSwitch = GetSndSideProtectFuncSwitch(); /*二级侧防功能开关*/
if (0u != rtOverlapLockedId) if (0u != rtOverlapLockedId)
{ {
@@ -2825,10 +2797,6 @@ UINT8 OverlapValidMaskCheck(const UINT16 rtOverlapLockedId)
returnValue = CI_ERROR; returnValue = CI_ERROR;
break; break;
} }
else
{
/*不处理*/
}
} }
if (ii == overlapPhySecSum) if (ii == overlapPhySecSum)
@@ -2850,7 +2818,7 @@ UINT8 OverlapValidMaskCheck(const UINT16 rtOverlapLockedId)
(SWITCH_LOCK_FENGSUO_NO == GetSwitchFLockState(condSwiDataIdBuf[ii].SwitchId)) && (SWITCH_LOCK_FENGSUO_NO == GetSwitchFLockState(condSwiDataIdBuf[ii].SwitchId)) &&
(condSwiDataIdBuf[ii].SwitchPosition == GetSwitchCurPosition(condSwiDataIdBuf[ii].SwitchId))) (condSwiDataIdBuf[ii].SwitchPosition == GetSwitchCurPosition(condSwiDataIdBuf[ii].SwitchId)))
{ {
/* 保护区段所包含的道岔为:非引导总锁且未封锁且道岔位置正确,非连通位置不存在侵入,才发送码位*/ /* 保护区段所包含的道岔为:非引导总锁且未封锁且道岔位置正确,才发送码位*/
} }
else else
@@ -2861,10 +2829,6 @@ UINT8 OverlapValidMaskCheck(const UINT16 rtOverlapLockedId)
} }
} }
} }
else
{
/*不处理*/
}
if (CI_SUCCESS == returnValue) if (CI_SUCCESS == returnValue)
{ /*保护区段关联防护道岔*/ { /*保护区段关联防护道岔*/
@@ -2876,12 +2840,13 @@ UINT8 OverlapValidMaskCheck(const UINT16 rtOverlapLockedId)
ylockStatus = GetSwitchYLockState(protSwiDataIdBuf[ii].ProtectSwitchId); ylockStatus = GetSwitchYLockState(protSwiDataIdBuf[ii].ProtectSwitchId);
switchPos = GetSwitchCurPosition(protSwiDataIdBuf[ii].ProtectSwitchId); switchPos = GetSwitchCurPosition(protSwiDataIdBuf[ii].ProtectSwitchId);
fengsuoStateus = GetSwitchFLockState(protSwiDataIdBuf[ii].ProtectSwitchId); fengsuoStateus = GetSwitchFLockState(protSwiDataIdBuf[ii].ProtectSwitchId);
if ((SWITCH_LOCK_YINZONG_NO == ylockStatus) if ((SWITCH_LOCK_YINZONG_NO == ylockStatus)
&& ((((SWITCH_LOCK_STATUS_PROTECT == lockStatus) || (SWITCH_LOCK_STATUS_DAP == lockStatus)) && (protSwiDataIdBuf[ii].ProtectPosition == switchPos)) && ((SWITCH_LOCK_STATUS_PROTECT == lockStatus) || (SWITCH_LOCK_STATUS_DAP == lockStatus))
|| (FUNC_SWITCH_ON == cSndSideProFuncSwitch)) && (protSwiDataIdBuf[ii].ProtectPosition == switchPos)
&& (SWITCH_LOCK_FENGSUO_NO == fengsuoStateus)) && (SWITCH_LOCK_FENGSUO_NO == fengsuoStateus))
{ {
/* 保护区段关联防护道岔:非引导总锁且防护锁闭且(防护道岔位置正确或支持二级侧防)且未封锁,才发送码位*/ /* 保护区段关联防护道岔:非引导总锁且防护锁闭且道岔位置正确且未封锁,才发送码位*/
} }
else else
{ {
@@ -2890,10 +2855,6 @@ UINT8 OverlapValidMaskCheck(const UINT16 rtOverlapLockedId)
} }
} }
} }
else
{
/*不处理*/
}
if (CI_SUCCESS == returnValue) if (CI_SUCCESS == returnValue)
{ {
@@ -2907,10 +2868,6 @@ UINT8 OverlapValidMaskCheck(const UINT16 rtOverlapLockedId)
returnValue = CI_ERROR; returnValue = CI_ERROR;
} }
} }
else
{
/*不处理*/
}
if (CI_SUCCESS == returnValue) if (CI_SUCCESS == returnValue)
{ {
@@ -2923,10 +2880,6 @@ UINT8 OverlapValidMaskCheck(const UINT16 rtOverlapLockedId)
returnValue = CI_ERROR; returnValue = CI_ERROR;
} }
} }
else
{
/*不处理*/
}
/*检查保护区段关联防淹门状态*/ /*检查保护区段关联防淹门状态*/
if (CI_SUCCESS == returnValue) if (CI_SUCCESS == returnValue)
@@ -2936,16 +2889,7 @@ UINT8 OverlapValidMaskCheck(const UINT16 rtOverlapLockedId)
{ {
SetErrorData(functionId, CI_DEVICE_TYPE_FLOODGATE, devId, devStateType, devState, ESEND_LEVEL_ZERO); SetErrorData(functionId, CI_DEVICE_TYPE_FLOODGATE, devId, devStateType, devState, ESEND_LEVEL_ZERO);
} }
else
{
/*不处理*/
}
} }
else
{
/*不处理*/
}
/*检查人工解锁保护区段是否处于倒计时过程中,倒计时过程中发ZC,LEU未建立*/ /*检查人工解锁保护区段是否处于倒计时过程中,倒计时过程中发ZC,LEU未建立*/
if (CI_SUCCESS == returnValue) if (CI_SUCCESS == returnValue)
{ {
@@ -2954,14 +2898,6 @@ UINT8 OverlapValidMaskCheck(const UINT16 rtOverlapLockedId)
{ {
returnValue = CI_ERROR; returnValue = CI_ERROR;
} }
else
{
/*不处理*/
}
}
else
{
/*不处理*/
} }
/*检查照查继电器状态*/ /*检查照查继电器状态*/
@@ -2979,28 +2915,6 @@ UINT8 OverlapValidMaskCheck(const UINT16 rtOverlapLockedId)
returnValue = CI_ERROR; returnValue = CI_ERROR;
} }
} }
else
{
/*不处理*/
}
if (CI_SUCCESS == returnValue)
{
if (FUNC_SWITCH_ON == cSndSideProFuncSwitch)
{
/*仅在二级侧防开关配置为支持二级侧防时才进行侧防条件检查*/
returnValue = OlapSideProtectConditionCheck(rtOverlapLockedId, 0U, 0U);/*检查保护区段侧防条件*/
}
else
{
/*不处理*/
}
}
else
{
/*不处理*/
}
} }
else else
{ {
@@ -3249,22 +3163,22 @@ void PackCiToCimCommData(void)
/*相邻CI系统通信状态*/ /*相邻CI系统通信状态*/
deviceSum = GetCiTransmitSpecifySysDevSum(CI_SYSTEM_TYPE_RCI); deviceSum = GetCiTransmitSpecifySysDevSum(CI_SYSTEM_TYPE_CI);
pDeviceIdBuf = GetCiTransmitSpecifySysDevBuf(CI_SYSTEM_TYPE_RCI); pDeviceIdBuf = GetCiTransmitSpecifySysDevBuf(CI_SYSTEM_TYPE_CI);
if ((NULL != pDeviceIdBuf) && (0u != deviceSum)) if ((NULL != pDeviceIdBuf) && (0u != deviceSum))
{ {
for (j = 0u; j < deviceSum; j++) for (j = 0u; j < deviceSum; j++)
{ {
transmitState = Get2oo2CiAndOtherSysCommState(CI_SYSTEM_TYPE_RCI, j); transmitState = Get2oo2CiAndOtherSysCommState(CI_SYSTEM_TYPE_CI, j);
/*填ID*/ /*填ID*/
transmitDevSum++; transmitDevSum++;
ciToCimDataBuffer[i++] = CI_SYSTEM_TYPE_RCI; ciToCimDataBuffer[i++] = CI_SYSTEM_TYPE_CI;
ciToCimDataBuffer[i++] = pDeviceIdBuf[j]; ciToCimDataBuffer[i++] = pDeviceIdBuf[j];
/*组相邻RC/CI通信冗余周期*/ /*组相邻RC/CI通信冗余周期*/
dwRecvCycNum = GetCiTransmitRecvDataCycNum(cLocalCiId, CI_SYSTEM_TYPE_RCI, pDeviceIdBuf[j]); dwRecvCycNum = GetCiTransmitRecvDataCycNum(cLocalCiId, CI_SYSTEM_TYPE_CI, pDeviceIdBuf[j]);
if ((0U != dwRecvCycNum) && (UINT8_MAX > (dwCurCycNum - dwRecvCycNum))) if ((0U != dwRecvCycNum) && (UINT8_MAX > (dwCurCycNum - dwRecvCycNum)))
{ {
ciToCimDataBuffer[i] = (UINT8)(dwCurCycNum - dwRecvCycNum); /*组通信设备冗余周期*/ ciToCimDataBuffer[i] = (UINT8)(dwCurCycNum - dwRecvCycNum); /*组通信设备冗余周期*/
@@ -4029,9 +3943,7 @@ void PackCiToCimDeviceData(void)
PhysicalSectionDataStruct* pPhysicalData = NULL; PhysicalSectionDataStruct* pPhysicalData = NULL;
WashMachineDataStruct* pWashMachineData = NULL; WashMachineDataStruct* pWashMachineData = NULL;
GaragedoorDataStruct* pGrageDoorData = NULL; GaragedoorDataStruct* pGrageDoorData = NULL;
GaragedoorDataStructCC* pGrageDoorDataCC = NULL;
FloodGateDataStruct* pFloodGateData = NULL; FloodGateDataStruct* pFloodGateData = NULL;
FloodGateDataStructCC* pFloodGateDataCC = NULL;
UINT8 cRcWorkMode = GetLocalRcWorkMode(); UINT8 cRcWorkMode = GetLocalRcWorkMode();
UINT8 chSwitchJichaState = 0U; UINT8 chSwitchJichaState = 0U;
UINT8 chSwitchCurPos = 0U; UINT8 chSwitchCurPos = 0U;
@@ -4282,7 +4194,6 @@ void PackCiToCimDeviceData(void)
/*打印车库门数据*/ /*打印车库门数据*/
deviceNum = GetGaragedoorSum(); deviceNum = GetGaragedoorSum();
pGrageDoorData = GetGaragedoorData(); pGrageDoorData = GetGaragedoorData();
pGrageDoorDataCC = GetGaragedoorDataCC();
ShortToChar(deviceNum, &ciToCimDataBuffer[ii]);/*车库门数量*/ ShortToChar(deviceNum, &ciToCimDataBuffer[ii]);/*车库门数量*/
ii += 2u; ii += 2u;
for (jj = 0u; jj < deviceNum; jj++) for (jj = 0u; jj < deviceNum; jj++)
@@ -4296,7 +4207,7 @@ void PackCiToCimDeviceData(void)
ii += 2u; ii += 2u;
ciToCimDataBuffer[ii++] = pGrageDoorData[deviceId].GaragedoorState; /*车库门状态 (动态字段)*/ ciToCimDataBuffer[ii++] = pGrageDoorData[deviceId].GaragedoorState; /*车库门状态 (动态字段)*/
ciToCimDataBuffer[ii++] = pGrageDoorData[deviceId].GaragedoorAllowCloseFlag; /*车库门允许关门标志 ZC*/ ciToCimDataBuffer[ii++] = pGrageDoorData[deviceId].GaragedoorAllowCloseFlag; /*车库门允许关门标志 ZC*/
ciToCimDataBuffer[ii++] = pGrageDoorDataCC[deviceId].GDAllowCloseFlagIVOC; /*车库门允许关门标志 IVOC*/ ciToCimDataBuffer[ii++] = pGrageDoorData[deviceId].GDAllowCloseFlagIVOC; /*车库门允许关门标志 IVOC*/
ciToCimDataBuffer[ii++] = pGrageDoorData[deviceId].GaragedoorModeState; /*车库门模式状态*/ ciToCimDataBuffer[ii++] = pGrageDoorData[deviceId].GaragedoorModeState; /*车库门模式状态*/
ciToCimDataBuffer[ii++] = pGrageDoorData[deviceId].GaragedoorFaultState; /*车库门故障状态*/ ciToCimDataBuffer[ii++] = pGrageDoorData[deviceId].GaragedoorFaultState; /*车库门故障状态*/
ciToCimDataBuffer[ii++] = pGrageDoorData[deviceId].GaragedoorPangLuState; /*车库门旁路状态*/; ciToCimDataBuffer[ii++] = pGrageDoorData[deviceId].GaragedoorPangLuState; /*车库门旁路状态*/;
@@ -4304,7 +4215,7 @@ void PackCiToCimDeviceData(void)
ciToCimDataBuffer[ii++] = pGrageDoorData[deviceId].cmdProcessState; /* 命令处理状态 */ ciToCimDataBuffer[ii++] = pGrageDoorData[deviceId].cmdProcessState; /* 命令处理状态 */
LongToChar(pGrageDoorData[deviceId].waiteZCResponseStartCycNum, &ciToCimDataBuffer[ii]);/* 等待ZC反馈开始时间 */ LongToChar(pGrageDoorData[deviceId].waiteZCResponseStartCycNum, &ciToCimDataBuffer[ii]);/* 等待ZC反馈开始时间 */
ii += 4u; ii += 4u;
LongToChar(pGrageDoorDataCC[deviceId].waiteIVOCResponseStartCycNum, &ciToCimDataBuffer[ii]);/* 等待IVOC反馈开始时间 */ LongToChar(pGrageDoorData[deviceId].waiteIVOCResponseStartCycNum, &ciToCimDataBuffer[ii]);/* 等待IVOC反馈开始时间 */
ii += 4u; ii += 4u;
LongToChar(pGrageDoorData[deviceId].GaragedoorOpenStartCycNum, &ciToCimDataBuffer[ii]);/* 车库门打开开始周期 */ LongToChar(pGrageDoorData[deviceId].GaragedoorOpenStartCycNum, &ciToCimDataBuffer[ii]);/* 车库门打开开始周期 */
ii += 4u; ii += 4u;
@@ -4316,7 +4227,6 @@ void PackCiToCimDeviceData(void)
/*打印防淹门数据*/ /*打印防淹门数据*/
deviceNum = GetFloodGateCurSum(); deviceNum = GetFloodGateCurSum();
pFloodGateData = GetFloodGateData(); pFloodGateData = GetFloodGateData();
pFloodGateDataCC = GetFloodGateDataCC();
ShortToChar(deviceNum, &ciToCimDataBuffer[ii]);/*防淹门数量*/ ShortToChar(deviceNum, &ciToCimDataBuffer[ii]);/*防淹门数量*/
ii += 2u; ii += 2u;
for (jj = 0u; jj < deviceNum; jj++) for (jj = 0u; jj < deviceNum; jj++)
@@ -4344,9 +4254,9 @@ void PackCiToCimDeviceData(void)
ciToCimDataBuffer[ii++] = pFloodGateData[deviceId].CurAgreeCloseStateOut; /* 当前同意关门输出状态(动态字段)*/ ciToCimDataBuffer[ii++] = pFloodGateData[deviceId].CurAgreeCloseStateOut; /* 当前同意关门输出状态(动态字段)*/
LongToChar(pFloodGateData[deviceId].CurFloodGateDelayCloseStartCyc, &ciToCimDataBuffer[ii]);/* 防淹门接近区段占压延时关门开始时间 */ LongToChar(pFloodGateData[deviceId].CurFloodGateDelayCloseStartCyc, &ciToCimDataBuffer[ii]);/* 防淹门接近区段占压延时关门开始时间 */
ii += 4u; ii += 4u;
ciToCimDataBuffer[ii++] = pFloodGateDataCC[deviceId].FloodGateCloseApplyIvocSum; /*防淹门关门申请列车数量*/ ciToCimDataBuffer[ii++] = pFloodGateData[deviceId].FloodGateCloseApplyIvocSum; /*防淹门关门申请列车数量*/
ciToCimDataBuffer[ii++] = pFloodGateDataCC[deviceId].FloodGateCloseAnsIvocSum; /*防淹门关门允许,列车回复数量*/ ciToCimDataBuffer[ii++] = pFloodGateData[deviceId].FloodGateCloseAnsIvocSum; /*防淹门关门允许,列车回复数量*/
ciToCimDataBuffer[ii++] = pFloodGateDataCC[deviceId].FloodGateAccessUTFlag; /*防淹门接近区段是否有非通信车标志*/ ciToCimDataBuffer[ii++] = pFloodGateData[deviceId].FloodGateAccessUTFlag; /*防淹门接近区段是否有非通信车标志*/
} }
@@ -5158,7 +5068,7 @@ void PackCiToCimFlyProtectData(void)
pFlyData = GetFlyProtectData(chIndex); pFlyData = GetFlyProtectData(chIndex);
wTrainId = pFlyData->wTrainId; wTrainId = pFlyData->wTrainId;
TrainFlyAxis = pFlyData->flyProtectSecCnt; TrainFlyAxis = pFlyData->flyProtectSecCnt;
(void)dquDevName2HlhtId((UINT16)(CI_SYSTEM_TYPE_IVOC * 256U) + wTrainId, 0U, &dwTrainId); /*两字节列车ID转换为4字节互联互通ID*/ (void)dquDevName2HlhtId((UINT16)(CI_SYSTEM_TYPE_VOBC * 256U) + wTrainId, 0U, &dwTrainId); /*两字节列车ID转换为4字节互联互通ID*/
LongToChar(dwTrainId, &ciToCimDataBuffer[ii]); /* 列车ID */ LongToChar(dwTrainId, &ciToCimDataBuffer[ii]); /* 列车ID */
ii += 4u; ii += 4u;
@@ -5226,8 +5136,8 @@ void PackCiToCimCollDiffData(void)
{/*不处理*/ {/*不处理*/
} }
(void)debug_infor_printf((const)"IO Compare Diff OCnum = %d\n", gDiffDataOcNum); debug_infor_printf((const)"IO Compare Diff OCnum = %d\n", gDiffDataOcNum);
(void)debug_out_array(0xAA, ciToCimDataBuffer, ii); debug_out_array(0xAA, ciToCimDataBuffer, ii);
/*发送维护机*/ /*发送维护机*/
(void)DarkInfoPack(CIM_INFO_IO_COLL_DIFF_ALARM, ciToCimDataBuffer, ii); (void)DarkInfoPack(CIM_INFO_IO_COLL_DIFF_ALARM, ciToCimDataBuffer, ii);
@@ -45,7 +45,6 @@
#include "../DataManage/PlatDataManage.h" #include "../DataManage/PlatDataManage.h"
#include "../IO/DeviceRelayDataProcess.h" #include "../IO/DeviceRelayDataProcess.h"
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
@@ -62,7 +61,6 @@ extern "C" {
extern PlatHeartDataStruct RecvHeartDataStru; extern PlatHeartDataStruct RecvHeartDataStru;
extern PlatGPIODataStruct RecvPlatDataStruGPIO; extern PlatGPIODataStruct RecvPlatDataStruGPIO;
extern PlatGPIOToleranceDataStruct gPlatDataGPIOTolercance; extern PlatGPIOToleranceDataStruct gPlatDataGPIOTolercance;
/* /*
* *
* UINT8 MaskType, * UINT8 MaskType,
@@ -2618,7 +2618,7 @@ UINT8 PackTiocToGateWayData(const UINT8 deviceId, const UINT8 targetDevType)
pFlyData = GetFlyProtectData(chIndex); pFlyData = GetFlyProtectData(chIndex);
wTrainId = pFlyData->wTrainId; wTrainId = pFlyData->wTrainId;
TrainFlyAxis = pFlyData->flyProtectSecCnt; TrainFlyAxis = pFlyData->flyProtectSecCnt;
chRtn = dquDevName2HlhtId((UINT16)(CI_SYSTEM_TYPE_IVOC * 256U) + wTrainId, 0U, &dwTrainId); /*两字节列车ID转换为4字节互联互通ID*/ chRtn = dquDevName2HlhtId((UINT16)(CI_SYSTEM_TYPE_VOBC * 256U) + wTrainId, 0U, &dwTrainId); /*两字节列车ID转换为4字节互联互通ID*/
if (chRtn == CI_SUCCESS) if (chRtn == CI_SUCCESS)
{/*互联互通ID查询成功*/ {/*互联互通ID查询成功*/
LongToChar(dwTrainId, &szToGateWayDataBuf[ii]); /* 列车ID */ LongToChar(dwTrainId, &szToGateWayDataBuf[ii]); /* 列车ID */
@@ -166,7 +166,7 @@ UINT8 ParseIteToCiDataFrame(const UINT8* pDataBuf, const UINT16 dataLength, cons
wIteName = (CI_SYSTEM_TYPE_ITE) * 256U + systemId; wIteName = (CI_SYSTEM_TYPE_ITE) * 256U + systemId;
cLocalCiId = GetSystemParaLocalCiId(); cLocalCiId = GetSystemParaLocalCiId();
wCiName = (CI_SYSTEM_TYPE_RCI) * 256U + cLocalCiId; wCiName = (CI_SYSTEM_TYPE_CI) * 256U + cLocalCiId;
/*解析通用消息包头*/ /*解析通用消息包头*/
strHlhtGalHead.devInterInfoType = ShortFromChar(&pDataBuf[ii]); strHlhtGalHead.devInterInfoType = ShortFromChar(&pDataBuf[ii]);
@@ -383,7 +383,7 @@ UINT8 PackCiToIteDataFrame(const UINT8 iteId, const UINT16 iteLogId)
{ {
/*首先获取组包时所需的信息,获取成功才继续组包*/ /*首先获取组包时所需的信息,获取成功才继续组包*/
cLocalCiId = GetSystemParaLocalCiId(); cLocalCiId = GetSystemParaLocalCiId();
cFuncRet = dquDevName2HlhtId(((UINT16)CI_SYSTEM_TYPE_RCI * 256U + cLocalCiId), 0U, &dwCiEtcsId); cFuncRet = dquDevName2HlhtId(((UINT16)CI_SYSTEM_TYPE_CI * 256U + cLocalCiId), 0U, &dwCiEtcsId);
cFuncRet &= dquDevName2HlhtId(((UINT16)CI_SYSTEM_TYPE_ITE * 256U) + iteId, iteLogId, &dwIteEtcsId); cFuncRet &= dquDevName2HlhtId(((UINT16)CI_SYSTEM_TYPE_ITE * 256U) + iteId, iteLogId, &dwIteEtcsId);
cFuncRet &= GetCiEmapCheckVer(cLocalCiId, &dwEmapCheckVer, CI_SYSTEM_TYPE_ITE); cFuncRet &= GetCiEmapCheckVer(cLocalCiId, &dwEmapCheckVer, CI_SYSTEM_TYPE_ITE);
pstrHlhtHeadCtx = GetIteHLHTHeadCtx(iteId, iteLogId); /*获取指定ITE互联互通报文头上下文数据*/ pstrHlhtHeadCtx = GetIteHLHTHeadCtx(iteId, iteLogId); /*获取指定ITE互联互通报文头上下文数据*/
+69 -229
View File
@@ -206,13 +206,6 @@ UINT8 ParseOtherSysToCiData(void)
UINT8 isBreak = 0u; /*退出遍历*/ UINT8 isBreak = 0u; /*退出遍历*/
UINT16 wTiocRcvAtsGtwyDevTypeId = 0U; UINT16 wTiocRcvAtsGtwyDevTypeId = 0U;
UINT8 errorNO_Type = 0u; /*CI间接口校验数据故障码*/ UINT8 errorNO_Type = 0u; /*CI间接口校验数据故障码*/
UINT8 cLocalDevType = 0U; /*本地设备类型*/
UINT8 cLocalCiId = 0U; /*本地ID*/
UINT8 cWorkMode = 0U;/*当前工作模式*/
UINT8 chCurSystemAreaState = 0U; /*当前系统区域状态*/
cWorkMode = GetLocalRcWorkMode();
curSysCount = MSCP_GetSysCount(); curSysCount = MSCP_GetSysCount();
wTiocRcvAtsGtwyDevTypeId = GetTiocTrnsmtGtwyDevTypeId(); wTiocRcvAtsGtwyDevTypeId = GetTiocTrnsmtGtwyDevTypeId();
@@ -239,20 +232,36 @@ UINT8 ParseOtherSysToCiData(void)
debug_out_array(0x11, data, (UINT16)dataLen); debug_out_array(0x11, data, (UINT16)dataLen);
#endif/*平台打印结束*/ #endif/*平台打印结束*/
#endif/*日志打印结束*/ #endif/*日志打印结束*/
ocId = GetCiIdByOcId(devId); ocId = (UINT8)GetCiIdByOcId(devId);
chLocalCiId = GetSystemParaLocalCiId(); chLocalCiId = GetSystemParaLocalCiId();
if (ocId == chLocalCiId)/*如果oc id所属的ci id为本机联锁id*/ if (ocId == chLocalCiId)/*如果oc id所属的ci id为本机联锁id*/
{ {
oc2ciParseResult = ParseOcToCiDataFrame(data, (UINT16)dataLen, devId); oc2ciParseResult = ParseOcToCiDataFrame(data, (UINT16)dataLen, devId);
if (CI_SUCCESS == oc2ciParseResult) if (CI_CHECK_LEN_ERROR == oc2ciParseResult)
{ {
/*解析成功,在ProcessOcToCiDat中处理数据(因RC备用时依赖CI同步数据)*/ /*长度校验错误处理,把此OC原始缓存所有设备状态导向安全*/
debug_infor_printf((const)"\nOC %d DataCheck succeed\n", devId); /* 长度校验失败处理:
* 1. OC原始数据缓存设备状态DI板卡状态DO板卡状态置安全态
* 2. CI与此OC通信周期不更新CI OC通信中断最大容忍周期数
*/
ResetOcOriginalState(devId);
ConvertOcOriginDataToPtData();/*把解析的OC板卡数据转换为OC点位数据*/
ConvertOcOriginDataToOcSigSwDev();/*把解析的OC设备数据转换为OC 信号机和 OC 道岔设备数据和OC轨道区段数据*/
debug_infor_printf((const)"OC Id %d len check ERROR.", devId);
}
else if (CI_SUCCESS == oc2ciParseResult)
{/*解析成功,转换OC板卡数据*/
ConvertOcOriginDataToPtData();/*把解析的OC板卡数据转换为OC点位数据*/
ConvertOcOriginDataToOcSigSwDev();/*把解析的OC设备数据转换为OC 信号机和 OC 道岔设备数据和OC轨道区段数据*/
debug_infor_printf((const)"\nconvert succeed\n");
} }
else else
{ {
/*其它值,什么也不做*/ /*其它值,清除缓存数据*/
/*解析OC数据错误处理,未同步数据,在ProcessOcToCiDat中会通信中断*/ ResetOcOriginalState(devId);
ConvertOcOriginDataToPtData();/*把解析的OC板卡数据转换为OC点位数据*/
ConvertOcOriginDataToOcSigSwDev();/*把解析的OC设备数据转换为OC 信号机和 OC 道岔设备数据和OC轨道区段数据*/
debug_infor_printf((const)"OC Id %d parse ERROR.", devId);
} }
} }
else else
@@ -274,17 +283,8 @@ UINT8 ParseOtherSysToCiData(void)
{ {
debug_infor_printf((const)"\nATS_RECV:%d", dataLen); debug_infor_printf((const)"\nATS_RECV:%d", dataLen);
checkResult = ParseAtsOrXianDiToCiDataFrame(data, (UINT16)dataLen, CI_SYSTEM_TYPE_ATS, devId); checkResult = ParseAtsOrXianDiToCiDataFrame(data, (UINT16)dataLen);
(void)DarkInfoPack(CIM_INFO_ATS_TO_RCI_DATA, data, (UINT16)dataLen);
chCurSystemAreaState = GetLocalCiBackUpPattern();
if (SYSTEM_WORK_MODE_MAIN == chCurSystemAreaState)
{
(void)DarkInfoPack(CIM_INFO_ATS_TO_RCI_DATA, data, (UINT16)dataLen);
}
else
{
; /*非主系不组包*/
}
} }
else else
{ {
@@ -312,18 +312,9 @@ UINT8 ParseOtherSysToCiData(void)
#endif/*平台打印结束*/ #endif/*平台打印结束*/
#endif #endif
checkResult = ParseAtsOrXianDiToCiDataFrame(data, (UINT16)dataLen, CI_SYSTEM_TYPE_XIANDI, devId); checkResult = ParseAtsOrXianDiToCiDataFrame(data, (UINT16)dataLen);
chCurSystemAreaState = GetLocalCiBackUpPattern(); (void)DarkInfoPack(CIM_INFO_ATS_TO_RCI_DATA, data, (UINT16)dataLen);
if (SYSTEM_WORK_MODE_MAIN == chCurSystemAreaState)
{
(void)DarkInfoPack(CIM_INFO_ATS_TO_RCI_DATA, data, (UINT16)dataLen);
}
else
{
; /*非主系不组包*/
}
if (CI_ERROR == checkResult) if (CI_ERROR == checkResult)
{ {
debug_infor_printf((const)"parse xiandi id %d error.", devId); debug_infor_printf((const)"parse xiandi id %d error.", devId);
@@ -333,7 +324,6 @@ UINT8 ParseOtherSysToCiData(void)
} }
break; break;
case CI_SYSTEM_TYPE_CI: case CI_SYSTEM_TYPE_CI:
case CI_SYSTEM_TYPE_RC:
/*解析CI数据*/ /*解析CI数据*/
#ifdef LOGPRINT/*日志打印宏*/ #ifdef LOGPRINT/*日志打印宏*/
#ifdef PLATFORM_2OO2/*2oo2平台打印*/ #ifdef PLATFORM_2OO2/*2oo2平台打印*/
@@ -342,108 +332,51 @@ UINT8 ParseOtherSysToCiData(void)
#endif/*平台打印结束*/ #endif/*平台打印结束*/
#endif #endif
cLocalDevType = Get2oo2SheBeiType(); /*判断是否是同一条线路的联锁,不同线路联锁使用互联互通联锁接口,同一条线路使用自家联锁接口*/
cLocalCiId = GetSystemParaLocalCiId(); sameLineCi = IsSameLineCI(devId, GetSystemParaLocalCiId());
startLockFlag = GetStartLockFlag(); if (SAME_LINE_YES == sameLineCi) /*同线*/
if (devType == cLocalDevType)
{ {
/*解析RC间或CI间数据*/ startLockFlag = GetStartLockFlag();
/*判断是否是同一条线路的联锁,不同线路联锁使用互联互通联锁接口,同一条线路使用自家联锁接口*/ if (CI_START_LOCK_NO == startLockFlag)
sameLineCi = IsSameLineCI(devId, cLocalCiId); {
if (SAME_LINE_YES == sameLineCi) /*同线*/ checkResult = ParseCiToCiDataCheck(data, (UINT16)dataLen, &errorNO_Type); /*相邻CI间数据传输的校验*/
{ if (CI_SUCCESS != checkResult)
if (CI_START_LOCK_NO == startLockFlag)
{ {
checkResult = ParseCiToCiDataCheck(data, (UINT16)dataLen, &errorNO_Type); /*相邻CI间数据传输的校验*/ debug_infor_printf((const)"check parse ci step %d error", errorNO_Type);
if (CI_SUCCESS != checkResult) }
else
{
checkResult = ParseCiToCiDataFrame(data, (UINT16)dataLen);
if (CI_SUCCESS != checkResult) /*错误*/
{ {
debug_infor_printf((const)"check parse ci step %d error", errorNO_Type); debug_infor_printf((const)"parse ci id %d error", devId);
} }
else else
{ {
checkResult = ParseCiToCiDataFrame(data, (UINT16)dataLen, devId);
if (CI_SUCCESS != checkResult) /*错误*/
{
debug_infor_printf((const)"parse ci id %d error", devId);
}
else
{
}
} }
} }
else
{
}
}
else if (SAME_LINE_NO == sameLineCi) /*不同线*/
{
checkResult = ParseCiToCiDataFrameHLHT(data, (UINT16)dataLen, devId);
if (CI_ERROR == checkResult) /*错误*/
{
debug_infor_printf((const)"parse hlht ci id %d error", devId);
}
else
{
}
} }
else else
{ {
debug_infor_printf((const)"ci id %d sameLineCi:%d error", devId, sameLineCi); }
}
else if (SAME_LINE_NO == sameLineCi) /*不同线*/
{
checkResult = ParseCiToCiDataFrameHLHT(data, (UINT16)dataLen, devId);
if (CI_ERROR == checkResult) /*错误*/
{
debug_infor_printf((const)"parse hlht ci id %d error", devId);
}
else
{
} }
} }
else else
{ {
if (CI_START_LOCK_NO == startLockFlag) debug_infor_printf((const)"ci id %d sameLineCi:%d error", devId, sameLineCi);
{
/*解析CI-RC间数据*/
if ((CI_SYSTEM_TYPE_CI == cLocalDevType) && (CI_SYSTEM_TYPE_RC == devType))
{
/*相邻CI间数据传输的校验*/
checkResult = ParseRcToLocalCiDataCheck(data, (UINT16)dataLen, &errorNO_Type);
if (CI_SUCCESS != checkResult)
{
debug_infor_printf((const)"ParseRcToLocalCiDataCheck: Step %d Error", errorNO_Type);
}
else
{
/*当前为CI,解析本控区RC发送的数据*/
checkResult = ParseRcToLocalCiDataFrame(data, (UINT16)dataLen, cLocalCiId);
if (CI_SUCCESS == checkResult)
{
/*不处理*/
}
else
{
debug_infor_printf((const)"\nParseRcToLocalCiDataFrame Error");
}
}
}
else if ((CI_SYSTEM_TYPE_RC == cLocalDevType) && (CI_SYSTEM_TYPE_CI == devType))
{
/*当前为RC,解析本控区CI发送的数据*/
checkResult = ParseCiToLocalRcDataFrame(data, (UINT16)dataLen, cLocalCiId);
if (CI_SUCCESS == checkResult)
{
/*不处理*/
}
else
{
debug_infor_printf((const)"\nParseCiToLocalRcDataFrame Error");
}
}
else
{
/*异常分支,不处理*/
}
}
else
{
/*未上电,不处理*/
}
} }
break; break;
case CI_SYSTEM_TYPE_ZC: case CI_SYSTEM_TYPE_ZC:
@@ -477,47 +410,16 @@ UINT8 ParseOtherSysToCiData(void)
break; break;
case CI_SYSTEM_TYPE_VOBC: /*解析VOBC数据*/ case CI_SYSTEM_TYPE_VOBC: /*解析VOBC数据*/
debug_infor_printf((const)"\nVOBC_RECV:%d", (UINT16)dataLen);
if (RC_WORK_MODE_TIOC == cWorkMode)
{
debug_infor_printf((const)"\nRC_VOBC_CBTC_RECV:%d", (UINT16)dataLen);
debug_out_array(0xAA, data, (UINT16)dataLen);
/*车车模式下的VOBC模式*/
checkResult = ParseVobcToRcDataCC(data, (UINT16)dataLen, devId, srcDevLogicId);
if (CI_ERROR == checkResult) /*错误*/
{
debug_infor_printf((const)"parse vobc id %d,logic id %d error", devId, srcDevLogicId);
}
else
{/*无处理*/
}
}
else
{
debug_infor_printf((const)"\nVOBC_CBTC_RECV:%d", (UINT16)dataLen);
debug_out_array(0xAA, data, (UINT16)dataLen);
/*CI模式下用既有函数*/
checkResult = ParseVobcToCiDataFrame(data, (UINT16)dataLen, devId, srcDevLogicId);
if (CI_ERROR == checkResult) /*错误*/
{
debug_infor_printf((const)"parse vobc id %d,logic id %d error", devId, srcDevLogicId);
}
else
{/*无处理*/
}
}
break;
case CI_SYSTEM_TYPE_IVOC: /*解析IVOC数据*/
debug_infor_printf((const)"\nVOBC_PBTACS_RECV:%d", (UINT16)dataLen);
debug_out_array(0xAA, data, (UINT16)dataLen); debug_out_array(0xAA, data, (UINT16)dataLen);
checkResult = ParseIvocToRcDataFrame(data, (UINT16)dataLen, devId, srcDevLogicId); checkResult = ParseVobcToCiDataFrame(data, (UINT16)dataLen, devId, srcDevLogicId);
if (CI_ERROR == checkResult) /*错误*/ if (CI_ERROR == checkResult) /*错误*/
{ {
debug_infor_printf((const)"parse ivoc id %d,logic id %d error", devId, srcDevLogicId); debug_infor_printf((const)"parse vobc id %d,logic id %d error", devId, srcDevLogicId);
} }
else else
{/*无处理*/ {
} }
break; break;
@@ -720,18 +622,10 @@ UINT8 PackCiToOtherSysData(void)
UINT32 fsfbOutQueIdx = 0u; /*fsfb输出队列位置*/ UINT32 fsfbOutQueIdx = 0u; /*fsfb输出队列位置*/
UINT16 fsfbOutQueFramLen = 0u; /*fsfb输出队列帧长度*/ UINT16 fsfbOutQueFramLen = 0u; /*fsfb输出队列帧长度*/
UINT8 fsfbBtmHead[5] = { 0 }; /*fsfb btm帧头*/ UINT8 fsfbBtmHead[5] = { 0 }; /*fsfb btm帧头*/
UINT8 chTiocRcvAtsGtwyDevTypeId = 0U; UINT8 chTiocRcvAtsGtwyDevTypeId = 0U;
unsigned long long cost[20] = { 0U }; unsigned long long cost[20] = { 0U };
UINT32 dwFlyProtectOverCyc = GetFlyProtectOverCyc(); UINT32 dwFlyProtectOverCyc = GetFlyProtectOverCyc();
UINT8 chSendXiandiorAtsMaskBuf[CI_TO_ATS_DATA_LEN_MAX] = { 0U }; /*发送给现地或ATS的码位数据*/
UINT8 cSysType = 0U; /*系统类型*/
UINT8 cLocalCiType = 0U;
UINT8 cLocalCiId = 0U; /*本地ID*/
UINT8 cLocalDevType = 0U; /*本地设备类型*/
UINT8 cStartLockFlag = 0U; /*上电解锁标志*/
UINT8 cRcWorkMode = 0U;
cRcWorkMode = GetLocalRcWorkMode();
chTiocRcvAtsGtwyDevTypeId = (UINT8)GetTiocTrnsmtGtwyDevTypeId(); chTiocRcvAtsGtwyDevTypeId = (UINT8)GetTiocTrnsmtGtwyDevTypeId();
curSysCount = MSCP_GetSysCount(); curSysCount = MSCP_GetSysCount();
@@ -740,8 +634,6 @@ UINT8 PackCiToOtherSysData(void)
if(0U == dwFlyProtectOverCyc) if(0U == dwFlyProtectOverCyc)
{ {
/*组码位信息*/
(void)MaskPack(CI_SYSTEM_TYPE_XIANDI, chSendXiandiorAtsMaskBuf);
/*****组现地数据*****/ /*****组现地数据*****/
deviceSum = GetCiTransmitSpecifySysDevSum(CI_SYSTEM_TYPE_XIANDI); /*获取通信现地设备总数*/ deviceSum = GetCiTransmitSpecifySysDevSum(CI_SYSTEM_TYPE_XIANDI); /*获取通信现地设备总数*/
deviceIdBuf = GetCiTransmitSpecifySysDevBuf(CI_SYSTEM_TYPE_XIANDI); /*获取通信现地设备ID数组*/ deviceIdBuf = GetCiTransmitSpecifySysDevBuf(CI_SYSTEM_TYPE_XIANDI); /*获取通信现地设备ID数组*/
@@ -756,7 +648,7 @@ UINT8 PackCiToOtherSysData(void)
for (ii = 0u; ii < deviceSum; ii++) for (ii = 0u; ii < deviceSum; ii++)
{ {
/*组现地站场帧数据*/ /*组现地站场帧数据*/
reVal = PackCiToAtsOrXianDiData(deviceIdBuf[ii], CI_SYSTEM_TYPE_XIANDI, CI_ATS_STATION_FRAME, chSendXiandiorAtsMaskBuf); reVal = PackCiToAtsOrXianDiData(deviceIdBuf[ii], CI_SYSTEM_TYPE_XIANDI, CI_ATS_STATION_FRAME);
if (CI_ERROR == reVal) if (CI_ERROR == reVal)
{ {
/*组包错误*/ /*组包错误*/
@@ -774,7 +666,7 @@ UINT8 PackCiToOtherSysData(void)
for (ii = 0u; ii < deviceSum; ii++) for (ii = 0u; ii < deviceSum; ii++)
{ {
/*组现地设备帧数据*/ /*组现地设备帧数据*/
reVal = PackCiToAtsOrXianDiData(deviceIdBuf[ii], CI_SYSTEM_TYPE_XIANDI, CI_ATS_DEVICE_STATE_FRAME, chSendXiandiorAtsMaskBuf); reVal = PackCiToAtsOrXianDiData(deviceIdBuf[ii], CI_SYSTEM_TYPE_XIANDI, CI_ATS_DEVICE_STATE_FRAME);
if (CI_ERROR == reVal) if (CI_ERROR == reVal)
{ {
/*组包错误*/ /*组包错误*/
@@ -806,7 +698,7 @@ UINT8 PackCiToOtherSysData(void)
{ {
/*组ATS站场帧数据*/ /*组ATS站场帧数据*/
reVal = PackCiToAtsOrXianDiData(deviceIdBuf[ii], CI_SYSTEM_TYPE_ATS, CI_ATS_STATION_FRAME, chSendXiandiorAtsMaskBuf); reVal = PackCiToAtsOrXianDiData(deviceIdBuf[ii], CI_SYSTEM_TYPE_ATS, CI_ATS_STATION_FRAME);
if (CI_ERROR == reVal) if (CI_ERROR == reVal)
{ {
@@ -821,7 +713,7 @@ UINT8 PackCiToOtherSysData(void)
else else
{ {
/*组ATS设备帧数据*/ /*组ATS设备帧数据*/
reVal = PackCiToAtsOrXianDiData(deviceIdBuf[ii], CI_SYSTEM_TYPE_ATS, CI_ATS_DEVICE_STATE_FRAME, chSendXiandiorAtsMaskBuf); reVal = PackCiToAtsOrXianDiData(deviceIdBuf[ii], CI_SYSTEM_TYPE_ATS, CI_ATS_DEVICE_STATE_FRAME);
if (CI_ERROR == reVal) if (CI_ERROR == reVal)
{ {
/*组包错误*/ /*组包错误*/
@@ -1009,51 +901,6 @@ UINT8 PackCiToOtherSysData(void)
} }
} }
/*组CI-RC数据*/
cStartLockFlag = GetStartLockFlag();
if (CI_START_LOCK_NO == cStartLockFlag)
{
cSysType = GetSystemWorkType();
cLocalCiType = GetLocalCiType();
if ((SYSTEM_WORK_MODE_ALL == cSysType) && ((CI_TYPE_ZX == cLocalCiType) || (CI_TYPE_SCX == cLocalCiType)))
{
/*双系统下的正线和试车线才进行本控区CI-RC的组包*/
cLocalCiId = GetSystemParaLocalCiId();
cLocalDevType = Get2oo2SheBeiType();
if (CI_SYSTEM_TYPE_CI == cLocalDevType)
{
reVal = PackCiToLocalRcDataFrame(cLocalCiId); /*CI给本控区RC组包*/
if (CI_SUCCESS == reVal)
{
/*不处理*/
}
else
{
debug_infor_printf((const)"\nPackCiToLocalRcDataFrame Error.");
}
}
else
{
reVal = PackRcToLocalCiDataFrame(cLocalCiId); /*RC给本控区CI组包*/
if (CI_SUCCESS == reVal)
{
/*不处理*/
}
else
{
debug_infor_printf((const)"\nPackRcToLocalCiDataFrame Error.");
}
}
}
else
{
/*单系统或场段不涉及,不处理*/
}
}
else
{
/*未上电,不组包*/
}
/*****组LEU数据*****/ /*****组LEU数据*****/
deviceSum = 0u; deviceSum = 0u;
@@ -1083,8 +930,8 @@ UINT8 PackCiToOtherSysData(void)
cost[2] = MSCP_GetTick(); cost[2] = MSCP_GetTick();
/*****组VOBC数据*****/ /*****组VOBC数据*****/
/*CI模式组VOBC数据,RC模式组IVOC数据*/ /*组VOBC数据*/
reVal = PackVobcData(); reVal = PackCiToVobcData();
if (CI_ERROR == reVal) if (CI_ERROR == reVal)
{ {
/*组包错误*/ /*组包错误*/
@@ -1107,16 +954,6 @@ UINT8 PackCiToOtherSysData(void)
} }
/*仅RC模式,执行给510车组包*/
if (RC_WORK_MODE_TIOC == cRcWorkMode)
{
/*组RC-VOBC数据*/
reVal = PackRcToVobcData();
if (CI_ERROR == reVal)
{
}
}
/*****组PSD数据******/ /*****组PSD数据******/
deviceSum = 0u; deviceSum = 0u;
deviceIdBuf = NULL; deviceIdBuf = NULL;
@@ -1173,8 +1010,11 @@ UINT8 PackCiToOtherSysData(void)
} }
else else
{ {
PackCiToVobcFlyProtectData(); /*组飞车特控报文*/ /*不处理*/
} }
/*组飞车特控报文*/
PackCiToVobcFlyProtectData();
#ifdef APPCI_MAINTAIN_DEBUG #ifdef APPCI_MAINTAIN_DEBUG
#ifdef PLATFORM_2OO2 #ifdef PLATFORM_2OO2
File diff suppressed because it is too large Load Diff
+30 -61
View File
@@ -48,17 +48,16 @@
#include "../LogRecord/LogRecord.h" #include "../LogRecord/LogRecord.h"
#endif #endif
#define MAX_OC_DEVICE_SWITCH_MAX ((UINT16)84) /*一个OC最多支持道岔设备(不可达最大值)*/ #define MAX_OC_DEVICE_NUM ((UINT16)150) /*一个OC最多支持多少个设备*/
#define MAX_OC_DEVICE_SIGNAL_MAX ((UINT16)168) /*一个OC最多支持信号机设备(不可达最大值)*/ #define MAX_OC_DI_BOARD_NUM ((UINT16)20) /*一个OC支持最大DI板卡数量*/
#define MAX_OC_DEVICE_NUM ((UINT16)MAX_OC_DEVICE_SWITCH_MAX+MAX_OC_DEVICE_SIGNAL_MAX) /*一个OC最多支持多少个设备(不可达最大值)*/ #define MAX_OC_DO_BOARD_NUM ((UINT16)20) /*一个OC支持最大DO板卡数量*/
#define MAX_OC_BOARD_NUM ((UINT16)22) /*一个OC支持最大DI/SI/DO/SO/SOR板卡数量(不可达最大值)*/ #define MAX_OC_SOR_BOARD_NUM ((UINT16)20) /*一个OC支持最大SOR板卡数量*/
#define MAX_OC_PLUS_BOX_NUM ((UINT16)3) /*一个OC支持最大执行电插箱(可达最大值)*/ #define MAX_OC_PLUS_BOX_NUM ((UINT16)3) /*一个OC支持最大执行电插箱*/
#define MAX_OC_DEVICE_SWAP_MAX ((UINT16)83) /*一个OC最大切系板卡数量(MAX_OC_DEVICE_NUM/2)(不可达最大值) */ #define MAX_OC_SWITCH_INCLUDE_ZZJ_NUM ((UINT16)4) /*一个道岔支持最大转辙机个数*/
#define MAX_OC_SWITCH_INCLUDE_ZZJ_NUM ((UINT16)10) /*一个道岔支持最大转辙机个数(可达最大值)*/ #define MAX_OC_SWITCH_INCLUDE_BOARD_NUM ((UINT8)4) /*一个道岔支持最大板卡数量*/
#define MAX_OC_SWITCH_INCLUDE_BOARD_NUM ((UINT8)10) /*一个道岔支持最大板卡数量(不可达最大值)*/
#define Max_OC_GD_NUM ((UINT16)100) /*一个oc支持最大多少个轨道区段*/
#define Max_OC_GD_NUM ((UINT16)252) /*一个oc支持最大多少个轨道区段(不可达最大值)*/
#define MAX_OC_DEVICE_PSD_MAX ((UINT8)2) /*一个OC最大屏蔽门数量(可达最大值)*/
#define OC_CI_STATE_INFO ((UINT16)0x8802) /*OC给CI状态信息*/ #define OC_CI_STATE_INFO ((UINT16)0x8802) /*OC给CI状态信息*/
#define CI_OC_CONTROL_INFO ((UINT16)0x8801) /*CI给OC控制命令*/ #define CI_OC_CONTROL_INFO ((UINT16)0x8801) /*CI给OC控制命令*/
@@ -92,27 +91,13 @@ typedef struct s_OcDevState
UINT8 BoardState[MAX_OC_SWITCH_INCLUDE_BOARD_NUM]; /*板卡状态 正常0x0000 错误发错误码*/ UINT8 BoardState[MAX_OC_SWITCH_INCLUDE_BOARD_NUM]; /*板卡状态 正常0x0000 错误发错误码*/
}OcDeviceStruct; }OcDeviceStruct;
typedef struct s_OcDoBoardData typedef struct s_OcBoardData
{ {
UINT8 BoardAddr; /*板卡地址*/ UINT8 BoardAddr; /*板卡地址*/
UINT8 BoardState; /*板卡状态 正常0x00 错误发错误码*/ UINT8 BoardState; /*板卡状态 正常0x00 错误发错误码*/
UINT8 BoardCollData[18]; /*采集数据*/ UINT8 BoardCollData[18]; /*采集数据*/
}OcDIBoard; }OcDIBoard;
typedef struct s_OcSIBoardData
{
UINT8 BoardAddr; /*板卡地址*/
UINT8 BoardState; /*板卡状态 正常0x00 错误发错误码*/
UINT8 BoardCollData[12]; /*采集数据*/
}OcSIBoard;
typedef struct s_OcSorBoardData
{
UINT8 BoardAddr; /*板卡地址*/
UINT8 BoardState; /*板卡状态 正常0x00 错误发错误码*/
UINT8 BoardCollData[5]; /*采集数据*/
}OcSorBoard;
typedef struct s_OcGd typedef struct s_OcGd
{ {
UINT16 OcId; /*OC编号*/ UINT16 OcId; /*OC编号*/
@@ -168,20 +153,14 @@ typedef struct S_OcToCiDataStruct
UINT16 OcGdNum;/*一个oc的所有轨道区段的数量*/ UINT16 OcGdNum;/*一个oc的所有轨道区段的数量*/
OcGdDevice OcGdDevices[Max_OC_GD_NUM];/*一个oc的所有轨道区段设备*/ OcGdDevice OcGdDevices[Max_OC_GD_NUM];/*一个oc的所有轨道区段设备*/
UINT16 OcDIBoardDataNum; /*一个oc的所有DI板卡数据数量*/ UINT16 OcDIBoardDataNum; /*一个oc的所有采集输入板卡数据数量*/
OcDIBoard OcDIBoardDatas[MAX_OC_BOARD_NUM]; /*一个oc的所有DI板卡数据*/ OcDIBoard OcDIBoardDatas[MAX_OC_DI_BOARD_NUM]; /*一个oc的所有采集输入板卡数据*/
UINT16 OcSIBoardDataNum; /*一个oc的所有SI板卡数据数量*/
OcSIBoard OcSIBoardDatas[MAX_OC_BOARD_NUM]; /*一个oc的所有SI板卡数据*/
UINT16 OcDOBoardNum;/*一个OC的DO板卡数量*/ UINT16 OcDOBoardNum;/*一个OC的所有采集输出板卡数量*/
OcDoBoard OcDOBoardDatas[MAX_OC_BOARD_NUM]; /*OC的DO输出板卡*/ OcDoBoard OcDOBoardDatas[MAX_OC_DO_BOARD_NUM]; /*OC的所有数字输出板卡*/
UINT16 OcSOBoardNum;/*一个OC的所有SO板卡数量*/ UINT16 OcSORBoardNum;/*一个OC输出继电器板卡数量*/
OcDoBoard OcSOBoardDatas[MAX_OC_BOARD_NUM]; /*OC的SO板卡*/ OcDIBoard OcSORBoardDatas[MAX_OC_SOR_BOARD_NUM]; /*OC的安全输出板卡数据*/
UINT8 OcSORBoardNum;/*一个OC输出继电器板卡数量*/
OcSorBoard OcSORBoardDatas[MAX_OC_BOARD_NUM]; /*OC的安全输出板卡数据*/
UINT8 PowerAState;/*A系电源状态,新增。0x55-双路空开正常,0xaa-单路空开异常,0xFF-双路空开异常*/ UINT8 PowerAState;/*A系电源状态,新增。0x55-双路空开正常,0xaa-单路空开异常,0xFF-双路空开异常*/
UINT8 PowerBState;/*B系电源状态,新增。0x55-双路空开正常,0xaa-单路空开异常,0xFF-双路空开异常*/ UINT8 PowerBState;/*B系电源状态,新增。0x55-双路空开正常,0xaa-单路空开异常,0xFF-双路空开异常*/
@@ -192,20 +171,22 @@ typedef struct S_OcToCiDataStruct
OcPlusBox szPlusBox[MAX_OC_PLUS_BOX_NUM];/*执行电插箱信息*/ OcPlusBox szPlusBox[MAX_OC_PLUS_BOX_NUM];/*执行电插箱信息*/
UINT16 OCBoardSwapSysNum;/*OC切系板卡数量*/ UINT16 OCBoardSwapSysNum;/*OC切系板卡数量*/
UINT8 SwapSysBoardId[MAX_OC_DEVICE_SWAP_MAX];/*OC切系板卡ID*/ UINT8 SwapSysBoardId[MAX_OC_DEVICE_NUM];/*OC切系板卡ID*/
UINT8 OCPsdNum;/*屏蔽门数量*/ UINT8 OCPsdNum;/*屏蔽门数量*/
UINT8 DrvPowerState;/*驱动电源状态*/ UINT8 DrvPowerState;/*驱动电源状态*/
UINT8 CtlPowerState;/*控制电源状态*/ UINT8 CtlPowerState;/*控制电源状态*/
UINT8 EdgeCtllerState1;/*边缘控制器1状态*/ UINT8 EdgeCtllerState1;/*边缘控制器1状态*/
UINT8 EdgeCtllerState2;/*边缘控制器2状态*/ UINT8 EdgeCtllerState2;/*边缘控制器2状态*/
OcToCiPsdInfo PsdInfo[MAX_OC_DEVICE_PSD_MAX];/*屏蔽门信息*/ OcToCiPsdInfo PsdInfo[PSD_SUM_MAX];/*屏蔽门信息*/
UINT8 chHaveYjk; /*是否具备应急控*/ UINT8 chHaveYjk; /*是否具备应急控*/
UINT8 chControlMode; /*主控状态*/ UINT8 chControlMode; /*主控状态*/
UINT8 chOcYjpComm; /*OC与YJP通信状态*/ UINT8 chOcYjpComm; /*OC与YJP通信状态*/
UINT32 ComStartCycle; /*通信开始周期,使用该周期判断OC与CI中断*/ UINT32 ComStartCycle; /*通信开始周期,使用该周期判断OC与CI中断*/
UINT16 RecvErrorDevTypeCycle; /*收到错误设备类型周期*/
}OcToCiOriginDataStruct; }OcToCiOriginDataStruct;
@@ -379,18 +360,18 @@ UINT16 ConvertSigDrvColorToSigDrvCmd(const UINT16 signalId, const UINT8 drvColor
/* /*
* OC设备数据转换为OC OC * OC设备数据转换为OC OC
* uint8 devId OC编号 * void
* void * void
*/ */
void ConvertOcOriginDataToOcSigSwDev(UINT8 devId); void ConvertOcOriginDataToOcSigSwDev(void);
/* /*
* OC板卡数据转换为OC点位数据 * OC板卡数据转换为OC点位数据
* uint8 devId OC编号 * void
* void * void
*/ */
void ConvertOcOriginDataToPtData(UINT8 devId); void ConvertOcOriginDataToPtData(void);
/* /*
* OC设备 * OC设备
@@ -447,7 +428,7 @@ INT16 GetIndexBySwitchId(UINT16 swId);
*/ */
INT16 GetIndexByGdId(UINT16 gdId); INT16 GetIndexByGdId(UINT16 gdId);
#if 0
/* /*
* Oc到CI的单帧数据长度合法性 * Oc到CI的单帧数据长度合法性
* const UINT8* dataBuf, * const UINT8* dataBuf,
@@ -464,7 +445,7 @@ UINT8 CheckOc2CiDataLenValid(const UINT8* dataBuf, const UINT16 totalLength);
* *
*/ */
void ResetOcOriginalState(const UINT8 ocId); void ResetOcOriginalState(const UINT8 ocId);
#endif
/* /*
* OC->CI的结构设置缺省值() * OC->CI的结构设置缺省值()
* index:OC id对应的数组下标 * index:OC id对应的数组下标
@@ -496,18 +477,6 @@ UINT32 GetPointTolerateCycNum(const UINT16 ocId, const UINT8 boardNum, const UIN
* *
*/ */
void SetPointTolerateCycNum(const UINT16 ocId, const UINT8 boardNum, const UINT8 pointNum, const UINT32 cycNum); void SetPointTolerateCycNum(const UINT16 ocId, const UINT8 boardNum, const UINT8 pointNum, const UINT32 cycNum);
/*
* 0x550XAA,
* const UINT8 chInput, UINT8 chOtherValid,0
* CI_ERROR CI_SUCCESS
*/
UINT8 OcInputStateCheck(const UINT8 chInput, const UINT8 chOtherValid);
/*
* OC接口信号机状态有效有效
* const UINT8 chInput,
* CI_ERROR CI_SUCCESS
*/
UINT8 OcInputSignalStateCheck(const UINT8 chInput);
#ifdef __cplusplus #ifdef __cplusplus
} }
@@ -147,7 +147,7 @@ UINT8 ParseTmcToTiocDataFrame(UINT8* dataBuf, UINT16 dataLength, UINT8 systemId)
localCiId = GetSystemParaLocalCiId(); /*获取联锁ID*/ localCiId = GetSystemParaLocalCiId(); /*获取联锁ID*/
wTmcName = (CI_SYSTEM_TYPE_TMC)*256U + systemId; wTmcName = (CI_SYSTEM_TYPE_TMC)*256U + systemId;
wTiocName = (CI_SYSTEM_TYPE_RCI)*256U + localCiId; wTiocName = (CI_SYSTEM_TYPE_CI)*256U + localCiId;
curntCycleNo = Get2oo2CurCycleNum(); curntCycleNo = Get2oo2CurCycleNum();
/* 清空接收数据 */ /* 清空接收数据 */
@@ -874,7 +874,7 @@ UINT8 PackTiocToTmcData( UINT8 deviceId)
localCi = GetSystemParaLocalCiId(); /*获取本地联锁ID*/ localCi = GetSystemParaLocalCiId(); /*获取本地联锁ID*/
/* 获取GAL头信息 */ /* 获取GAL头信息 */
retVal = dquDevName2HlhtId((CI_SYSTEM_TYPE_RCI * 256U) + localCi, 0U, &cTiocEtcsId); retVal = dquDevName2HlhtId((CI_SYSTEM_TYPE_CI * 256U) + localCi, 0U, &cTiocEtcsId);
retVal &= dquDevName2HlhtId((CI_SYSTEM_TYPE_TMC * 256U) + deviceId, 0U, &cTmcEtcsId); retVal &= dquDevName2HlhtId((CI_SYSTEM_TYPE_TMC * 256U) + deviceId, 0U, &cTmcEtcsId);
retVal &= GetCiEmapCheckVer(localCi, &emapCheckVer, CI_SYSTEM_TYPE_TMC); retVal &= GetCiEmapCheckVer(localCi, &emapCheckVer, CI_SYSTEM_TYPE_TMC);
dwHlhtHSrcSN = GetHLHTHeadCtxSrcCrntSN(CI_SYSTEM_TYPE_TMC, deviceId); dwHlhtHSrcSN = GetHLHTHeadCtxSrcCrntSN(CI_SYSTEM_TYPE_TMC, deviceId);
File diff suppressed because it is too large Load Diff
@@ -104,14 +104,8 @@
#define CI_IVOC_INFO_TYPE_HEART_FRAME ((UINT16)0x0206U) /*OC->IVOC心跳帧,非周期*/ #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_INFO_TYPE_SPECIAL_CONTROL ((UINT16)0x0208U) /*rc->IVOC特控报文帧,非周期*/
#define VOBC_RC_INTERFACE_INFOTYPE ((UINT16)0x0217U) /*VOBC-RC接口,RC-VOBC接口*/
#define VOBC_RC_INFO_STATE ((UINT16)0x0201U) /*VOBC->RC控制信息,周期发送*/
#define RC_VOBC_HEART_FRAME ((UINT16)0x0201U) /*RC->VOBC心跳信息,周期发送*/
#define CI_IVOC_PRTCL_VER ((UINT8)0x01U) /*CI_VOBC协议版本号*/ #define CI_IVOC_PRTCL_VER ((UINT8)0x01U) /*CI_VOBC协议版本号*/
#define CI_IVOC_BACKUP_PRTCL_VER ((UINT8)0x066) /*CI_VOBC后备通道协议版本号*/ #define CI_IVOC_BACKUP_PRTCL_VER ((UINT8)0x066) /*CI_VOBC后备通道协议版本号*/
#define RC_VOBC_PRTCL_VER ((UINT8)0x065) /*RC_VOBC协议版本号*/
#define IVOC_CI_CMD_MAX ((UINT16)100U) /*IVOC 到CI命令数量最大值*/ #define IVOC_CI_CMD_MAX ((UINT16)100U) /*IVOC 到CI命令数量最大值*/
#define IVOC_CI_CMD_DEVICE_MAX ((UINT8)100U) /*IVOC 到CI命令设备数量最大值*/ #define IVOC_CI_CMD_DEVICE_MAX ((UINT8)100U) /*IVOC 到CI命令设备数量最大值*/
@@ -173,9 +167,8 @@
#define CI_IVOC_GAP_DETECT_STATUS_UNCLEAR ((UINT8)0xAA) /*CI2VOBC间隙探测状态:已检测且有障碍物*/ #define CI_IVOC_GAP_DETECT_STATUS_UNCLEAR ((UINT8)0xAA) /*CI2VOBC间隙探测状态:已检测且有障碍物*/
#define CI_IVOC_GAP_DETECT_STATUS_DEFAULT ((UINT8)0xFF) /*CI2VOBC间隙探测状态:未检测/无此功能,Default Value*/ #define CI_IVOC_GAP_DETECT_STATUS_DEFAULT ((UINT8)0xFF) /*CI2VOBC间隙探测状态:未检测/无此功能,Default Value*/
#define CI_IVOC_ESB_STATE_VALID ((UINT8)0x55U) /*CI到IVOC(VOBC) ESB按钮按下*/ #define CI_IVOC_ESB_STATE_VALID ((UINT8)0x55U) /*CI到IVOC ESB按钮按下*/
#define CI_IVOC_ESB_STATE_INVALID ((UINT8)0xAAU) /*CI到IVOC(VOBC) ESB按钮未按下*/ #define CI_IVOC_ESB_STATE_INVALID ((UINT8)0xAAU) /*CI到IVOC ESB按钮未按下*/
#define CI_IVOC_NO_HAVE_ESB ((UINT8)0xFFU) /*CI到IVOC(VOBC) ESB按钮未按下*/
#define CI_IVOC_NON_RETURN_STATE_VALID ((UINT8)0x55U) /*CI到IVOC 无人折返按钮按下*/ #define CI_IVOC_NON_RETURN_STATE_VALID ((UINT8)0x55U) /*CI到IVOC 无人折返按钮按下*/
#define CI_IVOC_NON_RETURN_STATE_INVALID ((UINT8)0xAAU) /*CI到IVOC 无人折返按钮未按下*/ #define CI_IVOC_NON_RETURN_STATE_INVALID ((UINT8)0xAAU) /*CI到IVOC 无人折返按钮未按下*/
@@ -232,11 +225,6 @@
#define CI_IVOC_LOST_POSITION ((UINT8)0x55U) /*CI到车载特控报文 丢位置*/ #define CI_IVOC_LOST_POSITION ((UINT8)0x55U) /*CI到车载特控报文 丢位置*/
#define CI_VOBC_JXTC_CUT_YES ((UINT8)0x55) /*间隙探测旁路故障*/
#define CI_VOBC_JXTC_CUT_NO ((UINT8)0xAA) /*间隙探测旁路未故障*/
#define CI_VOBC_JXTC_OFF ((UINT8)0xFF) /*未检测/无此功能*/
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
@@ -370,12 +358,8 @@ typedef struct S_VobcToCiDataStruct
UINT16 wHeadVobcId; /*前车ID*/ UINT16 wHeadVobcId; /*前车ID*/
UINT8 chJumpBackApply; /*向后跳跃申请*/ UINT8 chJumpBackApply; /*向后跳跃申请*/
UINT32 dwJumpBackSn; /*向后跳跃申请序列号*/ UINT32 dwJumpBackSn; /*向后跳跃申请序列号*/
UINT8 controlMode; /*控车模式*/
} VobcToCiDataStruct; } VobcToCiDataStruct;
/*在RC模式下,统一使用IvocToRcDataStruct*/
typedef VobcToCiDataStruct IvocToRcDataStruct;
/*使用后备模式与联锁通信的Vobc信息*/ /*使用后备模式与联锁通信的Vobc信息*/
typedef struct S_VobcBackUpToCiDataStruct typedef struct S_VobcBackUpToCiDataStruct
{ {
@@ -403,34 +387,6 @@ typedef struct S_VobcBackUpToCiDataStruct
} VobcBackUpToCiDataStruct; } VobcBackUpToCiDataStruct;
/*与RC通信的Vobc信息,车车模式下,与RC通信的VOBC*/
typedef struct S_IvocToRcDataStruct
{
UINT16 VobcId; /*Vobc ID*/
UINT16 VobcType; /*列车类型:0x14 510车,0x10 车车的车,本结构体仅在RC模式存510车*/
UINT8 controlMode; /*控车模式*/
UINT8 trainDirection; /*列车运行方向*/
UINT8 chTrainLevel; /*列车运行级别 0x01:连续式列车控制级别(CBTC级别);0x02:点式列车控制级别(ITC级别);0x03:联锁控制级别(IL级别);0x04:自主感知后备控制级别(ABL级别);其他:非法。*/
UINT8 chTrainMode; /*列车模式,0x01AM0x02CM0x03RM0x04EUM(预留);0x05FAM(预留);0x06:CAM(预留);其他:非法。*/
UINT16 appInfoType; /*应用信息类型*/
UINT16 vobcLogId; /*互联互通4IP VOBC1端或2端标识*/
UINT32 ComStartCycle; /*与VOBC通信周期,使用该周期做VOBC通信中断判断*/
UINT16 wTrainMaxSafeHeadLink; /*列车最大安全前端所处Link*/
UINT32 dwTrainMaxSafeHeadOffset; /*列车最大安全前端偏移量*/
UINT16 wTrainMinSafeHeadLink; /*列车最小安全前端所处link*/
UINT32 dwTrainMinSafeHeadOffset; /*列车最小安全前端偏移量*/
UINT16 wTrainMaxSafeTailLink; /*列车最大安全后端所处Link*/
UINT32 dwTrainMaxSafeTailOffset; /*列车最大安全后端偏移量*/
UINT16 wTrainMinSafeTailLink; /*列车最小安全后端所处link*/
UINT32 dwTrainMinSafeTailOffset; /*列车最小安全后端偏移量*/
UINT16 wTrainLen; /*列车车长*/
UINT16 wTrainSpeed; /*列车速度*/
UINT8 chSpeedDir; /*列车速度方向*/
} VobcToRcDataStruct;
#endif #endif
extern VobcToCiDataStruct VobcToCiDataStru[VOBC_TO_CI_SUM_MAX]; extern VobcToCiDataStruct VobcToCiDataStru[VOBC_TO_CI_SUM_MAX];
@@ -439,8 +395,6 @@ extern VobcBackUpToCiDataStruct VobcBackUpToCiDataStru[VOBC_BACKUP_TO_CI_SUM_MAX
extern UINT8 VobcToCiSum; extern UINT8 VobcToCiSum;
extern VobcToRcDataStruct VobcToRcDataStru[VOBC_TO_CI_SUM_MAX];/*与RC通信的VOBC信息。本变量在CI模式下不使用。在RC模式下,仅存储与RC通信的510车的信息,记得二乘同步!!!!!!!!!*/
extern UINT8 VobcToRcSum;/*与RC通信的Vobc数目,仅RC模式下使用,记录与RC通信的VOBC车数量,2乘记得同步*/
/* /*
* VOBC单帧数据 * VOBC单帧数据
@@ -470,7 +424,7 @@ UINT8 ParseVobcBackUpToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength
* 0: * 0:
* 1: * 1:
*/ */
UINT8 PackVobcData(void); UINT8 PackCiToVobcData(void);
/* /*
* VOBC后备通道数据 * VOBC后备通道数据
@@ -504,6 +458,13 @@ UINT8 GetVobcToCiSum(void);
* CI_ERROR: * CI_ERROR:
*/ */
UINT8 GetPsdEditGroupInfo(const UINT16 psdId); UINT8 GetPsdEditGroupInfo(const UINT16 psdId);
/*
* VOBC发送给CI的信息结构体数组中
* const UINT8 idx:VOBC发送给CI的信息结构体数组的位置索引
* 0:
* 1:
*/
UINT8 RemoveVobcToCiMsgAt(UINT8 idx);
/* /*
@@ -735,6 +696,14 @@ UINT8 ParseFAOHLHTBackUpControlData(UINT8* dataBuf, UINT16 dataLen, VobcToCiData
*/ */
void PackCiToVobcFlyProtectData(void); void PackCiToVobcFlyProtectData(void);
/*
* RC到车载飞车宕机信息
* const UINT16 wTrainId ID
*
* Created By LQ 2025.09.15
*/
void PackCiToVobcFlyProtectInfo(const UINT16 wTrainId);
/* /*
* Ci到Ivoc的向后跳跃申请回复 * Ci到Ivoc的向后跳跃申请回复
* UINT8* dataBuf, * UINT8* dataBuf,
@@ -745,54 +714,6 @@ void PackCiToVobcFlyProtectData(void);
* Create fan 20250725 * Create fan 20250725
*/ */
UINT8 PackCiToIvocJumpBackReply(UINT8* pDataBuf, UINT16* wDataLength, UINT16 wTrainId); UINT8 PackCiToIvocJumpBackReply(UINT8* pDataBuf, UINT16* wDataLength, UINT16 wTrainId);
/*
* VOBC单帧数据
* const UINT8* dataBuf,
* const UINT16 dataLength,
* const UINT8 systemId, ID
* const UINT16 logId4IP VOBC的1端或2端标识
* 0:
* 1:
*/
UINT8 ParseVobcToRcDataCC(const UINT8* dataBuf, const UINT16 dataLength, const UINT8 systemId, const UINT16 logId);
/*
* RC模式组VOBC数据
* void
* 0:
* 1:
*/
UINT8 PackRcToVobcData(void);
/*
* VOBC到Rc命令结构体数组总数
* void
*
*/
UINT8 GetVobcToRcSum(void);
/*
* Ivoc单帧数据
* const UINT8* dataBuf,
* const UINT16 dataLength,
* const UINT8 systemId, ID
* const UINT16 logId4IP VOBC的1端或2端标识
* 0:
* 1:
*/
UINT8 ParseIvocToRcDataFrame(const UINT8* dataBuf, const UINT16 dataLength, const UINT8 systemId, const UINT16 logId);
/*
* Ivoc到RC命令结构体数组总数
* void
*
*/
UINT8 GetIvocToRcSum(void);
/*
*
* const UINT16 wVobcId ID
*
* 0:
* 0x55
* 0xaa
*/
UINT8 GetRecvVobcControlMode(const UINT16 wVobcId);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
+2 -575
View File
@@ -26,8 +26,6 @@ ComTrainPosDataStruct ComTrainPosDataStru[ZC_TO_CI_TRAIN_MAX];/*
UINT16 ComTrainSum = 0u;/*列车数量*/ UINT16 ComTrainSum = 0u;/*列车数量*/
UINT8 lineIdentity = 0u; /*线路标识*/ UINT8 lineIdentity = 0u; /*线路标识*/
ZcToCiDynamicDataStruct gZcToCiDymDataStru = { 0U }; /*ZC动态数据结构体*/
/* /*
* ZC单帧数据 * ZC单帧数据
@@ -69,7 +67,7 @@ UINT8 ParseZcToCiDataFrame(UINT8* dataBuf, UINT16 dataLength, UINT8 systemId)
ci_zcPrtclVersion = GetVersionOfZCToCI(); ci_zcPrtclVersion = GetVersionOfZCToCI();
localCiId = GetSystemParaLocalCiId(); /*获取联锁ID*/ localCiId = GetSystemParaLocalCiId(); /*获取联锁ID*/
zcName = (CI_SYSTEM_TYPE_ZC)*256U + systemId; zcName = (CI_SYSTEM_TYPE_ZC)*256U + systemId;
ciName = (CI_SYSTEM_TYPE_RCI)*256U + localCiId; ciName = (CI_SYSTEM_TYPE_CI)*256U + localCiId;
curntCycleNo = Get2oo2CurCycleNum(); curntCycleNo = Get2oo2CurCycleNum();
chDataType = GetLocalPublicDataType(); /*区分28.0.0.14与其他线路zc接口*/ chDataType = GetLocalPublicDataType(); /*区分28.0.0.14与其他线路zc接口*/
if ((NULL != dataBuf) && (dataLength > 0u)) if ((NULL != dataBuf) && (dataLength > 0u))
@@ -1075,7 +1073,7 @@ UINT8 PackCiToZcData( UINT8 deviceId)
localCi = GetSystemParaLocalCiId(); /*获取本地联锁ID*/ localCi = GetSystemParaLocalCiId(); /*获取本地联锁ID*/
ci_zcPrtclVersion = GetVersionOfZCToCI(); ci_zcPrtclVersion = GetVersionOfZCToCI();
/*首先获取组包时所需的信息,获取成功才有必要继续组包*/ /*首先获取组包时所需的信息,获取成功才有必要继续组包*/
CIName2HlhtId = dquDevName2HlhtId((CI_SYSTEM_TYPE_RCI * 256U) + localCi, 0U, &ciEtcsId); CIName2HlhtId = dquDevName2HlhtId((CI_SYSTEM_TYPE_CI * 256U) + localCi, 0U, &ciEtcsId);
ZCName2HlhtId = dquDevName2HlhtId((CI_SYSTEM_TYPE_ZC * 256U) + deviceId, 0U, &zcEtcsId); ZCName2HlhtId = dquDevName2HlhtId((CI_SYSTEM_TYPE_ZC * 256U) + deviceId, 0U, &zcEtcsId);
dwHlhtHSrcSN = GetHLHTHeadCtxSrcCrntSN(CI_SYSTEM_TYPE_ZC, deviceId); dwHlhtHSrcSN = GetHLHTHeadCtxSrcCrntSN(CI_SYSTEM_TYPE_ZC, deviceId);
dwHlhtHRcvSN = GetHLHTHeadCtxCiRcvSN(CI_SYSTEM_TYPE_ZC, deviceId); dwHlhtHRcvSN = GetHLHTHeadCtxCiRcvSN(CI_SYSTEM_TYPE_ZC, deviceId);
@@ -1444,575 +1442,4 @@ UINT8 ParseZcIteCutData(UINT8* dataBuf, UINT16 dataLen)
} }
return cRetVal; return cRetVal;
}
/**
* @brief ZC发送的进路停车保证标志
* @param[in] UINT16 wDeviceId ID
* @return
* @note by cgh 20251106
*/
UINT8 GetRouteStopensureFlagZc(UINT16 wDeviceId)
{
UINT8 chReval = ROUTE_STOPENSURE_NO;
UINT16 bufIndex = 0U; /*数组下标*/
bufIndex = GetRouteConfigBufIndex(wDeviceId); /*获取进路数组下标*/
if (bufIndex < ROUTE_SUM_MAX)
{
chReval = gZcToCiDymDataStru.szRouteDataStruZc[bufIndex].StopensureFlag;
}
else
{
/*返回无停车保证*/
}
return chReval;
}
/*
* ZC发送的进路停车保证标志
* const UINT16 routeId, ID
* const UINT8 stopensureFlag
*
* Created By LQ 2025.11.07
*/
void SetRouteStopensureFlagZc(const UINT16 routeId, const UINT8 stopensureFlag)
{
UINT16 bufIndex = 0U; /*数组下标*/
bufIndex = GetRouteConfigBufIndex(routeId); /*获取进路数组下标*/
if (bufIndex < ROUTE_SUM_MAX)
{
if ((ROUTE_STOPENSURE_YES == stopensureFlag) || (ROUTE_STOPENSURE_NO == stopensureFlag))
{
gZcToCiDymDataStru.szRouteDataStruZc[bufIndex].StopensureFlag = stopensureFlag; /*停车保证标志*/
}
else
{
/*不处理*/
}
}
else
{
/*不处理*/
}
}
/**
* @brief ZC发送的信号机亮灭状态
* @param[in] UINT16 wDeviceId ID
* @return
* @note by cgh 20251106
*/
UINT8 GetSignalLightExtinctStateZc(UINT16 wDeviceId)
{
UINT8 chReval = SIGNAL_LIGHT_EXTICT_STATE_YES;
UINT16 bufIndex = 0U; /*数组下标*/
bufIndex = GetSignalConfigBufIndex(wDeviceId); /*获取区段数组下标*/
if (bufIndex < SIGNAL_SUM_MAX)
{
chReval = gZcToCiDymDataStru.szSignalDataStruZc[bufIndex].LightExtinctState;
}
else
{
/*返回亮灯*/
}
return chReval;
}
/*
* ZC发送的信号机亮灭状态
* const UINT16 signalId, ID
* const UINT8 ligheCloseState,
*
* Created By LQ 2025.11.07
*/
void SetSignalLightExtinctStateZc(const UINT16 signalId, const UINT8 lightExtinctState)
{
UINT16 bufIndex = 0U; /*数组下标*/
bufIndex = GetSignalConfigBufIndex(signalId); /*获取道岔数组下标*/
if (bufIndex < SIGNAL_SUM_MAX)
{
if ((SIGNAL_LIGHT_EXTICT_STATE_ALL_YES == lightExtinctState) || (SIGNAL_LIGHT_EXTICT_STATE_YES == lightExtinctState))
{
gZcToCiDymDataStru.szSignalDataStruZc[bufIndex].LightExtinctState = SIGNAL_LIGHT_EXTICT_STATE_YES;
}
else if (SIGNAL_LIGHT_EXTICT_STATE_NO == lightExtinctState)
{
gZcToCiDymDataStru.szSignalDataStruZc[bufIndex].LightExtinctState = SIGNAL_LIGHT_EXTICT_STATE_NO;
}
else
{
/*不处理*/
}
}
else
{
/*不处理*/
}
}
/*
* ZC发送的通信车跨压通过信号机状态
* const UINT16 signalId, ID
* 0
* 0x55
* 0xaa
* Created By LQ 2025.11.07
*/
UINT8 GetSignalCrossStateZc(const UINT16 signalId)
{
UINT16 bufIndex = 0U; /*数组下标*/
UINT8 reVal = CI_ERROR;
bufIndex = GetSignalConfigBufIndex(signalId); /*获取区段数组下标*/
if (bufIndex < SIGNAL_SUM_MAX)
{
reVal = gZcToCiDymDataStru.szSignalDataStruZc[bufIndex].SignalCrossState;
}
else
{
/*不处理*/
}
return reVal;
}
/*
* ZC发送的通信车跨压通过信号机状态
* const UINT16 signalId, ID
*
* Created By LQ 2025.11.07
*/
void SetSignalCrossStateZc(const UINT16 signalId, const UINT8 signalCrossState)
{
UINT16 bufIndex = 0U; /*数组下标*/
bufIndex = GetSignalConfigBufIndex(signalId); /*获取道岔数组下标*/
if (bufIndex < SIGNAL_SUM_MAX)
{
if ((SIGNAL_CROSS_STATE_NO == signalCrossState) || (SIGNAL_CROSS_STATE_YES == signalCrossState))
{
gZcToCiDymDataStru.szSignalDataStruZc[bufIndex].SignalCrossState = signalCrossState; /*设置通信车跨压通过信号机状态*/
}
else
{
/*不处理*/
}
}
else
{
/*不处理*/
}
}
/*
* ZC发送的逻辑区段临时限速设置状态
* const UINT16 logSectionId, ID
* 0
* 0x55
* 0xAA
* 0xFF
* Created By LQ 2025.11.07
*/
UINT8 GetLogSecLinShiXianSuStateZc(const UINT16 logSectionId)
{
UINT16 bufIndex = 0U; /*数组下标*/
UINT8 cRetVal = CI_ERROR;
bufIndex = GetlogSectionBufIndex(logSectionId); /*获取区段数组下标*/
if (LOGIC_SECTION_SUM_MAX > bufIndex)
{
cRetVal = gZcToCiDymDataStru.LogicSectionDataStruZc[bufIndex].LinShiXianSuSetFlag;
}
else
{
cRetVal = CI_ERROR;
}
return cRetVal;
}
/*
* ZC发送的逻辑区段临时限速设置状态
* const UINT16 logSectionId, ID
* const UINT8 linShiXianSuSetState,
*
* Created By LQ 2025.11.07
*/
void SetLogSecLinShiXianSuStateZc(const UINT16 logSectionId, const UINT8 linShiXianSuSetState)
{
UINT16 bufIndex = 0U; /*数组下标*/
bufIndex = GetlogSectionBufIndex(logSectionId); /*获取逻辑区段数组下标*/
if (LOGIC_SECTION_SUM_MAX > bufIndex)
{
if ((LOGSEC_LSXS_SET_STATE_NO == linShiXianSuSetState) ||
(LOGSEC_LSXS_SET_STATE_YES == linShiXianSuSetState) ||
(LOGSEC_LSXS_SET_STATE_INVALID == linShiXianSuSetState))
{
gZcToCiDymDataStru.LogicSectionDataStruZc[bufIndex].LinShiXianSuSetFlag = linShiXianSuSetState; /*逻辑区段临时限速设置状态*/
}
else
{
/*不做处理*/
}
}
else
{
/*不做处理*/
}
}
/*
* ZC发送的逻辑区段初始占用状态
* const UINT16 logSectionId, ID
* 0
* 0x55
* 0xAA
* 0xBB
* Created By LQ 2025.11.07
*/
UINT8 GetLogSecOccupyStateZc(const UINT16 logSectionId)
{
UINT16 bufIndex = 0U; /*数组下标*/
UINT8 retVal = CI_ERROR;
bufIndex = GetlogSectionBufIndex(logSectionId); /*获取区段数组下标*/
if (bufIndex < LOGIC_SECTION_SUM_MAX)
{
retVal = gZcToCiDymDataStru.LogicSectionDataStruZc[bufIndex].OccupyState;
}
else
{
retVal = CI_ERROR;
}
return retVal;
}
/*
* ZC发送的逻辑区段初始占用状态
* const UINT16 logSectionId, ID
* const UINT8 curOccupyState,
*
* Created By LQ 2025.11.07
*/
void SetLogSecOccupyStateZc(const UINT16 logSectionId, const UINT8 curOccupyState)
{
UINT16 bufIndex = 0U; /*数组下标*/
bufIndex = GetlogSectionBufIndex(logSectionId); /*获取道岔数组下标*/
if (LOGIC_SECTION_SUM_MAX > bufIndex)
{
if ((LOGICSECTION_OCCUPY_UT == curOccupyState) ||
(LOGICSECTION_OCCUPY_CT == curOccupyState) ||
(LOGICSECTION_OCCUPY_NO == curOccupyState))
{
gZcToCiDymDataStru.LogicSectionDataStruZc[bufIndex].OccupyState = curOccupyState; /*逻辑区段当前占用状态*/
}
else
{
/*不设置*/
}
}
else
{
/*不设置*/
}
}
/*
* ZC发送的逻辑区段通信车占用状态
* const UINT16 logSectionId, ID
* 0
* 0x55
* 0xAA
* Created By LQ 2025.11.07
*/
UINT8 GetLogSecTXOccupyStateZc(const UINT16 logSectionId)
{
UINT16 bufIndex = 0U; /*数组下标*/
UINT8 retVal = CI_ERROR;
bufIndex = GetlogSectionBufIndex(logSectionId); /*获取区段数组下标*/
if (LOGIC_SECTION_SUM_MAX > bufIndex)
{
retVal = gZcToCiDymDataStru.LogicSectionDataStruZc[bufIndex].TXOccupyState;
}
else
{
retVal = CI_ERROR;
}
return retVal;
}
/*
* ZC发送的逻辑区段通信车占用状态
* const UINT16 logSectionId, ID
* const UINT8 curOccupyState,
*
* Created By LQ 2025.11.07
*/
void SetLogSecTXOccupyStateZc(const UINT16 logSectionId, const UINT8 curOccupyState)
{
UINT16 bufIndex = 0U; /*数组下标*/
bufIndex = GetlogSectionBufIndex(logSectionId); /*获取道岔数组下标*/
if (LOGIC_SECTION_SUM_MAX > bufIndex)
{
if ((LOGICSECTION_OCCUPY_TX == curOccupyState) ||
(LOGICSECTION_OCCUPY_NO_TX == curOccupyState))
{
gZcToCiDymDataStru.LogicSectionDataStruZc[bufIndex].TXOccupyState = curOccupyState; /*逻辑区段当前占用状态*/
}
else
{
; /*不处理*/
}
}
else
{
; /*不处理*/
}
}
/*
* ZC发送的计轴区段ARB状态
* const UINT16 axisSectionId, ID
* 0
* 0x55 ARB状态
* 0xaa ARB
* Created By LQ 2025.11.07
*/
UINT8 GetAxisSecArbStateZc(const UINT16 axisSectionId)
{
UINT16 bufIndex = 0U; /*数组下标*/
UINT8 retVal = CI_ERROR;
bufIndex = GetAxisSecConfigBufIndex(axisSectionId); /*获取区段数组下标*/
if (bufIndex < AXIS_SECTION_SUM_MAX)
{
retVal = gZcToCiDymDataStru.AxisSectionDataStruZc[bufIndex].AxisArbState;
}
else
{
retVal = CI_ERROR;
}
return retVal;
}
/*
* ZC发送的计轴区段ARB状态
* const UINT16 axisSectionId, ID
* const UINT8 arbState, ARB状态
*
* Created By LQ 2025.11.07
*/
void SetAxisSecArbStateZc(const UINT16 axisSectionId, const UINT8 arbState)
{
UINT16 bufIndex = 0U; /*数组下标*/
bufIndex = GetAxisSecConfigBufIndex(axisSectionId); /*获取计轴区段数组下标*/
if (bufIndex < AXIS_SECTION_SUM_MAX)
{
if ((AXIS_SECTION_ARB_NO == arbState) || (AXIS_SECTION_ARB_YES == arbState))
{
gZcToCiDymDataStru.AxisSectionDataStruZc[bufIndex].AxisArbState = arbState; /*计轴区段ARB状态*/
}
else
{
; /*不设置*/
}
}
else
{
; /*不设置*/
}
}
/*
* ZC发送的物理区段停稳状态
* const UINT16 phySectionId, ID
* 0
* 0x55
* 0xAA
* Created By LQ 2025.11.07
*/
UINT8 GetPhySecStopSteadyZcOrVobc(const UINT16 phySectionId)
{
UINT16 bufIndex = 0U; /*数组下标*/
UINT8 retVal = CI_ERROR;
bufIndex = GetPhySecConfigBufIndex(phySectionId); /*获取区段数组下标*/
if (bufIndex < PHYSICAL_SECTION_SUM_MAX)
{
retVal = gZcToCiDymDataStru.PhysicalSectionDataStruZc[bufIndex].StopSteadyFlag;
}
else
{
retVal = CI_ERROR;
}
return retVal;
}
/*
* ZC发送的物理区段停稳状态
* const UINT16 phySectionId, ID
* const UINT8 stopSteadyState,
*
* Created By LQ 2025.11.07
*/
void SetPhySecStopSteadyZcOrVobc(const UINT16 phySectionId, const UINT8 stopSteadyState)
{
UINT16 bufIndex = 0U; /*数组下标*/
bufIndex = GetPhySecConfigBufIndex(phySectionId); /*获取区段数组下标*/
if (bufIndex < PHYSICAL_SECTION_SUM_MAX)
{
if ((PHYSICAL_SECTION_STOPSTEADY_NO == stopSteadyState) || (PHYSICAL_SECTION_STOPSTEADY_YES == stopSteadyState))
{
gZcToCiDymDataStru.PhysicalSectionDataStruZc[bufIndex].StopSteadyFlag = stopSteadyState; /*物理区段停稳状态*/
}
else
{
/*不做处理*/
}
}
else
{
/*不做处理*/
}
}
/*
* ZC发送的全线雨雪模式
* void
* 0x55
* 0xAA
* Created By LQ 2025.11.10
*/
UINT8 GetAllSnowModelZc(void)
{
return gZcToCiDymDataStru.cSnowValidFlagZc;
}
/*
* ZC发送的全线雨雪模式
* UINT8 setmodle 线
* void
* Created By LQ 2025.11.10
*/
void SetAllSnowModelZc(UINT8 setmodle)
{
if ((CI_ALL_SNOW_VALID == setmodle) || (CI_ALL_SNOW_UNVALID == setmodle))
{
gZcToCiDymDataStru.cSnowValidFlagZc = setmodle;
}
else
{
/*不处理*/
}
}
/*
* ZC发送的本地区间雨雪站台数量
*
*
* Created By LQ 2025.11.10
*/
UINT8 GetLocalAreaSnowNumZc(void)
{
return gZcToCiDymDataStru.cAreaSnowPlatFormNumZc;
}
/*
* ZC发送的本地区间雨雪信息
*
*
* Created By LQ 2025.11.10
*/
AreaSnowInfoStruct* GetLocalAreaSnowZc(void)
{
return gZcToCiDymDataStru.szAreaSnowInfoZc;
}
/*
* ZC发送的本地区间雨雪信息
* const UINT8 cAreaSnowNum
* const AreaSnowInfoStruct pAreaSnowBuf[LOCAL_AREA_SNOW_SUM_MAX]
*
* Created By LQ 2025.11.10
*/
void SetLocalAreaSnowInfoZc(const UINT8 cAreaSnowNum, const AreaSnowInfoStruct pAreaSnowBuf[LOCAL_AREA_SNOW_SUM_MAX])
{
UINT8 ii = 0U;
if ((LOCAL_AREA_SNOW_SUM_MAX >= cAreaSnowNum) && (NULL != pAreaSnowBuf))
{
/*清除ZC发送的本地区间雨雪信息*/
(void)CommonMemSet(gZcToCiDymDataStru.szAreaSnowInfoZc, (UINT32)(sizeof(AreaSnowInfoStruct) * LOCAL_AREA_SNOW_SUM_MAX), 0U, (UINT32)(sizeof(AreaSnowInfoStruct) * LOCAL_AREA_SNOW_SUM_MAX));
gZcToCiDymDataStru.cAreaSnowPlatFormNumZc = cAreaSnowNum;
for (ii = 0U; ii < cAreaSnowNum; ii++)
{
gZcToCiDymDataStru.szAreaSnowInfoZc[ii] = pAreaSnowBuf[ii]; /*存储ZC发送的本控区的区间雨雪状态信息*/
}
}
else
{
/*入参非法,不处理*/
}
}
/*
* ZC发送的本地雨雪模式命令
*
* 0x55
* 0xAA
* Created By LQ 2025.11.10
*/
UINT8 GetLocalSnowModelZc(void)
{
return gZcToCiDymDataStru.chLocalSnowValidFlagZc;
}
/*
* ZC发送的本地雨雪模式命令
* UINT8 setmodle
*
* Created By LQ 2025.11.10
*/
void SetLocalSnowModelZc(UINT8 setmodle)
{
if ((CI_LOCAL_SNOW_UNVALID == setmodle) || (CI_LOCAL_SNOW_VALID == setmodle))
{
gZcToCiDymDataStru.chLocalSnowValidFlagZc = setmodle;
}
else
{
; /*不处理*/
}
} }
+1 -262
View File
@@ -51,7 +51,7 @@ typedef struct S_EbInputInfoStruct
/*进路动态数据结构体*/ /*进路动态数据结构体*/
typedef struct S_ZcToCiDataStruct typedef struct S_ZcToCiDataStruct
{ {
UINT8 ZcId; /*Zc ID*/ UINT8 ZcId; /*Zc ID*/
UINT16 ZcMaskValueBufLen; /*ZC到CI码位值Buf长度*/ UINT16 ZcMaskValueBufLen; /*ZC到CI码位值Buf长度*/
UINT8 ZcMaskValueBuf[ZC_TO_CI_MASK_SUM_MAX]; /*ZC到CI码位值Buf*/ UINT8 ZcMaskValueBuf[ZC_TO_CI_MASK_SUM_MAX]; /*ZC到CI码位值Buf*/
@@ -66,58 +66,6 @@ typedef struct S_ZcToCiDataStruct
UINT16 szAreaIteCutId[ALL_AREA_SNOW_SUM_MAX]; /*区间ITE切除ID数组*/ UINT16 szAreaIteCutId[ALL_AREA_SNOW_SUM_MAX]; /*区间ITE切除ID数组*/
} ZcToCiDataStruct; } ZcToCiDataStruct;
/*ZC发送的信号机动态数据结构体*/
typedef struct S_SignalDataStructZC
{
UINT16 SignalId; /*信号机ID (配置字段)*/
UINT8 LightExtinctState; /*信号机亮灭状态ZC(0x55:灭灯,0xaa:亮灯)*/
UINT8 SignalCrossState; /*通信车跨压通过信号机状态ZC(0x55:未跨压,0xaa:跨压)*/
}SignalDataStructZC;
/*ZC发送的逻辑区段动态数据结构体*/
typedef struct S_LogicSectionDataStructZC
{
UINT16 LogicSectionId; /*逻辑区段ID (初始化字段)*/
UINT8 LinShiXianSuSetFlag; /*逻辑区段临时限速设置状态ZC(0x55-已未设置临时限速,0xAA-已设置临时限速,0xFF-临时限速无效)*/
UINT8 OccupyState; /*逻辑区段初始占用状态ZC(0x55-未占用,0xAA-非通信车占用,0xBB-通信车占用)*/
UINT8 TXOccupyState; /*逻辑区段通信车占用状态ZC(0x55-无车或非通信车占用,0xAA-通信车占用)*/
}LogicSectionDataStructZC;
/*ZC发送的计轴区段动态数据结构体*/
typedef struct S_AxisSectionDataStructZC
{
UINT16 AxisSectionId; /*计轴区段ID (初始化字段)*/
UINT8 AxisArbState; /*计轴ARB状态CC(0x55-未ARB0xaa-ARB)*/
}AxisSectionDataStructZC;
/*ZC发送的物理区段动态数据结构体*/
typedef struct S_PhysicalSectionDataStructZC
{
UINT16 PhysicalSectionId; /*物理区段ID (初始化字段)*/
UINT8 StopSteadyFlag; /*区段停稳信息ZC(0x55-未停稳,0xAA-停稳)*/
}PhysicalSectionDataStructZC;
/*ZC发送的进路动态数据结构体*/
typedef struct S_RouteDataStructZC
{
UINT16 RouteId; /*进路ID (初始化字段)*/
UINT8 StopensureFlag; /*停车保证标志ZC(0x55:已设置,0xAA:未设置) */
}RouteDataStructZC;
/*存储ZC发送的动态数据结构体*/
typedef struct S_ZcToCiDynamicDataStruct
{
UINT8 cSnowValidFlagZc; /* 全线雨雪模式命令有效标志ZC */
UINT8 cAreaSnowPlatFormNumZc; /*区间雨雪站台数量ZC*/
AreaSnowInfoStruct szAreaSnowInfoZc[LOCAL_AREA_SNOW_SUM_MAX]; /*区间雨雪数组ZC*/
UINT8 chLocalSnowValidFlagZc; /* 本地雨雪模式命令有效标志ZC */
SignalDataStructZC szSignalDataStruZc[SIGNAL_SUM_MAX]; /*信号机数据结构体ZC(按顺序存储数据)*/
LogicSectionDataStructZC LogicSectionDataStruZc[LOGIC_SECTION_SUM_MAX]; /*定义逻辑区段数据结构体ZC(按顺序存储数据)*/
AxisSectionDataStructZC AxisSectionDataStruZc[AXIS_SECTION_SUM_MAX]; /*定义计轴区段数据结构体ZC(按顺序存储数据)*/
PhysicalSectionDataStructZC PhysicalSectionDataStruZc[PHYSICAL_SECTION_SUM_MAX]; /*定义物理区段数据结构体ZC(按顺序存储数据)*/
RouteDataStructZC szRouteDataStruZc[ROUTE_SUM_MAX]; /*进路数据结构体ZC(按顺序存储数据)*/
} ZcToCiDynamicDataStruct;
/*通信车位置信息*/ /*通信车位置信息*/
typedef struct S_ComTrainPosDataStruct typedef struct S_ComTrainPosDataStruct
{ {
@@ -132,7 +80,6 @@ typedef struct S_ComTrainPosDataStruct
extern ComTrainPosDataStruct ComTrainPosDataStru[ZC_TO_CI_TRAIN_MAX]; extern ComTrainPosDataStruct ComTrainPosDataStru[ZC_TO_CI_TRAIN_MAX];
extern UINT16 ComTrainSum; extern UINT16 ComTrainSum;
extern UINT8 lineIdentity; extern UINT8 lineIdentity;
extern ZcToCiDynamicDataStruct gZcToCiDymDataStru; /*ZC动态数据结构体*/
#endif #endif
@@ -260,214 +207,6 @@ ZcToCiDataStruct* GetZcToCiDataStru(void);
*/ */
UINT8 ParseZcIteCutData(UINT8* dataBuf, UINT16 dataLen); UINT8 ParseZcIteCutData(UINT8* dataBuf, UINT16 dataLen);
/**
* @brief ZC发送的进路停车保证标志
* @param[in] UINT16 wDeviceId ID
* @return
* @note by cgh 20251106
*/
UINT8 GetRouteStopensureFlagZc(UINT16 wDeviceId);
/*
* ZC发送的进路停车保证标志
* const UINT16 routeId, ID
* const UINT8 stopensureFlag
*
* Created By LQ 2025.11.06
*/
void SetRouteStopensureFlagZc(const UINT16 routeId, const UINT8 stopensureFlag);
/**
* @brief ZC发送的信号机亮灭状态
* @param[in] UINT16 wDeviceId ID
* @return
* @note by cgh 20251106
*/
UINT8 GetSignalLightExtinctStateZc(UINT16 wDeviceId);
/*
* ZC发送的信号机亮灭状态
* const UINT16 signalId, ID
* const UINT8 ligheCloseState,
*
* Created By LQ 2025.11.06
*/
void SetSignalLightExtinctStateZc(const UINT16 signalId, const UINT8 lightExtinctState);
/*
* ZC发送的通信车跨压通过信号机状态
* const UINT16 signalId, ID
* 0
* 0x55
* 0xaa
* Created By LQ 2025.11.06
*/
UINT8 GetSignalCrossStateZc(const UINT16 signalId);
/*
* ZC发送的通信车跨压通过信号机状态
* const UINT16 signalId, ID
*
* Created By LQ 2025.11.06
*/
void SetSignalCrossStateZc(const UINT16 signalId, const UINT8 signalCrossState);
/*
* ZC发送的逻辑区段临时限速设置状态
* const UINT16 logSectionId, ID
* 0
* 0x55
* 0xAA
* 0xFF
* Created By LQ 2025.11.06
*/
UINT8 GetLogSecLinShiXianSuStateZc(const UINT16 logSectionId);
/*
* ZC发送的逻辑区段临时限速设置状态
* const UINT16 logSectionId, ID
* const UINT8 linShiXianSuSetState,
*
* Created By LQ 2025.11.06
*/
void SetLogSecLinShiXianSuStateZc(const UINT16 logSectionId, const UINT8 linShiXianSuSetState);
/*
* ZC发送的逻辑区段初始占用状态
* const UINT16 logSectionId, ID
* 0
* 0x55
* 0xAA
* 0xBB
* Created By LQ 2025.11.06
*/
UINT8 GetLogSecOccupyStateZc(const UINT16 logSectionId);
/*
* ZC发送的逻辑区段初始占用状态
* const UINT16 logSectionId, ID
* const UINT8 curOccupyState,
*
* Created By LQ 2025.11.06
*/
void SetLogSecOccupyStateZc(const UINT16 logSectionId, const UINT8 curOccupyState);
/*
* ZC发送的逻辑区段通信车占用状态
* const UINT16 logSectionId, ID
* 0
* 0x55
* 0xAA
* Created By LQ 2025.11.06
*/
UINT8 GetLogSecTXOccupyStateZc(const UINT16 logSectionId);
/*
* ZC发送的逻辑区段通信车占用状态
* const UINT16 logSectionId, ID
* const UINT8 curOccupyState,
*
* Created By LQ 2025.11.06
*/
void SetLogSecTXOccupyStateZc(const UINT16 logSectionId, const UINT8 curOccupyState);
/*
* ZC发送的计轴区段ARB状态
* const UINT16 axisSectionId, ID
* 0
* 0x55 ARB状态
* 0xaa ARB
* Created By LQ 2025.11.07
*/
UINT8 GetAxisSecArbStateZc(const UINT16 axisSectionId);
/*
* ZC发送的计轴区段ARB状态
* const UINT16 axisSectionId, ID
* const UINT8 arbState, ARB状态
*
* Created By LQ 2025.11.07
*/
void SetAxisSecArbStateZc(const UINT16 axisSectionId, const UINT8 arbState);
/*
* ZC发送的物理区段停稳状态
* const UINT16 phySectionId, ID
* 0
* 0x55
* 0xAA
* Created By LQ 2025.11.07
*/
UINT8 GetPhySecStopSteadyZcOrVobc(const UINT16 phySectionId);
/*
* ZC发送的物理区段停稳状态
* const UINT16 phySectionId, ID
* const UINT8 stopSteadyState,
*
* Created By LQ 2025.11.07
*/
void SetPhySecStopSteadyZcOrVobc(const UINT16 phySectionId, const UINT8 stopSteadyState);
/*
* ZC发送的全线雨雪模式
* void
* 0x55
* 0xAA
* Created By LQ 2025.11.10
*/
UINT8 GetAllSnowModelZc(void);
/*
* ZC发送的全线雨雪模式
* UINT8 setmodle 线
* void
* Created By LQ 2025.11.10
*/
void SetAllSnowModelZc(UINT8 setmodle);
/*
* ZC发送的本地区间雨雪站台数量
*
*
* Created By LQ 2025.11.10
*/
UINT8 GetLocalAreaSnowNumZc(void);
/*
* ZC发送的本地区间雨雪信息
*
*
* Created By LQ 2025.11.10
*/
AreaSnowInfoStruct* GetLocalAreaSnowZc(void);
/*
* ZC发送的本地区间雨雪信息
* const UINT8 cAreaSnowNum
* const AreaSnowInfoStruct pAreaSnowBuf[LOCAL_AREA_SNOW_SUM_MAX]
*
* Created By LQ 2025.11.10
*/
void SetLocalAreaSnowInfoZc(const UINT8 cAreaSnowNum, const AreaSnowInfoStruct pAreaSnowBuf[LOCAL_AREA_SNOW_SUM_MAX]);
/*
* ZC发送的本地雨雪模式命令
*
* 0x55
* 0xAA
* Created By LQ 2025.11.10
*/
UINT8 GetLocalSnowModelZc(void);
/*
* ZC发送的本地雨雪模式命令
* UINT8 setmodle
*
* Created By LQ 2025.11.10
*/
void SetLocalSnowModelZc(UINT8 setmodle);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
@@ -70,8 +70,6 @@ UINT16* dsuATSIndex; /*ATS
UINT16* dsuCIIndex; /*CI信息索引数组*/ UINT16* dsuCIIndex; /*CI信息索引数组*/
UINT16* dsuRCIndex; /*CI信息索引数组*/
UINT16* dsuARIndex; /*新增加的结构体自动折返表,对应索引数组*/ UINT16* dsuARIndex; /*新增加的结构体自动折返表,对应索引数组*/
UINT16* dsuZCComZoneIndex; /*新增加的ZC共管区域,对应索引数组 2012.1.5*/ UINT16* dsuZCComZoneIndex; /*新增加的ZC共管区域,对应索引数组 2012.1.5*/
@@ -73,8 +73,6 @@ extern UINT16* dsuAROutIndex; /*
extern UINT16* dsuATSIndex; /*ATS信息索引数组*/ extern UINT16* dsuATSIndex; /*ATS信息索引数组*/
extern UINT16* dsuCIIndex; /*CI信息索引数组*/ extern UINT16* dsuCIIndex; /*CI信息索引数组*/
extern UINT16* dsuRCIndex; /*CI信息索引数组*/
extern UINT16* dsuARIndex; /*新增加的结构体自动折返表,对应索引数组*/ extern UINT16* dsuARIndex; /*新增加的结构体自动折返表,对应索引数组*/
File diff suppressed because it is too large Load Diff
+3 -32
View File
@@ -60,9 +60,8 @@
#define OC_PHYSEC_CFG_STR_MEMBER_NUM ((UINT8)6) #define OC_PHYSEC_CFG_STR_MEMBER_NUM ((UINT8)6)
#define AXIS_TYPE_YONGLIE ((UINT8)(0x01)) /*永列*/ #define AXIS_TYPE_YONGLIE ((UINT8)(0x01)) /*永列*/
#define AXIS_TYPE_KEANDA ((UINT8)(0x02)) /*科安达既有线路接口*/ #define AXIS_TYPE_KEANDA ((UINT8)(0x02)) /*科安达*/
#define AXIS_TYPE_FUHAOSHENG ((UINT8)(0x03)) /*富豪盛*/ #define AXIS_TYPE_FUHAOSHENG ((UINT8)(0x03)) /*富豪盛*/
#define AXIS_TYPE_STANDARD_INTERFACE ((UINT8)(0x04)) /*科安达城轨标准接口*/
#define INDICATOR_MAX_SIZE ((UINT16)2000) /*报警灯最大数组大小*/ #define INDICATOR_MAX_SIZE ((UINT16)2000) /*报警灯最大数组大小*/
@@ -585,13 +584,6 @@ UINT8 OCConfigDataStructInit(UINT16* len, CHAR* FSName, UINT32 DataTypeID, UINT3
*********************************************/ *********************************************/
UINT8 OCSwitchConfigDataStructInit(CHAR *FSName); UINT8 OCSwitchConfigDataStructInit(CHAR *FSName);
/*********************************************
*OC
*FSName文件指针
*01
*********************************************/
UINT8 OCSwitchCfgZzjDataStuInit(CHAR* FSName);
/********************************************* /*********************************************
*OC OC2.1.6 *OC OC2.1.6
*FSName文件指针 *FSName文件指针
@@ -633,9 +625,9 @@ UINT8 OCPhySecConfigDataStructInit(CHAR *FSName);
* *
* UINT16 ocIdoc编号 * UINT16 ocIdoc编号
* *
* UINT8id * UINT16id
*/ */
UINT8 GetCiIdByOcId(UINT16 ocId); UINT16 GetCiIdByOcId(UINT16 ocId);
/********************************************* /*********************************************
*---- *----
@@ -829,12 +821,6 @@ UINT8 EaConfigDataStructInit(CHAR * FSName);
*cgh-CID-2539-5OC_配置数据表 *cgh-CID-2539-5OC_配置数据表
*********************************************/ *********************************************/
void R_OCSwitchConfigDataFromChar(UINT8* pDataAddr); void R_OCSwitchConfigDataFromChar(UINT8* pDataAddr);
/*********************************************
*OC
*pDataAddr
*01
*********************************************/
void R_OCSwitchZzjCfgDataFromChar(UINT8* pDataAddr);
/********************************************* /*********************************************
* *
@@ -951,20 +937,5 @@ UINT8 AgLinkExistRelCGFlagCalc(LinkDataConfigStru* pLinkScCfgDtStr);
*********************************************/ *********************************************/
UINT8 BGLinkRelAGLinkCal(LinkDataConfigStru* pLinkScCfgDtStr); UINT8 BGLinkRelAGLinkCal(LinkDataConfigStru* pLinkScCfgDtStr);
/*
*:
*: CHAR * FSName
*:
*:
CI_TYPE_ZX 1 线
CI_TYPE_CLD 4
CI_TYPE_SCX 2 线
CI_TYPE_TCC 3
CI_ERROR 0
* gEmapCiConfigStrus初始化之前
* by fan 20250909
*/
UINT8 GetdsuStaticDataCiType(UINT8 chCiID);
#endif #endif
+77 -302
View File
@@ -2432,9 +2432,14 @@ UINT8 ReadSystemParamConfDataNew(const UINT8 ciId,SystemParameterStructNew* Syst
/*OC-TMC通信故障判断时间(ms*/ /*OC-TMC通信故障判断时间(ms*/
SystemParameterStru->TmcOcCommunicationErrorTime = dquCICfgDtStr.SystemParaStrNew.TmcOcCommunicationErrorTime; SystemParameterStru->TmcOcCommunicationErrorTime = dquCICfgDtStr.SystemParaStrNew.TmcOcCommunicationErrorTime;
if (CI_TYPE_TCC == dsuStaticHeadStru.pCIStruStru[dsuCIIndex[ciId]].wType)
/*本联锁类型,TCC转CLD已经在ReadEmapCiConfig处理*/ {
SystemParameterStru->CiType = gEmapCiConfigStrus[ciId].ciType; SystemParameterStru->CiType = CI_TYPE_CLD;
}
else
{
SystemParameterStru->CiType = (UINT8)dsuStaticHeadStru.pCIStruStru[dsuCIIndex[ciId]].wType;
}
SystemParameterStru->dwLineMinTrainLength = dquCICfgDtStr.SystemParaStrNew.dwLineMinTrainLength; SystemParameterStru->dwLineMinTrainLength = dquCICfgDtStr.SystemParaStrNew.dwLineMinTrainLength;
@@ -3255,7 +3260,6 @@ static void CIInitEmap(DSU_EMAP_STRU dsuEmapStruPar)
dsuAROutIndex = dsuEmapStruPar.dsuEmapIndexStru->dsuAROutIndex; /*无人折返退出区域信息索引数组*/ dsuAROutIndex = dsuEmapStruPar.dsuEmapIndexStru->dsuAROutIndex; /*无人折返退出区域信息索引数组*/
dsuATSIndex = dsuEmapStruPar.dsuEmapIndexStru->dsuATSIndex; /*ATS信息索引数组*/ dsuATSIndex = dsuEmapStruPar.dsuEmapIndexStru->dsuATSIndex; /*ATS信息索引数组*/
dsuCIIndex = dsuEmapStruPar.dsuEmapIndexStru->dsuCIIndex; /*CI信息索引数组*/ dsuCIIndex = dsuEmapStruPar.dsuEmapIndexStru->dsuCIIndex; /*CI信息索引数组*/
dsuRCIndex = dsuEmapStruPar.dsuEmapIndexStru->dsuRCIndex; /*CI信息索引数组*/
dsuARIndex = dsuEmapStruPar.dsuEmapIndexStru->dsuARIndex; /*新增加的结构体自动折返表,对应索引数组*/ dsuARIndex = dsuEmapStruPar.dsuEmapIndexStru->dsuARIndex; /*新增加的结构体自动折返表,对应索引数组*/
dsuZCComZoneIndex = dsuEmapStruPar.dsuEmapIndexStru->dsuZCComZoneIndex; /*新增加的ZC共管区域,对应索引数组 2012.1.5*/ dsuZCComZoneIndex = dsuEmapStruPar.dsuEmapIndexStru->dsuZCComZoneIndex; /*新增加的ZC共管区域,对应索引数组 2012.1.5*/
dsuConResSpeedIndex = dsuEmapStruPar.dsuEmapIndexStru->dsuConResSpeedIndex; /*统一限速索引数组*/ dsuConResSpeedIndex = dsuEmapStruPar.dsuEmapIndexStru->dsuConResSpeedIndex; /*统一限速索引数组*/
@@ -3454,128 +3458,51 @@ UINT8 ReadVirtualDevicesInit(PsdConfigDataStruct* psdCfgData, EsbConfigDataStruc
*/ */
void ReadEmapCiConfig(EmapCiConfigStru emapVerArr[]) void ReadEmapCiConfig(EmapCiConfigStru emapVerArr[])
{ {
UINT16 wCIStruSum = 0u; UINT16 ciStruSum = 0u;
UINT16 wRCStruSum = 0u;
UINT16 i; UINT16 i;
UINT8 ciId; UINT8 ciId;
UINT8 jj = 0U; UINT8 jj = 0U;
if (NULL != emapVerArr) if (NULL != emapVerArr)
{ {
wCIStruSum = dsuDataLenStru.wCILen; ciStruSum = dsuDataLenStru.wCILen;
for (i = 0u; i < wCIStruSum; i++) for (i = 0u;i < ciStruSum;i++)
{ {
ciId = (UINT8)(dsuStaticHeadStru.pCIStruStru[i].wID & 0x00FF); ciId = (UINT8)(dsuStaticHeadStru.pCIStruStru[i].wID);
emapVerArr[ciId].devId = ciId; emapVerArr[ciId].devId = ciId;
emapVerArr[ciId].ciType = (UINT8)(dsuStaticHeadStru.pCIStruStru[i].wType); emapVerArr[ciId].ciType = (UINT8)(dsuStaticHeadStru.pCIStruStru[i].wType);
if (CI_TYPE_TCC == dsuStaticHeadStru.pCIStruStru[i].wType) if (CI_TYPE_TCC == dsuStaticHeadStru.pCIStruStru[i].wType)
{ {
emapVerArr[ciId].ciType = CI_TYPE_CLD; emapVerArr[ciId].ciType = CI_TYPE_CLD;
} }
if (RC_WORK_MODE_CI == CI_SYSTEM_TYPE_RCI) emapVerArr[ciId].dataVerCheckCIAndVOBC = dsuStaticHeadStru.pCIStruStru[i].dwVersionOfCIToVOBC;
emapVerArr[ciId].dataVerCheckCIAndZC = dsuStaticHeadStru.pCIStruStru[i].dwVersionOfCIToZC;
emapVerArr[ciId].dataVerCheckCIAndATS = dsuStaticHeadStru.pCIStruStru[i].dwVersionOfCIToATS;
emapVerArr[ciId].dataVerCheckCIAndTMC = dsuStaticHeadStru.pCIStruStru[i].dwVersionOfCIToTMC;
/*与相邻联锁数据校验信息*/
emapVerArr[ciId].chAdjoinCICount = dsuStaticHeadStru.pCIStruStru[i].dwAdjoinCICount;
for (jj = 0U; jj < CI_TRAINSMIT_CI_MAX_NUM; jj++)
{ {
emapVerArr[ciId].dataVerCheckCIAndVOBC = dsuStaticHeadStru.pCIStruStru[i].dwVersionOfCIToVOBC; emapVerArr[ciId].wAdjoinCIId[jj] = dsuStaticHeadStru.pCIStruStru[i].dwAdjoinCIId[jj];
emapVerArr[ciId].dataVerCheckCIAndZC = dsuStaticHeadStru.pCIStruStru[i].dwVersionOfCIToZC; emapVerArr[ciId].dwAdjoinCIShareCheckData[jj] = dsuStaticHeadStru.pCIStruStru[i].dwAdjoinCIShareCheckData[jj];
emapVerArr[ciId].dataVerCheckCIAndATS = dsuStaticHeadStru.pCIStruStru[i].dwVersionOfCIToATS;
emapVerArr[ciId].dataVerCheckCIAndTMC = dsuStaticHeadStru.pCIStruStru[i].dwVersionOfCIToTMC;
/*与相邻CI联锁数据校验信息*/
emapVerArr[ciId].chAdjoinCICount = dsuStaticHeadStru.pCIStruStru[i].dwAdjoinCICount;
for (jj = 0U; jj < CI_TRAINSMIT_CI_MAX_NUM; jj++)
{
emapVerArr[ciId].wAdjoinCIId[jj] = dsuStaticHeadStru.pCIStruStru[i].dwAdjoinCIId[jj];
emapVerArr[ciId].dwAdjoinCIShareCheckData[jj] = dsuStaticHeadStru.pCIStruStru[i].dwAdjoinCIShareCheckData[jj];
}
/*与相邻RC联锁数据校验信息*/
emapVerArr[ciId].chAdjoinRCCount = dsuStaticHeadStru.pCIStruStru[i].dwAdjoinRCCount;
for (jj = 0U; jj < CI_TRAINSMIT_CI_MAX_NUM; jj++)
{
emapVerArr[ciId].wAdjoinRCId[jj] = dsuStaticHeadStru.pCIStruStru[i].dwAdjoinRCId[jj];
emapVerArr[ciId].dwAdjoinRCShareCheckData[jj] = dsuStaticHeadStru.pCIStruStru[i].dwAdjoinRCShareCheckData[jj];
}
/*与本控区RC/CI校验信息*/
emapVerArr[ciId].dwLocalShareCheckData = dsuStaticHeadStru.pCIStruStru[i].dwLocalShareCheckData;
for (jj = 0U; jj < CI_TRAINSMIT_AXIS_MAX_NUM; jj++)
{
emapVerArr[ciId].ciTransmitAxisId[jj] = dsuStaticHeadStru.pCIStruStru[i].dwCIToAxleID[jj];
emapVerArr[ciId].ciTransmitAxisCheckData[jj] = dsuStaticHeadStru.pCIStruStru[i].dwCIToAxleShareCheckData[jj];
}
/*与OC系统数据校验信息*/
emapVerArr[ciId].chAdjoinOcCount = dsuStaticHeadStru.pCIStruStru[i].chAdjoinOcCount;
for (jj = 0U; jj < CI_TRAINSMIT_OC_MAX_NUM; jj++)
{
emapVerArr[ciId].wAdjoinOcId[jj] = dsuStaticHeadStru.pCIStruStru[i].wAdjoinOcId[jj];
emapVerArr[ciId].dwAdjoinOcShareCheckData[jj] = dsuStaticHeadStru.pCIStruStru[i].dwAdjoinOcShareCheckData[jj];
}
} }
else
for (jj = 0U; jj < CI_TRAINSMIT_AXIS_MAX_NUM; jj++)
{ {
; /*RC模式校验数据信息根据RC表初始化*/ emapVerArr[ciId].ciTransmitAxisId[jj] = dsuStaticHeadStru.pCIStruStru[i].dwCIToAxleID[jj];
emapVerArr[ciId].ciTransmitAxisCheckData[jj] = dsuStaticHeadStru.pCIStruStru[i].dwCIToAxleShareCheckData[jj];
} }
}
/*与OC系统数据校验信息*/
if (RC_WORK_MODE_TIOC == CI_SYSTEM_TYPE_RCI) emapVerArr[ciId].chAdjoinOcCount = dsuStaticHeadStru.pCIStruStru[i].chAdjoinOcCount;
{ for (jj = 0U; jj < CI_TRAINSMIT_OC_MAX_NUM; jj++)
wRCStruSum = dsuDataLenStru.wRCLen;
for (i = 0u; i < wRCStruSum; i++)
{ {
/*并非所有联锁均包含在RC表,因此未配置在RC表中时根据CI表初始化*/ emapVerArr[ciId].wAdjoinOcId[jj] = dsuStaticHeadStru.pCIStruStru[i].wAdjoinOcId[jj];
ciId = (UINT8)(dsuStaticHeadStru.pRCStruStru[i].wID & 0x00FF); emapVerArr[ciId].dwAdjoinOcShareCheckData[jj] = dsuStaticHeadStru.pCIStruStru[i].dwAdjoinOcShareCheckData[jj];
emapVerArr[ciId].devId = ciId;
emapVerArr[ciId].ciType = (UINT8)(dsuStaticHeadStru.pRCStruStru[i].wType);
if (CI_TYPE_TCC == dsuStaticHeadStru.pRCStruStru[i].wType)
{
emapVerArr[ciId].ciType = CI_TYPE_CLD;
}
emapVerArr[ciId].dataVerCheckCIAndVOBC = dsuStaticHeadStru.pRCStruStru[i].dwVersionOfCIToVOBC;
emapVerArr[ciId].dataVerCheckCIAndZC = dsuStaticHeadStru.pRCStruStru[i].dwVersionOfCIToZC;
emapVerArr[ciId].dataVerCheckCIAndATS = dsuStaticHeadStru.pRCStruStru[i].dwVersionOfCIToATS;
emapVerArr[ciId].dataVerCheckCIAndTMC = dsuStaticHeadStru.pRCStruStru[i].dwVersionOfCIToTMC;
/*与相邻CI联锁数据校验信息*/
emapVerArr[ciId].chAdjoinCICount = dsuStaticHeadStru.pRCStruStru[i].dwAdjoinCICount;
for (jj = 0U; jj < CI_TRAINSMIT_CI_MAX_NUM; jj++)
{
emapVerArr[ciId].wAdjoinCIId[jj] = dsuStaticHeadStru.pRCStruStru[i].dwAdjoinCIId[jj];
emapVerArr[ciId].dwAdjoinCIShareCheckData[jj] = dsuStaticHeadStru.pRCStruStru[i].dwAdjoinCIShareCheckData[jj];
}
/*与相邻RC联锁数据校验信息*/
emapVerArr[ciId].chAdjoinRCCount = dsuStaticHeadStru.pRCStruStru[i].dwAdjoinRCCount;
for (jj = 0U; jj < CI_TRAINSMIT_CI_MAX_NUM; jj++)
{
emapVerArr[ciId].wAdjoinRCId[jj] = dsuStaticHeadStru.pRCStruStru[i].dwAdjoinRCId[jj];
emapVerArr[ciId].dwAdjoinRCShareCheckData[jj] = dsuStaticHeadStru.pRCStruStru[i].dwAdjoinRCShareCheckData[jj];
}
/*与本控区RC/CI校验信息*/
emapVerArr[ciId].dwLocalShareCheckData = dsuStaticHeadStru.pRCStruStru[i].dwLocalShareCheckData;
/*与计轴系统校验信息*/
for (jj = 0U; jj < CI_TRAINSMIT_AXIS_MAX_NUM; jj++)
{
emapVerArr[ciId].ciTransmitAxisId[jj] = dsuStaticHeadStru.pRCStruStru[i].dwCIToAxleID[jj];
emapVerArr[ciId].ciTransmitAxisCheckData[jj] = dsuStaticHeadStru.pRCStruStru[i].dwCIToAxleShareCheckData[jj];
}
/*与OC系统数据校验信息*/
emapVerArr[ciId].chAdjoinOcCount = dsuStaticHeadStru.pRCStruStru[i].chAdjoinOcCount;
for (jj = 0U; jj < CI_TRAINSMIT_OC_MAX_NUM; jj++)
{
emapVerArr[ciId].wAdjoinOcId[jj] = dsuStaticHeadStru.pRCStruStru[i].wAdjoinOcId[jj];
emapVerArr[ciId].dwAdjoinOcShareCheckData[jj] = dsuStaticHeadStru.pRCStruStru[i].dwAdjoinOcShareCheckData[jj];
}
} }
} }
else
{
; /*已初始化*/
}
} }
} }
@@ -3642,7 +3569,7 @@ UINT8 dquDevName2HlhtId(const UINT16 LocalDevName, const UINT16 logId, UINT32 *p
UINT8 retVal = CI_ERROR; /*函数返回值*/ UINT8 retVal = CI_ERROR; /*函数返回值*/
UINT8 retOfQueryDevId = 0u; /*查询函数返回值*/ UINT8 retOfQueryDevId = 0u; /*查询函数返回值*/
UINT32 hlhtId = 0u; /*互联互通ID*/ UINT32 hlhtId = 0u; /*互联互通ID*/
UINT32 szHlhtIdBuf[2] = {0u, 0u}; UINT32 szHlhtIdBuf[2] = {0u, 0u}; /*VOBC或ITE的互联互通ID数组*/
UINT32 dwIdIndex = 0u; /*索引*/ UINT32 dwIdIndex = 0u; /*索引*/
UINT8 devType = 0u; /*设备类型*/ UINT8 devType = 0u; /*设备类型*/
UINT8 devId = 0u; /*设备ID*/ UINT8 devId = 0u; /*设备ID*/
@@ -3663,19 +3590,8 @@ UINT8 dquDevName2HlhtId(const UINT16 LocalDevName, const UINT16 logId, UINT32 *p
case DEVTYPE_CI: case DEVTYPE_CI:
retOfQueryDevId = dquQueryOutDevId(QFUN_IDMAP_CI_ID, devId, &hlhtId); retOfQueryDevId = dquQueryOutDevId(QFUN_IDMAP_CI_ID, devId, &hlhtId);
break; break;
case DEVTYPE_RC:
retOfQueryDevId = dquQueryOutDevId(QFUN_IDMAP_RC_ID, devId, &hlhtId);
break;
case DEVTYPE_VOBC: case DEVTYPE_VOBC:
case DEVTYPE_IVOC: retOfQueryDevId = dquQueryOutVobcDevId(devId, szHlhtIdBuf);
if (DEVTYPE_VOBC == devType)
{
retOfQueryDevId = dquQueryOutVobcDevId(devId, szHlhtIdBuf);
}
else
{
retOfQueryDevId = dquQueryOutIvocDevId(devId, szHlhtIdBuf);
}
switch(logId) switch(logId)
{ {
@@ -3696,21 +3612,7 @@ UINT8 dquDevName2HlhtId(const UINT16 LocalDevName, const UINT16 logId, UINT32 *p
retOfQueryDevId = dquQueryOutDevId(IDMAP_DSU_ID, devId, &hlhtId); retOfQueryDevId = dquQueryOutDevId(IDMAP_DSU_ID, devId, &hlhtId);
break; break;
case DEVTYPE_AXLE: case DEVTYPE_AXLE:
retOfQueryDevId = dquQueryOutAxleDevId(devId, szHlhtIdBuf); retOfQueryDevId = dquQueryOutDevId(IDMAP_AXLE_ID, devId, &hlhtId);
switch (logId)
{
case 1U:
dwIdIndex = 0U;
break;
case 2U:
dwIdIndex = 1U;
break;
default:
dwIdIndex = 0U;
break;
}
hlhtId = szHlhtIdBuf[dwIdIndex];
break;
break; break;
case DEVTYPE_ITE: case DEVTYPE_ITE:
retOfQueryDevId = dquQueryOutIteDevId((UINT16)devId, szHlhtIdBuf); retOfQueryDevId = dquQueryOutIteDevId((UINT16)devId, szHlhtIdBuf);
@@ -3769,14 +3671,21 @@ UINT8 dquHlhtId2VobcName(IN UINT32 EtcsId, OUT UINT16 *pDevName, OUT UINT16 *pEn
UINT8 ret = 0U; UINT8 ret = 0U;
UINT8 endId = 0U; UINT8 endId = 0U;
UINT16 index = 0U; UINT16 index = 0U;
UINT8 type = 0U; RSSP2_DEVICE_TYPE type = DEVICE_TYPE_UNKNOWN;
if ((NULL != pDevName) && (NULL != pEndId)) if ((NULL != pDevName) && (NULL != pEndId))
{ {
*pDevName = 0U; *pDevName = 0;
*pEndId = 0U; *pEndId = 0;
ret = 1U; ret = 1;
}
else
{
ret = 0;
}
if (1U == ret)
{
endId = GET_VOBC_END_ID(EtcsId); endId = GET_VOBC_END_ID(EtcsId);
switch (endId) switch (endId)
{ {
@@ -3793,63 +3702,40 @@ UINT8 dquHlhtId2VobcName(IN UINT32 EtcsId, OUT UINT16 *pDevName, OUT UINT16 *pEn
*pEndId = VOBC_ENDID_REDUN; *pEndId = VOBC_ENDID_REDUN;
break; break;
default: default:
ret = 0U; ret = 0;
break; break;
} }
}
if (1U == ret) (void)GetEtcsTypeFromEtcsId(EtcsId, &type);
if ((DEVICE_TYPE_ATP != type) && (DEVICE_TYPE_AOM != type))
{
ret = 0;
}
if (1U == ret)
{
if (DEVICE_TYPE_ATP == type)
{ {
type = (UINT8)((EtcsId / 256U / 256U / 256U) & 0x1FU); /*将互联互通ID转为设备类型*/ ret = dquQueryVobcDevLgId2Index(EtcsId, ETCSID_MASK, &index, pEndId);
if ((HLHT_DEVTYPE_VOBC == type) || (HLHT_DEVTYPE_IVOC == type) || (HLHT_DEVTYPE_AOM == type))
{
if (HLHT_DEVTYPE_VOBC == type)
{
ret = dquQueryVobcDevLgId2Index(EtcsId, ETCSID_MASK, &index, pEndId);
}
else if (HLHT_DEVTYPE_IVOC == type)
{
ret = dquQueryIvocDevLgId2Index(EtcsId, ETCSID_MASK, &index, pEndId);
}
else
{
ret = dquQueryAOMDevBits2Index(EtcsId, ETCSID_MASK, &index);
}
if (1U == ret)
{
if (HLHT_DEVTYPE_VOBC == type)
{
*pDevName = DEVTYPE_VOBC * 256U + index;
}
else if (HLHT_DEVTYPE_IVOC == type)
{
*pDevName = DEVTYPE_IVOC * 256U + index;
}
else
{
*pDevName = DEVTYPE_AOM * 256U + index;
}
}
else
{
ret = 0U;
}
}
else
{
ret = 0U;
}
} }
else else
{ {
ret = 0U; ret = dquQueryAOMDevBits2Index(EtcsId, ETCSID_MASK, &index);
} }
} }
else
{
ret = 0U;
}
if (1U == ret)
{
if (DEVICE_TYPE_ATP == type)
{
*pDevName = DEVTYPE_VOBC * 256U + index;
}
else
{
*pDevName = DEVTYPE_AOM * 256U + index;
}
}
return ret; return ret;
} }
@@ -4168,13 +4054,14 @@ UINT8 dquQueryVobcDevLgId2Index(UINT32 devId, UINT32 bitMask, UINT16 *pInDevInde
for (index = 0U; index < DataCount; index++) for (index = 0U; index < DataCount; index++)
{ {
pwVobcDevId = dquGetVobcDevIdArray(index); pwVobcDevId = dquGetVobcDevIdArray(index);
if ((devId & bitMask) == (pwVobcDevId[0] & bitMask)) if (((devId&bitMask) == (pwVobcDevId[0] & bitMask))
)
{ {
*pInDevIndex = dquGetVobcIndex(index); *pInDevIndex = dquGetVobcIndex(index);
*wLogicId = 1U; *wLogicId = 1U;
tempCount++; tempCount++;
} }
else if ((devId & bitMask) == (pwVobcDevId[1] & bitMask)) else if ((devId&bitMask) == (pwVobcDevId[1] & bitMask))
{ {
*pInDevIndex = dquGetVobcIndex(index); *pInDevIndex = dquGetVobcIndex(index);
*wLogicId = 2U; *wLogicId = 2U;
@@ -4202,64 +4089,6 @@ UINT8 dquQueryVobcDevLgId2Index(UINT32 devId, UINT32 bitMask, UINT16 *pInDevInde
return bRetVal; return bRetVal;
} }
/**************************************************
* Ivoc设备编号相应位数Ivoc索引
* UINT32 devId
* UINT32 bitMask
* UINT16* pInDevIndex
* UINT16* wLogicId ID
* 0-
* 1-
* Created By LQ 2025.08.28
***************************************************/
UINT8 dquQueryIvocDevLgId2Index(UINT32 devId, UINT32 bitMask, UINT16* pInDevIndex, UINT16* wLogicId)
{
UINT8 bRetVal = 0U;
UINT16 index = 0U;
UINT16 DataCount = 0U;
UINT32* pwVobcDevId = NULL;
UINT16 tempCount = 0U;/*查找到符合条件的设备索引值个数,找到的个数应为1,否则查找失败*/
if ((NULL != pInDevIndex) && (NULL != wLogicId))
{
DataCount = dquGetIvocNumLen();
for (index = 0U; index < DataCount; index++)
{
pwVobcDevId = dquGetIvocDevIdArray(index);
if ((devId & bitMask) == (pwVobcDevId[0] & bitMask))
{
*pInDevIndex = dquGetIvocIndex(index);
*wLogicId = 1U;
tempCount++;
}
else if ((devId & bitMask) == (pwVobcDevId[1] & bitMask))
{
*pInDevIndex = dquGetIvocIndex(index);
*wLogicId = 2U;
tempCount++;
}
else
{
/*无操作*/
}
}
if (1U == tempCount)
{
bRetVal = 1U;
}
else
{
;
}
}
else
{
;
}
return bRetVal;
}
/* /*
* CRC32函数CRC是从输入数据第一个字节的最高BIT开始的 * CRC32函数CRC是从输入数据第一个字节的最高BIT开始的
* 0x4c10db7L0x00000000,0x00000000 * 0x4c10db7L0x00000000,0x00000000
@@ -4450,18 +4279,10 @@ INT16 ReadEaConfigData(EaConfigStru* pEaConfigAddr)
*********************************************/ *********************************************/
UINT8 GetWLScreenTypeById(const UINT8 ciId) UINT8 GetWLScreenTypeById(const UINT8 ciId)
{ {
UINT8 cRetVal = TIOC_WLSCTEEN_UNVALID; UINT8 cRetVal = TIOC_WLSCTEEN_VALID;
UINT16 wRCStruSum = 0U;
UINT16 i = 0U; cRetVal = dsuStaticHeadStru.pCIStruStru[dsuCIIndex[ciId]].cWLScreenType;
wRCStruSum = dsuDataLenStru.wRCLen;
for (i = 0u; i < wRCStruSum; i++)
{
if ((UINT16)ciId == (0x00FF &dsuStaticHeadStru.pRCStruStru[i].wID))
{
cRetVal = dsuStaticHeadStru.pRCStruStru[i].cWLScreenType;
break;
}
}
return cRetVal; return cRetVal;
} }
@@ -4811,49 +4632,3 @@ UINT8 ReadPhySecIndexInAxle(const UINT8 chLocalCiId, PhysicalSectionConfigDataSt
return chReval; return chReval;
} }
/*
* LINK
* void
* CI_SUCCESS,
* CI_ERROR,
*/
UINT16 QueryTrackBelongLink(void)
{
UINT16 i = 0u;
UINT16 j = 0u;
UINT16 wLinkId = 0u;
UINT16 phySec = 0u;
UINT8 chSysType = 0U;
UINT32 trackSecId = 0U;
UINT16 sum = 0u;
UINT8 retVal = CI_ERROR;
retVal = CI_SUCCESS;
for (i = 0u; i < dsuIdmapStru.dsuIdmapLenStru->wTrackSecNumLen; i++)
{
for (j = 0u; j < dsuIdmapStru.dsuStaticIdmapStru->pTrackSecNumStru[i].wTrackNum; j++)
{
trackSecId = dsuIdmapStru.dsuStaticIdmapStru->pTrackSecNumStru[i].dwTrackSecId[j];
if (0u!= trackSecId)
{
if (TRCAK_SECTION_SUM_MAX > sum)
{
gTrackSecConfigDataStru[sum].trackSecId = trackSecId;
gTrackSecConfigDataStru[sum].linkId = dsuIdmapStru.dsuStaticIdmapStru->pTrackSecNumStru[i].wLinkId;
sum++;
}
else
{
retVal = CI_ERROR;
break;
}
}
}
}
gTrackSectionCurSum = sum;
return retVal;
}
+1 -19
View File
@@ -434,18 +434,6 @@ UINT8 dquHlhtId2VobcName(IN UINT32 EtcsId, OUT UINT16 *pDevName, OUT UINT16 *pEn
***************************************************/ ***************************************************/
UINT8 dquQueryVobcDevLgId2Index(UINT32 devId, UINT32 bitMask, UINT16 *pInDevIndex, UINT16 *wLogicId); UINT8 dquQueryVobcDevLgId2Index(UINT32 devId, UINT32 bitMask, UINT16 *pInDevIndex, UINT16 *wLogicId);
/**************************************************
* Ivoc设备编号相应位数Ivoc索引
* UINT32 devId
* UINT32 bitMask
* UINT16* pInDevIndex
* UINT16* wLogicId ID
* 0-
* 1-
* Created By LQ 2025.08.28
***************************************************/
UINT8 dquQueryIvocDevLgId2Index(UINT32 devId, UINT32 bitMask, UINT16* pInDevIndex, UINT16* wLogicId);
/* /*
* CRC32函数CRC是从输入数据第一个字节的最高BIT开始的 * CRC32函数CRC是从输入数据第一个字节的最高BIT开始的
* 0x4c10db7L0x00000000,0x00000000 * 0x4c10db7L0x00000000,0x00000000
@@ -518,13 +506,7 @@ UINT8 EnsureNearAxleStorageLineAtrr(const UINT16 wAxleId);
* BY CGH 20250418 * BY CGH 20250418
*/ */
UINT8 ReadPhySecIndexInAxle(const UINT8 chLocalCiId, PhysicalSectionConfigDataStruct* pPhysicalSectionConfigDataStru); UINT8 ReadPhySecIndexInAxle(const UINT8 chLocalCiId, PhysicalSectionConfigDataStruct* pPhysicalSectionConfigDataStru);
/*
* LINK
* void
* CI_SUCCESS,
* CI_ERROR,
*/
UINT16 QueryTrackBelongLink(void);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
@@ -52,7 +52,7 @@ UINT8 RelayConfigDataStruFromChar(UINT8 * pDataAddr,RelayConfigDataStruct* pRela
{ {
/*所属OC ID (配置字段)*/ /*所属OC ID (配置字段)*/
OcIdBuff = dquCiShortFromChar(pData); OcIdBuff = dquCiShortFromChar(pData);
pRelayCfgDtStr->BelongCiId = GetCiIdByOcId(OcIdBuff); pRelayCfgDtStr->BelongCiId = (UINT8)(GetCiIdByOcId(OcIdBuff));
pRelayCfgDtStr->BelongOcId = OcIdBuff; pRelayCfgDtStr->BelongOcId = OcIdBuff;
pRelayCfgDtStr->BelongDrvOcId = pRelayCfgDtStr->BelongOcId; pRelayCfgDtStr->BelongDrvOcId = pRelayCfgDtStr->BelongOcId;
pRelayCfgDtStr->BelongVirCIid = GetOCBelongVirCIid((UINT8)OcIdBuff); pRelayCfgDtStr->BelongVirCIid = GetOCBelongVirCIid((UINT8)OcIdBuff);
@@ -223,8 +223,6 @@ UINT8 R_ScreenStructFromChar(UINT8 * pDataAddr,Relay_ScreenStruct* pScrnStr, UIN
} }
pScrnStr->wRelayCloseDoorId = dquCiShortFromChar(pData); /*关门继电器ID */ pScrnStr->wRelayCloseDoorId = dquCiShortFromChar(pData); /*关门继电器ID */
pData += 2u; pData += 2u;
pScrnStr->wRelayThreeEditGroupOpenDoorId = dquCiShortFromChar(pData); /*3编组开门继电器ID */
pData += 2u;
pScrnStr->wRelayFourEditGroupOpenDoorId = dquCiShortFromChar(pData); /*4编组开门继电器ID */ pScrnStr->wRelayFourEditGroupOpenDoorId = dquCiShortFromChar(pData); /*4编组开门继电器ID */
pData += 2u; pData += 2u;
pScrnStr->wRelaySixEditGroupOpenDoorId = dquCiShortFromChar(pData); /*6编组开门继电器ID */ pScrnStr->wRelaySixEditGroupOpenDoorId = dquCiShortFromChar(pData); /*6编组开门继电器ID */
@@ -235,126 +233,6 @@ UINT8 R_ScreenStructFromChar(UINT8 * pDataAddr,Relay_ScreenStruct* pScrnStr, UIN
pData += 2u; pData += 2u;
pScrnStr->doorReopenRelayId = dquCiShortFromChar(pData); /*站台门再次开门继电器ID*/ pScrnStr->doorReopenRelayId = dquCiShortFromChar(pData); /*站台门再次开门继电器ID*/
pData += 2u; pData += 2u;
pScrnStr->doorReopenRelayId2 = dquCiShortFromChar(pData); /*站台门再次开门继电器ID2*/
pData += 2u;
pScrnStr->departureConfirmRelayId = dquCiShortFromChar(pData); /*发车确认继电器ID*/
pData += 2u;
pScrnStr->detectStartRelayId = dquCiShortFromChar(pData); /*启动探测继电器ID*/
pData += 2u;
pScrnStr->detectStopRelayId = dquCiShortFromChar(pData); /*停止探测继电器ID*/
pData += 2u;
pScrnStr->obstacleRelayId = dquCiShortFromChar(pData); /*障碍物继电器ID*/
pData += 2u;
pScrnStr->gapDetMuLockRelayId = dquCiShortFromChar(pData); /*间隙探测互锁解除继电器ID*/
pData += 2u;
pScrnStr->closeStateRelayId = dquCiShortFromChar(pData); /*关门状态继电器ID*/
pData += 2u;
if (40U < rowLen)
{
pScrnStr->wClearPasseSteadyLightRelayId = dquCiShortFromChar(pData); /*清客确认按钮指示灯稳灯继电器ID*/
pData += 2u;
pScrnStr->wClearPasseFlashLightRelayId = dquCiShortFromChar(pData); /*清客确认按钮指示灯闪灯继电器ID*/
pData += 2u;
pScrnStr->wClearPassengerButtonRelayId = dquCiShortFromChar(pData); /*清客确认按钮继电器ID*/
pData += 2u;
}
if (46U < rowLen)
{
pScrnStr->wCleFarePCBButtonRelayId = dquCiShortFromChar(pData); /*清客确认箱PCB按钮继电器*/
pData += 2u;
pScrnStr->wCleFarePDBFlaLigRelayId = dquCiShortFromChar(pData); /*清客确认箱PDB按钮指示灯闪灯继电器*/
pData += 2u;
}
if (50U < rowLen)
{
pScrnStr->wPobBsdRelayId = dquCiShortFromChar(pData); /*站台再开门按钮指示灯继电器*/
pData += 2u;
pScrnStr->wPcbBsdRelayId = dquCiShortFromChar(pData); /*站台再关门按钮指示灯继电器*/
pData += 2u;
}
if (54U < rowLen)
{
pScrnStr->wVideoQkLight1RelayId = dquCiShortFromChar(pData); /*清客按钮箱视频清客指示灯1(绿)继电器*/
pData += 2U;
pScrnStr->wVideoQkLight2RelayId = dquCiShortFromChar(pData); /*清客按钮箱视频清客指示灯2(红)继电器*/
pData += 2U;
}
if (58U < rowLen)
{
pScrnStr->chControlType = *pData; /*屏蔽门控制类型*/
pData += 1U;
}
else
{/*若没有这一列配置*/
pScrnStr->chControlType = PSD_CONTROL_TYPE_RCI; /*由RCI控制*/
}
rtnvalue = 1u;
}
return rtnvalue;
}
/*********************************************
*
*pDataAddr数据地址 pScrnStr屏蔽门继电器配置数据结构体指针,UINT16 rowLen
*01
*********************************************/
UINT8 R_ScreenStructFromCharT(UINT8* pDataAddr, Relay_ScreenStruct* pScrnStr, UINT16 rowLen)
{
UINT8* pData = pDataAddr;
UINT8 rtnvalue = 0u;
UINT8 localCiPattern = 0u; /*本CI模式*/
if ((NULL == pDataAddr) || (NULL == pScrnStr))
{
rtnvalue = 0u;
}
else
{
localCiPattern = GetLocalCiPattern();
pScrnStr->wScreenId = dquCiShortFromChar(pData); /*屏蔽门ID (配置字段)*/
pData += 2u;
if (CI_PATTERN_FULL_ELECTRONIC == localCiPattern)
{
pScrnStr->wOcId = dquCiShortFromChar(pData); /*OC ID*/
pData += 2u;
}
pScrnStr->wRelayRelatedId = dquCiShortFromChar(pData); /*互锁解除继电器ID */
pData += 2u;
if (CI_PATTERN_FULL_ELECTRONIC == localCiPattern)
{
pScrnStr->wRelayRelatedId2 = dquCiShortFromChar(pData); /*互锁解除继电器ID2 */
pData += 2;
}
pScrnStr->wRelayDoorClosedId = dquCiShortFromChar(pData); /*门关继电器ID */
pData += 2u;
if (CI_PATTERN_FULL_ELECTRONIC == localCiPattern)
{
pScrnStr->wRelayDoorClosedId2 = dquCiShortFromChar(pData); /*门关继电器ID2 */
pData += 2;
}
pScrnStr->wRelayCloseDoorId = dquCiShortFromChar(pData); /*关门继电器ID */
pData += 2u;
pScrnStr->wRelayFourEditGroupOpenDoorId = dquCiShortFromChar(pData); /*4编组开门继电器ID */
pData += 2u;
pScrnStr->wRelaySixEditGroupOpenDoorId = dquCiShortFromChar(pData); /*6编组开门继电器ID */
pData += 2u;
pScrnStr->wRelayEightEditGroupOpenDoorId = dquCiShortFromChar(pData); /*8编组开门继电器ID */
pData += 2u;
pScrnStr->wRelayDoorButtonId = dquCiShortFromChar(pData); /*PSD按钮继电器*/
pData += 2u;
pScrnStr->doorReopenRelayId = dquCiShortFromChar(pData); /*站台门再次开门继电器ID*/
pData += 2u;
pScrnStr->departureConfirmRelayId = dquCiShortFromChar(pData); /*发车确认继电器ID*/ pScrnStr->departureConfirmRelayId = dquCiShortFromChar(pData); /*发车确认继电器ID*/
pData += 2u; pData += 2u;
pScrnStr->detectStartRelayId = dquCiShortFromChar(pData); /*启动探测继电器ID*/ pScrnStr->detectStartRelayId = dquCiShortFromChar(pData); /*启动探测继电器ID*/
@@ -797,7 +675,7 @@ UINT8 R_BaoJingDengStruFromChar(UINT8 * pDataAddr,Relay_BaoJingDengStruct* pBjdS
if (CI_PATTERN_FULL_ELECTRONIC == localCiPattern) if (CI_PATTERN_FULL_ELECTRONIC == localCiPattern)
{ {
OCid = pBjdStr->wBelongCiId;/*对应全电子联锁,读取到的是OCid*/ OCid = pBjdStr->wBelongCiId;/*对应全电子联锁,读取到的是OCid*/
pBjdStr->wBelongCiId = (UINT16)GetCiIdByOcId(pBjdStr->wBelongCiId);/*找到0Cid对应联锁id*/ pBjdStr->wBelongCiId = GetCiIdByOcId(pBjdStr->wBelongCiId);/*找到0Cid对应联锁id*/
if(FUNC_SWITCH_ON == includeVirFlag) if(FUNC_SWITCH_ON == includeVirFlag)
{ {
pBjdStr->wBelongVirCIid = GetOCBelongVirCIid((UINT8)OCid);/*找到0Cid对应虚拟联锁id*/ pBjdStr->wBelongVirCIid = GetOCBelongVirCIid((UINT8)OCid);/*找到0Cid对应虚拟联锁id*/
@@ -950,18 +828,6 @@ UINT8 R_SpksDataFromChar(UINT8 * pDataAddr,RelaySpksStruct* pSpksStr, UINT16 rea
pSpksStr->outsideRelayId = dquCiShortFromChar(pData); /*室外SPKS指示灯继电器*/ pSpksStr->outsideRelayId = dquCiShortFromChar(pData); /*室外SPKS指示灯继电器*/
pData += 2u; pData += 2u;
if (14U < realRowLen)
{
pSpksStr->buzzRelayId = dquCiShortFromChar(pData); /*蜂鸣继电器*/
pData += 2u;
pSpksStr->cutBuzzRelayId = dquCiShortFromChar(pData); /*切除蜂鸣继电器*/
pData += 2u;
}
else
{
;/*对未配置的数据做兼容*/
}
} }
else if (CI_PATTERN_TRADITIONAL == localCiPattern) else if (CI_PATTERN_TRADITIONAL == localCiPattern)
@@ -1236,7 +1102,7 @@ UINT8 R_OCIndicStruFromChar(UINT8* pDataAddr, OCStationIndicConfigDataStru* pInd
pData += 2; /*ID*/ pData += 2; /*ID*/
ocid = dquCiShortFromChar(pData); /*所属ID*/ ocid = dquCiShortFromChar(pData); /*所属ID*/
pData += 2; pData += 2;
belongCiId = GetCiIdByOcId(ocid); belongCiId = (UINT8)GetCiIdByOcId(ocid);
if (localCiId == belongCiId) if (localCiId == belongCiId)
{ {
@@ -36,12 +36,6 @@ UINT8 R_EmegencyStopStructFromChar(UINT8 * pDataAddr,Relay_EmgcyStpStruct* pEmgc
*01 *01
*********************************************/ *********************************************/
UINT8 R_ScreenStructFromChar(UINT8* pDataAddr, Relay_ScreenStruct* pScrnStr, UINT16 rowLen); UINT8 R_ScreenStructFromChar(UINT8* pDataAddr, Relay_ScreenStruct* pScrnStr, UINT16 rowLen);
/*********************************************
*
*pDataAddr数据地址 pScrnStr屏蔽门继电器配置数据结构体指针,UINT16 rowLen
*01
*********************************************/
UINT8 R_ScreenStructFromCharT(UINT8* pDataAddr, Relay_ScreenStruct* pScrnStr, UINT16 rowLen);
/********************************************* /*********************************************
* *
@@ -348,108 +348,95 @@ UINT8 InitRelay_ScreenStru(CHAR* CIDataName)
UINT32 DataSize = 0U; /*数据大小(字节数)*/ UINT32 DataSize = 0U; /*数据大小(字节数)*/
UINT16 j = 0U; UINT16 j = 0U;
UINT16 wRealRowCount = 0U; UINT16 wRealRowCount = 0U;
UINT8 rtnValue = 0U; UINT8 rtnValue = 0u;
UINT32 excelId = 0U; /*excel id*/ UINT32 excelId = 0u; /*excel id*/
UINT32 sheetId = 0U; /*sheet id*/ UINT32 sheetId = 0u; /*sheet id*/
UINT32 rowLen = 0U; /*行长度*/ UINT32 rowLen = 0u; /*行长度*/
UINT8 localCiPattern = 0U; /*本CI模式*/ UINT8 localCiPattern = 0u; /*本CI模式*/
UINT8 chOcPattern = 0U;
/*已经初始化了,不用老是调用执行过程*/ /*已经初始化了,不用老是调用执行过程*/
if (RelayData.pRelayScreenStr != NULL) if (RelayData.pRelayScreenStr != NULL)
{ {
rtnValue = 1U; /*已初始化,直接返回1*/ rtnValue = 1u;
return rtnValue;
}
localCiPattern = GetLocalCiPattern();
if (CI_PATTERN_TRADITIONAL == localCiPattern)
{
excelId = CI_DATA_TYPE;
sheetId = RELAY_SCREEN_ID;
} }
else else
{ {
localCiPattern = GetLocalCiPattern(); excelId = OC_DATA_TYPE;
if (CI_PATTERN_TRADITIONAL == localCiPattern) sheetId = OC_RELAY_SCREEN_ID;
}
/*读取 默认行车序列 数据*/
funcRtn = dquGetConfigDataNew(CIDataName, excelId, sheetId, &pDataAddr, &DataSize, &wRealRowCount);
if (funcRtn == 0u)
{
/*函数调用失败*/
rtnValue = 0u;
}
else
{
rtnValue = 1u;
}
if (1U == rtnValue)
{/*求得个数*/
if (DataSize%wRealRowCount != 0u)
{ {
excelId = CI_DATA_TYPE; debug_infor_printf((const)"\nCI_RELAY_DATA,SCREEN_RELAY len %d not equal to fs", rowLen);
sheetId = RELAY_SCREEN_ID; DebugPrintAppError(ERROR_fs_columns_len_not_equal_to_ci_software, CI_DEVICE_TYPE_FS_TABLE, (excelId << 8) + sheetId, PRINT_ONCE);
rtnValue = 0u;
} }
else else
{ {
excelId = OC_DATA_TYPE; ; /*不处理*/
sheetId = OC_RELAY_SCREEN_ID;
} }
/*读取 默认行车序列 数据*/ }
funcRtn = dquGetConfigDataNew(CIDataName, excelId, sheetId, &pDataAddr, &DataSize, &wRealRowCount);
if (funcRtn == 0U) if (1U == rtnValue)
{
RelayDataLen.RelayScreenStrLen = wRealRowCount;
rowLen = DataSize / wRealRowCount;
if (DataSize < rowLen)
{ {
/*函数调用失败*/
rtnValue = 0U; rtnValue = 0U;
} }
else else
{ {
rtnValue = 1U; /*动态申请空间*/
if ((0U != DataSize) && (0U != wRealRowCount)) RelayData.pRelayScreenStr = (Relay_ScreenStruct *)MyNew((UINT32)(sizeof(Relay_ScreenStruct) * RelayDataLen.RelayScreenStrLen));
/*动态申请空间失败*/
if (NULL == RelayData.pRelayScreenStr)
{ {
if (DataSize % wRealRowCount != 0U) RelayDataLen.RelayScreenStrLen = 0u;
{ rtnValue = 0u;
debug_infor_printf((const)"\nCI_RELAY_DATA,SCREEN_RELAY len %d not equal to fs", rowLen);
DebugPrintAppError(ERROR_fs_columns_len_not_equal_to_ci_software, CI_DEVICE_TYPE_FS_TABLE, (excelId << 8) + sheetId, PRINT_ONCE);
rtnValue = 0u;
}
else
{
; /*不处理*/
}
if (1U == rtnValue)
{
RelayDataLen.RelayScreenStrLen = wRealRowCount;
rowLen = DataSize / wRealRowCount;
if (DataSize < rowLen)
{
rtnValue = 0U;
}
else
{
/*动态申请空间*/
RelayData.pRelayScreenStr = (Relay_ScreenStruct*)MyNew((UINT32)(sizeof(Relay_ScreenStruct) * RelayDataLen.RelayScreenStrLen));
/*动态申请空间失败*/
if (NULL == RelayData.pRelayScreenStr)
{
RelayDataLen.RelayScreenStrLen = 0U;
rtnValue = 0U;
}
else
{
/*内存先设为无效*/
(void)memset(RelayData.pRelayScreenStr, 0x00, sizeof(Relay_ScreenStruct) * RelayDataLen.RelayScreenStrLen);
/*解析数据到 默认行车序列 结构体数组 */
for (j = 0u; j < RelayDataLen.RelayScreenStrLen; j++)
{
pScreenStr = RelayData.pRelayScreenStr + j;
/*填充数据结构体*/
chOcPattern = GetLocalOcPattern();
if(DATA_TYPE_NEW == chOcPattern)
{
rtnValue &= R_ScreenStructFromChar(pDataAddr, pScreenStr, (UINT16)rowLen);
}
else
{
rtnValue &= R_ScreenStructFromCharT(pDataAddr, pScreenStr, (UINT16)rowLen);
}
pDataAddr += rowLen;
}
}
}
}
else
{
; /*不处理*/
}
} }
else else
{ {
rtnValue = 1U; /*无真实PSD,直接返回1*/ /*内存先设为无效*/
(void)memset(RelayData.pRelayScreenStr, 0x00, sizeof(Relay_ScreenStruct) * RelayDataLen.RelayScreenStrLen);
/*解析数据到 默认行车序列 结构体数组 */
for (j = 0u; j<RelayDataLen.RelayScreenStrLen; j++)
{
pScreenStr = RelayData.pRelayScreenStr + j;
/*填充数据结构体*/
rtnValue &= R_ScreenStructFromChar(pDataAddr, pScreenStr, (UINT16)rowLen);
pDataAddr += rowLen;
}
} }
} }
} }
else
{
; /*不处理*/
}
return rtnValue; return rtnValue;
} }
+1 -8
View File
@@ -67,7 +67,7 @@
#define OTHER_CI_DATA_LEN ((UINT8)42) #define OTHER_CI_DATA_LEN ((UINT8)42)
#define ROUTE_DATA_ID ((UINT32)1) /*CI联锁表 -- 进路表*/ #define ROUTE_DATA_ID ((UINT32)1) /*CI联锁表 -- 进路表*/
#define ROUTE_DATA_LEN ((UINT32)55) /*51:增加不为接近时是否延时解锁 +2 CBTC开放需开放 +2*/ #define ROUTE_DATA_LEN ((UINT32)53) /*51:增加不为接近时是否延时解锁 +2 CBTC开放需开放*/
#define OVERLAP_LOCK_COND_DATA_ID ((UINT8)16) /*CI联锁表 -- 保护区段锁闭条件表*/ #define OVERLAP_LOCK_COND_DATA_ID ((UINT8)16) /*CI联锁表 -- 保护区段锁闭条件表*/
#define OVERLAP_LOCK_COND_DATA_LEN ((UINT8)44)/*保护区段锁闭条件表新增一列:防护道岔组IDUDE2*/ #define OVERLAP_LOCK_COND_DATA_LEN ((UINT8)44)/*保护区段锁闭条件表新增一列:防护道岔组IDUDE2*/
@@ -96,10 +96,6 @@
#define TRANSROUTE_ZHEFANSIG_ID ((UINT8)27) /*CI联锁表 -- 转换轨进路折返信号机id表*/ #define TRANSROUTE_ZHEFANSIG_ID ((UINT8)27) /*CI联锁表 -- 转换轨进路折返信号机id表*/
#define SideProtecGroup_ID ((UINT8)28) /*CI联锁表 -- 侧防条件组表ID*/
#define SideProtec_ID ((UINT8)29) /*CI联锁表 -- 侧防条件表ID*/
#define CONTACT_DATA_LEN ((UINT8)12U) #define CONTACT_DATA_LEN ((UINT8)12U)
/*单轨使用*/ /*单轨使用*/
@@ -316,8 +312,6 @@ typedef struct S_RouteStruct
UINT16 wBLCKOtherCIID; /*点式级别其他联锁ID*/ UINT16 wBLCKOtherCIID; /*点式级别其他联锁ID*/
UINT16 wFloodGateIdBuf[ROUTE_MAX_FLOOD_GATE_NUM]; /*防淹门*/ UINT16 wFloodGateIdBuf[ROUTE_MAX_FLOOD_GATE_NUM]; /*防淹门*/
UINT8 wNeedDelayUnlock; /*进路人解、取消需要延时解锁*/ UINT8 wNeedDelayUnlock; /*进路人解、取消需要延时解锁*/
UINT16 wSidePretecGroupID; /*侧防条件组ID*/
} LS_RouteStruct; } LS_RouteStruct;
/*全自动折返进路表数据结构体*/ /*全自动折返进路表数据结构体*/
typedef struct S_AllAutoRtnRouteStruct typedef struct S_AllAutoRtnRouteStruct
@@ -339,7 +333,6 @@ typedef struct S_OverlapLockCondStruct
UINT16 szIncludeFloodGateId[ROUTE_MAX_FLOOD_GATE_NUM]; /*包含防淹门ID*/ UINT16 szIncludeFloodGateId[ROUTE_MAX_FLOOD_GATE_NUM]; /*包含防淹门ID*/
UINT16 wOverlapThisZhaoChaRelayId; /*保护区段本端照查继电器ID*/ UINT16 wOverlapThisZhaoChaRelayId; /*保护区段本端照查继电器ID*/
UINT16 wOverlapThatZhaoChaRelayId; /*保护区段对端照查继电器ID*/ UINT16 wOverlapThatZhaoChaRelayId; /*保护区段对端照查继电器ID*/
UINT16 wSidePretectGroupId; /*保护区段侧防条件组ID*/
} LS_OveralpLockCondStru; } LS_OveralpLockCondStru;
/*进路内多开道岔数据结构体*/ /*进路内多开道岔数据结构体*/
@@ -12,8 +12,6 @@
************************************************************************/ ************************************************************************/
#include "dquCILSStruFrmChar.h" #include "dquCILSStruFrmChar.h"
#include "dquCIReadCommonChar.h" #include "dquCIReadCommonChar.h"
#include "dquCIInit.h"
/********************************************* /*********************************************
* *
*pDataAddr数据地址 pLongRouteStr长进路数据结构体指针 *pDataAddr数据地址 pLongRouteStr长进路数据结构体指针
@@ -639,11 +637,6 @@ UINT8 LS_RouteStruFromChar(UINT8 * pDataAddr,LS_RouteStruct* pRouteStr)
pRouteStr->wNeedDelayUnlock = *pData; pRouteStr->wNeedDelayUnlock = *pData;
pData++; pData++;
pRouteStr->wSidePretecGroupID = dquCiShortFromChar(pData);
pData += 2u;
rtnvalue = 1u; rtnvalue = 1u;
return rtnvalue; return rtnvalue;
} }
@@ -748,10 +741,6 @@ UINT8 LS_OverlapLockCondStruFromChar(UINT8 * pDataAddr, LS_OveralpLockCondStru *
pOverlapLockCondStru->wOverlapThatZhaoChaRelayId = dquCiShortFromChar(pData); pOverlapLockCondStru->wOverlapThatZhaoChaRelayId = dquCiShortFromChar(pData);
pData += LS_DATA_DUAL_BYTE_ELEM_LEN; pData += LS_DATA_DUAL_BYTE_ELEM_LEN;
/*保护区段侧防条件组ID*/
pOverlapLockCondStru->wSidePretectGroupId = dquCiShortFromChar(pData);
pData += LS_DATA_DUAL_BYTE_ELEM_LEN;
rtnvalue = 1u; rtnvalue = 1u;
} }
return rtnvalue; return rtnvalue;
@@ -1076,171 +1065,4 @@ UINT8 LS_TransZFSigFromChar(UINT8* pDataAddr, LS_TransRouteZFSigStruct* pTransRo
rtnvalue = 1u; rtnvalue = 1u;
} }
return rtnvalue; return rtnvalue;
}
/*********************************************
*
* pDataAddr数据地址
* pSideProtecGroupStru
* 01
* fan
*********************************************/
UINT8 LS_read_SideProtecGroupData(UINT8* pDataAddr, SideProtecGroupStru* pSideProtecGroupStru)
{
UINT8* pData = pDataAddr;
UINT16 i = 0u;
UINT8 rtnvalue = 0u;
UINT8 j = 0u;
UINT8 flag = 0u;
if ((NULL == pDataAddr) || (NULL == pSideProtecGroupStru))
{
rtnvalue = 0u;
}
else
{
rtnvalue = 1u;
pSideProtecGroupStru->GroupID = dquCiShortFromChar(pData);
pData += 2u;
for (j = 0u; j < SIDE_PROTECT_NUM_MAX; j++)
{
pSideProtecGroupStru->RouteSideProtecBuf[j].SideProtecID = dquCiShortFromChar(pData);
pData += 2u;
if ((0u < pSideProtecGroupStru->RouteSideProtecBuf[j].SideProtecID) && (UINT16_MAX > pSideProtecGroupStru->RouteSideProtecBuf[j].SideProtecID))
{
if (1u == flag)
{/*读到过无效值,再次出现有效值则失败*/
rtnvalue = 0u;
break;
}
else
{
pSideProtecGroupStru->RouteSideProtecNum++;
}
}
else
{
flag = 1u;
}
}
}
return rtnvalue;
}
/*********************************************
*
* pDataAddr数据地址
* pSideProtecStru
* 01
* fan
*********************************************/
UINT8 LS_read_SideProtecData(UINT8* pDataAddr, SideProtecStru* pSideProtecStru)
{
UINT8* pData = pDataAddr;
UINT8 rtnvalue = 0u;
UINT8 j = 0u;
UINT8 flag = 0u;
if ((NULL == pDataAddr) || (NULL == pSideProtecStru))
{
rtnvalue = 0u;
}
else
{
rtnvalue = 1u;
pSideProtecStru->SideProtecID = dquCiShortFromChar(pData);
pData += 2u;
pSideProtecStru->KeysSwitchID = dquCiShortFromChar(pData);
pData += 2u;
pSideProtecStru->KeysSwicthPos =*pData;
pData ++;
pSideProtecStru->SideProtecSignalID = dquCiShortFromChar(pData);
pData += 2u;
for (j = 0u; j < SIDE_PROTECT_SWITCH_NUM_MAX; j++)
{
pSideProtecStru->SideProtecSwitchBuf[j].SideProtecSwitchID = dquCiShortFromChar(pData);
pData += 2u;
pSideProtecStru->SideProtecSwitchBuf[j].SideProtecSwitchPos = *pData;
pData++;
if ((0u < pSideProtecStru->SideProtecSwitchBuf[j].SideProtecSwitchID) && (UINT16_MAX > pSideProtecStru->SideProtecSwitchBuf[j].SideProtecSwitchID))
{
if (1u == flag)
{/*读到过无效值,再次出现有效值则失败*/
rtnvalue = 0u;
break;
}
else
{
pSideProtecStru->SideProtecSwitchNum++;
}
}
else
{
flag = 1u;
}
}
if (0u == rtnvalue)
{
;/*已经失败了,就不需要遍历后续的了*/
}
else
{
flag = 0u;
for (j = 0u; j < SIDE_PROTECT_PHYSEC_NUM_MAX; j++)
{
pSideProtecStru->SideProtecPhyBuf[j].SideProtecPhySecID = dquCiShortFromChar(pData);
pData += 2u;
pSideProtecStru->SideProtecPhyBuf[j].SideProtecDirect = *pData;
pData++;
if ((0u < pSideProtecStru->SideProtecPhyBuf[j].SideProtecPhySecID) && (UINT16_MAX > pSideProtecStru->SideProtecPhyBuf[j].SideProtecPhySecID))
{
if ((CI_SYSTEM_DIRECTION_DOWN == pSideProtecStru->SideProtecPhyBuf[j].SideProtecDirect)
|| (CI_SYSTEM_DIRECTION_UP == pSideProtecStru->SideProtecPhyBuf[j].SideProtecDirect))
{
if (pSideProtecStru->SideProtecPhyBuf[j].SideProtecDirect == dquCICfgDtStr.SystemParaStrNew.LinkLogicDirUpAndDown)
{
pSideProtecStru->SideProtecPhyBuf[j].SideProtecDirect = CI_SYSTEM_DIRECTION_DOWN;
}
else
{
pSideProtecStru->SideProtecPhyBuf[j].SideProtecDirect = CI_SYSTEM_DIRECTION_UP;
}
}
else
{
flag = 1u;
}
if (1u == flag)
{/*读到过无效值,再次出现有效值则失败*/
rtnvalue = 0u;
break;
}
else
{
pSideProtecStru->SideProtecPhyNum++;
}
}
else
{
flag = 1u;
}
}
}
}
return rtnvalue;
} }
@@ -201,21 +201,5 @@ UINT8 LS_LgcSecInvEachStruFromChar(UINT8* pDataAddr, LS_EachLgcIntrudeStruct* pL
* fan * fan
*********************************************/ *********************************************/
UINT8 LS_TransZFSigFromChar(UINT8* pDataAddr, LS_TransRouteZFSigStruct* pTransRouteZFSigStru); UINT8 LS_TransZFSigFromChar(UINT8* pDataAddr, LS_TransRouteZFSigStruct* pTransRouteZFSigStru);
/*********************************************
*
* pDataAddr数据地址
* pSideProtecGroupStru
* 01
* fan
*********************************************/
UINT8 LS_read_SideProtecGroupData(UINT8* pDataAddr, SideProtecGroupStru* pSideProtecGroupStru);
/*********************************************
*
* pDataAddr数据地址
* pSideProtecStru
* 01
* fan
*********************************************/
UINT8 LS_read_SideProtecData(UINT8* pDataAddr, SideProtecStru* pSideProtecStru);
#endif #endif
+1 -281
View File
@@ -1574,7 +1574,7 @@ UINT8 InitLS_OverlapLockCondStru(CHAR *LSDataName)
{ {
if (0U != DataSize % rowLen) if (0U != DataSize % rowLen)
{ {
debug_infor_printf((const)"\nCI_LS_DATA,OVERLAP_LOCK_COND len %d not equal to fs", OVERLAP_LOCK_COND_DATA_ID); 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); 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; rtnValue = 0u;
} }
@@ -2359,284 +2359,4 @@ UINT8 InitLS_TransRouteRtnDataStruct(CHAR* LSDataName)
} }
} }
return rtnValue; return rtnValue;
}
/*********************************************
*
* LSDataName指针
* 01
*********************************************/
UINT8 InitLSSideProtec(CHAR* LSDataName)
{
UINT8 rtnValue = 0U;
UINT16 i = 0U;
UINT8 j = 0U;
UINT16 k = 0U;
UINT16 wRouteSideProtecNum = 0U;
UINT16 wSideProtecID = 0U;
if (NULL != LSDataName)
{
/*首先初始化侧防条件组表*/
rtnValue = InitLS_SideProtecGroupStru(LSDataName);
}
else
{
/*返回失败*/
}
/*再初始化侧防条件表*/
if (1U == rtnValue)
{
rtnValue = InitLS_SideProtecStru(LSDataName);
}
else
{
/*返回失败*/
}
/*根据ID为侧防道岔组表匹配侧防条件*/
if (1U == rtnValue)
{
for (i = 0u; i < LSDataLen.LSSideProtecGroupStruLen; i++)/*遍历侧防条件组表*/
{
wRouteSideProtecNum = LSData.pLSSideProtecGroupStru[i].RouteSideProtecNum;
for (j = 0u; j < wRouteSideProtecNum; j++)/*遍历每个侧防条件*/
{
wSideProtecID = LSData.pLSSideProtecGroupStru[i].RouteSideProtecBuf[j].SideProtecID;
if (0u < wSideProtecID)/*侧防条件组表中的侧防条件ID大于0*/
{
for (k = 0u; k < LSDataLen.LSRouteSideProtecStruLen; k++)
{
if (wSideProtecID == LSData.pLSRouteSideProtecStru[k].SideProtecID)
{
CommonMemCpy(&LSData.pLSSideProtecGroupStru[i].RouteSideProtecBuf[j], sizeof(SideProtecStru), &LSData.pLSRouteSideProtecStru[k], sizeof(SideProtecStru));
break;/*找到则跳出*/
}
else
{
/*继续遍历*/
}
}
if (k == LSDataLen.LSRouteSideProtecStruLen)
{
rtnValue = 0u;
}
}
else
{
break;
}
}
}
}
else
{
/*返回失败*/
}
return rtnValue;
}
/*********************************************
*
* LSDataName指针
* 01
*********************************************/
UINT8 InitLS_SideProtecGroupStru(CHAR* LSDataName)
{
UINT8 funcRtn = 0U;
SideProtecGroupStru* pSideProtecGroupStru = NULL; /*侧防条件组表*/
UINT8* pDataAddr = NULL; /*数据地址*/
UINT32 DataSize = 0U; /*数据大小(字节数)*/
UINT16 i = 0U;
UINT16 realRowCount = 0U; /*实际表数据的行数*/
UINT16 realRowLen = 0U; /*实际表数据的一行的长度*/
UINT8 rtnValue = 0U;
/*已经初始化了,不用老是调用执行过程*/
if (NULL != LSData.pLSSideProtecGroupStru)
{
rtnValue = 1U;
}
else
{
rtnValue = 1U;
/*读取侧防条件组表数据*/
funcRtn = dquGetConfigDataNew(LSDataName, LS_DATA_TYPE, SideProtecGroup_ID, &pDataAddr, &DataSize, &realRowCount);
if (0U == funcRtn)
{
/*函数调用失败*/
rtnValue = 0U;
debug_infor_printf((const)"\n SideProtecGroup_ID_TABLE NO IN FS\n");
}
else
{
if ((0U != DataSize) && (0U != realRowCount))
{
if (0U != (DataSize % realRowCount))
{
debug_infor_printf((const)"\nTIOC_LS_DATA,SideProtecGroup_ID_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 << 8U) + SideProtecGroup_ID, PRINT_ONCE);
rtnValue = 0U;
}
else
{
/*数据实际一行的数据字节长度*/
realRowLen = (UINT16)(DataSize / realRowCount);
LSDataLen.LSSideProtecGroupStruLen = realRowCount;
/*动态申请空间*/
LSData.pLSSideProtecGroupStru = (SideProtecGroupStru*)MyNew((UINT32)(sizeof(SideProtecGroupStru) * LSDataLen.LSSideProtecGroupStruLen));
if (NULL == LSData.pLSSideProtecGroupStru)
{
LSDataLen.LSSideProtecGroupStruLen = 0U; /*动态申请空间失败,返回0*/
rtnValue = 0U;
}
else
{
/*内存先设为无效*/
(void)CommonMemSet(LSData.pLSSideProtecGroupStru, sizeof(SideProtecGroupStru) * LSDataLen.LSSideProtecGroupStruLen, 0U, sizeof(SideProtecGroupStru) * LSDataLen.LSSideProtecGroupStruLen);
/*解析数据到进路侧防条件结构体数组 */
for (i = 0U; i < LSDataLen.LSSideProtecGroupStruLen; i++)
{
pSideProtecGroupStru = LSData.pLSSideProtecGroupStru + i;
/*填充数据结构体*/
rtnValue = LS_read_SideProtecGroupData(pDataAddr, pSideProtecGroupStru);
pDataAddr += realRowLen;
if (0U == rtnValue)
{
debug_infor_printf((const)"\nRead SideProtecGroup_ID_TABLE Error: Error RowCount %d\n ", (i + 1U));
break;
}
else
{
/*继续读取*/
}
}
}
}
}
else
{
debug_infor_printf((const)"\SideProtecGroup_ID_TABLE_ERR DataSize %d realRowCount %d\n ", DataSize, realRowCount);
}
}
}
return rtnValue;
}
/*********************************************
*
* LSDataName指针
* 01
*********************************************/
UINT8 InitLS_SideProtecStru(CHAR* LSDataName)
{
UINT8 funcRtn = 0U;
SideProtecStru* pSideProtecStru = NULL; /*侧防条件表*/
UINT8* pDataAddr = NULL; /*数据地址*/
UINT32 DataSize = 0U; /*数据大小(字节数)*/
UINT16 i = 0U;
UINT16 realRowCount = 0U; /*实际表数据的行数*/
UINT16 realRowLen = 0U; /*实际表数据的一行的长度*/
UINT8 rtnValue = 0U;
/*已经初始化了,不用老是调用执行过程*/
if (NULL != LSData.pLSRouteSideProtecStru)
{
rtnValue = 1U;
}
else
{
rtnValue = 1U;
/*读取侧防条件组表数据*/
funcRtn = dquGetConfigDataNew(LSDataName, LS_DATA_TYPE, SideProtec_ID, &pDataAddr, &DataSize, &realRowCount);
if (0U == funcRtn)
{
/*函数调用失败*/
rtnValue = 0U;
debug_infor_printf((const)"\n SideProtec_ID_TABLE NO IN FS\n");
}
else
{
if ((0U != DataSize) && (0U != realRowCount))
{
if (0U != (DataSize % realRowCount))
{
debug_infor_printf((const)"\nTIOC_LS_DATA,SideProtec_ID_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 << 8U) + SideProtec_ID, PRINT_ONCE);
rtnValue = 0U;
}
else
{
/*数据实际一行的数据字节长度*/
realRowLen = (UINT16)(DataSize / realRowCount);
LSDataLen.LSRouteSideProtecStruLen = realRowCount;
/*动态申请空间*/
LSData.pLSRouteSideProtecStru = (SideProtecStru*)MyNew((UINT32)(sizeof(SideProtecStru) * LSDataLen.LSRouteSideProtecStruLen));
if (NULL == LSData.pLSRouteSideProtecStru)
{
LSDataLen.LSRouteSideProtecStruLen = 0U; /*动态申请空间失败,返回0*/
rtnValue = 0U;
}
else
{
/*内存先设为无效*/
(void)CommonMemSet(LSData.pLSRouteSideProtecStru, sizeof(SideProtecStru) * LSDataLen.LSRouteSideProtecStruLen, 0U, sizeof(SideProtecStru) * LSDataLen.LSRouteSideProtecStruLen);
/*解析数据到转换轨进路折返信号机id结构体数组 */
for (i = 0U; i < LSDataLen.LSRouteSideProtecStruLen; i++)
{
pSideProtecStru = LSData.pLSRouteSideProtecStru + i;
/*填充数据结构体*/
rtnValue = LS_read_SideProtecData(pDataAddr, pSideProtecStru);
pDataAddr += realRowLen;
if (0U == rtnValue)
{
debug_infor_printf((const)"\nRead SideProtec_ID_TABLE Error: Error RowCount %d\n ", (i + 1U));
break;
}
else
{
/*继续读取*/
}
}
}
}
}
else
{
debug_infor_printf((const)"\SideProtec_ID_TABLE_ERR DataSize %d realRowCount %d\n ", DataSize, realRowCount);
}
}
}
return rtnValue;
}
/*********************************************
*
* void
*
*********************************************/
UINT16 GetLSSideProtecStruLen(void)
{
return LSDataLen.LSRouteSideProtecStruLen;
}
/*********************************************
*
* void
*
*********************************************/
const SideProtecStru* GetLSSideProtecData(void)
{
return LSData.pLSRouteSideProtecStru;
} }
@@ -44,8 +44,6 @@ typedef struct S_LSDataStruct
LS_ContactLineStruct* pLSContactLineStr; /*逻辑区段关联联络线设备检查条件结构体*/ LS_ContactLineStruct* pLSContactLineStr; /*逻辑区段关联联络线设备检查条件结构体*/
LS_EachLgcIntrudeStruct* pLSLgcInvEachStru;/*逻辑区段互相侵限表*/ LS_EachLgcIntrudeStruct* pLSLgcInvEachStru;/*逻辑区段互相侵限表*/
LS_TransRouteZFSigStruct* pLSTransRouteZFSigStru; /*转换轨折返信号机结构体*/ LS_TransRouteZFSigStruct* pLSTransRouteZFSigStru; /*转换轨折返信号机结构体*/
SideProtecGroupStru* pLSSideProtecGroupStru; /*进路侧防条件组表结构体*/
SideProtecStru* pLSRouteSideProtecStru;/*进路侧防条件表初始化*/
}LSDataStruct; }LSDataStruct;
/*联锁数据结构*/ /*联锁数据结构*/
typedef struct S_LSDataStructLen typedef struct S_LSDataStructLen
@@ -77,8 +75,6 @@ typedef struct S_LSDataStructLen
UINT16 LSContactStruLen; /*逻辑区段关联联络线设备检查条件表长度*/ UINT16 LSContactStruLen; /*逻辑区段关联联络线设备检查条件表长度*/
UINT16 LSLgcInvEachLen; /*逻辑区段互相侵限条件表长度*/ UINT16 LSLgcInvEachLen; /*逻辑区段互相侵限条件表长度*/
UINT16 LSTransRouteZFSigStruLen; /*转换轨折返信号机表长度*/ UINT16 LSTransRouteZFSigStruLen; /*转换轨折返信号机表长度*/
UINT16 LSSideProtecGroupStruLen;/*侧防条件组表长度*/
UINT16 LSRouteSideProtecStruLen;/*侧防条件表长度*/
}LSDataStructLen; }LSDataStructLen;
/*********定义全局的联锁信息数据变量*******/ /*********定义全局的联锁信息数据变量*******/
@@ -266,36 +262,5 @@ UINT8 InitLS_ContactConfigDataStruct(CHAR* LSDataName);
*********************************************/ *********************************************/
UINT8 InitLS_TransRouteRtnDataStruct(CHAR* LSDataName); UINT8 InitLS_TransRouteRtnDataStruct(CHAR* LSDataName);
/*********************************************
*
* LSDataName指针
* 01
*********************************************/
UINT8 InitLSSideProtec(CHAR* LSDataName);
/*********************************************
*
* LSDataName指针
* 01
*********************************************/
UINT8 InitLS_SideProtecStru(CHAR* LSDataName);
/*********************************************
*
* LSDataName指针
* 01
*********************************************/
UINT8 InitLS_SideProtecGroupStru(CHAR* LSDataName);
/*********************************************
*
* void
*
*********************************************/
UINT16 GetLSSideProtecStruLen(void);
/*********************************************
*
* void
*
*********************************************/
const SideProtecStru* GetLSSideProtecData(void);
#endif #endif
File diff suppressed because it is too large Load Diff
+3 -18
View File
@@ -35,7 +35,7 @@
/*定义CI-ZC码位表单ID*/ /*定义CI-ZC码位表单ID*/
#define CI_ZC_MASK_TYPE ((UINT32)0xB3) #define CI_ZC_MASK_TYPE ((UINT32)0xB3)
#define CI_ZC_SWITCH_MASK_ID ((UINT32)1) /*CI-ZC道岔码位*/ #define CI_ZC_SWITCH_MASK_ID ((UINT32)1) /*CI-ZC道岔码位*/
#define CI_ZC_SWITCH_MASK_LEN ((UINT32)12) /*CI-ZC道岔码位字节长度--1行长度*/ #define CI_ZC_SWITCH_MASK_LEN ((UINT32)10) /*CI-ZC道岔码位字节长度--1行长度*/
#define CI_ZC_SIGNAL_MASK_ID ((UINT32)2) /*CI-ZC信号机码位*/ #define CI_ZC_SIGNAL_MASK_ID ((UINT32)2) /*CI-ZC信号机码位*/
#define CI_ZC_SIGNAL_MASK_LEN ((UINT32)16) /*CI-ZC信号机码位字节长度--1行长度*/ #define CI_ZC_SIGNAL_MASK_LEN ((UINT32)16) /*CI-ZC信号机码位字节长度--1行长度*/
@@ -47,10 +47,10 @@
#define CI_ZC_ESB_MASK_LEN ((UINT32)6) /*CI-ZC屏紧急停车按钮码位字节长度--1行长度*/ #define CI_ZC_ESB_MASK_LEN ((UINT32)6) /*CI-ZC屏紧急停车按钮码位字节长度--1行长度*/
#define CI_ZC_LOGIC_SGMT_MASK_ID ((UINT32)6) /*CI-ZC逻辑区段码位*/ #define CI_ZC_LOGIC_SGMT_MASK_ID ((UINT32)6) /*CI-ZC逻辑区段码位*/
#define CI_ZC_LOGIC_SGMT_MASK_LEN ((UINT32)20) /*CI-ZC逻辑区段码位字节长度--1行长度*/ #define CI_ZC_LOGIC_SGMT_MASK_LEN ((UINT32)18) /*CI-ZC逻辑区段码位字节长度--1行长度*/
#define CI_ZC_ROUTE_MASK_ID ((UINT32)7) /*CI-ZC进路码位*/ #define CI_ZC_ROUTE_MASK_ID ((UINT32)7) /*CI-ZC进路码位*/
#define CI_ZC_ROUTE_MASK_LEN ((UINT32)14) /*CI-ZC进路码位字节长度--1行长度*/ #define CI_ZC_ROUTE_MASK_LEN ((UINT32)10) /*CI-ZC进路码位字节长度--1行长度*/
#define CI_ZC_AXLE_SGMT_MASK_ID ((UINT32)5) /*CI-ZC计轴区段码位*/ #define CI_ZC_AXLE_SGMT_MASK_ID ((UINT32)5) /*CI-ZC计轴区段码位*/
#define CI_ZC_AXLE_SGMT_MASK_LEN ((UINT32)26) /*CI-ZC计轴区段码位字节长度--1行长度,Modified 20151015*/ #define CI_ZC_AXLE_SGMT_MASK_LEN ((UINT32)26) /*CI-ZC计轴区段码位字节长度--1行长度,Modified 20151015*/
@@ -180,12 +180,6 @@ UINT8 MaskCfgDtStruFrmCIATSEsbMask(UINT8 * FSDataName);
*********************************************/ *********************************************/
UINT8 MaskCfgDtStruFrmCIATSLogSgmt(UINT8 * FSDataName); UINT8 MaskCfgDtStruFrmCIATSLogSgmt(UINT8 * FSDataName);
/********************************************* /*********************************************
*CI-ATS逻辑区段码位-
*FSDataName件指针
*01
*********************************************/
UINT8 MaskCfgDtStruFrmCIATSLogSgmtT(UINT8* FSDataName);
/*********************************************
*CI-ATS进路码位 *CI-ATS进路码位
*FSDataName件指针 *FSDataName件指针
*01 *01
@@ -454,14 +448,5 @@ UINT8 MaskCfgStruFrmZCCIAxleSgmtMask2(UINT8 * FSDataName);
*01 *01
*********************************************/ *********************************************/
UINT8 MaskCfgStruFrmCIZCAxleSgmtMask2(UINT8 * FSDataName); UINT8 MaskCfgStruFrmCIZCAxleSgmtMask2(UINT8 * FSDataName);
/*****
******CI到ZC码位表解析
********/
/*********************************************
*CI-ZC道岔码位
*FSDataName件指针
*01
*********************************************/
UINT8 MaskCfgDtStruFrmCIZCSwitchMask2(UINT8* FSDataName);
#endif #endif

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