From 957ace26d6cfd3abc7f647d90015dd5981d975b4 Mon Sep 17 00:00:00 2001 From: lh <3191213465@qq.com> Date: Mon, 25 May 2026 15:42:34 +0800 Subject: [PATCH 01/15] =?UTF-8?q?=E9=98=B2=E6=8A=A4=E4=B8=BB=E7=B3=BB?= =?UTF-8?q?=E5=A4=B1=E6=95=88=E5=88=A4=E6=96=AD=EF=BC=8C=E7=AC=AC=E4=B8=80?= =?UTF-8?q?=E6=AC=A1=E6=8F=90=E4=BA=A4=EF=BC=8C=E5=BE=85=E8=B0=83=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TSCP/src/MSCP/PFM/PFM_InputOutput.c | 61 +++- TSCP/src/MSCP/SFM/SFM_2x2.c | 430 ++++++++++++++++++++-------- 2 files changed, 355 insertions(+), 136 deletions(-) diff --git a/TSCP/src/MSCP/PFM/PFM_InputOutput.c b/TSCP/src/MSCP/PFM/PFM_InputOutput.c index ceaf884..19df851 100644 --- a/TSCP/src/MSCP/PFM/PFM_InputOutput.c +++ b/TSCP/src/MSCP/PFM/PFM_InputOutput.c @@ -89,6 +89,11 @@ static CM_INT32 s_2oo2OutputCheckFrame_Pack(OUT CM_UINT8 buf[], IN CM_UINT32 Buf static CM_INT32 s_2x2OutputCheckFrame_Pack(OUT CM_UINT8 *buf, IN CM_UINT32 BufSize); /* 输入阶段的2x2同步 */ static void s_input_2x2sync(void); + +/** + * @brief 输出阶段的2取校验 + */ +static void s_output_2oo2check(IN CM_UINT8* check_2oo2_Buf, IN CM_UINT32 check_2oo2_Len); /** * @brief 输入阶段的2x2同步 */ @@ -698,18 +703,8 @@ void PFM_OutputProc(void) /*- 是否开启了2oo2功能 */ if (0x55u == g_PFM_Cfg.M_2oo2_Enable) { - /*- 2oo2交换输出校验帧 */ - ret = SFM_2oo2_Exchange_Currency(check_2oo2_Buf, check_2oo2_Len, buf_peer, (CM_UINT32)check_2oo2_Len, ENUM_2oo2_OUTPUT_CHECK); - - /*- 检查2oo2双机的输出校验帧是否一致 */ - CM_RE_ASSERT(check_2oo2_Len == ret, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_3, TSCP_DARK_ASSERT_1); - ret = CM_Memcmp(check_2oo2_Buf, buf_peer, (CM_SIZE_T)check_2oo2_Len); - if(0 != ret) - { - MSCP_LOG_DATALEN(check_2oo2_Buf,check_2oo2_Len,"Ouput check_2oo2_Buf"); - MSCP_LOG_DATALEN(buf_peer,check_2oo2_Len,"Ouput buf_peer"); - CM_RE_ASSERT(0, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_3, TSCP_DARK_ASSERT_2); - } + /* 2取校验 */ + (void)s_output_2oo2check(check_2oo2_Buf, (CM_UINT32)check_2oo2_Len); } else { @@ -723,6 +718,8 @@ void PFM_OutputProc(void) if (0x55u == g_PFM_Cfg.M_2x2_Enable) { /*- 输出阶段2x2处理 */ + ret = SFM_2oo2_Exchange_Currency(check_2x2_Buf, check_2x2_Len, &check_2x2_Buf[check_2x2_Len], sizeof(check_2x2_Buf) - check_2x2_Len, ENUM_2oo2_OUTPUT_EX); + check_2x2_Len += ret; SFM_2x2_OutputProc(check_2x2_Buf, check_2x2_Len); } else @@ -809,7 +806,6 @@ void PFM_OutputProc(void) void PFM_EndProc(void) { /*- 变量初始化 */ - CM_UINT32 crc = 0u; /* crc值 */ CM_UINT8 mybuf[8] = { 0u }; /* 本机2oo2缓冲区 */ CM_UINT8 peerbuf[8] = { 0u };/* 邻机2oo2缓冲区 */ CM_INT32 len = 0; /* 长度 */ @@ -823,7 +819,7 @@ void PFM_EndProc(void) { /*- 生成跟随数据的特征信息 */ CM_LongToChar((CM_UINT32)g_TxAppFollow_len, mybuf); - (void)CM_Memcpy(mybuf + 4, 4, g_TxAppFollow, 4); + CM_Memcpy(&mybuf[4u], 4u, g_TxAppFollow, 4u); /*- 2oo2交换特征信息 */ len = SFM_2oo2_Exchange_Currency(mybuf, 8, peerbuf, 8u, ENUM_2oo2_OUTPUT_CHECK); /*- 2oo2严格比较特征信息 */ @@ -831,6 +827,7 @@ void PFM_EndProc(void) if(0 == CM_Memcmp(mybuf, peerbuf, (CM_SIZE_T)8)) { /*- 无处理 */ + CM_Memcpy(&g_TxAppFollow[4u], 4u, &peerbuf[4u], 4u); } else { @@ -1918,5 +1915,41 @@ void PFM_CISendAppData(CM_UINT8* pData, CM_UINT32 dataLen) } } +/** + * @brief 输出阶段的2取校验 + */ +static void s_output_2oo2check(IN CM_UINT8* check_2oo2_Buf, IN CM_UINT32 check_2oo2_Len) +{ + CM_INT32 ret = 0, i = 0; + CM_UINT8 buf_peer[500] = {0u}; + /*- 2oo2交换输出校验帧 */ + CM_ASSERT(NULL != check_2oo2_Buf, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_15, TSCP_DARK_ASSERT_1); + ret = SFM_2oo2_Exchange_Currency(check_2oo2_Buf, check_2oo2_Len, buf_peer, (CM_UINT32)check_2oo2_Len, ENUM_2oo2_OUTPUT_CHECK); + /*- 检查2oo2双机的输出校验帧是否一致 */ + CM_RE_ASSERT(check_2oo2_Len == ret, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_15, TSCP_DARK_ASSERT_2); + ret = CM_Memcmp(check_2oo2_Buf, buf_peer, (CM_SIZE_T)check_2oo2_Len); + if(0 != ret) + { + MSCP_LOG_DATALEN(check_2oo2_Buf,check_2oo2_Len,"Ouput check_2oo2_Buf"); + MSCP_LOG_DATALEN(buf_peer,check_2oo2_Len,"Ouput buf_peer"); + for (i = 1; i <= g_2x2oo2_data_num; i++) + { + if ((CM_UINT32)CM_TRUE == g_2x2oo2_tx[g_2x2oo2_base][i].b_2oo2_Enable) + { + ret = CM_Memcmp(check_2oo2_Buf + 4 + (i - 1) * 8, buf_peer + 4 + (i - 1) * 8, 8); + if(ret != 0) + { + MSCP_LOG_MSG("2oo2 output compare err, INDEX = %d, len = %d\n", i, (CM_SIZE_T)g_2x2oo2_tx[g_2x2oo2_base][i].buf_len); + MSCP_LOG_BIN(g_2x2oo2_tx[g_2x2oo2_base][i].p_buf, (CM_SIZE_T)g_2x2oo2_tx[g_2x2oo2_base][i].buf_len); + } + } + else + { + /*二取标志未使能*/ + } + } + CM_RE_ASSERT(0, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_15, TSCP_DARK_ASSERT_3); + } +} diff --git a/TSCP/src/MSCP/SFM/SFM_2x2.c b/TSCP/src/MSCP/SFM/SFM_2x2.c index 98ac872..a0f987b 100644 --- a/TSCP/src/MSCP/SFM/SFM_2x2.c +++ b/TSCP/src/MSCP/SFM/SFM_2x2.c @@ -33,6 +33,9 @@ #include "stdarg.h" #include "SFM_Area.h" +#define BASE_FOLLOW_DATA_LEN (21u) /*平台跟随数据长度*/ +#define BASE_FOLLOW_ALL_LEN (21u+4u) /*平台跟随数据总长度*/ + /*通信中断时间和同步超时时间可以相同,此时优先执行通信中断切系*/ CM_INT32 g_2x2oo2_base = 0; /**< 2x2oo2双缓冲区的平台索引 */ @@ -66,7 +69,7 @@ static CM_UINT8 g_TxBaseFollow[SFM_FOLLOW_BUFF_SIZE]; /**< 发送的平台跟随 static CM_INT32 g_RxAppFollow_len = 0; /**< 收到的应用跟随数据长度 */ static CM_UINT8 g_RxAppFollow[MSCP_FOLLOW_BUFF_SIZE*2]; /**< 收到的应用跟随数据报文 */ static CM_INT32 g_RxAppFollowCrc_len = 0; /**< 收到的应用跟随数据长度 */ -static CM_UINT8 g_RxAppFollowCrc[8]; /**< 收到的应用跟随数据报文 */ +static CM_UINT8 g_RxAppFollowCrc[12]; /**< 收到的应用跟随数据报文 */ CM_INT32 g_TxAppFollow_len = 0; /**< 发送的应用跟随数据长度 */ CM_UINT8 g_TxAppFollow[MSCP_FOLLOW_BUFF_SIZE*2]; /**< 发送的应用跟随数据报文 */ @@ -116,6 +119,22 @@ static void s_Area_Transition(void); * @return ENUM_CM_TRUE-停止 ENUM_CM_FALSE-未停止 * */ static ENUM_CM_RETURN s_isPulseStopped(CM_UINT8 index); +/** + * @brief 输入阶段,主系发送平台跟随数据前的2oo2比较 + */ +static void s_2x2_BaseFollow_2oo2Check_Send(void); +/** + * @brief 输入阶段,非主系进行相关CRC校验后跟随 + */ +static void s_2x2_BaseFollow_Sync(void); +/** + * @brief 周期末阶段,备系接收主系应用跟随CRC后的比较逻辑 + */ +static void s_2x2_AppFollow_SyncCheck(void); +/** + * @brief 输出阶段,备系接收主系输出数据CRC后的比较逻辑 + */ +static void s_2x2_Output_SyncCheck(IN const CM_UINT8 *CheckBuf, CM_INT32 CheckLen); /** * 统一置切系标志 */ @@ -2351,7 +2370,7 @@ static void s_2x2_Recv(void) if (ENUM_CM_TRUE == ret) { /*- 更新跟随报文状态 */ - CM_RE_ASSERT(8 <= g_RxBaseFollow_len, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_6, TSCP_DARK_ASSERT_4); + CM_RE_ASSERT(BASE_FOLLOW_ALL_LEN + 8u <= g_RxBaseFollow_len, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_6, TSCP_DARK_ASSERT_4); s_2x2_Ctrl.RxBaseFollowSysCyc = msgCyc; MSCP_LOG_MSG("2x2 RxBaseFollowCyc = %d,rcvlen = %d,Time:%d us\r\n", msgCyc,g_RxBaseFollow_len,NOW_USED_TIME); } @@ -2418,7 +2437,7 @@ static void s_2x2_Recv(void) if (ENUM_CM_TRUE == ret) { /*- 更新跟随报文状态 */ - CM_RE_ASSERT(8 == g_RxAppFollowCrc_len, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_6, TSCP_DARK_ASSERT_18); + CM_RE_ASSERT(12 == g_RxAppFollowCrc_len, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_6, TSCP_DARK_ASSERT_18); s_2x2_Ctrl.RxAppFollowSysCyc = msgCyc; MSCP_LOG_MSG("2x2 RxAppFollowCrcCyc = %d,rcvlen = %d,Time:%d us\r\n", msgCyc,g_RxAppFollowCrc_len,NOW_USED_TIME); } @@ -2607,46 +2626,37 @@ void SFM_2x2_InputProc(void) CM_INT32 ret = 0; /* 临时变量 */ CM_UINT32 sysCyc = SFM_2x2_GetSysCount(); /* 系统周期号 */ CM_UINT32 areaCyc = SFM_Area_GetSysCount(); /* 区域周期号*/ - CM_UINT32 len_prtcl = 0u; /* 协议跟随数据长度 */ - CM_UINT32 len_sfprtcl = 0u; /* 协议跟随数据长度 */ - CM_UINT32 len_pfm = 0u; /* 平台跟随数据长度 */ - CM_UINT32 offset = 0u; /* 解包时使用offset*/ CM_UINT64 sTick = 0u; /* 起始Tick */ CM_UINT64 delta_Tick = 0u; /* Tickze增量 */ CM_UINT64 curTick = 0u; /* 当前Tick */ CM_UINT32 len = 0u; /* 临时变量 */ /*######################## 发送跟随数据(主系)########################*/ PFM_CFC_Check(33); - /*- 本系是否为主 */ - if ((ENUM_2x2_MASTER == s_2x2_Ctrl.LocalState)) + /*- 填写适配层(-1)跟随数据 */ + len = SFM_GetPrtclFollowData(g_TxBaseFollow + 4, (CM_UINT32)(sizeof(g_TxBaseFollow)) - 4u); + CM_LongToChar(len, g_TxBaseFollow); + g_TxBaseFollow_len = (CM_INT32)len + 4; + /*- 填写内网sfp跟随数据 */ + len = SFM_GetSfpPrtclFollowData(g_TxBaseFollow + g_TxBaseFollow_len, (CM_UINT32)(sizeof(g_TxBaseFollow)- g_TxBaseFollow_len - 4u)); + g_TxBaseFollow_len += len; + /*- 填写平台跟随数据 */ + CM_RE_ASSERT(g_TxBaseFollow_len <= ((CM_INT32)sizeof(g_TxBaseFollow) - BASE_FOLLOW_ALL_LEN), SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_7, TSCP_DARK_ASSERT_9);/*输出缓冲至少空闲8字节*/ + CM_LongToChar(21u, g_TxBaseFollow + g_TxBaseFollow_len); + CM_LongToChar(sysCyc, g_TxBaseFollow + g_TxBaseFollow_len + 4); + CM_LongToChar(SFM_GetTxSn(), g_TxBaseFollow + g_TxBaseFollow_len + 8); + g_TxBaseFollow_len += 12; + /*- 填写区域周期号*/ + CM_LongToChar(areaCyc, g_TxBaseFollow + g_TxBaseFollow_len); + g_TxBaseFollow_len += 4; + g_TxBaseFollow[g_TxBaseFollow_len++] = s_2x2_Ctrl.TimeSyncFlag_Area; + CM_64ToChar((CM_UINT64)s_2x2_Ctrl.AreaTimeOffset, g_TxBaseFollow + g_TxBaseFollow_len); + g_TxBaseFollow_len += 8; + /* 2取比较后,若为主系执行发送*/ + if(0x55u == g_PFM_Cfg.M_2oo2_Enable) { - /*- 填写适配层(-1)跟随数据 */ - len = SFM_GetPrtclFollowData(g_TxBaseFollow + 4, (CM_UINT32)(sizeof(g_TxBaseFollow)) - 4u); - CM_LongToChar(len, g_TxBaseFollow); - g_TxBaseFollow_len = (CM_INT32)len + 4; - /*- 填写内网sfp跟随数据 */ - len = SFM_GetSfpPrtclFollowData(g_TxBaseFollow + g_TxBaseFollow_len, (CM_UINT32)(sizeof(g_TxBaseFollow)- g_TxBaseFollow_len - 4u)); - g_TxBaseFollow_len += len; - /*- 填写平台跟随数据 */ - /*- 填写平台跟随数据 */ - CM_RE_ASSERT(g_TxBaseFollow_len <= ((CM_INT32)sizeof(g_TxBaseFollow) - 25u), SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_7, TSCP_DARK_ASSERT_9);/*输出缓冲至少空闲8字节*/ - CM_LongToChar(21u, g_TxBaseFollow + g_TxBaseFollow_len); - CM_LongToChar(sysCyc, g_TxBaseFollow + g_TxBaseFollow_len + 4); - CM_LongToChar(SFM_GetTxSn(), g_TxBaseFollow + g_TxBaseFollow_len + 8); - g_TxBaseFollow_len += 12; - /*- 填写区域周期号*/ - CM_LongToChar(areaCyc, g_TxBaseFollow + g_TxBaseFollow_len); - g_TxBaseFollow_len += 4; - g_TxBaseFollow[g_TxBaseFollow_len++] = s_2x2_Ctrl.TimeSyncFlag_Area; - CM_64ToChar((CM_UINT64)s_2x2_Ctrl.AreaTimeOffset, g_TxBaseFollow + g_TxBaseFollow_len); - g_TxBaseFollow_len += 8; - /*- 发送 */ - SFM_2x2_Send(g_TxBaseFollow, (CM_UINT32)g_TxBaseFollow_len, ENUM_2x2_MSG_BASE_FOLLOW); - } - else - { - /*- 无处理 */ + s_2x2_BaseFollow_2oo2Check_Send(); } + MSCP_LOG_MSG("timecurr 3.1 Input 2x2Send = %lld us\n", NOW_USED_TIME); /*########################2x2对系数据接收########################*/ PFM_CFC_Check(34); @@ -2730,35 +2740,9 @@ void SFM_2x2_InputProc(void) if ((ENUM_2x2_OFFLINE == s_2x2_Ctrl.LocalState) || (ENUM_2x2_SLAVE == s_2x2_Ctrl.LocalState)) { - if ((g_RxBaseFollow_len >= 12u) && (s_2x2_Ctrl.RxBaseFollowSysCyc > 0u))/*通过数据长度判断是否有新数据*/ + if ((g_RxBaseFollow_len >= BASE_FOLLOW_ALL_LEN + 8u) && (s_2x2_Ctrl.RxBaseFollowSysCyc > 0u))/*通过数据长度判断是否有新数据*/ { - offset = 0u; - /*- 适配层协议数据跟随*/ - len_prtcl = CM_LongFromChar(g_RxBaseFollow); - CM_RE_ASSERT(len_prtcl <= ((CM_UINT32)g_RxBaseFollow_len - 4u), SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_7, TSCP_DARK_ASSERT_3); - SFM_SetPrtclFollowData(g_RxBaseFollow + 4u); - - /*- sfp协议数据跟随*/ - len_sfprtcl = CM_LongFromChar(g_RxBaseFollow + 4u + len_prtcl); - CM_RE_ASSERT(len_prtcl + len_sfprtcl <= ((CM_UINT32)g_RxBaseFollow_len - 8u), SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_7, TSCP_DARK_ASSERT_10); - SFM_SetSfpPrtclFollowData(len_sfprtcl, g_RxBaseFollow + 4u + len_prtcl + 4u); - - /*- 平台数据跟随*/ - len_pfm = CM_LongFromChar(g_RxBaseFollow + 4u + len_prtcl + 4u + len_sfprtcl); - CM_RE_ASSERT(len_pfm == ((CM_UINT32)g_RxBaseFollow_len - len_prtcl - len_sfprtcl - 12u), SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_7, TSCP_DARK_ASSERT_4); - CM_RE_ASSERT(len_pfm == 21u, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_7, TSCP_DARK_ASSERT_5); - /*此处使用临时周期号接收,在周期末同步*/ - offset = 12u + len_prtcl + len_sfprtcl; - s_2x2_Ctrl.SysCycSync = CM_LongFromChar(&g_RxBaseFollow[offset]); /* parasoft-suppress BD-PB-CHECKRET "此处无需检查CM_LongFromChar()的返回值" */ - offset += 4u; - SFM_SetTxSn(CM_LongFromChar(&g_RxBaseFollow[offset])); - offset += 4u; - s_2x2_Ctrl.AreaCycSync = CM_LongFromChar(&g_RxBaseFollow[offset]); - offset += 4u; - s_2x2_Ctrl.TimeSyncFlag_Area = g_RxBaseFollow[offset]; - offset += 1u; - s_2x2_Ctrl.AreaTimeOffset = (CM_INT64)CM_64FromChar(&g_RxBaseFollow[offset]); - offset += 8u; + s_2x2_BaseFollow_Sync(); /*- 本周期是否跟随成功 */ /*- 记录本次跟随时间 */ @@ -2904,47 +2888,7 @@ void SFM_2x2_OutputProc(IN const CM_UINT8 *CheckBuf, CM_INT32 CheckLen) if ((sysCyc == s_2x2_Ctrl.RxCheckSysCyc) && (CheckLen == s_2x2_Ctrl.RxCheckLen)) { /*- 进行输出比较 */ - ret = CM_Memcmp((const void*)CheckBuf, (void*)s_2x2_Ctrl.RxCheckFrame, (CM_SIZE_T)CheckLen); - /*- 输出比较是否一致 */ - if (0 == ret) - { - /*- 更新输出比较状态 */ - s_2x2_Ctrl.LastCheckOKCount = SFM_2x2_GetSysCount(); - s_2x2_Ctrl.OutPutCheckFailFlag = 0u; - MSCP_LOG_MSG("Out Put Success!\n"); - } - else - { - /*- 更新OutPutCheckFailFlag则降级为离线,因为如果收到输出数据但是比较失败,则降为离线状态 */ - s_2x2_Ctrl.OutPutCheckFailFlag = 1u; - for(i = 0u;i < CheckLen;i++) - { - if(CheckBuf[i] == s_2x2_Ctrl.RxCheckFrame[i]) - { - - } - else - { - /*- 跳出 */ - break; - } - } - /*记录暗文日志*/ - (void)CFM_DarkLog_Multiple(DARK_LOG_HEX, TSCP_DARK_2X2_OUT_CHECK_FAIL,3u, - sizeof(CM_UINT8),s_2x2_Ctrl.OutPutCheckFailFlag, - sizeof(CM_UINT32),i, - sizeof(CM_UINT32),s_2x2_Ctrl.RxCheckSysCyc); - MSCP_LOG_MSG("Out Put failed_[%d]!\n",i); - MSCP_LOG_BIN(CheckBuf,CheckLen); - if(ENUM_2x2_SLAVE == s_2x2_Ctrl.LocalState) - { - CM_RE_ASSERT(0, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_3); - } - else - { - /*- 无处理 */ - } - } + s_2x2_Output_SyncCheck(CheckBuf, CheckLen); } else { @@ -3082,13 +3026,13 @@ void SFM_2x2_EndProc(void) if(ENUM_2x2_SLAVE == SFM_2x2_GetPartner2x2State()) { /*- 发送跟随数据 */ - SFM_2x2_Send(g_TxAppFollow, (CM_UINT32)8, ENUM_2x2_MSG_APP_FOLLOW_CRC); + SFM_2x2_Send(g_TxAppFollow, (CM_UINT32)12, ENUM_2x2_MSG_APP_FOLLOW_CRC); MSCP_LOG_MSG("Iam master partner is slave send appfollowcrc\n"); } else { - SFM_2x2_Send(g_TxAppFollow + 4, (CM_UINT32)g_TxAppFollow_len, ENUM_2x2_MSG_APP_FOLLOW); - MSCP_LOG_MSG("Iam master partner is offline send appfollow, cyc:%d, len = %d, reallen = %d\n", g_MSCP_SysCount, g_TxAppFollow_len, CM_LongFromChar(g_TxAppFollow + 4)); + SFM_2x2_Send(g_TxAppFollow + 8, (CM_UINT32)g_TxAppFollow_len, ENUM_2x2_MSG_APP_FOLLOW); + MSCP_LOG_MSG("Iam master partner is offline send appfollow\n"); } curTickTest[1] = CM_GetTick(); break; @@ -3097,19 +3041,7 @@ void SFM_2x2_EndProc(void) curTickTest[0] = CM_GetTick(); if (s_2x2_Ctrl.RxAppFollowSysCyc >= sysCyc) { - cmp_ret = CM_Memcmp(g_TxAppFollow, g_RxAppFollowCrc, 8);//如果同步失败 备系降为离线 - if(0 == cmp_ret) - { - /*- 跟随数据和主系一致*/ - s_2x2_Ctrl.AppFollowCmpFlag = 0u; - MSCP_LOG_MSG("CRC cmp is OK\n"); - } - else - { - /*- 比较失败 降离线*/ - s_2x2_Ctrl.AppFollowCmpFlag = 1u; - MSCP_LOG_MSG("CRC cmp is fail\n"); - } + s_2x2_AppFollow_SyncCheck(); } else { @@ -3347,8 +3279,9 @@ CM_UINT8 SFM_2x2_SetFollowData(IN const CM_UINT8 Data[], IN CM_UINT32 Len) g_TxAppFollow_len = (CM_INT32)CM_UNSIGNED_INT_EXP(Len + 4u); crc = CM_Crc32(Data, Len); CM_LongToChar(crc, g_TxAppFollow); - CM_LongToChar(Len, g_TxAppFollow + 4); - (void)CM_Memcpy((void*)(g_TxAppFollow + 8), sizeof(g_TxAppFollow) - 8u, Data, (CM_SIZE_T)Len); + /* 预留4字节记录另一CPU的CRC */ + CM_LongToChar(Len, g_TxAppFollow + 8); + (void)CM_Memcpy((void*)(g_TxAppFollow + 12), sizeof(g_TxAppFollow) - 12u, Data, (CM_SIZE_T)Len); rt = 1u; } else @@ -4225,4 +4158,257 @@ static CM_UINT8 s_2x2_CommNormalNum(void) } return num; +} +/** + * @brief 输入阶段平台跟随数据的2oo2比较 + */ +static void s_2x2_BaseFollow_2oo2Check_Send(void) +{ + CM_UINT32 crc = 0u; + CM_UINT8 mine_buf[8u] = {0}, peer_buf[8u] = {0}; + CM_INT32 ret = 0; + /*- 计算本机跟随数据中协议部分的CRC值 */ + crc = CM_Crc32(g_TxBaseFollow, g_TxBaseFollow_len - BASE_FOLLOW_ALL_LEN); + CM_LongToChar(g_TxBaseFollow_len, mine_buf); + CM_LongToChar(crc, mine_buf + 4u); + ret = SFM_2oo2_Exchange_Currency(mine_buf, 8u, peer_buf, 8u, ENUM_2oo2_INPUT_EX); + /*- 计算对机跟随数据的CRC值 */ + CM_RE_ASSERT(ret == 8, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_19, TSCP_DARK_ASSERT_1); + /*- 比较本机和对机跟随数据的CRC值 */ + if(0 != CM_Memcmp(mine_buf, peer_buf, (CM_SIZE_T)8u)) + { + MSCP_LOG_DATALEN(g_TxBaseFollow, g_TxBaseFollow_len, "PFM_InputProc g_TxBaseFollow_len"); + CM_RE_ASSERT(0, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_19, TSCP_DARK_ASSERT_2); + } + /*- 比较成功,填入CRC后发送 */ + if(g_TxBaseFollow_len <= (sizeof(g_TxBaseFollow) - 4u)) + { + (void)CM_Memcpy(g_TxBaseFollow + g_TxBaseFollow_len, sizeof(g_TxBaseFollow) - g_TxBaseFollow_len - 4u, mine_buf + 4, 4u); + g_TxBaseFollow_len += 4u; + if(s_2x2_Ctrl.LocalState == ENUM_2x2_MASTER) + { + SFM_2x2_Send(g_TxBaseFollow, (CM_UINT32)g_TxBaseFollow_len, ENUM_2x2_MSG_BASE_FOLLOW); + } + } + +} +/** + * @brief 周期末阶段,备系接收主系应用跟随CRC后的比较逻辑 + */ +static void s_2x2_AppFollow_SyncCheck(void) +{ + CM_UINT32 mine_crc = 0u, partner_crc1 = 0u, partner_crc2 = 0u; + static CM_UINT32 error_tolerate = 1u; + mine_crc = CM_LongFromChar(g_TxAppFollow); + partner_crc1 = CM_LongFromChar(g_RxAppFollowCrc); + partner_crc2 = CM_LongFromChar(g_RxAppFollowCrc + 4u); + + /* 主系双CPU的CRC不一致 */ + if(partner_crc1 != partner_crc2) + { + /* 备系本机与主系其中一个CRC一致 容忍*/ + if(mine_crc == partner_crc1 || mine_crc == partner_crc2) + { + if(error_tolerate++ >= 1u) + { + MSCP_LOG_MSG("MASTER APPFOLLOW CRC ERROR OVER TOLERATE %d\n", error_tolerate); + s_2x2_Ctrl.AppFollowCmpFlag = 1u; + } + else + { + s_2x2_Ctrl.AppFollowCmpFlag = 0u; + MSCP_LOG_MSG("MASTER APPFOLLOW CRC ERROR TOLERATE %d\n", error_tolerate); + } + } + /* 备系本机与主系都不一致 比较失败宕机*/ + else + { + MSCP_LOG_MSG("APPFOLLOW CRC cmp is fail 1\n"); + s_2x2_Ctrl.AppFollowCmpFlag = 1u; + CM_RE_ASSERT(0, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_21, TSCP_DARK_ASSERT_1); + } + } + /* 主系双CPU的CRC一致 但与备系本机不一致 比较失败*/ + else if(mine_crc != partner_crc1) + { + s_2x2_Ctrl.AppFollowCmpFlag = 1u; + MSCP_LOG_MSG("APPFOLLOW CRC cmp is fail 2\n"); + } + /* 主系双CPU的CRC一致 且与备系本机一致 比较成功*/ + else + { + MSCP_LOG_MSG("APPFOLLOW CRC cmp is OK\n"); + s_2x2_Ctrl.AppFollowCmpFlag = 0u; + error_tolerate = 0u; + } + + if(1u == s_2x2_Ctrl.AppFollowCmpFlag) + { + /* 比较失败则设置容忍次数大于0(可能本周期备系校验错误降为离线,但下周期主系失效,导致备系进入容忍分支,认为校验成功又升备) */ + error_tolerate = ((error_tolerate >= 1u) ? error_tolerate : 1u); + MSCP_LOG_DATALEN(g_TxAppFollow + 8, g_TxAppFollow_len, "PFM_AppFollow_SyncCheck g_TxAppFollow"); + } +} +/** + * @brief 输出阶段,备系接收主系输出数据CRC后的比较逻辑 + */ +static void s_2x2_Output_SyncCheck(IN const CM_UINT8 *CheckBuf, CM_INT32 CheckLen) +{ + CM_UINT32 i = 0u; + CM_INT32 ret = -1, ret_p1p2 = -1, ret_m1p1 = -1, ret_m1p2 = -1; /* 记录对系双CRC比较、本机和对系cpu1、本机和对系cpu2比较结果 */ + CM_UINT32 singleCheckLen = CheckLen / 2u; /* checkbuf记录了两个CPU的校验信息,长度的一半为单个CPU校验数据长度 */ + static CM_UINT32 error_tolerate = 1u; + /*- 入参检查 */ + CM_ASSERT(NULL != CheckBuf, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_20, TSCP_DARK_ASSERT_1); + /* 接收的校验数据长度校验 */ + CM_RE_ASSERT(CheckLen == s_2x2_Ctrl.RxCheckLen, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_20, TSCP_DARK_ASSERT_2); + /* 比较接收的主系校验帧中,主系的两个CPU的CRC,记录结果ret_p1p2 */ + ret_p1p2 = CM_Memcmp((const void*)s_2x2_Ctrl.RxCheckFrame, (const void*)&s_2x2_Ctrl.RxCheckFrame[singleCheckLen], (CM_SIZE_T)singleCheckLen); + /* 比较备系本机与主系某一个CPU的CRC,记录结果ret_m1p1 */ + ret_m1p1 = CM_Memcmp((const void*)CheckBuf, (const void*)&s_2x2_Ctrl.RxCheckFrame[0], (CM_SIZE_T)singleCheckLen); + /* 比较备系本机与主系另一个CPU的CRC,记录结果ret_m1p2 */ + ret_m1p2 = CM_Memcmp((const void*)CheckBuf, (const void*)&s_2x2_Ctrl.RxCheckFrame[singleCheckLen], (CM_SIZE_T)singleCheckLen); + /* 对系(主系)发送的双CPU的CRC不一致 */ + if(0 != ret_p1p2) + { + /* 备系本机与主系其中一个CRC一致 容忍*/ + if(0 == ret_m1p1 || 0 == ret_m1p2) + { + if(error_tolerate++ >= 1u) + { + MSCP_LOG_MSG("MASTER OUTPUT CRC ERROR OVER TOLERATE %d\n", error_tolerate); + s_2x2_Ctrl.OutPutCheckFailFlag = 1u; + } + else + { + s_2x2_Ctrl.OutPutCheckFailFlag = 0u; + s_2x2_Ctrl.LastCheckOKCount = SFM_2x2_GetSysCount(); + MSCP_LOG_MSG("MASTER OUTPUT CRC ERROR TOLERATE %d\n", error_tolerate); + } + } + /* 备系本机与主系都不一致 比较失败*/ + else + { + MSCP_LOG_MSG("OUTPUT CRC cmp is fail 1\n"); + s_2x2_Ctrl.OutPutCheckFailFlag = 1u; + } + } + /* 对系(主系)发送的双CPU的CRC一致,比较失败 */ + else if(0 != ret_m1p1) + { + MSCP_LOG_MSG("OUTPUT CRC cmp is fail 2\n"); + s_2x2_Ctrl.OutPutCheckFailFlag = 1u; + for(i = 0u;i < singleCheckLen;i++) + { + if(CheckBuf[i] == s_2x2_Ctrl.RxCheckFrame[i]) + { + + } + else + { + /*- 跳出 */ + break; + } + } + /*记录暗文日志*/ + (void)CFM_DarkLog_Multiple(DARK_LOG_HEX, TSCP_DARK_2X2_OUT_CHECK_FAIL,3u, + sizeof(CM_UINT8),s_2x2_Ctrl.OutPutCheckFailFlag, + sizeof(CM_UINT32),i, + sizeof(CM_UINT32),s_2x2_Ctrl.RxCheckSysCyc); + } + /* 主系双CPU的CRC一致 且与备系本机一致 比较成功*/ + else + { + MSCP_LOG_MSG("OUTPUT CRC cmp is OK\n"); + /*- 更新输出比较状态 */ + s_2x2_Ctrl.LastCheckOKCount = SFM_2x2_GetSysCount(); + s_2x2_Ctrl.OutPutCheckFailFlag = 0u; + error_tolerate = 0u; + } + /* 备系比较失败宕机*/ + if(1u == s_2x2_Ctrl.OutPutCheckFailFlag) + { + /* 比较失败则设置容忍次数大于0(可能本周期备系校验错误降为离线,但下周期主系失效,导致备系进入容忍分支,认为校验成功又升备) */ + error_tolerate = ((error_tolerate >= 1u) ? error_tolerate : 1u); + /* 打印比较不一致的通道数据 */ + for (i = 1; i <= g_2x2oo2_data_num; i++) + { + if ((CM_UINT32)CM_TRUE == g_2x2oo2_tx[g_2x2oo2_base][i].b_2x2_Enable) + { + ret = CM_Memcmp(CheckBuf + 4 + (i - 1) * 8, s_2x2_Ctrl.RxCheckFrame + 4 + (i - 1) * 8, 8); + if(ret != 0) + { + MSCP_LOG_MSG("2x2 output compare err, INDEX = %d, len = %d\n", i, (CM_SIZE_T)g_2x2oo2_tx[g_2x2oo2_base][i].buf_len); + MSCP_LOG_BIN(g_2x2oo2_tx[g_2x2oo2_base][i].p_buf, (CM_SIZE_T)g_2x2oo2_tx[g_2x2oo2_base][i].buf_len); + } + } + else + { + /*二取标志未使能*/ + } + } + if(ENUM_2x2_SLAVE == s_2x2_Ctrl.LocalState) + { + CM_RE_ASSERT(0, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_20, TSCP_DARK_ASSERT_3); + } + } +} +/** + * @brief 输入阶段,非主系进行相关CRC校验后跟随 + */ +static void s_2x2_BaseFollow_Sync(void) +{ + CM_UINT32 len_prtcl = 0u; /* 协议跟随数据长度 */ + CM_UINT32 len_sfprtcl = 0u; /* 协议跟随数据长度 */ + CM_UINT32 len_pfm = 0u; /* 平台跟随数据长度 */ + CM_UINT32 calcCrc = 0u, rxCrc = 0u, txCrc = 0u; /* CRC相关变量 */ + CM_UINT32 offset = 0u; /* 解包用offset*/ + /*- 适配层协议数据跟随*/ + g_RxBaseFollow_len -= 4;/*去除CRC的长度*/ + calcCrc = CM_Crc32(g_RxBaseFollow, (CM_UINT32)g_RxBaseFollow_len - BASE_FOLLOW_ALL_LEN); + offset = (CM_UINT32)g_RxBaseFollow_len; + rxCrc = CM_LongFromChar(&g_RxBaseFollow[offset]); + offset = (CM_UINT32)g_TxBaseFollow_len - 4u; + txCrc = CM_LongFromChar(&g_TxBaseFollow[offset]); + if((ENUM_2x2_SLAVE == s_2x2_Ctrl.LocalState) && (txCrc != rxCrc)) + { + /* 备系自己产生的平台跟随数据与主系不一致,做日志记录 */ + MSCP_LOG_MSG("2x2 BaseFollow CRC Err,TxCrc = %d,RxCrc = %d,Time:%d us\r\n", txCrc,rxCrc,NOW_USED_TIME); + } + /*- 比较收到的跟随数据与发送的跟随数据*/ + if(calcCrc == rxCrc) + { + offset = 0u; + len_prtcl = CM_LongFromChar((void*)&g_RxBaseFollow[offset]); + offset += 4u; + CM_RE_ASSERT(len_prtcl <= ((CM_UINT32)g_RxBaseFollow_len - 4u), SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_22, TSCP_DARK_ASSERT_1); + SFM_SetPrtclFollowData((void*)&g_RxBaseFollow[offset]); + offset += len_prtcl; + + /*- sfp协议数据跟随*/ + len_sfprtcl = CM_LongFromChar((void*)&g_RxBaseFollow[offset]); + offset += 4u; + CM_RE_ASSERT(len_prtcl + len_sfprtcl <= ((CM_UINT32)g_RxBaseFollow_len - 8u), SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_22, TSCP_DARK_ASSERT_2); + SFM_SetSfpPrtclFollowData(len_sfprtcl, (void*)&g_RxBaseFollow[offset]); + offset += len_sfprtcl; + + /*- 平台数据跟随*/ + len_pfm = CM_LongFromChar((void*)&g_RxBaseFollow[offset]); + offset += 4u; + CM_RE_ASSERT(len_pfm == ((CM_UINT32)g_RxBaseFollow_len - len_prtcl - len_sfprtcl - 12u), SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_22, TSCP_DARK_ASSERT_3); + CM_RE_ASSERT(len_pfm == BASE_FOLLOW_DATA_LEN, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_22, TSCP_DARK_ASSERT_4); + } + /*此处使用临时周期号接收,在周期末同步*/ + offset = (CM_UINT32)g_RxBaseFollow_len - BASE_FOLLOW_ALL_LEN; + offset += 4u; + s_2x2_Ctrl.SysCycSync = CM_LongFromChar(&g_RxBaseFollow[offset]); /* parasoft-suppress BD-PB-CHECKRET "此处无需检查CM_LongFromChar()的返回值" */ + offset += 4u; + SFM_SetTxSn(CM_LongFromChar(&g_RxBaseFollow[offset])); + offset += 4u; + s_2x2_Ctrl.AreaCycSync = CM_LongFromChar(&g_RxBaseFollow[offset]); + offset += 4u; + s_2x2_Ctrl.TimeSyncFlag_Area = g_RxBaseFollow[offset]; + offset += 1u; + s_2x2_Ctrl.AreaTimeOffset = (CM_INT64)CM_64FromChar(&g_RxBaseFollow[offset]); + offset += 8u; } \ No newline at end of file From 520c9915683b0b0997ab95b4933ed283b4c12ff7 Mon Sep 17 00:00:00 2001 From: lh <3191213465@qq.com> Date: Tue, 26 May 2026 17:22:22 +0800 Subject: [PATCH 02/15] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=8F=B7=EF=BC=8C62->63?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TSCP/src/MSCP/PFM/PFM_Cfg.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TSCP/src/MSCP/PFM/PFM_Cfg.c b/TSCP/src/MSCP/PFM/PFM_Cfg.c index a049969..d24bfd0 100644 --- a/TSCP/src/MSCP/PFM/PFM_Cfg.c +++ b/TSCP/src/MSCP/PFM/PFM_Cfg.c @@ -40,7 +40,7 @@ CM_CHAR FS_FILE_PATH[100]; /** 平台软件版本号 */ -const CM_UINT8 MSCP_SW_VERION[4] = { 93u, 1u, 1u, 62u }; +const CM_UINT8 MSCP_SW_VERION[4] = { 93u, 1u, 1u, 63u }; /** 驱动软件版本号 */ CM_UINT8 MSCP_DRV_VERION[4] = {0}; /** 与维护一体机接口文档版本号(接口文档发生改变时升级版本号) */ From 099fa5a7120cf01c5b3a512272c762fb1acf4a3a Mon Sep 17 00:00:00 2001 From: lh <3191213465@qq.com> Date: Wed, 27 May 2026 17:48:46 +0800 Subject: [PATCH 03/15] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=9A=97=E6=96=87?= =?UTF-8?q?=E7=A0=81=EF=BC=8C2x=E8=BE=93=E5=87=BA=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E5=B8=A7=E6=8B=BC=E6=8E=A5=E5=8F=8CCPU=E7=9A=84CRC=E7=9A=842?= =?UTF-8?q?=E5=8F=96=E6=93=8D=E4=BD=9C=E4=BF=AE=E6=94=B9=E4=BB=8E=E5=87=BD?= =?UTF-8?q?=E6=95=B0PFM=5FOutputProc=E4=BF=AE=E6=94=B9=E5=88=B0s=5F2x2Outp?= =?UTF-8?q?utCheckFrame=5FPack?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TSCP/src/MSCP/PFM/PFM_InputOutput.c | 7 +++++-- TSCP/src/MSCP/SFM/SFM_2x2.c | 20 ++++++++++---------- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/TSCP/src/MSCP/PFM/PFM_InputOutput.c b/TSCP/src/MSCP/PFM/PFM_InputOutput.c index 19df851..ab930fa 100644 --- a/TSCP/src/MSCP/PFM/PFM_InputOutput.c +++ b/TSCP/src/MSCP/PFM/PFM_InputOutput.c @@ -718,8 +718,6 @@ void PFM_OutputProc(void) if (0x55u == g_PFM_Cfg.M_2x2_Enable) { /*- 输出阶段2x2处理 */ - ret = SFM_2oo2_Exchange_Currency(check_2x2_Buf, check_2x2_Len, &check_2x2_Buf[check_2x2_Len], sizeof(check_2x2_Buf) - check_2x2_Len, ENUM_2oo2_OUTPUT_EX); - check_2x2_Len += ret; SFM_2x2_OutputProc(check_2x2_Buf, check_2x2_Len); } else @@ -1021,6 +1019,7 @@ static CM_INT32 s_2x2OutputCheckFrame_Pack(OUT CM_UINT8 *buf, IN CM_UINT32 BufSi CM_UINT32 len = 0u; /* 输出跟随报文长度 */ CM_UINT32 crc = 0u; /* 输出跟随报文CRC */ CM_UINT32 sysCyc = SFM_2x2_GetSysCount(); /* 系统周期号 */ + CM_UINT32 peerLen = 0u; /* 邻机输出校验报文长度 */ /*- 入参检查*/ CM_ASSERT(((4 + (g_2x2oo2_data_num * 8)) <= (CM_INT32)BufSize) && (NULL != buf), IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_7, TSCP_DARK_ASSERT_1); @@ -1045,6 +1044,10 @@ static CM_INT32 s_2x2OutputCheckFrame_Pack(OUT CM_UINT8 *buf, IN CM_UINT32 BufSi /*二取标志未使能*/ } } + + peerLen = SFM_2oo2_Exchange_Currency(buf, i, &buf[i], BufSize - i, ENUM_2oo2_OUTPUT_EX); + CM_ASSERT(peerLen == i, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_16, TSCP_DARK_ASSERT_17); + i += peerLen; /*- 返回输出校验报文长度 */ return i; diff --git a/TSCP/src/MSCP/SFM/SFM_2x2.c b/TSCP/src/MSCP/SFM/SFM_2x2.c index a0f987b..d3b5fa8 100644 --- a/TSCP/src/MSCP/SFM/SFM_2x2.c +++ b/TSCP/src/MSCP/SFM/SFM_2x2.c @@ -4173,12 +4173,12 @@ static void s_2x2_BaseFollow_2oo2Check_Send(void) CM_LongToChar(crc, mine_buf + 4u); ret = SFM_2oo2_Exchange_Currency(mine_buf, 8u, peer_buf, 8u, ENUM_2oo2_INPUT_EX); /*- 计算对机跟随数据的CRC值 */ - CM_RE_ASSERT(ret == 8, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_19, TSCP_DARK_ASSERT_1); + CM_RE_ASSERT(ret == 8, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_23, TSCP_DARK_ASSERT_1); /*- 比较本机和对机跟随数据的CRC值 */ if(0 != CM_Memcmp(mine_buf, peer_buf, (CM_SIZE_T)8u)) { MSCP_LOG_DATALEN(g_TxBaseFollow, g_TxBaseFollow_len, "PFM_InputProc g_TxBaseFollow_len"); - CM_RE_ASSERT(0, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_19, TSCP_DARK_ASSERT_2); + CM_RE_ASSERT(0, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_23, TSCP_DARK_ASSERT_2); } /*- 比较成功,填入CRC后发送 */ if(g_TxBaseFollow_len <= (sizeof(g_TxBaseFollow) - 4u)) @@ -4225,7 +4225,7 @@ static void s_2x2_AppFollow_SyncCheck(void) { MSCP_LOG_MSG("APPFOLLOW CRC cmp is fail 1\n"); s_2x2_Ctrl.AppFollowCmpFlag = 1u; - CM_RE_ASSERT(0, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_21, TSCP_DARK_ASSERT_1); + CM_RE_ASSERT(0, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_24, TSCP_DARK_ASSERT_1); } } /* 主系双CPU的CRC一致 但与备系本机不一致 比较失败*/ @@ -4259,9 +4259,9 @@ static void s_2x2_Output_SyncCheck(IN const CM_UINT8 *CheckBuf, CM_INT32 CheckLe CM_UINT32 singleCheckLen = CheckLen / 2u; /* checkbuf记录了两个CPU的校验信息,长度的一半为单个CPU校验数据长度 */ static CM_UINT32 error_tolerate = 1u; /*- 入参检查 */ - CM_ASSERT(NULL != CheckBuf, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_20, TSCP_DARK_ASSERT_1); + CM_ASSERT(NULL != CheckBuf, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_25, TSCP_DARK_ASSERT_1); /* 接收的校验数据长度校验 */ - CM_RE_ASSERT(CheckLen == s_2x2_Ctrl.RxCheckLen, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_20, TSCP_DARK_ASSERT_2); + CM_RE_ASSERT(CheckLen == s_2x2_Ctrl.RxCheckLen, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_25, TSCP_DARK_ASSERT_2); /* 比较接收的主系校验帧中,主系的两个CPU的CRC,记录结果ret_p1p2 */ ret_p1p2 = CM_Memcmp((const void*)s_2x2_Ctrl.RxCheckFrame, (const void*)&s_2x2_Ctrl.RxCheckFrame[singleCheckLen], (CM_SIZE_T)singleCheckLen); /* 比较备系本机与主系某一个CPU的CRC,记录结果ret_m1p1 */ @@ -4349,7 +4349,7 @@ static void s_2x2_Output_SyncCheck(IN const CM_UINT8 *CheckBuf, CM_INT32 CheckLe } if(ENUM_2x2_SLAVE == s_2x2_Ctrl.LocalState) { - CM_RE_ASSERT(0, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_20, TSCP_DARK_ASSERT_3); + CM_RE_ASSERT(0, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_25, TSCP_DARK_ASSERT_3); } } } @@ -4381,22 +4381,22 @@ static void s_2x2_BaseFollow_Sync(void) offset = 0u; len_prtcl = CM_LongFromChar((void*)&g_RxBaseFollow[offset]); offset += 4u; - CM_RE_ASSERT(len_prtcl <= ((CM_UINT32)g_RxBaseFollow_len - 4u), SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_22, TSCP_DARK_ASSERT_1); + CM_RE_ASSERT(len_prtcl <= ((CM_UINT32)g_RxBaseFollow_len - 4u), SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_26, TSCP_DARK_ASSERT_1); SFM_SetPrtclFollowData((void*)&g_RxBaseFollow[offset]); offset += len_prtcl; /*- sfp协议数据跟随*/ len_sfprtcl = CM_LongFromChar((void*)&g_RxBaseFollow[offset]); offset += 4u; - CM_RE_ASSERT(len_prtcl + len_sfprtcl <= ((CM_UINT32)g_RxBaseFollow_len - 8u), SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_22, TSCP_DARK_ASSERT_2); + CM_RE_ASSERT(len_prtcl + len_sfprtcl <= ((CM_UINT32)g_RxBaseFollow_len - 8u), SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_26, TSCP_DARK_ASSERT_2); SFM_SetSfpPrtclFollowData(len_sfprtcl, (void*)&g_RxBaseFollow[offset]); offset += len_sfprtcl; /*- 平台数据跟随*/ len_pfm = CM_LongFromChar((void*)&g_RxBaseFollow[offset]); offset += 4u; - CM_RE_ASSERT(len_pfm == ((CM_UINT32)g_RxBaseFollow_len - len_prtcl - len_sfprtcl - 12u), SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_22, TSCP_DARK_ASSERT_3); - CM_RE_ASSERT(len_pfm == BASE_FOLLOW_DATA_LEN, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_22, TSCP_DARK_ASSERT_4); + CM_RE_ASSERT(len_pfm == ((CM_UINT32)g_RxBaseFollow_len - len_prtcl - len_sfprtcl - 12u), SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_26, TSCP_DARK_ASSERT_3); + CM_RE_ASSERT(len_pfm == BASE_FOLLOW_DATA_LEN, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_26, TSCP_DARK_ASSERT_4); } /*此处使用临时周期号接收,在周期末同步*/ offset = (CM_UINT32)g_RxBaseFollow_len - BASE_FOLLOW_ALL_LEN; From 5f90274b7afbfcdadc316efe8006e50f56825f68 Mon Sep 17 00:00:00 2001 From: lh <3191213465@qq.com> Date: Thu, 28 May 2026 15:04:42 +0800 Subject: [PATCH 04/15] =?UTF-8?q?=E8=A7=84=E8=8C=83=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=8C=E6=95=B0=E7=BB=84=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E4=B8=8B=E6=A0=87=E5=8F=96=E5=9C=B0=E5=9D=80=E6=96=B9=E5=BC=8F?= =?UTF-8?q?=EF=BC=8C=E8=80=8C=E4=B8=8D=E6=98=AF=E7=9B=B4=E6=8E=A5=E5=8A=A0?= =?UTF-8?q?=E9=95=BF=E5=BA=A6=EF=BC=9B=E8=BE=93=E5=87=BA=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E4=BB=85=E5=9C=A8=E5=A4=87=E7=B3=BB=E5=A4=B1=E8=B4=A5=E6=98=AF?= =?UTF-8?q?=E6=89=93=E5=8D=B0=E9=80=9A=E9=81=93=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TSCP/src/MSCP/PFM/PFM_InputOutput.c | 4 ++- TSCP/src/MSCP/SFM/SFM_2x2.c | 52 +++++++++++++++-------------- 2 files changed, 30 insertions(+), 26 deletions(-) diff --git a/TSCP/src/MSCP/PFM/PFM_InputOutput.c b/TSCP/src/MSCP/PFM/PFM_InputOutput.c index ab930fa..89f2609 100644 --- a/TSCP/src/MSCP/PFM/PFM_InputOutput.c +++ b/TSCP/src/MSCP/PFM/PFM_InputOutput.c @@ -1925,6 +1925,7 @@ static void s_output_2oo2check(IN CM_UINT8* check_2oo2_Buf, IN CM_UINT32 check_2 { CM_INT32 ret = 0, i = 0; CM_UINT8 buf_peer[500] = {0u}; + CM_UINT32 offset = 0u; /* 用于日志打印时,判断通道*/ /*- 2oo2交换输出校验帧 */ CM_ASSERT(NULL != check_2oo2_Buf, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_15, TSCP_DARK_ASSERT_1); ret = SFM_2oo2_Exchange_Currency(check_2oo2_Buf, check_2oo2_Len, buf_peer, (CM_UINT32)check_2oo2_Len, ENUM_2oo2_OUTPUT_CHECK); @@ -1940,7 +1941,8 @@ static void s_output_2oo2check(IN CM_UINT8* check_2oo2_Buf, IN CM_UINT32 check_2 { if ((CM_UINT32)CM_TRUE == g_2x2oo2_tx[g_2x2oo2_base][i].b_2oo2_Enable) { - ret = CM_Memcmp(check_2oo2_Buf + 4 + (i - 1) * 8, buf_peer + 4 + (i - 1) * 8, 8); + offset = (CM_UINT32)(i - 1) * 8 + 4u; + ret = CM_Memcmp(&check_2oo2_Buf[offset], &buf_peer[offset], 8); if(ret != 0) { MSCP_LOG_MSG("2oo2 output compare err, INDEX = %d, len = %d\n", i, (CM_SIZE_T)g_2x2oo2_tx[g_2x2oo2_base][i].buf_len); diff --git a/TSCP/src/MSCP/SFM/SFM_2x2.c b/TSCP/src/MSCP/SFM/SFM_2x2.c index d3b5fa8..3c69cf9 100644 --- a/TSCP/src/MSCP/SFM/SFM_2x2.c +++ b/TSCP/src/MSCP/SFM/SFM_2x2.c @@ -4169,8 +4169,8 @@ static void s_2x2_BaseFollow_2oo2Check_Send(void) CM_INT32 ret = 0; /*- 计算本机跟随数据中协议部分的CRC值 */ crc = CM_Crc32(g_TxBaseFollow, g_TxBaseFollow_len - BASE_FOLLOW_ALL_LEN); - CM_LongToChar(g_TxBaseFollow_len, mine_buf); - CM_LongToChar(crc, mine_buf + 4u); + CM_LongToChar(g_TxBaseFollow_len, &mine_buf[0]); + CM_LongToChar(crc, &mine_buf[4]); ret = SFM_2oo2_Exchange_Currency(mine_buf, 8u, peer_buf, 8u, ENUM_2oo2_INPUT_EX); /*- 计算对机跟随数据的CRC值 */ CM_RE_ASSERT(ret == 8, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_23, TSCP_DARK_ASSERT_1); @@ -4183,7 +4183,7 @@ static void s_2x2_BaseFollow_2oo2Check_Send(void) /*- 比较成功,填入CRC后发送 */ if(g_TxBaseFollow_len <= (sizeof(g_TxBaseFollow) - 4u)) { - (void)CM_Memcpy(g_TxBaseFollow + g_TxBaseFollow_len, sizeof(g_TxBaseFollow) - g_TxBaseFollow_len - 4u, mine_buf + 4, 4u); + (void)CM_Memcpy(&g_TxBaseFollow[g_TxBaseFollow_len], sizeof(g_TxBaseFollow) - g_TxBaseFollow_len - 4u, &mine_buf[4], 4u); g_TxBaseFollow_len += 4u; if(s_2x2_Ctrl.LocalState == ENUM_2x2_MASTER) { @@ -4199,9 +4199,9 @@ static void s_2x2_AppFollow_SyncCheck(void) { CM_UINT32 mine_crc = 0u, partner_crc1 = 0u, partner_crc2 = 0u; static CM_UINT32 error_tolerate = 1u; - mine_crc = CM_LongFromChar(g_TxAppFollow); - partner_crc1 = CM_LongFromChar(g_RxAppFollowCrc); - partner_crc2 = CM_LongFromChar(g_RxAppFollowCrc + 4u); + mine_crc = CM_LongFromChar(&g_TxAppFollow[0]); + partner_crc1 = CM_LongFromChar(&g_RxAppFollowCrc[0]); + partner_crc2 = CM_LongFromChar(&g_RxAppFollowCrc[4]); /* 主系双CPU的CRC不一致 */ if(partner_crc1 != partner_crc2) @@ -4246,7 +4246,7 @@ static void s_2x2_AppFollow_SyncCheck(void) { /* 比较失败则设置容忍次数大于0(可能本周期备系校验错误降为离线,但下周期主系失效,导致备系进入容忍分支,认为校验成功又升备) */ error_tolerate = ((error_tolerate >= 1u) ? error_tolerate : 1u); - MSCP_LOG_DATALEN(g_TxAppFollow + 8, g_TxAppFollow_len, "PFM_AppFollow_SyncCheck g_TxAppFollow"); + MSCP_LOG_DATALEN(&g_TxAppFollow[8], g_TxAppFollow_len, "PFM_AppFollow_SyncCheck g_TxAppFollow"); } } /** @@ -4258,12 +4258,13 @@ static void s_2x2_Output_SyncCheck(IN const CM_UINT8 *CheckBuf, CM_INT32 CheckLe CM_INT32 ret = -1, ret_p1p2 = -1, ret_m1p1 = -1, ret_m1p2 = -1; /* 记录对系双CRC比较、本机和对系cpu1、本机和对系cpu2比较结果 */ CM_UINT32 singleCheckLen = CheckLen / 2u; /* checkbuf记录了两个CPU的校验信息,长度的一半为单个CPU校验数据长度 */ static CM_UINT32 error_tolerate = 1u; + CM_UINT32 offset = 0u; /* 用于日志打印时,判断通道*/ /*- 入参检查 */ CM_ASSERT(NULL != CheckBuf, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_25, TSCP_DARK_ASSERT_1); /* 接收的校验数据长度校验 */ CM_RE_ASSERT(CheckLen == s_2x2_Ctrl.RxCheckLen, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_25, TSCP_DARK_ASSERT_2); /* 比较接收的主系校验帧中,主系的两个CPU的CRC,记录结果ret_p1p2 */ - ret_p1p2 = CM_Memcmp((const void*)s_2x2_Ctrl.RxCheckFrame, (const void*)&s_2x2_Ctrl.RxCheckFrame[singleCheckLen], (CM_SIZE_T)singleCheckLen); + ret_p1p2 = CM_Memcmp((const void*)&s_2x2_Ctrl.RxCheckFrame[0], (const void*)&s_2x2_Ctrl.RxCheckFrame[singleCheckLen], (CM_SIZE_T)singleCheckLen); /* 比较备系本机与主系某一个CPU的CRC,记录结果ret_m1p1 */ ret_m1p1 = CM_Memcmp((const void*)CheckBuf, (const void*)&s_2x2_Ctrl.RxCheckFrame[0], (CM_SIZE_T)singleCheckLen); /* 比较备系本机与主系另一个CPU的CRC,记录结果ret_m1p2 */ @@ -4330,25 +4331,26 @@ static void s_2x2_Output_SyncCheck(IN const CM_UINT8 *CheckBuf, CM_INT32 CheckLe { /* 比较失败则设置容忍次数大于0(可能本周期备系校验错误降为离线,但下周期主系失效,导致备系进入容忍分支,认为校验成功又升备) */ error_tolerate = ((error_tolerate >= 1u) ? error_tolerate : 1u); - /* 打印比较不一致的通道数据 */ - for (i = 1; i <= g_2x2oo2_data_num; i++) - { - if ((CM_UINT32)CM_TRUE == g_2x2oo2_tx[g_2x2oo2_base][i].b_2x2_Enable) - { - ret = CM_Memcmp(CheckBuf + 4 + (i - 1) * 8, s_2x2_Ctrl.RxCheckFrame + 4 + (i - 1) * 8, 8); - if(ret != 0) - { - MSCP_LOG_MSG("2x2 output compare err, INDEX = %d, len = %d\n", i, (CM_SIZE_T)g_2x2oo2_tx[g_2x2oo2_base][i].buf_len); - MSCP_LOG_BIN(g_2x2oo2_tx[g_2x2oo2_base][i].p_buf, (CM_SIZE_T)g_2x2oo2_tx[g_2x2oo2_base][i].buf_len); - } - } - else - { - /*二取标志未使能*/ - } - } if(ENUM_2x2_SLAVE == s_2x2_Ctrl.LocalState) { + /* 打印比较不一致的通道数据 */ + for (i = 1; i <= g_2x2oo2_data_num; i++) + { + if ((CM_UINT32)CM_TRUE == g_2x2oo2_tx[g_2x2oo2_base][i].b_2x2_Enable) + { + offset = (CM_UINT32)(i - 1) * 8 + 4u; + ret = CM_Memcmp(CheckBuf + offset, &s_2x2_Ctrl.RxCheckFrame[offset], 8); + if(ret != 0) + { + MSCP_LOG_MSG("2x2 output compare err, INDEX = %d, len = %d\n", i, (CM_SIZE_T)g_2x2oo2_tx[g_2x2oo2_base][i].buf_len); + MSCP_LOG_BIN(g_2x2oo2_tx[g_2x2oo2_base][i].p_buf, (CM_SIZE_T)g_2x2oo2_tx[g_2x2oo2_base][i].buf_len); + } + } + else + { + /*二取标志未使能*/ + } + } CM_RE_ASSERT(0, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_25, TSCP_DARK_ASSERT_3); } } From 29d80476185ae09abc93493353debc15dd241f25 Mon Sep 17 00:00:00 2001 From: lh <3191213465@qq.com> Date: Fri, 29 May 2026 16:30:10 +0800 Subject: [PATCH 05/15] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=B5=B0=E6=9F=A5?= =?UTF-8?q?=E5=90=8E=E4=BF=AE=E6=94=B9=EF=BC=8C=E4=B8=BB=E7=B3=BB=E5=9C=A8?= =?UTF-8?q?=E5=8F=91=E9=80=812=E4=B9=98=E6=A0=A1=E9=AA=8C=E5=90=8E?= =?UTF-8?q?=E5=86=8D=E6=AC=A1=E8=BF=9B=E8=A1=8C=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TSCP/src/MSCP/SFM/SFM_2x2.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/TSCP/src/MSCP/SFM/SFM_2x2.c b/TSCP/src/MSCP/SFM/SFM_2x2.c index 3c69cf9..5790706 100644 --- a/TSCP/src/MSCP/SFM/SFM_2x2.c +++ b/TSCP/src/MSCP/SFM/SFM_2x2.c @@ -2810,6 +2810,8 @@ void SFM_2x2_OutputProc(IN const CM_UINT8 *CheckBuf, CM_INT32 CheckLen) { /*- 发送输出校验帧*/ SFM_2x2_Send(CheckBuf, (CM_UINT32)CheckLen, ENUM_2x2_MSG_OUTCHECK); + ret = CM_Memcmp(CheckBuf, CheckBuf + CheckLen / 2, CheckLen / 2); + CM_ASSERT(0 == ret, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_3); } else { @@ -3027,6 +3029,8 @@ void SFM_2x2_EndProc(void) { /*- 发送跟随数据 */ SFM_2x2_Send(g_TxAppFollow, (CM_UINT32)12, ENUM_2x2_MSG_APP_FOLLOW_CRC); + cmp_ret = CM_Memcmp(&g_TxAppFollow[0], &g_TxAppFollow[4], 4u); + CM_RE_ASSERT(0 == cmp_ret, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_9, TSCP_DARK_ASSERT_3); MSCP_LOG_MSG("Iam master partner is slave send appfollowcrc\n"); } else From 1cfb4c2d591f41904bb8ae183a31b6929d75e6a9 Mon Sep 17 00:00:00 2001 From: lh <3191213465@qq.com> Date: Fri, 29 May 2026 16:56:20 +0800 Subject: [PATCH 06/15] =?UTF-8?q?=E7=BB=B4=E6=8A=A4=E4=B8=80=E4=BD=93?= =?UTF-8?q?=E6=9C=BA=E7=89=88=E6=9C=AC=E5=8F=B7=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TSCP/src/MSCP/PFM/PFM_Cfg.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TSCP/src/MSCP/PFM/PFM_Cfg.c b/TSCP/src/MSCP/PFM/PFM_Cfg.c index d24bfd0..22c14c6 100644 --- a/TSCP/src/MSCP/PFM/PFM_Cfg.c +++ b/TSCP/src/MSCP/PFM/PFM_Cfg.c @@ -44,7 +44,7 @@ const CM_UINT8 MSCP_SW_VERION[4] = { 93u, 1u, 1u, 63u }; /** 驱动软件版本号 */ CM_UINT8 MSCP_DRV_VERION[4] = {0}; /** 与维护一体机接口文档版本号(接口文档发生改变时升级版本号) */ -CM_UINT16 TSCP_DOC_VERION[2] = {37u,0u}; +CM_UINT16 TSCP_DOC_VERION[2] = {38u,0u}; /** 操作系统版本号 */ CM_UINT8 TSCP_QNX_VERION[10] = {0u}; From fda6f9f84b02f8af3e239d094eb5ea2f8861036c Mon Sep 17 00:00:00 2001 From: lh <3191213465@qq.com> Date: Mon, 1 Jun 2026 10:44:32 +0800 Subject: [PATCH 07/15] =?UTF-8?q?=E5=BA=94=E7=94=A8=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E5=8F=8A=E6=95=B0=E6=8D=AE=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TSCP/src/APP/APP_API.c | 29 +- .../ci_integrate_config.h | 2 +- .../APP/ciapp/2oo2/2oo2DataTransferManage.c | 18 +- .../APP/ciapp/2oo2/2oo2DataTransferManage.h | 1 + .../ciapp/AxisAssert/AxisAssertManageAPI.c | 5 +- TSCP/src/APP/ciapp/AxisSort/AxisSort.c | 49 +- TSCP/src/APP/ciapp/AxisSort/AxisSort.h | 2 +- .../ciapp/DataManage/DeviceConfigDataManage.c | 52 +- .../APP/ciapp/DataManage/DeviceDataManage.c | 195 ++- .../APP/ciapp/DataManage/DeviceDataManage.h | 28 +- .../src/APP/ciapp/IO/DeviceRelayDataProcess.c | 411 ++--- .../src/APP/ciapp/IO/DeviceRelayDataProcess.h | 17 +- TSCP/src/APP/ciapp/IO/InputDataProcess.c | 150 +- TSCP/src/APP/ciapp/IO/OutputDataProcess.c | 13 +- TSCP/src/APP/ciapp/Initial/InitialProcess.c | 11 +- .../ciapp/InvadeSection/InvadeSectionDefine.h | 2 +- TSCP/src/APP/ciapp/LogRecord/LogRecord.c | 49 +- .../ciapp/LogicManage/InterlockLogicManage.c | 461 +++-- .../ciapp/LogicManage/InterlockLogicManage.h | 14 + .../ciapp/LogicManage/RouteRecoverManage.c | 1 + .../LogicManage/TradInterlockLogicManage.c | 163 +- .../ciapp/LogicProcess/InterlockLogicCheck.c | 576 +++--- .../ciapp/LogicProcess/InterlockLogicCheck.h | 22 +- .../LogicProcess/InterlockLogicProcess.c | 218 +-- .../src/APP/ciapp/Overlap/OverlapDataManage.c | 5 +- TSCP/src/APP/ciapp/PSD/PSDConfigDataManage.h | 2 +- TSCP/src/APP/ciapp/PSD/PSDDefine.h | 2 +- .../APP/ciapp/ParsePack/ParsePackAtsData.c | 2 +- .../src/APP/ciapp/ParsePack/ParsePackCiData.c | 1547 +++++++++-------- .../src/APP/ciapp/ParsePack/ParsePackCiData.h | 9 +- .../src/APP/ciapp/ParsePack/ParsePackCommon.c | 27 +- .../ciapp/ParsePack/ParsePackGateWayData.c | 68 +- .../src/APP/ciapp/ParsePack/ParsePackOcData.c | 39 +- .../src/APP/ciapp/ParsePack/ParsePackOcData.h | 2 +- .../APP/ciapp/ParsePack/ParsePackTmcData.c | 2 +- .../APP/ciapp/ParsePack/ParsePackVobcData.c | 648 ++++--- .../src/APP/ciapp/ParsePack/ParsePackZcData.c | 429 +++-- .../src/APP/ciapp/ParsePack/ParsePackZcData.h | 1 + TSCP/src/APP/ciapp/QueryFiles/dquCIInit.c | 1072 ++++++------ TSCP/src/APP/ciapp/QueryFiles/dquCIInit.h | 48 +- .../src/APP/ciapp/QueryFiles/dquCIInterFace.c | 33 +- .../APP/ciapp/QueryFiles/dquCIJDQStruInit.c | 34 +- .../APP/ciapp/QueryFiles/dquCILSStruInit.c | 68 +- TSCP/src/APP/ciapp/QueryFiles/dquCIPZStru.h | 2 + TSCP/src/APP/ciapp/QueryFiles/dquCIStru.h | 4 +- TSCP/src/APP/ciapp/QueryFiles/dqucijdqstru.h | 1 - TSCP/src/APP/ciapp/RemoteRM/RRMManageAPI.c | 12 +- .../APP/ciapp/Route/DynamicRouteDataManage.c | 85 +- .../APP/ciapp/Route/LogicalRouteDataManage.c | 4 +- .../APP/ciapp/Route/RouteConfigDataManage.c | 2 +- .../APP/ciapp/Section/AxisSectionDataManage.c | 27 +- .../ciapp/Section/LogicSectionDataManage.c | 74 +- .../ciapp/Section/LogicSectionDataManage.h | 8 +- TSCP/src/APP/ciapp/Section/SectionDefine.h | 4 +- .../APP/ciapp/Switch/SwitchConfigDataManage.c | 36 + .../APP/ciapp/Switch/SwitchConfigDataManage.h | 14 + TSCP/src/APP/ciapp/Switch/SwitchDataManage.c | 45 +- TSCP/src/APP/ciapp/System/CiSystemDefine.h | 3 + .../src/APP/ciapp/System/SystemConfigDefine.h | 16 +- .../APP/ciapp/System/SystemParameterManage.c | 200 ++- .../APP/ciapp/System/SystemParameterManage.h | 76 +- TSCP/src/APP/ciapp/Train/TrainDataManage.c | 123 +- TSCP/src/APP/ciapp/Train/TrainDataManage.h | 25 + .../ciapp/WashMachine/WashMachineDataManage.c | 2 +- .../ciapp/WashMachine/WashMachineDataManage.h | 1 + .../dqu_cbtc_common/dquCbtcConfigData.c | 42 +- .../dqu_cbtc_common/dquCbtcConfigData.h | 9 +- .../dqu_common/dqu_emap_common/dquEmapInit.c | 175 +- .../dqu_common/dqu_emap_common/dquEmapInit.h | 12 + .../dqu_emap_common/dquStructInit.c | 212 +-- .../dqu_common/dqu_emap_common/dsuStruct.h | 3 +- .../dqu_idmap_common/dquIdmapInit.c | 217 ++- .../dqu_idmap_common/dquIdmapInit.h | 21 + .../dqu_idmap_common/dquIdmapQuery.h | 8 + .../fsfb/common_fsfb/FsfbMessageInfo.c | 12 +- .../protocol/fsfb/common_fsfb/FsfbProtcl.c | 2 + .../common_fsfb/FsfbProtclConfigMessage.h | 2 + .../fsfb/common_fsfb/FsfbRecordDelare.h | 2 +- .../fsfb/common_fsfb/fsfbProtclStruct.h | 2 +- .../common_dqu_protocol/dsuProtclFun.c | 61 +- .../common_dqu_protocol/dsuProtclFun.h | 1 + .../common_sfp_nr_config/sfpConfig.h | 1 - ...a_line_BJL10_工程数据(1.2).0.20260210-ts.zip | 3 - ...CI_OC+V22.0ATS+V1.0TMC+V9.0AIM及AID-20260401(1).zip | 3 - ...图数据V2.2-CBTC-14-公共31.5+CI50.0+OC37.0-8.zip | 3 - ...V2.2-车车-11-公共31.5+CI50.0+OC37.0+IVOC54.0-6.zip | 3 - 数据/电子地图数据V2.3-CBTC-23.zip | 3 + 数据/电子地图数据V2.3-车车-13.zip | 3 + 88 files changed, 4775 insertions(+), 3316 deletions(-) delete mode 100644 数据/data_line_BJL10_工程数据(1.2).0.20260210-ts.zip delete mode 100644 数据/标准站车车V8.0+公共V31.5+V54.0IVOC+V50.0RCI_CI+V37.0RCI_OC+V22.0ATS+V1.0TMC+V9.0AIM及AID-20260401(1).zip delete mode 100644 数据/电子地图数据V2.2-CBTC-14-公共31.5+CI50.0+OC37.0-8.zip delete mode 100644 数据/电子地图数据V2.2-车车-11-公共31.5+CI50.0+OC37.0+IVOC54.0-6.zip create mode 100644 数据/电子地图数据V2.3-CBTC-23.zip create mode 100644 数据/电子地图数据V2.3-车车-13.zip diff --git a/TSCP/src/APP/APP_API.c b/TSCP/src/APP/APP_API.c index dfbd8fa..2a1bd25 100644 --- a/TSCP/src/APP/APP_API.c +++ b/TSCP/src/APP/APP_API.c @@ -244,7 +244,7 @@ void APP_API_Data_Init() cDevType = (UINT8)((locTypeId >> 8U) & 0x00FFU); /*RC/CI类型*/ - cRetVal = CiPatternInit((const)DataPath); /*初始化当前联锁类型配置数据*/ + cRetVal = RciCommonConfigDataInit((const)DataPath); /*初始化当前联锁类型配置数据*/ if ((CI_SUCCESS == cRetVal) && (CI_SUCCESS == funcRetVal)) /*初始化当前联锁类型配置数据*/ { cSystemWorkType = GetSystemWorkType(); @@ -717,46 +717,23 @@ ENUM_CM_RECCUSEB Is_Send_ExtendBoard(IN const CM_UINT16 dstDevTypeId) { ENUM_CM_RECCUSEB retVal = ENUM_CM_CC; /*返回值*/ CM_UINT8 devType = 0U; /*设备类型*/ - CM_UINT8 devId = 0U; /*设备ID*/ CM_UINT16 wAtsGtWayDevTypeId = 0U; - UINT8 chLocalCiType = 0U; /*本联锁属性*/ - UINT8 chDstCiType = 0U; /*本联锁属性*/ - UINT8 chCldScxCommMode = 0U; UINT8 chWorkType = 0U; /*双系工作模式*/ UINT8 cControlState = 0U;/*主备用模式*/ UINT8 cRcWorkMode = 0u;/*RC工作模式*/ UINT8 chResult = CI_ERROR; /*联锁属性检查结果*/ + UINT8 serialGroup = 0U; /*串口通信组索引*/ wAtsGtWayDevTypeId = GetTiocTrnsmtGtwyDevTypeId(); /**使用通控板与ATS网关通信*/ if (dstDevTypeId != wAtsGtWayDevTypeId) { devType = (CM_UINT8)((dstDevTypeId >> 8) & 0xFF); - devId = (CM_UINT8)(dstDevTypeId & 0xFF); - - chLocalCiType = GetLocalCiType(); - chDstCiType = GetCiType(devId); - chCldScxCommMode = GetCiFunctionSwitchConfig(SCX_CLD_INTERFACE_TYPE); chWorkType = GetSystemWorkType(); cControlState = GetLocalCiBackUpPattern(); cRcWorkMode = GetLocalRcWorkMode(); - if ((SCX_CLD_SERIAL_PORT_COMM == chCldScxCommMode) && (CI_SYSTEM_TYPE_RCI == devType)) - { - if (((CI_TYPE_CLD == chLocalCiType) && (CI_TYPE_SCX == chDstCiType)) || ((CI_TYPE_SCX == chLocalCiType) && (CI_TYPE_CLD == chDstCiType))) - { - /*串口通信要求双方一个为车辆段一个为试车线*/ - chResult = CI_SUCCESS; - } - else - { - ; /*CI类型错误,返回失败*/ - } - } - else - { - ; /*不为串口通信,此时不对本地CI类型及对方CI类型进行判断*/ - } + chResult = IsSerialDevice(dstDevTypeId, &serialGroup); if ((CI_SYSTEM_TYPE_XIANDI == devType) || (CI_SYSTEM_TYPE_ATS == devType) || (CI_SUCCESS == chResult) diff --git a/TSCP/src/APP/PU13_integration_config/ci_integrate_config.h b/TSCP/src/APP/PU13_integration_config/ci_integrate_config.h index cae2711..a17f79b 100644 --- a/TSCP/src/APP/PU13_integration_config/ci_integrate_config.h +++ b/TSCP/src/APP/PU13_integration_config/ci_integrate_config.h @@ -30,6 +30,6 @@ #define VER_INTE_PROJECT 220 /*Ŀ*/ #define VER_INTE_PRODUCT 40 /*Ʒ*/ #define VER_INTE_EXE 1 /*ִб*/ -#define VER_INTE_TIME 116 /*ɴ*/ +#define VER_INTE_TIME 127 /*ɴ*/ #endif/*endif of #define _CI_INTEGRATE_CONFIG_H*/ \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/2oo2/2oo2DataTransferManage.c b/TSCP/src/APP/ciapp/2oo2/2oo2DataTransferManage.c index 5e9fbfe..28f01c3 100644 --- a/TSCP/src/APP/ciapp/2oo2/2oo2DataTransferManage.c +++ b/TSCP/src/APP/ciapp/2oo2/2oo2DataTransferManage.c @@ -1629,7 +1629,7 @@ UINT32 GetCiAppData(UINT8 *pCiAppDataPointer) pCiAppDataPointer[curIndex] = gCbtcCrossStructZc[ii].wTrainId; curIndex += 1u; } - + /*����һ��CRC*/ crcLength = curIndex - crcIndex; crcResult = Tioc_CommonCrc32(pCiAppDataPointer + crcIndex, crcLength); @@ -3800,11 +3800,11 @@ UINT32 CopyValidGetLogicSecDataCC(UINT8* pCurCiAppDataPointer, UINT16 struNum,Lo curIndex++; for (j = 0U; j < pstLogSecDataStruCC[i].chLogSecLockBelLogRouteSum; j++) { - ShortToChar(pstLogSecDataStruCC[i].szLogSecLockBelLogRouteData->wLogSecLockBelLogRouteId, (pCurCiAppDataPointer + curIndex)); + ShortToChar(pstLogSecDataStruCC[i].szLogSecLockBelLogRouteData[j].wLogSecLockBelLogRouteId, (pCurCiAppDataPointer + curIndex)); curIndex += 2U; - *(pCurCiAppDataPointer + curIndex) = pstLogSecDataStruCC[i].szLogSecLockBelLogRouteData->chLogSecLockBelLogRouteState; + *(pCurCiAppDataPointer + curIndex) = pstLogSecDataStruCC[i].szLogSecLockBelLogRouteData[j].chLogSecLockBelLogRouteState; curIndex++; - *(pCurCiAppDataPointer + curIndex) = pstLogSecDataStruCC[i].szLogSecLockBelLogRouteData->wLogSecLockBelLogRouteDir; + *(pCurCiAppDataPointer + curIndex) = pstLogSecDataStruCC[i].szLogSecLockBelLogRouteData[j].wLogSecLockBelLogRouteDir; curIndex++; } *(pCurCiAppDataPointer + curIndex) = pstLogSecDataStruCC[i].LogSecLogLockState; @@ -4701,7 +4701,7 @@ UINT32 CopyValidSetOcOrginData(UINT8* pCurCiAppDataPointer, UINT16 struNum, OcTo { m_OcToCiOrginDataNum = (UINT8)ValidIdNum; /*����*/ - //printf("m_OcToCiOrginDataNum = %d\n", m_OcToCiOrginDataNum); + debug_infor_printf((char*)"m_OcToCiOrginDataNum = %d\n", m_OcToCiOrginDataNum); (void)CommonMemSet(OcRecvData, (UINT32)((OC_SUM_MAX)* sizeof(OcToCiOriginDataStruct)), 0U, (UINT32)((OC_SUM_MAX)* sizeof(OcToCiOriginDataStruct))); /*����սṹ���ֹ������*/ for (i = 0U; i < ValidIdNum; i++) { @@ -4884,7 +4884,6 @@ UINT32 CopyValidSetOcOrginData(UINT8* pCurCiAppDataPointer, UINT16 struNum, OcTo UINT32 CopyValidGetOcOrginData(UINT8* pCurCiAppDataPointer, UINT16 struNum, OcToCiOriginDataStruct OcRecvData[]) { UINT32 curIndex = 0U; - UINT16 ValidIdNum = 0U; UINT16 i = 0U; UINT16 k = 0U; UINT8 j = 0U; @@ -4905,9 +4904,8 @@ UINT32 CopyValidGetOcOrginData(UINT8* pCurCiAppDataPointer, UINT16 struNum, OcTo ShortToChar(m_OcToCiOrginDataNum, pCurCiAppDataPointer); curIndex += (UINT32)sizeof(UINT16); /*�������ֽ��豸����*/ //printf("m_OcToCiOrginDataNum = %d\n", m_OcToCiOrginDataNum); - if (struNum > ValidIdNum) - { - for (i = 0U; i < m_OcToCiOrginDataNum; i++) + + for (i = 0U; i < m_OcToCiOrginDataNum; i++) { ShortToChar(OcRecvData[i].OcId, (pCurCiAppDataPointer + curIndex)); curIndex += 2U; @@ -5056,7 +5054,7 @@ UINT32 CopyValidGetOcOrginData(UINT8* pCurCiAppDataPointer, UINT16 struNum, OcTo LongToChar(OcRecvData[i].ComStartCycle, (pCurCiAppDataPointer + curIndex)); curIndex += 4U; } - } + } else { diff --git a/TSCP/src/APP/ciapp/2oo2/2oo2DataTransferManage.h b/TSCP/src/APP/ciapp/2oo2/2oo2DataTransferManage.h index f5b1d34..d7c2f6c 100644 --- a/TSCP/src/APP/ciapp/2oo2/2oo2DataTransferManage.h +++ b/TSCP/src/APP/ciapp/2oo2/2oo2DataTransferManage.h @@ -56,6 +56,7 @@ #include "../Route/LogicalRouteDataManage.h" #include "../Route/LongRouteDataManage.h" #include "../ReverseCut/ReverseCutDataManage.h" +#include "../AxisSort/AxisSort.h" #ifdef __cplusplus extern "C" { diff --git a/TSCP/src/APP/ciapp/AxisAssert/AxisAssertManageAPI.c b/TSCP/src/APP/ciapp/AxisAssert/AxisAssertManageAPI.c index 0676797..6fdd440 100644 --- a/TSCP/src/APP/ciapp/AxisAssert/AxisAssertManageAPI.c +++ b/TSCP/src/APP/ciapp/AxisAssert/AxisAssertManageAPI.c @@ -394,7 +394,7 @@ static UINT8 aam_AxisErrorJudge(UINT16 acID,UINT16 acIndex) ; /**/ } /** жڷΧڼỵռʱͨ */ - if ((CI_ERROR == chNearbyCheck)) + if (CI_ERROR == chNearbyCheck) { /* ӽ ڼ޳ӽ ʱ*/ if ((AAM_BAD_NEAR == sameTrainType) || (AAM_BAD_NEAR == convertTrainType)) @@ -423,7 +423,6 @@ static UINT8 aam_AxisErrorJudge(UINT16 acID,UINT16 acIndex) /** ʱλ1*/ aam_AddRedunTime(acIndex, maxRedunTimes); } - /** ϵж */ tmpRedunTime = aam_GetRedunTime(acIndex); tmppassTrainType = aam_GetPassTrainFlag(acIndex); @@ -2111,7 +2110,7 @@ UINT8 aam_ArbContinuousOccCheck(UINT16 wAcId, UINT8 cNearAcNum, UINT16 pNearAcId UINT8 cRetVal = CI_ERROR; UINT16 wBufIndex = 0U; UINT16 wCurRelPhySecId = 0U; /*ID*/ - UINT8 dwCiAndAxleTransBadEnsureCnt = 0U; /*жͨж*/ + UINT32 dwCiAndAxleTransBadEnsureCnt = 0U; /*жͨж*/ UINT32 dwCurAxleOccStartCycNum = 0U; /*ռʼ*/ UINT8 ii = 0U; UINT16 wNearRelPhySecId = 0U; /*ڼID*/ diff --git a/TSCP/src/APP/ciapp/AxisSort/AxisSort.c b/TSCP/src/APP/ciapp/AxisSort/AxisSort.c index 80e5898..7b62a01 100644 --- a/TSCP/src/APP/ciapp/AxisSort/AxisSort.c +++ b/TSCP/src/APP/ciapp/AxisSort/AxisSort.c @@ -16,7 +16,7 @@ static UINT16 g_pSortLinkNum; /* Link */ static UINT16 g_pSortLinkIndex[AS_LINK_MAX + 1U]; /* Link */ -static AS_SORT_INFO_s g_pSortLinkInfo[AS_LINK_MAX + 1U]; /*link*/ +AS_SORT_INFO_s g_pSortLinkInfo[AS_LINK_MAX + 1U]; /*link*/ /* ͨųУSortCT׶CT */ static UINT16 s_pCTSortIndex[SIZE_MAX_LINE_TRAIN_NUM]; /*Ϣ*/ @@ -2188,12 +2188,34 @@ UINT32 as_GetTransferData(OUT UINT8 * pDataBuff, IN UINT32 curIndex) { UINT32 ret = curIndex; UINT32 copyIndex = curIndex; + UINT16 wLinkNum = 0U; + UINT16 u16Index = 0U; + UINT16 wTmpLinkId = 0U; + UINT8 chLocalId = GetSystemParaLocalCiId(); + UINT8 chLinkCIId = 0U;/*link*/ + UINT32 dwLinkNumIndex =0U;/*λ */ if (NULL != pDataBuff) { (void)CommonMemCpy(&pDataBuff[copyIndex], (UINT32)(sizeof(UINT16) * SIZE_MAX_LINE_TRAIN_NUM), s_pCTSortIndex, (UINT32)(sizeof(UINT16) * SIZE_MAX_LINE_TRAIN_NUM)); copyIndex += (UINT32)(sizeof(UINT16) * SIZE_MAX_LINE_TRAIN_NUM); - (void)CommonMemCpy(&pDataBuff[copyIndex], (UINT32)(sizeof(CT_SORT_INFO_s) * SIZE_MAX_COM_VOBC_NUM + 1u), s_pCTSortInfo, (UINT32)(sizeof(CT_SORT_INFO_s) * SIZE_MAX_COM_VOBC_NUM + 1u)); - copyIndex += (UINT32)(sizeof(CT_SORT_INFO_s) * SIZE_MAX_COM_VOBC_NUM + 1u); + (void)CommonMemCpy(&pDataBuff[copyIndex], (UINT32)(sizeof(CT_SORT_INFO_s) * (SIZE_MAX_COM_VOBC_NUM + 1U)), s_pCTSortInfo, (UINT32)(sizeof(CT_SORT_INFO_s) * (SIZE_MAX_COM_VOBC_NUM + 1U))); + copyIndex += (UINT32)(sizeof(CT_SORT_INFO_s) * (SIZE_MAX_COM_VOBC_NUM + 1U)); + /*linkг*/ + dwLinkNumIndex = copyIndex; + copyIndex += 2U; + for (u16Index = 1U; u16Index <= g_pSortLinkNum; u16Index++) + { + wTmpLinkId = g_pSortLinkInfo[u16Index].u16ID; + chLinkCIId = (UINT8)GetLinkManageTiocById(wTmpLinkId); + if ((0U != chLocalId) && (chLinkCIId == chLocalId)) + { + /**/ + (void)CommonMemCpy(&pDataBuff[copyIndex],(UINT32)(sizeof(AS_SORT_INFO_s)), &g_pSortLinkInfo[u16Index], (UINT32)(sizeof(AS_SORT_INFO_s))); + copyIndex += (UINT32)(sizeof(AS_SORT_INFO_s)); + wLinkNum++; + } + } + ShortToChar(wLinkNum, &pDataBuff[dwLinkNumIndex]); /* дгռõļ */ ret = copyIndex; } else @@ -2215,12 +2237,29 @@ UINT32 as_SetTransferData(IN UINT8 * pDataBuff, IN UINT32 curIndex) { UINT32 ret = curIndex; UINT32 copyIndex = curIndex; + UINT16 wLinkNum = 0U; + UINT16 jj = 0U; + UINT16 wTmpLinkId =0U; + UINT16 wLinkIndex = 0U; if (NULL != pDataBuff) { (void)CommonMemCpy(s_pCTSortIndex, (UINT32)(sizeof(UINT16) * SIZE_MAX_LINE_TRAIN_NUM), &pDataBuff[copyIndex], (UINT32)(sizeof(UINT16) * SIZE_MAX_LINE_TRAIN_NUM)); copyIndex += (UINT32)(sizeof(UINT16) * SIZE_MAX_LINE_TRAIN_NUM); - (void)CommonMemCpy(s_pCTSortInfo, (UINT32)(sizeof(CT_SORT_INFO_s) * SIZE_MAX_COM_VOBC_NUM + 1u), &pDataBuff[copyIndex], (UINT32)(sizeof(CT_SORT_INFO_s) * SIZE_MAX_COM_VOBC_NUM + 1u)); - copyIndex += (UINT32)(sizeof(CT_SORT_INFO_s) * SIZE_MAX_COM_VOBC_NUM + 1u); + (void)CommonMemCpy(s_pCTSortInfo, (UINT32)(sizeof(CT_SORT_INFO_s) * (SIZE_MAX_COM_VOBC_NUM + 1U)), &pDataBuff[copyIndex], (UINT32)(sizeof(CT_SORT_INFO_s) * (SIZE_MAX_COM_VOBC_NUM + 1U))); + copyIndex += (UINT32)(sizeof(CT_SORT_INFO_s) * (SIZE_MAX_COM_VOBC_NUM + 1U)); + /*г*/ + wLinkNum = ShortFromChar(&pDataBuff[copyIndex]); + copyIndex += 2u; + for (jj = 0U; jj < wLinkNum; jj++) + { + wTmpLinkId = ShortFromCharLE(&pDataBuff[copyIndex]); + wLinkIndex = g_pSortLinkIndex[wTmpLinkId]; + if ((DEFAULT_ZERO < wLinkIndex) && (wLinkIndex < AS_LINK_MAX+1U)) + { + (void)CommonMemCpy(&g_pSortLinkInfo[wLinkIndex], (UINT32)(sizeof(AS_SORT_INFO_s)), &pDataBuff[copyIndex], (UINT32)(sizeof(AS_SORT_INFO_s))); + copyIndex += (UINT32)(sizeof(AS_SORT_INFO_s)); + } + } ret = copyIndex; } else diff --git a/TSCP/src/APP/ciapp/AxisSort/AxisSort.h b/TSCP/src/APP/ciapp/AxisSort/AxisSort.h index 9c8a49b..27d180a 100644 --- a/TSCP/src/APP/ciapp/AxisSort/AxisSort.h +++ b/TSCP/src/APP/ciapp/AxisSort/AxisSort.h @@ -48,5 +48,5 @@ typedef struct UINT16 TrainEnveLopeID[ENVELOPE_SUM_MAX]; /*аIDϢ*/ }s_TRAIN_ENVELOPE_ID; - +extern AS_SORT_INFO_s g_pSortLinkInfo[AS_LINK_MAX + 1U]; /*link*/ #endif /* INC_AXIS_SORT_INC */ \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/DataManage/DeviceConfigDataManage.c b/TSCP/src/APP/ciapp/DataManage/DeviceConfigDataManage.c index e227eb9..1f3b8ec 100644 --- a/TSCP/src/APP/ciapp/DataManage/DeviceConfigDataManage.c +++ b/TSCP/src/APP/ciapp/DataManage/DeviceConfigDataManage.c @@ -105,37 +105,34 @@ SAME_LINE_ERR, */ UINT8 IsSameLineCI(const UINT8 ciA, const UINT8 ciB) { - UINT32 etcsIdA, etcsIdB; - UINT16 u16CiA, u16CiB; + UINT32 etcsIdA = 0U; + UINT32 etcsIdB = 0U; + UINT16 u16CiA = 0U; + UINT16 u16CiB = 0U; UINT8 retVal = SAME_LINE_ERR; - UINT8 cbtcSysType = DQU_CBTC_FAO; UINT8 dquDevNameA = CI_ERROR; UINT8 dquDevNameB = CI_ERROR; + UINT8 chCiAFactoryType = 0U; + UINT8 chCiBFactoryType = 0U; - u16CiA = (UINT16)((CI_SYSTEM_TYPE_RCI * 256u) + ciA); - u16CiB = (UINT16)((CI_SYSTEM_TYPE_RCI * 256u) + ciB); + u16CiA = (UINT16)((CI_SYSTEM_TYPE_RCI * 256U) + ciA); + u16CiB = (UINT16)((CI_SYSTEM_TYPE_RCI * 256U) + ciB); - cbtcSysType = GetCbtcSysType(); + dquDevNameA = dquDevName2HlhtId(u16CiA,0U,&etcsIdA); + dquDevNameB = dquDevName2HlhtId(u16CiB,0U,&etcsIdB); - dquDevNameA = dquDevName2HlhtId(u16CiA,0u,&etcsIdA); - - dquDevNameB = dquDevName2HlhtId(u16CiB,0u,&etcsIdB); - - if(DQU_CBTC_CPK == cbtcSysType) + /*Ҫӻͨж*/ + if ((CI_SUCCESS == dquDevNameA) && (CI_SUCCESS == dquDevNameB)) { - retVal = SAME_LINE_YES; - } - else if(DQU_CBTC_FAO == cbtcSysType) - { - retVal = SAME_LINE_YES; - } - else if(DQU_CBTC_HLT == cbtcSysType) - { - /*Ҫӻͨж*/ - if ((CI_SUCCESS == dquDevNameA) && (CI_SUCCESS == dquDevNameB)) + /*ݻͨETCSŵĶ壬ӵ͵ߵֽΪ·*/ + if ((etcsIdA & ((UINT32)0x00ff0000)) == (etcsIdB & ((UINT32)0x00ff0000))) { - /*ݻͨETCSŵĶ壬ӵ͵ߵֽΪ·*/ - if ((etcsIdA&((UINT32)0x00ff0000)) == (etcsIdB & ((UINT32)0x00ff0000))) + retVal = SAME_LINE_YES; + + /*ͬһ·һڶʹòͬҲΪͬ·ӿ߻ͨ*/ + chCiAFactoryType = GetCiFactoryType(ciA); + chCiBFactoryType = GetCiFactoryType(ciB); + if (chCiAFactoryType == chCiBFactoryType) { retVal = SAME_LINE_YES; } @@ -146,17 +143,14 @@ UINT8 IsSameLineCI(const UINT8 ciA, const UINT8 ciB) } else { - retVal = SAME_LINE_ERR; + retVal = SAME_LINE_NO; } - }/* zt ɾش 2022-02-15 */ - else if (DQU_CBTC_CC == cbtcSysType) - { - retVal = SAME_LINE_YES; } else - { + { retVal = SAME_LINE_ERR; } + return retVal; } /* diff --git a/TSCP/src/APP/ciapp/DataManage/DeviceDataManage.c b/TSCP/src/APP/ciapp/DataManage/DeviceDataManage.c index 595d022..c4666fc 100644 --- a/TSCP/src/APP/ciapp/DataManage/DeviceDataManage.c +++ b/TSCP/src/APP/ciapp/DataManage/DeviceDataManage.c @@ -4997,15 +4997,15 @@ void SetPhySecSpksFLockBySpksId(UINT16 spksId,UINT8 spksStatus) */ UINT8 GetOtherCiDevStatus(UINT16 const devType,UINT16 const devId,UINT16 const chkDevStatus) { - UINT8 devState = 0u; - UINT8 tmpDevState = 0u; - UINT8 tmpPsdVobcCmd = 0u; - UINT8 tmpColor = 0u; - UINT8 ttmpDevState = 0u; - UINT8 psdMutualLockState = 0u; - UINT16 tempdevId = 0u; /*ʱ豸ID*/ - UINT8 tempdevState = 0u; /*ʱ豸״̬*/ - + UINT8 devState = 0U; + UINT8 tmpDevState = 0U; + UINT8 tmpPsdVobcCmd = 0U; + UINT8 tmpColor = 0U; + UINT8 ttmpDevState = 0U; + UINT8 psdMutualLockState = 0U; + UINT16 tempdevId = 0U; /*ʱ豸ID*/ + UINT8 tempdevState = 0U; /*ʱ豸״̬*/ + UINT8 chPsdExceptState = 0U; switch(devType) { case CI_DEVICE_TYPE_SWITCH: /**/ @@ -5020,12 +5020,12 @@ UINT8 GetOtherCiDevStatus(UINT16 const devType,UINT16 const devId,UINT16 const c } else { - devState = 0u; + devState = 0U; } break; case CI_DEVICE_TYPE_SIGNAL: /*źŻ*/ tmpColor = GetSignalCurColor(devId); - if (tmpColor > 0u) + if (0U < tmpColor) { tmpDevState = GetSignalOpenCloseState(tmpColor); if (SIGNAL_OPEN == tmpDevState) @@ -5039,7 +5039,7 @@ UINT8 GetOtherCiDevStatus(UINT16 const devType,UINT16 const devId,UINT16 const c } else { - devState = 0u; + devState = 0U; } break; case CI_DEVICE_TYPE_ROUTE: /*·*/ @@ -5073,41 +5073,51 @@ UINT8 GetOtherCiDevStatus(UINT16 const devType,UINT16 const devId,UINT16 const c } else { - devState = 0u; + devState = 0U; } break; case CI_DEVICE_TYPE_PSD: /*վ̨*/ tmpDevState = GetPsdState(devId); tmpPsdVobcCmd = GetPsdVobcCmd(devId); psdMutualLockState = GetPsdMutualLockRemoveState(devId); - if ((PSD_MUTUALLOCK_REMOVE_YES == psdMutualLockState) || (PSD_ATS_MUTUALLOCK_REMOVE_YES == psdMutualLockState) - || (PSD_ATS_AND_JD_MUTUALLOCK_REMOVE_YES == psdMutualLockState)) + chPsdExceptState = GePsdExceptState(devId); + + if (PSD_EXCEPT_NO != chPsdExceptState) { - /* ɼֱΪŹر */ - devState = OTHER_CI_PSD_STATUS_CLOSE; - } - else if (PSD_STATE_OPEN == tmpDevState) - { - if (tmpPsdVobcCmd == VOBCTOCI_COMMAND_TYPE_PSDOPEN) - { - /* յVOBCToCIֱΪռô */ - devState = OTHER_CI_PSD_STATUS_OCCUPY_OPEN; - } - else - { - /* δյVOBCToCIֱΪŴ */ - devState = OTHER_CI_PSD_STATUS_OPEN; - } - } - else if (PSD_STATE_CLOSE == tmpDevState) - { - /* δɼֱΪŹر */ - devState = OTHER_CI_PSD_STATUS_CLOSE; + devState = OTHER_CI_PSD_STATUS_OPEN; /* 쳣״̬,Ϊ */ } else { - devState = 0u; + if ((PSD_MUTUALLOCK_REMOVE_YES == psdMutualLockState) || (PSD_ATS_MUTUALLOCK_REMOVE_YES == psdMutualLockState) + || (PSD_ATS_AND_JD_MUTUALLOCK_REMOVE_YES == psdMutualLockState)) + { + /* ɼֱΪŹر */ + devState = OTHER_CI_PSD_STATUS_CLOSE; + } + else if (PSD_STATE_OPEN == tmpDevState) + { + if (VOBCTOCI_COMMAND_TYPE_PSDOPEN == tmpPsdVobcCmd) + { + /* յVOBCToCIֱΪռô */ + devState = OTHER_CI_PSD_STATUS_OCCUPY_OPEN; + } + else + { + /* δյVOBCToCIֱΪŴ */ + devState = OTHER_CI_PSD_STATUS_OPEN; + } + } + else if (PSD_STATE_CLOSE == tmpDevState) + { + /* δɼֱΪŹر */ + devState = OTHER_CI_PSD_STATUS_CLOSE; + } + else + { + devState = 0U; + } } + break; case CI_DEVICE_TYPE_PSD_EXCEPT_OPEN: /*վ̨ţ쳣*/ devState = GePsdExceptState(devId); @@ -5125,7 +5135,7 @@ UINT8 GetOtherCiDevStatus(UINT16 const devType,UINT16 const devId,UINT16 const c } else { - devState = 0u; + devState = 0U; } break; case CI_DEVICE_TYPE_WASHMACHINE: /* ϴ */ @@ -5148,7 +5158,7 @@ UINT8 GetOtherCiDevStatus(UINT16 const devType,UINT16 const devId,UINT16 const c } else { - if (ttmpDevState == SPKS_CUT_NO) + if (SPKS_CUT_NO == ttmpDevState) { devState = OTHER_CI_SPKS_YES; } @@ -6200,7 +6210,8 @@ UINT8 CheckLogJumpLockApply(UINT16 logSectionId) UINT8 logSecLockState = 0U; UINT8 logSecLockRouteNum = 0U; UINT8 chFailStep = 0U; - + UINT8 cYLockAlarmFlag = FLAG_UNSET; /*־*/ + bufIndex = GetlogSectionBufIndex(logSectionId); /*ȡ±*/ /**±Ϸ*/ if (LOGIC_SECTION_SUM_MAX > bufIndex) @@ -6470,13 +6481,21 @@ UINT8 CheckLogJumpLockApply(UINT16 logSectionId) {/*״̬*/ devId = 0u; /*豸ID*/ devState = 0u; /*豸״̬*/ - reVal = LogicSecRltvPrtctSwFlockCheck(logSectionId, &devId, &devState);/**/ + reVal = LogicSecRltvPrtctSwFLockCheck(logSectionId, &devId, &devState, &cYLockAlarmFlag);/**/ + if (CI_SUCCESS != reVal) + { + chFailStep = 13U; + } } if (CI_SUCCESS == reVal) {/*λü*/ devId = 0u; /*豸ID*/ devState = 0u; /*豸״̬*/ reVal = LogicSecRltvPrtctSwPosCheck(logSectionId, &devId, &devState);/*λü*/ + if (CI_SUCCESS != reVal) + { + chFailStep = 14U; + } } } @@ -6863,7 +6882,7 @@ UINT8 JumpLockDriveSwitch(const UINT16 axisSecId) /* -: ڵ +: ڵι : const UINT16 axisSecId ID : const UINT8 DrivFlag ־ ֵ: @@ -6875,7 +6894,6 @@ void AxisSecDrvInnerSwitch(const UINT16 axisSecId, const UINT8 DrivFlag) UINT8 switchExpPos = 0u; /*λ*/ AxisSwitchStruct* pAxisSecSwitchStru = NULL; /**/ UINT8 ii = 0u; /*ѭ*/ - UINT8 funRtn = CI_ERROR; AxisSwitchStruct* pProtectSwitchStru = NULL; /*ݽṹָ*/ UINT8 protectSwitchSum = 0u; @@ -6895,7 +6913,7 @@ void AxisSecDrvInnerSwitch(const UINT16 axisSecId, const UINT8 DrivFlag) { switchId = pAxisSecSwitchStru[ii].SwitchId; switchExpPos = pAxisSecSwitchStru[ii].SwitchPosition; - funRtn = SwitchDriveProcess(switchId, switchExpPos); /*üڵ״̬Ϊ*/ + (void)SwitchDriveProcess(switchId, switchExpPos); /*üڵ״̬Ϊ*/ } for (ii = 0u; ii < protectSwitchSum; ii++) @@ -11657,21 +11675,19 @@ UINT8 GetLocalVirCiType(UINT8 chVirCiId) /* * жϱʱ״̬ * ˵ -* ֵʱЧʧܣZCͨسɹ +* ֵʱЧʧܣȷϷسɹ * Created :LYJ */ UINT8 CheckLocalCiLSXSStata(void) { - UINT8 cLocalCiId = 0U; UINT8 chRet = 0U; UINT8 chVirCINum = 0U; UINT8 i = 0U; UINT8 chXiansuState = 0U; UINT8 chVirtualCIid = 0U; UINT8 chTsrSureFlag = 0U; - cLocalCiId = GetSystemParaLocalCiId(); - chVirCINum = GetVirtualCINum(); + chTsrSureFlag = GetTsrSureFlag(); /*ȡʱȷϱ־*/ if (CI_TSR_SURE_YES == chTsrSureFlag) { @@ -11679,7 +11695,9 @@ UINT8 CheckLocalCiLSXSStata(void) } else { - /*ʱδȷϣжǷȷ*/ + /*ʱδȷϣжǷ*/ + + chVirCINum = GetVirtualCINum(); for (i = 0U; i < chVirCINum; i++) { chVirtualCIid = GetVirtualCIid(i); @@ -11697,4 +11715,85 @@ UINT8 CheckLocalCiLSXSStata(void) } return chRet; +} + +/* +: + ߼ιλ +: + const UINT16 ߼ID +: + . +ֵ: + +add by mpt 20260403 +*/ +void ClearLogSeceSwitchDanCaoPos(const UINT16 logicSecId) +{ + UINT8 switchSum = 0u; /*Ŀ*/ + UINT16 switchId = 0u; /*ID*/ + UINT8 ii = 0u; /*ѭ*/ + UINT8 checkSum = 0u; + LogsecSwitchStruct* dataIdBuf = NULL; + + UINT8 chLogicSecSwitchSum = 0U;/*߼εĿ*/ + LogsecSwitchStruct* pLogicSecSwitchIdData = NULL;/*߼εID*/ + + chLogicSecSwitchSum = GetLogicSecSwitchSum(logicSecId);/*߼εĿ*/ + pLogicSecSwitchIdData = GetLogicSecSwitchIdStru(logicSecId);/*߼εID*/ + + checkSum = GetLgcRelateProSwSum(logicSecId);/*ȡָID߼ιĿ*/ + dataIdBuf = GetLgcRelateProSwStru(logicSecId); + + + + if (NULL != pLogicSecSwitchIdData) + { + for (ii = 0u; ii < chLogicSecSwitchSum; ii++) + { + switchId = pLogicSecSwitchIdData[ii].SwitchId; + /*øõλΪЧ*/ + (void)SetSwitchDanCaoPosition(switchId, SWITCH_POSITION_INVALID); + } + } + + if (NULL != dataIdBuf) + { + for (ii = 0u; ii < checkSum; ii++) + { + switchId = dataIdBuf[ii].SwitchId; + /*øõλΪЧ*/ + (void) SetSwitchDanCaoPosition(switchId, SWITCH_POSITION_INVALID); + } + } +} + +/* +: + ιλ +: + const UINT16 ID +: + . +ֵ: + +add by mpt 20260403 +*/ +void ClearAxisSeceSwitchDanCaoPos(const UINT16 axisSecId) +{ + UINT16* pLogSectionIdBuf = NULL; + UINT8 chLogSectionSum = 0U; + UINT8 ii = 0U; + + pLogSectionIdBuf = GetAxisSecLogSectionIdBuf(axisSecId); + chLogSectionSum = GetAxisSecLogSectionSum(axisSecId); + + if (NULL != pLogSectionIdBuf) + { + for (ii = 0U; ii < chLogSectionSum; ii++) + { + /*߼ε־*/ + ClearLogSeceSwitchDanCaoPos(pLogSectionIdBuf[ii]); + } + } } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/DataManage/DeviceDataManage.h b/TSCP/src/APP/ciapp/DataManage/DeviceDataManage.h index 8bfe439..f2179fa 100644 --- a/TSCP/src/APP/ciapp/DataManage/DeviceDataManage.h +++ b/TSCP/src/APP/ciapp/DataManage/DeviceDataManage.h @@ -76,7 +76,7 @@ typedef struct S_AreaSnowInfoStruct #define ALL_AREA_SNOW_SUM_MAX ((UINT8)254) /*TMC͵ȫѩվ̨*/ #define ALL_CBTC_CROSS_SUM_MAX ((UINT8)253) /*CBTCѹ*/ #define ALL_TACS_CROSS_SUM_MAX ((UINT8)253) /*TACSѹ*/ -#define CROSS_SIGNAL_ID_MAX ((UINT8)1499) /*ѹźŻIDֵ*/ +#define CROSS_SIGNAL_ID_MAX ((UINT16)1499) /*ѹźŻIDֵ*/ #define CBTC_CROSS_ID_MAX ((UINT8)253) /*CBTCѹгID*/ #define TACS_CROSS_ID_MAX ((UINT8)253) /*TACSѹгID*/ @@ -226,8 +226,6 @@ extern UINT8 comm_Train_Test_YSKJ_SCX_State; /* extern UINT8 comm_Train_Test_SQJ_CLD_State; /*Գ복βͨŽӿʱSQJ״̬*/ extern UINT8 comm_Train_Test_TYSJ_CLD_State; /*Գ복βͨŽӿʱTYSJ״̬*/ -extern UINT8 ZCToCIAutoRtnIndict_Flash_Sta; /*ZCCI۷״̬*/ -extern UINT8 ZCToCIAutoRtnIndict_Steady_Sta; /*ZCCI۷ȵ״̬*/ extern UINT8 AutoTriggerFlag; /*Զ־ʼΪδ*/ extern UINT8 CiCiRelayInterfaceConfirmFlag;/*̵ӿȷϱ־*/ @@ -1988,4 +1986,28 @@ UINT8 GetLocalVirCiType(UINT8 chVirCiId); */ UINT8 CheckLocalCiLSXSStata(void); +/* +: + ߼ιλ +: + const UINT16 ߼ID +: + . +ֵ: + +add by mpt 20260403 +*/ +void ClearLogSeceSwitchDanCaoPos(const UINT16 logicSecId); +/* +: + ιλ +: + const UINT16 ID +: + . +ֵ: + +add by mpt 20260403 +*/ +void ClearAxisSeceSwitchDanCaoPos(const UINT16 axisSecId); #endif diff --git a/TSCP/src/APP/ciapp/IO/DeviceRelayDataProcess.c b/TSCP/src/APP/ciapp/IO/DeviceRelayDataProcess.c index 469a7cf..23563d9 100644 --- a/TSCP/src/APP/ciapp/IO/DeviceRelayDataProcess.c +++ b/TSCP/src/APP/ciapp/IO/DeviceRelayDataProcess.c @@ -368,7 +368,8 @@ void OcSwitchDeviceOutput(void) if (0u < mainOcId) {/*OC*/ (void)SetSwitchLastValidDrvPos(switchId, driveSwitchPos); - (void)SetSwitchLastValidPosDrivCycNum(switchId, curNum); + (void)SetSwitchLastValidPosDrivCycNum(switchId, curNum);/*OCʱʼڣᱻ0*/ + SetSwitchOutputDrvCmdCycNum(switchId, curNum);/*OCʱʼڣλõڲɼλʱ*/ } else { @@ -379,6 +380,7 @@ void OcSwitchDeviceOutput(void) { (void)SetSwitchLastValidDrvPos(switchId, driveSwitchPos); (void)SetSwitchLastValidPosDrivCycNum(switchId, curNum); + SetSwitchOutputDrvCmdCycNum(switchId, curNum);/*OCʱʼڣλõڲɼλʱ*/ } } @@ -502,7 +504,7 @@ UINT8 GetOcSwitchState(UINT16 switchId,UINT8 mainControlOCId) rtnSwitchState = OC_SWITCH_POSITION_SIKAI; /*õϱ־*/ - SetSwitchFaultState(m_Switches[indexFind].DeviceId, SWITCH_FAULT_STATE_YES); + (void)SetSwitchFaultState(m_Switches[indexFind].DeviceId, SWITCH_FAULT_STATE_YES); /*ȡȡ״̬*/ switchBlockLinkState = GetCancelOrRcvrBlockLinkSta(); @@ -535,7 +537,7 @@ UINT8 GetOcSwitchState(UINT16 switchId,UINT8 mainControlOCId) else { /*õϱ־*/ - SetSwitchFaultState(m_Switches[indexFind].DeviceId, SWITCH_FAULT_STATE_NO); + (void)SetSwitchFaultState(m_Switches[indexFind].DeviceId, SWITCH_FAULT_STATE_NO); } } switch (rtnSwitchState) @@ -814,7 +816,7 @@ UINT8 GetOcSignalColor(UINT16 signalId) /*OCȫ̼ʱ*/ SetOcSignalStartCycNum(m_Signals[indexFind].DeviceId, 0); /*źŻɫΪƲô*/ - if (SIGNAL_SHOWCOLOUR_INVALID == sigPreDriveColor) + if (SIGNAL_DRIVECOLOUR_NULL == sigPreDriveColor) { rtnSigColor = SIGNAL_SHOWCOLOUR_REDCLOSE; } @@ -865,7 +867,7 @@ UINT8 GetOcSignalColor(UINT16 signalId) if (SIGNAL_LIGHT_EXTICT_STATE_NO == sigColorLevel) { /*źŻɫΪƲô*/ - if (SIGNAL_SHOWCOLOUR_INVALID == sigPreDriveColor) + if (SIGNAL_DRIVECOLOUR_NULL == sigPreDriveColor) { rtnSigColor = SIGNAL_SHOWCOLOUR_RED; } @@ -1117,15 +1119,9 @@ UINT8 SetSignalColorOcAllOff(const UINT16 signalId) case SIGNAL_DRIVECOLOUR_GREENCLOSE: case SIGNAL_DRIVECOLOUR_YELLOWCLOSE: /*̻ȫ ̻Ƶƿش򿪻򺼵ʱ ȡ֮ǰɫ*/ - if ((FUNC_SWITCH_ON == funSwitchGreenYellow) || (FUNC_SWITCH_ON == funSwitchALLCloseUseBlue)) - { - rtnSigColor = preDriveColor; - SignalDataStru[bufIndex].BlueDsBreakFlag = SIGNAL_DS_BREAK_YES; - } - else - { - rtnSigColor = SIGNAL_SHOWCOLOUR_REDBREAK; - } + /*ʱж ǣ֮ǰҿؾرգ*/ + rtnSigColor = preDriveColor; + SignalDataStru[bufIndex].BlueDsBreakFlag = SIGNAL_DS_BREAK_YES; break; case SIGNAL_DRIVECOLOUR_GREENYELLOWCLOSE: /*̻ȫ ̻Ƶƿشʱ*/ @@ -7299,6 +7295,8 @@ UINT8 PsdDeviceToRelayStateProc(void) UINT16 psdId = 0u; /*ID*/ UINT16 psdKMRelayId = 0u;/*ż̵ID*/ UINT16 tmpPsdKMRelayId = 0u;/*ż̵ID*/ + UINT8 ctmpPsdKMRelayState = RELAY_DRIVE_STATE_DOWN;/*ż̵״̬*/ + UINT8 ctmpPsdGMRelayState = RELAY_DRIVE_STATE_DOWN;/*ż̵״̬*/ UINT16 psdGMRelayId = 0u;/*ż̵ID*/ UINT16 psdEditGroupInfo = 0u;/*űϢ*/ UINT8 vobcInterFlag = 0u;/*vobcӿڱʶ*/ @@ -7313,6 +7311,8 @@ UINT8 PsdDeviceToRelayStateProc(void) UINT8 JXTCStopState = 0u; UINT8 psdVirtualState = 0u; UINT8 relayFlag = CI_ERROR; + UINT8 chKeepCloseType = FUNC_SWITCH_OFF; + UINT8 cFuncRet = 0u; vobcInterFlag = GetCiFunctionSwitchConfig(VOBC_INTERFACE_IDENTITY);/*ȡVOBCӿڱʶ*/ @@ -7373,7 +7373,6 @@ UINT8 PsdDeviceToRelayStateProc(void) } psdGMRelayId = GetPsdCloseDriveRelayId(psdId); psdDriveState = GetPsdDriveState(psdId); - if (PSD_DRIVE_STATE_CLOSE == psdDriveState)/*Ϊ*/ { relayFlag = SetRelayDriveState(psdGMRelayId, RELAY_DRIVE_STATE_UP); @@ -7454,7 +7453,25 @@ UINT8 PsdDeviceToRelayStateProc(void) } else if (PSD_DRIVE_STATE_INVALID == psdDriveState) {/*Ч*/ - relayFlag = SetRelayDriveState(psdGMRelayId, RELAY_DRIVE_STATE_DOWN); + chKeepCloseType = GetCiFunctionSwitchConfig(FUNC_PSD_KEEP_CLOSE_TYPE); + if (FUNC_SWITCH_ON == chKeepCloseType) + { + /*ȡPSD򿪹ر״̬*/ + cFuncRet = GetPsdState(psdId); + if (PSD_STATE_OPEN == cFuncRet) + { + ctmpPsdGMRelayState = RELAY_DRIVE_STATE_DOWN; + ctmpPsdKMRelayState = RELAY_DRIVE_STATE_UP; + } + else + { + ctmpPsdGMRelayState = RELAY_DRIVE_STATE_UP ; + ctmpPsdKMRelayState = RELAY_DRIVE_STATE_DOWN; + } + + } + relayFlag = SetRelayDriveState(psdGMRelayId, ctmpPsdGMRelayState); + if (CI_ERROR == relayFlag) {/*ż̵*/ reVal = CI_ERROR; @@ -7465,7 +7482,7 @@ UINT8 PsdDeviceToRelayStateProc(void) if (tmpPsdKMRelayId > 0u) { /*пż̵*/ - relayFlag = SetRelayDriveState(tmpPsdKMRelayId, RELAY_DRIVE_STATE_DOWN); + relayFlag = SetRelayDriveState(tmpPsdKMRelayId, ctmpPsdKMRelayState); if (CI_ERROR == relayFlag) {/*ż̵*/ reVal = CI_ERROR; @@ -7476,7 +7493,7 @@ UINT8 PsdDeviceToRelayStateProc(void) if (tmpPsdKMRelayId > 0u) { /*пż̵*/ - relayFlag = SetRelayDriveState(tmpPsdKMRelayId, RELAY_DRIVE_STATE_DOWN); + relayFlag = SetRelayDriveState(tmpPsdKMRelayId, ctmpPsdKMRelayState); if (CI_ERROR == relayFlag) {/*ż̵*/ reVal = CI_ERROR; @@ -7488,7 +7505,7 @@ UINT8 PsdDeviceToRelayStateProc(void) if (tmpPsdKMRelayId > 0u) { /*пż̵*/ - relayFlag = SetRelayDriveState(tmpPsdKMRelayId, RELAY_DRIVE_STATE_DOWN); + relayFlag = SetRelayDriveState(tmpPsdKMRelayId, ctmpPsdKMRelayState); if (CI_ERROR == relayFlag) {/*ż̵*/ reVal = CI_ERROR; @@ -7498,7 +7515,7 @@ UINT8 PsdDeviceToRelayStateProc(void) if (tmpPsdKMRelayId > 0u) { /*пż̵*/ - relayFlag = SetRelayDriveState(tmpPsdKMRelayId, RELAY_DRIVE_STATE_DOWN); + relayFlag = SetRelayDriveState(tmpPsdKMRelayId, ctmpPsdKMRelayState); if (CI_ERROR == relayFlag) {/*ż̵*/ reVal = CI_ERROR; @@ -7893,10 +7910,9 @@ void ProcessJXTCPulseInterfStopDrv(UINT16 startJXTCRelayId, UINT16 stopJXTCRelay /* * ϴ̵״̬ * ˵ void -* ֵ 0u: ʧ -* 1: ³ɹ +* ֵ void */ -UINT8 WashMachineDevToRelayStaProc(void) +void WashMachineDevToRelayStaProc(void) { UINT16 ii = 0u; /*α*/ UINT16 washMachineSum = 0u; /*ϴ*/ @@ -7907,7 +7923,7 @@ UINT8 WashMachineDevToRelayStaProc(void) UINT16 wCoupingStopSteadyRelayId = 0u; /*Ҷͣȼ̵*/ UINT16 pauseTrainWashRelayId = 0u; /*ͣϴ̵*/ UINT16 passRequestRelayId = 0u; /*̵ͨ*/ - UINT8 retVal = CI_SUCCESS; + UINT8 stpVal = CI_SUCCESS; UINT8 lineIdentity = 0u; /*CI-VOBCӿڱʶ*/ lineIdentity = GetCiFunctionSwitchConfig(VOBC_INTERFACE_IDENTITY);/*ȡCI-VOBCӿڱʶ*/ @@ -7920,9 +7936,9 @@ UINT8 WashMachineDevToRelayStaProc(void) washMachineId = GetWashMachineId(ii); if (CI_ERROR == washMachineId) { - retVal = CI_ERROR; + stpVal = CI_ERROR; } - if (CI_SUCCESS == retVal) + if (CI_SUCCESS == stpVal) { WashTrainRequestRelayId = GetWashTrainRequestRelayId(washMachineId); /*ȡϴ̵ϷΪϴͬ״̵̬*/ @@ -7933,21 +7949,21 @@ UINT8 WashMachineDevToRelayStaProc(void) { if (CI_ERROR == SetRelayDriveState(WashTrainRequestRelayId, RELAY_STATE_UP)) {/*ϴ̵*/ - retVal = CI_ERROR; + stpVal = CI_ERROR; } } else if (WASHMACHINE_DRVSTATE_REQ_FALSE == GetWashTrainRequestDrvState(washMachineId)) { if (CI_ERROR == SetRelayDriveState(WashTrainRequestRelayId, RELAY_STATE_DOWN)) {/*ϴ̵*/ - retVal = CI_ERROR; + stpVal = CI_ERROR; } } else { if (CI_ERROR == SetRelayDriveState(WashTrainRequestRelayId, RELAY_STATE_DOWN)) {/*ϴ̵*/ - retVal = CI_ERROR; + stpVal = CI_ERROR; } } } @@ -7957,7 +7973,7 @@ UINT8 WashMachineDevToRelayStaProc(void) } } - if (CI_SUCCESS == retVal) + if (CI_SUCCESS == stpVal) { TrainHeadStopSteadyRelayId = GetTrainHeadStopSteadyRelayId(washMachineId); /*ȡͷϴλͣȼ̵*/ @@ -7967,14 +7983,14 @@ UINT8 WashMachineDevToRelayStaProc(void) { if (CI_ERROR == SetRelayDriveState(TrainHeadStopSteadyRelayId, RELAY_STATE_UP)) {/*ͷͣȼ̵*/ - retVal = CI_ERROR; + stpVal = CI_ERROR; } } else if (WASHMACHINE_HEAD_STEADY_NO == GetTrainHeadStopSteadyDrvState(washMachineId)) { if (CI_ERROR == SetRelayDriveState(TrainHeadStopSteadyRelayId, RELAY_STATE_DOWN)) {/*ͷͣȼ̵**/ - retVal = CI_ERROR; + stpVal = CI_ERROR; } } @@ -7982,7 +7998,7 @@ UINT8 WashMachineDevToRelayStaProc(void) { if (CI_ERROR == SetRelayDriveState(TrainHeadStopSteadyRelayId, RELAY_STATE_DOWN)) {/*ͷͣȼ̵**/ - retVal = CI_ERROR; + stpVal = CI_ERROR; } } @@ -7993,7 +8009,7 @@ UINT8 WashMachineDevToRelayStaProc(void) } } - if (CI_SUCCESS == retVal) + if (CI_SUCCESS == stpVal) { TrainTailStopSteadyRelayId = GetTrainTailStopSteadyRelayId(washMachineId); /*ȡβϴλͣȼ̵*/ @@ -8003,14 +8019,14 @@ UINT8 WashMachineDevToRelayStaProc(void) { if (CI_ERROR == SetRelayDriveState(TrainTailStopSteadyRelayId, RELAY_STATE_UP)) {/*βͣȼ̵*/ - retVal = CI_ERROR; + stpVal = CI_ERROR; } } else if (WASHMACHINE_TAIL_STEADY_NO == GetTrainTailStopSteadyDrvState(washMachineId)) { if (CI_ERROR == SetRelayDriveState(TrainTailStopSteadyRelayId, RELAY_STATE_DOWN)) {/*βͣȼ̵*/ - retVal = CI_ERROR; + stpVal = CI_ERROR; } } @@ -8018,7 +8034,7 @@ UINT8 WashMachineDevToRelayStaProc(void) { if (CI_ERROR == SetRelayDriveState(TrainTailStopSteadyRelayId, RELAY_STATE_DOWN)) {/*βͣȼ̵*/ - retVal = CI_ERROR; + stpVal = CI_ERROR; } } } @@ -8028,7 +8044,7 @@ UINT8 WashMachineDevToRelayStaProc(void) } } - if (CI_SUCCESS == retVal) + if (CI_SUCCESS == stpVal) { wCoupingStopSteadyRelayId = GetCoupingStopSteadyRelayId(washMachineId); /*ȡҶͣȼ̵*/ @@ -8038,14 +8054,14 @@ UINT8 WashMachineDevToRelayStaProc(void) { if (CI_ERROR == SetRelayDriveState(wCoupingStopSteadyRelayId, RELAY_STATE_UP)) {/*Ҷͣȼ̵*/ - retVal = CI_ERROR; + stpVal = CI_ERROR; } } else if (WASHMACHINE_TAIL_STEADY_NO == GetCoupingStopSteadyDrvState(washMachineId)) { if (CI_ERROR == SetRelayDriveState(wCoupingStopSteadyRelayId, RELAY_STATE_DOWN)) {/*Ҷͣȼ̵*/ - retVal = CI_ERROR; + stpVal = CI_ERROR; } } @@ -8053,7 +8069,7 @@ UINT8 WashMachineDevToRelayStaProc(void) { if (CI_ERROR == SetRelayDriveState(wCoupingStopSteadyRelayId, RELAY_STATE_DOWN)) {/*Ҷͣȼ̵*/ - retVal = CI_ERROR; + stpVal = CI_ERROR; } } } @@ -8063,7 +8079,7 @@ UINT8 WashMachineDevToRelayStaProc(void) } } - if (CI_SUCCESS == retVal) + if (CI_SUCCESS == stpVal) { pauseTrainWashRelayId = GetPauseTrainWashRelayId(washMachineId); /*ȡͣϴ̵*/ @@ -8073,21 +8089,21 @@ UINT8 WashMachineDevToRelayStaProc(void) { if (CI_ERROR == SetRelayDriveState(pauseTrainWashRelayId, RELAY_STATE_UP)) {/*ͣϴ̵*/ - retVal = CI_ERROR; + stpVal = CI_ERROR; } } else if (WASHMACHINE_PAUSE_DRVREQ_FALSE == GetPauseTrainWashRequestDrvSta(washMachineId)) { if (CI_ERROR == SetRelayDriveState(pauseTrainWashRelayId, RELAY_STATE_DOWN)) {/*ͣϴ̵*/ - retVal = CI_ERROR; + stpVal = CI_ERROR; } } else { if (CI_ERROR == SetRelayDriveState(pauseTrainWashRelayId, RELAY_STATE_DOWN)) {/*ͣϴ̵*/ - retVal = CI_ERROR; + stpVal = CI_ERROR; } } } @@ -8097,7 +8113,7 @@ UINT8 WashMachineDevToRelayStaProc(void) } } - if (CI_SUCCESS == retVal) + if (CI_SUCCESS == stpVal) { passRequestRelayId = GetPassRequestRelayId(washMachineId); /*ȡ̵ͨ*/ @@ -8107,21 +8123,21 @@ UINT8 WashMachineDevToRelayStaProc(void) { if (CI_ERROR == SetRelayDriveState(passRequestRelayId, RELAY_STATE_UP)) {/*̵ͨ*/ - retVal = CI_ERROR; + stpVal = CI_ERROR; } } else if (PASS_WASHMACHINE_DRVREQ_FALSE == GetPassWashMachineReqDrvSta(washMachineId)) { if (CI_ERROR == SetRelayDriveState(passRequestRelayId, RELAY_STATE_DOWN)) {/*̵ͨ*/ - retVal = CI_ERROR; + stpVal = CI_ERROR; } } else { if (CI_ERROR == SetRelayDriveState(passRequestRelayId, RELAY_STATE_DOWN)) {/*̵ͨ*/ - retVal = CI_ERROR; + stpVal = CI_ERROR; } } } @@ -8131,20 +8147,19 @@ UINT8 WashMachineDevToRelayStaProc(void) } } - if (CI_SUCCESS == retVal) + if (CI_SUCCESS == stpVal) { /*ϴģʽ̵*/ - retVal = WashMachineWorkModeRelayProc(washMachineId); + stpVal = WashMachineWorkModeRelayProc(washMachineId); } - if (CI_SUCCESS == retVal) + if (CI_SUCCESS == stpVal) { /*ϴӦ̵*/ DownWashDevToRelayStaProc(washMachineId); } } - return retVal; } /* @@ -9259,6 +9274,7 @@ void WashMachineButtonUpdate(const UINT16 washMachineId) UINT8 chRouteState = 0U;/*·״̬*/ UINT32 dwRouteIdleCycNum = 0U; /*·ʼں*/ UINT8 chDownWashAllowErrState = WASH_BUTTON_STATE_ERR_YES; /*ģʽϴϴͬճ״̬*/ + UINT8 wRouteInOutSecOccupy = CI_ERROR; /*ȡ·ʼźŻǷͬʱռѹ*/ curCycle = Get2oo2CurCycleNum(); if ((washMachineId > 0U) && (washMachineId < WASHMACHINE_SUM_MAX)) @@ -9318,16 +9334,22 @@ void WashMachineButtonUpdate(const UINT16 washMachineId) dwRouteIdleCycNum = GetRouteIdleCycNum(wDownWashRelateRouteId); wDownWashAllowColState = GetDownWashAllowColState(washMachineId); dwDownWashAllowVadCycle = GetDownWashBtVadCycle(washMachineId); + wRouteInOutSecOccupy = RouteInOutSecOccupy(wDownWashRelateRouteId); + if ((CI_START_FLOCK_NO == GetStartFLockFlag()) && CI_SUCCESS == wRouteInOutSecOccupy) + { + RouteDriveIntoResult = CI_SUCCESS; /*гʻ*/ + } if ((ROUTE_STATE_IDLE == chRouteState) && (WASH_COL_STATE_ALLOW_YES == wDownWashAllowColState) && - (0U != dwDownWashAllowVadCycle) && (dwDownWashAllowVadCycle < dwRouteIdleCycNum)) + (0U != dwDownWashAllowVadCycle) && (dwDownWashAllowVadCycle < dwRouteIdleCycNum) && (CI_SUCCESS == RouteDriveIntoResult)) { - /*·һͬ*/ + /*·һͬIJ߼ϴΪ޸ȱݣȡϴʱδʻ·Ҫȡ·ִȡϴ*/ SetDownWashAllowColState(washMachineId, WASH_COL_STATE_ALLOW_NO); SetDownWashBtVadCycle(washMachineId, 0U); /*·ϴ״̬ںҲ*/ SetDownWashReqState(washMachineId, WASH_REQ_STATE_ALLOW_NO); SetDownWashReqCycle(washMachineId, 0U); + RouteDriveIntoResult = CI_ERROR; } else { @@ -9363,7 +9385,8 @@ void WashMachineDCCButtonUpdate(const UINT16 washMachineId) UINT8 chRouteState = 0U;/*·״̬*/ UINT32 dwRouteIdleCycNum = 0U; /*·ʼں*/ UINT8 chDownDccWashAllowErrState = WASH_BUTTON_STATE_ERR_YES; /*ģʽDCCϴͬճ״̬*/ - + UINT8 wRouteInOutSecOccupy = CI_ERROR; /*ȡ·ʼźŻǷͬʱռѹ*/ + curCycle = Get2oo2CurCycleNum(); if ((washMachineId > 0U) && (washMachineId < WASHMACHINE_SUM_MAX)) { @@ -9423,15 +9446,22 @@ void WashMachineDCCButtonUpdate(const UINT16 washMachineId) dwRouteIdleCycNum = GetRouteIdleCycNum(wDownWashRelateRouteId); wDownDccWashAllowColState = GetDownDccWashAllowColState(washMachineId); dwDownWashDccBtVadCycle = GetDownWashDccBtVadCycle(washMachineId); - if ((ROUTE_STATE_IDLE == chRouteState) && (WASH_COL_STATE_ALLOW_YES == wDownDccWashAllowColState) && - (0U != dwDownWashDccBtVadCycle) && (dwDownWashDccBtVadCycle < dwRouteIdleCycNum)) + wRouteInOutSecOccupy = RouteInOutSecOccupy(wDownWashRelateRouteId); + if ((CI_START_FLOCK_NO == GetStartFLockFlag()) && CI_SUCCESS == wRouteInOutSecOccupy) { - /*·һͬ*/ + RouteDriveIntoResult = CI_SUCCESS; /*гʻ*/ + } + + if ((ROUTE_STATE_IDLE == chRouteState) && (WASH_COL_STATE_ALLOW_YES == wDownDccWashAllowColState) && + (0U != dwDownWashDccBtVadCycle) && (dwDownWashDccBtVadCycle < dwRouteIdleCycNum) && (CI_SUCCESS == RouteDriveIntoResult)) + { + /*·һͬIJ֧ϴΪ޸ȱݣȡϴʱδʻ·Ҫȡ·ִȡϴ*/ SetDownDccWashAllowColState(washMachineId, WASH_COL_STATE_ALLOW_NO); SetDownWashDccBtVadCycle(washMachineId, 0U); /*·ϴ״̬ںҲ*/ SetDownWashReqState(washMachineId, WASH_REQ_STATE_ALLOW_NO); SetDownWashReqCycle(washMachineId, 0U); + RouteDriveIntoResult = CI_ERROR; } else { @@ -9507,6 +9537,7 @@ void WashMachinePassButtonUpdate(const UINT16 washMachineId) UINT32 dwRouteIdleCycNum = 0U; /*·ʼں*/ UINT8 chDownWashAllowPassErrState = WASH_BUTTON_STATE_ERR_YES; /*ģʽϴϴͬⷴͨճ״̬*/ UINT32 dwDownWashBtVadPassCycle = 0U; /*ģʽϴ߷ͨϴͬⰴťЧ*/ + UINT8 wRouteInOutSecOccupy = CI_ERROR; curCycle = Get2oo2CurCycleNum(); if ((washMachineId > 0U) && (washMachineId < WASHMACHINE_SUM_MAX)) @@ -9562,8 +9593,13 @@ void WashMachinePassButtonUpdate(const UINT16 washMachineId) dwRouteIdleCycNum = GetRouteIdleCycNum(wDownWashRelateRouteId); wDownWashAllowPassColState = GetDownWashAllowPassColState(washMachineId); dwDownWashBtVadPassCycle = GetDownWashBtVadPassCycle(washMachineId); + wRouteInOutSecOccupy = RouteInOutSecOccupy(wDownWashRelateRouteId); + if ((CI_START_FLOCK_NO == GetStartFLockFlag()) && (CI_SUCCESS == wRouteInOutSecOccupy)) + { + RouteDriveIntoResult = CI_SUCCESS; /*гʻ*/ + } if ((ROUTE_STATE_IDLE == chRouteState) && (WASH_COL_STATE_ALLOW_YES == wDownWashAllowPassColState) && - (0U != dwDownWashBtVadPassCycle) && (dwDownWashBtVadPassCycle < dwRouteIdleCycNum)) + (0U != dwDownWashBtVadPassCycle) && (dwDownWashBtVadPassCycle < dwRouteIdleCycNum) && (CI_SUCCESS == RouteDriveIntoResult)) { /*·һͬ*/ SetDownWashAllowPassColState(washMachineId, WASH_COL_STATE_ALLOW_NO); @@ -9571,6 +9607,7 @@ void WashMachinePassButtonUpdate(const UINT16 washMachineId) /*·ϴͨ״̬ںҲ*/ SetDownWashPassReqState(washMachineId, WASH_REQ_STATE_ALLOW_NO); SetDownWashPassReqCycle(washMachineId, 0U); + RouteDriveIntoResult = CI_ERROR; } else { @@ -9610,7 +9647,7 @@ void WashMachineDCCPassButtonUpdate(const UINT16 washMachineId) UINT32 dwRouteIdleCycNum = 0U; /*·ʼں*/ UINT8 chDownDccWashAllowPassErrState = WASH_BUTTON_STATE_ERR_YES; /*ģʽDCCϴͬⷴͨճ״̬(ֶ̬:ɼ)*/ UINT32 dwDownWashDccBtVadPassCycle = 0U; /*ģʽDCCͨϴͬⰴťЧ*/ - + UINT8 wRouteInOutSecOccupy = CI_ERROR; curCycle = Get2oo2CurCycleNum(); if ((washMachineId > 0U) && (washMachineId < WASHMACHINE_SUM_MAX)) @@ -9667,8 +9704,13 @@ void WashMachineDCCPassButtonUpdate(const UINT16 washMachineId) dwRouteIdleCycNum = GetRouteIdleCycNum(wDownWashRelateRouteId); wDownDccWashAllowPassColState = GetDownDccWashAllowPassColState(washMachineId); dwDownWashDccBtVadPassCycle = GetDownWashDccBtVadPassCycle(washMachineId); + wRouteInOutSecOccupy = RouteInOutSecOccupy(wDownWashRelateRouteId); + if ((CI_START_FLOCK_NO == GetStartFLockFlag()) && (CI_SUCCESS == wRouteInOutSecOccupy)) + { + RouteDriveIntoResult = CI_SUCCESS; /*гʻ*/ + } if ((ROUTE_STATE_IDLE == chRouteState) && (WASH_COL_STATE_ALLOW_YES == wDownDccWashAllowPassColState) && - (0U != dwDownWashDccBtVadPassCycle) && (dwDownWashDccBtVadPassCycle < dwRouteIdleCycNum)) + (0U != dwDownWashDccBtVadPassCycle) && (dwDownWashDccBtVadPassCycle < dwRouteIdleCycNum) && (CI_SUCCESS == RouteDriveIntoResult)) { /*·һͬ*/ SetDownDccWashAllowPassColState(washMachineId, WASH_COL_STATE_ALLOW_NO); @@ -9676,6 +9718,7 @@ void WashMachineDCCPassButtonUpdate(const UINT16 washMachineId) /*·ϴͨ״̬ںҲ*/ SetDownWashPassReqState(washMachineId, WASH_REQ_STATE_ALLOW_NO); SetDownWashPassReqCycle(washMachineId, 0U); + RouteDriveIntoResult = CI_ERROR; } else { @@ -9978,10 +10021,9 @@ void WashMachineApplyStateProc(const UINT16 washMachineId) /* * ϴ߼״̬ * ˵ void -* ֵ 0u: ʧ -* 1: ³ɹ +* ֵ void */ -UINT8 WashMachineToDeviceStateProc(void) +void WashMachineToDeviceStateProc(void) { UINT16 ii = 0u; /*α*/ UINT16 washMachineSum = 0u; /*ϴ*/ @@ -9993,7 +10035,7 @@ UINT8 WashMachineToDeviceStateProc(void) UINT16 tailWashAllowRelayId = 0u; /*ϴβϴ̵ID*/ UINT16 coupingWashAllowRelayId = 0u; /*ϴҶϴ̵ID*/ UINT16 outWashTrainPortAllowRelayId = 0u; /*ϴϴ̵ID*/ - UINT8 ret = CI_SUCCESS; + UINT8 stp = CI_SUCCESS; UINT8 lineIdentity = 0u; /*CI-VOBCӿڱʶ*/ UINT16 washModeBackRelayId = 0U; UINT8 washModeState = 0U; @@ -10007,10 +10049,10 @@ UINT8 WashMachineToDeviceStateProc(void) washMachineId = GetWashMachineId(ii); if (CI_ERROR == washMachineId) { - ret = CI_ERROR; + stp = CI_ERROR; } - if (CI_SUCCESS == ret) + if (CI_SUCCESS == stp) { /*ϴȷ״̬*/ washMachineReVeriRelayId = GetWashMachineReqVerifyRelayId(washMachineId); @@ -10022,7 +10064,7 @@ UINT8 WashMachineToDeviceStateProc(void) retRsult = SetWashMachineRequestVerifySta(washMachineId, WASHMACHINE_COL_REQUEST_VALID); if (CI_ERROR == retRsult) { - ret = CI_ERROR; + stp = CI_ERROR; } } else if (RELAY_STATE_DOWN == relayCollState) @@ -10030,12 +10072,12 @@ UINT8 WashMachineToDeviceStateProc(void) retRsult = SetWashMachineRequestVerifySta(washMachineId, WASHMACHINE_COL_REQUEST_INVALID); if (CI_ERROR == retRsult) { - ret = CI_ERROR; + stp = CI_ERROR; } } else { - ret = CI_ERROR; + stp = CI_ERROR; } } else @@ -10044,7 +10086,7 @@ UINT8 WashMachineToDeviceStateProc(void) } } - if (CI_SUCCESS == ret) + if (CI_SUCCESS == stp) { /*ͷϴ״̬*/ headWashAllowRelayId = GetHeadWashAllowRelayId(washMachineId); @@ -10057,7 +10099,7 @@ UINT8 WashMachineToDeviceStateProc(void) retRsult = SetHeadWashAllowState(washMachineId, WASHMACHINE_COL_HEADWASH_YES); if (CI_ERROR == retRsult) { - ret = CI_ERROR; + stp = CI_ERROR; } } else if (RELAY_STATE_DOWN == relayCollState) @@ -10065,12 +10107,12 @@ UINT8 WashMachineToDeviceStateProc(void) retRsult = SetHeadWashAllowState(washMachineId, WASHMACHINE_COL_HEADWASH_NO); if (CI_ERROR == retRsult) { - ret = CI_ERROR; + stp = CI_ERROR; } } else { - ret = CI_ERROR; + stp = CI_ERROR; } } else @@ -10079,7 +10121,7 @@ UINT8 WashMachineToDeviceStateProc(void) } } - if (CI_SUCCESS == ret) + if (CI_SUCCESS == stp) { /*βϴ״̬*/ tailWashAllowRelayId = GetTailWashAllowRelayId(washMachineId); @@ -10092,7 +10134,7 @@ UINT8 WashMachineToDeviceStateProc(void) retRsult = SetTailWashAllowState(washMachineId, WASHMACHINE_COL_TAILWASH_YES); if (CI_ERROR == retRsult) { - ret = CI_ERROR; + stp = CI_ERROR; } } else if (RELAY_STATE_DOWN == relayCollState) @@ -10100,12 +10142,12 @@ UINT8 WashMachineToDeviceStateProc(void) retRsult = SetTailWashAllowState(washMachineId, WASHMACHINE_COL_TAILWASH_NO); if (CI_ERROR == retRsult) { - ret = CI_ERROR; + stp = CI_ERROR; } } else { - ret = CI_ERROR; + stp = CI_ERROR; } } else @@ -10114,7 +10156,7 @@ UINT8 WashMachineToDeviceStateProc(void) } } - if (CI_SUCCESS == ret) + if (CI_SUCCESS == stp) { /*Ҷϴ״̬*/ coupingWashAllowRelayId = GetCoupingWashAllowRelayId(washMachineId); @@ -10127,7 +10169,7 @@ UINT8 WashMachineToDeviceStateProc(void) retRsult = SetCoupingWashAllowState(washMachineId, WASHMACHINE_COL_COUPINGWASH_YES); if (CI_ERROR == retRsult) { - ret = CI_ERROR; + stp = CI_ERROR; } } else if (RELAY_STATE_DOWN == relayCollState) @@ -10135,12 +10177,12 @@ UINT8 WashMachineToDeviceStateProc(void) retRsult = SetCoupingWashAllowState(washMachineId, WASHMACHINE_COL_COUPINGWASH_NO); if (CI_ERROR == retRsult) { - ret = CI_ERROR; + stp = CI_ERROR; } } else { - ret = CI_ERROR; + stp = CI_ERROR; } } else @@ -10149,7 +10191,7 @@ UINT8 WashMachineToDeviceStateProc(void) } } - if (CI_SUCCESS == ret) + if (CI_SUCCESS == stp) { /*ϴ״̬*/ emergencyStopRelayId = GetTrainEmergencyStopRelayId(washMachineId); @@ -10164,7 +10206,7 @@ UINT8 WashMachineToDeviceStateProc(void) retRsult = SetTrainEmergencyStopState(washMachineId, WASHMACHINE_COL_FALUT_NO); if (CI_ERROR == retRsult) { - ret = CI_ERROR; + stp = CI_ERROR; } } else if ((LINE_FAOHLHT == lineIdentity) || (LINE_FAOHLHT_ONESELF == lineIdentity) || (LINE_FAOHLHT_ONESELFSECOND == lineIdentity) @@ -10173,12 +10215,12 @@ UINT8 WashMachineToDeviceStateProc(void) retRsult = SetTrainEmergencyStopState(washMachineId, WASHMACHINE_COL_FALUT_NO_2); if (CI_ERROR == retRsult) { - ret = CI_ERROR; + stp = CI_ERROR; } } else {/*·*/ - ret = CI_ERROR; + stp = CI_ERROR; } } @@ -10189,7 +10231,7 @@ UINT8 WashMachineToDeviceStateProc(void) retRsult = SetTrainEmergencyStopState(washMachineId, WASHMACHINE_COL_FALUT_YES); if (CI_ERROR == retRsult) { - ret = CI_ERROR; + stp = CI_ERROR; } } else if ((LINE_FAOHLHT == lineIdentity) || (LINE_FAOHLHT_ONESELF == lineIdentity) || (LINE_FAOHLHT_ONESELFSECOND == lineIdentity) @@ -10198,18 +10240,18 @@ UINT8 WashMachineToDeviceStateProc(void) retRsult = SetTrainEmergencyStopState(washMachineId, WASHMACHINE_COL_FALUT_YES_2); if (CI_ERROR == retRsult) { - ret = CI_ERROR; + stp = CI_ERROR; } } else {/*·*/ - ret = CI_ERROR; + stp = CI_ERROR; } } else { - ret = CI_ERROR; + stp = CI_ERROR; } } else @@ -10217,7 +10259,7 @@ UINT8 WashMachineToDeviceStateProc(void) /*øü̵ִ*/ } } - if (CI_SUCCESS == ret) + if (CI_SUCCESS == stp) { /*ϴ״̬*/ washMachineReadyRelayId = GetWashMachineReadyRelayId(washMachineId); @@ -10229,7 +10271,7 @@ UINT8 WashMachineToDeviceStateProc(void) retRsult = SetWashMachineReadyState(washMachineId, WASHMACHINE_COL_READY_YES); if (CI_ERROR == retRsult) { - ret = CI_ERROR; + stp = CI_ERROR; } } else if (RELAY_STATE_DOWN == relayCollState) @@ -10237,12 +10279,12 @@ UINT8 WashMachineToDeviceStateProc(void) retRsult = SetWashMachineReadyState(washMachineId, WASHMACHINE_COL_READY_NO); if (CI_ERROR == retRsult) { - ret = CI_ERROR; + stp = CI_ERROR; } } else { - ret = CI_ERROR; + stp = CI_ERROR; } } else @@ -10251,7 +10293,7 @@ UINT8 WashMachineToDeviceStateProc(void) } } - if (CI_SUCCESS == ret) + if (CI_SUCCESS == stp) { /*ϴ״̬*/ outWashTrainPortAllowRelayId = GetTrainOutWashPortAllowRelay(washMachineId); @@ -10266,7 +10308,7 @@ UINT8 WashMachineToDeviceStateProc(void) retRsult = SetTrainOutWashPortAllowSta(washMachineId, WASHMACHINE_COL_OUT_YES); if (CI_ERROR == retRsult) { - ret = CI_ERROR; + stp = CI_ERROR; } } else if ((LINE_FAOHLHT == lineIdentity) || (LINE_FAOHLHT_ONESELF == lineIdentity) || (LINE_FAOHLHT_ONESELFSECOND == lineIdentity) @@ -10275,12 +10317,12 @@ UINT8 WashMachineToDeviceStateProc(void) retRsult = SetTrainOutWashPortAllowSta(washMachineId, WASHMACHINE_COL_OUT_YES_2); if (CI_ERROR == retRsult) { - ret = CI_ERROR; + stp = CI_ERROR; } } else {/*·*/ - ret = CI_ERROR; + stp = CI_ERROR; } } else if (RELAY_STATE_DOWN == relayCollState) @@ -10290,7 +10332,7 @@ UINT8 WashMachineToDeviceStateProc(void) retRsult = SetTrainOutWashPortAllowSta(washMachineId, WASHMACHINE_COL_OUT_NO); if (CI_ERROR == retRsult) { - ret = CI_ERROR; + stp = CI_ERROR; } } else if ((LINE_FAOHLHT == lineIdentity) || (LINE_FAOHLHT_ONESELF == lineIdentity) || (LINE_FAOHLHT_ONESELFSECOND == lineIdentity) @@ -10299,17 +10341,17 @@ UINT8 WashMachineToDeviceStateProc(void) retRsult = SetTrainOutWashPortAllowSta(washMachineId, WASHMACHINE_COL_OUT_NO_2); if (CI_ERROR == retRsult) { - ret = CI_ERROR; + stp = CI_ERROR; } } else {/*·*/ - ret = CI_ERROR; + stp = CI_ERROR; } } else { - ret = CI_ERROR; + stp = CI_ERROR; } } else @@ -10318,7 +10360,7 @@ UINT8 WashMachineToDeviceStateProc(void) } } - if (CI_SUCCESS == ret) + if (CI_SUCCESS == stp) { washModeBackRelayId = GetWashModeBackRelayId(washMachineId); if ((0U != washModeBackRelayId) && (UINT16_MAX != washModeBackRelayId)) @@ -10344,18 +10386,16 @@ UINT8 WashMachineToDeviceStateProc(void) } /*ģʽϴť״̬*/ - if (CI_SUCCESS == ret) + if (CI_SUCCESS == stp) { WashMachineButtonStateProc(washMachineId); } /*ģʽϢ*/ - if (CI_SUCCESS == ret) + if (CI_SUCCESS == stp) { WashMachineApplyStateProc(washMachineId); } } - - return ret; } @@ -18255,6 +18295,7 @@ void SwitchMainControlCmdOut(UINT16 switchId,UINT8 ocId) UINT8 timeCheckRet = 0u; UINT32 chCurCycleNum = 0u; UINT8 ret = CI_ERROR; + UINT16 wThisOcOtherSwitchId = 0u; chCurCycleNum = Get2oo2CurCycleNum(); @@ -18309,6 +18350,36 @@ void SwitchMainControlCmdOut(UINT16 switchId,UINT8 ocId) ret = CI_SUCCESS; } } + if (CI_SUCCESS == ret) + {/*ͱͬOCͬ忨ĵǷڼ*/ + wThisOcOtherSwitchId = GetSwitchThisOcOtherSwitchId(switchId, ocId); + if (SWITCH_SUM_MAX > wThisOcOtherSwitchId) + {/*0*/ + dwSwitchOutputDrvCmdCycNum = GetSwitchOutputDrvCmdCycNum(wThisOcOtherSwitchId); + if (0U < dwSwitchOutputDrvCmdCycNum) + {/*ǰ*/ + dwDrvCutMaxCycNum = GetSwitchMachineDrvCutInterval();/*ڼлʱ*/ + timeCheckRet = SystemOverTimeCheck(dwSwitchOutputDrvCmdCycNum, dwDrvCutMaxCycNum); + + if ((CI_TIME_OUT == timeCheckRet) && (0u < dwDrvCutMaxCycNum)) + {/*ʱ*/ + ret = CI_SUCCESS; + } + else + { + ret = CI_ERROR; + } + } + else + { + ret = CI_SUCCESS; + } + } + else + {/*ȡǷֵ*/ + ret = CI_ERROR; + } + } if (CI_SUCCESS == ret) { @@ -18341,8 +18412,6 @@ void SwitchMainControlCmdOut(UINT16 switchId,UINT8 ocId) */ void SwitchDoubleMainProtect(UINT16 switchId) { - UINT8 chSwitchIncludeOcNum = 0U; - UINT8 i = 0U; UINT8 ocId = 0u; UINT8 otherOcId = 0U; UINT8 chOcCotrolMode = 0U; @@ -18350,45 +18419,43 @@ void SwitchDoubleMainProtect(UINT16 switchId) UINT8 chThisOcCmd = 0u; UINT8 chOtherOcCmd = 0u; - chSwitchIncludeOcNum = GetSwitchIncludeOcNum(switchId); - for (i = 0u; i < chSwitchIncludeOcNum; i++) - { - ocId = GetSwitchIncludeOCId(switchId, i); - otherOcId = GetSwitchThisOcOtherOCId(switchId, ocId); - /*ȡOC״̬*/ - chOcCotrolMode = GetSwitchThisOcCotrolMode(switchId, ocId); - chOtherOcCotrolMode = GetSwitchThisOcCotrolMode(switchId, otherOcId); + + ocId = GetSwitchIncludeOCId(switchId, 0u); + otherOcId = GetSwitchThisOcOtherOCId(switchId, ocId); + /*ȡOC״̬*/ + chOcCotrolMode = GetSwitchThisOcCotrolMode(switchId, ocId); + chOtherOcCotrolMode = GetSwitchThisOcCotrolMode(switchId, otherOcId); - if ((MAIN_CONTROL == chOcCotrolMode) || (ERR_MODE_CONTROL == chOcCotrolMode)) - {/*OC忨*/ - if ((MAIN_CONTROL == chOtherOcCotrolMode) || (ERR_MODE_CONTROL == chOtherOcCotrolMode)) - {/*һOC忨*/ + if ((MAIN_CONTROL == chOcCotrolMode) || (ERR_MODE_CONTROL == chOcCotrolMode)) + {/*OC忨*/ + if ((MAIN_CONTROL == chOtherOcCotrolMode) || (ERR_MODE_CONTROL == chOtherOcCotrolMode)) + {/*һOC忨*/ - /*OCءһOC*/ - SetSwitchThisOcOutControlCmd(switchId, ocId, STANDBY_CONTROL); - SetSwitchThisOcOutControlCmd(switchId, otherOcId, STANDBY_CONTROL); - } - else - { - /*޴*/ - } + /*OCءһOC*/ + SetSwitchThisOcOutControlCmd(switchId, ocId, STANDBY_CONTROL); + SetSwitchThisOcOutControlCmd(switchId, otherOcId, STANDBY_CONTROL); } else { /*޴*/ } - - /*OCһOC˫*/ - chThisOcCmd = GetSwitchThisOcOutControlCmd(switchId, ocId); - chOtherOcCmd = GetSwitchThisOcOutControlCmd(switchId, otherOcId); - if ((MAIN_CONTROL == chThisOcCmd) && (MAIN_CONTROL == chOtherOcCmd)) - { - /*OCءһOC*/ - SetSwitchThisOcOutControlCmd(switchId, ocId, STANDBY_CONTROL); - SetSwitchThisOcOutControlCmd(switchId, otherOcId, STANDBY_CONTROL); - } - } + else + { + /*޴*/ + } + + /*OCһOC˫*/ + chThisOcCmd = GetSwitchThisOcOutControlCmd(switchId, ocId); + chOtherOcCmd = GetSwitchThisOcOutControlCmd(switchId, otherOcId); + if ((MAIN_CONTROL == chThisOcCmd) && (MAIN_CONTROL == chOtherOcCmd)) + { + /*OCءһOC*/ + SetSwitchThisOcOutControlCmd(switchId, ocId, STANDBY_CONTROL); + SetSwitchThisOcOutControlCmd(switchId, otherOcId, STANDBY_CONTROL); + } + + } @@ -18415,7 +18482,7 @@ void FindSwitchPostionCmdOut(UINT16 switchId) mainOcId = GetSwitchMainCotrolOCId(switchId);/*ȡOCID*/ chSwitchIncludeOcNum = GetSwitchIncludeOcNum(switchId); - chSwitchColPos = GetSwitchCollPos(switchId); + chSwitchColPos = GetSingleSwitchCurPosition(switchId); if (0u == mainOcId) {/*ǰ*/ if ((SWITCH_POSITION_DINGWEI != chSwitchColPos) && (SWITCH_POSITION_FANWEI != chSwitchColPos)) @@ -18463,58 +18530,14 @@ void FindSwitchPostionCmdOut(UINT16 switchId) } } else - {/**/ - if ((SWITCH_POSITION_DINGWEI == chSwitchColPos) || (SWITCH_POSITION_FANWEI == chSwitchColPos)) - {/*λλ*/ - SetSwitchThisOcFindPostionCmd(switchId, mainOcId, NO_FIND_CMD); - SetSwitchThisOcFindCmdCycNum(switchId, mainOcId, 0u); + {/*أѰʾ*/ + + SetSwitchThisOcFindPostionCmd(switchId, mainOcId, NO_FIND_CMD); + SetSwitchThisOcFindCmdCycNum(switchId, mainOcId, 0u); - otherOcId = GetSwitchThisOcOtherOCId(switchId, mainOcId); - SetSwitchThisOcFindPostionCmd(switchId, otherOcId, NO_FIND_CMD); - SetSwitchThisOcFindCmdCycNum(switchId, otherOcId, 0u); - } - else - {/*֮ǰ*/ - } - } - - /*Ѱʾʱģ*/ - FindSwitchPostionCmdTimeOutCheck(switchId); - -} - -/* -* Ѱʱģ -* ˵ UINT16 switchId ID -* ֵ void -* add by mpt 20260330 -*/ -void FindSwitchPostionCmdTimeOutCheck(UINT16 switchId) -{ - UINT32 dwOcFindCmdCycNum = 0u; - UINT8 chSwitchIncludeOcNum = 0u; - UINT8 i = 0u; - UINT8 ocId = 0u; - UINT8 chThisOcFindPostionCmd = 0u; - UINT32 dwSwitchDriveCyc = 0u; - UINT8 timeCheckRet = 0u; - - dwSwitchDriveCyc = GetSystemParaSwitchDriveCyc(); - chSwitchIncludeOcNum = GetSwitchIncludeOcNum(switchId); - - for (i = 0u; i < chSwitchIncludeOcNum; i++) - { - ocId = GetSwitchIncludeOCId(switchId, i); - chThisOcFindPostionCmd = GetSwitchThisOcFindPostionCmd(switchId, ocId); - if (NO_FIND_CMD != chThisOcFindPostionCmd) - {/*ǰѰ*/ - dwOcFindCmdCycNum = GetSwitchThisOcFindCmdCycNum(switchId, ocId); - - timeCheckRet = SystemOverTimeCheck(dwOcFindCmdCycNum, dwSwitchDriveCyc); - if ((CI_TIME_OUT == timeCheckRet)&&(0uOcDevices[jj].szSwitchIncldeZzjState[chSwitchZzjIndex] = OC_SWITCH_POSITION_SIKAI; } - for (kk = 0u; kk < MAX_OC_SWITCH_INCLUDE_BOARD_NUM; kk++) + for (mm = 0u; mm < MAX_OC_SWITCH_INCLUDE_BOARD_NUM; mm++) { - pTempOc->OcDevices[jj].MainStandbyState[kk] = STANDBY_CONTROL;/*Ȩ*/ + pTempOc->OcDevices[jj].MainStandbyState[mm] = STANDBY_CONTROL;/*Ȩ*/ } } @@ -1071,20 +1072,20 @@ void ProcessOcToCiData(void) m_Switches[jj].MainStandbyState[j] = STANDBY_CONTROL;/**/ } - SetSwitchOcPlusBoxSateState(m_Switches[jj].DeviceId, pTempOc->OcId, SWITCH_BOX_FAULT);/**/ + SetSwitchOcPlusBoxSateState(m_Switches[jj].DeviceId, (UINT8)pTempOc->OcId, SWITCH_BOX_FAULT);/**/ /*ð忨Ϊ״̬*/ for (j = 0U; j < MAX_OC_SWITCH_INCLUDE_BOARD_NUM; j++) { - SetSwitchThisOCBoardState(m_Switches[jj].DeviceId, m_Switches[jj].OcId, m_Switches[jj].BoardAddr[j], 0xffU); + SetSwitchThisOCBoardState(m_Switches[jj].DeviceId, (UINT8)m_Switches[jj].OcId, m_Switches[jj].BoardAddr[j], 0xffU); } /*ͨжϽ״̬Ϊزں*/ - chThisOcCotrolMode = GetSwitchThisOcCotrolMode(m_Switches[jj].DeviceId, pTempOc->OcId); + chThisOcCotrolMode = GetSwitchThisOcCotrolMode(m_Switches[jj].DeviceId, (UINT8)pTempOc->OcId); if ((MAIN_CONTROL == chThisOcCotrolMode) || (ERR_MODE_CONTROL == chThisOcCotrolMode)) {/*ػ쳣*/ - SetSwitchThisOcCotrolMode(m_Switches[jj].DeviceId, pTempOc->OcId, STANDBY_CONTROL); - SetSwitchOutMainContrCmdCycNum(m_Switches[jj].DeviceId, pTempOc->OcId, curCycle);/*ͨжϵOCأˢںţOCزʱʱһʱ*/ + SetSwitchThisOcCotrolMode(m_Switches[jj].DeviceId, (UINT8)pTempOc->OcId, STANDBY_CONTROL); + SetSwitchOutMainContrCmdCycNum(m_Switches[jj].DeviceId, (UINT8)pTempOc->OcId, curCycle);/*ͨжϵOCأˢںţOCزʱʱһʱ*/ } } @@ -1382,7 +1383,7 @@ void ProcessZcToCiData(void) sourceIdBuf = GetCiTransmitSpecifySysDevBuf(CI_SYSTEM_TYPE_ZC);/*ȡ뱾ͨŵZCIDĿǰһֻһZCͨ*/ - if (sourceIdBuf != NULL) + if (NULL != sourceIdBuf) { /*ZCͨ״̬*/ (void)UpdateCiTransmitState(localCiId, CI_SYSTEM_TYPE_ZC, sourceIdBuf[0]); @@ -1391,11 +1392,11 @@ void ProcessZcToCiData(void) hLHTHeadCtxValid = GetHLHTHeadCtxValid(CI_SYSTEM_TYPE_ZC, sourceIdBuf[0]); if (CI_ERROR == hLHTHeadCtxValid) /*ʹGetZcMaskZcId()ȡZC IDΪZCݾ*/ { - dataValidFlag = 0u; + dataValidFlag = 0U; } else {/*ϢЧ*/ - dataValidFlag = 1u; + dataValidFlag = 1U; } debug_infor_printf((const)"\n CurCycle:%d ZcCiValidFlag:%d \n",curCycle,dataValidFlag); @@ -1405,7 +1406,7 @@ void ProcessZcToCiData(void) secJumpLockDelayUnlockCount = GetSysParaSecJLokDelayUnlockCyc();/*ȡԾʱ*/ - if ((0u == zcMaskValueLen) || (NULL == pZcMaskValueBuf)) + if ((0U == zcMaskValueLen) || (NULL == pZcMaskValueBuf)) {/*δյzc͹λ*/ /*if (GetCiTransmitState(CI_SYSTEM_TYPE_ZC, 0u) != TRANSMIT_STATE_GOOD)*/ @@ -1573,7 +1574,7 @@ void ProcessZcToCiData(void) } } - if (reVal == CI_SUCCESS) + if (CI_SUCCESS == reVal) { /*ZCͨŻָ󣬵ʱάֶ̬Է״̬*/ phySecCurSum = GetPhySecCurSum(); @@ -1603,7 +1604,7 @@ void ProcessZcToCiData(void) } /*ZC͵ʱϢ*/ - if (reVal == CI_SUCCESS) + if (CI_SUCCESS == reVal) { cTsrSureFlag = GetTsrSureFlag(); pZcToCiDataStru = GetZcToCiDataStru(); @@ -1627,7 +1628,7 @@ void ProcessZcToCiData(void) } /*ZC͵ĽƶϢ*/ - if (reVal == CI_SUCCESS) + if (CI_SUCCESS == reVal) { if (NULL != pZcToCiDataStru) { @@ -1647,12 +1648,10 @@ void ProcessZcToCiData(void) } } - /*˴ٴZC͵ѩϢתںϴ*/ - /*ZC͵ѩģʽϢ*/ - if (reVal == CI_SUCCESS) + if (CI_SUCCESS == reVal) { - if ((1u == dataValidFlag)&&(ZC_TSR_VALID == pZcToCiDataStru->tsrInputInfoStru.cTsrValidFlag)) + if (1U == dataValidFlag) { if ((CI_ALL_SNOW_VALID == pZcToCiDataStru->cSnowValidFlag) || (CI_ALL_SNOW_UNVALID == pZcToCiDataStru->cSnowValidFlag)) { @@ -1674,7 +1673,7 @@ void ProcessZcToCiData(void) /*ZC͵ITEȫгϢ*/ - if (reVal == CI_SUCCESS) + if (CI_SUCCESS == reVal) { if ((1u == dataValidFlag) && (ZC_TSR_VALID == pZcToCiDataStru->tsrInputInfoStru.cTsrValidFlag) && ((CI_ITE_LINE_CUT_VALID == pZcToCiDataStru->cIteLineCutState) || (CI_ITE_LINE_CUT_INVALID == pZcToCiDataStru->cIteLineCutState) || (CI_ITE_LINE_CUT_DEFAULT == pZcToCiDataStru->cIteLineCutState))) @@ -1699,9 +1698,16 @@ void ProcessZcToCiData(void) { if ((1u == dataValidFlag) && (ALL_CBTC_CROSS_SUM_MAX >= pZcToCiDataStru->wCbtcCrossNum)) { - /**/ - SetCbtcCrossInfo(pZcToCiDataStru->wCbtcCrossNum, - pZcToCiDataStru->wCbtcCrossSignalId, pZcToCiDataStru->wCbtcCrossTrainId); + /*յCBTCѹ֡ʱCBTCѹȫֱ*/ + if (CI_SUCCESS == pZcToCiDataStru->cRecvCbtcCrossFrameTag) + { + SetCbtcCrossInfo(pZcToCiDataStru->wCbtcCrossNum, + pZcToCiDataStru->wCbtcCrossSignalId, pZcToCiDataStru->wCbtcCrossTrainId); + } + else + { + /*nothing*/ + } } else { @@ -1731,7 +1737,11 @@ void ProcessTmcToTiocData(void) UINT8* deviceIdBuf = NULL; UINT8 ii = 0u; UINT8 cTransState = 0U; /*TMCͨ״̬*/ + UINT8 chWorkType = 0U; /*˫ϵģʽ*/ + UINT8 cRcWorkMode = 0u;/*RCģʽ*/ + chWorkType = GetSystemWorkType(); + cRcWorkMode = GetLocalRcWorkMode(); /*ֶTMCͨ״̬*/ cLocalTiocId = GetSystemParaLocalCiId(); deviceSum = GetCiTransmitSpecifySysDevSum(CI_SYSTEM_TYPE_TMC); /*ȡͨTMC豸*/ @@ -1754,6 +1764,10 @@ void ProcessTmcToTiocData(void) else { ClearLineCommTrainData(); /*TMCͨжϣش洢ȫͨųϢ*/ + if ((SYSTEM_WORK_MODE_ALL == chWorkType) && (RC_WORK_MODE_TIOC == cRcWorkMode)) + { + SetTsrSureFlag(CI_TSR_SURE_NO); + } } } else @@ -1858,7 +1872,6 @@ void ProcessVobcToCiData(void) { UINT8 ii = 0u; UINT8 jj = 0u; - UINT8 kk = 0u; UINT8 vobcToCiDataSum = GetVobcToCiSum(); VobcToCiDataStruct* vobcToCiDataStru = GetVobcToCiDataStru(); UINT8 chLineIdentity = GetCiFunctionSwitchConfig(VOBC_INTERFACE_IDENTITY);/*ȡ·ʶ*/ @@ -1917,7 +1930,7 @@ void ProcessVobcToCiData(void) for (jj = 0u; ((jj < vobcToCiDataStru[ii].PsdSum) && (jj < VOBC_TO_CI_TRAIN_PSD_MAX)); jj++) { /*»VOBCCIһֱͨţ¹ϸϢ޷ڴ˼յһVOBCĿǷʱ*/ - if ((dwCurCycNum - vobcToCiDataStru[ii].PsdData[kk].CmdStartCycNum) > dwTransmitBadEnsureCount) + if ((dwCurCycNum - vobcToCiDataStru[ii].PsdData[jj].CmdStartCycNum) > dwTransmitBadEnsureCount) { ClearPsdVobcContext(vobcToCiDataStru[ii].VobcId); break; @@ -4890,7 +4903,7 @@ void ProcessDeviceLogicState(void) (void)GaragedoorRelayToDevStaProc(); /*ϴ*/ - (void)WashMachineToDeviceStateProc(); + WashMachineToDeviceStateProc(); /*Ŵ*/ FloodGateRelayToDeviceStateProc(); @@ -5224,6 +5237,7 @@ UINT8 MaskDataProcess(const UINT8 systemType,const UINT8* maskBuf, const UINT16 /*Ч·״̬*/ } break; + } break; @@ -5318,7 +5332,7 @@ UINT8 MaskDataProcess(const UINT8 systemType,const UINT8* maskBuf, const UINT16 */ void ProcessCiToCiData(void) { - UINT8 localCiId = GetSystemParaLocalCiId(); /*ID*/ + UINT8 chLocalCiId = 0U; /*ID*/ UINT8 jj = 0U; UINT8 tranCiNum = 0U; UINT8* tranCiIdBuf = NULL; @@ -5327,7 +5341,7 @@ void ProcessCiToCiData(void) UINT8 chMainMode = CI_SYSTEM_TYPE_RCI;/*ģʽ*/ UINT8 chSystemType = GetSystemWorkType(); UINT8 chRcTransState = 0U;/*ֻжRcͨ*/ - + chLocalCiId = GetSystemParaLocalCiId(); /*ͨж ͨŹر*/ if (SYSTEM_WORK_MODE_ALL == chSystemType) { @@ -5341,17 +5355,17 @@ void ProcessCiToCiData(void) tranCiIdBuf = GetCiTransmitSpecifySysDevBuf(CI_SYSTEM_TYPE_RCI); } - - for (jj = 0u;jjheadWashStopSteadyInfo) && (WASHMACHINE_TAIL_STEADY_NO == vobcToCiDataStru->tailWashStopSteadyInfo) && (PASS_WASHMACHINE_REQUEST_INVALID == vobcToCiDataStru->passWashMachineRequest) - && (PAUSE_TRAIN_WASH_REQUEST_INVALID == vobcToCiDataStru->washPauseRequest)) + && (PAUSE_TRAIN_WASH_REQUEST_INVALID == vobcToCiDataStru->washPauseRequest) + && (WASHMACHINE_COUPING_STEADY_NO == vobcToCiDataStru->couplingWashStopSteadyInfo)) {/*ϴЧΪϴϴҵ*/ SetWashMachineCurVobcID(washMachineId, 0u);/*ǰϴVOBC ID*/ /*ϴ״̬*/ @@ -8389,6 +8417,7 @@ static void HLHTFAOVOBCDataProc(VobcToCiDataStruct* vobcToCiDataStru) SetPauseTrainWashRequestDrvSta(washMachineId, WASHMACHINE_PAUSE_DRVREQ_FALSE); SetPassWashMachineReqtDrvSta(washMachineId, PASS_WASHMACHINE_DRVREQ_FALSE); SetWashMachineWorkModeDrvState(washMachineId, WASHMACHINE_WORKMODE_INVALID_DRV); + SetCoupingStopSteadyDrvState(washMachineId, WASHMACHINE_COUPING_STEADY_NO); } else { @@ -8434,6 +8463,21 @@ static void HLHTFAOVOBCDataProc(VobcToCiDataStruct* vobcToCiDataStru) } } + if (WASHMACHINE_COUPING_STEADY_YES == vobcToCiDataStru->couplingWashStopSteadyInfo) + {/*ҶͣЧ*/ + if (1U == washMachineCurSum) + { + SetCoupingStopSteadyDrvState(washMachineId, WASHMACHINE_COUPING_STEADY_YES); + } + } + else + { + if (1U == washMachineCurSum) + { + SetCoupingStopSteadyDrvState(washMachineId, WASHMACHINE_COUPING_STEADY_NO); + } + } + if (WASHMACHINE_TAIL_STEADY_YES == vobcToCiDataStru->tailWashStopSteadyInfo) {/*βͣЧ*/ if (1U == washMachineCurSum) @@ -8493,6 +8537,7 @@ static void HLHTFAOVOBCDataProc(VobcToCiDataStruct* vobcToCiDataStru) SetPauseTrainWashRequestDrvSta(washMachineId, WASHMACHINE_PAUSE_DRVREQ_FALSE); SetPassWashMachineReqtDrvSta(washMachineId, PASS_WASHMACHINE_DRVREQ_FALSE); SetWashMachineWorkModeDrvState(washMachineId, WASHMACHINE_WORKMODE_INVALID_DRV); + SetCoupingStopSteadyDrvState(washMachineId, WASHMACHINE_COUPING_STEADY_NO); } } } @@ -10004,17 +10049,7 @@ static void SetIvocWashDriveState(VobcToCiDataStruct* vobcToCiDataStru,const UIN { SetTrainTailStopSteadyDrvState(washMachineId, WASHMACHINE_TAIL_STEADY_NO); } - - if (WASHMACHINE_COUPING_STEADY_YES == vobcToCiDataStru->couplingWashStopSteadyInfo) - { - /*βͣЧ*/ - SetCoupingStopSteadyDrvState(washMachineId, WASHMACHINE_TAIL_STEADY_YES); - } - else - { - SetCoupingStopSteadyDrvState(washMachineId, WASHMACHINE_TAIL_STEADY_NO); - } - + if (WASHMACHINE_PAUSE_DRVREQ_TRUE == vobcToCiDataStru->washPauseRequest) { /*ͣϴЧ*/ @@ -11036,7 +11071,7 @@ void RouteSecLockApplyCmdProc(const UINT16 wCurRLockRouteId, const UINT16 wPreRL pstLgcResInfo = GetLogSecTrainInfo(pLogIdBuff[ii]); if (NULL != pstLgcResInfo) { - (void)ComMemCopy(pstLgcResInfo, stTmpResInfo, (UINT16)(sizeof(LogicTrainResStruct) * LOGIC_SECTION_RES_SUM_MAX)); + (void)CommonMemCpy(pstLgcResInfo, (UINT32)((sizeof(LogicTrainResStruct)) * LOGIC_SECTION_RES_SUM_MAX),stTmpResInfo, (UINT32)((sizeof(LogicTrainResStruct)) * LOGIC_SECTION_RES_SUM_MAX)); SetLogSecLockState(pLogIdBuff[ii], LOG_SECTION_LOCK_NO, validRouteId, 0U);/*֮ǰ·δ*/ /*ڵǰ·*/ SetLogSecLockState(pLogIdBuff[ii], LOG_SECTION_LOCK_NORMAL, wCurRLockRouteId, chRouteDir); @@ -11116,7 +11151,7 @@ void LogRouteCleanOldLogSecLockProc(const UINT16 wPreRouteId) pstLgcResInfo = GetLogSecTrainInfo(pLogSecIdBuff[ii]); if (NULL != pstLgcResInfo) { - (void)ComMemCopy(pstLgcResInfo, stTmpResInfo, (UINT16)(sizeof(LogicTrainResStruct) * LOGIC_SECTION_RES_SUM_MAX)); + (void)CommonMemCpy(pstLgcResInfo, (UINT32)(sizeof(LogicTrainResStruct) * LOGIC_SECTION_RES_SUM_MAX), stTmpResInfo, (UINT32)(sizeof(LogicTrainResStruct) * LOGIC_SECTION_RES_SUM_MAX)); SetLogSecLockState(pLogSecIdBuff[ii], LOG_SECTION_LOCK_NO, wValidRouteId, 0U); /*֮ǰ·δ*/ CpyLgcSecResTrain(pLogSecIdBuff[ii], cResTrainSum, stTmpResInfo); /*߼гԴϢ*/ @@ -11781,17 +11816,23 @@ void OverlapUnlockApplyDeal(void) } else { - ; /*ӽijȡʧܣIVOC뱣ν*/ + /*ӽijȡʧܣIVOC뱣ν*/ + SetOverlapUnlockApplyTrainId(wOverlapId, 0U); + SetReqIvocUnlockStartCycNum(wOverlapId, 0U); } } else { - ; /*·IVOC뱣ν*/ + /*·IVOC뱣ν*/ + SetOverlapUnlockApplyTrainId(wOverlapId, 0U); + SetReqIvocUnlockStartCycNum(wOverlapId, 0U); } } else { - ; /*δ뱣νRCIVOC뱣ν*/ + /*δ뱣νRCIVOC뱣ν*/ + SetOverlapUnlockApplyTrainId(wOverlapId, 0U); + SetReqIvocUnlockStartCycNum(wOverlapId, 0U); } } else @@ -12498,7 +12539,8 @@ void SignalTrainCrossPro(void) } else { - /*TACSأ¼гID*/ + /*TACSأÿѹгID*/ + cSignalCrossState = SIGNAL_CROSS_STATE_NO; } } else diff --git a/TSCP/src/APP/ciapp/IO/OutputDataProcess.c b/TSCP/src/APP/ciapp/IO/OutputDataProcess.c index a133410..f270d07 100644 --- a/TSCP/src/APP/ciapp/IO/OutputDataProcess.c +++ b/TSCP/src/APP/ciapp/IO/OutputDataProcess.c @@ -160,7 +160,7 @@ void OutputDataProcess(void) (void)PsdDeviceToRelayStateProc(); /*ϴ̵״̬*/ - (void)WashMachineDevToRelayStaProc(); + WashMachineDevToRelayStaProc(); /*¼Ḵλ̵״̬*/ /**/ @@ -3549,7 +3549,7 @@ void NonRouteRelayStateProc(void) UINT8 interfaceType = FUNC_SWITCH_UNDEF;/*Գ복νӿ*/ UINT8 i = 0u; UINT16 agreeTryTrainRelayId = 0u;/*ͬԳ̵ID*/ - UINT16 wColWaysideTryTrainIndRelayId = 0u;/*Գָʾ̵ID*/ + UINT16 wColWaysideTryTrainIndRelayId = 0U;/*Գָʾ̵ID*/ NonRouteDataStruct* pNonRoute = NULL; UINT8 localCiId = 0U; /*ID*/ UINT8 nonRouteBelongCiId = 0U; /*ǽ·ID*/ @@ -3591,7 +3591,7 @@ void NonRouteRelayStateProc(void) /**/ } wColWaysideTryTrainIndRelayId = GetWaysideTryTrainIndRelayId(pNonRoute->NonRouteId); - if (0 != wColWaysideTryTrainIndRelayId) + if (0U != wColWaysideTryTrainIndRelayId) { /*ùԳָʾ̵*/ (void)SetRelayDriveState(wColWaysideTryTrainIndRelayId, RELAY_DRIVE_STATE_UP); @@ -3621,7 +3621,7 @@ void NonRouteRelayStateProc(void) ; /**/ } wColWaysideTryTrainIndRelayId = GetWaysideTryTrainIndRelayId(pNonRoute->NonRouteId); - if (0 != wColWaysideTryTrainIndRelayId) + if (0U != wColWaysideTryTrainIndRelayId) { /*ùԳָʾ̵*/ (void)SetRelayDriveState(wColWaysideTryTrainIndRelayId, RELAY_DRIVE_STATE_DOWN); @@ -4965,7 +4965,7 @@ UINT16 GetOverlapUnlockBackTime(const UINT16 overlapId, UINT16 OverlapUnLockCoun /*Զʱ*/ deltCount = (INT32)(curCycleNum - startCycNum); - if((deltCount >= 0) && (deltCount <= (INT32)OverlapUnLockCount))/*ʱֵںΧ*/ + if((deltCount >= 0U) && (deltCount <= (INT32)OverlapUnLockCount))/*ʱֵںΧ*/ { autotimeData = (UINT16)(((OverlapUnLockCount + startCycNum - curCycleNum)* appCycTime)/1000U) ; } @@ -4979,7 +4979,7 @@ UINT16 GetOverlapUnlockBackTime(const UINT16 overlapId, UINT16 OverlapUnLockCoun { deltCount = (INT32)(curCycleNum - laborUnlockStartCycNum); laborUnlockOverlapTimeCount =GetlabarUnlockOverlapTimeCount(); - if((deltCount >= 0) && (deltCount <= (INT32)laborUnlockOverlapTimeCount))/*ʱֵںΧ*/ + if((deltCount >= 0U) && (deltCount <= (INT32)laborUnlockOverlapTimeCount))/*ʱֵںΧ*/ { labortimeData = (UINT16)(((laborUnlockOverlapTimeCount + laborUnlockStartCycNum- curCycleNum)* appCycTime)/1000U) ; @@ -8254,7 +8254,6 @@ void SetSCApplyIndicator(const UINT16 wIndicatorId) UINT8 chRtuCiType = 0U; /**/ UINT8 chIndicatorRtuId = 0U; /*ID*/ UINT8 chinterfaceType = 0U; /*Գ복νӿڷʽ*/ - UINT16 wApplyId = 0U; /*ԳID*/ UINT16 wApplyRelayId = 0U; /*Գ̵ID*/ UINT16 wAllowRelayId = 0U; /*ԳID*/ UINT8 chNonRouteState = 0U; /*ǽ·״̬*/ diff --git a/TSCP/src/APP/ciapp/Initial/InitialProcess.c b/TSCP/src/APP/ciapp/Initial/InitialProcess.c index f95dafa..0cba77c 100644 --- a/TSCP/src/APP/ciapp/Initial/InitialProcess.c +++ b/TSCP/src/APP/ciapp/Initial/InitialProcess.c @@ -1068,6 +1068,7 @@ UINT8 InitialLogicSectionData(void) UINT16 ii = 0u; /*α*/ UINT16 jj = 0u; /*α*/ UINT8 kk = 0u; /*α*/ + UINT8 mm = 0u; /*α*/ UINT16 zcToCiMaskSum = 0u; /*ZC-CIλ*/ UINT8 reVal = CI_ERROR; UINT8 chTmcSwitch = 0u; @@ -1126,14 +1127,10 @@ UINT8 InitialLogicSectionData(void) 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 (mm = 0U; mm < LOGIC_SECTION_RES_SUM_MAX; mm++) { - LogicSectionDataStruCC[logicSectionId].szTrainResData[jj].wTrainId = 0U; - LogicSectionDataStruCC[logicSectionId].szTrainResData[jj].chLogicResUsable = LOGIC_SECTION_RES_UNUSABLE; - LogicSectionDataStruCC[logicSectionId].szTrainResData[jj].chLogicReturnState = LOGIC_SECTION_TRAIN_RETURN_NO; - LogicSectionDataStruCC[logicSectionId].szTrainResData[jj].chTrainApplyState = LOGIC_SECTION_TRAIN_APPLY_NO; - LogicSectionDataStruCC[logicSectionId].szTrainResData[jj].chLogicUnlockState = LOGIC_SECTION_TRAIN_UNLOCK_NO; - LogicSectionDataStruCC[logicSectionId].szTrainResData[jj].dwRcvUnlockCmdCyc = 0U; + /*ԴϢṹ*/ + ResetResInfoStruct(logicSectionId, mm); } LogicSectionDataStruCC[logicSectionId].chLogSecLockBelLogRouteSum = 0U; for (jj = 0U; jj < LOGSEC_RELATE_ROUTE_SUM_MAX; jj++) diff --git a/TSCP/src/APP/ciapp/InvadeSection/InvadeSectionDefine.h b/TSCP/src/APP/ciapp/InvadeSection/InvadeSectionDefine.h index fe9bee3..a895734 100644 --- a/TSCP/src/APP/ciapp/InvadeSection/InvadeSectionDefine.h +++ b/TSCP/src/APP/ciapp/InvadeSection/InvadeSectionDefine.h @@ -14,7 +14,7 @@ #ifndef __INVADESECTION_DEFINE_H_ #define __INVADESECTION_DEFINE_H_ -#define INVA_SECT_N_COND_SWIT_SUM_MAX ((UINT16)400) /*Ŀ*/ +#define INVA_SECT_N_COND_SWIT_SUM_MAX ((UINT16)800) /*Ŀ*/ #define COND_SWITCH_SUM_MAX ((UINT16)16) /*һĿ,*/ diff --git a/TSCP/src/APP/ciapp/LogRecord/LogRecord.c b/TSCP/src/APP/ciapp/LogRecord/LogRecord.c index 49b5a67..e12c75c 100644 --- a/TSCP/src/APP/ciapp/LogRecord/LogRecord.c +++ b/TSCP/src/APP/ciapp/LogRecord/LogRecord.c @@ -13,6 +13,7 @@ #include "LogRecord.h" #include "../ParsePack/ParsePackVobcData.h" +#include "../ParsePack/ParsePackZcData.h" #include @@ -497,6 +498,7 @@ UINT8 RecordDeviceDataLog(UINT8 Flag) OCStationIndicDataStru* pNewOCStationIndicData = GetOCStationIndicDataStru(); EsbDataStruct* pNewEsbData = GetEsbData(); LogicalRouteDataStruct* pNewLogicalRouteDataStru = GetLogicalRouteStr(); + CbtcCrossStructZC* pCbtcCrossStructZCStru = GetCbtcCrossStructZc(); UINT16 wCfpId = 0u; UINT8 chEnIndex = 0u; UINT8 chTrainIndex = 0u; @@ -702,6 +704,7 @@ UINT8 RecordDeviceDataLog(UINT8 Flag) outString[outStringLength++] = newSignalData[deviceId].DoubleGreenDsBreakFlag;/*˫̵˿˿־״̬*/ outString[outStringLength++] = newSignalData[deviceId].DoubleYellowDsBreakFlag;/*˫Ƶ˿˿־״̬*/ outString[outStringLength++] = newSignalData[deviceId].MaintainLightState;/*źŻά޵״̬*/ + outString[outStringLength++] = pSignalDataCC[deviceId].wCrossTacsTrainId;/*TACSѹгID*/ if (MAX_SIGNAL_LIGHTUPLINK_NUM < pSignalDataCC[deviceId].wSignalLightUpLinkIdSum) { @@ -1519,9 +1522,12 @@ UINT8 RecordDeviceDataLog(UINT8 Flag) outString[outStringLength++] = newWashMachineData[deviceId].TrainEmergencyStopState;/*гͣ״̬*/ outString[outStringLength++] = newWashMachineData[deviceId].HeadWashAllowState;/*ͷϴ״̬*/ outString[outStringLength++] = newWashMachineData[deviceId].TailWashAllowState;/*βϴ״̬*/ + outString[outStringLength++] = newWashMachineData[deviceId].chCoupingWashAllowState;/*Ҷϴ״̬*/ outString[outStringLength++] = newWashMachineData[deviceId].WashTrainRequestDrvState;/*ϴ״̬*/ outString[outStringLength++] = newWashMachineData[deviceId].TrainHeadStopSteadyDrvState;/*ͷͣ״̬*/ outString[outStringLength++] = newWashMachineData[deviceId].TrainTailStopSteadyDrvState;/*βͣ״̬*/ + outString[outStringLength++] = newWashMachineData[deviceId].chCoupingStopSteadyDrvState; /*Ҷͣ״̬*/ + outString[outStringLength++] = newWashMachineData[deviceId].TrainOutWashTrainPortAllowState;/*ϴ״̬*/ ShortToChar(newWashMachineData[deviceId].CurVobcId, &outString[outStringLength]);/*ǰϴVOBC ID*/ outStringLength += 2u; @@ -2445,6 +2451,11 @@ UINT8 RecordDeviceDataLog(UINT8 Flag) outString[outStringLength++] = pNewTrainInfoData[deviceId].chtrainControlMode;/*ǰسģʽ*/ outString[outStringLength++] = pNewTrainInfoData[deviceId].chTrainPostionMode; /*гλģʽ0λã1ʹIVOCλã2ʹVOBCλ*/ + ShortToChar(pNewTrainInfoData[deviceId].wMinSafeHeadLink, &outString[outStringLength]);/*ʱСǰlink*/ + outStringLength += 2u; + LongToChar(pNewTrainInfoData[deviceId].dwMinSafeHeadOffset, &outString[outStringLength]);/*ʱСǰlinkƫ*/ + outStringLength += 4u; + outString[outStringLength++] = pNewTrainInfoData[deviceId].chMinSafeHeadDir;/* ʱСǰ */ } @@ -2913,10 +2924,46 @@ UINT8 RecordDeviceDataLog(UINT8 Flag) else { #ifdef PLATFORM_2OO2 - debug_infor_printf((const)"\nNonAutoReturnData:%d", (UINT16)sizeof(NonAutoReturnDataStruct), outStringLength); + debug_infor_printf((const)"\nNonAutoReturnData:%d, length:%d", (UINT16)sizeof(NonAutoReturnDataStruct), outStringLength); debug_out_array(0xAA, outString, outStringLength); +#endif + + /*մӡ*/ + CleanString(outString); + outStringLength = 0u; + } + + /*************************************ӡCBTCѹ********************************************/ + /*ӡCBTCѹ*/ + deviceNum = GetCbtcCrossNumZc();/* ȡ߽ */ + + for (ii = 0U; ii < deviceNum; ii++) + { + if ((CI_SUCCESS != returnValue) || (NULL == pCbtcCrossStructZCStru)) + { + returnValue = CI_ERROR; + break; + } + + ShortToChar(pCbtcCrossStructZCStru[ii].wSignalId, &outString[outStringLength]);/*CBTCѹźŻID*/ + outStringLength += 2u; + outString[outStringLength] = pCbtcCrossStructZCStru[ii].wTrainId; /*CBTCѹгID*/ + outStringLength++; + } + + if (0u == outStringLength) + { + /*nothing*/ + debug_infor_printf((const)"\nCbtcCrossData:0u"); + } + else + { +#ifdef PLATFORM_2OO2 + debug_infor_printf((const)"\nCbtcCrossData:%d:", outStringLength); + + debug_out_array(0xAA, outString, outStringLength); #endif /*մӡ*/ diff --git a/TSCP/src/APP/ciapp/LogicManage/InterlockLogicManage.c b/TSCP/src/APP/ciapp/LogicManage/InterlockLogicManage.c index 807e4fb..76a1b69 100644 --- a/TSCP/src/APP/ciapp/LogicManage/InterlockLogicManage.c +++ b/TSCP/src/APP/ciapp/LogicManage/InterlockLogicManage.c @@ -3386,7 +3386,18 @@ UINT8 LockRouteOverlapProc(const UINT16 routeId) UINT8 cTimeCheckFlag = CI_TIME_OUT; UINT8 cKeepWorkFlag = CI_ERROR; UINT8 cSwitchPosCheckRet = CI_ERROR; + UINT8 cOverlapCiId = 0U; /*ID*/ + UINT16 wRouteLeavePhySecId = 0U;/*·ȥID*/ + UINT8 cPhySecLockState = 0U; /*״̬*/ + UINT8 cLocalCiId = 0U; /*ID*/ + UINT8 cRouteBlongCiId = 0U; /*·ID*/ + UINT8 cProSecDelayLockFlag = 0U; /*ʱձ־*/ + UINT32 dwPhySecDelayLockStartCyc = 0U; /*ʱʼ*/ + UINT32 dwBadEnsureCount = 0U; /*ͨжȷ*/ + cLocalCiId = GetSystemParaLocalCiId(); + dwBadEnsureCount = GetCiAndCiTransBadEnsureCnt(); + cRouteBlongCiId = GetRouteBelongCiId(routeId); overlapSum = GetRouteOverlapSum(routeId); /*ȡOverlap*/ overlapIdBuf = GetRouteOverlapIdBuf(routeId); /*ȡOverlap ID BUF*/ dwCurCycNum = Get2oo2CurCycleNum(); @@ -3401,7 +3412,8 @@ UINT8 LockRouteOverlapProc(const UINT16 routeId) cKeepWorkFlag = CI_SUCCESS; for (ii = 0u; ii < overlapSum; ii++) { - if (GetOverlapBelongCiId(overlapIdBuf[ii]) == localCiId) + cOverlapCiId = GetOverlapBelongCiId(overlapIdBuf[ii]); + if (cOverlapCiId == localCiId) { /*ڱ*/ @@ -3428,31 +3440,35 @@ UINT8 LockRouteOverlapProc(const UINT16 routeId) devId = GetRouteLastPhySectionId(routeId); devState = GetPhySecCurOccupyState(devId); devPreState = GetPhySecPreOccupyState(devId); - overlapState = GetPhySecCurOccupyState(GetRouteLeavePhySecId(routeId)); + cPhySecLockState = GetPhySecLockState(devId); + wRouteLeavePhySecId = GetRouteLeavePhySecId(routeId); + overlapState = GetPhySecCurOccupyState(wRouteLeavePhySecId); routeState = GetRouteState(routeId); if ((SECTION_OCCUPY_NO == devState) && (SECTION_OCCUPY_YES == devPreState) && (SECTION_OCCUPY_NO == overlapState) && - (PHYSICAL_SECTION_LOCK_NORMAL == GetPhySecLockState(devId)) && + (PHYSICAL_SECTION_LOCK_NORMAL == cPhySecLockState) && (ROUTE_STATE_AUTO_UNLOCK == routeState) && - (GetSystemParaLocalCiId() != GetRouteBelongCiId(routeId)) + (cLocalCiId != cRouteBlongCiId) ) { SetProtectSecLockDelayTimeFlag(devId, PROTECTSECLOCKDELAY_YES); - SetPhySecLockDelayStartCycNum(devId, Get2oo2CurCycleNum()); /*ʱں*/ + SetPhySecLockDelayStartCycNum(devId, dwCurCycNum); /*ʱں*/ } else { ; } - if (PROTECTSECLOCKDELAY_NO == GetProtectSecLockDelayTimeFlag(devId)) + cProSecDelayLockFlag = GetProtectSecLockDelayTimeFlag(devId); + dwPhySecDelayLockStartCyc = GetPhySecLockDelayStartCycNum(devId); + if (PROTECTSECLOCKDELAY_NO == cProSecDelayLockFlag) { /*ս·Overlap*/ returnValue = LockRouteOverlapLogicProcess(routeId, overlapIdBuf[ii], CI_LOCK_OVERLAP); } - else if (((Get2oo2CurCycleNum() - GetPhySecLockDelayStartCycNum(devId)) > GetCiAndCiTransBadEnsureCnt()) - && (PROTECTSECLOCKDELAY_YES == GetProtectSecLockDelayTimeFlag(devId))) + else if (((dwCurCycNum - dwPhySecDelayLockStartCyc) > dwBadEnsureCount) + && (PROTECTSECLOCKDELAY_YES == cProSecDelayLockFlag)) { /*־óʱ־*/ SetProtectSecLockDelayTimeFlag(devId, PROTECTSECLOCKDELAY_NO); SetPhySecLockDelayStartCycNum(devId, 0); /*ʱں*/ @@ -4138,105 +4154,109 @@ UINT8 KeepOpenRouteSignalProc(const UINT16 routeId) */ void RouteZongQuXiaoProc(const UINT16 routeId) { - UINT8 routeState = 0u; /*·״̬*/ - UINT16 startSignalId = 0u; + UINT8 routeState = 0U; /*·״̬*/ + UINT16 startSignalId = 0U; UINT8 sigCurColor = SIGNAL_SHOWCOLOUR_INVALID; - UINT8 routeDelayUnlockflag = 0u; /* ·ʱ*/ - UINT8 checkRouteCancel = 0u; + UINT8 routeDelayUnlockflag = 0U; /* ·ʱ*/ + UINT8 checkRouteCancel = 0U; UINT8 cSignalInHumidRailFlag = PHYSEC_IN_HUMID_RAIL_NO; /*źŻʪ־*/ - + UINT8 chCiType = 0U; + UINT8 chRouteVirCiId = 0U; + UINT8 chOpenClose = 0U; /*ȡ·ֶ̬*/ routeState = GetRouteState(routeId); /*ȡ·״̬*/ startSignalId = GetRouteStartSignalId(routeId); sigCurColor = GetSignalCurColor(startSignalId); - - if (GetSignalOpenCloseState(sigCurColor) == SIGNAL_OPEN) + + chOpenClose = GetSignalOpenCloseState(sigCurColor); + if (SIGNAL_OPEN == chOpenClose) { /*źδر*/ - (void)DriveSignalClose(startSignalId); /*źŹر*/ - - return; } else { /*źѹر*/ - SetRouteZongQuXiaoFlag(routeId, ROUTE_ZONGQUXIAO_SET_NO); /*ȡ·ȡ־*/ - } - cSignalInHumidRailFlag = GetSignalInHumidRailFlag(startSignalId); - if (PHYSEC_IN_HUMID_RAIL_NO == cSignalInHumidRailFlag) - { - /*ȡ·*/ - if ((ROUTE_STATE_XUANPAI == routeState) || (ROUTE_STATE_FIRST_XUANPAI == routeState)) + cSignalInHumidRailFlag = GetSignalInHumidRailFlag(startSignalId); + chRouteVirCiId = GetRouteBelongVirCiId(routeId); /*ȡ·ID*/ + chCiType = GetLocalVirCiType(chRouteVirCiId); /*ȡ*/ + /*źŻʪ־Ч߽·ڳΣִȡ*/ + if ((PHYSEC_IN_HUMID_RAIL_NO == cSignalInHumidRailFlag) || (CI_TYPE_CLD == chCiType)) { - /*·ѡŻѡ*/ - - /*ȡ·ѡ*/ - SetRouteStateManage(routeId, ROUTE_STATE_IDLE); /*-->ý·*/ - - } - /*·||·쳣||·Ԥ*/ - else if ((ROUTE_STATE_FIRST_LOCK == routeState) || - (ROUTE_STATE_FIRST_LOCKERR == routeState) || - (ROUTE_STATE_YUXIAN_LOCK == routeState)) - { - /* ȡ*/ - checkRouteCancel = RouteCancelLogicProcess(routeId); - /* ȡ·ʱ*/ - routeDelayUnlockflag = GetRouteNeedDelayUnlock(routeId); - if (CI_SUCCESS == checkRouteCancel) + /*ȡ·*/ + if ((ROUTE_STATE_XUANPAI == routeState) || (ROUTE_STATE_FIRST_XUANPAI == routeState)) { - /*Ҫʱ*/ - if (ROUTE_NEED_DELAY_UNLOCK == routeDelayUnlockflag) + /*·ѡŻѡ*/ + + /*ȡ·ѡ*/ + SetRouteStateManage(routeId, ROUTE_STATE_IDLE); /*-->ý·*/ + + } + /*·||·쳣||·Ԥ*/ + else if ((ROUTE_STATE_FIRST_LOCK == routeState) || + (ROUTE_STATE_FIRST_LOCKERR == routeState) || + (ROUTE_STATE_YUXIAN_LOCK == routeState)) + { + /* ȡ*/ + checkRouteCancel = RouteCancelLogicProcess(routeId); + /* ȡ·ʱ*/ + routeDelayUnlockflag = GetRouteNeedDelayUnlock(routeId); + if (CI_SUCCESS == checkRouteCancel) { - /*ý·ʱ״̬*/ - SetRouteStateManage(routeId, ROUTE_STATE_DELAY_UNLOCK); - /*ʱ*/ - SetRouteZongQuXiaoDelayFlag(routeId, ROUTE_ZQX_DELAY_YES); + /*Ҫʱ*/ + if (ROUTE_NEED_DELAY_UNLOCK == routeDelayUnlockflag) + { + /*ý·ʱ״̬*/ + SetRouteStateManage(routeId, ROUTE_STATE_DELAY_UNLOCK); + /*ʱ*/ + SetRouteZongQuXiaoDelayFlag(routeId, ROUTE_ZQX_DELAY_YES); + } + else + { + /*-->ý·*/ + SetRouteStateManage(routeId, ROUTE_STATE_IDLE); + } } else { - /*-->ý·*/ - SetRouteStateManage(routeId, ROUTE_STATE_IDLE); + /*·ȡ*/ } } + else if ((ROUTE_STATE_NEAR_LOCK == routeState) || + (ROUTE_STATE_NEAR_LOCKERR == routeState)) + { + /*ӽ*/ + SetCiSendCmdBackInfoData(CI_BACK_ROUTE_NEAR_LOCK_YES, CI_DEVICE_TYPE_ROUTE, routeId, 0u, 0u); + } + else if ((ROUTE_STATE_LEAD_LOCK == routeState) || + (ROUTE_STATE_LEAD_LOCKERR == routeState) || + (ROUTE_STATE_LEAD_FIRST_XUANPAI == routeState) || + (ROUTE_STATE_LEAD_OPEN == routeState) || + (ROUTE_STATE_LEAD_XUANPAI == routeState)) + { + /*·ȡϢ*/ + SetCiSendCmdBackInfoData(CI_BACK_LEAD_ROUTE_CANCEL, CI_DEVICE_TYPE_ROUTE, routeId, 0u, 0u); + } + else if (ROUTE_STATE_IDLE == routeState) + { + CancelLongRouteXuanPai(routeId); /*޸ȱYF0083-2370ȡʱ·Уȡ·ѡ*/ + } else { - /*·ȡ*/ + /*δ*/ + SetCiSendCmdBackInfoData(CI_BACK_ROUTE_LOCK_NOTALL, CI_DEVICE_TYPE_ROUTE, routeId, 0u, 0u); } } - else if ((ROUTE_STATE_NEAR_LOCK == routeState) || - (ROUTE_STATE_NEAR_LOCKERR == routeState)) - { - /*ӽ*/ - SetCiSendCmdBackInfoData(CI_BACK_ROUTE_NEAR_LOCK_YES, CI_DEVICE_TYPE_ROUTE, routeId, 0u, 0u); - } - else if ((ROUTE_STATE_LEAD_LOCK == routeState) || - (ROUTE_STATE_LEAD_LOCKERR == routeState) || - (ROUTE_STATE_LEAD_FIRST_XUANPAI == routeState) || - (ROUTE_STATE_LEAD_OPEN == routeState) || - (ROUTE_STATE_LEAD_XUANPAI == routeState)) - { - /*·ȡϢ*/ - SetCiSendCmdBackInfoData(CI_BACK_LEAD_ROUTE_CANCEL, CI_DEVICE_TYPE_ROUTE, routeId, 0u, 0u); - } - else if (ROUTE_STATE_IDLE == routeState) - { - CancelLongRouteXuanPai(routeId); /*޸ȱYF0083-2370ȡʱ·Уȡ·ѡ*/ - } else { - /*δ*/ - SetCiSendCmdBackInfoData(CI_BACK_ROUTE_LOCK_NOTALL, CI_DEVICE_TYPE_ROUTE, routeId, 0u, 0u); + /*·ʼźŻʪ췶Χ·*/ + debug_infor_printf((const)"\n SignalInHumidRailFlag Valid,Not RouteZongQuXiaoProc \n"); } } - else - { - /*·ʼźŻʪ췶Χ·*/ - debug_infor_printf((const)"\n SignalInHumidRailFlag Valid,Not RouteZongQuXiaoProc \n"); - } + + } /* @@ -4693,38 +4713,45 @@ UINT8 UnlockRouteOverlapProc(const UINT16 routeId) } else if (CI_ERROR == ret) { - /*ʲôҲ*/ + /*ν*/ + + if (RC_WORK_MODE_TIOC == cRcWorkMode) + { + SetOverlapUnlockApplyTrainId(unlockOverlapId, 0U); + SetReqIvocUnlockStartCycNum(unlockOverlapId, 0U); + } + else if (RC_WORK_MODE_CI == cRcWorkMode) + { + /*ֹͣ*/ + SetOverlapUnlockApplyFlag(unlockOverlapId, UNLOCK_OVERLAP_APPLY_NO); + } + else + { + ; /* ޴ */ + } } else { - /*ʲôҲ*/ + ; /*ʲôҲ*/ } - wTrainId = GetOverlapUnlockApplyTrainId(unlockOverlapId); - if (SECTION_OCCUPY_NO == devCurMergeState)/*ǰ*/ { if (RC_WORK_MODE_TIOC == cRcWorkMode) { - if (0u != wTrainId) - { /*ֹͣ*/ SetOverlapUnlockApplyTrainId(unlockOverlapId, 0U); SetReqIvocUnlockStartCycNum(unlockOverlapId, 0U); /*ֹͣʱ*/ SetSecUtOrCtOccuStartCycNum(devId, 0u); - } } else if (RC_WORK_MODE_CI == cRcWorkMode) { - /* TODO */ - if (UNLOCK_OVERLAP_APPLY_YES == GetOverlapUnlockApplyFlag(unlockOverlapId))/*ǰZCͽ*/ - { - /*ֹͣ*/ - SetOverlapUnlockApplyFlag(unlockOverlapId, UNLOCK_OVERLAP_APPLY_NO); - /*ֹͣʱ*/ - SetSecUtOrCtOccuStartCycNum(devId, 0u); - } + + /*ֹͣ*/ + SetOverlapUnlockApplyFlag(unlockOverlapId, UNLOCK_OVERLAP_APPLY_NO); + /*ֹͣʱ*/ + SetSecUtOrCtOccuStartCycNum(devId, 0u); } else { @@ -4736,21 +4763,14 @@ UINT8 UnlockRouteOverlapProc(const UINT16 routeId) { if (RC_WORK_MODE_TIOC == cRcWorkMode) { - if (0u != wTrainId) - { - /*ֹͣ*/ - SetOverlapUnlockApplyTrainId(unlockOverlapId, 0u); - SetReqIvocUnlockStartCycNum(unlockOverlapId, 0U); - } + /*ֹͣ*/ + SetOverlapUnlockApplyTrainId(unlockOverlapId, 0u); + SetReqIvocUnlockStartCycNum(unlockOverlapId, 0U); } else if (RC_WORK_MODE_CI == cRcWorkMode) { - /* TODO */ - if (UNLOCK_OVERLAP_APPLY_YES == GetOverlapUnlockApplyFlag(unlockOverlapId))/*ǰZCͽ*/ - { - /*ֹͣ*/ - SetOverlapUnlockApplyFlag(unlockOverlapId, UNLOCK_OVERLAP_APPLY_NO); - } + /*ֹͣ*/ + SetOverlapUnlockApplyFlag(unlockOverlapId, UNLOCK_OVERLAP_APPLY_NO); } else { @@ -4759,7 +4779,7 @@ UINT8 UnlockRouteOverlapProc(const UINT16 routeId) } else { - /*ʲôҲ*/ + ; /*ʲôҲ*/ } } return CI_ERROR; @@ -9477,27 +9497,10 @@ void CiTrainTestLogicManage(void) UINT16 wCollAgreeTryTrainRelayId = 0U;/*Գ߲ɼͬԳ̵ID*/ UINT8 chRelayCollState = 0U;/*ɼ̵״̬*/ UINT8 ii = 0U; - UINT8 flag = 0U; - UINT8 chCldAndScxMergeFlag = GetCldAndScxMergeFlag(); - UINT8 localCiType = GetLocalCiType(); - - if (CI_TYPE_SCX == localCiType) - { - flag = 1U; - } - else if (CI_TYPE_CLD == localCiType) - { - if (CLD_SCX_MERGE_ON == chCldAndScxMergeFlag) - {/*dzΣҳԳߺ*/ - flag = 1U; - } - } - else - { - /*޴*/ - } - - if (1U == flag) + UINT8 flag = CI_ERROR;; + + flag = GetLocalCiIsScx(); + if (CI_SUCCESS == flag) { for (; ii < NONROUTE_ID_NUM_MAX; ii++) { @@ -11584,7 +11587,7 @@ void AxisSecJumpLockLogicManage(void) {/*δ*/ /**/ SetPhySecUseState(phyId, PHYSICAL_SECTION_USING_YES, 0); - SetJumpPhySectionPortectSecUse(phyId, PHYSICAL_SECTION_USING_YES);/*ι*/ + SetJumpPhySectionPortectSecUse(axisSectionId, PHYSICAL_SECTION_USING_YES);/*ι*/ /*תΪѡ*/ SetAxisJumpLockState(axisSectionId, AXIS_SECTION_JUMPLOCK_STATE_XUANPAI); } @@ -11601,38 +11604,7 @@ void AxisSecJumpLockLogicManage(void) case AXIS_SECTION_JUMPLOCK_STATE_LOCK: {/*Ծմ*/ - /*ռ飬ͨԾգ鲻ͨδԾ*/ - rtVal = LockAxisSecProc(axisSectionId);/*Ծ*/ - if (CI_SUCCESS == rtVal) - { - if ((AXIS_SECTION_JUMPLOCK_APPLY_YES == applyFlag) && - (AXSEC_CANCEL_JUMPLOCK_APPLY_NO == cancelApplyFlag) && - (curCycle == applyCycle)) - {/*Ծ룬Ծ*/ - SetPhySecJumpLockState(phyId, PHYSICAL_SECTION_JUMP_LOCK_YES); - SetAxisRelProSwitchLockSta(axisSectionId, SWITCH_LOCK_PROTECT_SET); - SetPhySecJumpLockStateToZC(phyId, PHYSICAL_SECTION_JUMP_LOCK_YES); - SetAxisInCludeLogJumpLockState(axisSectionId, LOGIC_SECTION_JUMP_LOCK_YES); - } - else - { - chPhySecJmpState = GetPhySecJumpLockState(phyId); - if ((PHYSICAL_SECTION_JUMP_LOCK_YES == chPhySecJmpState) && (0U < applyCycle)) - { - SetPhySecJumpLockStateToZC(phyId, PHYSICAL_SECTION_JUMP_LOCK_YES); - } - } - } - else - {/*֮ǰգʱڲάԾգZC*/ - SetPhySecJumpLockStateToZC(phyId, PHYSICAL_SECTION_JUMP_LOCK_NO); - } - if ((AXIS_SECTION_JUMPLOCK_APPLY_NO == applyFlag) && - (AXSEC_CANCEL_JUMPLOCK_APPLY_YES == cancelApplyFlag)) - {/*ȡԾ*/ - SetAxisJumpLockState(axisSectionId, AXIS_SECTION_JUMPLOCK_STATE_IDLE); - SetAxisRelProSwitchLockSta(axisSectionId, SWITCH_LOCK_PROTECT_CANCEL); - } + AxisJumpLockStateManage(axisSectionId); } break; default: @@ -11670,6 +11642,12 @@ void AxisJumpLockXuanPaiManage(const UINT16 axisSecId) { rtVal = CI_SUCCESS; } + + if (CI_SUCCESS == rtVal) + { + rtVal = JumpPhySecAllUseCheck(axisSecId);/*ãԾգ*/ + } + if (CI_SUCCESS == rtVal) { rtVal = LockAxisSecProc(axisSecId);/*Ծ*/ @@ -11677,11 +11655,9 @@ void AxisJumpLockXuanPaiManage(const UINT16 axisSecId) axisSecSwitDrvOvtmFlag = ChekJumpLockSwitDrivOvtmStat(axisSecId);/*ιǷʱ*/ if (CI_SUCCESS == rtVal) {/*ɹ*/ - SetAxisJumpLockState(axisSecId, AXIS_SECTION_JUMPLOCK_STATE_LOCK); - /*δ*/ - SetPhySecUseState(phyId, PHYSICAL_SECTION_USING_NO, 0); - SetJumpPhySectionPortectSecUse(phyId, PHYSICAL_SECTION_USING_NO);/*εķȡ*/ + SetAxisJumpLockState(axisSecId, AXIS_SECTION_JUMPLOCK_STATE_LOCK);/*״̬ת*/ + } else if ((RETURN_LOCK_ERR_SWITPOS == rtVal) && (CI_SUCCESS == axisSecSwitDrvOvtmFlag)) {/*λôûгʱ*/ @@ -11692,7 +11668,7 @@ void AxisJumpLockXuanPaiManage(const UINT16 axisSecId) { /*δ*/ SetPhySecUseState(phyId, PHYSICAL_SECTION_USING_NO, 0); - SetJumpPhySectionPortectSecUse(phyId, PHYSICAL_SECTION_USING_NO);/*εķȡ*/ + SetJumpPhySectionPortectSecUse(axisSecId, PHYSICAL_SECTION_USING_NO);/*εķȡ*/ /*üԾ״̬*/ SetAxisJumpLockState(axisSecId, AXIS_SECTION_JUMPLOCK_STATE_IDLE); @@ -11702,7 +11678,7 @@ void AxisJumpLockXuanPaiManage(const UINT16 axisSecId) {/**/ /*δ*/ SetPhySecUseState(phyId, PHYSICAL_SECTION_USING_NO, 0); - SetJumpPhySectionPortectSecUse(phyId, PHYSICAL_SECTION_USING_NO);/*εķȡ*/ + SetJumpPhySectionPortectSecUse(axisSecId, PHYSICAL_SECTION_USING_NO);/*εķȡ*/ /*üԾ״̬*/ SetAxisJumpLockState(axisSecId, AXIS_SECTION_JUMPLOCK_STATE_IDLE); @@ -14497,10 +14473,23 @@ void PhySecJumpLockLogicManage(void) chPhySecFLockType = GetPhySecFLockType(wPhyId); /*ȡη*/ if ((PHY_SEC_FLOCK_TYPE_NONE == chPhySecFLockType)) { + ClearAxisSeceSwitchDanCaoPos(wAxisSectionId);/**/ SetPhySecJumpLockState(wPhyId, PHYSICAL_SECTION_JUMP_LOCK_YES); SetAxisRelProSwitchLockSta(wAxisSectionId, SWITCH_LOCK_PROTECT_SET); - /* SetPhySecJumpLockStateToZC(wPhyId, PHYSICAL_SECTION_JUMP_LOCK_YES);ȲZC*/ - SetAxisInCludeLogJumpLockState(wAxisSectionId, LOGIC_SECTION_JUMP_LOCK_YES); + + chTempcheck = AxisRelatedProSwitchLockCheck(wAxisSectionId, &devId, &devState); + if (CI_SUCCESS == chTempcheck) + {/*״̬*/ + SetPhySecJumpLockStateToZC(wPhyId, PHYSICAL_SECTION_JUMP_LOCK_YES); + SetAxisInCludeLogJumpLockState(wAxisSectionId, LOGIC_SECTION_JUMP_LOCK_YES); + } + else + { + /*ִ*/ + } + + + } else { @@ -14529,6 +14518,10 @@ void PhySecJumpLockLogicManage(void) { SetPhySecJumpLockStateToZC(wPhyId, PHYSICAL_SECTION_JUMP_LOCK_YES); } + else + { + SetPhySecJumpLockStateToZC(wPhyId, PHYSICAL_SECTION_JUMP_LOCK_NO); + } } } } @@ -16850,4 +16843,140 @@ void lockSwitchLogicManage(void) } } } +} +/* +* Ծ״̬ +* ˵ const UINT16 axisSecId, ID +* ֵ void +* add by mpt 20260407 +*/ +void AxisJumpLockStateManage(const UINT16 axisSectionId) +{ + UINT8 rtVal = 0U; + UINT8 applyFlag = 0U; + UINT32 applyCycle = 0U; + UINT8 cancelApplyFlag = 0U; + UINT16 phyId = 0U; + UINT32 curCycle = 0U; + UINT8 chPhySecJmpState = 0U; + + + applyFlag = GetAxisSecJumpLockApplyFlag(axisSectionId); + applyCycle = GetAxisSecJumpLockApplyCylce(axisSectionId); + cancelApplyFlag = GetAxisSecJLockCancelApplyFlag(axisSectionId); + + phyId = GetAxisSecRelativePhySecId(axisSectionId);/*ȡID*/ + curCycle = Get2oo2CurCycleNum(); + + + /*ռ飬ͨԾգ鲻ͨδԾ*/ + rtVal = LockAxisSecProc(axisSectionId);/*Ծ*/ + if (CI_SUCCESS == rtVal) + { + if ((AXIS_SECTION_JUMPLOCK_APPLY_YES == applyFlag) && + (AXSEC_CANCEL_JUMPLOCK_APPLY_NO == cancelApplyFlag) && + (curCycle == applyCycle)) + {/*Ծ룬Ծ*/ + chPhySecJmpState = GetPhySecJumpLockState(phyId); + if (PHYSICAL_SECTION_JUMP_LOCK_NO == chPhySecJmpState) + {/*Ծҵǰ*/ + ClearAxisSeceSwitchDanCaoPos(axisSectionId);/**/ + + SetPhySecJumpLockState(phyId, PHYSICAL_SECTION_JUMP_LOCK_YES); + SetAxisRelProSwitchLockSta(axisSectionId, SWITCH_LOCK_PROTECT_SET); + SetPhySecJumpLockStateToZC(phyId, PHYSICAL_SECTION_JUMP_LOCK_YES); + SetAxisInCludeLogJumpLockState(axisSectionId, LOGIC_SECTION_JUMP_LOCK_YES); + + /*δ*/ + SetPhySecUseState(phyId, PHYSICAL_SECTION_USING_NO, 0); + SetJumpPhySectionPortectSecUse(axisSectionId, PHYSICAL_SECTION_USING_NO);/*εķȡ*/ + } + else + { + /*ִ*/ + } + } + else + { + chPhySecJmpState = GetPhySecJumpLockState(phyId); + if ((PHYSICAL_SECTION_JUMP_LOCK_YES == chPhySecJmpState) && (0U < applyCycle)) + { + SetPhySecJumpLockStateToZC(phyId, PHYSICAL_SECTION_JUMP_LOCK_YES); + } + else if (PHYSICAL_SECTION_JUMP_LOCK_NO == chPhySecJmpState) + {/*ǰδԾ*/ + SetPhySecJumpLockStateToZC(phyId, PHYSICAL_SECTION_JUMP_LOCK_NO);/*ZC*/ + + if (AXIS_SECTION_JUMPLOCK_APPLY_NO == applyFlag) + {/*ǰδ*/ + /*δ*/ + SetPhySecUseState(phyId, PHYSICAL_SECTION_USING_NO, 0); + SetJumpPhySectionPortectSecUse(axisSectionId, PHYSICAL_SECTION_USING_NO);/*εķȡ*/ + + SetAxisJumpLockState(axisSectionId, AXIS_SECTION_JUMPLOCK_STATE_IDLE);/*üԾ״̬Ϊ*/ + } + else + { + /**/ + } + } + else + {/*ά֮ǰ*/ + } + } + } + else + {/*֮ǰգʱڲάԾգZC*/ + SetPhySecJumpLockStateToZC(phyId, PHYSICAL_SECTION_JUMP_LOCK_NO); + + chPhySecJmpState = GetPhySecJumpLockState(phyId); + if (PHYSICAL_SECTION_JUMP_LOCK_NO == chPhySecJmpState) + {/*δվһ*/ + /*δ*/ + SetPhySecUseState(phyId, PHYSICAL_SECTION_USING_NO, 0); + SetJumpPhySectionPortectSecUse(axisSectionId, PHYSICAL_SECTION_USING_NO);/*εķȡ*/ + SetAxisJumpLockState(axisSectionId, AXIS_SECTION_JUMPLOCK_STATE_IDLE);/*üԾ״̬Ϊ*/ + } + + } + if ((AXIS_SECTION_JUMPLOCK_APPLY_NO == applyFlag) && + (AXSEC_CANCEL_JUMPLOCK_APPLY_YES == cancelApplyFlag)) + {/*ȡԾ*/ + SetAxisJumpLockState(axisSectionId, AXIS_SECTION_JUMPLOCK_STATE_IDLE); + SetAxisRelProSwitchLockSta(axisSectionId, SWITCH_LOCK_PROTECT_CANCEL); + } + +} + +/* +* Գ״̬߼лȡǷ߱ԳܣָӶʹã +*˵ +* ֵ CI_SUCCESS Գߣ裩 CI_ERROR +*/ +UINT8 GetLocalCiIsScx(void) +{ + UINT8 chRtn = CI_ERROR; + UINT8 chCldAndScxMergeFlag = GetCldAndScxMergeFlag(); + UINT8 localCiType = GetLocalCiType(); + + if (CI_TYPE_SCX == localCiType) + { + chRtn = CI_SUCCESS; + } + else if (CI_TYPE_CLD == localCiType) + { + if (CLD_SCX_MERGE_ON == chCldAndScxMergeFlag) + {/*dzΣҳԳߺ*/ + chRtn = CI_SUCCESS; + } + else + { + ;/*CI_ERROR;*/ + } + } + else + { + ;/*CI_ERROR;*/ + } + return chRtn; } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/LogicManage/InterlockLogicManage.h b/TSCP/src/APP/ciapp/LogicManage/InterlockLogicManage.h index ae64988..e8e3a69 100644 --- a/TSCP/src/APP/ciapp/LogicManage/InterlockLogicManage.h +++ b/TSCP/src/APP/ciapp/LogicManage/InterlockLogicManage.h @@ -1161,6 +1161,20 @@ void SetCouplinkRouteLogicManage(const UINT16 wRouteId); * ֵ */ void lockSwitchLogicManage(void); +/* +* Ծ״̬ +* ˵ const UINT16 axisSecId, ID +* ֵ void +* add by mpt 20260407 +*/ +void AxisJumpLockStateManage(const UINT16 axisSectionId); + +/* +* Գ״̬߼лȡǷ߱ԳܣָӶʹã +*˵ +* ֵ CI_SUCCESS Գߣ裩 CI_ERROR +*/ +UINT8 GetLocalCiIsScx(void); #ifdef __cplusplus } diff --git a/TSCP/src/APP/ciapp/LogicManage/RouteRecoverManage.c b/TSCP/src/APP/ciapp/LogicManage/RouteRecoverManage.c index ca7464f..5045f60 100644 --- a/TSCP/src/APP/ciapp/LogicManage/RouteRecoverManage.c +++ b/TSCP/src/APP/ciapp/LogicManage/RouteRecoverManage.c @@ -3702,6 +3702,7 @@ static UINT8 OpenBlocRouteOverlapErrCheck(const UINT16 routeId) else { /* zt ɾش 2022-02-15 */ + reResult = CI_ERROR; } /* еδ*/ diff --git a/TSCP/src/APP/ciapp/LogicManage/TradInterlockLogicManage.c b/TSCP/src/APP/ciapp/LogicManage/TradInterlockLogicManage.c index dff2d7a..b173ebc 100644 --- a/TSCP/src/APP/ciapp/LogicManage/TradInterlockLogicManage.c +++ b/TSCP/src/APP/ciapp/LogicManage/TradInterlockLogicManage.c @@ -6538,103 +6538,134 @@ UINT16 GetRouteBingZhiSignalId(const UINT16 routeId) */ UINT16 GetRouteChaZhiSignalId(const UINT16 routeId) { - UINT16 startSigId = 0u; /*ʼźŻID*/ - UINT16 signalSum = 0u; /*źŻ*/ - UINT16 signalId = 0u; /*źŻID*/ - UINT16 routeSecSum = 0u; /*·*/ - RoutePhysicalSectionStruct *pRoutePhySecStru = NULL; /*·*/ - UINT16 returnOutSecId = 0u; /*۷źŻⷽID*/ - UINT16 returnInSecId = 0u; /*۷źŻڷID*/ - UINT16 lockBelongRouteId = 0u; /*·ID*/ - UINT16 outSecId = 0u; /*ⷽID*/ - UINT16 ii = 0u; - UINT16 tmpSigId = 0u; - + UINT16 startSigId = 0U; /*ʼźŻID*/ + UINT16 signalSum = 0U; /*źŻ*/ + UINT16 signalId = 0U; /*źŻID*/ + UINT16 routeSecSum = 0U; /*·*/ + RoutePhysicalSectionStruct* pRoutePhySecStru = NULL; /*·*/ + UINT16 returnOutSecId = 0U; /*۷źŻⷽID*/ + UINT16 returnInSecId = 0U; /*۷źŻڷID*/ + UINT16 lockBelongRouteId = 0U; /*·ID*/ + UINT16 outSecId = 0U; /*ⷽID*/ + UINT16 ii = 0U; + UINT16 tmpSigId = 0U; + UINT8 chPhySecType = 0U; + UINT16 wTempPhySecId = 0U; + UINT16 wReturnSignal = 0U; + UINT16 wTempSigId = 0U; + UINT8 chPhyLockState = 0U; + UINT16 wLockRouteId = 0U; + UINT16 wTempSigOutPhyId = 0U; + UINT16 wTempSigInPhyId = 0U; startSigId = GetRouteStartSignalId(routeId); /*ȡ·ʼźŻID*/ signalSum = GetSignalCurSum(); /*ȡźŻ*/ - if (PHYSICAL_SEC_TYPE_NOSWITCH == GetPhySecType(GetSignalOutFirstPhySecId(startSigId))) + outSecId = GetSignalOutFirstPhySecId(startSigId); + chPhySecType = GetPhySecType(outSecId); + if (PHYSICAL_SEC_TYPE_NOSWITCH == chPhySecType) { /*޲*/ for (ii = 0u; ii < signalSum; ii++) { signalId = GetSignalId(ii); /*ȡźŻID*/ + wTempPhySecId = GetSignalOutFirstPhySecId(signalId); - if ((GetSignalOutFirstPhySecId(startSigId) == GetSignalOutFirstPhySecId(signalId)) && - (startSigId != signalId)) + if ((outSecId == wTempPhySecId) && (startSigId != signalId)) { - return signalId; + wReturnSignal = signalId; + break; + } + else + { + /**/ } } } else { /*в*/ - outSecId = GetSignalOutFirstPhySecId(startSigId); /*·ʼźŻⷽID*/ lockBelongRouteId = GetPhySecRLockBelongRouteId(outSecId); /*·ID*/ routeSecSum = GetRoutePhysicalSectionSum(lockBelongRouteId); /*ȡ·*/ pRoutePhySecStru = GetRouteSectionData(lockBelongRouteId); /*ȡ·*/ - if ((0u == routeSecSum) || (NULL == pRoutePhySecStru)) + if ((0U == routeSecSum) || (NULL == pRoutePhySecStru)) { - return 0u; - } - if (routeSecSum == 1u) - { - /*if ((PHYSICAL_SECTION_LOCK_NORMAL == GetPhySecLockState(pRoutePhySecStru[0].PhysicalSectionId)) && - (lockBelongRouteId == GetPhySecRLockBelongRouteId(pRoutePhySecStru[0].PhysicalSectionId)))*/ - { - returnOutSecId = pRoutePhySecStru[0].PhysicalSectionId;/*۷źŻⷽID*/ - - tmpSigId = GetRouteStartSignalId(lockBelongRouteId);/*۷źŻڷID*/ - - returnInSecId = GetSignalOutFirstPhySecId(tmpSigId); - } - } - else if (routeSecSum > 1u) - { - for (ii = 0u; ii < routeSecSum; ii++) - { - - if ((PHYSICAL_SECTION_LOCK_NORMAL == GetPhySecLockState(pRoutePhySecStru[ii].PhysicalSectionId)) && - (lockBelongRouteId == GetPhySecRLockBelongRouteId(pRoutePhySecStru[ii].PhysicalSectionId))) - { /*·һյ*/ - - returnOutSecId = pRoutePhySecStru[ii].PhysicalSectionId; /*۷źŻⷽID*/ - - if (ii > 0u) - { - returnInSecId = pRoutePhySecStru[ii-1U].PhysicalSectionId; /*۷źŻڷID*/ - } - - break; - } - } + /**/ } else { - /*޲*/ - } - if ((0u == returnOutSecId) || (0u == returnInSecId)) - { - return 0u; - } - - for (ii = 0u; ii < signalSum; ii++) - { - signalId = GetSignalId(ii); /*ȡźŻID*/ - - if ((returnOutSecId == GetSignalOutFirstPhySecId(signalId)) && - (returnInSecId == GetSignalInFirstPhySecId(signalId, routeId))) + if (1U == routeSecSum) { - return signalId; + returnOutSecId = pRoutePhySecStru[0U].PhysicalSectionId;/*۷źŻⷽID*/ + + tmpSigId = GetRouteStartSignalId(lockBelongRouteId);/*۷źŻڷID*/ + + returnInSecId = GetSignalOutFirstPhySecId(tmpSigId); + } + else if (1U < routeSecSum) + { + for (ii = 0U; ii < routeSecSum; ii++) + { + + chPhyLockState = GetPhySecLockState(pRoutePhySecStru[ii].PhysicalSectionId); + wLockRouteId = GetPhySecRLockBelongRouteId(pRoutePhySecStru[ii].PhysicalSectionId); + if ((PHYSICAL_SECTION_LOCK_NORMAL == chPhyLockState) && + (lockBelongRouteId == wLockRouteId)) + { /*·һյ*/ + + returnOutSecId = pRoutePhySecStru[ii].PhysicalSectionId; /*۷źŻⷽID*/ + + if (0U < ii) + { + returnInSecId = pRoutePhySecStru[ii - 1U].PhysicalSectionId; /*۷źŻڷID*/ + } + else + { + wTempSigId = GetRouteStartSignalId(lockBelongRouteId);/*ȡս·ⷽһ*/ + returnInSecId = GetSignalOutFirstPhySecId(wTempSigId); + + } + + break; + } + } + } + else + { + /*޲*/ } } + + if ((0U == returnOutSecId) || (0U == returnInSecId)) + { + /*޲*/ + } + else + { + for (ii = 0u; ii < signalSum; ii++) + { + signalId = GetSignalId(ii); /*ȡźŻID*/ + wTempSigOutPhyId = GetSignalOutFirstPhySecId(signalId); + wTempSigInPhyId = GetSignalInFirstPhySecId(signalId, routeId); + if ((returnOutSecId == wTempSigOutPhyId) && + (returnInSecId == wTempSigInPhyId)) + { + wReturnSignal = signalId; + break; + } + else + { + /*޲*/ + } + } + } + + } - return 0u; + return wReturnSignal; } diff --git a/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicCheck.c b/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicCheck.c index 242afef..9fac982 100644 --- a/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicCheck.c +++ b/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicCheck.c @@ -9256,18 +9256,35 @@ UINT8 KeepRouteSwitchCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel) if (CI_SUCCESS == reResult) {/*·ֿŷ*/ - if(CI_TRADITION_RAILWAY == lineIdentity) + if (FUNC_SWITCH_ON == cSndSideProFuncSwitch) { - if (FUNC_SWITCH_ON == cSndSideProFuncSwitch) + /*ֶ֧ʱλúͿɶ*/ + } + else + { + /*·λȷ*/ + devId = 0u; + devState = 0u; + checkResult = RouteRelatedProSwitchPosCheck(routeId, &devId, &devState); + if (checkResult == CI_SUCCESS) { - /*ֶ֧ʱλúͿɶ*/ + /* ͨ */ + reResult = CI_SUCCESS; } else { - /*·λȷ*/ + /* ¼ */ + SetErrorData(functionId, CI_DEVICE_TYPE_SWITCH, devId, ETYPE_SWT_POSTION_STATE, devState, sendLevel); + /* ʧܷ */ + reResult = CI_ERROR; + } + + if (CI_SUCCESS == reResult) + { + /*·ա򡾵ҷա*/ devId = 0u; devState = 0u; - checkResult = RouteRelatedProSwitchPosCheck(routeId, &devId, &devState); + checkResult = RouteRelatedProSwitchLockCheck(routeId, &devId, &devState); if (checkResult == CI_SUCCESS) { /* ͨ */ @@ -9276,40 +9293,15 @@ UINT8 KeepRouteSwitchCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel) else { /* ¼ */ - SetErrorData(functionId, CI_DEVICE_TYPE_SWITCH, devId, ETYPE_SWT_POSTION_STATE, devState, sendLevel); + SetErrorData(functionId, CI_DEVICE_TYPE_SWITCH, devId, ETYPE_SWT_LOCK_STATUS, devState, sendLevel); /* ʧܷ */ reResult = CI_ERROR; } - - if (CI_SUCCESS == reResult) - { - /*·ա򡾵ҷա*/ - devId = 0u; - devState = 0u; - checkResult = RouteRelatedProSwitchLockCheck(routeId, &devId, &devState); - if (checkResult == CI_SUCCESS) - { - /* ͨ */ - reResult = CI_SUCCESS; - } - else - { - /* ¼ */ - SetErrorData(functionId, CI_DEVICE_TYPE_SWITCH, devId, ETYPE_SWT_LOCK_STATUS, devState, sendLevel); - /* ʧܷ */ - reResult = CI_ERROR; - } - } - else - { - reResult = CI_ERROR; - } } - } - else - { - /* ʧܷ *//* zt ɾش 2022-02-15 */ - reResult = CI_ERROR; + else + { + reResult = CI_ERROR; + } } } else @@ -9466,12 +9458,29 @@ UINT8 KeepLeadRouteSwitchCheck(UINT16 routeId, UINT8 functionId, UINT8 sendLevel if (CI_SUCCESS == reResult) {/*·ֿŷ*/ - if (CI_TRADITION_RAILWAY == lineIdentity) + /*·λȷ*/ + devId = 0U; + devState = 0U; + checkResult = RouteRelatedProSwitchPosCheck(routeId, &devId, &devState); + if (checkResult == CI_SUCCESS) { - /*·λȷ*/ + /* ͨ */ + reResult = CI_SUCCESS; + } + else + { + /* ¼ */ + SetErrorData(functionId, CI_DEVICE_TYPE_SWITCH, devId, ETYPE_SWT_POSTION_STATE, devState, sendLevel); + /* ʧܷ */ + reResult = CI_ERROR; + } + + if (CI_SUCCESS == reResult) + { + /*·ա򡾵ҷա*/ devId = 0U; devState = 0U; - checkResult = RouteRelatedProSwitchPosCheck(routeId, &devId, &devState); + checkResult = RouteRelatedProSwitchLockCheck(routeId, &devId, &devState); if (checkResult == CI_SUCCESS) { /* ͨ */ @@ -9480,38 +9489,13 @@ UINT8 KeepLeadRouteSwitchCheck(UINT16 routeId, UINT8 functionId, UINT8 sendLevel else { /* ¼ */ - SetErrorData(functionId, CI_DEVICE_TYPE_SWITCH, devId, ETYPE_SWT_POSTION_STATE, devState, sendLevel); + SetErrorData(functionId, CI_DEVICE_TYPE_SWITCH, devId, ETYPE_SWT_LOCK_STATUS, devState, sendLevel); /* ʧܷ */ reResult = CI_ERROR; } - - if (CI_SUCCESS == reResult) - { - /*·ա򡾵ҷա*/ - devId = 0U; - devState = 0U; - checkResult = RouteRelatedProSwitchLockCheck(routeId, &devId, &devState); - if (checkResult == CI_SUCCESS) - { - /* ͨ */ - reResult = CI_SUCCESS; - } - else - { - /* ¼ */ - SetErrorData(functionId, CI_DEVICE_TYPE_SWITCH, devId, ETYPE_SWT_LOCK_STATUS, devState, sendLevel); - /* ʧܷ */ - reResult = CI_ERROR; - } - } - else - { - reResult = CI_ERROR; - } } else { - /* ʧܷ *//* zt ɾش 2022-02-15 */ reResult = CI_ERROR; } } @@ -9843,60 +9827,44 @@ UINT8 LockBlocRouteSwitchCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel) if (CI_SUCCESS == reResult) { - if (CI_TRADITION_RAILWAY == lineIdentity) + /*·еλȷλòȷɶ*/ + devId = 0u; + devState = 0u; + + checkResult = RouteSwitchPosAndMoveValidCheck(routeId, sendLevel); + + if (CI_SUCCESS == checkResult) { - /*·еλȷλòȷɶ*/ - devId = 0u; - devState = 0u; - - checkResult = RouteSwitchPosAndMoveValidCheck(routeId, sendLevel); - - if (CI_SUCCESS == checkResult) - { - /* ͨ */ - reResult = CI_SUCCESS; - } - else - { - /* ʧܷ */ - reResult = checkResult; - } + /* ͨ */ + reResult = CI_SUCCESS; } else { - /* ʧܷ *//* zt ɾش 2022-02-15 */ - reResult = CI_ERROR; + /* ʧܷ */ + reResult = checkResult; } } if (CI_SUCCESS == reResult) { - if(CI_TRADITION_RAILWAY == lineIdentity) + /* + ·еλȷ + ȷRETURN_LOCK_ERR_SWITPOS + ȷCI_SUCCESS + */ + devId = 0u; + devState = 0u; + checkResult = RouteAllSwitchPosCheck(routeId, &devId, &devState); + if (checkResult == CI_SUCCESS) { - /* - ·еλȷ - ȷ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; - - } + /* ͨ */ + reResult = CI_SUCCESS; } else { - /* ʧܷ *//* zt ɾش 2022-02-15 */ - reResult = CI_ERROR; + /* ʧܷ */ + reResult = RETURN_LOCK_ERR_SWITPOS; + } } else @@ -10196,60 +10164,44 @@ UINT8 LockLeadRouteSwitchCheck(UINT16 routeId, UINT8 functionId, UINT8 sendLevel if (CI_SUCCESS == reResult) { - if (CI_TRADITION_RAILWAY == lineIdentity) + /*·еλȷλòȷɶ*/ + devId = 0U; + devState = 0U; + + checkResult = RouteSwitchPosAndMoveValidCheck(routeId, sendLevel); + + if (CI_SUCCESS == checkResult) { - /*·еλȷλòȷɶ*/ - devId = 0U; - devState = 0U; - - checkResult = RouteSwitchPosAndMoveValidCheck(routeId, sendLevel); - - if (CI_SUCCESS == checkResult) - { - /* ͨ */ - reResult = CI_SUCCESS; - } - else - { - /* ʧܷ */ - reResult = checkResult; - } + /* ͨ */ + reResult = CI_SUCCESS; } else { - /* ʧܷ *//* zt ɾش 2022-02-15 */ - reResult = CI_ERROR; + /* ʧܷ */ + reResult = checkResult; } } if (CI_SUCCESS == reResult) { - if (CI_TRADITION_RAILWAY == lineIdentity) + /* + ·еλȷ + ȷRETURN_LOCK_ERR_SWITPOS + ȷCI_SUCCESS + */ + devId = 0U; + devState = 0U; + checkResult = RouteAllSwitchPosCheck(routeId, &devId, &devState); + if (checkResult == CI_SUCCESS) { - /* - ·еλȷ - ȷ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; - - } + /* ͨ */ + reResult = CI_SUCCESS; } else { - /* ʧܷ *//* zt ɾش 2022-02-15 */ - reResult = CI_ERROR; + /* ʧܷ */ + reResult = RETURN_LOCK_ERR_SWITPOS; + } } else @@ -12752,39 +12704,37 @@ UINT8 OpenBlocRouteSwitchCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel) } } - if(CI_SUCCESS == reResult) - { - if(CI_TRADITION_RAILWAY == lineIdentity) + if (CI_SUCCESS == reResult) + {/*·ŷ*/ + if (FUNC_SWITCH_ON == cSndSideProFuncSwitch) { - /* ͨ */ - reResult = CI_SUCCESS; + /*ֶ֧ʱλúͿɶ*/ } else { - /* ʧܷ *//* zt ɾش 2022-02-15 */ - reResult = CI_ERROR; - } - } - else - { - /* ʧܷ */ - reResult = CI_ERROR; - } - - if (CI_SUCCESS == reResult) - {/*·ŷ*/ - if(CI_TRADITION_RAILWAY == lineIdentity) - { - if (FUNC_SWITCH_ON == cSndSideProFuncSwitch) + /*·λȷ*/ + devId = 0u; + devState = 0u; + checkResult = RouteRelatedProSwitchPosCheck(routeId, &devId, &devState); + if (checkResult == CI_SUCCESS) { - /*ֶ֧ʱλúͿɶ*/ + /* ͨ */ + reResult = CI_SUCCESS; } else { - /*·λȷ*/ + /* ¼ */ + SetErrorData(functionId, CI_DEVICE_TYPE_SWITCH, devId, ETYPE_SWT_POSTION_STATE, devState, sendLevel); + /* ʧܷ */ + reResult = CI_ERROR; + } + + if (CI_SUCCESS == reResult) + { + /*·ա򡾵ҷա*/ devId = 0u; devState = 0u; - checkResult = RouteRelatedProSwitchPosCheck(routeId, &devId, &devState); + checkResult = RouteRelatedProSwitchLockCheck(routeId, &devId, &devState); if (checkResult == CI_SUCCESS) { /* ͨ */ @@ -12793,40 +12743,15 @@ UINT8 OpenBlocRouteSwitchCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel) else { /* ¼ */ - SetErrorData(functionId, CI_DEVICE_TYPE_SWITCH, devId, ETYPE_SWT_POSTION_STATE, devState, sendLevel); + SetErrorData(functionId, CI_DEVICE_TYPE_SWITCH, devId, ETYPE_SWT_LOCK_STATUS, devState, sendLevel); /* ʧܷ */ reResult = CI_ERROR; } - - if (CI_SUCCESS == reResult) - { - /*·ա򡾵ҷա*/ - devId = 0u; - devState = 0u; - checkResult = RouteRelatedProSwitchLockCheck(routeId, &devId, &devState); - if (checkResult == CI_SUCCESS) - { - /* ͨ */ - reResult = CI_SUCCESS; - } - else - { - /* ¼ */ - SetErrorData(functionId, CI_DEVICE_TYPE_SWITCH, devId, ETYPE_SWT_LOCK_STATUS, devState, sendLevel); - /* ʧܷ */ - reResult = CI_ERROR; - } - } - else - { - reResult = CI_ERROR; - } } - } - else - { - /* ʧܷ *//* zt ɾش 2022-02-15 */ - reResult = CI_ERROR; + else + { + reResult = CI_ERROR; + } } } else @@ -12957,31 +12882,29 @@ UINT8 OpenLeadRouteSwitchCheck(UINT16 routeId, UINT8 functionId, UINT8 sendLevel if (CI_SUCCESS == reResult) { - if (CI_TRADITION_RAILWAY == lineIdentity) + /*·λȷ*/ + devId = 0U; + devState = 0U; + checkResult = RouteRelatedProSwitchPosCheck(routeId, &devId, &devState); + if (checkResult == CI_SUCCESS) { /* ͨ */ reResult = CI_SUCCESS; } else { - /* ʧܷ *//* zt ɾش 2022-02-15 */ + /* ¼ */ + SetErrorData(functionId, CI_DEVICE_TYPE_SWITCH, devId, ETYPE_SWT_POSTION_STATE, devState, sendLevel); + /* ʧܷ */ reResult = CI_ERROR; } - } - else - { - /* ʧܷ */ - reResult = CI_ERROR; - } - if (CI_SUCCESS == reResult) - {/*·ŷ*/ - if (CI_TRADITION_RAILWAY == lineIdentity) + if (CI_SUCCESS == reResult) { - /*·λȷ*/ + /*·ա򡾵ҷա*/ devId = 0U; devState = 0U; - checkResult = RouteRelatedProSwitchPosCheck(routeId, &devId, &devState); + checkResult = RouteRelatedProSwitchLockCheck(routeId, &devId, &devState); if (checkResult == CI_SUCCESS) { /* ͨ */ @@ -12990,38 +12913,13 @@ UINT8 OpenLeadRouteSwitchCheck(UINT16 routeId, UINT8 functionId, UINT8 sendLevel else { /* ¼ */ - SetErrorData(functionId, CI_DEVICE_TYPE_SWITCH, devId, ETYPE_SWT_POSTION_STATE, devState, sendLevel); + SetErrorData(functionId, CI_DEVICE_TYPE_SWITCH, devId, ETYPE_SWT_LOCK_STATUS, devState, sendLevel); /* ʧܷ */ reResult = CI_ERROR; } - - if (CI_SUCCESS == reResult) - { - /*·ա򡾵ҷա*/ - devId = 0U; - devState = 0U; - checkResult = RouteRelatedProSwitchLockCheck(routeId, &devId, &devState); - if (checkResult == CI_SUCCESS) - { - /* ͨ */ - reResult = CI_SUCCESS; - } - else - { - /* ¼ */ - SetErrorData(functionId, CI_DEVICE_TYPE_SWITCH, devId, ETYPE_SWT_LOCK_STATUS, devState, sendLevel); - /* ʧܷ */ - reResult = CI_ERROR; - } - } - else - { - reResult = CI_ERROR; - } } else { - /* ʧܷ *//* zt ɾش 2022-02-15 */ reResult = CI_ERROR; } } @@ -13183,7 +13081,7 @@ UINT8 OpenBlocRouteOverlapCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel) else { /* zt ɾش 2022-02-15 */ - /*·*/ + reResult = CI_ERROR; } #if 0 /*·ɲƣʱ·Ӧԭ״̬*/ @@ -15655,7 +15553,7 @@ UINT8 JumpLockSwitchCheck(const UINT16 axisSecId,UINT8 funcId,UINT8 sendLevel) if (CI_ERROR == reVal) { /* ¼ */ - SetErrorData(funcId,CI_DEVICE_TYPE_SWITCH,devId,ETYPE_SWT_FLOCK_STATE,devState,sendLevel); + SetErrorData(funcId,CI_DEVICE_TYPE_SWITCH,devId, ETYPE_SWT_POSTION_STATE,devState,sendLevel); } } @@ -15668,7 +15566,7 @@ UINT8 JumpLockSwitchCheck(const UINT16 axisSecId,UINT8 funcId,UINT8 sendLevel) if (CI_ERROR == reVal) { /* ¼ */ - SetErrorData(funcId, CI_DEVICE_TYPE_SWITCH, devId, ETYPE_SWT_FLOCK_STATE, devState, sendLevel); + SetErrorData(funcId, CI_DEVICE_TYPE_SWITCH, devId, ETYPE_SWT_POSTION_STATE, devState, sendLevel); } } @@ -15941,7 +15839,7 @@ UINT8 AxisSecPorteSwitchPosMoveCheck(UINT16 const axisSecId, UINT16* pDevId, UIN /* ε */ /* ֲʼ */ - UINT16 i = 0u; /* ѭ */ + UINT8 i = 0u; /* ѭ */ UINT16 devId = 0u; UINT8 devState = 0u; UINT8 switchPos = 0u; @@ -15982,6 +15880,8 @@ UINT8 AxisSecPorteSwitchPosMoveCheck(UINT16 const axisSecId, UINT16* pDevId, UIN } else { + *pDevId = devId; + *pDevState = devState; reVal = CI_ERROR; } } @@ -16044,7 +15944,7 @@ UINT8 AxisSecAllSwitchPosCheck(UINT16 const axisSecId,UINT16 *pDevId,UINT8 *pDev AxisSwitchStruct* const dataIdBuf = GetAxisSwitchIdStru(axisSecId); /* ֲʼ */ - UINT16 i = 0u; /* ѭ */ + UINT8 i = 0u; /* ѭ */ UINT16 devId = 0u; UINT8 devState = 0u; UINT8 reVal = CI_ERROR; @@ -16098,7 +15998,7 @@ UINT8 AxisSecAllProtSwitchPosCheck(UINT16 const axisSecId, UINT16* pDevId, UINT8 AxisSwitchStruct* dataIdBuf =NULL; /* ֲʼ */ - UINT16 i = 0u; /* ѭ */ + UINT8 i = 0u; /* ѭ */ UINT16 devId = 0u; UINT8 devState = 0u; UINT8 reVal = CI_ERROR; @@ -16119,10 +16019,11 @@ UINT8 AxisSecAllProtSwitchPosCheck(UINT16 const axisSecId, UINT16* pDevId, UINT8 for (i = 0u; i < checkSum; i++) { devId = dataIdBuf[i].SwitchId; - devState = GetSwitchCurPosition(devId); - if (devState == dataIdBuf[i].SwitchPosition) + devState = GetSwitchCurPosition(devId); /*ȡǰλ*/ + reVal = checkSwtLastValDrvPosStayorNot(devId, devState); /*һǷЧ*/ + if ((devState == dataIdBuf[i].SwitchPosition)&&(CI_SUCCESS == reVal)) { - /*λȷ*/ + /*λȷ*/ } else @@ -17122,7 +17023,6 @@ UINT8 LogicSecRltvPrtctSwFLockCheck(UINT16 const wLgcId, UINT16 *pDevId, UINT8 * UINT16 wProtectSwSum = 0U; UINT16* pProtectSwIdBuf = NULL; LogsecSwitchStruct *pstLogicSecSwitchBuf = NULL; - chCheckSum = GetLogicSecSwitchSum(wLgcId); pstLogicSecSwitchBuf = GetLogicSecSwitchIdStru(wLgcId); if ((NULL != pDevId) && (NULL != pDevState) && (NULL != pYLockAlarmFlag) && (NULL != pstLogicSecSwitchBuf) @@ -17228,7 +17128,7 @@ UINT8 LogicSecRltvPrtctSwPosCheck(UINT16 const wLgcId, UINT16 *pDevId, UINT8 *pD UINT8 chCheckSum = 0U; UINT8 chProSwState = 0U; LogsecSwitchStruct *pstLogicSecSwitchBuf = NULL; - + chCheckSum = GetLgcRelateProSwSum(wLgcId);/*ȡָID߼ιĿ*/ pstLogicSecSwitchBuf = GetLgcRelateProSwStru(wLgcId); if ((NULL != pDevId) @@ -17244,12 +17144,17 @@ UINT8 LogicSecRltvPrtctSwPosCheck(UINT16 const wLgcId, UINT16 *pDevId, UINT8 *pD chDevId = pstLogicSecSwitchBuf[ii].SwitchId; chDevState = GetSwitchCurPosition(chDevId);/*ȡǰλ*/ chProSwState = pstLogicSecSwitchBuf[ii].SwitchPosition; + chRetVal = checkSwtLastValDrvPosStayorNot(chDevId, chDevState); /*һǷЧ*/ + /*ǰ߼ΰ*/ /*λһ*/ if ((chProSwState == chDevState) + &&(CI_SUCCESS == chRetVal) && ((SWITCH_POSITION_DINGWEI == chProSwState) || (SWITCH_POSITION_FANWEI == chProSwState))) { /*λüͨ*/ + + } else { @@ -17283,15 +17188,10 @@ UINT8 LogicSecRltvPrtctSwLockCheck(UINT16 const wLgcId, UINT16 *pDevId, UINT8 *p /* ֲʼ */ UINT8 chRetVal = CI_ERROR; UINT8 ii = 0U; - UINT16 jj = 0U; - UINT8 kk = 0U; UINT16 chDevId = 0U; UINT8 chDevState = 0U; - UINT16 wLgcRelativeAxleSecId = 0U; - UINT8 chProtectSwitchSum = 0U; LogsecSwitchStruct *chProtectSwitchIdBuf = NULL; - chProtectSwitchSum = GetLgcRelateProSwSum(wLgcId);/*ȡָID߼ιĿ*/ chProtectSwitchIdBuf = GetLgcRelateProSwStru(wLgcId); @@ -17303,9 +17203,9 @@ UINT8 LogicSecRltvPrtctSwLockCheck(UINT16 const wLgcId, UINT16 *pDevId, UINT8 *p chRetVal = CI_SUCCESS; for (ii = 0U; ii < chProtectSwitchSum; ii++) { - chDevId = chProtectSwitchIdBuf[jj].SwitchId; + chDevId = chProtectSwitchIdBuf[ii].SwitchId; chDevState = GetSwitchLockStatus(chDevId); - + /*ǰ߼ΰ*/ if ((SWITCH_LOCK_STATUS_PROTECT == chDevState) || (SWITCH_LOCK_STATUS_DAP == chDevState)) { /*ѡա򡾵ҷա*/ @@ -17321,7 +17221,7 @@ UINT8 LogicSecRltvPrtctSwLockCheck(UINT16 const wLgcId, UINT16 *pDevId, UINT8 *p if (CI_SUCCESS != chRetVal) { break; - } + } } } else @@ -18257,6 +18157,7 @@ UINT8 LogicSecResApplicabilityCheck(UINT16 const wLogicSecId) else { /* ¼ */ + devState = GetRouteState(routeId); SetErrorData(functionId, CI_DEVICE_TYPE_ROUTE, routeId, ETYPE_ROUTE_STATE, devState, sendLevel); /* ʧܷ */ reResult = CI_ERROR; @@ -26514,6 +26415,8 @@ UINT8 OtherCiOvlpRelProSwMovValCheck(const UINT16 wOverlapId) cRetVal = CI_ERROR; /*λòȷҵɶʧ*/ } } + + } else { @@ -27865,7 +27768,7 @@ UINT8 PhySecLockMaskSideProtectCheck(UINT16 wPhySecId) /*ڲʱжϵǰǷλڹؼκ*/ wSwtPhySecId = GetSwitchPhySectionId(pSideProtectData[i].KeysSwitchID); cKeySwtPhySecIndex = GetPhySecInRoutePosIndex(wRLockBelongRouteId, wSwtPhySecId); - if ((ROUTE_PHYSICALSECTION_SUM_MAX > cKeySwtPhySecIndex) && (cKeySwtPhySecIndex < cCurPhySecIndex)) + if (cKeySwtPhySecIndex < cCurPhySecIndex) { /*λڹؼκ󷽣*/ } @@ -28266,7 +28169,7 @@ UINT8 JumpPhySectionUseCheck(const UINT16 axisSecId) /* ֲʼ */ UINT8 reResult = CI_ERROR; /*ֵ*/ UINT8 phyUseState = 0u;/*ü*/ - UINT8 phyId = 0u; + UINT16 phyId = 0u; @@ -28282,11 +28185,15 @@ UINT8 JumpPhySectionUseCheck(const UINT16 axisSecId) /*޴*/ } - /*εķε*/ + /*εķκ͵*/ if (CI_SUCCESS == reResult) { reResult = JumpPhySectionPortectUseCheck(axisSecId); } + else + { + /*޴*/ + } /*εĵ*/ @@ -28294,15 +28201,14 @@ UINT8 JumpPhySectionUseCheck(const UINT16 axisSecId) { reResult = JumpPhySectionSwitchUseCheck(axisSecId); } - - /*εķ*/ - if (CI_SUCCESS == reResult) + else { - reResult = JumpPhySectionSwitchUseCheck(axisSecId); + /*޴*/ } + return reResult; } @@ -28372,7 +28278,7 @@ UINT8 JumpLogicSecPortectUseCheck(const UINT16 wLgcId) phyId = GetSwitchPhySectionId(chDevId); phyUseState = GetPhySecUseState(phyId); if((PHYSICAL_SECTION_USING_NO != phyUseState)||(SWITCH_USING_NO !=cSwitchUsingState)) - {/**/ + {/*ûڵ*/ chRetVal = CI_ERROR; break; } @@ -28406,7 +28312,7 @@ UINT8 JumpPhySectionSwitchUseCheck(const UINT16 axisSecId) /* ֲʼ */ UINT8 i = 0u; /* ѭ */ - UINT16 SwitchId = 0u; + UINT16 wSwitchId = 0u; UINT8 cSwitchUsingState = 0U; @@ -28421,8 +28327,8 @@ UINT8 JumpPhySectionSwitchUseCheck(const UINT16 axisSecId) /*ʼڵ*/ for (i = 0u; i < checkSum; i++) { - SwitchId = dataIdBuf[i].SwitchId; - cSwitchUsingState = GetSwitchUsingState(SwitchId); + wSwitchId = dataIdBuf[i].SwitchId; + cSwitchUsingState = GetSwitchUsingState(wSwitchId); if (SWITCH_USING_NO != cSwitchUsingState) { retVal = CI_ERROR; @@ -28613,7 +28519,7 @@ void SetAxisRelProSwitchLockSta(const UINT16 axisSecId, const UINT8 lockCommand) cFuncRet = checkSwtLastValDrvPosStayorNot(protectSwitchId, dataIdBuf[ii].SwitchPosition); if ((SWITCH_LOCK_PROTECT_CANCEL == lockCommand) || ((cSwitchCurPos == dataIdBuf[ii].SwitchPosition) && (CI_SUCCESS == cFuncRet))) - { + {/*ɶ֮ǰѾˣﻹظ*/ SetSwitchLockStatus(SWITCH_PLOCKTYPE_AXISSEC, axisSecId, protectSwitchId, lockCommand); /*õ״̬*/ } @@ -28642,7 +28548,7 @@ UINT8 AxisRelatedProSwitchLockCheck(UINT16 const axisSecId, UINT16* pDevId, UINT { /* ֲʼ */ - UINT16 i = 0u; /* ѭ */ + UINT8 i = 0u; /* ѭ */ UINT16 devId = 0u; UINT8 devState = 0u; UINT8 reVal = CI_ERROR; @@ -28687,61 +28593,6 @@ UINT8 AxisRelatedProSwitchLockCheck(UINT16 const axisSecId, UINT16* pDevId, UINT return reVal; } -/* -* ߼״̬ -* ˵ UINT16 const routeId, ߼ID -* UINT16 *pDevId, 豸Idأ -* UINT8 *pDevState, 豸״̬أ -* ֵ CI_ERROR -* CI_SUCCESS -* add by mpt 20260331 -*/ -UINT8 LogicSecRltvPrtctSwFlockCheck(UINT16 const wLgcId, UINT16* pDevId, UINT8* pDevState) -{ - /* ֲʼ */ - UINT8 chRetVal = CI_ERROR; - UINT8 ii = 0U; - UINT16 jj = 0U; - UINT16 chDevId = 0U; - UINT8 chDevState = 0U; - UINT8 chCheckSum = 0U; - LogsecSwitchStruct* pstLogicSecSwitchBuf = NULL; - - chCheckSum = GetLgcRelateProSwSum(wLgcId);/*ȡָID߼ιĿ*/ - pstLogicSecSwitchBuf = GetLgcRelateProSwStru(wLgcId); - if ((NULL != pDevId) - && (NULL != pDevState) - && (NULL != pstLogicSecSwitchBuf) - && (LOGSEC_RELATE_PRO_SW_SUM_MAX > chCheckSum)) - { - chRetVal = CI_SUCCESS; - /*߼ι*/ - for (ii = 0U; ii < chCheckSum; ii++) - { - - chDevId = pstLogicSecSwitchBuf[ii].SwitchId; - chDevState = GetSwitchFLockState(chDevId); - if(SWITCH_LOCK_FENGSUO_NO == chDevState) - { - /*λüͨ*/ - } - else - { - /*״̬һ·ع״̬*/ - *pDevId = chDevId; - *pDevState = chDevState; - chRetVal = CI_ERROR; - break; - } - } - } - else - { - chRetVal = CI_ERROR; - } - - return chRetVal; -} /* * ߼ι״̬ @@ -28784,7 +28635,7 @@ void SetLogSecRelProSwitchLockSta(const UINT16 wLgcId, const UINT8 lockCommand) retVal = CI_ERROR; } else - { + {/*޴*/ } } @@ -28812,4 +28663,75 @@ void SetLogSecRelProSwitchLockSta(const UINT16 wLgcId, const UINT8 lockCommand) { retVal = CI_ERROR; } -} \ No newline at end of file +} +/* +* еǷȫ +* ˵const UINT16 axisSecId ID +* ֵ CI_ERROR δȫ +* CI_SUCCESS ȫ +* add by mpt 20260403 +*/ +UINT8 JumpPhySecAllUseCheck(const UINT16 axisSecId) +{ + UINT8 retVal = CI_ERROR; + UINT8 checkSum = 0u; + AxisSwitchStruct* dataIdBuf = 0u; + + /* ֲʼ */ + UINT8 i = 0u; /* ѭ */ + UINT16 wSwitchId = 0u; + UINT16 phyId = 0U; + UINT8 phyUseState = 0U; + + checkSum = GetAxisSecRelateProSwSum(axisSecId);/*ι*/ + dataIdBuf = GetAxisSecRelateProSwStru(axisSecId); + + + if (NULL == dataIdBuf) + { + /*޼*/ + retVal = CI_ERROR; + } + else + { + retVal = CI_SUCCESS; + /*ʼ*/ + for (i = 0u; i < checkSum; i++) + { + wSwitchId = dataIdBuf[i].SwitchId; + + phyId = GetSwitchPhySectionId(wSwitchId); + phyUseState = GetPhySecUseState(phyId); + + if (PHYSICAL_SECTION_USING_YES != phyUseState) + {/**/ + retVal = CI_ERROR; + break; + } + else + { + /*ѭ*/ + } + + } + } + + if (CI_SUCCESS == retVal) + { + phyId = GetAxisSecRelativePhySecId(axisSecId);/*ȡID*/ + phyUseState = GetPhySecUseState(phyId); + + if (PHYSICAL_SECTION_USING_YES != phyUseState) + {/**/ + retVal = CI_ERROR; + } + else + { + /*ִ*/ + } + } + + return retVal; +} + + diff --git a/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicCheck.h b/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicCheck.h index 49f4527..51eacaf 100644 --- a/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicCheck.h +++ b/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicCheck.h @@ -3025,22 +3025,22 @@ void SetAxisRelProSwitchLockSta(const UINT16 axisSecId, const UINT8 lockCommand) */ UINT8 AxisRelatedProSwitchLockCheck(UINT16 const axisSecId, UINT16* pDevId, UINT8* pDevState); /* -* ߼״̬ -* ˵ UINT16 const routeId, ߼ID -* UINT16 *pDevId, 豸Idأ -* UINT8 *pDevState, 豸״̬أ -* ֵ CI_ERROR -* CI_SUCCESS -* add by mpt 20260331 -*/ -UINT8 LogicSecRltvPrtctSwFlockCheck(UINT16 const wLgcId, UINT16* pDevId, UINT8* pDevState); -/* * ߼ι״̬ * ˵ const UINT16 axisSecId, ID * const UINT8 lockCommand, ״̬ * ֵ void * add by mpt 20260331 */ -void SetLogSecRelProSwitchLockSta(const UINT16 wLgcId, const UINT8 lockCommand); +void SetLogSecRelProSwitchLockSta(const UINT16 wLgcId, const UINT8 lockCommand); +/* +* еǷȫ +* ˵const UINT16 axisSecId ID +* ֵ CI_ERROR δȫ +* CI_SUCCESS ȫ +* add by mpt 20260403 +*/ +UINT8 JumpPhySecAllUseCheck(const UINT16 axisSecId); + + #endif diff --git a/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicProcess.c b/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicProcess.c index 8ce766f..a2a6580 100644 --- a/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicProcess.c +++ b/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicProcess.c @@ -454,26 +454,21 @@ UINT8 SetRevrLTrainRouteLogicProcess(UINT16 const routeId) /* ߼ */ /* ·ǡг·*/ - if(CI_SUCCESS == reResult) + devState = GetRouteType(routeId); + if (devState == ROUTE_TYPE_LIECHE) { - devState = GetRouteType(routeId); - if (devState == ROUTE_TYPE_LIECHE) - { - /* ͨ */ - reResult = CI_SUCCESS; - } - else - { - /* ¼ */ - SetErrorData(functionId,CI_DEVICE_TYPE_ROUTE,routeId,ETYPE_ROUTE_TYPE,devState,sendLevel); - /* ʧܷ */ - reResult = CI_ERROR; + /* ͨ */ + reResult = CI_SUCCESS; + } + else + { + /* ¼ */ + SetErrorData(functionId, CI_DEVICE_TYPE_ROUTE, routeId, ETYPE_ROUTE_TYPE, devState, sendLevel); + /* ʧܷ */ + reResult = CI_ERROR; - } - } - - - + } + if(CI_SUCCESS == reResult) { devState = GetRouteState(routeId); @@ -1053,21 +1048,18 @@ UINT8 SetReverseRtnRouteLogicProcess(UINT16 const routeId) /* ߼ */ /* ·ǡ۷·*/ - if(CI_SUCCESS == reResult) + devState = GetRouteType(routeId); + if (devState == ROUTE_TYPE_RETURN) { - devState = GetRouteType(routeId); - if (devState == ROUTE_TYPE_RETURN) - { - /* ͨ */ - reResult = CI_SUCCESS; - } - else - { - /* ¼ */ - SetErrorData(functionId,CI_DEVICE_TYPE_ROUTE,routeId,ETYPE_ROUTE_TYPE,devState,sendLevel); - /* ʧܷ */ - reResult = CI_ERROR; - } + /* ͨ */ + reResult = CI_SUCCESS; + } + else + { + /* ¼ */ + SetErrorData(functionId, CI_DEVICE_TYPE_ROUTE, routeId, ETYPE_ROUTE_TYPE, devState, sendLevel); + /* ʧܷ */ + reResult = CI_ERROR; } if(CI_SUCCESS == reResult) @@ -2895,36 +2887,23 @@ UINT8 LockRouteOverlapLogicProcess(UINT16 const routeId, UINT16 const overlapId, if (CI_TRADITION_RAILWAY == lineIdentity) {/*ͳ·*/ checkResult = OverlapSwitchMoveValidCheck(overlapId,&devId,&devState); + if (checkResult == CI_SUCCESS) + { + /* ͨ飬ֵǰ״̬ */ + } + else + { + /* ¼ */ + SetErrorData(functionId, CI_DEVICE_TYPE_SWITCH, devId, ETYPE_SWT_POSTION_STATE, devState, sendLevel); + /* ʧܷ */ + reResult = CI_ERROR; + } }/* zt ɾش 2022-02-15 */ else {/*·ʹ*/ - checkResult = CI_ERROR; - } - - if (checkResult == CI_SUCCESS) - { - /* ͨ飬ֵǰ״̬ */ - } - else - { - /* ¼ */ - SetErrorData(functionId,CI_DEVICE_TYPE_SWITCH,devId,ETYPE_SWT_POSTION_STATE,devState,sendLevel); - /* ʧܷ */ reResult = CI_ERROR; } } - /*·ͼ*/ - if ((CI_SUCCESS == reResult) || (RETURN_WAIT_SWITCH_USING == reResult)) - {/* zt ɾش 2022-02-15 */ - if (CI_TRADITION_RAILWAY == lineIdentity) - {/*ͳ·*/ - /* ͨ飬ֵǰ״̬ */ - } - else - {/*·ʹ*/ - reResult = CI_ERROR; - } - } /*ελü * RETURN_LOCK_ERR_SWITPOS ελòȷ @@ -2934,15 +2913,7 @@ UINT8 LockRouteOverlapLogicProcess(UINT16 const routeId, UINT16 const overlapId, { devId = 0u; devState = 0u; - if(CI_TRADITION_RAILWAY == lineIdentity) - {/*ͳ·*/ - checkResult = OverlapSwitchPosCheck(overlapId,&devId,&devState); - }/* zt ɾش 2022-02-15 */ - else - {/*·ʹ*/ - checkResult = CI_ERROR; - } - + checkResult = OverlapSwitchPosCheck(overlapId, &devId, &devState); if (checkResult == CI_ERROR) { /* λòȷ */ @@ -3631,21 +3602,18 @@ UINT8 OpenCbtcLTrainRouteLogicProcess(UINT16 const routeId) /* ߼ */ /* ·ලģʽΪCBTC*/ - if (CI_SUCCESS == reResult) + devState = GetRouteLevel(routeId); + if ((devState == ROUTE_LEVEL_CBTC)) { - devState = GetRouteLevel(routeId); - if ((devState == ROUTE_LEVEL_CBTC)) - { - /* ͨ */ - reResult = CI_SUCCESS; - } - else - { - /* ¼ */ - SetErrorData(functionId,CI_DEVICE_TYPE_ROUTE,routeId,ETYPE_ROUTE_LEVEL,devState,sendLevel); - /* ʧܷ */ - reResult = CI_ERROR; - } + /* ͨ */ + reResult = CI_SUCCESS; + } + else + { + /* ¼ */ + SetErrorData(functionId, CI_DEVICE_TYPE_ROUTE, routeId, ETYPE_ROUTE_LEVEL, devState, sendLevel); + /* ʧܷ */ + reResult = CI_ERROR; } /* ·г·*/ @@ -3886,18 +3854,15 @@ UINT8 OpenCbtcLTrainRouteLogicProcess(UINT16 const routeId) else { /*ȲǷ·ҲǷ羮·*/ - if (CI_SUCCESS == reResult) + /**/ + checkResult = CBTCRouteFloodGateCheck(routeId, functionId, sendLevel); + if (CI_SUCCESS == checkResult) { - /**/ - checkResult = CBTCRouteFloodGateCheck(routeId,functionId,sendLevel); - if (CI_SUCCESS == checkResult) - { - reResult = CI_SUCCESS; - } - else - { - reResult = CI_ERROR; - } + reResult = CI_SUCCESS; + } + else + { + reResult = CI_ERROR; } } } @@ -4851,21 +4816,18 @@ UINT8 OpenCbtcReturnRouteLogicProcess(UINT16 const routeId) /* ߼ */ /* ·ලģʽΪCBTC*/ - if (CI_SUCCESS == reResult) + devState = GetRouteLevel(routeId); + if ((devState == ROUTE_LEVEL_CBTC)) { - devState = GetRouteLevel(routeId); - if ((devState == ROUTE_LEVEL_CBTC)) - { - /* ͨ */ - reResult = CI_SUCCESS; - } - else - { - /* ¼ */ - SetErrorData(functionId,CI_DEVICE_TYPE_ROUTE,routeId,ETYPE_ROUTE_LEVEL,devState,sendLevel); - /* ʧܷ */ - reResult = CI_ERROR; - } + /* ͨ */ + reResult = CI_SUCCESS; + } + else + { + /* ¼ */ + SetErrorData(functionId, CI_DEVICE_TYPE_ROUTE, routeId, ETYPE_ROUTE_LEVEL, devState, sendLevel); + /* ʧܷ */ + reResult = CI_ERROR; } /* ·ǡ۷·*/ @@ -7863,42 +7825,33 @@ UINT8 SetSwitchFLockLogicProcess(UINT16 const switchId) { if(FUNC_SWITCH_ON == CiFunctionLock) { - if (CI_TRADITION_RAILWAY == lineIdentity) - {/*ͳ·*/ - /*2״̬Ϊδա*/ - checkResult = switch2ndSecLockState; - if (checkResult == PHYSICAL_SECTION_LOCK_NO) + /*ͳ·*/ + /*2״̬Ϊδա*/ + checkResult = switch2ndSecLockState; + if (checkResult == PHYSICAL_SECTION_LOCK_NO) + { + /*δա*/ + reResult = CI_SUCCESS; + if (LOG_SECTION_LOGLOCK_NO == chSw2PhySecLogLockState) { - /*δա*/ + /*δ߼·ա*/ reResult = CI_SUCCESS; - if (LOG_SECTION_LOGLOCK_NO == chSw2PhySecLogLockState) - { - /*δ߼·ա*/ - reResult = CI_SUCCESS; - } - else - { - /* ¼ */ - SetErrorData(functionId, CI_DEVICE_TYPE_PHYSEC, switch2ndSecId, ETYPE_PS_LOCK_STATE, chSw2PhySecLogLockState, sendLevel); - /* ʧܷ */ - reResult = CI_ERROR; - } } else { - /*ա*/ /* ¼ */ - SetErrorData(functionId,CI_DEVICE_TYPE_PHYSEC,switch2ndSecId,ETYPE_PS_LOCK_STATE,checkResult,sendLevel); + SetErrorData(functionId, CI_DEVICE_TYPE_PHYSEC, switch2ndSecId, ETYPE_PS_LOCK_STATE, chSw2PhySecLogLockState, sendLevel); /* ʧܷ */ reResult = CI_ERROR; - } - }/* zt ɾش 2022-02-15 */ + } else - {/*·ʹ*/ - reResult = CI_ERROR; + { + /*ա*/ /* ¼ */ - SetErrorData(functionId,CI_DEVICE_TYPE_PHYSEC,phySecId,ETYPE_PS_LOCK_STATE,devState,sendLevel); + SetErrorData(functionId, CI_DEVICE_TYPE_PHYSEC, switch2ndSecId, ETYPE_PS_LOCK_STATE, checkResult, sendLevel); + /* ʧܷ */ + reResult = CI_ERROR; } } else if(FUNC_SWITCH_OFF == CiFunctionLock) @@ -9910,7 +9863,7 @@ UINT8 CLDKeepOpenSecCheck(UINT16 routeId, UINT8 functionId, UINT8 sendLevel) ETYPE_PS_MERGY_OCU_STATE, devState, sendLevel); } - else if ((0u == hasUtFlag) && (1u == hasCtFlag)) + else if (1u == hasCtFlag) { if (RC_WORK_MODE_TIOC == rcWorkMode) { @@ -11655,7 +11608,10 @@ void RouteLgcSecResReleaseProcess(const UINT16 wRouteId) && (NULL == pstTrainResInfo)) {/*һѾгԴͷŻѾ*/ /*ɾгӦ߼Դ*/ - (void)ComMemSet((void *)&pstLgcSecInfo[wLgcBufIndex].szTrainResData[jj], (UINT16)sizeof(LogicTrainResStruct), 0U); + + /*ԴϢṹ*/ + ResetResInfoStruct(wLgcBufIndex, jj); + debug_infor_printf((const)"LogSecRes Release LgcId: %d TrainId:%d Cyc\n" , wUnlockLgcSecId , wTrainId diff --git a/TSCP/src/APP/ciapp/Overlap/OverlapDataManage.c b/TSCP/src/APP/ciapp/Overlap/OverlapDataManage.c index 656ff30..98816d8 100644 --- a/TSCP/src/APP/ciapp/Overlap/OverlapDataManage.c +++ b/TSCP/src/APP/ciapp/Overlap/OverlapDataManage.c @@ -890,7 +890,10 @@ void CleanOverlapSpecificFlag(const UINT16 routeId, const UINT16 overlapId) } else { - if ((dwAtsLastTimeLockCyc < dwUnlockStartCycNum) && (0U < dwAtsLastTimeLockCyc)) + atsExpLockOverlapId = GetRouteAtsExpLkOverlapId(routeId); + + if ((dwAtsLastTimeLockCyc <= dwUnlockStartCycNum) && (0U < dwAtsLastTimeLockCyc) + && (overlapId == atsExpLockOverlapId)) { /*ATSһ·ձʱδԶ*/ SetRouteAtsExpLkOverlapId(routeId, 0U); diff --git a/TSCP/src/APP/ciapp/PSD/PSDConfigDataManage.h b/TSCP/src/APP/ciapp/PSD/PSDConfigDataManage.h index 3c1143e..caa656a 100644 --- a/TSCP/src/APP/ciapp/PSD/PSDConfigDataManage.h +++ b/TSCP/src/APP/ciapp/PSD/PSDConfigDataManage.h @@ -43,7 +43,7 @@ typedef struct S_PsdConfigDataStruct UINT16 OpenFourEditGroupDriveRelayId; /*ıŵ̵(ֶ)*/ UINT16 OpenSixEditGroupDriveRelayId; /*ŵ̵(ֶ)*/ UINT16 OpenEightEditGroupDriveRelayId; /*򿪰˱ŵ̵(ֶ)*/ - UINT16 DoorStateRelayId; /*ſɼ̵ID (ֶ)*/ + UINT16 DoorStateRelayId; /*ſɼ̵ID (ֶ)*/ UINT16 wDoorStateRelayId2; /*ſɼ̵ID2(ֶ) ˹*/ UINT16 wRelayDoorButtonId; /*ٹŰť̵*/ UINT16 doorReopenRelayId; /*վ̨ٴοż̵*/ diff --git a/TSCP/src/APP/ciapp/PSD/PSDDefine.h b/TSCP/src/APP/ciapp/PSD/PSDDefine.h index ebc91b0..ccb324b 100644 --- a/TSCP/src/APP/ciapp/PSD/PSDDefine.h +++ b/TSCP/src/APP/ciapp/PSD/PSDDefine.h @@ -17,7 +17,7 @@ /*ֵ*/ -#define PSD_SUM_MAX ((UINT16)90U) /*ֵ*/ +#define PSD_SUM_MAX ((UINT16)150U) /*ֵ*/ /*Źijվ·Ŀֵ*/ #define RALATED_OUT_STATION_ROUTE_SUM_MAX ((UINT16)10U) /*Źijվ·Ŀֵ*/ diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackAtsData.c b/TSCP/src/APP/ciapp/ParsePack/ParsePackAtsData.c index b78bdd7..72da56d 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackAtsData.c +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackAtsData.c @@ -2065,7 +2065,7 @@ UINT16 TransCiToAtsSwitchZzjInfo(OcToATSSwitchZzjData* ciSendAtsSwitchZzjData, U } else { - /*ûĿת޻״̬Ϊ*/ + /*ûĿת޻״̬Ϊ*/ ciSendAtsSwitchZzjData[wSwitchNum].szSwitchIncldeZzjState[jj] = OC_TO_ATS_SWITCH_ZZJ_ALARM; } } diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackCiData.c b/TSCP/src/APP/ciapp/ParsePack/ParsePackCiData.c index 0b2f1f5..4700a84 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackCiData.c +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackCiData.c @@ -7902,7 +7902,8 @@ static UINT8 ParseSwitchPacket(const UINT8 *pInputData, UINT16 *pItemLen,const U SetSwitchCurPosition(switchId, SWITCH_POSITION_SIKAI); break; default: - /*ɴ֧*/ + SetSingleSwitchCurPosition(switchId, SWITCH_POSITION_SIKAI); + SetSwitchCurPosition(switchId, SWITCH_POSITION_SIKAI); /*Ŀ*/ break; } switch (yLockState) @@ -7914,7 +7915,7 @@ static UINT8 ParseSwitchPacket(const UINT8 *pInputData, UINT16 *pItemLen,const U SetSwitchYLockState(switchId, SWITCH_LOCK_YINZONG_YES); /*״̬*/ break; default: - /*ɴ֧*/ + SetSwitchYLockState(switchId, SWITCH_LOCK_YINZONG_NO); /*δ*/ break; } switch (dLockState) @@ -7926,7 +7927,7 @@ static UINT8 ParseSwitchPacket(const UINT8 *pInputData, UINT16 *pItemLen,const U SetOtherCiSwitchLockStatus(switchId, SWITCH_LOCK_STATUS_DANSUO); /*״̬*/ break; default: - /*ɴ֧*/ + SetOtherCiSwitchLockStatus(switchId, SWITCH_LOCK_STATUS_NO); /*δ״̬*/ break; } switch (fLockState) @@ -7938,7 +7939,7 @@ static UINT8 ParseSwitchPacket(const UINT8 *pInputData, UINT16 *pItemLen,const U SetSwitchFLockState(switchId, SWITCH_LOCK_FENGSUO_YES); /*״̬*/ break; default: - /*ɴ֧*/ + SetSwitchFLockState(switchId, SWITCH_LOCK_FENGSUO_NO); /*δ״̬*/ break; } } @@ -8042,9 +8043,11 @@ static UINT8 PackSwitchPacket(UINT8 *pInputBuf, UINT16 *pItemLen,const UINT8 dst switch (dLockState) { case SWITCH_LOCK_STATUS_NO: + case SWITCH_LOCK_STATUS_PROTECT: *(pInputBuf + packedLen) = *(pInputBuf + packedLen) | ((UINT8)(BIT_VAL_00000001B << 4u));/*δ״̬*/ break; case SWITCH_LOCK_STATUS_DANSUO: + case SWITCH_LOCK_STATUS_DAP: *(pInputBuf + packedLen) = *(pInputBuf + packedLen) | ((UINT8)(BIT_VAL_00000010B << 4u));/*״̬*/ break; default: @@ -8183,7 +8186,8 @@ static UINT8 ParsePhySecPacket(const UINT8 *pInputData, UINT16 *pItemLen,const U SetPhySecCurMergeState(phySectionId, SECTION_OCCUPY_NO); break; default: - /*ɴ֧*/ + SetPhySecCurOccupyState(phySectionId, SECTION_OCCUPY_YES); + SetPhySecCurMergeState(phySectionId, SECTION_OCCUPY_YES); break; } @@ -8225,7 +8229,8 @@ static UINT8 ParsePhySecPacket(const UINT8 *pInputData, UINT16 *pItemLen,const U SetPhyContainAxisSecArbState(phySectionId, AXIS_SECTION_ARB_NO); break; default: - /*ɴ֧*/ + SetPhySecArbState(phySectionId, AXIS_SECTION_ARB_NO); + SetPhyContainAxisSecArbState(phySectionId, AXIS_SECTION_ARB_NO); break; } @@ -8239,7 +8244,7 @@ static UINT8 ParsePhySecPacket(const UINT8 *pInputData, UINT16 *pItemLen,const U (void)SetPhySecFLockState(phySectionId, PHYSICAL_SECTION_FLOCK_NO); break; default: - /*ɴ֧*/ + (void)SetPhySecFLockState(phySectionId, PHYSICAL_SECTION_FLOCK_YES); break; } @@ -8256,7 +8261,7 @@ static UINT8 ParsePhySecPacket(const UINT8 *pInputData, UINT16 *pItemLen,const U directionState = CI_SYSTEM_DIRECTION_NONE; break; default: - /*ɴ֧*/ + directionState = CI_SYSTEM_DIRECTION_NONE;/*ɴ֧*/ break; } @@ -8409,41 +8414,41 @@ static UINT8 PackPhySecPacket(UINT8 *pInputBuf, UINT16 *pItemLen, const UINT8 ds } /*״̬*/ - if (PhySecLockState == PHYSICAL_SECTION_LOCK_EXCEPT) + if (PHYSICAL_SECTION_LOCK_EXCEPT == PhySecLockState) {/*ι*/ *(pInputBuf + packedLen) = *(pInputBuf + packedLen) | ((UINT8)(BIT_VAL_00000010B << 6u)); } else { *(pInputBuf + packedLen) = *(pInputBuf + packedLen) | ((UINT8)(BIT_VAL_00000001B << 6u)); /*δ*/ - switch (PhySecLockState) - { - case PHYSICAL_SECTION_LOCK_PROTECT: /*ֻб*/ - *(pInputBuf + packedLen) = *(pInputBuf + packedLen) | ((UINT8)(BIT_VAL_00000010B << 4u)); - *(pInputBuf + packedLen) = *(pInputBuf + packedLen) | ((UINT8)(BIT_VAL_00000001B << 2u)); - break; - case PHYSICAL_SECTION_LOCK_NO: /*δ*/ - *(pInputBuf + packedLen) = *(pInputBuf + packedLen) | ((UINT8)(BIT_VAL_00000001B << 4u)); - *(pInputBuf + packedLen) = *(pInputBuf + packedLen) | ((UINT8)(BIT_VAL_00000001B << 2u)); - break; - case PHYSICAL_SECTION_LOCK_NORMAL: - if (0U != GetPhySecPLockBelongRouteId(phySectionId)) - {/*ͬʱڽ·պͱ*/ - *(pInputBuf + packedLen) = *(pInputBuf + packedLen) | ((UINT8)(BIT_VAL_00000010B << 4u)); - *(pInputBuf + packedLen) = *(pInputBuf + packedLen) | ((UINT8)(BIT_VAL_00000010B << 2u)); - } - else - {/**/ - *(pInputBuf + packedLen) = *(pInputBuf + packedLen) | ((UINT8)(BIT_VAL_00000001B << 4u)); - *(pInputBuf + packedLen) = *(pInputBuf + packedLen) | ((UINT8)(BIT_VAL_00000010B << 2u)); - } - break; - default: - /*ɴ֧*/ - break; - } } - + switch (PhySecLockState) + { + case PHYSICAL_SECTION_LOCK_PROTECT: /*ֻб*/ + *(pInputBuf + packedLen) = *(pInputBuf + packedLen) | ((UINT8)(BIT_VAL_00000010B << 4u)); + *(pInputBuf + packedLen) = *(pInputBuf + packedLen) | ((UINT8)(BIT_VAL_00000001B << 2u)); + break; + case PHYSICAL_SECTION_LOCK_NO: /*δ*/ + *(pInputBuf + packedLen) = *(pInputBuf + packedLen) | ((UINT8)(BIT_VAL_00000001B << 4u)); + *(pInputBuf + packedLen) = *(pInputBuf + packedLen) | ((UINT8)(BIT_VAL_00000001B << 2u)); + break; + case PHYSICAL_SECTION_LOCK_NORMAL: + case PHYSICAL_SECTION_LOCK_DELAY: /*ʱ*/ + if (0U != GetPhySecPLockBelongRouteId(phySectionId)) + {/*ͬʱڽ·պͱ*/ + *(pInputBuf + packedLen) = *(pInputBuf + packedLen) | ((UINT8)(BIT_VAL_00000010B << 4u)); + *(pInputBuf + packedLen) = *(pInputBuf + packedLen) | ((UINT8)(BIT_VAL_00000010B << 2u)); + } + else + {/**/ + *(pInputBuf + packedLen) = *(pInputBuf + packedLen) | ((UINT8)(BIT_VAL_00000001B << 4u)); + *(pInputBuf + packedLen) = *(pInputBuf + packedLen) | ((UINT8)(BIT_VAL_00000010B << 2u)); + } + break; + default: + /*ɴ֧*/ + break; + } /*ARB״̬*/ switch (arbState) @@ -8589,7 +8594,7 @@ static UINT8 ParseLogSecPacket(const UINT8 *pInputData, UINT16 *pItemLen,const U if (localCiId != belongCiId) { - sectionOccupyState = (dataBuf1 & BIT_MASK_00000011B); /*ռ״̬*/ + sectionOccupyState = (dataBuf1 & BIT_MASK_00000011B); /*ռ״̬*/ sectionRouteLockState = ((dataBuf1 >> 2u) & BIT_MASK_00000011B); /*ν·״̬*/ protectionLockState = ((dataBuf1 >> 4u)& BIT_MASK_00000011B); /*α״̬*/ lockDirection = ((dataBuf1 >> 6u) & BIT_MASK_00000011B); /*շ*/ @@ -8612,11 +8617,12 @@ static UINT8 ParseLogSecPacket(const UINT8 *pInputData, UINT16 *pItemLen,const U SetLogSecCurOccupyState(logSecId, LOGICSECTION_OCCUPY_NO);/**/ break; default: - /*ɴ֧*/ + SetLogSecPreOccupyState(logSecId, GetLogSecCurCtOrUtOccupyState(logSecId));/*߼֮ǰռ״̬*/ + SetLogSecCurOccupyState(logSecId, LOGICSECTION_OCCUPY_UT);/*CBTCռ*/ break; } - SetLogSecLinShiXianSuState(logSecId, LOGSEC_LSXS_SET_STATE_NO); + /*ν·״̬*/ switch (sectionRouteLockState) @@ -8658,6 +8664,7 @@ static UINT8 ParseLogSecPacket(const UINT8 *pInputData, UINT16 *pItemLen,const U lockDirection = CI_SYSTEM_DIRECTION_NONE; break; default: + lockDirection = CI_SYSTEM_DIRECTION_NONE;/*쳣ֵΪշ*/ break; } @@ -9058,7 +9065,7 @@ static UINT8 ParseSignalPacket(const UINT8 *pInputData, UINT16 *pItemLen,const U sigExtStat = SIGNAL_LIGHT_EXTICT_STATE_YES; /*źŻ*/ break; default: - /*ɴ֧*/ + sigExtStat = SIGNAL_LIGHT_EXTICT_STATE_YES; /*źŻ*/ break; } @@ -9120,7 +9127,7 @@ static UINT8 ParseSignalPacket(const UINT8 *pInputData, UINT16 *pItemLen,const U SetSignalFLockState(signalId, SIGNAL_FENGSUO_NO); /*źŻδ*/ break; default: - /*ɴ֧*/ + SetSignalFLockState(signalId, SIGNAL_FENGSUO_NO); /*źŻδ*/ break; } @@ -9168,6 +9175,7 @@ static UINT8 ParseSignalPacket(const UINT8 *pInputData, UINT16 *pItemLen,const U SetSignalPLockCommand(signalId, SIGNAL_PLOCK_CMD_NONE); break; default: + SetSignalPLockCommand(signalId, SIGNAL_PLOCK_CMD_NONE); break; } } @@ -9220,7 +9228,9 @@ static UINT8 PackSignalPacket(UINT8 *pInputBuf, UINT16 *pItemLen, const UINT8 ds UINT16 sigOutSec = 0u;/*źŻⷽ*/ UINT16 sigOutSecCi = 0u;/*źŻⷽCI*/ UINT8 sigDsBreakFlag = 0u; /*źŻ˿־*/ - + UINT16 wSigInFirstPhySec = 0U; + UINT16 wLockBelongRoute = 0U; + UINT8 chRouteState = 0U; pTmpCiTransInfo = GetDstCiTransInfo(dstCiId); localCi = GetSystemParaLocalCiId(); /*ȡID*/ @@ -9311,6 +9321,19 @@ static UINT8 PackSignalPacket(UINT8 *pInputBuf, UINT16 *pItemLen, const UINT8 ds default: break; } + /*źŻӽ״̬*/ + wSigInFirstPhySec = GetSignalInFirstLockedPhySecId(signalId); + wLockBelongRoute = GetPhySecRLockBelongRouteId(wSigInFirstPhySec); + chRouteState = GetRouteState(wLockBelongRoute);/*·״̬ӽӽ쳣ӽʱӽ*/ + + if ((ROUTE_STATE_NEAR_LOCK == chRouteState) || (ROUTE_STATE_NEAR_LOCKERR == chRouteState) ||(ROUTE_STATE_NEAR_OPEN == chRouteState)) + { + *(pInputBuf + packedLen + 1U) = *(pInputBuf + packedLen + 1U) | ((UINT8)(BIT_VAL_00000001B << 4U)); + } + else + { + *(pInputBuf + packedLen + 1U) = *(pInputBuf + packedLen + 1U) | ((UINT8)(BIT_VAL_00000010B << 4U)); + } /*źŻ,Ч*/ *(pInputBuf + packedLen + 1) = *(pInputBuf + packedLen + 1) | ((UINT8)(BIT_VAL_00000000B << 6u)); @@ -9476,7 +9499,7 @@ static UINT8 ParsePsdPacket(const UINT8 *pInputData, UINT16 *pItemLen,const UINT (void)SetPsdState(psdId, PSD_STATE_CLOSE); break; default: - /*ɴ֧*/ + (void)SetPsdState(psdId, PSD_STATE_OPEN); break; } @@ -9492,7 +9515,7 @@ static UINT8 ParsePsdPacket(const UINT8 *pInputData, UINT16 *pItemLen,const UINT (void)SetPsdMutualLockRemoveState(psdId, PSD_MUTUALLOCK_REMOVE_YES); break; default: - /*ɴ֧*/ + (void)SetPsdMutualLockRemoveState(psdId, PSD_MUTUALLOCK_REMOVE_NO); break; } } @@ -9709,7 +9732,7 @@ static UINT8 ParseEmbtnPacket(const UINT8 *pInputData, UINT16 *pItemLen,const UI (void)SetEsbState(esbId, ESB_STATE_VALID_NO); break; default: - /*ɴ֧*/ + (void)SetEsbState(esbId, ESB_STATE_VALID_NO); break; } } @@ -10086,6 +10109,7 @@ static UINT8 ParseFloodGatePacket(const UINT8 *pInputData, UINT16 *pItemLen, con SetFloodGateCurOpenLockState(wFloodGateId, FLOOD_GATE_NOT_OPENLOCK); /*ù*/ break; default: + SetFloodGateCurOpenLockState(wFloodGateId, FLOOD_GATE_NOT_OPENLOCK); /*ù*/ break; } @@ -10099,6 +10123,7 @@ static UINT8 ParseFloodGatePacket(const UINT8 *pInputData, UINT16 *pItemLen, con SetFloodGateCurCloseRequestSta(wFloodGateId, FLOOD_GATE_NOT_CLOSEREQ); /*޹*/ break; default: + SetFloodGateCurCloseRequestSta(wFloodGateId, FLOOD_GATE_NOT_CLOSEREQ); /*޹*/ break; } @@ -10112,6 +10137,7 @@ static UINT8 ParseFloodGatePacket(const UINT8 *pInputData, UINT16 *pItemLen, con SetFloodGateCurAgreeCloseSta(wFloodGateId, FLOOD_GATE_NOT_AGREE_CLOSE); /*ò*/ break; default: + SetFloodGateCurAgreeCloseSta(wFloodGateId, FLOOD_GATE_NOT_AGREE_CLOSE); /*ò*/ break; } } @@ -10252,23 +10278,20 @@ static UINT8 ParseStartLockPacket(const UINT8* pInputData, UINT16* pItemLen, con UINT8 retValue = CI_ERROR; UINT16 phySecId = 0u; /*ID*/ UINT16 ii = 0u; /*α*/ - UINT16 bufIndex = 0u; /*±*/ UINT8 StartLockState = 0u; /*ϵ״̬*/ UINT8 localCiId = 0u; UINT16 wLogSecId = 0u; /*߼ID*/ UINT8 cSecBelongCiId = 0U; const CiTransmitStruct* pCiRecptStru = NULL; UINT16 parsedLen = 0u; - LogicSectionDataStruct* pstrLogSecData = NULL; - PhysicalSectionDataStruct* tmpPhysicalSectionDataStru = GetPhySecData(); localCiId = GetSystemParaLocalCiId(); pCiRecptStru = GetSrcCiTransInfo(srcCiId); - pstrLogSecData = GetLogicSecData(); + deviceSum = *(pInputData + parsedLen); parsedLen += 1u; - if ((NULL == pCiRecptStru) || (NULL == tmpPhysicalSectionDataStru) || (NULL == pstrLogSecData)) + if ((NULL == pCiRecptStru)) { *pItemLen = 0u; retValue = CI_ERROR; /*ݻȡʧ*/ @@ -10284,9 +10307,7 @@ static UINT8 ParseStartLockPacket(const UINT8* pInputData, UINT16* pItemLen, con cSecBelongCiId = GetPhySecBelongCiId(phySecId); if (cSecBelongCiId == srcCiId) { - bufIndex = GetPhySecConfigBufIndex(phySecId); - tmpPhysicalSectionDataStru[bufIndex].PhysicalSectionId = phySecId; - + switch (StartLockState) { case HLHT_STARTLOCK_SET_NO: @@ -10299,7 +10320,7 @@ static UINT8 ParseStartLockPacket(const UINT8* pInputData, UINT16* pItemLen, con SetPhySecPLockRouteIdHlht(phySecId, 0u); break; default: - /*ɴ֧*/ + /*ɴ֧-ϵ֡ʱԤ*/ break; } } @@ -10315,9 +10336,6 @@ static UINT8 ParseStartLockPacket(const UINT8* pInputData, UINT16* pItemLen, con cSecBelongCiId = GetLogSecBelongCiId(wLogSecId); if (cSecBelongCiId == srcCiId) { - bufIndex = GetlogSectionBufIndex(wLogSecId); - pstrLogSecData[bufIndex].LogicSectionId = wLogSecId; - switch (StartLockState) { case HLHT_STARTLOCK_SET_NO: @@ -10429,9 +10447,9 @@ static UINT8 ParseTSRPacket(const UINT8 *pInputData, UINT16 *pItemLen,const UINT chDeviceSum = *pInputData; wParsedLen += 1U; - if (chDeviceSum == (UINT8)pCiRecptStru->logicSecNum) + if (chDeviceSum == (UINT8)pCiRecptStru->wXianSuLogSecNum) { - for (wLogSecIndex = 0U; wLogSecIndex < pCiRecptStru->logicSecNum; wLogSecIndex++) + for (wLogSecIndex = 0U; wLogSecIndex < pCiRecptStru->wXianSuLogSecNum; wLogSecIndex++) { wInxRem = wLogSecIndex % TSR_NUM_PER_BYTE; @@ -10448,7 +10466,7 @@ static UINT8 ParseTSRPacket(const UINT8 *pInputData, UINT16 *pItemLen,const UINT ; } - wLogSecId = pCiRecptStru->logicSecIdBuf[wLogSecIndex]; + wLogSecId = pCiRecptStru->wXianSuLogSecBuf[wLogSecIndex]; chLogSecBelCiId = GetLogSecBelongCiId(wLogSecId); if (chLocalCiId != chLogSecBelCiId) @@ -10469,7 +10487,7 @@ static UINT8 ParseTSRPacket(const UINT8 *pInputData, UINT16 *pItemLen,const UINT SetLogSecLinShiXianSuState(wLogSecId, LOGSEC_LSXS_SET_STATE_NO); break; default: - /*ɴ֧*/ + SetLogSecLinShiXianSuState(wLogSecId, LOGSEC_LSXS_SET_STATE_INVALID);/*쳣Ч*/ break; } } @@ -10525,7 +10543,7 @@ static UINT8 PackTSRPacket(UINT8 *pInputBuf, UINT16 *pItemLen, const UINT8 dstCi chLocalCi = GetSystemParaLocalCiId(); wPackedLen += 1U; - for (wLogSecIndex = 0U; wLogSecIndex < pTmpCiTransInfo->logicSecNum; wLogSecIndex++) + for (wLogSecIndex = 0U; wLogSecIndex < pTmpCiTransInfo->wXianSuLogSecNum; wLogSecIndex++) { wInxRem = wLogSecIndex % TSR_NUM_PER_BYTE; @@ -10542,7 +10560,7 @@ static UINT8 PackTSRPacket(UINT8 *pInputBuf, UINT16 *pItemLen, const UINT8 dstCi ; } - wLogSecId = pTmpCiTransInfo->logicSecIdBuf[wLogSecIndex]; + wLogSecId = pTmpCiTransInfo->wXianSuLogSecBuf[wLogSecIndex]; chLogSecBelCiId = GetLogSecBelongCiId(wLogSecId); if (chLocalCi == chLogSecBelCiId) { @@ -10572,7 +10590,7 @@ static UINT8 PackTSRPacket(UINT8 *pInputBuf, UINT16 *pItemLen, const UINT8 dstCi } } - pInputBuf[0] = pTmpCiTransInfo->logicSecNum; + pInputBuf[0] = (UINT8)pTmpCiTransInfo->wXianSuLogSecNum; /*ӿഫ1ֽ*/ *pItemLen = wPackedLen; retValue = CI_SUCCESS; } @@ -10748,10 +10766,10 @@ static UINT8 PackCiPacketCont(UINT8 *pInputData, UINT16 *pOverallLen, const UINT } break; case START_LOCK_STATUS_PACKET: - dataIsAvail = CI_TRUE; + dataIsAvail = CI_FALSE; /*ͨ΢ӿڲϵϢ֡20260507*/ break; case LINSHI_XIANSU_STATUS_PACKET: - if (0u != pTmpCiTransInfo->logicSecNum) + if (0u != pTmpCiTransInfo->wXianSuLogSecNum) { dataIsAvail = CI_TRUE; } @@ -10818,11 +10836,11 @@ static UINT8 PackCiPacketCont(UINT8 *pInputData, UINT16 *pOverallLen, const UINT packedLen += itemLen; break; case START_LOCK_STATUS_PACKET: - retVal &= PackStartLockPacket(pInputData + packedLen, &itemLen, dstCiId); /*ϵձ*/ + retVal &= PackStartLockPacket(pInputData + packedLen, &itemLen, dstCiId); /*ϵձ*/ packedLen += itemLen; break; case LINSHI_XIANSU_STATUS_PACKET: - retVal &= PackTSRPacket(pInputData + packedLen, &itemLen, dstCiId); /*ϵձ*/ + retVal &= PackTSRPacket(pInputData + packedLen, &itemLen, dstCiId); /*ʱٱ*/ packedLen += itemLen; break; case CITY_DEF_STATUS_PACKET: @@ -10957,7 +10975,7 @@ static UINT8 ParseCiPacketCont(const UINT8 *pInputData, const UINT16 overallLen, parsedLen += itemLen; break; case MANUFAC_DEF_STATUS_PACKET: - cRetVal &= ParseManufacDefPacket(pInputData + parsedLen, &itemLen, srcId); + cRetVal &= ParseManufacDefPacket(pInputData + parsedLen, &itemLen, srcId, packetLen); parsedLen += itemLen; break; default: @@ -11915,16 +11933,10 @@ UINT8 ParseCiToCiDataCheck(UINT8* dataBuf, UINT16 dataLength, UINT8* errNo, UINT /*η*/ if ((dataBuf != NULL) && (dataLength > 0U)) { - reVal = CI_SUCCESS; - - /*汾У ֹӿڰ汾һУʱԽ*/ - if (CI_SUCCESS == reVal) + reVal = CheckCiIDAndVer(dataBuf, &ii); + if (CI_ERROR == reVal) { - reVal = CheckCiIDAndVer(dataBuf, &ii); - if (CI_ERROR == reVal) - { - *errNo = 0U; - } + *errNo = 0U; } /*֡ͽУ*/ @@ -16937,7 +16949,7 @@ UINT8 CiToCiEnvelopeCheck(const UINT8* dataBuf, UINT16* index) /*гID*/ wTrainId = ShortFromChar(&dataBuf[ii]); ii += 2u; - if ((TRAIN_ID_MIN_IVOC <= wTrainId) && (TRAIN_ID_MAX_IVOC >= wTrainId)) + if ((TRAIN_ID_MIN_IVOC < wTrainId) && (TRAIN_ID_MAX_IVOC > wTrainId)) { retVal = CI_SUCCESS; } @@ -17139,7 +17151,7 @@ UINT8 CiToCiEnvelopeCheck(const UINT8* dataBuf, UINT16* index) cActivePort = dataBuf[ii++]; /*г*/ - if ((TRAIN_SUM_MAX >= envlopetrainID) + if ((TRAIN_SUM_MAX >= envlopetrainID)&&((UINT16)0UdestCiId) { /*Ľ·Ȼ·Ҫøݽ·*/ - pDestCiTransmitStru = GetDstCiTransInfo(pTmpCiTransmitStru->srcCiId); + pDestCiTransmitStru = GetDstCiTransInfo((UINT8)pTmpCiTransmitStru->srcCiId); if (NULL != pDestCiTransmitStru) { pDestCiTransmitStru->wNeedCheckSwitchStateRouteSum = 0U; @@ -19083,8 +19095,10 @@ UINT8 PackManufacDefPacket(UINT8* pInputBuf, UINT16* pItemLen, const UINT8 dstCi UINT16 wLockedRouteId = 0U; /*·ID*/ UINT8 chExiansuState = 0U; UINT8 chLockDir = 0U; /*շ*/ + UINT8 chDataType = 0U; + UINT8 chRelayDetain = 0U; pTmpCiTransInfo = GetDstCiTransInfo(dstCiId); - + chDataType = GetLocalPublicDataType(); if ((NULL != pInputBuf) && (NULL != pItemLen) && (NULL != pTmpCiTransInfo)) { /*鳧ԶϢ汾΢Ĭ0x01*/ @@ -19118,71 +19132,76 @@ UINT8 PackManufacDefPacket(UINT8* pInputBuf, UINT16* pItemLen, const UINT8 dstCi } wPackedInfoNum++; /*һϢ1*/ } - - /*ʱ*/ - for (ii = 0U; ii < pTmpCiTransInfo->logicSecNum; ii++) + if (DATA_TYPE_23_BRANCH == chDataType) { - cTempCounter = (UINT8)(wPackedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽڿɴ4Ϣ*/ - cBitOffset = cTempCounter * BIT_NUM_PER_DEV; - chExiansuState = GetLogSecEmergXianSu(pTmpCiTransInfo->logicSecIdBuf[ii]); - if (LOGSEC_EMERG_XS_SET_NO == chExiansuState) + /*3 ԶϢʱ١*/ + } + else + { + /*ʱ*/ + for (ii = 0U; ii < pTmpCiTransInfo->wXianSuLogSecNum; ii++) { - *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000010B << cBitOffset); /*ʱٹ:δýʱ*/ + cTempCounter = (UINT8)(wPackedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽڿɴ4Ϣ*/ + cBitOffset = cTempCounter * BIT_NUM_PER_DEV; + chExiansuState = GetLogSecEmergXianSu(pTmpCiTransInfo->wXianSuLogSecBuf[ii]); + if (LOGSEC_EMERG_XS_SET_NO == chExiansuState) + { + *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000010B << cBitOffset); /*ʱٹ:δýʱ*/ + } + else + { + *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000001B << cBitOffset); /*ʱٹ:ýʱ*/ + } + + + if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) + { + wPackedLen++; /*һֽڣȼ1*/ + } + else + { + /**/ + } + wPackedInfoNum++; /*һϢ1*/ } - else + /*״̬*/ + for (ii = 0U; ii < pTmpCiTransInfo->switchNum; ii++) { - *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000001B << cBitOffset); /*ʱٹ:ýʱ*/ + cTempCounter = (UINT8)(wPackedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽڿɴ4Ϣ*/ + cBitOffset = cTempCounter * BIT_NUM_PER_DEV; + + wDeviceId = pTmpCiTransInfo->switchIdBuf[ii]; + cDeviceState = GetSwitchLockStatus(wDeviceId); /*ȡ״̬*/ + if ((SWITCH_LOCK_STATUS_PROTECT == cDeviceState) || (SWITCH_LOCK_STATUS_DAP == cDeviceState)) + { + *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000001B << cBitOffset); /*з*/ + } + else + { + *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000010B << cBitOffset); /*޷*/ + } + + if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) + { + wPackedLen++; /*һֽڣȼ1*/ + } + else + { + /**/ + } + wPackedInfoNum++; /*һϢ1*/ } + } - - if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) - { - wPackedLen++; /*һֽڣȼ1*/ - } - else - { - /**/ - } - wPackedInfoNum++; /*һϢ1*/ - } - - /*״̬*/ - for (ii = 0U; ii < pTmpCiTransInfo->switchNum; ii++) - { - cTempCounter = (UINT8)(wPackedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽڿɴ4Ϣ*/ - cBitOffset = cTempCounter * BIT_NUM_PER_DEV; - - wDeviceId = pTmpCiTransInfo->switchIdBuf[ii]; - cDeviceState = GetSwitchLockStatus(wDeviceId); /*ȡ״̬*/ - if ((SWITCH_LOCK_STATUS_PROTECT == cDeviceState) || (SWITCH_LOCK_STATUS_DAP == cDeviceState)) - { - *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000001B << cBitOffset); /*з*/ - } - else - { - *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000010B << cBitOffset); /*޷*/ - } - - if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) - { - wPackedLen++; /*һֽڣȼ1*/ - } - else - { - /**/ - } - wPackedInfoNum++; /*һϢ1*/ - } - - /*״̬*/ - for (ii = 0U; ii < pTmpCiTransInfo->switchNum; ii++) + + /*״̬*/ + for (ii = 0U; ii < pTmpCiTransInfo->wSwitchPhySecNum; ii++) { /*CTռ״̬*/ cTempCounter = (UINT8)(wPackedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽڿɴ4Ϣ*/ cBitOffset = cTempCounter * BIT_NUM_PER_DEV; - wDeviceId = pTmpCiTransInfo->switchIdBuf[ii]; - wSwitchRelPhySecId = GetSwitchPhySectionId(wDeviceId); /*ȡID*/ + wSwitchRelPhySecId = pTmpCiTransInfo->wSwitchPhySecBuf[ii];; /*ȡID*/ cDeviceState = GetPhySecPreOccState(wSwitchRelPhySecId); /*ȡCT/UTռ״̬*/ if ((LOGICSECTION_OCCUPY_UT == cDeviceState) || (LOGICSECTION_OCCUPY_NO == cDeviceState)) { @@ -19397,63 +19416,70 @@ UINT8 PackManufacDefPacket(UINT8* pInputBuf, UINT16* pItemLen, const UINT8 dstCi wPackedInfoNum++; /*һϢ1*/ } - /*μԤλ״̬Ϊλ*/ - for (ii = 0U; ii < pTmpCiTransInfo->phySecNum; ii++) + if (DATA_TYPE_23_BRANCH == chDataType) { - cTempCounter = (UINT8)(wPackedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽڿɴ4Ϣ*/ - cBitOffset = cTempCounter * BIT_NUM_PER_DEV; - - wDeviceId = pTmpCiTransInfo->phySecIdBuf[ii]; - cDeviceState = GetPhySecPreResetState(wDeviceId); /*ȡμԤλ״̬*/ - - if (PHYSICAL_SECTION_PRE_RESET_YES == cDeviceState) - { - *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000010B << cBitOffset); /*Ԥλ״̵̬*/ - } - else - { - *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000001B << cBitOffset); /*Ԥλ״̵̬*/ - } - - if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) - { - wPackedLen++; /*һֽڣȼ1*/ - } - else - { - /**/ - } - wPackedInfoNum++; /*һϢ1*/ + /*3 ԶϢԤλźŻƶ˿״̬*/ } - - /*źŻƶ˿״̬*/ - for (ii = 0U; ii < pTmpCiTransInfo->signalNum; ii++) + else { - cTempCounter = (UINT8)(wPackedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽڿɴ4Ϣ*/ - cBitOffset = cTempCounter * BIT_NUM_PER_DEV; + /*μԤλ״̬Ϊλ*/ + for (ii = 0U; ii < pTmpCiTransInfo->phySecNum; ii++) + { + cTempCounter = (UINT8)(wPackedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽڿɴ4Ϣ*/ + cBitOffset = cTempCounter * BIT_NUM_PER_DEV; - wDeviceId = pTmpCiTransInfo->signalIdBuf[ii]; - cDeviceState = GetSignalBlueDsBreakFlag(wDeviceId); /*ȡźŻƶ˿״̬*/ + wDeviceId = pTmpCiTransInfo->phySecIdBuf[ii]; + cDeviceState = GetPhySecPreResetState(wDeviceId); /*ȡμԤλ״̬*/ - if (SIGNAL_DS_BREAK_NO == cDeviceState) - { - *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000010B << cBitOffset); /*δ˿*/ - } - else - { - *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000001B << cBitOffset); /*ƶ˿*/ - } + if (PHYSICAL_SECTION_PRE_RESET_YES == cDeviceState) + { + *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000010B << cBitOffset); /*Ԥλ״̵̬*/ + } + else + { + *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000001B << cBitOffset); /*Ԥλ״̵̬*/ + } - if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) - { - wPackedLen++; /*һֽڣȼ1*/ + if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) + { + wPackedLen++; /*һֽڣȼ1*/ + } + else + { + /**/ + } + wPackedInfoNum++; /*һϢ1*/ } - else + /*źŻƶ˿״̬*/ + for (ii = 0U; ii < pTmpCiTransInfo->signalNum; ii++) { - /**/ + cTempCounter = (UINT8)(wPackedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽڿɴ4Ϣ*/ + cBitOffset = cTempCounter * BIT_NUM_PER_DEV; + + wDeviceId = pTmpCiTransInfo->signalIdBuf[ii]; + cDeviceState = GetSignalBlueDsBreakFlag(wDeviceId); /*ȡźŻƶ˿״̬*/ + + if (SIGNAL_DS_BREAK_NO == cDeviceState) + { + *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000010B << cBitOffset); /*δ˿*/ + } + else + { + *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000001B << cBitOffset); /*ƶ˿*/ + } + + if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) + { + wPackedLen++; /*һֽڣȼ1*/ + } + else + { + /**/ + } + wPackedInfoNum++; /*һϢ1*/ } - wPackedInfoNum++; /*һϢ1*/ - } + } + /*źŻ۳״̬Ŀ۳ͳվ۳*/ for (ii = 0U; ii < pTmpCiTransInfo->signalNum; ii++) @@ -19488,14 +19514,30 @@ UINT8 PackManufacDefPacket(UINT8* pInputBuf, UINT16* pItemLen, const UINT8 dstCi cBitOffset = cTempCounter * BIT_NUM_PER_DEV; cDeviceState = GetSignalLocalDetainFlag(wDeviceId); /*ȡźŻվ۳״̬*/ - if (SIGNAL_XIANDI_DETAIN_NO == cDeviceState) + chRelayDetain = GetSignalRelayDetainFlag(wDeviceId); /*ȡźŻӲ߿۳״̬*/ + if (DATA_TYPE_23_BRANCH == chDataType) { - *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000010B << cBitOffset); /*ڿ۳*/ + if (SIGNAL_RELAY_DETAIN_NO == chRelayDetain) + { + *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000010B << cBitOffset); /*ڿ۳*/ + } + else + { + *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000001B << cBitOffset); /*ڿ۳*/ + } } else { - *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000001B << cBitOffset); /*ڿ۳*/ + if (SIGNAL_XIANDI_DETAIN_NO == cDeviceState) + { + *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000010B << cBitOffset); /*ڿ۳*/ + } + else + { + *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000001B << cBitOffset); /*ڿ۳*/ + } } + if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) { @@ -19533,11 +19575,12 @@ UINT8 PackManufacDefPacket(UINT8* pInputBuf, UINT16* pItemLen, const UINT8 dstCi * ˵const UINT8 *pInputData ָ * UINT16 *pItemLen еij * const UINT8 srcCiId ԴID +* const UINT16 packetLen ij * ֵCI_SUCCESS 1 ɹ * CI_ERROR 0 ʧ * Created By LQ 2025.05.26 */ -UINT8 ParseManufacDefPacket(const UINT8* pInputData, UINT16* pItemLen, const UINT8 srcCiId) +UINT8 ParseManufacDefPacket(const UINT8* pInputData, UINT16* pItemLen, const UINT8 srcCiId, const UINT16 packetLen) { UINT8 cRetVal = CI_ERROR; UINT8 cLocalCiId = 0U; @@ -19572,6 +19615,9 @@ UINT8 ParseManufacDefPacket(const UINT8* pInputData, UINT16* pItemLen, const UIN UINT8 cSwitchPhyUpLockDir = 0U; /*շ*/ UINT8 cSwitchPhyDownLockDir = 0U; /*շ*/ UINT8 cSwitchPhyLockDir = 0U; /*շ*/ + UINT8 chDataType = 0U; + UINT8 chSwitchLockState = 0U; + cLocalCiId = GetSystemParaLocalCiId(); pCiRecptStru = GetSrcCiTransInfo(srcCiId); /*ȡԴӦĽṹ*/ pstrAutoRouteData = GetAutoRouteDataStr(); /*ȡԶ·̬ݽṹ*/ @@ -19579,7 +19625,7 @@ UINT8 ParseManufacDefPacket(const UINT8* pInputData, UINT16* pItemLen, const UIN pstrSwitchData = GetSwitchData(); /*ȡ̬ݽṹ*/ pstrPhySecData = GetPhySecData(); /*ȡζ̬ݽṹ*/ pstrSignalData = GetSignalData(); /*ȡźŻ̬ݽṹ*/ - + chDataType = GetLocalPublicDataType(); /*ݰ汾Ϣ*/ if ((NULL !=pInputData) && (NULL != pItemLen) && (NULL != pCiRecptStru) && (0U != cLocalCiId) && (NULL != pstrAutoRouteData) && (NULL != pstrLogSecData) && (NULL != pstrSwitchData) && (NULL != pstrPhySecData) && (NULL != pstrSignalData)) { @@ -19616,9 +19662,8 @@ UINT8 ParseManufacDefPacket(const UINT8* pInputData, UINT16* pItemLen, const UIN } else { + SetAutoRouteSetFlag(wDevId, AUTO_ROUTE_SET_NO); /*Զ·δ*/ debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: AutoRoute Id[%d] State Error", srcCiId, wDevId); - cRetVal = CI_ERROR; /*Ϣ쳣ʧ*/ - break; } } else @@ -19637,15 +19682,15 @@ UINT8 ParseManufacDefPacket(const UINT8* pInputData, UINT16* pItemLen, const UIN wParsedInfoNum++; /*һϢ1*/ } - /*ʱϢ*/ - if (CI_SUCCESS == cRetVal) + /*ʱϢ ע3*/ + if (DATA_TYPE_23_BRANCH != chDataType) { - for (ii = 0U; ii < pCiRecptStru->logicSecNum; ii++) + for (ii = 0U; ii < pCiRecptStru->wXianSuLogSecNum; ii++) { cTempCounter = (UINT8)(wParsedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽ4Ϣ*/ cBitOffset = cTempCounter * BIT_NUM_PER_DEV; - wDevId = pCiRecptStru->logicSecIdBuf[ii]; + wDevId = pCiRecptStru->wXianSuLogSecBuf[ii]; cDevBelongCiId = GetLogSecBelongCiId(wDevId); /*ȡ߼*/ if ((cLocalCiId != cDevBelongCiId) && (0U != cDevBelongCiId)) { @@ -19667,9 +19712,8 @@ UINT8 ParseManufacDefPacket(const UINT8* pInputData, UINT16* pItemLen, const UIN } else { - debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: LogSec Id[%d] Urgent Tsr Error", srcCiId, wDevId); - cRetVal = CI_ERROR; /*Ϣ쳣ʧ*/ - break; + SetLogEmergXianSuOtherCi(wDevId, LOGSEC_EMERG_XS_SET_NO); + debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: LogSec Id[%d] Urgent Tsr Error", srcCiId, wDevId); } } else @@ -19690,11 +19734,11 @@ UINT8 ParseManufacDefPacket(const UINT8* pInputData, UINT16* pItemLen, const UIN } else { - cRetVal = CI_ERROR; + /**/ } - /*Ϣ*/ - if (CI_SUCCESS == cRetVal) + /*Ϣ ע3*/ + if (DATA_TYPE_23_BRANCH != chDataType) { for (ii = 0U; ii < pCiRecptStru->switchNum; ii++) { @@ -19711,19 +19755,44 @@ UINT8 ParseManufacDefPacket(const UINT8* pInputData, UINT16* pItemLen, const UIN cDevInfo = *(pInputData + wParsedLen); /*ֽڴ洢ĵϢ*/ cDevState = (cDevInfo >> cBitOffset) & BIT_MASK_00000011B; + + chSwitchLockState = GetSwitchLockStatus(wDevId); if (BIT_VAL_00000001B == cDevState) - { - SetHlhtCiSwitchPlockStatus(wDevId, SWITCH_LOCK_STATUS_PROTECT); /*õз*/ + { + if (SWITCH_LOCK_STATUS_DANSUO == chSwitchLockState) + { + SetHlhtCiSwitchPlockStatus(wDevId, SWITCH_LOCK_STATUS_DAP); /*õҷ*/ + } + else + { + SetHlhtCiSwitchPlockStatus(wDevId, SWITCH_LOCK_STATUS_PROTECT); /*õ*/ + } + } else if (BIT_VAL_00000010B == cDevState) { - SetHlhtCiSwitchPlockStatus(wDevId, SWITCH_LOCK_STATUS_NO); /*õ޷*/ + if (SWITCH_LOCK_STATUS_DANSUO == chSwitchLockState) + { + /**/ + } + else + { + SetHlhtCiSwitchPlockStatus(wDevId, SWITCH_LOCK_STATUS_NO); /*õ޷*/ + } + } else { - debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: Switch Id[%d] PLock Error", srcCiId, wDevId); - cRetVal = CI_ERROR; /*Ϣ쳣ʧ*/ - break; + if (SWITCH_LOCK_STATUS_DANSUO == chSwitchLockState) + { + /**/ + } + else + { + SetHlhtCiSwitchPlockStatus(wDevId, SWITCH_LOCK_STATUS_NO); /*õ޷*/ + } + + debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: Switch Id[%d] PLock Error", srcCiId, wDevId); } } @@ -19745,394 +19814,379 @@ UINT8 ParseManufacDefPacket(const UINT8* pInputData, UINT16* pItemLen, const UIN } else { - cRetVal = CI_ERROR; + /**/ } /*״̬Ϣ*/ - if (CI_SUCCESS == cRetVal) + for (ii = 0U; ii < pCiRecptStru->wSwitchPhySecNum; ii++) { - for (ii = 0U; ii < pCiRecptStru->switchNum; ii++) + /*ȷCTռ״̬*/ + cTempCounter = (UINT8)(wParsedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽ4Ϣ*/ + cBitOffset = cTempCounter * BIT_NUM_PER_DEV; + cDevInfo = *(pInputData + wParsedLen); /*ֽڴ洢ĵϢ*/ + cDevState = (cDevInfo >> cBitOffset) & BIT_MASK_00000011B; + if (BIT_VAL_00000010B == cDevState) { - /*ȷCTռ״̬*/ - cTempCounter = (UINT8)(wParsedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽ4Ϣ*/ - cBitOffset = cTempCounter * BIT_NUM_PER_DEV; - cDevInfo = *(pInputData + wParsedLen); /*ֽڴ洢ĵϢ*/ - cDevState = (cDevInfo >> cBitOffset) & BIT_MASK_00000011B; - if (BIT_VAL_00000010B == cDevState) - { - cPhySecCtOcc = LOGICSECTION_OCCUPY_NO; /**/ - } - else if (BIT_VAL_00000001B == cDevState) - { - cPhySecCtOcc = LOGICSECTION_OCCUPY_CT; /*CTռ*/ - } - else - { - debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: Switch Id[%d] CT Occ Error", srcCiId, pCiRecptStru->switchIdBuf[ii]); - cRetVal = CI_ERROR; /*Ϣ쳣ʧ*/ - } + cPhySecCtOcc = LOGICSECTION_OCCUPY_NO; /**/ + } + else if (BIT_VAL_00000001B == cDevState) + { + cPhySecCtOcc = LOGICSECTION_OCCUPY_CT; /*CTռ*/ + } + else + { + cPhySecCtOcc = LOGICSECTION_OCCUPY_NO; /**/ + debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: Switch Id[%d] CT Occ Error", srcCiId, pCiRecptStru->switchIdBuf[ii]); + } - if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) - { - wParsedLen++; /*һֽڣȼ1*/ - } - else - { - /**/ - } - wParsedInfoNum++; /*һϢ1*/ + if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) + { + wParsedLen++; /*һֽڣȼ1*/ + } + else + { + /**/ + } + wParsedInfoNum++; /*һϢ1*/ - /*ȷUTռ״̬*/ - cTempCounter = (UINT8)(wParsedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽ4Ϣ*/ - cBitOffset = cTempCounter * BIT_NUM_PER_DEV; - cDevInfo = *(pInputData + wParsedLen); /*ֽڴ洢ĵϢ*/ - cDevState = (cDevInfo >> cBitOffset) & BIT_MASK_00000011B; - if (BIT_VAL_00000010B == cDevState) - { - cPhySecUtOcc = LOGICSECTION_OCCUPY_NO; /**/ - } - else if (BIT_VAL_00000001B == cDevState) - { - cPhySecUtOcc = LOGICSECTION_OCCUPY_UT; /*UTռ*/ - } - else - { - debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: Switch Id[%d] UT Occ Error", srcCiId, pCiRecptStru->switchIdBuf[ii]); - cRetVal = CI_ERROR; /*Ϣ쳣ʧ*/ - } + /*ȷUTռ״̬*/ + cTempCounter = (UINT8)(wParsedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽ4Ϣ*/ + cBitOffset = cTempCounter * BIT_NUM_PER_DEV; + cDevInfo = *(pInputData + wParsedLen); /*ֽڴ洢ĵϢ*/ + cDevState = (cDevInfo >> cBitOffset) & BIT_MASK_00000011B; + if (BIT_VAL_00000010B == cDevState) + { + cPhySecUtOcc = LOGICSECTION_OCCUPY_NO; /**/ + } + else if (BIT_VAL_00000001B == cDevState) + { + cPhySecUtOcc = LOGICSECTION_OCCUPY_UT; /*UTռ*/ + } + else + { + cPhySecUtOcc = LOGICSECTION_OCCUPY_UT; /*UTռ*/ + debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: Switch Id[%d] UT Occ Error", srcCiId, pCiRecptStru->switchIdBuf[ii]); + } - if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) - { - wParsedLen++; /*һֽڣȼ1*/ - } - else - { - /**/ - } - wParsedInfoNum++; /*һϢ1*/ + if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) + { + wParsedLen++; /*һֽڣȼ1*/ + } + else + { + /**/ + } + wParsedInfoNum++; /*һϢ1*/ - /*ȷν·״̬*/ - cTempCounter = (UINT8)(wParsedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽ4Ϣ*/ - cBitOffset = cTempCounter * BIT_NUM_PER_DEV; - cDevInfo = *(pInputData + wParsedLen); /*ֽڴ洢ĵϢ*/ - cDevState = (cDevInfo >> cBitOffset) & BIT_MASK_00000011B; - if (BIT_VAL_00000010B == cDevState) - { - cPhySecRouteLockState = PHYSICAL_SECTION_LOCK_NORMAL; /*·*/ - } - else if (BIT_VAL_00000001B == cDevState) - { - cPhySecRouteLockState = PHYSICAL_SECTION_LOCK_NO; /*δ·*/ - } - else - { - debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: Switch Id[%d] RouteLock Error", srcCiId, pCiRecptStru->switchIdBuf[ii]); - cRetVal = CI_ERROR; /*Ϣ쳣ʧ*/ - } + /*ȷν·״̬*/ + cTempCounter = (UINT8)(wParsedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽ4Ϣ*/ + cBitOffset = cTempCounter * BIT_NUM_PER_DEV; + cDevInfo = *(pInputData + wParsedLen); /*ֽڴ洢ĵϢ*/ + cDevState = (cDevInfo >> cBitOffset) & BIT_MASK_00000011B; + if (BIT_VAL_00000010B == cDevState) + { + cPhySecRouteLockState = PHYSICAL_SECTION_LOCK_NORMAL; /*·*/ + } + else if (BIT_VAL_00000001B == cDevState) + { + cPhySecRouteLockState = PHYSICAL_SECTION_LOCK_NO; /*δ·*/ + } + else + { + cPhySecRouteLockState = PHYSICAL_SECTION_LOCK_NO; /*δ·*/ + debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: Switch Id[%d] RouteLock Error", srcCiId, pCiRecptStru->switchIdBuf[ii]); + } - if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) - { - wParsedLen++; /*һֽڣȼ1*/ - } - else - { - /**/ - } - wParsedInfoNum++; /*һϢ1*/ + if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) + { + wParsedLen++; /*һֽڣȼ1*/ + } + else + { + /**/ + } + wParsedInfoNum++; /*һϢ1*/ - /*ȷη״̬*/ - cTempCounter = (UINT8)(wParsedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽ4Ϣ*/ - cBitOffset = cTempCounter * BIT_NUM_PER_DEV; - cDevInfo = *(pInputData + wParsedLen); /*ֽڴ洢ĵϢ*/ - cDevState = (cDevInfo >> cBitOffset) & BIT_MASK_00000011B; - if (BIT_VAL_00000010B == cDevState) - { - cPhySecFLockState = PHYSICAL_SECTION_FLOCK_NO; /*δ*/ - } - else if (BIT_VAL_00000001B == cDevState) - { - cPhySecFLockState = PHYSICAL_SECTION_FLOCK_YES; /**/ - } - else - { - debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: Switch Id[%d] Flock Error", srcCiId, pCiRecptStru->switchIdBuf[ii]); - cRetVal = CI_ERROR; /*Ϣ쳣ʧ*/ - } + /*ȷη״̬*/ + cTempCounter = (UINT8)(wParsedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽ4Ϣ*/ + cBitOffset = cTempCounter * BIT_NUM_PER_DEV; + cDevInfo = *(pInputData + wParsedLen); /*ֽڴ洢ĵϢ*/ + cDevState = (cDevInfo >> cBitOffset) & BIT_MASK_00000011B; + if (BIT_VAL_00000010B == cDevState) + { + cPhySecFLockState = PHYSICAL_SECTION_FLOCK_NO; /*δ*/ + } + else if (BIT_VAL_00000001B == cDevState) + { + cPhySecFLockState = PHYSICAL_SECTION_FLOCK_YES; /**/ + } + else + { + cPhySecFLockState = PHYSICAL_SECTION_FLOCK_YES; /**/ + debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: Switch Id[%d] Flock Error", srcCiId, pCiRecptStru->switchIdBuf[ii]); + } - if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) - { - wParsedLen++; /*һֽڣȼ1*/ - } - else - { - /**/ - } - wParsedInfoNum++; /*һϢ1*/ + if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) + { + wParsedLen++; /*һֽڣȼ1*/ + } + else + { + /**/ + } + wParsedInfoNum++; /*һϢ1*/ - /*ȷι״̬*/ - cTempCounter = (UINT8)(wParsedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽ4Ϣ*/ - cBitOffset = cTempCounter * BIT_NUM_PER_DEV; - cDevInfo = *(pInputData + wParsedLen); /*ֽڴ洢ĵϢ*/ - cDevState = (cDevInfo >> cBitOffset) & BIT_MASK_00000011B; - if (BIT_VAL_00000010B == cDevState) - { - cPhySecExceptLockState = PHYSICAL_SECTION_LOCK_EXCEPT; /*쳣*/ - } - else if (BIT_VAL_00000001B == cDevState) - { - cPhySecExceptLockState = PHYSICAL_SECTION_LOCK_NO; /*δ쳣*/ - } - else - { - debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: Switch Id[%d] ExceptLock Error", srcCiId, pCiRecptStru->switchIdBuf[ii]); - cRetVal = CI_ERROR; /*Ϣ쳣ʧ*/ - } + /*ȷι״̬*/ + cTempCounter = (UINT8)(wParsedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽ4Ϣ*/ + cBitOffset = cTempCounter * BIT_NUM_PER_DEV; + cDevInfo = *(pInputData + wParsedLen); /*ֽڴ洢ĵϢ*/ + cDevState = (cDevInfo >> cBitOffset) & BIT_MASK_00000011B; + if (BIT_VAL_00000010B == cDevState) + { + cPhySecExceptLockState = PHYSICAL_SECTION_LOCK_EXCEPT; /*쳣*/ + } + else if (BIT_VAL_00000001B == cDevState) + { + cPhySecExceptLockState = PHYSICAL_SECTION_LOCK_NO; /*δ쳣*/ + } + else + { + cPhySecExceptLockState = PHYSICAL_SECTION_LOCK_NO; /*δ쳣*/ + debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: Switch Id[%d] ExceptLock Error", srcCiId, pCiRecptStru->switchIdBuf[ii]); + } - if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) - { - wParsedLen++; /*һֽڣȼ1*/ - } - else - { - /**/ - } - wParsedInfoNum++; /*һϢ1*/ + if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) + { + wParsedLen++; /*һֽڣȼ1*/ + } + else + { + /**/ + } + wParsedInfoNum++; /*һϢ1*/ - /*ȷα״̬*/ - cTempCounter = (UINT8)(wParsedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽ4Ϣ*/ - cBitOffset = cTempCounter * BIT_NUM_PER_DEV; - cDevInfo = *(pInputData + wParsedLen); /*ֽڴ洢ĵϢ*/ - cDevState = (cDevInfo >> cBitOffset) & BIT_MASK_00000011B; - if (BIT_VAL_00000010B == cDevState) - { - cSwitchPLockState = PHYSICAL_SECTION_LOCK_PROTECT; - } - else if(BIT_VAL_00000001B == cDevState) - { - cSwitchPLockState = PHYSICAL_SECTION_LOCK_NO; - } - else - { - debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: Switch Id[%d] ExceptLock Error", srcCiId, pCiRecptStru->switchIdBuf[ii]); - cRetVal = CI_ERROR; /*Ϣ쳣ʧ*/ - } - if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) - { - wParsedLen++; /*һֽڣȼ1*/ - } - else - { - /**/ - } - wParsedInfoNum++; /*һϢ1*/ + /*ȷα״̬*/ + cTempCounter = (UINT8)(wParsedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽ4Ϣ*/ + cBitOffset = cTempCounter * BIT_NUM_PER_DEV; + cDevInfo = *(pInputData + wParsedLen); /*ֽڴ洢ĵϢ*/ + cDevState = (cDevInfo >> cBitOffset) & BIT_MASK_00000011B; + if (BIT_VAL_00000010B == cDevState) + { + cSwitchPLockState = PHYSICAL_SECTION_LOCK_PROTECT; + } + else if (BIT_VAL_00000001B == cDevState) + { + cSwitchPLockState = PHYSICAL_SECTION_LOCK_NO; + } + else + { + cSwitchPLockState = PHYSICAL_SECTION_LOCK_NO; + debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: Switch Id[%d] ExceptLock Error", srcCiId, pCiRecptStru->switchIdBuf[ii]); + } + if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) + { + wParsedLen++; /*һֽڣȼ1*/ + } + else + { + /**/ + } + wParsedInfoNum++; /*һϢ1*/ - /*ȷշ*/ - cTempCounter = (UINT8)(wParsedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽ4Ϣ*/ - cBitOffset = cTempCounter * BIT_NUM_PER_DEV; - cDevInfo = *(pInputData + wParsedLen); /*ֽڴ洢ĵϢ*/ - cDevState = (cDevInfo >> cBitOffset) & BIT_MASK_00000011B; - if (BIT_VAL_00000010B == cDevState) - { - cSwitchPhyUpLockDir = CI_SYSTEM_DIRECTION_UP; - } - else if (BIT_VAL_00000001B == cDevState) - { - cSwitchPhyUpLockDir = CI_SYSTEM_DIRECTION_NONE; - } - else - { - debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: Switch Id[%d] ExceptLock Error", srcCiId, pCiRecptStru->switchIdBuf[ii]); - cRetVal = CI_ERROR; /*Ϣ쳣ʧ*/ - } - if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) - { - wParsedLen++; /*һֽڣȼ1*/ - } - else - { - /**/ - } - wParsedInfoNum++; /*һϢ1*/ + /*ȷշ*/ + cTempCounter = (UINT8)(wParsedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽ4Ϣ*/ + cBitOffset = cTempCounter * BIT_NUM_PER_DEV; + cDevInfo = *(pInputData + wParsedLen); /*ֽڴ洢ĵϢ*/ + cDevState = (cDevInfo >> cBitOffset) & BIT_MASK_00000011B; + if (BIT_VAL_00000010B == cDevState) + { + cSwitchPhyUpLockDir = CI_SYSTEM_DIRECTION_UP; + } + else if (BIT_VAL_00000001B == cDevState) + { + cSwitchPhyUpLockDir = CI_SYSTEM_DIRECTION_NONE; + } + else + { + cSwitchPhyUpLockDir = CI_SYSTEM_DIRECTION_NONE; + debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: Switch Id[%d] ExceptLock Error", srcCiId, pCiRecptStru->switchIdBuf[ii]); + } + if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) + { + wParsedLen++; /*һֽڣȼ1*/ + } + else + { + /**/ + } + wParsedInfoNum++; /*һϢ1*/ - /*ȷշ*/ - cTempCounter = (UINT8)(wParsedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽ4Ϣ*/ - cBitOffset = cTempCounter * BIT_NUM_PER_DEV; - cDevInfo = *(pInputData + wParsedLen); /*ֽڴ洢ĵϢ*/ - cDevState = (cDevInfo >> cBitOffset) & BIT_MASK_00000011B; - if (BIT_VAL_00000010B == cDevState) - { - cSwitchPhyDownLockDir = CI_SYSTEM_DIRECTION_DOWN; - } - else if (BIT_VAL_00000001B == cDevState) - { - cSwitchPhyDownLockDir = CI_SYSTEM_DIRECTION_NONE; - } - else - { - debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: Switch Id[%d] ExceptLock Error", srcCiId, pCiRecptStru->switchIdBuf[ii]); - cRetVal = CI_ERROR; /*Ϣ쳣ʧ*/ - } - if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) - { - wParsedLen++; /*һֽڣȼ1*/ - } - else - { - /**/ - } - wParsedInfoNum++; /*һϢ1*/ + /*ȷշ*/ + cTempCounter = (UINT8)(wParsedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽ4Ϣ*/ + cBitOffset = cTempCounter * BIT_NUM_PER_DEV; + cDevInfo = *(pInputData + wParsedLen); /*ֽڴ洢ĵϢ*/ + cDevState = (cDevInfo >> cBitOffset) & BIT_MASK_00000011B; + if (BIT_VAL_00000010B == cDevState) + { + cSwitchPhyDownLockDir = CI_SYSTEM_DIRECTION_DOWN; + } + else if (BIT_VAL_00000001B == cDevState) + { + cSwitchPhyDownLockDir = CI_SYSTEM_DIRECTION_NONE; + } + else + { + cSwitchPhyDownLockDir = CI_SYSTEM_DIRECTION_NONE; + debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: Switch Id[%d] ExceptLock Error", srcCiId, pCiRecptStru->switchIdBuf[ii]); + } + if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) + { + wParsedLen++; /*һֽڣȼ1*/ + } + else + { + /**/ + } + wParsedInfoNum++; /*һϢ1*/ - /*ȷCT/UTռ״̬--ʱ0x0202֡*/ - if ((LOGICSECTION_OCCUPY_NO == cPhySecCtOcc) && (LOGICSECTION_OCCUPY_NO == cPhySecUtOcc)) + /*ȷCT/UTռ״̬--ʱ0x0202֡*/ + if ((LOGICSECTION_OCCUPY_NO == cPhySecCtOcc) && (LOGICSECTION_OCCUPY_NO == cPhySecUtOcc)) + { + cPhySecCtOrUtOcc = LOGICSECTION_OCCUPY_NO; /*CT/UTУ*/ + } + else if ((LOGICSECTION_OCCUPY_CT == cPhySecCtOcc) && (LOGICSECTION_OCCUPY_NO == cPhySecUtOcc)) + { + cPhySecCtOrUtOcc = LOGICSECTION_OCCUPY_CT; /*CTռãUTУCTռ*/ + } + else if ((LOGICSECTION_OCCUPY_NO == cPhySecCtOcc) && (LOGICSECTION_OCCUPY_UT == cPhySecUtOcc)) + { + cPhySecCtOrUtOcc = LOGICSECTION_OCCUPY_UT; /*CTУUTռãUTռ*/ + } + else + { + debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: Switch Id[%d] CT And UT Diff", srcCiId, pCiRecptStru->switchIdBuf[ii]); + } + + /*ȷ״̬--ʱ0x0202֡*/ + if ((PHYSICAL_SECTION_LOCK_NO == cPhySecRouteLockState) && (PHYSICAL_SECTION_LOCK_NO == cPhySecExceptLockState)) + { + if (PHYSICAL_SECTION_LOCK_PROTECT == cSwitchPLockState) { - cPhySecCtOrUtOcc = LOGICSECTION_OCCUPY_NO; /*CT/UTУ*/ - } - else if ((LOGICSECTION_OCCUPY_CT == cPhySecCtOcc) && (LOGICSECTION_OCCUPY_NO == cPhySecUtOcc)) - { - cPhySecCtOrUtOcc = LOGICSECTION_OCCUPY_CT; /*CTռãUTУCTռ*/ - } - else if ((LOGICSECTION_OCCUPY_NO == cPhySecCtOcc) && (LOGICSECTION_OCCUPY_UT == cPhySecUtOcc)) - { - cPhySecCtOrUtOcc = LOGICSECTION_OCCUPY_UT; /*CTУUTռãUTռ*/ + cPhySecLockState = PHYSICAL_SECTION_LOCK_PROTECT; /*·/վδգЧΪ*/ } else { - debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: Switch Id[%d] CT And UT Diff", srcCiId, pCiRecptStru->switchIdBuf[ii]); - cRetVal = CI_ERROR; /*Ϣ쳣ʧ*/ - } - - /*ȷ״̬--ʱ0x0202֡*/ - if ((PHYSICAL_SECTION_LOCK_NO == cPhySecRouteLockState) && (PHYSICAL_SECTION_LOCK_NO == cPhySecExceptLockState)) - { - if (PHYSICAL_SECTION_LOCK_PROTECT == cSwitchPLockState) - { - cPhySecLockState = PHYSICAL_SECTION_LOCK_PROTECT; /*·/վδգЧΪ*/ - } - else - { - cPhySecLockState = PHYSICAL_SECTION_LOCK_NO; /*·//վδգδ*/ - } - } - else if ((PHYSICAL_SECTION_LOCK_NORMAL == cPhySecRouteLockState) && (PHYSICAL_SECTION_LOCK_NO == cPhySecExceptLockState)) - { - cPhySecLockState = PHYSICAL_SECTION_LOCK_NORMAL; /*·ΪգΪδգ*/ - } - else if ((PHYSICAL_SECTION_LOCK_NO == cPhySecRouteLockState) && (PHYSICAL_SECTION_LOCK_EXCEPT == cPhySecExceptLockState)) - { - cPhySecLockState = PHYSICAL_SECTION_LOCK_EXCEPT; /*·ΪδգΪ쳣գ쳣*/ - } - else - { - debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: Switch Id[%d] Lock Diff Error", srcCiId, pCiRecptStru->switchIdBuf[ii]); - cRetVal = CI_ERROR; /*Ϣ쳣ʧ*/ - } - - /*ȷշ--ʱ0x0202֡*/ - if ((CI_SYSTEM_DIRECTION_UP == cSwitchPhyUpLockDir) && (CI_SYSTEM_DIRECTION_NONE == cSwitchPhyDownLockDir)) - { - cSwitchPhyLockDir = CI_SYSTEM_DIRECTION_UP; - } - else if ((CI_SYSTEM_DIRECTION_NONE == cSwitchPhyUpLockDir) && (CI_SYSTEM_DIRECTION_DOWN == cSwitchPhyDownLockDir)) - { - cSwitchPhyLockDir = CI_SYSTEM_DIRECTION_DOWN; - } - else - { - debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: Switch Id[%d] Lock Diff Error", srcCiId, pCiRecptStru->switchIdBuf[ii]); - cRetVal = CI_ERROR; /*Ϣ쳣ʧ*/ - } - - if (CI_SUCCESS == cRetVal) - { - wDevId = pCiRecptStru->switchIdBuf[ii]; - wPhySecId = GetSwitchPhySectionId(wDevId); - cDevBelongCiId = GetPhySecBelongCiId(wPhySecId); /*ȡ*/ - if ((cLocalCiId != cDevBelongCiId) && (0U != cDevBelongCiId)) - { - /*洢DZ豸״̬*/ - wDevIndex = GetPhySecConfigBufIndex(wPhySecId); - pstrPhySecData[wDevIndex].PhysicalSectionId = wPhySecId; - - /*ʱԤ*/ -#if 0 - SetPhySecLockStateHlht(wPhySecId, cPhySecLockState); /*״̬*/ - SetPhySecFLockState(wPhySecId, cPhySecFLockState); /*η״̬*/ - SetHlhtPhySecCtOrUtOccState(wPhySecId, cPhySecCtOrUtOcc); /*CT/UTռ״̬*/ -#endif - } - else - { - /**/ - } - } - else - { - cRetVal = CI_ERROR; - break; + cPhySecLockState = PHYSICAL_SECTION_LOCK_NO; /*·//վδգδ*/ } } - } - else - { - cRetVal = CI_ERROR; - } - - /*ͣ׼ͣϢ*/ - if (CI_SUCCESS == cRetVal) - { - for (ii = 0U; ii < pCiRecptStru->phySecNum; ii++) + else if ((PHYSICAL_SECTION_LOCK_NORMAL == cPhySecRouteLockState) && (PHYSICAL_SECTION_LOCK_NO == cPhySecExceptLockState)) { - cTempCounter = (UINT8)(wParsedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽ4Ϣ*/ - cBitOffset = cTempCounter * BIT_NUM_PER_DEV; + cPhySecLockState = PHYSICAL_SECTION_LOCK_NORMAL; /*·ΪգΪδգ*/ + } + else if ((PHYSICAL_SECTION_LOCK_NO == cPhySecRouteLockState) && (PHYSICAL_SECTION_LOCK_EXCEPT == cPhySecExceptLockState)) + { + cPhySecLockState = PHYSICAL_SECTION_LOCK_EXCEPT; /*·ΪδգΪ쳣գ쳣*/ + } + else + { + debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: Switch Id[%d] Lock Diff Error", srcCiId, pCiRecptStru->switchIdBuf[ii]); + } - wDevId = pCiRecptStru->phySecIdBuf[ii]; - cDevBelongCiId = GetPhySecBelongCiId(wDevId); /*ȡ*/ + /*ȷշ--ʱ0x0202֡*/ + if ((CI_SYSTEM_DIRECTION_UP == cSwitchPhyUpLockDir) && (CI_SYSTEM_DIRECTION_NONE == cSwitchPhyDownLockDir)) + { + cSwitchPhyLockDir = CI_SYSTEM_DIRECTION_UP; + } + else if ((CI_SYSTEM_DIRECTION_NONE == cSwitchPhyUpLockDir) && (CI_SYSTEM_DIRECTION_DOWN == cSwitchPhyDownLockDir)) + { + cSwitchPhyLockDir = CI_SYSTEM_DIRECTION_DOWN; + } + else if ((CI_SYSTEM_DIRECTION_NONE == cSwitchPhyUpLockDir) && ((CI_SYSTEM_DIRECTION_NONE == cSwitchPhyDownLockDir))) + { + cSwitchPhyLockDir = CI_SYSTEM_DIRECTION_NONE; + } + else + { + debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: Switch Id[%d] Lock Diff Error", srcCiId, pCiRecptStru->switchIdBuf[ii]); + } + + if (CI_SUCCESS == cRetVal) + { + wPhySecId = pCiRecptStru->wSwitchPhySecBuf[ii]; + cDevBelongCiId = GetPhySecBelongCiId(wPhySecId); /*ȡ*/ if ((cLocalCiId != cDevBelongCiId) && (0U != cDevBelongCiId)) { /*洢DZ豸״̬*/ - wDevIndex = GetPhySecConfigBufIndex(wDevId); - pstrPhySecData[wDevIndex].PhysicalSectionId = wDevId; + /*wDevIndex = GetPhySecConfigBufIndex(wPhySecId);*/ + /*pstrPhySecData[wDevIndex].PhysicalSectionId = wPhySecId;*/ - cDevInfo = *(pInputData + wParsedLen); /*ֽڴ洢ͣ׼ͣϢ*/ - cDevState = (cDevInfo >> cBitOffset) & BIT_MASK_00000011B; - if (BIT_VAL_00000010B == cDevState) - { - SetPhySecStopSteadyFlag(wDevId, PHYSICAL_SECTION_STOPSTEADY_YES); /*ͣ׼ͣ*/ - } - else if (BIT_VAL_00000001B == cDevState) - { - SetPhySecStopSteadyFlag(wDevId, PHYSICAL_SECTION_STOPSTEADY_NO); /*δͣ׼ͣ*/ - } - else - { - debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: PhySec Id[%d] Stop Steady Error", srcCiId, wDevId); - cRetVal = CI_ERROR; /*Ϣ쳣ʧ*/ - break; - } + /*ʱԤ*/ +#if 0 + SetPhySecLockStateHlht(wPhySecId, cPhySecLockState); /*״̬*/ + SetPhySecFLockState(wPhySecId, cPhySecFLockState); /*η״̬*/ + SetHlhtPhySecCtOrUtOccState(wPhySecId, cPhySecCtOrUtOcc); /*CT/UTռ״̬*/ +#endif } else { /**/ } - - if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) - { - wParsedLen++; /*һֽڣȼ1*/ - } - else - { - /**/ - } - wParsedInfoNum++; /*һϢ1*/ + } + else + { + cRetVal = CI_ERROR; + break; } } - else + + /*ͣ׼ͣϢ*/ + for (ii = 0U; ii < pCiRecptStru->phySecNum; ii++) { - cRetVal = CI_ERROR; + cTempCounter = (UINT8)(wParsedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽ4Ϣ*/ + cBitOffset = cTempCounter * BIT_NUM_PER_DEV; + + wDevId = pCiRecptStru->phySecIdBuf[ii]; + cDevBelongCiId = GetPhySecBelongCiId(wDevId); /*ȡ*/ + if ((cLocalCiId != cDevBelongCiId) && (0U != cDevBelongCiId)) + { + /*洢DZ豸״̬*/ + wDevIndex = GetPhySecConfigBufIndex(wDevId); + pstrPhySecData[wDevIndex].PhysicalSectionId = wDevId; + + cDevInfo = *(pInputData + wParsedLen); /*ֽڴ洢ͣ׼ͣϢ*/ + cDevState = (cDevInfo >> cBitOffset) & BIT_MASK_00000011B; + if (BIT_VAL_00000010B == cDevState) + { + SetPhySecStopSteadyFlag(wDevId, PHYSICAL_SECTION_STOPSTEADY_YES); /*ͣ׼ͣ*/ + } + else if (BIT_VAL_00000001B == cDevState) + { + SetPhySecStopSteadyFlag(wDevId, PHYSICAL_SECTION_STOPSTEADY_NO); /*δͣ׼ͣ*/ + } + else + { + SetPhySecStopSteadyFlag(wDevId, PHYSICAL_SECTION_STOPSTEADY_NO); /*δͣ׼ͣ*/ + debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: PhySec Id[%d] Stop Steady Error", srcCiId, wDevId); + } + } + else + { + /**/ + } + + if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) + { + wParsedLen++; /*һֽڣȼ1*/ + } + else + { + /**/ + } + wParsedInfoNum++; /*һϢ1*/ } - /*μԤλ״̬Ϣ*/ - if (CI_SUCCESS == cRetVal) + /*μԤλ״̬Ϣ ע3*/ + if (DATA_TYPE_23_BRANCH != chDataType) { for (ii = 0U; ii < pCiRecptStru->phySecNum; ii++) { @@ -20159,9 +20213,8 @@ UINT8 ParseManufacDefPacket(const UINT8* pInputData, UINT16* pItemLen, const UIN } else { - debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: PhySec Id[%d] PreReset Error", srcCiId, wDevId); - cRetVal = CI_ERROR; /*Ϣ쳣ʧ*/ - break; + SetPhySecPreResetState(wDevId, PHYSICAL_SECTION_PRE_RESET_NO); /*μԤλ״̬Ч*/ + debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: PhySec Id[%d] PreReset Error", srcCiId, wDevId); } } else @@ -20182,11 +20235,11 @@ UINT8 ParseManufacDefPacket(const UINT8* pInputData, UINT16* pItemLen, const UIN } else { - cRetVal = CI_ERROR; + /**/ } - /*źŻƶ˿Ϣ*/ - if (CI_SUCCESS == cRetVal) + /*źŻƶ˿Ϣ ע3*/ + if (DATA_TYPE_23_BRANCH != chDataType) { for (ii = 0U; ii < pCiRecptStru->signalNum; ii++) { @@ -20213,9 +20266,8 @@ UINT8 ParseManufacDefPacket(const UINT8* pInputData, UINT16* pItemLen, const UIN } else { - debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: Signal Id[%d] BlueDengsi Error", srcCiId, wDevId); - cRetVal = CI_ERROR; /*Ϣ쳣ʧ*/ - break; + SetHlhtCiSignalBlueDsBreakFlag(wDevId, SIGNAL_DS_BREAK_NO); /*źŻδƶ˿*/ + debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: Signal Id[%d] BlueDengsi Error", srcCiId, wDevId); } } else @@ -20236,50 +20288,67 @@ UINT8 ParseManufacDefPacket(const UINT8* pInputData, UINT16* pItemLen, const UIN } else { - cRetVal = CI_ERROR; + /**/ } /*źŻ۳ϢĿ۳ͳվ۳*/ - if (CI_SUCCESS == cRetVal) + for (ii = 0U; ii < pCiRecptStru->signalNum; ii++) { - for (ii = 0U; ii < pCiRecptStru->signalNum; ii++) - { - cTempCounter = (UINT8)(wParsedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽ4Ϣ*/ - cBitOffset = cTempCounter * BIT_NUM_PER_DEV; - cDevInfo = *(pInputData + wParsedLen); /*ֽڴ洢źŻ۳Ϣ*/ - cDevState = (cDevInfo >> cBitOffset) & BIT_MASK_00000011B; + cTempCounter = (UINT8)(wParsedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽ4Ϣ*/ + cBitOffset = cTempCounter * BIT_NUM_PER_DEV; + cDevInfo = *(pInputData + wParsedLen); /*ֽڴ洢źŻ۳Ϣ*/ + cDevState = (cDevInfo >> cBitOffset) & BIT_MASK_00000011B; - /*ȷĿ۳״̬*/ + /*ȷĿ۳״̬*/ + if (BIT_VAL_00000010B == cDevState) + { + cSignalAtsDetainFlag = SIGNAL_DETAIN_ATS_NO; /*Ŀ۳*/ + } + else if (BIT_VAL_00000001B == cDevState) + { + cSignalAtsDetainFlag = SIGNAL_DETAIN_ATS; /*Ŀ۳*/ + } + else + { + debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: Signal Id[%d] Ats Detain Error", srcCiId, pCiRecptStru->signalIdBuf[ii]); + cSignalAtsDetainFlag = SIGNAL_DETAIN_ATS_NO; + } + + if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) + { + wParsedLen++; /*һֽڣȼ1*/ + } + else + { + /**/ + } + wParsedInfoNum++; /*һϢ1*/ + + cTempCounter = (UINT8)(wParsedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽ4Ϣ*/ + cBitOffset = cTempCounter * BIT_NUM_PER_DEV; + cDevInfo = *(pInputData + wParsedLen); /*ֽڴ洢źŻ۳Ϣ*/ + cDevState = (cDevInfo >> cBitOffset) & BIT_MASK_00000011B; + + /*ȷվ۳״̬*/ + if (DATA_TYPE_23_BRANCH == chDataType) + { + /*3ֻӲ۳û۳յվ۳Ӳ۳*/ if (BIT_VAL_00000010B == cDevState) { - cSignalAtsDetainFlag = SIGNAL_DETAIN_ATS_NO; /*Ŀ۳*/ + cSignalXiandiDetainFlag = SIGNAL_RELAY_DETAIN_NO; /*Ӳ۳*/ } else if (BIT_VAL_00000001B == cDevState) { - cSignalAtsDetainFlag = SIGNAL_DETAIN_ATS; /*Ŀ۳*/ + cSignalXiandiDetainFlag = SIGNAL_RELAY_DETAIN_YES; /*Ӳ۳*/ } else { - debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: Signal Id[%d] Ats Detain Error", srcCiId, pCiRecptStru->signalIdBuf[ii]); - cRetVal = CI_ERROR; /*Ϣ쳣ʧ*/ + debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: Signal Id[%d] Xiandi Detain Error", srcCiId, pCiRecptStru->signalIdBuf[ii]); + cSignalXiandiDetainFlag = SIGNAL_RELAY_DETAIN_NO; } - - if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) - { - wParsedLen++; /*һֽڣȼ1*/ - } - else - { - /**/ - } - wParsedInfoNum++; /*һϢ1*/ - - cTempCounter = (UINT8)(wParsedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽ4Ϣ*/ - cBitOffset = cTempCounter * BIT_NUM_PER_DEV; - cDevInfo = *(pInputData + wParsedLen); /*ֽڴ洢źŻ۳Ϣ*/ - cDevState = (cDevInfo >> cBitOffset) & BIT_MASK_00000011B; - - /*ȷվ۳״̬*/ + } + else + { if (BIT_VAL_00000010B == cDevState) { cSignalXiandiDetainFlag = SIGNAL_DETAIN_XIANDI_NO; /*ڳվ۳*/ @@ -20291,46 +20360,53 @@ UINT8 ParseManufacDefPacket(const UINT8* pInputData, UINT16* pItemLen, const UIN else { debug_infor_printf((const)"\nHlht Ci Id[%d] Parse ManufacDef Error: Signal Id[%d] Xiandi Detain Error", srcCiId, pCiRecptStru->signalIdBuf[ii]); - cRetVal = CI_ERROR; /*Ϣ쳣ʧ*/ + cSignalXiandiDetainFlag = SIGNAL_DETAIN_XIANDI_NO; } + } + - if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) + if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) + { + wParsedLen++; /*һֽڣȼ1*/ + } + else + { + /**/ + } + wParsedInfoNum++; /*һϢ1*/ + + if (CI_SUCCESS == cRetVal) + { + wDevId = pCiRecptStru->signalIdBuf[ii]; + cDevBelongCiId = GetSignalBelongCiId(wDevId); /*ȡźŻ*/ + if ((cLocalCiId != cDevBelongCiId) && (0U != cDevBelongCiId)) { - wParsedLen++; /*һֽڣȼ1*/ + /*洢DZ豸״̬*/ + wDevIndex = GetSignalConfigBufIndex(wDevId); + pstrSignalData[wDevIndex].SignalId = wDevId; + if (DATA_TYPE_23_BRANCH == chDataType) + { + (void)SetSignalDetainFlag(wDevId, cSignalAtsDetainFlag); /*źŻĿ۳*/ + (void)SetSignalDetainFlag(wDevId, SIGNAL_DETAIN_XIANDI_NO); /*źŻδվ۳*/ + SetSignalRelayDetainFlag(wDevId, cSignalXiandiDetainFlag);/*źŻӲ۳*/ + } + else + { + (void)SetSignalDetainFlag(wDevId, cSignalAtsDetainFlag); /*źŻĿ۳*/ + (void)SetSignalDetainFlag(wDevId, cSignalXiandiDetainFlag); /*źŻվ۳*/ + } + } else { /**/ } - wParsedInfoNum++; /*һϢ1*/ - - if (CI_SUCCESS == cRetVal) - { - wDevId = pCiRecptStru->signalIdBuf[ii]; - cDevBelongCiId = GetSignalBelongCiId(wDevId); /*ȡźŻ*/ - if ((cLocalCiId != cDevBelongCiId) && (0U != cDevBelongCiId)) - { - /*洢DZ豸״̬*/ - wDevIndex = GetSignalConfigBufIndex(wDevId); - pstrSignalData[wDevIndex].SignalId = wDevId; - SetSignalDetainFlag(wDevId, cSignalAtsDetainFlag); /*źŻĿ۳*/ - SetSignalDetainFlag(wDevId, cSignalXiandiDetainFlag); /*źŻĿ۳*/ - } - else - { - /**/ - } - } - else - { - cRetVal = CI_ERROR; - break; - } } - } - else - { - cRetVal = CI_ERROR; + else + { + cRetVal = CI_ERROR; + break; + } } if (CI_SUCCESS == cRetVal) @@ -20343,7 +20419,14 @@ UINT8 ParseManufacDefPacket(const UINT8* pInputData, UINT16* pItemLen, const UIN { /**/ } - + if (packetLen == (wParsedLen + 4U)) + { + cRetVal = CI_SUCCESS; + } + else + { + cRetVal = CI_ERROR; + } *pItemLen = wParsedLen; } else @@ -20804,7 +20887,7 @@ UINT8 PackRcToLocalCiDataFrame(const UINT8 cCiId) UINT16 wSignalId = 0U; /*źŻID*/ UINT8 cLightExtinctState = 0U; /*źŻ״̬*/ UINT8 cSignalCrossState = 0U; /*źŻѹ״̬*/ - UINT8 wCrossTacsTainId = 0U; /*ѹTACSгID*/ + UINT8 wCrossTacsTrainId = 0U; /*ѹTACSгID*/ UINT16 wAxisSecNum = 0U; /**/ UINT16 wAxisSecId = 0U; /*ID*/ UINT8 cAxisArbState = 0U; /*ARB״̬*/ @@ -20948,8 +21031,8 @@ UINT8 PackRcToLocalCiDataFrame(const UINT8 cCiId) ii++; /*ѹTACSгID*/ - wCrossTacsTainId = GetSignalCrossTacsTrainIdCC(wSignalId); - szRcToCiDataBuf[ii] = wCrossTacsTainId; + wCrossTacsTrainId = GetSignalCrossTacsTrainIdCC(wSignalId); + szRcToCiDataBuf[ii] = wCrossTacsTrainId; ii++; wNeedPackDevNum++; @@ -22730,7 +22813,7 @@ UINT8 ParseRcToRcPbTacsDataFrame(UINT8* dataBuf, UINT16 dataLength, UINT8 source UINT8 chIndex = 0u;/*UINT8*/ UINT16 dwTmpIndex = 0u;/*UINT16*/ CfpTrainInfoStru tmpTrainInfo = { 0u }; - CfpEnvelopeStruct tmpEnvelopeInfo = { 0u }; + CfpEnvelopeStruct tmpEnvelopeInfo[CUTOFF_POINT_SUM_MAX] = { 0u }; UINT8 chEnvelopeNum = 0u; UINT8 chEnvelopeIndex = 0u; UINT8 cTempTrainNum = 0U; @@ -22959,10 +23042,10 @@ UINT8 ParseRcToRcPbTacsDataFrame(UINT8* dataBuf, UINT16 dataLength, UINT8 source /*еȼ*/ tmpTrainInfo.chTrainLevel = dataBuf[ii]; ii++; - if ((0u == tmpTrainInfo.chTrainLevel) || (TRAIN_LEVEL_BACKUP_UNKNOWN == tmpTrainInfo.chTrainLevel) || (TRAIN_LEVEL_UR == tmpTrainInfo.chTrainLevel) + if ((0u == tmpTrainInfo.chTrainLevel) || (TRAIN_LEVEL_UR == tmpTrainInfo.chTrainLevel) || (TRAIN_LEVEL_ABL == tmpTrainInfo.chTrainLevel) || (TRAIN_LEVEL_VBTC == tmpTrainInfo.chTrainLevel) || (TRAIN_LEVEL_ITC == tmpTrainInfo.chTrainLevel)) { - ;/*0޳URABLVBTCITC 0xffϷ*/ + ;/*0޳URABLVBTCITC Ϸ*/ } else { @@ -22978,111 +23061,113 @@ UINT8 ParseRcToRcPbTacsDataFrame(UINT8* dataBuf, UINT16 dataLength, UINT8 source /* ֽյOCİ */ chEnvelopeNum = dataBuf[ii++]; - if (CUTOFF_POINT_SUM_MAX >= chEnvelopeNum) + if (SECTION_REL_ENVELOPE_SUM_MAX >= chEnvelopeNum) { - SetCfpOtherOcENum(deviceId, chEnvelopeNum); + for (chEnvelopeIndex = 0u; chEnvelopeIndex < chEnvelopeNum; chEnvelopeIndex++) + { + tmpEnvelopeInfo[chEnvelopeIndex].envelopeType = dataBuf[ii++]; /* */ + if ((TYPE_UKT_ENVELOPE == tmpEnvelopeInfo[chEnvelopeIndex].envelopeType) + || (TYPE_UCT_ENVELOPE == tmpEnvelopeInfo[chEnvelopeIndex].envelopeType) + || (TYPE_CT_ENVELOPE == tmpEnvelopeInfo[chEnvelopeIndex].envelopeType)) + { + ;/*1:ͨų 2ʧͨų 3س*/ + } + else + { + reVal = CI_ERROR; + } + + tmpEnvelopeInfo[chEnvelopeIndex].headTrainID = ShortFromChar(&dataBuf[ii]);/* ǰID */ + ii += 2u; + + tmpEnvelopeInfo[chEnvelopeIndex].tailTrainID = ShortFromChar(&dataBuf[ii]);/* ID */ + ii += 2u; + + tmpEnvelopeInfo[chEnvelopeIndex].startPos.Dir = dataBuf[ii++];/* 㷽 */ + + tmpEnvelopeInfo[chEnvelopeIndex].startPos.Lnk = ShortFromChar(&dataBuf[ii]);/* link */ + ii += 2u; + + tmpEnvelopeInfo[chEnvelopeIndex].startPos.Off = LongFromChar(&dataBuf[ii]);/* offset */ + ii += 4u; + + tmpEnvelopeInfo[chEnvelopeIndex].endPos.Dir = dataBuf[ii++];/* յ㷽 */ + + tmpEnvelopeInfo[chEnvelopeIndex].endPos.Lnk = ShortFromChar(&dataBuf[ii]);/* յlink */ + ii += 2u; + + tmpEnvelopeInfo[chEnvelopeIndex].endPos.Off = LongFromChar(&dataBuf[ii]);/* յoffset */ + ii += 4u; + + belongCiId = (UINT8)GetLinkManageTiocById(tmpEnvelopeInfo[chEnvelopeIndex].startPos.Lnk); + if (belongCiId == localCiId) + { + (void)dsuCheckSameLoc(tmpEnvelopeInfo[chEnvelopeIndex].startPos.Lnk, tmpEnvelopeInfo[chEnvelopeIndex].startPos.Off, &tmpEnvelopeInfo[chEnvelopeIndex].startPos.Lnk, &tmpEnvelopeInfo[chEnvelopeIndex].startPos.Off); + } + + belongCiId = (UINT8)GetLinkManageTiocById(tmpEnvelopeInfo[chEnvelopeIndex].endPos.Lnk); + if (belongCiId == localCiId) + { + (void)dsuCheckSameLoc(tmpEnvelopeInfo[chEnvelopeIndex].endPos.Lnk, tmpEnvelopeInfo[chEnvelopeIndex].endPos.Off, &tmpEnvelopeInfo[chEnvelopeIndex].endPos.Lnk, &tmpEnvelopeInfo[chEnvelopeIndex].endPos.Off); + } + + /*ȡֽOCİ*/ + reVal = CutCfpOtherOcEData(deviceId, &tmpEnvelopeInfo[chEnvelopeIndex]); + + tmpEnvelopeInfo[chEnvelopeIndex].ACCnt = elm_PrepareACBtwPoints(tmpEnvelopeInfo[chEnvelopeIndex].startPos, tmpEnvelopeInfo[chEnvelopeIndex].endPos, tmpEnvelopeInfo[chEnvelopeIndex].ACID); + /* ڲŻ 20220419 wqm elm_PrepareACBtwPoints0߷гаʱ˴Ӧ÷ΪCI_ERROR*/ + if ((SECTION_IN_ENVELOPE_SUM_MAX == tmpEnvelopeInfo[chEnvelopeIndex].ACCnt) || (0u == tmpEnvelopeInfo[chEnvelopeIndex].ACCnt)) + { + reVal = CI_ERROR; + } + else + { + for (chInfoIndex = 0u; chInfoIndex < tmpEnvelopeInfo[chEnvelopeIndex].ACCnt; chInfoIndex++) + { + belongCiId = (UINT8)GetAxisBelongTioc(tmpEnvelopeInfo[chEnvelopeIndex].ACID[chInfoIndex]); + if ((localCiId == belongCiId) || (0u == belongCiId)) + { + reVal = CI_ERROR; + break; + } + else + { + ; + } + } + } + + + tmpEnvelopeInfo[chEnvelopeIndex].trianCnt = dataBuf[ii++];/* г */ + + for (chInfoIndex = 0u; chInfoIndex < tmpEnvelopeInfo[chEnvelopeIndex].trianCnt; chInfoIndex++) + { + tmpEnvelopeInfo[chEnvelopeIndex].trainID[chInfoIndex] = ShortFromChar(&dataBuf[ii]);/* гID */ + ii += 2u; + + tmpEnvelopeInfo[chEnvelopeIndex].ACTPort[chInfoIndex] = dataBuf[ii++]; /* гˡUCTֽRRM */ + } + if (CI_ERROR == reVal) + { + break; + } + + } + if (CI_SUCCESS == reVal) + { + /*ȫͨ дֽյİ */ + SetCfpOtherOcENum(deviceId, chEnvelopeNum); + for (chEnvelopeIndex = 0u; chEnvelopeIndex < chEnvelopeNum; chEnvelopeIndex++) + { + SetCfpOtherOcEData(deviceId, chEnvelopeIndex, tmpEnvelopeInfo[chEnvelopeIndex]); + } + } } else { reVal = CI_ERROR; } - for (chEnvelopeIndex = 0u; chEnvelopeIndex < chEnvelopeNum; chEnvelopeIndex++) - { - tmpEnvelopeInfo.envelopeType = dataBuf[ii++]; /* */ - if ((TYPE_UKT_ENVELOPE == tmpEnvelopeInfo.envelopeType) - || (TYPE_UCT_ENVELOPE == tmpEnvelopeInfo.envelopeType) - || (TYPE_CT_ENVELOPE == tmpEnvelopeInfo.envelopeType)) - { - ;/*1:ͨų 2ʧͨų 3س*/ - } - else - { - reVal = CI_ERROR; - } - - tmpEnvelopeInfo.headTrainID = ShortFromChar(&dataBuf[ii]);/* ǰID */ - ii += 2u; - - tmpEnvelopeInfo.tailTrainID = ShortFromChar(&dataBuf[ii]);/* ID */ - ii += 2u; - - tmpEnvelopeInfo.startPos.Dir = dataBuf[ii++];/* 㷽 */ - - tmpEnvelopeInfo.startPos.Lnk = ShortFromChar(&dataBuf[ii]);/* link */ - ii += 2u; - - tmpEnvelopeInfo.startPos.Off = LongFromChar(&dataBuf[ii]);/* offset */ - ii += 4u; - - tmpEnvelopeInfo.endPos.Dir = dataBuf[ii++];/* յ㷽 */ - - tmpEnvelopeInfo.endPos.Lnk = ShortFromChar(&dataBuf[ii]);/* յlink */ - ii += 2u; - - tmpEnvelopeInfo.endPos.Off = LongFromChar(&dataBuf[ii]);/* յoffset */ - ii += 4u; - - belongCiId = (UINT8)GetLinkManageTiocById(tmpEnvelopeInfo.startPos.Lnk); - if (belongCiId == localCiId) - { - (void)dsuCheckSameLoc(tmpEnvelopeInfo.startPos.Lnk, tmpEnvelopeInfo.startPos.Off, &tmpEnvelopeInfo.startPos.Lnk, &tmpEnvelopeInfo.startPos.Off); - } - - belongCiId = (UINT8)GetLinkManageTiocById(tmpEnvelopeInfo.endPos.Lnk); - if (belongCiId == localCiId) - { - (void)dsuCheckSameLoc(tmpEnvelopeInfo.endPos.Lnk, tmpEnvelopeInfo.endPos.Off, &tmpEnvelopeInfo.endPos.Lnk, &tmpEnvelopeInfo.endPos.Off); - } - - /*ȡֽOCİ*/ - reVal = CutCfpOtherOcEData(deviceId, &tmpEnvelopeInfo); - - tmpEnvelopeInfo.ACCnt = elm_PrepareACBtwPoints(tmpEnvelopeInfo.startPos, tmpEnvelopeInfo.endPos, tmpEnvelopeInfo.ACID); - /* ڲŻ 20220419 wqm elm_PrepareACBtwPoints0߷гаʱ˴Ӧ÷ΪCI_ERROR*/ - if ((SECTION_IN_ENVELOPE_SUM_MAX == tmpEnvelopeInfo.ACCnt) || (0u == tmpEnvelopeInfo.ACCnt)) - { - reVal = CI_ERROR; - } - else - { - for (chInfoIndex = 0u; chInfoIndex < tmpEnvelopeInfo.ACCnt; chInfoIndex++) - { - belongCiId = (UINT8)GetAxisBelongTioc(tmpEnvelopeInfo.ACID[chInfoIndex]); - if ((localCiId == belongCiId) || (0u == belongCiId)) - { - reVal = CI_ERROR; - break; - } - else - { - ; - } - } - } - - - tmpEnvelopeInfo.trianCnt = dataBuf[ii++];/* г */ - - for (chInfoIndex = 0u; chInfoIndex < tmpEnvelopeInfo.trianCnt; chInfoIndex++) - { - tmpEnvelopeInfo.trainID[chInfoIndex] = ShortFromChar(&dataBuf[ii]);/* гID */ - ii += 2u; - - tmpEnvelopeInfo.ACTPort[chInfoIndex] = dataBuf[ii++]; /* гˡUCTֽRRM */ - } - - if (CI_SUCCESS == reVal) - { - /* дֽյİ */ - SetCfpOtherOcEData(deviceId, chEnvelopeIndex, tmpEnvelopeInfo); - } - else - { - ; - } - } - chCtNum = dataBuf[ii++]; for (chInfoIndex = 0u; chInfoIndex < chCtNum; chInfoIndex++) { @@ -23099,7 +23184,7 @@ UINT8 ParseRcToRcPbTacsDataFrame(UINT8* dataBuf, UINT16 dataLength, UINT8 source SetTrainLevel(wTrainId, chLevel); /* гм */ dwTrainDelay = LongFromChar(&dataBuf[ii]); /* TIOCгͨʱ */ - ii += 4u; + ii += 4u; (void)SetTrainMsgDelayTime(wTrainId, dwTrainDelay); wSpeed = ShortFromChar(&dataBuf[ii]); diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackCiData.h b/TSCP/src/APP/ciapp/ParsePack/ParsePackCiData.h index f9ae6ee..4f15497 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackCiData.h +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackCiData.h @@ -231,6 +231,12 @@ extern "C" { UINT16 szNeedCheckProSwtStateOlpIdBuf[OVERLAP_SUM_MAX]; /*Ҫ״̬ıID*/ UINT16 wSwitchSumOfOtherCi; /*漰õ*/ UINT16 szSwitchIdBufOfOtherCi[SWITCH_SUM_MAX]; /*漰õ*/ + + /*ͨӷֽ*/ + UINT16 wSwitchPhySecNum; /**/ + UINT16 wSwitchPhySecBuf[PHYSICAL_SECTION_SUM_MAX]; /**/ + UINT16 wXianSuLogSecNum; /*߼*/ + UINT16 wXianSuLogSecBuf[LOGIC_SECTION_SUM_MAX]; /*߼*/ } CiTransmitStruct; /* TIOCͨų */ @@ -1443,11 +1449,12 @@ UINT8 PackManufacDefPacket(UINT8* pInputBuf, UINT16* pItemLen, const UINT8 dstCi * ˵const UINT8 *pInputData ָ * UINT16 *pItemLen еij * const UINT8 srcCiId ԴID +* const UINT16 packetLen ij * ֵCI_SUCCESS 1 ɹ * CI_ERROR 0 ʧ * Created By LQ 2025.05.26 */ -UINT8 ParseManufacDefPacket(const UINT8* pInputData, UINT16* pItemLen, const UINT8 srcCiId); +UINT8 ParseManufacDefPacket(const UINT8* pInputData, UINT16* pItemLen, const UINT8 srcCiId, const UINT16 packetLen); /* * CIRC֡ diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackCommon.c b/TSCP/src/APP/ciapp/ParsePack/ParsePackCommon.c index c303709..4bbfdf2 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackCommon.c +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackCommon.c @@ -524,6 +524,11 @@ UINT8 SwitchMaskManage(UINT8 MaskType, UINT16 DeviceId, UINT16 MaskId, UINT8* da UINT16 indexFind = 0U; UINT8 devBelongThisLine = 0U; UINT8 switchBoardNum = 0U; + UINT8 chLocalCiOCSswitch = 0U; + UINT8 chMainCotrolOCId = 0U; + + chLocalCiOCSswitch = GetLocalCiOCSswitch(); + switchLockStatus = GetSwitchLockStatus(DeviceId); @@ -698,13 +703,17 @@ UINT8 SwitchMaskManage(UINT8 MaskType, UINT16 DeviceId, UINT16 MaskId, UINT8* da } break; case MASK_TYPE_SWITCH_OPEN_CAP: + chMainCotrolOCId = GetSwitchMainCotrolOCId(DeviceId);/*ȡOC*/ for (i = 0u; i < m_SwitchNum; i++) { if (m_Switches[i].DeviceId == DeviceId) { - flagFind = 1u; - indexFind = i; - break; + if ((chMainCotrolOCId == m_Switches[i].OcId) || (OC_S_OFF == chLocalCiOCSswitch)) + {/*ǰOCOC-Sܹر*/ + flagFind = 1u; + indexFind = i; + break; + } } } if (1u == flagFind) @@ -1632,6 +1641,10 @@ UINT8 OverlapMaskManage(UINT8 MaskType, UINT16 DeviceId, UINT16 MaskId, UINT8* d UINT8 RouteMaskManage(UINT8 MaskType, UINT16 DeviceId, UINT16 MaskId, UINT8* dataBuf) { UINT8 returnValue = CI_SUCCESS; /*ֵĬϳɹ*/ + UINT8 chVirCiId = 0u; + UINT8 chVirCiType = 0u; + UINT8 ciTrainTestState = 0u; /*Գ״̬*/ + UINT32 xuanpaiStartCycNum = 0u;/*·ѡſʼ*/ UINT8 routeState = GetRouteState(DeviceId); /*ȡ·״̬*/ UINT8 routeLevel = GetRouteLevel(DeviceId); UINT16 lastPhyLockId = GetRouteLastPhySectionId(DeviceId); /*ȡָID·һID*/ @@ -1640,12 +1653,11 @@ UINT8 RouteMaskManage(UINT8 MaskType, UINT16 DeviceId, UINT16 MaskId, UINT8* dat UINT8 dcQState = GetRouteDCQState(DeviceId);/*·״̬*/ UINT8 dcTState = GetRouteDCTYState(DeviceId);/*·ͬ״̬*/ UINT8 chDCAgreeBtnErrState = GetRouteDcAgreeButtonErrState(DeviceId);/*·ͬⰴť״̬*/ - UINT8 ciTrainTestState = 0u; /*Գ״̬*/ + UINT8 routeAutoTriggerFlag = GetRouteAutoTriggerFlag(DeviceId); /*ȡ·Զ־*/ - UINT8 chVirCiId = 0u; - UINT8 chVirCiType = 0u; + xuanpaiStartCycNum = GetRouteXuanPaiStartCycNum(DeviceId);/*·ѡſʼ*/ switch (MaskType) { case MASK_TYPE_ROUTE_IDLE:/*·λ*/ @@ -1659,7 +1671,8 @@ UINT8 RouteMaskManage(UINT8 MaskType, UINT16 DeviceId, UINT16 MaskId, UINT8* dat } break; case MASK_TYPE_ROUTE_XUANPAI:/*·ѡλ*/ - if (ROUTE_STATE_XUANPAI == routeState) + /* ѡںЧɷλ*/ + if (xuanpaiStartCycNum > 0u) { SetMaskValue(MaskId, dataBuf); } diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackGateWayData.c b/TSCP/src/APP/ciapp/ParsePack/ParsePackGateWayData.c index 6bf5552..a14b801 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackGateWayData.c +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackGateWayData.c @@ -40,6 +40,9 @@ AtsMsgCfmStru g_strSndAtsDaCfmFst = { 0U }; /* UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength) { UINT8 chRtn = CI_ERROR; + UINT8 chRtn1 = CI_SUCCESS; + UINT8 chRtn2 = CI_SUCCESS; + UINT8 chRtn3 = CI_SUCCESS; UINT8 chMsgNum = 0u; UINT32 dwDataVer = 0u; UINT32 dwPrtclMsg = 0u; @@ -67,6 +70,7 @@ UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength) UINT16 wDevId = 0U; UINT8 szCrcTmp[1024] = { 0U }; + if ((NULL != dataBuf) && (0u < dataLength)) { chLocalId = GetSystemParaLocalCiId(); @@ -89,6 +93,7 @@ UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength) else { chRtn = CI_ERROR; + chRtn3 = CI_ERROR; } } else @@ -105,6 +110,7 @@ UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength) else { chRtn = CI_ERROR; + chRtn3 = CI_ERROR; } } else @@ -236,6 +242,7 @@ UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength) { ; /*DO NOTHING*/ } + chRtn1 = chRtn; } else { @@ -355,6 +362,7 @@ UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength) { ; /*DO NOTHING*/ } + chRtn2 = chRtn; } break; } @@ -469,6 +477,7 @@ UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength) { ; /*DO NOTHING*/ } + chRtn3 = chRtn; break; } case MSG_TYPE_EA_CANCLE_FIRST:/* ɢȡ״Ϣ */ @@ -580,6 +589,7 @@ UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength) { ; } + chRtn1 = chRtn; } else { @@ -682,6 +692,7 @@ UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength) { ; } + chRtn2 = chRtn; } break; } @@ -801,7 +812,7 @@ UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength) { ; } - + chRtn3 = chRtn; break; } case MSG_TYPE_WLB_SET_FIRST: /* ȫгƶһ */ @@ -923,6 +934,7 @@ UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength) { ; } + chRtn1 = chRtn; } else { @@ -1039,6 +1051,7 @@ UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength) { ; } + chRtn2 = chRtn; } break; } @@ -1169,7 +1182,7 @@ UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength) { ; } - + chRtn3 = chRtn; break; } case MSG_TYPE_DA_CANCLE_FIRST:/* ѹȡ״Ϣ */ @@ -1281,6 +1294,7 @@ UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength) { ; } + chRtn1 = chRtn; } else { @@ -1383,6 +1397,7 @@ UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength) { ; } + chRtn2 = chRtn; } break; } @@ -1502,12 +1517,13 @@ UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength) { ; } - + chRtn3 = chRtn; break; } default: { chRtn = CI_ERROR; + chRtn3 = CI_ERROR; break; } } @@ -1545,20 +1561,40 @@ UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength) } else { - ClearAtsMsgFirst(); - ClearAtsMsgSecond(); - ClearAtsEaMsgFirst(); - ClearAtsEaMsgSecond(); - ClearAtsWlbMsgFirst(); - ClearAtsWlbMsgSecond(); - ClearAtsDaMsgFirst(); - ClearAtsDaMsgSecond(); - ClearSndAtsScreenFstCfmMsg(); - ClearSndAtsEaFstCfmMsg(); - ClearSndAtsWlbFstCfmMsg(); - ClearSndAtsDaFstCfmMsg(); - } + /*УǷӦص洢*/ + if (CI_ERROR == chRtn1) + { + ClearAtsMsgFirst(); + ClearAtsEaMsgFirst(); + ClearAtsWlbMsgFirst(); + ClearAtsDaMsgFirst(); + } + if (CI_ERROR == chRtn2) + { + ClearSndAtsScreenFstCfmMsg(); + ClearSndAtsEaFstCfmMsg(); + ClearSndAtsWlbFstCfmMsg(); + ClearSndAtsDaFstCfmMsg(); + } + if (CI_ERROR == chRtn3) + { + ClearAtsMsgFirst(); + ClearAtsEaMsgFirst(); + ClearAtsWlbMsgFirst(); + ClearAtsDaMsgFirst(); + ClearSndAtsScreenFstCfmMsg(); + ClearSndAtsEaFstCfmMsg(); + ClearSndAtsWlbFstCfmMsg(); + ClearSndAtsDaFstCfmMsg(); + ClearAtsMsgSecond(); + ClearAtsEaMsgSecond(); + ClearAtsWlbMsgSecond(); + ClearAtsDaMsgSecond(); + } + + } + return chRtn; } diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackOcData.c b/TSCP/src/APP/ciapp/ParsePack/ParsePackOcData.c index 622e8c6..8b30406 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackOcData.c +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackOcData.c @@ -253,7 +253,7 @@ UINT8 PackCiToOcData( UINT8 deviceId) UINT8 chMainCotrolOCId = 0U; UINT8 chControlCmd = 0U; UINT8 chControlCmdNum = 0u; - UINT16 cmdIndex = 0u; + UINT32 cmdIndex = 0u; UINT8 chOcOutControlCmd = 0u; UINT8 chOcFindPostionCmd = 0u; UINT8 chLocalCiOCSswitch = 0u; @@ -348,11 +348,11 @@ UINT8 PackCiToOcData( UINT8 deviceId) {/*OC-SҵǰأѰ*/ drvCmd = OC_SWITCH_DRIVE_POS_KEEP;/**/ - chOcOutControlCmd = GetSwitchThisOcOutControlCmd(pOcData->OcDevices[kk].DeviceId, pOcData->OcId); + chOcOutControlCmd = GetSwitchThisOcOutControlCmd(pOcData->OcDevices[kk].DeviceId, (UINT8)pOcData->OcId); if (MAIN_CONTROL == chOcOutControlCmd) { - chOcFindPostionCmd = GetSwitchThisOcFindPostionCmd(pOcData->OcDevices[kk].DeviceId, pOcData->OcId); + chOcFindPostionCmd = GetSwitchThisOcFindPostionCmd(pOcData->OcDevices[kk].DeviceId, (UINT8)pOcData->OcId); drvCmd = ConvertSwitchFindPosToSwFindCmd(chOcFindPostionCmd); } } @@ -680,8 +680,8 @@ UINT8 PackCiToOcData( UINT8 deviceId) ii += 2u; if (OC_S_ON == chLocalCiOCSswitch) {/*OS-Sش*/ - chControlCmd = GetSwitchThisOcOutControlCmd(pOcData->OcDevices[kk].DeviceId, pOcData->OcId); - if ((MAIN_CONTROL == chControlCmd) || (STANDBY_CONTROL == chControlCmd) || (NO_CONTROL_FUN == chControlCmd)) + chControlCmd = GetSwitchThisOcOutControlCmd(pOcData->OcDevices[kk].DeviceId, (UINT8)pOcData->OcId); + if ((MAIN_CONTROL == chControlCmd) || (STANDBY_CONTROL == chControlCmd)) { Ci2OcDataBuffer[ii] = chControlCmd; } @@ -701,6 +701,7 @@ UINT8 PackCiToOcData( UINT8 deviceId) } default: {/*ִ*/ + break; } } } @@ -1198,7 +1199,7 @@ UINT8 ParseOcToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength,const U UINT32 dwUpToMainCyc = 0U;/*ں*/ UINT32 CiRecvOcSN = 0U;/*ͬCIOCں*/ HLHTHeadContextStru* pstrHlhtHeadCtx = NULL; /*CIͬĻͨͷ*/ - UINT32 dwMainStandbyState = 0U; + UINT8 dwMainStandbyState = 0U; UINT8 chSwitchBelongOThisOCRet = 0U; @@ -1262,7 +1263,7 @@ UINT8 ParseOcToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength,const U localCiId = GetSystemParaLocalCiId(); /*ȡID*/ wCiName = (CI_SYSTEM_TYPE_RCI)* 256U + localCiId; - headRet = HLHTRecvCommonPacketHeadCheck(ocName, wCiName, CI_OC_INTERFACE_INFOTYPE, CI_OC_PRTCL_VER, &hlhtGalHead, &errCode, 0u, CI_SYSTEM_TYPE_OC); + headRet = HLHTRecvCommonPacketHeadCheck(ocName, wCiName, CI_OC_INTERFACE_INFOTYPE, (UINT8)CI_OC_PRTCL_VER, &hlhtGalHead, &errCode, 0u, CI_SYSTEM_TYPE_OC); transmitBadEnsureTime = GetCiAndOcTransmitBadEnsureTime(); debug_infor_printf((const)"\nOC %d GAL Check Result:%d errCode:%d\n", systemId, headRet, errCode); /*0x55ȷ0xaa0x33ʼͨ֡*/ @@ -1302,7 +1303,7 @@ UINT8 ParseOcToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength,const U { chUsableCycCheck = CI_SUCCESS; } - if (0U < ocInfoRemainValidity) + if (0 < ocInfoRemainValidity) { /*Ӧ*/ wApplyDataLenth = ShortFromChar(&dataBuf[ii]);/*Ӧòݳ*/ @@ -2172,7 +2173,7 @@ INT16 GetIndexBySignalId(UINT16 sigId) * ˵ UINT16 swId ID,UINT8 ocId OCID * ֵ */ -INT16 GetIndexBySwitchId(UINT16 swId,UINT16 ocId) +INT16 GetIndexBySwitchId(UINT16 swId,UINT8 ocId) { INT16 retIndex = -1; @@ -2180,7 +2181,7 @@ INT16 GetIndexBySwitchId(UINT16 swId,UINT16 ocId) for (i=0u;iDeviceType == OC_DEVICE_TYPE_SIGNAL) {/*źŻ*/ ind = GetIndexBySignalId(pOcDevice->DeviceId); - if ((ind >=0) && (OC_DEVICE_TYPE_SIGNAL == pOcDevice->DeviceType)) + if (ind >=0) { if ((m_Signals[ind].OcId == pOcDevice->OcId) && (m_Signals[ind].DeviceId == pOcDevice->DeviceId)) @@ -2429,18 +2431,18 @@ void ConvertOcOriginDataToOcSigSwDev(UINT8 devId) m_Switches[ind].MainStandbyState[k] = pOcDevice->MainStandbyState[k]; } - chSwitchszPlusBoxId = GetSwitchszPlusBoxId(m_Switches[ind].DeviceId, m_Switches[ind].OcId); + chSwitchszPlusBoxId = GetSwitchszPlusBoxId(m_Switches[ind].DeviceId,(UINT8)m_Switches[ind].OcId); for (k = 0U; k < m_OcToCiOrginDataArr[i].chPbNum; k++) { if (chSwitchszPlusBoxId == m_OcToCiOrginDataArr[i].szPlusBox[k].chPbId) { if (SWITCH_BOX_NORMAL == m_OcToCiOrginDataArr[i].szPlusBox[k].chAsState) {/**/ - SetSwitchOcPlusBoxSateState(m_Switches[ind].DeviceId, m_Switches[ind].OcId, SWITCH_BOX_NORMAL); + SetSwitchOcPlusBoxSateState(m_Switches[ind].DeviceId, (UINT8)m_Switches[ind].OcId, SWITCH_BOX_NORMAL); } else { - SetSwitchOcPlusBoxSateState(m_Switches[ind].DeviceId, m_Switches[ind].OcId, SWITCH_BOX_FAULT); + SetSwitchOcPlusBoxSateState(m_Switches[ind].DeviceId, (UINT8)m_Switches[ind].OcId, SWITCH_BOX_FAULT); } break; } @@ -2449,7 +2451,7 @@ void ConvertOcOriginDataToOcSigSwDev(UINT8 devId) /*忨״̬*/ for (k = 0U; k < m_Switches[ind].BoardNum; k++) { - SetSwitchThisOCBoardState(m_Switches[ind].DeviceId, m_Switches[ind].OcId, m_Switches[ind].BoardAddr[k], m_Switches[ind].BoardState[k]); + SetSwitchThisOCBoardState(m_Switches[ind].DeviceId, (UINT8)m_Switches[ind].OcId, m_Switches[ind].BoardAddr[k], m_Switches[ind].BoardState[k]); } @@ -3012,6 +3014,7 @@ UINT8 OcInputSignalStateCheck(const UINT8 chInput) break; default: retVal = CI_ERROR; + break; } return retVal; } diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackOcData.h b/TSCP/src/APP/ciapp/ParsePack/ParsePackOcData.h index 08b273a..98effdc 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackOcData.h +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackOcData.h @@ -440,7 +440,7 @@ INT16 GetIndexBySignalId(UINT16 sigId); * ˵ UINT16 swId ID,UINT8 ocId OCID * ֵ */ -INT16 GetIndexBySwitchId(UINT16 swId, UINT16 ocId); +INT16 GetIndexBySwitchId(UINT16 swId, UINT8 ocId); /* * ͨidȡ diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackTmcData.c b/TSCP/src/APP/ciapp/ParsePack/ParsePackTmcData.c index 1eb06c9..92b90bc 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackTmcData.c +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackTmcData.c @@ -364,7 +364,7 @@ UINT8 ParseTmcToTiocDataFrame(UINT8* dataBuf, UINT16 dataLength, UINT8 systemId) retVal = CI_ERROR; } - if ((CI_ERROR == retVal) || (0u == galHeadSaved)) + if ((CI_ERROR == retVal) && (0u == galHeadSaved)) { /*ͨñͷ*/ ClearHlhtHeadCtx(CI_SYSTEM_TYPE_TMC, systemId); diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackVobcData.c b/TSCP/src/APP/ciapp/ParsePack/ParsePackVobcData.c index 2b35454..8668268 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackVobcData.c +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackVobcData.c @@ -288,6 +288,13 @@ static UINT8 WashTrainRequestCheck(UINT8 Data); */ static UINT8 HeadWashStopSteadyInfoCheck(UINT8 Data); /* +* ҶϴͣϢӿУ +* ˵ ΣUINT8 Data ҶϴͣϢ +* ֵ CI_ERROR: ӿУʧ +* CI_SUCESS: ӿУɹ +*/ +static UINT8 CoupingWashStopStedInfoCheck(UINT8 Data); +/* * ͣϴϢӿУ * ˵ ΣUINT8 Data ͣϴϢ * ֵ CI_ERROR: ӿУʧ @@ -2100,7 +2107,7 @@ static UINT8 PackCiToVobcDataHLHT(VobcToCiDataStruct *vobcToCiDataStru) UINT16 sigId = 0U; /*źŻID*/ UINT32 curCycleNum = Get2oo2CurCycleNum(); UINT32 appCycleTime = GetSystemParaAppCycleTime(); - UINT8 retVal = CI_SUCCESS; + UINT8 retVal = CI_ERROR; UINT8 localCiId = GetSystemParaLocalCiId(); /*ID*/ UINT32 ciEtcsId = 0U; UINT32 vobcEtcsId = 0U; @@ -2113,6 +2120,7 @@ static UINT8 PackCiToVobcDataHLHT(VobcToCiDataStruct *vobcToCiDataStru) UINT8 outStationSignalAllowOrNot = CI_VOBC_SIGNAL_DEFAULT; /*źŻֹ״̬*/ UINT32 signalIdInterConn = 0U; /*ͨ4ֽźŻID*/ UINT16 wTempIndex = 0U; /*ʱ¼±*/ + UINT8 chPackCheck = CI_SUCCESS; ci_vobcPrtclVersion = GetVersionOfVOBCToCI(); @@ -2158,7 +2166,7 @@ static UINT8 PackCiToVobcDataHLHT(VobcToCiDataStruct *vobcToCiDataStru) ii += 2U;/*Ԥֽ*/ - if ((VOBC_CI_INFO_TYPE_PSD_CONTROL == vobcToCiDataStru->appInfoType) && (curCycleNum == vobcToCiDataStru->ComStartCycle)) + if (VOBC_CI_INFO_TYPE_PSD_CONTROL == vobcToCiDataStru->appInfoType) {/*ֻеVOBC͵ϢſϢʱݣϢΪֻ֡ͱ֡ͷ31+6*/ LongToChar(vobcToCiDataStru->trackSecID,&CiToVobcDataBuffer[ii]);/*ظյĹID,CI-VOBCV2.9ӿĵ޸*/ ii += 4U; @@ -2305,16 +2313,18 @@ static UINT8 PackCiToVobcDataHLHT(VobcToCiDataStruct *vobcToCiDataStru) } else { - /*Ϣʹʲô*/ + /*֡*/ + chPackCheck = CI_ERROR; } /*ʽϢ*/ if (curCycleNum == vobcToCiDataStru->strBlocLinkData.chBlocLinkCycle) - { + { /*-ڿԺſ֡ͬʱеʽ-*/ if (0U == CiToVobcDataBuffer[33U]) { - /*ûϢ֡Ԥ*/ + chPackCheck = CI_SUCCESS; + /*ûϢ֡֡͵ʽ*/ ShortToChar(CI_VOBC_INFO_TYPE_BLOCLINK, &CiToVobcDataBuffer[33U]); /*ֽͣ*/ PackVobcBlocLinkData(CiToVobcDataBuffer, &ii, vobcToCiDataStru); /*ʽϢ*/ /*Ӧòݵıij */ @@ -2339,26 +2349,32 @@ static UINT8 PackCiToVobcDataHLHT(VobcToCiDataStruct *vobcToCiDataStru) { /**/ } + if (CI_SUCCESS == chPackCheck) + { + /*ͨñͷӦò㱨ܳ*/ + CiToVobcDataBuffer[29U] = (UINT8)((UINT8)((ii - 31U) >> 8U) & 0xffU); + CiToVobcDataBuffer[30U] = (UINT8)((ii - 31U) & 0xffU); - /*ͨñͷӦò㱨ܳ*/ - CiToVobcDataBuffer[29U] = (UINT8) ((UINT8)((ii - 31U) >> 8U) & 0xffU); - CiToVobcDataBuffer[30U] = (UINT8) ((ii - 31U) & 0xffU); - - dstDevId = ((UINT16)CI_SYSTEM_TYPE_VOBC << 8U) | vobcToCiDataStru->VobcId; - outnetSafeSendRtn = OutnetSafeSend(dstDevId, 0U, &CiToVobcDataBuffer[0U], ii); - if (1U == outnetSafeSendRtn) - { /*дгɹ*/ + dstDevId = ((UINT16)CI_SYSTEM_TYPE_VOBC << 8U) | vobcToCiDataStru->VobcId; + outnetSafeSendRtn = OutnetSafeSend(dstDevId, 0U, &CiToVobcDataBuffer[0U], ii); + if (1U == outnetSafeSendRtn) + { /*дгɹ*/ #ifdef LOGPRINT/*־ӡ*/ #ifdef PLATFORM_2OO2/*2oo2ƽ̨ӡ*/ - debug_infor_printf((const)"\nVOBC_CBTC_SEND:%d", ii); - debug_out_array(0xAA, CiToVobcDataBuffer, ii); + debug_infor_printf((const)"\nVOBC_CBTC_SEND:%d", ii); + debug_out_array(0xAA, CiToVobcDataBuffer, ii); #endif/*ƽ̨ӡ*/ #endif + } + else + { + /*дʧ*/ + retVal = CI_ERROR; + } } else { - /*дʧ*/ - retVal = CI_ERROR; + /**/ } } else @@ -3327,36 +3343,51 @@ static UINT8 PackCiToVobcDataFAOHLHT(VobcToCiDataStruct *vobcToCiDataStru) } } else - {/*վ̨ťVOBCվ̨޷ť״̬*/ - CiToVobcDataBuffer[ii] = PLATFORM_DEPAR_BUTTON_NO; + { + CiToVobcDataBuffer[ii] = PLATFORM_DEPAR_BUTTON_NO;;/*Щ·PSD÷ť̵*/ } /* IBP̷ť*/ if(PLATFORM_DEPAR_BUTTON_STATE_VALID != CiToVobcDataBuffer[ii]) { - if (PSD_BUTTON_PANGLU_STATE_VALID == psdButtonPangluState) + /*Чվ̨*/ + + /*IBPť״̬*/ + wibpBtnRelayId = GetIbpConfmRelayId(psdId); + if ((0u != wibpBtnRelayId) && (UINT16_MAX != wibpBtnRelayId)) { - ; /* վ̨ť·*/ - } - else - { - /*֮ǰťЧҪIBPť״̬*/ - wibpBtnRelayId = GetIbpConfmRelayId(psdId); - if ((0u != wibpBtnRelayId) && (UINT16_MAX != wibpBtnRelayId)) + if (PSD_BUTTON_PANGLU_STATE_VALID == psdButtonPangluState) { - chibpState = GetPsdButtonIbpState(psdId); /*IBPť״̬*/ - if(PLATFORM_DEPAR_BUTTON_STATE_VALID == chibpState) - { - CiToVobcDataBuffer[ii] = chibpState; - } - else - { - ; /*ԭ״̬*/ - } + /*վ̨ťVOBCվ̨ŰťĬֵ*/ + CiToVobcDataBuffer[ii] = PSD_RELATED_BUTTON_STATE_DEFAULT; } else { - ; /*ԭ״̬*/ + chibpState = GetPsdButtonIbpState(psdId); /*IBPť״̬ЧЧϣ*/ + /* Ч Ĭ Ч*/ + if (PLATFORM_DEPAR_BUTTON_STATE_INVALID == chibpState) + { + /*IBPť״̬Ч*/ + if (PSD_RELATED_BUTTON_STATE_DEFAULT == CiToVobcDataBuffer[ii]) + { + ;/*Ĭ*/ + } + else + { + /*վ̨ťЧVOBCIBPť״̬*/ + CiToVobcDataBuffer[ii] = chibpState; + } + } + else + { + /*IBPť״̬ЧĬϣVOBCվ̨IBPť״̬*/ + CiToVobcDataBuffer[ii] = chibpState; + } } + + } + else + { + ;/*IBPάּв*/ } } else @@ -6163,33 +6194,47 @@ static UINT8 PackCiToIvocPsdInfo(UINT8* pDataBuf, UINT16 *wDataLength) {/*վ̨ťVOBCվ̨޷ť״̬*/ pDataBuf[ii] = CI_IVOC_PSD_PDB_NO_BUTTON; } - /* IBP̷ť */ + /* IBP̷ť*/ if(PLATFORM_DEPAR_BUTTON_STATE_VALID != pDataBuf[ii]) { - if (PSD_BUTTON_PANGLU_STATE_VALID == psdButtonPangluState) + /*Чվ̨*/ + /*IBPť״̬*/ + wibpBtnRelayId = GetIbpConfmRelayId(wPsdId); + if ((0u != wibpBtnRelayId) && (UINT16_MAX != wibpBtnRelayId)) { - ;/* վ̨ť·*/ - } - else - { - /*֮ǰťЧҪIBPť״̬*/ - wibpBtnRelayId = GetIbpConfmRelayId(wPsdId); - if ((0u != wibpBtnRelayId) && (UINT16_MAX != wibpBtnRelayId)) + if (PSD_BUTTON_PANGLU_STATE_VALID == psdButtonPangluState) { - chibpState = GetPsdButtonIbpState(wPsdId); /*IBPť״̬*/ - if(PLATFORM_DEPAR_BUTTON_STATE_VALID == chibpState) - { - pDataBuf[ii] = chibpState; - } - else - { - ; /*ԭ״̬*/ - } + /*վ̨ťVOBCվ̨ŰťĬֵ*/ + pDataBuf[ii] = PSD_RELATED_BUTTON_STATE_DEFAULT; } else { - ; /*ԭ״̬*/ + chibpState = GetPsdButtonIbpState(wPsdId); /*IBPť״̬ЧЧϣ*/ + /* Ч Ĭ Ч*/ + if (PLATFORM_DEPAR_BUTTON_STATE_INVALID == chibpState) + { + /*IBPť״̬Ч*/ + if (PSD_RELATED_BUTTON_STATE_DEFAULT == pDataBuf[ii]) + { + ;/*Ĭ*/ + } + else + { + /*վ̨ťЧVOBCIBPť״̬*/ + pDataBuf[ii] = chibpState; + } + } + else + { + /*IBPť״̬ЧĬϣVOBCվ̨IBPť״̬*/ + pDataBuf[ii] = chibpState; + } } + + } + else + { + ;/*IBPάּв*/ } } else @@ -6885,7 +6930,7 @@ static UINT8 PackCiToIvocFLockInfo(UINT8* pDataBuf, UINT16 *wDataLength) chStartLockStat = GetStartFLockFlag(); /*ϵ״̬*/ - if (CI_START_LOCK_NO == chStartLockStat) + if (CI_START_FLOCK_NO == chStartLockStat) { pDataBuf[ii] = CI_IVOC_ALLLINE_FLOCK_NO; } @@ -7394,6 +7439,8 @@ static UINT8 PackCiToIvocSleepTrainInfo(UINT8* pDataBuf, UINT16 *wDataLength) UINT16 wEnvelopeSendSumIndex = 0u; UINT16 wTrainId = 0u; UINT8 chLinkLogicDirUpAndDown = 0u; + UINT8 chTrainVirHeadScreenFlag = 0U;/*ǰɸ־*/ + UINT8 chTrainVirTailScreenFlag = 0U;/*ɸ־*/ if ((NULL == pDataBuf) || (NULL == wDataLength)) @@ -7481,8 +7528,16 @@ static UINT8 PackCiToIvocSleepTrainInfo(UINT8* pDataBuf, UINT16 *wDataLength) { chRetVal = CI_ERROR; } - /*ǰɸ*/ - chHeadScreStat = strEnvelope.suspicHead; + /*ǰɸ*/ + chTrainVirHeadScreenFlag = GetTrainVirHeadScreenPassFlag(wTrainId); + if (TRAIN_VIR_SCREEN_PASS_FLAG_VALID == chTrainVirHeadScreenFlag) + { + chHeadScreStat = CI_IVOC_HEAD_SCREEN_PASS; + } + else + { + chHeadScreStat = strEnvelope.suspicHead; + } if (CI_IVOC_HEAD_SCREEN_PASS == chHeadScreStat) { @@ -7497,8 +7552,16 @@ static UINT8 PackCiToIvocSleepTrainInfo(UINT8* pDataBuf, UINT16 *wDataLength) chRetVal = CI_ERROR; debug_infor_printf((const)"\n PackCiToIvocSleepTrainInfo HeadScreState_Error, state : %d \n", chHeadScreStat); } - /*ɸ*/ - chTailScreStat = strEnvelope.suspicTail; + /*ɸ*/ + chTrainVirTailScreenFlag = GetTrainVirTailScreenPassFlag(wTrainId); + if (TRAIN_VIR_SCREEN_PASS_FLAG_VALID == chTrainVirTailScreenFlag) + { + chTailScreStat = CI_IVOC_TAIL_SCREEN_PASS; + } + else + { + chTailScreStat = strEnvelope.suspicTail; + } if (CI_IVOC_TAIL_SCREEN_PASS == chTailScreStat) { pDataBuf[ii] |= BIT_VAL_00000001B << 4; /*ɸѡͨ 01B*/ @@ -8983,34 +9046,49 @@ UINT8 PackCiToVobcDataFAOHLHToneSelf(VobcToCiDataStruct* vobcToCiDataStru) CiToVobcDataBuffer[ii] = PLATFORM_DEPAR_BUTTON_NO; } /* IBP̷ť*/ + if(PLATFORM_DEPAR_BUTTON_STATE_VALID != CiToVobcDataBuffer[ii]) { - if ((PSD_BUTTON_PANGLU_STATE_VALID == psdButtonPangluState) || (1u == flag)) + /*Чվ̨*/ + + /*IBPť״̬*/ + wibpBtnRelayId = GetIbpConfmRelayId(psdId); + if ((0u != wibpBtnRelayId) && (UINT16_MAX != wibpBtnRelayId)) { - ; - } - else - { - /*֮ǰťЧҪIBPť״̬*/ - wibpBtnRelayId = GetIbpConfmRelayId(psdId); - if ((0u != wibpBtnRelayId) && (UINT16_MAX != wibpBtnRelayId)) + if (PSD_BUTTON_PANGLU_STATE_VALID == psdButtonPangluState) { - chibpState = GetPsdButtonIbpState(psdId); /*IBPť״̬*/ - if(PLATFORM_DEPAR_BUTTON_STATE_VALID == chibpState) - { - CiToVobcDataBuffer[ii] = chibpState; - } - else - { - ; /*ԭ״̬*/ - } + /*վ̨ťVOBCվ̨ŰťĬֵ*/ + CiToVobcDataBuffer[ii] = PSD_RELATED_BUTTON_STATE_DEFAULT; } else { - ; /*ԭ״̬*/ + chibpState = GetPsdButtonIbpState(psdId); /*IBPť״̬ЧЧϣ*/ + /* Ч Ĭ Ч*/ + if (PLATFORM_DEPAR_BUTTON_STATE_INVALID == chibpState) + { + /*IBPť״̬Ч*/ + if (PSD_RELATED_BUTTON_STATE_DEFAULT == CiToVobcDataBuffer[ii]) + { + ;/*Ĭ*/ + } + else + { + /*վ̨ťЧVOBCIBPť״̬*/ + CiToVobcDataBuffer[ii] = chibpState; + } + } + else + { + /*IBPť״̬ЧĬϣVOBCվ̨IBPť״̬*/ + CiToVobcDataBuffer[ii] = chibpState; + } } + + } + else + { + ;/*IBPάּв*/ } - } else { @@ -9158,6 +9236,7 @@ UINT8 PackCiToVobcDataFAOHLHToneSelf(VobcToCiDataStruct* vobcToCiDataStru) CiToVobcDataBuffer[ii++] = washMachineState; /*5ϴϣ0x55޹ϣ0xaa*/ CiToVobcDataBuffer[ii++] = washModeState; /*ϴģʽ0x01:ͨϴ(ϴ)0x02:ϴȫϴ*/ CiToVobcDataBuffer[ii++] = chWashWorkModeBack; /*ϴģʽ÷5ȡֵ*/ + CiToVobcDataBuffer[ii++] = GetCoupingWashAllowState(washMachineId); /*Ҷϴͨ0x55ͨ0xaaֹͨ*/ } else {/*ûϴ,Ĭֵ,ϴ״̬ͲɼϢ*/ @@ -9168,6 +9247,7 @@ UINT8 PackCiToVobcDataFAOHLHToneSelf(VobcToCiDataStruct* vobcToCiDataStru) CiToVobcDataBuffer[ii++] = WASHMACHINE_COL_FALUT_NO_2; CiToVobcDataBuffer[ii++] = XTA_MODE_STATE_NO; CiToVobcDataBuffer[ii++] = WASH_WORKMODE_BACK_DEFAULT; + CiToVobcDataBuffer[ii++] = WASHMACHINE_COL_COUPINGWASH_NO; } ShortToChar(CI_VOBC_INFO_TYPE_FAO_INFO, &CiToVobcDataBuffer[33]);/*ȫԶϴֽ֡ͣ*/ @@ -9712,6 +9792,30 @@ static UINT8 HeadWashStopSteadyInfoCheck(UINT8 Data) return retVal; } +/* +* ҶϴͣϢӿУ +* ˵ ΣUINT8 Data ҶϴͣϢ +* ֵ CI_ERROR: ӿУʧ +* CI_SUCESS: ӿУɹ +*/ +static UINT8 CoupingWashStopStedInfoCheck(UINT8 Data) +{ + UINT8 coupingWashStopSteadyInfo = 0U; + UINT8 retVal = CI_ERROR; + coupingWashStopSteadyInfo = Data; + + if ((WASHMACHINE_COUPING_STEADY_YES == coupingWashStopSteadyInfo) || (WASHMACHINE_COUPING_STEADY_NO == coupingWashStopSteadyInfo)) + { + retVal = CI_SUCCESS; + } + else + { + retVal = CI_ERROR; + } + + return retVal; +} + /* * ͣϴϢӿУ * ˵ ΣUINT8 Data ͣϴϢ @@ -11863,11 +11967,23 @@ UINT8 ParseFAOHLHTOtherTypeData(const UINT16 appInfoType, UINT8* dataBuf, UINT16 { vobcToCiDataStru->chWashMachineWorkMode = dataBuf[ii]; ii += 1U; + chRetVal = CoupingWashStopStedInfoCheck(dataBuf[ii]); } else { chRetVal = CI_ERROR; } + + if (CI_SUCCESS == chRetVal) + { + vobcToCiDataStru->couplingWashStopSteadyInfo = dataBuf[ii]; + ii += 1U; + } + else + { + chRetVal = CI_ERROR; + } + } else if ((VOBC_CI_INFO_TYPE_HEART_FRAME == appInfoType) || (VOBC_CI_INFO_TYPE_LOGOUT_ASK == appInfoType)) {/*֡ע֡*/ @@ -14049,20 +14165,22 @@ void PackVobcBlocLinkData(UINT8* CiToVobcDataBuffer, UINT16* ii, VobcToCiDataStr UINT8 k = 0U; UINT32 dwTempHLHTId = 0U; UINT8 chEsbPLState = 0U; - wIndex = *ii; + if ((NULL != CiToVobcDataBuffer) && (NULL != ii) && (NULL != vobcToCiDataStru)) { + wIndex = *ii; + /*жǷƥ䵽·δƥ䵽·Ӧ*/ chRouteNum = GetBlocLinkRouteNum(vobcToCiDataStru->VobcId); pRouteBuf = GetBlocLinkRouteBuf(vobcToCiDataStru->VobcId); - debug_infor_printf((const)"\nVOBC %d BlocLink RouteNum: %d\n", VobcToCiDataStru->VobcId, chRouteNum); - for (k = 0U;k< chRouteNum;k++) - { - debug_infor_printf((const)"\nRouteID: %d\n", pRouteBuf[k]); - } - + if ((0U < chRouteNum) && (CI_VOBC_ROUTE_MAX >= chRouteNum) && (NULL != pRouteBuf)) { + for (k = 0U; k < chRouteNum; k++) + { + debug_infor_printf((const)"\nBlocLinkRouteID: %d\n", pRouteBuf[k]); + } + /*1 һCIͨ*/ PackNextCiId(CiToVobcDataBuffer, &wIndex,vobcToCiDataStru); @@ -14081,7 +14199,7 @@ void PackVobcBlocLinkData(UINT8* CiToVobcDataBuffer, UINT16* ii, VobcToCiDataStr { LongToChar(dwTempHLHTId, &CiToVobcDataBuffer[wIndex]); /*ID*/ wIndex += 4U; - chTempState = GetSwitchCurPosition(wSwitchBuffer[k]); /*״̬D*/ + chTempState = GetSwitchCurPosition(wSwitchBuffer[k]); /*״̬*/ if (SWITCH_POSITION_DINGWEI == chTempState) { CiToVobcDataBuffer[wIndex++] = CI_IVOC_SWITCH_POSTION_DING; @@ -14114,7 +14232,7 @@ void PackVobcBlocLinkData(UINT8* CiToVobcDataBuffer, UINT16* ii, VobcToCiDataStr { LongToChar(dwTempHLHTId, &CiToVobcDataBuffer[wIndex]); /*ID*/ wIndex += 4U; - CiToVobcDataBuffer[wIndex++] = GetPsdStateToVobc(wTempBuffer[k]); /*״̬D*/ + CiToVobcDataBuffer[wIndex++] = GetPsdStateToVobc(wTempBuffer[k]); /*״̬*/ } else { @@ -14161,17 +14279,8 @@ void PackVobcBlocLinkData(UINT8* CiToVobcDataBuffer, UINT16* ii, VobcToCiDataStr wIndex += 2U; for (k = 0U; k < chTempNum; k++) { - chRet = dquQueryOutDevId(QFUN_IDMAP_SPKS_ID, wTempBuffer[k], &dwTempHLHTId); - if (CI_SUCCESS == chRet) - { - LongToChar(dwTempHLHTId, &CiToVobcDataBuffer[wIndex]); /*ID*/ - wIndex += 4U; - } - else - { - LongToChar(0U, &CiToVobcDataBuffer[wIndex]); /*Чֵ*/ - wIndex += 4U; - } + LongToChar(wTempBuffer[k], &CiToVobcDataBuffer[wIndex]); /*ID*/ + wIndex += 4U; } /*7 ·ʱϢ*/ @@ -14450,7 +14559,13 @@ static UINT8 PackMoveAuthorityData(UINT8* CiToVobcDataBuffer, UINT16* ii, VobcTo UINT8 chRet = CI_ERROR; UINT16* pRouteBuf = NULL; UINT8 chRouteNum = 0U; - + UINT8 chTempState = 0U; + UINT8 chRouteDir = 0U; + UINT16 wRouteLastPhy = 0U; + UINT16 wLogBelongPhyId = 0U; + UINT8 chTrainDir = 0U; + struct_PathPoint end = { 0U }; /*г߼յ*/ + UINT16 wEndLogSecId = 0U; if ((NULL != CiToVobcDataBuffer) && (NULL != ii) && (NULL != vobcToCiDataStru)) { wIndex = *ii; @@ -14458,117 +14573,29 @@ static UINT8 PackMoveAuthorityData(UINT8* CiToVobcDataBuffer, UINT16* ii, VobcTo chRouteNum = GetBlocLinkRouteNum(vobcToCiDataStru->VobcId); pRouteBuf = GetBlocLinkRouteBuf(vobcToCiDataStru->VobcId); if ((NULL != pRouteBuf) && (0U < chRouteNum)) - { - chRet = CI_SUCCESS; - wEndSigId = GetRouteEndSignalId(pRouteBuf[chRouteNum - 1U]); /*ƥն˽·նźŻ*/ - wOverLapId = GetRouteOverlapLockedId(pRouteBuf[chRouteNum - 1U]); - chFlag = OverlapValidMaskCheck(wOverLapId); + { + chTempState = GetRouteType(pRouteBuf[chRouteNum - 1U]); + chRouteDir = GetRouteConfigDirection(pRouteBuf[chRouteNum - 1U]); + chTrainDir = GetAblTrainDir(vobcToCiDataStru->VobcId); + wRouteLastPhy = GetRouteLastPhySectionId(pRouteBuf[chRouteNum - 1U]); + + /*ͷλ*/ + end.wLinkId = GetAblTrainMaxHeadLink(vobcToCiDataStru->VobcId); + end.dwOffset = GetAblTrainMaxHeadOffset(vobcToCiDataStru->VobcId); + wEndLogSecId = GetPointBelongLogSec(end); + wLogBelongPhyId = GetLgcSecRelativePhySecId(wEndLogSecId); - if (CI_SUCCESS == chFlag) + /**·۷·ķ·ͬڽ·**/ + if ((ROUTE_TYPE_RETURN == chTempState) && (chRouteDir != chTrainDir) && (wRouteLastPhy == wLogBelongPhyId)) { - /*·Ч*/ - chSigProtectDir = GetSignalDirection(wEndSigId); /*źŻ*/ - chOverlapLogSum = GetOverlapLogicSectionSum(wOverLapId); - pOverlapLogBuf = GetOverlapLogicSectionBuf(wOverLapId); - if ((NULL != pOverlapLogBuf) && (0U < chOverlapLogSum) && (OVLP_LOGICSECTION_SUM_MAX > chOverlapLogSum)) - { - if (LINK_DIRECTION == chSigProtectDir) - { - /*նźŻlinkһ£ȫȡյlink,link*/ - wLinkId = GetLgcSecTmnlLink(pOverlapLogBuf[chOverlapLogSum - 1U]); - chRet = dquQueryOutDevId(QFUN_IDMAP_TRACKSEC_ID, wLinkId, &dwLinkHLHTId); - if (CI_SUCCESS == chRet) - { - /***鰲ȫλ*/ - LongToChar(dwLinkHLHTId, &CiToVobcDataBuffer[wIndex]); - wIndex += 4U; - dwlinkLength = GetLgcSecTmnlOffset(pOverlapLogBuf[chOverlapLogSum - 1U]); - LongToChar(dwlinkLength, &CiToVobcDataBuffer[wIndex]); - wIndex += 4U; - - /*նźŻlinkһ£ϰȡlink,0*/ - wLinkId = GetLgcSecOrgnLink(pOverlapLogBuf[0U]); - chRet = dquQueryOutDevId(QFUN_IDMAP_TRACKSEC_ID, wLinkId, &dwLinkHLHTId); - if (CI_SUCCESS == chRet) - { - /***ϰλ*/ - LongToChar(dwLinkHLHTId, &CiToVobcDataBuffer[wIndex]); - wIndex += 4U; - LongToChar(0U, &CiToVobcDataBuffer[wIndex]); - wIndex += 4U; - - } - else - { - chRet = CI_ERROR; - } - - } - else - { - chRet = CI_ERROR; - } - - } - else if (NOT_LINK_DIRECTION == chSigProtectDir) - { - /*նźŻlink෴ȫȡlink,0*/ - wLinkId = GetLgcSecOrgnLink(pOverlapLogBuf[chOverlapLogSum - 1U]); - chRet = dquQueryOutDevId(QFUN_IDMAP_TRACKSEC_ID, wLinkId, &dwLinkHLHTId); - if (CI_SUCCESS == chRet) - { - /***鰲ȫλ*/ - LongToChar(dwLinkHLHTId, &CiToVobcDataBuffer[wIndex]); - wIndex += 4U; - LongToChar(0U, &CiToVobcDataBuffer[wIndex]); - wIndex += 4U; - - /*նźŻlink෴ϰȡlink,link*/ - wLinkId = GetLgcSecTmnlLink(pOverlapLogBuf[0U]); - chRet = dquQueryOutDevId(QFUN_IDMAP_TRACKSEC_ID, wLinkId, &dwLinkHLHTId); - if (CI_SUCCESS == chRet) - { - /***ϰλ*/ - LongToChar(dwLinkHLHTId, &CiToVobcDataBuffer[wIndex]); - wIndex += 4U; - dwlinkLength = GetLgcSecTmnlOffset(pOverlapLogBuf[chOverlapLogSum - 1U]); - LongToChar(dwlinkLength, &CiToVobcDataBuffer[wIndex]); - wIndex += 4U; - } - else - { - chRet = CI_ERROR; - } - } - else - { - chRet = CI_ERROR; - } - - - } - else - { - chRet = CI_ERROR; - } - } - else - { - chRet = CI_ERROR; - } - } - else - { - /*鰲ȫΪ·նźŻlink,linkƫ*/ - wLinkId = GetSignalProtectLink(wEndSigId); - chRet = dquQueryOutDevId(QFUN_IDMAP_TRACKSEC_ID, wLinkId, &dwLinkHLHTId); + /*һ·֮δƥ䵽۳·ȫ鳵ĴǰϰĬֵ*/ + chRet = dquQueryOutDevId(QFUN_IDMAP_TRACKSEC_ID, vobcToCiDataStru->strBlocLinkData.wTrainMaxSafeHeadLink, &dwLinkHLHTId); if (CI_SUCCESS == chRet) { /***鰲ȫλ*/ LongToChar(dwLinkHLHTId, &CiToVobcDataBuffer[wIndex]); wIndex += 4U; - dwlinkLength = GetSignalProtectLinkOff(wEndSigId); - LongToChar(dwlinkLength, &CiToVobcDataBuffer[wIndex]); + LongToChar(vobcToCiDataStru->strBlocLinkData.dwTrainMaxSafeHeadOffset, &CiToVobcDataBuffer[wIndex]); wIndex += 4U; /***ϰĬֵ*/ @@ -14583,7 +14610,134 @@ static UINT8 PackMoveAuthorityData(UINT8* CiToVobcDataBuffer, UINT16* ii, VobcTo } } + else + { + chRet = CI_SUCCESS; + wEndSigId = GetRouteEndSignalId(pRouteBuf[chRouteNum - 1U]); /*ƥն˽·նźŻ*/ + wOverLapId = GetRouteOverlapLockedId(pRouteBuf[chRouteNum - 1U]); + chFlag = OverlapValidMaskCheck(wOverLapId); + + if (CI_SUCCESS == chFlag) + { + /*·Ч*/ + chSigProtectDir = GetSignalDirection(wEndSigId); /*źŻ*/ + chOverlapLogSum = GetOverlapLogicSectionSum(wOverLapId); + pOverlapLogBuf = GetOverlapLogicSectionBuf(wOverLapId); + if ((NULL != pOverlapLogBuf) && (0U < chOverlapLogSum) && (OVLP_LOGICSECTION_SUM_MAX > chOverlapLogSum)) + { + if (LINK_DIRECTION == chSigProtectDir) + { + /*նźŻlinkһ£ȫȡյlink,link*/ + wLinkId = GetLgcSecTmnlLink(pOverlapLogBuf[chOverlapLogSum - 1U]); + chRet = dquQueryOutDevId(QFUN_IDMAP_TRACKSEC_ID, wLinkId, &dwLinkHLHTId); + if (CI_SUCCESS == chRet) + { + /***鰲ȫλ*/ + LongToChar(dwLinkHLHTId, &CiToVobcDataBuffer[wIndex]); + wIndex += 4U; + dwlinkLength = GetLgcSecTmnlOffset(pOverlapLogBuf[chOverlapLogSum - 1U]); + LongToChar(dwlinkLength, &CiToVobcDataBuffer[wIndex]); + wIndex += 4U; + + /*նźŻlinkһ£ϰȡlink,0*/ + wLinkId = GetLgcSecOrgnLink(pOverlapLogBuf[0U]); + chRet = dquQueryOutDevId(QFUN_IDMAP_TRACKSEC_ID, wLinkId, &dwLinkHLHTId); + if (CI_SUCCESS == chRet) + { + /***ϰλ*/ + LongToChar(dwLinkHLHTId, &CiToVobcDataBuffer[wIndex]); + wIndex += 4U; + LongToChar(0U, &CiToVobcDataBuffer[wIndex]); + wIndex += 4U; + + } + else + { + chRet = CI_ERROR; + } + + } + else + { + chRet = CI_ERROR; + } + + } + else if (NOT_LINK_DIRECTION == chSigProtectDir) + { + /*նźŻlink෴ȫȡlink,0*/ + wLinkId = GetLgcSecOrgnLink(pOverlapLogBuf[chOverlapLogSum - 1U]); + chRet = dquQueryOutDevId(QFUN_IDMAP_TRACKSEC_ID, wLinkId, &dwLinkHLHTId); + if (CI_SUCCESS == chRet) + { + /***鰲ȫλ*/ + LongToChar(dwLinkHLHTId, &CiToVobcDataBuffer[wIndex]); + wIndex += 4U; + LongToChar(0U, &CiToVobcDataBuffer[wIndex]); + wIndex += 4U; + + /*նźŻlink෴ϰȡlink,link*/ + wLinkId = GetLgcSecTmnlLink(pOverlapLogBuf[0U]); + chRet = dquQueryOutDevId(QFUN_IDMAP_TRACKSEC_ID, wLinkId, &dwLinkHLHTId); + if (CI_SUCCESS == chRet) + { + /***ϰλ*/ + LongToChar(dwLinkHLHTId, &CiToVobcDataBuffer[wIndex]); + wIndex += 4U; + dwlinkLength = GetLgcSecTmnlOffset(pOverlapLogBuf[chOverlapLogSum - 1U]); + LongToChar(dwlinkLength, &CiToVobcDataBuffer[wIndex]); + wIndex += 4U; + } + else + { + chRet = CI_ERROR; + } + } + else + { + chRet = CI_ERROR; + } + + + } + else + { + chRet = CI_ERROR; + } + } + else + { + chRet = CI_ERROR; + } + } + else + { + /*鰲ȫΪ·նźŻlink,linkƫ*/ + wLinkId = GetSignalProtectLink(wEndSigId); + chRet = dquQueryOutDevId(QFUN_IDMAP_TRACKSEC_ID, wLinkId, &dwLinkHLHTId); + if (CI_SUCCESS == chRet) + { + /***鰲ȫλ*/ + LongToChar(dwLinkHLHTId, &CiToVobcDataBuffer[wIndex]); + wIndex += 4U; + dwlinkLength = GetSignalProtectLinkOff(wEndSigId); + LongToChar(dwlinkLength, &CiToVobcDataBuffer[wIndex]); + wIndex += 4U; + + /***ϰĬֵ*/ + LongToChar(0U, &CiToVobcDataBuffer[wIndex]); + wIndex += 4U; + LongToChar(UINT32_MAX, &CiToVobcDataBuffer[wIndex]); + wIndex += 4U; + } + else + { + chRet = CI_ERROR; + } + + } + } if (CI_SUCCESS == chRet) { *ii = wIndex; /**/ @@ -14592,6 +14746,7 @@ static UINT8 PackMoveAuthorityData(UINT8* CiToVobcDataBuffer, UINT16* ii, VobcTo { /**/ } + } else { @@ -15580,7 +15735,7 @@ static UINT8 GetPathFloodGateData(UINT16* pPathTempBuf, const UINT16 wTrainId) wLogBelongPhyId = GetLgcSecRelativePhySecId(pLogSecBuf[j]); chFloodGateNum = GetPhySecLocatedFloodSum(wLogBelongPhyId); phFloodGateBuf = GetPhySecLocatedFloodId(wLogBelongPhyId); - if ((CI_VOBC_OTHER_EQUIPMENT_MAX > (chTempNum + chFloodGateNum)) && (NULL != phFloodGateBuf)) + if ((((UINT16)CI_VOBC_OTHER_EQUIPMENT_MAX) > (((UINT16)chTempNum) + chFloodGateNum)) && (NULL != phFloodGateBuf)) { for (m = 0U;m < chFloodGateNum;m++) { @@ -15624,7 +15779,7 @@ static UINT8 GetPathFloodGateData(UINT16* pPathTempBuf, const UINT16 wTrainId) { chFloodGateNum = GetPhySecLocatedFloodSum(pRoutePhyBuf[k].PhysicalSectionId); phFloodGateBuf = GetPhySecLocatedFloodId(pRoutePhyBuf[k].PhysicalSectionId); - if ((CI_VOBC_OTHER_EQUIPMENT_MAX > (chTempNum + chFloodGateNum)) && (NULL != phFloodGateBuf)) + if ((((UINT16)CI_VOBC_OTHER_EQUIPMENT_MAX) > (((UINT16)chTempNum) + chFloodGateNum)) && (NULL != phFloodGateBuf)) { for (m = 0U; m < chFloodGateNum; m++) { @@ -15689,7 +15844,7 @@ static UINT8 GetPathFloodGateData(UINT16* pPathTempBuf, const UINT16 wTrainId) { chFloodGateNum = GetPhySecLocatedFloodSum(pOverLapPhyBuf[k]); phFloodGateBuf = GetPhySecLocatedFloodId(pOverLapPhyBuf[k]); - if ((CI_VOBC_OTHER_EQUIPMENT_MAX > (chTempNum + chFloodGateNum)) && (NULL != phFloodGateBuf)) + if ((((UINT16)CI_VOBC_OTHER_EQUIPMENT_MAX) > (((UINT16)chTempNum) + chFloodGateNum)) && (NULL != phFloodGateBuf)) { for (m = 0U; m < chFloodGateNum; m++) { @@ -15744,7 +15899,7 @@ static UINT8 GetPathFloodGateData(UINT16* pPathTempBuf, const UINT16 wTrainId) static UINT8 GetDestinationType(UINT8 chRouteNum, UINT16* pRouteBuf) { UINT8 chTempState = 0U; - UINT8 chRet = 0U; + UINT8 chRet = 0xff; if ((NULL != pRouteBuf) && (CI_VOBC_ROUTE_MAX >= chRouteNum) && (0U < chRouteNum)) { chTempState = GetRouteType(pRouteBuf[chRouteNum - 1U]); @@ -15832,45 +15987,54 @@ static UINT8 PackCiToIvocComErrRcInfo(UINT8* pDataBuf, UINT16* wDataLength) chTransRciSum = GetCiTransmitSpecifySysDevSum(CI_SYSTEM_TYPE_RC); pTransRciId = GetCiTransmitSpecifySysDevBuf(CI_SYSTEM_TYPE_RC); - /*ݺϷ*/ - if (NULL != pTransRciId) + if (0U == chTransRciSum) { + /*RCûRCRCĿ0*/ chRetVal = CI_SUCCESS; - - for (jj = 0U; jj < chTransRciSum; jj++) - { - chNearRciCommState = GetCiTransmitState(CI_SYSTEM_TYPE_RC, jj); /*ȡRCͨ״̬*/ - - /*ͨ*/ - if ((TRANSMIT_2OO2_STATE_GOOD == chNearRciCommState) || (TRANSMIT_2OO2_STATE_LINK == chNearRciCommState)) - { - ; - } - else - { - /*ǰͨŹRCĿδ*/ - if (CI_IVOC_COM_ERR_RC_NUM_MAX > chComErrRcNum) - { - /*ͨŹϣ¼ǰRC ID*/ - wComRcId = ((CI_SYSTEM_TYPE_RC << 8U) || pTransRciId[jj]); - ShortToChar(wComRcId, &pDataBuf[ii]); - ii += 2U; - chComErrRcNum++; - } - else - { - chRetVal = CI_ERROR; - debug_infor_printf((const)"\n PackCiToIvocComErrRcInfo Error: chComErrRcNum more than Max\n"); - break; - } - } - } } else { - /*ݴ*/ - ; + /*ݺϷ*/ + if (NULL != pTransRciId) + { + chRetVal = CI_SUCCESS; + + for (jj = 0U; jj < chTransRciSum; jj++) + { + chNearRciCommState = GetCiTransmitState(CI_SYSTEM_TYPE_RC, pTransRciId[jj]); /*ȡRCͨ״̬*/ + + /*ͨ*/ + if (TRANSMIT_STATE_GOOD == chNearRciCommState) + { + ; + } + else + { + /*ǰͨŹRCĿδ*/ + if (CI_IVOC_COM_ERR_RC_NUM_MAX > chComErrRcNum) + { + /*ͨŹϣ¼ǰRC ID*/ + wComRcId = (UINT16)((CI_SYSTEM_TYPE_RC << 8U) | pTransRciId[jj]); + ShortToChar(wComRcId, &pDataBuf[ii]); + ii += 2U; + chComErrRcNum++; + } + else + { + chRetVal = CI_ERROR; + debug_infor_printf((const)"\n PackCiToIvocComErrRcInfo Error: chComErrRcNum more than Max\n"); + break; + } + } + } + } + else + { + /*ݴ*/ + ; + } } + } diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackZcData.c b/TSCP/src/APP/ciapp/ParsePack/ParsePackZcData.c index 98cc0c5..f42adca 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackZcData.c +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackZcData.c @@ -74,8 +74,8 @@ UINT8 ParseZcToCiDataFrame(UINT8* dataBuf, UINT16 dataLength, UINT8 systemId) zcName = (CI_SYSTEM_TYPE_ZC)*256U + systemId; ciName = (CI_SYSTEM_TYPE_RCI)*256U + localCiId; curntCycleNo = Get2oo2CurCycleNum(); - chDataType = GetLocalPublicDataType(); /*28.0.0.14·zcӿ*/ - if ((NULL != dataBuf) && (dataLength > 0u)) + chDataType = GetLocalPublicDataType(); /*ַ֧zcӿ*/ + if ((NULL != dataBuf) && (0U < dataLength)) { sourceId = GetCiTransmitSpecifySysDevBuf(CI_SYSTEM_TYPE_ZC);/*ȡ뱾ͨŵZCIDĿǰһֻһZCͨ*/ @@ -119,7 +119,7 @@ UINT8 ParseZcToCiDataFrame(UINT8* dataBuf, UINT16 dataLength, UINT8 systemId) /*ϢʱЧ*/ zcInfoRemainValidity = HLHTCommonMsgRemainingValidity(GetCiAndZcTransmitBadEnsureTime(), curntCycleNo, GetSystemParaAppCycleTime(), hlhtGalHead.recvOppMsgSN, hlhtGalHead.crntOwnMsgSN, hlhtGalHead.preOwnMsgSN, hlhtGalHead.comPeriod); - if (zcInfoRemainValidity > 0) + if (0 < zcInfoRemainValidity) { if (0u == hlhtGalHead.totalDataLen) { @@ -135,162 +135,247 @@ UINT8 ParseZcToCiDataFrame(UINT8* dataBuf, UINT16 dataLength, UINT8 systemId) { /*Ч*/ retVal = CI_SUCCESS; + if (DATA_TYPE_MAIN_BRANCH == chDataType) { - if (DATA_TYPE_MAIN_BRANCH == chDataType) + while (wTmpDataLen < hlhtGalHead.totalDataLen) { - while (wTmpDataLen < hlhtGalHead.totalDataLen) + /* һӦݳ */ + wMsgLen = ShortFromChar(&dataBuf[ii]); + + ii += 2u; + wTmpDataLen += 2U; + wTmpDataLen += wMsgLen; + + if (0u == wMsgLen) { - /* һӦݳ */ - wMsgLen = ShortFromChar(&dataBuf[ii]); - + ; /* ޴һ */ + } + else if (5u > wMsgLen) + { + /* Ȳ */ + retVal = CI_ERROR; + debug_infor_printf((const)"ParseZcToCiDataFrame_Error wMsgLen\n"); + } + else + { + /* ȡ */ + wMsgType = ShortFromChar(&dataBuf[ii]); ii += 2u; - wTmpDataLen += 2U; - wTmpDataLen += wMsgLen; - if (0u == wMsgLen) + /* Ԥ */ + ii += 2u; + + wMsgCheckLen = wMsgLen - 4u;/*ӦñĽȣɾԤ22ֽ*/ + switch (wMsgType) { - ; /* ޴һ */ - } - else if (5u > wMsgLen) - { - /* Ȳ */ + case ZC_TO_TIOC_MASK_MSG: + /* ZC-CIλϢ */ + retVal = ParseMaskData(&dataBuf[ii], wMsgCheckLen); + dwStep |= 0x10000U; + break; + case ZC_TO_TIOC_TSR_MSG: + /* ʱϢ */ + retVal = ParseZcTsrData(&dataBuf[ii], wMsgCheckLen); + dwStep |= 0x01000U; + break; + case ZC_TO_TIOC_WLB_MSG: + /* ƶϢ */ + retVal = ParseZcEbData(&dataBuf[ii], wMsgCheckLen); + dwStep |= 0x00100U; + break; + case ZC_TO_TIOC_SNOW_MSG: + /*ZC-CIѩģʽϢ*/ + retVal = ParseZcSnowData(&dataBuf[ii], wMsgCheckLen); + dwStep |= 0x00010U; + break; + case ZC_TO_TIOC_ITELINECUT_MSG: + /*ZC-CIITEгϢ*/ + retVal = ParseZcIteCutData(&dataBuf[ii], wMsgCheckLen); + dwStep |= 0x00001U; + break; + case ZC_TO_RC_CBTC_CROSS_MSG: + /*ZC-CICBTCгѹϢ*/ + retVal = ParseZcCbtcCrossData(&dataBuf[ii], wMsgCheckLen); + dwStep |= 0x00002U; + break; + default: retVal = CI_ERROR; - debug_infor_printf((const)"ParseZcToCiDataFrame_Error wMsgLen\n"); - } - else - { - /* ȡ */ - wMsgType = ShortFromChar(&dataBuf[ii]); - ii += 2u; - - /* Ԥ */ - ii += 2u; - - wMsgCheckLen = wMsgLen - 4u;/*ӦñĽȣɾԤ22ֽ*/ - switch (wMsgType) - { - case ZC_TO_TIOC_MASK_MSG: - /* ZC-CIλϢ */ - retVal = ParseMaskData(&dataBuf[ii], wMsgCheckLen); - dwStep |= 0x10000U; - break; - case ZC_TO_TIOC_TSR_MSG: - /* ʱϢ */ - retVal = ParseZcTsrData(&dataBuf[ii], wMsgCheckLen); - dwStep |= 0x01000U; - break; - case ZC_TO_TIOC_WLB_MSG: - /* ƶϢ */ - retVal = ParseZcEbData(&dataBuf[ii], wMsgCheckLen); - dwStep |= 0x00100U; - break; - case ZC_TO_TIOC_SNOW_MSG: - /*ZC-CIѩģʽϢ*/ - retVal = ParseZcSnowData(&dataBuf[ii], wMsgCheckLen); - dwStep |= 0x00010U; - break; - case ZC_TO_TIOC_ITELINECUT_MSG: - /*ZC-CIITEгϢ*/ - retVal = ParseZcIteCutData(&dataBuf[ii], wMsgCheckLen); - dwStep |= 0x00001U; - break; - case ZC_TO_RC_CBTC_CROSS_MSG: - /*ZC-CICBTCгѹϢ*/ - retVal = ParseZcCbtcCrossData(&dataBuf[ii], wMsgCheckLen); - dwStep |= 0x00002U; - break; - default: - retVal = CI_ERROR; - break; - } - - if (CI_SUCCESS == retVal) - { - /* ɹݰ */ - ii += wMsgCheckLen; - } - else - { - debug_infor_printf((const)"ParseZcToCiDataFrame_Error Step: 0x%5x\n", dwStep); - ClearZcData(); /*ⲽûͨ*/ - } - } - - if (CI_ERROR == retVal) /*ʧ*/ - { break; } + + if (CI_SUCCESS == retVal) + { + /* ɹݰ */ + ii += wMsgCheckLen; + } else { - ; /*do nothing*/ + debug_infor_printf((const)"ParseZcToCiDataFrame_Error Step: 0x%5x\n", dwStep); + ClearZcData(); /*ⲽûͨ*/ } } - if (CI_SUCCESS == retVal) + + if (CI_ERROR == retVal) /*ʧ*/ { - /*Уݳ*/ - if (ii > dataLength) + break; + } + else + { + ; /*do nothing*/ + } + } + if (CI_SUCCESS == retVal) + { + /*Уݳ*/ + if (ii > dataLength) + { + retVal = CI_ERROR; + } + } + } + else if (DATA_TYPE_28_BRANCH == chDataType) + { + /*28֧߱λ02010205*/ + while (wTmpDataLen < hlhtGalHead.totalDataLen) + { + /* һӦݳ */ + wMsgLen = ShortFromChar(&dataBuf[ii]); + ii += 2U; + wTmpDataLen += 2U; + wTmpDataLen += wMsgLen; + + if (5U > wMsgLen) + { + /* Ȳ */ + retVal = CI_ERROR; + debug_infor_printf((const)"ParseZcToCiDataFrame_Error wMsgLen\n"); + } + else + { + /* ȡ */ + wMsgType = ShortFromChar(&dataBuf[ii]); + ii += 2U; + /* Ԥ */ + ii += 2U; + wMsgCheckLen = wMsgLen - 4U; + + switch (wMsgType) { + case ZC_TO_TIOC_MASK_MSG: + { + /* ZC-CIλϢ */ + retVal = ParseMaskData(&dataBuf[ii], wMsgCheckLen); + } + break; + case ZC_TO_TIOC_SNOW_MSG: + { + /*ZC-CIѩģʽϢ*/ + retVal = ParseZcSnowData(&dataBuf[ii], wMsgCheckLen); + } + break; + default: retVal = CI_ERROR; + break; + } + + if (CI_SUCCESS == retVal) + { + /* ɹݰ */ + ii += wMsgCheckLen; + } + else + { + debug_infor_printf((const)"ParseZcToCiDataFrame_Error MsgType: %d\n", wMsgType); + ClearZcData(); /*ⲽûͨ*/ } } + + if (CI_ERROR == retVal) /*ʧ*/ + { + break; + } + else + { + ; /*do nothing*/ + } + + } + if (CI_SUCCESS == retVal) + { + /*Уݳ*/ + if (ii > dataLength) + { + retVal = CI_ERROR; + } + } + } + else + { + /*23֧ޱ͡ͳȺԤ߱λ*/ + wMsgCheckLen = hlhtGalHead.totalDataLen; + retVal = ParseMaskData(&dataBuf[ii], wMsgCheckLen); + if (CI_ERROR == retVal) + { + debug_infor_printf((const)"\nParseZcToCiDataFrame_Error MaskOnly\n"); + ClearZcData(); /*ûͨ*/ } else { - /*ޱ͡ͳȺԤ߱λ0201*/ - wMsgCheckLen = hlhtGalHead.totalDataLen; - retVal = ParseMaskData(&dataBuf[ii], wMsgCheckLen); - if (CI_ERROR == retVal) - { - debug_infor_printf((const)"\nParseZcToCiDataFrame_Error MaskOnly\n"); - ClearZcData(); /*ûͨ*/ - } - else - { - ; /**/ - } + ii += wMsgCheckLen; /**/ } - - if (CI_SUCCESS == retVal) + } + if (CI_SUCCESS == retVal) + { + if (hlhtGalHead.totalDataLen != (ii - 31U)) { - /*ͨ*/ - dwCurCyc = Get2oo2CurCycleNum(); - funRet = SetCiTransmitRecvDataCycNum(localCiId, CI_SYSTEM_TYPE_ZC, sourceId[0], dwCurCyc); - if (CI_ERROR == funRet) - {/*ʧ*/ + retVal = CI_ERROR; + debug_infor_printf((const)"\nParseZcToCiDataFrame_Error totalDataLen\n"); + } + else + { + /**/ + } + } + if (CI_SUCCESS == retVal) + { + /*ͨ*/ + dwCurCyc = Get2oo2CurCycleNum(); + funRet = SetCiTransmitRecvDataCycNum(localCiId, CI_SYSTEM_TYPE_ZC, sourceId[0U], dwCurCyc); + if (CI_ERROR == funRet) + {/*ʧ*/ + } + else + {/*ڳɹ*/ + + /*ZCͨ״̬жZCǷͨж*/ + funRet = UpdateCiTransmitState(localCiId, CI_SYSTEM_TYPE_ZC, sourceId[0U]); + if (CI_ERROR == funRet) + { + /*ͨ״̬ʧ*/ } else - {/*ڳɹ*/ - - /*ZCͨ״̬жZCǷͨж*/ - funRet = UpdateCiTransmitState(localCiId, CI_SYSTEM_TYPE_ZC, sourceId[0]); - if (CI_ERROR == funRet) - { - /*ͨ״̬ʧ*/ - } - else - { - /*ͨ״̬ɹ*/ - } + { + /*ͨ״̬ɹ*/ } - - /*ݾУ飬Ҫ洢ͨñ*/ - SetHLHTHeadCtxComPeriod(CI_SYSTEM_TYPE_ZC, systemId, hlhtGalHead.comPeriod); - SetHLHTHeadCtxSrcCrntSN(CI_SYSTEM_TYPE_ZC, systemId, hlhtGalHead.crntOwnMsgSN); - SetHLHTHeadCtxSrcOppSN(CI_SYSTEM_TYPE_ZC, systemId, hlhtGalHead.recvOppMsgSN); - SetHLHTHeadCtxSrcOwnSN(CI_SYSTEM_TYPE_ZC, systemId, hlhtGalHead.preOwnMsgSN); - SetHLHTHeadCtxCiRcvSN(CI_SYSTEM_TYPE_ZC, systemId, curntCycleNo); - SetHLHTHeadCtxCiRcvLogId(CI_SYSTEM_TYPE_ZC, systemId, 0u); - - galHeadSaved = 1; } + + /*ݾУ飬Ҫ洢ͨñ*/ + SetHLHTHeadCtxComPeriod(CI_SYSTEM_TYPE_ZC, systemId, hlhtGalHead.comPeriod); + SetHLHTHeadCtxSrcCrntSN(CI_SYSTEM_TYPE_ZC, systemId, hlhtGalHead.crntOwnMsgSN); + SetHLHTHeadCtxSrcOppSN(CI_SYSTEM_TYPE_ZC, systemId, hlhtGalHead.recvOppMsgSN); + SetHLHTHeadCtxSrcOwnSN(CI_SYSTEM_TYPE_ZC, systemId, hlhtGalHead.preOwnMsgSN); + SetHLHTHeadCtxCiRcvSN(CI_SYSTEM_TYPE_ZC, systemId, curntCycleNo); + SetHLHTHeadCtxCiRcvLogId(CI_SYSTEM_TYPE_ZC, systemId, 0u); + + galHeadSaved = 1U; } } } } else if (HLHT_HEAD_INIT ==headRet) { - if (curntCycleNo > 0u)/*жŴ0Ϊ0Ч*/ + if (0U < curntCycleNo)/*жŴ0Ϊ0Ч*/ { SetHLHTHeadCtxComPeriod(CI_SYSTEM_TYPE_ZC, systemId, hlhtGalHead.comPeriod); SetHLHTHeadCtxSrcCrntSN(CI_SYSTEM_TYPE_ZC, systemId, hlhtGalHead.crntOwnMsgSN); @@ -299,7 +384,7 @@ UINT8 ParseZcToCiDataFrame(UINT8* dataBuf, UINT16 dataLength, UINT8 systemId) SetHLHTHeadCtxCiRcvSN(CI_SYSTEM_TYPE_ZC, systemId, curntCycleNo); SetHLHTHeadCtxCiRcvLogId(CI_SYSTEM_TYPE_ZC, systemId, 0u); - galHeadSaved = 1; + galHeadSaved = 1U; } retVal = CI_ERROR; @@ -1061,24 +1146,24 @@ UINT8 ParseZcSnowData(UINT8* dataBuf, UINT16 dataLen) */ UINT8 PackCiToZcData( UINT8 deviceId) { - UINT8 localCi = 0u; /*ID*/ - UINT8 CiToZcDataBuffer[CI_TO_ZC_DATA_LEN_MAX] = {0u};/*CIZC֡*/ - UINT16 SendMaskSum = 0u; - UINT16 ii = 0u; - UINT32 ciEtcsId = 0u; /*CIͨ*/ - UINT32 zcEtcsId = 0u; /*ZCͨ*/ - UINT32 emapCheckVer = 0u; /*УϢ*/ + UINT8 localCi = 0U; /*ID*/ + UINT8 CiToZcDataBuffer[CI_TO_ZC_DATA_LEN_MAX] = {0U};/*CIZC֡*/ + UINT16 SendMaskSum = 0U; + UINT16 ii = 0U; + UINT32 ciEtcsId = 0U; /*CIͨ*/ + UINT32 zcEtcsId = 0U; /*ZCͨ*/ + UINT32 emapCheckVer = 0U; /*УϢ*/ UINT8 retVal = CI_ERROR; UINT32 curCycleNum = Get2oo2CurCycleNum(); /*Ӧں*/ UINT32 appCycleTime = GetSystemParaAppCycleTime(); /*Ӧ*/ - UINT8 ci_zcPrtclVersion = 0u; - UINT16 dstDevId = 0; - UINT8 outnetSafeSendRtn = 0u; + UINT8 ci_zcPrtclVersion = 0U; + UINT16 dstDevId = 0U; + UINT8 outnetSafeSendRtn = 0U; UINT8 CIName2HlhtId = 0U; UINT8 ZCName2HlhtId = 0U; UINT8 CiEmapCheckVer = 0U; - UINT32 dwHlhtHSrcSN = 0u; - UINT32 dwHlhtHRcvSN = 0u; + UINT32 dwHlhtHSrcSN = 0U; + UINT32 dwHlhtHRcvSN = 0U; UINT16 totallenIndex = 0U; UINT16 wCrossFrameLen = 0U; UINT8 chDataType = 0U; @@ -1104,16 +1189,16 @@ UINT8 PackCiToZcData( UINT8 deviceId) if ((CI_SUCCESS == retVal)) { /*ȡҪ͵λֽ*/ - if ((GetSendMaskSum(CI_SYSTEM_TYPE_ZC) % 8u) == 0u) + if (0U == (GetSendMaskSum(CI_SYSTEM_TYPE_ZC) % 8U)) { - SendMaskSum = (UINT16) (GetSendMaskSum(CI_SYSTEM_TYPE_ZC) / 8u); + SendMaskSum = (UINT16) (GetSendMaskSum(CI_SYSTEM_TYPE_ZC) / 8U); } else { - SendMaskSum = (UINT16) (GetSendMaskSum(CI_SYSTEM_TYPE_ZC) / 8u + 1u); + SendMaskSum = (UINT16) (GetSendMaskSum(CI_SYSTEM_TYPE_ZC) / 8U + 1U); } - if (0u == SendMaskSum) + if (0U == SendMaskSum) { retVal = CI_ERROR; } @@ -1131,21 +1216,21 @@ UINT8 PackCiToZcData( UINT8 deviceId) /*ʼӦ֡*/ /*GALͷ*/ ShortToChar(CI_ZC_INTERFACE_INFOTYPE, &CiToZcDataBuffer[ii]);/*ӿϢ*/ - ii += 2u; + ii += 2U; LongToChar(ciEtcsId, &CiToZcDataBuffer[ii]);/*ͷʶϢ*/ - ii += 4u; + ii += 4U; LongToChar(zcEtcsId, &CiToZcDataBuffer[ii]);/*շʶϢ*/ - ii += 4u; + ii += 4U; LongToChar(emapCheckVer, &CiToZcDataBuffer[ii]);/*ӵͼ汾УϢ*/ - ii += 4u; + ii += 4U; LongToChar(curCycleNum, &CiToZcDataBuffer[ii]);/*Ϣк*/ - ii += 4u; + ii += 4U; ShortToChar((UINT16)appCycleTime, &CiToZcDataBuffer[ii]);/*豸ͨѶ*/ - ii += 2u; + ii += 2U; LongToChar(dwHlhtHSrcSN, &CiToZcDataBuffer[ii]);/*ԷϢкţrecvOppMsgSN¼յԷһϢеĶԷϢк*/ - ii += 4u; + ii += 4U; LongToChar(dwHlhtHRcvSN, &CiToZcDataBuffer[ii]);/*յһϢʱк*/ - ii += 4u; + ii += 4U; lineIdentity = GetCiFunctionSwitchConfig(VOBC_INTERFACE_IDENTITY);/*ȡ·ʶ*/ @@ -1159,20 +1244,22 @@ UINT8 PackCiToZcData( UINT8 deviceId) } totallenIndex = ii; - ii += 2u;/*ͨñͷеӦò㱨ܳ*/ - if (DATA_TYPE_MAIN_BRANCH == chDataType) + ii += 2U;/*ͨñͷеӦò㱨ܳ*/ + + if ((DATA_TYPE_MAIN_BRANCH == chDataType) || (DATA_TYPE_28_BRANCH == chDataType)) { - ii += 2u;/*ͨñͷеӦò㱨ij(0x202ij)*/ + ii += 2U;/*ͨñͷеӦò㱨ij(0x202ij)*/ ShortToChar(TIOC_TO_ZC_MASK_MSG, &CiToZcDataBuffer[ii]);/*ӿϢ*/ - ii += 2u; + ii += 2U; - ii += 2u; /*Ԥ*/ + ii += 2U; /*Ԥ*/ } else { - ;/*·0x202ijȡͼԤ*/ + /*23֧0x202ijȡͼԤ*/ } + /*λϢ*/ (void)MaskPack(CI_SYSTEM_TYPE_ZC,&CiToZcDataBuffer[ii]); @@ -1182,27 +1269,33 @@ UINT8 PackCiToZcData( UINT8 deviceId) { /*ͨӦò㱨ij(0x202ij)*/ /*ȥ2ֽӦñܳ+2ֽ0202֡*/ - ShortToChar((ii - (totallenIndex + 4u)), &CiToZcDataBuffer[totallenIndex + 2u]); + ShortToChar((ii - (totallenIndex + 4U)), &CiToZcDataBuffer[totallenIndex + 2U]); /*TACSгѹϢ*/ wCrossFrameLen = PackRcTacsCrossData(&CiToZcDataBuffer[ii]); ii += wCrossFrameLen; } + else if(DATA_TYPE_28_BRANCH == chDataType) + { + /*ͨӦò㱨ij(0x202ij)*/ + /*ȥ2ֽӦñܳ+2ֽ0202֡*/ + ShortToChar((ii - (totallenIndex + 4U)), &CiToZcDataBuffer[totallenIndex + 2U]); + } else { - /*nothing*/ + /*23֧ nothing*/ } /*ͨñͷӦò㱨ܳ*/ /*ȥ2ֽӦñܳ*/ - ShortToChar(ii - (totallenIndex + 2u), &CiToZcDataBuffer[totallenIndex]); + ShortToChar(ii - (totallenIndex + 2U), &CiToZcDataBuffer[totallenIndex]); /*ZC*/ ClearZcData(); - dstDevId = (UINT16)(CI_SYSTEM_TYPE_ZC << 8) | ((UINT16)deviceId); - outnetSafeSendRtn = OutnetSafeSend(dstDevId, 0u, &CiToZcDataBuffer[0], ii); - if (1u == outnetSafeSendRtn) + dstDevId = (UINT16)(CI_SYSTEM_TYPE_ZC << 8U) | ((UINT16)deviceId); + outnetSafeSendRtn = OutnetSafeSend(dstDevId, 0U, &CiToZcDataBuffer[0U], ii); + if (1U == outnetSafeSendRtn) { /*дгɹ*/ #ifdef LOGPRINT/*־ӡ*/ #ifdef PLATFORM_2OO2/*2oo2ƽ̨ӡ*/ @@ -1300,7 +1393,7 @@ static UINT16 PackRcTacsCrossData(UINT8 *pDataBuf) /*Ƿֵ*/ if ((0u < wSignalId) && (CROSS_SIGNAL_ID_MAX >= wSignalId) && (0u < wCrossTacsTrainId) && (TACS_CROSS_ID_MAX >= wCrossTacsTrainId) - && (ALL_TACS_CROSS_SUM_MAX >= wTacsCrossTrainSum)) + && (ALL_TACS_CROSS_SUM_MAX > wTacsCrossTrainSum)) { /*TACSгIDЧֵ*/ wTacsCrossSignalBuf[wTacsCrossTrainSum] = wSignalId; @@ -1348,14 +1441,6 @@ static UINT16 PackRcTacsCrossData(UINT8 *pDataBuf) /*ֵ*/ ShortToChar((Index - 2u), &pDataBuf[0u]); - /*ӡ*/ - debug_infor_printf((const)"SendTacsCross Len=%d:", Index); - for (i = 0u; i < Index; i++) - { - debug_infor_printf((const)"%x-", pDataBuf[i]); - } - debug_infor_printf((const)"\n"); - return Index; } @@ -1583,6 +1668,8 @@ static UINT8 ParseZcCbtcCrossData(UINT8* pDataBuf, UINT16 dataLen) if (NULL != pDataBuf) { cRetVal = CI_SUCCESS; + ZcToCiDataStru.cRecvCbtcCrossFrameTag = CI_SUCCESS; + wCrossNum = pDataBuf[ii]; ii++; diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackZcData.h b/TSCP/src/APP/ciapp/ParsePack/ParsePackZcData.h index bbbca0e..6f3367f 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackZcData.h +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackZcData.h @@ -66,6 +66,7 @@ typedef struct S_ZcToCiDataStruct UINT8 cIteLineCutState; /* ITEȫг״̬ */ UINT8 cAreaIteCutNum; /*ITEг*/ UINT16 szAreaIteCutId[ALL_AREA_SNOW_SUM_MAX]; /*ITEгID*/ + UINT8 cRecvCbtcCrossFrameTag; /*յCBTCгѹϢ֡־*/ UINT8 wCbtcCrossNum; /*CBTCгѹ*/ UINT16 wCbtcCrossSignalId[ALL_CBTC_CROSS_SUM_MAX]; /*CBTCгѹźŻID*/ UINT8 wCbtcCrossTrainId[ALL_CBTC_CROSS_SUM_MAX]; /*CBTCгѹгID*/ diff --git a/TSCP/src/APP/ciapp/QueryFiles/dquCIInit.c b/TSCP/src/APP/ciapp/QueryFiles/dquCIInit.c index de3aea2..c1aa19d 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dquCIInit.c +++ b/TSCP/src/APP/ciapp/QueryFiles/dquCIInit.c @@ -112,6 +112,17 @@ static UINT8 NonReturnStruFromDquStr(DSU_AR_STRU* pNonReturn, NonAutoReturnConfi */ static UINT8 LinkSpecialEaDataInit(CHAR* FSName); + +/* +*: ͨݳʼ +*: +*: +*ֵ: 0 ʧ +* 1 ɹ +* by cgh 20260516 +*/ +static UINT8 RciSerialCommDataInit(void); + /********************************************* *ܣʼ̵еĽṹ壬ʼϵͳݡͨݣ * ʼվźŻ߼/ݡʼ豸̵ݡʼ/߼ݡ @@ -127,7 +138,6 @@ UINT8 RelayInit(CHAR* FSName) UINT8 tmpSpeedLimitType = 0u; /*ʽʱݶȡ*/ UINT8 localCiPattern = 0u; /*CIģʽ*/ UINT8 cLocalWorkType = 0U; /*عģʽ*/ - UINT8 chDataType = 0U; /*ݽṹ*/ (void)memset(&RelayData,0,sizeof(RelayDataStruct_Config)); (void)memset(&LSData,0,sizeof(LSDataStruct)); @@ -137,25 +147,12 @@ UINT8 RelayInit(CHAR* FSName) tmpSpeedLimitType = GetCiFunctionSwitchConfig(BLK_TEMP_SPEED_LIM_CONF); /*ȡʱ*/ - chDataType = GetLocalPublicDataType(); - if (DATA_TYPE_MAIN_BRANCH == chDataType) + /* ݽṹ */ + funcRtn = TransmitDataStructInitNew(FSName); + if (0u == funcRtn) { - /* ݽṹ */ - funcRtn = TransmitDataStructInitNew(FSName); + debug_infor_printf((const) "TransmitDataStructInitNew fail.\r\n"); } - else - { - /* ݽṹ */ - /*ʼͨŹϵݽṹ*/ - funcRtn = TransmitRelationDataStructInit(FSName); - if (0u == funcRtn) - { - debug_infor_printf((const)"TransmitRelationDataStructInit fail.\r\n"); - } - } - - - /* ȡOC豸ϵ*/ funcRtn *= ReadVirCIWithOCRelationData(FSName); @@ -516,6 +513,10 @@ UINT8 RelayInit(CHAR* FSName) /*ηʼ*/ funcRtn *= AxisSecProtectSwitchInit(); + if (0u == funcRtn) + { + debug_infor_printf((const)"AxisSecProtectSwitchInit fail.\r\n"); + } return funcRtn; } @@ -699,9 +700,6 @@ UINT8 SystemParameterStructInit(CHAR* FSName) /*һʱٱа*/ dquCICfgDtStr.SystemParaStrNew.MaxSectionOfTsr = pCbtcConfigDataStru.MaxSectionOfTsr; - /*IVOC-OCͨŹжʱ(ms)*/ - dquCICfgDtStr.SystemParaStrNew.IvocOcCommunicationErrorTime = pCbtcConfigDataStru.IvocOcCommunicationErrorTime; - /*OC-TMCͨŹжʱ䣨ms*/ dquCICfgDtStr.SystemParaStrNew.TmcOcCommunicationErrorTime = pCbtcConfigDataStru.TmcOcCommunicationErrorTime; @@ -874,59 +872,51 @@ UINT8 SwitchConfigDataStructInit(CHAR * FSName) rtnvalue = 0u; } /*ӵͼʼɹִ*/ - else + if (0U != rtnvalue) { - if (CI_TRADITION_RAILWAY == lineIdentity) + for (i = 0u; i= SWITCH_SUM_MAX) { - if (i >= SWITCH_SUM_MAX) + rtnvalue = 0u; + break; + } + rtnvalue = SwitchCfgDtStruFromDquPointStr(dsuStaticHeadStru.pPointStru + i, &dquCICfgDtStr.SwchCfgDtStr[i]); + + if (1u == rtnvalue) + { + rtnvalue = SwitchCfgDtStruFromLSProHostStr(&dquCICfgDtStr.SwchCfgDtStr[i]); + if (0u == rtnvalue) { - rtnvalue = 0u; + debug_infor_printf((const)"SwitchCfgDtStruFromLSProHostStr switch %d fail.\r\n", dquCICfgDtStr.SwchCfgDtStr[i].SwitchId); break; } - rtnvalue = SwitchCfgDtStruFromDquPointStr(dsuStaticHeadStru.pPointStru+i,&dquCICfgDtStr.SwchCfgDtStr[i]); + else + { + } if (1u == rtnvalue) { - rtnvalue = SwitchCfgDtStruFromLSProHostStr(&dquCICfgDtStr.SwchCfgDtStr[i]); + rtnvalue = SwitchCfgLogTrackInitDquStr(dsuStaticHeadStru.pPointStru + i, &dquCICfgDtStr.SwchCfgDtStr[i]); if (0u == rtnvalue) { - debug_infor_printf((const)"SwitchCfgDtStruFromLSProHostStr switch %d fail.\r\n", dquCICfgDtStr.SwchCfgDtStr[i].SwitchId); - break; - } - else - { - - } - if (1u == rtnvalue) - { - rtnvalue = SwitchCfgLogTrackInitDquStr(dsuStaticHeadStru.pPointStru+i,&dquCICfgDtStr.SwchCfgDtStr[i]); - if(0u == rtnvalue) - { - debug_infor_printf((const)"SwitchCfgLogTrackInitDquStr switch %d fail.\r\n",dquCICfgDtStr.SwchCfgDtStr[i].SwitchId); - break; - } - } - else - { - debug_infor_printf((const)"SwitchCfgDtStruFromLSProHostStr switch %d fail.\r\n",dquCICfgDtStr.SwchCfgDtStr[i].SwitchId); + debug_infor_printf((const)"SwitchCfgLogTrackInitDquStr switch %d fail.\r\n", dquCICfgDtStr.SwchCfgDtStr[i].SwitchId); break; } } else { - debug_infor_printf((const)"SwitchCfgDtStruFromDquPointStr switch %d fail.\r\n",dquCICfgDtStr.SwchCfgDtStr[i].SwitchId); + debug_infor_printf((const)"SwitchCfgDtStruFromLSProHostStr switch %d fail.\r\n", dquCICfgDtStr.SwchCfgDtStr[i].SwitchId); break; } } - }/* zt ɾش 2022-02-15 */ - else - { - rtnvalue = 0u; + else + { + debug_infor_printf((const)"SwitchCfgDtStruFromDquPointStr switch %d fail.\r\n", dquCICfgDtStr.SwchCfgDtStr[i].SwitchId); + break; + } } - } - + }/* zt ɾش 2022-02-15 */ return rtnvalue; } /********************************************* @@ -1740,113 +1730,111 @@ UINT8 SwitchCfgDtStruFromDquPointStr(DSU_POINT_STRU* pPoint,SwitchConfigDataStru UINT16 i=0u; UINT16 j=0u; UINT8 rtnvalue = 0u; - UINT8 chDataType = DATA_TYPE_MAIN_BRANCH; - chDataType = GetLocalPublicDataType();/*ݽṹ*/ /*ڲ*/ if((NULL == pPoint) || (NULL == pSwitchCfgDtStr)) { /*ʧ*/ - return 0u; + rtnvalue = 0u; + } + else + { + rtnvalue = 1u; } - pSwitchCfgDtStr->SwitchId = pPoint->wId; - pSwitchCfgDtStr->BelongCiId = (UINT8)pPoint->wManagePhysicalCI; - pSwitchCfgDtStr->BelongVirCI = (UINT8)pPoint->wBelongVirCI;/**/ - pSwitchCfgDtStr->dwSwitchKilo = pPoint->dwPointKilo; /* */ - pSwitchCfgDtStr->chKiloType = pPoint->dwPointKiloPlueMinusSign; - if (pSwitchCfgDtStr->SwitchId < SWITCH_SUM_MAX) + if (1u == rtnvalue) { - - /*OCñݴ洢ݽṹ*/ - rtnvalue = SwitchCfgDtStruFromOCconfigStr(pSwitchCfgDtStr); - if (DATA_TYPE_MAIN_BRANCH == chDataType) + pSwitchCfgDtStr->SwitchId = pPoint->wId; + pSwitchCfgDtStr->BelongCiId = (UINT8)pPoint->wManagePhysicalCI; + pSwitchCfgDtStr->BelongVirCI = (UINT8)pPoint->wBelongVirCI;/**/ + pSwitchCfgDtStr->dwSwitchKilo = pPoint->dwPointKilo; /* */ + pSwitchCfgDtStr->chKiloType = pPoint->dwPointKiloPlueMinusSign; + if (pSwitchCfgDtStr->SwitchId < SWITCH_SUM_MAX) { + + + /*OCñݴ洢ݽṹ*/ + rtnvalue = SwitchCfgDtStruFromOCconfigStr(pSwitchCfgDtStr); + /*ͨ忨IDð忨ڱOCʹЩ*/ rtnvalue &= CalcuSwitchInsertionBoxData(pSwitchCfgDtStr); - } - else - {/*ִ*/ - } - if (0u == rtnvalue) - { - return rtnvalue; } - - - } - pSwitchCfgDtStr->DSwitchOtherId = (pPoint->DPointOtherId != 0xffffu)?pPoint->DPointOtherId:0U; - pSwitchCfgDtStr->SwitchPhySecId = 0xffu; - pSwitchCfgDtStr->SwitchIsThisLine = DEV_IS_THIS_LINE_YES; - /*cgh-ϲCID-2341-10*/ - pSwitchCfgDtStr->DsRelayId = 0u; - pSwitchCfgDtStr->DsQRelayId = 0u; - pSwitchCfgDtStr->DsHRelayId = 0u; - pSwitchCfgDtStr->ByPassRelayId = 0u; - pSwitchCfgDtStr->IbpDrvRelayId = 0u; - for(j=0u;jwId==(RelayData.pRelayPointStr+j)->wPointId) + if (1u == rtnvalue) { - pSwitchCfgDtStr->DbRelayId = (RelayData.pRelayPointStr+j)->wRelayDingBiaoId; - pSwitchCfgDtStr->FbRelayId = (RelayData.pRelayPointStr+j)->wRelayFanBiaoId; - pSwitchCfgDtStr->YcRelayId = (RelayData.pRelayPointStr+j)->wRelayYunCaoId; - pSwitchCfgDtStr->DcRelayId = (RelayData.pRelayPointStr+j)->wRelayDingCaoId; - pSwitchCfgDtStr->FcRelayId = (RelayData.pRelayPointStr+j)->wRelayFanCaoId; - pSwitchCfgDtStr->ZDbRelayId = (RelayData.pRelayPointStr+j)->wRelayZongDingBiaoId; - pSwitchCfgDtStr->ZFbRelayId = (RelayData.pRelayPointStr+j)->wRelayZongFanBiaoId; - pSwitchCfgDtStr->DFHRelayId = (RelayData.pRelayPointStr+j)->wDFHId; - pSwitchCfgDtStr->wShadowDbRelayId = (RelayData.pRelayPointStr + j)->wRelayShadowDingBiaoId; - pSwitchCfgDtStr->wShadowFbRelayId = (RelayData.pRelayPointStr + j)->wRelayShadowFanBiaoId; - if (pSwitchCfgDtStr->SwitchId>0u) + pSwitchCfgDtStr->DSwitchOtherId = (pPoint->DPointOtherId != 0xffffu) ? pPoint->DPointOtherId : 0U; + pSwitchCfgDtStr->SwitchPhySecId = 0xffu; + pSwitchCfgDtStr->SwitchIsThisLine = DEV_IS_THIS_LINE_YES; + /*cgh-ϲCID-2341-10*/ + pSwitchCfgDtStr->DsRelayId = 0u; + pSwitchCfgDtStr->DsQRelayId = 0u; + pSwitchCfgDtStr->DsHRelayId = 0u; + pSwitchCfgDtStr->ByPassRelayId = 0u; + pSwitchCfgDtStr->IbpDrvRelayId = 0u; + for (j = 0u; j < RelayDataLen.RelayPointStrLen; j++) { - if (0u == pSwitchCfgDtStr->DbRelayId) + if (pPoint->wId == (RelayData.pRelayPointStr + j)->wPointId) { - debug_infor_printf((const)"Switch %d DBJ %d not config.",pSwitchCfgDtStr->SwitchId,pSwitchCfgDtStr->DbRelayId); - DebugPrintAppError(ERROR_SWITCH_DBJ_NOT_CONFIG,CI_DEVICE_TYPE_SWITCH,pSwitchCfgDtStr->SwitchId,PRINT_ONCE); - } - if (0u == pSwitchCfgDtStr->FbRelayId) - { - debug_infor_printf((const)"Switch %d FBJ %d not config.",pSwitchCfgDtStr->SwitchId,pSwitchCfgDtStr->FbRelayId); - DebugPrintAppError(ERROR_SWITCH_FBJ_NOT_CONFIG,CI_DEVICE_TYPE_SWITCH,(UINT32)(pSwitchCfgDtStr->SwitchId),PRINT_ONCE); - } - if (0u == pSwitchCfgDtStr->YcRelayId) - { - debug_infor_printf((const)"Switch %d YCJ %d not config.",pSwitchCfgDtStr->SwitchId,pSwitchCfgDtStr->YcRelayId); - DebugPrintAppError(ERROR_SWITCH_YCJ_NOT_CONFIG,CI_DEVICE_TYPE_SWITCH,(UINT32)(pSwitchCfgDtStr->SwitchId),PRINT_ONCE); - } - if (0u == pSwitchCfgDtStr->DcRelayId) - { - debug_infor_printf((const)"Switch %d DCJ %d not config.",pSwitchCfgDtStr->SwitchId,pSwitchCfgDtStr->DcRelayId); - DebugPrintAppError(ERROR_SWITCH_DCJ_NOT_CONFIG,CI_DEVICE_TYPE_SWITCH,(UINT32)(pSwitchCfgDtStr->SwitchId),PRINT_ONCE); - } - if (0u == pSwitchCfgDtStr->FcRelayId) - { - debug_infor_printf((const)"Switch %d FCJ %d not config.",pSwitchCfgDtStr->SwitchId,pSwitchCfgDtStr->FcRelayId); - DebugPrintAppError(ERROR_SWITCH_FCJ_NOT_CONFIG,CI_DEVICE_TYPE_SWITCH,(UINT32)(pSwitchCfgDtStr->SwitchId),PRINT_ONCE); + pSwitchCfgDtStr->DbRelayId = (RelayData.pRelayPointStr + j)->wRelayDingBiaoId; + pSwitchCfgDtStr->FbRelayId = (RelayData.pRelayPointStr + j)->wRelayFanBiaoId; + pSwitchCfgDtStr->YcRelayId = (RelayData.pRelayPointStr + j)->wRelayYunCaoId; + pSwitchCfgDtStr->DcRelayId = (RelayData.pRelayPointStr + j)->wRelayDingCaoId; + pSwitchCfgDtStr->FcRelayId = (RelayData.pRelayPointStr + j)->wRelayFanCaoId; + pSwitchCfgDtStr->ZDbRelayId = (RelayData.pRelayPointStr + j)->wRelayZongDingBiaoId; + pSwitchCfgDtStr->ZFbRelayId = (RelayData.pRelayPointStr + j)->wRelayZongFanBiaoId; + pSwitchCfgDtStr->DFHRelayId = (RelayData.pRelayPointStr + j)->wDFHId; + pSwitchCfgDtStr->wShadowDbRelayId = (RelayData.pRelayPointStr + j)->wRelayShadowDingBiaoId; + pSwitchCfgDtStr->wShadowFbRelayId = (RelayData.pRelayPointStr + j)->wRelayShadowFanBiaoId; + if (pSwitchCfgDtStr->SwitchId > 0u) + { + if (0u == pSwitchCfgDtStr->DbRelayId) + { + debug_infor_printf((const)"Switch %d DBJ %d not config.", pSwitchCfgDtStr->SwitchId, pSwitchCfgDtStr->DbRelayId); + DebugPrintAppError(ERROR_SWITCH_DBJ_NOT_CONFIG, CI_DEVICE_TYPE_SWITCH, pSwitchCfgDtStr->SwitchId, PRINT_ONCE); + } + if (0u == pSwitchCfgDtStr->FbRelayId) + { + debug_infor_printf((const)"Switch %d FBJ %d not config.", pSwitchCfgDtStr->SwitchId, pSwitchCfgDtStr->FbRelayId); + DebugPrintAppError(ERROR_SWITCH_FBJ_NOT_CONFIG, CI_DEVICE_TYPE_SWITCH, (UINT32)(pSwitchCfgDtStr->SwitchId), PRINT_ONCE); + } + if (0u == pSwitchCfgDtStr->YcRelayId) + { + debug_infor_printf((const)"Switch %d YCJ %d not config.", pSwitchCfgDtStr->SwitchId, pSwitchCfgDtStr->YcRelayId); + DebugPrintAppError(ERROR_SWITCH_YCJ_NOT_CONFIG, CI_DEVICE_TYPE_SWITCH, (UINT32)(pSwitchCfgDtStr->SwitchId), PRINT_ONCE); + } + if (0u == pSwitchCfgDtStr->DcRelayId) + { + debug_infor_printf((const)"Switch %d DCJ %d not config.", pSwitchCfgDtStr->SwitchId, pSwitchCfgDtStr->DcRelayId); + DebugPrintAppError(ERROR_SWITCH_DCJ_NOT_CONFIG, CI_DEVICE_TYPE_SWITCH, (UINT32)(pSwitchCfgDtStr->SwitchId), PRINT_ONCE); + } + if (0u == pSwitchCfgDtStr->FcRelayId) + { + debug_infor_printf((const)"Switch %d FCJ %d not config.", pSwitchCfgDtStr->SwitchId, pSwitchCfgDtStr->FcRelayId); + DebugPrintAppError(ERROR_SWITCH_FCJ_NOT_CONFIG, CI_DEVICE_TYPE_SWITCH, (UINT32)(pSwitchCfgDtStr->SwitchId), PRINT_ONCE); + } + } + break; } } - break; - } - } - for(i=0u;iwRelatPointNum;j++) - { - if(pSwitchCfgDtStr->SwitchId == (dsuStaticHeadStru.pAxleSgmtStru+i)->wRelatPointId[j]) + rtnvalue = 0u; + for (i = 0u; i < dsuDataLenStru.wAxleSgmtLen; i++) { - pSwitchCfgDtStr->SwitchPhySecId = (dsuStaticHeadStru.pAxleSgmtStru+i)->wRelatePhysicalSgmtId; + for (j = 0u; j < (dsuStaticHeadStru.pAxleSgmtStru + i)->wRelatPointNum; j++) + { + if (pSwitchCfgDtStr->SwitchId == (dsuStaticHeadStru.pAxleSgmtStru + i)->wRelatPointId[j]) + { + pSwitchCfgDtStr->SwitchPhySecId = (dsuStaticHeadStru.pAxleSgmtStru + i)->wRelatePhysicalSgmtId; - /*ҵ̵ֱӷ*/ - rtnvalue = 1u; - return rtnvalue; + /*ҵ̵ֱӷ*/ + rtnvalue = 1u; + break; + } + } } } } - rtnvalue = 0u; return rtnvalue; } @@ -3915,13 +3903,6 @@ UINT8 PsdConfigDataStructInit(CHAR * FSName) UINT16 startAxisSectionWId = 0u; /*ʼ˼link*/ UINT16 endAxisSectionWId = 0u; /*ն˼link*/ UINT16 linkId = 0u; - UINT16 wPhySecId = 0U; - UINT8 chLogSectionSum = 0U; - UINT16 wLogSectionId = 0u; - UINT8 k = 0u; - INT16 rtVal = -1; - UINT16 wPhyIndex = 0U; - UINT16 wLogicSgmtIndex = 0U; callFun = dfsEmapInit (FSName); callFun *= InitRelay_ScreenStru (FSName); @@ -3991,57 +3972,10 @@ UINT8 PsdConfigDataStructInit(CHAR * FSName) } } - - /*ʼվ̨ŹESB*/ - wPhySecId = 0U; - wLogSectionId = 0U; - wPhyIndex = 0U; - wLogicSgmtIndex = 0U; - if (1U == rtnvalue) - { - wPhySecId = dquCICfgDtStr.PsdCfgDtStr[i].PsdRelationPhySecId; - if ((0U < wPhySecId) && (PHYSICAL_SECTION_SUM_MAX > wPhySecId)) - { - wPhyIndex = dsuPhysicalSgmtIndex[wPhySecId];/*ȡ*/ - wLogSectionId = dquCICfgDtStr.PsclSgmtCfgDtStr[wPhyIndex].LogSectionIdBuf[0];/*ƥһ߼μ*/ - - if ((0U < wLogSectionId) && (LOGIC_SECTION_SUM_MAX > wLogSectionId)) - { - wLogicSgmtIndex = dsuLogicSgmtIndex[wLogSectionId]; - } - else - { - rtnvalue = 0U;/*Ƿֵʼʧ*/ - } - } - else - { - rtnvalue = 0U;/*Ƿֵʼʧ*/ - } - } - - if (1U == rtnvalue) - { - for (k = 0u; k < dquCICfgDtStr.lgcSctCfgDtStr[wLogicSgmtIndex].logSecRltEsbSum; k++) - { - rtVal = SetNoRepeatDataToBuf(dquCICfgDtStr.PsdCfgDtStr[i].IncloudeEsbIdBuf, PSD_INCLUDE_ESB_NUM, dquCICfgDtStr.lgcSctCfgDtStr[wLogicSgmtIndex].logSecRltEsbBuf[k], dquCICfgDtStr.PsdCfgDtStr[i].IncloudeEsbNum); - if (-1 != rtVal) - { - dquCICfgDtStr.PsdCfgDtStr[i].IncloudeEsbNum = (UINT8)rtVal; - } - else - { - rtnvalue = 0u; - break; - } - } - } - - - + rtnvalue = PsdRelateEsbConfigDataInit(i); } } if (0u == rtnvalue) @@ -5733,7 +5667,7 @@ UINT8 RouteCfgDtStruFrmLSRouteStr( LS_RouteStruct * pLSRouteStr,RouteConfigDataS }/* zt ɾش 2022-02-15 */ else { - + rtnvalue = CI_ERROR; } } else @@ -6119,33 +6053,26 @@ UINT8 RouteCfgDtStruFrmLSRouteStr( LS_RouteStruct * pLSRouteStr,RouteConfigDataS } if(CI_SUCCESS == rtnvalue) { - if (CI_TRADITION_RAILWAY == lineIdentity) - {/*ͳǹ·*/ - /*·ȥΪ·նźŻڷһΣܲڣն赲źŻ*/ - routeEndSignal = dsuStaticHeadStru.pRouteStru[dsuRouteIndex[routeId]].wEndSignalId;/*·նźŻ*/ - if(SIGNAL_SUM_MAX >= dquCICfgDtStr.SgnlCfgDtStrLen) - { - for (i = 0u;i < dquCICfgDtStr.SgnlCfgDtStrLen;i++) - {/*źŻ*/ - if (routeEndSignal == dquCICfgDtStr.SgnlCfgDtStr[i].SignalId) - {/*ҵ·նźŻ*/ - pRouteCfgDtStr->RouteLeavePhySecId = dquCICfgDtStr.SgnlCfgDtStr[i].InFirstPhySecId; - break; - } - else - { - } + /*·ȥΪ·նźŻڷһΣܲڣն赲źŻ*/ + routeEndSignal = dsuStaticHeadStru.pRouteStru[dsuRouteIndex[routeId]].wEndSignalId;/*·նźŻ*/ + if (SIGNAL_SUM_MAX >= dquCICfgDtStr.SgnlCfgDtStrLen) + { + for (i = 0u; i < dquCICfgDtStr.SgnlCfgDtStrLen; i++) + {/*źŻ*/ + if (routeEndSignal == dquCICfgDtStr.SgnlCfgDtStr[i].SignalId) + {/*ҵ·նźŻ*/ + pRouteCfgDtStr->RouteLeavePhySecId = dquCICfgDtStr.SgnlCfgDtStr[i].InFirstPhySecId; + break; + } + else + { } } - else - { - rtnvalue = CI_ERROR; - } - } + } else { - /* zt ɾش 2022-02-15 */ - } + rtnvalue = CI_ERROR; + } } else { @@ -7487,8 +7414,8 @@ UINT8 RouteConfigDataStructInit(CHAR * FSName) for (i = 0u; i < dquCICfgDtStr.lgcSctCfgDtStrLen; i++) { execRet = LogRelateRouteDataInit(dquCICfgDtStr.RouteCfgDtStr, &(dquCICfgDtStr.lgcSctCfgDtStr[i]));/*߼ι·*/ + execRet *= LogRelateOverlapDataInit(dquCICfgDtStr.OvlapCfgDtStr, &(dquCICfgDtStr.lgcSctCfgDtStr[i]));/*߼ιμ*/ execRet *= LogRelateProSwDataInit(dquCICfgDtStr.RouteCfgDtStr, &(dquCICfgDtStr.lgcSctCfgDtStr[i]));/*߼ι*/ - execRet *= LogRelateOverlapDataInit(dquCICfgDtStr.OvlapCfgDtStr, &(dquCICfgDtStr.lgcSctCfgDtStr[i]));/*߼ι*/ if (execRet > 0u) { @@ -7575,190 +7502,21 @@ UINT8 RouteConfigDataStructInit(CHAR * FSName) } return rtnvalue; } - /********************************************* -*ܣнͨŹϵ豸IPȥݣÿ17ݣ -*˵Dataͨ -*ֵ0ʧܣ1ɹ -*********************************************/ -UINT8 TransmitRelationDataStruFrmSZ(UINT16 Data[]) -{ - UINT8 rtnvalue = 0u; - UINT16 i=0u; - UINT16 j =0u; - UINT16 Type = 0u; - UINT16 findIndex = 0u;/*ڼеzcdusͨŹϵҵ0δҵֵҵ*/ - UINT8 tmpCiId=0u; /*ʱci id*/ - UINT8 tmpOtherSysType =0u;/*ʱϵͳ*/ - UINT8 findFlag = 0u; /*ҵ־*/ - UINT16 chRcType = 0U; - /*ڲ*/ - if(NULL == Data) - { - /*ʧ*/ - return 0u; - } - else - { - } - if (RC_WORK_MODE_CI == CI_SYSTEM_TYPE_RCI) - { - chRcType = 0x3C00U; - } - else - { - chRcType = 0x3D00U; - } - if((chRcType != (Data[0]&0xFF00u))) - { - rtnvalue = 1u; - return rtnvalue; - } - else - { } -#if 0 - /*ڶЧݳ*/ - for(i=0u;i>8); - dquCICfgDtStr.TrsmtRlsDtStr[dquCICfgDtStr.TrsmtRlsDtStrLen].DeviceSum = 0; - dquCICfgDtStr.TrsmtRlsDtStr[dquCICfgDtStr.TrsmtRlsDtStrLen].DeviceIdBuf[dquCICfgDtStr.TrsmtRlsDtStr[dquCICfgDtStr.TrsmtRlsDtStrLen].DeviceSum] = (UINT8)(Data[2+i]&0x00FF); - dquCICfgDtStr.TrsmtRlsDtStr[dquCICfgDtStr.TrsmtRlsDtStrLen].DeviceSum++; - dquCICfgDtStr.TrsmtRlsDtStrLen++; - Type = (Data[2+i]&0xFF00); - } - /*ͬͨ豸ֻ¼һIDͺ(Ĭͬ豸дһ)*/ - else - { - dquCICfgDtStr.TrsmtRlsDtStr[dquCICfgDtStr.TrsmtRlsDtStrLen-1].DeviceIdBuf[dquCICfgDtStr.TrsmtRlsDtStr[dquCICfgDtStr.TrsmtRlsDtStrLen-1].DeviceSum] = (UINT8)(Data[2+i]&0x00FF); - dquCICfgDtStr.TrsmtRlsDtStr[dquCICfgDtStr.TrsmtRlsDtStrLen-1].DeviceSum++; - } - } -#endif - /*ڶЧݳ*/ - for(i=0u;i>8u); - - findFlag = 0u; - - for (j=0u;j>8u); - dquCICfgDtStr.TrsmtRlsDtStr[dquCICfgDtStr.TrsmtRlsDtStrLen].DeviceSum = 0u; - dquCICfgDtStr.TrsmtRlsDtStr[dquCICfgDtStr.TrsmtRlsDtStrLen].DeviceIdBuf[dquCICfgDtStr.TrsmtRlsDtStr[dquCICfgDtStr.TrsmtRlsDtStrLen].DeviceSum] = (UINT8)(Data[2u+i]&0x00FFu); - dquCICfgDtStr.TrsmtRlsDtStr[dquCICfgDtStr.TrsmtRlsDtStrLen].DeviceSum++; - dquCICfgDtStr.TrsmtRlsDtStrLen++; - Type = (Data[2u+i]&0xFF00u); - - - } - else if (1u == findFlag) - {/*ҵҵĽṹ豸*/ - dquCICfgDtStr.TrsmtRlsDtStr[findIndex].DeviceIdBuf[dquCICfgDtStr.TrsmtRlsDtStr[findIndex].DeviceSum] = (UINT8)(Data[2U+i]&0x00FFu); - dquCICfgDtStr.TrsmtRlsDtStr[findIndex].DeviceSum++; - } - else - { - /*Ƿֵ*/ - } - } - - - - rtnvalue = 1u; - return rtnvalue; -} - -/********************************************* -*ܣʼͨŹϵݽṹ壨OLD -*˵FSNameļָ -*ֵ0ʧܣ1ɹ -*********************************************/ -UINT8 TransmitRelationDataStructInit(CHAR* FSName) + *ܣʼͨŹϵݽṹ壨NEW + *˵FSNameļָ + *ֵ0ʧܣ1ɹ + *********************************************/ +UINT8 TransmitDataStructInitNew(CHAR *FSName) { UINT8 rtnValue = 0u; - UINT8* pDataAddr; /*ݵַ*/ - UINT32 DataSize; /*ݴСֽ*/ - UINT16 i,j; + UINT8 *pDataAddr = NULL; /*ݵַ*/ + UINT32 DataSize = 0u; /*ݴСֽ*/ UINT8 funcRtn = 0u; - UINT16 Data[ZC_DSU_TRANSMIT_DATA_LEN/2U]; - /*ȡ ͨŹϵ */ - funcRtn = dquGetConfigData(FSName,DEVICE_IP_TYPE, ZC_DSU_TRANSMIT_DATA_ID,&pDataAddr,&DataSize); - - if(funcRtn == 0u) - { - /*ʧ*/ - rtnValue = 0u; - return rtnValue; - } - /*ø*/ - if(DataSize%ZC_DSU_TRANSMIT_DATA_LEN != 0u) - { - rtnValue = 0u; - debug_infor_printf((const)"\nCI_DEVICE_IP_DATA,ZC_DSU_COMM,len %d not equal to fs",CI_SYSTEM_CI_FUNC_SWITCH_LEN); - DebugPrintAppError(ERROR_fs_columns_len_not_equal_to_ci_software,CI_DEVICE_TYPE_FS_TABLE,(DEVICE_IP_TYPE<<8)+ZC_DSU_TRANSMIT_DATA_ID,PRINT_ONCE); - return rtnValue; - } - for(i=0u;isrcCiId; cLocalWorkType = GetLocalRcWorkMode(); /* */ - if ((tmpLocalCiId < CI_SUM_MAX) && (tmpLocalCiId > 0u) + if ((CI_SUM_MAX > tmpLocalCiId) && (0U < tmpLocalCiId) && ((RC_WORK_MODE_TIOC == cLocalWorkType) || ((RC_WORK_MODE_CI == cLocalWorkType) && (CI_DEVICE_TYPE_CUTOFF_POINT != pDquCiTransmitStr->devType)))) { /* ĿIDǷѾӹ */ @@ -9083,6 +8857,10 @@ UINT8 ReadDquCiTransmitInfoToConfig(DquCiTransmitStruct *pDquCiTransmitStr) { dquCICfgDtStr.CiTransmitStrLen[tmpLocalCiId]++; } + else + { + /* */ + } pTmpCiTransConfig = &dquCICfgDtStr.CiTransmitStru[tmpLocalCiId][ii]; pTmpCiTransConfig->destCiId = pDquCiTransmitStr->dstCiId; pTmpCiTransConfig->srcCiId = pDquCiTransmitStr->srcCiId; @@ -9090,7 +8868,7 @@ UINT8 ReadDquCiTransmitInfoToConfig(DquCiTransmitStruct *pDquCiTransmitStr) switch (pDquCiTransmitStr->devType) { case CI_DEVICE_TYPE_SWITCH: /* */ - if ((pDquCiTransmitStr->devId > 0u) && (pDquCiTransmitStr->devId < SWITCH_SUM_MAX) && (pTmpCiTransConfig->switchNum < SWITCH_SUM_MAX)) + if ((0U < pDquCiTransmitStr->devId) && (SWITCH_SUM_MAX > pDquCiTransmitStr->devId) && (SWITCH_SUM_MAX > pTmpCiTransConfig->switchNum)) { pTmpCiTransConfig->switchIdBuf[pTmpCiTransConfig->switchNum] = pDquCiTransmitStr->devId; pTmpCiTransConfig->switchNum++; @@ -9102,7 +8880,7 @@ UINT8 ReadDquCiTransmitInfoToConfig(DquCiTransmitStruct *pDquCiTransmitStr) } break; case CI_DEVICE_TYPE_SIGNAL: /* źŻ */ - if ((pDquCiTransmitStr->devId > 0u) && (pDquCiTransmitStr->devId < SIGNAL_SUM_MAX) && (pTmpCiTransConfig->signalNum < SIGNAL_SUM_MAX)) + if ((0U < pDquCiTransmitStr->devId) && (SIGNAL_SUM_MAX > pDquCiTransmitStr->devId) && (SIGNAL_SUM_MAX > pTmpCiTransConfig->signalNum)) { pTmpCiTransConfig->signalIdBuf[pTmpCiTransConfig->signalNum] = pDquCiTransmitStr->devId; pTmpCiTransConfig->signalNum++; @@ -9114,7 +8892,7 @@ UINT8 ReadDquCiTransmitInfoToConfig(DquCiTransmitStruct *pDquCiTransmitStr) } break; case CI_DEVICE_TYPE_PHYSEC: /* */ - if ((pDquCiTransmitStr->devId > 0u) && (pDquCiTransmitStr->devId < PHYSICAL_SECTION_SUM_MAX) && (pTmpCiTransConfig->phySecNum < PHYSICAL_SECTION_SUM_MAX)) + if ((0U < pDquCiTransmitStr->devId) && (PHYSICAL_SECTION_SUM_MAX > pDquCiTransmitStr->devId) && (PHYSICAL_SECTION_SUM_MAX > pTmpCiTransConfig->phySecNum)) { pTmpCiTransConfig->phySecIdBuf[pTmpCiTransConfig->phySecNum] = pDquCiTransmitStr->devId; pTmpCiTransConfig->phySecIdLockDirFlag[pTmpCiTransConfig->phySecNum] = pDquCiTransmitStr->phyLockDirOppOrNot;/*շǷȡ־*/ @@ -9127,7 +8905,7 @@ UINT8 ReadDquCiTransmitInfoToConfig(DquCiTransmitStruct *pDquCiTransmitStr) } break; case CI_DEVICE_TYPE_LOGICSEC: /* ߼ */ - if ((pDquCiTransmitStr->devId > 0u) && (pDquCiTransmitStr->devId < LOGIC_SECTION_SUM_MAX) && (pTmpCiTransConfig->logicSecNum < LOGIC_SECTION_SUM_MAX)) + if ((0U < pDquCiTransmitStr->devId) && (LOGIC_SECTION_SUM_MAX > pDquCiTransmitStr->devId) && (LOGIC_SECTION_SUM_MAX > pTmpCiTransConfig->logicSecNum)) { pTmpCiTransConfig->logicSecIdBuf[pTmpCiTransConfig->logicSecNum] = pDquCiTransmitStr->devId; pTmpCiTransConfig->logicSecNum++; @@ -9139,7 +8917,7 @@ UINT8 ReadDquCiTransmitInfoToConfig(DquCiTransmitStruct *pDquCiTransmitStr) } break; case CI_DEVICE_TYPE_ESB: /* ESB */ - if ((pDquCiTransmitStr->devId > 0u) && (pDquCiTransmitStr->devId < ESB_SUM_MAX) && (pTmpCiTransConfig->esbNum < ESB_SUM_MAX)) + if ((0U < pDquCiTransmitStr->devId) && (ESB_SUM_MAX > pDquCiTransmitStr->devId) && (ESB_SUM_MAX > pTmpCiTransConfig->esbNum)) { pTmpCiTransConfig->esbIdBuf[pTmpCiTransConfig->esbNum] = pDquCiTransmitStr->devId; pTmpCiTransConfig->esbNum++; @@ -9151,7 +8929,7 @@ UINT8 ReadDquCiTransmitInfoToConfig(DquCiTransmitStruct *pDquCiTransmitStr) } break; case CI_DEVICE_TYPE_PSD: /* PSD */ - if ((pDquCiTransmitStr->devId > 0u) && (pDquCiTransmitStr->devId < PSD_SUM_MAX) && (pTmpCiTransConfig->psdNum < PSD_SUM_MAX)) + if ((0U < pDquCiTransmitStr->devId) && (PSD_SUM_MAX > pDquCiTransmitStr->devId) && (PSD_SUM_MAX > pTmpCiTransConfig->psdNum)) { pTmpCiTransConfig->psdIdBuf[pTmpCiTransConfig->psdNum] = pDquCiTransmitStr->devId; pTmpCiTransConfig->psdNum++; @@ -9163,7 +8941,7 @@ UINT8 ReadDquCiTransmitInfoToConfig(DquCiTransmitStruct *pDquCiTransmitStr) } break; case CI_DEVICE_TYPE_ROUTE: /* · */ - if ((pDquCiTransmitStr->devId > 0u) && (pDquCiTransmitStr->devId < ROUTE_SUM_MAX) && (pTmpCiTransConfig->routeNum < ROUTE_SUM_MAX)) + if ((0U < pDquCiTransmitStr->devId) && (ROUTE_SUM_MAX > pDquCiTransmitStr->devId) && (ROUTE_SUM_MAX > pTmpCiTransConfig->routeNum)) { pTmpCiTransConfig->routeIdBuf[pTmpCiTransConfig->routeNum] = pDquCiTransmitStr->devId; pTmpCiTransConfig->routeNum++; @@ -9175,7 +8953,7 @@ UINT8 ReadDquCiTransmitInfoToConfig(DquCiTransmitStruct *pDquCiTransmitStr) } break; case CI_DEVICE_TYPE_OVERLAP: /* */ - if ((pDquCiTransmitStr->devId > 0u) && (pDquCiTransmitStr->devId < OVERLAP_SUM_MAX) && (pTmpCiTransConfig->overlapNum < OVERLAP_SUM_MAX)) + if ((0U < pDquCiTransmitStr->devId) && (OVERLAP_SUM_MAX > pDquCiTransmitStr->devId) && (OVERLAP_SUM_MAX > pTmpCiTransConfig->overlapNum)) { pTmpCiTransConfig->overlapIdBuf[pTmpCiTransConfig->overlapNum] = pDquCiTransmitStr->devId; pTmpCiTransConfig->overlapNum++; @@ -9187,7 +8965,7 @@ UINT8 ReadDquCiTransmitInfoToConfig(DquCiTransmitStruct *pDquCiTransmitStr) } break; case CI_DEVICE_TYPE_SPKS: /* SPKS */ - if ((pDquCiTransmitStr->devId > 0u) && (pDquCiTransmitStr->devId < SPKS_SUM_MAX) && (pTmpCiTransConfig->spksNum < SPKS_SUM_MAX)) + if ((0U < pDquCiTransmitStr->devId) && (SPKS_SUM_MAX > pDquCiTransmitStr->devId) && (SPKS_SUM_MAX > pTmpCiTransConfig->spksNum)) { pTmpCiTransConfig->spksIdBuff[pTmpCiTransConfig->spksNum] = pDquCiTransmitStr->devId; pTmpCiTransConfig->spksNum++; @@ -9200,7 +8978,7 @@ UINT8 ReadDquCiTransmitInfoToConfig(DquCiTransmitStruct *pDquCiTransmitStr) break; case CI_DEVICE_TYPE_FLOODGATE:/**/ { - if ((pDquCiTransmitStr->devId > 0u) && (pDquCiTransmitStr->devId < FLOOD_GATE_SUM_MAX) && (pTmpCiTransConfig->floodGateNum < FLOOD_GATE_SUM_MAX)) + if ((0U < pDquCiTransmitStr->devId) && (FLOOD_GATE_SUM_MAX > pDquCiTransmitStr->devId) && (FLOOD_GATE_SUM_MAX > pTmpCiTransConfig->floodGateNum)) { pTmpCiTransConfig->floodGateIdBuf[pTmpCiTransConfig->floodGateNum] = pDquCiTransmitStr->devId; pTmpCiTransConfig->floodGateNum++; @@ -9213,7 +8991,7 @@ UINT8 ReadDquCiTransmitInfoToConfig(DquCiTransmitStruct *pDquCiTransmitStr) } break; case CI_DEVICE_TYPE_RELAY: /* ղ̵ */ - if ((pDquCiTransmitStr->devId > 0u) && (pDquCiTransmitStr->devId < RELAY_SUM_MAX) && (pTmpCiTransConfig->zcjNum < ZCJ_SUM_MAX)) + if ((0U < pDquCiTransmitStr->devId) && (RELAY_SUM_MAX > pDquCiTransmitStr->devId) && (ZCJ_SUM_MAX > pTmpCiTransConfig->zcjNum)) { pTmpCiTransConfig->zcjIdBuf[pTmpCiTransConfig->zcjNum] = pDquCiTransmitStr->devId; pTmpCiTransConfig->zcjNum++; @@ -9225,7 +9003,7 @@ UINT8 ReadDquCiTransmitInfoToConfig(DquCiTransmitStruct *pDquCiTransmitStr) } break; case CI_DEVICE_TYPE_CUTOFF_POINT: /* ֽ */ - if ((pDquCiTransmitStr->devId > 0u) && (pDquCiTransmitStr->devId < CUTOFF_POINT_SUM_MAX) && (pTmpCiTransConfig->wCutoffPointNum < CUTOFF_POINT_SUM_MAX)) + if ((0U < pDquCiTransmitStr->devId) && (CUTOFF_POINT_SUM_MAX > pDquCiTransmitStr->devId) && (CUTOFF_POINT_SUM_MAX > pTmpCiTransConfig->wCutoffPointNum)) { pTmpCiTransConfig->wCutoffPointBuf[pTmpCiTransConfig->wCutoffPointNum] = pDquCiTransmitStr->devId; pTmpCiTransConfig->wCutoffPointNum++; @@ -9237,8 +9015,8 @@ UINT8 ReadDquCiTransmitInfoToConfig(DquCiTransmitStruct *pDquCiTransmitStr) } break; case CI_DEVICE_TYPE_AUTOROUTE:/* cgh-ϲCID-2539-7Զͨ */ - if ((pDquCiTransmitStr->devId > 0u) && (pDquCiTransmitStr->devId < AUTO_ROUTE_SUM_MAX) && - (pTmpCiTransConfig->autoRouteNum < AUTO_ROUTE_SUM_MAX)) + if ((0U < pDquCiTransmitStr->devId) && (AUTO_ROUTE_SUM_MAX > pDquCiTransmitStr->devId) && + (AUTO_ROUTE_SUM_MAX > pTmpCiTransConfig->autoRouteNum)) { pTmpCiTransConfig->autoRouteIdBuf[pTmpCiTransConfig->autoRouteNum] = pDquCiTransmitStr->devId; pTmpCiTransConfig->autoRouteNum++; @@ -9249,6 +9027,34 @@ UINT8 ReadDquCiTransmitInfoToConfig(DquCiTransmitStruct *pDquCiTransmitStr) debug_infor_printf((const)"ReadDquCiTransmitInfoToConfig: Read AutoRoute Error\n"); } break; + case CI_DEVICE_TYPE_SWITCH_PHYSEC:/*Σͨӿʹ*/ + { + if ((0U < pDquCiTransmitStr->devId) && (PHYSICAL_SECTION_SUM_MAX > pDquCiTransmitStr->devId) && (PHYSICAL_SECTION_SUM_MAX > pTmpCiTransConfig->wSwitchPhySecNum)) + { + pTmpCiTransConfig->wSwitchPhySecBuf[pTmpCiTransConfig->wSwitchPhySecNum] = pDquCiTransmitStr->devId; + pTmpCiTransConfig->wSwitchPhySecNum++; + rtnValue = 1U; + } + else + { + debug_infor_printf((const)"ReadDquCiTransmitInfoToConfig: Read SwtchPhySec Error\n"); + } + } + break; + case CI_DEVICE_TYPE_XIANSU_LOGSEC:/*߼Σͨӿʹ*/ + { + if ((0U < pDquCiTransmitStr->devId) && (LOGIC_SECTION_SUM_MAX > pDquCiTransmitStr->devId) && (LOGIC_SECTION_SUM_MAX > pTmpCiTransConfig->wXianSuLogSecNum)) + { + pTmpCiTransConfig->wXianSuLogSecBuf[pTmpCiTransConfig->wXianSuLogSecNum] = pDquCiTransmitStr->devId; + pTmpCiTransConfig->wXianSuLogSecNum++; + rtnValue = 1U; + } + else + { + debug_infor_printf((const)"ReadDquCiTransmitInfoToConfig: Read XianSuLogse Error\n"); + } + } + break; default: rtnValue = 0u; break; @@ -10319,7 +10125,7 @@ UINT8 OCSwitchConfigDataStructInit(CHAR* FSName) { UINT8 rtnValue = 0u; UINT8* pDataAddr = NULL; /*ݵַ*/ - UINT32 DataSize = 0u; /*ݴСֽ*/ + UINT32 dwDataSize = 0u; /*ݴСֽ*/ UINT8 funcRtn = 0u; UINT16 realRowCount = 0u; /*ʵʱݵ*/ UINT16 i = 0u; @@ -10333,7 +10139,7 @@ UINT8 OCSwitchConfigDataStructInit(CHAR* FSName) else { /*ȡת޻״ָ̬ʾƱ*/ - funcRtn = dquGetConfigDataNew(FSName, OC_DATA_TYPE, OC_SWITCH_ID, &pDataAddr, &DataSize, &realRowCount); + funcRtn = dquGetConfigDataNew(FSName, OC_DATA_TYPE, OC_SWITCH_ID, &pDataAddr, &dwDataSize, &realRowCount); if (0u == funcRtn) { rtnValue = 0u; @@ -10343,19 +10149,19 @@ UINT8 OCSwitchConfigDataStructInit(CHAR* FSName) rtnValue = 1u; for (i = 0u; i < SWITCH_SUM_MAX; i++) { - funcRtn &= CommonMemSet(dquCICfgDtStr.OCSwitchCfgStr, (UINT32)sizeof(OCSwitchConfigDataStruct), 0u, (UINT32)sizeof(OCSwitchConfigDataStruct)); + funcRtn &= CommonMemSet(&dquCICfgDtStr.OCSwitchCfgStr[i], (UINT32)sizeof(OCSwitchConfigDataStruct), 0u, (UINT32)sizeof(OCSwitchConfigDataStruct)); } if (1u == funcRtn) { /**/ } - if ((0u != DataSize) && (0u != realRowCount)) + if ((0u != dwDataSize) && (0u != realRowCount)) { - if (0u == (DataSize % realRowCount)) + if (0u == (dwDataSize % realRowCount)) { /*ÿֽڳ*/ - wDataLen = (UINT16)(DataSize / realRowCount); + wDataLen = (UINT16)(dwDataSize / realRowCount); for (i = 0u; i < realRowCount; i++) { /*ñ*/ @@ -10383,6 +10189,10 @@ UINT8 OCSwitchConfigDataStructInit(CHAR* FSName) } } + if (1u == rtnValue) + {/*ÿͬ忨*/ + rtnValue = AllSwitchOtherSwitchByOCconfig(); + } return rtnValue; } @@ -10941,7 +10751,6 @@ UINT8 ReadVirCIWithOCRelationData(CHAR* FSName) UINT8 RowDatalen =0u;/**/ UINT8 virCIid = 0u; UINT8 jj =0u; - UINT16 ocid =0u; UINT8 ocNum=0u; @@ -13773,8 +13582,6 @@ void R_OCSwitchModeCfgDataFromChar(UINT8* pDataAddr) UINT8* pData = NULL; UINT16 wSwitchIdTemp = 0u; UINT8 i = 0U; - UINT8 chDataType = DATA_TYPE_MAIN_BRANCH; - chDataType = GetLocalPublicDataType();/*28.0.0.14߼ι·ʼ*/ if (NULL == pDataAddr) @@ -13797,24 +13604,23 @@ void R_OCSwitchModeCfgDataFromChar(UINT8* pDataAddr) dquCICfgDtStr.OCSwitchCfgStr[dquCICfgDtStr.OCSwitchCfgStrLen].BelongOcId = ShortFromChar(pData); pData += 2u; - if (DATA_TYPE_MAIN_BRANCH == chDataType) + + /*ǣ*/ + pData += 1u; + for (i = 0u; i < SWITCH_BOARD_MODE_MAX; i++) { - /*ǣ*/ + /*ģ-A忨ID*/ + dquCICfgDtStr.OCSwitchCfgStr[dquCICfgDtStr.OCSwitchCfgStrLen].ModuleAddrA[i] = *pData; pData += 1u; - for (i = 0u; i < SWITCH_BOARD_MODE_MAX; i++) - { - /*ģ-A忨ID*/ - dquCICfgDtStr.OCSwitchCfgStr[dquCICfgDtStr.OCSwitchCfgStrLen].ModuleAddrA[i] = *pData; - pData += 1u; - pData += 1u;/*ģλ*/ + pData += 1u;/*ģλ*/ - /*ģ-B忨ID*/ - dquCICfgDtStr.OCSwitchCfgStr[dquCICfgDtStr.OCSwitchCfgStrLen].ModuleAddrB[i] = *pData; - pData += 1u; - pData += 1u;/*ģλ*/ + /*ģ-B忨ID*/ + dquCICfgDtStr.OCSwitchCfgStr[dquCICfgDtStr.OCSwitchCfgStrLen].ModuleAddrB[i] = *pData; + pData += 1u; + pData += 1u;/*ģλ*/ - } } + dquCICfgDtStr.OCSwitchCfgStrLen++;/**/ @@ -13904,7 +13710,8 @@ UINT8 SwitchOcCfgStrFromOCconfigStr(SwitchBelongOCConfigDataStr* pSwitchOCcfgDtS } else { - pSwitchOCcfgDtStr->OcId = pOcCfgDtStr->BelongOcId; + pSwitchOCcfgDtStr->OcId = (UINT8)pOcCfgDtStr->BelongOcId; + pSwitchOCcfgDtStr->wThisOcOtherSwitchId = pOcCfgDtStr->otherSwitchId;/*ͬһOCͬ忨һ*/ rtnvalue =1u; for (i = 0u; i < MAX_OC_SWITCH_INCLUDE_BOARD_NUM; i++) { @@ -13914,7 +13721,7 @@ UINT8 SwitchOcCfgStrFromOCconfigStr(SwitchBelongOCConfigDataStr* pSwitchOCcfgDtS ret = SetNoUINT8RepeatDataToBuf((UINT8 *)pSwitchOCcfgDtStr->ModuleAddr, MAX_OC_SWITCH_INCLUDE_BOARD_NUM, pOcCfgDtStr->ModuleAddrA[i], boardNum); if (-1 != ret) { - boardNum = ret; + boardNum = (UINT8)ret; } else { @@ -13930,7 +13737,7 @@ UINT8 SwitchOcCfgStrFromOCconfigStr(SwitchBelongOCConfigDataStr* pSwitchOCcfgDtS ret = SetNoUINT8RepeatDataToBuf((UINT8*)pSwitchOCcfgDtStr->ModuleAddr, MAX_OC_SWITCH_INCLUDE_BOARD_NUM, pOcCfgDtStr->ModuleAddrB[i], boardNum); if (-1 != ret) { - boardNum = ret; + boardNum = (UINT8)ret; } else { @@ -13972,8 +13779,6 @@ UINT8 CalcuSwitchInsertionBoxData(SwitchConfigDataStruct* pSwitchCfgDtStr) UINT8 i = 0u; UINT8 j = 0u; UINT8 chBoxId = 0u;/*ID*/ - UINT8 cInsertionBoxNum = 0u; - INT16 ret = 0; /*ڲ*/ if (NULL == pSwitchCfgDtStr) @@ -14025,7 +13830,7 @@ UINT8 CalcuSwitchInsertionBoxData(SwitchConfigDataStruct* pSwitchCfgDtStr) return rtnvalue; } /********************************************* -*ܣ䲻ظݽ +*ܣ䲻ظݽUINT8 *˵Ŀָ * *ֵ-1Ϊij,-1Ϊռ @@ -14090,43 +13895,50 @@ UINT8 LogRelateProSwDataByOverlapInit(LogicSectionConfigDataStruct* pLgScCfgDtSt if (NULL != pLgScCfgDtStr) { - /*߼ι*/ - for (ii = 0; ii < pLgScCfgDtStr->chLogsecSwitchSum; ii++) - {/*߼ΰе*/ - wProtectSwSum = dquCICfgDtStr.SwchCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuPointIndex[pLgScCfgDtStr->LogsecSwitchIdStru[ii].SwitchId]].wProtectSwitchNum; - for (jj = 0; jj < wProtectSwSum; jj++) - {/*Ӧķ*/ - wProtectSwId = dquCICfgDtStr.SwchCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuPointIndex[pLgScCfgDtStr->LogsecSwitchIdStru[ii].SwitchId]].wszProtectSwitchIdBuf[jj]; - chProtectSwFlag = 0U; - for (kk = 0U; kk < pLgScCfgDtStr->chRelateOverLapSum; kk++) - {/*߼ιı*/ - for (hh = 0U; hh < dquCICfgDtStr.OvlapCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuProtectLinkIndex[pLgScCfgDtStr->wRelateOverLapIdBuf[kk]]].ProtectSwitchSum; hh++) - {/*ѯ߼ιΣΰ÷߼ιλ뱣һ*/ - if (dquCICfgDtStr.OvlapCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuProtectLinkIndex[pLgScCfgDtStr->wRelateOverLapIdBuf[kk]]].ProtectSwitchStru[hh].ProtectSwitchId == wProtectSwId) - { - for (mm = 0U; mm < pLgScCfgDtStr->chRelateProSwSum; mm++) - {/*IDȥ*/ - if ((pLgScCfgDtStr->wRelateProSwId[mm].SwitchId == dquCICfgDtStr.OvlapCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuProtectLinkIndex[pLgScCfgDtStr->wRelateOverLapIdBuf[kk]]].ProtectSwitchStru[hh].ProtectSwitchId) - && (pLgScCfgDtStr->wRelateProSwId[mm].SwitchPosition == dquCICfgDtStr.OvlapCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuProtectLinkIndex[pLgScCfgDtStr->wRelateOverLapIdBuf[kk]]].ProtectSwitchStru[hh].ProtectPosition)) - { - chProtectSwFlag = 1U; + if (0u == pLgScCfgDtStr->chRelateRouteSum) + { + /*߼ι*/ + for (ii = 0; ii < pLgScCfgDtStr->chLogsecSwitchSum; ii++) + {/*߼ΰе*/ + wProtectSwSum = dquCICfgDtStr.SwchCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuPointIndex[pLgScCfgDtStr->LogsecSwitchIdStru[ii].SwitchId]].wProtectSwitchNum; + for (jj = 0; jj < wProtectSwSum; jj++) + {/*Ӧķ*/ + wProtectSwId = dquCICfgDtStr.SwchCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuPointIndex[pLgScCfgDtStr->LogsecSwitchIdStru[ii].SwitchId]].wszProtectSwitchIdBuf[jj]; + chProtectSwFlag = 0U; + for (kk = 0U; kk < pLgScCfgDtStr->chRelateOverLapSum; kk++) + {/*߼ιı*/ + for (hh = 0U; hh < dquCICfgDtStr.OvlapCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuProtectLinkIndex[pLgScCfgDtStr->wRelateOverLapIdBuf[kk]]].ProtectSwitchSum; hh++) + {/*ѯ߼ιΣΰ÷߼ιλ뱣һ*/ + if (dquCICfgDtStr.OvlapCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuProtectLinkIndex[pLgScCfgDtStr->wRelateOverLapIdBuf[kk]]].ProtectSwitchStru[hh].ProtectSwitchId == wProtectSwId) + { + for (mm = 0U; mm < pLgScCfgDtStr->chRelateProSwSum; mm++) + {/*IDȥ*/ + if ((pLgScCfgDtStr->wRelateProSwId[mm].SwitchId == dquCICfgDtStr.OvlapCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuProtectLinkIndex[pLgScCfgDtStr->wRelateOverLapIdBuf[kk]]].ProtectSwitchStru[hh].ProtectSwitchId) + && (pLgScCfgDtStr->wRelateProSwId[mm].SwitchPosition == dquCICfgDtStr.OvlapCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuProtectLinkIndex[pLgScCfgDtStr->wRelateOverLapIdBuf[kk]]].ProtectSwitchStru[hh].ProtectPosition)) + { + chProtectSwFlag = 1U; + break; + } + } + if (1U != chProtectSwFlag) + {/*ǰвIDŽ*/ + if (LOGSEC_RELATE_PRO_SW_SUM_MAX > pLgScCfgDtStr->chRelateProSwSum) + { + pLgScCfgDtStr->wRelateProSwId[pLgScCfgDtStr->chRelateProSwSum].SwitchId = dquCICfgDtStr.OvlapCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuProtectLinkIndex[pLgScCfgDtStr->wRelateOverLapIdBuf[kk]]].ProtectSwitchStru[hh].ProtectSwitchId; + pLgScCfgDtStr->wRelateProSwId[pLgScCfgDtStr->chRelateProSwSum].SwitchPosition = dquCICfgDtStr.OvlapCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuProtectLinkIndex[pLgScCfgDtStr->wRelateOverLapIdBuf[kk]]].ProtectSwitchStru[hh].ProtectPosition; + (pLgScCfgDtStr->chRelateProSwSum)++; + } + else + { + chMaxCheck = CI_ERROR; + } break; } } - if (1U != chProtectSwFlag) - {/*ǰвIDŽ*/ - if (LOGSEC_RELATE_PRO_SW_SUM_MAX > pLgScCfgDtStr->chRelateProSwSum) - { - pLgScCfgDtStr->wRelateProSwId[pLgScCfgDtStr->chRelateProSwSum].SwitchId = dquCICfgDtStr.OvlapCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuProtectLinkIndex[pLgScCfgDtStr->wRelateOverLapIdBuf[kk]]].ProtectSwitchStru[hh].ProtectSwitchId; - pLgScCfgDtStr->wRelateProSwId[pLgScCfgDtStr->chRelateProSwSum].SwitchPosition = dquCICfgDtStr.OvlapCfgDtStr[g_dsuEmapStru->dsuEmapIndexStru->dsuProtectLinkIndex[pLgScCfgDtStr->wRelateOverLapIdBuf[kk]]].ProtectSwitchStru[hh].ProtectPosition; - (pLgScCfgDtStr->chRelateProSwSum)++; - } - else - { - chMaxCheck = CI_ERROR; - } - break; - } + } + if (CI_ERROR == chMaxCheck) + { + break; } } if (CI_ERROR == chMaxCheck) @@ -14141,17 +13953,18 @@ UINT8 LogRelateProSwDataByOverlapInit(LogicSectionConfigDataStruct* pLgScCfgDtSt } if (CI_ERROR == chMaxCheck) { - break; + rtnvalue = 0U; + } + else + { + rtnvalue = 1U; } - } - if (CI_ERROR == chMaxCheck) - { - rtnvalue = 0U; } else { rtnvalue = 1U; } + } return rtnvalue; @@ -14311,7 +14124,7 @@ UINT8 AxisSecProtectSwitchInit(void) ret = AxisSecCfgDtStruFromLogicSecStr(dquCICfgDtStr.lgcSctCfgDtStr[j].wRelateProSwId, dquCICfgDtStr.lgcSctCfgDtStr[j].chRelateProSwSum, pAxScCfgDtStr->wRelateProSwId, pAxScCfgDtStr->chRelateProSwSum); if (-1 != ret) { - pAxScCfgDtStr->chRelateProSwSum = ret;/**/ + pAxScCfgDtStr->chRelateProSwSum = (UINT8)ret;/**/ } break; } @@ -14340,5 +14153,258 @@ UINT8 AxisSecProtectSwitchInit(void) return rtnvalue; } +/********************************************* +*ܣΪijͬ忨һID +*˵OCSwitchConfigDataStruct * pOCSwitchCfgStr ݽṹ +*ֵ0 ʧܣ1ɹ +* add by mpt 20260404 +*********************************************/ +UINT8 SwitchOtherSwitchFromOCconfig(OCSwitchConfigDataStruct * pOCSwitchCfgStr) +{ + UINT16 j = 0u; + UINT8 rtnvalue = 0u; + UINT8 k = 0u; + /*ڲ*/ + if (NULL == pOCSwitchCfgStr) + { + /*ʧ*/ + rtnvalue = 0u; + } + else + { + rtnvalue = 1u; - + if (SWITCH_SUM_MAX > pOCSwitchCfgStr->SwitchId) + { + + for (j = 0u; j < dquCICfgDtStr.OCSwitchCfgStrLen; j++) + { + if ((pOCSwitchCfgStr->SwitchId != dquCICfgDtStr.OCSwitchCfgStr[j].SwitchId)&&(pOCSwitchCfgStr->BelongOcId == dquCICfgDtStr.OCSwitchCfgStr[j].BelongOcId)) + {/*Լ*/ + for (k = 0u; k < MAX_OC_SWITCH_INCLUDE_BOARD_NUM; k++) + { + + if ((pOCSwitchCfgStr->ModuleAddrA[k] == dquCICfgDtStr.OCSwitchCfgStr[j].ModuleAddrA[k])&&(UINT8_MAX !=pOCSwitchCfgStr->ModuleAddrA[k]) && (0u != pOCSwitchCfgStr->ModuleAddrA[k])) + {/*忨IDЧ*/ + pOCSwitchCfgStr->otherSwitchId = dquCICfgDtStr.OCSwitchCfgStr[j].SwitchId; + break; + } + } + if (0u != pOCSwitchCfgStr->otherSwitchId) + { + break; + } + else + { + /*ʲôҲִУнBϵAϵ*/ + } + } + } + } + else + { + /*ʧ*/ + rtnvalue = 0u; + } + } + + return rtnvalue; +} + +/********************************************* +*ܣΪеͬ忨һID +*˵void +*ֵ0 ʧܣ1ɹ +* add by mpt 20260404 +*********************************************/ +UINT8 AllSwitchOtherSwitchByOCconfig(void) +{ + UINT16 j = 0U; + UINT8 rtnvalue = 0U; + if (0U == dquCICfgDtStr.OCSwitchCfgStrLen) + { + rtnvalue = 1U; /*ûõݣ1*/ + } + else + { + for (j = 0U; j < dquCICfgDtStr.OCSwitchCfgStrLen; j++) + { + rtnvalue = SwitchOtherSwitchFromOCconfig(&dquCICfgDtStr.OCSwitchCfgStr[j]); + if (0U == rtnvalue) + { + break; + } + } + } + return rtnvalue; +} + +/********************************************* +*ܣʼŹESB----͸Ӷʹ +*˵FSNameļָ +* wPsdIndex +*ֵ0ʧܣ1ɹ +* fan 20260421 +*********************************************/ +UINT8 PsdRelateEsbConfigDataInit(UINT16 wPsdIndex) +{ + UINT8 rtnvalue = 0U; + UINT16 wPhySecId = 0U; + UINT16 wLogSectionId = 0u; + UINT16 wPhyIndex = 0U; + UINT16 wLogicSgmtIndex = 0U; + UINT8 k = 0u; + INT16 rtVal = -1; + if (PSD_SUM_MAX > wPsdIndex) + { + rtnvalue = 1U; + wPhyIndex = 0U; + wLogicSgmtIndex = 0U; + wPhySecId = dquCICfgDtStr.PsdCfgDtStr[wPsdIndex].PsdRelationPhySecId; + if ((0U < wPhySecId) && (PHYSICAL_SECTION_SUM_MAX > wPhySecId)) + { + wPhyIndex = dsuPhysicalSgmtIndex[wPhySecId];/*ȡ*/ + wLogSectionId = dquCICfgDtStr.PsclSgmtCfgDtStr[wPhyIndex].LogSectionIdBuf[0];/*ƥһ߼μ*/ + + if ((0U < wLogSectionId) && (LOGIC_SECTION_SUM_MAX > wLogSectionId)) + { + wLogicSgmtIndex = dsuLogicSgmtIndex[wLogSectionId]; + } + else + { + rtnvalue = 0U;/*Ƿֵʼʧ*/ + } + } + else + { + rtnvalue = 0U;/*Ƿֵʼʧ*/ + } + + if (1U == rtnvalue) + { + for (k = 0u; k < dquCICfgDtStr.lgcSctCfgDtStr[wLogicSgmtIndex].logSecRltEsbSum; k++) + { + rtVal = SetNoRepeatDataToBuf(dquCICfgDtStr.PsdCfgDtStr[wPsdIndex].IncloudeEsbIdBuf, PSD_INCLUDE_ESB_NUM, dquCICfgDtStr.lgcSctCfgDtStr[wLogicSgmtIndex].logSecRltEsbBuf[k], dquCICfgDtStr.PsdCfgDtStr[wPsdIndex].IncloudeEsbNum); + if (-1 != rtVal) + { + dquCICfgDtStr.PsdCfgDtStr[wPsdIndex].IncloudeEsbNum = (UINT8)rtVal; + } + else + { + rtnvalue = 0u; + break; + } + } + } + } + return rtnvalue; +} + +/* +*: RCIݳʼ +*: CHAR * FSName ļָ +*: +*ֵ: 0 ʧ +* 1 ɹ +* by cgh 20260516 +*/ +UINT8 RciCommonConfigDataInit(CHAR* FSName) +{ + UINT8 chReval = CI_ERROR; + + chReval = CiPatternInit(FSName); /*ʼǰ*/ + chReval &= RciSerialCommDataInit(); /*ʼͨ*/ + + return chReval; +} + +/* +*: ͨݳʼ +*: +*: +*ֵ: 0 ʧ +* 1 ɹ +* by cgh 20260516 +*/ +static UINT8 RciSerialCommDataInit(void) +{ + UINT8 chRtnValue = CI_ERROR; /*ֵ*/ + UINT8 chFuncRtn = CI_ERROR; /*ʱֵнӱ*/ + UINT8* pDataAddr = NULL; /*ݵַ*/ + UINT32 DataSize = 0U; /*ݴСֽ*/ + UINT16 realRowCount = 0U; /*ʵʱݵ*/ + UINT16 ii = 0U; /*ѭ*/ + UINT8 chLocalCiId = 0U; /*ID*/ + UINT16 wDataLen = 0U; /*ݿ*/ + UINT16 wTempData = 0U; /*ʱ*/ + UINT16 val = 0U; /*ʱнӱ*/ + UINT8 chCiDevId = 0U; /*CI豸ID*/ + UINT8 chCiDevType = 0U; /*CI豸*/ + UINT8 chLocalRcWorkMode = 0u; /*RCģʽ*/ + + chFuncRtn = dquGetConfigDataNew((const)DataPath, CI_SYSTEM_PARAMETER_DATA_TYPE, CI_SYSTEM_SERIAL_COMM_ID, &pDataAddr, &DataSize, &realRowCount); + if (0U == chFuncRtn) + { + /*ʧ*/ + chRtnValue = CI_ERROR; + } + else + { + chRtnValue = CI_SUCCESS; + + if ((0u != DataSize) && (0u != realRowCount)) + { + if (0U == (DataSize % realRowCount)) + { + chLocalCiId = GetSystemParaLocalCiId(); + chLocalRcWorkMode = GetLocalRcWorkMode(); + wDataLen = (UINT16)(DataSize / realRowCount); + + for (ii = 0u; ii < realRowCount; ii++) + { + val = dquCiShortFromChar(&pDataAddr[0]); + chCiDevId = (UINT8)(val & 0x00FF); + chCiDevType = (UINT8)((val & 0xFF00) >> 8); + + if ((chLocalCiId == chCiDevType) && (chLocalRcWorkMode == chCiDevType)) + { + /*ñͨű־*/ + chRtnValue &= SetLocalSerialCommFlag(SERIAL_COMM_YES); + + /*ñͨ*/ + val = dquCiShortFromChar(&pDataAddr[2]); + chRtnValue &= SetLocalSerialCommData(0U, 0U, val, pDataAddr[4]); + chRtnValue &= SetLocalSerialCommData(0U, 1U, val, pDataAddr[5]); + val = dquCiShortFromChar(&pDataAddr[6]); + chRtnValue &= SetLocalSerialCommData(1U, 0U, val, pDataAddr[8]); + chRtnValue &= SetLocalSerialCommData(1U, 1U, val, pDataAddr[9]); + } + else + { + ; + } + if (CI_ERROR == chRtnValue) + { + break; + } + else + { + pDataAddr += wDataLen; + } + } + } + else + { + /*ݴ*/ + chRtnValue = CI_ERROR; + } + + } + else + { + ; /*,ݳʼɹ*/ + } + } + + return chRtnValue; +} \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/QueryFiles/dquCIInit.h b/TSCP/src/APP/ciapp/QueryFiles/dquCIInit.h index bb350af..fff1284 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dquCIInit.h +++ b/TSCP/src/APP/ciapp/QueryFiles/dquCIInit.h @@ -427,20 +427,6 @@ UINT8 RouteCfgDtStruFrmLSRouteStr( LS_RouteStruct * pLSRouteStr,RouteConfigDataS UINT8 RouteConfigDataStructInit(CHAR * FSName); -/********************************************* -*ܣнͨŹϵ豸IPȥݣÿ17ݣ -*˵Dataͨ -*ֵ0ʧܣ1ɹ -*********************************************/ -UINT8 TransmitRelationDataStruFrmSZ(UINT16 Data[]); - -/********************************************* -*ܣʼͨŹϵݽṹ -*˵FSNameļָ -*ֵ0ʧܣ1ɹ -*********************************************/ -UINT8 TransmitRelationDataStructInit(CHAR* FSName); - /********************************************* *ܣʼͨŹϵݽṹ壨NEW *˵FSNameļָ @@ -1068,5 +1054,39 @@ INT16 AxisSecCfgDtStruFromLogicSecStr(LogsecSwitchStruct* pSrcSwitchStructBuf, U * add mpt 20260331 *********************************************/ UINT8 AxisSecProtectSwitchInit(void); +/********************************************* +*ܣΪijͬ忨һID +*˵OCSwitchConfigDataStruct * pOCSwitchCfgStr ݽṹ +* add by mpt 20260404 +*ֵ0 ʧܣ1ɹ +*********************************************/ +UINT8 SwitchOtherSwitchFromOCconfig(OCSwitchConfigDataStruct* pOCSwitchCfgStr); +/********************************************* +*ܣΪеͬ忨һID +*˵void +*ֵ0 ʧܣ1ɹ +* add by mpt 20260404 +*********************************************/ +UINT8 AllSwitchOtherSwitchByOCconfig(void); + +/********************************************* +*ܣʼŹESB----͸Ӷʹ +*˵FSNameļָ +* wPsdIndex +*ֵ0ʧܣ1ɹ +* fan 20260421 +*********************************************/ +UINT8 PsdRelateEsbConfigDataInit(UINT16 wPsdIndex); + +/* +*: RCIݳʼ +*: CHAR * FSName ļָ +*: +*ֵ: 0 ʧ +* 1 ɹ +* by cgh 20260516 +*/ +UINT8 RciCommonConfigDataInit(CHAR* FSName); + #endif diff --git a/TSCP/src/APP/ciapp/QueryFiles/dquCIInterFace.c b/TSCP/src/APP/ciapp/QueryFiles/dquCIInterFace.c index b3448cb..7000617 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dquCIInterFace.c +++ b/TSCP/src/APP/ciapp/QueryFiles/dquCIInterFace.c @@ -133,7 +133,7 @@ UINT8 InitAll(CHAR* FSName) { CIInitEmap(dsuEmapStru);/*ΪCIʹõĹݸֵ*/ - RtnVal = CiPatternInit(FSName); /*ʼǰ*/ + RtnVal = RciCommonConfigDataInit(FSName); /*ʼǰ*/ if (0u != RtnVal) /*ʼǰ*/ { /*ʼϵͳݽṹ*/ @@ -171,8 +171,8 @@ UINT8 InitAll(CHAR* FSName) else { #ifdef PLATFORM_2OO2 - (void)printf("CiPattern Init Error\n"); - debug_infor_printf((const)"CiPattern Init Error\n"); + (void)printf("RciCommonConfigDataInit Error\n"); + debug_infor_printf((const)"RciCommonConfigDataInit Error\n"); #endif } } @@ -2379,9 +2379,6 @@ UINT8 ReadSystemParamConfDataNew(const UINT8 ciId,SystemParameterStructNew* Syst /*һʱٱа*/ SystemParameterStru->MaxSectionOfTsr = dquCICfgDtStr.SystemParaStrNew.MaxSectionOfTsr; - /*IVOC-OCͨŹжʱ(ms)*/ - SystemParameterStru->IvocOcCommunicationErrorTime = dquCICfgDtStr.SystemParaStrNew.IvocOcCommunicationErrorTime; - /*OC-TSLͨŹжʱ䣨ms*/ SystemParameterStru->OcTslCommunicationErrorTime = dquCICfgDtStr.SystemParaStrNew.OcTslCommunicationErrorTime; @@ -3424,8 +3421,8 @@ void ReadEmapCiConfig(EmapCiConfigStru emapVerArr[]) UINT8 ciId; UINT8 jj = 0U; UINT8 chLocalCiId = 0U; - - + UINT16 k = 0U; + chLocalCiId = GetSystemParaLocalCiId(); if (NULL != emapVerArr) { @@ -3484,14 +3481,30 @@ void ReadEmapCiConfig(EmapCiConfigStru emapVerArr[]) {/*Գ복κ迪*/ SystemParameterStruNew.chCldAndScxMergeFlag = dsuStaticHeadStru.pCIStruStru[i].chCldAndScxMergeFlag; } - - + else + { + /**/ + } } else { ; /*RCģʽУϢRCʼ*/ } } + /*̶ ** CI*/ + for (k = 0U; k < wCIStruSum; k++) + { + ciId = (UINT8)(dsuStaticHeadStru.pCIStruStru[k].wID & 0x00FFU); + if (CI_SUM_MAX > ciId) + { + SystemParameterStruNew.chCiFactoryType[ciId] = dsuStaticHeadStru.pCIStruStru[k].chCiFactoryType; + } + else + { + /**/ + } + } + if (RC_WORK_MODE_TIOC == CI_SYSTEM_TYPE_RCI) { diff --git a/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruInit.c b/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruInit.c index f189fac..2e4f329 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruInit.c +++ b/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruInit.c @@ -397,35 +397,27 @@ UINT8 InitRelay_ScreenStru(CHAR* CIDataName) { RelayDataLen.RelayScreenStrLen = wRealRowCount; rowLen = DataSize / wRealRowCount; - if (DataSize < rowLen) + /*̬ռ*/ + RelayData.pRelayScreenStr = (Relay_ScreenStruct*)MyNew((UINT32)(sizeof(Relay_ScreenStruct) * RelayDataLen.RelayScreenStrLen)); + /*̬ռʧ*/ + if (NULL == RelayData.pRelayScreenStr) { + RelayDataLen.RelayScreenStrLen = 0U; rtnValue = 0U; - } else { - /*̬ռ*/ - RelayData.pRelayScreenStr = (Relay_ScreenStruct*)MyNew((UINT32)(sizeof(Relay_ScreenStruct) * RelayDataLen.RelayScreenStrLen)); - /*̬ռʧ*/ - if (NULL == RelayData.pRelayScreenStr) + /*ڴΪЧ*/ + (void)memset(RelayData.pRelayScreenStr, 0x00, sizeof(Relay_ScreenStruct) * RelayDataLen.RelayScreenStrLen); + /*ݵ Ĭг ṹ */ + for (j = 0u; j < RelayDataLen.RelayScreenStrLen; j++) { - 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; + pScreenStr = RelayData.pRelayScreenStr + j; - /*ݽṹ*/ - rtnValue &= R_ScreenStructFromChar(pDataAddr, pScreenStr, (UINT16)rowLen); - pDataAddr += rowLen; + /*ݽṹ*/ + rtnValue &= R_ScreenStructFromChar(pDataAddr, pScreenStr, (UINT16)rowLen); + pDataAddr += rowLen; - } } } } diff --git a/TSCP/src/APP/ciapp/QueryFiles/dquCILSStruInit.c b/TSCP/src/APP/ciapp/QueryFiles/dquCILSStruInit.c index fd38d46..ffcceb5 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dquCILSStruInit.c +++ b/TSCP/src/APP/ciapp/QueryFiles/dquCILSStruInit.c @@ -1583,40 +1583,33 @@ UINT8 InitLS_OverlapLockCondStru(CHAR *LSDataName) realRowLen = (UINT16)(DataSize / rowLen); LSDataLen.LSOverlapLockCondStruLen = (UINT16)rowLen; - if (DataSize < realRowLen) + /*̬ռ*/ + LSData.pLSOverlapLockCondStru = (LS_OveralpLockCondStru*)MyNew((UINT32)(sizeof(LS_OveralpLockCondStru) * LSDataLen.LSOverlapLockCondStruLen)); + /*̬ռʧ*/ + if (NULL == LSData.pLSOverlapLockCondStru) { - rtnValue = 0U; + /*鳤0Խ*/ + LSDataLen.LSOverlapLockCondStruLen = 0u; + + rtnValue = 0u; } else { - /*̬ռ*/ - LSData.pLSOverlapLockCondStru = (LS_OveralpLockCondStru*)MyNew((UINT32)(sizeof(LS_OveralpLockCondStru) * LSDataLen.LSOverlapLockCondStruLen)); - /*̬ռʧ*/ - if (NULL == LSData.pLSOverlapLockCondStru) + /*ڴΪЧ*/ + (void)memset(LSData.pLSOverlapLockCondStru, 0x00, sizeof(LS_OveralpLockCondStru) * LSDataLen.LSOverlapLockCondStruLen); + + /*ݵ Ĭг ṹ */ + rtnValue = 1u; + for (j = 0u; j < LSDataLen.LSOverlapLockCondStruLen; j++) { - /*鳤0Խ*/ - LSDataLen.LSOverlapLockCondStruLen = 0u; + pTempLSProtSecLockCondStru = LSData.pLSOverlapLockCondStru + j; - rtnValue = 0u; + /*ݽṹ*/ + rtnValue &= LS_OverlapLockCondStruFromChar(pDataAddr, pTempLSProtSecLockCondStru); + + pDataAddr += realRowLen; } - else - { - /*ڴΪЧ*/ - (void)memset(LSData.pLSOverlapLockCondStru, 0x00, sizeof(LS_OveralpLockCondStru) * LSDataLen.LSOverlapLockCondStruLen); - /*ݵ Ĭг ṹ */ - rtnValue = 1u; - for (j = 0u; j < LSDataLen.LSOverlapLockCondStruLen; j++) - { - pTempLSProtSecLockCondStru = LSData.pLSOverlapLockCondStru + j; - - /*ݽṹ*/ - rtnValue &= LS_OverlapLockCondStruFromChar(pDataAddr, pTempLSProtSecLockCondStru); - - pDataAddr += realRowLen; - } - - } } } } @@ -2403,28 +2396,21 @@ UINT8 InitLSSideProtec(CHAR* LSDataName) for (j = 0u; j < wRouteSideProtecNum; j++)/*ÿ*/ { wSideProtecID = LSData.pLSSideProtecGroupStru[i].RouteSideProtecBuf[j].SideProtecID; - if (0u < wSideProtecID)/*еIJID0*/ + for (k = 0u; k < LSDataLen.LSRouteSideProtecStruLen; k++) { - for (k = 0u; k < LSDataLen.LSRouteSideProtecStruLen; k++) + if (wSideProtecID == LSData.pLSRouteSideProtecStru[k].SideProtecID) { - if (wSideProtecID == LSData.pLSRouteSideProtecStru[k].SideProtecID) - { - CommonMemCpy(&LSData.pLSSideProtecGroupStru[i].RouteSideProtecBuf[j], sizeof(SideProtecStru), &LSData.pLSRouteSideProtecStru[k], sizeof(SideProtecStru)); - break;/*ҵ*/ - } - else - { - /**/ - } + (void)CommonMemCpy(&LSData.pLSSideProtecGroupStru[i].RouteSideProtecBuf[j], (UINT32)sizeof(SideProtecStru), &LSData.pLSRouteSideProtecStru[k], (UINT32)sizeof(SideProtecStru)); + break;/*ҵ*/ } - if (k == LSDataLen.LSRouteSideProtecStruLen) + else { - rtnValue = 0u; + /**/ } } - else + if (k == LSDataLen.LSRouteSideProtecStruLen) { - break; + rtnValue = 0u; } } } diff --git a/TSCP/src/APP/ciapp/QueryFiles/dquCIPZStru.h b/TSCP/src/APP/ciapp/QueryFiles/dquCIPZStru.h index 8d41f4a..b5df9b0 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dquCIPZStru.h +++ b/TSCP/src/APP/ciapp/QueryFiles/dquCIPZStru.h @@ -61,5 +61,7 @@ #define CI_SYSTEM_VERGE_KILL_ID ((UINT8)0x0F) /*ӦߵĹת*/ +#define CI_SYSTEM_SERIAL_COMM_ID ((UINT8)0x10) /*ͨñ*/ + #endif diff --git a/TSCP/src/APP/ciapp/QueryFiles/dquCIStru.h b/TSCP/src/APP/ciapp/QueryFiles/dquCIStru.h index d8f6b03..3263ead 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dquCIStru.h +++ b/TSCP/src/APP/ciapp/QueryFiles/dquCIStru.h @@ -21,6 +21,8 @@ #define DEVICE_IP_TYPE ((UINT32)0x40) #define ZC_DSU_TRANSMIT_DATA_ID ((UINT32)4) -#define ZC_DSU_TRANSMIT_DATA_LEN ((UINT16)(34+30)) +#define ZC_DSU_TRANSMIT_DATA_NEW_LEN ((UINT16)(34+30+40))/*ZCDSUͨŹϵݽṹ*/ + +#define ZC_DSU_TRANSMIT_DATA_NEW_NUM_MAX ((UINT16)(50)) /*ZCDSUͨŹϵݽṹ*/ #endif diff --git a/TSCP/src/APP/ciapp/QueryFiles/dqucijdqstru.h b/TSCP/src/APP/ciapp/QueryFiles/dqucijdqstru.h index 58b202f..960f9c0 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dqucijdqstru.h +++ b/TSCP/src/APP/ciapp/QueryFiles/dqucijdqstru.h @@ -108,7 +108,6 @@ /*ñ*/ #define OC_SWITCH_ID ((UINT8)2) -#define LEN_OC_SWITCH ((UINT8)25) #define SWITCH_BOARD_MODE_MAX 5U /*һOCеģ*/ /*̵ñ*/ #define OC_SWITCH_RELAY_ID ((UINT8)4) diff --git a/TSCP/src/APP/ciapp/RemoteRM/RRMManageAPI.c b/TSCP/src/APP/ciapp/RemoteRM/RRMManageAPI.c index 4d5dfb3..7ba698e 100644 --- a/TSCP/src/APP/ciapp/RemoteRM/RRMManageAPI.c +++ b/TSCP/src/APP/ciapp/RemoteRM/RRMManageAPI.c @@ -1901,12 +1901,14 @@ static UINT8 rrm_CheckTrainHeadInFreeSta(UINT16 trainID, IN const EnvelopeStruct UINT8 chHeadAcStatus = 0U; /*ͷռ״̬*/ /** ڲУ */ - ASSERT_RET_VALUE((NULL == pTemp) || (0U == pTemp->ACCnt), errorCode, 0x80000000U); - - headRelStaID = rrm_PrepareAtsLgcStaOfAC(pTemp->ACID[pTemp->ACCnt - 1U]); - - ASSER_ERROR((0xffffU == headRelStaID), errorCode, 0x40000000U); + ASSER_ERROR((NULL == pTemp) || (0U == pTemp->ACCnt), errorCode, 0x80000000U); + if(0U == errorCode) + { + headRelStaID = rrm_PrepareAtsLgcStaOfAC(pTemp->ACID[pTemp->ACCnt - 1U]); + ASSER_ERROR((0xffffU == headRelStaID), errorCode, 0x40000000U); + } + if (0U == errorCode) { trainNextSta = rrm_PrepareNextStaOfTrain(trainID); diff --git a/TSCP/src/APP/ciapp/Route/DynamicRouteDataManage.c b/TSCP/src/APP/ciapp/Route/DynamicRouteDataManage.c index 060363a..5e90373 100644 --- a/TSCP/src/APP/ciapp/Route/DynamicRouteDataManage.c +++ b/TSCP/src/APP/ciapp/Route/DynamicRouteDataManage.c @@ -2163,32 +2163,24 @@ static UINT8 LockDrSubRouteSwitchCheck(UINT16 wSubRouteId, UINT8 functionId, UIN if (CI_SUCCESS == reResult) { - if (CI_TRADITION_RAILWAY == lineIdentity) + /* + ·еλȷ + ȷRETURN_LOCK_ERR_SWITPOS + ȷCI_SUCCESS + */ + devId = 0u; + devState = 0u; + checkResult = RouteAllSwitchPosCheck(wSubRouteId, &devId, &devState); + if (checkResult == CI_SUCCESS) { - /* - ·еλȷ - ȷRETURN_LOCK_ERR_SWITPOS - ȷCI_SUCCESS - */ - devId = 0u; - devState = 0u; - checkResult = RouteAllSwitchPosCheck(wSubRouteId, &devId, &devState); - if (checkResult == CI_SUCCESS) - { - /* ͨ */ - reResult = CI_SUCCESS; - } - else - { - /* ʧܷ */ - reResult = RETURN_LOCK_ERR_SWITPOS; - - } + /* ͨ */ + reResult = CI_SUCCESS; } else { /* ʧܷ */ - reResult = CI_ERROR; + reResult = RETURN_LOCK_ERR_SWITPOS; + } } @@ -3922,32 +3914,30 @@ static UINT8 SetDrSubRouteSwitchCheck(UINT16 routeId, UINT8 functionId, UINT8 se } if (CI_SUCCESS == reResult) - { - if (CI_TRADITION_RAILWAY == lineIdentity) + {/*·*/ + /*·δ*/ + devId = 0u; + devState = 0u; + checkResult = RouteRelatedProSwitchYLockCheck(routeId, &devId, &devState); + if (checkResult == CI_SUCCESS) { /* ͨ */ reResult = CI_SUCCESS; } else { - /* ʧܷ *//* zt ɾش 2022-02-15 */ + /* ¼ */ + SetErrorData(functionId, CI_DEVICE_TYPE_SWITCH, devId, ETYPE_SWT_YLOCK_STATE, devState, sendLevel); + /* ʧܷ */ reResult = CI_ERROR; } - } - else - { - /* ʧܷ */ - reResult = CI_ERROR; - } - if (CI_SUCCESS == reResult) - {/*·*/ - if (CI_TRADITION_RAILWAY == lineIdentity) + if (CI_SUCCESS == reResult) { - /*·δ*/ + /*·λȷλòȷɶ*/ devId = 0u; devState = 0u; - checkResult = RouteRelatedProSwitchYLockCheck(routeId, &devId, &devState); + checkResult = DrSubRouteProtSwiPosMovValCheck(routeId, &devId, &devState, sendLevel); if (checkResult == CI_SUCCESS) { /* ͨ */ @@ -3955,37 +3945,12 @@ static UINT8 SetDrSubRouteSwitchCheck(UINT16 routeId, UINT8 functionId, UINT8 se } 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 = DrSubRouteProtSwiPosMovValCheck(routeId, &devId, &devState, sendLevel); - if (checkResult == CI_SUCCESS) - { - /* ͨ */ - reResult = CI_SUCCESS; - } - else - { - /* ʧܷ */ - reResult = CI_ERROR; - } - } - else - { - reResult = CI_ERROR; - } } else { - /* ʧܷ *//* zt ɾش 2022-02-15 */ reResult = CI_ERROR; } } diff --git a/TSCP/src/APP/ciapp/Route/LogicalRouteDataManage.c b/TSCP/src/APP/ciapp/Route/LogicalRouteDataManage.c index 8e9a331..92fea29 100644 --- a/TSCP/src/APP/ciapp/Route/LogicalRouteDataManage.c +++ b/TSCP/src/APP/ciapp/Route/LogicalRouteDataManage.c @@ -2437,7 +2437,9 @@ void LgcSecLogicalUnlockProc(const UINT16 logRouteId, const UINT16 logSectionId, /*0 */ for (jj = chTrainSum; jj < chLgcResTrainSum; jj++) { - (void)ComMemSet(&(pstLgcSecInfo[wLgcBufIndex].szTrainResData[jj]), (UINT16)sizeof(LogicTrainResStruct), 0U); + + /*ԴϢṹ*/ + ResetResInfoStruct(wLgcBufIndex, jj); } pstLgcSecInfo[wLgcBufIndex].chTrainInfoSum = chTrainSum; diff --git a/TSCP/src/APP/ciapp/Route/RouteConfigDataManage.c b/TSCP/src/APP/ciapp/Route/RouteConfigDataManage.c index f278152..c23eb69 100644 --- a/TSCP/src/APP/ciapp/Route/RouteConfigDataManage.c +++ b/TSCP/src/APP/ciapp/Route/RouteConfigDataManage.c @@ -12,7 +12,7 @@ #include "../Switch/SwitchDataManage.h" #include "RouteConfigDataManage.h" - +#include "dquCILSStruInit.h" RouteConfigDataStruct RouteConfigDataStru[ROUTE_SUM_MAX]; /*·ݽṹ,cgh-ϲCID-2539-1˴гʼͳһŵInitAllStaticDataStrнгʼΪں˹*/ UINT16 LocalCiRouteIdBuf[ROUTE_SUM_MAX] = {0u}; /*屾·IDӳ*/ INT16 RouteCurSum = 0; /*·ǰ(͸Ľ·),·⴦*/ diff --git a/TSCP/src/APP/ciapp/Section/AxisSectionDataManage.c b/TSCP/src/APP/ciapp/Section/AxisSectionDataManage.c index b732dba..189236f 100644 --- a/TSCP/src/APP/ciapp/Section/AxisSectionDataManage.c +++ b/TSCP/src/APP/ciapp/Section/AxisSectionDataManage.c @@ -503,20 +503,43 @@ void SetAxisIncludeLogSecArbState(const UINT16 wAxisSectionId, const UINT8 chSta UINT16* pLogSectionIdBuf = NULL;/*ΰ߼ID*/ UINT8 chLogSectionSum = 0U;/*ΰ߼Ŀ*/ UINT8 ii = 0U; + UINT8 cLocalCiId = 0U; + UINT8 chLogSecBelongCi = 0U; + UINT8 chCheckFlag = 0U; pLogSectionIdBuf = GetAxisSecLogSectionIdBuf(wAxisSectionId); chLogSectionSum = GetAxisSecLogSectionSum(wAxisSectionId); - + cLocalCiId = GetSystemParaLocalCiId(); + if (NULL != pLogSectionIdBuf) { for (ii = 0U; ii < chLogSectionSum; ii++) { if ((LGC_SECTION_ARB_NO == chState) || (LGC_SECTION_ARB_YES == chState)) { - SetLgcArbState(pLogSectionIdBuf[ii], chState); + chLogSecBelongCi = GetLogSecBelongCiId(pLogSectionIdBuf[ii]); + chCheckFlag = IsSameLineCI(cLocalCiId, chLogSecBelongCi); + if (SAME_LINE_NO == chCheckFlag) + { + SetLgcArbState(pLogSectionIdBuf[ii], chState); + SetLogSecCbtcArbState(pLogSectionIdBuf[ii], chState); /*ͨͬ·CBTCARBʾ*/ + } + else + { + SetLgcArbState(pLogSectionIdBuf[ii], chState); + } + + } + else + { + /**/ } } } + else + { + /**/ + } } /* diff --git a/TSCP/src/APP/ciapp/Section/LogicSectionDataManage.c b/TSCP/src/APP/ciapp/Section/LogicSectionDataManage.c index 7a1b4f1..d39455f 100644 --- a/TSCP/src/APP/ciapp/Section/LogicSectionDataManage.c +++ b/TSCP/src/APP/ciapp/Section/LogicSectionDataManage.c @@ -1618,7 +1618,8 @@ void ClearLgcSecResTrain(UINT16 wLogSecId) /*0*/ for (ii = chNeedKeepSum; ii < LOGIC_SECTION_RES_SUM_MAX; ii++) { - (void)ComMemSet((UINT8*)&(LogicSectionDataStruCC[wBufIndex].szTrainResData[ii]), (UINT16)sizeof(LogicTrainResStruct), 0U); + /*ԴϢṹ*/ + ResetResInfoStruct(wBufIndex, ii); } LogicSectionDataStruCC[wBufIndex].chTrainInfoSum = chNeedKeepSum; } @@ -2811,7 +2812,7 @@ UINT8 GetLogSecResShareFlag(const UINT16 wLgcSecId) /*ش*/ funRetVal = CI_ERROR; } - return funRetVal; + return LOGIC_SECTION_RES_SHARE_YES; } /* @@ -2886,7 +2887,7 @@ void RemoveLgcSecResTrain(UINT16 wLogSecId, UINT16 wTrainId) if (wLgcResTrainId == wTrainId) { /*ɾгӦ߼Դ*/ - (void)ComMemSet((void *)&pstLgcSecInfo[wLgcBufIndex].szTrainResData[jj], (UINT16)sizeof(LogicTrainResStruct), 0U); + ResetResInfoStruct(wLgcBufIndex, jj); debug_infor_printf((const)"LogSecRes Remove LgcId: %d TrainId:%d Cyc\n" , wLogSecId , wTrainId @@ -3805,7 +3806,9 @@ void LogJumpLockCmdManage(const UINT16 logSectionId, const UINT8 jumpLockState) else { /** Ծ־Ϊ */ + + ClearLogSeceSwitchDanCaoPos(logSectionId);/*λ*/ /** ߼Ծ */ SetLogSecJumpLockState(logSectionId, LOGIC_SECTION_JUMP_LOCK_YES); @@ -3815,9 +3818,13 @@ void LogJumpLockCmdManage(const UINT16 logSectionId, const UINT8 jumpLockState) devState = 0u; retVal = LogicSecRltvPrtctSwLockCheck(logSectionId, &devId, &devState); if (CI_SUCCESS == retVal) - { + {/**/ SetLogSecJumpLockPermFlag(logSectionId, LOGIC_JUMPUNLOCK_PERMISSIVE_YES); } + else + { + SetLogSecJumpLockPermFlag(logSectionId, LOGIC_JUMPUNLOCK_PERMISSIVE_NO); + } } } @@ -4985,7 +4992,7 @@ void SetLogSecLogLockState(const UINT16 wLogSectionId, const UINT8 chLogLockStat { UINT16 wBufIndex = 0U; /*±*/ UINT16 LogSecLockBelongRouteId = 0U; - + UINT8 index = 0U; wBufIndex = GetlogSectionBufIndex(wLogSectionId); /*ȡ±*/ if (LOGIC_SECTION_SUM_MAX > wBufIndex) @@ -5003,9 +5010,10 @@ void SetLogSecLogLockState(const UINT16 wLogSectionId, const UINT8 chLogLockStat else { LogicSectionDataStruCC[wBufIndex].chTrainInfoSum = 0U; - (void)CommonMemSet(LogicSectionDataStruCC[wBufIndex].szTrainResData, \ - (UINT32)sizeof(LogicSectionDataStruCC[wBufIndex].szTrainResData), \ - 0U, (UINT32)sizeof(LogicSectionDataStruCC[wBufIndex].szTrainResData)); + for(index = 0U; index < LOGIC_SECTION_RES_SUM_MAX; index++) + { + ResetResInfoStruct(wBufIndex, index); + } } } @@ -5189,7 +5197,7 @@ void SetLogSecLogLockStateOtherCi(const UINT16 wLogSectionId, const UINT8 chLogL { UINT16 wBufIndex = 0U; /*±*/ UINT8 cLogSecLockState = 0U; /*߼״̬*/ - + UINT8 jj = 0U; wBufIndex = GetlogSectionBufIndex(wLogSectionId); /*ȡ±*/ if (LOGIC_SECTION_SUM_MAX > wBufIndex) @@ -5204,7 +5212,10 @@ void SetLogSecLogLockStateOtherCi(const UINT16 wLogSectionId, const UINT8 chLogL { /*·պ߼վδգ߼ԴгϢ*/ LogicSectionDataStruCC[wBufIndex].chTrainInfoSum = 0U; - (void)CommonMemSet(LogicSectionDataStruCC[wBufIndex].szTrainResData, (UINT32)sizeof(LogicSectionDataStruCC[wBufIndex].szTrainResData), 0U, (UINT32)sizeof(LogicSectionDataStruCC[wBufIndex].szTrainResData)); + for (jj = 0U; jj < LOGIC_SECTION_RES_SUM_MAX; jj++) + { + ResetResInfoStruct(wBufIndex, jj); + } } else { @@ -5719,13 +5730,13 @@ void SetLogSecLockDirHlht(UINT16 wLogSectionId, const UINT8 lockDir) if (bufIndex < LOGIC_SECTION_SUM_MAX) { - if (CI_SYSTEM_DIRECTION_NONE == lockDir) + if ((CI_SYSTEM_DIRECTION_UP == lockDir) || (CI_SYSTEM_DIRECTION_DOWN == lockDir)) { - LogicSectionDataStru[bufIndex].LogLockDir = CI_SYSTEM_DIRECTION_NONE; + LogicSectionDataStru[bufIndex].LogLockDir = lockDir; } else { - LogicSectionDataStru[bufIndex].LogLockDir = lockDir; + LogicSectionDataStru[bufIndex].LogLockDir = CI_SYSTEM_DIRECTION_NONE; } } else @@ -6385,10 +6396,6 @@ UINT8 ReqAlignmentInfoCalc(void) { break; } - else - { - /*ִ*/ - } } } else @@ -6613,4 +6620,35 @@ void SetSendAtsLgcArbState(void) ; /* ݻȡʧ */ } } -} \ No newline at end of file +} + +/* +* ԴϢṹ +* ˵ UINT16 logicSectionId ߼ID +* UINT8 index ԴϢṹ +* ֵ +*/ +void ResetResInfoStruct(UINT16 logicSectionId, UINT8 index) +{ + if (LOGIC_SECTION_SUM_MAX > logicSectionId) + { + + if (LOGIC_SECTION_RES_SUM_MAX > index) + { + LogicSectionDataStruCC[logicSectionId].szTrainResData[index].wTrainId = 0U; + LogicSectionDataStruCC[logicSectionId].szTrainResData[index].chLogicResUsable = LOGIC_SECTION_RES_UNUSABLE; + LogicSectionDataStruCC[logicSectionId].szTrainResData[index].chLogicReturnState = LOGIC_SECTION_TRAIN_RETURN_NO; + LogicSectionDataStruCC[logicSectionId].szTrainResData[index].chTrainApplyState = LOGIC_SECTION_TRAIN_APPLY_NO; + LogicSectionDataStruCC[logicSectionId].szTrainResData[index].chLogicUnlockState = LOGIC_SECTION_TRAIN_UNLOCK_NO; + LogicSectionDataStruCC[logicSectionId].szTrainResData[index].dwRcvUnlockCmdCyc = 0U; + } + else + { + /**/ + } + } + else + { + ; /**/ + } +} diff --git a/TSCP/src/APP/ciapp/Section/LogicSectionDataManage.h b/TSCP/src/APP/ciapp/Section/LogicSectionDataManage.h index 4682b32..bd0cc2d 100644 --- a/TSCP/src/APP/ciapp/Section/LogicSectionDataManage.h +++ b/TSCP/src/APP/ciapp/Section/LogicSectionDataManage.h @@ -1469,7 +1469,13 @@ void SetLogSecPbTacsArbState(const UINT16 wLgcId, const UINT8 chArb); * by cgh 20260330 */ void SetSendAtsLgcArbState(void); - +/* +* ԴϢṹ +* ˵ UINT16 logicSectionId ߼ID +* ֵ +* by cgh 20260330 +*/ +void ResetResInfoStruct(UINT16 logicSectionId, UINT8 index); #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/Section/SectionDefine.h b/TSCP/src/APP/ciapp/Section/SectionDefine.h index fc47938..6516f2b 100644 --- a/TSCP/src/APP/ciapp/Section/SectionDefine.h +++ b/TSCP/src/APP/ciapp/Section/SectionDefine.h @@ -16,9 +16,9 @@ /**/ #define PHYSICAL_SECTION_SUM_MAX ((UINT16)1000) /*ֵ*/ -#define AXIS_SECTION_SUM_MAX ((UINT16)1200) /*ֵ*/ +#define AXIS_SECTION_SUM_MAX ((UINT16)2000) /*ֵ*/ #define AXIS_INCLUDE_LOG_SUM_MAX ((UINT16)50) /*߼ֵ*/ -#define LOGIC_SECTION_SUM_MAX ((UINT16)1500) /*߼ֵ*/ +#define LOGIC_SECTION_SUM_MAX ((UINT16)2000) /*߼ֵ*/ #define PHYSICAL_INCLUDE_AXIS_SUM_MAX ((UINT16)10) /*ΰֵ*/ #define AXIS_INCLUDE_SWITCH_SUM_MAX ((UINT16)4) /*ΰĵֵ*/ #define AXIS_INCLUDE_LINK_SUM_MAX ((UINT16)5) /*ΰLINKֵ*/ diff --git a/TSCP/src/APP/ciapp/Switch/SwitchConfigDataManage.c b/TSCP/src/APP/ciapp/Switch/SwitchConfigDataManage.c index b8e9a87..171097d 100644 --- a/TSCP/src/APP/ciapp/Switch/SwitchConfigDataManage.c +++ b/TSCP/src/APP/ciapp/Switch/SwitchConfigDataManage.c @@ -1726,3 +1726,39 @@ UINT8 GetSwitchWhetherBelongThisOc(UINT16 switchId, UINT8 ocId) return retVal; } +/* +* ȡڱOCͬ忨ĵID +* ˵ +* +* UINT16 switchId ID +* UINT8 ocId OCID +* ֵ + <500 ID + =500 Ƿֵ +* Add by mpt 20260404 +*/ +UINT16 GetSwitchThisOcOtherSwitchId(UINT16 switchId, UINT8 ocId) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT8 i = 0u; + UINT16 retVal = SWITCH_SUM_MAX; + UINT8 chOCIndex = 0U; + + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if ((SWITCH_SUM_MAX > bufIndex) && (OC_SUM_MAX > ocId) && (0u < ocId)) + { + chOCIndex = GetSwitchThisOCIndex(switchId, ocId); + if (SWITCH_BELONG_OC_MAX > chOCIndex) + { + retVal = SwitchConfigDataStru[bufIndex].belongOCConfigData[chOCIndex].wThisOcOtherSwitchId; + } + else + { + /*ִ*/ + } + } + + return retVal; +} + diff --git a/TSCP/src/APP/ciapp/Switch/SwitchConfigDataManage.h b/TSCP/src/APP/ciapp/Switch/SwitchConfigDataManage.h index 29829c8..0d9219b 100644 --- a/TSCP/src/APP/ciapp/Switch/SwitchConfigDataManage.h +++ b/TSCP/src/APP/ciapp/Switch/SwitchConfigDataManage.h @@ -39,6 +39,7 @@ typedef struct S_SwitchBelongOCConfigDataStr/* UINT8 chSwitchBoardNum; /*忨*/ UINT8 ModuleAddr[MAX_OC_SWITCH_INCLUDE_BOARD_NUM]; /*ַID*/ UINT8 szPlusBoxId; /*ת޻ڲID*/ + UINT16 wThisOcOtherSwitchId; /*ͬOCͬ忨һID*/ }SwitchBelongOCConfigDataStr; typedef struct S_SwitchConfigDataStruct @@ -120,6 +121,7 @@ typedef struct S_OC_SwitchConfigDataStruct UINT16 BelongOcId; /*OCID(ֶ)*/ UINT8 ModuleAddrA[MAX_OC_SWITCH_INCLUDE_BOARD_NUM]; /*Aϵַ*/ UINT8 ModuleAddrB[MAX_OC_SWITCH_INCLUDE_BOARD_NUM]; /*Bϵַ*/ + UINT16 otherSwitchId; /*ͬOCͬ忨һID(ֶ)*/ }OCSwitchConfigDataStruct; /*ɰOCݱ*/ @@ -670,6 +672,18 @@ UINT8 GetSwitchThisOcOtherOCId(const UINT16 switchId, const UINT8 ocId); * Add by mpt 20260330 */ UINT8 GetSwitchWhetherBelongThisOc(UINT16 switchId, UINT8 ocId); +/* +* ȡڱOCͬ忨ĵID +* ˵ +* +* UINT16 switchId ID +* UINT8 ocId OCID +* ֵ + <500 ID + =500 Ƿֵ +* Add by mpt 20260404 +*/ +UINT16 GetSwitchThisOcOtherSwitchId(UINT16 switchId, UINT8 ocId); #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/Switch/SwitchDataManage.c b/TSCP/src/APP/ciapp/Switch/SwitchDataManage.c index fd57f0c..4523ebe 100644 --- a/TSCP/src/APP/ciapp/Switch/SwitchDataManage.c +++ b/TSCP/src/APP/ciapp/Switch/SwitchDataManage.c @@ -1159,14 +1159,11 @@ void SetSwitchDrivePostion(const UINT16 switchId, const UINT8 drivePosition) UINT8 singleSwitchCurPosition = 0U; UINT16 switchOtherId = 0U; /*˫һID*/ UINT8 ciPattern = GetLocalCiPattern(); - UINT32 dwCurCycleNum = 0u; bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ switchOtherId = GetDSwitchOtherId(switchId); bufIndex2 = GetSwitchConfigBufIndex(switchOtherId); /*ȡ˫±*/ - dwCurCycleNum = Get2oo2CurCycleNum(); - if (bufIndex < SWITCH_SUM_MAX) { @@ -1190,9 +1187,7 @@ void SetSwitchDrivePostion(const UINT16 switchId, const UINT8 drivePosition) /*λ*/ SwitchDataStru[bufIndex].SwitchDrivePos = drivePosition; /*ʼʱ*/ - SetSwitchDriveStartCycNum(switchId, dwCurCycleNum); - /*õʼڣֱλʱ0*/ - SetSwitchOutputDrvCmdCycNum(switchId, dwCurCycleNum); + SetSwitchDriveStartCycNum(switchId, Get2oo2CurCycleNum()); } } else @@ -1228,10 +1223,7 @@ void SetSwitchDrivePostion(const UINT16 switchId, const UINT8 drivePosition) /*λ*/ SwitchDataStru[bufIndex2].SwitchDrivePos = drivePosition; /*ʼʱ*/ - SetSwitchDriveStartCycNum(switchOtherId, dwCurCycleNum); - - /*õʼڣֱλʱ0*/ - SetSwitchOutputDrvCmdCycNum(switchOtherId, dwCurCycleNum); + SetSwitchDriveStartCycNum(switchOtherId, Get2oo2CurCycleNum()); } } else @@ -3278,7 +3270,7 @@ void SetSwitchOcPlusBoxSateState(const UINT16 switchId, const UINT8 ocId, const bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ chOCIndex = GetSwitchThisOCIndex(switchId, ocId); - if ((SWITCH_SUM_MAX > bufIndex) && (chOCIndex < SWITCH_BELONG_OC_MAX)) + if ((SWITCH_SUM_MAX > bufIndex) && (SWITCH_BELONG_OC_MAX >chOCIndex)) { SwitchDataStru[bufIndex].belongOCData[chOCIndex].PlusBoxSate = state; } @@ -3306,7 +3298,7 @@ UINT8 GetSwitchOcPlusBoxSateState(const UINT16 switchId, const UINT8 ocId) bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ chOCIndex = GetSwitchThisOCIndex(switchId, ocId); - if ((SWITCH_SUM_MAX > bufIndex) && (chOCIndex < SWITCH_BELONG_OC_MAX)) + if ((SWITCH_SUM_MAX > bufIndex) && (SWITCH_BELONG_OC_MAX > chOCIndex)) { ret = SwitchDataStru[bufIndex].belongOCData[chOCIndex].PlusBoxSate; } @@ -3371,7 +3363,7 @@ UINT8 GetSwitchThisOCBoardState(const UINT16 switchId, const UINT8 ocId) UINT8 num = 0u; UINT8 i = 0u; UINT8 chSwitchThisOCBoardNum = 0u; - UINT8 chOCIndex = 0U; + UINT8 chOCIndex = 0u; UINT8 addrAState = 0u; UINT8 addrBState = 0u; UINT8 retVal = SWITCH_BOARD_FAULT; @@ -3384,20 +3376,23 @@ UINT8 GetSwitchThisOCBoardState(const UINT16 switchId, const UINT8 ocId) chSwitchThisOCBoardNum = GetSwitchThisOCBoardNum(switchId, ocId); if (SWITCH_BELONG_OC_MAX > chOCIndex) { - for (i = 0; i < (chSwitchThisOCBoardNum/2u); i+=2u) + if (0u < chSwitchThisOCBoardNum) { - addrAState = SwitchDataStru[bufIndex].belongOCData[chOCIndex].BoardStateBuf[i]; - addrBState = SwitchDataStru[bufIndex].belongOCData[chOCIndex].BoardStateBuf[i+1]; - if ((SWITCH_BOARD_FAULT == addrAState) && (SWITCH_BOARD_FAULT == addrBState)) + retVal = SWITCH_BOARD_NORMAL;/*Ϊ*/ + for (i = 0u; i < (chSwitchThisOCBoardNum - 1u); i += 2u) { - retVal = SWITCH_BOARD_FAULT; - break; + addrAState = SwitchDataStru[bufIndex].belongOCData[chOCIndex].BoardStateBuf[i]; + addrBState = SwitchDataStru[bufIndex].belongOCData[chOCIndex].BoardStateBuf[i + 1u]; + if ((SWITCH_BOARD_FAULT == addrAState) && (SWITCH_BOARD_FAULT == addrBState)) + { + retVal = SWITCH_BOARD_FAULT; + break; + } } } - - if ((0U < chSwitchThisOCBoardNum) && (i == chSwitchThisOCBoardNum)) - { - retVal = SWITCH_BOARD_NORMAL; + else + {/*쳣֧Ϊ*/ + retVal = SWITCH_BOARD_FAULT; } } @@ -3529,7 +3524,7 @@ void SetSwitchOutputDrvCmdCycNum(const UINT16 switchId, const UINT32 cycNum) { UINT16 bufIndex = 0u; /*±*/ bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ - if (bufIndex < SWITCH_SUM_MAX) + if (SWITCH_SUM_MAX >bufIndex) { SwitchDataStru[bufIndex].SwitchOutputDrvCmdCycNum = cycNum; } @@ -3546,7 +3541,7 @@ UINT32 GetSwitchOutputDrvCmdCycNum(const UINT16 switchId) UINT32 retVal = CI_ERROR; bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ - if (bufIndex < SWITCH_SUM_MAX) + if (SWITCH_SUM_MAX > bufIndex) { retVal = SwitchDataStru[bufIndex].SwitchOutputDrvCmdCycNum; } diff --git a/TSCP/src/APP/ciapp/System/CiSystemDefine.h b/TSCP/src/APP/ciapp/System/CiSystemDefine.h index 3370bd0..360ab4d 100644 --- a/TSCP/src/APP/ciapp/System/CiSystemDefine.h +++ b/TSCP/src/APP/ciapp/System/CiSystemDefine.h @@ -125,6 +125,9 @@ extern UINT8 CI_SYSTEM_TYPE_RCI; #define CI_DEVICE_TYPE_BACKUP_VOBC ((UINT8)0xBE) /*VOBCг*/ #define CI_DEVICE_TYPE_ZHAOCHA ((UINT8)0xC0) /*ղ*/ +#define CI_DEVICE_TYPE_SWITCH_PHYSEC ((UINT8)0xC1) /*Σͨӿʹ*/ +#define CI_DEVICE_TYPE_XIANSU_LOGSEC ((UINT8)0xC2) /*߼Σͨӿʹ*/ + #define CI_DEVICE_TYPE_CMD ((UINT8)0x0B) /**/ diff --git a/TSCP/src/APP/ciapp/System/SystemConfigDefine.h b/TSCP/src/APP/ciapp/System/SystemConfigDefine.h index 05ca236..d1c1b07 100644 --- a/TSCP/src/APP/ciapp/System/SystemConfigDefine.h +++ b/TSCP/src/APP/ciapp/System/SystemConfigDefine.h @@ -59,10 +59,10 @@ /*V13.0汾ݽṹ 2018.8.3*/ /*汾*/ -#define VER_MAIN_SUBCI_CI_CID ((UINT8)25) /*ϵͳ汾*/ +#define VER_MAIN_SUBCI_CI_CID ((UINT8)27) /*ϵͳ汾*/ #define VER_SUB_SUBCI_CI_CID ((UINT8)0) /*ϵͳӰ汾*/ #define VER_BRUNCH_CI_CID ((UINT8)0) /*֧汾..........0....֧1 2 */ -#define VER_RETURN_SUBCI_CI_CID ((UINT8)2) /*ϵͳع汾*/ +#define VER_RETURN_SUBCI_CI_CID ((UINT8)0) /*ϵͳع汾*/ #ifdef SCADE_MODE /*SCADE汾*/ @@ -75,30 +75,30 @@ /*д汾*/ #define VER_SOFT_PRODUCT ((UINT8)40) /*Ʒ*/ #define VER_SOFT_MODUAL_APP ((UINT8)1) /*ģ*/ -#define VER_SOFT_MIANVERSION ((UINT8)25) /*汾*/ -#define VER_SOFT_SUBVERSION ((UINT8)3) /*Ӱ汾*/ +#define VER_SOFT_MIANVERSION ((UINT8)27) /*汾*/ +#define VER_SOFT_SUBVERSION ((UINT8)1) /*Ӱ汾*/ #endif /*ɼݵĹݽṹ汾*/ #define VER_1_PUBLIC_FS_1 ((UINT8)31) -#define VER_1_PUBLIC_FS_2 ((UINT8)5) +#define VER_1_PUBLIC_FS_2 ((UINT8)7) #define VER_1_PUBLIC_FS_3 ((UINT8)0) #define VER_1_PUBLIC_FS_4 ((UINT8)0) #define VER_2_PUBLIC_FS_1 ((UINT8)23) #define VER_2_PUBLIC_FS_2 ((UINT8)2) #define VER_2_PUBLIC_FS_3 ((UINT8)1) -#define VER_2_PUBLIC_FS_4 ((UINT8)5) +#define VER_2_PUBLIC_FS_4 ((UINT8)7) #define VER_3_PUBLIC_FS_1 ((UINT8)28) #define VER_3_PUBLIC_FS_2 ((UINT8)0) #define VER_3_PUBLIC_FS_3 ((UINT8)0) -#define VER_3_PUBLIC_FS_4 ((UINT8)22) +#define VER_3_PUBLIC_FS_4 ((UINT8)25) /*ɼݵ˽ݽṹ汾*/ -#define VER_1_PRIVATE_FS_1 ((UINT8)50) +#define VER_1_PRIVATE_FS_1 ((UINT8)52) #define VER_1_PRIVATE_FS_2 ((UINT8)0) #define VER_2_PRIVATE_FS_1 ((UINT8)0xFF) diff --git a/TSCP/src/APP/ciapp/System/SystemParameterManage.c b/TSCP/src/APP/ciapp/System/SystemParameterManage.c index 0f90313..32b74fb 100644 --- a/TSCP/src/APP/ciapp/System/SystemParameterManage.c +++ b/TSCP/src/APP/ciapp/System/SystemParameterManage.c @@ -23,6 +23,8 @@ static UINT16 LocalCTProtectSecUnlockTime = 0u;/* static UINT16 LocalUTNearUnLockTime = 0u;/*UTӽʱʱ䣨s*/ static UINT16 LocalCTNearUnLockTime = 0u;/*CTӽʱʱ䣨s*/ static UINT8 LocalWaysidePattern = 0u; /*Լ̵ӿ*/ +UINT8 gSerialCommFlag = SERIAL_COMM_NO; /*ͨű־*/ +SerialCommData gSzSerialCommData[SERIAL_GROUP_SUM_MAX] = { 0U }; /*ͨ*/ static UINT8 OCSswitch = 0u; /*OC-S*/ /* RCϲTIOCܻ */ @@ -1541,6 +1543,45 @@ UINT16 GetTiocSystemParameterData(UINT32* pConfigDataAdderBuf, UINT16* pConfigDa ;/*޴ */ } + /*Լ̵ӿ*/ + wTmpLen = 1u + wTmpConfigDataSum; + if (wBufMaxLen >= wTmpLen) + { + pConfigDataAdderBuf[wTmpConfigDataSum] = &LocalWaysidePattern; + pConfigDataLenBuf[wTmpConfigDataSum] = (UINT16)sizeof(UINT8); + wTmpConfigDataSum++; + } + else + { + ;/*޴ */ + } + + /*ͨű־*/ + wTmpLen = 1u + wTmpConfigDataSum; + if (wBufMaxLen >= wTmpLen) + { + pConfigDataAdderBuf[wTmpConfigDataSum] = &gSerialCommFlag; + pConfigDataLenBuf[wTmpConfigDataSum] = (UINT16)sizeof(UINT8); + wTmpConfigDataSum++; + } + else + { + ;/*޴ */ + } + + /*ͨ*/ + wTmpLen = 1u + wTmpConfigDataSum; + if (wBufMaxLen >= wTmpLen) + { + pConfigDataAdderBuf[wTmpConfigDataSum] = &gSzSerialCommData; + pConfigDataLenBuf[wTmpConfigDataSum] = (UINT16)(sizeof(SerialCommData) * (SERIAL_GROUP_SUM_MAX)); + wTmpConfigDataSum++; + } + else + { + ;/*޴ */ + } + /*OCݽṹ*/ wTmpLen = 1u + wTmpConfigDataSum; if (wBufMaxLen >= wTmpLen) @@ -2458,7 +2499,7 @@ UINT16 GetTiocSystemParameterData(UINT32* pConfigDataAdderBuf, UINT16* pConfigDa ;/* ޴ */ } - /* RC/CIϵͳת޻лʱ(λS) */ + /* RC/CIϵͳת޻лʱ(λms) */ wTmpLen = 1u + wTmpConfigDataSum; if (wBufMaxLen >= wTmpLen) { @@ -2470,7 +2511,7 @@ UINT16 GetTiocSystemParameterData(UINT32* pConfigDataAdderBuf, UINT16* pConfigDa { ;/* ޴ */ } - /* RC/CIϵͳת޻лʱ(λS) */ + /* RC/CIϵͳת޻лʱ(λms) */ wTmpLen = 1u + wTmpConfigDataSum; if (wBufMaxLen >= wTmpLen) { @@ -2907,7 +2948,7 @@ OtherCiParaStruct GetOtherCiPara(const UINT8 chOtherCiId) /* * ȡCվBUTʱ׷ٹܿ * ˵ -* ֵaaر 55 +* ֵaa 55ر * by cgh 20240815 */ UINT8 GetNoCGFollowUtSwitch(void) @@ -3280,9 +3321,9 @@ UINT32 GetSwitchMachineCutInterval(void) return wSwitchMachineCutInterval; } /* -* ȡRC/CIϵͳת޻лʱ(λS) +* ȡRC/CIϵͳת޻лʱ(λms) * ˵ -* ֵRC/CIϵͳת޻лʱ(λS) +* ֵRC/CIϵͳת޻лʱ(λms) * by mpt 20260324 */ UINT32 GetSwitchMachineDrvCutInterval(void) @@ -3325,3 +3366,152 @@ UINT8 GetLocalCiOCSswitch(void) { return OCSswitch; } + +/* +* ȡϢ +* ˵const UINT8 chCiId +* ֵϢ +* BY:lyj +*/ +UINT8 GetCiFactoryType(const UINT8 chCiId) +{ + UINT8 chRet = 0U; + if (CI_SUM_MAX > chCiId) + { + chRet = SystemParameterStruNew.chCiFactoryType[chCiId]; + } + else + { + /**/ + } + return chRet; +} +/** +* @brief ñͨű־ +* @param[in] UINT8 chSerialCommFlag ͨű־ +* @return CI_SUCCESS óɹ CI_ERROR ʧ +* @note by cgh 20260507 +*/ +UINT8 SetLocalSerialCommFlag(UINT8 chSerialCommFlag) +{ + UINT8 chReval = CI_ERROR; + + if ((SERIAL_COMM_YES == chSerialCommFlag) || (SERIAL_COMM_NO == chSerialCommFlag)) + { + gSerialCommFlag = chSerialCommFlag; + chReval = CI_SUCCESS; + } + else + { + ; + } + + return chReval; +} + +/** +* @brief ȡͨű־ +* @param[in] void +* @return SERIAL_COMM_YES ִ֧ͨ chSerialCommFlag ִ֧ͨ +* @note by cgh 20260507 +*/ +UINT8 GetLocalSerialCommFlag(void) +{ + return gSerialCommFlag; +} + +/** +* @brief ñͨ +* @param[in] UINT8 chGroupIndex +* @param[in] UINT8 chPortIndex ˿ +* @param[in] UINT16 wSerialCommCiId ͨID +* @param[in] UINT8 chSerialCommPort ͨŶ˿ں +* @return CI_SUCCESS óɹ CI_ERROR ʧ +* @note by cgh 20260507 +*/ +UINT8 SetLocalSerialCommData(UINT8 chGroupIndex,UINT8 chPortIndex,UINT16 wSerialCommCiId,UINT8 chSerialCommPort) +{ + UINT8 chReval = CI_ERROR; + + if ((SERIAL_GROUP_SUM_MAX > chGroupIndex) && (CI_SUM_MAX > wSerialCommCiId) && (SERIAL_PORT_SUM_MAX > chPortIndex)) + { + gSzSerialCommData[chGroupIndex].wSerialCommOtherCiId = wSerialCommCiId; + gSzSerialCommData[chGroupIndex].chSerialCommPort[chPortIndex] = chSerialCommPort; + + chReval = CI_SUCCESS; + } + else + { + ; + } + + return chReval; +} + +/** +* @brief ȡͨ +* @param[in] void +* @return ͨ +* @note by cgh 20260507 +*/ +SerialCommData* GetLocalSerialCommData(void) +{ + return gSzSerialCommData; +} + +/** +* @brief 豸ȡӦĴ +* @param[in] UINT16 DeviceName 豸 +* @param[in] UINT8* pSerialGroup ˿ +* @return ͨ +* @note by cgh 20260507 +*/ +UINT8 IsSerialDevice(UINT16 DeviceName, UINT8* pSerialGroup) +{ + UINT8 chReval = CI_ERROR; + UINT8 chLocalRcWorkMode = 0u; /*RCģʽ*/ + UINT8 cDstType = 0U; /*Ŀ豸*/ + UINT8 cDstId = 0U; /*Ŀ豸ID*/ + UINT8 chSerialCommFlag = 0U; /* ͨű־ */ + SerialCommData* szSerialCommData = NULL; /*ͨ*/ + UINT8 cSerialGroupIndex = 0U; + + chLocalRcWorkMode = GetLocalRcWorkMode(); + cDstType = (UINT8)((DeviceName & 0xFF00U) >> 8U); + cDstId = (UINT8)(DeviceName & 0x00FFU); + + if ((chLocalRcWorkMode == cDstType) && (NULL != pSerialGroup)) + { + /* жϵǰǷ߱ͨŵĹ */ + chSerialCommFlag = GetLocalSerialCommFlag(); + szSerialCommData = GetLocalSerialCommData(); + + if ((SERIAL_COMM_YES == chSerialCommFlag) && (NULL != szSerialCommData)) + { + for (cSerialGroupIndex = 0U; cSerialGroupIndex < SERIAL_GROUP_SUM_MAX; cSerialGroupIndex++) + { + if (DeviceName == szSerialCommData[cSerialGroupIndex].wSerialCommOtherCiId) + { + *pSerialGroup = cSerialGroupIndex; + chReval = CI_SUCCESS; + break; + } + else + { + /*ҵڶ*/ + ; + } + } + } + else + { + ; + } + } + else + { + + } + + return chReval; +} \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/System/SystemParameterManage.h b/TSCP/src/APP/ciapp/System/SystemParameterManage.h index 150e918..654d97b 100644 --- a/TSCP/src/APP/ciapp/System/SystemParameterManage.h +++ b/TSCP/src/APP/ciapp/System/SystemParameterManage.h @@ -108,6 +108,7 @@ extern "C" { #define FUNC_REOPRN_SET_NEAR ((UINT8)73) /*ؿźǷ·ӽ״̬أ0xAA-ؿĬýӽ 0x55-ؿݽӽռ״̬ýӽ/δӽ*/ #define FUNC_OVERLAP_UT_UNLOCK_MODE ((UINT8)74) /*UTгռѹͣʱνʽ*/ #define FUNC_PSD_EXCEPT_CANCLE_TYPE ((UINT8)75) /*쳣򿪺쳣ʽ0xAA ATS 0xBA0x55δ쳣Զ*/ +#define FUNC_PSD_KEEP_CLOSE_TYPE ((UINT8)76) /*ϵͳ/رվ̨ԭ*/ #define CiSum_ID ((UINT16)1)/*ʵվ */ @@ -259,9 +260,15 @@ extern "C" { #define RC_LINK_LINE_YES ((UINT8)0x55U) /*߱*/ #define RC_LINK_LINE_NO ((UINT8)0xAAU) /*߱*/ -#define OC_S_ON ((UINT8)0xAA) /*OC-S*/ +#define OC_S_ON ((UINT8)0xAA) /*֧OC-S*/ #define OC_S_OFF ((UINT8)0x55) /*֧OC-S*/ +#define SERIAL_GROUP_SUM_MAX 2 /*ͨ豸ֵ */ +#define SERIAL_PORT_SUM_MAX 2 /*ͨŶ˿ֵ */ + +#define SERIAL_COMM_YES ((UINT8)0xAAU) /*ִ֧ͨ*/ +#define SERIAL_COMM_NO ((UINT8)0x55U) /*ִ֧ͨ*/ + /*ϵͳṹ*/ typedef struct S_SystemParameterStruct { @@ -375,7 +382,6 @@ typedef struct S_SystemParaStruct UINT8 MaxTsrSpeed;/*ʱ*/ UINT16 MaxTsrNum;/*һʱٵ*/ UINT16 MaxSectionOfTsr;/*һʱٱа߼*/ - UINT32 IvocOcCommunicationErrorTime;/*IVOC-OCͨŹжʱ(ms),add by yt202231գ䳵ϵͳ*/ UINT32 TmcOcCommunicationErrorTime;/*TMC-OCͨŹжʱ(ms),add by yt202231գ䳵ϵͳ*/ UINT32 OcTslCommunicationErrorTime;/*OC-TSLͨŹжʱ䣨ms,add by yt202231գ䳵ϵͳ*/ UINT8 LinkLogicDirUpAndDown; /*ϵͳ߼зĹϵ,add by yt202231գ䳵ϵͳ*/ @@ -395,6 +401,7 @@ typedef struct S_SystemParaStruct UINT8 chNoCGFollowUtSwitch; /*CվBUTǿ׷ٹܿ aa 55ر*/ OtherCiParaStruct otherCICiParaStru[CI_SUM_MAX]; /**/ UINT8 chCldAndScxMergeFlag; /*Գߺ迪أ0x55 裬0xaa */ + UINT8 chCiFactoryType[CI_SUM_MAX]; /*̶*/ /************************************************/ }SystemParameterStructNew; @@ -418,6 +425,12 @@ typedef struct S_CI_OC_Relation UINT16 OcIdNum; }CiOcRelateion; +typedef struct S_SERIAL_COMM_DATA +{ + UINT16 wSerialCommOtherCiId; /*ͨID*/ + UINT8 chSerialCommPort[SERIAL_PORT_SUM_MAX]; /*ͨŶ˿*/ +}SerialCommData; + /*******************************ȫֱ*******************************/ extern UINT8 LocalCiId; /*ID*/ @@ -506,6 +519,8 @@ extern UINT8 localBackUpFlag; /* extern UINT32 dwDownWashWaitAcceptTime; /*ģʽϴȴֵԱͬʱ䣨S*/ extern UINT32 LineMinTrainLength; /*ϵͳݣ·С*/ extern UINT32 wJXTCStopDetectTime; /*϶ֹ̽ͣʱ䣨s*/ +extern UINT8 gSerialCommFlag; /*ͨű־*/ +extern SerialCommData gSzSerialCommData[SERIAL_GROUP_SUM_MAX]; /*ͨ*/ /* * ϵͳʱת * ˵ void @@ -1353,7 +1368,7 @@ OtherCiParaStruct GetOtherCiPara(const UINT8 chOtherCiId); /* * ȡCվBUTǿ׷ٹܿ * ˵ -* ֵaaر 55 +* ֵaa 55ر * by cgh 20240815 */ UINT8 GetNoCGFollowUtSwitch(void); @@ -1544,9 +1559,9 @@ void SetCiFunctionSwitchConfig(UINT8 chFunctionConfigIndex, UINT8 chSwitchVal); */ UINT32 GetSwitchMachineCutInterval(void); /* -* ȡRC/CIϵͳת޻лʱ(λS) +* ȡRC/CIϵͳת޻лʱ(λms) * ˵ -* ֵRC/CIϵͳת޻лʱ(λS) +* ֵRC/CIϵͳת޻лʱ(λms) * by mpt 20260324 */ UINT32 GetSwitchMachineDrvCutInterval(void); @@ -1569,6 +1584,57 @@ UINT8 SetLocalCiOCSswitch(UINT8 funSwitch); * ֵOCS */ UINT8 GetLocalCiOCSswitch(void); +/* +* ȡϢ +* ˵const UINT8 chCiId +* ֵϢ +* BY:lyj +*/ +UINT8 GetCiFactoryType(const UINT8 chCiId); + +/** +* @brief ñͨű־ +* @param[in] UINT8 chSerialCommFlag ͨű־ +* @return CI_SUCCESS óɹ CI_ERROR ʧ +* @note by cgh 20260507 +*/ +UINT8 SetLocalSerialCommFlag(UINT8 chSerialCommFlag); + +/** +* @brief ȡͨű־ +* @param[in] void +* @return SERIAL_COMM_YES ִ֧ͨ chSerialCommFlag ִ֧ͨ +* @note by cgh 20260507 +*/ +UINT8 GetLocalSerialCommFlag(void); + +/** +* @brief ñͨ +* @param[in] UINT8 chGroupIndex +* @param[in] UINT8 chPortIndex ˿ +* @param[in] UINT16 wSerialCommCiId ͨID +* @param[in] UINT8 chSerialCommPort ͨŶ˿ں +* @return CI_SUCCESS óɹ CI_ERROR ʧ +* @note by cgh 20260507 +*/ +UINT8 SetLocalSerialCommData(UINT8 chGroupIndex, UINT8 chPortIndex, UINT16 wSerialCommCiId, UINT8 chSerialCommPort); + +/** +* @brief ȡͨ +* @param[in] void +* @return ͨ +* @note by cgh 20260507 +*/ +SerialCommData* GetLocalSerialCommData(void); + +/** +* @brief 豸ȡӦĴ +* @param[in] UINT16 DeviceName 豸 +* @param[in] UINT8* pSerialGroup ˿ +* @return ͨ +* @note by cgh 20260507 +*/ +UINT8 IsSerialDevice(UINT16 DeviceName, UINT8* pSerialGroup); #ifdef __cplusplus } diff --git a/TSCP/src/APP/ciapp/Train/TrainDataManage.c b/TSCP/src/APP/ciapp/Train/TrainDataManage.c index 7465ff8..222b597 100644 --- a/TSCP/src/APP/ciapp/Train/TrainDataManage.c +++ b/TSCP/src/APP/ciapp/Train/TrainDataManage.c @@ -185,6 +185,12 @@ static void SetTrainAtsScreenProc(void); */ static UINT32 GetTrainTransBadCyc(const UINT16 wTrainId); +/* +* ȡָгͨ(IVOC)жں +* ˵ const UINT16 wTrainId, гID +* ֵ гͨжں +*/ +static UINT32 GetTrainIvocTransBadCyc(const UINT16 wTrainId); /* * ָгܷתΪUCT * ˵ const UINT16 wTrainId, гID @@ -536,6 +542,33 @@ UINT8 GetTrainTransitmitStat(const UINT16 wTrainId) return chRetVal; } + +/* +* ȡָг(IVOC)ͨ״̬ +* ˵ const UINT16 wTrainId, гID +* ֵ 0: ȡʧ +* 0x55: ͨ״̬ +* 0xAA: ʧͨ +* 0xFF: ͨ״̬δ֪ +* : qw.liu 2022-02-24 +*/ +UINT8 GetTrainIvocTransitmitStat(const UINT16 wTrainId) +{ + UINT8 chRetVal = CI_ERROR; + UINT16 wBufIndex = 0U; + + wBufIndex = GetTrainBufIndex(wTrainId); + if (TRAIN_SUM_MAX > wBufIndex) + { + chRetVal = gstTrainInfo[wBufIndex].chIvocTransmitStat; + } + else + { + chRetVal = CI_ERROR; + } + + return chRetVal; +} /* * ȡָгȼ * ˵ const UINT16 wTrainId, гID @@ -1086,6 +1119,47 @@ UINT8 SetTrainTransmitStat(const UINT16 wTrainId,const UINT8 chTrainmitStat) return chRetVal; } + +/* +* ָг(IVOC)ͨ״̬ +* ˵ const UINT16 wTrainId, гID +* const UINT8 chTrainmitStat ͨ״̬ +* ֵ CI_ERROR: ʧ +CI_SUCCESS:ݳɹ +* 0x55 : ͨ״̬ +* 0xAA : ʧͨ +* 0xFF : ͨ״̬δ֪ +* : qw.liu 2025 - 05 - 08 +*/ +UINT8 SetTrainIvocTransmitStat(const UINT16 wTrainId, const UINT8 chTrainmitStat) +{ + UINT8 chRetVal = CI_ERROR; + UINT16 wBufIndex = 0U; + + wBufIndex = GetTrainBufIndex(wTrainId); + if (TRAIN_SUM_MAX > wBufIndex) + { + if ((TRAIN_COMM_STATE_GOOD == chTrainmitStat) + || (TRAIN_COMM_STATE_BAD == chTrainmitStat) + || (TRAIN_COMM_STATE_UNKNOWN == chTrainmitStat)) + { + gstTrainInfo[wBufIndex].chIvocTransmitStat = chTrainmitStat; + + gstTrainInfo[wBufIndex].dwIvocTransBadCyc = Get2oo2CurCycleNum(); + chRetVal = CI_SUCCESS; + } + else + { + chRetVal = CI_ERROR; + } + } + else + { + chRetVal = CI_ERROR; + } + + return chRetVal; +} /* * ָгеȼ * ˵ const UINT16 wTrainId, гID @@ -2869,6 +2943,7 @@ static void CalTrainSafePosition(void) chResult &= SetTrainSafeHeadOffset(wTrainId, UINT32_MAX); chResult &= SetTrainSafeTailLink(wTrainId, 0u); chResult &= SetTrainSafeTailOffset(wTrainId, UINT32_MAX); + SetTrainMinSafeHead(wTrainId, 0u, UINT32_MAX, 0u); if (CI_ERROR == chResult) { ; /*ݲ*/ @@ -3091,7 +3166,6 @@ UINT8 dsuTrainCrossSignal(const UINT16 wTrainId, const UINT16 wRouteId) UINT16 wEndSignal = 0u; struct_PathPoint strTrainMaxHead = { 0u }; struct_PathPoint strTrainMinTail = { 0u }; - struct_PathPoint strTrainSafeMinHead = { 0u }; str_Zone strRouteZone = { 0u }; UINT8 chRtnVal = CI_ERROR; str_PointInArea strRouteSwitch = { 0u }; @@ -3124,8 +3198,6 @@ UINT8 dsuTrainCrossSignal(const UINT16 wTrainId, const UINT16 wRouteId) strTrainZone.pStart.dwOffset = strTrainMinTail.dwOffset; strTrainZone.pEnd.wLinkId = strTrainMaxHead.wLinkId; strTrainZone.pEnd.dwOffset = strTrainMaxHead.dwOffset; - strTrainSafeMinHead.wLinkId = GetTrainMinSafeHeadLink(wTrainId); - strTrainSafeMinHead.dwOffset = GetTrainMinSafeHeadOffset(wTrainId); chSwitchNum = GetRouteSwitchSum(wRouteId); pRouteSwitch = GetRouteSwitchData(wRouteId); @@ -3145,7 +3217,6 @@ UINT8 dsuTrainCrossSignal(const UINT16 wTrainId, const UINT16 wRouteId) chRtnVal &= CheckLinkValid(strTrainMinTail.wLinkId, strTrainMinTail.dwOffset); chRtnVal &= CheckLinkValid(strRouteZone.pStart.wLinkId, strRouteZone.pStart.dwOffset); chRtnVal &= CheckLinkValid(strRouteZone.pEnd.wLinkId, strRouteZone.pEnd.dwOffset); - chRtnVal &= CheckLinkValid(strTrainSafeMinHead.wLinkId, strTrainSafeMinHead.dwOffset); } else { @@ -4325,6 +4396,7 @@ void NeighborOutTrainProc(UINT8 chTiocId) { SetTrainMsgFromTiocId(wTrainId, 0u); (void)SetTrainTransmitStat(wTrainId, TRAIN_COMM_STATE_BAD); + (void)SetTrainIvocTransmitStat(wTrainId, TRAIN_COMM_STATE_BAD); } else { @@ -4381,6 +4453,7 @@ void NeighborGoodTrainProc(UINT8 chTiocId) { SetTrainMsgFromTiocId(wTrainId, 0u); (void)SetTrainTransmitStat(wTrainId, TRAIN_COMM_STATE_BAD); + (void)SetTrainIvocTransmitStat(wTrainId, TRAIN_COMM_STATE_BAD); } else { @@ -6458,6 +6531,28 @@ static UINT32 GetTrainTransBadCyc(const UINT16 wTrainId) return dwRetVal; } +/* +* ȡָгͨ(IVOC)жں +* ˵ const UINT16 wTrainId, гID +* ֵ гͨжں +*/ +static UINT32 GetTrainIvocTransBadCyc(const UINT16 wTrainId) +{ + UINT32 dwRetVal = 0u; + UINT16 wBufIndex = 0U; + + wBufIndex = GetTrainBufIndex(wTrainId); + if (TRAIN_SUM_MAX > wBufIndex) + { + dwRetVal = gstTrainInfo[wBufIndex].dwIvocTransBadCyc; + } + else + { + ; + } + + return dwRetVal; +} /* * ȡָгɢ * ˵ const UINT16 wTrainId, гID @@ -7724,8 +7819,8 @@ UINT8 GetTrainResRecycleOTStat(const UINT16 wTrainId) wBufIndex = GetTrainBufIndex(wTrainId); if (TRAIN_SUM_MAX > wBufIndex) { - trainTransimitStat = GetTrainTransitmitStat(wTrainId); - trainLoseCommCyc = GetTrainTransBadCyc(wTrainId); + trainTransimitStat = GetTrainIvocTransitmitStat(wTrainId); + trainLoseCommCyc = GetTrainIvocTransBadCyc(wTrainId); /*гͨŲ*/ if (TRAIN_COMM_STATE_BAD == trainTransimitStat) @@ -12905,6 +13000,7 @@ void InputMainTrainInformation(UINT16 wTrainId) if (TRAIN_COMM_STATE_GOOD == chTransmitStat) { (void)SetTrainTransmitStat(wTrainId, TRAIN_COMM_STATE_BAD); + (void)SetTrainIvocTransmitStat(wTrainId, TRAIN_COMM_STATE_BAD); SetTrainLevel(wTrainId, TRAIN_LEVEL_UR); } else @@ -13755,7 +13851,6 @@ static void DoubleTrianComStateJuge(const UINT16 wTrainId, const UINT8 chComBadF chIvocCtxValid = GetHLHTHeadCtxValid(CI_SYSTEM_TYPE_IVOC, (UINT8)wTrainId); chVobcCtxValid = GetHLHTHeadCtxValid(CI_SYSTEM_TYPE_VOBC, (UINT8)wTrainId); - trainMsgFromTiocId = GetTrainMsgFromTiocId(wTrainId); /*˫ͨ״̬*/ if ((CI_ERROR == chIvocCtxValid) && (CI_ERROR == chVobcCtxValid)) @@ -13768,6 +13863,7 @@ static void DoubleTrianComStateJuge(const UINT16 wTrainId, const UINT8 chComBadF if (0u == trainMsgFromTiocId) { (void)SetTrainTransmitStat(wTrainId, TRAIN_COMM_STATE_BAD); + (void)SetTrainIvocTransmitStat(wTrainId, TRAIN_COMM_STATE_BAD); } else {/*ʲôҲִ*/ @@ -13779,6 +13875,19 @@ static void DoubleTrianComStateJuge(const UINT16 wTrainId, const UINT8 chComBadF if (0U == chComBadFlag) {/*ǰûͨж*/ (void)SetTrainTransmitStat(wTrainId, TRAIN_COMM_STATE_GOOD); + if (CI_SUCCESS == chIvocCtxValid) + { + (void)SetTrainIvocTransmitStat(wTrainId, TRAIN_COMM_STATE_GOOD); + } + } + + if (CI_ERROR == chIvocCtxValid) + { + chTransmitStat = GetTrainIvocTransitmitStat(wTrainId); + if (TRAIN_COMM_STATE_GOOD == chTransmitStat) + { + (void)SetTrainIvocTransmitStat(wTrainId, TRAIN_COMM_STATE_BAD); + } } } diff --git a/TSCP/src/APP/ciapp/Train/TrainDataManage.h b/TSCP/src/APP/ciapp/Train/TrainDataManage.h index a7e10d5..b77f917 100644 --- a/TSCP/src/APP/ciapp/Train/TrainDataManage.h +++ b/TSCP/src/APP/ciapp/Train/TrainDataManage.h @@ -227,6 +227,7 @@ typedef struct S_TrainInfoStru UINT16 wTrainSpeed; /*ٶ*/ UINT8 chTrainZeroState; /*г״̬*/ UINT8 chTransmitStat; /*г״̬*/ + UINT8 chIvocTransmitStat; /*IVOCг״̬*/ UINT8 chHeadScreenStat; /*гǰɸ־*/ UINT8 chTailScreenStat; /*гɸ־*/ TrainSafeLocStru strSafeLoc; /*гȫλ*/ @@ -252,6 +253,7 @@ typedef struct S_TrainInfoStru UINT8 chStopSteadyState; /*гͣ׼ͣ״̬*/ UINT8 chSleepCancleFlag; /*߳־*/ UINT32 dwTransBadCyc; /*ͨж*/ + UINT32 dwIvocTransBadCyc; /*ͨж*/ UINT8 chEaNum; /*ͨгظɢ*/ TrainEaStru strTrainEaInfo[EA_MAX_NUM]; /*гָɢϢ*/ UINT8 chEaCmd; /*ɢ*/ @@ -436,6 +438,16 @@ UINT16 GetTrainBufIndex(const UINT16 wTrainId); */ UINT8 GetTrainTransitmitStat(const UINT16 wTrainId); +/* +* ȡָг(IVOC)ͨ״̬ +* ˵ const UINT16 wTrainId, гID +* ֵ 0: ȡʧ +* 0x55: ͨ״̬ +* 0xAA: ʧͨ +* 0xFF: ͨ״̬δ֪ +* : qw.liu 2022-02-24 +*/ +UINT8 GetTrainIvocTransitmitStat(const UINT16 wTrainId); /* * ȡָгСȫǰƫ * ˵ const UINT16 wTrainId, гID @@ -595,6 +607,19 @@ CI_SUCCESS: */ UINT8 SetTrainTransmitStat(const UINT16 wTrainId, const UINT8 chTrainmitStat); + +/* +* ָг(IVOC)ͨ״̬ +* ˵ const UINT16 wTrainId, гID +* const UINT8 chTrainmitStat ͨ״̬ +* ֵ CI_ERROR: ʧ +CI_SUCCESS:ݳɹ +* 0x55 : ͨ״̬ +* 0xAA : ʧͨ +* 0xFF : ͨ״̬δ֪ +* : qw.liu 2025 - 05 - 08 +*/ +UINT8 SetTrainIvocTransmitStat(const UINT16 wTrainId, const UINT8 chTrainmitStat); /* * ָгеȼ * ˵ const UINT16 wTrainId, гID diff --git a/TSCP/src/APP/ciapp/WashMachine/WashMachineDataManage.c b/TSCP/src/APP/ciapp/WashMachine/WashMachineDataManage.c index 2c2f0b8..ed98bb5 100644 --- a/TSCP/src/APP/ciapp/WashMachine/WashMachineDataManage.c +++ b/TSCP/src/APP/ciapp/WashMachine/WashMachineDataManage.c @@ -14,7 +14,7 @@ WashMachineDataStruct WashMachineDataStru[WASHMACHINE_SUM_MAX]; /*ϴݽṹ*/ - +UINT8 RouteDriveIntoResult = CI_ERROR; /*жϽ·Ƿгʻ*/ /* * ȡָIDϴ diff --git a/TSCP/src/APP/ciapp/WashMachine/WashMachineDataManage.h b/TSCP/src/APP/ciapp/WashMachine/WashMachineDataManage.h index b7d27c3..4c221b1 100644 --- a/TSCP/src/APP/ciapp/WashMachine/WashMachineDataManage.h +++ b/TSCP/src/APP/ciapp/WashMachine/WashMachineDataManage.h @@ -75,6 +75,7 @@ typedef struct S_WashMachineDataStruct extern WashMachineDataStruct WashMachineDataStru[WASHMACHINE_SUM_MAX]; /*ϴݽṹ*/ +extern UINT8 RouteDriveIntoResult; /*жϽ·Ƿгʻ*/ /* * ȡָIDϴ * ˵ diff --git a/TSCP/src/dqu_common/dqu_cbtc_common/dquCbtcConfigData.c b/TSCP/src/dqu_common/dqu_cbtc_common/dquCbtcConfigData.c index 6a1e017..e1bb363 100644 --- a/TSCP/src/dqu_common/dqu_cbtc_common/dquCbtcConfigData.c +++ b/TSCP/src/dqu_common/dqu_cbtc_common/dquCbtcConfigData.c @@ -55,8 +55,10 @@ UINT8 dfsInitSubSystemCommonConfigData_DG(UINT8 *pDataAddr, UINT32 dataSize, UIN #endif /*ʼ[ϵͳ]-CC(Ҫҽ1)*/ UINT8 dfsInitSubSystemCommonConfigData_CC(UINT8 *pDataAddr, UINT32 dataSize, UINT16 rowCount); +#if 0 /*ݽṹ4-FAO ͨ˰汾һ*/ UINT8 dfsInitTrainDepotConfigData(UINT8 *pDataAddr, UINT32 dataSize, UINT16 rowCount); +#endif /* ߽ݽṹ */ UINT8 dfsInitBoundaryAxleConfigData(UINT8* pDataAddr, UINT32 dataSize, UINT16 rowCount); /*ʼ[ѹ]*/ @@ -76,7 +78,7 @@ static INIT_TASK_TAB_STRU g_struInitTaskTab[]= {DQU_QFUN_TRUE, CBTC_CONFIG_DATA_ID, NULL, 5,1,0}, {DQU_QFUN_TRUE, CBTC_CONFIG_DATA_ID, dfsInitSubSystemCommonConfigData_HLT, 5,1,0}, {DQU_QFUN_TRUE, CBTC_CONFIG_DATA_ID, NULL, 5,1,0}, - {DQU_QFUN_TRUE, CBTC_CONFIG_DEPOT_ID, dfsInitTrainDepotConfigData, 5,1,0}, + {DQU_QFUN_TRUE, CBTC_CONFIG_DEPOT_ID, NULL, 5,1,0}, {DQU_QFUN_TRUE, CBTC_CONFIG_DATA_ID, dfsInitSubSystemCommonConfigData_CC, 5,1,0}, {DQU_QFUN_TRUE, CBTC_CONFIG_BOUNDARY_AXLE_ID,dfsInitBoundaryAxleConfigData, 5,1,0}, {DQU_QFUN_TRUE, CBTC_SPECIAL_EA_ID, dfsInitSpecialEaConfigData, 5,1,0}, @@ -180,10 +182,11 @@ static UINT8 initConfigCbtcInfoTaskTab(void) } else { - g_struInitTaskTab[2].bIsEffective = DQU_QFUN_FASLE;/*ĬϲִУϵͳýṹ3-CPK*/ - g_struInitTaskTab[3].bIsEffective = DQU_QFUN_FASLE;/*ĬϲִУϵͳýṹ3-FAO*/ - g_struInitTaskTab[4].bIsEffective = DQU_QFUN_FASLE;/*ĬϲִУϵͳýṹ3-HLT*/ - g_struInitTaskTab[5].bIsEffective = DQU_QFUN_FASLE;/*ĬϲִУϵͳýṹ3-DG*/ + g_struInitTaskTab[2].bIsEffective = DQU_QFUN_FASLE; /*ĬϲִУϵͳýṹ3-CPK*/ + g_struInitTaskTab[3].bIsEffective = DQU_QFUN_FASLE; /*ĬϲִУϵͳýṹ3-FAO*/ + g_struInitTaskTab[4].bIsEffective = DQU_QFUN_FASLE; /*ĬϲִУϵͳýṹ3-HLT*/ + g_struInitTaskTab[5].bIsEffective = DQU_QFUN_FASLE; /*ĬϲִУϵͳýṹ3-DG*/ + g_struInitTaskTab[6].bIsEffective = DQU_QFUN_FASLE; /*ĬϲִУ*/ } rtnValue = 1u; } @@ -320,10 +323,10 @@ UINT8 dfsInitTrainModelConfigData(UINT8 *pDataAddr, UINT32 dataSize, UINT16 rowC || ((0x3du == CI_SYSTEM_TYPE_RCI) && (0x10u == (UINT8)(tempTrainName >> 8u)))) { /*CIֻʼ0x14͵܇RCֻʼ0x10͵܇*/ - g_pCbtcConfigDataStru->cbtcTrainTypeConfig[i].TrainName = ShortFromChar(pData); + g_pCbtcConfigDataStru->cbtcTrainTypeConfig[TrainCount].TrainName = ShortFromChar(pData); pData += 2u; - g_pCbtcConfigDataStru->cbtcTrainTypeConfig[i].TrainType = *pData; + g_pCbtcConfigDataStru->cbtcTrainTypeConfig[TrainCount].TrainType = *pData; pData += 1u; TrainCount += 1u; @@ -340,8 +343,16 @@ UINT8 dfsInitTrainModelConfigData(UINT8 *pDataAddr, UINT32 dataSize, UINT16 rowC /*nothing*/ } - g_pCbtcConfigDataStru->TrainTypeConfigLen = (UINT32)TrainCount; - rtnValue = 1u; + if (200u >= TrainCount) + { + g_pCbtcConfigDataStru->TrainTypeConfigLen = (UINT32)TrainCount; + rtnValue = 1u; + } + else + { + /*ƣʧ*/ + rtnValue = 0U; + } } else { @@ -1086,8 +1097,7 @@ UINT8 dfsInitSubSystemCommonConfigData_CC(UINT8 *pDataAddr, UINT32 dataSize, UIN g_pCbtcConfigDataStru->cbtcConfigData.TmcOcCommunicationErrorTime = LongFromChar(pDataAddr); pDataAddr += 4u; - /*IVOC-RCͨŹжʱ䣨ms*/ - g_pCbtcConfigDataStru->cbtcConfigData.IvocOcCommunicationErrorTime = LongFromChar(pDataAddr); + /*IVOC-RCͨŹжʱ䣨msʹCI-VOBC*/ pDataAddr += 4u; /*RC-TSLͨŹжʱ䣨ms*/ @@ -1109,7 +1119,7 @@ UINT8 dfsInitSubSystemCommonConfigData_CC(UINT8 *pDataAddr, UINT32 dataSize, UIN g_pCbtcConfigDataStru->cbtcConfigData.cAwakeCheckSpksSwitch = *pDataAddr; /*ѹмSPKS״̬*/ pDataAddr += 1U; - g_pCbtcConfigDataStru->cbtcConfigData.dwVobcCiackUpCommErrorTime = LongFromChar(pDataAddr); /*RCIVOCͨͨŹжʱ*/ + /*RCIVOCͨͨŹжʱ䣬ͳһʹVOBC*/ pDataAddr += 4U; g_pCbtcConfigDataStru->cbtcConfigData.cHitSoftWallSwitch = *pDataAddr; /*ײǽܿ*/ @@ -1132,7 +1142,7 @@ UINT8 dfsInitSubSystemCommonConfigData_CC(UINT8 *pDataAddr, UINT32 dataSize, UIN return rtnValue; } - +#if 0 /********************************************** ܣʼ[Ϣ] pDataAddr:׵ַ @@ -1181,7 +1191,7 @@ UINT8 dfsInitTrainDepotConfigData(UINT8 *pDataAddr, UINT32 dataSize, UINT16 rowC } return rtnValue; } - +#endif /*-----------------------------ݲѯӿں-----------------------*/ /*õǰѯԴ*/ @@ -1285,7 +1295,7 @@ UINT8 dquGetCbtcConfigData (CBTC_CONFIG_DATA_STRU* pCbtcConfigDataStru) } return rtnValue; } - +#if 0 /********************************************* *ܣóϢ * @@ -1323,7 +1333,7 @@ UINT8 dquGetCbtcDepotInfo(CBTC_DEPOT_INFO_STRU *pCbtcDepotInfo, UINT16 *Length) return rtnValue; } - +#endif /********************************************** * ܣʼ[߽]-CC * pDataAddr: ׵ַ diff --git a/TSCP/src/dqu_common/dqu_cbtc_common/dquCbtcConfigData.h b/TSCP/src/dqu_common/dqu_cbtc_common/dquCbtcConfigData.h index ab74793..56ac14d 100644 --- a/TSCP/src/dqu_common/dqu_cbtc_common/dquCbtcConfigData.h +++ b/TSCP/src/dqu_common/dqu_cbtc_common/dquCbtcConfigData.h @@ -67,7 +67,6 @@ extern "C" { UINT32 dwLineMinTrainLength; /*ϵͳݣ·С*/ UINT8 chWLSFunSwitch; /* Ƿ֧ȫɸܣ0x55 ֧ 0xAA֧ */ UINT32 TmcOcCommunicationErrorTime; /*TMC-OCͨŹжʱ(ms),add by yt202231գ䳵ϵͳ*/ - UINT32 IvocOcCommunicationErrorTime; /*IVOC-OCͨŹжʱ(ms),add by yt202231գ䳵ϵͳ*/ UINT32 OcTslCommunicationErrorTime; /*OC-TSLͨŹжʱ䣨ms,add by yt202231գ䳵ϵͳ*/ UINT32 MaxMALength; /*·½ƶ루λm,add by yt202231գ䳵ϵͳ*/ UINT8 chDynamicTestSwitch; /*Ƿֶ֧̬Կ aaر 55*/ @@ -153,10 +152,10 @@ extern "C" { CBTC_TRAIN_INFO_STRU cbtcTrainInfo[10]; /*гܲýṹ飬ʼ*/ UINT32 TrainInfoLen; /*鳤*/ - +#if 0 CBTC_DEPOT_INFO_STRU cbtcDepotInfo[10]; /*Ϣṹ飬ʼ*/ UINT32 DepotConfigLen; /*鳤*/ - +#endif CBTC_CONFIG_DATA_STRU cbtcConfigData; /*ϵͳýṹ飬ʼ*/ CBTC_BOUNDARY_AXLE_CONFIG_STRU cbtcBoundaryAxleInfo[100]; /*߽Ϣṹ飬ʼ*/ @@ -199,7 +198,7 @@ extern "C" { /*ȡϵͳñ*/ UINT8 dquGetCbtcConfigData (CBTC_CONFIG_DATA_STRU* pCbtcConfigDataStru); - +#if 0 /* ܣóϢ @@ -207,7 +206,7 @@ extern "C" { LengthϢ ֵ 0ʧ 1ɹ */ UINT8 dquGetCbtcDepotInfo(CBTC_DEPOT_INFO_STRU *pCbtcDepotInfo, UINT16 *Length); - +#endif #ifdef __cplusplus } diff --git a/TSCP/src/dqu_common/dqu_emap_common/dquEmapInit.c b/TSCP/src/dqu_common/dqu_emap_common/dquEmapInit.c index a9c0b9e..b8b3781 100644 --- a/TSCP/src/dqu_common/dqu_emap_common/dquEmapInit.c +++ b/TSCP/src/dqu_common/dqu_emap_common/dquEmapInit.c @@ -86,6 +86,48 @@ UINT16 wMiddleLinkId[MIDDLE_LINK_MAX_NUM]; ************************************/ static UINT8 AxleSgmtStru_CC(); +/*ݰ汾ݴ̺ +**޸ļ¼ +**1ݻͨݽṹV18.0.0޸ģm by sds 20200211 +**2޸IJҪʼıϢ m by sds 2020-8-19 +**3ӳʼıϢ m by qw.liu 2022-2-22 +*/ +static UINT8 initConfigEmapTaskTab(); + +/********************************************* +*ܣ·ݽṹ +*˵ +*ֵ0ʧܣ1ɹ +UINT16 wIncludeAxleSgmtNum; ·ļĿ +UINT16 wIncludeAxleSgmtId[8]; ļα +UINT16 wAxleSgmtLockStatus[8]; ļ״̬ + +UINT16 wObsNum; ·ϰĿ +UINT16 wObsType[8]; ϰ +UINT16 wObsID[8]; ϰID +UINT16 wObsNeedLockStatus[8]; ϰҪ״̬ +עڲúϿ⡢෿ʹ +*********************************************/ +static UINT8 RouteStru_DFT(); + +/********************************************* +*ܣ·ݽṹ +*˵ +*ֵ0ʧܣ1ɹ +UINT16 wIncludeAxleSgmtNum; ·ļĿ +UINT16 wIncludeAxleSgmtId[8]; ļα +UINT16 wAxleSgmtLockStatus[8]; ļ״̬ + +UINT16 wObsNum; ·ϰĿ +UINT16 wObsType[8]; ϰ +UINT16 wObsID[8]; ϰID +UINT16 wObsNeedLockStatus[8]; ϰҪ״̬ +עڲúͨʹ +޸ļ¼: +1½·ΧCBTCӽεķΧж ʹúֵϢֹ,޸淶 m by sds 2020-8-21 +*********************************************/ +static UINT8 RouteStru_CC(); + /* ܣɾظڲʹú ˵input 飻len С @@ -93,7 +135,7 @@ static UINT8 AxleSgmtStru_CC(); ֵȥغij author: qxt 20180716 */ -static UINT8 RemoveRep(UINT16 input[],UINT8 len,UINT16 output[]); +static UINT16 RemoveRep(UINT16 input[],UINT16 len,UINT16 output[]); /*----------ڲ--------------*/ @@ -577,7 +619,6 @@ void SetFilterStopPointAttr(UINT32 filterAttr) UINT8 dfsEmapInitExp(UINT8 *pDataBuf,DSU_EMAP_STRU *dsuEmapStru,DSU_STC_LIMIT_LINKIDX_STRU *dsuLimitStcLinkIdx,UINT8 mode,UINT16 timeSlice) { UINT32 DataID=0U; - UINT16 wPos=0U; UINT8 rtnValue=2U; UINT16 wFreqTimes=0U; UINT8 bExeState=DQU_QFUN_FASLE; @@ -6402,7 +6443,6 @@ static UINT8 LogicSgmtStru_CC(void) { UINT16 ii = UINT16_MAX; /*ѭ*/ UINT16 jj = UINT16_MAX; /*ѭ*/ - UINT16 nn = UINT16_MAX; /*ѭ*/ UINT16 kk = UINT16_MAX; DSU_LOGIC_SGMT_STRU * pTempLogicSgmtStru = NULL; /*ʱ*/ DSU_AXLE_SGMT_STRU *pTempAxleSgmtStru = NULL; /*ʱ*/ @@ -6547,7 +6587,7 @@ static UINT8 LogicSgmtStru_CC(void) if ((UINT32_MAX != dwLen) && (MAX_LOGSEC_INCLUDE_LINK_NUM >= wlinkNum)) { - linkInfo.cLinkCnt = wlinkNum; + linkInfo.cLinkCnt = (UINT8)wlinkNum; for (mm = 0U; mm < wlinkNum; mm++) { @@ -7957,7 +7997,6 @@ UINT8 GetPointInfoFromAccessLink(UINT16 AccessLinkId, UINT16 Dirction, UINT16* DSU_CBTC_ACCESS_LINK_STRU* pCBTCAccessLinkStru=NULL; /*ʱ*/ UINT16 i, j = 0; /*ѭ*/ DSU_LOGIC_SGMT_STRU* pLogicSgmtStru=NULL; /*ʱ*/ - DSU_AXLE_SGMT_STRU* pAxleSgmtStru=NULL; /*ʱ--*/ UINT8 rtnValue = 0U; /*ӵͼ*/ @@ -12497,13 +12536,10 @@ UINT8 initRC(UINT8 *pDataAddr, UINT32 dataSize, UINT16 rowCount) UINT8 rtnValue = 2U; UINT8 *pData = NULL; UINT8 initFlag = 0U; - UINT8 checkFlag = 0U; DSU_CI_STRU *pCurrentStru = NULL; /*ṹʱָ*/ DSU_CI_STRU stru = { 0 }; /*ṹʱָ*/ UINT16 j = 0U; static UINT32 rowDataLen = 0U; - UINT16 wStruDataLen = 0U; - UINT16 wDataIndexLen = 0U; /*ӵͼ*/ DSU_EMAP_INDEX_STRU *dsuEmapIndexStru = NULL; @@ -12552,6 +12588,70 @@ UINT8 initRC(UINT8 *pDataAddr, UINT32 dataSize, UINT16 rowCount) initFlag = EmapInitFunStepCtrl(0x02); if ((2U == rtnValue) && (DQU_QFUN_TRUE == initFlag)) + { + /*͸Ӷ*/ + rtnValue = initRCSndStep(dsuEmapIndexStru, dsuStaticHeadStru, dsuDataLenStru); + } + + initFlag = EmapInitFunStepCtrl(0x03); + if ((2U == rtnValue) && (DQU_QFUN_TRUE == initFlag)) + { + /*ݵ ṹ */ + for (j = g_struInitTaskTab[g_wCurInitStruProg].wCurInitPos; j < dsuDataLenStru->wRCLen; j++) + { + pCurrentStru = dsuStaticHeadStru->pRCStruStru + j; + + pData = pDataAddr + rowDataLen*j; + /*ݽṹ*/ + initFlag = RC_STRU_init(pData, pCurrentStru); + if (0U == initFlag) + { + /*initָ*/ + rtnValue = 0U; + } + else + { + /*ɶӦ*/ + dsuEmapIndexStru->dsuRCIndex[pCurrentStru->wIndex] = j; + initFlag = EmapInitLoopStepLenCtrl(j); + } + /*ѭֲи*/ + if ((0U == rtnValue) || (DQU_QFUN_TRUE == initFlag)) + { + break; + } + } + + if ((0U != rtnValue) && (j == dsuDataLenStru->wRCLen)) + { + rtnValue = 1; + } + } + + return rtnValue; +} + +/********************************************** +ܣʼ[ӵͼ-RCϢ]:---ָӶʹ + + +ӵͼ +DSU_EMAP_INDEX_STRU *dsuEmapIndexStru +DSU_STATIC_HEAD_STRU *dsuStaticHeadStru +DSU_DATA_LEN_STRU *dsuDataLenStru +ֵ:2,0ʧ +**********************************************/ +UINT8 initRCSndStep(DSU_EMAP_INDEX_STRU *dsuEmapIndexStru, DSU_STATIC_HEAD_STRU *dsuStaticHeadStru, DSU_DATA_LEN_STRU *dsuDataLenStru) +{ + UINT8 rtnValue = 2U; + UINT16 wStruDataLen = 0; + UINT16 wDataIndexLen = 0; + UINT8 checkFlag = 0U; + if ((NULL == dsuEmapIndexStru) || (NULL == dsuStaticHeadStru) || (NULL == dsuDataLenStru)) + { + rtnValue = 0U; + } + else { if (0x01 == g_IsEmapAllocMemory) { @@ -12608,42 +12708,6 @@ UINT8 initRC(UINT8 *pDataAddr, UINT32 dataSize, UINT16 rowCount) } } } - - initFlag = EmapInitFunStepCtrl(0x03); - if ((2U == rtnValue) && (DQU_QFUN_TRUE == initFlag)) - { - /*ݵ ṹ */ - for (j = g_struInitTaskTab[g_wCurInitStruProg].wCurInitPos; j < dsuDataLenStru->wRCLen; j++) - { - pCurrentStru = dsuStaticHeadStru->pRCStruStru + j; - - pData = pDataAddr + rowDataLen*j; - /*ݽṹ*/ - initFlag = RC_STRU_init(pData, pCurrentStru); - if (0U == initFlag) - { - /*initָ*/ - rtnValue = 0U; - } - else - { - /*ɶӦ*/ - dsuEmapIndexStru->dsuRCIndex[pCurrentStru->wIndex] = j; - initFlag = EmapInitLoopStepLenCtrl(j); - } - /*ѭֲи*/ - if ((0U == rtnValue) || (DQU_QFUN_TRUE == initFlag)) - { - break; - } - } - - if ((0U != rtnValue) && (j == dsuDataLenStru->wRCLen)) - { - rtnValue = 1; - } - } - return rtnValue; } @@ -16032,12 +16096,9 @@ UINT8 GetDeviceInfoInLink() DSU_LINK_STRU *pLinkStru=NULL; /*Linkʱṹ*/ DSU_SIGNAL_STRU *pSignalStru=NULL; /*źŻʱṹ*/ - DSU_BALISE_STRU *pBaliseStru=NULL; /*Ӧʱṹ*/ DSU_SCREEN_STRU *pScreenStru=NULL; /*ȫʱṹ*/ DSU_EMERG_STOP_STRU *pESBStru=NULL;/*ͣťʱṹ*/ DSU_STATION_STRU *pStationStru=NULL;/*ͣʱṹ*/ - DSU_STOPPOINT_STRU *pStopPointStru=NULL;/*ͣʱṹ*/ - DSU_PLAT_FORM_STRU *pPlatformStru=NULL;/*վ̨ʱṹ*/ DSU_DEVICE_IN_LINK_STRU *pTempDeviceStru=NULL; @@ -16564,29 +16625,29 @@ UINT8 GetGradeInfoCrossLink() ֵȥغij author: qxt 20180716 */ -static UINT8 RemoveRep(UINT16 input[],UINT8 len,UINT16 output[]) +static UINT16 RemoveRep(UINT16 input[],UINT16 len,UINT16 output[]) { - UINT8 i=0U , j=0U; - UINT8 flag=1;/*ظǣ1ظ0ظ*/ - UINT8 count=0U;/*ֵ*/ + UINT16 i=0U , j=0U; + UINT8 flag=1U;/*ظǣ1ظ0ظ*/ + UINT16 count=0U;/*ֵ*/ /**/ - if (len>0) + if (0U < len) { output[count++]=input[0];/*ȸĵһֵֵ*/ - for (i=1;iwId = ShortFromChar(pData); - pData += 2; + pData += 2U; /*·*/ - for (i = 0; i<24; i++) + for (i = 0U; i< 24U; i++) { pRouteStru->szCaption[i] = *pData; - pData += 1; + pData += 1U; } /*·*/ pRouteStru->wRouteType = ShortFromChar(pData); - pData += 2; + pData += 2U; /*ʼźŻ*/ pRouteStru->wStartSignalId = ShortFromChar(pData); - pData += 2; + pData += 2U; /*ֹźŻ*/ pRouteStru->wEndSignalId = ShortFromChar(pData); - pData += 2; + pData += 2U; /*link*/ /*---Ϲѧ*/ pRouteStru->wOrgnLkId = ShortFromChar(pData); - pData += 2; + pData += 2U; /*յlink*/ /*---Ϲѧ*/ pRouteStru->wTmnlLkId = ShortFromChar(pData); - pData += 2; + pData += 2U; /*Ŀ*/ pRouteStru->wIncludePointNum = ShortFromChar(pData); - pData += 2; + pData += 2U; - for (i = 0; i<16; i++) + for (i = 0U; i<16U; i++) { /**/ pRouteStru->wPointId[i] = ShortFromChar(pData); - pData += 2; + pData += 2U; /*״̬*/ pRouteStru->wPointStatus[i] = ShortFromChar(pData); - pData += 2; + pData += 2U; } /*Ŀ*/ pRouteStru->wProtectLinkNum = ShortFromChar(pData); - pData += 2; + pData += 2U; - for (i = 0; i<4; i++) + for (i = 0U; i<4U; i++) { /*α*/ pRouteStru->wProtectLinkId[i] = ShortFromChar(pData); - pData += 2; + pData += 2U; /*ι*/ pRouteStru->wProtectLinkRelatePointId[i] = ShortFromChar(pData); - pData += 2; + pData += 2U; /*ι״̬*/ pRouteStru->wProtectLinkRelatePointStatus[i] = ShortFromChar(pData); - pData += 2; + pData += 2U; } @@ -1967,20 +1967,20 @@ static UINT8 ROUTE_STRU_init_HLT(UINT8 * pDataAdd, DSU_ROUTE_STRU * pRouteStru) /* ȡʽӽĿ */ pRouteStru->wBlogAccessLinkNum = ShortFromChar(pData); maxBlocAccessLinkNum = ShortFromChar(pData); - pData += 2; + pData += 2U; /* ݻȡĵʽӽĿ */ - for (i = 0; iwBlogAccessLinkNum; i++) + for (i = 0U; iwBlogAccessLinkNum; i++) { pRouteStru->wBlogAccessLinkId[i] = ShortFromChar(pData); - pData += 2; + pData += 2U; } /*ȡCBTCӽĿ*/ - for (i = 0; iwCBTCAccessLinkNum = ShortFromChar(pData); - pData += 2; + pData += 2U; /* ϶ȡݣЧֱֵȡȷֵʱ˳ */ if ((pRouteStru->wCBTCAccessLinkNum != DSU_NULL_16) @@ -1998,17 +1998,17 @@ static UINT8 ROUTE_STRU_init_HLT(UINT8 * pDataAdd, DSU_ROUTE_STRU * pRouteStru) } /* ݻȡCBTCӽĿ */ - for (i = 0; iwCBTCAccessLinkNum; i++) + for (i = 0U; iwCBTCAccessLinkNum; i++) { pRouteStru->wCBTCAccessLinkId[i] = ShortFromChar(pData); - pData += 2; + pData += 2U; } /*CI*/ - for (i = 0; iwManageCI = ShortFromChar(pData); - pData += 2; + pData += 2U; /* ϶ȡݣЧֱֵȡȷֵʱ˳ */ if (pRouteStru->wManageCI != DSU_NULL_16) @@ -2024,26 +2024,26 @@ static UINT8 ROUTE_STRU_init_HLT(UINT8 * pDataAdd, DSU_ROUTE_STRU * pRouteStru) /*·*/ pRouteStru->wAttribute = ShortFromChar(pData); - pData += 2; + pData += 2U; /*ʽ */ pRouteStru->wBlocTrgAreaNum = ShortFromChar(pData); maxBlocTRGAreLinkNum = ShortFromChar(pData); - pData += 2; + pData += 2U; /*ʽID*/ - for (i = 0; iwBlocTrgAreaNum; i++) + for (i = 0U; iwBlocTrgAreaNum; i++) { pRouteStru->wBlocTrgAreaId[i] = ShortFromChar(pData); - pData += 2; + pData += 2U; } /*cbtc */ - for (i = 0; iwCbtcTrgAreaNum = ShortFromChar(pData); - pData += 2; + pData += 2U; /* ϶ȡݣЧֱֵȡȷֵʱ˳ */ if ((pRouteStru->wCbtcTrgAreaNum != DSU_NULL_16) @@ -2059,10 +2059,10 @@ static UINT8 ROUTE_STRU_init_HLT(UINT8 * pDataAdd, DSU_ROUTE_STRU * pRouteStru) } /*cbtcID*/ - for (i = 0; iwCbtcTrgAreaNum; i++) + for (i = 0U; iwCbtcTrgAreaNum; i++) { pRouteStru->wCbtcTrgAreaId[i] = ShortFromChar(pData); - pData += 2; + pData += 2U; } /*ִд+1*/ @@ -2073,58 +2073,58 @@ static UINT8 ROUTE_STRU_init_HLT(UINT8 * pDataAdd, DSU_ROUTE_STRU * pRouteStru) /* ȡʽӽĿ */ pRouteStru->wBlogAccessLinkNum = ShortFromChar(pData); - pData += 2; + pData += 2U; /* ݻȡĵʽӽĿ */ - for (i = 0; iwBlogAccessLinkId[i] = ShortFromChar(pData); - pData += 2; + pData += 2U; } /*ȡCBTCӽĿ*/ pRouteStru->wCBTCAccessLinkNum = ShortFromChar(pData); - pData += 2; + pData += 2U; /* ݻȡCBTCӽĿ */ - for (i = 0; iwCBTCAccessLinkId[i] = ShortFromChar(pData); - pData += 2; + pData += 2U; } /*CI*/ pRouteStru->wManageCI = ShortFromChar(pData); - pData += 2; + pData += 2U; /*·*/ pRouteStru->wAttribute = ShortFromChar(pData); - pData += 2; + pData += 2U; /*ʽ */ pRouteStru->wBlocTrgAreaNum = ShortFromChar(pData); - pData += 2; + pData += 2U; /*ʽID*/ - for (i = 0; iwBlocTrgAreaId[i] = ShortFromChar(pData); - pData += 2; + pData += 2U; } /*cbtc */ pRouteStru->wCbtcTrgAreaNum = ShortFromChar(pData); - pData += 2; + pData += 2U; /*cbtcID-ʵݻȡ*/ - for (i = 0; iwCbtcTrgAreaNum; i++) + for (i = 0U; iwCbtcTrgAreaNum; i++) { pRouteStru->wCbtcTrgAreaId[i] = ShortFromChar(pData); - pData += 2; + pData += 2U; } } - rtnValue = 1; + rtnValue = 1U; } return rtnValue; } @@ -2268,78 +2268,78 @@ static UINT8 ROUTE_STRU_init_CPK(UINT8 * pDataAdd, DSU_ROUTE_STRU * pRouteStru) static UINT8 ROUTE_STRU_init_CC(UINT8 * pDataAdd, DSU_ROUTE_STRU * pRouteStru) { UINT8 * pData = pDataAdd; - UINT8 i = 0; - static UINT8 runCount = 0;/*ִиúĴ жǷΪһν*/ - static UINT8 maxCBTCAccessLinkNum = MAX_CBTC_ACCESS_LINK_NUM;/*·ʵCBTCӽ*/ - static UINT8 maxBLOCAccessLinkNum = MAX_BLOC_ACCESS_LINK_NUM;/*·ʵʵʽӽ*/ + UINT16 i = 0U; + static UINT8 runCount = 0U;/*ִиúĴ жǷΪһν*/ + static UINT16 maxCBTCAccessLinkNum = MAX_CBTC_ACCESS_LINK_NUM;/*·ʵCBTCӽ*/ + static UINT16 maxBLOCAccessLinkNum = MAX_BLOC_ACCESS_LINK_NUM;/*·ʵʵʽӽ*/ UINT8 reval = 0U;/*ʼֵΪʧ*/ /*ָ*/ if ((NULL != pDataAdd) && (NULL != pRouteStru)) { pRouteStru->wId = ShortFromChar(pData); - pData += 2; + pData += 2U; /*·*/ - for (i = 0; i < 24; i++) + for (i = 0U; i < 24U; i++) { pRouteStru->szCaption[i] = *pData; - pData += 1; + pData += 1U; } /*·*/ pRouteStru->wRouteType = ShortFromChar(pData); - pData += 2; + pData += 2U; /*ʼźŻ*/ pRouteStru->wStartSignalId = ShortFromChar(pData); - pData += 2; + pData += 2U; /*ֹźŻ*/ pRouteStru->wEndSignalId = ShortFromChar(pData); - pData += 2; + pData += 2U; /*link*/ /*---Ϲѧ*/ pRouteStru->wOrgnLkId = ShortFromChar(pData); - pData += 2; + pData += 2U; /*յlink*/ /*---Ϲѧ*/ pRouteStru->wTmnlLkId = ShortFromChar(pData); - pData += 2; + pData += 2U; /*Ŀ*/ pRouteStru->wIncludePointNum = ShortFromChar(pData); - pData += 2; + pData += 2U; - for (i = 0; i < 16; i++) + for (i = 0U; i < 16U; i++) { /**/ pRouteStru->wPointId[i] = ShortFromChar(pData); - pData += 2; + pData += 2U; /*״̬*/ pRouteStru->wPointStatus[i] = ShortFromChar(pData); - pData += 2; + pData += 2U; } /*Ŀ*/ pRouteStru->wProtectLinkNum = ShortFromChar(pData); - pData += 2; + pData += 2U; - for (i = 0; i < 4; i++) + for (i = 0U; i < 4U; i++) { /*α*/ pRouteStru->wProtectLinkId[i] = ShortFromChar(pData); - pData += 2; + pData += 2U; /*ι*/ pRouteStru->wProtectLinkRelatePointId[i] = ShortFromChar(pData); - pData += 2; + pData += 2U; /*ι״̬*/ pRouteStru->wProtectLinkRelatePointStatus[i] = ShortFromChar(pData); - pData += 2; + pData += 2U; } /* "CBTCӽĿ"Ϊ̶ֵ,һݱӾҪ޸Ĵ,ΪŻ޸Ľṹ߼, by cgh 2023-4-14 */ @@ -2348,7 +2348,7 @@ static UINT8 ROUTE_STRU_init_CC(UINT8 * pDataAdd, DSU_ROUTE_STRU * pRouteStru) { /*ʽӽĿ*/ pRouteStru->wBlogAccessLinkNum = ShortFromChar(pData); - pData += 2; + pData += 2U; if (MAX_BLOC_ACCESS_LINK_NUM >= pRouteStru->wBlogAccessLinkNum) { @@ -2356,17 +2356,17 @@ static UINT8 ROUTE_STRU_init_CC(UINT8 * pDataAdd, DSU_ROUTE_STRU * pRouteStru) maxBLOCAccessLinkNum = pRouteStru->wBlogAccessLinkNum; /*ʽӽα*/ - for (i = 0; i < pRouteStru->wBlogAccessLinkNum; i++) + for (i = 0U; i < pRouteStru->wBlogAccessLinkNum; i++) { pRouteStru->wBlogAccessLinkId[i] = ShortFromChar(pData); - pData += 2; + pData += 2U; } /*ȡCBTCӽĿ*/ - for (i = 0; i < MAX_BLOC_ACCESS_LINK_NUM; i++) + for (i = 0U; i < MAX_BLOC_ACCESS_LINK_NUM; i++) { pRouteStru->wCBTCAccessLinkNum = ShortFromChar(pData); - pData += 2; + pData += 2U; /* ϶ȡݣЧֱֵȡȷֵʱ˳ */ if (pRouteStru->wCBTCAccessLinkNum != DSU_NULL_16) @@ -2386,17 +2386,17 @@ static UINT8 ROUTE_STRU_init_CC(UINT8 * pDataAdd, DSU_ROUTE_STRU * pRouteStru) maxCBTCAccessLinkNum = pRouteStru->wCBTCAccessLinkNum; /* ݻȡCBTCӽĿ */ - for (i = 0; i < pRouteStru->wCBTCAccessLinkNum; i++) + for (i = 0U; i < pRouteStru->wCBTCAccessLinkNum; i++) { pRouteStru->wCBTCAccessLinkId[i] = ShortFromChar(pData); - pData += 2; + pData += 2U; } /*CI*/ - for (i = 0; i < MAX_CBTC_ACCESS_LINK_NUM; i++) + for (i = 0U; i < MAX_CBTC_ACCESS_LINK_NUM; i++) { pRouteStru->wManageCI = ShortFromChar(pData); - pData += 2; + pData += 2U; /* ϶ȡݣЧֱֵȡȷֵʱ˳ */ if (pRouteStru->wManageCI != DSU_NULL_16) @@ -2411,20 +2411,20 @@ static UINT8 ROUTE_STRU_init_CC(UINT8 * pDataAdd, DSU_ROUTE_STRU * pRouteStru) } /*·*/ pRouteStru->wAttribute = ShortFromChar(pData); - pData += 2; + pData += 2U; /*cbtc */ pRouteStru->wCbtcTrgAreaNum = ShortFromChar(pData); - pData += 2; + pData += 2U; if (MAX_CBTC_TRG_AREA_NUM >= pRouteStru->wCbtcTrgAreaNum) { /*CBTCϷȡ*/ - for (i = 0; i < pRouteStru->wCbtcTrgAreaNum; i++) + for (i = 0U; i < pRouteStru->wCbtcTrgAreaNum; i++) { /*cbtcID*/ pRouteStru->wCbtcTrgAreaId[i] = ShortFromChar(pData); - pData += 2; + pData += 2U; } reval = 1U; /*ݾϷسɹ*/ @@ -2446,55 +2446,55 @@ static UINT8 ROUTE_STRU_init_CC(UINT8 * pDataAdd, DSU_ROUTE_STRU * pRouteStru) { /*ʽӽĿ*/ pRouteStru->wBlogAccessLinkNum = ShortFromChar(pData); - pData += 2; + pData += 2U; if (MAX_BLOC_ACCESS_LINK_NUM >= pRouteStru->wBlogAccessLinkNum) { /*ʽӽϷȡ*/ - for (i = 0; i < maxBLOCAccessLinkNum; i++) + for (i = 0U; i < maxBLOCAccessLinkNum; i++) { /*ʽӽα*/ pRouteStru->wBlogAccessLinkId[i] = ShortFromChar(pData); - pData += 2; + pData += 2U; } /*CBTCӽĿ*/ pRouteStru->wCBTCAccessLinkNum = ShortFromChar(pData); - pData += 2; + pData += 2U; if (MAX_CBTC_ACCESS_LINK_NUM >= pRouteStru->wCBTCAccessLinkNum) { /*CBTCӽϷȡ*/ - for (i = 0; i < maxCBTCAccessLinkNum; i++) + for (i = 0U; i < maxCBTCAccessLinkNum; i++) { /*CBTCӽα*/ pRouteStru->wCBTCAccessLinkId[i] = ShortFromChar(pData); - pData += 2; + pData += 2U; } /*CI*/ pRouteStru->wManageCI = ShortFromChar(pData); - pData += 2; + pData += 2U; /*·*/ pRouteStru->wAttribute = ShortFromChar(pData); - pData += 2; + pData += 2U; #if 0 /*ʽ */ pRouteStru->wBlocTrgAreaNum = ShortFromChar(pData); - pData += 2; + pData += 2U; /*ʽID*/ - for (i = 0; i < 13; i++) + for (i = 0U; i < 13; i++) { pRouteStru->wBlocTrgAreaId[i] = ShortFromChar(pData); - pData += 2; + pData += 2U; } #endif /*cbtc */ pRouteStru->wCbtcTrgAreaNum = ShortFromChar(pData); - pData += 2; + pData += 2U; if (MAX_CBTC_TRG_AREA_NUM < pRouteStru->wCbtcTrgAreaNum) { @@ -2504,10 +2504,10 @@ static UINT8 ROUTE_STRU_init_CC(UINT8 * pDataAdd, DSU_ROUTE_STRU * pRouteStru) else { /*cbtcID*/ - for (i = 0; i < pRouteStru->wCbtcTrgAreaNum; i++) + for (i = 0U; i < pRouteStru->wCbtcTrgAreaNum; i++) { pRouteStru->wCbtcTrgAreaId[i] = ShortFromChar(pData); - pData += 2; + pData += 2U; } reval = 1U; /*ݾϷسɹ*/ @@ -3492,7 +3492,11 @@ static UINT8 CI_STRU_init_CC(UINT8 * pDataAdd, DSU_CI_STRU * pCIStru) pCIStru->chCldAndScxMergeFlag = *pData; pData += 1U; - rtnValue = 1; + /*̶*/ + pCIStru->chCiFactoryType = *pData; + pData += 1U; + + rtnValue = 1U; } return rtnValue; } @@ -4171,8 +4175,8 @@ UINT8 DSU_FLOOD_GATE_STRU_init(UINT8 * pDataAdd, DSU_FLOOD_GATE_STRU * pFloodGat { UINT8 rtnValue = 0U; static UINT8 runCount = 0U;/*ִиúĴ жǷΪһν*/ - static UINT8 maxProtectAxisNum = MAX_PROTECT_AXIS_NUM;/*·ʵʵʽӽ*/ - UINT8 i = 0; + static UINT16 maxProtectAxisNum = MAX_PROTECT_AXIS_NUM;/*·ʵʵʽӽ*/ + UINT16 i = 0U; UINT8 chDataType = gLocalPublicDataType; /*ָ*/ if ((NULL != pDataAdd) && (NULL != pFloodGateStru)) diff --git a/TSCP/src/dqu_common/dqu_emap_common/dsuStruct.h b/TSCP/src/dqu_common/dqu_emap_common/dsuStruct.h index c6a5d90..f7d048e 100644 --- a/TSCP/src/dqu_common/dqu_emap_common/dsuStruct.h +++ b/TSCP/src/dqu_common/dqu_emap_common/dsuStruct.h @@ -755,6 +755,7 @@ typedef struct DSU_CIStruct UINT8 cWLScreenType; /* ȫɸЧ 0x55Ч 0xAAЧ */ UINT32 dwLocalShareCheckData; /*뱾RC/CIУϢ----2025082710 */ UINT8 chCldAndScxMergeFlag;/*Գ복κ迪*/ + UINT8 chCiFactoryType; /*̶*/ }DSU_CI_STRU; @@ -933,7 +934,7 @@ typedef struct DSU_SpksButton UINT16 wManageCI; /*CI*/ UINT16 wManageVirCI; /*CI*/ /* ݴĿУļɾֵҪ̬--- */ - UINT8 wLinkNum;/*LINK*/ + UINT16 wLinkNum;/*LINK*/ UINT16 wIncLinkId[SPKS_INCLUDE_LINK_NUM];/*LINK*/ UINT16 wPlatFormId; /*վ̨ID*/ }DSU_SPKS_BUTTON_STRU; diff --git a/TSCP/src/dqu_common/dqu_idmap_common/dquIdmapInit.c b/TSCP/src/dqu_common/dqu_idmap_common/dquIdmapInit.c index 4725c3f..85cd96b 100644 --- a/TSCP/src/dqu_common/dqu_idmap_common/dquIdmapInit.c +++ b/TSCP/src/dqu_common/dqu_idmap_common/dquIdmapInit.c @@ -86,10 +86,10 @@ UINT8 dfsIdmapInit(CHAR * FSName) /*28.0.0.14߱RC/IVOCŶձ*/ funcRtn = dquGetPublicFSVersion(FSName, szFSPUBVersionFS); funcRtn &= CheckTiocPublicFsVersion(szFSPUBVersionFS); - if (NULL!=g_dsuIdmapStru) + if (NULL != g_dsuIdmapStru) { /*ʼһξ*/ - if (dfsIdmapInitFlag == 1) + if (1U == dfsIdmapInitFlag) { rtnValue = 1U; return rtnValue; @@ -110,7 +110,7 @@ UINT8 dfsIdmapInit(CHAR * FSName) } else { - rtnValue = 0U;; + rtnValue = 0U; } @@ -125,7 +125,7 @@ UINT8 dfsIdmapInit(CHAR * FSName) } else { - rtnValue = 0U;; + rtnValue = 0U; } @@ -140,7 +140,7 @@ UINT8 dfsIdmapInit(CHAR * FSName) } else { - rtnValue = 0U;; + rtnValue = 0U; } @@ -213,7 +213,6 @@ UINT8 dfsIdmapInit(CHAR * FSName) UINT8 dfsIdmapInitExp(UINT8 * pDataBuf,DSU_IDMAP_STRU *dsuIdmapStru,UINT8 mode,UINT16 timeSlice) { UINT32 DataID; - UINT16 wPos=0U; UINT8 rtnValue=0U; UINT16 wFreqTimes=0U; UINT8 bExeState=DQU_QFUN_FASLE; @@ -793,13 +792,10 @@ UINT8 initRCNum(UINT8 *pDataAddr, UINT32 dataSize, UINT16 rowCount) UINT8 rtnValue = 2U; UINT8 *pData = NULL; UINT8 initFlag = 0U; - UINT8 checkFlag = 0U; DSU_CI_NUM_STRU *pCurrentStru = NULL; /*ṹʱָ*/ DSU_CI_NUM_STRU stru = { 0 }; /*ṹʱָ*/ UINT16 j = 0U; static UINT32 rowDataLen = 0; - UINT16 wStruDataLen = 0; - UINT16 wDataIndexLen = 0; /*Ŷձ*/ DSU_IDMAP_INDEX_STRU *dsuIdmapIndexStru = NULL; @@ -848,6 +844,68 @@ UINT8 initRCNum(UINT8 *pDataAddr, UINT32 dataSize, UINT16 rowCount) initFlag = IdmapInitFunStepCtrl(0x02); if ((2U == rtnValue) && (DQU_QFUN_TRUE == initFlag)) + { + /*͸Ӷ*/ + rtnValue = initRCNumSndStep(dsuIdmapLenStru, dsuIdmapIndexStru, dsuStaticIdmapStru); + } + + initFlag = IdmapInitFunStepCtrl(0x03); + if ((2U == rtnValue) && (DQU_QFUN_TRUE == initFlag)) + { + /*ݵṹ */ + for (j = g_struInitTaskTab[g_wCurInitStruProg].wCurInitPos; j < dsuIdmapLenStru->wRCNumLen; j++) + { + pCurrentStru = dsuStaticIdmapStru->pRCNumStru + j; + + pData = pDataAddr + rowDataLen*j; + /*ݽṹ*/ + initFlag = CINumStru_init(pData, pCurrentStru); + if (0U == initFlag) + { + /*initָ*/ + rtnValue = 0U;; + } + else + { + /*ɶӦ*/ + dsuIdmapIndexStru->dsuRCNumIndex[pCurrentStru->wIndexId] = j; + initFlag = IdmapInitLoopStepLenCtrl(j); + } + /*ѭֲи*/ + if ((0U == initFlag) || (DQU_QFUN_TRUE == initFlag)) + { + break; + } + } + + if ((0U != rtnValue) && (j == dsuIdmapLenStru->wRCNumLen)) + { + rtnValue = 1; + } + } + + return rtnValue; +} + +/********************************************** +ܣʼ[Ŷձ-RC]:--ȦӶʹ + +DSU_IDMAP_INDEX_STRU *dsuIdmapIndexStru +DSU_STATIC_IDMAP_STRU *dsuStaticIdmapStru +DSU_IDMAP_LEN_STRU *dsuIdmapLenStru +ֵ:2 0ʧ +**********************************************/ +UINT8 initRCNumSndStep(DSU_IDMAP_LEN_STRU *dsuIdmapLenStru, DSU_IDMAP_INDEX_STRU *dsuIdmapIndexStru, DSU_STATIC_IDMAP_STRU *dsuStaticIdmapStru) +{ + UINT8 rtnValue = 2U; + UINT16 wStruDataLen = 0; + UINT16 wDataIndexLen = 0; + UINT8 checkFlag = 0U; + if ((NULL == dsuIdmapIndexStru) || (NULL == dsuStaticIdmapStru) || (NULL == dsuIdmapLenStru)) + { + rtnValue = 0U; + } + else { if (0x01 == g_IsIdmapAllocMemory) { @@ -904,42 +962,6 @@ UINT8 initRCNum(UINT8 *pDataAddr, UINT32 dataSize, UINT16 rowCount) } } } - - initFlag = IdmapInitFunStepCtrl(0x03); - if ((2U == rtnValue) && (DQU_QFUN_TRUE == initFlag)) - { - /*ݵṹ */ - for (j = g_struInitTaskTab[g_wCurInitStruProg].wCurInitPos; j < dsuIdmapLenStru->wRCNumLen; j++) - { - pCurrentStru = dsuStaticIdmapStru->pRCNumStru + j; - - pData = pDataAddr + rowDataLen*j; - /*ݽṹ*/ - initFlag = CINumStru_init(pData, pCurrentStru); - if (0U == initFlag) - { - /*initָ*/ - rtnValue = 0U;; - } - else - { - /*ɶӦ*/ - dsuIdmapIndexStru->dsuRCNumIndex[pCurrentStru->wIndexId] = j; - initFlag = IdmapInitLoopStepLenCtrl(j); - } - /*ѭֲи*/ - if ((0U == initFlag) || (DQU_QFUN_TRUE == initFlag)) - { - break; - } - } - - if ((0U != rtnValue) && (j == dsuIdmapLenStru->wRCNumLen)) - { - rtnValue = 1; - } - } - return rtnValue; } @@ -2414,13 +2436,10 @@ UINT8 initIvocNum(UINT8 *pDataAddr, UINT32 dataSize, UINT16 rowCount) UINT8 rtnValue = 2U; UINT8 *pData = NULL; UINT8 initFlag = 0U; - UINT8 checkFlag = 0U; DSU_VOBC_NUM_STRU *pCurrentStru = NULL; /*ṹʱָ*/ DSU_VOBC_NUM_STRU stru = { 0 }; /*ṹʱָ*/ UINT16 j = 0U; static UINT32 rowDataLen = 0; - UINT16 wStruDataLen = 0; - UINT16 wDataIndexLen = 0; /*Ŷձ*/ DSU_IDMAP_INDEX_STRU *dsuIdmapIndexStru = NULL; @@ -2469,6 +2488,68 @@ UINT8 initIvocNum(UINT8 *pDataAddr, UINT32 dataSize, UINT16 rowCount) initFlag = IdmapInitFunStepCtrl(0x02); if ((2U == rtnValue) && (DQU_QFUN_TRUE == initFlag)) + { + rtnValue = initIvocNumSndStep(dsuIdmapIndexStru, dsuStaticIdmapStru, dsuIdmapLenStru); + } + + initFlag = IdmapInitFunStepCtrl(0x03); + if ((2U == rtnValue) && (DQU_QFUN_TRUE == initFlag)) + { + /*ݵṹ */ + for (j = g_struInitTaskTab[g_wCurInitStruProg].wCurInitPos; j < dsuIdmapLenStru->wIvocNumLen; j++) + { + pCurrentStru = dsuStaticIdmapStru->pIvocNumStru + j; + + pData = pDataAddr + rowDataLen*j; + /*ݽṹ*/ + initFlag = VOBCNumStru_init(pData, pCurrentStru); + if (0U == initFlag) + { + /*initָ*/ + rtnValue = 0U;; + } + else + { + /*ɶӦ*/ + dsuIdmapIndexStru->dsuIvocNumIndex[pCurrentStru->wIndexId] = j; + initFlag = IdmapInitLoopStepLenCtrl(j); + } + /*ѭֲи*/ + if ((0U == rtnValue) || (DQU_QFUN_TRUE == initFlag)) + { + break; + } + } + + if ((0U != rtnValue) && (j == dsuIdmapLenStru->wIvocNumLen)) + { + rtnValue = 1; + } + } + + return rtnValue; +} + +/********************************************** +ܣʼ[ŶձIVOC]:----ָӶʹ + +Ŷձ +DSU_IDMAP_INDEX_STRU *dsuIdmapIndexStru; +DSU_STATIC_IDMAP_STRU *dsuStaticIdmapStru; +DSU_IDMAP_LEN_STRU *dsuIdmapLenStru; +ֵ:2,0ʧ +**********************************************/ +UINT8 initIvocNumSndStep(DSU_IDMAP_INDEX_STRU *dsuIdmapIndexStru,DSU_STATIC_IDMAP_STRU *dsuStaticIdmapStru,DSU_IDMAP_LEN_STRU *dsuIdmapLenStru) +{ + UINT8 rtnValue = 2U; + UINT16 wStruDataLen = 0; + UINT16 wDataIndexLen = 0; + UINT8 checkFlag = 0U; + if ((NULL == dsuIdmapIndexStru) || (NULL == dsuStaticIdmapStru) || (NULL == dsuIdmapLenStru)) + { + rtnValue = 0U; + } + else { if (0x01 == g_IsIdmapAllocMemory) { @@ -2483,7 +2564,7 @@ UINT8 initIvocNum(UINT8 *pDataAddr, UINT32 dataSize, UINT16 rowCount) else { /*ʼΪ0xFF*/ - (void)CommonMemSet(dsuIdmapIndexStru->dsuIvocNumIndex,(UINT32)(dsuIdmapIndexStru->IVOCNUMINDEXSIZE * 2 + 2),0xFF, (UINT32)(dsuIdmapIndexStru->IVOCNUMINDEXSIZE * 2 + 2)); + (void)CommonMemSet(dsuIdmapIndexStru->dsuIvocNumIndex, (UINT32)(dsuIdmapIndexStru->IVOCNUMINDEXSIZE * 2 + 2), 0xFF, (UINT32)(dsuIdmapIndexStru->IVOCNUMINDEXSIZE * 2 + 2)); } if (2U == rtnValue) @@ -2525,42 +2606,6 @@ UINT8 initIvocNum(UINT8 *pDataAddr, UINT32 dataSize, UINT16 rowCount) } } } - - initFlag = IdmapInitFunStepCtrl(0x03); - if ((2U == rtnValue) && (DQU_QFUN_TRUE == initFlag)) - { - /*ݵṹ */ - for (j = g_struInitTaskTab[g_wCurInitStruProg].wCurInitPos; j < dsuIdmapLenStru->wIvocNumLen; j++) - { - pCurrentStru = dsuStaticIdmapStru->pIvocNumStru + j; - - pData = pDataAddr + rowDataLen*j; - /*ݽṹ*/ - initFlag = VOBCNumStru_init(pData, pCurrentStru); - if (0U == initFlag) - { - /*initָ*/ - rtnValue = 0U;; - } - else - { - /*ɶӦ*/ - dsuIdmapIndexStru->dsuIvocNumIndex[pCurrentStru->wIndexId] = j; - initFlag = IdmapInitLoopStepLenCtrl(j); - } - /*ѭֲи*/ - if ((0U == rtnValue) || (DQU_QFUN_TRUE == initFlag)) - { - break; - } - } - - if ((0U != rtnValue) && (j == dsuIdmapLenStru->wIvocNumLen)) - { - rtnValue = 1; - } - } - return rtnValue; } @@ -4658,9 +4703,7 @@ UINT8 initIteNum(UINT8* pDataAddr, UINT32 dataSize, UINT16 rowCount) UINT8* pData = NULL; UINT8 initFlag = 0U; UINT8 checkFlag = 0U; - DSU_ITE_NUM_STRU* pCurrentStru = NULL; /*ṹʱָ*/ DSU_ITE_NUM_STRU stru = { 0U }; /*ṹʱָ*/ - UINT16 j = 0U; static UINT32 rowDataLen = 0U; UINT16 wStruDataLen = 0U; UINT16 wDataIndexLen = 0U; diff --git a/TSCP/src/dqu_common/dqu_idmap_common/dquIdmapInit.h b/TSCP/src/dqu_common/dqu_idmap_common/dquIdmapInit.h index 86bdce0..2d7023a 100644 --- a/TSCP/src/dqu_common/dqu_idmap_common/dquIdmapInit.h +++ b/TSCP/src/dqu_common/dqu_idmap_common/dquIdmapInit.h @@ -84,6 +84,16 @@ rowCount: **********************************************/ UINT8 initRCNum(UINT8 *pDataAddr, UINT32 dataSize, UINT16 rowCount); +/********************************************** +ܣʼ[Ŷձ-RC]:--ȦӶʹ + +DSU_IDMAP_INDEX_STRU *dsuIdmapIndexStru +DSU_STATIC_IDMAP_STRU *dsuStaticIdmapStru +DSU_IDMAP_LEN_STRU *dsuIdmapLenStru +ֵ:2 0ʧ +**********************************************/ +UINT8 initRCNumSndStep(DSU_IDMAP_LEN_STRU *dsuIdmapLenStru, DSU_IDMAP_INDEX_STRU *dsuIdmapIndexStru, DSU_STATIC_IDMAP_STRU *dsuStaticIdmapStru); + /********************************************** ܣʼ[ATS]: pDataAddr:׵ַ @@ -184,6 +194,17 @@ rowCount: **********************************************/ UINT8 initIvocNum(UINT8 *pDataAddr, UINT32 dataSize, UINT16 rowCount); +/********************************************** +ܣʼ[ŶձIVOC]:----ָӶʹ + +Ŷձ +DSU_IDMAP_INDEX_STRU *dsuIdmapIndexStru; +DSU_STATIC_IDMAP_STRU *dsuStaticIdmapStru; +DSU_IDMAP_LEN_STRU *dsuIdmapLenStru; +ֵ:2,0ʧ +**********************************************/ +UINT8 initIvocNumSndStep(DSU_IDMAP_INDEX_STRU *dsuIdmapIndexStru, DSU_STATIC_IDMAP_STRU *dsuStaticIdmapStru, DSU_IDMAP_LEN_STRU *dsuIdmapLenStru); + /********************************************** ܣʼ[]: pDataAddr:׵ַ diff --git a/TSCP/src/dqu_common/dqu_idmap_common/dquIdmapQuery.h b/TSCP/src/dqu_common/dqu_idmap_common/dquIdmapQuery.h index d1efd69..82a5423 100644 --- a/TSCP/src/dqu_common/dqu_idmap_common/dquIdmapQuery.h +++ b/TSCP/src/dqu_common/dqu_idmap_common/dquIdmapQuery.h @@ -380,6 +380,14 @@ UINT16 dquGetIvocIndex(UINT16 dataPos); ***************************************************/ UINT8 dquQueryOutAxleDevId(UINT16 devIndex, UINT32 szOutDevId[2U]); +/************************************************** +*ܣȡݿVOBCűĽṹ +* +* +* ֵVOBCűĽṹ +***************************************************/ +UINT16 dquGetVobcNumLen(void); + #ifdef __cplusplus } #endif diff --git a/TSCP/src/protocol/fsfb/common_fsfb/FsfbMessageInfo.c b/TSCP/src/protocol/fsfb/common_fsfb/FsfbMessageInfo.c index 58eadb7..4733fee 100644 --- a/TSCP/src/protocol/fsfb/common_fsfb/FsfbMessageInfo.c +++ b/TSCP/src/protocol/fsfb/common_fsfb/FsfbMessageInfo.c @@ -977,18 +977,26 @@ static UINT8 CreateTsdOrSbtMsg(const UINT8* pAppData, UINT16 DataLen, UINT8 appl ret = 1u; /*-< ���ú�������ֵΪ�ɹ�*/ break; /*-< �˳�*/ case APPLCAT_TDM: /*-< TD����*/ - *outPutDataLen = TSD_SIZE; /*-< ����������ݳ���*/ /*��·״̬����*/ pPNode->FsfbLinInfo.RecvLinkStatus = Fsfb_WaitSse; /*-< ���ý�����·״̬Ϊ��SSE*/ /* ����TSD֡ͷ */ SetFsfbMsgHead(applyCat, FSFB_TSD_MSG, pPNode->FsfbLinInfo.sendSrcAdd, pPNode->FsfbLinInfo.sendDestAdd, OutTsdOrSbtMsg); /*-< ���ú�������TSD֡ͷ*/ /*�ж����ݳ����Ƿ�ΪTSD �����ݳ��� */ - if (DataLen != TSD_DF_SIZE) /*-< ���ݳ��ȴ���*/ + if ((TSD_DF_SIZE != DataLen) && (TSD_DF_TWO_SIZE != DataLen)) /*-< ���ݳ��ȴ���*/ { ret = 0u; /*-< ���ú�������ֵΪʧ��*/ } else { + if ((TSD_DF_SIZE == DataLen)) + { + (*outPutDataLen) = TSD_SIZE; /*-< ����������ݳ���*/ + } + else + { + (*outPutDataLen) = TSD_TWO_SIZE; /*-< ����������ݳ���*/ + } + ret = 1u; /*-< ���ú�������ֵΪ�ɹ�*/ } break; /*-< �˳�*/ diff --git a/TSCP/src/protocol/fsfb/common_fsfb/FsfbProtcl.c b/TSCP/src/protocol/fsfb/common_fsfb/FsfbProtcl.c index a43e1b9..55df05c 100644 --- a/TSCP/src/protocol/fsfb/common_fsfb/FsfbProtcl.c +++ b/TSCP/src/protocol/fsfb/common_fsfb/FsfbProtcl.c @@ -706,6 +706,7 @@ static UINT8 FsfbStructInit(FSFB_INFO_STRU* pFsfbStruct) } else { + ComMemSet(pFsfbStruct->AppArray, sizeof(UINT8) * pFsfbStruct->AppArraySize, 0U); /*-< ���������*/ LongToChar(0, pFsfbStruct->AppArray); /*-< ����������鳤��Ϊ0*/ } @@ -720,6 +721,7 @@ static UINT8 FsfbStructInit(FSFB_INFO_STRU* pFsfbStruct) } else { + ComMemSet(pFsfbStruct->VarArray, sizeof(UINT8) * pFsfbStruct->VarArraySize, 0U); /*-< �����м��������*/ ShortToChar(0u, pFsfbStruct->VarArray); /*-< �����м�������鳤��Ϊ0*/ } diff --git a/TSCP/src/protocol/fsfb/common_fsfb/FsfbProtclConfigMessage.h b/TSCP/src/protocol/fsfb/common_fsfb/FsfbProtclConfigMessage.h index 1a49282..ee86911 100644 --- a/TSCP/src/protocol/fsfb/common_fsfb/FsfbProtclConfigMessage.h +++ b/TSCP/src/protocol/fsfb/common_fsfb/FsfbProtclConfigMessage.h @@ -35,6 +35,7 @@ /* Ϣ֡ */ #define TSD_SIZE 58 +#define TSD_TWO_SIZE (74U) /*TSD*/ #define SSE_SIZE 20 #define SSR_SIZE 25 #define SBT_SIZE 138 @@ -45,6 +46,7 @@ /* data feild Size */ #define TSD_DF_SIZE 36 +#define TSD_DF_TWO_SIZE (52U) /*TSD_DF*/ #define BTC_DF_SIZE 8 #define SBT_DF_SIZE 116 #define ABT_DF_SIZE 0 diff --git a/TSCP/src/protocol/fsfb/common_fsfb/FsfbRecordDelare.h b/TSCP/src/protocol/fsfb/common_fsfb/FsfbRecordDelare.h index b22288c..56ea088 100644 --- a/TSCP/src/protocol/fsfb/common_fsfb/FsfbRecordDelare.h +++ b/TSCP/src/protocol/fsfb/common_fsfb/FsfbRecordDelare.h @@ -1,6 +1,6 @@ /******************************************************** * -* ļ FsfbRecordDelare.h +* ļ FsfbRecordDelare.h * Ȩ˵ ؿƼ޹˾ * 汾 1.0 * ʱ䣺 2013.09.09 diff --git a/TSCP/src/protocol/fsfb/common_fsfb/fsfbProtclStruct.h b/TSCP/src/protocol/fsfb/common_fsfb/fsfbProtclStruct.h index 4dab339..48f71df 100644 --- a/TSCP/src/protocol/fsfb/common_fsfb/fsfbProtclStruct.h +++ b/TSCP/src/protocol/fsfb/common_fsfb/fsfbProtclStruct.h @@ -170,7 +170,7 @@ typedef struct UINT8 *RecordArray; /* Fsfb¼ */ UINT16 RecordArraySize; /* Fsfb¼С */ UINT8 *AppArray; /* ģij1ʾ */ - UINT16 AppArraySize; /* Fsfbģij鳤 */ + UINT32 AppArraySize; /* Fsfbģij鳤 */ UINT8 *VarArray; UINT16 VarArraySize; QueueStruct DataToApp; /* FsfbЭӦõݶ */ diff --git a/TSCP/src/protocol/protocol_cbtc/common_dqu_protocol/dsuProtclFun.c b/TSCP/src/protocol/protocol_cbtc/common_dqu_protocol/dsuProtclFun.c index f6f171e..9260ac3 100644 --- a/TSCP/src/protocol/protocol_cbtc/common_dqu_protocol/dsuProtclFun.c +++ b/TSCP/src/protocol/protocol_cbtc/common_dqu_protocol/dsuProtclFun.c @@ -41,6 +41,7 @@ static UINT8 StDsuPtclFindSheet(SheetInfo* sheetInfo, UINT8 data[], const UINT32 static void StDsuPtclSetDevNum(UINT8 locType, UINT8 oppType, SheetInfo* outDevIpSheet, SheetInfo* inDevIpSheet, UINT16* dupOppHlhtIdLen, UINT32* dupOppHlhtId, UINT16 outInDevIpRowCount, UINT8* devNum); static UINT8 GetCommOppDevTypes(SheetInfo* commSheet, UINT8 locType, UINT8* oppTypes, UINT8* oppTypePtls, UINT16* oppTypeNum, const UINT16 maxOppTypeNum); static void GetCommOppDevNum(SheetInfo* devIpSheet, UINT8 oppType, UINT16* dupOppHlhtIdsLen, UINT32* dupOppHlhtIds, const UINT16 maxDupOppHlhtIdsLen, UINT8* devNum); +static void StDsuPtclCommRelSetDevNum(UINT16 locTypeId, UINT8 oppType, UINT8* devNum); /** * @brief DsuCommonInfoInit ѯʼ @@ -255,7 +256,20 @@ UINT8 DsuGetProtclTypeInfo(UINT16 locTypeId, DSU_PROTCL_TYPE_STRU* dsuProtclType } devNum = 0u; /*-< 豸Ϊ0*/ - StDsuPtclSetDevNum(locType, oppType[i], &outDevIpSheet, &inDevIpSheet, &dupOppHlhtIdLen, dupOppHlhtId, (UINT16)(outInDevIpRowCount), &devNum); /*-< 豸*/ + + StDsuPtclCommRelSetDevNum(locTypeId, oppType[i], &devNum); /*-< ø豸ͨŹϵõ豸*/ + if (0U == devNum) /*-< õ豸*/ + { + StDsuPtclSetDevNum(locType, oppType[i], &outDevIpSheet, &inDevIpSheet, &dupOppHlhtIdLen, dupOppHlhtId, (UINT16)(outInDevIpRowCount), &devNum); /*-< 豸*/ + } + else + { + if (LEU_TYPE == oppType[i]) /*-< ͨΪLEU*/ + { + devNum *= 2U; /*-< LEU·2,ͨ*/ + } + devNum += 1U; /*-< ͳһԣһ·*/ + } /*ӵӦЭ͵ͨ豸*/ switch (oppTypePtl[i]) /*-< ж϶ԷЭ*/ @@ -717,3 +731,48 @@ static void GetCommOppDevNum(SheetInfo* devIpSheet, UINT8 oppType, UINT16* dupOp } } } + +/** + * @brief StDsuPtclCommRelSetDevNum 豸ͨŹϵõ豸 + * @param locTypeId ID ȡֵΧ:0x0000-0xFFFF + * @param oppType Է ȡֵΧ:0x00-0xFF + * @param devNum 豸 ȡֵΧ:0x00-0xFF + */ +static void StDsuPtclCommRelSetDevNum(UINT16 locTypeId, UINT8 oppType, UINT8* devNum) +{ + SheetInfo commRelSheet = { 0U }; + UINT16 rowIdx = 0U; + UINT16 curLocTypeId = 0U; + UINT8 comDevNum = 0U; + UINT8 comIdx = 0U; + UINT16 comTypeId = 0U; + UINT8 comType = 0U; + + if ((NULL != devNum) && (NULL != g_pDataBuf))/*-< Ƿǿ*/ + { + (*devNum) = 0u; /*-< 豸Ϊ0*/ + + InitSheet(&commRelSheet, g_pDataBuf, g_DataBufLen, DSU_DEVICE_IP_CONFIG_TYPE, DSU_DATA_IP_ZCDSU_COMM_ID); /*-< ȡ豸ͨŹϵñ*/ + if (NULL != commRelSheet.Data) /*-< -RSSPϢ-ȺϷ*/ + { + for (rowIdx = 0U; rowIdx < commRelSheet.RowCount; rowIdx++) + { + curLocTypeId = ShortFromChar(&commRelSheet.Data[rowIdx * commRelSheet.ColLen]); /*-< õǰID*/ + if (curLocTypeId == locTypeId) + { + comDevNum = (UINT8)ShortFromChar(&commRelSheet.Data[(rowIdx * commRelSheet.ColLen) + 2U]); /*-< õͨ*/ + for (comIdx = 0U; comIdx < comDevNum; comIdx++) + { + comTypeId = ShortFromChar(&commRelSheet.Data[(rowIdx * commRelSheet.ColLen) + 4U + (2U * comIdx)]); /*-< õͨID*/ + comType = (UINT8)((comTypeId >> 8U) & 0x00FFU); + if (comType == oppType) + { + (*devNum)++; + } + } + break; + } + } + } + } +} diff --git a/TSCP/src/protocol/protocol_cbtc/common_dqu_protocol/dsuProtclFun.h b/TSCP/src/protocol/protocol_cbtc/common_dqu_protocol/dsuProtclFun.h index a670c48..5df16d8 100644 --- a/TSCP/src/protocol/protocol_cbtc/common_dqu_protocol/dsuProtclFun.h +++ b/TSCP/src/protocol/protocol_cbtc/common_dqu_protocol/dsuProtclFun.h @@ -47,6 +47,7 @@ extern "C" { #define PSC_TYPE ((UINT8)0x61) /*PSC豸*/ #define ITE_TYPE ((UINT8)0x18) /*ITE豸*/ #define OC_TYPE ((UINT8)0x64) /*OCC豸*/ +#define LEU_TYPE ((UINT8)0x5E) /*LEU豸*/ /*豸ͨЭ0x4002*/ typedef struct diff --git a/TSCP/src/protocol/sfp_record_cbtc1/common_sfp_nr_config/sfpConfig.h b/TSCP/src/protocol/sfp_record_cbtc1/common_sfp_nr_config/sfpConfig.h index dcc2033..e2bc929 100644 --- a/TSCP/src/protocol/sfp_record_cbtc1/common_sfp_nr_config/sfpConfig.h +++ b/TSCP/src/protocol/sfp_record_cbtc1/common_sfp_nr_config/sfpConfig.h @@ -21,7 +21,6 @@ #define PRTCL_RECORD_SIMPLIFY_BIN /*Ƽ¼*/ #define USE_DSU_SFP /*ʹSFPѯ*/ -#define SWAP_CRC /*CRC*/ #else #endif diff --git a/数据/data_line_BJL10_工程数据(1.2).0.20260210-ts.zip b/数据/data_line_BJL10_工程数据(1.2).0.20260210-ts.zip deleted file mode 100644 index 2461dbe..0000000 --- a/数据/data_line_BJL10_工程数据(1.2).0.20260210-ts.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f2a23966aba7a8761bccf9fe2821d66bb5d2103340030baed8530a81fbc7957a -size 8172278 diff --git a/数据/标准站车车V8.0+公共V31.5+V54.0IVOC+V50.0RCI_CI+V37.0RCI_OC+V22.0ATS+V1.0TMC+V9.0AIM及AID-20260401(1).zip b/数据/标准站车车V8.0+公共V31.5+V54.0IVOC+V50.0RCI_CI+V37.0RCI_OC+V22.0ATS+V1.0TMC+V9.0AIM及AID-20260401(1).zip deleted file mode 100644 index 9660e41..0000000 --- a/数据/标准站车车V8.0+公共V31.5+V54.0IVOC+V50.0RCI_CI+V37.0RCI_OC+V22.0ATS+V1.0TMC+V9.0AIM及AID-20260401(1).zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9abd7242a4fcafef099eadcb600e771b6fc1c2a7b34cf698479245dee5db2d1a -size 33112105 diff --git a/数据/电子地图数据V2.2-CBTC-14-公共31.5+CI50.0+OC37.0-8.zip b/数据/电子地图数据V2.2-CBTC-14-公共31.5+CI50.0+OC37.0-8.zip deleted file mode 100644 index 4ed92a4..0000000 --- a/数据/电子地图数据V2.2-CBTC-14-公共31.5+CI50.0+OC37.0-8.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4443bef5ed0eaf019894e13525d37d1ebe3390060ee4090b0d3b043412c01b20 -size 5611876 diff --git a/数据/电子地图数据V2.2-车车-11-公共31.5+CI50.0+OC37.0+IVOC54.0-6.zip b/数据/电子地图数据V2.2-车车-11-公共31.5+CI50.0+OC37.0+IVOC54.0-6.zip deleted file mode 100644 index df5b392..0000000 --- a/数据/电子地图数据V2.2-车车-11-公共31.5+CI50.0+OC37.0+IVOC54.0-6.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cc54ffd8691e818718c10702f8cb80c536c3c644ac312aedb068930f0783a011 -size 4259937 diff --git a/数据/电子地图数据V2.3-CBTC-23.zip b/数据/电子地图数据V2.3-CBTC-23.zip new file mode 100644 index 0000000..6ed369c --- /dev/null +++ b/数据/电子地图数据V2.3-CBTC-23.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:317f27bac6cf058ba0dd48be8f9b696d6d8198ae06088f663b2860b616b502ad +size 7770464 diff --git a/数据/电子地图数据V2.3-车车-13.zip b/数据/电子地图数据V2.3-车车-13.zip new file mode 100644 index 0000000..47ea567 --- /dev/null +++ b/数据/电子地图数据V2.3-车车-13.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:647c2cd5e43e68537bf4a5bab8f144cb192012119d331691906292f415728027 +size 6086186 From b362cb2f913f145ef03dba7ca9c2355ca442a404 Mon Sep 17 00:00:00 2001 From: lh <3191213465@qq.com> Date: Mon, 1 Jun 2026 16:25:15 +0800 Subject: [PATCH 08/15] =?UTF-8?q?=E5=AE=95=E6=9C=BA=E6=95=85=E9=9A=9C?= =?UTF-8?q?=E7=A0=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TSCP/src/MSCP/PFM/PFM_InputOutput.c | 8 ++++---- TSCP/src/MSCP/SFM/SFM_2x2.c | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/TSCP/src/MSCP/PFM/PFM_InputOutput.c b/TSCP/src/MSCP/PFM/PFM_InputOutput.c index 89f2609..2c32b9b 100644 --- a/TSCP/src/MSCP/PFM/PFM_InputOutput.c +++ b/TSCP/src/MSCP/PFM/PFM_InputOutput.c @@ -1046,7 +1046,7 @@ static CM_INT32 s_2x2OutputCheckFrame_Pack(OUT CM_UINT8 *buf, IN CM_UINT32 BufSi } peerLen = SFM_2oo2_Exchange_Currency(buf, i, &buf[i], BufSize - i, ENUM_2oo2_OUTPUT_EX); - CM_ASSERT(peerLen == i, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_16, TSCP_DARK_ASSERT_17); + CM_RE_ASSERT(peerLen == i, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_19, TSCP_DARK_ASSERT_1); i += peerLen; /*- 返回输出校验报文长度 */ @@ -1927,11 +1927,11 @@ static void s_output_2oo2check(IN CM_UINT8* check_2oo2_Buf, IN CM_UINT32 check_2 CM_UINT8 buf_peer[500] = {0u}; CM_UINT32 offset = 0u; /* 用于日志打印时,判断通道*/ /*- 2oo2交换输出校验帧 */ - CM_ASSERT(NULL != check_2oo2_Buf, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_15, TSCP_DARK_ASSERT_1); + CM_ASSERT(NULL != check_2oo2_Buf, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_20, TSCP_DARK_ASSERT_1); ret = SFM_2oo2_Exchange_Currency(check_2oo2_Buf, check_2oo2_Len, buf_peer, (CM_UINT32)check_2oo2_Len, ENUM_2oo2_OUTPUT_CHECK); /*- 检查2oo2双机的输出校验帧是否一致 */ - CM_RE_ASSERT(check_2oo2_Len == ret, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_15, TSCP_DARK_ASSERT_2); + CM_RE_ASSERT(check_2oo2_Len == ret, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_20, TSCP_DARK_ASSERT_2); ret = CM_Memcmp(check_2oo2_Buf, buf_peer, (CM_SIZE_T)check_2oo2_Len); if(0 != ret) { @@ -1954,7 +1954,7 @@ static void s_output_2oo2check(IN CM_UINT8* check_2oo2_Buf, IN CM_UINT32 check_2 /*二取标志未使能*/ } } - CM_RE_ASSERT(0, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_15, TSCP_DARK_ASSERT_3); + CM_RE_ASSERT(0, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_20, TSCP_DARK_ASSERT_3); } } diff --git a/TSCP/src/MSCP/SFM/SFM_2x2.c b/TSCP/src/MSCP/SFM/SFM_2x2.c index 5790706..03282e1 100644 --- a/TSCP/src/MSCP/SFM/SFM_2x2.c +++ b/TSCP/src/MSCP/SFM/SFM_2x2.c @@ -2811,7 +2811,7 @@ void SFM_2x2_OutputProc(IN const CM_UINT8 *CheckBuf, CM_INT32 CheckLen) /*- 发送输出校验帧*/ SFM_2x2_Send(CheckBuf, (CM_UINT32)CheckLen, ENUM_2x2_MSG_OUTCHECK); ret = CM_Memcmp(CheckBuf, CheckBuf + CheckLen / 2, CheckLen / 2); - CM_ASSERT(0 == ret, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_3); + CM_RE_ASSERT(0 == ret, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_3); } else { From 2d49b7206a62ebabc09f1eb156ad63b470319d98 Mon Sep 17 00:00:00 2001 From: lh <3191213465@qq.com> Date: Tue, 9 Jun 2026 15:34:28 +0800 Subject: [PATCH 09/15] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=EF=BC=8C=E5=AD=98=E5=9C=A8=E9=97=AE=E9=A2=98?= =?UTF-8?q?=EF=BC=8C=E5=8F=8C=E7=B3=BB=E5=8F=91=E5=BF=83=E8=B7=B3=E5=8F=AF?= =?UTF-8?q?=E8=83=BD=E4=B8=8D=E5=90=8C=E6=AD=A5=EF=BC=8C=E5=8F=AF=E8=83=BD?= =?UTF-8?q?=E5=87=BA=E7=8E=B0=E5=A6=82=E5=A4=87=E7=B3=BB=E6=9C=AC=E5=91=A8?= =?UTF-8?q?=E6=9C=9F=E5=85=88=E5=8F=91=E4=BA=86=E5=BF=83=E8=B7=B3=EF=BC=8C?= =?UTF-8?q?=E8=BF=99=E6=97=B6=E9=80=9A=E6=8E=A7=E5=BC=80=E5=A7=8B=E5=9B=9E?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=EF=BC=8C=E4=B8=BB=E7=B3=BB=E6=9C=AC=E5=91=A8?= =?UTF-8?q?=E6=9C=9F=E5=8F=AF=E8=83=BD=E4=BC=9A=E6=8E=A5=E6=94=B6=E5=88=B0?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=EF=BC=8C=E7=84=B6=E5=90=8E=E6=9B=B4=E6=96=B0?= =?UTF-8?q?stoptick=EF=BC=8C=E4=BD=86starttick=E5=9C=A8=E5=8F=91=E5=BF=83?= =?UTF-8?q?=E8=B7=B3=E6=89=8D=E6=9B=B4=E6=96=B0=EF=BC=8C=E5=AF=BC=E8=87=B4?= =?UTF-8?q?=E8=80=97=E6=97=B6=E7=BB=93=E6=9E=9C=E5=81=8F=E5=B7=AE=EF=BC=8C?= =?UTF-8?q?=E5=8D=95=E8=B5=B7=E4=B8=80=E7=B3=BB=E6=B5=8B=E8=AF=95=E6=9C=80?= =?UTF-8?q?=E5=A5=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TSCP/src/MSCP/CFM/CFM_Net.c | 8 ++++++++ TSCP/src/MSCP/MSCP_main.c | 2 +- TSCP/src/MSCP/PFM/PFM_InputOutput.c | 8 +++++++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/TSCP/src/MSCP/CFM/CFM_Net.c b/TSCP/src/MSCP/CFM/CFM_Net.c index 2f3d6bb..ea3fc26 100644 --- a/TSCP/src/MSCP/CFM/CFM_Net.c +++ b/TSCP/src/MSCP/CFM/CFM_Net.c @@ -3323,6 +3323,8 @@ void CFM_NetworkCard_Init(void) * 创建本线程之前应先配置好STRU_CFM_RECV_CTRL,包括创建阻塞通信的socket * 本线程将以阻塞方式接收UDP报文并写入线程接收队列 */ +extern CM_UINT64 test_stop_tick; +extern CM_UINT32 test_recv_len, test_recv_num; static CM_THREAD_FUNC_T t_UdpRecvThread(IN CM_Thread_Arg_Struct_T* arg) { /*- 变量初始化 */ @@ -3379,6 +3381,12 @@ static CM_THREAD_FUNC_T t_UdpRecvThread(IN CM_Thread_Arg_Struct_T* arg) if (ENUM_CM_TRUE == rt) { /*成功无操作*/ + if(ENUM_THREAD_OutnetS_Rx == pCtrl->threadNumBer) + { + test_stop_tick = CM_GetTick(); + test_recv_len += len; + test_recv_num++; + } } else { diff --git a/TSCP/src/MSCP/MSCP_main.c b/TSCP/src/MSCP/MSCP_main.c index 09ea599..def9a60 100644 --- a/TSCP/src/MSCP/MSCP_main.c +++ b/TSCP/src/MSCP/MSCP_main.c @@ -692,7 +692,7 @@ static void SelfCheckInit(void) { #ifdef QNX /*- 文件自检初始化 */ - PFM_FileInit(); + //PFM_FileInit(); /*- 内存自检初始化*/ PFM_MemCheck_Init(); /*- CPU自检初始化*/ diff --git a/TSCP/src/MSCP/PFM/PFM_InputOutput.c b/TSCP/src/MSCP/PFM/PFM_InputOutput.c index 2c32b9b..131bd32 100644 --- a/TSCP/src/MSCP/PFM/PFM_InputOutput.c +++ b/TSCP/src/MSCP/PFM/PFM_InputOutput.c @@ -465,7 +465,8 @@ void PFM_BufSwich(void) s_OutnetHeart_Mine_AppReadIndex = 0; s_OutnetHeart_Peer_AppReadIndex = 0; } - +CM_UINT64 test_start_tick = 0u, test_stop_tick = 0u; +CM_UINT32 test_recv_len = 0u, test_recv_num = 0u; /** * @brief 输入微周期处理 * @details @@ -487,6 +488,7 @@ void PFM_InputProc(void) /*- 外网安全数据接收 */ PFM_CFC_Check(26); g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_OutnetSafe].mine_len = (CM_UINT32)SFM_RxOutnetSafe(g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_OutnetSafe].p_mine_buf, (CM_UINT32)g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_OutnetSafe].buf_size); + MSCP_LOG_MSG("TEST:CYC = %d, Recv Num %d Len %d USED %llums\n",g_MSCP_SysCount, test_recv_num, test_recv_len, (test_stop_tick - test_start_tick) / CM_UNSIGNED_MILLION); MSCP_LOG_MSG("g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_OutnetSafe].mine_len = %d\n",g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_OutnetSafe].mine_len); /*判断外网透传使能开关*/ if((CM_UINT32)0x55u == g_PFM_Cfg.M_OutnetRaw_Enable) @@ -518,6 +520,10 @@ void PFM_InputProc(void) PFM_CFC_Check(30); /*- 发送主线程热备状态的外网心跳*/ + test_start_tick = CM_GetTick(); + test_stop_tick = test_start_tick; + test_recv_len = 0u; + test_recv_num = 0u; (void)CFM_TxOutnetHeart(localstate); PFM_CFC_Check(31); /*预留*/ /*************************本地输入数据2oo2交换和比较*************************/ From e14c880a887c3de02d0160c8e7b7e3e641cffd06 Mon Sep 17 00:00:00 2001 From: lh <3191213465@qq.com> Date: Wed, 10 Jun 2026 15:27:07 +0800 Subject: [PATCH 10/15] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=BF=83=E8=B7=B3?= =?UTF-8?q?=E5=8F=91=E9=80=81=E6=97=B6=E6=9C=BA=EF=BC=8C=E5=8D=95=E7=8B=AC?= =?UTF-8?q?=E7=BA=BF=E7=A8=8B=EF=BC=8C=E7=AD=89=E5=BE=85=E5=91=A8=E6=9C=9F?= =?UTF-8?q?=E7=BB=93=E6=9D=9F=E5=89=8D30ms=E6=97=B6=E5=8F=91=E9=80=81?= =?UTF-8?q?=E5=BF=83=E8=B7=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TSCP/src/MSCP/CFM/CFM_Net.c | 59 +++++++++++++++++++++++++---- TSCP/src/MSCP/CFM/CFM_Net.h | 4 ++ TSCP/src/MSCP/MSCP_main.c | 4 +- TSCP/src/MSCP/PFM/PFM_InputOutput.c | 10 ----- 4 files changed, 58 insertions(+), 19 deletions(-) diff --git a/TSCP/src/MSCP/CFM/CFM_Net.c b/TSCP/src/MSCP/CFM/CFM_Net.c index ea3fc26..b9b90d7 100644 --- a/TSCP/src/MSCP/CFM/CFM_Net.c +++ b/TSCP/src/MSCP/CFM/CFM_Net.c @@ -36,6 +36,7 @@ #include "MSCP_APP_Interface.h" #include "PFM_RemoteUpdate.h" #include "MSCP_Define.h" +#include "CFM_Raw.h" #include #define CFM_2oo2_MSG_NUM_MAX (200u) @@ -58,6 +59,18 @@ /*日志攒包发送 攒包大小*/ #define LOG_MAX (5120u) +/* 心跳在周期结束前30ms执行发送 */ +#define CFM_HEART_WAITE (30u) + +/* 心跳发送线程控制结构体 */ +typedef struct +{ + CM_SEM_T m_Start; /* 心跳线程开始信号量 */ + CM_SEM_T m_Stop; /* 心跳线程结束信号量 */ +} STRU_CFM_HEART_CTRL_T; + +static STRU_CFM_HEART_CTRL_T s_CFM_HeartCtrl; + /** 接收线程控制 */ typedef struct { @@ -351,6 +364,8 @@ static CM_THREAD_FUNC_T t_TimeThread_Area(IN CM_Thread_Arg_Struct_T* arg); static CM_THREAD_FUNC_T t_RemoteUpdateThread(IN CM_Thread_Arg_Struct_T* arg); static CM_THREAD_FUNC_T t_ClearArpThread(void); +/* 单独的心跳发送线程 */ +static CM_THREAD_FUNC_T t_OutNetHeartSendThread(IN CM_Thread_Arg_Struct_T* arg); /* 2取使用socket的初始化*/ @@ -2666,6 +2681,13 @@ static void s_NetInit_Outnet(void) rtCheck = CM_Thread_Create((CM_THREAD_T*) NULL, (CM_THREAD_FUNC_T) t_ClearArpThread,"Clear_Arp", 0, CM_TASK_PRIORITY_94, NULL); CM_RE_ASSERT(CM_TRUE == rtCheck, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_4, TSCP_DARK_ASSERT_13); + rt = CM_Sem_Init(&s_CFM_HeartCtrl.m_Start); + CM_RE_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_4, TSCP_DARK_ASSERT_14); + rt = CM_Sem_Init(&s_CFM_HeartCtrl.m_Stop); + CM_RE_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_4, TSCP_DARK_ASSERT_15); + rtCheck = CM_Thread_Create((CM_THREAD_T*) NULL, (CM_THREAD_FUNC_T) t_OutNetHeartSendThread,"heart_send", 0, CM_TASK_PRIORITY_82, (CM_Thread_Arg_Struct_T*)&s_CFM_HeartCtrl); + CM_RE_ASSERT(CM_TRUE == rtCheck, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_4, TSCP_DARK_ASSERT_16); + CM_Sleep(100u);/* 延时等待线程启动 */ } @@ -3323,8 +3345,6 @@ void CFM_NetworkCard_Init(void) * 创建本线程之前应先配置好STRU_CFM_RECV_CTRL,包括创建阻塞通信的socket * 本线程将以阻塞方式接收UDP报文并写入线程接收队列 */ -extern CM_UINT64 test_stop_tick; -extern CM_UINT32 test_recv_len, test_recv_num; static CM_THREAD_FUNC_T t_UdpRecvThread(IN CM_Thread_Arg_Struct_T* arg) { /*- 变量初始化 */ @@ -3381,12 +3401,6 @@ static CM_THREAD_FUNC_T t_UdpRecvThread(IN CM_Thread_Arg_Struct_T* arg) if (ENUM_CM_TRUE == rt) { /*成功无操作*/ - if(ENUM_THREAD_OutnetS_Rx == pCtrl->threadNumBer) - { - test_stop_tick = CM_GetTick(); - test_recv_len += len; - test_recv_num++; - } } else { @@ -4775,7 +4789,36 @@ void CFM_AssertRecved(void) assertMsgNum = CM_MQ_Get_Msg_Num(&s_CFM_Rx2oo2_Assert.MsgQ); CM_ASSERT((0u == assertMsgNum),NET_MODE,DARK_FAULT_CODE_FUN_ORDER_41,TSCP_DARK_ASSERT_1); } +/** + * @brief 发送心跳线程的启动信号量,需要在平台周期开始时发送 + */ +void CFM_Heart_Thread_PostStart(void) +{ + (void)CM_Sem_Post(s_CFM_HeartCtrl.m_Start); +} +/* 单独的心跳发送线程 */ +static CM_THREAD_FUNC_T t_OutNetHeartSendThread(IN CM_Thread_Arg_Struct_T* arg) +{ + STRU_CFM_HEART_CTRL_T *pCtrl = (STRU_CFM_HEART_CTRL_T*)arg; + CM_UINT32 cyc_time = g_PFM_Cfg.CYC_TIME; + ENUM_2x2_STATE_T state_2x2 = ENUM_2x2_SHUTDOWN; +#if QNX + void* pmask = NULL; + /*- 本线程锁定在 A53 core 1 */ + pmask = (void*)(0x01u|0x02u); + (void)ThreadCtl(_NTO_TCTL_RUNMASK, pmask); +#endif + while(1) + { + CM_Sem_Wait(pCtrl->m_Start); + state_2x2 = SFM_2x2_GetLocal2x2State(); + CM_Sleep(cyc_time - 30u); + /*- 发送主线程热备状态的外网心跳*/ + (void)CFM_TxOutnetHeart(state_2x2); + } + return NULL; +} /* MAC层:14字节 dst MAC [6] src MAC [6] type [2] diff --git a/TSCP/src/MSCP/CFM/CFM_Net.h b/TSCP/src/MSCP/CFM/CFM_Net.h index de93934..879e7f1 100644 --- a/TSCP/src/MSCP/CFM/CFM_Net.h +++ b/TSCP/src/MSCP/CFM/CFM_Net.h @@ -759,6 +759,10 @@ extern "C" * @brief 判断收到宕机后的2取,立即执行宕机操作 */ void CFM_AssertRecved(void); + /** + * @brief 发送心跳线程的启动信号量,需要在平台周期开始时发送 + */ + void CFM_Heart_Thread_PostStart(void); #ifdef __cplusplus } #endif diff --git a/TSCP/src/MSCP/MSCP_main.c b/TSCP/src/MSCP/MSCP_main.c index def9a60..b58a126 100644 --- a/TSCP/src/MSCP/MSCP_main.c +++ b/TSCP/src/MSCP/MSCP_main.c @@ -478,6 +478,8 @@ static CM_THREAD_FUNC_T MSCP_CycBase(void) /*TODO 发送2x状态起始信号量*/ SFM_2x2_Thread_PostStart(); SFM_AREA_Thread_PostStart(); + /* 发送心跳线程起始信号量 */ + CFM_Heart_Thread_PostStart(); PFM_CFC_Check(24); /*- @alias 2oo2周期校时 */ if (0x55u == g_PFM_Cfg.M_2oo2_Enable) @@ -692,7 +694,7 @@ static void SelfCheckInit(void) { #ifdef QNX /*- 文件自检初始化 */ - //PFM_FileInit(); + PFM_FileInit(); /*- 内存自检初始化*/ PFM_MemCheck_Init(); /*- CPU自检初始化*/ diff --git a/TSCP/src/MSCP/PFM/PFM_InputOutput.c b/TSCP/src/MSCP/PFM/PFM_InputOutput.c index 131bd32..7d1f057 100644 --- a/TSCP/src/MSCP/PFM/PFM_InputOutput.c +++ b/TSCP/src/MSCP/PFM/PFM_InputOutput.c @@ -465,8 +465,6 @@ void PFM_BufSwich(void) s_OutnetHeart_Mine_AppReadIndex = 0; s_OutnetHeart_Peer_AppReadIndex = 0; } -CM_UINT64 test_start_tick = 0u, test_stop_tick = 0u; -CM_UINT32 test_recv_len = 0u, test_recv_num = 0u; /** * @brief 输入微周期处理 * @details @@ -482,13 +480,11 @@ void PFM_InputProc(void) /*- 变量初始化 */ CM_INT32 i = 0; ENUM_2x2_STATE_T p_state_2x2 = ENUM_2x2_SHUTDOWN; /* 对系热备状态 */ - ENUM_2x2_STATE_T localstate = SFM_2x2_GetLocal2x2State(); /* 本机2x2状态 */ /************************平台数据接收*************************/ /*- 外网安全数据接收 */ PFM_CFC_Check(26); g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_OutnetSafe].mine_len = (CM_UINT32)SFM_RxOutnetSafe(g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_OutnetSafe].p_mine_buf, (CM_UINT32)g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_OutnetSafe].buf_size); - MSCP_LOG_MSG("TEST:CYC = %d, Recv Num %d Len %d USED %llums\n",g_MSCP_SysCount, test_recv_num, test_recv_len, (test_stop_tick - test_start_tick) / CM_UNSIGNED_MILLION); MSCP_LOG_MSG("g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_OutnetSafe].mine_len = %d\n",g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_OutnetSafe].mine_len); /*判断外网透传使能开关*/ if((CM_UINT32)0x55u == g_PFM_Cfg.M_OutnetRaw_Enable) @@ -519,12 +515,6 @@ void PFM_InputProc(void) } PFM_CFC_Check(30); - /*- 发送主线程热备状态的外网心跳*/ - test_start_tick = CM_GetTick(); - test_stop_tick = test_start_tick; - test_recv_len = 0u; - test_recv_num = 0u; - (void)CFM_TxOutnetHeart(localstate); PFM_CFC_Check(31); /*预留*/ /*************************本地输入数据2oo2交换和比较*************************/ MSCP_LOG_MSG("timecurr 1 Input Recv = %lld us\n", NOW_USED_TIME); From a803ab421f849357c20599388e926d11a3b34fc8 Mon Sep 17 00:00:00 2001 From: lh <3191213465@qq.com> Date: Wed, 10 Jun 2026 15:31:27 +0800 Subject: [PATCH 11/15] =?UTF-8?q?30ms=E4=BD=BF=E7=94=A8=E5=AE=8F=E5=AE=9A?= =?UTF-8?q?=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TSCP/src/MSCP/CFM/CFM_Net.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TSCP/src/MSCP/CFM/CFM_Net.c b/TSCP/src/MSCP/CFM/CFM_Net.c index b9b90d7..41bb259 100644 --- a/TSCP/src/MSCP/CFM/CFM_Net.c +++ b/TSCP/src/MSCP/CFM/CFM_Net.c @@ -4812,7 +4812,7 @@ static CM_THREAD_FUNC_T t_OutNetHeartSendThread(IN CM_Thread_Arg_Struct_T* arg) { CM_Sem_Wait(pCtrl->m_Start); state_2x2 = SFM_2x2_GetLocal2x2State(); - CM_Sleep(cyc_time - 30u); + CM_Sleep(cyc_time - CFM_HEART_WAITE); /*- 发送主线程热备状态的外网心跳*/ (void)CFM_TxOutnetHeart(state_2x2); } From f16a7c94b2214bdf55f2af39574993242f073232 Mon Sep 17 00:00:00 2001 From: lh <3191213465@qq.com> Date: Thu, 11 Jun 2026 15:41:22 +0800 Subject: [PATCH 12/15] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=95=85=E9=9A=9C?= =?UTF-8?q?=E5=AE=95=E6=9C=BA=E4=B8=8D=E5=8F=AF=E8=87=AA=E5=8A=A8=E9=87=8D?= =?UTF-8?q?=E5=90=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TSCP/src/MSCP/CFM/CFM_Net.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/TSCP/src/MSCP/CFM/CFM_Net.c b/TSCP/src/MSCP/CFM/CFM_Net.c index 41bb259..84d073b 100644 --- a/TSCP/src/MSCP/CFM/CFM_Net.c +++ b/TSCP/src/MSCP/CFM/CFM_Net.c @@ -2679,14 +2679,14 @@ static void s_NetInit_Outnet(void) } rtCheck = CM_Thread_Create((CM_THREAD_T*) NULL, (CM_THREAD_FUNC_T) t_ClearArpThread,"Clear_Arp", 0, CM_TASK_PRIORITY_94, NULL); - CM_RE_ASSERT(CM_TRUE == rtCheck, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_4, TSCP_DARK_ASSERT_13); + CM_ASSERT(CM_TRUE == rtCheck, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_4, TSCP_DARK_ASSERT_13); rt = CM_Sem_Init(&s_CFM_HeartCtrl.m_Start); - CM_RE_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_4, TSCP_DARK_ASSERT_14); + CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_4, TSCP_DARK_ASSERT_14); rt = CM_Sem_Init(&s_CFM_HeartCtrl.m_Stop); - CM_RE_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_4, TSCP_DARK_ASSERT_15); + CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_4, TSCP_DARK_ASSERT_15); rtCheck = CM_Thread_Create((CM_THREAD_T*) NULL, (CM_THREAD_FUNC_T) t_OutNetHeartSendThread,"heart_send", 0, CM_TASK_PRIORITY_82, (CM_Thread_Arg_Struct_T*)&s_CFM_HeartCtrl); - CM_RE_ASSERT(CM_TRUE == rtCheck, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_4, TSCP_DARK_ASSERT_16); + CM_ASSERT(CM_TRUE == rtCheck, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_4, TSCP_DARK_ASSERT_16); CM_Sleep(100u);/* 延时等待线程启动 */ } From a8d15629ac18a84709d2b94181535bf1c4fadda0 Mon Sep 17 00:00:00 2001 From: lh <3191213465@qq.com> Date: Wed, 17 Jun 2026 15:56:22 +0800 Subject: [PATCH 13/15] =?UTF-8?q?9.9=E9=A6=96=E7=89=88=E9=A6=96=E8=BD=AE?= =?UTF-8?q?=E5=8F=91=E7=AD=BE=E4=BB=A3=E7=A0=81=EF=BC=8C=E5=BA=94=E7=94=A8?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=B8=8E=E6=95=B0=E6=8D=AE=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitattributes | 1 + .../ci_integrate_config.h | 2 +- .../APP/ciapp/2oo2/2oo2DataTransferManage.c | 46 +- TSCP/src/APP/ciapp/ERROR/ErrorDefine.h | 9 +- .../src/APP/ciapp/IO/DeviceRelayDataProcess.c | 1567 +++++++++--- .../src/APP/ciapp/IO/DeviceRelayDataProcess.h | 8 + TSCP/src/APP/ciapp/IO/InputDataProcess.c | 86 +- TSCP/src/APP/ciapp/IO/OutputDataProcess.c | 28 + .../src/APP/ciapp/Indicator/IndicatorDefine.h | 1 + .../APP/ciapp/Initial/ConfigDataReadManage.c | 38 +- TSCP/src/APP/ciapp/Initial/InitialProcess.c | 15 + .../LightTestButtonDefine.h | 2 +- TSCP/src/APP/ciapp/LogRecord/LogRecord.c | 31 +- .../ciapp/LogicManage/InterlockCommonManage.c | 16 +- .../ciapp/LogicManage/InterlockLogicManage.c | 1429 ++++++++++- .../ciapp/LogicManage/InterlockLogicManage.h | 110 + .../ciapp/LogicProcess/InterlockLogicCheck.c | 84 +- .../LogicProcess/InterlockLogicProcess.c | 398 ++- .../LogicProcess/InterlockLogicProcess.h | 7 + TSCP/src/APP/ciapp/PSD/PSDConfigDataManage.c | 48 + TSCP/src/APP/ciapp/PSD/PSDConfigDataManage.h | 18 + TSCP/src/APP/ciapp/PSD/PSDDataManage.c | 66 +- TSCP/src/APP/ciapp/PSD/PSDDataManage.h | 24 +- TSCP/src/APP/ciapp/PSD/PSDDefine.h | 6 +- .../APP/ciapp/ParsePack/CiInterfaceDefine.h | 47 +- .../APP/ciapp/ParsePack/ParsePackAtsData.c | 675 ++++- .../APP/ciapp/ParsePack/ParsePackAtsData.h | 194 ++ .../src/APP/ciapp/ParsePack/ParsePackCommon.c | 161 +- .../src/APP/ciapp/ParsePack/ParsePackCommon.h | 7 + .../src/APP/ciapp/ParsePack/ParsePackDefine.h | 35 +- .../ciapp/ParsePack/ParsePackGateWayData.c | 2176 +++++++++++------ .../ciapp/ParsePack/ParsePackGateWayData.h | 43 +- .../src/APP/ciapp/ParsePack/ParsePackManage.c | 6 +- .../APP/ciapp/ParsePack/ParsePackVobcData.c | 19 +- .../APP/ciapp/ParsePack/ParsePackVobcData.h | 3 + TSCP/src/APP/ciapp/QueryFiles/dquCIInit.c | 276 ++- TSCP/src/APP/ciapp/QueryFiles/dquCIInit.h | 18 + .../src/APP/ciapp/QueryFiles/dquCIInterFace.c | 64 + .../src/APP/ciapp/QueryFiles/dquCIInterFace.h | 7 + .../ciapp/QueryFiles/dquCIJDQStruFrmChar.c | 187 +- .../ciapp/QueryFiles/dquCIJDQStruFrmChar.h | 14 + .../APP/ciapp/QueryFiles/dquCIJDQStruInit.c | 192 +- .../APP/ciapp/QueryFiles/dquCIJDQStruInit.h | 16 + TSCP/src/APP/ciapp/QueryFiles/dqucijdqstru.h | 37 +- TSCP/src/APP/ciapp/Relay/RelayDefine.h | 5 + .../ReverseCut/ReverseCutConfigDataManage.c | 174 +- .../ReverseCut/ReverseCutConfigDataManage.h | 73 +- .../ciapp/ReverseCut/ReverseCutDataManage.c | 73 + .../ciapp/ReverseCut/ReverseCutDataManage.h | 37 + .../APP/ciapp/ReverseCut/ReverseCutDefine.h | 8 + .../APP/ciapp/Route/RouteConfigDataManage.c | 72 + .../APP/ciapp/Route/RouteConfigDataManage.h | 18 + TSCP/src/APP/ciapp/Route/RouteDataManage.c | 50 + TSCP/src/APP/ciapp/Route/RouteDataManage.h | 16 + TSCP/src/APP/ciapp/Route/RouteDefine.h | 6 + .../ciapp/Section/LogicSectionDataManage.c | 2 +- TSCP/src/APP/ciapp/Section/SectionDefine.h | 2 +- .../APP/ciapp/Signal/SignalConfigDataManage.c | 91 +- .../APP/ciapp/Signal/SignalConfigDataManage.h | 33 + TSCP/src/APP/ciapp/Signal/SignalDataManage.c | 67 + TSCP/src/APP/ciapp/Signal/SignalDataManage.h | 8 + .../APP/ciapp/Switch/SwitchConfigDataManage.c | 221 +- .../APP/ciapp/Switch/SwitchConfigDataManage.h | 88 +- TSCP/src/APP/ciapp/Switch/SwitchDataManage.c | 301 ++- TSCP/src/APP/ciapp/Switch/SwitchDataManage.h | 138 +- TSCP/src/APP/ciapp/Switch/SwitchDefine.h | 21 +- .../src/APP/ciapp/System/SystemConfigDefine.h | 10 +- .../APP/ciapp/System/SystemParameterManage.c | 45 +- .../APP/ciapp/System/SystemParameterManage.h | 10 + TSCP/src/APP/ciapp/Train/TrainDataManage.c | 223 +- TSCP/src/APP/ciapp/Train/TrainDataManage.h | 55 +- .../dqu_emap_common/dquStructInit.c | 22 +- .../dqu_common/dqu_emap_common/dsuStruct.h | 2 +- .../fsfb/common_fsfb/FsfbRecordDelare.h | 164 +- .../common_sfp_nr_config/sfpConfig.h | 1 + ...I_OC+V22.0ATS+V1.0TMC+V13.0AIM及AID-20260612(1).zip | 3 + 数据/电子地图数据V2.3-CBTC-23.zip | 3 - 数据/电子地图数据V2.3-CBTC-26 -调试数据-2.rar | 3 + 数据/电子地图数据V2.3-车车-13.zip | 3 - 数据/电子地图数据V2.3-车车-16 -调试数据-2.rar | 3 + 80 files changed, 8383 insertions(+), 1885 deletions(-) create mode 100644 数据/标准站车车V8.2+公共V31.8+V56.0IVOC+V53.0RCI_CI+V38.0RCI_OC+V22.0ATS+V1.0TMC+V13.0AIM及AID-20260612(1).zip delete mode 100644 数据/电子地图数据V2.3-CBTC-23.zip create mode 100644 数据/电子地图数据V2.3-CBTC-26 -调试数据-2.rar delete mode 100644 数据/电子地图数据V2.3-车车-13.zip create mode 100644 数据/电子地图数据V2.3-车车-16 -调试数据-2.rar diff --git a/.gitattributes b/.gitattributes index 486a232..64500de 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1,2 @@ *.zip filter=lfs diff=lfs merge=lfs -text +*.rar filter=lfs diff=lfs merge=lfs -text diff --git a/TSCP/src/APP/PU13_integration_config/ci_integrate_config.h b/TSCP/src/APP/PU13_integration_config/ci_integrate_config.h index a17f79b..0837b44 100644 --- a/TSCP/src/APP/PU13_integration_config/ci_integrate_config.h +++ b/TSCP/src/APP/PU13_integration_config/ci_integrate_config.h @@ -30,6 +30,6 @@ #define VER_INTE_PROJECT 220 /*Ŀ*/ #define VER_INTE_PRODUCT 40 /*Ʒ*/ #define VER_INTE_EXE 1 /*ִб*/ -#define VER_INTE_TIME 127 /*ɴ*/ +#define VER_INTE_TIME 131 /*ɴ*/ #endif/*endif of #define _CI_INTEGRATE_CONFIG_H*/ \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/2oo2/2oo2DataTransferManage.c b/TSCP/src/APP/ciapp/2oo2/2oo2DataTransferManage.c index 28f01c3..bce22ab 100644 --- a/TSCP/src/APP/ciapp/2oo2/2oo2DataTransferManage.c +++ b/TSCP/src/APP/ciapp/2oo2/2oo2DataTransferManage.c @@ -1629,11 +1629,31 @@ UINT32 GetCiAppData(UINT8 *pCiAppDataPointer) pCiAppDataPointer[curIndex] = gCbtcCrossStructZc[ii].wTrainId; curIndex += 1u; } - + /*ATS/�ֵ�/����һ�����ȷ����Ϣͬ��*/ + /*������������*/ + (void)CommonMemCpy((void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(AtsFollowUpCmdFstStru), (const void *)(&gDansuoCancleMsgFst), (UINT32)sizeof(AtsFollowUpCmdFstStru)); + curIndex = curIndex + (UINT32)sizeof(AtsFollowUpCmdFstStru); + (void)CommonMemCpy((void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(RCIFollowUpReplyStru), (const void *)(&gDansuoCancleReplyFst), (UINT32)sizeof(RCIFollowUpReplyStru)); + curIndex = curIndex + (UINT32)sizeof(RCIFollowUpReplyStru); + /*�����������*/ + (void)CommonMemCpy((void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(AtsFollowUpCmdFstStru), (const void *)(&gSwitchUnflockMsgFst), (UINT32)sizeof(AtsFollowUpCmdFstStru)); + curIndex = curIndex + (UINT32)sizeof(AtsFollowUpCmdFstStru); + (void)CommonMemCpy((void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(RCIFollowUpReplyStru), (const void *)(&gSwitchUnflockReplyFst), (UINT32)sizeof(RCIFollowUpReplyStru)); + curIndex = curIndex + (UINT32)sizeof(RCIFollowUpReplyStru); + /*���ν������*/ + (void)CommonMemCpy((void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(AtsFollowUpCmdFstStru), (const void *)(&gSecUnflockMsgFst), (UINT32)sizeof(AtsFollowUpCmdFstStru)); + curIndex = curIndex + (UINT32)sizeof(AtsFollowUpCmdFstStru); + (void)CommonMemCpy((void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(RCIFollowUpReplyStru), (const void *)(&gSecUnflockReplyFst), (UINT32)sizeof(RCIFollowUpReplyStru)); + curIndex = curIndex + (UINT32)sizeof(RCIFollowUpReplyStru); + /*�źŻ��������*/ + (void)CommonMemCpy((void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(AtsFollowUpCmdFstStru), (const void *)(&gSignalUnflockMsgFst), (UINT32)sizeof(AtsFollowUpCmdFstStru)); + curIndex = curIndex + (UINT32)sizeof(AtsFollowUpCmdFstStru); + (void)CommonMemCpy((void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(RCIFollowUpReplyStru), (const void *)(&gSignalUnflockReplyFst), (UINT32)sizeof(RCIFollowUpReplyStru)); + curIndex = curIndex + (UINT32)sizeof(RCIFollowUpReplyStru); /*����һ��CRC*/ crcLength = curIndex - crcIndex; crcResult = Tioc_CommonCrc32(pCiAppDataPointer + crcIndex, crcLength); - debug_infor_printf((const)"2oo2 RecvCiCmdDataStruCurSum-gDyTestNum CRC:%x, Length:%d\n", crcResult, crcLength); + debug_infor_printf((const)"2oo2 RecvCiCmdDataStruCurSum-FollowUpCmd CRC:%x, Length:%d\n", crcResult, crcLength); } return curIndex; } @@ -2477,7 +2497,27 @@ UINT8 SetCiAppData(const UINT8 *pCiAppDataPointer,const UINT32 len) gCbtcCrossStructZc[ii].wTrainId = pCiAppDataPointer[curIndex]; curIndex += 1u; } - + /*ͬ��һ���������*/ + /*��������*/ + (void)CommonMemCpy((void *)(&gDansuoCancleMsgFst), (UINT32)sizeof(AtsFollowUpCmdFstStru), (const void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(AtsFollowUpCmdFstStru)); + curIndex = curIndex + (UINT32)sizeof(AtsFollowUpCmdFstStru); + (void)CommonMemCpy((void *)(&gDansuoCancleReplyFst), (UINT32)sizeof(RCIFollowUpReplyStru), (const void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(RCIFollowUpReplyStru)); + curIndex = curIndex + (UINT32)sizeof(RCIFollowUpReplyStru); + /*�������*/ + (void)CommonMemCpy((void *)(&gSwitchUnflockMsgFst), (UINT32)sizeof(AtsFollowUpCmdFstStru), (const void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(AtsFollowUpCmdFstStru)); + curIndex = curIndex + (UINT32)sizeof(AtsFollowUpCmdFstStru); + (void)CommonMemCpy((void *)(&gSwitchUnflockReplyFst), (UINT32)sizeof(RCIFollowUpReplyStru), (const void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(RCIFollowUpReplyStru)); + curIndex = curIndex + (UINT32)sizeof(RCIFollowUpReplyStru); + /*���ν��*/ + (void)CommonMemCpy((void *)(&gSecUnflockMsgFst), (UINT32)sizeof(AtsFollowUpCmdFstStru), (const void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(AtsFollowUpCmdFstStru)); + curIndex = curIndex + (UINT32)sizeof(AtsFollowUpCmdFstStru); + (void)CommonMemCpy((void *)(&gSecUnflockReplyFst), (UINT32)sizeof(RCIFollowUpReplyStru), (const void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(RCIFollowUpReplyStru)); + curIndex = curIndex + (UINT32)sizeof(RCIFollowUpReplyStru); + /*�źŻ����*/ + (void)CommonMemCpy((void *)(&gSignalUnflockMsgFst), (UINT32)sizeof(AtsFollowUpCmdFstStru), (const void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(AtsFollowUpCmdFstStru)); + curIndex = curIndex + (UINT32)sizeof(AtsFollowUpCmdFstStru); + (void)CommonMemCpy((void *)(&gSignalUnflockReplyFst), (UINT32)sizeof(RCIFollowUpReplyStru), (const void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(RCIFollowUpReplyStru)); + curIndex = curIndex + (UINT32)sizeof(RCIFollowUpReplyStru); rtn = 1U; } } diff --git a/TSCP/src/APP/ciapp/ERROR/ErrorDefine.h b/TSCP/src/APP/ciapp/ERROR/ErrorDefine.h index a77aafe..894ef75 100644 --- a/TSCP/src/APP/ciapp/ERROR/ErrorDefine.h +++ b/TSCP/src/APP/ciapp/ERROR/ErrorDefine.h @@ -111,6 +111,10 @@ #define EFUNC_OVERLAP_VALIDMASK_CHECK ((UINT8)0x4A) /*OverlapValidMaskCheck 㱣Чλ*/ #define EFUNC_ROUTE_LOCK_DRIVE_SWITCH ((UINT8)0xD2) /*RouteLockDriveSwitch յ*/ #define EFUNC_ROUTE_COUPLINK_SET ((UINT8)0xD7) /*SetCouplinkRouteLogicManage ҽ·߼*/ +#define EFUNC_FOLLOWUP_SWITCH_DANSUO_CANCLE ((UINT8)0xD8) /*FollowUpSwitchUnFlockCheck һε*/ +#define EFUNC_FOLLOWUP_SWITCH_UNFLOCK ((UINT8)0xD9) /*FollowUpSwitchUnFlockCheck һε*/ +#define EFUNC_FOLLOWUP_SEC_UNFLOCK ((UINT8)0xDA) /*FollowUpSecUnFlockCheck һν*/ +#define EFUNC_FOLLOWUP_SIGNAL_UNFLOCK ((UINT8)0xDB) /*FollowUpSwitchUnFlockCheck һźŽ*/ /*߼*/ #define EFUNC_SET_LEAD_ROUTE_CHECK ((UINT8)0x4B) /*·*/ @@ -219,7 +223,8 @@ #define EFUNC_PARSE_LOCAL_RC2CI_DATA ((UINT8)0xD5U) /*ParseRcToLocalCiDataFrame*/ #define EFUNC_PARSE_LOCAL_CI2CI_DATA ((UINT8)0xD6U) /*ParseCiToCiDataFrame*/ #define EFUNC_PARSE_LOCAL_OC2CI_DATA ((UINT8)0xD7U) /*ParseOcToCiDataFrame*/ - +#define EFUNC_CONNECT_ROUTE_RELEASE ((UINT8)0xD8U) /*ConnectRouteReleaseManage*/ +#define EFUNC_PARSE_GATEWAY2CI_DATA ((UINT8)0xD9U) /*ParseGateWayToCiDataProc*/ /*************************************************ֽ******************************************************************************/ /*************************************************ֽ******************************************************************************/ @@ -242,6 +247,7 @@ #define ETYPE_GROUP_AUTO_ROUTE_STATE ((UINT8)0x16) /*Զ·*/ #define ETYPE_ROUTE_APPLY_SWITCH_MOVE ((UINT8)0xA4) /*·*/ #define ETYPE_COUPLINK_ROUTE_IDLE ((UINT8)0xA5) /*ҽ·ޱҳ*/ +#define ETYPE_CONNECT_ROUTE_RELEASE ((UINT8)0xA6) /*߽ӳ·*/ #define ETYPE_COMM_WITH_VOBC ((UINT8)0x11) /*VOBCͨ*/ @@ -254,6 +260,7 @@ #define ETYPE_COMM_WITH_TMC ((UINT8)0x17) /*TMCͨ*/ #define ETYPE_COMM_WITH_RC ((UINT8)0x18U) /*RCͨ*/ #define ETYPE_COMM_WITH_OC ((UINT8)0x19U) /*OCͨ*/ +#define ETYPE_COMM_WITH_GATEWAY ((UINT8)0x1AU) /*ͨ*/ /* źŻͱ (UINT8)0x21-(UINT8)0x3f */ /* 豸 CI_DEVICE_TYPE_SIGNAL */ diff --git a/TSCP/src/APP/ciapp/IO/DeviceRelayDataProcess.c b/TSCP/src/APP/ciapp/IO/DeviceRelayDataProcess.c index 23563d9..6fa4bff 100644 --- a/TSCP/src/APP/ciapp/IO/DeviceRelayDataProcess.c +++ b/TSCP/src/APP/ciapp/IO/DeviceRelayDataProcess.c @@ -22,6 +22,7 @@ #include "AxisAssertManage.h" #include "AxisAssertDataPrepare.h" #include "dquCIInit.h" +#include "ReverseCutConfigDataManage.h" /*źŻ̵ʱʱ()*/ #define SIG_RELAY_DRV_DELAY_TIME ((UINT32)3) @@ -39,6 +40,17 @@ static void IsOccPhyHasOccAc(void); * ֵ */ static void DriveSwitchRelayState(const UINT16 switchId, const UINT8 driveSwitchPos); + +/*ɼغ*/ +static UINT8 SwitchRedunFusionHunXianProc(UINT8 cMainOcPos, const UINT8 *pRedunPos, INOUT UINT8 *pHunXianStt); +static UINT8 CalcRedunSwitchFinalFusionPos(UINT8 cMainOcPos, const UINT8 *pRedunPosForFusion, UINT8 cConflictTag); +static UINT8 GetSwitchRedunFusionPos(UINT16 switchId, UINT8 cMainOcPos, UINT8 *pRedunPos, UINT8 *pHunXianStt); +static UINT8 GetMainOcSwitchColPos(UINT16 switchId); +static UINT8 GetRedunSwitchColPos(UINT16 switchId, UINT8 ocIndex, UINT8 *pHunXianStt, UINT8 *pCombineStt); +static void SwitchRedunFaultProc(UINT16 switchId, UINT8 ocIndex, UINT8 cCombineState); +static void SwitchRedunHunXianProc(UINT16 switchId, UINT8 ocIndex, UINT8 cCurrHunXianState, UINT8 cCombineState); +static UINT8 SwitchRedunCombineProc(UINT8 cDBJ1State, UINT8 cDBJ2State, UINT8 cFBJ1State, UINT8 cFBJ2State); + /* zt ɾش 2022-02-15 */ /******************************źŻؼ̵****************************/ @@ -79,6 +91,8 @@ void OcSwitchDeviceOutput(void) UINT8 mainOcId = 0u;/*OCId*/ UINT8 chLocalCiOCSswitch = 0U; UINT8 chSwitchLastValidDrvPos = 0U; + UINT16 wReverseBoardId = 0U; + UINT8 chReverseState = 0U; chLocalCiOCSswitch = GetLocalCiOCSswitch(); @@ -142,6 +156,26 @@ void OcSwitchDeviceOutput(void) }/*for*/ + /*µ״̬*/ + for (ii = 0u; ii < switchCurSum; ii++) + { + switchId = GetSwitchId(ii); + wReverseBoardId = GetSwitchRelateReverseBoardId(switchId); + if (0U != wReverseBoardId) + { + /*õ*/ + chReverseState = GetReverseBoardState(wReverseBoardId); + if (REVERSE_STATE_NEW_SYSTEM != chReverseState) + { + (void)SetSwitchExpDrvPosition(switchId, SWITCH_DRIVE_POS_INVALID);/*½ϵͳ ,λΪЧӿڴתΪ0x55aaλñ*/ + } + } + else + { + ;/*δõУΪ½ϵͳ*/ + } + } + /*״̬*/ for (ii = 0u; ii < switchCurSum; ii++) { @@ -5271,7 +5305,7 @@ void SwitchRelayToDeviceStateProc(void) switchId = GetSwitchId(ii); /*ȡID*/ - if ((0u != switchId) && (switchId < SWITCH_SUM_MAX)) + if ((0u != switchId) && (SWITCH_SUM_MAX > switchId)) { belongCiId = GetSwitchBelongCiId(switchId); /*ȡID*/ @@ -5286,15 +5320,6 @@ void SwitchRelayToDeviceStateProc(void) ZFbRelayId = GetSwitchZFbRelayId(switchId); /*ȡܷλʾ̵ID*/ DFHRelayId = GetSwitchDFHRelayId(switchId); /*ȡDFH̵ID*/ - if (REVERSE_MODE_SHADOW == chTiocSysMode) - { - /*ӰģʽʹӰģʽ̵*/ - DbRelayId = GetSwitchShadowDbRelayId(switchId); - FbRelayId = GetSwitchShadowFbRelayId(switchId); - ZDbRelayId = DbRelayId; - ZFbRelayId = FbRelayId; - DFHRelayId = 0u; - } /*µλ*/ YcRelayState = GetRelayCollState(YcRelayId); /*ʲټ̵״̬*/ DbRelayState = GetRelayCollState(DbRelayId); /*̵״̬*/ @@ -7125,7 +7150,6 @@ void PsdRelayToDeviceStateProc(void) { ; } - } } @@ -7313,7 +7337,11 @@ UINT8 PsdDeviceToRelayStateProc(void) UINT8 relayFlag = CI_ERROR; UINT8 chKeepCloseType = FUNC_SWITCH_OFF; UINT8 cFuncRet = 0u; - + UINT16 trainZeroSpeedRelayId = 0U; /*гټ̵ID*/ + UINT8 chTrainZeroSpeedState = 0U; /*״̬*/ + UINT32 curCycle = 0U; + UINT16 wReverseBoard = 0U; + UINT8 chReverseState = 0U; vobcInterFlag = GetCiFunctionSwitchConfig(VOBC_INTERFACE_IDENTITY);/*ȡVOBCӿڱʶ*/ @@ -7324,246 +7352,302 @@ UINT8 PsdDeviceToRelayStateProc(void) psdVirtualState = GetPsdVirtualAttribute(psdId); if (PSD_VIRTUAL_ATTR_NO == psdVirtualState) {/*Ųؼ̵*/ - psdEditGroupInfo = GetPsdEditGroupInfoFromPsdData(psdId); - /*鶨ͳһ*/ - if ((LINE_HLHT == vobcInterFlag) || (LINE_FAOHLHT == vobcInterFlag) || (LINE_FAOHLHT_ONESELF == vobcInterFlag) || (LINE_FAOHLHT_ONESELFSECOND == vobcInterFlag)) + wReverseBoard = GetPsdRelateReverseBoardId(psdId); + chReverseState = GetReverseBoardState(wReverseBoard); + if((0U == wReverseBoard)||(REVERSE_STATE_NEW_SYSTEM == chReverseState)) { - /*ͨFAOͨıϢVOBC*/ - } - else if (LINE_FAO == vobcInterFlag) - { - if (PSD_FOUR_EDIT_GROUP_FAO_YF == psdEditGroupInfo)/*෿4*/ + psdEditGroupInfo = GetPsdEditGroupInfoFromPsdData(psdId); + /*鶨ͳһ*/ + if ((LINE_HLHT == vobcInterFlag) || (LINE_FAOHLHT == vobcInterFlag) || (LINE_FAOHLHT_ONESELF == vobcInterFlag) || (LINE_FAOHLHT_ONESELFSECOND == vobcInterFlag)) { - psdEditGroupInfo = PSD_FOUR_EDIT_GROUP; + /*ͨFAOͨıϢVOBC*/ } - else if (PSD_SIX_EDIT_GROUP_FAO_YF == psdEditGroupInfo)/*෿6*/ + else if (LINE_FAO == vobcInterFlag) { - psdEditGroupInfo = PSD_SIX_EDIT_GROUP; + if (PSD_FOUR_EDIT_GROUP_FAO_YF == psdEditGroupInfo)/*෿4*/ + { + psdEditGroupInfo = PSD_FOUR_EDIT_GROUP; + } + else if (PSD_SIX_EDIT_GROUP_FAO_YF == psdEditGroupInfo)/*෿6*/ + { + psdEditGroupInfo = PSD_SIX_EDIT_GROUP; + } + else + { + /*Ϣ*/ + } } else { - /*Ϣ*/ + /*·Ϣdo nothing*/ } - } - else - { - /*·Ϣdo nothing*/ - } - if (PSD_FOUR_EDIT_GROUP == psdEditGroupInfo) - {/*ı*/ - psdKMRelayId = GetFourGroupPsdOpenDrvRelayId(psdId); - } - else if (PSD_SIX_EDIT_GROUP == psdEditGroupInfo) - {/**/ - psdKMRelayId = GetSixGroupPsdOpenDrvRelayId(psdId); - } - else if (PSD_EIGHT_EDIT_GROUP == psdEditGroupInfo) - {/*˱*/ - psdKMRelayId = GetEightGroupPsdOpenDrvRelayId(psdId); - } - else if (PSD_THREE_EDIT_GROUP == psdEditGroupInfo) - { - /**/ - psdKMRelayId = GetThreeGroupPsdOpenDrvRelayId(psdId); - } - else - {/*Ч*/ - psdKMRelayId = 0u; - } - psdGMRelayId = GetPsdCloseDriveRelayId(psdId); - psdDriveState = GetPsdDriveState(psdId); - if (PSD_DRIVE_STATE_CLOSE == psdDriveState)/*Ϊ*/ - { - relayFlag = SetRelayDriveState(psdGMRelayId, RELAY_DRIVE_STATE_UP); - if (CI_ERROR == relayFlag) - {/*ż̵*/ - reVal = CI_ERROR; + if (PSD_FOUR_EDIT_GROUP == psdEditGroupInfo) + {/*ı*/ + psdKMRelayId = GetFourGroupPsdOpenDrvRelayId(psdId); + } + else if (PSD_SIX_EDIT_GROUP == psdEditGroupInfo) + {/**/ + psdKMRelayId = GetSixGroupPsdOpenDrvRelayId(psdId); + } + else if (PSD_EIGHT_EDIT_GROUP == psdEditGroupInfo) + {/*˱*/ + psdKMRelayId = GetEightGroupPsdOpenDrvRelayId(psdId); + } + else if (PSD_THREE_EDIT_GROUP == psdEditGroupInfo) + { + /**/ + psdKMRelayId = GetThreeGroupPsdOpenDrvRelayId(psdId); } else - { - tmpPsdKMRelayId = GetFourGroupPsdOpenDrvRelayId(psdId); - if (tmpPsdKMRelayId > 0u) - { - relayFlag = SetRelayDriveState(tmpPsdKMRelayId, RELAY_DRIVE_STATE_DOWN); - /*пż̵*/ - if (CI_ERROR == relayFlag) - {/*ż̵*/ - reVal = CI_ERROR; - } - - } - tmpPsdKMRelayId = GetSixGroupPsdOpenDrvRelayId(psdId); - if (tmpPsdKMRelayId > 0u) - { - relayFlag = SetRelayDriveState(tmpPsdKMRelayId, RELAY_DRIVE_STATE_DOWN); - /*пż̵*/ - if (CI_ERROR == relayFlag) - {/*ż̵*/ - reVal = CI_ERROR; - } - } - - - tmpPsdKMRelayId = GetEightGroupPsdOpenDrvRelayId(psdId); - if (tmpPsdKMRelayId > 0u) - { - /*пż̵*/ - relayFlag = SetRelayDriveState(tmpPsdKMRelayId, RELAY_DRIVE_STATE_DOWN); - if (CI_ERROR == relayFlag) - {/*ż̵*/ - reVal = CI_ERROR; - } - } - tmpPsdKMRelayId = GetThreeGroupPsdOpenDrvRelayId(psdId); - if (tmpPsdKMRelayId > 0u) - { - /*пż̵*/ - relayFlag = SetRelayDriveState(tmpPsdKMRelayId, RELAY_DRIVE_STATE_DOWN); - if (CI_ERROR == relayFlag) - {/*ż̵*/ - reVal = CI_ERROR; - } - } - + {/*Ч*/ + psdKMRelayId = 0u; } - } - else if (PSD_DRIVE_STATE_OPEN == psdDriveState)/*Ϊ*/ - { - if (0u != psdKMRelayId) - {/*ȡ̵Ч*/ - /*޸ǰʱӦVOBCĿPSDЧ*/ - /*޸ĺ󣺶ʱжǷ״̬仯*/ - relayFlag = SetRelayDriveState(psdGMRelayId, RELAY_DRIVE_STATE_DOWN); + psdGMRelayId = GetPsdCloseDriveRelayId(psdId); + psdDriveState = GetPsdDriveState(psdId); + if (PSD_DRIVE_STATE_CLOSE == psdDriveState)/*Ϊ*/ + { + relayFlag = SetRelayDriveState(psdGMRelayId, RELAY_DRIVE_STATE_UP); if (CI_ERROR == relayFlag) {/*ż̵*/ reVal = CI_ERROR; } else { - relayFlag = SetRelayDriveState(psdKMRelayId, RELAY_DRIVE_STATE_UP); + tmpPsdKMRelayId = GetFourGroupPsdOpenDrvRelayId(psdId); + if (tmpPsdKMRelayId > 0u) + { + relayFlag = SetRelayDriveState(tmpPsdKMRelayId, RELAY_DRIVE_STATE_DOWN); + /*пż̵*/ + if (CI_ERROR == relayFlag) + {/*ż̵*/ + reVal = CI_ERROR; + } + + } + tmpPsdKMRelayId = GetSixGroupPsdOpenDrvRelayId(psdId); + if (tmpPsdKMRelayId > 0u) + { + relayFlag = SetRelayDriveState(tmpPsdKMRelayId, RELAY_DRIVE_STATE_DOWN); + /*пż̵*/ + if (CI_ERROR == relayFlag) + {/*ż̵*/ + reVal = CI_ERROR; + } + } + + + tmpPsdKMRelayId = GetEightGroupPsdOpenDrvRelayId(psdId); + if (tmpPsdKMRelayId > 0u) + { + /*пż̵*/ + relayFlag = SetRelayDriveState(tmpPsdKMRelayId, RELAY_DRIVE_STATE_DOWN); + if (CI_ERROR == relayFlag) + {/*ż̵*/ + reVal = CI_ERROR; + } + } + tmpPsdKMRelayId = GetThreeGroupPsdOpenDrvRelayId(psdId); + if (tmpPsdKMRelayId > 0u) + { + /*пż̵*/ + relayFlag = SetRelayDriveState(tmpPsdKMRelayId, RELAY_DRIVE_STATE_DOWN); + if (CI_ERROR == relayFlag) + {/*ż̵*/ + reVal = CI_ERROR; + } + } + + } + } + else if (PSD_DRIVE_STATE_OPEN == psdDriveState)/*Ϊ*/ + { + if (0u != psdKMRelayId) + {/*ȡ̵Ч*/ + /*޸ǰʱӦVOBCĿPSDЧ*/ + /*޸ĺ󣺶ʱжǷ״̬仯*/ + relayFlag = SetRelayDriveState(psdGMRelayId, RELAY_DRIVE_STATE_DOWN); if (CI_ERROR == relayFlag) - {/*ż̵*/ + {/*ż̵*/ reVal = CI_ERROR; } + else + { + relayFlag = SetRelayDriveState(psdKMRelayId, RELAY_DRIVE_STATE_UP); + if (CI_ERROR == relayFlag) + {/*ż̵*/ + reVal = CI_ERROR; + } + } + + } - - } - } - else if (PSD_DRIVE_STATE_INVALID == psdDriveState) - {/*Ч*/ - chKeepCloseType = GetCiFunctionSwitchConfig(FUNC_PSD_KEEP_CLOSE_TYPE); - if (FUNC_SWITCH_ON == chKeepCloseType) - { - /*ȡPSD򿪹ر״̬*/ - cFuncRet = GetPsdState(psdId); - if (PSD_STATE_OPEN == cFuncRet) + else if (PSD_DRIVE_STATE_INVALID == psdDriveState) + {/*Ч*/ + chKeepCloseType = GetCiFunctionSwitchConfig(FUNC_PSD_KEEP_CLOSE_TYPE); + if (FUNC_SWITCH_ON == chKeepCloseType) { - ctmpPsdGMRelayState = RELAY_DRIVE_STATE_DOWN; - ctmpPsdKMRelayState = RELAY_DRIVE_STATE_UP; + /*ȡPSD򿪹ر״̬*/ + cFuncRet = GetPsdState(psdId); + if (PSD_STATE_OPEN == cFuncRet) + { + ctmpPsdGMRelayState = RELAY_DRIVE_STATE_DOWN; + ctmpPsdKMRelayState = RELAY_DRIVE_STATE_UP; + } + else + { + ctmpPsdGMRelayState = RELAY_DRIVE_STATE_UP ; + ctmpPsdKMRelayState = RELAY_DRIVE_STATE_DOWN; + } + + } + relayFlag = SetRelayDriveState(psdGMRelayId, ctmpPsdGMRelayState); + + if (CI_ERROR == relayFlag) + {/*ż̵*/ + reVal = CI_ERROR; } else { - ctmpPsdGMRelayState = RELAY_DRIVE_STATE_UP ; - ctmpPsdKMRelayState = RELAY_DRIVE_STATE_DOWN; + tmpPsdKMRelayId = GetFourGroupPsdOpenDrvRelayId(psdId); + if (tmpPsdKMRelayId > 0u) + { + /*пż̵*/ + relayFlag = SetRelayDriveState(tmpPsdKMRelayId, ctmpPsdKMRelayState); + if (CI_ERROR == relayFlag) + {/*ż̵*/ + reVal = CI_ERROR; + } + + } + tmpPsdKMRelayId = GetSixGroupPsdOpenDrvRelayId(psdId); + if (tmpPsdKMRelayId > 0u) + { + /*пż̵*/ + relayFlag = SetRelayDriveState(tmpPsdKMRelayId, ctmpPsdKMRelayState); + if (CI_ERROR == relayFlag) + {/*ż̵*/ + reVal = CI_ERROR; + } + } + + + tmpPsdKMRelayId = GetEightGroupPsdOpenDrvRelayId(psdId); + if (tmpPsdKMRelayId > 0u) + { + /*пż̵*/ + relayFlag = SetRelayDriveState(tmpPsdKMRelayId, ctmpPsdKMRelayState); + if (CI_ERROR == relayFlag) + {/*ż̵*/ + reVal = CI_ERROR; + } + } + tmpPsdKMRelayId = GetThreeGroupPsdOpenDrvRelayId(psdId); + if (tmpPsdKMRelayId > 0u) + { + /*пż̵*/ + relayFlag = SetRelayDriveState(tmpPsdKMRelayId, ctmpPsdKMRelayState); + if (CI_ERROR == relayFlag) + {/*ż̵*/ + reVal = CI_ERROR; + } + } } - - } - relayFlag = SetRelayDriveState(psdGMRelayId, ctmpPsdGMRelayState); - - if (CI_ERROR == relayFlag) - {/*ż̵*/ - reVal = CI_ERROR; } else - { - tmpPsdKMRelayId = GetFourGroupPsdOpenDrvRelayId(psdId); - if (tmpPsdKMRelayId > 0u) - { - /*пż̵*/ - relayFlag = SetRelayDriveState(tmpPsdKMRelayId, ctmpPsdKMRelayState); - if (CI_ERROR == relayFlag) - {/*ż̵*/ - reVal = CI_ERROR; - } - - } - tmpPsdKMRelayId = GetSixGroupPsdOpenDrvRelayId(psdId); - if (tmpPsdKMRelayId > 0u) - { - /*пż̵*/ - relayFlag = SetRelayDriveState(tmpPsdKMRelayId, ctmpPsdKMRelayState); - if (CI_ERROR == relayFlag) - {/*ż̵*/ - reVal = CI_ERROR; - } - } - - - tmpPsdKMRelayId = GetEightGroupPsdOpenDrvRelayId(psdId); - if (tmpPsdKMRelayId > 0u) - { - /*пż̵*/ - relayFlag = SetRelayDriveState(tmpPsdKMRelayId, ctmpPsdKMRelayState); - if (CI_ERROR == relayFlag) - {/*ż̵*/ - reVal = CI_ERROR; - } - } - tmpPsdKMRelayId = GetThreeGroupPsdOpenDrvRelayId(psdId); - if (tmpPsdKMRelayId > 0u) - { - /*пż̵*/ - relayFlag = SetRelayDriveState(tmpPsdKMRelayId, ctmpPsdKMRelayState); - if (CI_ERROR == relayFlag) - {/*ż̵*/ - reVal = CI_ERROR; - } - } + {/*Ӧֵֵ*/ + reVal = CI_ERROR; } - } - else - {/*Ӧֵֵ*/ - reVal = CI_ERROR; - } - if ((LINE_FAOHLHT == vobcInterFlag)||(LINE_CC == vobcInterFlag) || (LINE_FAOHLHT_ONESELF == vobcInterFlag) || (LINE_FAOHLHT_ONESELFSECOND == vobcInterFlag)) - {/*ǰֻлͨFAO·м϶̽⹦*/ - /*VOBC϶ֹ̽ͣ϶̽Ӧ̵*/ - startJXTCRelayId = GetPsdDetStartRelayId(psdId); /*ȡ϶̵̽ID*/ - stopJXTCRelayId = GetPsdDetStopRelayId(psdId); /*ȡֹͣ϶̵̽ID*/ - JXCTInterfaceType = GetCiFunctionSwitchConfig(FUNC_JXTC_INTERFACE_MODE);/*ȡӿڷʽ*/ - /*϶̵̽IDЧ*/ - if ((0u != startJXTCRelayId) && (0u != stopJXTCRelayId)) - { - /**/ - if (FUNC_SWITCH_ON == JXCTInterfaceType) + if ((LINE_FAOHLHT == vobcInterFlag)||(LINE_CC == vobcInterFlag) || (LINE_FAOHLHT_ONESELF == vobcInterFlag) || (LINE_FAOHLHT_ONESELFSECOND == vobcInterFlag)) + {/*ǰֻлͨFAO·м϶̽⹦*/ + /*VOBC϶ֹ̽ͣ϶̽Ӧ̵*/ + startJXTCRelayId = GetPsdDetStartRelayId(psdId); /*ȡ϶̵̽ID*/ + stopJXTCRelayId = GetPsdDetStopRelayId(psdId); /*ȡֹͣ϶̵̽ID*/ + JXCTInterfaceType = GetCiFunctionSwitchConfig(FUNC_JXTC_INTERFACE_MODE);/*ȡӿڷʽ*/ + /*϶̵̽IDЧ*/ + if ((0u != startJXTCRelayId) && (0u != stopJXTCRelayId)) { - /*ֹͣ*/ - ProcessJXTCPulseInterfStartDrv(startJXTCRelayId, stopJXTCRelayId, psdId); - ProcessJXTCPulseInterfStopDrv(startJXTCRelayId, stopJXTCRelayId, psdId); - - } - /*ƽģʽ*/ - else - { - /* VobcֹͣȥӦ̵*/ - JXTCStartState = GetStartDetectionState(psdId); - JXTCStopState = GetStopDetectionState(psdId); - if (JXTC_START_DETECTION_YES == JXTCStartState) + /**/ + if (FUNC_SWITCH_ON == JXCTInterfaceType) { - if (0u == GetStartDetectionCycNum(psdId)) - {/*δʱ̵̽*/ - SetStartDetectionCycNum(psdId, Get2oo2CurCycleNum()); - } - relayFlag = SetRelayDriveState(startJXTCRelayId, RELAY_DRIVE_STATE_UP); - if (CI_ERROR == relayFlag) - {/*̵̽*/ - reVal = CI_ERROR; + /*ֹͣ*/ + ProcessJXTCPulseInterfStartDrv(startJXTCRelayId, stopJXTCRelayId, psdId); + ProcessJXTCPulseInterfStopDrv(startJXTCRelayId, stopJXTCRelayId, psdId); + + } + /*ƽģʽ*/ + else + { + /* VobcֹͣȥӦ̵*/ + JXTCStartState = GetStartDetectionState(psdId); + JXTCStopState = GetStopDetectionState(psdId); + if (JXTC_START_DETECTION_YES == JXTCStartState) + { + if (0u == GetStartDetectionCycNum(psdId)) + {/*δʱ̵̽*/ + SetStartDetectionCycNum(psdId, Get2oo2CurCycleNum()); + } + relayFlag = SetRelayDriveState(startJXTCRelayId, RELAY_DRIVE_STATE_UP); + if (CI_ERROR == relayFlag) + {/*̵̽*/ + reVal = CI_ERROR; + } + else + { + relayFlag = SetRelayDriveState(stopJXTCRelayId, RELAY_DRIVE_STATE_DOWN); + if (CI_ERROR == relayFlag) + {/*̵ֹͣ̽*/ + reVal = CI_ERROR; + } + } } else { + SetStartDetectionCycNum(psdId, 0u); /*϶̽⿪ʼʱ*/ + relayFlag = SetRelayDriveState(startJXTCRelayId, RELAY_DRIVE_STATE_DOWN); + if (CI_ERROR == relayFlag) + {/*̵̽*/ + reVal = CI_ERROR; + } + } + + /*ֹͣ϶̵̽IDЧ*/ + if (JXTC_STOP_DETECTION_YES == JXTCStopState) + { /*ֹͣ̽״̬ʱ̵ֹͣ̽*/ + if (0u == GetStopDetectionCycNum(psdId)) + {/*δʱ̵ֹͣ̽*/ + SetStopDetectionCycNum(psdId, Get2oo2CurCycleNum()); + } + else + { + + } + relayFlag = SetRelayDriveState(stopJXTCRelayId, RELAY_DRIVE_STATE_UP); + if (CI_ERROR == relayFlag) + {/*̵ֹͣ̽*/ + reVal = CI_ERROR; + } + else + { + relayFlag = SetRelayDriveState(startJXTCRelayId, RELAY_DRIVE_STATE_DOWN); + if (CI_ERROR == relayFlag) + {/*̵̽*/ + reVal = CI_ERROR; + } + } + } + else + { + if (CI_TIME_OUT == SystemOverTimeCheck(GetStopDetectionCycNum(psdId), GetwJXTCStopDetectTime())) + { + SetStopDetectionCycNum(psdId, 0u); /*϶ֹ̽ͣʱ*/ + } + else + { + /*δʱ䲻*/ + } relayFlag = SetRelayDriveState(stopJXTCRelayId, RELAY_DRIVE_STATE_DOWN); if (CI_ERROR == relayFlag) {/*̵ֹͣ̽*/ @@ -7571,93 +7655,121 @@ UINT8 PsdDeviceToRelayStateProc(void) } } } - else - { - SetStartDetectionCycNum(psdId, 0u); /*϶̽⿪ʼʱ*/ - relayFlag = SetRelayDriveState(startJXTCRelayId, RELAY_DRIVE_STATE_DOWN); + } + + vobcDoorStateRelayId = GetPsdDoorStateRelayId(psdId); /*ȡŹ״̵̬ID*/ + if (0u != vobcDoorStateRelayId) + {/*ȡŹ״̵̬IDЧ*/ + doorState = GetVOBCDoorState(psdId); + if (PSD_DOOR_CLOSEDANDLOCKED_VALID == doorState) + {/*Ź״̬Ϊر*/ + relayFlag = SetRelayDriveState(vobcDoorStateRelayId, RELAY_DRIVE_STATE_UP); if (CI_ERROR == relayFlag) - {/*̵̽*/ + {/*Źż̵*/ reVal = CI_ERROR; } } - - /*ֹͣ϶̵̽IDЧ*/ - if (JXTC_STOP_DETECTION_YES == JXTCStopState) - { /*ֹͣ̽״̬ʱ̵ֹͣ̽*/ - if (0u == GetStopDetectionCycNum(psdId)) - {/*δʱ̵ֹͣ̽*/ - SetStopDetectionCycNum(psdId, Get2oo2CurCycleNum()); - } - else - { - - } - relayFlag = SetRelayDriveState(stopJXTCRelayId, RELAY_DRIVE_STATE_UP); + else if (PSD_DOOR_CLOSEDANDLOCKED_INVALID == doorState) + {/*Ź״̬Ϊǹر*/ + relayFlag = SetRelayDriveState(vobcDoorStateRelayId, RELAY_DRIVE_STATE_DOWN); if (CI_ERROR == relayFlag) - {/*̵ֹͣ̽*/ + {/*ֹͣŹż̵*/ reVal = CI_ERROR; } - else - { - relayFlag = SetRelayDriveState(startJXTCRelayId, RELAY_DRIVE_STATE_DOWN); + } + else + { + /*Ź״̬Ч޲̵*/ + } + } + /*վ̨ͣȵƴ*/ + StationCearPassenagerProcess(psdId); + /*by cgh ɶ--ȷ䷢ťָʾƴ*/ + PsdCleFarePDBFlashProcess(psdId); + /*ɶ132730ٿ/ٹŰťʾƴ*/ + PsdOpenAndCloseBsdProc(psdId); + /*by cgh Ƶʹ*/ + PsdVideoQkDriveStateProc(psdId); + } + else if (LINE_HLHT == vobcInterFlag) + {/*3 ϶̵̽*/ + trainZeroSpeedRelayId = GetPsdDetStartRelayId(psdId); /*ȡгټ̵ID̵̽*/ + stopJXTCRelayId = GetPsdDetStopRelayId(psdId); /*ȡֹͣ϶̵̽ID*/ + JXCTInterfaceType = GetCiFunctionSwitchConfig(FUNC_JXTC_INTERFACE_MODE);/*ȡӿڷʽ*/ + /*϶̵̽IDЧ*/ + if ((0u != trainZeroSpeedRelayId) && (0u != stopJXTCRelayId)) + { + /**/ + if (FUNC_SWITCH_ON == JXCTInterfaceType) + { + /*3 ϶̽ؼ̵ƽʽ*/ + } + /*ƽģʽ*/ + else + { + chTrainZeroSpeedState = GetTrainZeroSpeedState(psdId); + JXTCStopState = GetStopDetectionState(psdId); + if (PSD_TRAIN_ZERO_SPEED_NO == chTrainZeroSpeedState) + {/*г*/ + relayFlag = SetRelayDriveState(trainZeroSpeedRelayId, RELAY_DRIVE_STATE_UP); /*ټ̵*/ if (CI_ERROR == relayFlag) - {/*̵̽*/ + { reVal = CI_ERROR; } + else + { + /**/ + } + } + else + {/*г*/ + relayFlag = SetRelayDriveState(trainZeroSpeedRelayId, RELAY_DRIVE_STATE_DOWN); /*ټ̵*/ + if (CI_ERROR == relayFlag) + { + reVal = CI_ERROR; + } + else + { + /**/ + } + } + + /*ֹͣ϶̵̽IDЧ*/ + if (JXTC_STOP_DETECTION_YES == JXTCStopState) + { /*ֹͣ̽״̬ʱ̵ֹͣ̽*/ + relayFlag = SetRelayDriveState(stopJXTCRelayId, RELAY_DRIVE_STATE_UP); /*̵ֹͣ̽*/ + if (CI_ERROR == relayFlag) + { + reVal = CI_ERROR; + } + else + { + /**/ + } + } + else + { + relayFlag = SetRelayDriveState(stopJXTCRelayId, RELAY_DRIVE_STATE_DOWN); /*̵ֹͣ̽*/ + if (CI_ERROR == relayFlag) + { + reVal = CI_ERROR; + } + else + { + /**/ + } } } - else - { - if (CI_TIME_OUT == SystemOverTimeCheck(GetStopDetectionCycNum(psdId), GetwJXTCStopDetectTime())) - { - SetStopDetectionCycNum(psdId, 0u); /*϶ֹ̽ͣʱ*/ - } - else - { - /*δʱ䲻*/ - } - relayFlag = SetRelayDriveState(stopJXTCRelayId, RELAY_DRIVE_STATE_DOWN); - if (CI_ERROR == relayFlag) - {/*̵ֹͣ̽*/ - reVal = CI_ERROR; - } - } } } - - vobcDoorStateRelayId = GetPsdDoorStateRelayId(psdId); /*ȡŹ״̵̬ID*/ - if (0u != vobcDoorStateRelayId) - {/*ȡŹ״̵̬IDЧ*/ - doorState = GetVOBCDoorState(psdId); - if (PSD_DOOR_CLOSEDANDLOCKED_VALID == doorState) - {/*Ź״̬Ϊر*/ - relayFlag = SetRelayDriveState(vobcDoorStateRelayId, RELAY_DRIVE_STATE_UP); - if (CI_ERROR == relayFlag) - {/*Źż̵*/ - reVal = CI_ERROR; - } - } - else if (PSD_DOOR_CLOSEDANDLOCKED_INVALID == doorState) - {/*Ź״̬Ϊǹر*/ - relayFlag = SetRelayDriveState(vobcDoorStateRelayId, RELAY_DRIVE_STATE_DOWN); - if (CI_ERROR == relayFlag) - {/*ֹͣŹż̵*/ - reVal = CI_ERROR; - } - } - else - { - /*Ź״̬Ч޲̵*/ - } + else + { + /**/ } - /*վ̨ͣȵƴ*/ - StationCearPassenagerProcess(psdId); - /*by cgh ɶ--ȷ䷢ťָʾƴ*/ - PsdCleFarePDBFlashProcess(psdId); - /*ɶ132730ٿ/ٹŰťʾƴ*/ - PsdOpenAndCloseBsdProc(psdId); - /*by cgh Ƶʹ*/ - PsdVideoQkDriveStateProc(psdId); + } + else + { + ;/*еҷϵͳЧм̵Ч*/ } } else @@ -11529,6 +11641,8 @@ void ConnectLineRelayToDevStateProc(void) UINT8 DxrelayColleState = 0u; OcConnetDataCfgStruct* pOcConnetDataCfgStru = NULL; UINT8 chBlocOpenColor = 0U; + UINT16 wFirstDsRealy = 0U; + UINT8 chFirstDsColleState = 0U; /*ȡϢ*/ ocConnetDataDevNum = GetOcConnetDataDevNum(); @@ -11555,67 +11669,85 @@ void ConnectLineRelayToDevStateProc(void) LxrelayId = GetSignalLxRelayId(devId); YxrelayId = GetSignalYxRelayId(devId); DxrelayId = GetSignalDxRelayId(devId); - + wFirstDsRealy = GetSignalFirstDsRelayId(devId); + LxrelayColleState = GetRelayCollState(LxrelayId); YxrelayColleState = GetRelayCollState(YxrelayId); DxrelayColleState = GetRelayCollState(DxrelayId); - - if (RELAY_STATE_UP == LxrelayColleState) + if ((0U < wFirstDsRealy) && (RELAY_SUM_MAX > wFirstDsRealy)) { - /*̵쳣*/ - if ((RELAY_STATE_UP == YxrelayColleState) || (RELAY_STATE_UP == DxrelayColleState)) + chFirstDsColleState = GetRelayCollState(wFirstDsRealy); + } + else + { + chFirstDsColleState = RELAY_STATE_UP; /*δDJ̵ʾɫ*/ + } + + if (RELAY_STATE_UP == chFirstDsColleState) + { + if (RELAY_STATE_UP == LxrelayColleState) { - /*ú*/ - (void)SetSignalCurColor(devId, SIGNAL_SHOWCOLOUR_RED); - } - else - { - /*ú󱸿ɫպ󱸿ʾ*/ - chBlocOpenColor = GetSignalBlockOpenColorValue(devId); - if (0U != chBlocOpenColor) + /*̵쳣*/ + if ((RELAY_STATE_UP == YxrelayColleState) || (RELAY_STATE_UP == DxrelayColleState)) { - (void)SetSignalCurColor(devId, chBlocOpenColor); + /*ú*/ + (void)SetSignalCurColor(devId, SIGNAL_SHOWCOLOUR_RED); } else { - /*ûƵ*/ - (void)SetSignalCurColor(devId, SIGNAL_SHOWCOLOUR_YELLOW); + /*ú󱸿ɫպ󱸿ʾ*/ + chBlocOpenColor = GetSignalBlockOpenColorValue(devId); + if (0U != chBlocOpenColor) + { + (void)SetSignalCurColor(devId, chBlocOpenColor); + } + else + { + /*ûƵ*/ + (void)SetSignalCurColor(devId, SIGNAL_SHOWCOLOUR_YELLOW); + } } } - } - else if (RELAY_STATE_UP == YxrelayColleState) - { - /*̵쳣*/ - if ((RELAY_STATE_UP == LxrelayColleState) || (RELAY_STATE_UP == DxrelayColleState)) + else if (RELAY_STATE_UP == YxrelayColleState) { - /*ú*/ - (void)SetSignalCurColor(devId, SIGNAL_SHOWCOLOUR_RED); + /*̵쳣*/ + if ((RELAY_STATE_UP == LxrelayColleState) || (RELAY_STATE_UP == DxrelayColleState)) + { + /*ú*/ + (void)SetSignalCurColor(devId, SIGNAL_SHOWCOLOUR_RED); + } + else + { + /*úƵ*/ + (void)SetSignalCurColor(devId, SIGNAL_SHOWCOLOUR_REDYELLOW); + } + } + else if (RELAY_STATE_UP == DxrelayColleState) + { + /*̵쳣*/ + if ((RELAY_STATE_UP == LxrelayColleState) || (RELAY_STATE_UP == YxrelayColleState)) + { + /*ú*/ + (void)SetSignalCurColor(devId, SIGNAL_SHOWCOLOUR_RED); + } + else + { + /*ð׵*/ + (void)SetSignalCurColor(devId, SIGNAL_SHOWCOLOUR_WHITE); + } } else - { - /*úƵ*/ - (void)SetSignalCurColor(devId, SIGNAL_SHOWCOLOUR_REDYELLOW); - } - } - else if (RELAY_STATE_UP == DxrelayColleState) - { - /*̵쳣*/ - if ((RELAY_STATE_UP == LxrelayColleState) || (RELAY_STATE_UP == YxrelayColleState)) { /*ú*/ (void)SetSignalCurColor(devId, SIGNAL_SHOWCOLOUR_RED); } - else - { - /*ð׵*/ - (void)SetSignalCurColor(devId, SIGNAL_SHOWCOLOUR_WHITE); - } } else { - /*ú*/ - (void)SetSignalCurColor(devId, SIGNAL_SHOWCOLOUR_RED); + /*ú*/ + (void)SetSignalCurColor(devId, SIGNAL_SHOWCOLOUR_REDBREAK); } + } } } @@ -11825,6 +11957,13 @@ void UpdateConnectDriveRelayOutput(void) UINT8 checkTimeState = CI_TIME_NO; OcConnetDataCfgStruct* pOcConnetDataCfgStru = NULL; UINT8 ciToAtsSendFlag = 0U; + UINT16 wMainRelay = 0U; + UINT16 wAckRelay = 0U; + UINT16 wCMainRelay = 0U; + UINT8 chCheckFlag = 0U; + UINT8 chSigState = 0U; + UINT16 wFirseDsRelay = 0U; + /*ȡϢ*/ ocConnetDataDevNum = GetOcConnetDataDevNum(); @@ -11857,16 +11996,22 @@ void UpdateConnectDriveRelayOutput(void) LxrelayId = GetSignalLxDrvRelayId(devId); YxrelayId = GetSignalYxDrvRelayId(devId); DxrelayId = GetSignalDxDrvRelayId(devId); - + wMainRelay = GetSignalMainDrvRelayId(devId); + wAckRelay = GetSignalAckDrvRelayId(devId); + wCMainRelay = GetSignalCMainDrvRelayId(devId); + wFirseDsRelay = GetSignalFirstDsDrvRelayId(devId); /*źſ*/ if (SIGNAL_OPEN == devState) { if (SIGNAL_SHOWCOLOUR_REDYELLOW == signalColor) { - /*YXJ*/ + /*YXJ/οؼ̵*/ (void)SetRelayDriveState(YxrelayId, RELAY_DRIVE_STATE_UP); (void)SetRelayDriveState(LxrelayId, RELAY_DRIVE_STATE_DOWN); (void)SetRelayDriveState(DxrelayId, RELAY_DRIVE_STATE_DOWN); + (void)SetRelayDriveState(wAckRelay, RELAY_DRIVE_STATE_UP); + (void)SetRelayDriveState(wMainRelay, RELAY_DRIVE_STATE_DOWN); + (void)SetRelayDriveState(wCMainRelay, RELAY_DRIVE_STATE_DOWN); } else if ((SIGNAL_SHOWCOLOUR_WHITE == signalColor) || (SIGNAL_SHOWCOLOUR_RED_WHITE == signalColor)) { @@ -11874,23 +12019,55 @@ void UpdateConnectDriveRelayOutput(void) (void)SetRelayDriveState(DxrelayId, RELAY_DRIVE_STATE_UP); (void)SetRelayDriveState(LxrelayId, RELAY_DRIVE_STATE_DOWN); (void)SetRelayDriveState(YxrelayId, RELAY_DRIVE_STATE_DOWN); + (void)SetRelayDriveState(wMainRelay, RELAY_DRIVE_STATE_DOWN); + (void)SetRelayDriveState(wAckRelay, RELAY_DRIVE_STATE_DOWN); + (void)SetRelayDriveState(wCMainRelay, RELAY_DRIVE_STATE_DOWN); } else { - /*LXJ*/ + /*LXJ/οؼ̵/ؼ̵*/ (void)SetRelayDriveState(LxrelayId, RELAY_DRIVE_STATE_UP); (void)SetRelayDriveState(YxrelayId, RELAY_DRIVE_STATE_DOWN); (void)SetRelayDriveState(DxrelayId, RELAY_DRIVE_STATE_DOWN); + (void)SetRelayDriveState(wMainRelay, RELAY_DRIVE_STATE_UP); + (void)SetRelayDriveState(wAckRelay, RELAY_DRIVE_STATE_UP); + + /*ؼ̵*/ + chCheckFlag = GetCMainRelayDriveState(wCMainRelay,devId); + if (CI_SUCCESS == chCheckFlag) + { + (void)SetRelayDriveState(wCMainRelay, RELAY_DRIVE_STATE_UP); + } + else + { + (void)SetRelayDriveState(wCMainRelay, RELAY_DRIVE_STATE_DOWN); + } } } else { - /*LXJ,YXJ,DXJ*/ + /**/ (void)SetRelayDriveState(LxrelayId, RELAY_DRIVE_STATE_DOWN); (void)SetRelayDriveState(YxrelayId, RELAY_DRIVE_STATE_DOWN); (void)SetRelayDriveState(DxrelayId, RELAY_DRIVE_STATE_DOWN); + (void)SetRelayDriveState(wMainRelay, RELAY_DRIVE_STATE_DOWN); + (void)SetRelayDriveState(wAckRelay, RELAY_DRIVE_STATE_DOWN); + (void)SetRelayDriveState(wCMainRelay, RELAY_DRIVE_STATE_DOWN); } + /* 1DJ ״̬*/ + chSigState = GetSignalCurColor(devId); + + if (SIGNAL_SHOWCOLOUR_REDBREAK == chSigState) + { + (void)SetRelayDriveState(wFirseDsRelay, RELAY_DRIVE_STATE_DOWN); + } + else + { + (void)SetRelayDriveState(wFirseDsRelay, RELAY_DRIVE_STATE_UP); + } + + /*Ƿһ£һ±*/ LxCollerelayId = GetSignalLxRelayId(devId); ProcessCoupleRelayHunXianState(LxrelayId, LxCollerelayId); @@ -15286,10 +15463,24 @@ void SetAllSingleSwitchCurPosition(UINT16 switchCurSum) UINT16 switchId = 0U; /*ID*/ UINT8 belongCiId = 0U; /*ID*/ UINT16 ii = 0U; /*ѭ*/ + UINT8 jj = 0U; /*ѭ*/ UINT8 chSwitchColPos = SWITCH_POSITION_INVALID; /*ǰλ*/ UINT8 chSwitchTolPos = SWITCH_POSITION_INVALID; /*̺λ*/ UINT8 ocId = 0u; UINT8 chLocalCiOCSswitch = 0u; + UINT8 RedunCollCfg = 0u; + UINT8 chMainOcCollPos = SWITCH_POSITION_INVALID; /*ɼת޻ĵλ*/ + UINT8 chRedunOcCollPos[SWITCH_REDUN_COLL_MAX] = { 0u }; /*ɼOCɼԶĵλ*/ + UINT8 chRedunOcHunXianStt[SWITCH_REDUN_COLL_MAX] = { 0u }; /*ɼOCɼԶ״̬*/ + UINT8 chRedunCollCombineStt[SWITCH_REDUN_COLL_MAX] = { 0u }; /*ɼOCɼԶ̵״̬*/ + + for (jj = 0u; jj < SWITCH_REDUN_COLL_MAX; jj++) + { + /*ɼλóʼЧδ*/ + chRedunOcCollPos[jj] = SWITCH_POSITION_INVALID; + chRedunOcHunXianStt[jj] = RELAY_HUNXIAN_STATE_NO; + } + chLocalCiOCSswitch = GetLocalCiOCSswitch(); localCiId = GetSystemParaLocalCiId(); /*ȡID*/ for (ii = 0U; ii < switchCurSum; ii++) @@ -15305,26 +15496,653 @@ void SetAllSingleSwitchCurPosition(UINT16 switchCurSum) if ((belongCiId == localCiId) && (0U != localCiId)) { - /*ͨOCҵɼ״̬*/ - ocId = GetSwitchMainCotrolOCId(switchId); - if ((0u < ocId)|| (OC_S_OFF == chLocalCiOCSswitch)) - {/*ǰػOC-Sعر*/ - chSwitchColPos = GetOcSwitchState(switchId, ocId); - SetSwitchCollPos(switchId, chSwitchColPos); + /*ɼ*/ + RedunCollCfg = GetSwitchRedunCollCfg(switchId); + if (REDUN_COLL_YES == RedunCollCfg) + { + /*߱ɼ*/ + /*ȡת޻IJɼλ*/ + chMainOcCollPos = GetMainOcSwitchColPos(switchId); + /*¼*/ + SetSwitchMainCollPos(switchId, chMainOcCollPos); + /*ȡOCɼԶӵλ*/ + for (jj = 0u; jj < SWITCH_REDUN_COLL_MAX; jj++) + { + chRedunOcCollPos[jj] = GetRedunSwitchColPos(switchId, jj, &chRedunOcHunXianStt[jj], &chRedunCollCombineStt[jj]); + } + + /*ɼںϴ*/ + chSwitchColPos = GetSwitchRedunFusionPos(switchId, chMainOcCollPos, chRedunOcCollPos, chRedunOcHunXianStt); + + /*ɼϺͻߴ*/ + for (jj = 0u; jj < SWITCH_REDUN_COLL_MAX; jj++) + { + SwitchRedunFaultProc(switchId, jj, chRedunOcCollPos[jj]); + SwitchRedunHunXianProc(switchId, jj, chRedunOcHunXianStt[jj], chRedunCollCombineStt[jj]); + /*¼*/ + SetSwitchRedunCurrHunXianStt(switchId, jj, chRedunOcHunXianStt[jj]); + } + + /*õɼλ*/ + SetSwitchCollPos(switchId, chSwitchColPos); + /*յ̣õλ*/ chSwitchTolPos = GetSwitchCollToleratePos(switchId); - SetSingleSwitchCurPosition(switchId, chSwitchTolPos);/*õλ*/ + SetSingleSwitchCurPosition(switchId, chSwitchTolPos); } else - {/*OCSشҵǰ״̬Ŀ*/ - SetSwitchCollPos(switchId, SWITCH_POSITION_SIKAI);/*òɼλΪĿ*/ - SetSingleSwitchCurPosition(switchId, SWITCH_POSITION_SIKAI);/*õλ*/ + { + /*߱ɼֱӴת޻ȡ*/ + /*ͨOCҵɼ״̬*/ + ocId = GetSwitchMainCotrolOCId(switchId); + if ((0u < ocId) || (OC_S_OFF == chLocalCiOCSswitch)) + { + /*ǰػOC-Sعر*/ + chSwitchColPos = GetOcSwitchState(switchId, ocId); + SetSwitchCollPos(switchId, chSwitchColPos); + + chSwitchTolPos = GetSwitchCollToleratePos(switchId); + SetSingleSwitchCurPosition(switchId, chSwitchTolPos);/*õλ*/ + } + else + { + /*OCSشҵǰ״̬Ŀ*/ + SetSwitchCollPos(switchId, SWITCH_POSITION_SIKAI);/*òɼλΪĿ*/ + SetSingleSwitchCurPosition(switchId, SWITCH_POSITION_SIKAI);/*õλ*/ + } } } } } } +/* +* ɼλõǰж +* ˵UINT8 cMainOcPos ת޻λ +* UINT8 *pRedunPos OC/OC-Sɼλ +* UINT8 *pHunXianStt OC/OC-Sɼ״̬ +* ֵ ·ɼǷ񶨷λͻ CI_ERRORгͻ CI_SUCCESS޳ͻ +* עֻ֧SWITCH_REDUN_COLL_MAXΪ2޸ĺֵд +*/ +static UINT8 SwitchRedunFusionHunXianProc(UINT8 cMainOcPos, const UINT8 *pRedunPos, INOUT UINT8 *pHunXianStt) +{ + UINT8 cConflictTag = CI_ERROR; + + if ((NULL == pRedunPos) || (NULL == pHunXianStt)) + { + /*ηǷ*/ + } + else + { + cConflictTag = CI_SUCCESS; + + /*ںϻжϣöһжǰλã*/ + if (((SWITCH_POSITION_DINGWEI == cMainOcPos) && (SWITCH_POSITION_FANWEI == pRedunPos[0])) + || ((SWITCH_POSITION_FANWEI == cMainOcPos) && (SWITCH_POSITION_DINGWEI == pRedunPos[0]))) + { + /*ת޻ɼڶͻɼ*/ + pHunXianStt[0] = RELAY_HUNXIAN_STATE_YES; + } + else + { + /*nothing*/ + } + + if (((SWITCH_POSITION_DINGWEI == cMainOcPos) && (SWITCH_POSITION_FANWEI == pRedunPos[1])) + || ((SWITCH_POSITION_FANWEI == cMainOcPos) && (SWITCH_POSITION_DINGWEI == pRedunPos[1]))) + { + /*ת޻ɼڶͻɼ*/ + pHunXianStt[1] = RELAY_HUNXIAN_STATE_YES; + } + else + { + /*nothing*/ + } + + if (((SWITCH_POSITION_DINGWEI == pRedunPos[0]) && (SWITCH_POSITION_FANWEI == pRedunPos[1])) + || ((SWITCH_POSITION_FANWEI == pRedunPos[0]) && (SWITCH_POSITION_DINGWEI == pRedunPos[1]))) + { + /*¼ɼλͻ־Ч*/ + cConflictTag = CI_ERROR; + if ((SWITCH_POSITION_DINGWEI == cMainOcPos) || (SWITCH_POSITION_FANWEI == cMainOcPos)) + { + /*ת޻ͻIJɼлߣѴ*/ + } + else + { + /*·ɼ֮ڶλͻת޻ޱʾ·ɼ*/ + pHunXianStt[0] = RELAY_HUNXIAN_STATE_YES; + pHunXianStt[1] = RELAY_HUNXIAN_STATE_YES; + } + } + else + { + /*nothing*/ + } + } + + return cConflictTag; +} + +/* +* ɼλں +* ˵UINT8 cMainOcPos ת޻λ +* UINT8 *pRedunPos OC/OC-Sɼλ +* UINT8 *pHunXianStt OC/OC-Sɼ״̬ +* ֵ ںλ +* עֻ֧SWITCH_REDUN_COLL_MAXΪ2޸ĺֵд +*/ +static UINT8 GetSwitchRedunFusionPos(UINT16 switchId, UINT8 cMainOcPos, INOUT UINT8 *pRedunPos, INOUT UINT8 *pHunXianStt) +{ + UINT8 cFusionPos = SWITCH_POSITION_INVALID; + UINT8 cConflictTag = CI_ERROR; + UINT8 cSwitchLastDrvPos = 0u; + UINT32 dwDrvStartCyc = 0u; + UINT8 i = 0u; + UINT8 cHunXianRecovStt = 0u; + UINT8 RedunPosForFusion[SWITCH_REDUN_COLL_MAX] = { 0u }; + + if ((NULL == pRedunPos) || (NULL == pHunXianStt)) + { + /*ηǷ*/ + } + else + { + /*ɼжϣ⣩*/ + cConflictTag = SwitchRedunFusionHunXianProc(cMainOcPos, pRedunPos, pHunXianStt); + + /*һж*/ + cSwitchLastDrvPos = GetSwitchLastValidDrvPos(switchId); + dwDrvStartCyc = GetSwitchDriveStartCycNum(switchId); + for (i = 0u; i < SWITCH_REDUN_COLL_MAX; i++) + { + if (((SWITCH_POSITION_DINGWEI == pRedunPos[i]) && (SWITCH_DRIVE_POS_FANWEI == cSwitchLastDrvPos)) + || ((SWITCH_POSITION_FANWEI == pRedunPos[i]) && (SWITCH_DRIVE_POS_DINGWEI == cSwitchLastDrvPos))) + { + /*һ*/ + if (0u < dwDrvStartCyc) + { + /*ƶ*/ + pRedunPos[i] = SWITCH_POSITION_MOVE; + } + else + { + /*Ŀ*/ + pRedunPos[i] = SWITCH_POSITION_SIKAI; + } + } + else + { + /*δһ*/ + } + } + + /*ߵĵĿںϣþֲΪ˱߻ָڣ޷ɼںգ౨һڲɼϱ*/ + for (i = 0u; i < SWITCH_REDUN_COLL_MAX; i++) + { + cHunXianRecovStt = GetSwitchRedunHunXianRecovStt(switchId, i); + if (REDUN_HX_RECOV_ALL != cHunXianRecovStt) + { + RedunPosForFusion[i] = SWITCH_POSITION_SIKAI; + } + else + { + RedunPosForFusion[i] = pRedunPos[i]; + } + /*¼λ*/ + SetSwitchRedunCollPos(switchId, i, RedunPosForFusion[i]); + } + + /*ںϵλ*/ + cFusionPos = CalcRedunSwitchFinalFusionPos(cMainOcPos, RedunPosForFusion, cConflictTag); + } + + return cFusionPos; +} + +/* +* ɼںϵλ +* ˵UINT8 cMainOcPos ת޻λ +* UINT8 *pRedunPosForFusion OC/OC-Sɼλ +* UINT8 cConflictTag ·ɼǷ񶨷λͻ CI_ERRORгͻ CI_SUCCESS޳ͻ +* ֵ ںϵλ +* עֻ֧SWITCH_REDUN_COLL_MAXΪ2޸ĺֵд +*/ +static UINT8 CalcRedunSwitchFinalFusionPos(UINT8 cMainOcPos, const UINT8 *pRedunPosForFusion, UINT8 cConflictTag) +{ + UINT8 cFusionPos = SWITCH_POSITION_INVALID; /*ںϵλ*/ + + if (NULL == pRedunPosForFusion) + { + /*ηǷ*/ + } + else + { + if ((SWITCH_POSITION_DINGWEI == cMainOcPos) + || (SWITCH_POSITION_FANWEI == cMainOcPos) + || (SWITCH_POSITION_MOVE == cMainOcPos)) + { + /*ת޻λЧںλʹת޻λ*/ + cFusionPos = cMainOcPos; + } + else + { + /*ǷڳͻȸֵΪĿ*/ + cFusionPos = SWITCH_POSITION_SIKAI; + if (CI_SUCCESS == cConflictTag) + { + /*޳ͻһɼЧλüλ*/ + if ((SWITCH_POSITION_DINGWEI == pRedunPosForFusion[0]) || (SWITCH_POSITION_DINGWEI == pRedunPosForFusion[1])) + { + cFusionPos = SWITCH_POSITION_DINGWEI; + } + else if ((SWITCH_POSITION_FANWEI == pRedunPosForFusion[0]) || (SWITCH_POSITION_FANWEI == pRedunPosForFusion[1])) + { + cFusionPos = SWITCH_POSITION_FANWEI; + } + else if ((SWITCH_POSITION_MOVE == pRedunPosForFusion[0]) || (SWITCH_POSITION_MOVE == pRedunPosForFusion[1])) + { + cFusionPos = SWITCH_POSITION_MOVE; + } + else + { + /*Ŀ*/ + } + } + else + { + /*гͻĿ*/ + } + } + } + + return cFusionPos; +} + +/* +* ת޻ȡλ +* ˵ UINT16 switchId ID +* ֵ λ +*/ +static UINT8 GetMainOcSwitchColPos(UINT16 switchId) +{ + UINT8 ocId = 0u; + UINT8 chLocalCiOCSswitch = 0u; + UINT8 chSwitchColPos = SWITCH_POSITION_INVALID; /*ǰλ*/ + + chLocalCiOCSswitch = GetLocalCiOCSswitch(); + ocId = GetSwitchMainCotrolOCId(switchId); + if ((0u < ocId) || (OC_S_OFF == chLocalCiOCSswitch)) + { + /*ǰػOC-Sعر*/ + chSwitchColPos = GetOcSwitchState(switchId, ocId); + } + else + { + /*OCSشҵǰ״̬Ŀ*/ + chSwitchColPos = SWITCH_POSITION_SIKAI; + } + + return chSwitchColPos; +} + +/* +* ɼȡλ +* ˵UINT16 switchId ID +* UINT8 ocIndex ± +* UINT8 *pHunXianStt ״̬ +* ֵ λ +*/ +static UINT8 GetRedunSwitchColPos(UINT16 switchId, UINT8 ocIndex, UINT8 *pHunXianStt, UINT8 *pCombineStt) +{ + UINT8 chSwitchColPos = SWITCH_POSITION_INVALID; /*ǰλ*/ + UINT16 wDBJ1RelayId = 0u; /*DBJ1̵ID*/ + UINT16 wDBJ2RelayId = 0u; /*DBJ2̵ID*/ + UINT16 wFBJ1RelayId = 0u; /*FBJ1̵ID*/ + UINT16 wFBJ2RelayId = 0u; /*FBJ2̵ID*/ + UINT8 cDBJ1CollState = 0u; /*DBJ1̵״̬*/ + UINT8 cDBJ2CollState = 0u; /*DBJ2̵״̬*/ + UINT8 cFBJ1CollState = 0u; /*FBJ1̵״̬*/ + UINT8 cFBJ2CollState = 0u; /*FBJ2̵״̬*/ + UINT8 cCombineCollState = 0u; /*DBJ1/2/FBJ1/2״̬*/ + UINT32 dwSwitchDrvStartCyc = 0u; /*ʼ*/ + UINT8 cHunXianState = RELAY_HUNXIAN_STATE_NO; /*״̬*/ + + /*ȡɼ̵ID״̬*/ + wDBJ1RelayId = GetSwitchRedunDBJ1RelayId(switchId, ocIndex); + wDBJ2RelayId = GetSwitchRedunDBJ2RelayId(switchId, ocIndex); + wFBJ1RelayId = GetSwitchRedunFBJ1RelayId(switchId, ocIndex); + wFBJ2RelayId = GetSwitchRedunFBJ2RelayId(switchId, ocIndex); + cDBJ1CollState = GetRelayCollState(wDBJ1RelayId); + cDBJ2CollState = GetRelayCollState(wDBJ2RelayId); + cFBJ1CollState = GetRelayCollState(wFBJ1RelayId); + cFBJ2CollState = GetRelayCollState(wFBJ2RelayId); + cCombineCollState = SwitchRedunCombineProc(cDBJ1CollState, cDBJ2CollState, cFBJ1CollState, cFBJ2CollState); + dwSwitchDrvStartCyc = GetSwitchDriveStartCycNum(switchId); + /*¼ɼ״̬*/ + SetSwitchRedunCombineStt(switchId, ocIndex, cCombineCollState); + + switch (cCombineCollState) + { + case 0b00000011u: + /*λߡһں洦*/ + chSwitchColPos = SWITCH_POSITION_FANWEI; + break; + + case 0b00001010u: + /*ʱƶ*/ + if (0u < dwSwitchDrvStartCyc) + { + chSwitchColPos = SWITCH_POSITION_MOVE; + } + else + { + chSwitchColPos = SWITCH_POSITION_SIKAI; + } + break; + + case 0b00001100u: + /*λߡһں洦*/ + chSwitchColPos = SWITCH_POSITION_DINGWEI; + break; + + case 0b00000000u: + case 0b00000010u: + case 0b00001000u: + /**/ + chSwitchColPos = SWITCH_POSITION_SIKAI; + break; + + case 0b00000001u: + case 0b00000100u: + /*תлߣй*/ + chSwitchColPos = SWITCH_POSITION_SIKAI; + if (0u < dwSwitchDrvStartCyc) + { + cHunXianState = RELAY_HUNXIAN_STATE_YES; + } + else + { + /*nothing*/ + } + break; + + /*case 0b00000101u: + case 0b00000110u: + case 0b00000111u: + case 0b00001001u: + case 0b00001011u: + case 0b00001101u: + case 0b00001110u: + case 0b00001111u:*/ + default: + /**/ + chSwitchColPos = SWITCH_POSITION_SIKAI; + cHunXianState = RELAY_HUNXIAN_STATE_YES; + break; + } + + if ((NULL == pHunXianStt) || (NULL == pCombineStt)) + { + /*쳣*/ + } + else + { + /*ֵ*/ + *pHunXianStt = cHunXianState; + *pCombineStt = cCombineCollState; + } + + return chSwitchColPos; +} + +/* +* ɼϴ +* ˵UINT16 switchId ID +* UINT8 ocIndex ± +* UINT8 cCombineState ɼ״̬ +* ֵ +*/ +static void SwitchRedunFaultProc(UINT16 switchId, UINT8 ocIndex, UINT8 cCombineState) +{ + UINT32 dwRedunFaultStCyc = 0u; /*ɼʼں*/ + UINT32 dwCurrCycleNum = 0u; /*ǰں*/ + + dwRedunFaultStCyc = GetSwitchRedunFaultStCyc(switchId, ocIndex); + if (0u < dwRedunFaultStCyc) + { + /*֮ǰѾɼ*/ + if ((SWITCH_POSITION_DINGWEI == cCombineState) + || (SWITCH_POSITION_FANWEI == cCombineState) + || (SWITCH_POSITION_MOVE == cCombineState)) + { + /*ϻָں*/ + SetSwitchRedunFaultStCyc(switchId, ocIndex, 0u); + } + else + { + /*άֹϼ¼*/ + } + } + else + { + /*֮ǰδɼ*/ + if ((SWITCH_POSITION_DINGWEI == cCombineState) + || (SWITCH_POSITION_FANWEI == cCombineState) + || (SWITCH_POSITION_MOVE == cCombineState)) + { + /*δ*/ + } + else + { + /*ϣ¼ں*/ + dwCurrCycleNum = Get2oo2CurCycleNum(); + SetSwitchRedunFaultStCyc(switchId, ocIndex, dwCurrCycleNum); + } + } +} + +/* +* ɼߴ +* ˵UINT16 switchId ID +* UINT8 ocIndex ± +* UINT8 cCurrHunXianState ڻ״̬ +* UINT8 cCombineState ɼ״̬ +* ֵ +*/ +static void SwitchRedunHunXianProc(UINT16 switchId, UINT8 ocIndex, UINT8 cCurrHunXianState, UINT8 cCombineState) +{ + UINT32 dwJudgHunXianCycleNum = 0u; /*жϻʼں*/ + UINT32 dwRealHunXianCycleNum = 0u; /*ʵʼں*/ + UINT32 dwCurrCycleNum = 0u; /*ǰں*/ + UINT32 dwRedunCollHunXianCycCfg = 0u; /*ɼʱ*/ + UINT8 cTimeCount = 0u; /*ʱж*/ + UINT8 cLastHunXianRecovStt = 0u; /*֮ǰ״̬*/ + UINT8 cHunXianRecovStt = 0u; /*ߣָ״̬*/ + UINT32 dwSwitchDrvStartCyc = 0u; /*ʼں*/ + + dwCurrCycleNum = Get2oo2CurCycleNum(); + dwRedunCollHunXianCycCfg = GetSwitchRedunCollHunXianCycCfg(); + dwSwitchDrvStartCyc = GetSwitchDriveStartCycNum(switchId); + cLastHunXianRecovStt = GetSwitchRedunHunXianRecovStt(switchId, ocIndex); + + /*жϻж*/ + if (RELAY_HUNXIAN_STATE_YES == cCurrHunXianState) + { + /*ǰڻ*/ + dwJudgHunXianCycleNum = GetSwitchRedunJudgHunXianStCyc(switchId, ocIndex); + if (0u == dwJudgHunXianCycleNum) + { + /*ڻ֮ǰδߣ¼ʼں*/ + SetSwitchRedunJudgHunXianStCyc(switchId, ocIndex, dwCurrCycleNum); + } + else + { + /*nothing*/ + } + + if (0u == dwSwitchDrvStartCyc) + { + /*ûֱл*/ + SetSwitchRedunHunXianRecovStt(switchId, ocIndex, 0u); + } + else + { + /*ʱл*/ + cTimeCount = SystemOverTimeCheck(dwJudgHunXianCycleNum, dwRedunCollHunXianCycCfg); + if (CI_TIME_OUT == cTimeCount) + { + SetSwitchRedunHunXianRecovStt(switchId, ocIndex, 0u); + } + else + { + /*nothing*/ + } + } + } + + /*ʵж*/ + dwRealHunXianCycleNum = GetSwitchRedunRealHunXianStCyc(switchId, ocIndex); + if ((RELAY_HUNXIAN_STATE_YES == cCurrHunXianState) && (0u == dwRealHunXianCycleNum)) + { + /*ڻ֮ǰδߣ¼ʼں*/ + SetSwitchRedunRealHunXianStCyc(switchId, ocIndex, dwCurrCycleNum); + } + else if (RELAY_HUNXIAN_STATE_NO == cCurrHunXianState) + { + /*δߣջʼں*/ + SetSwitchRedunRealHunXianStCyc(switchId, ocIndex, 0u); + } + else + { + /*nothing*/ + } + + /*жϻ״̬ʱ + ֮ǰûߣʱڻ߻ָֻںţ + ڲɼ110000111010δʱ䷢ʵ*/ + /**/ + if ((RELAY_HUNXIAN_STATE_NO == cCurrHunXianState) && (0u < dwSwitchDrvStartCyc) && (REDUN_HX_RECOV_ALL == cLastHunXianRecovStt)) + { + dwJudgHunXianCycleNum = GetSwitchRedunJudgHunXianStCyc(switchId, ocIndex); + cTimeCount = SystemOverTimeCheck(dwJudgHunXianCycleNum, dwRedunCollHunXianCycCfg); + if (CI_TIME_OUT == cTimeCount) + { + /*Ѿʱ䣬߻ûֱָӻָ*/ + } + else + { + /*ûʱ䣬ջں*/ + SetSwitchRedunJudgHunXianStCyc(switchId, ocIndex, 0u); + } + } + else + { + /*nothing*/ + } + + /**/ + cHunXianRecovStt = GetSwitchRedunHunXianRecovStt(switchId, ocIndex); + if (REDUN_HX_RECOV_ALL == cHunXianRecovStt) + { + /*δжϻ*/ + } + else + { + /*жϻЧǷʵ߳ʱ*/ + dwRealHunXianCycleNum = GetSwitchRedunRealHunXianStCyc(switchId, ocIndex); + cTimeCount = SystemOverTimeCheck(dwRealHunXianCycleNum, dwRedunCollHunXianCycCfg); + if (CI_TIME_OUT == cTimeCount) + { + /*ʵ߳ʱջ߻ָ״̬*/ + SetSwitchRedunHunXianRecovStt(switchId, ocIndex, 0u); + } + else if (0b00001100u == cCombineState) + { + /*ɼλ1100*/ + SetSwitchRedunHunXianRecovStt(switchId, ocIndex, REDUN_HX_RECOV_1100); + } + else if (0b00001010u == cCombineState) + { + /*ɼƶУ1010*/ + SetSwitchRedunHunXianRecovStt(switchId, ocIndex, REDUN_HX_RECOV_1010); + } + else if (0b00000011u == cCombineState) + { + /*ɼλ0011*/ + SetSwitchRedunHunXianRecovStt(switchId, ocIndex, REDUN_HX_RECOV_0011); + } + else + { + /*nothing*/ + } + + /*ȫ߻ָ״̬Ƿ񶼲ɼ*/ + cHunXianRecovStt = GetSwitchRedunHunXianRecovStt(switchId, ocIndex); + if (REDUN_HX_RECOV_ALL == cHunXianRecovStt) + { + /*ɼȫ߻ָ״ָ̬жϻ*/ + SetSwitchRedunJudgHunXianStCyc(switchId, ocIndex, 0u); + } + else + { + /*nothing*/ + } + } +} + +/* +* ɼ̵ϴ +* ˵UINT16 cDBJ1State DBJ1״̬ +* UINT16 cDBJ1State DBJ2״̬ +* UINT16 cDBJ1State FBJ1״̬ +* UINT16 cDBJ1State FBJ2״̬ +* ֵ ̵ϣ0000|DBJ1|DBJ2|FBJ1|FBJ2 +*/ +static UINT8 SwitchRedunCombineProc(UINT8 cDBJ1State, UINT8 cDBJ2State, UINT8 cFBJ1State, UINT8 cFBJ2State) +{ + UINT8 cCombineCollState = 0u; + + /*̵״̬תΪbitλںж*/ + if (RELAY_STATE_UP == cDBJ1State) + { + cCombineCollState |= 0b00001000u; + } + else + { + /*nothing*/ + } + + if (RELAY_STATE_UP == cDBJ2State) + { + cCombineCollState |= 0b00000100u; + } + else + { + /*nothing*/ + } + + if (RELAY_STATE_UP == cFBJ1State) + { + cCombineCollState |= 0b00000010u; + } + else + { + /*nothing*/ + } + + if (RELAY_STATE_UP == cFBJ2State) + { + cCombineCollState |= 0b00000001u; + } + else + { + /*nothing*/ + } + + return cCombineCollState; +} + /* * еת޻λ * ˵ UINT16 switchCurSum @@ -16429,6 +17247,7 @@ UINT8 GetSwitchCollToleratePos(const UINT16 switchId) UINT8 switchCurPosition = 0u; UINT8 faultFlag = GetSwitchFaultState(switchId); /*ȡǷ忨*/ UINT16 switch2ndId = GetDSwitchOtherId(switchId); /*˫*/ + UINT8 cRedunCollCfg = GetSwitchRedunCollCfg(switchId); /*ȡǷɼ*/ curCycNum = Get2oo2CurCycleNum(); chSwitchColPos = GetSwitchCollPos(switchId); @@ -16438,7 +17257,7 @@ UINT8 GetSwitchCollToleratePos(const UINT16 switchId) { if (SWITCH_POSITION_SIKAI == chSwitchColPos) { - if (SWITCH_FAULT_STATE_NO == faultFlag) /*忨޹*/ + if ((SWITCH_FAULT_STATE_NO == faultFlag) || (REDUN_COLL_YES == cRedunCollCfg)) /*忨޹ϣ߱ɼ*/ { chSwitch1CollTolerateState = CheckSwitchCollTolerateState(switchId); chSwitch2CollTolerateState = CheckSwitchCollTolerateState(switch2ndId); @@ -18540,4 +19359,70 @@ void FindSwitchPostionCmdOut(UINT16 switchId) SetSwitchThisOcFindCmdCycNum(switchId, otherOcId, 0u); } +} + +/* +* µй״̬ +* ˵ void +* ֵ +* Create Fan 20260608 +*/ +void ReverseStateUpdateProc(void) +{ + UINT16 ii = 0u; /*α*/ + UINT16 wOpenRelay = 0U;/*ɼ̵*/ + UINT16 wCloseRelay = 0U; /*ղɼ̵*/ + UINT8 chReverseOpenState = 0U;/*ɼ*/ + UINT8 chReverseCloseState = 0U;/*ղɼ*/ + UINT16 wBoardNum = 0U;/*忨*/ + wOpenRelay = GetReverseSwitchOpenRelay(); + wCloseRelay = GetReverseSwitchCloseRelay(); + if ((0U == wOpenRelay) || (0U == wCloseRelay)) + { + /*Ϊδõм̵ ״̬Ϊ*/ + SetReverseSwitchState(REVERSE_STATE_NEW_SYSTEM); + for (ii = 0U; ii < REVERSE_BOARD_SUM_MAX ; ii++) + { + SetReverseBoardState(REVERSE_STATE_NEW_SYSTEM, ii); + } + } + else + { + chReverseOpenState = GetRelayCollState(wOpenRelay); + chReverseCloseState = GetRelayCollState(wCloseRelay); + if ((RELAY_STATE_UP == chReverseOpenState)&&(RELAY_STATE_DOWN == chReverseCloseState)) + { + SetReverseSwitchState(REVERSE_STATE_NEW_SYSTEM); + } + else if ((RELAY_STATE_DOWN == chReverseOpenState) && (RELAY_STATE_UP == chReverseCloseState)) + { + SetReverseSwitchState(REVERSE_STATE_OLD_SYSTEM); + } + else + { + SetReverseSwitchState(REVERSE_STATE_ABNORMAL);/*쳣״̬*/ + } + + /*忨״̬*/ + wBoardNum = GetReverseBoardNum(); + for (ii = 0U; ii < wBoardNum; ii++) + { + wOpenRelay = GetReverseBoardOpenRelay(ii);/*忨ɼ̵*/ + wCloseRelay = GetReverseBoardCloseRelay(ii);/*忨ղɼ̵*/ + chReverseOpenState = GetRelayCollState(wOpenRelay); + chReverseCloseState = GetRelayCollState(wCloseRelay); + if ((RELAY_STATE_UP == chReverseOpenState) && (RELAY_STATE_DOWN == chReverseCloseState)) + { + SetReverseBoardState(REVERSE_STATE_NEW_SYSTEM, ii); + } + else if ((RELAY_STATE_DOWN == chReverseOpenState) && (RELAY_STATE_UP == chReverseCloseState)) + { + SetReverseBoardState(REVERSE_STATE_OLD_SYSTEM, ii); + } + else + { + SetReverseBoardState(REVERSE_STATE_ABNORMAL, ii);/*쳣״̬*/ + } + } + } } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/IO/DeviceRelayDataProcess.h b/TSCP/src/APP/ciapp/IO/DeviceRelayDataProcess.h index b21e27b..a4e0a89 100644 --- a/TSCP/src/APP/ciapp/IO/DeviceRelayDataProcess.h +++ b/TSCP/src/APP/ciapp/IO/DeviceRelayDataProcess.h @@ -1193,6 +1193,14 @@ void SwitchDoubleMainProtect(UINT16 switchId); */ void FindSwitchPostionCmdOut(UINT16 switchId); +/* +* µй״̬ +* ˵ void +* ֵ +* Create Fan 20260608 +*/ +void ReverseStateUpdateProc(void); + #ifdef __cplusplus } diff --git a/TSCP/src/APP/ciapp/IO/InputDataProcess.c b/TSCP/src/APP/ciapp/IO/InputDataProcess.c index 8b7d74d..2cf8e36 100644 --- a/TSCP/src/APP/ciapp/IO/InputDataProcess.c +++ b/TSCP/src/APP/ciapp/IO/InputDataProcess.c @@ -24,6 +24,7 @@ #include "../IO/DeviceRelayDataProcess.h" #include "MSCP_APP_API.h" #include "LightTestButtonDataManage.h" +#include "InterlockLogicManage.h" extern PlatformToCiDataStruct platformToCiDataStru[PLATFORM_TO_CI_SUM_MAX]; /*վ̨CIͨݽṹ*/ extern unsigned long TimeStamp = 0u; @@ -430,12 +431,10 @@ void InputDataProcess(void) /*豸״̬*/ ProcessDeviceLogicState(); - /*LEU*/ ProcessLeuToCiData(); if (RC_WORK_MODE_TIOC == cRcWorkMode) { - /*ϵռ䵽 */ ProcessPhyOCcStateToAxisSection(); @@ -445,8 +444,10 @@ void InputDataProcess(void) /* г */ TrainMainProc(); cost[5] = MSCP_GetTick(); + /*гԴ*/ (void)TrainResRecycle(); + if (FUNC_SWITCH_ON == chSwitch) { /* гռѹμ */ @@ -521,6 +522,9 @@ void InputDataProcess(void) /**/ ProcessPsdData(); + /*ATS/ ֵ / һ֡*/ + AtsFollowUpCmdProcess(); + /*ATS*/ (void)ProcessAtsOrXianDiToCiData(); @@ -2015,6 +2019,22 @@ void ProcessVobcToCiData(void) } else if ((LINE_HLHT == chLineIdentity) || (LINE_FAO == chLineIdentity)) { + /*3гϢ*/ + if (CI_VOBC_TRAIN_ZERO_SPEED_NO == VobcToCiDataStru[ii].chTrainZeroState) + {/*г*/ + SetTrainZeroSpeedState(vobcToCiDataStru[ii].PsdData[jj].PsdId, PSD_TRAIN_ZERO_SPEED_NO); /*г*/ + SetStopDetectionState(vobcToCiDataStru[ii].PsdData[jj].PsdId, JXTC_STOP_DETECTION_NO); /*δֹͣ϶̽*/ + } + else if (CI_VOBC_TRAIN_ZERO_SPEED_YES == VobcToCiDataStru[ii].chTrainZeroState) + {/*г*/ + SetTrainZeroSpeedState(vobcToCiDataStru[ii].PsdData[jj].PsdId, PSD_TRAIN_ZERO_SPEED_YES); /*г*/ + SetStopDetectionState(vobcToCiDataStru[ii].PsdData[jj].PsdId, JXTC_STOP_DETECTION_NO); /*δֹͣ϶̽*/ + } + else + { + /*ûзϢʱ*/ + } + switch (vobcToCiDataStru[ii].PsdData[jj].CmdType) { case VOBCTOCI_COMMAND_TYPE_PSDOPEN: @@ -2050,7 +2070,7 @@ void ProcessVobcToCiData(void) default: /*ѯ*/ break; - } + } } else { @@ -4546,6 +4566,42 @@ UINT8 ProcessAtsOrXianDiToCiData(void) (void)CancelPsdExceptState(CmdDeviceId); } break; + case ATS_CMD_CONNECT_ROUTE_RELEASE_ONE: /*߽ӳ·һ*/ + belongVirCIid = GetRouteBelongVirCiId(CmdDeviceId); + OrderCheckReVal = CheckOrderWhetherDoing(virCiID, belongVirCIid, cmdType, CmdDeviceId); + if (CI_SUCCESS == OrderCheckReVal) + { + checkRetVal = AFFIRM_SUCCESS; + } + else + { + checkRetVal = AFFIRM_FAIL; + } + SetCiSendCmdBackData_OrderBack(commandId, CmdDeviceId, cmdDevType, terminalId, AtsOrXianDiToCiCmdStru[ii].CommandType, RESPONSE_FIRST, checkRetVal, virCiID); + break; + case ATS_CMD_CONNECT_ROUTE_RELEASE_TWO: /*߽ӳ·*/ + checkRetVal = CheckSecondOrderValid(commandId, CmdDeviceId, cmdDevType, terminalId, AtsOrXianDiToCiCmdStru[ii].CommandType, virCiID); + if (CI_SUCCESS == checkRetVal) + { + belongVirCIid = GetRouteBelongVirCiId(CmdDeviceId); + OrderCheckReVal = CheckOrderWhetherDoing(virCiID, belongVirCIid, cmdType, CmdDeviceId); + if (CI_SUCCESS == OrderCheckReVal) + { + checkRetVal = AFFIRM_SUCCESS; + /*߽ӳ·*/ + ConnectRouteReleaseManage(CmdDeviceId); + } + else + { + checkRetVal = AFFIRM_FAIL; + } + } + else + { + checkRetVal = AFFIRM_FAIL; + } + SetCiSendCmdBackData_OrderBack(commandId, CmdDeviceId, cmdDevType, terminalId, AtsOrXianDiToCiCmdStru[ii].CommandType, RESPONSE_SECOND, checkRetVal, virCiID); + break; default: localVirCiType = GetLocalVirCiType(virCiID); if (CI_TYPE_SCX == localVirCiType) @@ -4916,6 +4972,9 @@ void ProcessDeviceLogicState(void) /*豸̵*/ RvrsCutRlyToDvicSttPrc(); } + + /*йĵп/忨ɼ״̬*/ + ReverseStateUpdateProc(); } @@ -6445,9 +6504,14 @@ static void ProcessPsdData(void) SetStartDetectionState(psdId,JXTC_START_DETECTION_NO); SetStopDetectionState(psdId,JXTC_STOP_DETECTION_YES); } + else if(LINE_HLHT == chLineIdentity) + {/*3 HLHT·վ̨޳ֹͣ̽*/ + SetStopDetectionState(psdId, JXTC_STOP_DETECTION_YES); /*ֹͣ϶̽״̬Ϊֹͣ*/ + SetTrainZeroSpeedState(psdId, PSD_TRAIN_ZERO_SPEED_YES); /*ŷ״̬Ϊ*/ + } else { - ; + ;/*޴*/ } } else @@ -6582,7 +6646,7 @@ static void ProcessPsdData(void) } } } -#endif +#endif curPsdDrvState = GetPsdDriveState(psdId); SetPsdPreDriveState(psdId,curPsdDrvState); /*ɱPSD״̬*/ @@ -8356,6 +8420,8 @@ void ClearPsdVobcContext(const UINT16 vobcId) { ; /**/ } + /*3϶̽-CIVOBCͨжϣŷ״̬Ϊ*/ + PsdDataStru[bufIndex].chTrainZeroSpeedState = PSD_TRAIN_ZERO_SPEED_YES; } } @@ -12793,10 +12859,13 @@ void ProcessIvocToRCData(void) { /*MMIʪ죬*/ } + + SetPbtacsTrainTransState(pIvocToRcDataStru[ii].VobcId, TRAIN_COMM_STATE_GOOD); /*PBTACSͨ*/ } else { - + SetPbtacsTrainTransState(pIvocToRcDataStru[ii].VobcId, TRAIN_COMM_STATE_BAD); /*PBTACSͨжϣݲǷֽгͨ״̬*/ + /*PSDɾVOBCϢ*/ ClearPsdVobcContext(pIvocToRcDataStru[ii].VobcId); ProcessIvocLoseCom(pIvocToRcDataStru[ii]); @@ -12845,8 +12914,6 @@ static void ClearPsdData(const UINT16 psdId) UINT8 psdSum = 0u; UINT16 platformPsdId = 0u; UINT8 chRcWorkMode = 0u; - - chRcWorkMode = GetLocalRcWorkMode(); bufIndex = GetPsdConfigBufIndex(psdId); if ((0u != psdId) && (PSD_INVALID_ID != psdId)&&(PSD_SUM_MAX > bufIndex)) @@ -12857,8 +12924,7 @@ static void ClearPsdData(const UINT16 psdId) PsdDataStru[bufIndex].PsdCmd = PSD_DEFAULT_CONTROL_CMD; PsdDataStru[bufIndex].VOBCDoorState = PSD_DOOR_CLOSEDANDLOCKED_INVALID; PsdDataStru[bufIndex].psdEditGroupInfo = 0u;/*Ϣ*/ - - + if (RC_WORK_MODE_TIOC == chRcWorkMode) { SetPsdEditGroupInfoDataCC(psdId, PSD_EDIT_GROUP_DEFAULT); /*RCPSDϢΪĬֵ*/ diff --git a/TSCP/src/APP/ciapp/IO/OutputDataProcess.c b/TSCP/src/APP/ciapp/IO/OutputDataProcess.c index f270d07..d37fbb8 100644 --- a/TSCP/src/APP/ciapp/IO/OutputDataProcess.c +++ b/TSCP/src/APP/ciapp/IO/OutputDataProcess.c @@ -400,6 +400,10 @@ UINT8 GetAtsBackInfoParam(const UINT8 functionId,const UINT8 deviceStateType, co case ETYPE_COUPLINK_ROUTE_IDLE: returnValue = CI_BACK_COUPLINK_ROUTE_IDLE; /*ҽ·ޱҳ*/ break; + case ETYPE_CONNECT_ROUTE_RELEASE: + returnValue = CI_BACK_CONNECT_ROUTE_RELEASE; /*߽ӳ·*/ + break; + /*źŻϷ*/ case ETYPE_SIG_START_OPEN_STATE: @@ -1890,6 +1894,30 @@ void IndicatorStateProc(void) } } + else if (INDICATOR_TYPE_XDC_DCGDJ == devType) + { /*صع*/ + + devRelaySum = GetIndicatorRelaySum(devId); /*ȡؼ̵*/ + devRelayIdBuf = GetIndicatorRelayIdBuf(devId); /*ȡؼ̵ID buf*/ + + if ((0U == devRelaySum) || (NULL == devRelayIdBuf)) + { + SetIndicatorState(devId, INDICATOR_SHOW_YES); /*úƱ*/ + } + else + { + relayCollState = GetRelayCollState(devRelayIdBuf[0]); + if (RELAY_STATE_DOWN == relayCollState) + { /*̵*/ + + SetIndicatorState(devId, INDICATOR_SHOW_NO); /*̵*/ + } + else + { + SetIndicatorState(devId, INDICATOR_SHOW_YES); /*ú*/ + } + } + } else if (INDICATOR_TYPE_PORT_RONGSI == devType) { devRelaySum = GetIndicatorRelaySum(devId); /*ȡؼ̵*/ diff --git a/TSCP/src/APP/ciapp/Indicator/IndicatorDefine.h b/TSCP/src/APP/ciapp/Indicator/IndicatorDefine.h index 4fa2358..30f818f 100644 --- a/TSCP/src/APP/ciapp/Indicator/IndicatorDefine.h +++ b/TSCP/src/APP/ciapp/Indicator/IndicatorDefine.h @@ -67,6 +67,7 @@ #define INDICATOR_TYPE_DOWNWASH_ALLOW_PASS ((UINT8)0x29) /* ģʽϴָͬͨʾ */ #define INDICATOR_TYPE_DOWNWASH_APPLY ((UINT8)0x63) /* ģʽϴָʾ */ #define INDICATOR_TYPE_DOWNWASH_PASS_APPLY ((UINT8)0x64) /* ģʽָͨʾ */ +#define INDICATOR_TYPE_XDC_DCGDJ ((UINT8)0x65) /* ع籨ָʾ */ #define INDICATOR_TYPE_ATS_CONFIRM_RELAY_INTERFACE ((UINT8)0x27) /*̵ӿȷ״ָ̬ʾ*/ diff --git a/TSCP/src/APP/ciapp/Initial/ConfigDataReadManage.c b/TSCP/src/APP/ciapp/Initial/ConfigDataReadManage.c index 71fc38d..6448b8c 100644 --- a/TSCP/src/APP/ciapp/Initial/ConfigDataReadManage.c +++ b/TSCP/src/APP/ciapp/Initial/ConfigDataReadManage.c @@ -531,7 +531,7 @@ UINT8 ReadConfigureData(void) g_ret = ReadReverseCutConfigData(LocalCiId, gstReverseCutCfgData); if (-1 == g_ret) { - rtnVal = 28u;/*ʧ*/ + rtnVal = 28u;/*ʧ-OCݱ30*/ debug_infor_printf((const)"ReadReverseCutConfigData fail."); } else if (0 < g_ret) @@ -810,6 +810,25 @@ UINT8 ReadConfigureData(void) ; /**/ } + + if (0u == rtnVal) + { + g_ret = ReadReverseSwitchConfigData(LocalCiId, &gLocalReverseData); + if (-1 == g_ret) + { + rtnVal = 39u;/*忨ʧ-OCݱ4041*/ + debug_infor_printf((const)"ReadReverseSwitchConfigData fail."); + } + else + { + /*޲*/ + } + } + else + { + ; /**/ + } + if (0u == rtnVal) { /*ϵͳ*/ @@ -2011,6 +2030,23 @@ INT8 OcConnectConfigDataToDevStruct(SignalConfigDataStruct* pSignalCfgData, Phys pSignalCfgData[j].DxRelayId = pConnectCfgData[i].OcConnetRelayDataBuf[k].RelayId; pSignalCfgData[j].DxDrvRelayId = pConnectCfgData[i].OcConnetRelayDataBuf[k].DrvRelayId; } + else if (SIGNAL_DJ_TYPE == pConnectCfgData[i].OcConnetRelayDataBuf[k].RelayType) + { + pSignalCfgData[j].FirDsRelayId = pConnectCfgData[i].OcConnetRelayDataBuf[k].RelayId; + pSignalCfgData[j].wFirstDsDrvRelayId = pConnectCfgData[i].OcConnetRelayDataBuf[k].DrvRelayId; + } + else if (SIGNAL_MAINJ_TYPE == pConnectCfgData[i].OcConnetRelayDataBuf[k].RelayType) + { + pSignalCfgData[j].wMainDrvRelayId = pConnectCfgData[i].OcConnetRelayDataBuf[k].DrvRelayId; + } + else if (SIGNAL_ACKJ_TYPE == pConnectCfgData[i].OcConnetRelayDataBuf[k].RelayType) + { + pSignalCfgData[j].wAckDrvRelayId = pConnectCfgData[i].OcConnetRelayDataBuf[k].DrvRelayId; + } + else if (SINNAL_CMAINJ_TYPE == pConnectCfgData[i].OcConnetRelayDataBuf[k].RelayType) + { + pSignalCfgData[j].wCMainDrvRelayId = pConnectCfgData[i].OcConnetRelayDataBuf[k].DrvRelayId; + } else { ; /**/ diff --git a/TSCP/src/APP/ciapp/Initial/InitialProcess.c b/TSCP/src/APP/ciapp/Initial/InitialProcess.c index 0cba77c..85ef212 100644 --- a/TSCP/src/APP/ciapp/Initial/InitialProcess.c +++ b/TSCP/src/APP/ciapp/Initial/InitialProcess.c @@ -871,6 +871,17 @@ UINT8 InitialSwitchData(void) SwitchDataStru[switchId].belongOCData[jj].FindPostionCmd = NO_FIND_CMD; SwitchDataStru[switchId].belongOCData[jj].OutMainControlCmdCycNum = 0u; } + + for (jj = 0u; jj < SWITCH_REDUN_COLL_MAX; jj++) + { + SwitchDataStru[switchId].RedunCollData[jj].dwRedunJudgHunXianStCyc = 0u; + SwitchDataStru[switchId].RedunCollData[jj].dwRedunRealHunXianStCyc = 0u; + SwitchDataStru[switchId].RedunCollData[jj].cHunXianRecovStt = REDUN_HX_RECOV_ALL; + SwitchDataStru[switchId].RedunCollData[jj].dwRedunFaultStCyc = 0u; + SwitchDataStru[switchId].RedunCollData[jj].cCollPos = SWITCH_POSITION_INVALID; + SwitchDataStru[switchId].RedunCollData[jj].cCombineStt = 0u; + SwitchDataStru[switchId].RedunCollData[jj].cCurrHunxianStt = RELAY_HUNXIAN_STATE_NO; + } } reVal = CI_SUCCESS; return reVal; @@ -1515,6 +1526,8 @@ UINT8 InitialPsdData(void) { PsdDataStru[psdId].ibpButtonState = PSD_RELATED_BUTTON_STATE_DEFAULT; /*IBP̷ť״̬ʼ*/ } + /*ʼ״̬*/ + PsdDataStru[psdId].chTrainZeroSpeedState = PSD_TRAIN_ZERO_SPEED_YES; /**/ } reVal = CI_SUCCESS; return reVal; @@ -1717,6 +1730,8 @@ UINT8 InitialRouteData(void) RouteDataStru[routeId].chCouplinkSuccessFlag = ROUTE_COUPLINK_RESULT_NOT; /*ʼҳɹ־Ϊδյ*/ RouteDataStru[routeId].chCouplinkErrorFlag = ROUTE_COUPLINK_RESULT_NOT; /*ʼʧܱ־Ϊδյ*/ RouteDataStru[routeId].dwRouteIdleCycNum = 0U; /*·ʼں*/ + RouteDataStru[routeId].chRouteConnReleaseFlag = ROUTE_CONNECT_RELEASE_NO; /*·߽־*/ + /*ʼṹԱ*/ RouteDataStruCC[routeId].RouteId = routeId; diff --git a/TSCP/src/APP/ciapp/LightTestButtonManage/LightTestButtonDefine.h b/TSCP/src/APP/ciapp/LightTestButtonManage/LightTestButtonDefine.h index b3fb543..2c73d2d 100644 --- a/TSCP/src/APP/ciapp/LightTestButtonManage/LightTestButtonDefine.h +++ b/TSCP/src/APP/ciapp/LightTestButtonManage/LightTestButtonDefine.h @@ -20,7 +20,7 @@ #define LIGHTTESTBUTTON_LIGHT_MAX_NUM ((UINT8)13U) /* ԵƱʾ֧ */ -#define LIGHTTESTBUTTON_LIGHT_SUPPORT_MAX_NUM ((UINT8)39U) +#define LIGHTTESTBUTTON_LIGHT_SUPPORT_MAX_NUM ((UINT8)208U) /* Եưť */ #define LIGHTTESTBUTTON_BUTTON_MAX_NUM ((UINT16)70U) diff --git a/TSCP/src/APP/ciapp/LogRecord/LogRecord.c b/TSCP/src/APP/ciapp/LogRecord/LogRecord.c index e12c75c..4bd4c45 100644 --- a/TSCP/src/APP/ciapp/LogRecord/LogRecord.c +++ b/TSCP/src/APP/ciapp/LogRecord/LogRecord.c @@ -988,7 +988,27 @@ UINT8 RecordDeviceDataLog(UINT8 Flag) ShortToChar(newSwitchData[deviceId].PLockedAxisSecIdArr[jj], &outString[outStringLength]); outStringLength += 2u; } - + + outString[outStringLength] = newSwitchData[deviceId].cMainOcCollPos; + outStringLength += 1u; + + for (jj = 0u; jj < SWITCH_REDUN_COLL_MAX; jj++) + { + LongToChar(newSwitchData[deviceId].RedunCollData[jj].dwRedunJudgHunXianStCyc, &outString[outStringLength]); + outStringLength += 4u; + LongToChar(newSwitchData[deviceId].RedunCollData[jj].dwRedunRealHunXianStCyc, &outString[outStringLength]); + outStringLength += 4u; + outString[outStringLength] = newSwitchData[deviceId].RedunCollData[jj].cHunXianRecovStt; + outStringLength += 1u; + LongToChar(newSwitchData[deviceId].RedunCollData[jj].dwRedunFaultStCyc, &outString[outStringLength]); + outStringLength += 4u; + outString[outStringLength] = newSwitchData[deviceId].RedunCollData[jj].cCombineStt; + outStringLength += 1u; + outString[outStringLength] = newSwitchData[deviceId].RedunCollData[jj].cCollPos; + outStringLength += 1u; + outString[outStringLength] = newSwitchData[deviceId].RedunCollData[jj].cCurrHunxianStt; + outStringLength += 1u; + } } } else @@ -1207,6 +1227,7 @@ UINT8 RecordDeviceDataLog(UINT8 Flag) outString[outStringLength++] = newRouteData[deviceId].chRoutCouplinkFlag; /*·ұ־*/ outString[outStringLength++] = newRouteData[deviceId].chCouplinkSuccessFlag; /*·ҳɹ*/ outString[outStringLength++] = newRouteData[deviceId].chCouplinkErrorFlag; /*·ʧ*/ + outString[outStringLength++] = newRouteData[deviceId].chRouteConnReleaseFlag; /*·߽־*/ } } else @@ -1707,6 +1728,8 @@ UINT8 RecordDeviceDataLog(UINT8 Flag) outString[outStringLength++] = newPsdData[deviceId].ibpButtonState;/*IBP̷ť״̬*/ LongToChar(newPsdData[deviceId].IBPPressCycNum, &outString[outStringLength]); /*IBP̷ť*/ outStringLength += 4U; + outString[outStringLength] = newPsdData[deviceId].chTrainZeroSpeedState; /*״̬*/ + outStringLength++; } } else @@ -2456,6 +2479,12 @@ UINT8 RecordDeviceDataLog(UINT8 Flag) LongToChar(pNewTrainInfoData[deviceId].dwMinSafeHeadOffset, &outString[outStringLength]);/*ʱСǰlinkƫ*/ outStringLength += 4u; outString[outStringLength++] = pNewTrainInfoData[deviceId].chMinSafeHeadDir;/* ʱСǰ */ + + outString[outStringLength] = pNewTrainInfoData[deviceId].chPbtacsTransState; /*RCPBTACSгͨ״̬0x55-ͨ0xAA-ͨжϣ0xFF-δ֪*/ + outStringLength++; + + LongToChar(pNewTrainInfoData[deviceId].dwPbtacsTransBadCyc, &outString[outStringLength]); /*RCPBTACSгͨж*/ + outStringLength += 4U; } diff --git a/TSCP/src/APP/ciapp/LogicManage/InterlockCommonManage.c b/TSCP/src/APP/ciapp/LogicManage/InterlockCommonManage.c index f44d4c6..cf7004f 100644 --- a/TSCP/src/APP/ciapp/LogicManage/InterlockCommonManage.c +++ b/TSCP/src/APP/ciapp/LogicManage/InterlockCommonManage.c @@ -1875,8 +1875,9 @@ void SetRouteOvlpOtherCiShrFlg(const UINT16 wRouteId, const UINT16 wOverlapId,co void ClearSomeFlagDependRouteState(const UINT16 routeId) { UINT8 routeState = GetRouteState(routeId); - UINT16 startSignalId = 0u; - UINT16 EnginVehicCroCloBelongRoute = 0u; + UINT16 startSignalId = 0U; + UINT16 EnginVehicCroCloBelongRoute = 0U; + UINT8 chZrenjieFlag = 0U; /*̳ѹź·,̳ѹ״̬*/ if ((ROUTE_STATE_YUXIAN_LOCK != routeState) @@ -1925,6 +1926,17 @@ void ClearSomeFlagDependRouteState(const UINT16 routeId) { /**/ } + /*˽־Ҳʱ״̬߽־*/ + chZrenjieFlag = GetRouteZongRenJieFlag(routeId); + if ((ROUTE_ZONGRENJIE_SET_NO == chZrenjieFlag) && (ROUTE_STATE_DELAY_UNLOCK != routeState)) + { + SetRouteConnectReleaseFlag(routeId, ROUTE_CONNECT_RELEASE_NO); /*߽־*/ + } + else + { + /**/ + } + } /* diff --git a/TSCP/src/APP/ciapp/LogicManage/InterlockLogicManage.c b/TSCP/src/APP/ciapp/LogicManage/InterlockLogicManage.c index 76a1b69..77c1032 100644 --- a/TSCP/src/APP/ciapp/LogicManage/InterlockLogicManage.c +++ b/TSCP/src/APP/ciapp/LogicManage/InterlockLogicManage.c @@ -21,6 +21,7 @@ #include "LogicalRouteDataManage.h" #include "../LogicProcess/LogicalRouteLogicCheck.h" #include "../LogicManage/TradInterlockLogicManage.h" +#include "../ParsePack/ParsePackAtsData.h" #include "ParsePackZcData.h" @@ -145,6 +146,7 @@ void InterlockLogicMainProc(void) UINT8 localCiType = GetLocalCiType(); UINT8 cRcWorkMode = GetLocalRcWorkMode(); UINT8 cControlState = GetLocalCiBackUpPattern(); + signed long long cost[20] = {0U}; cost[0] = MSCP_GetTick(); if (SYSTEM_WORK_MODE_MAIN == cControlState) @@ -221,16 +223,30 @@ void InterlockLogicMainProc(void) /*Ծ߼*/ JumpLockManage(); } + else + { + if ((RC_WORK_MODE_TIOC == cRcWorkMode) && (SYSTEM_WORK_MODE_BACKUP == cControlState)) + { + /*źѿŽ·ĹԴ*/ + OpenedRouteShareResPro(); + } + else + { + /**/ + } + } + cost[3] = MSCP_GetTick(); + /*·гͷŽ߼*/ RouteTrainResUnlockManage(); + /*߼Դ*/ LogicSecResManage(); cost[4] = MSCP_GetTick(); debug_infor_printf((const)"\n JKJRelayLogicProcess :%dms RouteLogicManage:%dms LogicSecResManage:%dms JumpLockManage:%dms \n",(cost[1]-cost[0])/1000,(cost[2]-cost[1])/1000,(cost[3]-cost[2])/1000,(cost[4]-cost[3])/1000); - } @@ -4397,17 +4413,18 @@ UINT8 AutoSigRouteQuXiaoProc(const UINT16 routeId) */ void RouteZongRenJieProc(const UINT16 routeId) { - UINT8 routeState = 0u; /*·״̬*/ - UINT16 startSignalId = 0u; + UINT8 routeState = 0U; /*·״̬*/ + UINT16 startSignalId = 0U; UINT8 checkResult = CI_ERROR;/*Ƿгռ*/ - UINT16 firstOccuSecId = 0u;/*·ڷһռõID*/ - UINT8 devState = 0u; - UINT8 trainEnterSta = 0u;/*·гʻ־*/ - UINT8 checkZongRenJieResult = 0u; - UINT8 routeDelayUnlockflag = 0u; - UINT8 checkResultSecAndQXZC = 0u; /*RouteExceptLastSecOccuClrCheck˺ļ*/ - UINT8 cSignalColor = 0u; - UINT8 cSignalOpenState = 0u; + UINT16 firstOccuSecId = 0U;/*·ڷһռõID*/ + UINT8 devState = 0U; + UINT8 trainEnterSta = 0U;/*·гʻ־*/ + UINT8 checkZongRenJieResult = 0U; + UINT8 routeDelayUnlockflag = 0U; + UINT8 checkResultSecAndQXZC = 0U; /*RouteExceptLastSecOccuClrCheck˺ļ*/ + UINT8 cSignalColor = 0U; + UINT8 cSignalOpenState = 0U; + UINT8 chRouteConnectFlag = 0U; /*ȡ·ֶ̬*/ routeState = GetRouteState(routeId); /*ȡ·״̬*/ @@ -4419,143 +4436,145 @@ void RouteZongRenJieProc(const UINT16 routeId) if (SIGNAL_OPEN == cSignalOpenState) { /*źδر*/ - (void)DriveSignalClose(startSignalId); /*źŹر*/ -#if 0 - SetRouteZongRenJieCloseFlag(routeId, ROUTE_ZRJ_CLOSE_FLAG_YES); /*·źŹر˽⵼*/ -#endif - return; } else { /*źѹر*/ (void)SetRouteZongRenJieFlag(routeId, ROUTE_ZONGRENJIE_SET_NO); /*ȡ·˽־*/ -#if 0 - zrjCloseSigFlag = GetRouteZongRenJieCloseFlag(routeId); /*ȡ·˽źű־*/ - SetRouteZongRenJieCloseFlag(routeId, ROUTE_ZRJ_CLOSE_FLAG_NO); /**/ -#endif - } - checkResult = RouteAllSecOccuClearCheck(routeId, &firstOccuSecId, &devState); - trainEnterSta = GetRouteTrainEnterFlag(routeId); - - /*˽·*/ - if ((ROUTE_STATE_XUANPAI == routeState) || (ROUTE_STATE_FIRST_XUANPAI == routeState)) - { - /*·ѡŻѡ*/ - - /*ȡ·ѡ*/ - SetRouteStateManage(routeId, ROUTE_STATE_IDLE); /*-->ý·*/ - - } - else if ((ROUTE_STATE_FIRST_LOCK == routeState) || - (ROUTE_STATE_FIRST_LOCKERR == routeState) || - (ROUTE_STATE_YUXIAN_LOCK == routeState)) - { - /*·||·쳣||·Ԥ*/ - /*˽߼*/ - checkZongRenJieResult = CheckRouteZongRenJieFeasibility(routeId); - /* ȡ·ʱ*/ - routeDelayUnlockflag = GetRouteNeedDelayUnlock(routeId); - if (CI_SUCCESS == checkZongRenJieResult) + /*Ƿ߽ӳ·*/ + chRouteConnectFlag = GetRouteConnectReleaseFlag(routeId); + if (ROUTE_CONNECT_RELEASE_YES == chRouteConnectFlag) { - /*·Ҫʱ*/ - if (ROUTE_NEED_DELAY_UNLOCK == routeDelayUnlockflag) - { - /*·ռ*/ - if (CI_SUCCESS == checkResult) - { - /*-->ý·ʱ*/ - SetRouteStateManage(routeId, ROUTE_STATE_DELAY_UNLOCK); - /*·ռѹʱȫ*/ - SetRouteZongRenJieDelayType(routeId, ROUTE_ZRJ_DELAY_TYPE_IDLE); - } - else - { - /*̹*/ - SetRoutePhySecExpLockToOccupy(routeId); - SetRouteStateManage(routeId, ROUTE_STATE_AUTO_UNLOCKERR); - } - } - else - { - - if (CI_SUCCESS == checkResult) - {/*ռ*/ - SetRouteStateManage(routeId, ROUTE_STATE_IDLE); /*-->ý·*/ - } - else - { - /*̹*/ - SetRoutePhySecExpLockToOccupy(routeId); - - SetRouteStateManage(routeId, ROUTE_STATE_AUTO_UNLOCKERR); - } - } + /*ִ߽ӳ·*/ + ConnectRouteReleaseProc(routeId); } else { - /*·ȡ*/ - } - } - else if (ROUTE_STATE_NEAR_LOCKERR == routeState) - { - /*˽߼*/ - checkZongRenJieResult = CheckRouteZongRenJieFeasibility(routeId); - if (CI_SUCCESS == checkZongRenJieResult) - { - SetRouteStateManage(routeId, ROUTE_STATE_DELAY_UNLOCK); /*-->ý·ʱ*/ + checkResult = RouteAllSecOccuClearCheck(routeId, &firstOccuSecId, &devState); + trainEnterSta = GetRouteTrainEnterFlag(routeId); - if (CI_SUCCESS == checkResult) + /*˽·*/ + if ((ROUTE_STATE_XUANPAI == routeState) || (ROUTE_STATE_FIRST_XUANPAI == routeState)) { - /*·ռѹʱȫ*/ - SetRouteZongRenJieDelayType(routeId, ROUTE_ZRJ_DELAY_TYPE_IDLE); + /*·ѡŻѡ*/ + + /*ȡ·ѡ*/ + SetRouteStateManage(routeId, ROUTE_STATE_IDLE); /*-->ý·*/ + + } + else if ((ROUTE_STATE_FIRST_LOCK == routeState) || + (ROUTE_STATE_FIRST_LOCKERR == routeState) || + (ROUTE_STATE_YUXIAN_LOCK == routeState)) + { + /*·||·쳣||·Ԥ*/ + /*˽߼*/ + checkZongRenJieResult = CheckRouteZongRenJieFeasibility(routeId); + /* ȡ·ʱ*/ + routeDelayUnlockflag = GetRouteNeedDelayUnlock(routeId); + if (CI_SUCCESS == checkZongRenJieResult) + { + /*·Ҫʱ*/ + if (ROUTE_NEED_DELAY_UNLOCK == routeDelayUnlockflag) + { + /*·ռ*/ + if (CI_SUCCESS == checkResult) + { + /*-->ý·ʱ*/ + SetRouteStateManage(routeId, ROUTE_STATE_DELAY_UNLOCK); + /*·ռѹʱȫ*/ + SetRouteZongRenJieDelayType(routeId, ROUTE_ZRJ_DELAY_TYPE_IDLE); + } + else + { + /*̹*/ + SetRoutePhySecExpLockToOccupy(routeId); + SetRouteStateManage(routeId, ROUTE_STATE_AUTO_UNLOCKERR); + } + } + else + { + + if (CI_SUCCESS == checkResult) + {/*ռ*/ + SetRouteStateManage(routeId, ROUTE_STATE_IDLE); /*-->ý·*/ + } + else + { + /*̹*/ + SetRoutePhySecExpLockToOccupy(routeId); + + SetRouteStateManage(routeId, ROUTE_STATE_AUTO_UNLOCKERR); + } + } + } + else + { + /*·ȡ*/ + } + } + else if (ROUTE_STATE_NEAR_LOCKERR == routeState) + { + /*˽߼*/ + checkZongRenJieResult = CheckRouteZongRenJieFeasibility(routeId); + if (CI_SUCCESS == checkZongRenJieResult) + { + SetRouteStateManage(routeId, ROUTE_STATE_DELAY_UNLOCK); /*-->ý·ʱ*/ + + if (CI_SUCCESS == checkResult) + { + /*·ռѹʱȫ*/ + SetRouteZongRenJieDelayType(routeId, ROUTE_ZRJ_DELAY_TYPE_IDLE); + } + else + { + + /*ʱ󲿷̹һռѹ֮ǰα̹*/ + SetRouteZongRenJieDelayType(routeId, ROUTE_ZRJ_DELAY_TYPE_EXP_TO_OCCUPY); + } + } + else + { + /*·ȡ*/ + } + } + else if ((ROUTE_STATE_LEAD_LOCK == routeState) || (ROUTE_STATE_LEAD_LOCKERR == routeState)) + { /*||쳣*/ + /*˽·ԭ޸20180809 + ·ڷлһռʱ + һռʻ룬ʱ*/ + + checkResultSecAndQXZC = RouteExceptLastSecOccuClrCheck(routeId); + if (CI_SUCCESS == checkResultSecAndQXZC) + { /*οлһռ*/ + + /*˽*/ + SetRouteStateManage(routeId, ROUTE_STATE_DELAY_UNLOCK); /*-->ý·ʱ*/ + /*ʱȫ*/ + SetRouteZongRenJieDelayType(routeId, ROUTE_ZRJ_DELAY_TYPE_IDLE);/*ʱν*/ + } + else if ((ROUTE_TRAIN_ENTER_FLAG_NO == trainEnterSta) && (CI_ERROR_QXZC != checkResultSecAndQXZC)) + {/*˽·ʱȡղ̵δܽ·*/ + /*˽*/ + SetRouteStateManage(routeId, ROUTE_STATE_DELAY_UNLOCK); /*-->ý·ʱ*/ + /*ʱȫ*/ + SetRouteZongRenJieDelayType(routeId, ROUTE_ZRJ_DELAY_TYPE_IDLE);/*ʱν*/ + } + else + { + /**/ + } + } else { + /*·״̬*/ + /* ¼ */ + SetErrorData(EFUNC_ROUTE_ZRJ_DEAL, CI_DEVICE_TYPE_ROUTE, routeId, ETYPE_ROUTE_STATE, routeState, ESEND_LEVEL_ATS); + } + } - /*ʱ󲿷̹һռѹ֮ǰα̹*/ - SetRouteZongRenJieDelayType(routeId, ROUTE_ZRJ_DELAY_TYPE_EXP_TO_OCCUPY); - } - } - else - { - /*·ȡ*/ - } - } - else if ((ROUTE_STATE_LEAD_LOCK == routeState) || (ROUTE_STATE_LEAD_LOCKERR == routeState)) - { /*||쳣*/ - /*˽·ԭ޸20180809 - ·ڷлһռʱ - һռʻ룬ʱ*/ - - checkResultSecAndQXZC = RouteExceptLastSecOccuClrCheck(routeId); - if (CI_SUCCESS == checkResultSecAndQXZC) - { /*οлһռ*/ - - /*˽*/ - SetRouteStateManage(routeId, ROUTE_STATE_DELAY_UNLOCK); /*-->ý·ʱ*/ - /*ʱȫ*/ - SetRouteZongRenJieDelayType(routeId, ROUTE_ZRJ_DELAY_TYPE_IDLE);/*ʱν*/ - } - else if ((ROUTE_TRAIN_ENTER_FLAG_NO == trainEnterSta) && (CI_ERROR_QXZC != checkResultSecAndQXZC)) - {/*˽·ʱȡղ̵δܽ·*/ - /*˽*/ - SetRouteStateManage(routeId, ROUTE_STATE_DELAY_UNLOCK); /*-->ý·ʱ*/ - /*ʱȫ*/ - SetRouteZongRenJieDelayType(routeId, ROUTE_ZRJ_DELAY_TYPE_IDLE);/*ʱν*/ - } - else - { - /**/ - } - - } - else - { - /*·״̬*/ - /* ¼ */ - SetErrorData(EFUNC_ROUTE_ZRJ_DEAL, CI_DEVICE_TYPE_ROUTE, routeId, ETYPE_ROUTE_STATE, routeState, ESEND_LEVEL_ATS); } } @@ -16979,4 +16998,1152 @@ UINT8 GetLocalCiIsScx(void) ;/*CI_ERROR;*/ } return chRtn; +} + +/* +* ߽· +* ˵ const UINT16 wRouteId ·ID +* ֵ +* Create:lyj 20260603 +*/ +void ConnectRouteReleaseManage(const UINT16 wRouteId) +{ + UINT8 chLocalCiId = 0U; /*ID*/ + UINT8 chBelongCiId = 0U; /*·ID*/ + UINT8 chAutoSigRouteState = 0U; /*ԶźŽ·״̬*/ + UINT16 wQXzhaochaRelay = 0U; + UINT8 chColleState = 0U; + UINT8 chvirCiId = 0U; + UINT8 chVirCiType = 0U; + UINT8 chRouteState = 0U; + UINT8 chConnectType = 0U; + + if ((0U < wRouteId) && (ROUTE_SUM_MAX > wRouteId)) + { + chLocalCiId = GetSystemParaLocalCiId(); /*ȡID*/ + chBelongCiId = GetRouteBelongCiId(wRouteId); /*ȡ·ID*/ + if ((chLocalCiId == chBelongCiId) && (0U != chBelongCiId)) + { + chConnectType = GetRouteConnectType(wRouteId); /*ȡ·*/ + if (ROUTE_TYPE_CONNECT == chConnectType) + { + chAutoSigRouteState = GetRouteAutoSigSetState(wRouteId); /*ȡ·Զź״̬*/ + chRouteState = GetRouteState(wRouteId); + /*Զźţҽ·ʱ*/ + if ((ROUTE_AUTOSIGROUTE_NO == chAutoSigRouteState) && (ROUTE_STATE_DELAY_UNLOCK != chRouteState)) + { + wQXzhaochaRelay = GetRouteCancleZhaoChaRelayId(wRouteId); + if ((0U < wQXzhaochaRelay) && (RELAY_SUM_MAX > wQXzhaochaRelay)) + { + chColleState = GetRelayCollState(wQXzhaochaRelay); + if (RELAY_STATE_DOWN == chColleState) + { + SetRouteConnectReleaseFlag(wRouteId, ROUTE_CONNECT_RELEASE_YES); /*߽־*/ + chvirCiId = GetRouteBelongVirCiId(wRouteId); + chVirCiType = GetLocalVirCiType(chvirCiId); + /*˽⺯˽־*/ + if (CI_TYPE_CLD == chVirCiType) + { + /*˽*/ + ZongRenJieRouteM(wRouteId); + } + else + {/*˽*/ + RouteZongRenJieLogicManage(wRouteId); + } + + } + else + { + SetErrorData(EFUNC_CONNECT_ROUTE_RELEASE, CI_DEVICE_TYPE_ROUTE, wRouteId, ETYPE_CONNECT_ROUTE_RELEASE, 0U, ESEND_LEVEL_ATS); + } + } + else + { + SetErrorData(EFUNC_CONNECT_ROUTE_RELEASE, CI_DEVICE_TYPE_ROUTE, wRouteId, ETYPE_CONNECT_ROUTE_RELEASE, 0U, ESEND_LEVEL_ATS); + } + } + else + { + SetErrorData(EFUNC_CONNECT_ROUTE_RELEASE, CI_DEVICE_TYPE_ROUTE, wRouteId, ETYPE_CONNECT_ROUTE_RELEASE, 0U, ESEND_LEVEL_ATS); + } + } + else + { + SetErrorData(EFUNC_CONNECT_ROUTE_RELEASE, CI_DEVICE_TYPE_ROUTE, wRouteId, ETYPE_CONNECT_ROUTE_RELEASE, 0U, ESEND_LEVEL_ATS); + } + + } + else + { + /*-ATS*/ + } + + } + else + { + /*-ATS*/ + } + +} + + +/* +* : һ +* ˵ +* ֵ void +* BY fan 20260602 +*/ +void AtsFollowUpCmdProcess(void) +{ + /*νиϢ鼰*/ + + /**/ + FollowUpDansuoCanclMsgProc(); + /**/ + FollowUpSwitchUnFlockMsgProc(); + /*ν*/ + FollowUpSecUnFlockMsgProc(); + /*źŻ*/ + FollowUpSignalUnFlockMsgProc(); +} + +/* +* : +* ˵ +* ֵ void +* BY fan 20260602 +*/ +void FollowUpDansuoCanclMsgProc(void) +{ + AtsFollowUpCmdFstStru * strMsgFst = NULL;/*״Ϣָ*/ + AtsFollowUpCmdSndStru * strMsgSnd = NULL;/*ٴϢָ*/ + RCIFollowUpReplyStru * strCfmFst = NULL;/*״λظָ*/ + RCIFollowUpReplyStru *strCfmSnd = NULL;/*λظָ*/ + UINT8 chLocalId = 0U; + UINT32 dwCycle = 0U; + UINT8 chRtn = CI_ERROR;/*мȡ*/ + UINT8 szCrcTmp[1024] = { 0U }; + UINT16 ii = 0U; + UINT32 dwCrc = 0U;/*ϢCRC*/ + chLocalId = GetSystemParaLocalCiId(); + dwCycle = Get2oo2CurCycleNum(); + + /*ȡӦһΡ Լ״ΡٴȷϢ*/ + strMsgFst = GetAtsFollowUpMsgFst(ATS_CI_INFO_FST_DS_CANCEL); + strMsgSnd = GetAtsFollowUpMsgSnd(ATS_CI_INFO_SND_DS_CANCEL); + strCfmFst = GetAtsFollowUpReplyFst(RCI_ATS_INFO_FST_DS_CANCEL); + strCfmSnd = GetAtsFollowUpReplySnd(RCI_ATS_INFO_SND_DS_CANCEL); + if ((NULL == strMsgFst) || (NULL == strMsgSnd) + || (NULL == strCfmFst) || (NULL == strCfmSnd)) + { + ; + } + else + { + if ((strMsgFst->chFlag != FLAG_SET) && (strMsgSnd->chFlag != FLAG_SET)) + { + ; /* ûϢʲôҲ */ + } + else if (FLAG_SET == strMsgFst->chFlag) + { + /* һϢЧ */ + if (strMsgFst->dwCycle == dwCycle) + { + strCfmFst->chFlag = FLAG_SET; + strCfmFst->chTiocId = chLocalId; + strCfmFst->chRtuId = strMsgFst->chRtuId; + strCfmFst->chAtsId = strMsgFst->chAtsId; + strCfmFst->wIndex = strMsgFst->wIndex; + strCfmFst->dwTime = dwCycle; + + if ((SWITCH_SUM_MAX <= strMsgFst->wDevId)||(chLocalId != strMsgFst->chTiocId)) + {/* ȡ豸IDزڱ*/ + strCfmFst->chOpStatus = CONFIRM_FST_BELONGERROR; + } + else + { + strCfmFst->chOpStatus = FollowUpDansuoCancleCheck(strMsgFst->wDevId, ATS_CI_INFO_FST_DS_CANCEL); + } + + szCrcTmp[ii] = strMsgFst->chAtsId; + ii++; + szCrcTmp[ii] = strMsgFst->chRtuId; + ii++; + ShortToChar(strMsgFst->wIndex, &szCrcTmp[ii]); + ii += 2U; + LongToChar(strMsgFst->dwTime, &szCrcTmp[ii]); + ii += 4U; + ShortToChar(strMsgFst->wDevId, &szCrcTmp[ii]); + ii += 2U; + strCfmFst->dwCrc32 = Tioc_CommonCrc32(szCrcTmp, ii); /* ATSšվšվšID·ʱ CRC */ + debug_infor_printf((char*)"\n FollowUpDansuoCanclMsgProc DevId:%d, First Reply:%d \n", strMsgFst->wDevId, strCfmFst->chOpStatus); + if (CONFIRM_REPLY_SUCCESS != strCfmFst->chOpStatus) + { + ClearAtsCmdMsgFst(ATS_CI_INFO_FST_DS_CANCEL); + } + else + { + strMsgFst->chFlag = FLAG_UNSET; + } + } + else + { + ;/* յӦһϢDZ */ + } + } + else + { + /*  */ + if (strMsgSnd->dwCycle == dwCycle) + { + strCfmSnd->chFlag = FLAG_SET; + strCfmSnd->chTiocId = chLocalId; + strCfmSnd->chRtuId = strMsgSnd->chRtuId; + strCfmSnd->chAtsId = strMsgSnd->chAtsId; + strCfmSnd->wIndex = strMsgSnd->wIndex; + strCfmSnd->dwTime = dwCycle; + + if(0u == strMsgFst->chFlag) + { + /*Ӧһ*/ + strCfmSnd->chOpStatus = CONFIRM_SND_FIRST_NOTFIND; + } + else if ((strMsgSnd->chAtsId != strMsgFst->chAtsId) + ||(strMsgSnd->chRtuId != strMsgFst->chRtuId) + || (strMsgSnd->wIndex != strMsgFst->wIndex) + || (strMsgSnd->chTiocId != strMsgFst->chTiocId) + || (strMsgSnd->wDevId != strMsgFst->wDevId)) + { + strCfmSnd->chOpStatus = CONFIRM_SND_DIFFCMD; + } + else + { + szCrcTmp[ii] = strMsgSnd->chTiocId; + ii++; + LongToChar(strCfmFst->dwTime, &szCrcTmp[ii]); + ii += 4u; + ShortToChar(strMsgSnd->wDevId, &szCrcTmp[ii]); + ii += 2u; + debug_infor_printf((char*)"\nSecondRecvCrc: 1.Tioc:%d , 2.Time:%d 3.Id:%d", strMsgSnd->chTiocId, strCfmFst->dwTime, strMsgSnd->wDevId ); + dwCrc = Tioc_CommonCrc32(szCrcTmp, ii); + if (dwCrc != strMsgSnd->dwCrc32) + { + /* CRC32ATSϢCRC32һ */ + strCfmSnd->chOpStatus = CONFIRM_SND_CRCFAIL; + } + else + { + strCfmSnd->chOpStatus = FollowUpDansuoCancleCheck(strMsgSnd->wDevId, ATS_CI_INFO_SND_DS_CANCEL); + } + } + ii = 0U; + szCrcTmp[ii] = strMsgSnd->chAtsId; + ii++; + szCrcTmp[ii] = strMsgSnd->chRtuId; + ii++; + ShortToChar(strMsgSnd->wIndex, &szCrcTmp[ii]); + ii += 2U; + LongToChar(strMsgSnd->dwTime, &szCrcTmp[ii]); + ii += 4u; + ShortToChar(strMsgSnd->wDevId, &szCrcTmp[ii]); + ii += 2u; + strCfmSnd->dwCrc32 = Tioc_CommonCrc32(szCrcTmp, ii); /* ATSšRtušվš·ʱ䡢豸ID CRC */ + debug_infor_printf((char*)"\n FollowUpDansuoCanclMsgProc DevId:%d, Second Reply:%d \n", strMsgSnd->wDevId, strCfmSnd->chOpStatus); + /*Ѵ*/ + ClearAtsCmdMsgFst(ATS_CI_INFO_FST_DS_CANCEL); + ClearAtsCmdReplyFst(RCI_ATS_INFO_FST_DS_CANCEL); + ClearAtsCmdMsgSnd(ATS_CI_INFO_SND_DS_CANCEL); + } + } + /*ʱ*/ + chRtn = SystemOverTimeCheck(strMsgFst->dwCycle, FOLLOWUP_CONFIRM_TIMEOUT); + if (CI_TIME_OUT == chRtn) + { + ClearAtsCmdMsgFst(ATS_CI_INFO_FST_DS_CANCEL); + ClearAtsCmdReplyFst(RCI_ATS_INFO_FST_DS_CANCEL); + ClearAtsCmdMsgSnd(ATS_CI_INFO_SND_DS_CANCEL); + ClearAtsCmdReplySnd(RCI_ATS_INFO_SND_DS_CANCEL); + } + } +} + +/* +* : ״̬,سɹʧԭ +* ˵ + UINT16 wDevId豸 + UINT16 wMsgType, +* ֵ +1 ɹ +2δõ +3ڱ +5Ѱǽ· +* BY fan 20260603 +*/ +UINT8 FollowUpDansuoCancleCheck(UINT16 wDevId, UINT16 wMsgType) +{ + UINT8 chRtn = CONFIRM_FST_BELONGERROR; + UINT8 chDevBelongCi = 0U;/*豸*/ + UINT8 chLocalId = GetSystemParaLocalCiId(); + UINT8 localCiType = 0U; + UINT8 chNonRouteCheck = CI_ERROR; + UINT8 chState = 0U;/*ǰ״̬*/ + UINT8 switchType = GetSwitchType(wDevId); + UINT16 switch2ndId = 0U;/*˫*/ + UINT8 functionId = EFUNC_FOLLOWUP_SWITCH_DANSUO_CANCLE; + UINT8 chVir = 0U;/*豸ID*/ + chDevBelongCi = GetSwitchBelongCiId(wDevId); + + if (chDevBelongCi == chLocalId) + { + /*1״̬ =򡾵ҷա*/ + chState = GetSwitchLockStatus(wDevId); + if ((SWITCH_LOCK_STATUS_DANSUO == chState) || (SWITCH_LOCK_STATUS_DAP == chState)) + { + /*򡾵ҷա*/ + chRtn = CONFIRM_REPLY_SUCCESS; + if (SWITCH_TYPE_DOUBLE == switchType) + { + switch2ndId = GetDSwitchOtherId(wDevId); + chState = GetSwitchLockStatus(switch2ndId); + if ((SWITCH_LOCK_STATUS_DANSUO == chState) || (SWITCH_LOCK_STATUS_DAP == chState)) + { + chRtn = CONFIRM_REPLY_SUCCESS; + } + else + { + chRtn = CONFIRM_FST_UNSET; + SetErrorData(functionId, CI_DEVICE_TYPE_SWITCH, switch2ndId, ETYPE_SWT_LOCK_STATUS, SWITCH_LOCK_STATUS_DANSUO_NO, ESEND_LEVEL_ZERO); + /* ʧܷ */ + } + } + if (CONFIRM_REPLY_SUCCESS == chRtn) + { + chVir = GetSwitchBelongVirCiId(wDevId); + localCiType = GetLocalVirCiType(chVir); + if (CI_TYPE_CLD == localCiType) + { + chNonRouteCheck = CheckSwitchBelongNonRoute(wDevId); + if (CI_SUCCESS == chNonRouteCheck) + { /*Ѱǽ·*/ + chRtn = CONFIRM_DEVICE_NONROUTE_SET; + debug_infor_printf((char*)"FollowUpDansuoCancleCheck Fail: Swicth%d SetNonRoute\n", wDevId); + } + else if (SWITCH_TYPE_DOUBLE == switchType) + { + chNonRouteCheck = CheckSwitchBelongNonRoute(switch2ndId); + if (CI_SUCCESS == chNonRouteCheck) + { /*Ѱǽ·*/ + chRtn = CONFIRM_DEVICE_NONROUTE_SET; + debug_infor_printf((char*)"FollowUpDansuoCancleCheck Fail: Swicth%d SetNonRoute\n", switch2ndId); + } + else + { + ;/*޷ǽ· سɹ*/ + } + } + else + { + chRtn = CONFIRM_REPLY_SUCCESS; + } + } + else + { + ;/*޷ǽ· سɹ*/ + } + } + } + else + { + chRtn = CONFIRM_FST_UNSET; + SetErrorData(functionId, CI_DEVICE_TYPE_SWITCH, wDevId, ETYPE_SWT_LOCK_STATUS, SWITCH_LOCK_STATUS_DANSUO_NO, ESEND_LEVEL_ZERO); + } + } + else + { + chRtn = CONFIRM_FST_BELONGERROR; + } + + if ((CONFIRM_REPLY_SUCCESS == chRtn) && (ATS_CI_INFO_SND_DS_CANCEL == wMsgType)) + { + /*ִͨв*/ + if (SWITCH_TYPE_DOUBLE == switchType) + {/*˫*/ + switch2ndId = GetDSwitchOtherId(wDevId); + SetSwitchLockStatus(SWITCH_PLOCKTYPE_DANSUO, 0u, switch2ndId, SWITCH_LOCK_DANSUO_CANCEL); /*ȡһ*/ + } + + SetSwitchLockStatus(SWITCH_PLOCKTYPE_DANSUO, 0u, wDevId, SWITCH_LOCK_DANSUO_CANCEL); /*ȡ*/ + } + return chRtn; +} + +/* +* : +* ˵ +* ֵ void +* BY fan 20260602 +*/ +void FollowUpSwitchUnFlockMsgProc(void) +{ + AtsFollowUpCmdFstStru * strMsgFst = NULL;/*״Ϣָ*/ + AtsFollowUpCmdSndStru * strMsgSnd = NULL;/*ٴϢָ*/ + RCIFollowUpReplyStru * strCfmFst = NULL;/*״λظָ*/ + RCIFollowUpReplyStru *strCfmSnd = NULL;/*λظָ*/ + UINT8 chLocalId = 0U; + UINT32 dwCycle = 0U; + UINT8 chRtn = CI_ERROR;/*мȡ*/ + UINT8 szCrcTmp[1024] = { 0U }; + UINT16 ii = 0U; + UINT32 dwCrc = 0U;/*ϢCRC*/ + chLocalId = GetSystemParaLocalCiId(); + dwCycle = Get2oo2CurCycleNum(); + + /*ȡӦһΡ Լ״ΡٴȷϢ*/ + strMsgFst = GetAtsFollowUpMsgFst(ATS_CI_INFO_FST_SWIUNFLOCK); + strMsgSnd = GetAtsFollowUpMsgSnd(ATS_CI_INFO_SND_SWIUNFLOCK); + strCfmFst = GetAtsFollowUpReplyFst(RCI_ATS_INFO_FST_SWIUNFLOCK); + strCfmSnd = GetAtsFollowUpReplySnd(RCI_ATS_INFO_SND_SWIUNFLOCK); + if ((NULL == strMsgFst) || (NULL == strMsgSnd) + || (NULL == strCfmFst) || (NULL == strCfmSnd)) + { + ; + } + else + { + if ((strMsgFst->chFlag != FLAG_SET) && (strMsgSnd->chFlag != FLAG_SET)) + { + ; /* ûϢʲôҲ */ + } + else if (strMsgFst->chFlag == FLAG_SET) + { + /* һϢЧ */ + if (strMsgFst->dwCycle == dwCycle) + { + strCfmFst->chFlag = FLAG_SET; + strCfmFst->chTiocId = chLocalId; + strCfmFst->chAtsId = strMsgFst->chAtsId; + strCfmFst->chRtuId = strMsgFst->chRtuId; + strCfmFst->wIndex = strMsgFst->wIndex; + strCfmFst->dwTime = dwCycle; + + if((SWITCH_SUM_MAX <= strMsgFst->wDevId) || (chLocalId != strMsgFst->chTiocId)) + {/* ȡ豸IDزڱ*/ + strCfmFst->chOpStatus = CONFIRM_FST_BELONGERROR; + } + else + { + strCfmFst->chOpStatus = FollowUpSwitchUnFlockCheck(strMsgFst->wDevId, ATS_CI_INFO_FST_SWIUNFLOCK); + } + + szCrcTmp[ii] = strMsgFst->chAtsId; + ii++; + szCrcTmp[ii] = strMsgFst->chRtuId; + ii++; + ShortToChar(strMsgFst->wIndex, &szCrcTmp[ii]); + ii += 2U; + LongToChar(strMsgFst->dwTime, &szCrcTmp[ii]); + ii += 4U; + ShortToChar(strMsgFst->wDevId, &szCrcTmp[ii]); + ii += 2U; + strCfmFst->dwCrc32 = Tioc_CommonCrc32(szCrcTmp, ii); /* ATSšRtušվšһ·ʱ䡢豸ID CRC */ + + debug_infor_printf((char*)"\n FollowUpSwitchUnFlockMsgProc DevId:%d, First Reply:%d \n", strMsgFst->wDevId, strCfmFst->chOpStatus); + if (CONFIRM_REPLY_SUCCESS != strCfmFst->chOpStatus) + { + ClearAtsCmdMsgFst(ATS_CI_INFO_FST_SWIUNFLOCK); + } + else + { + strMsgFst->chFlag = FLAG_UNSET; + } + } + else + { + ;/* յӦһϢDZ*/ + } + } + else + { + /* */ + if (strMsgSnd->dwCycle == dwCycle) + { + strCfmSnd->chFlag = FLAG_SET; + strCfmSnd->chTiocId = chLocalId; + strCfmSnd->chRtuId = strMsgSnd->chRtuId; + strCfmSnd->chAtsId = strMsgSnd->chAtsId; + strCfmSnd->wIndex = strMsgSnd->wIndex; + strCfmSnd->dwTime = dwCycle; + + if (0u == strMsgFst->chFlag) + { + /*Ӧһ*/ + strCfmSnd->chOpStatus = CONFIRM_SND_FIRST_NOTFIND; + } + else if ((strMsgSnd->chAtsId != strMsgFst->chAtsId) + || (strMsgSnd->chRtuId != strMsgFst->chRtuId) + || (strMsgSnd->wIndex != strMsgFst->wIndex) + || (strMsgSnd->chTiocId != strMsgFst->chTiocId) + || (strMsgSnd->wDevId != strMsgFst->wDevId)) + { + strCfmSnd->chOpStatus = CONFIRM_SND_DIFFCMD; + } + else + { + szCrcTmp[ii] = strMsgSnd->chTiocId; + ii++; + LongToChar(strCfmFst->dwTime, &szCrcTmp[ii]); + ii += 4u; + ShortToChar(strMsgSnd->wDevId, &szCrcTmp[ii]); + ii += 2u; + dwCrc = Tioc_CommonCrc32(szCrcTmp, ii); + if (dwCrc != strMsgSnd->dwCrc32) + { + /* CRC32ATSϢCRC32һ */ + strCfmSnd->chOpStatus = CONFIRM_SND_CRCFAIL; + } + else + { + strCfmSnd->chOpStatus = FollowUpSwitchUnFlockCheck(strMsgSnd->wDevId, ATS_CI_INFO_SND_SWIUNFLOCK); + } + } + ii = 0U; + szCrcTmp[ii] = strMsgSnd->chAtsId; + ii++; + szCrcTmp[ii] = strMsgSnd->chRtuId; + ii++; + ShortToChar(strMsgSnd->wIndex, &szCrcTmp[ii]); + ii += 2U; + LongToChar(strMsgSnd->dwTime, &szCrcTmp[ii]); + ii += 4u; + ShortToChar(strMsgSnd->wDevId, &szCrcTmp[ii]); + ii += 2u; + strCfmSnd->dwCrc32 = Tioc_CommonCrc32(szCrcTmp, ii); /* ATSšվšվšID CRC*/ + debug_infor_printf((char*)"\n FollowUpSwitchUnFlockMsgProc DevId:%d, Second Reply:%d \n", strMsgSnd->wDevId, strCfmSnd->chOpStatus); + /*Ѵ*/ + ClearAtsCmdMsgFst(ATS_CI_INFO_FST_SWIUNFLOCK); + ClearAtsCmdReplyFst(RCI_ATS_INFO_FST_SWIUNFLOCK); + ClearAtsCmdMsgSnd(ATS_CI_INFO_SND_SWIUNFLOCK); + } + } + + /*ʱ*/ + chRtn = SystemOverTimeCheck(strMsgFst->dwCycle, FOLLOWUP_CONFIRM_TIMEOUT); + if (CI_TIME_OUT == chRtn) + { + ClearAtsCmdMsgFst(ATS_CI_INFO_FST_SWIUNFLOCK); + ClearAtsCmdReplyFst(RCI_ATS_INFO_FST_SWIUNFLOCK); + ClearAtsCmdMsgSnd(ATS_CI_INFO_SND_SWIUNFLOCK); + ClearAtsCmdReplySnd(RCI_ATS_INFO_SND_SWIUNFLOCK); + } + } +} + +/* +* : ״̬,سɹʧԭ򣬶βʱִ +* ˵ +UINT16 wDevId豸 +UINT16 wMsgType, +* ֵ +1 ɹ +2δ÷ +3ڱ +5Ѱǽ· +* BY fan 20260603 +*/ +UINT8 FollowUpSwitchUnFlockCheck(UINT16 wDevId, UINT16 wMsgType) +{ + UINT8 chRtn = CONFIRM_FST_BELONGERROR; + UINT8 chDevBelongCi = 0U;/*豸*/ + UINT8 chLocalId = GetSystemParaLocalCiId(); + UINT8 localCiType = 0U; + UINT8 chNonRouteCheck = CI_ERROR; + UINT8 chState = 0U;/*ǰ״̬*/ + UINT8 switchType = GetSwitchType(wDevId); + UINT16 switch2ndId = 0U;/*˫*/ + UINT8 functionId = EFUNC_FOLLOWUP_SWITCH_UNFLOCK; + UINT8 chVir = 0U;/*豸ID*/ + chDevBelongCi = GetSwitchBelongCiId(wDevId); + + if (chDevBelongCi == chLocalId) + { + /*״̬*/ + chState = GetSwitchFLockState(wDevId); + if(SWITCH_LOCK_FENGSUO_YES == chState) + { + /*ڷ*/ + chRtn = CONFIRM_REPLY_SUCCESS; + if (SWITCH_TYPE_DOUBLE == switchType) + { + switch2ndId = GetDSwitchOtherId(wDevId); + chState = GetSwitchFLockState(switch2ndId); + if (SWITCH_LOCK_FENGSUO_YES == chState) + { + chRtn = CONFIRM_REPLY_SUCCESS; + } + else + { + chRtn = CONFIRM_FST_UNSET; + SetErrorData(functionId, CI_DEVICE_TYPE_SWITCH, switch2ndId, ETYPE_SWT_FLOCK_STATE, SWITCH_LOCK_FENGSUO_NO, ESEND_LEVEL_ZERO); + } + } + if (CONFIRM_REPLY_SUCCESS == chRtn) + { + chVir = GetSwitchBelongVirCiId(wDevId); + localCiType = GetLocalVirCiType(chVir); + if (CI_TYPE_CLD == localCiType) + { + chNonRouteCheck = CheckSwitchBelongNonRoute(wDevId); + if (CI_SUCCESS == chNonRouteCheck) + { /*Ѱǽ·*/ + chRtn = CONFIRM_DEVICE_NONROUTE_SET; + debug_infor_printf((char*)"FollowUpSwitchUnFlockCheck Fail: Swicth%d SetNonRoute\n", wDevId); + } + else if (SWITCH_TYPE_DOUBLE == switchType) + { + chNonRouteCheck = CheckSwitchBelongNonRoute(switch2ndId); + if (CI_SUCCESS == chNonRouteCheck) + { /*Ѱǽ·*/ + chRtn = CONFIRM_DEVICE_NONROUTE_SET; + debug_infor_printf((char*)"FollowUpSwitchUnFlockCheck Fail: Swicth%d SetNonRoute\n", switch2ndId); + } + else + { + ;/*޷ǽ· سɹ*/ + } + } + else + { + chRtn = CONFIRM_REPLY_SUCCESS; + } + } + else + { + ;/*޷ǽ· سɹ*/ + } + } + } + else + { + chRtn = CONFIRM_FST_UNSET; + SetErrorData(functionId, CI_DEVICE_TYPE_SWITCH, wDevId, ETYPE_SWT_FLOCK_STATE, SWITCH_LOCK_FENGSUO_NO, ESEND_LEVEL_ZERO); + } + } + else + { + chRtn = CONFIRM_FST_BELONGERROR; + } + + if ((CONFIRM_REPLY_SUCCESS == chRtn) && (ATS_CI_INFO_SND_SWIUNFLOCK == wMsgType)) + { + /*ִͨв*/ + if (SWITCH_TYPE_DOUBLE == switchType) + {/*˫*/ + switch2ndId = GetDSwitchOtherId(wDevId); + SetSwitchFLockState(switch2ndId, SWITCH_LOCK_FENGSUO_NO); /*ȡһ*/ + } + SetSwitchFLockState(wDevId, SWITCH_LOCK_FENGSUO_NO); /*ȡ*/ + + } + return chRtn; +} + +/* +* : ν +* ˵ +* ֵ void +* BY fan 20260604 +*/ +void FollowUpSecUnFlockMsgProc(void) +{ + AtsFollowUpCmdFstStru * strMsgFst = NULL;/*״Ϣָ*/ + AtsFollowUpCmdSndStru * strMsgSnd = NULL;/*ٴϢָ*/ + RCIFollowUpReplyStru * strCfmFst = NULL;/*״λظָ*/ + RCIFollowUpReplyStru *strCfmSnd = NULL;/*λظָ*/ + UINT8 chLocalId = 0U; + UINT32 dwCycle = 0U; + UINT8 chRtn = CI_ERROR;/*мȡ*/ + UINT8 szCrcTmp[1024] = { 0U }; + UINT16 ii = 0U; + UINT32 dwCrc = 0U;/*ϢCRC*/ + chLocalId = GetSystemParaLocalCiId(); + dwCycle = Get2oo2CurCycleNum(); + + /*ȡӦһΡ Լ״ΡٴȷϢ*/ + strMsgFst = GetAtsFollowUpMsgFst(ATS_CI_INFO_FST_SECUNFLOCK); + strMsgSnd = GetAtsFollowUpMsgSnd(ATS_CI_INFO_SND_SECUNFLOCK); + strCfmFst = GetAtsFollowUpReplyFst(RCI_ATS_INFO_FST_SECUNFLOCK); + strCfmSnd = GetAtsFollowUpReplySnd(RCI_ATS_INFO_SND_SECUNFLOCK); + if ((NULL == strMsgFst) || (NULL == strMsgSnd) + || (NULL == strCfmFst) || (NULL == strCfmSnd)) + { + ; + } + else + { + if ((strMsgFst->chFlag != FLAG_SET) && (strMsgSnd->chFlag != FLAG_SET)) + { + ; /* ûϢʲôҲ */ + } + else if (strMsgFst->chFlag == FLAG_SET) + { + /* һϢЧ */ + if (strMsgFst->dwCycle == dwCycle) + { + strCfmFst->chFlag = FLAG_SET; + strCfmFst->chTiocId = chLocalId; + strCfmFst->chAtsId = strMsgFst->chAtsId; + strCfmFst->chRtuId = strMsgFst->chRtuId; + strCfmFst->wIndex = strMsgFst->wIndex; + strCfmFst->dwTime = dwCycle; + + if ((PHYSICAL_SECTION_SUM_MAX <= strMsgFst->wDevId) || (chLocalId != strMsgFst->chTiocId)) + {/* ȡ豸IDزڱ*/ + strCfmFst->chOpStatus = CONFIRM_FST_BELONGERROR; + } + else + { + strCfmFst->chOpStatus = FollowUpSecUnFlockCheck(strMsgFst->wDevId, ATS_CI_INFO_FST_SECUNFLOCK); + } + + szCrcTmp[ii] = strMsgFst->chAtsId; + ii++; + szCrcTmp[ii] = strMsgFst->chRtuId; + ii++; + ShortToChar(strMsgFst->wIndex, &szCrcTmp[ii]); + ii += 2U; + LongToChar(strMsgFst->dwTime, &szCrcTmp[ii]); + ii += 4U; + ShortToChar(strMsgFst->wDevId, &szCrcTmp[ii]); + ii += 2U; + strCfmFst->dwCrc32 = Tioc_CommonCrc32(szCrcTmp, ii); /* ATSšRtušվš·ʱ䡢豸ID CRC */ + debug_infor_printf((char*)"\n FollowUpSecUnFlockMsgProc DevId:%d, First Reply:%d \n", strMsgFst->wDevId, strCfmFst->chOpStatus); + if (CONFIRM_REPLY_SUCCESS != strCfmFst->chOpStatus) + { + ClearAtsCmdMsgFst(ATS_CI_INFO_FST_SECUNFLOCK); + } + else + { + strMsgFst->chFlag = FLAG_UNSET; + } + } + else + { + ;/* յӦһϢDZ*/ + } + } + else + { + /* */ + if (strMsgSnd->dwCycle == dwCycle) + { + strCfmSnd->chFlag = FLAG_SET; + strCfmSnd->chTiocId = chLocalId; + strCfmSnd->chRtuId = strMsgSnd->chRtuId; + strCfmSnd->chAtsId = strMsgSnd->chAtsId; + strCfmSnd->wIndex = strMsgSnd->wIndex; + strCfmSnd->dwTime = dwCycle; + + if (0u == strMsgFst->chFlag) + { + /*Ӧһ*/ + strCfmSnd->chOpStatus = CONFIRM_SND_FIRST_NOTFIND; + } + else if ((strMsgSnd->chAtsId != strMsgFst->chAtsId) + || (strMsgSnd->chRtuId != strMsgFst->chRtuId) + || (strMsgSnd->wIndex != strMsgFst->wIndex) + || (strMsgSnd->chTiocId != strMsgFst->chTiocId) + || (strMsgSnd->wDevId != strMsgFst->wDevId)) + { + strCfmSnd->chOpStatus = CONFIRM_SND_DIFFCMD; + } + else + { + szCrcTmp[ii] = strMsgSnd->chTiocId; + ii++; + LongToChar(strCfmFst->dwTime, &szCrcTmp[ii]); + ii += 4u; + ShortToChar(strMsgSnd->wDevId, &szCrcTmp[ii]); + ii += 2u; + dwCrc = Tioc_CommonCrc32(szCrcTmp, ii); + if (dwCrc != strMsgSnd->dwCrc32) + { + /* CRC32ATSϢCRC32һ */ + strCfmSnd->chOpStatus = CONFIRM_SND_CRCFAIL; + } + else + { + strCfmSnd->chOpStatus = FollowUpSecUnFlockCheck(strMsgSnd->wDevId, ATS_CI_INFO_SND_SECUNFLOCK); + } + } + ii = 0U; + szCrcTmp[ii] = strMsgSnd->chAtsId; + ii++; + szCrcTmp[ii] = strMsgSnd->chRtuId; + ii++; + ShortToChar(strMsgSnd->wIndex, &szCrcTmp[ii]); + ii += 2U; + LongToChar(strMsgSnd->dwTime, &szCrcTmp[ii]); + ii += 4u; + ShortToChar(strMsgSnd->wDevId, &szCrcTmp[ii]); + ii += 2u; + strCfmSnd->dwCrc32 = Tioc_CommonCrc32(szCrcTmp, ii); /* ATSšվšվš·ʱ䡢ID*/ + debug_infor_printf((char*)"\n FollowUpSecUnFlockMsgProc DevId:%d, Second Reply:%d \n", strMsgSnd->wDevId, strCfmSnd->chOpStatus); + /*Ѵ*/ + ClearAtsCmdMsgFst(ATS_CI_INFO_FST_SECUNFLOCK); + ClearAtsCmdReplyFst(RCI_ATS_INFO_FST_SECUNFLOCK); + ClearAtsCmdMsgSnd(ATS_CI_INFO_SND_SECUNFLOCK); + } + } + + chRtn = SystemOverTimeCheck(strMsgFst->dwCycle, FOLLOWUP_CONFIRM_TIMEOUT); + if (CI_TIME_OUT == chRtn) + { + ClearAtsCmdMsgFst(ATS_CI_INFO_FST_SECUNFLOCK); + ClearAtsCmdReplyFst(RCI_ATS_INFO_FST_SECUNFLOCK); + ClearAtsCmdMsgSnd(ATS_CI_INFO_SND_SECUNFLOCK); + ClearAtsCmdReplySnd(RCI_ATS_INFO_SND_SECUNFLOCK); + } + } +} + +/* +* : ν״̬,سɹʧԭ򣬶βʱִ +* ˵ +UINT16 wDevId豸 +UINT16 wMsgType, +* ֵ +1 ɹ +2δ˹η +3ڱ +* BY fan 20260604 +*/ +UINT8 FollowUpSecUnFlockCheck(UINT16 wDevId, UINT16 wMsgType) +{ + UINT8 chRtn = CONFIRM_FST_BELONGERROR; + UINT8 chDevBelongCi = 0U;/*豸*/ + UINT8 chLocalId = GetSystemParaLocalCiId(); + UINT8 chState = 0U;/*ǰ״̬*/ + UINT8 flockType = 0u;/**/ + chDevBelongCi = GetPhySecBelongCiId(wDevId); + + if (chDevBelongCi == chLocalId) + { + /*״̬*/ + chState = GetPhySecFLockState(wDevId); + flockType = GetPhySecFLockType(wDevId); /*η*/ + if (PHYSICAL_SECTION_FLOCK_YES == chState) + { + if ((PHY_SEC_FLOCK_TYPE_SPKSCMD == flockType)|| (PHY_SEC_FLOCK_TYPE_CMD == flockType)) + {/*η*/ + chRtn = CONFIRM_REPLY_SUCCESS; + } + else + { + /*SPKSȡ*/ + chRtn = CONFIRM_FST_UNSET; + SetErrorData(EFUNC_FOLLOWUP_SEC_UNFLOCK,CI_DEVICE_TYPE_PHYSEC,wDevId, ETYPE_PS_FLOCK_STATE, flockType, ESEND_LEVEL_ZERO); + } + } + else + { + chRtn = CONFIRM_FST_UNSET; + SetErrorData(EFUNC_FOLLOWUP_SEC_UNFLOCK, CI_DEVICE_TYPE_PHYSEC, wDevId, ETYPE_PS_UNFLOCK_STATE, chState, ESEND_LEVEL_ZERO); + } + } + else + { + chRtn = CONFIRM_FST_BELONGERROR; + } + + if ((CONFIRM_REPLY_SUCCESS == chRtn) && (ATS_CI_INFO_SND_SECUNFLOCK == wMsgType)) + { + /*ִͨв*/ + if (PHY_SEC_FLOCK_TYPE_CMD == flockType) + { + (void)SetPhySecFLockState(wDevId, PHYSICAL_SECTION_FLOCK_NO);/*η״̬Ϊδ*/ + SetPhySecFLockType(wDevId, PHY_SEC_FLOCK_TYPE_NONE);/*ó޷*/ + } + else + { + /*ѼspksCMD˴SPKS*/ + SetPhySecFLockType(wDevId, PHY_SEC_FLOCK_TYPE_SPKS); + } + } + return chRtn; +} + + +/* +* : źŻ +* ˵ +* ֵ void +* BY fan 20260604 +*/ +void FollowUpSignalUnFlockMsgProc(void) +{ + AtsFollowUpCmdFstStru * strMsgFst = NULL;/*״Ϣָ*/ + AtsFollowUpCmdSndStru * strMsgSnd = NULL;/*ٴϢָ*/ + RCIFollowUpReplyStru * strCfmFst = NULL;/*״λظָ*/ + RCIFollowUpReplyStru *strCfmSnd = NULL;/*λظָ*/ + UINT8 chLocalId = 0U; + UINT32 dwCycle = 0U; + UINT8 chRtn = CI_ERROR;/*мȡ*/ + UINT8 szCrcTmp[1024] = { 0U }; + UINT16 ii = 0U; + UINT32 dwCrc = 0U;/*ϢCRC*/ + chLocalId = GetSystemParaLocalCiId(); + dwCycle = Get2oo2CurCycleNum(); + + /*ȡӦһΡ Լ״ΡٴȷϢ*/ + strMsgFst = GetAtsFollowUpMsgFst(ATS_CI_INFO_FST_SIGUNFLOCK); + strMsgSnd = GetAtsFollowUpMsgSnd(ATS_CI_INFO_SND_SIGUNFLOCK); + strCfmFst = GetAtsFollowUpReplyFst(RCI_ATS_INFO_FST_SIGUNFLOCK); + strCfmSnd = GetAtsFollowUpReplySnd(RCI_ATS_INFO_SND_SIGUNFLOCK); + if ((NULL == strMsgFst) || (NULL == strMsgSnd) + || (NULL == strCfmFst) || (NULL == strCfmSnd)) + { + ; + } + else + { + if ((strMsgFst->chFlag != FLAG_SET) && (strMsgSnd->chFlag != FLAG_SET)) + { + ; /* ûϢʲôҲ */ + } + else if (strMsgFst->chFlag == FLAG_SET) + { + /* һϢЧ */ + if (strMsgFst->dwCycle == dwCycle) + { + strCfmFst->chFlag = FLAG_SET; + strCfmFst->chTiocId = chLocalId; + strCfmFst->chAtsId = strMsgFst->chAtsId; + strCfmFst->chRtuId = strMsgFst->chRtuId; + strCfmFst->wIndex = strMsgFst->wIndex; + strCfmFst->dwTime = dwCycle; + + if ((SIGNAL_SUM_MAX <= strMsgFst->wDevId) || (chLocalId != strMsgFst->chTiocId)) + {/* ȡ豸IDزڱ*/ + strCfmFst->chOpStatus = CONFIRM_FST_BELONGERROR; + } + else + { + strCfmFst->chOpStatus = FollowUpSignalUnFlockCheck(strMsgFst->wDevId, ATS_CI_INFO_FST_SIGUNFLOCK); + } + + szCrcTmp[ii] = strMsgFst->chAtsId; + ii++; + szCrcTmp[ii] = strMsgFst->chRtuId; + ii++; + ShortToChar(strMsgFst->wIndex, &szCrcTmp[ii]); + ii += 2U; + LongToChar(strMsgFst->dwTime, &szCrcTmp[ii]); + ii += 4U; + ShortToChar(strMsgFst->wDevId, &szCrcTmp[ii]); + ii += 2U; + strCfmFst->dwCrc32 = Tioc_CommonCrc32(szCrcTmp, ii); /* ATSšRtušվš·ʱ䡢豸ID CRC */ + + debug_infor_printf((char*)"\n FollowUpSignalUnFlockMsgProc DevId:%d, First Reply:%d \n", strMsgFst->wDevId, strCfmFst->chOpStatus); + if (CONFIRM_REPLY_SUCCESS != strCfmFst->chOpStatus) + { + ClearAtsCmdMsgFst(ATS_CI_INFO_FST_SIGUNFLOCK); + } + else + { + strMsgFst->chFlag = FLAG_UNSET; + } + } + else + { + ;/* յӦһϢDZ*/ + } + } + else + { + /* */ + if (strMsgSnd->dwCycle == dwCycle) + { + strCfmSnd->chFlag = FLAG_SET; + strCfmSnd->chTiocId = chLocalId; + strCfmSnd->chRtuId = strMsgSnd->chRtuId; + strCfmSnd->chAtsId = strMsgSnd->chAtsId; + strCfmSnd->wIndex = strMsgSnd->wIndex; + strCfmSnd->dwTime = dwCycle; + + if (0u == strMsgFst->chFlag) + { + /*Ӧһ*/ + strCfmSnd->chOpStatus = CONFIRM_SND_FIRST_NOTFIND; + } + else if ((strMsgSnd->chAtsId != strMsgFst->chAtsId) + || (strMsgSnd->chRtuId != strMsgFst->chRtuId) + || (strMsgSnd->wIndex != strMsgFst->wIndex) + || (strMsgSnd->chTiocId != strMsgFst->chTiocId) + || (strMsgSnd->wDevId != strMsgFst->wDevId)) + { + strCfmSnd->chOpStatus = CONFIRM_SND_DIFFCMD; + } + else + { + szCrcTmp[ii] = strMsgSnd->chTiocId; + ii++; + LongToChar(strCfmFst->dwTime, &szCrcTmp[ii]); + ii += 4u; + ShortToChar(strMsgSnd->wDevId, &szCrcTmp[ii]); + ii += 2u; + dwCrc = Tioc_CommonCrc32(szCrcTmp, ii); + if (dwCrc != strMsgSnd->dwCrc32) + { + /* CRC32ATSϢCRC32һ */ + strCfmSnd->chOpStatus = CONFIRM_SND_CRCFAIL; + } + else + { + strCfmSnd->chOpStatus = FollowUpSignalUnFlockCheck(strMsgSnd->wDevId, ATS_CI_INFO_SND_SIGUNFLOCK); + } + } + ii = 0U; + szCrcTmp[ii] = strMsgSnd->chAtsId; + ii++; + szCrcTmp[ii] = strMsgSnd->chRtuId; + ii++; + ShortToChar(strMsgSnd->wIndex, &szCrcTmp[ii]); + ii += 2U; + LongToChar(strMsgSnd->dwTime, &szCrcTmp[ii]); + ii += 4u; + ShortToChar(strMsgSnd->wDevId, &szCrcTmp[ii]); + ii += 2u; + strCfmSnd->dwCrc32 = Tioc_CommonCrc32(szCrcTmp, ii); /* ATSšվšվš·ʱ䡢ID CRC */ + debug_infor_printf((char*)"\n FollowUpSignalUnFlockMsgProc DevId:%d, Second Reply:%d \n", strMsgSnd->wDevId, strCfmSnd->chOpStatus); + /*Ѵ*/ + ClearAtsCmdMsgFst(ATS_CI_INFO_FST_SIGUNFLOCK); + ClearAtsCmdReplyFst(RCI_ATS_INFO_FST_SIGUNFLOCK); + ClearAtsCmdMsgSnd(ATS_CI_INFO_SND_SIGUNFLOCK); + } + } + + chRtn = SystemOverTimeCheck(strMsgFst->dwCycle, FOLLOWUP_CONFIRM_TIMEOUT); + if (CI_TIME_OUT == chRtn) + { + ClearAtsCmdMsgFst(ATS_CI_INFO_FST_SIGUNFLOCK); + ClearAtsCmdReplyFst(RCI_ATS_INFO_FST_SIGUNFLOCK); + ClearAtsCmdMsgSnd(ATS_CI_INFO_SND_SIGUNFLOCK); + ClearAtsCmdReplySnd(RCI_ATS_INFO_SND_SIGUNFLOCK); + } + } +} + +/* +* : źŻ״̬,سɹʧԭ򣬶βʱִ +* ˵ +UINT16 wDevId豸 +UINT16 wMsgType, +* ֵ +1 ɹ +2δźŻ +3ڱ +5ǽ·Ѱ +* BY fan 20260604 +*/ +UINT8 FollowUpSignalUnFlockCheck(UINT16 wDevId, UINT16 wMsgType) +{ + UINT8 chRtn = CONFIRM_FST_BELONGERROR; + UINT8 chDevBelongCi = 0U;/*豸*/ + UINT8 chLocalId = GetSystemParaLocalCiId(); + UINT8 chState = 0U;/*ǰ״̬*/ + UINT8 localCiType = 0U; + UINT8 chNonRouteCheck = CI_ERROR; + UINT8 chVir = 0U;/*豸ID*/ + chDevBelongCi = GetSignalBelongCiId(wDevId); + + if (chDevBelongCi == chLocalId) + { + /*״̬*/ + chState = GetSignalFLockState(wDevId); + if (SIGNAL_FENGSUO_YES == chState) + { + chVir = GetSignalBelongVirCiId(wDevId); + localCiType = GetLocalVirCiType(chVir); + if (CI_TYPE_CLD == localCiType) + { + chNonRouteCheck = CheckSignalBelongNonRoute(wDevId); + if (CI_SUCCESS == chNonRouteCheck) + { /*źŻѰǽ·*/ + chRtn = CONFIRM_DEVICE_NONROUTE_SET; + debug_infor_printf((char*)"FollowUpSignalUnFlockCheck Fail: Signal %d SetNonRoute\n", wDevId); + } + else + { + chRtn = CONFIRM_REPLY_SUCCESS; + } + } + else + { + chRtn = CONFIRM_REPLY_SUCCESS; + } + } + else + { + chRtn = CONFIRM_FST_UNSET; + SetErrorData(EFUNC_FOLLOWUP_SIGNAL_UNFLOCK, CI_DEVICE_TYPE_SIGNAL, wDevId, ETYPE_SIG_FLOCK_STATE, chState, ESEND_LEVEL_ZERO); + } + } + else + { + chRtn = CONFIRM_FST_BELONGERROR; + } + + if ((CONFIRM_REPLY_SUCCESS == chRtn) && (ATS_CI_INFO_SND_SIGUNFLOCK == wMsgType)) + { + /*ִͨв*/ + SetSignalFLockState(wDevId, SIGNAL_FENGSUO_NO); /*źŻδ*/ + } + return chRtn; +} + +/* +* źѿŽ·ĹԴ +* ˵ +* ֵ +* Created By LQ 2026.06.09 +*/ +void OpenedRouteShareResPro(void) +{ + UINT8 cLocalCiId = 0U; /*ID*/ + UINT16 wRouteCurSum = 0U; /*źŻ*/ + UINT16 ii = 0U; + UINT16 wRouteId = 0U; /*·ID*/ + UINT8 cRouteBelongCiId = 0U; /*·ID*/ + UINT8 cRouteCurState = 0U; /*·ǰ״̬*/ + + cLocalCiId = GetSystemParaLocalCiId(); + wRouteCurSum = GetRouteCurSum(); + + for (ii = 0U; ii < wRouteCurSum; ii++) + { + wRouteId = GetRouteId(ii); + cRouteBelongCiId = GetRouteBelongCiId(wRouteId); /*ȡ·ID*/ + + /*жǷΪ·*/ + if (cLocalCiId == cRouteBelongCiId) + { + cRouteCurState = GetRouteState(wRouteId); /*ȡ·״̬*/ + + /*жϽ·źǷ񿪷*/ + if ((ROUTE_STATE_YUXIAN_OPEN == cRouteCurState) || (ROUTE_STATE_NEAR_OPEN == cRouteCurState)) + { + /*·״̬ΪԤȿ ӽţý·߼Դ־Ϊ*/ + SetRouteLgcSecShareFlag(wRouteId, LOGIC_SECTION_RES_SHARE_YES); + } + else + { + /**/ + } + } + else + { + /*DZ·*/ + } + } } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/LogicManage/InterlockLogicManage.h b/TSCP/src/APP/ciapp/LogicManage/InterlockLogicManage.h index e8e3a69..7307c7f 100644 --- a/TSCP/src/APP/ciapp/LogicManage/InterlockLogicManage.h +++ b/TSCP/src/APP/ciapp/LogicManage/InterlockLogicManage.h @@ -1175,6 +1175,116 @@ void AxisJumpLockStateManage(const UINT16 axisSectionId); * ֵ CI_SUCCESS Գߣ裩 CI_ERROR */ UINT8 GetLocalCiIsScx(void); +/* +* ߽· +* ˵ const UINT16 wRouteId ·ID +* ֵ +* Create:lyj 20260603 +*/ +void ConnectRouteReleaseManage(const UINT16 wRouteId); + +/* +* : һ +* ˵ +* ֵ void +* BY fan 20260602 +*/ +void AtsFollowUpCmdProcess(void); + +/* +* : +* ˵ +* ֵ void +* BY fan 20260602 +*/ +void FollowUpDansuoCanclMsgProc(void); + +/* +* : ״̬,سɹʧԭ +* ˵ +UINT16 wDevId豸 +UINT16 wMsgType, +* ֵ +1 ɹ +2δõ +3ڱ +5Ѱǽ· +* BY fan 20260603 +*/ +UINT8 FollowUpDansuoCancleCheck(UINT16 wDevId, UINT16 wMsgType); + +/* +* : +* ˵ +* ֵ void +* BY fan 20260602 +*/ +void FollowUpSwitchUnFlockMsgProc(void); + +/* +* : ״̬,سɹʧԭ򣬶βʱִ +* ˵ +UINT16 wDevId豸 +UINT16 wMsgType, +* ֵ +1 ɹ +2δ÷ +3ڱ +5Ѱǽ· +* BY fan 20260603 +*/ +UINT8 FollowUpSwitchUnFlockCheck(UINT16 wDevId, UINT16 wMsgType); + +/* +* : ν +* ˵ +* ֵ void +* BY fan 20260604 +*/ +void FollowUpSecUnFlockMsgProc(void); + +/* +* : ν״̬,سɹʧԭ򣬶βʱִ +* ˵ +UINT16 wDevId豸 +UINT16 wMsgType, +* ֵ +1 ɹ +2δ˹η +3ڱ +* BY fan 20260604 +*/ +UINT8 FollowUpSecUnFlockCheck(UINT16 wDevId, UINT16 wMsgType); + +/* +* : źŻ +* ˵ +* ֵ void +* BY fan 20260604 +*/ +void FollowUpSignalUnFlockMsgProc(void); + +/* +* : źŻ״̬,سɹʧԭ򣬶βʱִ +* ˵ +UINT16 wDevId豸 +UINT16 wMsgType, +* ֵ +1 ɹ +2δźŻ +3ڱ +5ǽ·Ѱ +* BY fan 20260604 +*/ +UINT8 FollowUpSignalUnFlockCheck(UINT16 wDevId, UINT16 wMsgType); + +/* +* źѿŽ·ĹԴ +* ˵ +* ֵ +* Created By LQ 2026.06.09 +*/ +void OpenedRouteShareResPro(void); #ifdef __cplusplus } diff --git a/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicCheck.c b/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicCheck.c index 9fac982..fdd0991 100644 --- a/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicCheck.c +++ b/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicCheck.c @@ -7159,7 +7159,7 @@ UINT8 RouteExceptLastSecOccuClrCheck(UINT16 const routeId) UINT16 cancleZhaoChaRelayId = 0u; /*ȡղ̵ID*/ UINT8 relayState = 0u; /*̵ɼ״̬*/ UINT8 sendLevel = ESEND_LEVEL_ATS; /*ATS*/ - + UINT8 chRConnectReleaseFlag = 0U; /* ռü */ if (0u == checkSum) { @@ -7211,10 +7211,20 @@ UINT8 RouteExceptLastSecOccuClrCheck(UINT16 const routeId) } else { - /* ¼ */ - SetErrorData(functionId, CI_DEVICE_TYPE_RELAY, devId, ETYPE_CANCLE_ZHAOCHA, devState, sendLevel); - /* ʧܷ */ - result = CI_ERROR_QXZC; + chRConnectReleaseFlag = GetRouteConnectReleaseFlag(routeId); + if (ROUTE_CONNECT_RELEASE_YES == chRConnectReleaseFlag) + { + /* ͨ */ + result = CI_SUCCESS; + } + else + { + /* ¼ */ + SetErrorData(functionId, CI_DEVICE_TYPE_RELAY, devId, ETYPE_CANCLE_ZHAOCHA, devState, sendLevel); + /* ʧܷ */ + result = CI_ERROR_QXZC; + } + } } @@ -7802,37 +7812,61 @@ UINT8 OtherCiDevStatusCheck(UINT16 const routeId,const RouteOtherCheckStruct *pO */ static UINT8 CheckRelationSignalOnSameOpen(UINT16 const routeId,UINT16 const relationSignalId,UINT8 const devStatus) { - UINT8 routeState = 0u,routeLeadProperty = 0u; + UINT8 routeState = 0U; + UINT8 routeLeadProperty = 0U; UINT8 ret = CI_SUCCESS; UINT8 routeType = 0u; /*·*/ UINT8 relationSignalOpenColor = GetSignalCurColor(relationSignalId); UINT8 cRouteStartSigOpenColor = 0U; /*·ʼźŻɫ*/ - + UINT8 cRouteToLeadFlag = 0U; + UINT8 chOpenCloseState = 0U; routeState = GetRouteState(routeId); routeLeadProperty = GetRouteLeadProperty(routeId);/*ȡ·*/ routeType = GetRouteType(routeId); /*ȡ·*/ - if ((routeState != 0u) && (relationSignalOpenColor != 0u)) + + if ((routeState != 0U) && (relationSignalOpenColor != 0U)) { /* źſţ鱾·ҪŵźǷȵǰĿŵļҪ */ - if (SIGNAL_OPEN == GetSignalOpenCloseState(relationSignalOpenColor)) + chOpenCloseState = GetSignalOpenCloseState(relationSignalOpenColor); + if (SIGNAL_OPEN == chOpenCloseState) { switch (relationSignalOpenColor) { case SIGNAL_SHOWCOLOUR_REDYELLOW: /* Ƶ,źſűź */ - - if (((ROUTE_LEAD_PROPERTY_YES == routeLeadProperty) || (ROUTE_LEAD_PROPERTY_CBTC_YES == routeLeadProperty)) - && ((ROUTE_STATE_LEAD_LOCK == routeState) + if ((ROUTE_LEAD_PROPERTY_YES == routeLeadProperty) || (ROUTE_LEAD_PROPERTY_CBTC_YES == routeLeadProperty)) + { + /* ·Ϊ*/ + if ((ROUTE_STATE_LEAD_LOCK == routeState) || (ROUTE_STATE_LEAD_LOCKERR == routeState) - || (ROUTE_STATE_LEAD_OPEN == routeState))) - {/* ·Ϊҽ·״̬Ϊ<><쳣><> ,·, */ - ret = CI_SUCCESS; + || (ROUTE_STATE_LEAD_OPEN == routeState)) + { + /* ·״̬Ϊ<><쳣><> */ + ret = CI_SUCCESS; + } + else + { + cRouteToLeadFlag = GetRouteToLeadFlag(routeId); /*ȡ·ת־*/ + if ((ROUTE_TO_LEAD_FLAG_YES == cRouteToLeadFlag) && + ((ROUTE_STATE_YUXIAN_LOCK == routeState) || (ROUTE_STATE_NEAR_LOCK == routeState) + || (ROUTE_STATE_FIRST_LOCKERR == routeState) || (ROUTE_STATE_NEAR_LOCKERR == routeState))) + { + /*г·תת־Чг·ӽջԤջ쳣ӽ쳣ת*/ + ret = CI_SUCCESS; + } + else + { + ret = CI_ERROR; + } + + } } else { ret = CI_ERROR; } + break; case SIGNAL_SHOWCOLOUR_WHITE: if (ROUTE_TYPE_DIAOCHE == routeType) @@ -10844,7 +10878,7 @@ UINT8 CheckRouteZongRenJieFeasibility(const UINT16 routeId) UINT8 sectionSum = 0u;/*·*/ /*Ϸͼ*/ UINT8 sendLevel = ESEND_LEVEL_ATS; /*ATS*/ UINT16 secIdx = 0u;/*·ڰα*/ - + UINT8 chRouteConnectFlag = 0U; /**/ /* ·״̬ա*/ devId = 0u; @@ -10967,10 +11001,20 @@ UINT8 CheckRouteZongRenJieFeasibility(const UINT16 routeId) } else { - /* ¼ */ - SetErrorData(functionId, CI_DEVICE_TYPE_RELAY, devId, ETYPE_CANCLE_ZHAOCHA, devState, sendLevel); - /* ʧܷ */ - reResult = CI_ERROR; + chRouteConnectFlag = GetRouteConnectReleaseFlag(routeId); + if (ROUTE_CONNECT_RELEASE_YES == chRouteConnectFlag) + { + /* ͨ */ + reResult = CI_SUCCESS; + } + else + { + /* ¼ */ + SetErrorData(functionId, CI_DEVICE_TYPE_RELAY, devId, ETYPE_CANCLE_ZHAOCHA, devState, sendLevel); + /* ʧܷ */ + reResult = CI_ERROR; + } + } } diff --git a/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicProcess.c b/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicProcess.c index a2a6580..643e003 100644 --- a/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicProcess.c +++ b/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicProcess.c @@ -6362,13 +6362,15 @@ UINT8 RouteOtherSecAutoUnlockProcess(UINT16 const routeId, UINT16* phySectionId) UINT8 sendLevel = ESEND_LEVEL_ZERO; /*ATS*/ UINT8 chPhySecCurMergeState = 0U;/*εǰں״̬*/ UINT8 chPhySecPreMergeState = 0U;/*֮ǰں״̬*/ + UINT8 chPhyOtherLineFlag = 0U; + UINT16 wFrontPhyId = 0U; /**/ if(CI_SUCCESS == reResult) { /*ҵڵǰ·ĵһա*/ - if (nlockSectionId > 0u) + if (0U < nlockSectionId) { reResult = CI_SUCCESS; } @@ -6378,98 +6380,27 @@ UINT8 RouteOtherSecAutoUnlockProcess(UINT16 const routeId, UINT16* phySectionId) reResult = CI_ERROR; /*ID = 0*/ - *phySectionId = 0u; + *phySectionId = 0U; } } - if(CI_SUCCESS == reResult) + if (CI_SUCCESS == reResult) { - /*·Ϊ۷·ҽΪ۷*/ - if ((routeType == ROUTE_TYPE_RETURN) - && (nlockSectionId == returnSecId)) + /* жǷ߶Է */ + chPhyOtherLineFlag = GetPhyIsThisLineState(nlockSectionId); + if ((DEV_IS_THIS_LINE_NO == chPhyOtherLineFlag) && (UINT16_MAX == nextSecId) && (ROUTE_TYPE_RETURN != routeType)) { - /*۷*/ - /*۷ΡС֮ǰռá*/ - chPhySecCurMergeState = GetPhySecCurMergeState(returnSecId); - chPhySecPreMergeState = GetPhySecPreMergeState(returnSecId); - - if ((SECTION_OCCUPY_NO == chPhySecCurMergeState) && - (SECTION_OCCUPY_YES == chPhySecPreMergeState)) + /*βDZ·Ҳһ,ҽ·Ϊ۷*/ + wFrontPhyId = GetRoutePhySecFrontPhyId(routeId, nlockSectionId); + chPhySecPreMergeState = GetPhySecPreMergeState(wFrontPhyId); + chPhySecCurMergeState = GetPhySecCurMergeState(wFrontPhyId); + /* ǰһεǰУ֮ǰռ */ + if ((SECTION_OCCUPY_YES == chPhySecPreMergeState) && (SECTION_OCCUPY_NO == chPhySecCurMergeState)) { - reResult = CI_SUCCESS; - } - else - { - /* ʧܷ */ - reResult = CI_ERROR; - *phySectionId = nlockSectionId; - } - - if(CI_SUCCESS == reResult) - { - /*۳·һΡռá*/ - chPhySecCurMergeState = GetPhySecCurMergeState(backSecId); - - if (SECTION_OCCUPY_YES == chPhySecCurMergeState) - { - /*۷*/ - reResult = CI_SUCCESS; - } - else - { - /*۷쳣*/ - /* ¼ */ - SetErrorData(functionId,CI_DEVICE_TYPE_PHYSEC,backSecId,ETYPE_PS_RUNLOCK_ERROR,chPhySecCurMergeState,sendLevel); - /* ʧܷ */ - reResult = RETURN_AUTOLOCK_ERR_EXCEPT; - *phySectionId = nlockSectionId; - } - } - if(CI_SUCCESS == reResult) - { - /*۷·ʱ۳· ۳·״̬Ϊӽ*/ - if ((returnRouteLockTime < backRouteLockTime) - && ((ROUTE_STATE_NEAR_LOCK == backRouteState) - || (ROUTE_STATE_AUTO_UNLOCK == backRouteState))) - { - reResult = CI_SUCCESS; - *phySectionId = nlockSectionId; - } - else - { - /*۷쳣*/ - /* ¼ */ - SetErrorData(functionId,CI_DEVICE_TYPE_ROUTE, wPhySecRLockId,ETYPE_PS_RUNLOCK_ERROR, backRouteState,sendLevel); - /* ʧܷ */ - reResult = RETURN_AUTOLOCK_ERR_EXCEPT; - *phySectionId = nlockSectionId; - } - } - } - else - { - /**/ - /*ǰ֮ǰǰС֮ǰռá*/ - chPhySecCurMergeState = GetPhySecCurMergeState(nlockSectionId); - chPhySecPreMergeState = GetPhySecPreMergeState(nlockSectionId); - - if ((SECTION_OCCUPY_NO == chPhySecCurMergeState) && - (SECTION_OCCUPY_YES == chPhySecPreMergeState)) - { - reResult = CI_SUCCESS; - } - else - { - /* ʧܷ */ - reResult = CI_ERROR; - *phySectionId = nlockSectionId; - - } - if(CI_SUCCESS == reResult) - { - /* һΡռá*/ - chPhySecCurMergeState = GetPhySecCurMergeState(nextSecId); - if (SECTION_OCCUPY_YES == chPhySecCurMergeState) + chPhySecPreMergeState = GetPhySecPreMergeState(nlockSectionId); + chPhySecCurMergeState = GetPhySecCurMergeState(nlockSectionId); + /* εǰУ֮ǰռ */ + if ((SECTION_OCCUPY_YES == chPhySecPreMergeState) && (SECTION_OCCUPY_NO == chPhySecCurMergeState)) { /**/ reResult = CI_SUCCESS; @@ -6477,59 +6408,171 @@ UINT8 RouteOtherSecAutoUnlockProcess(UINT16 const routeId, UINT16* phySectionId) } else { - if (validReturnSigId > 0u)/*ͨ·ת۷·*/ - { - /*۳·һռ*/ - chPhySecCurMergeState = GetPhySecCurMergeState(backSecId); + /* ʧܷ */ + reResult = CI_ERROR; + *phySectionId = nlockSectionId; + } + } + else + { + /* ʧܷ */ + reResult = CI_ERROR; + *phySectionId = nlockSectionId; + } - if (SECTION_OCCUPY_YES == chPhySecCurMergeState) - { - /*۷*/ - reResult = CI_SUCCESS; - } - else - { - /*۷쳣*/ - /* ¼ */ - SetErrorData(functionId,CI_DEVICE_TYPE_PHYSEC,backSecId,ETYPE_PS_RUNLOCK_ERROR, chPhySecCurMergeState,sendLevel); - /* ʧܷ */ - reResult = RETURN_AUTOLOCK_ERR_EXCEPT; - *phySectionId = nlockSectionId; - } - if(CI_SUCCESS == reResult) - { - /*۷·ʱ۳· ۳·״̬Ϊӽ*/ - if ((((INT32)(backRouteLockTime- returnRouteLockTime)) > 0 ) - &&(backRouteState == ROUTE_STATE_NEAR_LOCK)) - { - reResult = CI_SUCCESS; - *phySectionId = nlockSectionId; - } - else - { - /*۷쳣*/ - /* ¼ */ - SetErrorData(functionId,CI_DEVICE_TYPE_ROUTE, wPhySecRLockId,ETYPE_PS_RUNLOCK_ERROR, backRouteState,sendLevel); - /* ʧܷ */ - reResult = RETURN_AUTOLOCK_ERR_EXCEPT; - *phySectionId = nlockSectionId; - } - } + } + else + { + /*·Ϊ۷·ҽΪ۷*/ + if ((ROUTE_TYPE_RETURN == routeType) + && (nlockSectionId == returnSecId)) + { + /*۷*/ + /*۷ΡС֮ǰռá*/ + chPhySecCurMergeState = GetPhySecCurMergeState(returnSecId); + chPhySecPreMergeState = GetPhySecPreMergeState(returnSecId); + + if ((SECTION_OCCUPY_NO == chPhySecCurMergeState) && + (SECTION_OCCUPY_YES == chPhySecPreMergeState)) + { + reResult = CI_SUCCESS; + } + else + { + /* ʧܷ */ + reResult = CI_ERROR; + *phySectionId = nlockSectionId; + } + + if (CI_SUCCESS == reResult) + { + /*۳·һΡռá*/ + chPhySecCurMergeState = GetPhySecCurMergeState(backSecId); + + if (SECTION_OCCUPY_YES == chPhySecCurMergeState) + { + /*۷*/ + reResult = CI_SUCCESS; } else - {/*ͨ·쳣*/ - /*һΡСɳ*/ - /* 쳣 */ + { + /*۷쳣*/ /* ¼ */ - SetErrorData(functionId,CI_DEVICE_TYPE_PHYSEC,nextSecId,ETYPE_PS_AUNLOCK_ERROR, chPhySecCurMergeState,sendLevel); + SetErrorData(functionId, CI_DEVICE_TYPE_PHYSEC, backSecId, ETYPE_PS_RUNLOCK_ERROR, chPhySecCurMergeState, sendLevel); + /* ʧܷ */ + reResult = RETURN_AUTOLOCK_ERR_EXCEPT; + *phySectionId = nlockSectionId; + } + } + if (CI_SUCCESS == reResult) + { + /*۷·ʱ۳· ۳·״̬Ϊӽ*/ + if ((returnRouteLockTime < backRouteLockTime) + && ((ROUTE_STATE_NEAR_LOCK == backRouteState) + || (ROUTE_STATE_AUTO_UNLOCK == backRouteState))) + { + reResult = CI_SUCCESS; + *phySectionId = nlockSectionId; + } + else + { + /*۷쳣*/ + /* ¼ */ + SetErrorData(functionId, CI_DEVICE_TYPE_ROUTE, wPhySecRLockId, ETYPE_PS_RUNLOCK_ERROR, backRouteState, sendLevel); /* ʧܷ */ reResult = RETURN_AUTOLOCK_ERR_EXCEPT; *phySectionId = nlockSectionId; } } } + else + { + /**/ + /*ǰ֮ǰǰС֮ǰռá*/ + chPhySecCurMergeState = GetPhySecCurMergeState(nlockSectionId); + chPhySecPreMergeState = GetPhySecPreMergeState(nlockSectionId); + + if ((SECTION_OCCUPY_NO == chPhySecCurMergeState) && + (SECTION_OCCUPY_YES == chPhySecPreMergeState)) + { + reResult = CI_SUCCESS; + } + else + { + /* ʧܷ */ + reResult = CI_ERROR; + *phySectionId = nlockSectionId; + + } + if (CI_SUCCESS == reResult) + { + /* һΡռá*/ + chPhySecCurMergeState = GetPhySecCurMergeState(nextSecId); + if (SECTION_OCCUPY_YES == chPhySecCurMergeState) + { + /**/ + reResult = CI_SUCCESS; + *phySectionId = nlockSectionId; + } + else + { + if (0U < validReturnSigId)/*ͨ·ת۷·*/ + { + /*۳·һռ*/ + chPhySecCurMergeState = GetPhySecCurMergeState(backSecId); + + if (SECTION_OCCUPY_YES == chPhySecCurMergeState) + { + /*۷*/ + reResult = CI_SUCCESS; + } + else + { + /*۷쳣*/ + /* ¼ */ + SetErrorData(functionId, CI_DEVICE_TYPE_PHYSEC, backSecId, ETYPE_PS_RUNLOCK_ERROR, chPhySecCurMergeState, sendLevel); + /* ʧܷ */ + reResult = RETURN_AUTOLOCK_ERR_EXCEPT; + *phySectionId = nlockSectionId; + } + if (CI_SUCCESS == reResult) + { + /*۷·ʱ۳· ۳·״̬Ϊӽ*/ + if (0 < (((INT32)(backRouteLockTime - returnRouteLockTime))) + && (ROUTE_STATE_NEAR_LOCK == backRouteState)) + { + reResult = CI_SUCCESS; + *phySectionId = nlockSectionId; + } + else + { + /*۷쳣*/ + /* ¼ */ + SetErrorData(functionId, CI_DEVICE_TYPE_ROUTE, wPhySecRLockId, ETYPE_PS_RUNLOCK_ERROR, backRouteState, sendLevel); + /* ʧܷ */ + reResult = RETURN_AUTOLOCK_ERR_EXCEPT; + *phySectionId = nlockSectionId; + } + } + } + else + {/*ͨ·쳣*/ + /*һΡСɳ*/ + /* 쳣 */ + /* ¼ */ + SetErrorData(functionId, CI_DEVICE_TYPE_PHYSEC, nextSecId, ETYPE_PS_AUNLOCK_ERROR, chPhySecCurMergeState, sendLevel); + /* ʧܷ */ + reResult = RETURN_AUTOLOCK_ERR_EXCEPT; + *phySectionId = nlockSectionId; + } + } + } + } } + } + + return reResult; } @@ -7044,6 +7087,7 @@ UINT8 RouteCancelLogicProcess(UINT16 const routeId) /*Ϸͼ*/ UINT8 sendLevel = ESEND_LEVEL_ATS; /*ATS*/ UINT8 cRouteType = 0U; /*·*/ + UINT8 chRConnectReleaseFlag = 0U; /**/ /* ·״̬ա*/ @@ -7131,10 +7175,20 @@ UINT8 RouteCancelLogicProcess(UINT16 const routeId) } else { - /* ¼ */ - SetErrorData(functionId,CI_DEVICE_TYPE_RELAY,devId,ETYPE_CANCLE_ZHAOCHA,devState,sendLevel); - /* ʧܷ */ - reResult = CI_ERROR; + chRConnectReleaseFlag = GetRouteConnectReleaseFlag(routeId); + if (ROUTE_CONNECT_RELEASE_YES == chRConnectReleaseFlag) + { + /* ͨ */ + reResult = CI_SUCCESS; + } + else + { + /* ¼ */ + SetErrorData(functionId, CI_DEVICE_TYPE_RELAY, devId, ETYPE_CANCLE_ZHAOCHA, devState, sendLevel); + /* ʧܷ */ + reResult = CI_ERROR; + } + } } @@ -13105,4 +13159,84 @@ void UpdateRouteCouplinkFlag(const UINT16 wRouteId) /**/ } +} +/* +* ߽ӳ· +* ˵ const UINT16 wRouteId ·ID +* ֵ +* Create: lyj 20260603 +*/ +void ConnectRouteReleaseProc(const UINT16 wRouteId) +{ + UINT8 chRouteState = 0U; /*·״̬*/ + UINT8 chResult = 0U; + UINT16 wFirstOccuSecId = 0U;/*·ڷһռõID*/ + UINT8 chDevState = 0U; + UINT8 chTrainEnterSta = 0U; + UINT8 chZongRenJieResult = 0U; + + if ((0U < wRouteId) && (ROUTE_SUM_MAX > wRouteId)) + { + chRouteState = GetRouteState(wRouteId); + + if ((ROUTE_STATE_FIRST_LOCK == chRouteState) + || (ROUTE_STATE_FIRST_LOCKERR == chRouteState) + || (ROUTE_STATE_YUXIAN_LOCK == chRouteState) + || (ROUTE_STATE_NEAR_LOCKERR == chRouteState)) + { + chZongRenJieResult = CheckRouteZongRenJieFeasibility(wRouteId); + chResult = RouteAllSecOccuClearCheck(wRouteId, &wFirstOccuSecId, &chDevState); + if (CI_SUCCESS == chZongRenJieResult) + { + SetRouteStateManage(wRouteId, ROUTE_STATE_DELAY_UNLOCK); /*-->ý·ʱ*/ + + if (CI_SUCCESS == chResult) + { + /*·ռѹʱȫ*/ + SetRouteZongRenJieDelayType(wRouteId, ROUTE_ZRJ_DELAY_TYPE_IDLE); + } + else + { + /*ʱ󲿷̹һռѹ֮ǰα̹*/ + SetRouteZongRenJieDelayType(wRouteId, ROUTE_ZRJ_DELAY_TYPE_EXP_TO_OCCUPY); + } + } + else + { + /*·ܽ*/ + } + + } + else if ((ROUTE_STATE_LEAD_LOCK == chRouteState) || (ROUTE_STATE_LEAD_LOCKERR == chRouteState)) + { + chTrainEnterSta = GetRouteTrainEnterFlag(wRouteId); + chZongRenJieResult = RouteExceptLastSecOccuClrCheck(wRouteId); + if (CI_SUCCESS == chZongRenJieResult) + { + /*οлһռ*/ + SetRouteStateManage(wRouteId, ROUTE_STATE_DELAY_UNLOCK); /*-->ý·ʱ*/ + /*ʱȫ*/ + SetRouteZongRenJieDelayType(wRouteId, ROUTE_ZRJ_DELAY_TYPE_IDLE);/*ʱν*/ + } + else if (ROUTE_TRAIN_ENTER_FLAG_NO == chTrainEnterSta) + { + SetRouteStateManage(wRouteId, ROUTE_STATE_DELAY_UNLOCK); /*-->ý·ʱ*/ + /*ʱȫ*/ + SetRouteZongRenJieDelayType(wRouteId, ROUTE_ZRJ_DELAY_TYPE_IDLE);/*ʱν*/ + } + else + { + /**/ + } + } + else + { + /*¼·״̬*/ + SetErrorData(EFUNC_ROUTE_ZRJ_DEAL, CI_DEVICE_TYPE_ROUTE, wRouteId, ETYPE_ROUTE_STATE, chRouteState, ESEND_LEVEL_ATS); + } + } + else + { + /*·ID쳣*/ + } } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicProcess.h b/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicProcess.h index 57a3165..c516182 100644 --- a/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicProcess.h +++ b/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicProcess.h @@ -841,6 +841,13 @@ UINT8 SetRouteCouplinkProcess(const UINT16 wRouteId, const UINT8 functionId, con * Create: 20250919 */ void UpdateRouteCouplinkFlag(const UINT16 wRouteId); +/* +* ߽ӳ· +* ˵ const UINT16 wRouteId ·ID +* ֵ +* Create: lyj 20260603 +*/ +void ConnectRouteReleaseProc(const UINT16 wRouteId); #ifdef __cplusplus } diff --git a/TSCP/src/APP/ciapp/PSD/PSDConfigDataManage.c b/TSCP/src/APP/ciapp/PSD/PSDConfigDataManage.c index 2f1df0e..7157403 100644 --- a/TSCP/src/APP/ciapp/PSD/PSDConfigDataManage.c +++ b/TSCP/src/APP/ciapp/PSD/PSDConfigDataManage.c @@ -1183,3 +1183,51 @@ UINT16 GetIbpConfmRelayId(const UINT16 doorId) } return retVal; } + +/* +* õа忨 +* ˵ const UINT16 PsdId, IDUINT16 wBoardId 忨Id +* ֵ CI_SUCCESS CI_ERROR +*/ +UINT8 SetPsdRelateReverseRelay(const UINT16 PsdId, UINT16 wBoardId) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT8 chRet = CI_ERROR; + bufIndex = GetPsdConfigBufIndex(PsdId); /*ȡ±*/ + + if (bufIndex < PSD_SUM_MAX) + { + PsdConfigDataStru[bufIndex].wReverseBoardId = wBoardId; + chRet = CI_SUCCESS; + } + else + { + ; + } + return chRet; +} + +/* +* ȡа忨 +* ˵ const UINT16 wPsdId, ID +* ֵ UINT16_MAX: ȡʧ +* 0: ޵ +* [1,65534]忨ID +*/ +UINT16 GetPsdRelateReverseBoardId(const UINT16 wPsdId) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT16 retVal = UINT16_MAX; + + bufIndex = GetPsdConfigBufIndex(wPsdId); /*ȡ±*/ + + if (bufIndex < PSD_SUM_MAX) + { + retVal = PsdConfigDataStru[bufIndex].wReverseBoardId; + } + else + { + retVal = UINT16_MAX; + } + return retVal; +} diff --git a/TSCP/src/APP/ciapp/PSD/PSDConfigDataManage.h b/TSCP/src/APP/ciapp/PSD/PSDConfigDataManage.h index caa656a..c1e571d 100644 --- a/TSCP/src/APP/ciapp/PSD/PSDConfigDataManage.h +++ b/TSCP/src/APP/ciapp/PSD/PSDConfigDataManage.h @@ -73,6 +73,7 @@ typedef struct S_PsdConfigDataStruct UINT16 IncloudeEsbIdBuf[PSD_INCLUDE_ESB_NUM]; /*ŰESB ID*/ UINT8 IncloudeEsbNum; /*ESB*/ UINT16 wIbpRelayId; /*IBP̷ť̵ID*/ + UINT16 wReverseBoardId; /*а忨Id*/ } PsdConfigDataStruct; @@ -461,6 +462,23 @@ UINT16* GetPsdIncloudeEsbIdBuf(const UINT16 psdId); */ UINT16 GetIbpConfmRelayId(const UINT16 doorId); +/* +* õа忨 +* ˵ const UINT16 PsdId, IDUINT16 wBoardId 忨Id +* ֵ CI_SUCCESS CI_ERROR +*/ +UINT8 SetPsdRelateReverseRelay(const UINT16 PsdId,UINT16 wBoardId); + +/* +* ȡа忨 +* ˵ const UINT16 wPsdId, ID +* ֵ UINT16_MAX: ȡʧ +* 0: ޵ +* [1,65534]忨ID +*/ +UINT16 GetPsdRelateReverseBoardId(const UINT16 wPsdId); + + #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/PSD/PSDDataManage.c b/TSCP/src/APP/ciapp/PSD/PSDDataManage.c index 36eba83..d692c3d 100644 --- a/TSCP/src/APP/ciapp/PSD/PSDDataManage.c +++ b/TSCP/src/APP/ciapp/PSD/PSDDataManage.c @@ -851,7 +851,7 @@ UINT32 GetStartDetectionCycNum(const UINT16 doorId) * ֵ * */ -void SetStartDetectionState(const UINT16 doorId, const UINT32 detectionState) +void SetStartDetectionState(const UINT16 doorId, const UINT8 detectionState) { UINT16 bufIndex = 0u; /*±*/ @@ -861,7 +861,7 @@ void SetStartDetectionState(const UINT16 doorId, const UINT32 detectionState) { if ((JXTC_START_DETECTION_NO == detectionState) || (JXTC_START_DETECTION_YES == detectionState) ) { - PsdDataStru[bufIndex].StartDetectionState = (UINT8)(detectionState); + PsdDataStru[bufIndex].StartDetectionState = detectionState; } else { @@ -906,7 +906,7 @@ UINT8 GetStartDetectionState(const UINT16 doorId) * ֵ * */ -void SetStopDetectionState(const UINT16 doorId, const UINT32 detectionState) +void SetStopDetectionState(const UINT16 doorId, const UINT8 detectionState) { UINT16 bufIndex = 0u; /*±*/ @@ -916,7 +916,7 @@ void SetStopDetectionState(const UINT16 doorId, const UINT32 detectionState) { if ((JXTC_STOP_DETECTION_NO == detectionState) || (JXTC_STOP_DETECTION_YES == detectionState) ) { - PsdDataStru[bufIndex].StopDetectionState = (UINT8)(detectionState); + PsdDataStru[bufIndex].StopDetectionState = detectionState; } else { @@ -1405,7 +1405,7 @@ UINT16 GetPsdEditGroupInfoFromPsdData(const UINT16 doorId) * ֵ * */ -void SetVOBCDoorState(const UINT16 doorId, const UINT32 doorState) +void SetVOBCDoorState(const UINT16 doorId, const UINT8 doorState) { UINT16 bufIndex = 0u; /*±*/ @@ -1415,7 +1415,7 @@ void SetVOBCDoorState(const UINT16 doorId, const UINT32 doorState) { if ((PSD_DOOR_CLOSEDANDLOCKED_VALID == doorState) || (PSD_DOOR_CLOSEDANDLOCKED_INVALID == doorState)) { - PsdDataStru[bufIndex].VOBCDoorState = (UINT8)(doorState); + PsdDataStru[bufIndex].VOBCDoorState = doorState; } else { @@ -3416,4 +3416,58 @@ UINT8 GetPsdStateToVobc(const UINT16 doorId) } } return chRet; +} + +/* +* г״̬ +* ˵ const UINT16 doorId, ID +* const UINT32 detectionState, ״̬ +* ֵ +* +*/ +void SetTrainZeroSpeedState(const UINT16 doorId, const UINT8 detectionState) +{ + UINT16 bufIndex = 0u; /*±*/ + + bufIndex = GetPsdConfigBufIndex(doorId); /*ȡ±*/ + + if (bufIndex < PSD_SUM_MAX) + { + if ((PSD_TRAIN_ZERO_SPEED_NO == detectionState) || (PSD_TRAIN_ZERO_SPEED_YES == detectionState)) + { + PsdDataStru[bufIndex].chTrainZeroSpeedState = detectionState; + } + else + { + /**/ + } + + } + else + { + /**/ + } +} +/* +* ȡг״̬ +* ˵ const UINT16 doorId, ID +* ֵ 0: ȡʧ +* >0: ״̬ +*/ +UINT8 GetTrainZeroSpeedState(const UINT16 doorId) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT8 retVal = CI_ERROR; + + bufIndex = GetPsdConfigBufIndex(doorId); /*ȡ±*/ + + if (bufIndex < PSD_SUM_MAX) + { + retVal = PsdDataStru[bufIndex].chTrainZeroSpeedState; + } + else + { + retVal = CI_ERROR; + } + return retVal; } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/PSD/PSDDataManage.h b/TSCP/src/APP/ciapp/PSD/PSDDataManage.h index 40963f7..e749f06 100644 --- a/TSCP/src/APP/ciapp/PSD/PSDDataManage.h +++ b/TSCP/src/APP/ciapp/PSD/PSDDataManage.h @@ -98,6 +98,7 @@ typedef struct S_PsdDataStruct UINT32 JXTCMutualLockStartCycNum; /*϶̽⻥ʼʱ*/ UINT8 ibpButtonState; /*IBP̷ť״̬(ֶ̬)*/ UINT32 IBPPressCycNum; /*IBPʼ*/ + UINT8 chTrainZeroSpeedState; /*г״̬*/ } PsdDataStruct; /*ݽṹ*/ @@ -386,7 +387,7 @@ UINT32 GetStartDetectionCycNum(const UINT16 doorId); * ֵ * */ -void SetStartDetectionState(const UINT16 doorId, const UINT32 detectionState); +void SetStartDetectionState(const UINT16 doorId, const UINT8 detectionState); /* * ȡʼ̽״̬ * ˵ const UINT16 routeId, ·ID @@ -402,7 +403,7 @@ UINT8 GetStartDetectionState(const UINT16 doorId); * ֵ * */ -void SetStopDetectionState(const UINT16 doorId, const UINT32 detectionState); +void SetStopDetectionState(const UINT16 doorId, const UINT8 detectionState); /* * ȡֹͣ̽״̬ @@ -541,7 +542,7 @@ UINT16 GetPsdEditGroupInfoFromPsdData(const UINT16 doorId); * ֵ * */ -void SetVOBCDoorState(const UINT16 doorId, const UINT32 doorState); +void SetVOBCDoorState(const UINT16 doorId, const UINT8 doorState); /* * ȡVOBC2CI״̬Ϣ @@ -1185,6 +1186,23 @@ UINT8 SetIBPPressCycNum(const UINT16 doorId, const UINT32 startCycNum); * ֵ ״̬ */ UINT8 GetPsdStateToVobc(const UINT16 doorId); + +/* +* г״̬ +* ˵ const UINT16 doorId, ID +* const UINT32 detectionState, ״̬ +* ֵ +* +*/ +void SetTrainZeroSpeedState(const UINT16 doorId, const UINT8 detectionState); + +/* +* ȡг״̬ +* ˵ const UINT16 doorId, ID +* ֵ 0: ȡʧ +* >0: ״̬ +*/ +UINT8 GetTrainZeroSpeedState(const UINT16 doorId); #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/PSD/PSDDefine.h b/TSCP/src/APP/ciapp/PSD/PSDDefine.h index ccb324b..d1c7470 100644 --- a/TSCP/src/APP/ciapp/PSD/PSDDefine.h +++ b/TSCP/src/APP/ciapp/PSD/PSDDefine.h @@ -17,7 +17,7 @@ /*ֵ*/ -#define PSD_SUM_MAX ((UINT16)150U) /*ֵ*/ +#define PSD_SUM_MAX ((UINT16)200U) /*ֵ*/ /*Źijվ·Ŀֵ*/ #define RALATED_OUT_STATION_ROUTE_SUM_MAX ((UINT16)10U) /*Źijվ·Ŀֵ*/ @@ -228,4 +228,8 @@ #define CI_IVOC_PSD_STATE_OPEN ((UINT8)0x55U) /*CIIVOCŴ*/ #define CI_IVOC_PSD_STATE_PANGLU ((UINT8)0xCCU) /*CIIVOCŻ*/ #define CI_IVOC_PSD_STATE_OPEN_EXCEPT ((UINT8)0x33U) /*CIIVOC쳣*/ + +#define PSD_TRAIN_ZERO_SPEED_YES ((UINT8)0x55U) /*г*/ +#define PSD_TRAIN_ZERO_SPEED_NO ((UINT8)0xAAU) /*г*/ + #endif diff --git a/TSCP/src/APP/ciapp/ParsePack/CiInterfaceDefine.h b/TSCP/src/APP/ciapp/ParsePack/CiInterfaceDefine.h index 96ca9c3..59b3e6a 100644 --- a/TSCP/src/APP/ciapp/ParsePack/CiInterfaceDefine.h +++ b/TSCP/src/APP/ciapp/ParsePack/CiInterfaceDefine.h @@ -164,6 +164,8 @@ #define ATS_CMD_APPLY_PASSXICHE ((UINT8)0xB2) /*ֵϴ-ģʽ*/ #define ATS_CMD_CANCEL_PASSXICHE ((UINT8)0xB3) /*ֵȡϴ-ģʽ*/ #define ATS_CMD_CANCEL_PSD_EXCEPT ((UINT8)0xBA) /*ֵȡվ̨쳣״̬*/ +#define ATS_CMD_CONNECT_ROUTE_RELEASE_ONE ((UINT8)0xBB) /*߽ӳ·һ*/ +#define ATS_CMD_CONNECT_ROUTE_RELEASE_TWO ((UINT8)0xBC) /*߽ӳ·*/ /****궨****/ #define CI_CMD_PHYSEC_USING_APPLY ((UINT16)0x0001) /**/ @@ -246,9 +248,10 @@ #define CI_BACK_GROUP_AUTO_ROUTE_SET_ERR ((UINT8)0x7e) /*Զ·Զʧ*/ -#define CI_BACK_AUTO_TRIGGER_SET_ERR (UINT8)0x85 /*·Զ־ʧ*/ +#define CI_BACK_AUTO_TRIGGER_SET_ERR ((UINT8)0x85) /*·Զ־ʧ*/ #define CI_BACK_LEAD_ROUTE_CANCEL ((UINT8)0xA4) /*·޷ʹȡ*/ #define CI_BACK_COUPLINK_ROUTE_IDLE ((UINT8)0xAF) /*ҽ·ޱҳ*/ +#define CI_BACK_CONNECT_ROUTE_RELEASE ((UINT8)0xBB) /*߽ӳ·*/ /*źŻϷ*/ #define CI_BACK_SIG_START_OPEN ((UINT8)0x11) /*·ʼźŻ*/ @@ -469,6 +472,48 @@ #define CI_BACK_ALLAUTO_RETURN_FLOOD_STATE_ERR ((UINT8)0x9C) /*ȫԶ۷·ڷŲ*/ #define CI_BACK_ALLAUTO_RETURN_COUPROUTE_SET ((UINT8)0xB2) /*ȫԶ۷ҽ·Ѱ*/ +#define ATS_CI_INFO_TYPE_FIRST_LEN ((UINT16)11) /*ATS״*/ +#define ATS_CI_INFO_TYPE_SND_LEN ((UINT16)15) /*ATSٴ*/ + +/* ATS֡״Ϣṹ */ +typedef struct +{ + UINT8 chFlag; /*״Ϣ״̬*/ + UINT32 dwCycle; /*״Ϣں*/ + UINT8 chAtsId; /*ATS:Ϊ0ʱ*/ + UINT8 chRtuId; /*RtuţΪ0ʱֵأȫ0ATS*/ + UINT16 wIndex; /*վ*/ + UINT8 chTiocId; /*TIOC*/ + UINT32 dwTime; /*ʱ*/ + UINT16 wDevId; /*豸ID*/ +}AtsFollowUpCmdFstStru; + +/* ATS֡ٴϢṹ */ +typedef struct +{ + UINT8 chFlag; /*״Ϣ״̬*/ + UINT32 dwCycle; /*ٴϢں*/ + UINT8 chAtsId; /*ATS:Ϊ0ʱ*/ + UINT8 chRtuId; /*RtuţΪ0ʱֵأȫ0ATS*/ + UINT16 wIndex; /*վ*/ + UINT8 chTiocId; /*TIOC*/ + UINT32 dwTime; /*ʱ*/ + UINT16 wDevId; /*豸ID*/ + UINT32 dwCrc32; /*ٴηCrc*/ +}AtsFollowUpCmdSndStru; + +/*֡Ϣṹ */ +typedef struct +{ + UINT8 chFlag; /*ϢЧ*/ + UINT8 chTiocId; /*TIOC*/ + UINT8 chAtsId; /*Ats: жʹã*/ + UINT8 chRtuId; /*Rtu*/ + UINT16 wIndex; /*վ*/ + UINT32 dwTime; /*ʱ*/ + UINT8 chOpStatus; /**/ + UINT32 dwCrc32; /*CRC*/ +}RCIFollowUpReplyStru; #endif diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackAtsData.c b/TSCP/src/APP/ciapp/ParsePack/ParsePackAtsData.c index 72da56d..e5a52e2 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackAtsData.c +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackAtsData.c @@ -46,6 +46,36 @@ PSCToCiDataStruct* pscCiSendToAtsDataStru = NULL; ReciveAtsCmdDataCycInfo szReciveAtsCmdDataCycInfo[ATS_SUM_MAX * 2U] = {0U}; /*յATSںϢ*/ UINT16 gReciveAtsCmdDataDeviceSum = 0U; /*յATS豸Ŀ*/ +AtsFollowUpCmdFstStru gDansuoCancleMsgFst = { 0u }; /*ȡ״Ϣ*/ +RCIFollowUpReplyStru gDansuoCancleReplyFst = { 0u }; /*ȡ״ȷ*/ +AtsFollowUpCmdSndStru gDansuoCancleMsgSnd = { 0u }; /*ȡϢ*/ +RCIFollowUpReplyStru gDansuoCancleReplySnd = { 0u }; /*ȡȷ*/ + +AtsFollowUpCmdFstStru gSwitchUnflockMsgFst = { 0u }; /*״Ϣ*/ +RCIFollowUpReplyStru gSwitchUnflockReplyFst = { 0u }; /*״ȷ*/ +AtsFollowUpCmdSndStru gSwitchUnflockMsgSnd = { 0u }; /*Ϣ*/ +RCIFollowUpReplyStru gSwitchUnflockReplySnd = { 0u }; /*ȷ*/ + +AtsFollowUpCmdFstStru gSecUnflockMsgFst = { 0u }; /*ν״Ϣ*/ +RCIFollowUpReplyStru gSecUnflockReplyFst = { 0u }; /*ν״ȷ*/ +AtsFollowUpCmdSndStru gSecUnflockMsgSnd = { 0u }; /*νϢ*/ +RCIFollowUpReplyStru gSecUnflockReplySnd = { 0u }; /*νȷ*/ + +AtsFollowUpCmdFstStru gSignalUnflockMsgFst = { 0u }; /*źŻ״Ϣ*/ +RCIFollowUpReplyStru gSignalUnflockReplyFst = { 0u }; /*źŻ״ȷ*/ +AtsFollowUpCmdSndStru gSignalUnflockMsgSnd = { 0u }; /*źŻϢ*/ +RCIFollowUpReplyStru gSignalUnflockReplySnd = { 0u }; /*źŻȷ*/ + +AtsFollowUpCmdFstStru gZRJMsgFst = { 0u }; /*˽״Ϣ*/ +RCIFollowUpReplyStru gZRJReplyFst = { 0u }; /*˽״ȷ*/ +AtsFollowUpCmdSndStru gZRJMsgSnd = { 0u }; /*˽Ϣ*/ +RCIFollowUpReplyStru gZRJReplySnd = { 0u }; /*˽ȷ*/ + +AtsFollowUpCmdFstStru gCanclPsdExceptMsgFst = { 0u }; /*վ̨쳣״Ϣ*/ +RCIFollowUpReplyStru gCanclPsdExceptReplyFst = { 0u }; /*վ̨쳣״ȷ*/ +AtsFollowUpCmdSndStru gCanclPsdExceptMsgSnd = { 0u }; /*վ̨쳣Ϣ*/ +RCIFollowUpReplyStru gCanclPsdExceptReplySnd = { 0u }; /*վ̨쳣ȷ*/ + /* * CiAts߼Ϣ * ˵ const UINT8* pDataBuf, ݻ @@ -189,7 +219,6 @@ UINT8 ParseAtsOrXianDiToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLengt UINT32 dwCiAndAtsTimeOutTime = 0u; /*ATSͨжʱ*/ UINT32 dwCiCurappCycleTime = 0u; /*ǰ*/ INT32 remainValidiy = 0; /*ʣʱǷЧ*/ - UINT16 wApplyDataLenth = 0U; /*Ӧòݳ*/ UINT16 wTmpDataLen = 0U; /*ݳʱ¼*/ UINT16 wMsgLen = 0U; /*һӦݳ*/ UINT16 wMsgType = 0U; /**/ @@ -198,7 +227,14 @@ UINT8 ParseAtsOrXianDiToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLengt UINT8 chCurSystemAreaState = 0U; /*ǰϵͳ״̬*/ UINT32 dwReciveCmdDataAtsCycNum = 0U; /*յATSʱATSں*/ UINT32 dwSystemUpdateMainUseCycNum = 0U; /*ϵͳʼں*/ - + UINT16 wPreCmdNum = 0U;/*֡УͨϢУʧʱյ֡*/ + UINT16 wCurCmdNum = 0U;/*֡ǰ*/ + AtsFollowUpCmdFstStru tempFstCmd[FOLLOWUP_MSGID_MAX] = { 0U };/*һʱ洢*/ + AtsFollowUpCmdSndStru tempSndCmd[FOLLOWUP_MSGID_MAX] = { 0U };/*ʱ洢*/ + UINT16 wIndex = 0U;/*ʱϢ洢*/ + UINT16 wMsgTypeTmp = 0U;/*ȫֱϢ*/ + AtsFollowUpCmdFstStru *pGlobalFst = NULL; + AtsFollowUpCmdSndStru *pGlobalSnd = NULL; if ((NULL!= dataBuf) && (0u < dataLength)) { chAtsInterfaceType = GetCiFunctionSwitchConfig(FUNC_ATS_INTERFACE_IDENTIFIER); @@ -261,6 +297,8 @@ UINT8 ParseAtsOrXianDiToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLengt else { chRetVal = CI_SUCCESS; + /*ȻȡһǴ洢·*/ + wPreCmdNum = GetCiRevCmdStruCurSum(); while (wTmpDataLen < hlhtGalHead.totalDataLen) { @@ -321,6 +359,83 @@ UINT8 ParseAtsOrXianDiToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLengt debug_infor_printf((const)"\nATS/Xiandi %d Not Deal Cmd,Because chCurSystemAreaState %d\n", chDeciveId, chCurSystemAreaState); } break; + case ATS_CI_INFO_FST_DS_CANCEL: + case ATS_CI_INFO_FST_SWIUNFLOCK: + case ATS_CI_INFO_FST_FAULTUNLOCK: + case ATS_CI_INFO_FST_SECUNFLOCK: + case ATS_CI_INFO_FST_SIGUNFLOCK: + case ATS_CI_INFO_FST_ZONGRENJIE: + case ATS_CI_INFO_FST_PSD_UNEXCEPT: + chCurSystemAreaState = GetLocalCiBackUpPattern(); + if (SYSTEM_WORK_MODE_MAIN == chCurSystemAreaState) + { + /*ý鵱ǰðǷѾ*/ + dwReciveCmdDataAtsCycNum = GetReciveCmdDataAtsCycNum(chDevType, chDeciveId); + dwSystemUpdateMainUseCycNum = GetSystemUpdateMainUseCycNum(); + + if ((dwReciveCmdDataAtsCycNum < hlhtGalHead.crntOwnMsgSN) || + (dwSystemUpdateMainUseCycNum <= hlhtGalHead.recvOppMsgSN)) + { + /*ǰATSʱںŴڽյATSʱATSں + ǰATSʱںŴڵڵǰϵͳʼں*/ + wIndex = (wMsgType - ATS_CI_INFO_FST_DS_CANCEL) / 4; + if ((FOLLOWUP_MSGID_MAX > wIndex)&&(ATS_CI_INFO_TYPE_FIRST_LEN == wMsgCheckLen)) + { + chRetVal = ProcessCmdFirstMsgCheck(dataBuf, ii, &tempFstCmd[wIndex]); + ii += ATS_CI_INFO_TYPE_FIRST_LEN; + chExistCmdDataFlag = 1U; /*ôݱ־ЧݽΪЧ*/ + } + else + { + chRetVal = CI_ERROR;/*Խ*/ + } + + } + else + { + ii += wMsgCheckLen; + /*Ѿһ*/ + debug_infor_printf((const)"\nATS/Xiandi %d Not Deal FstCmd%d,Because curCmd has been processed by another System,dwReciveCmdDataAtsCycNum %d dwSystemUpdateMainUseCycNum %d\n", chDeciveId, wMsgType, dwReciveCmdDataAtsCycNum, dwSystemUpdateMainUseCycNum); + } + } + break; + case ATS_CI_INFO_SND_DS_CANCEL: + case ATS_CI_INFO_SND_SWIUNFLOCK: + case ATS_CI_INFO_SND_FAULTUNLOCK: + case ATS_CI_INFO_SND_SECUNFLOCK: + case ATS_CI_INFO_SND_SIGUNFLOCK: + case ATS_CI_INFO_TYPE_SND_ZRJ: + case ATS_CI_INFO_SND_PSD_UNEXCEPT: + chCurSystemAreaState = GetLocalCiBackUpPattern(); + if (SYSTEM_WORK_MODE_MAIN == chCurSystemAreaState) + { + /*ý鵱ǰðǷѾ*/ + dwReciveCmdDataAtsCycNum = GetReciveCmdDataAtsCycNum(chDevType, chDeciveId); + dwSystemUpdateMainUseCycNum = GetSystemUpdateMainUseCycNum(); + + if ((dwReciveCmdDataAtsCycNum < hlhtGalHead.crntOwnMsgSN) || + (dwSystemUpdateMainUseCycNum <= hlhtGalHead.recvOppMsgSN)) + { + wIndex = (wMsgType - ATS_CI_INFO_SND_DS_CANCEL) / 4; + if ((FOLLOWUP_MSGID_MAX > wIndex) && (ATS_CI_INFO_TYPE_SND_LEN == wMsgCheckLen)) + { + chRetVal = ProcessCmdSndMsgCheck(dataBuf, ii, &tempSndCmd[wIndex]); + ii += ATS_CI_INFO_TYPE_SND_LEN; + chExistCmdDataFlag = 1U; /*ôݱ־ЧݽΪЧ*/ + } + else + { + chRetVal = CI_ERROR;/*Խ*/ + } + } + else + { + ii += wMsgCheckLen; + /*Ѿһ*/ + debug_infor_printf((const)"\nATS/Xiandi %d Not Deal SndCmd%d,Because curCmd has been processed by another System,dwReciveCmdDataAtsCycNum %d dwSystemUpdateMainUseCycNum %d\n", chDeciveId, wMsgType, dwReciveCmdDataAtsCycNum, dwSystemUpdateMainUseCycNum); + } + } + break; default: chRetVal = CI_ERROR; break; @@ -340,21 +455,51 @@ UINT8 ParseAtsOrXianDiToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLengt } - if (CI_SUCCESS == chRetVal) + /*Уݳ*/ + if ((hlhtGalHead.totalDataLen != ii - (UINT16)31U) || (dataLength != hlhtGalHead.totalDataLen+ (UINT16)31U)) { - /*Уݳ*/ - if (hlhtGalHead.totalDataLen != ii - 31U) - { - /* 31ΪӦ֡ͷ */ - chRetVal = CI_ERROR; + /* 31ΪӦ֡ͷ */ + chRetVal = CI_ERROR; + debug_infor_printf((char*)"Lenght Error \n"); + } + if (CI_SUCCESS != chRetVal) + { + /*δ洢Ϣ*/ + wCurCmdNum = GetCiRevCmdStruCurSum();/*ǰϢ*/ + ToaClearCmd(); + for (wIndex = wPreCmdNum; wIndex <= wCurCmdNum; wIndex++) + { + (void)CommonMemSet(&CiRevCmdDataStru[wIndex], (UINT32)sizeof(CommandDataStruct), 0u, (UINT32)sizeof(CommandDataStruct)); } } else { - ; + /*ʱһϢȫֱ*/ + for (wIndex = 0U; wIndex < FOLLOWUP_MSGID_MAX; wIndex++) + { + if (FLAG_SET == tempFstCmd[wIndex].chFlag) + { + wMsgTypeTmp = ATS_CI_INFO_FST_DS_CANCEL + wIndex*(UINT16)4U; + pGlobalFst = GetAtsFollowUpMsgFst(wMsgTypeTmp); + if (NULL != pGlobalFst) + { + (void)CommonMemCpy((void *)(pGlobalFst), (UINT32)sizeof(AtsFollowUpCmdFstStru), (const void *)(&tempFstCmd[wIndex]), (UINT32)sizeof(AtsFollowUpCmdFstStru)); + } + } + if (FLAG_SET == tempSndCmd[wIndex].chFlag) + { + wMsgTypeTmp = ATS_CI_INFO_SND_DS_CANCEL + wIndex*(UINT16)4U; + pGlobalSnd = GetAtsFollowUpMsgSnd(wMsgTypeTmp); + if (NULL != pGlobalSnd) + { + (void)CommonMemCpy((void *)(pGlobalSnd), (UINT32)sizeof(AtsFollowUpCmdSndStru), (const void *)(&tempSndCmd[wIndex]), (UINT32)sizeof(AtsFollowUpCmdSndStru)); + } + } + } } + if (CI_SUCCESS == chRetVal) { /*ݾУ飬Ҫ洢ͨñ*/ @@ -578,6 +723,12 @@ UINT8 PackCiToAtsOrXianDiData(const UINT8 deviceId, const UINT8 targetDevType, c ; /**/ } } + + if (CI_SUCCESS == chReval) + { + /*һΡλظϢ֡*/ + chReval = PackCiToAtsFollowUpMsg(ciToXianDiDataBuffer, &ii, targetDevType, PACK_ATS_TYPE_CENTER); + } } else { @@ -1297,6 +1448,9 @@ UINT8 FindFirstOrder(UINT8 SecondOrder) case ATS_CMD_EMERG_XS_CANCEL_TWO: reVal = ATS_CMD_EMERG_XS_CANCEL_ONE; /*ȡʱһ*/ break; + case ATS_CMD_CONNECT_ROUTE_RELEASE_TWO: /*߽ӳ·*/ + reVal = ATS_CMD_CONNECT_ROUTE_RELEASE_ONE; /*߽ӳ·һ*/ + break; default: reVal = 0u; break; @@ -3622,7 +3776,8 @@ UINT8 ReciveAtsCmdDeal(const UINT8* dataBuf, UINT16* dataIndex,const UINT16 wDat } if (CI_ERROR == chRetVal) - {/*ݴ󣬶*/ + { + /*ݴ󣬶*/ /*Ȿ*/ ToaClearCmd(); commandTotalSum = 0u; @@ -3930,4 +4085,504 @@ void PackRcOrCiDeciveCommonState(UINT8* ciToXianDiDataBuffer, UINT16* ii) { /*μʧܣ*/ } +} + +/** +* @brief ȡATSӦ״Ϣ +* @param[in] const UINT16 wMsgType, +* @return ȡATSϢ֡е״Ϣ +* @note by fan 20260602 +*/ +AtsFollowUpCmdFstStru * GetAtsFollowUpMsgFst(UINT16 chMsgType) +{ + AtsFollowUpCmdFstStru* rtnVal = NULL; + switch (chMsgType) + { + case ATS_CI_INFO_FST_DS_CANCEL: + rtnVal = &gDansuoCancleMsgFst; + break; + case ATS_CI_INFO_FST_SWIUNFLOCK: + rtnVal = &gSwitchUnflockMsgFst; + break; + case ATS_CI_INFO_FST_FAULTUNLOCK: + break; + case ATS_CI_INFO_FST_SECUNFLOCK: + rtnVal = &gSecUnflockMsgFst; + break; + case ATS_CI_INFO_FST_SIGUNFLOCK: + rtnVal = &gSignalUnflockMsgFst; + break; + case ATS_CI_INFO_FST_ZONGRENJIE: + break; + case ATS_CI_INFO_FST_PSD_UNEXCEPT: + break; + default: + break; + } + return rtnVal; +} + +/** +* @brief ȡATSӦĶϢ +* @param[in] const UINT16 wMsgType, +* @return ȡATSϢ֡еٴϢ +* @note by fan 20260602 +*/ +AtsFollowUpCmdSndStru * GetAtsFollowUpMsgSnd(UINT16 chMsgType) +{ + AtsFollowUpCmdSndStru* rtnVal = NULL; + switch (chMsgType) + { + case ATS_CI_INFO_SND_DS_CANCEL: + rtnVal = &gDansuoCancleMsgSnd; + break; + case ATS_CI_INFO_SND_SWIUNFLOCK: + rtnVal = &gSwitchUnflockMsgSnd; + break; + case ATS_CI_INFO_SND_FAULTUNLOCK: + break; + case ATS_CI_INFO_SND_SECUNFLOCK: + rtnVal = &gSecUnflockMsgSnd; + break; + case ATS_CI_INFO_SND_SIGUNFLOCK: + rtnVal = &gSignalUnflockMsgSnd; + break; + case ATS_CI_INFO_TYPE_SND_ZRJ: + break; + case ATS_CI_INFO_SND_PSD_UNEXCEPT: + break; + default: + break; + } + return rtnVal; +} + +/** +* @brief ȡATSӦ״ηϢ +* @param[in] const UINT16 wMsgType, +* @return ȡATSϢ֡е״η +* @note by fan 20260602 +*/ +RCIFollowUpReplyStru * GetAtsFollowUpReplyFst(UINT16 chMsgType) +{ + RCIFollowUpReplyStru* rtnVal = NULL; + switch (chMsgType) + { + case RCI_ATS_INFO_FST_DS_CANCEL: + rtnVal = &gDansuoCancleReplyFst; + break; + case RCI_ATS_INFO_FST_SWIUNFLOCK: + rtnVal = &gSwitchUnflockReplyFst; + break; + case RCI_ATS_INFO_FST_FAULTUNLOCK: + break; + case RCI_ATS_INFO_FST_SECUNFLOCK: + rtnVal = &gSecUnflockReplyFst; + break; + case RCI_ATS_INFO_FST_SIGUNFLOCK: + rtnVal = &gSignalUnflockReplyFst; + break; + case RCI_ATS_INFO_FST_ZONGRENJIE: + break; + case RCI_ATS_INFO_FST_PSD_UNEXCEPT: + break; + default: + break; + } + return rtnVal; +} + +/** +* @brief ȡATSӦٴηϢ +* @param[in] const UINT16 wMsgType, +* @return ȡATSϢ֡еٴη +* @note by fan 20260602 +*/ +RCIFollowUpReplyStru * GetAtsFollowUpReplySnd(UINT16 chMsgType) +{ + RCIFollowUpReplyStru* rtnVal = NULL; + switch (chMsgType) + { + case RCI_ATS_INFO_SND_DS_CANCEL: + rtnVal = &gDansuoCancleReplySnd; + break; + case RCI_ATS_INFO_SND_SWIUNFLOCK: + rtnVal = &gSwitchUnflockReplySnd; + break; + case RCI_ATS_INFO_SND_FAULTUNLOCK: + break; + case RCI_ATS_INFO_SND_SECUNFLOCK: + rtnVal = &gSecUnflockReplySnd; + break; + case RCI_ATS_INFO_SND_SIGUNFLOCK: + rtnVal = &gSignalUnflockReplySnd; + break; + case RCI_ATS_INFO_SND_ZRJ: + break; + case RCI_ATS_INFO_SND_PSD_UNEXCEPT: + break; + default: + break; + } + return rtnVal; +} + +/** +* @brief 1ATSϢ +* @param[in] const UINT16 wMsgType, +* @return void +* @note by fan 20260603 +*/ +void ClearAtsCmdMsgFst(UINT16 chMsgType) +{ + switch (chMsgType) + { + case ATS_CI_INFO_FST_DS_CANCEL: + (void)CommonMemSet((void*)&gDansuoCancleMsgFst, (UINT32)sizeof(gDansuoCancleMsgFst), (UINT8)0U, (UINT32)sizeof(gDansuoCancleMsgFst)); + break; + case ATS_CI_INFO_FST_SWIUNFLOCK: + (void)CommonMemSet((void*)&gSwitchUnflockMsgFst, (UINT32)sizeof(gSwitchUnflockMsgFst), (UINT8)0U, (UINT32)sizeof(gSwitchUnflockMsgFst)); + break; + case ATS_CI_INFO_FST_FAULTUNLOCK: + break; + case ATS_CI_INFO_FST_SECUNFLOCK: + (void)CommonMemSet((void*)&gSecUnflockMsgFst, (UINT32)sizeof(gSecUnflockMsgFst), (UINT8)0U, (UINT32)sizeof(gSecUnflockMsgFst)); + break; + case ATS_CI_INFO_FST_SIGUNFLOCK: + (void)CommonMemSet((void*)&gSignalUnflockMsgFst, (UINT32)sizeof(gSignalUnflockMsgFst), (UINT8)0U, (UINT32)sizeof(gSignalUnflockMsgFst)); + break; + case ATS_CI_INFO_FST_ZONGRENJIE: + break; + case ATS_CI_INFO_FST_PSD_UNEXCEPT: + break; + default: + break; + } +} + +/** +* @brief ״ηϢ +* @param[in] const UINT16 wMsgType, +* @return void +* @note by fan 20260603 +*/ +void ClearAtsCmdReplyFst(UINT16 chMsgType) +{ + switch (chMsgType) + { + case RCI_ATS_INFO_FST_DS_CANCEL: + (void)CommonMemSet((void*)&gDansuoCancleReplyFst, (UINT32)sizeof(gDansuoCancleReplyFst), (UINT8)0U, (UINT32)sizeof(gDansuoCancleReplyFst)); + break; + case RCI_ATS_INFO_FST_SWIUNFLOCK: + (void)CommonMemSet((void*)&gSwitchUnflockReplyFst, (UINT32)sizeof(gSwitchUnflockReplyFst), (UINT8)0U, (UINT32)sizeof(gSwitchUnflockReplyFst)); + break; + case RCI_ATS_INFO_FST_FAULTUNLOCK: + break; + case RCI_ATS_INFO_FST_SECUNFLOCK: + (void)CommonMemSet((void*)&gSecUnflockReplyFst, (UINT32)sizeof(gSecUnflockReplyFst), (UINT8)0U, (UINT32)sizeof(gSecUnflockReplyFst)); + break; + case RCI_ATS_INFO_FST_SIGUNFLOCK: + (void)CommonMemSet((void*)&gSignalUnflockReplyFst, (UINT32)sizeof(gSignalUnflockReplyFst), (UINT8)0U, (UINT32)sizeof(gSignalUnflockReplyFst)); + break; + case RCI_ATS_INFO_FST_ZONGRENJIE: + break; + case RCI_ATS_INFO_FST_PSD_UNEXCEPT: + break; + default: + break; + } +} +/** +* @brief 2ATSϢ +* @param[in] const UINT16 wMsgType, +* @return void +* @note by fan 20260603 +*/ +void ClearAtsCmdMsgSnd(UINT16 chMsgType) +{ + switch (chMsgType) + { + case ATS_CI_INFO_SND_DS_CANCEL: + (void)CommonMemSet((void*)&gDansuoCancleMsgSnd, (UINT32)sizeof(gDansuoCancleMsgSnd), (UINT8)0U, (UINT32)sizeof(gDansuoCancleMsgSnd)); + break; + case ATS_CI_INFO_SND_SWIUNFLOCK: + (void)CommonMemSet((void*)&gSwitchUnflockMsgSnd, (UINT32)sizeof(gSwitchUnflockMsgSnd), (UINT8)0U, (UINT32)sizeof(gSwitchUnflockMsgSnd)); + break; + case ATS_CI_INFO_SND_FAULTUNLOCK: + break; + case ATS_CI_INFO_SND_SECUNFLOCK: + (void)CommonMemSet((void*)&gSecUnflockMsgSnd, (UINT32)sizeof(gSecUnflockMsgSnd), (UINT8)0U, (UINT32)sizeof(gSecUnflockMsgSnd)); + break; + case ATS_CI_INFO_SND_SIGUNFLOCK: + (void)CommonMemSet((void*)&gSignalUnflockMsgSnd, (UINT32)sizeof(gSignalUnflockMsgSnd), (UINT8)0U, (UINT32)sizeof(gSignalUnflockMsgSnd)); + break; + case ATS_CI_INFO_TYPE_SND_ZRJ: + break; + case ATS_CI_INFO_SND_PSD_UNEXCEPT: + break; + default: + break; + } +} + +/** +* @brief ٴηϢ +* @param[in] const UINT16 wMsgType, +* @return void +* @note by fan 20260603 +*/ +void ClearAtsCmdReplySnd(UINT16 chMsgType) +{ + switch (chMsgType) + { + case RCI_ATS_INFO_SND_DS_CANCEL: + (void)CommonMemSet((void*)&gDansuoCancleReplySnd, (UINT32)sizeof(gDansuoCancleReplySnd), (UINT8)0U, (UINT32)sizeof(gDansuoCancleReplySnd)); + break; + case RCI_ATS_INFO_SND_SWIUNFLOCK: + (void)CommonMemSet((void*)&gSwitchUnflockReplySnd, (UINT32)sizeof(gSwitchUnflockReplySnd), (UINT8)0U, (UINT32)sizeof(gSwitchUnflockReplySnd)); + break; + case RCI_ATS_INFO_SND_FAULTUNLOCK: + break; + case RCI_ATS_INFO_SND_SECUNFLOCK: + (void)CommonMemSet((void*)&gSecUnflockReplySnd, (UINT32)sizeof(gSecUnflockReplySnd), (UINT8)0U, (UINT32)sizeof(gSecUnflockReplySnd)); + break; + case RCI_ATS_INFO_SND_SIGUNFLOCK: + (void)CommonMemSet((void*)&gSignalUnflockReplySnd, (UINT32)sizeof(gSignalUnflockReplySnd), (UINT8)0U, (UINT32)sizeof(gSignalUnflockReplySnd)); + break; + case RCI_ATS_INFO_SND_ZRJ: + break; + case RCI_ATS_INFO_SND_PSD_UNEXCEPT: + break; + default: + break; + } +} +/** +* @brief յATS/״Ϣ鴦 +* @param[in] const UINT8* dataBuf, ݻ +* @param[in] UINT16* dataIndex, +* @param[Out] AtsFollowUpCmdFstStru* pMsgFst ״Ϣָ +* @return CI_ERROR ʧ CI_SUCCESS ɹ +* @note by fan 20260602 +*/ +UINT8 ProcessCmdFirstMsgCheck(const UINT8* dataBuf, UINT16 dataIndex, AtsFollowUpCmdFstStru* pMsgFst) +{ + UINT8 chRetVal = CI_ERROR; + UINT16 ii = 0U; + UINT32 dwCurCyc = Get2oo2CurCycleNum(); + if ((NULL != dataBuf) && (0U != dataIndex)&&(NULL != pMsgFst)) + { + chRetVal = CI_SUCCESS; + ii = dataIndex; + /*һ*/ + pMsgFst->chAtsId = dataBuf[ii++]; + pMsgFst->chRtuId = dataBuf[ii++]; + pMsgFst->wIndex = ShortFromChar(&dataBuf[ii]); /* վ */ + ii += 2u; + pMsgFst->chTiocId = dataBuf[ii++]; + pMsgFst->dwTime = LongFromChar(&dataBuf[ii]); /* ʱ */ + ii += 4u; + pMsgFst->wDevId = ShortFromChar(&dataBuf[ii]); /* 豸 */ + ii += 2u; + if (((0U == pMsgFst->chAtsId) || (0U == pMsgFst->chRtuId)) + &&(0UwIndex) + && (0U < pMsgFst->wDevId) && (UINT16_MAX > pMsgFst->wDevId) + && (0U < pMsgFst->chTiocId) && (CI_SUM_MAX> pMsgFst->chTiocId)) + { + pMsgFst->chFlag = FLAG_SET; + pMsgFst->dwCycle = dwCurCyc; + } + else + { + chRetVal = CI_ERROR; + } + } + return chRetVal; +} + +/** +* @brief յATS/ٴ鴦 +* @param[in] const UINT8* dataBuf, ݻ +* @param[in] UINT16* dataIndex, +* @param[Out] AtsFollowUpCmdSndStru* pMsgSnd ٴϢָ +* @return CI_ERROR ʧ CI_SUCCESS ɹ +* @note by fan 20260602 +*/ +UINT8 ProcessCmdSndMsgCheck(const UINT8* dataBuf, UINT16 dataIndex, AtsFollowUpCmdSndStru* pMsgSnd) +{ + UINT8 chRetVal = CI_ERROR; + UINT16 ii = 0U; + UINT32 dwCurCyc = Get2oo2CurCycleNum(); + if ((NULL != dataBuf) && (0U != dataIndex) && (NULL != pMsgSnd)) + { + chRetVal = CI_SUCCESS; + ii = dataIndex; + pMsgSnd->chAtsId = dataBuf[ii++]; + pMsgSnd->chRtuId = dataBuf[ii++]; + pMsgSnd->wIndex = ShortFromChar(&dataBuf[ii]); /* վ */ + ii += 2u; + pMsgSnd->chTiocId = dataBuf[ii++]; + pMsgSnd->dwTime = LongFromChar(&dataBuf[ii]); /* ʱ */ + ii += 4u; + pMsgSnd->wDevId = ShortFromChar(&dataBuf[ii]); /* 豸 */ + ii += 2u; + pMsgSnd->dwCrc32 = LongFromChar(&dataBuf[ii]); /* CRC32 */ + ii += 4u; + if (((0U == pMsgSnd->chAtsId) || (0U == pMsgSnd->chRtuId)) + && (0UwIndex) + && (0U < pMsgSnd->wDevId) && (UINT16_MAX > pMsgSnd->wDevId) + && (0U < pMsgSnd->chTiocId) && (CI_SUM_MAX> pMsgSnd->chTiocId)) + { + pMsgSnd->chFlag = FLAG_SET; + pMsgSnd->dwCycle = dwCurCyc; + } + else + { + chRetVal = CI_ERROR; + } + } + return chRetVal; +} +/** +* @brief ATS//ֵ ظ +* @brief ATSͨվ״̬ +* @param[in] UINT8* ciToXianDiDataBuffer CIATSֵص +* @param[out] UINT16* wDataIndex CIATSֵص +* @param[in] const UINT8 chTargetType, Ŀϵͳ +* @param[in] const UINT8 chAtsType, ats(豸0x03) +* @return +* @note by fan 20260602 +*/ +UINT8 PackCiToAtsFollowUpMsg(UINT8* ciToXianDiDataBuffer, UINT16* wDataIndex, UINT8 chTargetType, UINT8 chAtsType) +{ + UINT8 reVal = CI_ERROR; + UINT16 ii = 0U;/*α*/ + UINT16 j = 0U; + UINT16 wMsgIndex = 0u;/*֡ ʹ*/ + RCIFollowUpReplyStru * strCfmTemp = NULL;/*ظϢָ*/ + UINT16 wMagDataLenIndex = 0U; + UINT16 wMagLen = 0U;/*Ϣȼ¼*/ + UINT8 chPackCheck = CI_ERROR;/*豸ǷϢӦ*/ + UINT32 dwCurCyc = Get2oo2CurCycleNum(); + if ((NULL != ciToXianDiDataBuffer) && (NULL != wDataIndex) && + ((CI_SYSTEM_TYPE_XIANDI == chTargetType)||(CI_SYSTEM_TYPE_ATS == chTargetType))) + { + ii = *wDataIndex; + for (j = 0U; j < FOLLOWUP_MSGID_MAX; j++) + { + wMsgIndex = (UINT16)0x0300U + j* (UINT16)4U + (UINT16)2U; + /*ȡ״Ϣ*/ + strCfmTemp = GetAtsFollowUpReplyFst(wMsgIndex); + /*УݣϢЧϢڶӦ豸*/ + if ((NULL != strCfmTemp)&&(dwCurCyc == strCfmTemp->dwTime)) + { + if ((0U < strCfmTemp->chAtsId) && (CI_SYSTEM_TYPE_ATS == chTargetType) && (PACK_ATS_TYPE_GATEWAY == chAtsType)) + { + /*atsIDΪ0Ӧ豸Ϊ*/ + chPackCheck = CI_SUCCESS; + } + else if ((0U < strCfmTemp->chRtuId) && (CI_SYSTEM_TYPE_XIANDI == chTargetType)) + { + /*Rtu IDΪ0Ӧ豸Ϊֵ*/ + chPackCheck = CI_SUCCESS; + } + else if ((0U == strCfmTemp->chAtsId)&&(0U == strCfmTemp->chRtuId)&&(CI_SYSTEM_TYPE_ATS == chTargetType) && (PACK_ATS_TYPE_CENTER == chAtsType)) + { + /*ȫ0 ATS*/ + chPackCheck = CI_SUCCESS; + } + else + { + chPackCheck = CI_ERROR;/*DZ豸*/ + } + if(CI_SUCCESS == chPackCheck) + { + wMagDataLenIndex = ii; + ii += 2U; + ShortToChar(wMsgIndex, &ciToXianDiDataBuffer[ii]);/* */ + ii += 2u; + /* Ԥ2ֽ */ + ii += 2u; + ciToXianDiDataBuffer[ii++] = strCfmTemp->chTiocId; /*RC/CI*/ + ciToXianDiDataBuffer[ii++] = strCfmTemp->chRtuId; /*RTU id*/ + ShortToChar(strCfmTemp->wIndex , &ciToXianDiDataBuffer[ii]);/* վ */ + ii += 2u; + LongToChar(strCfmTemp->dwTime, &ciToXianDiDataBuffer[ii]); /* յʱ */ + ii += 4U; + ciToXianDiDataBuffer[ii++] = strCfmTemp->chOpStatus; /**/ + LongToChar(strCfmTemp->dwCrc32, &ciToXianDiDataBuffer[ii]); /* CRC */ + ii += 4U; + wMagLen = ii - wMagDataLenIndex - 2U; + /* ݳ */ + ShortToChar(wMagLen, &ciToXianDiDataBuffer[wMagDataLenIndex]); + /*޸ķ״̬*/ + } + } + if ((NULL != strCfmTemp)&& (dwCurCyc != strCfmTemp->dwTime)) + { + /*DZ*/ + strCfmTemp->chFlag = FLAG_UNSET; + } + wMsgIndex = (UINT16)0x0300U + j* (UINT16)4U + (UINT16)4U; + /*ȡٴδϢ*/ + strCfmTemp = GetAtsFollowUpReplySnd(wMsgIndex); + if ((NULL != strCfmTemp) && (dwCurCyc == strCfmTemp->dwTime)) + { + /*УݣϢϢڶӦ豸*/ + if ((0U < strCfmTemp->chAtsId) && (CI_SYSTEM_TYPE_ATS == chTargetType) && (PACK_ATS_TYPE_GATEWAY == chAtsType)) + { + /*atsIDΪ0Ӧ豸Ϊ*/ + chPackCheck = CI_SUCCESS; + } + else if ((0U < strCfmTemp->chRtuId) && (CI_SYSTEM_TYPE_XIANDI == chTargetType)) + { + /*Rtu IDΪ0Ӧ豸Ϊֵ*/ + chPackCheck = CI_SUCCESS; + } + else if ((0U == strCfmTemp->chAtsId)&&(0U == strCfmTemp->chRtuId)&&(CI_SYSTEM_TYPE_ATS == chTargetType) && (PACK_ATS_TYPE_CENTER == chAtsType)) + { + /*ȫ0 ATS*/ + chPackCheck = CI_SUCCESS; + } + else + { + chPackCheck = CI_ERROR;/*DZ豸*/ + } + if (CI_SUCCESS == chPackCheck) + { + wMagDataLenIndex = ii; + ii += 2U; + ShortToChar(wMsgIndex, &ciToXianDiDataBuffer[ii]);/* */ + ii += 2u; + /* Ԥ2ֽ */ + ii += 2u; + ciToXianDiDataBuffer[ii++] = strCfmTemp->chTiocId; /*RC/CI*/ + ciToXianDiDataBuffer[ii++] = strCfmTemp->chRtuId; /*RTU id*/ + ShortToChar(strCfmTemp->wIndex, &ciToXianDiDataBuffer[ii]);/* վ */ + ii += 2u; + LongToChar(strCfmTemp->dwTime, &ciToXianDiDataBuffer[ii]); /* յʱ */ + ii += 4U; + ciToXianDiDataBuffer[ii++] = strCfmTemp->chOpStatus; /**/ + LongToChar(strCfmTemp->dwCrc32, &ciToXianDiDataBuffer[ii]); /* CRC */ + ii += 4U; + wMagLen = ii - wMagDataLenIndex - 2U; + /* ݳ */ + ShortToChar(wMagLen, &ciToXianDiDataBuffer[wMagDataLenIndex]); + /* η*/ + } + } + if ((NULL != strCfmTemp) && (dwCurCyc != strCfmTemp->dwTime)) + { + /*DZ*/ + ClearAtsCmdReplySnd(wMsgIndex); + } + } + *wDataIndex = ii; + reVal = CI_SUCCESS; + } + else + { + ;/*ʧ*/ + } + return reVal; } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackAtsData.h b/TSCP/src/APP/ciapp/ParsePack/ParsePackAtsData.h index e55a942..f1fc982 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackAtsData.h +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackAtsData.h @@ -75,11 +75,57 @@ #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 ATS_CI_INFO_TYPE_GATEWAY_COMMON ((UINT16)0x0206U) /*->CIϢ֡ ATS*/ +#define RCI_ATS_INFO_TYPE_GATEWAY_COMMON ((UINT16)0x0207U) /*RC->ؼϢ㱨ڷ*/ +#define RCI_ATS_INFO_TYPE_GATEWAY_HEART ((UINT16)0x0208U) /*CI->*/ +#define ATS_CI_INFO_FST_DS_CANCEL ((UINT16)0x0301U) /*ATS->CIһATS*/ +#define RCI_ATS_INFO_FST_DS_CANCEL ((UINT16)0x0302U) /*RCI->ATS״λظһκ*/ +#define ATS_CI_INFO_SND_DS_CANCEL ((UINT16)0x0303U) /*ATS->CIATS*/ +#define RCI_ATS_INFO_SND_DS_CANCEL ((UINT16)0x0304U) /*RCI->ATSٴλظκ*/ +#define ATS_CI_INFO_FST_SWIUNFLOCK ((UINT16)0x0305U) /*ATS->CIһATS*/ +#define RCI_ATS_INFO_FST_SWIUNFLOCK ((UINT16)0x0306U) /*RCI->ATS״λظһκ*/ +#define ATS_CI_INFO_SND_SWIUNFLOCK ((UINT16)0x0307U) /*ATS->CIATS*/ +#define RCI_ATS_INFO_SND_SWIUNFLOCK ((UINT16)0x0308U) /*RCI->ATSٴλظκ*/ +#define ATS_CI_INFO_FST_FAULTUNLOCK ((UINT16)0x0309U) /*ATS->CI ʽ Ԥ*/ +#define RCI_ATS_INFO_FST_FAULTUNLOCK ((UINT16)0x030AU) /*RCI->ATSʽһλظ Ԥ*/ +#define ATS_CI_INFO_SND_FAULTUNLOCK ((UINT16)0x030BU) /*ATS->CIʽ Ԥ*/ +#define RCI_ATS_INFO_SND_FAULTUNLOCK ((UINT16)0x030CU) /*RCI->ATSʽ Ԥ*/ +#define ATS_CI_INFO_FST_SECUNFLOCK ((UINT16)0x030DU) /*ATS->CIνһATS*/ +#define RCI_ATS_INFO_FST_SECUNFLOCK ((UINT16)0x030EU) /*RCI->ATSν״λظһκ*/ +#define ATS_CI_INFO_SND_SECUNFLOCK ((UINT16)0x030FU) /*ATS->CIνATS*/ +#define RCI_ATS_INFO_SND_SECUNFLOCK ((UINT16)0x0310U) /*RCI->ATSνٴλظκ*/ +#define ATS_CI_INFO_FST_SIGUNFLOCK ((UINT16)0x0311U) /*ATS->CIźŻһATS*/ +#define RCI_ATS_INFO_FST_SIGUNFLOCK ((UINT16)0x0312U) /*RCI->ATSźŻ״λظһκ*/ +#define ATS_CI_INFO_SND_SIGUNFLOCK ((UINT16)0x0313U) /*ATS->CIźŻATS*/ +#define RCI_ATS_INFO_SND_SIGUNFLOCK ((UINT16)0x0314U) /*RCI->ATSźŻٴλظκ*/ +#define ATS_CI_INFO_FST_ZONGRENJIE ((UINT16)0x0315U) /*ATS->CI˽һATS*/ +#define RCI_ATS_INFO_FST_ZONGRENJIE ((UINT16)0x0316U) /*RCI->ATS˽״λظһκ*/ +#define ATS_CI_INFO_TYPE_SND_ZRJ ((UINT16)0x0317U) /*ATS->CI˽ATS*/ +#define RCI_ATS_INFO_SND_ZRJ ((UINT16)0x0318U) /*RCI->ATS˽ٴλظκ*/ +#define ATS_CI_INFO_FST_PSD_UNEXCEPT ((UINT16)0x0319U) /*ATS->CIվ̨쳣һATS*/ +#define RCI_ATS_INFO_FST_PSD_UNEXCEPT ((UINT16)0x031AU) /*RCI->ATSվ̨쳣״λظһκ*/ +#define ATS_CI_INFO_SND_PSD_UNEXCEPT ((UINT16)0x031BU) /*ATS->CIվ̨쳣ATS*/ +#define RCI_ATS_INFO_SND_PSD_UNEXCEPT ((UINT16)0x031CU) /*RCI->ATSվ̨쳣ٴλظκ*/ + #define SHOW_2OO2_STATE_MAIN ((UINT8)0x55U) /*ʾϵ״̬-ϵ*/ #define SHOW_2OO2_STATE_BACKUP ((UINT8)0xaaU) /*ʾϵ״̬-ϵ*/ #define SHOW_2OO2_STATE_UNKNOW ((UINT8)0xFFU) /*ʾϵ״̬-δ֪*/ +#define CONFIRM_REPLY_SUCCESS ((UINT8)1u) /*ȷϳɹ*/ +#define CONFIRM_FST_UNSET ((UINT8)2u) /*״λظδø״̬*/ +#define CONFIRM_FST_BELONGERROR ((UINT8)3u) /*״λظ豸ڱ*/ +#define CONFIRM_DEVICE_NONROUTE_SET ((UINT8)5u) /*ظǽ·Ѱ*/ + +#define CONFIRM_SND_DIFFCMD ((UINT8)2u) /*ٴλظһ*/ +#define CONFIRM_SND_FIRST_NOTFIND ((UINT8)3u) /*ٴλ״δִ*/ +#define CONFIRM_SND_CRCFAIL ((UINT8)4u) /*ٴλظCRCУʧ*/ + +#define FOLLOWUP_CONFIRM_TIMEOUT ((UINT16)400u) /*״ϢȴϢʱʱ*/ +#define PACK_ATS_TYPE_CENTER ((UINT8) 0xAAU)/*ATSϢظATSʹú󣬴ATS*/ +#define PACK_ATS_TYPE_GATEWAY ((UINT8) 0x55U) /*ATSϢظATSʹú󣬴*/ +#define FOLLOWUP_MSGID_MAX ((UINT16)7) /*ݶ࣬ʹ*/ + /*ִеϢ*/ typedef struct s_PlusBoxDataSendATS { @@ -143,6 +189,36 @@ extern UINT32 FirstCmdId; /* extern ReciveAtsCmdDataCycInfo szReciveAtsCmdDataCycInfo[ATS_SUM_MAX * 2U]; /*յATSںϢ*/ extern UINT16 gReciveAtsCmdDataDeviceSum; /*յATS豸Ŀ*/ +extern AtsFollowUpCmdFstStru gDansuoCancleMsgFst;/*ȡ״Ϣ*/ +extern RCIFollowUpReplyStru gDansuoCancleReplyFst;/*ȡ״ȷ*/ +extern AtsFollowUpCmdSndStru gDansuoCancleMsgSnd; /*ȡϢ*/ +extern RCIFollowUpReplyStru gDansuoCancleReplySnd; /*ȡȷ*/ + +extern AtsFollowUpCmdFstStru gSwitchUnflockMsgFst; /*״Ϣ*/ +extern RCIFollowUpReplyStru gSwitchUnflockReplyFst; /*״ȷ*/ +extern AtsFollowUpCmdSndStru gSwitchUnflockMsgSnd; /*Ϣ*/ +extern RCIFollowUpReplyStru gSwitchUnflockReplySnd; /*ȷ*/ + +extern AtsFollowUpCmdFstStru gSecUnflockMsgFst; /*ν״Ϣ*/ +extern RCIFollowUpReplyStru gSecUnflockReplyFst; /*ν״ȷ*/ +extern AtsFollowUpCmdSndStru gSecUnflockMsgSnd; /*νϢ*/ +extern RCIFollowUpReplyStru gSecUnflockReplySnd; /*νȷ*/ + +extern AtsFollowUpCmdFstStru gSignalUnflockMsgFst; /*źŻ״Ϣ*/ +extern RCIFollowUpReplyStru gSignalUnflockReplyFst; /*źŻ״ȷ*/ +extern AtsFollowUpCmdSndStru gSignalUnflockMsgSnd; /*źŻϢ*/ +extern RCIFollowUpReplyStru gSignalUnflockReplySnd; /*źŻȷ*/ + +extern AtsFollowUpCmdFstStru gZRJMsgFst; /*˽״Ϣ*/ +extern RCIFollowUpReplyStru gZRJReplyFst; /*˽״ȷ*/ +extern AtsFollowUpCmdSndStru gZRJMsgSnd; /*˽Ϣ*/ +extern RCIFollowUpReplyStru gZRJReplySnd; /*˽ȷ*/ + +extern AtsFollowUpCmdFstStru gCanclPsdExceptMsgFst; /*վ̨쳣״Ϣ*/ +extern RCIFollowUpReplyStru gCanclPsdExceptReplyFst; /*վ̨쳣״ȷ*/ +extern AtsFollowUpCmdSndStru gCanclPsdExceptMsgSnd; /*վ̨쳣Ϣ*/ +extern RCIFollowUpReplyStru gCanclPsdExceptReplySnd; /*վ̨쳣ȷ*/ + /* * ֡ * ˵ const UINT8* dataBuf, ݻ @@ -502,6 +578,30 @@ void SendAtsCommonStationStateDeal(UINT8* ciToXianDiDataBuffer, UINT16* wDataInd */ UINT8 ReciveAtsCmdDeal(const UINT8* dataBuf, UINT16* dataIndex, const UINT16 wDataLength); +/** +* @brief յATS֡һ +* @param[in] const UINT8* dataBuf, ݻ +* @param[in] UINT16 dataIndex, +* @param[in] const UINT16 dataLength, ݳ +* @param[in] const UINT16 wMsgType, ֡ +* @param[in]AtsFollowUpCmdFstStru* pTempTotalFstMsg, ʱ洢νһռ +* @return CI_ERROR ʧ CI_SUCCESS ɹ +* @note by fan 20260602 +*/ +UINT8 ReciveAtsFollowUpFstCmd(const UINT8* dataBuf, UINT16 dataIndex, const UINT16 wDataLength, const UINT16 wMsgType, AtsFollowUpCmdFstStru* pTempTotalFstMsg); + +/** +* @brief յATS֡ж +* @param[in] const UINT8* dataBuf, ݻ +* @param[in] UINT16 dataIndex, +* @param[in] const UINT16 dataLength, ݳ +* @param[in] const UINT16 wMsgType, ֡ +* @param[in]AtsFollowUpCmdSndStru* pTempTotalSndMsg, ʱ洢νռ +* @return CI_ERROR ʧ CI_SUCCESS ɹ +* @note by fan 20260602 +*/ +UINT8 ReciveAtsFollowUpSndCmd(const UINT8* dataBuf, UINT16 dataIndex, const UINT16 wDataLength, const UINT16 wMsgType, AtsFollowUpCmdSndStru* pTempTotalSndMsg); + /** * @brief ATSںϢ * @param[in] UINT8 chDeviceType 豸 @@ -529,6 +629,100 @@ UINT32 GetReciveCmdDataAtsCycNum(UINT8 chDeviceType, UINT8 chDeviceId); */ void PackRcOrCiDeciveCommonState(UINT8* ciToXianDiDataBuffer, UINT16* ii); +/** +* @brief ȡATSӦ״Ϣ +* @param[in] const UINT16 wMsgType, +* @return ȡATSϢ֡е״Ϣ +* @note by fan 20260602 +*/ +AtsFollowUpCmdFstStru * GetAtsFollowUpMsgFst(UINT16 chMsgType); + +/** +* @brief ȡATSӦĶϢ +* @param[in] const UINT16 wMsgType, +* @return ȡATSϢ֡еٴϢ +* @note by fan 20260602 +*/ +AtsFollowUpCmdSndStru * GetAtsFollowUpMsgSnd(UINT16 chMsgType); + +/** +* @brief ȡATSӦ״ηϢ +* @param[in] const UINT16 wMsgType, +* @return ȡATSϢ֡е״η +* @note by fan 20260602 +*/ +RCIFollowUpReplyStru * GetAtsFollowUpReplyFst(UINT16 chMsgType); +/** +* @brief ȡATSӦٴηϢ +* @param[in] const UINT16 wMsgType, +* @return ȡATSϢ֡еٴη +* @note by fan 20260602 +*/ +RCIFollowUpReplyStru * GetAtsFollowUpReplySnd(UINT16 chMsgType); + +/** +* @brief 1ATSϢ +* @param[in] const UINT16 wMsgType, +* @return void +* @note by fan 20260603 +*/ +void ClearAtsCmdMsgFst(UINT16 chMsgType); + +/** +* @brief 2ATSϢ +* @param[in] const UINT16 wMsgType, +* @return void +* @note by fan 20260603 +*/ +void ClearAtsCmdMsgSnd(UINT16 chMsgType); + +/** +* @brief ٴηϢ +* @param[in] const UINT16 wMsgType, +* @return void +* @note by fan 20260603 +*/ +void ClearAtsCmdReplySnd(UINT16 chMsgType); + +/** +* @brief ״ηϢ +* @param[in] const UINT16 wMsgType, +* @return void +* @note by fan 20260603 +*/ +void ClearAtsCmdReplyFst(UINT16 chMsgType); + +/** +* @brief ATS//ֵ ظ +* @brief ATSͨվ״̬ +* @param[in] UINT8* ciToXianDiDataBuffer CIATSֵص +* @param[out] UINT16* wDataIndex CIATSֵص +* @param[in] const UINT8 chTargetType, Ŀϵͳ +* @param[in] const UINT8 chAtsType, ats(豸0x03) +* @return +* @note by fan 20260602 +*/ +UINT8 PackCiToAtsFollowUpMsg(UINT8* ciToXianDiDataBuffer, UINT16* wDataIndex, UINT8 chTargetType, UINT8 chAtsType); +/** +* @brief յATS/״Ϣ鴦 +* @param[in] const UINT8* dataBuf, ݻ +* @param[in] UINT16* dataIndex, +* @param[Out] AtsFollowUpCmdFstStru* pMsgFst ״Ϣָ +* @return CI_ERROR ʧ CI_SUCCESS ɹ +* @note by fan 20260602 +*/ +UINT8 ProcessCmdFirstMsgCheck(const UINT8* dataBuf, UINT16 dataIndex, AtsFollowUpCmdFstStru* pMsgFst); + +/** +* @brief յATS/ٴ鴦 +* @param[in] const UINT8* dataBuf, ݻ +* @param[in] UINT16* dataIndex, +* @param[Out] AtsFollowUpCmdSndStru* pMsgSnd ٴϢָ +* @return CI_ERROR ʧ CI_SUCCESS ɹ +* @note by fan 20260602 +*/ +UINT8 ProcessCmdSndMsgCheck(const UINT8* dataBuf, UINT16 dataIndex, AtsFollowUpCmdSndStru* pMsgSnd); + #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackCommon.c b/TSCP/src/APP/ciapp/ParsePack/ParsePackCommon.c index 4bbfdf2..8879c5f 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackCommon.c +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackCommon.c @@ -26,7 +26,7 @@ #include "../DataManage/PlatDataManage.h" #include "dquCIInterFace.h" #include "NonAutoReturnDataManage.h" - +#include "ReverseCutDataManage.h" #include "2oo2InterfaceDataManage.h" PlatHeartDataStruct RecvHeartDataStru = { 0U }; /*ƽ̨֡ݽṹ*/ @@ -4338,6 +4338,8 @@ void PackCiToCimDeviceData(void) UINT32 switchCollTolerateCycNum = 0U; UINT8 chSwitchBDState = SEND_CIM_COLLTOLERATE_NO; UINT8 chSignalDsState = 0xFFU; + UINT8 chReverseState = 0xFFU; + const ReverseSwitchCfgDataStru* pReverseCfg = NULL; /*͵*/ pSwitchData = GetSwitchData(); @@ -4657,9 +4659,35 @@ void PackCiToCimDeviceData(void) ciToCimDataBuffer[ii++] = pFloodGateDataCC[deviceId].FloodGateCloseApplyIvocSum; /*Źг*/ ciToCimDataBuffer[ii++] = pFloodGateDataCC[deviceId].FloodGateCloseAnsIvocSum; /*Źгظ*/ ciToCimDataBuffer[ii++] = pFloodGateDataCC[deviceId].FloodGateAccessUTFlag; /*ŽӽǷзͨų־*/ - - } + + /*ӡй*/ + pReverseCfg = GetReverseCfgData(); + if (NULL != pReverseCfg) + { + if (0U == pReverseCfg->wId) + { + ciToCimDataBuffer[ii++] = 0U;/*п0*/ + } + else + { + ciToCimDataBuffer[ii++] = 1U;/*п1*/ + ShortToChar(pReverseCfg->wId, &ciToCimDataBuffer[ii]);/*пID (ʼֶ)*/ + ii += 2u; + chReverseState = GetReverseSwitchState(); + ciToCimDataBuffer[ii++] = chReverseState;/*п״̬*/ + ShortToChar(pReverseCfg->wRelateBoardNum, &ciToCimDataBuffer[ii]);/*а忨*/ + ii += 2u; + for (jj = 0u; jj wRelateBoardNum; jj++) + { + ShortToChar(pReverseCfg->strRelateBoardBuf[jj].wReversBoardId, &ciToCimDataBuffer[ii]);/*а忨ID*/ + ii += 2u; + chReverseState = GetReverseBoardState(pReverseCfg->strRelateBoardBuf[jj].wReversBoardId); + ciToCimDataBuffer[ii++] = chReverseState;/*а忨״̬*/ + } + } + } + /*CIM*/ debug_infor_printf((const)"\nCIM_SEND_DEVSTATE:%d", ii); debug_out_array(0xAA, ciToCimDataBuffer, ii); @@ -5549,4 +5577,131 @@ void PackCiToCimCollDiffData(void) /*ά*/ (void)DarkInfoPack(CIM_INFO_IO_COLL_DIFF_ALARM, ciToCimDataBuffer, ii); +} + +/* +* CIM˫ϵIOɼһϢ +* ˵ void +* ֵ +*/ +void PackCiToCimSwitchRedunAlarmData(void) +{ + UINT16 wSwitchCurSum = 0u; + UINT32 dwRedunHunXianAlarmCfg = 0u; + UINT16 i = 0u; + UINT16 wSwitchId = 0u; + UINT8 cRedunCollCfg = 0u; + UINT16 cAlarmCount = 0u; + UINT32 dwHunXianStCyc = 0u; + UINT8 cRedunHunXianStt = 0u; + UINT32 dwFaultStCyc = 0u; + UINT8 j = 0u; + UINT32 dwSwitchDrvStCyc = 0u; + UINT8 cTimeOut = 0u; + UINT16 wRelayId = 0u; + UINT16 wBelongOcId = 0u; + UINT16 wIndex = 1u; /*±꣬1ֽڵ*/ + UINT8 ciToCimDataBuffer[CI_TO_CIM_DATA_LEN_MAX] = { 0U }; /*鳤5000ֽڣ500*2OC*4ֽڱԽ*/ + + wSwitchCurSum = GetSwitchCurSum(); + dwRedunHunXianAlarmCfg = GetSwitchRedunCollHunXianCycCfg(); + for (i = 0u; i < wSwitchCurSum; i++) + { + wSwitchId = GetSwitchId(i); + cRedunCollCfg = GetSwitchRedunCollCfg(wSwitchId); + if (REDUN_COLL_YES == cRedunCollCfg) + { + for (j = 0u; j < SWITCH_REDUN_COLL_MAX; j++) + { + /*߱*/ + cRedunHunXianStt = GetSwitchRedunHunXianRecovStt(wSwitchId, j); + if (REDUN_HX_RECOV_ALL != cRedunHunXianStt) + { + /*жϻЧУ̱ʱٱֱӱ*/ + dwHunXianStCyc = GetSwitchRedunJudgHunXianStCyc(wSwitchId, j); + dwSwitchDrvStCyc = GetSwitchDriveStartCycNum(wSwitchId); + cTimeOut = SystemOverTimeCheck(dwHunXianStCyc, dwRedunHunXianAlarmCfg); + if ((0u == dwSwitchDrvStCyc) || (CI_TIME_OUT == cTimeOut)) + { + /**/ + cAlarmCount += 1u; + /*ID*/ + ShortToChar(wSwitchId, &ciToCimDataBuffer[wIndex]); + wIndex += 2u; + /*OC IDѡһɼ̵ѯ*/ + wRelayId = GetSwitchRedunDBJ1RelayId(wSwitchId, j); + wBelongOcId = GetRelayBelongOCId(wRelayId); + ciToCimDataBuffer[wIndex] = (UINT8)wBelongOcId; + wIndex += 1u; + /*߱*/ + ciToCimDataBuffer[wIndex] = REDUN_ALARM_HUNXIAN; + wIndex += 1u; + /*򲻱ɼ*/ + continue; + } + else + { + /**/ + } + } + else + { + /*δߣ*/ + } + + /*ɼϱ*/ + dwFaultStCyc = GetSwitchRedunFaultStCyc(wSwitchId, j); + if (0u < dwFaultStCyc) + { + /*ɼЧУ̱ʱٱֱӱ*/ + dwSwitchDrvStCyc = GetSwitchDriveStartCycNum(wSwitchId); + cTimeOut = SystemOverTimeCheck(dwFaultStCyc, dwRedunHunXianAlarmCfg); + if ((0u == dwSwitchDrvStCyc) || (CI_TIME_OUT == cTimeOut)) + { + /**/ + cAlarmCount += 1u; + /*ID*/ + ShortToChar(wSwitchId, &ciToCimDataBuffer[wIndex]); + wIndex += 2u; + /*OC IDѡһɼ̵ѯ*/ + wRelayId = GetSwitchRedunDBJ1RelayId(wSwitchId, j); + wBelongOcId = GetRelayBelongOCId(wRelayId); + ciToCimDataBuffer[wIndex] = (UINT8)wBelongOcId; + wIndex += 1u; + /*ɼϱ*/ + ciToCimDataBuffer[wIndex] = REDUN_ALARM_FAULT; + wIndex += 1u; + } + else + { + /**/ + } + } + else + { + /*δϣ*/ + } + } + } + else + { + /*߱ɼ*/ + } + } + + if ((UINT16)UINT8_MAX < cAlarmCount) + { + /*Ƿ򱨾Ϊ0*/ + ciToCimDataBuffer[0] = 0u; + (void)debug_infor_printf((const)"SwtRedunCollAlarm Err = %d\n", cAlarmCount); + (void)DarkInfoPack(CIM_INFO_SWT_REDUN_COLL_ALARM, ciToCimDataBuffer, 1u); + } + else + { + /**/ + ciToCimDataBuffer[0] = (UINT8)cAlarmCount; + (void)debug_infor_printf((const)"SwtRedunCollAlarm = %d:", cAlarmCount); + (void)debug_out_array(0xAA, ciToCimDataBuffer, wIndex); + (void)DarkInfoPack(CIM_INFO_SWT_REDUN_COLL_ALARM, ciToCimDataBuffer, wIndex); + } } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackCommon.h b/TSCP/src/APP/ciapp/ParsePack/ParsePackCommon.h index 9adef2f..dad98d2 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackCommon.h +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackCommon.h @@ -388,6 +388,13 @@ void PackCiToCimFlyProtectData(void); */ void PackCiToCimCollDiffData(void); +/* +* CIM˫ϵIOɼһϢ +* ˵ void +* ֵ +*/ +void PackCiToCimSwitchRedunAlarmData(void); + #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackDefine.h b/TSCP/src/APP/ciapp/ParsePack/ParsePackDefine.h index efae5c4..384a4cc 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackDefine.h +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackDefine.h @@ -87,23 +87,24 @@ #define CI_TO_AXIS_DATA_LEN_MAX ((UINT16)3000) /*AXISֵ*/ /*CI CIM*/ -#define CI_TO_CIM_DATA_LEN_MAX ((UINT16)5000) /*CICIMֵ*/ -#define CI_TO_AIM_DATA_LEN_MAX ((UINT16)5000) /*CIAIMֵ*/ -#define CIM_INFO_RCI_TO_ATS_DATA ((UINT16)0x2001) /*CIM ATS״̬Ϣ*/ -#define CIM_INFO_ATS_TO_RCI_DATA ((UINT16)0x2002) /*CIM ATS״̬Ϣ*/ -#define CIM_INFO_VER_INFO ((UINT16)0x2003) /*CIM汾Ϣ*/ -#define CIM_INFO_COMM_STATE ((UINT16)0x2004) /*CIM豸ͨ״̬Ϣ*/ -#define CIM_INFO_SIGNAL_DS_STATE ((UINT16)0x2005) /*CIMźŻ˿״̬Ϣ*/ -#define CIM_INFO_RELAY_DRVANDCOLLDEF ((UINT16)0x2006) /*CIM̵زɲһ±*/ -#define CIM_INFO_PSD_ALARM ((UINT16)0x2007) /*CIMű֡*/ -#define CIM_INFO_DEVICE_STATE ((UINT16)0x2008) /*CIM豸״̬Ϣ*/ -#define CIM_INFO_MAINTENANCE ((UINT16)0x2009) /*CIMάϢ*/ -#define CIM_INFO_LEU_STATE ((UINT16)0x200A) /*CIMLEU״̬*/ -#define CIM_INFOR_RELAY_HUNXIAN_STATE ((UINT16)0x200F) /*CIM̵״̬Ϣ*/ -#define CIM_INFO_SIGNAL_DRIVOUT ((UINT16)0x2010) /*CIMźŻʱϢ*/ -#define CIM_INFO_UNIT_ALARM ((UINT16)0x2011) /*CIMִеԪ*/ -#define CIM_INFO_FLYPROTECT_ALARM ((UINT16)0x2012) /*CIMɳ崻*/ -#define CIM_INFO_IO_COLL_DIFF_ALARM ((UINT16)0x2013) /*CIM IO˫ϵɼһ±*/ +#define CI_TO_CIM_DATA_LEN_MAX ((UINT16)5000) /*CICIMֵ*/ +#define CI_TO_AIM_DATA_LEN_MAX ((UINT16)5000) /*CIAIMֵ*/ +#define CIM_INFO_RCI_TO_ATS_DATA ((UINT16)0x2001) /*CIM ATS״̬Ϣ*/ +#define CIM_INFO_ATS_TO_RCI_DATA ((UINT16)0x2002) /*CIM ATS״̬Ϣ*/ +#define CIM_INFO_VER_INFO ((UINT16)0x2003) /*CIM汾Ϣ*/ +#define CIM_INFO_COMM_STATE ((UINT16)0x2004) /*CIM豸ͨ״̬Ϣ*/ +#define CIM_INFO_SIGNAL_DS_STATE ((UINT16)0x2005) /*CIMźŻ˿״̬Ϣ*/ +#define CIM_INFO_RELAY_DRVANDCOLLDEF ((UINT16)0x2006) /*CIM̵زɲһ±*/ +#define CIM_INFO_PSD_ALARM ((UINT16)0x2007) /*CIMű֡*/ +#define CIM_INFO_DEVICE_STATE ((UINT16)0x2008) /*CIM豸״̬Ϣ*/ +#define CIM_INFO_MAINTENANCE ((UINT16)0x2009) /*CIMάϢ*/ +#define CIM_INFO_LEU_STATE ((UINT16)0x200A) /*CIMLEU״̬*/ +#define CIM_INFOR_RELAY_HUNXIAN_STATE ((UINT16)0x200F) /*CIM̵״̬Ϣ*/ +#define CIM_INFO_SIGNAL_DRIVOUT ((UINT16)0x2010) /*CIMźŻʱϢ*/ +#define CIM_INFO_UNIT_ALARM ((UINT16)0x2011) /*CIMִеԪ*/ +#define CIM_INFO_FLYPROTECT_ALARM ((UINT16)0x2012) /*CIMɳ崻*/ +#define CIM_INFO_IO_COLL_DIFF_ALARM ((UINT16)0x2013) /*CIM IO˫ϵɼһ±*/ +#define CIM_INFO_SWT_REDUN_COLL_ALARM ((UINT16)0x2014) /*CIMɼ*/ #define CI_AND_OTHER_TRANSMIT_GOOD ((UINT8)0x55) /*CIϵͳ˫ͨ*/ #define CI_AND_OTHER_TRANSMIT_LINK ((UINT8)0x5A) /*CIϵͳͨ*/ diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackGateWayData.c b/TSCP/src/APP/ciapp/ParsePack/ParsePackGateWayData.c index a14b801..4ee6fc0 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackGateWayData.c +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackGateWayData.c @@ -5,6 +5,9 @@ #include "dquCIInterFace.h" #include "WLBrakeDataManage.h" #include "RRMManageAPI.h" +#include "../ParsePack/ParsePackAtsData.h" +#include "../HLHTMsgHead/HLHTCommonDataPacketHead.h" +#include "../HLHTMsgHead/HLHTHeadContexManage.h" AtsScreenMsgFstStru g_strAtsMsgFst = { 0u }; /*Զɸѡ״Ϣ*/ AtsMsgCfmStru g_strAtsCfmFst = { 0u }; /*Զɸѡ״ȷ*/ @@ -32,12 +35,13 @@ AtsMsgCfmStru g_strSndAtsWlbCfmFst = { 0U }; /* AtsMsgCfmStru g_strSndAtsDaCfmFst = { 0U }; /*ڶATSȡѹ״ȷ*/ /** -* @brief ֡ +* @brief ֡---GALϢ * @param const UINT8* dataBuf, ݻ -* @param const UINT16 dataLength, ݳ +* @param[out] UINT16* dataIndex, +* @param[in] const UINT16 dataLength, ݳ * @return CI_SUCCESS:ɹCI_ERROR:ʧ */ -UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength) +UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, UINT16* dataIndex, const UINT16 dataLength) { UINT8 chRtn = CI_ERROR; UINT8 chRtn1 = CI_SUCCESS; @@ -71,10 +75,10 @@ UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength) UINT8 szCrcTmp[1024] = { 0U }; - if ((NULL != dataBuf) && (0u < dataLength)) + if ((NULL != dataBuf) && (0u < dataLength)&&(NULL !=dataIndex)) { + ii = *dataIndex; chLocalId = GetSystemParaLocalCiId(); - /* Ϣ */ chMsgNum = dataBuf[ii++]; /* ݰ汾 */ @@ -1557,7 +1561,7 @@ UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength) if (CI_SUCCESS == chRtn) { - ; /**/ + *dataIndex = ii; } else { @@ -1839,13 +1843,12 @@ void ClearAtsDaMsgSecond(void) } /** -* @brief TIOC +* @brief TIOC--Ϣ * @param * @return CI_ERRORʧܣCI_SUCCESSɹ */ -UINT8 PackTiocToGateWayData(const UINT8 deviceId, const UINT8 targetDevType) +UINT8 PackTiocToGateWayData(UINT8* szToGateWayDataBuf, const UINT8 targetDevType, UINT16* wDataIndex) { - UINT8 szToGateWayDataBuf[CI_TO_ATS_DATA_LEN_MAX] = { 0u }; UINT16 ii = 0u; UINT16 jj = 0U; UINT16 wMsgNumIndex = 0u; @@ -1861,7 +1864,6 @@ UINT8 PackTiocToGateWayData(const UINT8 deviceId, const UINT8 targetDevType) UINT8 chTrainIndex = 0u; UINT32 dwTrainId = 0u; UINT16 wMsgLen = 0u; - UINT16 wDstDevId = 0u; UINT16 wTrainLgcId = 0u; UINT8 chEaNum = 0u; UINT16 wEaTrainid = 0u; @@ -1894,826 +1896,820 @@ UINT8 PackTiocToGateWayData(const UINT8 deviceId, const UINT8 targetDevType) TrainFlyProtectStru * pFlyData = NULL; wRcId = (UINT16)chLocalId; /* RCţ */ - - /* Ϣλ */ - ii++; - - chRtn = GetCiEmapCheckVer(chLocalId, &dwDataVer, targetDevType); - if (CI_SUCCESS == chRtn) - {/* ݰ汾 */ - LongToChar(dwDataVer, &szToGateWayDataBuf[ii]); - ii += 4u; - } - else + if ((NULL != szToGateWayDataBuf) && (NULL != wDataIndex)) { - ; - } + ii = *wDataIndex; + wMsgNumIndex = ii; + /* Ϣλ */ + ii++; - if (CI_SUCCESS == chRtn) - {/* Э汾 */ - LongToChar(GATE_WAY_PRTCL_VER, &szToGateWayDataBuf[ii]); - ii += 4u; - } - else - { - ; - } - if (0U == dwFlyProtectOverCyc) - { + chRtn = GetCiEmapCheckVer(chLocalId, &dwDataVer, targetDevType); if (CI_SUCCESS == chRtn) - {/* TIOC㱨ATSԶɸѡгϢ */ - szToGateWayDataBuf[ii++] = MSG_TYPE_REPORT; /* 㱨ԶɸѡгϢ֡ */ - wMsgLenIndex = ii; /* ¼֡ȴ± */ - ii += 2u; - szToGateWayDataBuf[ii++] = MSG_TYPE_REPORT; - ShortToChar(GATE_WAY_APP_PRTCL_VER, &szToGateWayDataBuf[ii]); /* ӦЭ汾 */ - ii += 2u; - szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ - chAtsScreenNum = GetAtsScreenNum(); - szToGateWayDataBuf[ii++] = chAtsScreenNum; /* Զɸѡг */ - for (chTrainIndex = 0u; chTrainIndex < chAtsScreenNum; chTrainIndex++) - { - wTrainId = GetAtsScreenTrainIdByIndex(chTrainIndex); - chRtn = dquDevName2HlhtId(wTrainId, wTrainLgcId, &dwTrainId); - chScreenType = GetAtsScreenTypeByIndex(chTrainIndex); - wLgcId = GetAtsScreenLgcIdByIndex(chTrainIndex); - chTrainPosMonitorState = GetTrainPosMonitorState(wTrainId); - chTrainNvramFlag = GetTrainNvramPosFlag(wTrainId); + {/* ݰ汾 */ + LongToChar(dwDataVer, &szToGateWayDataBuf[ii]); + ii += 4u; + } + else + { + ; + } - LongToChar(dwTrainId, &szToGateWayDataBuf[ii]); /* гID */ - ii += 4u; - - if (TRAIN_SCREEN_TYPE_LU == chScreenType) + if (CI_SUCCESS == chRtn) + {/* Э汾 */ + LongToChar(GATE_WAY_PRTCL_VER, &szToGateWayDataBuf[ii]); + ii += 4u; + } + else + { + ; + } + if (0U == dwFlyProtectOverCyc) + { + if (CI_SUCCESS == chRtn) + {/* TIOC㱨ATSԶɸѡгϢ */ + szToGateWayDataBuf[ii++] = MSG_TYPE_REPORT; /* 㱨ԶɸѡгϢ֡ */ + wMsgLenIndex = ii; /* ¼֡ȴ± */ + ii += 2u; + szToGateWayDataBuf[ii++] = MSG_TYPE_REPORT; + ShortToChar(GATE_WAY_APP_PRTCL_VER, &szToGateWayDataBuf[ii]); /* ӦЭ汾 */ + ii += 2u; + szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ + chAtsScreenNum = GetAtsScreenNum(); + szToGateWayDataBuf[ii++] = chAtsScreenNum; /* Զɸѡг */ + for (chTrainIndex = 0u; chTrainIndex < chAtsScreenNum; chTrainIndex++) { - if ((TRAIN_POS_MONITOR_VALID == chTrainPosMonitorState) || (TRAIN_NVRAM_POS_FLAG_NO == chTrainNvramFlag)) - { - szToGateWayDataBuf[ii++] = TRAIN_SCREEN_TYPE_LU; /* Զɸѡ */ - } - else - { - szToGateWayDataBuf[ii++] = TRAIN_SCREEN_TYPE_POSTION_LOST; /* ලλЧɸѡ */ - } - - } - else - { - szToGateWayDataBuf[ii++] = chScreenType; - } + wTrainId = GetAtsScreenTrainIdByIndex(chTrainIndex); + chRtn = dquDevName2HlhtId(wTrainId, wTrainLgcId, &dwTrainId); + chScreenType = GetAtsScreenTypeByIndex(chTrainIndex); + wLgcId = GetAtsScreenLgcIdByIndex(chTrainIndex); + chTrainPosMonitorState = GetTrainPosMonitorState(wTrainId); + chTrainNvramFlag = GetTrainNvramPosFlag(wTrainId); - ShortToChar(wLgcId, &szToGateWayDataBuf[ii]); /* г߼ */ - ii += 2u; - } - wMsgLen = (ii - wMsgLenIndex - 2u); - ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ - chMsgNum++; /* Ϣ */ - } - else - { - ; - } - - if (CI_SUCCESS == chRtn) - { - if (FLAG_SET == g_strAtsCfmFst.chFlag) - { - szToGateWayDataBuf[ii++] = MSG_TYPE_CONFIRM_FIRST; /* ֡ */ - wMsgLenIndex = ii; /* ¼֡ȴ± */ - ii += 2u; - szToGateWayDataBuf[ii++] = MSG_TYPE_CONFIRM_FIRST; - szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ - szToGateWayDataBuf[ii++] = g_strAtsCfmFst.chStation; /* վ */ - ShortToChar(g_strAtsCfmFst.wIndex, &szToGateWayDataBuf[ii]); /* վ */ - ii += 2U; - LongToChar(g_strAtsCfmFst.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ - ii += 4u; - szToGateWayDataBuf[ii++] = g_strAtsCfmFst.chOpStatus; /* ȷϽ */ - LongToChar(g_strAtsCfmFst.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ - ii += 4u; - wMsgLen = (ii - wMsgLenIndex - 2u); - ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ - chMsgNum++; /* Ϣ */ - } - else - { - ; - } - g_strAtsCfmFst.chFlag = FLAG_UNSET; - } - else - { - ; - } - - if (CI_SUCCESS == chRtn) - { - /*ڶATSԶɸѡ״ȷϢ*/ - if (FLAG_SET == g_strSndAtsCfmFst.chFlag) - { - szToGateWayDataBuf[ii] = MSG_TYPE_CONFIRM_FIRST; /* ֡ */ - ii++; - wMsgLenIndex = ii; /* ¼֡ȴ± */ - ii += 2U; - szToGateWayDataBuf[ii] = MSG_TYPE_CONFIRM_FIRST; - ii++; - szToGateWayDataBuf[ii] = chLocalId; /* TIOC */ - ii++; - szToGateWayDataBuf[ii] = g_strSndAtsCfmFst.chStation; /* վ */ - ii++; - ShortToChar(g_strSndAtsCfmFst.wIndex, &szToGateWayDataBuf[ii]); /* վ */ - ii += 2U; - LongToChar(g_strSndAtsCfmFst.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ - ii += 4U; - szToGateWayDataBuf[ii] = g_strSndAtsCfmFst.chOpStatus; /* ȷϽ */ - ii++; - LongToChar(g_strSndAtsCfmFst.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ - ii += 4U; - wMsgLen = (ii - wMsgLenIndex - 2U); - ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ - chMsgNum++; /* Ϣ */ - - /*ڶATSȷϢ*/ - ClearSndAtsScreenFstCfmMsg(); - } - else - { - ; - } - } - else - { - ; - } - - if (CI_SUCCESS == chRtn) - { - if (FLAG_SET == g_strAtsCfmSnd.chFlag) - { - szToGateWayDataBuf[ii++] = MSG_TYPE_CONFIRM_SECOND; /* ֡ */ - wMsgLenIndex = ii; /* ¼֡ȴ± */ - ii += 2u; - szToGateWayDataBuf[ii++] = MSG_TYPE_CONFIRM_SECOND; - szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ - szToGateWayDataBuf[ii++] = g_strAtsCfmSnd.chStation; /* վ */ - ShortToChar(g_strAtsCfmSnd.wIndex, &szToGateWayDataBuf[ii]); /* վ */ - ii += 2U; - LongToChar(g_strAtsCfmSnd.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ - ii += 4u; - szToGateWayDataBuf[ii++] = g_strAtsCfmSnd.chOpStatus; /* ȷϽ */ - LongToChar(g_strAtsCfmSnd.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ - ii += 4u; - wMsgLen = (ii - wMsgLenIndex - 2u); - ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ - chMsgNum++; /* Ϣ */ - } - else - { - ; - } - g_strAtsCfmSnd.chFlag = FLAG_UNSET; - } - else - { - ; - } - - if (CI_SUCCESS == chRtn) - { - /* TIOC㱨ATSɢϢ */ - szToGateWayDataBuf[ii++] = MSG_TYPE_EA_REPORT; /* ɢ㱨Ϣ */ - wMsgLenIndex = ii; /* ¼֡ȴ± */ - ii += 2u; - szToGateWayDataBuf[ii++] = MSG_TYPE_EA_REPORT; - ShortToChar(GATE_WAY_APP_PRTCL_VER, &szToGateWayDataBuf[ii]); /* ӦЭ汾 */ - ii += 2u; - szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ - - chEaNum = GetEaNum(); - if (EA_MAX_NUM < chEaNum) - { - chRtn = CI_ERROR; - } - else - { - chEaSendNum = 0u; - wEaNumIndex = ii; /* ¼㱨洢± */ - ii++; - - for (chEaIndex = 0u; chEaIndex < chEaNum; chEaIndex++) - { - wEaTrainid = GetEvacuatingTrainIdByIndex(chEaIndex); - chRtn = dquDevName2HlhtId(wEaTrainid, wTrainLgcId, &dwEaTrainHlhtId); - chEaLgcNum = EaGetLgcNum(chEaIndex); - pEaLgcId = EaGetLgcId(chEaIndex); - chEaBuidFlag = GetEaBuildedFlag(chEaIndex); - chEaSrcId = GetEaSrcTiocByIndex(chEaIndex); - chPaType = GetPaTypeByIndex(chEaIndex); - chEaConfigId = GetEaConfigID(chEaIndex); - chEaAreaLineType = GetEaAreaLineType(chEaIndex); - if ((NULL == pEaLgcId) || (CI_ERROR == chRtn) || (EA_SECTION_MAX_NUM < chEaLgcNum) - || ((PA_TYPE_DA != chPaType) && (PA_TYPE_EA != chPaType))) - { - chRtn = CI_ERROR; - break; - } - else - { - if ((chEaSrcId == chLocalId) && (PA_TYPE_EA == chPaType)) - { - chEaSendNum++; - LongToChar(dwEaTrainHlhtId, &szToGateWayDataBuf[ii]); /* ɢгͨID */ - ii += 4u; - - szToGateWayDataBuf[ii++] = chEaConfigId; /* ID*/ - - szToGateWayDataBuf[ii++] = chEaBuidFlag; /* ־ */ - - szToGateWayDataBuf[ii++] = chEaAreaLineType; /* */ - - szToGateWayDataBuf[ii++] = chEaLgcNum; /* ߼ */ - for (chEaLgcIndex = 0u; chEaLgcIndex < chEaLgcNum; chEaLgcIndex++) - { - ShortToChar(pEaLgcId[chEaLgcIndex], &szToGateWayDataBuf[ii]); - ii += 2u; - } - } - else - { - ; /* ǽ㱨ATS */ - } - } - } - - szToGateWayDataBuf[wEaNumIndex] = chEaSendNum; /* 㱨 */ - - wMsgLen = (ii - wMsgLenIndex - 2u); - ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ - chMsgNum++; /* Ϣ */ - } - } - else - { - ; - } - - if (CI_SUCCESS == chRtn) - { - if (FLAG_SET == g_strAtsEaCfmFst.chFlag) - { - szToGateWayDataBuf[ii++] = MSG_TYPE_EA_CONFIRM_FIRST; /* ֡ */ - wMsgLenIndex = ii; /* ¼֡ȴ± */ - ii += 2u; - szToGateWayDataBuf[ii++] = MSG_TYPE_EA_CONFIRM_FIRST; - szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ - szToGateWayDataBuf[ii++] = g_strAtsEaCfmFst.chStation; /* վ */ - ShortToChar(g_strAtsEaCfmFst.wIndex, &szToGateWayDataBuf[ii]); /* վ */ - ii += 2U; - LongToChar(g_strAtsEaCfmFst.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ - ii += 4u; - szToGateWayDataBuf[ii++] = g_strAtsEaCfmFst.chOpStatus; /* ȷϽ */ - LongToChar(g_strAtsEaCfmFst.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ - ii += 4u; - wMsgLen = (ii - wMsgLenIndex - 2u); - ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ - chMsgNum++; /* Ϣ */ - } - else - { - ; - } - g_strAtsEaCfmFst.chFlag = FLAG_UNSET; - } - else - { - ; - } - - if (CI_SUCCESS == chRtn) - { - /*ڶATSȡɢ״ȷϢ*/ - if (FLAG_SET == g_strSndAtsEaCfmFst.chFlag) - { - szToGateWayDataBuf[ii] = MSG_TYPE_EA_CONFIRM_FIRST; /* ֡ */ - ii++; - wMsgLenIndex = ii; /* ¼֡ȴ± */ - ii += 2U; - szToGateWayDataBuf[ii] = MSG_TYPE_EA_CONFIRM_FIRST; - ii++; - szToGateWayDataBuf[ii] = chLocalId; /* TIOC */ - ii++; - szToGateWayDataBuf[ii] = g_strSndAtsEaCfmFst.chStation; /* վ */ - ii++; - ShortToChar(g_strSndAtsEaCfmFst.wIndex, &szToGateWayDataBuf[ii]); /* վ */ - ii += 2U; - LongToChar(g_strSndAtsEaCfmFst.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ - ii += 4U; - szToGateWayDataBuf[ii] = g_strSndAtsEaCfmFst.chOpStatus; /* ȷϽ */ - ii++; - LongToChar(g_strSndAtsEaCfmFst.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ - ii += 4U; - wMsgLen = (ii - wMsgLenIndex - 2U); - ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ - chMsgNum++; /* Ϣ */ - - /*ڶATSȷϢ*/ - ClearSndAtsEaFstCfmMsg(); - } - else - { - ; - } - } - else - { - ; - } - - if (CI_SUCCESS == chRtn) - { - if (FLAG_SET == g_strAtsEaCfmSnd.chFlag) - { - szToGateWayDataBuf[ii++] = MSG_TYPE_EA_CONFIRM_SECOND; /* ֡ */ - wMsgLenIndex = ii; /* ¼֡ȴ± */ - ii += 2u; - szToGateWayDataBuf[ii++] = MSG_TYPE_EA_CONFIRM_SECOND; - szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ - szToGateWayDataBuf[ii++] = g_strAtsEaCfmSnd.chStation; /* վ */ - ShortToChar(g_strAtsEaCfmSnd.wIndex, &szToGateWayDataBuf[ii]); /* վ */ - ii += 2U; - LongToChar(g_strAtsEaCfmSnd.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ - ii += 4u; - szToGateWayDataBuf[ii++] = g_strAtsEaCfmSnd.chOpStatus; /* ȷϽ */ - LongToChar(g_strAtsEaCfmSnd.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ - ii += 4u; - wMsgLen = (ii - wMsgLenIndex - 2u); - ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ - chMsgNum++; /* Ϣ */ - } - else - { - ; - } - g_strAtsEaCfmSnd.chFlag = FLAG_UNSET; - } - else - { - ; - } - - if (CI_SUCCESS == chRtn) - { - /* TIOC㱨ATSȫгƶϢ */ - szToGateWayDataBuf[ii++] = MSG_TYPE_WLB_REPORT; /* ȫгƶ㱨Ϣ */ - wMsgLenIndex = ii; /* ¼֡ȴ± */ - ii += 2u; - szToGateWayDataBuf[ii++] = MSG_TYPE_WLB_REPORT; - szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ - - wWlbSum = 0U; - wWlbSumIndex = ii; - ii += 2U; - - /*ȫ߽ƶϢ*/ - chWlbState = WlbGetState(); - if (WLB_UNSET != chWlbState) - { - wWlbSum++; - szToGateWayDataBuf[ii++] = WLB_TYPE_RC; /* ƶ */ - ShortToChar(wRcId, &szToGateWayDataBuf[ii]); /* RC */ - ii += 2u; - } - else - { - /* δã */ - } - - /*ƶϢ*/ - wPhyCurSum = GetPhySecCurSum(); - for (jj = 0U; jj < wPhyCurSum; jj++) - { - wPhySecId = GetPhySecId(jj); - cPhySecAreaUrgentState = GetPhySecAreaUrgentState(wPhySecId); - if (PHYSEC_AREA_URGENT_NO != cPhySecAreaUrgentState) - { - wWlbSum++; - szToGateWayDataBuf[ii++] = WLB_TYPE_PHYSEC; /* ƶ */ - ShortToChar(wPhySecId, &szToGateWayDataBuf[ii]); /* α */ - ii += 2U; - } - else - { - /**/ - } - } - - ShortToChar(wWlbSum, &szToGateWayDataBuf[wWlbSumIndex]); /* ƶ */ - - wMsgLen = (ii - wMsgLenIndex - 2u); - ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ - chMsgNum++; /* Ϣ */ - } - else - { - ; - } - - if (CI_SUCCESS == chRtn) - { - if (FLAG_SET == g_strAtsWlbCfmFst.chFlag) - { - szToGateWayDataBuf[ii++] = MSG_TYPE_WLB_CONFIRM_FIRST; /* ֡ */ - wMsgLenIndex = ii; /* ¼֡ȴ± */ - ii += 2u; - szToGateWayDataBuf[ii++] = MSG_TYPE_WLB_CONFIRM_FIRST; - szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ - szToGateWayDataBuf[ii++] = g_strAtsWlbCfmFst.chStation; /* վ */ - ShortToChar(g_strAtsWlbCfmFst.wIndex, &szToGateWayDataBuf[ii]); /* վ */ - ii += 2U; - LongToChar(g_strAtsWlbCfmFst.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ - ii += 4u; - szToGateWayDataBuf[ii++] = g_strAtsWlbCfmFst.chOpStatus; /* ȷϽ */ - LongToChar(g_strAtsWlbCfmFst.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ - ii += 4u; - wMsgLen = (ii - wMsgLenIndex - 2u); - ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ - chMsgNum++; /* Ϣ */ - } - else - { - ; - } - g_strAtsWlbCfmFst.chFlag = FLAG_UNSET; - } - else - { - ; - } - - if (CI_SUCCESS == chRtn) - { - /*ڶATSȫ߽ƶ״ȷϢ*/ - if (FLAG_SET == g_strSndAtsWlbCfmFst.chFlag) - { - szToGateWayDataBuf[ii] = MSG_TYPE_WLB_CONFIRM_FIRST; /* ֡ */ - ii++; - wMsgLenIndex = ii; /* ¼֡ȴ± */ - ii += 2U; - szToGateWayDataBuf[ii] = MSG_TYPE_WLB_CONFIRM_FIRST; - ii++; - szToGateWayDataBuf[ii] = chLocalId; /* TIOC */ - ii++; - szToGateWayDataBuf[ii] = g_strSndAtsWlbCfmFst.chStation; /* վ */ - ii++; - ShortToChar(g_strSndAtsWlbCfmFst.wIndex, &szToGateWayDataBuf[ii]); /* վ */ - ii += 2U; - LongToChar(g_strSndAtsWlbCfmFst.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ - ii += 4U; - szToGateWayDataBuf[ii] = g_strSndAtsWlbCfmFst.chOpStatus; /* ȷϽ */ - ii++; - LongToChar(g_strSndAtsWlbCfmFst.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ - ii += 4U; - wMsgLen = (ii - wMsgLenIndex - 2U); - ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ - chMsgNum++; /* Ϣ */ - - /*ڶATSȷϢ*/ - ClearSndAtsWlbFstCfmMsg(); - } - else - { - ; - } - } - else - { - ; - } - - if (CI_SUCCESS == chRtn) - { - if (FLAG_SET == g_strAtsWlbCfmSnd.chFlag) - { - szToGateWayDataBuf[ii++] = MSG_TYPE_WLB_CONFIRM_SECOND; /* ֡ */ - wMsgLenIndex = ii; /* ¼֡ȴ± */ - ii += 2u; - szToGateWayDataBuf[ii++] = MSG_TYPE_WLB_CONFIRM_SECOND; - szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ - szToGateWayDataBuf[ii++] = g_strAtsWlbCfmSnd.chStation; /* վ */ - ShortToChar(g_strAtsWlbCfmSnd.wIndex, &szToGateWayDataBuf[ii]); /* վ */ - ii += 2U; - LongToChar(g_strAtsWlbCfmSnd.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ - ii += 4u; - szToGateWayDataBuf[ii++] = g_strAtsWlbCfmSnd.chOpStatus; /* ȷϽ */ - LongToChar(g_strAtsWlbCfmSnd.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ - ii += 4u; - wMsgLen = (ii - wMsgLenIndex - 2u); - ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ - chMsgNum++; /* Ϣ */ - } - else - { - ; - } - g_strAtsWlbCfmSnd.chFlag = FLAG_UNSET; - } - else - { - ; - } - - if (CI_SUCCESS == chRtn) - { - /* TIOC㱨ATSѹϢ */ - szToGateWayDataBuf[ii++] = MSG_TYPE_DA_REPORT; /* ѹ㱨Ϣ */ - wMsgLenIndex = ii; /* ¼֡ȴ± */ - ii += 2u; - szToGateWayDataBuf[ii++] = MSG_TYPE_DA_REPORT; - ShortToChar(GATE_WAY_APP_PRTCL_VER, &szToGateWayDataBuf[ii]); /* ӦЭ汾 */ - ii += 2u; - szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ - - chEaNum = GetEaNum(); - if (EA_MAX_NUM < chEaNum) - { - chRtn = CI_ERROR; - } - else - { - chEaSendNum = 0u; - wEaNumIndex = ii; /* ¼㱨洢± */ - ii++; - - for (chEaIndex = 0u; chEaIndex < chEaNum; chEaIndex++) - { - wEaTrainid = GetEvacuatingTrainIdByIndex(chEaIndex); - chRtn = dquDevName2HlhtId(wEaTrainid, wTrainLgcId, &dwEaTrainHlhtId); - chEaLgcNum = EaGetLgcNum(chEaIndex); - pEaLgcId = EaGetLgcId(chEaIndex); - chEaBuidFlag = GetEaBuildedFlag(chEaIndex); - chEaSrcId = GetEaSrcTiocByIndex(chEaIndex); - chPaType = GetPaTypeByIndex(chEaIndex); - chEaAreaLineType = GetEaAreaLineType(chEaIndex); - - if ((NULL == pEaLgcId) || (CI_ERROR == chRtn) || (EA_SECTION_MAX_NUM < chEaLgcNum) - || ((PA_TYPE_DA != chPaType) && (PA_TYPE_EA != chPaType))) - { - chRtn = CI_ERROR; - break; - } - else - { - if ((chEaSrcId == chLocalId) && (PA_TYPE_DA == chPaType)) - { - chEaSendNum++; - LongToChar(dwEaTrainHlhtId, &szToGateWayDataBuf[ii]); /* ɢгͨID */ - ii += 4u; - - szToGateWayDataBuf[ii++] = chEaAreaLineType; /* */ - - szToGateWayDataBuf[ii++] = chEaLgcNum; /* ߼ */ - for (chEaLgcIndex = 0u; chEaLgcIndex < chEaLgcNum; chEaLgcIndex++) - { - ShortToChar(pEaLgcId[chEaLgcIndex], &szToGateWayDataBuf[ii]); - ii += 2u; - } - } - else - { - ; /* ǽ㱨ATS */ - } - } - } - - szToGateWayDataBuf[wEaNumIndex] = chEaSendNum; /* 㱨 */ - - wMsgLen = (ii - wMsgLenIndex - 2u); - ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ - chMsgNum++; /* Ϣ */ - } - } - else - { - ; - } - - if (CI_SUCCESS == chRtn) - { - if (FLAG_SET == g_strAtsDaCfmFst.chFlag) - { - szToGateWayDataBuf[ii++] = MSG_TYPE_DA_CONFIRM_FIRST; /* ֡ */ - wMsgLenIndex = ii; /* ¼֡ȴ± */ - ii += 2u; - szToGateWayDataBuf[ii++] = MSG_TYPE_DA_CONFIRM_FIRST; - szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ - szToGateWayDataBuf[ii++] = g_strAtsDaCfmFst.chStation; /* վ */ - ShortToChar(g_strAtsDaCfmFst.wIndex, &szToGateWayDataBuf[ii]); /* վ */ - ii += 2U; - LongToChar(g_strAtsDaCfmFst.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ - ii += 4u; - szToGateWayDataBuf[ii++] = g_strAtsDaCfmFst.chOpStatus; /* ȷϽ */ - LongToChar(g_strAtsDaCfmFst.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ - ii += 4u; - wMsgLen = (ii - wMsgLenIndex - 2u); - ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ - chMsgNum++; /* Ϣ */ - } - else - { - ; - } - g_strAtsDaCfmFst.chFlag = FLAG_UNSET; - } - else - { - ; - } - - if (CI_SUCCESS == chRtn) - { - /*ڶATSȡ״ȷϢ*/ - if (FLAG_SET == g_strSndAtsDaCfmFst.chFlag) - { - szToGateWayDataBuf[ii] = MSG_TYPE_DA_CONFIRM_FIRST; /* ֡ */ - ii++; - wMsgLenIndex = ii; /* ¼֡ȴ± */ - ii += 2U; - szToGateWayDataBuf[ii] = MSG_TYPE_DA_CONFIRM_FIRST; - ii++; - szToGateWayDataBuf[ii] = chLocalId; /* TIOC */ - ii++; - szToGateWayDataBuf[ii] = g_strSndAtsDaCfmFst.chStation; /* վ */ - ii++; - ShortToChar(g_strSndAtsDaCfmFst.wIndex, &szToGateWayDataBuf[ii]); /* վ */ - ii += 2U; - LongToChar(g_strSndAtsDaCfmFst.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ - ii += 4U; - szToGateWayDataBuf[ii] = g_strSndAtsDaCfmFst.chOpStatus; /* ȷϽ */ - ii++; - LongToChar(g_strSndAtsDaCfmFst.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ - ii += 4U; - wMsgLen = (ii - wMsgLenIndex - 2U); - ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ - chMsgNum++; /* Ϣ */ - - /*ڶATSȷϢ*/ - ClearSndAtsDaFstCfmMsg(); - } - else - { - ; - } - } - else - { - ; - } - - if (CI_SUCCESS == chRtn) - { - if (FLAG_SET == g_strAtsDaCfmSnd.chFlag) - { - szToGateWayDataBuf[ii++] = MSG_TYPE_DA_CONFIRM_SECOND; /* ֡ */ - wMsgLenIndex = ii; /* ¼֡ȴ± */ - ii += 2u; - szToGateWayDataBuf[ii++] = MSG_TYPE_DA_CONFIRM_SECOND; - szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ - szToGateWayDataBuf[ii++] = g_strAtsDaCfmSnd.chStation; /* վ */ - ShortToChar(g_strAtsDaCfmSnd.wIndex, &szToGateWayDataBuf[ii]); /* վ */ - ii += 2U; - LongToChar(g_strAtsDaCfmSnd.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ - ii += 4u; - szToGateWayDataBuf[ii++] = g_strAtsDaCfmSnd.chOpStatus; /* ȷϽ */ - LongToChar(g_strAtsDaCfmSnd.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ - ii += 4u; - wMsgLen = (ii - wMsgLenIndex - 2u); - ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ - chMsgNum++; /* Ϣ */ - } - else - { - ; - } - g_strAtsDaCfmSnd.chFlag = FLAG_UNSET; - } - else - { - ; - } - - if (CI_SUCCESS == chRtn) - { - /* TIOC㱨ATSгϢ */ - rrm_GetInfToATSUCTInfo(&strTrainInfo); - szToGateWayDataBuf[ii++] = MSG_TYPE_TRIAN_INFO_REPORT; /* 㱨ԶɸѡгϢ֡ */ - wMsgLenIndex = ii; /* ¼֡ȴ± */ - ii += 2u; - szToGateWayDataBuf[ii++] = MSG_TYPE_TRIAN_INFO_REPORT; - ShortToChar(GATE_WAY_APP_PRTCL_VER, &szToGateWayDataBuf[ii]); /* ӦЭ汾 */ - ii += 2u; - szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ - szToGateWayDataBuf[ii++] = strTrainInfo.trainCnt; /* г */ - for (chTrainIndex = 0u; chTrainIndex < strTrainInfo.trainCnt; chTrainIndex++) - { - (void)dquDevName2HlhtId(strTrainInfo.TrainID[chTrainIndex], wTrainLgcId, &dwTrainId); - LongToChar(dwTrainId, &szToGateWayDataBuf[ii]); /* гͨID */ - ii += 4u; - - ShortToChar(strTrainInfo.TailSecID[chTrainIndex], &szToGateWayDataBuf[ii]); /* гβ߼ */ - ii += 2u; - } - wMsgLen = (ii - wMsgLenIndex - 2u); - ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ - chMsgNum++; /* Ϣ */ - } - else - { - ; - } - } - else - { - /*ɳ崻Ϣ*/ - szToGateWayDataBuf[ii++] = MSG_TYPE_TRAIN_FLY_INFO; /* ֡ */ - wMsgLenIndex = ii; /* ¼֡ȴ± */ - ii += 2u; - szToGateWayDataBuf[ii++] = MSG_TYPE_TRAIN_FLY_INFO; - - ShortToChar(GATE_WAY_APP_PRTCL_VER, &szToGateWayDataBuf[ii]); /* ӦЭ汾 */ - ii += 2u; - szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ - - FlyProtectTrainNum = GetFlyProtectNum(); - if (SHUT_DOWN_TRAIN_NUMMAX < FlyProtectTrainNum) - { - chRtn = CI_ERROR; - } - else - { - szToGateWayDataBuf[ii++] = FlyProtectTrainNum; /*ɳг*/ - for (chIndex = 0U; chIndex < FlyProtectTrainNum; chIndex++) - { - pFlyData = GetFlyProtectData(chIndex); - wTrainId = pFlyData->wTrainId; - TrainFlyAxis = pFlyData->flyProtectSecCnt; - chRtn = dquDevName2HlhtId((UINT16)(CI_SYSTEM_TYPE_IVOC * 256U) + wTrainId, 0U, &dwTrainId); /*ֽгIDתΪ4ֽڻͨID*/ - if (chRtn == CI_SUCCESS) - {/*ͨIDѯɹ*/ LongToChar(dwTrainId, &szToGateWayDataBuf[ii]); /* гID */ ii += 4u; - /** ȡͨųӦİid */ - - if (TRAIN_FLYALARM_SECNUM_MAX < TrainFlyAxis) + + if (TRAIN_SCREEN_TYPE_LU == chScreenType) { - chRtn = CI_ERROR; + if ((TRAIN_POS_MONITOR_VALID == chTrainPosMonitorState) || (TRAIN_NVRAM_POS_FLAG_NO == chTrainNvramFlag)) + { + szToGateWayDataBuf[ii++] = TRAIN_SCREEN_TYPE_LU; /* Զɸѡ */ + } + else + { + szToGateWayDataBuf[ii++] = TRAIN_SCREEN_TYPE_POSTION_LOST; /* ලλЧɸѡ */ + } + } else { - szToGateWayDataBuf[ii++] = TrainFlyAxis; /* */ - /* ȡ id*/ - for (jj = 0U; jj < TrainFlyAxis; jj++) + szToGateWayDataBuf[ii++] = chScreenType; + } + + ShortToChar(wLgcId, &szToGateWayDataBuf[ii]); /* г߼ */ + ii += 2u; + } + wMsgLen = (ii - wMsgLenIndex - 2u); + ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ + chMsgNum++; /* Ϣ */ + } + else + { + ; + } + + if (CI_SUCCESS == chRtn) + { + if (FLAG_SET == g_strAtsCfmFst.chFlag) + { + szToGateWayDataBuf[ii++] = MSG_TYPE_CONFIRM_FIRST; /* ֡ */ + wMsgLenIndex = ii; /* ¼֡ȴ± */ + ii += 2u; + szToGateWayDataBuf[ii++] = MSG_TYPE_CONFIRM_FIRST; + szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ + szToGateWayDataBuf[ii++] = g_strAtsCfmFst.chStation; /* վ */ + ShortToChar(g_strAtsCfmFst.wIndex, &szToGateWayDataBuf[ii]); /* վ */ + ii += 2U; + LongToChar(g_strAtsCfmFst.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ + ii += 4u; + szToGateWayDataBuf[ii++] = g_strAtsCfmFst.chOpStatus; /* ȷϽ */ + LongToChar(g_strAtsCfmFst.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ + ii += 4u; + wMsgLen = (ii - wMsgLenIndex - 2u); + ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ + chMsgNum++; /* Ϣ */ + } + else + { + ; + } + g_strAtsCfmFst.chFlag = FLAG_UNSET; + } + else + { + ; + } + + if (CI_SUCCESS == chRtn) + { + /*ڶATSԶɸѡ״ȷϢ*/ + if (FLAG_SET == g_strSndAtsCfmFst.chFlag) + { + szToGateWayDataBuf[ii] = MSG_TYPE_CONFIRM_FIRST; /* ֡ */ + ii++; + wMsgLenIndex = ii; /* ¼֡ȴ± */ + ii += 2U; + szToGateWayDataBuf[ii] = MSG_TYPE_CONFIRM_FIRST; + ii++; + szToGateWayDataBuf[ii] = chLocalId; /* TIOC */ + ii++; + szToGateWayDataBuf[ii] = g_strSndAtsCfmFst.chStation; /* վ */ + ii++; + ShortToChar(g_strSndAtsCfmFst.wIndex, &szToGateWayDataBuf[ii]); /* վ */ + ii += 2U; + LongToChar(g_strSndAtsCfmFst.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ + ii += 4U; + szToGateWayDataBuf[ii] = g_strSndAtsCfmFst.chOpStatus; /* ȷϽ */ + ii++; + LongToChar(g_strSndAtsCfmFst.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ + ii += 4U; + wMsgLen = (ii - wMsgLenIndex - 2U); + ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ + chMsgNum++; /* Ϣ */ + + /*ڶATSȷϢ*/ + ClearSndAtsScreenFstCfmMsg(); + } + else + { + ; + } + } + else + { + ; + } + + if (CI_SUCCESS == chRtn) + { + if (FLAG_SET == g_strAtsCfmSnd.chFlag) + { + szToGateWayDataBuf[ii++] = MSG_TYPE_CONFIRM_SECOND; /* ֡ */ + wMsgLenIndex = ii; /* ¼֡ȴ± */ + ii += 2u; + szToGateWayDataBuf[ii++] = MSG_TYPE_CONFIRM_SECOND; + szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ + szToGateWayDataBuf[ii++] = g_strAtsCfmSnd.chStation; /* վ */ + ShortToChar(g_strAtsCfmSnd.wIndex, &szToGateWayDataBuf[ii]); /* վ */ + ii += 2U; + LongToChar(g_strAtsCfmSnd.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ + ii += 4u; + szToGateWayDataBuf[ii++] = g_strAtsCfmSnd.chOpStatus; /* ȷϽ */ + LongToChar(g_strAtsCfmSnd.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ + ii += 4u; + wMsgLen = (ii - wMsgLenIndex - 2u); + ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ + chMsgNum++; /* Ϣ */ + } + else + { + ; + } + g_strAtsCfmSnd.chFlag = FLAG_UNSET; + } + else + { + ; + } + + if (CI_SUCCESS == chRtn) + { + /* TIOC㱨ATSɢϢ */ + szToGateWayDataBuf[ii++] = MSG_TYPE_EA_REPORT; /* ɢ㱨Ϣ */ + wMsgLenIndex = ii; /* ¼֡ȴ± */ + ii += 2u; + szToGateWayDataBuf[ii++] = MSG_TYPE_EA_REPORT; + ShortToChar(GATE_WAY_APP_PRTCL_VER, &szToGateWayDataBuf[ii]); /* ӦЭ汾 */ + ii += 2u; + szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ + + chEaNum = GetEaNum(); + if (EA_MAX_NUM < chEaNum) + { + chRtn = CI_ERROR; + } + else + { + chEaSendNum = 0u; + wEaNumIndex = ii; /* ¼㱨洢± */ + ii++; + + for (chEaIndex = 0u; chEaIndex < chEaNum; chEaIndex++) + { + wEaTrainid = GetEvacuatingTrainIdByIndex(chEaIndex); + chRtn = dquDevName2HlhtId(wEaTrainid, wTrainLgcId, &dwEaTrainHlhtId); + chEaLgcNum = EaGetLgcNum(chEaIndex); + pEaLgcId = EaGetLgcId(chEaIndex); + chEaBuidFlag = GetEaBuildedFlag(chEaIndex); + chEaSrcId = GetEaSrcTiocByIndex(chEaIndex); + chPaType = GetPaTypeByIndex(chEaIndex); + chEaConfigId = GetEaConfigID(chEaIndex); + chEaAreaLineType = GetEaAreaLineType(chEaIndex); + if ((NULL == pEaLgcId) || (CI_ERROR == chRtn) || (EA_SECTION_MAX_NUM < chEaLgcNum) + || ((PA_TYPE_DA != chPaType) && (PA_TYPE_EA != chPaType))) { - wPhySecId = pFlyData->flyProtectSec[jj]; - ShortToChar(wPhySecId, &szToGateWayDataBuf[ii]); - ii += 2u; + chRtn = CI_ERROR; + break; + } + else + { + if ((chEaSrcId == chLocalId) && (PA_TYPE_EA == chPaType)) + { + chEaSendNum++; + LongToChar(dwEaTrainHlhtId, &szToGateWayDataBuf[ii]); /* ɢгͨID */ + ii += 4u; + + szToGateWayDataBuf[ii++] = chEaConfigId; /* ID*/ + + szToGateWayDataBuf[ii++] = chEaBuidFlag; /* ־ */ + + szToGateWayDataBuf[ii++] = chEaAreaLineType; /* */ + + szToGateWayDataBuf[ii++] = chEaLgcNum; /* ߼ */ + for (chEaLgcIndex = 0u; chEaLgcIndex < chEaLgcNum; chEaLgcIndex++) + { + ShortToChar(pEaLgcId[chEaLgcIndex], &szToGateWayDataBuf[ii]); + ii += 2u; + } + } + else + { + ; /* ǽ㱨ATS */ + } } } - } - else - { /*ʧ*/ - chRtn = CI_ERROR; + szToGateWayDataBuf[wEaNumIndex] = chEaSendNum; /* 㱨 */ + + wMsgLen = (ii - wMsgLenIndex - 2u); + ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ + chMsgNum++; /* Ϣ */ } } - wMsgLen = (ii - wMsgLenIndex - 2u); - ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ - } + else + { + ; + } - if (CI_SUCCESS == chRtn) - { - debug_infor_printf((const)"\n GATEWAY_FLY_SHUT_DOWN \n"); - chMsgNum = 1U; - } - } - if (CI_SUCCESS == chRtn) - { - /* ɹϢ */ - szToGateWayDataBuf[wMsgNumIndex] = chMsgNum; - wDstDevId = (UINT16)(((UINT16)targetDevType << 8U) | (UINT16)deviceId); - chRtn = OutnetSafeSend(wDstDevId, 0u, &szToGateWayDataBuf[0], ii); - if (CI_SUCCESS == chRtn) - { - debug_infor_printf((const)"\nGATEWAY_SEND:%d", ii); - debug_out_array(0xAA, szToGateWayDataBuf, ii); + if (CI_SUCCESS == chRtn) + { + if (FLAG_SET == g_strAtsEaCfmFst.chFlag) + { + szToGateWayDataBuf[ii++] = MSG_TYPE_EA_CONFIRM_FIRST; /* ֡ */ + wMsgLenIndex = ii; /* ¼֡ȴ± */ + ii += 2u; + szToGateWayDataBuf[ii++] = MSG_TYPE_EA_CONFIRM_FIRST; + szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ + szToGateWayDataBuf[ii++] = g_strAtsEaCfmFst.chStation; /* վ */ + ShortToChar(g_strAtsEaCfmFst.wIndex, &szToGateWayDataBuf[ii]); /* վ */ + ii += 2U; + LongToChar(g_strAtsEaCfmFst.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ + ii += 4u; + szToGateWayDataBuf[ii++] = g_strAtsEaCfmFst.chOpStatus; /* ȷϽ */ + LongToChar(g_strAtsEaCfmFst.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ + ii += 4u; + wMsgLen = (ii - wMsgLenIndex - 2u); + ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ + chMsgNum++; /* Ϣ */ + } + else + { + ; + } + g_strAtsEaCfmFst.chFlag = FLAG_UNSET; + } + else + { + ; + } + + if (CI_SUCCESS == chRtn) + { + /*ڶATSȡɢ״ȷϢ*/ + if (FLAG_SET == g_strSndAtsEaCfmFst.chFlag) + { + szToGateWayDataBuf[ii] = MSG_TYPE_EA_CONFIRM_FIRST; /* ֡ */ + ii++; + wMsgLenIndex = ii; /* ¼֡ȴ± */ + ii += 2U; + szToGateWayDataBuf[ii] = MSG_TYPE_EA_CONFIRM_FIRST; + ii++; + szToGateWayDataBuf[ii] = chLocalId; /* TIOC */ + ii++; + szToGateWayDataBuf[ii] = g_strSndAtsEaCfmFst.chStation; /* վ */ + ii++; + ShortToChar(g_strSndAtsEaCfmFst.wIndex, &szToGateWayDataBuf[ii]); /* վ */ + ii += 2U; + LongToChar(g_strSndAtsEaCfmFst.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ + ii += 4U; + szToGateWayDataBuf[ii] = g_strSndAtsEaCfmFst.chOpStatus; /* ȷϽ */ + ii++; + LongToChar(g_strSndAtsEaCfmFst.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ + ii += 4U; + wMsgLen = (ii - wMsgLenIndex - 2U); + ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ + chMsgNum++; /* Ϣ */ + + /*ڶATSȷϢ*/ + ClearSndAtsEaFstCfmMsg(); + } + else + { + ; + } + } + else + { + ; + } + + if (CI_SUCCESS == chRtn) + { + if (FLAG_SET == g_strAtsEaCfmSnd.chFlag) + { + szToGateWayDataBuf[ii++] = MSG_TYPE_EA_CONFIRM_SECOND; /* ֡ */ + wMsgLenIndex = ii; /* ¼֡ȴ± */ + ii += 2u; + szToGateWayDataBuf[ii++] = MSG_TYPE_EA_CONFIRM_SECOND; + szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ + szToGateWayDataBuf[ii++] = g_strAtsEaCfmSnd.chStation; /* վ */ + ShortToChar(g_strAtsEaCfmSnd.wIndex, &szToGateWayDataBuf[ii]); /* վ */ + ii += 2U; + LongToChar(g_strAtsEaCfmSnd.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ + ii += 4u; + szToGateWayDataBuf[ii++] = g_strAtsEaCfmSnd.chOpStatus; /* ȷϽ */ + LongToChar(g_strAtsEaCfmSnd.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ + ii += 4u; + wMsgLen = (ii - wMsgLenIndex - 2u); + ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ + chMsgNum++; /* Ϣ */ + } + else + { + ; + } + g_strAtsEaCfmSnd.chFlag = FLAG_UNSET; + } + else + { + ; + } + + if (CI_SUCCESS == chRtn) + { + /* TIOC㱨ATSȫгƶϢ */ + szToGateWayDataBuf[ii++] = MSG_TYPE_WLB_REPORT; /* ȫгƶ㱨Ϣ */ + wMsgLenIndex = ii; /* ¼֡ȴ± */ + ii += 2u; + szToGateWayDataBuf[ii++] = MSG_TYPE_WLB_REPORT; + szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ + + wWlbSum = 0U; + wWlbSumIndex = ii; + ii += 2U; + + /*ȫ߽ƶϢ*/ + chWlbState = WlbGetState(); + if (WLB_UNSET != chWlbState) + { + wWlbSum++; + szToGateWayDataBuf[ii++] = WLB_TYPE_RC; /* ƶ */ + ShortToChar(wRcId, &szToGateWayDataBuf[ii]); /* RC */ + ii += 2u; + } + else + { + /* δã */ + } + + /*ƶϢ*/ + wPhyCurSum = GetPhySecCurSum(); + for (jj = 0U; jj < wPhyCurSum; jj++) + { + wPhySecId = GetPhySecId(jj); + cPhySecAreaUrgentState = GetPhySecAreaUrgentState(wPhySecId); + if (PHYSEC_AREA_URGENT_NO != cPhySecAreaUrgentState) + { + wWlbSum++; + szToGateWayDataBuf[ii++] = WLB_TYPE_PHYSEC; /* ƶ */ + ShortToChar(wPhySecId, &szToGateWayDataBuf[ii]); /* α */ + ii += 2U; + } + else + { + /**/ + } + } + + ShortToChar(wWlbSum, &szToGateWayDataBuf[wWlbSumIndex]); /* ƶ */ + + wMsgLen = (ii - wMsgLenIndex - 2u); + ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ + chMsgNum++; /* Ϣ */ + } + else + { + ; + } + + if (CI_SUCCESS == chRtn) + { + if (FLAG_SET == g_strAtsWlbCfmFst.chFlag) + { + szToGateWayDataBuf[ii++] = MSG_TYPE_WLB_CONFIRM_FIRST; /* ֡ */ + wMsgLenIndex = ii; /* ¼֡ȴ± */ + ii += 2u; + szToGateWayDataBuf[ii++] = MSG_TYPE_WLB_CONFIRM_FIRST; + szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ + szToGateWayDataBuf[ii++] = g_strAtsWlbCfmFst.chStation; /* վ */ + ShortToChar(g_strAtsWlbCfmFst.wIndex, &szToGateWayDataBuf[ii]); /* վ */ + ii += 2U; + LongToChar(g_strAtsWlbCfmFst.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ + ii += 4u; + szToGateWayDataBuf[ii++] = g_strAtsWlbCfmFst.chOpStatus; /* ȷϽ */ + LongToChar(g_strAtsWlbCfmFst.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ + ii += 4u; + wMsgLen = (ii - wMsgLenIndex - 2u); + ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ + chMsgNum++; /* Ϣ */ + } + else + { + ; + } + g_strAtsWlbCfmFst.chFlag = FLAG_UNSET; + } + else + { + ; + } + + if (CI_SUCCESS == chRtn) + { + /*ڶATSȫ߽ƶ״ȷϢ*/ + if (FLAG_SET == g_strSndAtsWlbCfmFst.chFlag) + { + szToGateWayDataBuf[ii] = MSG_TYPE_WLB_CONFIRM_FIRST; /* ֡ */ + ii++; + wMsgLenIndex = ii; /* ¼֡ȴ± */ + ii += 2U; + szToGateWayDataBuf[ii] = MSG_TYPE_WLB_CONFIRM_FIRST; + ii++; + szToGateWayDataBuf[ii] = chLocalId; /* TIOC */ + ii++; + szToGateWayDataBuf[ii] = g_strSndAtsWlbCfmFst.chStation; /* վ */ + ii++; + ShortToChar(g_strSndAtsWlbCfmFst.wIndex, &szToGateWayDataBuf[ii]); /* վ */ + ii += 2U; + LongToChar(g_strSndAtsWlbCfmFst.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ + ii += 4U; + szToGateWayDataBuf[ii] = g_strSndAtsWlbCfmFst.chOpStatus; /* ȷϽ */ + ii++; + LongToChar(g_strSndAtsWlbCfmFst.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ + ii += 4U; + wMsgLen = (ii - wMsgLenIndex - 2U); + ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ + chMsgNum++; /* Ϣ */ + + /*ڶATSȷϢ*/ + ClearSndAtsWlbFstCfmMsg(); + } + else + { + ; + } + } + else + { + ; + } + + if (CI_SUCCESS == chRtn) + { + if (FLAG_SET == g_strAtsWlbCfmSnd.chFlag) + { + szToGateWayDataBuf[ii++] = MSG_TYPE_WLB_CONFIRM_SECOND; /* ֡ */ + wMsgLenIndex = ii; /* ¼֡ȴ± */ + ii += 2u; + szToGateWayDataBuf[ii++] = MSG_TYPE_WLB_CONFIRM_SECOND; + szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ + szToGateWayDataBuf[ii++] = g_strAtsWlbCfmSnd.chStation; /* վ */ + ShortToChar(g_strAtsWlbCfmSnd.wIndex, &szToGateWayDataBuf[ii]); /* վ */ + ii += 2U; + LongToChar(g_strAtsWlbCfmSnd.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ + ii += 4u; + szToGateWayDataBuf[ii++] = g_strAtsWlbCfmSnd.chOpStatus; /* ȷϽ */ + LongToChar(g_strAtsWlbCfmSnd.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ + ii += 4u; + wMsgLen = (ii - wMsgLenIndex - 2u); + ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ + chMsgNum++; /* Ϣ */ + } + else + { + ; + } + g_strAtsWlbCfmSnd.chFlag = FLAG_UNSET; + } + else + { + ; + } + + if (CI_SUCCESS == chRtn) + { + /* TIOC㱨ATSѹϢ */ + szToGateWayDataBuf[ii++] = MSG_TYPE_DA_REPORT; /* ѹ㱨Ϣ */ + wMsgLenIndex = ii; /* ¼֡ȴ± */ + ii += 2u; + szToGateWayDataBuf[ii++] = MSG_TYPE_DA_REPORT; + ShortToChar(GATE_WAY_APP_PRTCL_VER, &szToGateWayDataBuf[ii]); /* ӦЭ汾 */ + ii += 2u; + szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ + + chEaNum = GetEaNum(); + if (EA_MAX_NUM < chEaNum) + { + chRtn = CI_ERROR; + } + else + { + chEaSendNum = 0u; + wEaNumIndex = ii; /* ¼㱨洢± */ + ii++; + + for (chEaIndex = 0u; chEaIndex < chEaNum; chEaIndex++) + { + wEaTrainid = GetEvacuatingTrainIdByIndex(chEaIndex); + chRtn = dquDevName2HlhtId(wEaTrainid, wTrainLgcId, &dwEaTrainHlhtId); + chEaLgcNum = EaGetLgcNum(chEaIndex); + pEaLgcId = EaGetLgcId(chEaIndex); + chEaBuidFlag = GetEaBuildedFlag(chEaIndex); + chEaSrcId = GetEaSrcTiocByIndex(chEaIndex); + chPaType = GetPaTypeByIndex(chEaIndex); + chEaAreaLineType = GetEaAreaLineType(chEaIndex); + + if ((NULL == pEaLgcId) || (CI_ERROR == chRtn) || (EA_SECTION_MAX_NUM < chEaLgcNum) + || ((PA_TYPE_DA != chPaType) && (PA_TYPE_EA != chPaType))) + { + chRtn = CI_ERROR; + break; + } + else + { + if ((chEaSrcId == chLocalId) && (PA_TYPE_DA == chPaType)) + { + chEaSendNum++; + LongToChar(dwEaTrainHlhtId, &szToGateWayDataBuf[ii]); /* ɢгͨID */ + ii += 4u; + + szToGateWayDataBuf[ii++] = chEaAreaLineType; /* */ + + szToGateWayDataBuf[ii++] = chEaLgcNum; /* ߼ */ + for (chEaLgcIndex = 0u; chEaLgcIndex < chEaLgcNum; chEaLgcIndex++) + { + ShortToChar(pEaLgcId[chEaLgcIndex], &szToGateWayDataBuf[ii]); + ii += 2u; + } + } + else + { + ; /* ǽ㱨ATS */ + } + } + } + + szToGateWayDataBuf[wEaNumIndex] = chEaSendNum; /* 㱨 */ + + wMsgLen = (ii - wMsgLenIndex - 2u); + ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ + chMsgNum++; /* Ϣ */ + } + } + else + { + ; + } + + if (CI_SUCCESS == chRtn) + { + if (FLAG_SET == g_strAtsDaCfmFst.chFlag) + { + szToGateWayDataBuf[ii++] = MSG_TYPE_DA_CONFIRM_FIRST; /* ֡ */ + wMsgLenIndex = ii; /* ¼֡ȴ± */ + ii += 2u; + szToGateWayDataBuf[ii++] = MSG_TYPE_DA_CONFIRM_FIRST; + szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ + szToGateWayDataBuf[ii++] = g_strAtsDaCfmFst.chStation; /* վ */ + ShortToChar(g_strAtsDaCfmFst.wIndex, &szToGateWayDataBuf[ii]); /* վ */ + ii += 2U; + LongToChar(g_strAtsDaCfmFst.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ + ii += 4u; + szToGateWayDataBuf[ii++] = g_strAtsDaCfmFst.chOpStatus; /* ȷϽ */ + LongToChar(g_strAtsDaCfmFst.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ + ii += 4u; + wMsgLen = (ii - wMsgLenIndex - 2u); + ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ + chMsgNum++; /* Ϣ */ + } + else + { + ; + } + g_strAtsDaCfmFst.chFlag = FLAG_UNSET; + } + else + { + ; + } + + if (CI_SUCCESS == chRtn) + { + /*ڶATSȡ״ȷϢ*/ + if (FLAG_SET == g_strSndAtsDaCfmFst.chFlag) + { + szToGateWayDataBuf[ii] = MSG_TYPE_DA_CONFIRM_FIRST; /* ֡ */ + ii++; + wMsgLenIndex = ii; /* ¼֡ȴ± */ + ii += 2U; + szToGateWayDataBuf[ii] = MSG_TYPE_DA_CONFIRM_FIRST; + ii++; + szToGateWayDataBuf[ii] = chLocalId; /* TIOC */ + ii++; + szToGateWayDataBuf[ii] = g_strSndAtsDaCfmFst.chStation; /* վ */ + ii++; + ShortToChar(g_strSndAtsDaCfmFst.wIndex, &szToGateWayDataBuf[ii]); /* վ */ + ii += 2U; + LongToChar(g_strSndAtsDaCfmFst.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ + ii += 4U; + szToGateWayDataBuf[ii] = g_strSndAtsDaCfmFst.chOpStatus; /* ȷϽ */ + ii++; + LongToChar(g_strSndAtsDaCfmFst.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ + ii += 4U; + wMsgLen = (ii - wMsgLenIndex - 2U); + ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ + chMsgNum++; /* Ϣ */ + + /*ڶATSȷϢ*/ + ClearSndAtsDaFstCfmMsg(); + } + else + { + ; + } + } + else + { + ; + } + + if (CI_SUCCESS == chRtn) + { + if (FLAG_SET == g_strAtsDaCfmSnd.chFlag) + { + szToGateWayDataBuf[ii++] = MSG_TYPE_DA_CONFIRM_SECOND; /* ֡ */ + wMsgLenIndex = ii; /* ¼֡ȴ± */ + ii += 2u; + szToGateWayDataBuf[ii++] = MSG_TYPE_DA_CONFIRM_SECOND; + szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ + szToGateWayDataBuf[ii++] = g_strAtsDaCfmSnd.chStation; /* վ */ + ShortToChar(g_strAtsDaCfmSnd.wIndex, &szToGateWayDataBuf[ii]); /* վ */ + ii += 2U; + LongToChar(g_strAtsDaCfmSnd.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ + ii += 4u; + szToGateWayDataBuf[ii++] = g_strAtsDaCfmSnd.chOpStatus; /* ȷϽ */ + LongToChar(g_strAtsDaCfmSnd.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ + ii += 4u; + wMsgLen = (ii - wMsgLenIndex - 2u); + ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ + chMsgNum++; /* Ϣ */ + } + else + { + ; + } + g_strAtsDaCfmSnd.chFlag = FLAG_UNSET; + } + else + { + ; + } + + if (CI_SUCCESS == chRtn) + { + /* TIOC㱨ATSгϢ */ + rrm_GetInfToATSUCTInfo(&strTrainInfo); + szToGateWayDataBuf[ii++] = MSG_TYPE_TRIAN_INFO_REPORT; /* 㱨ԶɸѡгϢ֡ */ + wMsgLenIndex = ii; /* ¼֡ȴ± */ + ii += 2u; + szToGateWayDataBuf[ii++] = MSG_TYPE_TRIAN_INFO_REPORT; + ShortToChar(GATE_WAY_APP_PRTCL_VER, &szToGateWayDataBuf[ii]); /* ӦЭ汾 */ + ii += 2u; + szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ + szToGateWayDataBuf[ii++] = strTrainInfo.trainCnt; /* г */ + for (chTrainIndex = 0u; chTrainIndex < strTrainInfo.trainCnt; chTrainIndex++) + { + (void)dquDevName2HlhtId(strTrainInfo.TrainID[chTrainIndex], wTrainLgcId, &dwTrainId); + LongToChar(dwTrainId, &szToGateWayDataBuf[ii]); /* гͨID */ + ii += 4u; + + ShortToChar(strTrainInfo.TailSecID[chTrainIndex], &szToGateWayDataBuf[ii]); /* гβ߼ */ + ii += 2u; + } + wMsgLen = (ii - wMsgLenIndex - 2u); + ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ + chMsgNum++; /* Ϣ */ + } + else + { + ; + } } else { - ; + /*ɳ崻Ϣ*/ + szToGateWayDataBuf[ii++] = MSG_TYPE_TRAIN_FLY_INFO; /* ֡ */ + wMsgLenIndex = ii; /* ¼֡ȴ± */ + ii += 2u; + szToGateWayDataBuf[ii++] = MSG_TYPE_TRAIN_FLY_INFO; + + ShortToChar(GATE_WAY_APP_PRTCL_VER, &szToGateWayDataBuf[ii]); /* ӦЭ汾 */ + ii += 2u; + szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ + + FlyProtectTrainNum = GetFlyProtectNum(); + if (SHUT_DOWN_TRAIN_NUMMAX < FlyProtectTrainNum) + { + chRtn = CI_ERROR; + } + else + { + szToGateWayDataBuf[ii++] = FlyProtectTrainNum; /*ɳг*/ + for (chIndex = 0U; chIndex < FlyProtectTrainNum; chIndex++) + { + pFlyData = GetFlyProtectData(chIndex); + wTrainId = pFlyData->wTrainId; + TrainFlyAxis = pFlyData->flyProtectSecCnt; + chRtn = dquDevName2HlhtId((UINT16)(CI_SYSTEM_TYPE_IVOC * 256U) + wTrainId, 0U, &dwTrainId); /*ֽгIDתΪ4ֽڻͨID*/ + if (chRtn == CI_SUCCESS) + {/*ͨIDѯɹ*/ + LongToChar(dwTrainId, &szToGateWayDataBuf[ii]); /* гID */ + ii += 4u; + /** ȡͨųӦİid */ + + if (TRAIN_FLYALARM_SECNUM_MAX < TrainFlyAxis) + { + chRtn = CI_ERROR; + } + else + { + szToGateWayDataBuf[ii++] = TrainFlyAxis; /* */ + /* ȡ id*/ + for (jj = 0U; jj < TrainFlyAxis; jj++) + { + wPhySecId = pFlyData->flyProtectSec[jj]; + ShortToChar(wPhySecId, &szToGateWayDataBuf[ii]); + ii += 2u; + } + } + + } + else + { /*ʧ*/ + chRtn = CI_ERROR; + } + } + wMsgLen = (ii - wMsgLenIndex - 2u); + ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ + } + + if (CI_SUCCESS == chRtn) + { + debug_infor_printf((char*)"\n GATEWAY_FLY_SHUT_DOWN \n"); + chMsgNum = 1U; + } + } + if (CI_SUCCESS == chRtn) + { + /* ɹϢ */ + szToGateWayDataBuf[wMsgNumIndex] = chMsgNum; + *wDataIndex = ii; } } else { ; } - + return chRtn; } @@ -2813,4 +2809,580 @@ void ClearSndAtsWlbFstCfmMsg(void) void ClearSndAtsDaFstCfmMsg(void) { (void)CommonMemSet((void*)&g_strSndAtsDaCfmFst, (UINT32)sizeof(AtsMsgCfmStru), (UINT8)0U, (UINT32)sizeof(AtsMsgCfmStru)); +} + +/** +* @brief ֡--սӿGAL +* @param const UINT8* dataBuf, ݻ +* @param const UINT16 dataLength, ݳ +* @return CI_SUCCESS:ɹCI_ERROR:ʧ +* @note Created By fan 20260604 +*/ +UINT8 ParseGateWayToCiDataProc(const UINT8* dataBuf, const UINT16 dataLength) +{ + UINT8 chAtsInterfaceType = 0U; /*ATSӿ*/ + UINT8 chGalHeadSaved = 0u; /*ͨͷǷѱ־1棻0δ*/ + UINT16 ii = 0U; /**/ + UINT8 chRetVal = CI_ERROR; + HLHTGALInfoStruct hlhtGalHead = { 0U }; /*ͨͷ*/ + UINT8 chHeadReval = CI_ERROR; /*ͨͷ*/ + UINT16 wTiocRcvAtsGtwyDevTypeId = 0U; + UINT8 chLocalCiId = GetSystemParaLocalCiId();/*ID*/ + UINT16 wRemoteDevName = 0U; /*Է豸Ϣ*/ + UINT32 dwErrCode = 0U; /*ͨñͷ¼*/ + UINT32 dwCurCycNum = Get2oo2CurCycleNum(); /*ǰں*/ + UINT32 dwCiAndAtsTimeOutTime = 0u; /*ATSͨжʱ*/ + INT32 remainValidiy = 0; /*ʣʱǷЧ*/ + UINT32 dwCiCurappCycleTime = 0u; /*ǰ*/ + UINT16 wMsgLen = 0U; /*һӦݳ*/ + UINT16 wTmpDataLen = 0U; /*ݳʱ¼*/ + UINT16 wMsgType = 0U; /**/ + UINT16 wMsgCheckLen = 0U; /* ֡ݳ*/ + UINT8 chCurSystemAreaState = 0U; /*ǰϵͳ״̬*/ + UINT32 dwReciveCmdDataAtsCycNum = 0U; /*յATSʱATSں*/ + UINT32 dwSystemUpdateMainUseCycNum = 0U; /*ϵͳʼں*/ + UINT8 chExistCmdDataFlag = 0U; /*ݱ־*/ + UINT8 chDeciveId = 0U; /*ID*/ + AtsFollowUpCmdFstStru tempFstCmd[FOLLOWUP_MSGID_MAX] = { 0U };/*һʱ洢*/ + AtsFollowUpCmdSndStru tempSndCmd[FOLLOWUP_MSGID_MAX] = { 0U };/*ʱ洢*/ + UINT16 wIndex = 0U;/*ʱϢ洢*/ + UINT16 wMsgTypeTmp = 0U;/*ȫֱϢ*/ + AtsFollowUpCmdFstStru *pGlobalFst = NULL; + AtsFollowUpCmdSndStru *pGlobalSnd = NULL; + wTiocRcvAtsGtwyDevTypeId = GetTiocTrnsmtGtwyDevTypeId(); + chDeciveId =(UINT8)(wTiocRcvAtsGtwyDevTypeId & 0x00FFU); + if ((NULL != dataBuf) && (0u < dataLength)) + { + chAtsInterfaceType = GetCiFunctionSwitchConfig(FUNC_GATEWAY_INTERFACE_IDENTIFIER); + + if (ATS_INTERFACE_EXIST_GAL != chAtsInterfaceType) + { + /*ݽṹֻϢ*/ + chRetVal = ParseGateWayToCiDataFrame(dataBuf, &ii, dataLength); + } + else + { + /*ݽṹGALͷҴ֡Ϣ֡*/ + /*ͨϢͷ*/ + hlhtGalHead.devInterInfoType = ShortFromChar(&dataBuf[ii]); + ii += 2U; + hlhtGalHead.sourceId = LongFromChar(&dataBuf[ii]); + ii += 4U; + hlhtGalHead.destId = LongFromChar(&dataBuf[ii]); + ii += 4U; + hlhtGalHead.emapVerCrc = LongFromChar(&dataBuf[ii]); + ii += 4U; + hlhtGalHead.crntOwnMsgSN = LongFromChar(&dataBuf[ii]); + ii += 4U; + hlhtGalHead.comPeriod = ShortFromChar(&dataBuf[ii]); + ii += 2U; + hlhtGalHead.recvOppMsgSN = LongFromChar(&dataBuf[ii]); + ii += 4U; + hlhtGalHead.preOwnMsgSN = LongFromChar(&dataBuf[ii]); + ii += 4U; + hlhtGalHead.prtclVer = dataBuf[ii++]; + hlhtGalHead.totalDataLen = ShortFromChar(&dataBuf[ii]); + ii += 2U; + + wRemoteDevName = (CI_SYSTEM_TYPE_RCI)* 256U + chLocalCiId; + chHeadReval = HLHTRecvCommonPacketHeadCheck(wTiocRcvAtsGtwyDevTypeId, wRemoteDevName, ATS_CI_INTERFACE_INFOTYPE, 1U, &hlhtGalHead, &dwErrCode, 0U, CI_SYSTEM_TYPE_ATS); + + debug_infor_printf((char*)"\nGateWay%#x GAL Check Result:%d errCode:%d\n", wTiocRcvAtsGtwyDevTypeId, chHeadReval, dwErrCode); /*0x55ȷ0xaa0x33ʼͨ֡*/ + + if (HLHT_HEAD_SUCCESS == chHeadReval) + { + dwCiAndAtsTimeOutTime = GetCiAndAtsTransBadEnsureTime(); + dwCiCurappCycleTime = GetSystemParaAppCycleTime(); + /*ϢʱЧ*/ + remainValidiy = HLHTCommonMsgRemainingValidity(dwCiAndAtsTimeOutTime, dwCurCycNum, dwCiCurappCycleTime, hlhtGalHead.recvOppMsgSN, hlhtGalHead.crntOwnMsgSN, hlhtGalHead.preOwnMsgSN, hlhtGalHead.comPeriod); + + if (remainValidiy > 0) + { + /*Ӧ*/ + if (0u == hlhtGalHead.totalDataLen) + { + /* GALͷϢ */ + chRetVal = CI_ERROR; + } + else if (6u > hlhtGalHead.totalDataLen) + { + /* ݳȴ,ʧ */ + chRetVal = CI_ERROR; + } + else + { + chRetVal = CI_SUCCESS; + /*ȻȡһǴ洢·*/ + while (wTmpDataLen < hlhtGalHead.totalDataLen) + { + /* һӦݳ */ + wMsgLen = ShortFromChar(&dataBuf[ii]); + ii += 2u; + wTmpDataLen += 2U; + wTmpDataLen += wMsgLen; + if (0u == wMsgLen) + { + ; /* ޴һ */ + } + else + { + /* ȡ */ + wMsgType = ShortFromChar(&dataBuf[ii]); + ii += 2u; + + /* Ԥ */ + ii += 2u; + wMsgCheckLen = wMsgLen - 4u; + switch (wMsgType) + { + case ATS_CI_INFO_TYPE_HEART_STATE: + /* Ϣ */ + ii += wMsgCheckLen; + break; + case ATS_CI_INFO_TYPE_GATEWAY_COMMON: + /* Ϣ */ + chRetVal = ParseGateWayToCiDataFrame(dataBuf, &ii, wMsgCheckLen); + chExistCmdDataFlag = 1U; /*ôݱ־ЧݽΪЧ*/ + break; + case ATS_CI_INFO_FST_DS_CANCEL: + case ATS_CI_INFO_FST_SWIUNFLOCK: + case ATS_CI_INFO_FST_FAULTUNLOCK: + case ATS_CI_INFO_FST_SECUNFLOCK: + case ATS_CI_INFO_FST_SIGUNFLOCK: + case ATS_CI_INFO_FST_ZONGRENJIE: + case ATS_CI_INFO_FST_PSD_UNEXCEPT: + chCurSystemAreaState = GetLocalCiBackUpPattern(); + if (SYSTEM_WORK_MODE_MAIN == chCurSystemAreaState) + { + /*ý鵱ǰðǷѾ*/ + dwReciveCmdDataAtsCycNum = GetReciveCmdDataAtsCycNum(CI_SYSTEM_TYPE_ATS, chDeciveId); + dwSystemUpdateMainUseCycNum = GetSystemUpdateMainUseCycNum(); + + if ((dwReciveCmdDataAtsCycNum < hlhtGalHead.crntOwnMsgSN) || + (dwSystemUpdateMainUseCycNum <= hlhtGalHead.recvOppMsgSN)) + { + /*ǰATSʱںŴڽյATSʱATSں + ǰATSʱںŴڵڵǰϵͳʼں*/ + wIndex = (wMsgType - ATS_CI_INFO_FST_DS_CANCEL) / 4; + if ((FOLLOWUP_MSGID_MAX > wIndex) && (ATS_CI_INFO_TYPE_FIRST_LEN == wMsgCheckLen)) + { + chRetVal = ProcessCmdFirstMsgCheck(dataBuf, ii, &tempFstCmd[wIndex]); + ii += ATS_CI_INFO_TYPE_FIRST_LEN; + chExistCmdDataFlag = 1U; /*ôݱ־ЧݽΪЧ*/ + } + else + { + chRetVal = CI_ERROR;/*Խ*/ + } + + } + else + { + ii += wMsgCheckLen; + /*Ѿһ*/ + debug_infor_printf((char*)"\nATS/Xiandi %d Not Deal FstCmd%d,Because curCmd has been processed by another System,dwReciveCmdDataAtsCycNum %d dwSystemUpdateMainUseCycNum %d\n", chDeciveId, wMsgType, dwReciveCmdDataAtsCycNum, dwSystemUpdateMainUseCycNum); + } + } + break; + case ATS_CI_INFO_SND_DS_CANCEL: + case ATS_CI_INFO_SND_SWIUNFLOCK: + case ATS_CI_INFO_SND_FAULTUNLOCK: + case ATS_CI_INFO_SND_SECUNFLOCK: + case ATS_CI_INFO_SND_SIGUNFLOCK: + case ATS_CI_INFO_TYPE_SND_ZRJ: + case ATS_CI_INFO_SND_PSD_UNEXCEPT: + chCurSystemAreaState = GetLocalCiBackUpPattern(); + if (SYSTEM_WORK_MODE_MAIN == chCurSystemAreaState) + { + /*ý鵱ǰðǷѾ*/ + dwReciveCmdDataAtsCycNum = GetReciveCmdDataAtsCycNum(CI_SYSTEM_TYPE_ATS, chDeciveId); + dwSystemUpdateMainUseCycNum = GetSystemUpdateMainUseCycNum(); + + if ((dwReciveCmdDataAtsCycNum < hlhtGalHead.crntOwnMsgSN) || + (dwSystemUpdateMainUseCycNum <= hlhtGalHead.recvOppMsgSN)) + { + wIndex = (wMsgType - ATS_CI_INFO_SND_DS_CANCEL) / 4; + if ((FOLLOWUP_MSGID_MAX > wIndex) && (ATS_CI_INFO_TYPE_SND_LEN == wMsgCheckLen)) + { + chRetVal = ProcessCmdSndMsgCheck(dataBuf, ii, &tempSndCmd[wIndex]); + ii += ATS_CI_INFO_TYPE_SND_LEN; + chExistCmdDataFlag = 1U; /*ôݱ־ЧݽΪЧ*/ + } + else + { + chRetVal = CI_ERROR;/*Խ*/ + } + } + else + { + ii += wMsgCheckLen; + /*Ѿһ*/ + debug_infor_printf((char*)"\nATS/Xiandi %d Not Deal SndCmd%d,Because curCmd has been processed by another System,dwReciveCmdDataAtsCycNum %d dwSystemUpdateMainUseCycNum %d\n", chDeciveId, wMsgType, dwReciveCmdDataAtsCycNum, dwSystemUpdateMainUseCycNum); + } + } + break; + default: + chRetVal = CI_ERROR; + break; + } + } + if (CI_ERROR == chRetVal) + { + chExistCmdDataFlag = 0U; + break; + } + else + { + ; /*do nothing*/ + } + } + } + + /*Уݳ*/ + if ((hlhtGalHead.totalDataLen != ii - (UINT16)31U) || (dataLength != hlhtGalHead.totalDataLen + (UINT16)31U)) + { + /* 31ΪӦ֡ͷ */ + chRetVal = CI_ERROR; + debug_infor_printf((char*)"ParseGateWayToCiDataProc HlhtGal Length Error\n"); + } + + if (CI_SUCCESS != chRetVal) + { + /*δ洢Ϣ*/ + ClearCurGateWayMsg(); + } + else + { + /*ʱһϢȫֱ*/ + for (wIndex = 0U; wIndex < FOLLOWUP_MSGID_MAX; wIndex++) + { + if (FLAG_SET == tempFstCmd[wIndex].chFlag) + { + wMsgTypeTmp = ATS_CI_INFO_FST_DS_CANCEL + wIndex*(UINT16)4U; + pGlobalFst = GetAtsFollowUpMsgFst(wMsgTypeTmp); + if (NULL != pGlobalFst) + { + (void)CommonMemCpy((void *)(pGlobalFst), (UINT32)sizeof(AtsFollowUpCmdFstStru), (const void *)(&tempFstCmd[wIndex]), (UINT32)sizeof(AtsFollowUpCmdFstStru)); + } + } + if (FLAG_SET == tempSndCmd[wIndex].chFlag) + { + wMsgTypeTmp = ATS_CI_INFO_SND_DS_CANCEL + wIndex*(UINT16)4U; + pGlobalSnd = GetAtsFollowUpMsgSnd(wMsgTypeTmp); + if (NULL != pGlobalSnd) + { + (void)CommonMemCpy((void *)(pGlobalSnd), (UINT32)sizeof(AtsFollowUpCmdSndStru), (const void *)(&tempSndCmd[wIndex]), (UINT32)sizeof(AtsFollowUpCmdSndStru)); + } + } + } + } + + if (CI_SUCCESS == chRetVal) + { + /*ݾУ飬Ҫ洢ͨñ*/ + SetHLHTHeadCtxComPeriod(CI_SYSTEM_TYPE_ATS, chDeciveId, hlhtGalHead.comPeriod); + SetHLHTHeadCtxSrcCrntSN(CI_SYSTEM_TYPE_ATS, chDeciveId, hlhtGalHead.crntOwnMsgSN); + SetHLHTHeadCtxSrcOppSN(CI_SYSTEM_TYPE_ATS, chDeciveId, hlhtGalHead.recvOppMsgSN); + SetHLHTHeadCtxSrcOwnSN(CI_SYSTEM_TYPE_ATS, chDeciveId, hlhtGalHead.preOwnMsgSN); + SetHLHTHeadCtxCiRcvSN(CI_SYSTEM_TYPE_ATS, chDeciveId, dwCurCycNum); + SetHLHTHeadCtxCiRcvLogId(CI_SYSTEM_TYPE_ATS, chDeciveId, 0U); + + chGalHeadSaved = 1U; + + if (1U == chExistCmdDataFlag) + { + UpdateAtsCmdDataCycInfo(CI_SYSTEM_TYPE_ATS, chDeciveId); + } + else + { + ; /*һյATSں*/ + } + } + else + { + ; + } + } + else + { + chRetVal = CI_ERROR; + } + } + else if (HLHT_HEAD_INIT == chHeadReval) + { + if (dwCurCycNum > 0U)/*жŴ0Ϊ0Ч*/ + { + SetHLHTHeadCtxComPeriod(CI_SYSTEM_TYPE_ATS, chDeciveId, hlhtGalHead.comPeriod); + SetHLHTHeadCtxSrcCrntSN(CI_SYSTEM_TYPE_ATS, chDeciveId, hlhtGalHead.crntOwnMsgSN); + SetHLHTHeadCtxSrcOppSN(CI_SYSTEM_TYPE_ATS, chDeciveId, hlhtGalHead.recvOppMsgSN); + SetHLHTHeadCtxSrcOwnSN(CI_SYSTEM_TYPE_ATS, chDeciveId, hlhtGalHead.preOwnMsgSN); + SetHLHTHeadCtxCiRcvSN(CI_SYSTEM_TYPE_ATS, chDeciveId, dwCurCycNum); + SetHLHTHeadCtxCiRcvLogId(CI_SYSTEM_TYPE_ATS, chDeciveId, 0U); + + chGalHeadSaved = 1U; + } + + chRetVal = CI_ERROR; + } + else + { + /*¼УʧϢ*/ + if (GAL_COMPARE_INFO_TYPE_ERR == (dwErrCode & GAL_COMPARE_INFO_TYPE_ERR)) + { + /*¼ӿϢʹ*/ + SetErrorData(EFUNC_PARSE_GATEWAY2CI_DATA, CI_SYSTEM_TYPE_ATS, wTiocRcvAtsGtwyDevTypeId, ETYPE_COMM_WITH_GATEWAY, CI_BACK_DATA_INFO_TYPE_ERR, ESEND_LEVEL_ZERO); + } + else if (GAL_COMPARE_SEND_FLAG_ERR == (dwErrCode & GAL_COMPARE_SEND_FLAG_ERR)) + { + /*ͷʶϢ*/ + SetErrorData(EFUNC_PARSE_GATEWAY2CI_DATA, CI_SYSTEM_TYPE_ATS, wTiocRcvAtsGtwyDevTypeId, ETYPE_COMM_WITH_GATEWAY, CI_BACK_DATA_SEND_FLAG_ERR, ESEND_LEVEL_ZERO); + } + else if (GAL_COMPARE_RECV_FLAG_ERR == (dwErrCode & GAL_COMPARE_RECV_FLAG_ERR)) + { + /*ݽշ־Ϣ*/ + SetErrorData(EFUNC_PARSE_GATEWAY2CI_DATA, CI_SYSTEM_TYPE_ATS, wTiocRcvAtsGtwyDevTypeId, ETYPE_COMM_WITH_GATEWAY, CI_BACK_DATA_RECV_FLAG_ERR, ESEND_LEVEL_ZERO); + } + else if (GAL_COMPARE_EMAP_VER_COMP_ERR == (dwErrCode & GAL_COMPARE_EMAP_VER_COMP_ERR)) + { + /*ݰ汾УʧϢ*/ + SetErrorData(EFUNC_PARSE_GATEWAY2CI_DATA, CI_SYSTEM_TYPE_ATS, wTiocRcvAtsGtwyDevTypeId, ETYPE_COMM_WITH_GATEWAY, CI_BACK_DATA_VER_CHECK_FAIL, ESEND_LEVEL_ATS); + } + else if (GAL_COMPARE_PROTOCOL_VER_ERR == (dwErrCode & GAL_COMPARE_PROTOCOL_VER_ERR)) + { + /*Э汾Ŵ*/ + SetErrorData(EFUNC_PARSE_GATEWAY2CI_DATA, CI_SYSTEM_TYPE_ATS, wTiocRcvAtsGtwyDevTypeId, ETYPE_COMM_WITH_GATEWAY, CI_BACK_DATA_PROTOCOL_VER_ERR, ESEND_LEVEL_ZERO); + } + else if (GAL_COMPARE_MSG_BDS_SN_ERR == (dwErrCode & GAL_COMPARE_MSG_BDS_SN_ERR)) + { + /*˫кŴ*/ + SetErrorData(EFUNC_PARSE_GATEWAY2CI_DATA, CI_SYSTEM_TYPE_ATS, wTiocRcvAtsGtwyDevTypeId, ETYPE_COMM_WITH_GATEWAY, CI_BACK_DATA_MSG_BDS_SN_ERR, ESEND_LEVEL_ZERO); + } + else if (GAL_COMPARE_APP_LEN_ERR == (dwErrCode & GAL_COMPARE_APP_LEN_ERR)) + { + /*ӦòݳЧ*/ + SetErrorData(EFUNC_PARSE_GATEWAY2CI_DATA, CI_SYSTEM_TYPE_ATS, wTiocRcvAtsGtwyDevTypeId, ETYPE_COMM_WITH_GATEWAY, CI_BACK_DATA_APP_LEN_ERR, ESEND_LEVEL_ZERO); + } + else + { + /*¼ͨŹ*/ + SetErrorData(EFUNC_PARSE_GATEWAY2CI_DATA, CI_SYSTEM_TYPE_ATS, wTiocRcvAtsGtwyDevTypeId, ETYPE_COMM_WITH_GATEWAY, CI_ERROR, ESEND_LEVEL_ZERO); + } + chRetVal = CI_ERROR; + } + } + + if ((CI_ERROR == chRetVal) && (0u == chGalHeadSaved)) + { + /*ͨͷѾˣִͨͷ򣬳Ҳͨͷ*/ + ClearHlhtHeadCtx(CI_SYSTEM_TYPE_ATS, chDeciveId); + } + else + { + ; /*do nothing*/ + } + } + else + { + /*Ч*/ + chRetVal = CI_ERROR; + } + return chRetVal; +} + +/* +* -սӿGAL +* ˵ QueueStruct* ciToAtsDataQueue, Ͷеַ +* const UINT8 deviceId, ĿϵͳID +* const UINT8 targetDevType, Ŀϵͳ +* const UINT8 frame,֡ +* UINT8* chSendXiandiorAtsBuf λ׵ַ +* ֵ 0: ʧ +* 1: ɹ +* fan 20260604 +*/ +UINT8 PackCiToGateWayDataProc(const UINT8 deviceId, const UINT8 targetDevType) +{ + UINT8 ciToGateWayBuffer[CI_TO_ATS_DATA_LEN_MAX] = { 0u }; + UINT16 ii = 0u; + UINT8 chReval = CI_ERROR; + UINT8 chAtsInterfaceType = 0U; /*ATSӿ*/ + UINT8 chLocalCiId = GetSystemParaLocalCiId(); /*ID*/ + UINT32 dwCiEtcsId = 0U; /*ͨID*/ + UINT32 dwAtsEtcsId = 0U; /*ATSͨID*/ + UINT32 dwEmapCheckVer = 0U; /*ӵͼУ汾*/ + UINT32 dwHlhtHSrcSN = 0U; /*CIݵһͱʱǰSN*/ + UINT32 dwHlhtHRcvSN = 0U; /*CIյʱSN*/ + UINT32 dwCurCycleNum = Get2oo2CurCycleNum(); /*Ӧں*/ + UINT32 dwAppCycleTime = GetSystemParaAppCycleTime(); /*Ӧ*/ + UINT16 wAppDataLenIndex = 0U; /* Ӧݳλ */ + UINT16 wAppDataLen = 0u; /* Ӧݳ */ + UINT16 wMagLen = 0u; /* ݳ */ + UINT16 wMagDataLenIndex = 0U; /* Ϣݳλ */ + UINT16 dstDevId = 0u; + UINT8 chCurSystemAreaState = GetLocalCiBackUpPattern(); /*ǰϵͳ״̬*/ + UINT32 dwFlyProtectOverCyc = GetFlyProtectOverCyc(); /*ɳ*/ + chAtsInterfaceType = GetCiFunctionSwitchConfig(FUNC_GATEWAY_INTERFACE_IDENTIFIER); + if (ATS_INTERFACE_EXIST_GAL != chAtsInterfaceType) + { + /*ݽṹGALͷ*/ + chReval = PackTiocToGateWayData(ciToGateWayBuffer, targetDevType, &ii); + + } + else + { + /*ݽṹҪGALͷ*/ + /*ȻȡʱϢȡɹż*/ + /*豸ID,ûͨID*/ + dwCiEtcsId = (UINT32)(CI_SYSTEM_TYPE_RCI * 256U + chLocalCiId); + dwAtsEtcsId = (UINT32)(targetDevType * 256U + deviceId); + chReval = GetCiEmapCheckVer(chLocalCiId, &dwEmapCheckVer, targetDevType); + dwHlhtHSrcSN = GetHLHTHeadCtxSrcCrntSN(targetDevType, deviceId); + dwHlhtHRcvSN = GetHLHTHeadCtxCiRcvSN(targetDevType, deviceId); + + if (CI_SUCCESS == chReval) + { + /*GALͷ*/ + ShortToChar(ATS_CI_INTERFACE_INFOTYPE, &ciToGateWayBuffer[ii]);/*ӿϢ*/ + ii += 2u; + LongToChar(dwCiEtcsId, &ciToGateWayBuffer[ii]);/*ͷʶϢ*/ + ii += 4u; + LongToChar(dwAtsEtcsId, &ciToGateWayBuffer[ii]);/*շʶϢ*/ + ii += 4u; + LongToChar(dwEmapCheckVer, &ciToGateWayBuffer[ii]);/*ӵͼ汾УϢ*/ + ii += 4u; + LongToChar(dwCurCycleNum, &ciToGateWayBuffer[ii]);/*Ϣк*/ + ii += 4u; + ShortToChar((UINT16)dwAppCycleTime, &ciToGateWayBuffer[ii]);/*豸ͨѶ*/ + ii += 2u; + LongToChar(dwHlhtHSrcSN, &ciToGateWayBuffer[ii]);/*ԷϢкţrecvOppMsgSN¼յԷһϢеĶԷϢк*/ + ii += 4u; + LongToChar(dwHlhtHRcvSN, &ciToGateWayBuffer[ii]);/*յһϢʱк*/ + ii += 4u; + + ciToGateWayBuffer[ii++] = 1U; /*CI_ATSӿЭ汾*/ + /*Ӧòݳ*/ + wAppDataLenIndex = ii; + ii += 2u; + + wMagDataLenIndex = ii; + ii += 2U; + if (RC_WORK_MODE_CI == CI_SYSTEM_TYPE_RCI) + { + ShortToChar(RCI_ATS_INFO_TYPE_GATEWAY_HEART, &ciToGateWayBuffer[ii]);/* */ + ii += 2u; + /* Ԥ2ֽ */ + ii += 2u; + } + else + { + ShortToChar(ATS_CI_INFO_TYPE_GATEWAY_COMMON, &ciToGateWayBuffer[ii]);/* */ + ii += 2u; + /* Ԥ2ֽ */ + ii += 2u; + + chReval = PackTiocToGateWayData(ciToGateWayBuffer, targetDevType, &ii); + } + wMagLen = ii - wMagDataLenIndex - 2U; + /* ݳ */ + ShortToChar(wMagLen, &ciToGateWayBuffer[wMagDataLenIndex]); + /*һΡλظϢ֡*/ + /*ģʽδɳ*/ + if ((CI_SUCCESS == chReval)&& (SYSTEM_WORK_MODE_MAIN == chCurSystemAreaState)&& ( 0U == dwFlyProtectOverCyc)) + { + chReval = PackCiToAtsFollowUpMsg(ciToGateWayBuffer, &ii, targetDevType, PACK_ATS_TYPE_GATEWAY); + } + } + + /* ݳ */ + if (CI_SUCCESS == chReval) + { + wAppDataLen = ii - wAppDataLenIndex - 2U; + ShortToChar(wAppDataLen, &ciToGateWayBuffer[wAppDataLenIndex]); + } + else + { + ; + } + } + if ((ii > CI_TO_ATS_DATA_LEN_MAX) || (CI_ERROR == chReval)) + { + chReval = CI_ERROR; + } + else + { + /* ⷢ */ + dstDevId = ((UINT16)((UINT16)targetDevType << 8u) | ((UINT16)deviceId)); + chReval = OutnetSafeSend(dstDevId, 0u, &ciToGateWayBuffer[0], ii); + if (CI_SUCCESS == chReval) + { + debug_infor_printf((char*)"\nGATEWAY_SEND:%d", ii); + debug_out_array(0xAA, ciToGateWayBuffer, ii); + } + else + { + ; + } + } + + return chReval; +} + +/* +* ϢʧܡѾ洢ıյϢ +* ˵ +* ֵ +* fan 20260604 +*/ +void ClearCurGateWayMsg(void) +{ + /*ԶɸѡϢ*/ + UINT32 dwCurCycNum = Get2oo2CurCycleNum(); /*ǰں*/ + if (dwCurCycNum == g_strAtsMsgFst.dwCycle) + { + ClearAtsMsgFirst(); + } + if (dwCurCycNum == g_strAtsMsgSnd.dwCycle) + { + ClearAtsMsgSecond(); + } + if (FLAG_SET == g_strSndAtsCfmFst.chFlag)/*ڶϢʱֱӴ洢ñ־*/ + { + ClearSndAtsScreenFstCfmMsg(); + } + if (dwCurCycNum == g_strAtsEaMsgFst.dwCycle) + { + ClearAtsEaMsgFirst(); + } + if (dwCurCycNum == g_strAtsEaMsgSnd.dwCycle) + { + ClearAtsEaMsgSecond(); + } + if (FLAG_SET == g_strSndAtsEaCfmFst.chFlag)/*ڶϢʱֱӴ洢ñ־*/ + { + ClearSndAtsEaFstCfmMsg(); + } + if (dwCurCycNum == g_strAtsWlbMsgFst.dwCycle) + { + ClearAtsWlbMsgFirst(); + } + if (dwCurCycNum == g_strAtsWlbMsgSnd.dwCycle) + { + ClearAtsWlbMsgSecond(); + } + if (FLAG_SET == g_strSndAtsWlbCfmFst.chFlag)/*ڶϢʱֱӴ洢ñ־*/ + { + ClearSndAtsWlbFstCfmMsg(); + } + if (dwCurCycNum == g_strAtsDaMsgFst.dwCycle) + { + ClearAtsDaMsgFirst(); + } + if (dwCurCycNum == g_strAtsDaMsgSnd.dwCycle) + { + ClearAtsDaMsgSecond(); + } + if (FLAG_SET == g_strSndAtsDaCfmFst.chFlag)/*ڶϢʱֱӴ洢ñ־*/ + { + ClearSndAtsDaFstCfmMsg(); + } } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackGateWayData.h b/TSCP/src/APP/ciapp/ParsePack/ParsePackGateWayData.h index 3ab0acb..b54ba8d 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackGateWayData.h +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackGateWayData.h @@ -253,20 +253,21 @@ extern AtsMsgCfmStru * GetAtsCfmFst(void); extern AtsMsgCfmStru * GetAtsCfmSnd(void); /** -* @brief ȡԶɸѡȷϢ +* @brief TIOC--Ϣ * @param -* @return ԶɸѡȷϢ +* @return CI_ERRORʧܣCI_SUCCESSɹ */ -extern UINT8 PackTiocToGateWayData(const UINT8 deviceId, const UINT8 targetDevType); +UINT8 PackTiocToGateWayData(UINT8* szToGateWayDataBuf, const UINT8 targetDevType, UINT16* wDataIndex); /** -* @brief ֡ +* @brief ֡---GALϢ * @param const UINT8* dataBuf, ݻ -* @param const UINT16 dataLength, ݳ +* @param[out] UINT16* dataIndex, +* @param[in] const UINT16 dataLength, ݳ * @return CI_SUCCESS:ɹCI_ERROR:ʧ */ -extern UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength); +UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, UINT16* dataIndex, const UINT16 dataLength); /** * @brief 1ATSɸѡϢ @@ -449,4 +450,34 @@ void ClearSndAtsWlbFstCfmMsg(void); */ void ClearSndAtsDaFstCfmMsg(void); +/** +* @brief ֡--սӿGAL +* @param const UINT8* dataBuf, ݻ +* @param const UINT16 dataLength, ݳ +* @note Created By fan 20260604 +* @return CI_SUCCESS:ɹCI_ERROR:ʧ +*/ +UINT8 ParseGateWayToCiDataProc(const UINT8* dataBuf, const UINT16 dataLength); + +/* +* -սӿGAL +* ˵ QueueStruct* ciToAtsDataQueue, Ͷеַ +* const UINT8 deviceId, ĿϵͳID +* const UINT8 targetDevType, Ŀϵͳ +* const UINT8 frame,֡ +* UINT8* chSendXiandiorAtsBuf λ׵ַ +* ֵ 0: ʧ +* 1: ɹ +* fan 20260604 +*/ +UINT8 PackCiToGateWayDataProc(const UINT8 deviceId, const UINT8 targetDevType); + +/* +* ϢʧܡѾ洢ıյϢ +* ˵ +* ֵ +* fan 20260604 +*/ +void ClearCurGateWayMsg(void); + #endif \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackManage.c b/TSCP/src/APP/ciapp/ParsePack/ParsePackManage.c index 812b205..8b7fa8f 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackManage.c +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackManage.c @@ -290,7 +290,7 @@ UINT8 ParseOtherSysToCiData(void) debug_infor_printf((const)"\nGATEWAY_RECV:%d", dataLen); debug_out_array(0xAA, data, (UINT16)dataLen); - checkResult = ParseGateWayToCiDataFrame(data, (UINT16)dataLen); + checkResult = ParseGateWayToCiDataProc(data, (UINT16)dataLen); } if (CI_ERROR == checkResult) @@ -881,7 +881,7 @@ UINT8 PackCiToOtherSysData(void) if (chTiocRcvAtsGtwyDevTypeId == deviceIdBuf[ii]) { /*ATSվ֡*/ - reVal = PackTiocToGateWayData(deviceIdBuf[ii], CI_SYSTEM_TYPE_ATS); + reVal = PackCiToGateWayDataProc(deviceIdBuf[ii], CI_SYSTEM_TYPE_ATS); if (CI_ERROR == reVal) { @@ -1256,6 +1256,8 @@ UINT8 PackCiToOtherSysData(void) PackCiToCimFlyProtectData(); /*άIO˫ϵɼһ±*/ PackCiToCimCollDiffData(); + /*͵ɼ*/ + PackCiToCimSwitchRedunAlarmData(); /*͸AIM˳ӪϢ*/ AIMOutput(); /*͸άִеԪϢ*/ diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackVobcData.c b/TSCP/src/APP/ciapp/ParsePack/ParsePackVobcData.c index 8668268..a999066 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackVobcData.c +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackVobcData.c @@ -1584,6 +1584,7 @@ static UINT8 ParseVobcToCiDataFrameHLHT(const UINT8* dataBuf, const UINT16 dataL UINT16 wMsgLen = 0U; /*Ӧݳ*/ UINT32 dwCiAndVobcTransBadTime = 0U; /*ciVOBCͨжʱ*/ UINT32 dwAppCycleTime = 0U; /*ci*/ + UINT8 trainZeroSpeedState = 0U; /*г״̬*/ ci_vobcPrtclVersion = GetVersionOfVOBCToCI(); vobcName = (CI_SYSTEM_TYPE_VOBC)*256U + systemId; @@ -1769,7 +1770,6 @@ static UINT8 ParseVobcToCiDataFrameHLHT(const UINT8* dataBuf, const UINT16 dataL ii += 4U; vobcToCiDataStru->signalID = signalId; /*źŻID浽ṹ*/ - } else { @@ -1784,6 +1784,23 @@ static UINT8 ParseVobcToCiDataFrameHLHT(const UINT8* dataBuf, const UINT16 dataL vobcToCiDataStru->ComStartCycle = Get2oo2CurCycleNum(); } break; + case VOBC_CI_INFO_TYPE_MANU_DEFINED: + {/*ֻ*/ + /*г״̬*/ + trainZeroSpeedState = dataBuf[ii]; + ii += 1U; + if ((CI_VOBC_TRAIN_ZERO_SPEED_YES == trainZeroSpeedState) || (CI_VOBC_TRAIN_ZERO_SPEED_NO == trainZeroSpeedState)) + { + vobcToCiDataStru->chTrainZeroState = trainZeroSpeedState; + } + else + { + retVal = CI_ERROR; + } + ii += 9U; /*Ԥ*/ + + } + break; case VOBC_CI_INFO_TYPE_BLOCLINK: /*ʽϢ֡*/ { retVal = ParseVobcBlocLinkData(&dataBuf[ii], wMsgLen-4U, vobcToCiDataStru); diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackVobcData.h b/TSCP/src/APP/ciapp/ParsePack/ParsePackVobcData.h index 960f44f..4e4507f 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackVobcData.h +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackVobcData.h @@ -267,6 +267,9 @@ #define CI_VOBC_FLOOD_STATE_OPEN ((UINT8)0xaaU) /*CI-VOBCʽſ״̬޹*/ #define CI_VOBC_FLOOD_STATE_CLOSE ((UINT8)0x55U) /*CI-VOBCʽͷǿ״̬й*/ +#define CI_VOBC_TRAIN_ZERO_SPEED_NO ((UINT8)0xAAU) /*CI-VOBCг*/ +#define CI_VOBC_TRAIN_ZERO_SPEED_YES ((UINT8)0x55U) /*CI-VOBCг*/ + #ifdef __cplusplus extern "C" { diff --git a/TSCP/src/APP/ciapp/QueryFiles/dquCIInit.c b/TSCP/src/APP/ciapp/QueryFiles/dquCIInit.c index c1aa19d..783914d 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dquCIInit.c +++ b/TSCP/src/APP/ciapp/QueryFiles/dquCIInit.c @@ -393,13 +393,10 @@ UINT8 RelayInit(CHAR* FSName) debug_infor_printf((const)"ReverseCutConfigDataStructInit fail.\r\n"); } - if (RC_WORK_MODE_TIOC == cLocalWorkType) + funcRtn *= GatewayConfigDataStructInit(FSName); + if (0u == funcRtn) { - funcRtn *= GatewayConfigDataStructInit(FSName); - if (0u == funcRtn) - { - debug_infor_printf((const)"GatewayConfigDataStructInit fail.\r\n"); - } + debug_infor_printf((const)"GatewayConfigDataStructInit fail.\r\n"); } /******************************************************************************** @@ -518,6 +515,12 @@ UINT8 RelayInit(CHAR* FSName) debug_infor_printf((const)"AxisSecProtectSwitchInit fail.\r\n"); } + /* ---ڿõе豸ʼ */ + funcRtn *= ReverseSwitchConfigDataStructInit(FSName); + if (0u == funcRtn) + { + debug_infor_printf((const)"ReverseSwitchConfigDataStructInit fail.\r\n"); + } return funcRtn; } @@ -1474,7 +1477,7 @@ UINT8 SglCfgDtStruFromDquSignalStr(DSU_SIGNAL_STRU* pSgnl,SignalConfigDataStruct pSgnlCfgDtStr->startSigRouBuf[pSgnlCfgDtStr->startSigRouSum] = pCurrentRouteStru->wId; pSgnlCfgDtStr->startSigRouSum ++; - if (0u==(pCurrentRouteStru->wRouteType & 0x0200u)) + if (0u==(pCurrentRouteStru->dwRouteType & 0x0200u)) {/*ZCԶĽ·*/ pSgnlCfgDtStr->startSigCiRouteSum++; } @@ -1730,7 +1733,7 @@ UINT8 SwitchCfgDtStruFromDquPointStr(DSU_POINT_STRU* pPoint,SwitchConfigDataStru UINT16 i=0u; UINT16 j=0u; UINT8 rtnvalue = 0u; - + UINT8 CiPattern = 0u; /*ڲ*/ if((NULL == pPoint) || (NULL == pSwitchCfgDtStr)) @@ -1745,15 +1748,25 @@ UINT8 SwitchCfgDtStruFromDquPointStr(DSU_POINT_STRU* pPoint,SwitchConfigDataStru if (1u == rtnvalue) { + /*ɼرʼΪĬֵ*/ + CiPattern = GetLocalCiPattern(); + pSwitchCfgDtStr->RedunCollCfg = REDUN_COLL_NO; + for (i = 0u; i < SWITCH_REDUN_COLL_MAX; i++) + { + pSwitchCfgDtStr->RedunCollRelayStru[i].wRedunDb1RelayId = 0u; + pSwitchCfgDtStr->RedunCollRelayStru[i].wRedunDb2RelayId = 0u; + pSwitchCfgDtStr->RedunCollRelayStru[i].wRedunFb1RelayId = 0u; + pSwitchCfgDtStr->RedunCollRelayStru[i].wRedunFb2RelayId = 0u; + } + pSwitchCfgDtStr->SwitchId = pPoint->wId; pSwitchCfgDtStr->BelongCiId = (UINT8)pPoint->wManagePhysicalCI; pSwitchCfgDtStr->BelongVirCI = (UINT8)pPoint->wBelongVirCI;/**/ pSwitchCfgDtStr->dwSwitchKilo = pPoint->dwPointKilo; /* */ pSwitchCfgDtStr->chKiloType = pPoint->dwPointKiloPlueMinusSign; - if (pSwitchCfgDtStr->SwitchId < SWITCH_SUM_MAX) + pSwitchCfgDtStr->wReverseBoardId = 0U;/*ʼ޵*/ + if (SWITCH_SUM_MAX > pSwitchCfgDtStr->SwitchId) { - - /*OCñݴ洢ݽṹ*/ rtnvalue = SwitchCfgDtStruFromOCconfigStr(pSwitchCfgDtStr); @@ -1784,9 +1797,27 @@ UINT8 SwitchCfgDtStruFromDquPointStr(DSU_POINT_STRU* pPoint,SwitchConfigDataStru pSwitchCfgDtStr->ZDbRelayId = (RelayData.pRelayPointStr + j)->wRelayZongDingBiaoId; pSwitchCfgDtStr->ZFbRelayId = (RelayData.pRelayPointStr + j)->wRelayZongFanBiaoId; pSwitchCfgDtStr->DFHRelayId = (RelayData.pRelayPointStr + j)->wDFHId; - pSwitchCfgDtStr->wShadowDbRelayId = (RelayData.pRelayPointStr + j)->wRelayShadowDingBiaoId; - pSwitchCfgDtStr->wShadowFbRelayId = (RelayData.pRelayPointStr + j)->wRelayShadowFanBiaoId; - if (pSwitchCfgDtStr->SwitchId > 0u) + + for (i = 0u; i < SWITCH_REDUN_COLL_MAX; i++) + { + if ((0u == pSwitchCfgDtStr->RedunCollRelayStru[i].wRedunDb1RelayId) + && (0u == pSwitchCfgDtStr->RedunCollRelayStru[i].wRedunDb2RelayId) + && (0u == pSwitchCfgDtStr->RedunCollRelayStru[i].wRedunFb1RelayId) + && (0u == pSwitchCfgDtStr->RedunCollRelayStru[i].wRedunFb2RelayId)) + { + pSwitchCfgDtStr->RedunCollRelayStru[i].wRedunDb1RelayId = (RelayData.pRelayPointStr + j)->wRelayRedunDB1Id; + pSwitchCfgDtStr->RedunCollRelayStru[i].wRedunDb2RelayId = (RelayData.pRelayPointStr + j)->wRelayRedunDB2Id; + pSwitchCfgDtStr->RedunCollRelayStru[i].wRedunFb1RelayId = (RelayData.pRelayPointStr + j)->wRelayRedunFB1Id; + pSwitchCfgDtStr->RedunCollRelayStru[i].wRedunFb2RelayId = (RelayData.pRelayPointStr + j)->wRelayRedunFB2Id; + break; + } + else + { + /**/ + } + } + + if (0u < pSwitchCfgDtStr->SwitchId) { if (0u == pSwitchCfgDtStr->DbRelayId) { @@ -1814,7 +1845,6 @@ UINT8 SwitchCfgDtStruFromDquPointStr(DSU_POINT_STRU* pPoint,SwitchConfigDataStru DebugPrintAppError(ERROR_SWITCH_FCJ_NOT_CONFIG, CI_DEVICE_TYPE_SWITCH, (UINT32)(pSwitchCfgDtStr->SwitchId), PRINT_ONCE); } } - break; } } @@ -1833,6 +1863,31 @@ UINT8 SwitchCfgDtStruFromDquPointStr(DSU_POINT_STRU* pPoint,SwitchConfigDataStru } } } + + if (CI_PATTERN_FULL_ELECTRONIC == CiPattern) + { + pSwitchCfgDtStr->RedunCollCfg = REDUN_COLL_YES; + for (i = 0u; i < SWITCH_REDUN_COLL_MAX; i++) + { + if ((0u == pSwitchCfgDtStr->RedunCollRelayStru[i].wRedunDb1RelayId) + || (0u == pSwitchCfgDtStr->RedunCollRelayStru[i].wRedunDb2RelayId) + || (0u == pSwitchCfgDtStr->RedunCollRelayStru[i].wRedunFb1RelayId) + || (0u == pSwitchCfgDtStr->RedunCollRelayStru[i].wRedunFb2RelayId)) + { + /*ɼ̵Ч߱ɼ*/ + pSwitchCfgDtStr->RedunCollCfg = REDUN_COLL_NO; + break; + } + else + { + /*ȫɼ̵Ч߱ɼ*/ + } + } + } + else + { + /*ͳֵ֧ɼ*/ + } } } return rtnvalue; @@ -3809,6 +3864,7 @@ UINT8 PsdCfgDtStruFromDquEmergStr(DSU_SCREEN_STRU * pScreen,PsdConfigDataStruct* pPsdCfgDtStr->VirtualAttribute = PSD_VIRTUAL_ATTR_YES; /*ʼΪ*/ pPsdCfgDtStr->chPsdControlType = PSD_CONTROL_TYPE_RCI; /*ʼΪRCI*/ pPsdCfgDtStr->wIbpRelayId = 0U; + pPsdCfgDtStr->wReverseBoardId = 0U;/*ʼ޵*/ if ((UINT16_MAX != pScreen->wLocalPlatformId) && (0U != pScreen->wLocalPlatformId)) { stationId = dsuStaticHeadStru.pStationStru[dsuStationIndex[pScreen->wLocalPlatformId]].wStationID; @@ -5021,12 +5077,12 @@ UINT8 RouteCfgDtStruFrmLSRouteStr( LS_RouteStruct * pLSRouteStr,RouteConfigDataS if ((CI_ERROR != ciType)&&(CI_ERROR!= rtnvalue)) { /*·*/ - if (0x01u == (pDsuRouteStr->wRouteType & 0x01u)) + if (0x01u == (pDsuRouteStr->dwRouteType & 0x01u)) { /*·Ϊг·*/ pRouteCfgDtStr->RouteType = ROUTE_TYPE_LIECHE; } - else if (0x02u == (pDsuRouteStr->wRouteType & 0x02u)) + else if (0x02u == (pDsuRouteStr->dwRouteType & 0x02u)) { /*·Ϊ۷·*/ pRouteCfgDtStr->RouteType = ROUTE_TYPE_RETURN; @@ -5040,16 +5096,16 @@ UINT8 RouteCfgDtStruFrmLSRouteStr( LS_RouteStruct * pLSRouteStr,RouteConfigDataS { } } - else if (0x0100u == (pDsuRouteStr->wRouteType & 0x0100u)) + else if (0x0100u == (pDsuRouteStr->dwRouteType & 0x0100u)) { /*·Ϊ·*/ pRouteCfgDtStr->RouteType = ROUTE_TYPE_DIAOCHE; } - else if (0u == pDsuRouteStr->wRouteType) + else if (0u == pDsuRouteStr->dwRouteType) { pRouteCfgDtStr->RouteType = 0u; } - else if (0u != (0xffu&pDsuRouteStr->wRouteType)) + else if (0u != (0xffu&pDsuRouteStr->dwRouteType)) { /*ͲΪ0,ҵֽڲΪ0,·Ϊг·*/ pRouteCfgDtStr->RouteType = ROUTE_TYPE_LIECHE; @@ -5062,7 +5118,7 @@ UINT8 RouteCfgDtStruFrmLSRouteStr( LS_RouteStruct * pLSRouteStr,RouteConfigDataS /*ý·*/ pRouteCfgDtStr->ConfigRouteType = pRouteCfgDtStr->RouteType; /*۷·,ý·*/ - if (0x02u == (pDsuRouteStr->wRouteType & 0x02u)) + if (0x02u == (pDsuRouteStr->dwRouteType & 0x02u)) { pRouteCfgDtStr->ConfigRouteType = ROUTE_TYPE_RETURN; } @@ -5070,7 +5126,7 @@ UINT8 RouteCfgDtStruFrmLSRouteStr( LS_RouteStruct * pLSRouteStr,RouteConfigDataS { } - if (0x0800u == (pDsuRouteStr->wRouteType & 0x0800u)) + if (0x0800u == (pDsuRouteStr->dwRouteType & 0x0800u)) { /*羮·*/ pRouteCfgDtStr->AirShaftRouteType = ROUTE_TYPE_AIRSHAFT; } @@ -5079,7 +5135,7 @@ UINT8 RouteCfgDtStruFrmLSRouteStr( LS_RouteStruct * pLSRouteStr,RouteConfigDataS } /*Զ·*/ - if (0x1000u == (pDsuRouteStr->wRouteType & 0x1000u)) + if (0x1000u == (pDsuRouteStr->dwRouteType & 0x1000u)) {/*Զ·*/ pRouteCfgDtStr->AutoTriggerType = ROUTE_TYPE_AUTO_TRIGGER; } @@ -5089,7 +5145,7 @@ UINT8 RouteCfgDtStruFrmLSRouteStr( LS_RouteStruct * pLSRouteStr,RouteConfigDataS /*ý·*/ pRouteCfgDtStr->cRouteRukuProperty = ROUTE_RUKU_PROPERTY_NO; - if (0x0010U == (pDsuRouteStr->wRouteType & 0x0010U)) + if (0x0010U == (pDsuRouteStr->dwRouteType & 0x0010U)) { pRouteCfgDtStr->cRouteRukuProperty = ROUTE_RUKU_PROPERTY_YES; } @@ -5108,13 +5164,22 @@ UINT8 RouteCfgDtStruFrmLSRouteStr( LS_RouteStruct * pLSRouteStr,RouteConfigDataS { } /*·*/ - if (0x8000U == (pDsuRouteStr->wRouteType & 0x8000U)) + if (0x8000U == (pDsuRouteStr->dwRouteType & 0x8000U)) { pRouteCfgDtStr->chRouteCouplinkType = ROUTE_TYPE_COUPLINK; } else { + } + /*·*/ + if (0x10000U == (pDsuRouteStr->dwRouteType & 0x10000U)) + { + pRouteCfgDtStr->chRouteConnectType = ROUTE_TYPE_CONNECT; + } + else + { + } /*Զ·*/ @@ -6139,7 +6204,7 @@ UINT8 RouteCfgDtStruFrmLSRouteStr( LS_RouteStruct * pLSRouteStr,RouteConfigDataS { routeEndSignal =dsuStaticHeadStru.pRouteStru[dsuRouteIndex[LSData.pLSRouteStr[i].wRouteId]].wEndSignalId; if((routeStartSignal == routeEndSignal) && - (0x02u == (dsuStaticHeadStru.pRouteStru[dsuRouteIndex[LSData.pLSRouteStr[i].wRouteId]].wRouteType & 0x02u))) + (0x02u == (dsuStaticHeadStru.pRouteStru[dsuRouteIndex[LSData.pLSRouteStr[i].wRouteId]].dwRouteType & 0x02u))) {/*۷·նźŻΪǰ·ʼźŻ*/ /*羮۷·ͨ۷·*/ if(ROUTE_SIGNAL_OPPOSED_ROUTE_SUM_MAX > index) { @@ -11644,6 +11709,162 @@ UINT8 ReverseCutCfgDtStruFromDquStr(Relay_ReverseCutStruct* pReverseCutRelay, Re return rtnvalue; } +/********************************************* +*ܣʼпݽṹ----ṹ +*˵FSNameļָ +*ֵ0ʧܣ1ɹ +*********************************************/ +UINT8 ReverseSwitchConfigDataStructInit(CHAR * FSName) +{ + + UINT8 rtnvalue = 0u; + UINT8 callFun = 0u; + UINT16 i = 0u; + + if (NULL != FSName) + { + + callFun = InitRelay_ReverseSwitchStru(FSName); + callFun *= InitRelay_ReverseBoardStru(FSName); + } + else + { + rtnvalue = 0u; + } + /*ӵͼʼʧܣʧ˳*/ + if (0u == callFun) + { + rtnvalue = 0u; + } + else + { + rtnvalue = 1u; + } + + if ((1u == rtnvalue)&&(CI_SUM_MAX > RelayDataLen.RelayReverseSwitchStrLen)) + { + dquCICfgDtStr.wRelayReverseSwitchStrLen = RelayDataLen.RelayReverseSwitchStrLen; + for (i = 0u; iwId = pReverseSwitchRelay->wReversSwitchId; + for (jj = 0u; jjwColCloseRelayId == RelayData.pRelayCfgDtStr[jj].RelayId) + { + chFindClose = CI_SUCCESS; + } + else if (pReverseSwitchRelay->wColOpenRelayId == RelayData.pRelayCfgDtStr[jj].RelayId) + { + pReverseSwitchCfgDtStr->chBelongCiId = RelayData.pRelayCfgDtStr[jj].BelongCiId; + chFindOpen = CI_SUCCESS; + } + else + { + ; + } + if ((CI_SUCCESS == chFindOpen) && (CI_SUCCESS == chFindClose)) + { + break;/*ҵ*/ + } + } + + if ((CI_ERROR == chFindOpen) || (CI_ERROR == chFindClose)) + { + /*ʧ*/ + rtnvalue = 0u; + debug_infor_printf((char*)"\nOpenRelay :%d CloseRelay%d, Not Find In RelayTable \n", pReverseSwitchRelay->wColOpenRelayId, pReverseSwitchRelay->wColCloseRelayId); + } + else + { + rtnvalue = 1u; + pReverseSwitchCfgDtStr->wColCloseRelayId = pReverseSwitchRelay->wColCloseRelayId; + pReverseSwitchCfgDtStr->wColOpenRelayId = pReverseSwitchRelay->wColOpenRelayId; + pReverseSwitchCfgDtStr->wRelateBoardNum = pReverseSwitchRelay->wRelateBoardNum; + if ((0U < pReverseSwitchCfgDtStr->wRelateBoardNum) && (REVERSE_BOARD_SUM_MAX >= pReverseSwitchCfgDtStr->wRelateBoardNum)) + { + for (kk = 0u; kk < pReverseSwitchCfgDtStr->wRelateBoardNum; kk++) + { + pReverseSwitchCfgDtStr->strRelateBoardBuf[kk].wReversBoardId = pReverseSwitchRelay->strRelateBoardBuf[kk].wReversBoardId; + pReverseSwitchCfgDtStr->strRelateBoardBuf[kk].chDevType = pReverseSwitchRelay->strRelateBoardBuf[kk].chDevType; + pReverseSwitchCfgDtStr->strRelateBoardBuf[kk].wBoardColCloseRelayId = pReverseSwitchRelay->strRelateBoardBuf[kk].wBoardColCloseRelayId; + pReverseSwitchCfgDtStr->strRelateBoardBuf[kk].wBoardColOpenRelayId = pReverseSwitchRelay->strRelateBoardBuf[kk].wBoardColOpenRelayId; + pReverseSwitchCfgDtStr->strRelateBoardBuf[kk].wDevId = pReverseSwitchRelay->strRelateBoardBuf[kk].wDevId; + chFindClose = CI_ERROR; + chFindOpen = CI_ERROR; + for (jj = 0u; jjstrRelateBoardBuf[kk].wBoardColCloseRelayId == RelayData.pRelayCfgDtStr[jj].RelayId) + { + chFindClose = CI_SUCCESS; + } + else if (pReverseSwitchCfgDtStr->strRelateBoardBuf[kk].wBoardColOpenRelayId == RelayData.pRelayCfgDtStr[jj].RelayId) + { + pReverseSwitchCfgDtStr->chBelongCiId = RelayData.pRelayCfgDtStr[jj].BelongCiId; + chFindOpen = CI_SUCCESS; + } + else + { + ; + } + if ((CI_SUCCESS == chFindOpen) && (CI_SUCCESS == chFindClose)) + { + break;/*ҵ*/ + } + } + + if ((CI_ERROR == chFindOpen) || (CI_ERROR == chFindClose)) + { + rtnvalue = 0u; + debug_infor_printf((char*)"\nBoard: %d openRelay:%d closeRelay:%d, Not Find In RelayTable \n", pReverseSwitchCfgDtStr->strRelateBoardBuf[kk].wReversBoardId, + pReverseSwitchCfgDtStr->strRelateBoardBuf[kk].wBoardColOpenRelayId, pReverseSwitchCfgDtStr->strRelateBoardBuf[kk].wBoardColCloseRelayId); + break; + } + } + } + } + } + else + { + /*ʧ*/ + rtnvalue = 0u; + } + return rtnvalue; +} + /********************************************* *ܣʼTIOCATS豸ݽṹ----ṹ *˵FSNameļָ @@ -14336,7 +14557,6 @@ static UINT8 RciSerialCommDataInit(void) UINT16 ii = 0U; /*ѭ*/ UINT8 chLocalCiId = 0U; /*ID*/ UINT16 wDataLen = 0U; /*ݿ*/ - UINT16 wTempData = 0U; /*ʱ*/ UINT16 val = 0U; /*ʱнӱ*/ UINT8 chCiDevId = 0U; /*CI豸ID*/ UINT8 chCiDevType = 0U; /*CI豸*/ @@ -14366,7 +14586,7 @@ static UINT8 RciSerialCommDataInit(void) chCiDevId = (UINT8)(val & 0x00FF); chCiDevType = (UINT8)((val & 0xFF00) >> 8); - if ((chLocalCiId == chCiDevType) && (chLocalRcWorkMode == chCiDevType)) + if ((chLocalCiId == chCiDevId) && (chLocalRcWorkMode == chCiDevType)) { /*ñͨű־*/ chRtnValue &= SetLocalSerialCommFlag(SERIAL_COMM_YES); diff --git a/TSCP/src/APP/ciapp/QueryFiles/dquCIInit.h b/TSCP/src/APP/ciapp/QueryFiles/dquCIInit.h index fff1284..35217f3 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dquCIInit.h +++ b/TSCP/src/APP/ciapp/QueryFiles/dquCIInit.h @@ -176,6 +176,9 @@ typedef struct ReverseCutCfgDataStru stReverseCutCfgDtStr[REVERSE_CUT_SUM_MAX]; /*豸*/ UINT16 wReverseCutCfgLen; + ReverseSwitchCfgDataStru stReverseSwitchCfgDtStr[CI_SUM_MAX]; /*豸ذ忨*/ + UINT16 wRelayReverseSwitchStrLen; /*пظ*/ + EaConfigStru szEaCfgDtStr[EA_CFG_SUM_MAX]; /**/ UINT16 wEaCfgLen; /*ݳ*/ @@ -1088,5 +1091,20 @@ UINT8 PsdRelateEsbConfigDataInit(UINT16 wPsdIndex); */ UINT8 RciCommonConfigDataInit(CHAR* FSName); +/********************************************* +*ܣʼпݽṹ----ṹ +*˵FSNameļָ +*ֵ0ʧܣ1ɹ +*********************************************/ +UINT8 ReverseSwitchConfigDataStructInit(CHAR * FSName); + +/********************************************* +*ܣпݽṹ +*˵pReverseSwitchRelay̵ʼָ +pReverseSwitchCfgDtStrݽṹָ +*ֵ0ʧܣ1ɹ +*********************************************/ +UINT8 ReverseSiwtchCfgDtStruFromDquStr(Relay_ReverseSwitchStruct* pReverseSwitchRelay, ReverseSwitchCfgDataStru* pReverseSwitchCfgDtStr); + #endif diff --git a/TSCP/src/APP/ciapp/QueryFiles/dquCIInterFace.c b/TSCP/src/APP/ciapp/QueryFiles/dquCIInterFace.c index 7000617..fa12b9e 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dquCIInterFace.c +++ b/TSCP/src/APP/ciapp/QueryFiles/dquCIInterFace.c @@ -4137,6 +4137,70 @@ INT16 ReadReverseCutConfigData(const UINT8 ciId, ReverseCutCfgDataStru* pstRever return DataNum; } +/********************************************* +*ܣ豸Ӧ忨 +*˵ciIdID pLocalReverseData 豸ݽṹָ +*ֵ-1 ʧ ɹ +*********************************************/ +INT16 ReadReverseSwitchConfigData(const UINT8 ciId, ReverseSwitchCfgDataStru* pLocalReverseData) +{ + UINT16 i = 0u; + INT16 DataNum = -1; + UINT16 jj = 0U; + if ((0u == ciId) || (NULL == pLocalReverseData)) + { + DataNum = -1; + } + else + { + DataNum = 0; + } + + if (0 == DataNum) + { + for (i = 0u; iwColCloseRelayId = dquCICfgDtStr.stReverseSwitchCfgDtStr[i].wColCloseRelayId; + pLocalReverseData->wColOpenRelayId = dquCICfgDtStr.stReverseSwitchCfgDtStr[i].wColOpenRelayId; + if ((0U == pLocalReverseData->wColCloseRelayId) || (UINT16_MAX == pLocalReverseData->wColCloseRelayId) + || (0U == pLocalReverseData->wColOpenRelayId) || (UINT16_MAX == pLocalReverseData->wColOpenRelayId)) + { + DataNum = -1;/*епصɼ*/ + } + else + { + pLocalReverseData->wRelateBoardNum = dquCICfgDtStr.stReverseSwitchCfgDtStr[i].wRelateBoardNum; + pLocalReverseData->wId = dquCICfgDtStr.stReverseSwitchCfgDtStr[i].wId; + pLocalReverseData->chBelongCiId = ciId; + for (jj = 0u; jj < dquCICfgDtStr.stReverseSwitchCfgDtStr[i].wRelateBoardNum; jj++) + { + pLocalReverseData->strRelateBoardBuf[jj].wReversBoardId = dquCICfgDtStr.stReverseSwitchCfgDtStr[i].strRelateBoardBuf[jj].wReversBoardId; + pLocalReverseData->strRelateBoardBuf[jj].chDevType = dquCICfgDtStr.stReverseSwitchCfgDtStr[i].strRelateBoardBuf[jj].chDevType; + pLocalReverseData->strRelateBoardBuf[jj].wBoardColCloseRelayId = dquCICfgDtStr.stReverseSwitchCfgDtStr[i].strRelateBoardBuf[jj].wBoardColCloseRelayId; + pLocalReverseData->strRelateBoardBuf[jj].wBoardColOpenRelayId = dquCICfgDtStr.stReverseSwitchCfgDtStr[i].strRelateBoardBuf[jj].wBoardColOpenRelayId; + if ((0U == pLocalReverseData->strRelateBoardBuf[jj].wBoardColCloseRelayId) || (UINT16_MAX == pLocalReverseData->strRelateBoardBuf[jj].wBoardColCloseRelayId) + || (0U == pLocalReverseData->strRelateBoardBuf[jj].wBoardColOpenRelayId) || (UINT16_MAX == pLocalReverseData->strRelateBoardBuf[jj].wBoardColOpenRelayId)) + { + DataNum = -1;/*еа忨ɼ*/ + break; + } + pLocalReverseData->strRelateBoardBuf[jj].wDevId = dquCICfgDtStr.stReverseSwitchCfgDtStr[i].strRelateBoardBuf[jj].wDevId; + } + } + break; + } + } + } + else + { + ; + } + + return DataNum; +} + /************************************************** *ܣȡVOBC豸Ӧλѯvobc diff --git a/TSCP/src/APP/ciapp/QueryFiles/dquCIInterFace.h b/TSCP/src/APP/ciapp/QueryFiles/dquCIInterFace.h index 133f09f..4ee1668 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dquCIInterFace.h +++ b/TSCP/src/APP/ciapp/QueryFiles/dquCIInterFace.h @@ -418,6 +418,13 @@ INT16 ReadCutoffPointConfigData(const UINT8 ciId, CfpConfigStru* pstCutoffConfig *ֵعֽID *********************************************/ INT16 ReadReverseCutConfigData(const UINT8 ciId, ReverseCutCfgDataStru* pstReverseConfigData); + +/********************************************* +*ܣ豸Ӧ忨 +*˵ciIdID pLocalReverseData ݽṹָ +*ֵ-1 ʧ ɹ +*********************************************/ +INT16 ReadReverseSwitchConfigData(const UINT8 ciId, ReverseSwitchCfgDataStru* pLocalReverseData); /************************************************************************ ܣHlhtIDתvobcڲ 룺 diff --git a/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruFrmChar.c b/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruFrmChar.c index 5afb0b5..3f57f37 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruFrmChar.c +++ b/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruFrmChar.c @@ -404,32 +404,34 @@ UINT8 R_PointStructFromChar(UINT8 * pDataAddr,Relay_PointStruct* pSwitchStr) } if (CI_TRADITION_RAILWAY == lineIdentity) {/*ǹ·*/ - pSwitchStr->wPointId = dquCiShortFromChar(pData); /*ID*/ + pSwitchStr->wPointId = dquCiShortFromChar(pData); /*ID*/ + pData += 2u; + pSwitchStr->wOcId = dquCiShortFromChar(pData); /*OC ID*/ + pData += 2u; + pSwitchStr->wRelayDingBiaoId = dquCiShortFromChar(pData); /*̵ID */ + pData += 2u; + pSwitchStr->wRelayFanBiaoId = dquCiShortFromChar(pData); /*̵ID */ pData += 2u; - /*OCID*/ - pData += 2u; - pSwitchStr->wRelayDingBiaoId = dquCiShortFromChar(pData); /*̵ID */ - pData += 2u; - pSwitchStr->wRelayFanBiaoId = dquCiShortFromChar(pData); /*̵ID */ + pSwitchStr->wRelayYunCaoId = dquCiShortFromChar(pData); /*ʲټ̵ID*/ pData += 2u; - - pSwitchStr->wRelayYunCaoId = dquCiShortFromChar(pData); /*ʲټ̵ID*/ - pData += 2u; - pSwitchStr->wRelayDingCaoId = dquCiShortFromChar(pData); /*ټ̵ID */ + pSwitchStr->wRelayDingCaoId = dquCiShortFromChar(pData); /*ټ̵ID */ pData += 2u; - pSwitchStr->wRelayFanCaoId = dquCiShortFromChar(pData); /*ټ̵ID */ + pSwitchStr->wRelayFanCaoId = dquCiShortFromChar(pData); /*ټ̵ID */ pData += 2u; - pSwitchStr->wRelayZongDingBiaoId = dquCiShortFromChar(pData); /*̵ܶID */ + pSwitchStr->wRelayZongDingBiaoId = dquCiShortFromChar(pData); /*̵ܶID */ pData += 2u; - pSwitchStr->wRelayZongFanBiaoId = dquCiShortFromChar(pData); /*̵ܷID */ + pSwitchStr->wRelayZongFanBiaoId = dquCiShortFromChar(pData); /*̵ܷID */ pData += 2u; - pSwitchStr->wDFHId = dquCiShortFromChar(pData); /*DFH̵ID*/ + pSwitchStr->wDFHId = dquCiShortFromChar(pData); /*DFH̵ID*/ pData += 2u; - - pSwitchStr->wRelayShadowDingBiaoId = dquCiShortFromChar(pData); /*̵ID */ + pSwitchStr->wRelayRedunDB1Id = dquCiShortFromChar(pData); /*10ɼDBJ1̵ID*/ pData += 2u; - pSwitchStr->wRelayShadowFanBiaoId = dquCiShortFromChar(pData); /*̵ID */ + pSwitchStr->wRelayRedunDB2Id = dquCiShortFromChar(pData); /*10ɼDBJ2̵ID*/ + pData += 2u; + pSwitchStr->wRelayRedunFB1Id = dquCiShortFromChar(pData); /*10ɼFBJ1̵ID*/ + pData += 2u; + pSwitchStr->wRelayRedunFB2Id = dquCiShortFromChar(pData); /*10ɼFBJ2̵ID*/ pData += 2u; }/* zt ɾش 2022-02-15 */ else @@ -1192,4 +1194,155 @@ UINT8 R_OCIndicStruFromChar(UINT8* pDataAddr, OCStationIndicConfigDataStru* pInd return reVal; } +/********************************************* +*ܣݵпü̵ṹ +*˵pDataAddrݵַ Relay_ReverseSwitchStruct пؼ̵ݽṹָ +*ֵ0ʧܣ1ɹ +*********************************************/ +UINT8 R_ReverseSwitchStrFromChar(UINT8 * pDataAddr, Relay_ReverseSwitchStruct * pReverseStr) +{ + UINT8 * pData = pDataAddr; + UINT8 rtnvalue = 0u; + UINT16 j = 0U; + UINT16 wTemp = 0U; + if ((NULL == pDataAddr) || (NULL == pReverseStr)) + { + rtnvalue = 0u; + + } + else + { + rtnvalue = 1U; + } + + if (1u == rtnvalue) + { + pReverseStr->wReversSwitchId = dquCiShortFromChar(pData); /*ID*/ + pData += 2u; + + pReverseStr->ocId = dquCiShortFromChar(pData); /*Oc ID*/ + pData += 2u; + + pReverseStr->wColOpenRelayId = dquCiShortFromChar(pData); /*̵*/ + pData += 2u; + + pReverseStr->wColCloseRelayId = dquCiShortFromChar(pData); /*ռ̵*/ + pData += 2u; + + if ((0U == pReverseStr->wColOpenRelayId) + ||(0U == pReverseStr->wColCloseRelayId) + || (pReverseStr->wColOpenRelayId == pReverseStr->wColCloseRelayId)) + { + rtnvalue = 0u; + } + else + { + pReverseStr->wRelateBoardNum = dquCiShortFromChar(pData); /*忨*/ + pData += 2u; + + if ((0U < pReverseStr->wRelateBoardNum)&&(OC_RELAY_REVERSE_BOARD_MAX >= pReverseStr->wRelateBoardNum)) + { + for (j = 0U; j < pReverseStr->wRelateBoardNum; j++) + { + wTemp = dquCiShortFromChar(pData); /*忨id*/ + pData += 2u; + if ((0U == wTemp) || (UINT16_MAX == wTemp)) + { + rtnvalue = 0U; + break; + } + else + { + pReverseStr->strRelateBoardBuf[j].wReversBoardId = wTemp; + } + } + } + else + { + rtnvalue = 0u; + debug_infor_printf((char*)"\nR_ReverseSwitchStrFromChar BoardNum%d", pReverseStr->wRelateBoardNum); + } + } + } + + return rtnvalue; + +} + +/********************************************* +*ܣݵа忨ṹ +*˵pDataAddrݵַ Relay_ReverseBoardStruct а忨̵ݽṹָ +*ֵ0ʧܣ1ɹ +*********************************************/ +UINT8 R_ReverseBoardStrFromChar(UINT8 * pDataAddr, Relay_ReverseBoardStruct * pReverseStr) +{ + UINT8 * pData = pDataAddr; + UINT8 rtnvalue = 0u; + UINT16 wBoardId = 0U; + if ((NULL == pDataAddr) || (NULL == pReverseStr)) + { + rtnvalue = 0u; + + } + else + { + rtnvalue = 1U; + } + + if (1u == rtnvalue) + { + wBoardId = dquCiShortFromChar(pData); /*ID*/ + pData += 2u; + + if (0U == wBoardId) + { + rtnvalue = 0U; + } + else + { + pReverseStr->wReversBoardId = wBoardId; /*忨ID*/ + + pReverseStr->wBoardColOpenRelayId = dquCiShortFromChar(pData); /*̵*/ + pData += 2u; + + pReverseStr->wBoardColCloseRelayId = dquCiShortFromChar(pData); /*ռ̵*/ + pData += 2u; + + if ((0U == pReverseStr->wBoardColCloseRelayId) + ||(0U == pReverseStr->wBoardColOpenRelayId) + || (pReverseStr->wBoardColOpenRelayId == pReverseStr->wBoardColCloseRelayId)) + { + rtnvalue = 0U; + } + else + { + pReverseStr->chDevType = *pData;/**/ + pData++; + + pReverseStr->wDevId = dquCiShortFromChar(pData); /*豸ID*/ + pData += 2u; + + if ((OC_LEN_REVERSE_TYPE_PSD == pReverseStr->chDevType) || (OC_LEN_REVERSE_TYPE_SWITCH == pReverseStr->chDevType)) + { + if ((0U < pReverseStr->wDevId) && (UINT16_MAX != pReverseStr->wDevId)) + { + rtnvalue = 1U; + } + else + { + rtnvalue = 0U; + } + } + else + { + rtnvalue = 0U; + } + } + } + } + + return rtnvalue; + +} + diff --git a/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruFrmChar.h b/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruFrmChar.h index 9df9f0c..4746325 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruFrmChar.h +++ b/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruFrmChar.h @@ -150,4 +150,18 @@ UINT8 R_ReverseCutStrFromChar(UINT8 * pDataAddr, Relay_ReverseCutStruct * pRever * cgh-ϲCID-3037-3 *********************************************/ UINT8 R_OCIndicStruFromChar(UINT8* pDataAddr, OCStationIndicConfigDataStru* pIndicStru); + +/********************************************* +*ܣݵпü̵ṹ +*˵pDataAddrݵַ Relay_ReverseSwitchStruct пؼ̵ݽṹָ +*ֵ0ʧܣ1ɹ +*********************************************/ +UINT8 R_ReverseSwitchStrFromChar(UINT8 * pDataAddr, Relay_ReverseSwitchStruct * pReverseStr); + +/********************************************* +*ܣݵа忨ṹ +*˵pDataAddrݵַ Relay_ReverseBoardStruct а忨̵ݽṹָ +*ֵ0ʧܣ1ɹ +*********************************************/ +UINT8 R_ReverseBoardStrFromChar(UINT8 * pDataAddr, Relay_ReverseBoardStruct * pReverseStr); #endif diff --git a/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruInit.c b/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruInit.c index 2e4f329..d7c93c7 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruInit.c +++ b/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruInit.c @@ -468,8 +468,8 @@ UINT8 InitRelay_PointStru(CHAR* CIDataName) if (CI_PATTERN_TRADITIONAL == localCiPattern) { excelId = CI_DATA_TYPE; - sheetId = RELAY_SIGNAL; - rowLen = LEN_RELAY_SIGNAL; + sheetId = RELAY_POINT; + rowLen = LEN_RELAY_POINT; } else { @@ -1642,3 +1642,191 @@ UINT8 InitRelay_ReverseCutStru(CHAR* CIDataName) return rtnValue; } +/********************************************* +*ܣ䵹пؼ̵ṹ---ڲ +*˵CIDataNameָ +*ֵ0ʧܣ1ɹ +*********************************************/ +UINT8 InitRelay_ReverseSwitchStru(CHAR* CIDataName) +{ + UINT8 funcRtn = 0u; + Relay_ReverseSwitchStruct* pReverseSwitchStr = NULL; /*пر*/ + UINT8* pDataAddr = NULL; /*ݵַ*/ + UINT32 DataSize = 0U; /*ݴСֽ*/ + UINT16 j = 0U; + UINT8 rtnValue = 0u; + + /*Ѿʼˣǵִй ȫӲóʼű*/ + if (NULL != RelayData.pRelayReverseSwitchStr) + { + rtnValue = 1u; + } + else + { + /*ȡ豸̵ݱ*/ + funcRtn = dquGetConfigData(CIDataName, OC_DATA_TYPE, OC_RELAY_REVERSE_SWITCH_ID, &pDataAddr, &DataSize); + if (0u == funcRtn) + { + /*ʧ*/ + rtnValue = 0u; + } + else + { + + if ((0u != DataSize% OC_LEN_REVERSE_SWITCH_LEN)) + { /*øΪݴ*/ + debug_infor_printf((char* )"\nCI_RELAY_DATA,REVERSE_Switch len %d not equal to fs", OC_LEN_REVERSE_SWITCH_LEN); + rtnValue = 0u; + } + else + { + RelayDataLen.RelayReverseSwitchStrLen = (UINT16)(DataSize / OC_LEN_REVERSE_SWITCH_LEN);/*ṹ*/ + + if (OC_LEN_REVERSE_SWITCH_LEN > DataSize) + {/*һ*/ + RelayData.pRelayReverseSwitchStr = (Relay_ReverseSwitchStruct *)MyNew((UINT32)sizeof(Relay_ReverseSwitchStruct)); + RelayDataLen.RelayReverseSwitchStrLen = 0u; + rtnValue = 1u; + } + else + { + + /*̬ռ*/ + RelayData.pRelayReverseSwitchStr = (Relay_ReverseSwitchStruct *)MyNew((UINT32)(sizeof(Relay_ReverseSwitchStruct) * RelayDataLen.RelayReverseSwitchStrLen)); + + if (NULL == RelayData.pRelayReverseSwitchStr) + {/*̬ռʧ*/ + RelayDataLen.RelayReverseSwitchStrLen = 0u; + rtnValue = 0u; + } + else + { + /*ڴΪЧ*/ + (void)CommonMemSet(RelayData.pRelayReverseSwitchStr, (UINT32)(sizeof(Relay_ReverseSwitchStruct) * RelayDataLen.RelayReverseSwitchStrLen), + (UINT8)0x00, (UINT32)(sizeof(Relay_ReverseSwitchStruct) * RelayDataLen.RelayReverseSwitchStrLen)); + /*ݵ ṹ */ + rtnValue = 1u; + for (j = 0u; j < RelayDataLen.RelayReverseSwitchStrLen; j++) + { + pReverseSwitchStr = RelayData.pRelayReverseSwitchStr + j; + + /*ݽṹ*/ + rtnValue &= R_ReverseSwitchStrFromChar(pDataAddr, pReverseSwitchStr); + pDataAddr += OC_LEN_REVERSE_SWITCH_LEN; + if (1U != rtnValue) + { + break; + } + } + } + } + } + } + } + return rtnValue; +} + +/********************************************* +*ܣ䵹а忨̵ṹ---ڲ +*˵CIDataNameָ +*ֵ0ʧܣ1ɹ +*********************************************/ +UINT8 InitRelay_ReverseBoardStru(CHAR* CIDataName) +{ + UINT8 funcRtn = 0u; + UINT8* pDataAddr = NULL; /*ݵַ*/ + UINT32 DataSize = 0U; /*ݴСֽ*/ + Relay_ReverseBoardStruct tempBoardStru = {0}; /*а忨ʱ洢*/ + Relay_ReverseSwitchStruct* pReverseSwitchStr = NULL;/*пָ*/ + Relay_ReverseBoardStruct* pReverseBoard = NULL; /*а忨ָ*/ + UINT16 j = 0U; + UINT16 ii = 0U; + UINT16 kk = 0U; + UINT8 rtnValue = 0u; + UINT16 wLen = 0U; + UINT8 chFind = CI_ERROR; + + if (NULL == RelayData.pRelayReverseSwitchStr) + { + /*Ҫȳʼпؼ̵*/ + rtnValue = 0u; + } + else + { + /*ȡа忨̵ݱ*/ + funcRtn = dquGetConfigData(CIDataName, OC_DATA_TYPE, OC_RELAY_REVERSE_BOARD_ID, &pDataAddr, &DataSize); + if (0u == funcRtn) + { + /*ʧ*/ + rtnValue = 0u; + } + else + { + + if ((0u != DataSize% OC_LEN_REVERSE_BOARD_LEN)) + { /*øΪݴ*/ + debug_infor_printf((char*)"\nCI_RELAY_DATA,REVERSE_Board len %d not equal to fs", OC_LEN_REVERSE_BOARD_LEN); + rtnValue = 0u; + } + else + { + wLen = (UINT16)(DataSize / OC_LEN_REVERSE_BOARD_LEN);/*ṹ*/ + + if ((0U == RelayDataLen.RelayReverseSwitchStrLen)&&(RelayDataLen.RelayReverseSwitchStrLen == wLen)) + { + /*޿*/ + rtnValue = 1u; + } + else if ((0U == RelayDataLen.RelayReverseSwitchStrLen) || (0U == wLen)||(CI_SUM_MAX <= RelayDataLen.RelayReverseSwitchStrLen)) + { + /*忨뿪òһ*/ + debug_infor_printf((char*)"\n InitRelay_ReverseBoardStru len %d Error \n", wLen); + rtnValue = 0u; + } + else + { + /*ʼӦݣ忨ݵĿռѾڿݽṹ*/ + rtnValue = 1u; + for (ii = 0U; ii < wLen; ii++) + { + /*ݽṹ*/ + rtnValue &= R_ReverseBoardStrFromChar(pDataAddr, &tempBoardStru); + pDataAddr += OC_LEN_REVERSE_BOARD_LEN; + chFind = CI_ERROR; + if (1U == rtnValue) + { + for (j = 0U; j < RelayDataLen.RelayReverseSwitchStrLen; j++) + { + pReverseSwitchStr = RelayData.pRelayReverseSwitchStr + j; + for (kk = 0U; kk < pReverseSwitchStr->wRelateBoardNum; kk++) + { + /*ҶӦа忨*/ + if (pReverseSwitchStr->strRelateBoardBuf[kk].wReversBoardId == tempBoardStru.wReversBoardId) + { + pReverseBoard = &pReverseSwitchStr->strRelateBoardBuf[kk]; + (void)CommonMemCpy((void *)(pReverseBoard), (UINT32)sizeof(Relay_ReverseBoardStruct), (const void *)(&tempBoardStru), (UINT32)sizeof(Relay_ReverseBoardStruct)); + chFind = CI_SUCCESS; + break; + } + } + if (CI_SUCCESS == chFind) + { + break; + } + } + } + + if ((CI_ERROR == chFind)||(0U == rtnValue)) + { + rtnValue = 0u; + debug_infor_printf((char*)"\n InitRelay_ReverseBoardStru Board%d Not Find \n", tempBoardStru.wReversBoardId); + break; + } + } + } + } + } + } + return rtnValue; +} + diff --git a/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruInit.h b/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruInit.h index 1344741..db8afea 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruInit.h +++ b/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruInit.h @@ -36,6 +36,7 @@ typedef struct SConfig_RelayDataStruct Relay_WashMachineStruct *pRelayWashMachineStr; /*ϴ̵ṹ*/ Relay_DCAgreeStruct *pRelayDCAgreeStr;/*̵ͬṹ*/ Relay_ReverseCutStruct *pRelayReverseCutStr;/*豸̵ṹ*/ + Relay_ReverseSwitchStruct* pRelayReverseSwitchStr; /*пؼ̵ṹ*/ } RelayDataStruct_Config; /*̵鳤Ƚṹ*/ typedef struct S_RelayDataStructLen @@ -58,6 +59,7 @@ typedef struct S_RelayDataStructLen UINT16 RelayMonoRailPointStrLen ; /*̵ṹ鳤*/ UINT16 RelayDCAgreeStrLen;/*̵ͬṹ*/ UINT16 RelayReverseCutStrLen;/*豸̵ṹ*/ + UINT16 RelayReverseSwitchStrLen;/*пؼ̵ṹ*/ } RelayDataStruct_ConfigLen; /*********ȫֵļ̵Ϣݱ*******/ @@ -173,5 +175,19 @@ UINT8 InitRelay_DCAgreeStru(CHAR* CIDataName); *********************************************/ UINT8 InitRelay_ReverseCutStru(CHAR* CIDataName); +/********************************************* +*ܣ䵹пؼ̵ṹ---ڲ +*˵CIDataNameָ +*ֵ0ʧܣ1ɹ +*********************************************/ +UINT8 InitRelay_ReverseSwitchStru(CHAR* CIDataName); + +/********************************************* +*ܣ䵹а忨̵ṹ---ڲ +*˵CIDataNameָ +*ֵ0ʧܣ1ɹ +*********************************************/ +UINT8 InitRelay_ReverseBoardStru(CHAR* CIDataName); + #endif diff --git a/TSCP/src/APP/ciapp/QueryFiles/dqucijdqstru.h b/TSCP/src/APP/ciapp/QueryFiles/dqucijdqstru.h index 960f9c0..6e70cc8 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dqucijdqstru.h +++ b/TSCP/src/APP/ciapp/QueryFiles/dqucijdqstru.h @@ -111,7 +111,7 @@ #define SWITCH_BOARD_MODE_MAX 5U /*һOCеģ*/ /*̵ñ*/ #define OC_SWITCH_RELAY_ID ((UINT8)4) -#define LEN_OC_SWITCH_RELAY ((UINT8)24) +#define LEN_OC_SWITCH_RELAY ((UINT8)28) /*źŻñ*/ #define OC_SIGNAL_ID ((UINT8)5) #define LEN_OC_SIGNAL ((UINT8)24) @@ -201,6 +201,15 @@ /* ԵƼ̵ */ #define OC_RELAY_LIGHTTESTBUTTON_ID ((UINT8)39) +/*10а忨ɼ*/ +#define OC_RELAY_REVERSE_SWITCH_ID ((UINT8)42)/*п*/ +#define OC_RELAY_REVERSE_BOARD_ID ((UINT8)43)/*а忨*/ +#define OC_RELAY_REVERSE_BOARD_MAX ((UINT16)42)/*а忨ֵ*/ +#define OC_LEN_REVERSE_SWITCH_LEN ((UINT8)94) +#define OC_LEN_REVERSE_BOARD_LEN ((UINT8)9) +#define OC_LEN_REVERSE_TYPE_SWITCH ((UINT8)0x01) +#define OC_LEN_REVERSE_TYPE_PSD ((UINT8)0x10) + /*ͣť̵ṹ*/ typedef struct S_Relay_EmegencyStopStruct { @@ -275,10 +284,13 @@ typedef struct S_Relay_PhysicalSegmentStruct typedef struct S_Relay_PointStruct { UINT16 wPointId; /*ID*/ + UINT16 wOcId; /*OC ID*/ UINT16 wRelayDingBiaoId; /*̵ID*/ UINT16 wRelayFanBiaoId; /*̵ID*/ - UINT16 wRelayShadowDingBiaoId; /*̵ID*/ - UINT16 wRelayShadowFanBiaoId; /*̵ID*/ + UINT16 wRelayRedunDB1Id; /*10ɼ̵1ID*/ + UINT16 wRelayRedunDB2Id; /*10ɼ̵2ID*/ + UINT16 wRelayRedunFB1Id; /*10ɼ̵1ID*/ + UINT16 wRelayRedunFB2Id; /*10ɼ̵2ID*/ UINT16 wRelayYunCaoId; /*ʲټ̵ID*/ UINT16 wRelayDingCaoId; /*ټ̵ID*/ UINT16 wRelayFanCaoId; /*ټ̵ID*/ @@ -482,4 +494,23 @@ typedef struct S_Relay_ReverseCutStruct UINT16 wReverseCutRelayId; /*м̵ID*/ }Relay_ReverseCutStruct; +typedef struct S_Relay_ReverseBoardStruct +{ + UINT16 wReversBoardId; /*а忨D*/ + UINT8 chDevType; /*豸*/ + UINT16 wDevId; /*忨豸 ID*/ + UINT16 wBoardColOpenRelayId; /* ɼ̵ID */ + UINT16 wBoardColCloseRelayId; /* ղɼ̵ID */ +}Relay_ReverseBoardStruct; + +typedef struct S_Relay_ReverseSwitchStruct +{ + UINT16 wReversSwitchId; /*пID*/ + UINT16 ocId; /*OC ID*/ + UINT16 wColOpenRelayId; /* ɼ̵ID */ + UINT16 wColCloseRelayId; /* ղɼ̵ID */ + UINT16 wRelateBoardNum; /*忨*/ + Relay_ReverseBoardStruct strRelateBoardBuf[OC_RELAY_REVERSE_BOARD_MAX]; /*忨*/ +}Relay_ReverseSwitchStruct; + #endif diff --git a/TSCP/src/APP/ciapp/Relay/RelayDefine.h b/TSCP/src/APP/ciapp/Relay/RelayDefine.h index e5246ec..771b7f1 100644 --- a/TSCP/src/APP/ciapp/Relay/RelayDefine.h +++ b/TSCP/src/APP/ciapp/Relay/RelayDefine.h @@ -97,6 +97,11 @@ #define SIGNAL_DXJ_TYPE ((UINT8)0x0A) /*DXJ̵*/ #define CHECK_ZCJ_TYPE ((UINT8)0x0B) /*ZCJ̵*/ #define SWITCH_IBP_TYPE ((UINT8)0x0C) /*IBP̵*/ +#define SIGNAL_DJ_TYPE ((UINT8)0x0F) /*źŻ˿̵*/ +#define SIGNAL_MAINJ_TYPE ((UINT8)0x10) /*źŻؼ̵*/ +#define SIGNAL_ACKJ_TYPE ((UINT8)0x11) /*źŻοؼ̵*/ +#define SINNAL_CMAINJ_TYPE ((UINT8)0x12) /*źŻؼ̵*/ + /*̵*/ #define RELAY_HUNXIAN_NUM ((UINT8)10) /*̵*/ diff --git a/TSCP/src/APP/ciapp/ReverseCut/ReverseCutConfigDataManage.c b/TSCP/src/APP/ciapp/ReverseCut/ReverseCutConfigDataManage.c index f268dd8..32fbe1b 100644 --- a/TSCP/src/APP/ciapp/ReverseCut/ReverseCutConfigDataManage.c +++ b/TSCP/src/APP/ciapp/ReverseCut/ReverseCutConfigDataManage.c @@ -10,12 +10,16 @@ ********************************************************/ #include "ReverseCutConfigDataManage.h" +#include "../Switch/SwitchConfigDataManage.h" +#include "../PSD/PSDConfigDataManage.h" ReverseCutCfgDataStru gstReverseCutCfgData[REVERSE_CUT_SUM_MAX] = { 0U }; /*嵹װýṹ*/ UINT16 gReverseCutCfgIdBuf[REVERSE_CUT_SUM_MAX] = { 0U }; /*嵹װID */ INT16 gReverseCutCfgSum = 0; /*嵹װ */ +ReverseSwitchCfgDataStru gLocalReverseData = { 0U };/*ڱĵй*/ + /* * ȡװõǰ @@ -139,9 +143,13 @@ UINT8 ReverseCutConfigDataManage(void) UINT16 jj = 0u; /*α*/ UINT16 wReverseCutDataSum = 0u; /*źŻ豸*/ UINT8 ret = CI_ERROR; - UINT8 localCiId = GetSystemParaLocalCiId(); - - /*źŻID*/ + UINT16 wDevId = 0u; + UINT16 wLocalSwitchSum = 0U;/*ص*/ + UINT16 wLocalPsdSum = 0U;/*PSD*/ + UINT8 localCiId = GetSystemParaLocalCiId(); /*ȡID*/ + UINT8 belongCiId = 0u;/*豸óʼ*/ + UINT8 chFind = CI_ERROR; + /*浹ID*/ wReverseCutDataSum = GetReverseCutCurSum(); if (wReverseCutDataSum < REVERSE_CUT_SUM_MAX) {/**/ @@ -163,6 +171,162 @@ UINT8 ReverseCutConfigDataManage(void) ret = CI_SUCCESS; } - return ret; + if (CI_SUCCESS == ret) + { + if (0U != gLocalReverseData.wId) + { + wLocalSwitchSum = GetSwitchCurSum(); + wLocalPsdSum = GetPsdSum(); + /*߱*/ + for (ii = 0u; ii < gLocalReverseData.wRelateBoardNum; ii++) + { + chFind = CI_ERROR; + if (CI_DEVICE_TYPE_SWITCH == gLocalReverseData.strRelateBoardBuf[ii].chDevType) + { + for (jj = 0u; jj < wLocalSwitchSum; jj++) + { + wDevId = GetSwitchId(jj); /*ȡID*/ + belongCiId = GetSwitchBelongCiId(wDevId); /*ȡID*/ + if ((wDevId == gLocalReverseData.strRelateBoardBuf[ii].wDevId) && (belongCiId == localCiId)) + { + /*öӦм̵*/ + chFind = SetSwitchRelateReverseBoardId(wDevId, gLocalReverseData.strRelateBoardBuf[ii].wReversBoardId); + break; + } + } + } + else if (CI_DEVICE_TYPE_PSD == gLocalReverseData.strRelateBoardBuf[ii].chDevType) + { + for (jj = 0u; jj < wLocalPsdSum; jj++) + { + wDevId = GetPsdId(jj); /*ȡID*/ + belongCiId = GetPsdBelongCiId(wDevId); /*ȡID*/ + if ((wDevId == gLocalReverseData.strRelateBoardBuf[ii].wDevId) && (belongCiId == localCiId)) + { + /*öӦм̵*/ + chFind = SetPsdRelateReverseRelay(wDevId, gLocalReverseData.strRelateBoardBuf[ii].wReversBoardId); + break; + } + } + } + else + { + chFind = CI_ERROR; + } + if (CI_ERROR == chFind) + { + ret = CI_ERROR; + break; + } + } + } + } + + return ret; +} + +/* +* ȡпس̵ +* ˵ +* ֵ 0: ޵ +* [1,65534]̵ID +*/ +UINT16 GetReverseSwitchOpenRelay(void) +{ + return gLocalReverseData.wColOpenRelayId; +} + +/* +* ȡпسռ̵ +* ˵ +* ֵ 0: ޵ +* [1,65534]̵ID +*/ +UINT16 GetReverseSwitchCloseRelay(void) +{ + return gLocalReverseData.wColCloseRelayId; +} + +/* +* ȡָа忨̵ +* ˵ wIndex +* ֵ 0: ޵ +* [1,65534]̵ID +* UINT16_MAX +*/ +UINT16 GetReverseBoardOpenRelay(UINT16 wIndex) +{ + UINT16 chRetVal =UINT16_MAX; + if (0U == gLocalReverseData.wRelateBoardNum) + { + chRetVal = 0U; + } + else if (wIndex < gLocalReverseData.wRelateBoardNum) + { + chRetVal = gLocalReverseData.strRelateBoardBuf[wIndex].wBoardColOpenRelayId; + } + else + { + ;/**/ + } + return chRetVal; +} + +/* +* ȡָа忨ռ̵ +* ˵ wIndex +* ֵ 0: ޵ +* [1,65534]̵ID +*/ +UINT16 GetReverseBoardCloseRelay(UINT16 wIndex) +{ + UINT16 chRetVal = UINT16_MAX; + if (0U == gLocalReverseData.wRelateBoardNum) + { + chRetVal = 0U; + } + else if (wIndex < gLocalReverseData.wRelateBoardNum) + { + chRetVal = gLocalReverseData.strRelateBoardBuf[wIndex].wBoardColCloseRelayId; + } + else + { + ;/**/ + } + return chRetVal; +} + +/* +* ȡа忨 +* ˵ +* ֵ 0: ޵ [1,42]忨 +*/ +UINT16 GetReverseBoardNum(void) +{ + UINT16 chRetVal = 0U; + if (0U == gLocalReverseData.wRelateBoardNum) + { + chRetVal = 0U; + } + else if (REVERSE_BOARD_SUM_MAX >= gLocalReverseData.wRelateBoardNum) + { + chRetVal = gLocalReverseData.wRelateBoardNum; + } + else + { + chRetVal = REVERSE_BOARD_SUM_MAX; + } + return chRetVal; +} + +/** +* @brief ȡ +* @param[in] +* @return +* @note by fan 20260610 +*/ +const ReverseSwitchCfgDataStru * GetReverseCfgData(void) +{ + return &gLocalReverseData; +} -} \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/ReverseCut/ReverseCutConfigDataManage.h b/TSCP/src/APP/ciapp/ReverseCut/ReverseCutConfigDataManage.h index 32598fa..996c7ad 100644 --- a/TSCP/src/APP/ciapp/ReverseCut/ReverseCutConfigDataManage.h +++ b/TSCP/src/APP/ciapp/ReverseCut/ReverseCutConfigDataManage.h @@ -31,11 +31,34 @@ extern "C" { UINT16 wReverseRelayId; /*м̵ID ()*/ }ReverseCutCfgDataStru; + typedef struct S_ReverseBoardStruct + { + UINT16 wReversBoardId; /*а忨D*/ + UINT8 chDevType; /*豸*/ + UINT16 wDevId; /*忨豸 ID*/ + UINT16 wBoardColOpenRelayId; /* ɼ̵ID */ + UINT16 wBoardColCloseRelayId; /* ղɼ̵ID */ + }ReverseBoardStruct; + + /*пؼ忨ݽṹ*/ + typedef struct S_ReverseSwitchDataStruct + { + UINT16 wId; /*пر*/ + UINT16 wColOpenRelayId; /* ɼ̵ID */ + UINT16 wColCloseRelayId; /* ղɼ̵ID */ + UINT16 wRelateBoardNum; /*忨*/ + UINT8 chBelongCiId;/**/ + ReverseBoardStruct strRelateBoardBuf[REVERSE_BOARD_SUM_MAX]; /*忨*/ + }ReverseSwitchCfgDataStru; + + + + /*******************************ȫֱ*******************************/ extern ReverseCutCfgDataStru gstReverseCutCfgData[REVERSE_CUT_SUM_MAX]; /*嵹װýṹ*/ extern UINT16 gReverseCutCfgIdBuf[REVERSE_CUT_SUM_MAX]; /*嵹װID */ extern INT16 gReverseCutCfgSum; /*嵹װ */ - + extern ReverseSwitchCfgDataStru gLocalReverseData;/*ڱĵй*/ /* * ȡװõǰ * ˵ void @@ -83,6 +106,54 @@ extern "C" { * CI_ERROR,ʧ */ UINT8 ReverseCutConfigDataManage(void); + + /* + * ȡпس̵ + * ˵ + * ֵ 0: ޵ + * [1,65534]̵ID + */ + UINT16 GetReverseSwitchOpenRelay(void); + + /* + * ȡпسռ̵ + * ˵ + * ֵ 0: ޵ + * [1,65534]̵ID + */ + UINT16 GetReverseSwitchCloseRelay(void); + + /* + * ȡָа忨̵ + * ˵ wIndex + * ֵ 0: ޵ + * [1,65534]̵ID + * UINT16_MAX + */ + UINT16 GetReverseBoardOpenRelay(UINT16 wIndex); + + /* + * ȡָа忨ռ̵ + * ˵ wIndex + * ֵ 0: ޵ + * [1,65534]̵ID + */ + UINT16 GetReverseBoardCloseRelay(UINT16 wIndex); + + /* + * ȡа忨 + * ˵ + * ֵ 0: ޵ [1,42]忨 + */ + UINT16 GetReverseBoardNum(void); + + /** + * @brief ȡ + * @param[in] + * @return + * @note by fan 20260610 + */ + const ReverseSwitchCfgDataStru * GetReverseCfgData(void); #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/ReverseCut/ReverseCutDataManage.c b/TSCP/src/APP/ciapp/ReverseCut/ReverseCutDataManage.c index 14ee6d2..d2528bd 100644 --- a/TSCP/src/APP/ciapp/ReverseCut/ReverseCutDataManage.c +++ b/TSCP/src/APP/ciapp/ReverseCut/ReverseCutDataManage.c @@ -16,6 +16,7 @@ ReverseCutDataStru gstReverseCutData[REVERSE_CUT_SUM_MAX] = { 0U }; /* UINT8 gTiocSystemMode = 0U; /*TIOCģʽ (Ӱģʽ ģʽ)*/ UINT8 gTiocSystemCutState = 0U; /*TIOCܷ״̬ (ܷлĬ)*/ UINT8 gTiocCanntCutReason = 0U; /*ɵԭ*/ +LocalReverseBoardDataStru gstReversetData = { 0U }; /*״̬洢ˢ*/ /* @@ -235,6 +236,78 @@ UINT8 ReverseCutDataManageInit(void) ;/* ʼʧ */ } + if (CI_SUCCESS == ret) + { + /*ʼΪǿƲ*/ + gstReversetData.chSwitchState = REVERSE_STATE_OLD_SYSTEM; + for (i = 0u; i < REVERSE_BOARD_SUM_MAX; i++) + { + gstReversetData.localReverBoardState[i] = REVERSE_STATE_OLD_SYSTEM; + } + } + return ret; +} +/* +* õп״̬ +* ˵ const UINT8 chReverseCutState,״̬ 0xAA½ 0x55 0xFF쳣 +* ֵ +*/ +void SetReverseSwitchState(const UINT8 chReverseCutState) +{ + if ((REVERSE_STATE_NEW_SYSTEM == chReverseCutState) + || (REVERSE_STATE_OLD_SYSTEM == chReverseCutState) + ||(REVERSE_STATE_ABNORMAL == chReverseCutState)) + { + gstReversetData.chSwitchState = chReverseCutState; + } +} + +/* +* ָа忨״̬ +* ˵ const UINT8 chReverseCutState,״̬0xAA½ 0x55 0xFF쳣 wIndex +* ֵ +*/ +void SetReverseBoardState(const UINT8 chReverseCutState, const UINT16 wIndex) +{ + if ((REVERSE_STATE_NEW_SYSTEM == chReverseCutState) + || (REVERSE_STATE_OLD_SYSTEM == chReverseCutState) + ||(REVERSE_STATE_ABNORMAL == chReverseCutState)) + { + if(wIndex < REVERSE_BOARD_SUM_MAX) + { + gstReversetData.localReverBoardState[wIndex] = chReverseCutState; + } + } +} + +/* +* ȡп״̬ +* ˵ +* ֵ 0xAA½ 0x55 0xFF쳣 +*/ +UINT8 GetReverseSwitchState(void) +{ + UINT8 ret = gstReversetData.chSwitchState; + return ret; +} + +/* +* ȡָIDָа忨״̬ +* ˵ const UINT16 wBoardId,а忨Id +* ֵ 0xAA½ 0x55 0xFF쳣 +*/ +UINT8 GetReverseBoardState(const UINT16 wBoardId) +{ + UINT8 ret = REVERSE_STATE_ABNORMAL; + UINT16 jj = 0U;/**/ + for (jj = 0U; jj < gLocalReverseData.wRelateBoardNum; jj++) + { + if (wBoardId == gLocalReverseData.strRelateBoardBuf[jj].wReversBoardId) + { + ret = gstReversetData.localReverBoardState[jj]; + break; + } + } return ret; } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/ReverseCut/ReverseCutDataManage.h b/TSCP/src/APP/ciapp/ReverseCut/ReverseCutDataManage.h index 3e9445e..c672e8e 100644 --- a/TSCP/src/APP/ciapp/ReverseCut/ReverseCutDataManage.h +++ b/TSCP/src/APP/ciapp/ReverseCut/ReverseCutDataManage.h @@ -30,6 +30,15 @@ extern "C" { UINT16 wReverseState; /*״̬*/ }ReverseCutDataStru; + /*״̬ݽṹ*/ + typedef struct S_ReverseDataStruct + { + UINT8 chSwitchState; /*п״̬*/ + UINT8 localReverBoardState[REVERSE_BOARD_SUM_MAX];/*а忨״̬*/ + }LocalReverseBoardDataStru; + + + /*******************************ȫֱ*******************************/ extern ReverseCutDataStru gstReverseCutData[REVERSE_CUT_SUM_MAX]; /*嵹װݶ̬ݽṹ*/ extern UINT8 gTiocSystemMode; @@ -109,6 +118,34 @@ void SetReverseCutState(const UINT16 wReverseCutId, const UINT8 chReverseCutStat */ UINT8 ReverseCutDataManageInit(void); +/* +* õп״̬ +* ˵ const UINT8 chReverseCutState,״̬ 0xAA½ 0x55 0xFF쳣 +* ֵ +*/ +void SetReverseSwitchState(const UINT8 chReverseCutState); + +/* +* ָа忨״̬ +* ˵ const UINT8 chReverseCutState,״̬0xAA½ 0x55 0xFF쳣 wIndex +* ֵ +*/ +void SetReverseBoardState(const UINT8 chReverseCutState, const UINT16 wIndex); + +/* +* ȡп״̬ +* ˵ +* ֵ 0xAA½ 0x55 0xFF쳣 +*/ +UINT8 GetReverseSwitchState(void); + +/* +* ȡָIDָа忨״̬ +* ˵ const UINT16 wBoardId,а忨Id +* ֵ 0xAA½ 0x55 0xFF쳣 +*/ +UINT8 GetReverseBoardState(const UINT16 wBoardId); + #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/ReverseCut/ReverseCutDefine.h b/TSCP/src/APP/ciapp/ReverseCut/ReverseCutDefine.h index 0d4b91c..0758472 100644 --- a/TSCP/src/APP/ciapp/ReverseCut/ReverseCutDefine.h +++ b/TSCP/src/APP/ciapp/ReverseCut/ReverseCutDefine.h @@ -31,4 +31,12 @@ #define REVERSE_REASON_OC_COMM_ERR ((UINT8)0x01) /*ɵԭ OCͨŹ*/ #define REVERSE_REASON_IVOC_COMM_ERR ((UINT8)0x02) /*ɵԭ IVOCͨŹ*/ #define REVERSE_REASON_AXLE_COMM_ERR ((UINT8)0x04) /*ɵԭ ϵͳͨŹ*/ + +/*豸ֵ*/ +#define REVERSE_BOARD_SUM_MAX ((UINT16)42) /*嵹а忨ֵ*/ + +/*״̬*/ +#define REVERSE_STATE_NEW_SYSTEM ((UINT8)0xAAU) /*½ϵͳ*/ +#define REVERSE_STATE_OLD_SYSTEM ((UINT8)0x55U) /*ϵͳ*/ +#define REVERSE_STATE_ABNORMAL ((UINT8)0xFFU) /*ɼ쳣*/ #endif \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/Route/RouteConfigDataManage.c b/TSCP/src/APP/ciapp/Route/RouteConfigDataManage.c index c23eb69..6d1f390 100644 --- a/TSCP/src/APP/ciapp/Route/RouteConfigDataManage.c +++ b/TSCP/src/APP/ciapp/Route/RouteConfigDataManage.c @@ -3726,4 +3726,76 @@ UINT8 GetRouteConfigDirection(const UINT16 routeId) retVal = CI_ERROR; } return retVal; +} + +/* +* ȡ· +* ˵ const UINT16 wRouteId, ·ID +* ֵ · +* +* BY LYJ 20260602 +*/ +UINT8 GetRouteConnectType(const UINT16 wRouteId) +{ + UINT8 chRetVal = 0U; + UINT16 bufIndex = 0U; + bufIndex = GetRouteConfigBufIndex(wRouteId); /*ȡ·±*/ + + if (ROUTE_SUM_MAX > bufIndex) + { + chRetVal = RouteConfigDataStru[bufIndex].chRouteConnectType; + } + else + { + /**/ + } + + return chRetVal; +} + +/* +* ȡ·ָεǰһ +* ˵ const UINT16 wRouteId, ·ID +* const UINT16 wPhySecId,ID +* ֵ ·ָεǰһ +* +* BY LYJ 20260603 +*/ +UINT16 GetRoutePhySecFrontPhyId(const UINT16 wRouteId, const UINT16 wPhySecId) +{ + UINT16 wFroutPhySecId = 0U; + UINT8 chRoutePhySum = 0U; + RoutePhysicalSectionStruct* pRoutePhyBuf = NULL; + UINT8 ii = 0U; + + chRoutePhySum = GetRoutePhysicalSectionSum(wRouteId); + pRoutePhyBuf = GetRouteSectionData(wRouteId); + if (NULL != pRoutePhyBuf) + { + for (ii = 0U;ii < chRoutePhySum;ii++) + { + if (pRoutePhyBuf[ii].PhysicalSectionId == wPhySecId) + { + if (0U < ii) + { + wFroutPhySecId = pRoutePhyBuf[ii - 1U].PhysicalSectionId; + } + else + { + /*·һߣ·ߣڱߴ*/ + } + break; + } + else + { + /**/ + } + } + } + else + { + /**/ + } + + return wFroutPhySecId; } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/Route/RouteConfigDataManage.h b/TSCP/src/APP/ciapp/Route/RouteConfigDataManage.h index 76ee4e4..1ec65ce 100644 --- a/TSCP/src/APP/ciapp/Route/RouteConfigDataManage.h +++ b/TSCP/src/APP/ciapp/Route/RouteConfigDataManage.h @@ -317,6 +317,7 @@ typedef struct S_RouteConfigDataStruct UINT8 cRouteRukuProperty; /*ǷΪ·0x55 ·0xaa ·*/ SideProtecGroupStru RouteSideProtecData;/*·*/ UINT8 chRouteCouplinkType; /*·ԣ0x55 ԣ0xaa δ*/ + UINT8 chRouteConnectType; /*·ԣ0x55 ԣ0xaa δ*/ }RouteConfigDataStruct; /*******************************ȫֱ*******************************/ @@ -1427,6 +1428,23 @@ UINT8 GetPhySecInRoutePosIndex(const UINT16 routeId, const UINT16 phySectionId); ** by LYJ 20260330 */ UINT8 GetRouteConfigDirection(const UINT16 routeId); +/* +* ȡ· +* ˵ const UINT16 wRouteId, ·ID +* ֵ · +* +* BY LYJ 20260602 +*/ +UINT8 GetRouteConnectType(const UINT16 wRouteId); +/* +* ȡ·ָεǰһ +* ˵ const UINT16 wRouteId, ·ID +* const UINT16 wPhySecId,ID +* ֵ ·ָεǰһ +* +* BY LYJ 20260603 +*/ +UINT16 GetRoutePhySecFrontPhyId(const UINT16 wRouteId, const UINT16 wPhySecId); #ifdef __cplusplus } diff --git a/TSCP/src/APP/ciapp/Route/RouteDataManage.c b/TSCP/src/APP/ciapp/Route/RouteDataManage.c index 52f5ef6..1b0f6a4 100644 --- a/TSCP/src/APP/ciapp/Route/RouteDataManage.c +++ b/TSCP/src/APP/ciapp/Route/RouteDataManage.c @@ -6192,4 +6192,54 @@ UINT32 GetRouteIdleCycNum(const UINT16 routeId) } return reVal; +} + +/* +* ָ·߽־ +* ˵const UINT16 routeId õĽ·ID +* const UINT8 setFlag ñ־ +* ֵ +* Created lyj 2026.06.03 +*/ +void SetRouteConnectReleaseFlag(const UINT16 routeId, const UINT8 setFlag) +{ + UINT16 bufIndex = 0U; /*±*/ + bufIndex = GetRouteConfigBufIndex(routeId); /*ȡ·±*/ + if (ROUTE_SUM_MAX > bufIndex) + { + if ((ROUTE_CONNECT_RELEASE_YES == setFlag) || (ROUTE_CONNECT_RELEASE_NO == setFlag)) + { + RouteDataStru[bufIndex].chRouteConnReleaseFlag = setFlag; + } + else + { + /**/ + } + } + else + { + /**/ + } +} +/* +* ȡָ·߽־ +* ˵const UINT16 routeId ·ID +* ֵ·߽־ +* Created lyj 2026.06.03 +*/ +UINT8 GetRouteConnectReleaseFlag(const UINT16 routeId) +{ + UINT16 bufIndex = 0U; /*±*/ + UINT8 chRetVal = ROUTE_CONNECT_RELEASE_NO; + bufIndex = GetRouteConfigBufIndex(routeId); /*ȡ·±*/ + if (ROUTE_SUM_MAX > bufIndex) + { + chRetVal = RouteDataStru[bufIndex].chRouteConnReleaseFlag; + } + else + { + /**/ + } + + return chRetVal; } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/Route/RouteDataManage.h b/TSCP/src/APP/ciapp/Route/RouteDataManage.h index 4db2edf..e43273f 100644 --- a/TSCP/src/APP/ciapp/Route/RouteDataManage.h +++ b/TSCP/src/APP/ciapp/Route/RouteDataManage.h @@ -113,6 +113,7 @@ typedef struct S_RouteDataStruct UINT8 chCouplinkSuccessFlag; /*·ҳɹ*/ UINT8 chCouplinkErrorFlag; /*·ʧ*/ UINT32 dwRouteIdleCycNum; /*·ʼں*/ + UINT8 chRouteConnReleaseFlag; /*·߽־*/ } RouteDataStruct; /*·̬ݽṹ-*/ @@ -1787,6 +1788,21 @@ void SetRouteStopensureFlagCC(const UINT16 routeId, const UINT8 stopensureFlag); * by cgh 20251210 */ UINT32 GetRouteIdleCycNum(const UINT16 routeId); +/* +* ָ·߽־ +* ˵const UINT16 routeId õĽ·ID +* const UINT8 setFlag ñ־ +* ֵ +* Created lyj 2026.06.03 +*/ +void SetRouteConnectReleaseFlag(const UINT16 routeId, const UINT8 setFlag); +/* +* ȡָ·߽־ +* ˵const UINT16 routeId ·ID +* ֵ·߽־ +* Created lyj 2026.06.03 +*/ +UINT8 GetRouteConnectReleaseFlag(const UINT16 routeId); #ifdef __cplusplus } diff --git a/TSCP/src/APP/ciapp/Route/RouteDefine.h b/TSCP/src/APP/ciapp/Route/RouteDefine.h index 3720948..94922e3 100644 --- a/TSCP/src/APP/ciapp/Route/RouteDefine.h +++ b/TSCP/src/APP/ciapp/Route/RouteDefine.h @@ -100,6 +100,7 @@ #define ROUTE_TYPE_AUTO_TRIGGER ((UINT8)0x66) /*Զ·*/ #define ROUTE_TYPE_RUKU ((UINT8)0x77) /*·*/ #define ROUTE_TYPE_COUPLINK ((UINT8)0x88) /*ҽ·*/ +#define ROUTE_TYPE_CONNECT ((UINT8)0x99) /*߽·*/ /*·״̬*/ #define ROUTE_STATE_IDLE ((UINT8)0x01) /*·*/ @@ -401,5 +402,10 @@ #define SIDE_PROTECT_SWITCH_NUM_MAX ((UINT8)5) /**/ #define SIDE_PROTECT_PHYSEC_NUM_MAX ((UINT8)10) /**/ #define SIDE_PROTECT_NUM_MAX ((UINT8)10) /**/ + + +#define ROUTE_CONNECT_RELEASE_YES ((UINT8)0x55) /*·߽־Ч*/ +#define ROUTE_CONNECT_RELEASE_NO ((UINT8)0xaa) /*·߽־Ч*/ + #endif diff --git a/TSCP/src/APP/ciapp/Section/LogicSectionDataManage.c b/TSCP/src/APP/ciapp/Section/LogicSectionDataManage.c index d39455f..3525814 100644 --- a/TSCP/src/APP/ciapp/Section/LogicSectionDataManage.c +++ b/TSCP/src/APP/ciapp/Section/LogicSectionDataManage.c @@ -2812,7 +2812,7 @@ UINT8 GetLogSecResShareFlag(const UINT16 wLgcSecId) /*ش*/ funRetVal = CI_ERROR; } - return LOGIC_SECTION_RES_SHARE_YES; + return funRetVal; } /* diff --git a/TSCP/src/APP/ciapp/Section/SectionDefine.h b/TSCP/src/APP/ciapp/Section/SectionDefine.h index 6516f2b..336405b 100644 --- a/TSCP/src/APP/ciapp/Section/SectionDefine.h +++ b/TSCP/src/APP/ciapp/Section/SectionDefine.h @@ -18,7 +18,7 @@ #define PHYSICAL_SECTION_SUM_MAX ((UINT16)1000) /*ֵ*/ #define AXIS_SECTION_SUM_MAX ((UINT16)2000) /*ֵ*/ #define AXIS_INCLUDE_LOG_SUM_MAX ((UINT16)50) /*߼ֵ*/ -#define LOGIC_SECTION_SUM_MAX ((UINT16)2000) /*߼ֵ*/ +#define LOGIC_SECTION_SUM_MAX ((UINT16)3000) /*߼ֵ*/ #define PHYSICAL_INCLUDE_AXIS_SUM_MAX ((UINT16)10) /*ΰֵ*/ #define AXIS_INCLUDE_SWITCH_SUM_MAX ((UINT16)4) /*ΰĵֵ*/ #define AXIS_INCLUDE_LINK_SUM_MAX ((UINT16)5) /*ΰLINKֵ*/ diff --git a/TSCP/src/APP/ciapp/Signal/SignalConfigDataManage.c b/TSCP/src/APP/ciapp/Signal/SignalConfigDataManage.c index a193dab..fe397c1 100644 --- a/TSCP/src/APP/ciapp/Signal/SignalConfigDataManage.c +++ b/TSCP/src/APP/ciapp/Signal/SignalConfigDataManage.c @@ -1888,4 +1888,93 @@ UINT16 GetSignalOutFirstLogSec(const UINT16 signalId) } } return retVal; -} \ No newline at end of file +} + +/* +* ȡָIDźŻ1˿̵IDʹã +* ˵ const UINT16 signalId, źŻID +* ֵ 0: ȡʧ +* >0: ź1˿̵ID +*/ +UINT16 GetSignalFirstDsDrvRelayId(const UINT16 signalId) +{ + UINT16 bufIndex = 0U; /*±*/ + UINT16 retVal = CI_ERROR; + + bufIndex = GetSignalConfigBufIndex(signalId); /*ȡ±*/ + if (SIGNAL_SUM_MAX > bufIndex) + { + retVal = SignalConfigDataStru[bufIndex].wFirstDsDrvRelayId; + } + else + { + retVal = CI_ERROR; + } + return retVal; +} +/* +* ȡָIDźŻ̵IDʹã +* ˵ const UINT16 signalId, źŻID +* ֵ 0: ȡʧ +* >0: ź̵ID +*/ +UINT16 GetSignalMainDrvRelayId(const UINT16 signalId) +{ + UINT16 bufIndex = 0U; /*±*/ + UINT16 retVal = CI_ERROR; + + bufIndex = GetSignalConfigBufIndex(signalId); /*ȡ±*/ + if (SIGNAL_SUM_MAX > bufIndex) + { + retVal = SignalConfigDataStru[bufIndex].wMainDrvRelayId; + } + else + { + retVal = CI_ERROR; + } + return retVal; +} +/* +* ȡָIDźŻο̵IDʹã +* ˵ const UINT16 signalId, źŻID +* ֵ 0: ȡʧ +* >0: źŴο̵ID +*/ +UINT16 GetSignalAckDrvRelayId(const UINT16 signalId) +{ + UINT16 bufIndex = 0U; /*±*/ + UINT16 retVal = CI_ERROR; + + bufIndex = GetSignalConfigBufIndex(signalId); /*ȡ±*/ + if (SIGNAL_SUM_MAX > bufIndex) + { + retVal = SignalConfigDataStru[bufIndex].wAckDrvRelayId; + } + else + { + retVal = CI_ERROR; + } + return retVal; +} +/* +* ȡָIDźŻ̵IDʹã +* ˵ const UINT16 signalId, źŻID +* ֵ 0: ȡʧ +* >0: źŸ̵ID +*/ +UINT16 GetSignalCMainDrvRelayId(const UINT16 signalId) +{ + UINT16 bufIndex = 0U; /*±*/ + UINT16 retVal = CI_ERROR; + + bufIndex = GetSignalConfigBufIndex(signalId); /*ȡ±*/ + if (SIGNAL_SUM_MAX > bufIndex) + { + retVal = SignalConfigDataStru[bufIndex].wCMainDrvRelayId; + } + else + { + retVal = CI_ERROR; + } + return retVal; +} diff --git a/TSCP/src/APP/ciapp/Signal/SignalConfigDataManage.h b/TSCP/src/APP/ciapp/Signal/SignalConfigDataManage.h index 80a0591..71585b7 100644 --- a/TSCP/src/APP/ciapp/Signal/SignalConfigDataManage.h +++ b/TSCP/src/APP/ciapp/Signal/SignalConfigDataManage.h @@ -102,6 +102,11 @@ typedef struct S_SignalConfigDataStruct UINT16 LxDrvRelayId; /*гź̵ID(ֶ-ʹ)*/ UINT16 YxDrvRelayId; /*ź̵ID(ֶ-ʹ)*/ UINT16 DxDrvRelayId; /*ź̵ID(ֶ-ʹ)*/ + UINT16 wFirstDsDrvRelayId; /*1˿̵ID(ֶ-ʹ)*/ + UINT16 wMainDrvRelayId; /*źŻ̵ID(ֶ-ʹ)*/ + UINT16 wAckDrvRelayId; /*źŻο̵ID(ֶ-ʹ)*/ + UINT16 wCMainDrvRelayId; /*źŻ̵ID(ֶ-ʹ)*/ + } SignalConfigDataStruct; typedef struct S_OC_SignalConfigDataStruct @@ -744,6 +749,34 @@ UINT16 GetSignalDxDrvRelayId(const UINT16 signalId); * >0: ߼ID */ UINT16 GetSignalOutFirstLogSec(const UINT16 signalId); +/* +* ȡָIDźŻ1˿̵IDʹã +* ˵ const UINT16 signalId, źŻID +* ֵ 0: ȡʧ +* >0: ź1˿̵ID +*/ +UINT16 GetSignalFirstDsDrvRelayId(const UINT16 signalId); +/* +* ȡָIDźŻ̵IDʹã +* ˵ const UINT16 signalId, źŻID +* ֵ 0: ȡʧ +* >0: ź̵ID +*/ +UINT16 GetSignalMainDrvRelayId(const UINT16 signalId); +/* +* ȡָIDźŻο̵IDʹã +* ˵ const UINT16 signalId, źŻID +* ֵ 0: ȡʧ +* >0: źŴο̵ID +*/ +UINT16 GetSignalAckDrvRelayId(const UINT16 signalId); +/* +* ȡָIDźŻ̵IDʹã +* ˵ const UINT16 signalId, źŻID +* ֵ 0: ȡʧ +* >0: źŸ̵ID +*/ +UINT16 GetSignalCMainDrvRelayId(const UINT16 signalId); #ifdef __cplusplus } diff --git a/TSCP/src/APP/ciapp/Signal/SignalDataManage.c b/TSCP/src/APP/ciapp/Signal/SignalDataManage.c index 6af206e..1971e01 100644 --- a/TSCP/src/APP/ciapp/Signal/SignalDataManage.c +++ b/TSCP/src/APP/ciapp/Signal/SignalDataManage.c @@ -5791,4 +5791,71 @@ void SetSignalCrossStateCC(const UINT16 signalId, const UINT8 signalCrossState, { /**/ } +} + +/* +* ȡؼ̵״̬ +* ˵const UINT16 wCMainlRralyId, ̵ID +* const UINT16 wSignalId, źŻID +* ֵ״̬ +* Created LYJ 2026.6.2 +*/ +UINT8 GetCMainRelayDriveState(const UINT16 wCMainlRralyId, const UINT16 wSignalId) +{ + UINT8 chRet = CI_ERROR; + UINT16 wSigOutPhyId = 0U; + UINT16 wSigInPhyId = 0U; + UINT16 wLockRouteId = 0U; + UINT8 chOccState = 0U; + UINT8 chLockState = 0U; + UINT8 chFengSuoState = 0U; + UINT8 chJLockState = 0U; + UINT16 wQXzhaochaRelay = 0U; + UINT8 chColleState = 0U; + + if ((0U < wCMainlRralyId) && (RELAY_SUM_MAX > wCMainlRralyId)) + { + wSigOutPhyId = GetSignalOutFirstPhySecId(wSignalId); /*źŻⷽ*/ + chOccState = GetPhySecCurMergeState(wSigOutPhyId); /*ռ״̬*/ + chLockState = GetPhySecLockState(wSigOutPhyId); /*״̬*/ + chFengSuoState = GetPhySecFLockState(wSigOutPhyId); /*״̬*/ + chJLockState = GetPhySecJumpLockState(wSigOutPhyId); /*Ծ״̬*/ + /*źŻⷽΣδգδռãδ*/ + if ((SECTION_OCCUPY_NO == chOccState) && (PHYSICAL_SECTION_LOCK_NO == chLockState) + && (PHYSICAL_SECTION_FLOCK_NO == chFengSuoState) && (PHYSICAL_SECTION_JUMP_LOCK_NO == chJLockState)) + { + wSigInPhyId = GetSignalInFirstPhySecId(wSignalId,0U); /*źŻڷ*/ + wLockRouteId = GetPhySecRLockBelongRouteId(wSigInPhyId); /*·*/ + wQXzhaochaRelay = GetRouteCancleZhaoChaRelayId(wLockRouteId); /*·õȡղ̵*/ + + /*źŻΪʼ˵Ľ· õȡղ̵*/ + if ((0U < wQXzhaochaRelay) && (RELAY_SUM_MAX > wQXzhaochaRelay)) + { + chColleState = GetRelayCollState(wQXzhaochaRelay); + if (RELAY_STATE_DOWN == chColleState) + { + chRet = CI_SUCCESS; + } + else + { + /**/ + } + } + else + { + /**/ + } + } + else + { + /**/ + } + + } + else + { + /**/ + } + + return chRet; } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/Signal/SignalDataManage.h b/TSCP/src/APP/ciapp/Signal/SignalDataManage.h index e426e20..7a8f931 100644 --- a/TSCP/src/APP/ciapp/Signal/SignalDataManage.h +++ b/TSCP/src/APP/ciapp/Signal/SignalDataManage.h @@ -1248,6 +1248,14 @@ UINT8 GetSignalCrossTacsTrainIdCC(const UINT16 signalId); * Created By LQ 2025.11.05 */ void SetSignalCrossStateCC(const UINT16 signalId, const UINT8 signalCrossState, const UINT8 wTrainId); +/* +* ȡؼ̵״̬ +* ˵const UINT16 wCMainlRralyId, źŻID +* const UINT16 wSignalId, źŻID +* ֵ״̬ +* Created LYJ 2026.6.2 +*/ +UINT8 GetCMainRelayDriveState(const UINT16 wCMainlRralyId, const UINT16 wSignalId); #ifdef __cplusplus } diff --git a/TSCP/src/APP/ciapp/Switch/SwitchConfigDataManage.c b/TSCP/src/APP/ciapp/Switch/SwitchConfigDataManage.c index 171097d..f8e1f07 100644 --- a/TSCP/src/APP/ciapp/Switch/SwitchConfigDataManage.c +++ b/TSCP/src/APP/ciapp/Switch/SwitchConfigDataManage.c @@ -46,7 +46,7 @@ UINT16 GetSwitchCurSum(void) UINT16 retVal = 0u; if (SwitchCurSum >= (INT16)SWITCH_SUM_MAX) { - retVal = SWITCH_SUM_MAX; + retVal = SWITCH_SUM_MAX; } else if (SwitchCurSum < 0) { @@ -227,31 +227,6 @@ UINT16 GetSwitchDbRelayId(const UINT16 switchId) return retVal; } -/* -* ȡָIDӰģʽλʾ̵ID -* ˵ const UINT16 switchId, ID -* ֵ 0: ȡʧ -* >0: λʾ̵ID -*/ -UINT16 GetSwitchShadowDbRelayId(const UINT16 switchId) -{ - UINT16 bufIndex = 0u; /*±*/ - UINT16 retVal = CI_ERROR; - - bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ - - if (bufIndex < SWITCH_SUM_MAX) - { - retVal = SwitchConfigDataStru[bufIndex].wShadowDbRelayId; - } - else - { - retVal = CI_ERROR; - } - return retVal; -} - - /* * ȡָIDλʾ̵ID * ˵ const UINT16 switchId, ID @@ -276,31 +251,6 @@ UINT16 GetSwitchFbRelayId(const UINT16 switchId) return retVal; } -/* -* ȡָIDӰģʽλʾ̵ID -* ˵ const UINT16 switchId, ID -* ֵ 0: ȡʧ -* >0: λʾ̵ID -*/ -UINT16 GetSwitchShadowFbRelayId(const UINT16 switchId) -{ - UINT16 bufIndex = 0u; /*±*/ - UINT16 retVal = CI_ERROR; - - bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ - - if (bufIndex < SWITCH_SUM_MAX) - { - retVal = SwitchConfigDataStru[bufIndex].wShadowFbRelayId; - } - else - { - retVal = CI_ERROR; - } - return retVal; -} - - /* * ȡָIDʲټ̵ID * ˵ const UINT16 switchId, ID @@ -1762,3 +1712,172 @@ UINT16 GetSwitchThisOcOtherSwitchId(UINT16 switchId, UINT8 ocId) return retVal; } +/* +* ȡָIDǷ߱ɼ +* ˵const UINT16 switchId, ID +* ֵ REDUN_COLL_YES: ߱ɼ +* REDUN_COLL_NO: ߱ɼ +* CI_ERROR: ID +*/ +UINT8 GetSwitchRedunCollCfg(const UINT16 switchId) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT8 retVal = CI_ERROR; + + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if (SWITCH_SUM_MAX > bufIndex) + { + retVal = SwitchConfigDataStru[bufIndex].RedunCollCfg; + } + else + { + retVal = CI_ERROR; + } + return retVal; +} + +/* +* ȡָIDʾDBJ1̵ID +* ˵const UINT16 switchId, ID +* ֵ 0: ID +* ̵ID +*/ +UINT16 GetSwitchRedunDBJ1RelayId(const UINT16 switchId, const UINT16 ocIndex) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT16 retVal = 0u; + + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if ((SWITCH_SUM_MAX > bufIndex) && (SWITCH_REDUN_COLL_MAX > ocIndex)) + { + retVal = SwitchConfigDataStru[bufIndex].RedunCollRelayStru[ocIndex].wRedunDb1RelayId; + } + else + { + retVal = 0u; + } + return retVal; +} + +/* +* ȡָIDʾDBJ2̵ID +* ˵const UINT16 switchId, ID +* ֵ 0: ID +* ̵ID +*/ +UINT16 GetSwitchRedunDBJ2RelayId(const UINT16 switchId, const UINT16 ocIndex) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT16 retVal = 0u; + + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if ((SWITCH_SUM_MAX > bufIndex) && (SWITCH_REDUN_COLL_MAX > ocIndex)) + { + retVal = SwitchConfigDataStru[bufIndex].RedunCollRelayStru[ocIndex].wRedunDb2RelayId; + } + else + { + retVal = 0u; + } + return retVal; +} + +/* +* ȡָIDʾFBJ1̵ID +* ˵const UINT16 switchId, ID +* ֵ 0: ID +* ̵ID +*/ +UINT16 GetSwitchRedunFBJ1RelayId(const UINT16 switchId, const UINT16 ocIndex) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT16 retVal = 0u; + + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if ((SWITCH_SUM_MAX > bufIndex) && (SWITCH_REDUN_COLL_MAX > ocIndex)) + { + retVal = SwitchConfigDataStru[bufIndex].RedunCollRelayStru[ocIndex].wRedunFb1RelayId; + } + else + { + retVal = 0u; + } + return retVal; +} + +/* +* ȡָIDʾFBJ2̵ID +* ˵const UINT16 switchId, ID +* ֵ 0: ID +* ̵ID +*/ +UINT16 GetSwitchRedunFBJ2RelayId(const UINT16 switchId, const UINT16 ocIndex) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT16 retVal = 0u; + + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if ((SWITCH_SUM_MAX > bufIndex) && (SWITCH_REDUN_COLL_MAX > ocIndex)) + { + retVal = SwitchConfigDataStru[bufIndex].RedunCollRelayStru[ocIndex].wRedunFb2RelayId; + } + else + { + retVal = 0u; + } + return retVal; +} + +/* +* õа忨 +* ˵ const UINT16 switchId, IDUINT16 wBoardIdа忨Id +* ֵ CI_SUCCESS CI_ERROR +*/ +UINT8 SetSwitchRelateReverseBoardId(const UINT16 switchId, UINT16 wBoardId) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT8 chRet = CI_ERROR; + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if (bufIndex < SWITCH_SUM_MAX) + { + SwitchConfigDataStru[bufIndex].wReverseBoardId = wBoardId; + chRet = CI_SUCCESS; + } + else + { + ; + } + return chRet; +} + +/* +* ȡа忨id +* ˵ const UINT16 switchId, ID +* ֵ UINT16_MAX: ȡʧ +* 0: ޵ +* [1,65534]а忨Id +*/ +UINT16 GetSwitchRelateReverseBoardId(const UINT16 switchId) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT16 retVal = UINT16_MAX; + + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if (bufIndex < SWITCH_SUM_MAX) + { + retVal = SwitchConfigDataStru[bufIndex].wReverseBoardId; + } + else + { + retVal = UINT16_MAX; + } + return retVal; +} + diff --git a/TSCP/src/APP/ciapp/Switch/SwitchConfigDataManage.h b/TSCP/src/APP/ciapp/Switch/SwitchConfigDataManage.h index 0d9219b..2bb12c3 100644 --- a/TSCP/src/APP/ciapp/Switch/SwitchConfigDataManage.h +++ b/TSCP/src/APP/ciapp/Switch/SwitchConfigDataManage.h @@ -33,6 +33,15 @@ typedef struct S_ZzjPowerConfigDataStruct UINT16 ZzjFanweiPower2; /*ת޻J1_2*/ }ZzjPowerConfigDataStruct; +typedef struct S_SwitchRedunCollCfgDataStru +{ + UINT16 wRedunDb1RelayId; /*10ɼ̵1ID*/ + UINT16 wRedunDb2RelayId; /*10ɼ̵2ID*/ + UINT16 wRedunFb1RelayId; /*10ɼ̵1ID*/ + UINT16 wRedunFb2RelayId; /*10ɼ̵2ID*/ +} +SwitchRedunCollCfgDataStru; + typedef struct S_SwitchBelongOCConfigDataStr/*OC*/ { UINT8 OcId; /*ǰOC*/ @@ -59,8 +68,6 @@ typedef struct S_SwitchConfigDataStruct UINT16 FbRelayId; /*̵ID (ֶ) ʾ̵ID*/ UINT16 YcRelayId; /*ʲټ̵ID (ֶ) λ̵ID*/ UINT16 DcRelayId; /*ټ̵ID (ֶ) λ̵ID*/ - UINT16 wShadowDbRelayId; /*Ӱģʽ̵ID (ֶ) ˹*/ - UINT16 wShadowFbRelayId; /*Ӱģʽ̵ID (ֶ) ˹*/ /*Ϊؼ̵*/ UINT16 GZJId; /*ϼ̵ID (ֶ)*/ UINT16 JTYJaId; /*ֳ״̵̬ID (ֶ)*/ @@ -111,7 +118,9 @@ typedef struct S_SwitchConfigDataStruct UINT8 chSwitchBelongOcNum;/*OC*/ SwitchBelongOCConfigDataStr belongOCConfigData[SWITCH_BELONG_OC_MAX];/*OC*/ - + UINT8 RedunCollCfg; /*Ƿ߱ɼ*/ + SwitchRedunCollCfgDataStru RedunCollRelayStru[SWITCH_REDUN_COLL_MAX]; + UINT16 wReverseBoardId; /*а忨ID*/ } SwitchConfigDataStruct; @@ -543,22 +552,6 @@ UINT16 GetSwitchProtectSwitchNum(const UINT16 wSwitchId); */ UINT16* GetSwitchProtectSwitchIdBuf(const UINT16 wSwitchId); -/* -* ȡָIDӰģʽλʾ̵ID -* ˵ const UINT16 switchId, ID -* ֵ 0: ȡʧ -* >0: λʾ̵ID -*/ -UINT16 GetSwitchShadowFbRelayId(const UINT16 switchId); - -/* -* ȡָIDӰģʽλʾ̵ID -* ˵ const UINT16 switchId, ID -* ֵ 0: ȡʧ -* >0: λʾ̵ID -*/ -UINT16 GetSwitchShadowDbRelayId(const UINT16 switchId); - /** * @brief ȡ * @param const UINT16 switchId ID @@ -684,6 +677,63 @@ UINT8 GetSwitchWhetherBelongThisOc(UINT16 switchId, UINT8 ocId); * Add by mpt 20260404 */ UINT16 GetSwitchThisOcOtherSwitchId(UINT16 switchId, UINT8 ocId); + +/* +* ȡָIDǷ߱ɼ +* ˵const UINT16 switchId, ID +* ֵ REDUN_COLL_YES: ߱ɼ +* REDUN_COLL_NO: ߱ɼ +* CI_ERROR: ID +*/ +UINT8 GetSwitchRedunCollCfg(const UINT16 switchId); + +/* +* ȡָIDʾDBJ1̵ID +* ˵const UINT16 switchId, ID +* ֵ 0: ID +* ̵ID +*/ +UINT16 GetSwitchRedunDBJ1RelayId(const UINT16 switchId, const UINT16 ocIndex); + +/* +* ȡָIDʾDBJ2̵ID +* ˵const UINT16 switchId, ID +* ֵ 0: ID +* ̵ID +*/ +UINT16 GetSwitchRedunDBJ2RelayId(const UINT16 switchId, const UINT16 ocIndex); + +/* +* ȡָIDʾFBJ1̵ID +* ˵const UINT16 switchId, ID +* ֵ 0: ID +* ̵ID +*/ +UINT16 GetSwitchRedunFBJ1RelayId(const UINT16 switchId, const UINT16 ocIndex); + +/* +* ȡָIDʾFBJ2̵ID +* ˵const UINT16 switchId, ID +* ֵ 0: ID +* ̵ID +*/ +UINT16 GetSwitchRedunFBJ2RelayId(const UINT16 switchId, const UINT16 ocIndex); + +/* +* õа忨 +* ˵ const UINT16 switchId, IDUINT16 wBoardIdа忨Id +* ֵ CI_SUCCESS CI_ERROR +*/ +UINT8 SetSwitchRelateReverseBoardId(const UINT16 switchId, UINT16 wBoardId); +/* +* ȡа忨id +* ˵ const UINT16 switchId, ID +* ֵ UINT16_MAX: ȡʧ +* 0: ޵ +* [1,65534]а忨Id +*/ +UINT16 GetSwitchRelateReverseBoardId(const UINT16 switchId); + #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/Switch/SwitchDataManage.c b/TSCP/src/APP/ciapp/Switch/SwitchDataManage.c index 4523ebe..4e412ad 100644 --- a/TSCP/src/APP/ciapp/Switch/SwitchDataManage.c +++ b/TSCP/src/APP/ciapp/Switch/SwitchDataManage.c @@ -2876,7 +2876,7 @@ void SetHlhtCiSwitchPlockStatus(const UINT16 switchId, const UINT8 lockStatus) if (SWITCH_SUM_MAX > bufIndex) { - if ((SWITCH_LOCK_STATUS_PROTECT == lockStatus) || (SWITCH_LOCK_STATUS_NO == lockStatus)) + if ((SWITCH_LOCK_STATUS_PROTECT == lockStatus) || (SWITCH_LOCK_STATUS_NO == lockStatus) || (SWITCH_LOCK_STATUS_DAP == lockStatus)) { SwitchDataStru[bufIndex].LockStatus = lockStatus; } @@ -3650,3 +3650,302 @@ void SetSwitchThisOcFindCmdCycNum(const UINT16 switchId, const UINT8 ocId, const } } +/* +* жϻʼں +* ˵ const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* UINT32 cycNum ں +* ֵ void +* add by wyd 20260604 +*/ +void SetSwitchRedunJudgHunXianStCyc(const UINT16 switchId, const UINT8 chOCIndex, const UINT32 cycNum) +{ + UINT16 bufIndex = 0u; /*±*/ + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if ((SWITCH_SUM_MAX > bufIndex) && (SWITCH_REDUN_COLL_MAX > chOCIndex)) + { + SwitchDataStru[bufIndex].RedunCollData[chOCIndex].dwRedunJudgHunXianStCyc = cycNum; + } + else + { + /*nothing*/ + } +} + +/* +* ȡжϻʼں +* ˵const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* ֵ ں +* add by wyd 20260604 +*/ +UINT32 GetSwitchRedunJudgHunXianStCyc(const UINT16 switchId, const UINT8 chOCIndex) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT32 cycNum = 0u; + + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if ((SWITCH_SUM_MAX > bufIndex) && (SWITCH_REDUN_COLL_MAX > chOCIndex)) + { + cycNum = SwitchDataStru[bufIndex].RedunCollData[chOCIndex].dwRedunJudgHunXianStCyc; + } + else + { + /*nothing*/ + } + + return cycNum; +} + +/* +* ʵʻʼں +* ˵ const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* UINT32 cycNum ں +* ֵ void +* add by wyd 20260604 +*/ +void SetSwitchRedunRealHunXianStCyc(const UINT16 switchId, const UINT8 chOCIndex, const UINT32 cycNum) +{ + UINT16 bufIndex = 0u; /*±*/ + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if ((SWITCH_SUM_MAX > bufIndex) && (SWITCH_REDUN_COLL_MAX > chOCIndex)) + { + SwitchDataStru[bufIndex].RedunCollData[chOCIndex].dwRedunRealHunXianStCyc = cycNum; + } + else + { + /*nothing*/ + } +} + +/* +* ȡʵʻʼں +* ˵const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* ֵ ں +* add by wyd 20260604 +*/ +UINT32 GetSwitchRedunRealHunXianStCyc(const UINT16 switchId, const UINT8 chOCIndex) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT32 cycNum = 0u; + + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if ((SWITCH_SUM_MAX > bufIndex) && (SWITCH_REDUN_COLL_MAX > chOCIndex)) + { + cycNum = SwitchDataStru[bufIndex].RedunCollData[chOCIndex].dwRedunRealHunXianStCyc; + } + else + { + /*nothing*/ + } + + return cycNum; +} + +/* +* û߻ָ״̬ +* ˵ const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* const UINT8 cHunXianStt ߻ָ״̬ +* REDUN_HX_RECOV_1100REDUN_HX_RECOV_1010REDUN_HX_RECOV_0011 +* 0 +* ֵ void +* add by wyd 20260604 +*/ +void SetSwitchRedunHunXianRecovStt(const UINT16 switchId, const UINT8 chOCIndex, const UINT8 cHunXianStt) +{ + UINT16 bufIndex = 0u; /*±*/ + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if ((SWITCH_SUM_MAX > bufIndex) && (SWITCH_REDUN_COLL_MAX > chOCIndex)) + { + if ((REDUN_HX_RECOV_1100 == cHunXianStt) || (REDUN_HX_RECOV_1010 == cHunXianStt) + || (REDUN_HX_RECOV_0011 == cHunXianStt) || (REDUN_HX_RECOV_ALL == cHunXianStt)) + { + /*¼߻ָɼ*/ + SwitchDataStru[bufIndex].RedunCollData[chOCIndex].cHunXianRecovStt |= cHunXianStt; + } + else + { + /*ջ߻ָɼ*/ + SwitchDataStru[bufIndex].RedunCollData[chOCIndex].cHunXianRecovStt = 0u; + } + } + else + { + /*nothing*/ + } +} + +/* +* ȡ߻ָ״̬ +* ˵const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* ֵ ߻ָ״̬ +* add by wyd 20260604 +*/ +UINT8 GetSwitchRedunHunXianRecovStt(const UINT16 switchId, const UINT8 chOCIndex) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT8 RtnValue = 0u; + + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if ((SWITCH_SUM_MAX > bufIndex) && (SWITCH_REDUN_COLL_MAX > chOCIndex)) + { + RtnValue = SwitchDataStru[bufIndex].RedunCollData[chOCIndex].cHunXianRecovStt; + } + else + { + /*nothing*/ + } + + return RtnValue; +} + +/* +* òɼʼں +* ˵ const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* UINT32 cycNum ں +* ֵ void +* add by wyd 20260604 +*/ +void SetSwitchRedunFaultStCyc(const UINT16 switchId, const UINT8 chOCIndex, const UINT32 cycNum) +{ + UINT16 bufIndex = 0u; /*±*/ + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if ((SWITCH_SUM_MAX > bufIndex) && (SWITCH_REDUN_COLL_MAX > chOCIndex)) + { + SwitchDataStru[bufIndex].RedunCollData[chOCIndex].dwRedunFaultStCyc = cycNum; + } + else + { + /*nothing*/ + } +} + +/* +* ȡɼʼں +* ˵const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* ֵ ں +* add by wyd 20260604 +*/ +UINT32 GetSwitchRedunFaultStCyc(const UINT16 switchId, const UINT8 chOCIndex) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT32 cycNum = 0u; + + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if ((SWITCH_SUM_MAX > bufIndex) && (SWITCH_REDUN_COLL_MAX > chOCIndex)) + { + cycNum = SwitchDataStru[bufIndex].RedunCollData[chOCIndex].dwRedunFaultStCyc; + } + else + { + /*nothing*/ + } + + return cycNum; +} + +/* +* ɼ״̬ +* ˵ const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* UINT32 cycNum ں +* ֵ void +* add by wyd 20260604 +*/ +void SetSwitchRedunCombineStt(const UINT16 switchId, const UINT8 chOCIndex, const UINT8 setValue) +{ + UINT16 bufIndex = 0u; /*±*/ + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if ((SWITCH_SUM_MAX > bufIndex) && (SWITCH_REDUN_COLL_MAX > chOCIndex)) + { + SwitchDataStru[bufIndex].RedunCollData[chOCIndex].cCombineStt = setValue; + } + else + { + /*nothing*/ + } +} + +/* +* ת޻ɼλ +* ˵ const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* UINT32 cycNum ں +* ֵ void +* add by wyd 20260604 +*/ +void SetSwitchMainCollPos(const UINT16 switchId, const UINT8 setValue) +{ + UINT16 bufIndex = 0u; /*±*/ + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if (SWITCH_SUM_MAX > bufIndex) + { + SwitchDataStru[bufIndex].cMainOcCollPos = setValue; + } + else + { + /*nothing*/ + } +} + +/* +* ɼɼλ +* ˵ const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* UINT32 cycNum ں +* ֵ void +* add by wyd 20260604 +*/ +void SetSwitchRedunCollPos(const UINT16 switchId, const UINT8 chOCIndex, const UINT8 setValue) +{ + UINT16 bufIndex = 0u; /*±*/ + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if ((SWITCH_SUM_MAX > bufIndex) && (SWITCH_REDUN_COLL_MAX > chOCIndex)) + { + SwitchDataStru[bufIndex].RedunCollData[chOCIndex].cCollPos = setValue; + } + else + { + /*nothing*/ + } +} + +/* +* ɼڻ״̬ +* ˵ const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* UINT32 cycNum ں +* ֵ void +* add by wyd 20260604 +*/ +void SetSwitchRedunCurrHunXianStt(const UINT16 switchId, const UINT8 chOCIndex, const UINT8 setValue) +{ + UINT16 bufIndex = 0u; /*±*/ + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if ((SWITCH_SUM_MAX > bufIndex) && (SWITCH_REDUN_COLL_MAX > chOCIndex)) + { + SwitchDataStru[bufIndex].RedunCollData[chOCIndex].cCurrHunxianStt = setValue; + } + else + { + /*nothing*/ + } +} \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/Switch/SwitchDataManage.h b/TSCP/src/APP/ciapp/Switch/SwitchDataManage.h index 68b0d2e..ce86761 100644 --- a/TSCP/src/APP/ciapp/Switch/SwitchDataManage.h +++ b/TSCP/src/APP/ciapp/Switch/SwitchDataManage.h @@ -27,6 +27,21 @@ #ifdef __cplusplus extern "C" { #endif + +typedef struct S_SwitchRedunCollStruct +{ + UINT32 dwRedunJudgHunXianStCyc; /*10ɼжϻʼںţƶлá + ʱΪɼߣʱΪʱδɼߣɼƶ*/ + UINT32 dwRedunRealHunXianStCyc; /*10ɼʵʻʼںţ߻ָá + ʱΪɼߣʱΪδɼ*/ + UINT8 cHunXianRecovStt; /*10ɼ߻ָ״̬ + bit0=1ɼ1100bit1=1ɼ1010bi2=1ɼ0011 + bit012Ϊ1ʾδ*/ + UINT32 dwRedunFaultStCyc; /*10ɼɼϣĿʼں*/ + UINT8 cCombineStt; /*ӡã̵ɼ*/ + UINT8 cCollPos; /*ӡãɼλ*/ + UINT8 cCurrHunxianStt; /*ӡãڻ״̬*/ +}SwitchRedunCollStruct; /*ݽṹ*/ typedef struct S_SwitchOcDataStruct @@ -103,8 +118,8 @@ typedef struct S_SwitchDataStruct UINT8 PLockedAxisSecNum;/*յļidֻڱļʹ*/ UINT16 PLockedAxisSecIdArr[SWITCH_MAX_PROTECT_LOCKED_NUM];/*յļid飬ֻڱļʹ*/ - - + SwitchRedunCollStruct RedunCollData[SWITCH_REDUN_COLL_MAX]; + UINT8 cMainOcCollPos; /*ӡãת޻λ*/ } SwitchDataStruct; /*ݽṹ*/ @@ -927,6 +942,125 @@ UINT32 GetSwitchThisOcFindCmdCycNum(const UINT16 switchId, const UINT8 ocId); * add mpt by 20260402 */ void SetSwitchThisOcFindCmdCycNum(const UINT16 switchId, const UINT8 ocId, const UINT32 cycNum); + +/* +* жϻʼں +* ˵ const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* UINT32 cycNum ں +* ֵ void +* add by wyd 20260604 +*/ +void SetSwitchRedunJudgHunXianStCyc(const UINT16 switchId, const UINT8 chOCIndex, const UINT32 cycNum); + +/* +* ȡжϻʼں +* ˵const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* ֵ ں +* add by wyd 20260604 +*/ +UINT32 GetSwitchRedunJudgHunXianStCyc(const UINT16 switchId, const UINT8 chOCIndex); + +/* +* ʵʻʼں +* ˵ const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* UINT32 cycNum ں +* ֵ void +* add by wyd 20260604 +*/ +void SetSwitchRedunRealHunXianStCyc(const UINT16 switchId, const UINT8 chOCIndex, const UINT32 cycNum); + +/* +* ȡʵʻʼں +* ˵const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* ֵ ں +* add by wyd 20260604 +*/ +UINT32 GetSwitchRedunRealHunXianStCyc(const UINT16 switchId, const UINT8 chOCIndex); + +/* +* û߻ָ״̬ +* ˵ const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* const UINT8 cHunXianStt ߻ָ״̬ +* REDUN_HX_RECOV_1100REDUN_HX_RECOV_1010REDUN_HX_RECOV_0011 +* 0 +* ֵ void +* add by wyd 20260604 +*/ +void SetSwitchRedunHunXianRecovStt(const UINT16 switchId, const UINT8 chOCIndex, const UINT8 cHunXianStt); + +/* +* ȡ߻ָ״̬ +* ˵const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* ֵ ߻ָ״̬ +* add by wyd 20260604 +*/ +UINT8 GetSwitchRedunHunXianRecovStt(const UINT16 switchId, const UINT8 chOCIndex); + +/* +* òɼʼں +* ˵ const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* UINT32 cycNum ں +* ֵ void +* add by wyd 20260604 +*/ +void SetSwitchRedunFaultStCyc(const UINT16 switchId, const UINT8 chOCIndex, const UINT32 cycNum); + +/* +* ȡɼʼں +* ˵const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* ֵ ں +* add by wyd 20260604 +*/ +UINT32 GetSwitchRedunFaultStCyc(const UINT16 switchId, const UINT8 chOCIndex); + +/* +* ɼ״̬ +* ˵ const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* UINT32 cycNum ں +* ֵ void +* add by wyd 20260604 +*/ +void SetSwitchRedunCombineStt(const UINT16 switchId, const UINT8 chOCIndex, const UINT8 setValue); + +/* +* ת޻ɼλ +* ˵ const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* UINT32 cycNum ں +* ֵ void +* add by wyd 20260604 +*/ +void SetSwitchMainCollPos(const UINT16 switchId, const UINT8 setValue); + +/* +* ɼɼλ +* ˵ const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* UINT32 cycNum ں +* ֵ void +* add by wyd 20260604 +*/ +void SetSwitchRedunCollPos(const UINT16 switchId, const UINT8 chOCIndex, const UINT8 setValue); + +/* +* ɼڻ״̬ +* ˵ const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* UINT32 cycNum ں +* ֵ void +* add by wyd 20260604 +*/ +void SetSwitchRedunCurrHunXianStt(const UINT16 switchId, const UINT8 chOCIndex, const UINT8 setValue); + #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/Switch/SwitchDefine.h b/TSCP/src/APP/ciapp/Switch/SwitchDefine.h index d143ac3..b604ec0 100644 --- a/TSCP/src/APP/ciapp/Switch/SwitchDefine.h +++ b/TSCP/src/APP/ciapp/Switch/SwitchDefine.h @@ -155,6 +155,7 @@ #define SWITCH_BELONG_OC_MAX 2U /*OC*/ +#define SWITCH_REDUN_COLL_MAX 2U /*ɼ*/ #define MAIN_CONTROL 0x55U /**/ #define STANDBY_CONTROL 0xAAU /**/ @@ -168,9 +169,21 @@ #define SWITCH_BOARD_FAULT ((UINT8)0xff) /*ת޻*/ #define SWITCH_BOARD_NORMAL ((UINT8)0x55) /*ת޻*/ -#define FIND_DINGWEI_CMD ((UINT8)0x1) /*Ѱ*/ -#define FIND_FANWEI_CMD ((UINT8)0x2) /*Ѱ*/ -#define INIT_FIND_CMD ((UINT8)0x3) /*ʼѰ*/ -#define NO_FIND_CMD ((UINT8)0x0) /*Ѱλָ*/ +#define FIND_DINGWEI_CMD ((UINT8)0x1) /*Ѱ*/ +#define FIND_FANWEI_CMD ((UINT8)0x2) /*Ѱ*/ +#define INIT_FIND_CMD ((UINT8)0x3) /*ʼѰ*/ +#define NO_FIND_CMD ((UINT8)0x0) /*Ѱλָ*/ + +#define REDUN_COLL_YES ((UINT8)0xAAu) /*߱ɼ*/ +#define REDUN_COLL_NO ((UINT8)0x55u) /*߱ɼ*/ + +#define REDUN_HX_RECOV_1100 ((UINT8)0x01u) /*߻ָɼ1100*/ +#define REDUN_HX_RECOV_1010 ((UINT8)0x02u) /*߻ָɼ1010*/ +#define REDUN_HX_RECOV_0011 ((UINT8)0x04u) /*߻ָɼ0011*/ +#define REDUN_HX_RECOV_ALL ((UINT8)0x07u) /*ȫ߻ָɼ*/ + +#define REDUN_ALARM_HUNXIAN ((UINT8)0x55u) /*ɼ߱*/ +#define REDUN_ALARM_FAULT ((UINT8)0xAAu) /*ɼϱ*/ + #endif diff --git a/TSCP/src/APP/ciapp/System/SystemConfigDefine.h b/TSCP/src/APP/ciapp/System/SystemConfigDefine.h index d1c1b07..e3da949 100644 --- a/TSCP/src/APP/ciapp/System/SystemConfigDefine.h +++ b/TSCP/src/APP/ciapp/System/SystemConfigDefine.h @@ -62,7 +62,7 @@ #define VER_MAIN_SUBCI_CI_CID ((UINT8)27) /*ϵͳ汾*/ #define VER_SUB_SUBCI_CI_CID ((UINT8)0) /*ϵͳӰ汾*/ #define VER_BRUNCH_CI_CID ((UINT8)0) /*֧汾..........0....֧1 2 */ -#define VER_RETURN_SUBCI_CI_CID ((UINT8)0) /*ϵͳع汾*/ +#define VER_RETURN_SUBCI_CI_CID ((UINT8)1) /*ϵͳع汾*/ #ifdef SCADE_MODE /*SCADE汾*/ @@ -76,13 +76,13 @@ #define VER_SOFT_PRODUCT ((UINT8)40) /*Ʒ*/ #define VER_SOFT_MODUAL_APP ((UINT8)1) /*ģ*/ #define VER_SOFT_MIANVERSION ((UINT8)27) /*汾*/ -#define VER_SOFT_SUBVERSION ((UINT8)1) /*Ӱ汾*/ +#define VER_SOFT_SUBVERSION ((UINT8)2) /*Ӱ汾*/ #endif /*ɼݵĹݽṹ汾*/ #define VER_1_PUBLIC_FS_1 ((UINT8)31) -#define VER_1_PUBLIC_FS_2 ((UINT8)7) +#define VER_1_PUBLIC_FS_2 ((UINT8)8) #define VER_1_PUBLIC_FS_3 ((UINT8)0) #define VER_1_PUBLIC_FS_4 ((UINT8)0) @@ -98,7 +98,7 @@ /*ɼݵ˽ݽṹ汾*/ -#define VER_1_PRIVATE_FS_1 ((UINT8)52) +#define VER_1_PRIVATE_FS_1 ((UINT8)53) #define VER_1_PRIVATE_FS_2 ((UINT8)0) #define VER_2_PRIVATE_FS_1 ((UINT8)0xFF) @@ -108,7 +108,7 @@ #define VER_3_PRIVATE_FS_2 ((UINT8)0xFF) /*ɼOCݽṹ汾*/ -#define VER_1_OCDATA_FS_1 ((UINT8)37) /*oc 3.0 ݰ汾*/ +#define VER_1_OCDATA_FS_1 ((UINT8)38) /*oc 3.0 ݰ汾*/ #define VER_1_OCDATA_FS_2 ((UINT8)0) #define VER_2_OCDATA_FS_1 ((UINT8)0xFF) diff --git a/TSCP/src/APP/ciapp/System/SystemParameterManage.c b/TSCP/src/APP/ciapp/System/SystemParameterManage.c index 32b74fb..7d27700 100644 --- a/TSCP/src/APP/ciapp/System/SystemParameterManage.c +++ b/TSCP/src/APP/ciapp/System/SystemParameterManage.c @@ -125,9 +125,10 @@ static UINT16 g_TiocFsVersion[TIOCFS_VERSION_LENGTH] = { 0u };/* TIOC UINT32 gSystemUpdateMainUseCycNum = 0U; /*ϵͳʼں*/ -static UINT32 wSwitchMachineCutInterval = 0U; /*RC/CIϵͳת޻лʱ(λS)*/ -static UINT32 wSwitchMachineDrvingCutInterval = 0U; /*RC/CIϵͳת޻лʱ(λS)*/ -static UINT32 wSwitchLastDrvValidTime = 0U; /*RC/CIϵͳһЧʱ*/ +static UINT32 wSwitchMachineCutInterval = 0U; /*RC/CIϵͳת޻лʱ(λS)*/ +static UINT32 wSwitchMachineDrvingCutInterval = 0U; /*RC/CIϵͳת޻лʱ(λS)*/ +static UINT32 wSwitchLastDrvValidTime = 0U; /*RC/CIϵͳһЧʱ*/ +static UINT32 dwSwitchRedunCollTolTime = 0U; /*ɼʱ*/ /* * ϵͳʱת * ˵ void @@ -361,6 +362,9 @@ void SystemParaTimeToCycleCount(void) paraVal = GetSystemParaValue(SWITCH_LAST_DRV_TIME); wSwitchLastDrvValidTime = TimeToCycleCount((UINT32)paraVal * 1000U, appCycleTime); /*RC/CIϵͳһЧʱ*/ + + paraVal = GetSystemParaValue(SWITCH_REDUN_COLL_ALARM_TIME); + dwSwitchRedunCollTolTime = TimeToCycleCount((UINT32)paraVal, appCycleTime); /*ɼʱ*/ } /* @@ -3429,16 +3433,30 @@ UINT8 GetLocalSerialCommFlag(void) * @return CI_SUCCESS óɹ CI_ERROR ʧ * @note by cgh 20260507 */ -UINT8 SetLocalSerialCommData(UINT8 chGroupIndex,UINT8 chPortIndex,UINT16 wSerialCommCiId,UINT8 chSerialCommPort) +UINT8 SetLocalSerialCommData(UINT8 chGroupIndex, UINT8 chPortIndex, UINT16 wSerialCommCiId, UINT8 chSerialCommPort) { UINT8 chReval = CI_ERROR; + UINT8 chDevType = 0U; /*豸*/ + UINT8 chDevId = 0U; /*豸ID*/ + UINT8 chLocalRcWorkMode = 0u; /*RCģʽ*/ - if ((SERIAL_GROUP_SUM_MAX > chGroupIndex) && (CI_SUM_MAX > wSerialCommCiId) && (SERIAL_PORT_SUM_MAX > chPortIndex)) + if ((SERIAL_GROUP_SUM_MAX > chGroupIndex) && (SERIAL_PORT_SUM_MAX > chPortIndex)) { - gSzSerialCommData[chGroupIndex].wSerialCommOtherCiId = wSerialCommCiId; - gSzSerialCommData[chGroupIndex].chSerialCommPort[chPortIndex] = chSerialCommPort; + chLocalRcWorkMode = GetLocalRcWorkMode(); + chDevType = (UINT8)((wSerialCommCiId & 0xFF00U) >> 8U); + chDevId = (UINT8)(wSerialCommCiId & 0x00FFU); - chReval = CI_SUCCESS; + if ((0u ==wSerialCommCiId) || ((chLocalRcWorkMode == chDevType) && (CI_SUM_MAX > chDevId))) + { + gSzSerialCommData[chGroupIndex].wSerialCommOtherCiId = wSerialCommCiId; + gSzSerialCommData[chGroupIndex].chSerialCommPort[chPortIndex] = chSerialCommPort; + + chReval = CI_SUCCESS; + } + else + { + ; /*ʼʧ*/ + } } else { @@ -3514,4 +3532,15 @@ UINT8 IsSerialDevice(UINT16 DeviceName, UINT8* pSerialGroup) } return chReval; +} + +/** +* @brief ȡɼϱʱ䣨ms +* @param[in] void +* @return ɼϱʱ䣨ms +* @note by wyd 20260605 +*/ +UINT32 GetSwitchRedunCollHunXianCycCfg(void) +{ + return dwSwitchRedunCollTolTime; } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/System/SystemParameterManage.h b/TSCP/src/APP/ciapp/System/SystemParameterManage.h index 654d97b..534f5cd 100644 --- a/TSCP/src/APP/ciapp/System/SystemParameterManage.h +++ b/TSCP/src/APP/ciapp/System/SystemParameterManage.h @@ -109,6 +109,7 @@ extern "C" { #define FUNC_OVERLAP_UT_UNLOCK_MODE ((UINT8)74) /*UTгռѹͣʱνʽ*/ #define FUNC_PSD_EXCEPT_CANCLE_TYPE ((UINT8)75) /*쳣򿪺쳣ʽ0xAA ATS 0xBA0x55δ쳣Զ*/ #define FUNC_PSD_KEEP_CLOSE_TYPE ((UINT8)76) /*ϵͳ/رվ̨ԭ*/ +#define FUNC_GATEWAY_INTERFACE_IDENTIFIER ((UINT8)77) /*ؽӿڱʶ01GALͷ 02GALͷ*/ #define CiSum_ID ((UINT16)1)/*ʵվ */ @@ -191,6 +192,7 @@ extern "C" { #define SWITCH_MACHINE_CUT_INTERVAL (77U) /*RC/CIϵͳת޻лʱ(λS)*/ #define SWITCH_MACHINE_CUT_DRV_INTERVAL (78U) /*RC/CIϵͳת޻лʱ(λS)*/ #define SWITCH_LAST_DRV_TIME (79U) /*RC/CIϵͳһЧʱ*/ +#define SWITCH_REDUN_COLL_ALARM_TIME (80U) /*ɼʱ䣨ms*/ #define FUNC_SWITCH_ON ((UINT8)0xAA) /*ÿش*/ #define FUNC_SWITCH_OFF ((UINT8)0x55) /*ÿعر*/ @@ -1636,6 +1638,14 @@ SerialCommData* GetLocalSerialCommData(void); */ UINT8 IsSerialDevice(UINT16 DeviceName, UINT8* pSerialGroup); +/** +* @brief ȡɼϱʱ䣨ms +* @param[in] void +* @return ɼϱʱ䣨ms +* @note by wyd 20260605 +*/ +UINT32 GetSwitchRedunCollHunXianCycCfg(void); + #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/Train/TrainDataManage.c b/TSCP/src/APP/ciapp/Train/TrainDataManage.c index 222b597..d83cd1e 100644 --- a/TSCP/src/APP/ciapp/Train/TrainDataManage.c +++ b/TSCP/src/APP/ciapp/Train/TrainDataManage.c @@ -185,12 +185,6 @@ static void SetTrainAtsScreenProc(void); */ static UINT32 GetTrainTransBadCyc(const UINT16 wTrainId); -/* -* ȡָгͨ(IVOC)жں -* ˵ const UINT16 wTrainId, гID -* ֵ гͨжں -*/ -static UINT32 GetTrainIvocTransBadCyc(const UINT16 wTrainId); /* * ָгܷתΪUCT * ˵ const UINT16 wTrainId, гID @@ -366,7 +360,8 @@ UINT8 TrainDataModuleInit(void) gstTrainInfo[chCycle].chTrainPostionMode = 0U; /*гλģʽ*/ - + gstTrainInfo[chCycle].chPbtacsTransState = TRAIN_COMM_STATE_UNKNOWN; /*ʼPBTACSδͨ*/ + gstTrainInfo[chCycle].dwPbtacsTransBadCyc = 0U; gszTrainId[gTrainSum] = gstTrainInfo[chCycle].wTrainId; gTrainSum++; @@ -415,7 +410,6 @@ UINT8 TrainDataModuleInit(void) gTrainInfoTemp[chCycle].chIvocSpeedDir = 0u; /*Ivocٶȷ*/ gTrainInfoTemp[chCycle].wIvocTrainSpeed = 0u; /*Ivocгٶ*/ gTrainInfoTemp[chCycle].dwIvocDelayTime = 0u; /*IvocϢӳʱ*/ - } @@ -542,33 +536,6 @@ UINT8 GetTrainTransitmitStat(const UINT16 wTrainId) return chRetVal; } - -/* -* ȡָг(IVOC)ͨ״̬ -* ˵ const UINT16 wTrainId, гID -* ֵ 0: ȡʧ -* 0x55: ͨ״̬ -* 0xAA: ʧͨ -* 0xFF: ͨ״̬δ֪ -* : qw.liu 2022-02-24 -*/ -UINT8 GetTrainIvocTransitmitStat(const UINT16 wTrainId) -{ - UINT8 chRetVal = CI_ERROR; - UINT16 wBufIndex = 0U; - - wBufIndex = GetTrainBufIndex(wTrainId); - if (TRAIN_SUM_MAX > wBufIndex) - { - chRetVal = gstTrainInfo[wBufIndex].chIvocTransmitStat; - } - else - { - chRetVal = CI_ERROR; - } - - return chRetVal; -} /* * ȡָгȼ * ˵ const UINT16 wTrainId, гID @@ -1119,47 +1086,6 @@ UINT8 SetTrainTransmitStat(const UINT16 wTrainId,const UINT8 chTrainmitStat) return chRetVal; } - -/* -* ָг(IVOC)ͨ״̬ -* ˵ const UINT16 wTrainId, гID -* const UINT8 chTrainmitStat ͨ״̬ -* ֵ CI_ERROR: ʧ -CI_SUCCESS:ݳɹ -* 0x55 : ͨ״̬ -* 0xAA : ʧͨ -* 0xFF : ͨ״̬δ֪ -* : qw.liu 2025 - 05 - 08 -*/ -UINT8 SetTrainIvocTransmitStat(const UINT16 wTrainId, const UINT8 chTrainmitStat) -{ - UINT8 chRetVal = CI_ERROR; - UINT16 wBufIndex = 0U; - - wBufIndex = GetTrainBufIndex(wTrainId); - if (TRAIN_SUM_MAX > wBufIndex) - { - if ((TRAIN_COMM_STATE_GOOD == chTrainmitStat) - || (TRAIN_COMM_STATE_BAD == chTrainmitStat) - || (TRAIN_COMM_STATE_UNKNOWN == chTrainmitStat)) - { - gstTrainInfo[wBufIndex].chIvocTransmitStat = chTrainmitStat; - - gstTrainInfo[wBufIndex].dwIvocTransBadCyc = Get2oo2CurCycleNum(); - chRetVal = CI_SUCCESS; - } - else - { - chRetVal = CI_ERROR; - } - } - else - { - chRetVal = CI_ERROR; - } - - return chRetVal; -} /* * ָгеȼ * ˵ const UINT16 wTrainId, гID @@ -3091,6 +3017,9 @@ void ClearTrainInfo(UINT16 wTrainId) gstTrainInfo[wBufIndex].strJumpBackData.chJumpBackApplyState = TRAIN_JUMP_BACK_STATE_INVALID;/*ʼδ*/ gstTrainInfo[wBufIndex].strJumpBackData.chJumpBackReplyState = TRAIN_JUMP_BACK_STATE_NONE;/*ʼĬֵ*/ gstTrainInfo[wBufIndex].strJumpBackData.dwJumpBackApplySn = 0U;/*ʼĬк*/ + + gstTrainInfo[wBufIndex].chPbtacsTransState = TRAIN_COMM_STATE_UNKNOWN; /*PBTACSδͨ*/ + gstTrainInfo[wBufIndex].dwPbtacsTransBadCyc = 0U; } else { @@ -4396,7 +4325,6 @@ void NeighborOutTrainProc(UINT8 chTiocId) { SetTrainMsgFromTiocId(wTrainId, 0u); (void)SetTrainTransmitStat(wTrainId, TRAIN_COMM_STATE_BAD); - (void)SetTrainIvocTransmitStat(wTrainId, TRAIN_COMM_STATE_BAD); } else { @@ -4453,7 +4381,6 @@ void NeighborGoodTrainProc(UINT8 chTiocId) { SetTrainMsgFromTiocId(wTrainId, 0u); (void)SetTrainTransmitStat(wTrainId, TRAIN_COMM_STATE_BAD); - (void)SetTrainIvocTransmitStat(wTrainId, TRAIN_COMM_STATE_BAD); } else { @@ -6531,28 +6458,6 @@ static UINT32 GetTrainTransBadCyc(const UINT16 wTrainId) return dwRetVal; } -/* -* ȡָгͨ(IVOC)жں -* ˵ const UINT16 wTrainId, гID -* ֵ гͨжں -*/ -static UINT32 GetTrainIvocTransBadCyc(const UINT16 wTrainId) -{ - UINT32 dwRetVal = 0u; - UINT16 wBufIndex = 0U; - - wBufIndex = GetTrainBufIndex(wTrainId); - if (TRAIN_SUM_MAX > wBufIndex) - { - dwRetVal = gstTrainInfo[wBufIndex].dwIvocTransBadCyc; - } - else - { - ; - } - - return dwRetVal; -} /* * ȡָгɢ * ˵ const UINT16 wTrainId, гID @@ -7814,23 +7719,21 @@ UINT8 GetTrainResRecycleOTStat(const UINT16 wTrainId) UINT16 wBufIndex = 0U; UINT32 overtimeCycleCount = 0U; - - overtimeCycleCount = GetSystemParaTrainReCycleCount(); + overtimeCycleCount = GetSystemParaTrainReCycleCount(); /*ȡԴճʱ*/ wBufIndex = GetTrainBufIndex(wTrainId); if (TRAIN_SUM_MAX > wBufIndex) { - trainTransimitStat = GetTrainIvocTransitmitStat(wTrainId); - trainLoseCommCyc = GetTrainIvocTransBadCyc(wTrainId); + trainTransimitStat = GetPbtacsTrainTransState(wTrainId); /*ȡPBTACSͨ״̬*/ + trainLoseCommCyc = GetPbtacsTrainTransBadCyc(wTrainId); /*гͨŲ*/ if (TRAIN_COMM_STATE_BAD == trainTransimitStat) { - overtimeStat = SystemOverTimeCheck(trainLoseCommCyc, overtimeCycleCount); if (CI_TIME_OUT == overtimeStat) { - /*ʱ*/ + /*ʱ*/ chRetVal = CI_SUCCESS; } else @@ -13000,7 +12903,6 @@ void InputMainTrainInformation(UINT16 wTrainId) if (TRAIN_COMM_STATE_GOOD == chTransmitStat) { (void)SetTrainTransmitStat(wTrainId, TRAIN_COMM_STATE_BAD); - (void)SetTrainIvocTransmitStat(wTrainId, TRAIN_COMM_STATE_BAD); SetTrainLevel(wTrainId, TRAIN_LEVEL_UR); } else @@ -13863,7 +13765,6 @@ static void DoubleTrianComStateJuge(const UINT16 wTrainId, const UINT8 chComBadF if (0u == trainMsgFromTiocId) { (void)SetTrainTransmitStat(wTrainId, TRAIN_COMM_STATE_BAD); - (void)SetTrainIvocTransmitStat(wTrainId, TRAIN_COMM_STATE_BAD); } else {/*ʲôҲִ*/ @@ -13875,19 +13776,6 @@ static void DoubleTrianComStateJuge(const UINT16 wTrainId, const UINT8 chComBadF if (0U == chComBadFlag) {/*ǰûͨж*/ (void)SetTrainTransmitStat(wTrainId, TRAIN_COMM_STATE_GOOD); - if (CI_SUCCESS == chIvocCtxValid) - { - (void)SetTrainIvocTransmitStat(wTrainId, TRAIN_COMM_STATE_GOOD); - } - } - - if (CI_ERROR == chIvocCtxValid) - { - chTransmitStat = GetTrainIvocTransitmitStat(wTrainId); - if (TRAIN_COMM_STATE_GOOD == chTransmitStat) - { - (void)SetTrainIvocTransmitStat(wTrainId, TRAIN_COMM_STATE_BAD); - } } } @@ -14060,3 +13948,96 @@ UINT16* GetBlocLinkLogSecBuf(const UINT16 wTrainId) } return pLogSecBuf; } + +/* +* ָPBTACSгͨ״̬ +* ˵const UINT16 wTrainId, гID +* const UINT8 chTrainmitStat ͨ״̬ +* ֵ +* Created By LQ 2026.06.09 +*/ +void SetPbtacsTrainTransState(const UINT16 wTrainId, const UINT8 chTrainmitStat) +{ + UINT16 wBufIndex = 0U; + UINT32 dwCurCycNum = 0U; + + wBufIndex = GetTrainBufIndex(wTrainId); + if ((TRAIN_SUM_MAX > wBufIndex) + && ((TRAIN_COMM_STATE_GOOD == chTrainmitStat) || (TRAIN_COMM_STATE_BAD == chTrainmitStat) || (TRAIN_COMM_STATE_UNKNOWN == chTrainmitStat))) + { + gstTrainInfo[wBufIndex].chPbtacsTransState = chTrainmitStat; + + if (TRAIN_COMM_STATE_BAD == chTrainmitStat) + { + if (0U == gstTrainInfo[wBufIndex].dwPbtacsTransBadCyc) + { + dwCurCycNum = Get2oo2CurCycleNum(); + gstTrainInfo[wBufIndex].dwPbtacsTransBadCyc = dwCurCycNum; /*ͨжʱ*/ + } + else + { + /*ͨжʱ䣬ظˢ*/ + } + } + else + { + gstTrainInfo[wBufIndex].dwPbtacsTransBadCyc = 0U; + } + } + else + { + /*쳣֧*/ + } + +} + +/* +* ȡָPBTACSгͨ״̬ +* ˵const UINT16 wTrainId гID +* ֵ0 ȡʧ +* 0x55 ͨ״̬ +* 0xAA ʧͨ +* 0xFF ͨ״̬δ֪ +* Created By LQ 2026.06.09 +*/ +UINT8 GetPbtacsTrainTransState(const UINT16 wTrainId) +{ + UINT8 chRetVal = CI_ERROR; + UINT16 wBufIndex = 0U; + + wBufIndex = GetTrainBufIndex(wTrainId); + if (TRAIN_SUM_MAX > wBufIndex) + { + chRetVal = gstTrainInfo[wBufIndex].chPbtacsTransState; + } + else + { + chRetVal = CI_ERROR; + } + + return chRetVal; +} + +/* +* ȡָPBTACSгͨжں +* ˵const UINT16 wTrainId гID +* ֵгͨжں +* Created By LQ 2026.06.09 +*/ +UINT32 GetPbtacsTrainTransBadCyc(const UINT16 wTrainId) +{ + UINT32 dwRetVal = 0U; + UINT16 wBufIndex = 0U; + + wBufIndex = GetTrainBufIndex(wTrainId); + if (TRAIN_SUM_MAX > wBufIndex) + { + dwRetVal = gstTrainInfo[wBufIndex].dwPbtacsTransBadCyc; + } + else + { + ; + } + + return dwRetVal; +} \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/Train/TrainDataManage.h b/TSCP/src/APP/ciapp/Train/TrainDataManage.h index b77f917..09a55d2 100644 --- a/TSCP/src/APP/ciapp/Train/TrainDataManage.h +++ b/TSCP/src/APP/ciapp/Train/TrainDataManage.h @@ -227,7 +227,6 @@ typedef struct S_TrainInfoStru UINT16 wTrainSpeed; /*ٶ*/ UINT8 chTrainZeroState; /*г״̬*/ UINT8 chTransmitStat; /*г״̬*/ - UINT8 chIvocTransmitStat; /*IVOCг״̬*/ UINT8 chHeadScreenStat; /*гǰɸ־*/ UINT8 chTailScreenStat; /*гɸ־*/ TrainSafeLocStru strSafeLoc; /*гȫλ*/ @@ -253,7 +252,6 @@ typedef struct S_TrainInfoStru UINT8 chStopSteadyState; /*гͣ׼ͣ״̬*/ UINT8 chSleepCancleFlag; /*߳־*/ UINT32 dwTransBadCyc; /*ͨж*/ - UINT32 dwIvocTransBadCyc; /*ͨж*/ UINT8 chEaNum; /*ͨгظɢ*/ TrainEaStru strTrainEaInfo[EA_MAX_NUM]; /*гָɢϢ*/ UINT8 chEaCmd; /*ɢ*/ @@ -297,6 +295,8 @@ typedef struct S_TrainInfoStru UINT8 chTrainPostionMode; /*гλģʽ0x10 ʹIVOCλã0x14ʹVOBCλ*/ BlocLinkInfoStru strBlocLinkData; /*ʽϢ*/ + UINT8 chPbtacsTransState; /*RCPBTACSгͨ״̬ñԴչܣ0x55-ͨ0xAA-ͨжϣ0xFF-δ֪*/ + UINT32 dwPbtacsTransBadCyc; /*RCPBTACSгͨжڣñԴչܣ*/ }TrainInfoStru; @@ -438,16 +438,6 @@ UINT16 GetTrainBufIndex(const UINT16 wTrainId); */ UINT8 GetTrainTransitmitStat(const UINT16 wTrainId); -/* -* ȡָг(IVOC)ͨ״̬ -* ˵ const UINT16 wTrainId, гID -* ֵ 0: ȡʧ -* 0x55: ͨ״̬ -* 0xAA: ʧͨ -* 0xFF: ͨ״̬δ֪ -* : qw.liu 2022-02-24 -*/ -UINT8 GetTrainIvocTransitmitStat(const UINT16 wTrainId); /* * ȡָгСȫǰƫ * ˵ const UINT16 wTrainId, гID @@ -607,19 +597,6 @@ CI_SUCCESS: */ UINT8 SetTrainTransmitStat(const UINT16 wTrainId, const UINT8 chTrainmitStat); - -/* -* ָг(IVOC)ͨ״̬ -* ˵ const UINT16 wTrainId, гID -* const UINT8 chTrainmitStat ͨ״̬ -* ֵ CI_ERROR: ʧ -CI_SUCCESS:ݳɹ -* 0x55 : ͨ״̬ -* 0xAA : ʧͨ -* 0xFF : ͨ״̬δ֪ -* : qw.liu 2025 - 05 - 08 -*/ -UINT8 SetTrainIvocTransmitStat(const UINT16 wTrainId, const UINT8 chTrainmitStat); /* * ָгеȼ * ˵ const UINT16 wTrainId, гID @@ -3128,6 +3105,34 @@ UINT8 GetBlocLinkLogSecNum(const UINT16 wTrainId); */ UINT16* GetBlocLinkLogSecBuf(const UINT16 wTrainId); +/* +* ָPBTACSгͨ״̬ +* ˵const UINT16 wTrainId, гID +* const UINT8 chTrainmitStat ͨ״̬ +* ֵ +* Created By LQ 2026.06.09 +*/ +void SetPbtacsTrainTransState(const UINT16 wTrainId, const UINT8 chTrainmitStat); + +/* +* ȡָPBTACSгͨ״̬ +* ˵const UINT16 wTrainId гID +* ֵ0 ȡʧ +* 0x55 ͨ״̬ +* 0xAA ʧͨ +* 0xFF ͨ״̬δ֪ +* Created By LQ 2026.06.09 +*/ +UINT8 GetPbtacsTrainTransState(const UINT16 wTrainId); + +/* +* ȡָPBTACSгͨжں +* ˵const UINT16 wTrainId гID +* ֵгͨжں +* Created By LQ 2026.06.09 +*/ +UINT32 GetPbtacsTrainTransBadCyc(const UINT16 wTrainId); + #ifdef __cplusplus } #endif diff --git a/TSCP/src/dqu_common/dqu_emap_common/dquStructInit.c b/TSCP/src/dqu_common/dqu_emap_common/dquStructInit.c index b580655..174718d 100644 --- a/TSCP/src/dqu_common/dqu_emap_common/dquStructInit.c +++ b/TSCP/src/dqu_common/dqu_emap_common/dquStructInit.c @@ -1760,7 +1760,7 @@ static UINT8 ROUTE_STRU_init_FAO(UINT8 * pDataAdd, DSU_ROUTE_STRU * pRouteStru) } /*·*/ - pRouteStru->wRouteType = ShortFromChar(pData); + pRouteStru->dwRouteType = ShortFromChar(pData); pData += 2; /*ʼźŻ*/ @@ -1902,7 +1902,7 @@ static UINT8 ROUTE_STRU_init_HLT(UINT8 * pDataAdd, DSU_ROUTE_STRU * pRouteStru) } /*·*/ - pRouteStru->wRouteType = ShortFromChar(pData); + pRouteStru->dwRouteType = ShortFromChar(pData); pData += 2U; /*ʼźŻ*/ @@ -2148,7 +2148,7 @@ static UINT8 ROUTE_STRU_init_CPK(UINT8 * pDataAdd, DSU_ROUTE_STRU * pRouteStru) } /*·*/ - pRouteStru->wRouteType = ShortFromChar(pData); + pRouteStru->dwRouteType = ShortFromChar(pData); pData += 2; /*ʼźŻ*/ @@ -2273,6 +2273,9 @@ static UINT8 ROUTE_STRU_init_CC(UINT8 * pDataAdd, DSU_ROUTE_STRU * pRouteStru) static UINT16 maxCBTCAccessLinkNum = MAX_CBTC_ACCESS_LINK_NUM;/*·ʵCBTCӽ*/ static UINT16 maxBLOCAccessLinkNum = MAX_BLOC_ACCESS_LINK_NUM;/*·ʵʵʽӽ*/ UINT8 reval = 0U;/*ʼֵΪʧ*/ + UINT8 chDataType = 0U; + chDataType = GetLocalPublicDataType(); /*ַ֧*/ + /*ָ*/ if ((NULL != pDataAdd) && (NULL != pRouteStru)) { @@ -2287,8 +2290,17 @@ static UINT8 ROUTE_STRU_init_CC(UINT8 * pDataAdd, DSU_ROUTE_STRU * pRouteStru) } /*·*/ - pRouteStru->wRouteType = ShortFromChar(pData); - pData += 2U; + if (0x01 == chDataType) + { + /*ֶ*/ + pRouteStru->dwRouteType = LongFromChar(pData); + pData += 4U; + } + else + { + pRouteStru->dwRouteType = ShortFromChar(pData); + pData += 2U; + } /*ʼźŻ*/ pRouteStru->wStartSignalId = ShortFromChar(pData); diff --git a/TSCP/src/dqu_common/dqu_emap_common/dsuStruct.h b/TSCP/src/dqu_common/dqu_emap_common/dsuStruct.h index f7d048e..0d93e59 100644 --- a/TSCP/src/dqu_common/dqu_emap_common/dsuStruct.h +++ b/TSCP/src/dqu_common/dqu_emap_common/dsuStruct.h @@ -502,7 +502,7 @@ typedef struct DSU_RouteStruct { UINT16 wId; /**/ CHAR szCaption [24]; /*·*/ - UINT16 wRouteType; /*·*/ + UINT32 dwRouteType; /*·*/ UINT16 wStartSignalId; /*ʼźŻ*/ UINT16 wEndSignalId; /*ֹźŻ*/ UINT16 wOrgnLkId; /*link*/ /*---Ϲѧ*/ diff --git a/TSCP/src/protocol/fsfb/common_fsfb/FsfbRecordDelare.h b/TSCP/src/protocol/fsfb/common_fsfb/FsfbRecordDelare.h index 56ea088..c42065f 100644 --- a/TSCP/src/protocol/fsfb/common_fsfb/FsfbRecordDelare.h +++ b/TSCP/src/protocol/fsfb/common_fsfb/FsfbRecordDelare.h @@ -1,15 +1,15 @@ /******************************************************** * -* ļ FsfbRecordDelare.h -* Ȩ˵ ؿƼ޹˾ -* 汾 1.0 -* ʱ䣺 2013.09.09 -* -* FSFBЭ¼غ궨塣 -* ʹע⣺ +* �ļ��FsfbRecordDelare.hare.h +* ��Ȩ˵���� �������ؿƼ����޹�˾ +* �汾�� �� 1.0 +* ����ʱ�䣺 2013.09.09 +* ���� �� ������ +* ���������� FSFBЭ���¼��غ궨�塣 +* ʹ��ע�⣺ * -* ޸ļ¼ -* 2010.05.10 ޸ ׷FSFBڿʼʶ +* �޸ļ�¼�� +* 2010.05.10 �޸� ׷��FSFB�����ڿ�ʼ��ʶ�� * ********************************************************/ @@ -19,93 +19,93 @@ /******************************************************************************** -궨 +�궨�� ********************************************************************************/ -/* ־λ */ -#define FSFB_CYCLE_TAG (0xF4FB) /* FSFBڿʼʶ */ -#define IN_RED (0x01) /**/ -#define IN_BLUE (0x02) /**/ -#define IN_FRAME_LEN_ERR (0x03) /*֡ȴ*/ -#define IN_READ_FRAME_ERR (0x04) /*ȡ֡ȴ*/ -#define IN_READ_FRAME (0x05) /*ȡ֡*/ -#define IN_CRC_ERR (0x06) /*CRC*/ -#define IN_NO_LNK (0x07) /*·*/ -#define IN_CAT_ERR (0x08) /*֡*/ -#define IN_ADDR_ERR (0x09) /*֡*/ -#define IN_SSR_STATUS_ERR (0x0A) /*SSR״̬*/ -#define IN_SSR_SSE_TC_ERR (0x0B) /*SSRSSEŴ*/ -#define IN_ABT_STATUS (0x0C) /*ABT״̬*/ -#define IN_ABT_SVC_ERR (0x0D) /*ABTSVC*/ -#define IN_ABT_OLD_ERR (0x0E) /*ABTŴ*/ -#define IN_ABT_SSE_BTC (0x0F) /*ABTSSEBTC*/ -#define IN_BTD_LEN_ERR (0x10) /*BTDijȴ*/ -#define IN_BTD_STATUS (0x11) /*BTD״̬*/ -#define IN_BTD_LOST_ERR (0x12) /*BTDʧ*/ -#define IN_BTD_DELAY_ERR (0x13) /*BTDӳٳ*/ -#define IN_BTD_SVC_ERR (0x14) /*BTDSVC*/ -#define OUT_APP (0x15) /**/ -#define OUT_FRAME_LEN_ERR (0x16) /*Ӧ֡ݳȴ*/ -#define OUT_READ_ERR (0x17) /*Ӧݴ*/ -#define OUT_APP_FRAME (0x18) /*Ӧ֡*/ -#define OUT_FRAME_TYPE_ERR (0x19) /*֡ʹ*/ -#define OUT_ADDR_ERR (0x1A) /*ַ*/ -#define OUT_FIND_LNK_ERR (0x1B) /*ѯ·*/ -#define OUT_INSERT_NODE_ERR (0x1C) /*ڵ*/ -#define OUT_INIT_NODE_ERR (0x1D) /*ʼڵ*/ -#define OUT_DATA_TYPE (0x1E) /**/ -#define OUT_LNK (0x1F) /*·*/ -#define OUT_RP_LNK (0x20) /*RP·*/ -#define OUT_ALL_LEN_ERR (0x21) /*ܳȴ*/ +/* ������־λ */ +#define FSFB_CYCLE_TAG (0xF4FB) /* FSFB�����ڿ�ʼ��ʶ */ +#define IN_RED (0x01) /*�����������*/ +#define IN_BLUE (0x02) /*������������*/ +#define IN_FRAME_LEN_ERR (0x03) /*��������֡���ȴ���*/ +#define IN_READ_FRAME_ERR (0x04) /*��ȡ����֡���ȴ���*/ +#define IN_READ_FRAME (0x05) /*��ȡ����֡*/ +#define IN_CRC_ERR (0x06) /*CRC����*/ +#define IN_NO_LNK (0x07) /*����·*/ +#define IN_CAT_ERR (0x08) /*����֡�������*/ +#define IN_ADDR_ERR (0x09) /*����֡�������*/ +#define IN_SSR_STATUS_ERR (0x0A) /*����SSR��״̬����*/ +#define IN_SSR_SSE_TC_ERR (0x0B) /*����SSR��SSE��Ŵ���*/ +#define IN_ABT_STATUS (0x0C) /*����ABT��״̬*/ +#define IN_ABT_SVC_ERR (0x0D) /*����ABT��SVC����*/ +#define IN_ABT_OLD_ERR (0x0E) /*����ABT����Ŵ���*/ +#define IN_ABT_SSE_BTC (0x0F) /*����ABT��SSE��BTC*/ +#define IN_BTD_LEN_ERR (0x10) /*����BTD�ij��ȴ���*/ +#define IN_BTD_STATUS (0x11) /*����BTD��״̬*/ +#define IN_BTD_LOST_ERR (0x12) /*����BTD��ʧ������*/ +#define IN_BTD_DELAY_ERR (0x13) /*����BTD�ӳٳ�����*/ +#define IN_BTD_SVC_ERR (0x14) /*����BTD��SVC����*/ +#define OUT_APP (0x15) /*�������*/ +#define OUT_FRAME_LEN_ERR (0x16) /*���Ӧ��֡���ݳ��ȴ���*/ +#define OUT_READ_ERR (0x17) /*�����Ӧ�����ݴ���*/ +#define OUT_APP_FRAME (0x18) /*���Ӧ��֡����*/ +#define OUT_FRAME_TYPE_ERR (0x19) /*���֡���ʹ���*/ +#define OUT_ADDR_ERR (0x1A) /*�����ַ����*/ +#define OUT_FIND_LNK_ERR (0x1B) /*�����ѯ��·����*/ +#define OUT_INSERT_NODE_ERR (0x1C) /*�������ڵ����*/ +#define OUT_INIT_NODE_ERR (0x1D) /*�����ʼ���ڵ����*/ +#define OUT_DATA_TYPE (0x1E) /*�����������*/ +#define OUT_LNK (0x1F) /*�����·*/ +#define OUT_RP_LNK (0x20) /*���RP��·*/ +#define OUT_ALL_LEN_ERR (0x21) /*��������ܳ��ȴ���*/ -#define FSFB_RCV_TAG 0xF4 /* FSFB뵥Ԫʶ */ -#define FSFB_OUT_TAG 0xF5 /* FSFBԪʶ */ -#define FSFB_MSG_IN_TAG 0x04 /* FSFBһ֡Ϣʼʶ(B 0000 0100) */ -#define FSFB_MSG_OUT_TAG 0x08 /* FSFBһ֡Ϣʼʶ(B 0000 1000) */ -#define FSFB_NODE_OUT_TAG 0x0C /* FSFBһ֡Ϣʼʶ(B 0000 1100) */ -#define FSFB_OUT_E_TAG 0x0F /* FSFBԪʶ(B 0000 1111) */ +#define FSFB_RCV_TAG 0xF4 /* FSFB���뵥Ԫ��ʶ */ +#define FSFB_OUT_TAG 0xF5 /* FSFB�����Ԫ��ʶ */ +#define FSFB_MSG_IN_TAG 0x04 /* FSFB����һ֡��Ϣ��ʼ��ʶ(B 0000 0100) */ +#define FSFB_MSG_OUT_TAG 0x08 /* FSFB���һ֡��Ϣ��ʼ��ʶ(B 0000 1000) */ +#define FSFB_NODE_OUT_TAG 0x0C /* FSFB���һ֡��Ϣ��ʼ��ʶ(B 0000 1100) */ +#define FSFB_OUT_E_TAG 0x0F /* FSFB�����Ԫ������ʶ(B 0000 1111) */ /************************************************************************ - * ԭЭһ16bit - * D15~D12 - * D11~D10ȼ - * D9~D8ģλ - * D7~D4ģеĴģ鲻ͬʱ4λĺ岻ͬ - * ڶȵײ - * D3~D0ģǷͬ4λĺͬ + * ���������ԭ��Э�������һ��16bit + * D15~D12������ + * D11~D10������ȼ� + * D9~D8��ģ��λ�� + * D7~D4����������ģ�����еĴ�����ģ�鲻ͬʱ��4λ�����ĺ��岻ͬ + * �����ڶ��������ȵײ���� + * D3~D0��������������������ģ���Ƿ���ͬ��4λ�����ĺ�����ͬ ************************************************************************/ -/* ȼ */ +/* ����ȼ� */ #define FSFB_ERR 0x0800 #define FSFB_WARN 0x0400 -/* ģλ */ -#define FSFB_RECEIVE 0x0200 /* ģ */ -#define FSFB_OUTPUT 0x0100 /* ģ */ +/* ģ��λ�� */ +#define FSFB_RECEIVE 0x0200 /* ����ģ�� */ +#define FSFB_OUTPUT 0x0100 /* ���ģ�� */ -/* ģд */ +/* ��ģ�����д��� */ #define FSFB_ERROR_NULL 0x0000 -/* */ -#define FSFB_MSG_TYPE_ILLEGAL 0x0010 /* FSFBϢ */ -#define FSFB_MSG_OLD_ERR 0x0020 /* ± */ -#define FSFB_DEL_MSG_LNK_ERR 0x0030 /* ʱɾʧ */ -#define FSFB_MSG_NOT_NODE_ERR 0x0040 /* ϢͨŽڵϢһ */ -#define FSFB_MSG_LEN_ERR 0x0050 /* ijȲ */ -#define FSFB_MSG_FMT_ILLEGAL 0x0060 /* ĸʽ */ -#define FSFB_SSR_NOT_ILLEGAL 0x0070 /* ǶӦSSRϢ */ -#define FSFB_MSG_REPLACE_ERR 0x0080 /* ǽڵʧ */ -#define FSFB_MSG_NO_REPLACENODE 0x0090 /* ڸǽڵ */ -#define FSFB_MSG_NO_INVALID 0x00A0 /* BSDʧ */ +/* ���� */ +#define FSFB_MSG_TYPE_ILLEGAL 0x0010 /* ����FSFB��Ϣ */ +#define FSFB_MSG_OLD_ERR 0x0020 /* �����±��� */ +#define FSFB_DEL_MSG_LNK_ERR 0x0030 /* ��ʱ����ɾ��ʧ�� */ +#define FSFB_MSG_NOT_NODE_ERR 0x0040 /* ������Ϣ��ͨ�Žڵ���Ϣ��һ�� */ +#define FSFB_MSG_LEN_ERR 0x0050 /* ���ij��Ȳ��� */ +#define FSFB_MSG_FMT_ILLEGAL 0x0060 /* ���ĸ�ʽ���� */ +#define FSFB_SSR_NOT_ILLEGAL 0x0070 /* ���Ƕ�ӦSSR������Ϣ */ +#define FSFB_MSG_REPLACE_ERR 0x0080 /* ���ǽڵ�ʧ�� */ +#define FSFB_MSG_NO_REPLACENODE 0x0090 /* �����ڸ��ǽڵ� */ +#define FSFB_MSG_NO_INVALID 0x00A0 /* BSD����ʧ�� */ #define FSFB_MSG_CRC_ERR 0x00B0 -/* */ -#define FSFB_DBGET_ERR 0x0050 /* ݿѯ */ -/* ײ㴦 */ -#define FSFB_QUEUE_READ 0x0001 /* жд */ -#define FSFB_QUEUE_WRITE 0x0002 /* дд */ -#define FSFB_QUEUE_INTEGRITY 0x0003 /* ݲscanдӦø*/ -#define FSFB_LNK_PUSH 0x0004 /* ·ڵѹջ */ -#define FSFB_LNK_POP 0x0005 /* кŻڵջ */ +/* ��� */ +#define FSFB_DBGET_ERR 0x0050 /* ���ݿ��ѯ���� */ +/* ���������������ײ㴦������ */ +#define FSFB_QUEUE_READ 0x0001 /* ���ж��д� */ +#define FSFB_QUEUE_WRITE 0x0002 /* ����д�д� */ +#define FSFB_QUEUE_INTEGRITY 0x0003 /* ���������ݲ�����������scan�д���Ӧ�ø�������*/ +#define FSFB_LNK_PUSH 0x0004 /* ��·�������ڵ�ѹջ���� */ +#define FSFB_LNK_POP 0x0005 /* ���кŻ��������ڵ��ջ���� */ diff --git a/TSCP/src/protocol/sfp_record_cbtc1/common_sfp_nr_config/sfpConfig.h b/TSCP/src/protocol/sfp_record_cbtc1/common_sfp_nr_config/sfpConfig.h index e2bc929..dcc2033 100644 --- a/TSCP/src/protocol/sfp_record_cbtc1/common_sfp_nr_config/sfpConfig.h +++ b/TSCP/src/protocol/sfp_record_cbtc1/common_sfp_nr_config/sfpConfig.h @@ -21,6 +21,7 @@ #define PRTCL_RECORD_SIMPLIFY_BIN /*Ƽ¼*/ #define USE_DSU_SFP /*ʹSFPѯ*/ +#define SWAP_CRC /*CRC*/ #else #endif diff --git a/数据/标准站车车V8.2+公共V31.8+V56.0IVOC+V53.0RCI_CI+V38.0RCI_OC+V22.0ATS+V1.0TMC+V13.0AIM及AID-20260612(1).zip b/数据/标准站车车V8.2+公共V31.8+V56.0IVOC+V53.0RCI_CI+V38.0RCI_OC+V22.0ATS+V1.0TMC+V13.0AIM及AID-20260612(1).zip new file mode 100644 index 0000000..cf19332 --- /dev/null +++ b/数据/标准站车车V8.2+公共V31.8+V56.0IVOC+V53.0RCI_CI+V38.0RCI_OC+V22.0ATS+V1.0TMC+V13.0AIM及AID-20260612(1).zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1dc9a95e598cdd85b0bbf171c66ebe17a1aeb460fe964094ca2bdce987ce6d7 +size 70112826 diff --git a/数据/电子地图数据V2.3-CBTC-23.zip b/数据/电子地图数据V2.3-CBTC-23.zip deleted file mode 100644 index 6ed369c..0000000 --- a/数据/电子地图数据V2.3-CBTC-23.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:317f27bac6cf058ba0dd48be8f9b696d6d8198ae06088f663b2860b616b502ad -size 7770464 diff --git a/数据/电子地图数据V2.3-CBTC-26 -调试数据-2.rar b/数据/电子地图数据V2.3-CBTC-26 -调试数据-2.rar new file mode 100644 index 0000000..79580b9 --- /dev/null +++ b/数据/电子地图数据V2.3-CBTC-26 -调试数据-2.rar @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ef182bc4393b037277d199adce26bc5a730b6c6c18552f449a2a09204448419 +size 6703137 diff --git a/数据/电子地图数据V2.3-车车-13.zip b/数据/电子地图数据V2.3-车车-13.zip deleted file mode 100644 index 47ea567..0000000 --- a/数据/电子地图数据V2.3-车车-13.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:647c2cd5e43e68537bf4a5bab8f144cb192012119d331691906292f415728027 -size 6086186 diff --git a/数据/电子地图数据V2.3-车车-16 -调试数据-2.rar b/数据/电子地图数据V2.3-车车-16 -调试数据-2.rar new file mode 100644 index 0000000..d95ddca --- /dev/null +++ b/数据/电子地图数据V2.3-车车-16 -调试数据-2.rar @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ece85f8102a1245506c3cd2bb6ef40a3fdc1ded0274715aeb1e702d8a8505b8 +size 5345627 From d3f54dc0b416c6e1cf6876401122060df44f2745 Mon Sep 17 00:00:00 2001 From: lh <3191213465@qq.com> Date: Mon, 29 Jun 2026 10:49:27 +0800 Subject: [PATCH 14/15] =?UTF-8?q?=E9=85=8D=E7=BD=AERAR=E5=92=8C7z=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E4=BD=BF=E7=94=A8Git=20LFS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitattributes | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitattributes b/.gitattributes index 64500de..40b2b8d 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,2 +1,3 @@ *.zip filter=lfs diff=lfs merge=lfs -text *.rar filter=lfs diff=lfs merge=lfs -text +*.7z filter=lfs diff=lfs merge=lfs -text From 70bf3e0d369cd231982cc0837399518ad428c587 Mon Sep 17 00:00:00 2001 From: lh <3191213465@qq.com> Date: Thu, 2 Jul 2026 10:25:00 +0800 Subject: [PATCH 15/15] =?UTF-8?q?=E5=A2=9E=E5=8A=A0project=E6=96=87?= =?UTF-8?q?=E4=BB=B6=EF=BC=8C=E7=94=A8=E4=BA=8Eqde=E7=BC=96=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TSCP/.cproject | 814 +++++++++++++++++++++++++++++++++++++++++++++++++ TSCP/.project | 26 ++ 2 files changed, 840 insertions(+) create mode 100644 TSCP/.cproject create mode 100644 TSCP/.project diff --git a/TSCP/.cproject b/TSCP/.cproject new file mode 100644 index 0000000..5053f35 --- /dev/null +++ b/TSCP/.cproject @@ -0,0 +1,814 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TSCP/.project b/TSCP/.project new file mode 100644 index 0000000..c985bbc --- /dev/null +++ b/TSCP/.project @@ -0,0 +1,26 @@ + + + TIOC + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + +