From e0a4ce32c216a68ec31d91ebab9daa0cd646b9b0 Mon Sep 17 00:00:00 2001 From: lh <3191213465@qq.com> Date: Fri, 22 May 2026 15:44:34 +0800 Subject: [PATCH] =?UTF-8?q?[9.8]=209.8=E9=A6=96=E7=89=88=E4=BA=8C=E5=9B=9E?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=EF=BC=8C=E5=9F=BA=E7=BA=BF=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TSCP/Makefile | 117 +- .../ci_integrate_config.h | 2 +- .../APP/ciapp/2oo2/2oo2DataTransferManage.c | 185 +- .../ciapp/DataManage/DeviceConfigDataManage.c | 2 +- .../APP/ciapp/DataManage/DeviceDataManage.c | 172 +- .../APP/ciapp/DataManage/DeviceDataManage.h | 17 +- .../APP/ciapp/EnvelopeManage/ELMDataPrepare.c | 2 +- .../src/APP/ciapp/IO/DeviceRelayDataProcess.c | 1117 ++++++- .../src/APP/ciapp/IO/DeviceRelayDataProcess.h | 75 +- TSCP/src/APP/ciapp/IO/InputDataProcess.c | 795 +++-- TSCP/src/APP/ciapp/IO/InputDataProcess.h | 7 + TSCP/src/APP/ciapp/IO/OutputDataProcess.c | 322 +- TSCP/src/APP/ciapp/IO/OutputDataProcess.h | 23 + .../APP/ciapp/Initial/ConfigDataReadManage.c | 5 +- TSCP/src/APP/ciapp/Initial/InitialProcess.c | 151 +- TSCP/src/APP/ciapp/LogRecord/LogRecord.c | 34 + .../ciapp/LogicManage/InterlockCommonManage.c | 2 +- .../ciapp/LogicManage/InterlockLogicManage.c | 94 +- .../ciapp/LogicManage/RouteRecoverManage.c | 15 +- .../LogicManage/TradInterlockLogicManage.c | 72 +- .../ciapp/LogicProcess/InterlockLogicCheck.c | 1108 ++++++- .../ciapp/LogicProcess/InterlockLogicCheck.h | 125 +- .../LogicProcess/InterlockLogicProcess.c | 31 +- .../LogicProcess/TradInterlockLogicProcess.c | 12 +- TSCP/src/APP/ciapp/Mask/MaskDefine.h | 7 +- .../ciapp/NonRoute/NonRouteConfigDataManage.c | 18 + .../ciapp/NonRoute/NonRouteConfigDataManage.h | 9 + TSCP/src/APP/ciapp/NonRoute/NonRouteDefine.h | 2 +- .../src/APP/ciapp/Overlap/OverlapDataManage.c | 2 +- TSCP/src/APP/ciapp/PSD/PSDDataManage.c | 65 +- TSCP/src/APP/ciapp/PSD/PSDDataManage.h | 20 +- TSCP/src/APP/ciapp/PSD/PSDDefine.h | 16 +- .../APP/ciapp/ParsePack/CiInterfaceDefine.h | 1 + .../src/APP/ciapp/ParsePack/ParsePackCiData.c | 1066 ++++--- .../src/APP/ciapp/ParsePack/ParsePackCiData.h | 4 +- .../src/APP/ciapp/ParsePack/ParsePackCommon.c | 99 +- .../src/APP/ciapp/ParsePack/ParsePackManage.c | 14 +- .../src/APP/ciapp/ParsePack/ParsePackOcData.c | 254 +- .../src/APP/ciapp/ParsePack/ParsePackOcData.h | 22 +- .../APP/ciapp/ParsePack/ParsePackVobcData.c | 2724 +++++++++++++++-- .../APP/ciapp/ParsePack/ParsePackVobcData.h | 78 +- .../src/APP/ciapp/ParsePack/ParsePackZcData.c | 278 +- .../src/APP/ciapp/ParsePack/ParsePackZcData.h | 63 +- TSCP/src/APP/ciapp/QueryFiles/dquCIInit.c | 1129 +++++-- TSCP/src/APP/ciapp/QueryFiles/dquCIInit.h | 79 +- .../src/APP/ciapp/QueryFiles/dquCIInterFace.c | 36 +- .../ciapp/QueryFiles/dquCIJDQStruFrmChar.c | 9 +- TSCP/src/APP/ciapp/QueryFiles/dquCIPZStru.h | 2 +- TSCP/src/APP/ciapp/QueryFiles/dquMaskInit.c | 35 +- TSCP/src/APP/ciapp/QueryFiles/dquMaskInit.h | 4 +- TSCP/src/APP/ciapp/QueryFiles/dqucijdqstru.h | 8 +- TSCP/src/APP/ciapp/RemoteRM/RRMDataPrepare.c | 45 +- .../APP/ciapp/Route/RouteConfigDataManage.c | 26 + .../APP/ciapp/Route/RouteConfigDataManage.h | 11 +- TSCP/src/APP/ciapp/Route/RouteDataManage.h | 2 +- .../Section/AxisSectionConfigDataManage.c | 56 +- .../Section/AxisSectionConfigDataManage.h | 18 + .../APP/ciapp/Section/AxisSectionDataManage.c | 45 + .../APP/ciapp/Section/AxisSectionDataManage.h | 8 + .../Section/LogicSectionConfigDataManage.h | 3 + .../ciapp/Section/LogicSectionDataManage.c | 265 +- .../ciapp/Section/LogicSectionDataManage.h | 59 +- TSCP/src/APP/ciapp/Section/SectionDefine.h | 6 +- TSCP/src/APP/ciapp/Signal/SignalDataManage.c | 40 +- TSCP/src/APP/ciapp/Signal/SignalDataManage.h | 19 +- .../APP/ciapp/Switch/SwitchConfigDataManage.c | 260 +- .../APP/ciapp/Switch/SwitchConfigDataManage.h | 80 +- TSCP/src/APP/ciapp/Switch/SwitchDataManage.c | 596 +++- TSCP/src/APP/ciapp/Switch/SwitchDataManage.h | 178 ++ TSCP/src/APP/ciapp/Switch/SwitchDefine.h | 29 +- .../src/APP/ciapp/System/SystemConfigDefine.h | 18 +- .../APP/ciapp/System/SystemParameterManage.c | 159 +- .../APP/ciapp/System/SystemParameterManage.h | 75 +- TSCP/src/APP/ciapp/Train/TrainDataManage.c | 879 ++++-- TSCP/src/APP/ciapp/Train/TrainDataManage.h | 115 +- TSCP/src/APP/ciapp/Train/TrainDefine.h | 3 + .../ciapp/Transmit/TransmitStateDataManage.c | 2 +- .../WashMachine/WashMachineConfigDataManage.c | 50 + .../WashMachine/WashMachineConfigDataManage.h | 18 + .../ciapp/WashMachine/WashMachineDataManage.c | 116 + .../ciapp/WashMachine/WashMachineDataManage.h | 35 + .../APP/ciapp/WashMachine/WashMachineDefine.h | 6 + TSCP/src/MSCP/CFM/CFM_Net.c | 150 +- TSCP/src/MSCP/CFM/CFM_Net.h | 4 +- TSCP/src/MSCP/CFM/CFM_Raw.c | 4 +- TSCP/src/MSCP/DFM/DFM_DRV.h | 15 +- TSCP/src/MSCP/DFM/DFM_DRV_QNX.c | 152 +- TSCP/src/MSCP/MSCP_APP_Interface.h | 4 +- TSCP/src/MSCP/PFM/PFM_Cfg.c | 2 +- TSCP/src/MSCP/PFM/PFM_Log.c | 34 +- TSCP/src/MSCP/PFM/PFM_Log.h | 2 +- TSCP/src/MSCP/SFM/SFM_2oo2.c | 11 +- TSCP/src/MSCP/SFM/SFM_2x2.c | 62 +- TSCP/src/MSCP/SFM/SFM_Area.c | 218 +- TSCP/src/MSCP/SFM/SFM_Area.h | 10 +- TSCP/src/MSCP/SFM/SFM_Prtcl.c | 84 +- .../dqu_cbtc_common/dquCbtcConfigData.c | 324 +- .../dqu_cbtc_common/dquCbtcConfigData.h | 71 +- .../dqu_common/dqu_dfs_common/dquCbtcType.c | 10 +- .../dqu_common/dqu_emap_common/dquEmapInit.c | 4 +- .../dqu_emap_common/dquStructInit.c | 47 +- .../dqu_idmap_common/dquIdmapInit.c | 4 +- .../dqu_idmap_common/dquIdmapQuery.c | 7 +- .../dqu_idmap_common/dquIdmapQuery.h | 5 + ...a_line_BJL10_工程数据(1.2).0.20260210-ts.zip | 3 + ...CI_OC+V22.0ATS+V1.0TMC+V9.0AIM及AID-20250922(3).zip | 3 - ...CI_OC+V22.0ATS+V1.0TMC+V9.0AIM及AID-20260401(1).zip | 3 + 数据/电子地图数据V1.2-CBTC-11.zip | 3 - 数据/电子地图数据V1.2-车车-4.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 + 111 files changed, 12084 insertions(+), 2912 deletions(-) create mode 100644 数据/data_line_BJL10_工程数据(1.2).0.20260210-ts.zip delete mode 100644 数据/标准站车车+公共V31.4+V52.0IVOC+V49.0RCI_CI+V36.0RCI_OC+V22.0ATS+V1.0TMC+V9.0AIM及AID-20250922(3).zip create 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 数据/电子地图数据V1.2-CBTC-11.zip delete mode 100644 数据/电子地图数据V1.2-车车-4.zip create mode 100644 数据/电子地图数据V2.2-CBTC-14-公共31.5+CI50.0+OC37.0-8.zip create mode 100644 数据/电子地图数据V2.2-车车-11-公共31.5+CI50.0+OC37.0+IVOC54.0-6.zip diff --git a/TSCP/Makefile b/TSCP/Makefile index 7580ed5..60cef12 100644 --- a/TSCP/Makefile +++ b/TSCP/Makefile @@ -20,77 +20,23 @@ LD = $(CC) #INCLUDES += -I/path/to/my/lib/include #INCLUDES += -I../mylib/public -INCLUDES += -I ./src/APP \ - -I ./src/APP/ciapp/2oo2 \ - -I ./src/APP/ciapp/AllAutoReturn \ - -I ./src/APP/ciapp/AutoReturn \ - -I ./src/APP/ciapp/AutoRoute \ - -I ./src/APP/ciapp/AxisAssert \ - -I ./src/APP/ciapp/AxisSort \ - -I ./src/APP/ciapp/CutoffPoint \ - -I ./src/APP/ciapp/DataManage \ - -I ./src/APP/ciapp/DebugPrint \ - -I ./src/APP/ciapp/Deployment \ - -I ./src/APP/ciapp/DiffLineDev \ - -I ./src/APP/ciapp/EnvelopeManage \ - -I ./src/APP/ciapp/ERROR \ - -I ./src/APP/ciapp/ESB \ - -I ./src/APP/ciapp/FloodGate \ - -I ./src/APP/ciapp/Garagedoor \ - -I ./src/APP/ciapp/HLHTMsgHead \ - -I ./src/APP/ciapp/Indicator \ - -I ./src/APP/ciapp/Initial \ - -I ./src/APP/ciapp/InvadeSection \ - -I ./src/APP/ciapp/IO \ - -I ./src/APP/ciapp/LogicManage \ - -I ./src/APP/ciapp/LogicProcess \ - -I ./src/APP/ciapp/LogRecord \ - -I ./src/APP/ciapp/Main \ - -I ./src/APP/ciapp/Mask \ - -I ./src/APP/ciapp/NonAutoReturn \ - -I ./src/APP/ciapp/NonRoute \ - -I ./src/APP/ciapp/Overlap \ - -I ./src/APP/ciapp/ParsePack \ - -I ./src/APP/ciapp/PSC \ - -I ./src/APP/ciapp/PSD \ - -I ./src/APP/ciapp/QueryFiles \ - -I ./src/APP/ciapp/Relay \ - -I ./src/APP/ciapp/RemoteRM \ - -I ./src/APP/ciapp/ReverseCut \ - -I ./src/APP/ciapp/ReverseRoute \ - -I ./src/APP/ciapp/Route \ - -I ./src/APP/ciapp/Section \ - -I ./src/APP/ciapp/SectionStateProcess \ - -I ./src/APP/ciapp/SGBJ \ - -I ./src/APP/ciapp/Signal \ - -I ./src/APP/ciapp/SPKS \ - -I ./src/APP/ciapp/Switch \ - -I ./src/APP/ciapp/System \ - -I ./src/APP/ciapp/Train \ - -I ./src/APP/ciapp/Transmit \ - -I ./src/APP/ciapp/VirtualDevice \ - -I ./src/APP/ciapp/WashMachine \ - -I ./src/APP/ciapp/WLScreen \ - -I ./src/APP/ciapp/WLBrake \ - -I ./src/APP/PU13_integration_config \ - -I ./src/commoncode/common \ +INCLUDES += -I ./src/commoncode/common \ -I ./src/commoncode/commoncode_config_vxworks \ -I ./src/dqu_common/dqu_idmap_common \ -I ./src/dqu_common/dqu_emap_common \ -I ./src/dqu_common/dqu_dfs_common \ -I ./src/dqu_common/dqu_cbtc_common \ - -I .\src\protocol\fsfb\common_dqu_fsfb \ - -I .\src\protocol\fsfb\common_fsfb \ -I .\src\protocol\protocol_cbtc\common_protocol_config \ -I .\src\protocol\protocol_cbtc\common_dqu_protocol \ -I .\src\protocol\protocol_cbtc\common_protocol \ + -I .\src\protocol\protocol_cbtc\common_protocol_sfp_rsspi-config \ -I .\src\protocol\redun_record_cbtc\common_dqu_rp \ -I .\src\protocol\redun_record_cbtc\common_redun \ -I .\src\protocol\redun_record_cbtc\common_redun_record_config \ -I .\src\protocol\rsr_record_cbtc\common_dqu_rsr \ - -I .\src\protocol\rsr_record_cbtc\common_rsr \ -I .\src\protocol\rsr_record_cbtc\common_rsr\rssp \ -I .\src\protocol\rsr_record_cbtc\common_rsr\sig \ + -I .\src\protocol\rsr_record_cbtc\common_rsr \ -I .\src\protocol\rsr_record_cbtc\common_rsr_record_config \ -I .\src\protocol\rssp_record_cbtc1\common_dqu_rssp \ -I .\src\protocol\rssp_record_cbtc1\common_rssp \ @@ -101,6 +47,8 @@ INCLUDES += -I ./src/APP \ -I .\src\protocol\sfp_record_cbtc1\common_dqu_sfp \ -I .\src\protocol\sfp_record_cbtc1\common_sfp \ -I .\src\protocol\sfp_record_cbtc1\common_sfp_nr_config \ + -I .\src\protocol\fsfb\common_dqu_fsfb \ + -I .\src\protocol\fsfb\common_fsfb \ -I ./src/DRV \ -I ./src/MSCP \ -I ./src/MSCP/CM \ @@ -109,7 +57,60 @@ INCLUDES += -I ./src/APP \ -I ./src/MSCP/SFM \ -I ./src/MSCP/PFM \ -I ./src/MSCP_CFG \ - + -I ./src/APP \ + -I ./src/APP/ciapp/2oo2 \ + -I ./src/APP/ciapp/AllAutoReturn \ + -I ./src/APP/ciapp/AutoReturn \ + -I ./src/APP/ciapp/AutoRoute \ + -I ./src/APP/ciapp/DataManage \ + -I ./src/APP/ciapp/DebugPrint \ + -I ./src/APP/ciapp/DiffLineDev \ + -I ./src/APP/ciapp/ERROR \ + -I ./src/APP/ciapp/ESB \ + -I ./src/APP/ciapp/FloodGate \ + -I ./src/APP/ciapp/Garagedoor \ + -I ./src/APP/ciapp/HLHTMsgHead \ + -I ./src/APP/ciapp/Indicator \ + -I ./src/APP/ciapp/Initial \ + -I ./src/APP/ciapp/InvadeSection \ + -I ./src/APP/ciapp/IO \ + -I ./src/APP/ciapp/LightTestButtonManage \ + -I ./src/APP/ciapp/LogicManage \ + -I ./src/APP/ciapp/LogicProcess \ + -I ./src/APP/ciapp/LogRecord \ + -I ./src/APP/ciapp/Main \ + -I ./src/APP/ciapp/Mask \ + -I ./src/APP/ciapp/NonRoute \ + -I ./src/APP/ciapp/Overlap \ + -I ./src/APP/ciapp/ParsePack \ + -I ./src/APP/ciapp/PSC \ + -I ./src/APP/ciapp/PSD \ + -I ./src/APP/ciapp/QueryFiles \ + -I ./src/APP/ciapp/Relay \ + -I ./src/APP/ciapp/ReverseRoute \ + -I ./src/APP/ciapp/Route \ + -I ./src/APP/ciapp/Section \ + -I ./src/APP/ciapp/Signal \ + -I ./src/APP/ciapp/SPKS \ + -I ./src/APP/ciapp/Switch \ + -I ./src/APP/ciapp/System \ + -I ./src/APP/ciapp/Transmit \ + -I ./src/APP/ciapp/VirtualDevice \ + -I ./src/APP/ciapp/WashMachine \ + -I ./src/APP/PU13_integration_config \ + -I ./src/APP/ciapp/AxisSort \ + -I ./src/APP/ciapp/Train \ + -I ./src/APP/ciapp/EnvelopeManage \ + -I ./src/APP/ciapp/CutoffPoint \ + -I ./src/APP/ciapp/SectionStateProcess \ + -I ./src/APP/ciapp/AxisAssert \ + -I ./src/APP/ciapp/ReverseCut \ + -I ./src/APP/ciapp/WLScreen \ + -I ./src/APP/ciapp/WLBrake \ + -I ./src/APP/ciapp/RemoteRM \ + -I ./src/APP/ciapp/NonAutoReturn \ + -include stdarg.h + #LIBS += -L/path/to/my/lib/$(PLATFORM)/usr/lib -lmylib #LIBS += -L../mylib/$(OUTPUT_DIR) -lmylib 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 47e13e4..cae2711 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 112 /*ɴ*/ +#define VER_INTE_TIME 116 /*ɴ*/ #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 dc8a571..5e9fbfe 100644 --- a/TSCP/src/APP/ciapp/2oo2/2oo2DataTransferManage.c +++ b/TSCP/src/APP/ciapp/2oo2/2oo2DataTransferManage.c @@ -443,17 +443,17 @@ UINT32 CopyValidSetRcVobcDataStru(const UINT8* pCurCiAppDataPointer, void* pData for (i = 0u; i < ValidIdNum; i++) { - pDstAddr = (UINT8*)pDataStru + struLength * i; - - /*�ṹ��Ԫ��ǰ�����ֽ�IDΪ0ʱ������Ч����,�˴����˵������Ч��*/ - if (0u != ShortFromCharLE(pDstAddr)) + if (i < struNum) { - (void)memcpy(pDstAddr, pCurCiAppDataPointer + curIndex, struLength); + pDstAddr = (UINT8*)pDataStru + struLength * i; + (void)CommonMemCpy((void*)pDstAddr, (UINT32)struLength, (const void*)(pCurCiAppDataPointer + curIndex), (UINT32)struLength); curIndex += (UINT32)struLength; } else { - /*��ִ���κβ���*/ + curIndex += (UINT32)struLength; + + debug_infor_printf((const)"ERROR: SetValidIdNum = %d\n", i); } } } @@ -1618,19 +1618,22 @@ UINT32 GetCiAppData(UINT8 *pCiAppDataPointer) pCiAppDataPointer[curIndex] = gDyTestNum; curIndex += 1U; - /*�����г�Զ��ɸѡ�ṹ������*/ - (void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(TrainAtsScreenStru)* TRAIN_SUM_MAX), (void*)(&gszAtsScreenInfo), (UINT32)(sizeof(TrainAtsScreenStru)* TRAIN_SUM_MAX)); - curIndex = curIndex + (UINT32)(sizeof(TrainAtsScreenStru) * TRAIN_SUM_MAX); + /*ZC����������CBTC�г���ѹ��Ϣ*/ + pCiAppDataPointer[curIndex] = gCbtcCrossNumZc; + curIndex += 1u; - - /*����Զ��ɸѡ�г�����*/ - pCiAppDataPointer[curIndex] = gAtsScreenNum; - curIndex += 1U; + for (ii = 0u; ii < gCbtcCrossNumZc; ii++) + { + ShortToChar(gCbtcCrossStructZc[ii].wSignalId, &pCiAppDataPointer[curIndex]); + curIndex += 2u; + pCiAppDataPointer[curIndex] = gCbtcCrossStructZc[ii].wTrainId; + curIndex += 1u; + } /*����һ��CRC*/ crcLength = curIndex - crcIndex; crcResult = Tioc_CommonCrc32(pCiAppDataPointer + crcIndex, crcLength); - debug_infor_printf((const)"2oo2 RecvCiCmdDataStruCurSum-szNeighborCiInfo CRC:%x, Length:%d\n", crcResult, crcLength); + debug_infor_printf((const)"2oo2 RecvCiCmdDataStruCurSum-gDyTestNum CRC:%x, Length:%d\n", crcResult, crcLength); } return curIndex; } @@ -2463,9 +2466,17 @@ UINT8 SetCiAppData(const UINT8 *pCiAppDataPointer,const UINT32 len) gDyTestNum = pCiAppDataPointer[curIndex]; curIndex += 1U; - /*�����г�Զ��ɸѡ�ṹ������*/ - (void)CommonMemCpy((void*)(&gszAtsScreenInfo), (UINT32)(sizeof(TrainAtsScreenStru)* TRAIN_SUM_MAX), (const void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(TrainAtsScreenStru)* TRAIN_SUM_MAX)); - curIndex = curIndex + (UINT32)(sizeof(TrainAtsScreenStru) * TRAIN_SUM_MAX); + /*ZC����������CBTC�г���ѹ��Ϣ*/ + gCbtcCrossNumZc = pCiAppDataPointer[curIndex]; + curIndex += 1u; + + for (ii = 0u; ii < gCbtcCrossNumZc; ii++) + { + gCbtcCrossStructZc[ii].wSignalId = ShortFromChar(&pCiAppDataPointer[curIndex]); + curIndex += 2u; + gCbtcCrossStructZc[ii].wTrainId = pCiAppDataPointer[curIndex]; + curIndex += 1u; + } rtn = 1U; } @@ -2921,12 +2932,12 @@ UINT32 GetCiGeneralData(UINT8* pCiAppDataPointer) curIndex = curIndex + curResult; /*ͬ����������������ѩ������Ϣ*/ - curResult = CopyValidGetDataStru(pCiAppDataPointer + curIndex, (void*)(szSendCiAreaSnow), CI_COM_CI_MAX_NUM, (UINT16)sizeof(ToCiAreaSnowStruct)); - curIndex = curIndex + curResult; + (void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(ToCiAreaSnowStruct)* CI_COM_CI_MAX_NUM), (void*)(szSendCiAreaSnow), (UINT32)(sizeof(ToCiAreaSnowStruct)* CI_COM_CI_MAX_NUM)); + curIndex = curIndex + (UINT32)(sizeof(ToCiAreaSnowStruct) * CI_COM_CI_MAX_NUM); /*ͬ�������������������ѩ��Ϣ*/ - curResult = CopyValidGetDataStru(pCiAppDataPointer + curIndex, (void*)(szRecvCiAreaSnow), CI_COM_CI_MAX_NUM, (UINT16)sizeof(ToCiAreaSnowStruct)); - curIndex = curIndex + curResult; + (void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(ToCiAreaSnowStruct)* CI_COM_CI_MAX_NUM), (void*)(szRecvCiAreaSnow), (UINT32)(sizeof(ToCiAreaSnowStruct)* CI_COM_CI_MAX_NUM)); + curIndex = curIndex + (UINT32)(sizeof(ToCiAreaSnowStruct) * CI_COM_CI_MAX_NUM); /* ����������ѩ���� */ (void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT8), (const void*)(&g_LocalSnowModel), (UINT32)sizeof(UINT8)); @@ -2958,6 +2969,56 @@ UINT32 GetCiGeneralData(UINT8* pCiAppDataPointer) /*�뱾CIͨ�ŵ�Rc������ͨ����ͷ����������*/ curResult = CopyValidGetHlhtHeadCtxs(pCiAppDataPointer + curIndex, CI_SUM_MAX, (UINT16)sizeof(HLHTHeadContextStru), gSzRcHLHTHeadCtxs); curIndex = curIndex + curResult; + + /*ZC����������CBTC�г���ѹ��Ϣ*/ + pCiAppDataPointer[curIndex] = gCbtcCrossNumZc; + curIndex += 1u; + + for (ii = 0u; ii < gCbtcCrossNumZc; ii++) + { + ShortToChar(gCbtcCrossStructZc[ii].wSignalId, &pCiAppDataPointer[curIndex]); + curIndex += 2u; + pCiAppDataPointer[curIndex] = gCbtcCrossStructZc[ii].wTrainId; + curIndex += 1u; + } + /*����������������*/ + for (ii = 0U; ii < g_VirtualCIStructData.virtualCiNum; ii++) + { + (void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT8), (const void*)(&g_VirtualCIStructData.virtualCi[ii].virtualCiId), (UINT32)sizeof(UINT8)); + curIndex = curIndex + (UINT32)sizeof(UINT8); + + (void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT8), (const void*)(&g_VirtualCIStructData.virtualCi[ii].chAllSignalBrightFlag) , (UINT32)sizeof(UINT8)); + curIndex = curIndex + (UINT32)sizeof(UINT8); + + (void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT8), (const void*)(&g_VirtualCIStructData.virtualCi[ii].chAllSwitchYLockFlag), (UINT32)sizeof(UINT8)); + curIndex = curIndex + (UINT32)sizeof(UINT8); + + + (void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT8) , (const void*)(&g_VirtualCIStructData.virtualCi[ii].autoTriggerflag) , (UINT32)sizeof(UINT8)); + curIndex = curIndex + (UINT32)sizeof(UINT8); + + (void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT8), (const void*)(&g_VirtualCIStructData.virtualCi[ii].cimode), (UINT32)sizeof(UINT8)); + curIndex = curIndex + (UINT32)sizeof(UINT8); + + (void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT8), (const void*)(&g_VirtualCIStructData.virtualCi[ii].chLabourCancelLinShiXianState) , (UINT32)sizeof(UINT8)); + curIndex = curIndex + (UINT32)sizeof(UINT8); + + (void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT8), (const void*)(&g_VirtualCIStructData.virtualCi[ii].ZfwFlag), (UINT32)sizeof(UINT8)); + curIndex = curIndex + (UINT32)sizeof(UINT8); + + (void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT8), (const void*)(&g_VirtualCIStructData.virtualCi[ii].ZfwjHunXianFLag) , (UINT32)sizeof(UINT8)); + curIndex = curIndex + (UINT32)sizeof(UINT8); + + (void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT32), (const void*)(&g_VirtualCIStructData.virtualCi[ii].ZfwStartCycNum) , (UINT32)sizeof(UINT32)); + curIndex = curIndex + (UINT32)sizeof(UINT32); + + (void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT32), (const void*)(&g_VirtualCIStructData.virtualCi[ii].ZfwValidCycNum) , (UINT32)sizeof(UINT32)); + curIndex = curIndex + (UINT32)sizeof(UINT32); + + /*ָʾ��״̬����*/ + (void)CommonMemCpy((void*)(pCiAppDataPointer + curIndex), (UINT32)(VIRTUAL_CI_INDICATOR_SUM_MAX) * sizeof(IndicatorDataStruct) ,(const void*)(&g_VirtualCIStructData.virtualCi[ii].IndicatorData) , (UINT32)(VIRTUAL_CI_INDICATOR_SUM_MAX) * sizeof(IndicatorDataStruct)); + curIndex = curIndex + (UINT32)((VIRTUAL_CI_INDICATOR_SUM_MAX) * sizeof(IndicatorDataStruct)); + } } return curIndex; @@ -3216,12 +3277,12 @@ UINT8 SetCiGeneralData(const UINT8* pCiAppDataPointer, const UINT32 len) curIndex = curIndex + curResult; /*ͬ����������������ѩ������Ϣ*/ - curResult = CopyValidSetDataStru(pCiAppDataPointer + curIndex, (void*)(szSendCiAreaSnow), CI_COM_CI_MAX_NUM, (UINT16)sizeof(ToCiAreaSnowStruct)); - curIndex = curIndex + curResult; + (void)CommonMemCpy((void*)(szSendCiAreaSnow), (UINT32)(sizeof(ToCiAreaSnowStruct)* CI_COM_CI_MAX_NUM), (const void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(ToCiAreaSnowStruct)* CI_COM_CI_MAX_NUM)); + curIndex = curIndex + (UINT32)(sizeof(ToCiAreaSnowStruct) * CI_COM_CI_MAX_NUM); /*ͬ�������������������ѩ��Ϣ*/ - curResult = CopyValidSetDataStru(pCiAppDataPointer + curIndex, (void*)(szRecvCiAreaSnow), CI_COM_CI_MAX_NUM, (UINT16)sizeof(ToCiAreaSnowStruct)); - curIndex = curIndex + curResult; + (void)CommonMemCpy((void*)(szRecvCiAreaSnow), (UINT32)(sizeof(ToCiAreaSnowStruct)* CI_COM_CI_MAX_NUM), (const void*)(pCiAppDataPointer + curIndex), (UINT32)(sizeof(ToCiAreaSnowStruct)* CI_COM_CI_MAX_NUM)); + curIndex = curIndex + (UINT32)(sizeof(ToCiAreaSnowStruct) * CI_COM_CI_MAX_NUM); /* ����������ѩ���� */ (void)CommonMemCpy((void*)(&g_LocalSnowModel), (UINT32)sizeof(UINT8), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT8)); @@ -3254,6 +3315,56 @@ UINT8 SetCiGeneralData(const UINT8* pCiAppDataPointer, const UINT32 len) curResult = CopyValidSetHlhtHeadCtxs(pCiAppDataPointer + curIndex, CI_SUM_MAX, (UINT16)sizeof(HLHTHeadContextStru), gSzRcHLHTHeadCtxsCiToRc); curIndex = curIndex + curResult; + /*ZC����������CBTC�г���ѹ��Ϣ*/ + gCbtcCrossNumZc = pCiAppDataPointer[curIndex]; + curIndex += 1u; + + for (ii = 0u; ii < gCbtcCrossNumZc; ii++) + { + gCbtcCrossStructZc[ii].wSignalId = ShortFromChar(&pCiAppDataPointer[curIndex]); + curIndex += 2u; + gCbtcCrossStructZc[ii].wTrainId = pCiAppDataPointer[curIndex]; + curIndex += 1u; + } + + /*����������������*/ + for (ii = 0U; ii < g_VirtualCIStructData.virtualCiNum; ii++) + { + (void)CommonMemCpy((void*)(&g_VirtualCIStructData.virtualCi[ii].virtualCiId) , (UINT32)sizeof(UINT8), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT8)); + curIndex = curIndex + (UINT32)sizeof(UINT8); + + (void)CommonMemCpy((void*)(&g_VirtualCIStructData.virtualCi[ii].chAllSignalBrightFlag), (UINT32)sizeof(UINT8), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT8)); + curIndex = curIndex + (UINT32)sizeof(UINT8); + + (void)CommonMemCpy((void*)(&g_VirtualCIStructData.virtualCi[ii].chAllSwitchYLockFlag), (UINT32)sizeof(UINT8), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT8)); + curIndex = curIndex + (UINT32)sizeof(UINT8); + + (void)CommonMemCpy((void*)(&g_VirtualCIStructData.virtualCi[ii].autoTriggerflag), (UINT32)sizeof(UINT8), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT8)); + curIndex = curIndex + (UINT32)sizeof(UINT8); + + (void)CommonMemCpy((void*)(&g_VirtualCIStructData.virtualCi[ii].cimode) , (UINT32)sizeof(UINT8), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT8)); + curIndex = curIndex + (UINT32)sizeof(UINT8); + + (void)CommonMemCpy((void*)(&g_VirtualCIStructData.virtualCi[ii].chLabourCancelLinShiXianState) , (UINT32)sizeof(UINT8), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT8)); + curIndex = curIndex + (UINT32)sizeof(UINT8); + + (void)CommonMemCpy((void*)(&g_VirtualCIStructData.virtualCi[ii].ZfwFlag), (UINT32)sizeof(UINT8), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT8)); + curIndex = curIndex + (UINT32)sizeof(UINT8); + + (void)CommonMemCpy((void*)(&g_VirtualCIStructData.virtualCi[ii].ZfwjHunXianFLag), (UINT32)sizeof(UINT8), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT8)); + curIndex = curIndex + (UINT32)sizeof(UINT8); + + (void)CommonMemCpy((void*)(&g_VirtualCIStructData.virtualCi[ii].ZfwStartCycNum) , (UINT32)sizeof(UINT32), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT32)); + curIndex = curIndex + (UINT32)sizeof(UINT32); + + (void)CommonMemCpy((void*)(&g_VirtualCIStructData.virtualCi[ii].ZfwValidCycNum), (UINT32)sizeof(UINT32), (const void*)(pCiAppDataPointer + curIndex), (UINT32)sizeof(UINT32)); + curIndex = curIndex + (UINT32)sizeof(UINT32); + + /*ָʾ��״̬����*/ + (void)CommonMemCpy((void*)(g_VirtualCIStructData.virtualCi[ii].IndicatorData), (UINT32)(VIRTUAL_CI_INDICATOR_SUM_MAX) * sizeof(IndicatorDataStruct), (const void*)(pCiAppDataPointer + curIndex), (UINT32)(VIRTUAL_CI_INDICATOR_SUM_MAX) * sizeof(IndicatorDataStruct)); + curIndex = curIndex + (UINT32)((VIRTUAL_CI_INDICATOR_SUM_MAX) * sizeof(IndicatorDataStruct)); + } + rtn = 1u; } else @@ -3409,6 +3520,8 @@ UINT32 CopyValidGetSigDataCC(UINT8* pCurCiAppDataPointer, UINT16 struNum, Signal curIndex++; *(pCurCiAppDataPointer + curIndex) = pstSignalDataStruCC[i].SignalCrossState; curIndex++; + *(pCurCiAppDataPointer + curIndex) = pstSignalDataStruCC[i].wCrossTacsTrainId; + curIndex++; } else { @@ -3475,6 +3588,8 @@ UINT32 CopyValidSetSigDataCC(UINT8* pCurCiAppDataPointer, UINT16 struNum, Signal curIndex++; pstSignalDataStruCC[devId].SignalCrossState = *(pCurCiAppDataPointer + curIndex); curIndex++; + pstSignalDataStruCC[devId].wCrossTacsTrainId = *(pCurCiAppDataPointer + curIndex); + curIndex++; } else @@ -3648,19 +3763,19 @@ UINT32 CopyValidGetLogicSecDataCC(UINT8* pCurCiAppDataPointer, UINT16 struNum,Lo for (j = 0U; j < pstLogSecDataStruCC[i].chTrainInfoSum; j++) { - ShortToChar(pstLogSecDataStruCC[i].szTrainResData->wTrainId, (pCurCiAppDataPointer + curIndex)); + ShortToChar(pstLogSecDataStruCC[i].szTrainResData[j].wTrainId, (pCurCiAppDataPointer + curIndex)); curIndex += 2U; - *(pCurCiAppDataPointer + curIndex) = pstLogSecDataStruCC[i].szTrainResData->chTrainApplyState; + *(pCurCiAppDataPointer + curIndex) = pstLogSecDataStruCC[i].szTrainResData[j].chTrainApplyState; curIndex++; - *(pCurCiAppDataPointer + curIndex) = pstLogSecDataStruCC[i].szTrainResData->chLogicResUsable; + *(pCurCiAppDataPointer + curIndex) = pstLogSecDataStruCC[i].szTrainResData[j].chLogicResUsable; curIndex++; - *(pCurCiAppDataPointer + curIndex) = pstLogSecDataStruCC[i].szTrainResData->chLogicReturnState; + *(pCurCiAppDataPointer + curIndex) = pstLogSecDataStruCC[i].szTrainResData[j].chLogicReturnState; curIndex++; - *(pCurCiAppDataPointer + curIndex) = pstLogSecDataStruCC[i].szTrainResData->chLogicUnlockState; + *(pCurCiAppDataPointer + curIndex) = pstLogSecDataStruCC[i].szTrainResData[j].chLogicUnlockState; curIndex++; - *(pCurCiAppDataPointer + curIndex) = pstLogSecDataStruCC[i].szTrainResData->chTrainLevel; + *(pCurCiAppDataPointer + curIndex) = pstLogSecDataStruCC[i].szTrainResData[j].chTrainLevel; curIndex++; - LongToChar(pstLogSecDataStruCC[i].szTrainResData->dwRcvUnlockCmdCyc, (pCurCiAppDataPointer + curIndex)); + LongToChar(pstLogSecDataStruCC[i].szTrainResData[j].dwRcvUnlockCmdCyc, (pCurCiAppDataPointer + curIndex)); curIndex += 4U; } *(pCurCiAppDataPointer + curIndex) = pstLogSecDataStruCC[i].cResReqOtherCIId; @@ -4586,6 +4701,7 @@ UINT32 CopyValidSetOcOrginData(UINT8* pCurCiAppDataPointer, UINT16 struNum, OcTo { m_OcToCiOrginDataNum = (UINT8)ValidIdNum; /*����*/ + //printf("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++) { @@ -4621,6 +4737,8 @@ UINT32 CopyValidSetOcOrginData(UINT8* pCurCiAppDataPointer, UINT16 struNum, OcTo curIndex++; pOcDevice->BoardState[j] = *(pCurCiAppDataPointer + curIndex); curIndex++; + pOcDevice->MainStandbyState[j] = *(pCurCiAppDataPointer + curIndex); + curIndex++; } } @@ -4786,6 +4904,7 @@ 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++) @@ -4819,6 +4938,8 @@ UINT32 CopyValidGetOcOrginData(UINT8* pCurCiAppDataPointer, UINT16 struNum, OcTo curIndex++; *(pCurCiAppDataPointer + curIndex) = pOcDevice->BoardState[j]; curIndex++; + *(pCurCiAppDataPointer + curIndex) = pOcDevice->MainStandbyState[j]; + curIndex++; } } ShortToChar(OcRecvData[i].OcGdNum, (pCurCiAppDataPointer + curIndex)); diff --git a/TSCP/src/APP/ciapp/DataManage/DeviceConfigDataManage.c b/TSCP/src/APP/ciapp/DataManage/DeviceConfigDataManage.c index 8a6c0e9..e227eb9 100644 --- a/TSCP/src/APP/ciapp/DataManage/DeviceConfigDataManage.c +++ b/TSCP/src/APP/ciapp/DataManage/DeviceConfigDataManage.c @@ -204,7 +204,7 @@ UINT32 GetCiTranCiDataCheckVer(const UINT8 ciId, const UINT16 deviceName) UINT8 ii = 0U; UINT8 chBreakFlag = 0U; UINT8 chDevType = 0U; - chDevType = (UINT8)((deviceName & 0xFF00) >> 8U); + chDevType = (UINT8)((deviceName & 0xFF00u) >> 8U); if ((ciId > 0U) && (ciId < CI_SUM_MAX) && ((RC_WORK_MODE_CI == chDevType)||(RC_WORK_MODE_TIOC == chDevType))) { diff --git a/TSCP/src/APP/ciapp/DataManage/DeviceDataManage.c b/TSCP/src/APP/ciapp/DataManage/DeviceDataManage.c index 625513f..595d022 100644 --- a/TSCP/src/APP/ciapp/DataManage/DeviceDataManage.c +++ b/TSCP/src/APP/ciapp/DataManage/DeviceDataManage.c @@ -1292,17 +1292,13 @@ edit cgh 20241203 UINT8 RouteLockDriveSwitch(const UINT16 routeId, const UINT8 NeedForDrvRoutAssoSwit) { UINT8 ii = 0u; - UINT8 switchSum = 0u; UINT16 switchId = 0u; UINT8 switchExpPosition = SWITCH_POSITION_INVALID; /*λ*/ UINT8 switchDancaoPosition = SWITCH_POSITION_INVALID; /*Чλ*/ - RouteSwitchStruct* pRouteSwitchStru = NULL; /*ݽṹָ*/ UINT8 innerSwitchRetVal = CI_ERROR; /*·ڵǷɱĽ*/ UINT8 assocSwitchRetVal = CI_ERROR; /*ǷɱĽ*/ UINT8 assocSwitchSum = 0u; /*Ŀ*/ RouteAssocSwitchStruct routeAssocSwitchStru = {0,0}; /**/ - UINT8 routeProtectSwitchSum = 0u; /*Ŀ*/ - RouteProtectSwitchStruct* pRouteProtectSwitchStru = NULL; /**/ UINT8 chAutoCheck = 0U; UINT8 chSendLevel = 0U; chAutoCheck = AutoSignalOrRouteValid(routeId); @@ -3236,7 +3232,6 @@ UINT8 GetSwitchRouteLockState(UINT16 switchId) { UINT16 bufIndex = 0u; /*±*/ UINT16 belongSecId = 0u; /*ID*/ - UINT16 doubleSwitchId = 0u; /*˫ID*/ UINT8 belongPhySecState = 0u; /*εĽ·״̬*/ UINT8 reVal = CI_ERROR; @@ -3258,21 +3253,7 @@ UINT8 GetSwitchRouteLockState(UINT16 switchId) } else { - doubleSwitchId = GetDSwitchOtherId(switchId);/*ȡ˫ID*/ - if (doubleSwitchId != 0u) - {/*˫ǿ*/ - - belongSecId = GetSwitchPhySectionId(doubleSwitchId); - belongPhySecState = GetPhySecLockState(belongSecId); - - if ((PHYSICAL_SECTION_LOCK_NORMAL == belongPhySecState) || - (PHYSICAL_SECTION_LOCK_PROTECT == belongPhySecState) || - (PHYSICAL_SECTION_LOCK_DELAY == belongPhySecState) || - (PHYSICAL_SECTION_LOCK_FAULTDELAY == belongPhySecState)) - { - reVal = CI_SUCCESS; - } - } + /*˫״̬*/ } } return reVal; @@ -5128,8 +5109,9 @@ UINT8 GetOtherCiDevStatus(UINT16 const devType,UINT16 const devId,UINT16 const c devState = 0u; } break; - case CI_DEVICE_TYPE_PSD_EXCEPT_OPEN: /*վ̨ţ쳣򿪣*/ - devState = GePsdExceptOpenState(devId); + case CI_DEVICE_TYPE_PSD_EXCEPT_OPEN: /*վ̨ţ쳣*/ + devState = GePsdExceptState(devId); + /*쳣ֹرաδȡ쳣״̬ʱź*/ break; case CI_DEVICE_TYPE_GARAGEDOOR: /**/ tmpDevState = GetGaragedoorState(devId); @@ -5928,6 +5910,8 @@ UINT8 CheckJumpLockApply(UINT16 axisSectionId) UINT8 routeTrainNear = 0u; UINT8 physicalCheck = 0u; UINT8 phyPLockRouteState = 0u; + UINT16 devId = 0u; /*豸ID*/ + UINT8 devState = 0u; /*豸״̬*/ physicalSecId = GetAxisSecRelativePhySecId(axisSectionId); routeRlockId = GetPhySecRLockBelongRouteId(physicalSecId);/*ν··ID*/ @@ -6072,6 +6056,21 @@ UINT8 CheckJumpLockApply(UINT16 axisSectionId) } } } + + if (CI_SUCCESS == reVal) + {/*λ*/ + devId = 0u; + devState = 0u; + reVal = AxisSecAllProtSwitchPosCheck(axisSectionId, &devId, &devState); + } + + if (CI_SUCCESS == reVal) + {/*״̬*/ + devId = 0u; + devState = 0u; + reVal = AxisSecProtSwitchFLockCheck(axisSectionId, &devId, &devState); + } + return reVal; } @@ -6466,6 +6465,20 @@ UINT8 CheckLogJumpLockApply(UINT16 logSectionId) reVal = CI_SUCCESS; } } + + if (CI_SUCCESS == reVal) + {/*״̬*/ + devId = 0u; /*豸ID*/ + devState = 0u; /*豸״̬*/ + reVal = LogicSecRltvPrtctSwFlockCheck(logSectionId, &devId, &devState);/**/ + } + if (CI_SUCCESS == reVal) + {/*λü*/ + devId = 0u; /*豸ID*/ + devState = 0u; /*豸״̬*/ + reVal = LogicSecRltvPrtctSwPosCheck(logSectionId, &devId, &devState);/*λü*/ + } + } else { @@ -6767,10 +6780,17 @@ UINT8 JumpLockDriveSwitch(const UINT16 axisSecId) AxisSwitchStruct* pRouteSwitchStru = NULL; /*ݽṹָ*/ UINT8 innerSwitchRetVal = CI_ERROR; /*ڵǷɱĽ*/ + + AxisSwitchStruct* pProtectSwitchStru = NULL; /*ݽṹָ*/ + UINT8 protectSwitchSum = 0u; + switchSum = GetAxisSwitchSum(axisSecId); pRouteSwitchStru = GetAxisSwitchIdStru(axisSecId); - if((0u == axisSecId) || (axisSecId >= AXIS_SECTION_SUM_MAX)) + protectSwitchSum = GetAxisSecRelateProSwSum(axisSecId); + pProtectSwitchStru = GetAxisSecRelateProSwStru(axisSecId); + + if((0u == axisSecId) || (axisSecId >= AXIS_SECTION_SUM_MAX)||(NULL == pRouteSwitchStru) || (NULL == pProtectSwitchStru)) { innerSwitchRetVal = CI_ERROR; } @@ -6798,6 +6818,32 @@ UINT8 JumpLockDriveSwitch(const UINT16 axisSecId) break; } } + + if (innerSwitchRetVal == CI_SUCCESS) + { + /* ෴λȡ */ + for (ii = 0u; ii < protectSwitchSum; ii++) + { + switchId = pProtectSwitchStru[ii].SwitchId; + switchExpPosition = pProtectSwitchStru[ii].SwitchPosition; + switchDancaoPosition = GetSwitchDanCaoPostition(switchId); + + if ((SWITCH_POSITION_INVALID == switchDancaoPosition) + || + (switchDancaoPosition == switchExpPosition)) + {/*Ч λ붯λһ*/ + innerSwitchRetVal = CI_SUCCESS; + } + else + { + /*ٵ෴λȡ*/ + innerSwitchRetVal = CI_ERROR; + break; + } + } + } + + if(innerSwitchRetVal == CI_SUCCESS) { @@ -6831,20 +6877,35 @@ void AxisSecDrvInnerSwitch(const UINT16 axisSecId, const UINT8 DrivFlag) UINT8 ii = 0u; /*ѭ*/ UINT8 funRtn = CI_ERROR; + AxisSwitchStruct* pProtectSwitchStru = NULL; /*ݽṹָ*/ + UINT8 protectSwitchSum = 0u; + switchSum = GetAxisSwitchSum(axisSecId); /*ȡεĿ*/ pAxisSecSwitchStru = GetAxisSwitchIdStru(axisSecId); /*ȡڵ*/ + protectSwitchSum = GetAxisSecRelateProSwSum(axisSecId); + pProtectSwitchStru = GetAxisSecRelateProSwStru(axisSecId); - if(SWITCH_NEED_DRIV_TRUE == DrivFlag) - {/*Ҫڵ*/ + if ((NULL != pAxisSecSwitchStru) && (NULL != pProtectSwitchStru)) + { + if (SWITCH_NEED_DRIV_TRUE == DrivFlag) + {/*Ҫڵ*/ + + for (ii = 0u; ii < switchSum; ii++) + { + switchId = pAxisSecSwitchStru[ii].SwitchId; + switchExpPos = pAxisSecSwitchStru[ii].SwitchPosition; + funRtn = SwitchDriveProcess(switchId, switchExpPos); /*üڵ״̬Ϊ*/ + } + + for (ii = 0u; ii < protectSwitchSum; ii++) + { + switchId = pProtectSwitchStru[ii].SwitchId; + switchExpPos = pProtectSwitchStru[ii].SwitchPosition; + (void) SwitchDriveProcess(switchId, switchExpPos); /*üη״̬Ϊ*/ + } - for(ii = 0u; ii < switchSum; ii++) - { - switchId = pAxisSecSwitchStru[ii].SwitchId; - switchExpPos = pAxisSecSwitchStru[ii].SwitchPosition; - funRtn = SwitchDriveProcess(switchId, switchExpPos); /*üڵ״̬Ϊ*/ } - } } @@ -7298,7 +7359,7 @@ UINT8 GetSwitchLogSecLockState(UINT16 switchId, UINT16* logOccOrLockId, UINT8* p UINT8 retValue = CI_ERROR; UINT8 chLogSecLogLockState = 0U; /*߼߼״̬*/ UINT8 cLockBelongLogicRouteNum = 0U; /*߼߼߼·*/ - + UINT8 chLogSecJumpLockState = 0U; /*ȡ߼Ϣ*/ logSecSum = GetSwitchLogSecSum(switchId); logSecBuf = GetSwitchLogSecBuf(switchId); @@ -7322,8 +7383,9 @@ UINT8 GetSwitchLogSecLockState(UINT16 switchId, UINT16* logOccOrLockId, UINT8* p /*߼߼״̬*/ chLogSecLogLockState = GetLogSecLogLockState(logSecBuf[i]); cLockBelongLogicRouteNum = GetLogSecLockBelLogRouteSum(logSecBuf[i]); + chLogSecJumpLockState = GetLogSecJumpLockState(logSecBuf[i]); - if ((LOG_SECTION_LOGLOCK_NO == chLogSecLogLockState) && (0U == cLockBelongLogicRouteNum)) + if ((LOG_SECTION_LOGLOCK_NO == chLogSecLogLockState) && (0U == cLockBelongLogicRouteNum)&&(LOGIC_SECTION_JUMP_LOCK_NO== chLogSecJumpLockState)) { retValue = CI_SUCCESS; } @@ -11591,4 +11653,48 @@ UINT8 GetLocalVirCiType(UINT8 chVirCiId) } return ret; +} +/* +* жϱʱ״̬ +* ˵ +* ֵʱЧʧܣ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) + { + chRet = CI_SUCCESS; + } + else + { + /*ʱδȷϣжǷȷ*/ + for (i = 0U; i < chVirCINum; i++) + { + chVirtualCIid = GetVirtualCIid(i); + chXiansuState = GetVirCILabourCancelLSXianSta(chVirtualCIid); + if ((LINSHIXIANSU_COMM_GOOD_STATE == chXiansuState) || (LINSHIXIANSU_LABOURCANCLE_YES_STATE == chXiansuState)) + { + chRet = CI_SUCCESS; + } + else + { + chRet = CI_ERROR; + break; + } + } + } + + return chRet; } \ 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 3c8947d..8bfe439 100644 --- a/TSCP/src/APP/ciapp/DataManage/DeviceDataManage.h +++ b/TSCP/src/APP/ciapp/DataManage/DeviceDataManage.h @@ -72,8 +72,13 @@ typedef struct S_AreaSnowInfoStruct * ״̬ *--------------------------------------------------------------------------*/ /* ״̬ض */ -#define LOCAL_AREA_SNOW_SUM_MAX ((UINT8)20) /*ڿ͵ѩվ̨*/ -#define ALL_AREA_SNOW_SUM_MAX ((UINT8)254) /*TMC͵ȫѩվ̨*/ +#define LOCAL_AREA_SNOW_SUM_MAX ((UINT8)20) /*ڿ͵ѩվ̨*/ +#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 CBTC_CROSS_ID_MAX ((UINT8)253) /*CBTCѹгID*/ +#define TACS_CROSS_ID_MAX ((UINT8)253) /*TACSѹгID*/ /* 1 źŻ 0x55 @@ -1975,4 +1980,12 @@ void SetLocalSnowModelCC(UINT8 setmodle); add by mpt 20260104 */ UINT8 GetLocalVirCiType(UINT8 chVirCiId); +/* +* жϱʱ״̬ +* ˵ +* ֵʱЧʧܣZCͨسɹ +* Created :LYJ +*/ + +UINT8 CheckLocalCiLSXSStata(void); #endif diff --git a/TSCP/src/APP/ciapp/EnvelopeManage/ELMDataPrepare.c b/TSCP/src/APP/ciapp/EnvelopeManage/ELMDataPrepare.c index aaf25b5..ceb020e 100644 --- a/TSCP/src/APP/ciapp/EnvelopeManage/ELMDataPrepare.c +++ b/TSCP/src/APP/ciapp/EnvelopeManage/ELMDataPrepare.c @@ -1529,7 +1529,7 @@ UINT8 elm_PrepareEnvelopeIsSelf(IN const EnvelopeStruct* ptemp) /** һOC*/ ret = ELM_BELONG_OWNER; } - else if((localOCid != pointABelongOcid) && (localOCid != pointBBelongOcid)) + else if ((localOCid != pointABelongOcid) && (localOCid != pointBBelongOcid)) { /** ͬһOC*/ ret = ELM_BELONG_OTHER; diff --git a/TSCP/src/APP/ciapp/IO/DeviceRelayDataProcess.c b/TSCP/src/APP/ciapp/IO/DeviceRelayDataProcess.c index 57d8a05..469a7cf 100644 --- a/TSCP/src/APP/ciapp/IO/DeviceRelayDataProcess.c +++ b/TSCP/src/APP/ciapp/IO/DeviceRelayDataProcess.c @@ -76,6 +76,11 @@ void OcSwitchDeviceOutput(void) UINT8 lineIdentity = GetCiFunctionSwitchConfig(LINE_RAILWAY_TYPE_CONF);/*ȡ·ʶ:0x55:ǹ콻ͨ0xAA:콻ͨ*/ UINT32 curNum = Get2oo2CurCycleNum(); UINT8 chSwitchJichaState = 0U;/*״̬*/ + UINT8 mainOcId = 0u;/*OCId*/ + UINT8 chLocalCiOCSswitch = 0U; + UINT8 chSwitchLastValidDrvPos = 0U; + + chLocalCiOCSswitch = GetLocalCiOCSswitch(); switchCurSum = GetSwitchCurSum(); /*ȡ*/ localCiId = GetSystemParaLocalCiId(); /*ȡID*/ @@ -355,8 +360,26 @@ void OcSwitchDeviceOutput(void) driveSwitchPos = GetSwitchDrivePostion(switchId); if ((SWITCH_DRIVE_POS_DINGWEI == driveSwitchPos) || (SWITCH_DRIVE_POS_FANWEI == driveSwitchPos)) { - (void)SetSwitchLastValidDrvPos(switchId, driveSwitchPos); - (void)SetSwitchLastValidPosDrivCycNum(switchId, curNum); + + + if (OC_S_ON == chLocalCiOCSswitch) + {/*OC-Sش*/ + mainOcId = GetSwitchMainCotrolOCId(switchId);/*ȡOCID*/ + if (0u < mainOcId) + {/*OC*/ + (void)SetSwitchLastValidDrvPos(switchId, driveSwitchPos); + (void)SetSwitchLastValidPosDrivCycNum(switchId, curNum); + } + else + { + /*޴*/ + } + } + else + { + (void)SetSwitchLastValidDrvPos(switchId, driveSwitchPos); + (void)SetSwitchLastValidPosDrivCycNum(switchId, curNum); + } } chSwitchJichaState = GetSwitchPrompylyAlarmInfo(switchId); @@ -369,6 +392,29 @@ void OcSwitchDeviceOutput(void) } } } + + for (ii = 0U; ii < switchCurSum; ii++) + { + switchId = GetSwitchId(ii); /*ȡID*/ + if ((0u < switchId) && (switchId < SWITCH_SUM_MAX)) + { + belongCiId = GetSwitchBelongCiId(switchId); /*ȡID*/ + if ((belongCiId == localCiId) && (0u != localCiId)) + { + curSwitchPos = GetSwitchCurPosition(switchId);/*ȡǰλ*/ + chSwitchLastValidDrvPos = GetSwitchLastValidDrvPos(switchId); + if (((SWITCH_POSITION_DINGWEI == curSwitchPos) && (SWITCH_DRIVE_POS_DINGWEI == chSwitchLastValidDrvPos)) + || ((SWITCH_POSITION_FANWEI == curSwitchPos) && (SWITCH_DRIVE_POS_FANWEI == chSwitchLastValidDrvPos))) + {/*֮ǰĶҵǰɼ ֮ǰҵǰɼ*/ + SetSwitchOutputDrvCmdCycNum(switchId, 0u);/*λˣ*/ + } + else + { + /*nothing do*/ + } + } + } + } } @@ -380,13 +426,14 @@ void OcSwitchDeviceOutput(void) * ȡOC豸״̬ * ˵ UINT16 switchIdid + UINT8 mainControlOCId OCId * ֵ * ((UINT8)0x01) λ * ((UINT8)0x02) λ * ((UINT8)0x04) Ŀ * ((UINT8)0x08) ƶ */ -UINT8 GetOcSwitchState(UINT16 switchId) +UINT8 GetOcSwitchState(UINT16 switchId,UINT8 mainControlOCId) { UINT8 rtnSwitchState = 0u; UINT16 belongOcId = 0u; /*oc ID*/ @@ -407,10 +454,13 @@ UINT8 GetOcSwitchState(UINT16 switchId) for (i = 0u; i < m_SwitchNum; i++) { if (m_Switches[i].DeviceId == switchId) - { - flagFind = 1u; - indexFind = i; - break; + {/*ƥ䵽ӦOCӦ*/ + if ((0U == mainControlOCId) || (m_Switches[i].OcId == mainControlOCId)) + {/*ǰOC-SOC*/ + flagFind = 1u; + indexFind = i; + break; + } } } } @@ -517,7 +567,17 @@ UINT8 GetOcSwitchState(UINT16 switchId) void OcSwitchDeviceInput(void) { UINT16 switchCurSum = 0u; /*Ŀ*/ + UINT8 chLocalCiOCSswitch = 0u; + chLocalCiOCSswitch = GetLocalCiOCSswitch(); + + switchCurSum = GetSwitchCurSum(); /*ȡ*/ + + if (OC_S_ON == chLocalCiOCSswitch) + { + /*㵱ǰOC*/ + SetAllSwitchCurMainControlOC(switchCurSum); + } /*еλ*/ SetAllSingleSwitchCurPosition(switchCurSum); @@ -675,14 +735,16 @@ UINT8 GetOcSignalColor(UINT16 signalId) UINT8 sigCurShowColor = 0u;/*źŻǰʾɫ*/ UINT8 sigColorLevel = 0u;/*źŻɫ*/ UINT8 funSwitchGreenYellow = GetCiFunctionSwitchConfig(CI_FUNCTION_SWITCH_SHOW_SIGNAL_GreenYellow);/*ʾ̻ƹܿǷ*/ - UINT8 ciType = GetLocalCiType(); + UINT8 ciType = 0U; UINT8 signalState = 0U; UINT16 bufIndex = 0U; UINT8 funSwitchALLCloseUseBlue = GetCiFunctionSwitchConfig(FUNC_SWITCH_ZX_ALLCLOSE_USEBLUE);/*ƾתƹܿ*/ UINT8 chBlueDsFlag = FLAG_UNSET; + UINT8 chSigBelongRtuId = 0U; bufIndex = GetSignalConfigBufIndex(signalId); /*ȡ±*/ belongOcId = (UINT8)GetSignalBelongOcId(signalId);/*ȡźŻOc id*/ - + chSigBelongRtuId = GetSignalBelongVirCiId(signalId);/*ȡźŻrtu id*/ + ciType = GetLocalVirCiType(chSigBelongRtuId); if ((0u < belongOcId) && (OC_SUM_MAX> belongOcId)) { /*m_OcToCiOrginDataArr[belongOcId].OcDevices*/ @@ -948,7 +1010,7 @@ UINT8 GetOcBoardFaultSignalColor(UINT16 signalId, UINT8 ocId) /*ƣȡ֮ǰɫ*/ /*֮ǰЧ*/ - if (SIGNAL_SHOWCOLOUR_INVALID == sigPreDriveColor) + if (SIGNAL_DRIVECOLOUR_NULL == sigPreDriveColor) { rtnSigColor = SIGNAL_SHOWCOLOUR_REDCLOSE; } @@ -2564,7 +2626,6 @@ void SignalRelayToDeviceStateProc(void) UINT16 detainRelayId = 0u;/*۳̵ID*/ UINT8 relayBelongCIId = 0u;/*̵ID*/ UINT8 relayCollState = 0u;/*̵ɼ״̬*/ - UINT8 signalType = 0u;/*źŻ*/ UINT8 signalBlockOpenColor = 0u;/*źŻ󱸿ɫ*/ UINT8 commState = 0u;/*ͨ״̬*/ /*Ƿ̵ּ֧ӿ*/ @@ -2792,8 +2853,7 @@ void SignalRelayToDeviceStateProc(void) lxRelaySta = GetRelayCollState(lxRelayId);/*źŻгźż̵ɼ״̬*/ if (RELAY_STATE_UP == lxRelaySta) { - signalType = GetSignalType(signalId);/*ȡźŻ*/ - signalBlockOpenColor = GetSignalBlockOpenColorValue((UINT16)signalType);/*ȡźŻ󱸿ɫ*/ + signalBlockOpenColor = GetSignalBlockOpenColorValue(signalId);/*ȡźŻ󱸿ɫ*/ (void)SetSignalCurColor(signalId, signalBlockOpenColor);/*źŻǰɫ*/ } @@ -6113,7 +6173,7 @@ void PhySecRelayToDeviceStateProc(void) } } - +#if 0 /* * μḴλ̵״̬ * ˵ void @@ -6355,6 +6415,7 @@ void PhySecResetToRelayStateProc(void) } } } +#endif /* * μḴλ̵״̬ * ˵ void @@ -6365,7 +6426,7 @@ void PhySecResetToRelayStateProc_Vir(UINT8 virCIid) UINT8 const functionId = EFUNC_PHYSEC_RESET_TO_RELAY_STATE_PROC; /**/ UINT16 phySecId = 0u; /*ID*/ UINT16 ii = 0u; - UINT16 retValid = CI_ERROR; /*ܸλ̵״̬ЧֵĬΪЧ*/ + UINT8 retValid = CI_ERROR; UINT8 retGeneralResetFlag = CI_PHYSEC_GENERAL_RESET_NO; UINT8 localCi = 0u;/*CI*/ UINT16 relayZFWId = 0u; /*ܸλ̵ID*/ @@ -6381,20 +6442,18 @@ void PhySecResetToRelayStateProc_Vir(UINT8 virCIid) UINT8 checkRelayRes = CI_TIME_OUT; UINT8 checkZFWValidRes = CI_TIME_OUT; UINT8 checkZFWcmdRes = CI_TIME_OUT; - UINT8 tmpRet = CI_ERROR; UINT8 occupyState = 0u; /*ռ״̬*/ UINT32 startCycNum = 0u; /*ʼں*/ UINT8 resetType = 0u; /*Ḵλ*/ - UINT8 preResetState = 0u; /*Ԥλ״̬*/ UINT8 overTimeCheck = 0u; UINT8 belongVirCIid = 0u; UINT8 chCurSystemAreaState = 0U; /*ϵͳǰ״̬*/ - + UINT16 wPhySecCurSum = 0U; localCi = GetSystemParaLocalCiId(); relayZFWId = GetZFWRelayId_UseVirCI(localCi, virCIid); /*ܸλ̵ID*/ retGeneralResetFlag = GetVirCIZfwFlag(virCIid); /*ȡμܸλ̵״̬Ч*/ chCurSystemAreaState = GetLocalCiBackUpPattern(); - if (relayZFWId > 0u) + if (0U < relayZFWId) { relayZFWState = GetRelayCollState(relayZFWId); /*ZFWJ̵ɼ״̬*/ relayDrvAddrA = GetRelayDrvAddrA(relayZFWId); /*ZFWJ̵Aϵַ*/ @@ -6411,35 +6470,27 @@ void PhySecResetToRelayStateProc_Vir(UINT8 virCIid) {/*ɼZFWJ*/ if (CI_PHYSEC_GENERAL_RESET_YES == retGeneralResetFlag) {/*ɼZFWJյܸλ*/ - tmpRet = SetRelayStateUpdateCycNum(relayZFWId, 0u); /*ZFWܸλ̵Чʼں*/ - if (CI_ERROR == tmpRet) - { - /**/ - retValid = CI_ERROR; + (void)SetRelayStateUpdateCycNum(relayZFWId, 0u); /*ZFWܸλ̵Чʼں*/ + checkZFWValidRes = SystemOverTimeCheck(rZFWValidCycNum, GetZFWJRelayDriveTimeCount()); + if (CI_TIME_NO == checkZFWValidRes) + {/*δʱʼ*/ + SetVirCIZfwValidCycNum(virCIid, curCycNum); /*ZFWܸλЧ*/ + /*Чִмܸλ*/ + (void)SetRelayDriveState(relayZFWId, RELAY_STATE_UP);/*üܸλ̵*/ + + } + else if (CI_TIME_OUT == checkZFWValidRes) + {/*ܸλʱ*/ + SetVirCIZfwValidCycNum(virCIid, 0u); /*ZFWܸλЧ*/ + /*ִȡܸλ*/ + SetPhySecZfwManage(virCIid, CI_PHYSEC_GENERAL_RESET_NO); /*μܸλ̵״̬Ч*/ + (void)SetRelayDriveState(relayZFWId, RELAY_STATE_DOWN);/*üܸλ̵*/ + } else - { - checkZFWValidRes = SystemOverTimeCheck(rZFWValidCycNum, GetZFWJRelayDriveTimeCount()); - if (CI_TIME_NO == checkZFWValidRes) - {/*δʱʼ*/ - SetVirCIZfwValidCycNum(virCIid, curCycNum); /*ZFWܸλЧ*/ - /*Чִмܸλ*/ - (void)SetRelayDriveState(relayZFWId, RELAY_STATE_UP);/*üܸλ̵*/ - retValid = CI_SUCCESS; - } - else if (CI_TIME_OUT == checkZFWValidRes) - {/*ܸλʱ*/ - SetVirCIZfwValidCycNum(virCIid, 0u); /*ZFWܸλЧ*/ - /*ִȡܸλ*/ - SetPhySecZfwManage(virCIid, CI_PHYSEC_GENERAL_RESET_NO); /*μܸλ̵״̬Ч*/ - (void)SetRelayDriveState(relayZFWId, RELAY_STATE_DOWN);/*üܸλ̵*/ - retValid = CI_ERROR; - } - else - {/*Чִмܸλ*/ - (void)SetRelayDriveState(relayZFWId, RELAY_STATE_UP);/*üܸλ̵*/ - retValid = CI_SUCCESS; - } + {/*Чִмܸλ*/ + (void)SetRelayDriveState(relayZFWId, RELAY_STATE_UP);/*üܸλ̵*/ + } } else @@ -6447,28 +6498,23 @@ void PhySecResetToRelayStateProc_Vir(UINT8 virCIid) checkRelayRes = SystemOverTimeCheck(relayZFWCycNum, ZFWJ_REYLAY_VALID_CYCLE_NUM); if (CI_TIME_NO == checkRelayRes) {/*δʱʼ*/ - tmpRet = SetRelayStateUpdateCycNum(relayZFWId, curCycNum);/*ZFWJܸλ̵Ч*/ - if (CI_ERROR == tmpRet) - { - /**/ - retValid = CI_ERROR; - } + (void)SetRelayStateUpdateCycNum(relayZFWId, curCycNum);/*ZFWJܸλ̵Ч*/ } else if (CI_TIME_OUT == checkRelayRes) {/*ܸλʱ*/ - if ((relayDrvAddrA > 0u) && (relayDrvPosA > 0u) && (relayDrvAddrB > 0u) && (relayDrvPosB > 0u)) + if ((0U < relayDrvAddrA) && (0U < relayDrvPosA) && (0U < relayDrvAddrB) && (0U < relayDrvPosB)) {/*ûZFWJڲɼZFWJʱӸֵصıʾܸλ̵ߡ*/ - retValid = CI_ERROR; + SetVirCIZfwHunxianFlag(virCIid, ZFWJ_HUN_XIAN_YES); } else - {/*δZFWJɼԼִмḴλ*/ - retValid = CI_SUCCESS; + { + /*δZFWJ*/ } } else - {/*δʱ*/ - retValid = CI_ERROR; + { + /*δʱ*/ } SetVirCIZfwValidCycNum(virCIid, 0u); /*ZFWܸλЧ*/ /*ִȡܸλ*/ @@ -6476,115 +6522,112 @@ void PhySecResetToRelayStateProc_Vir(UINT8 virCIid) } } else - {/*ɼZFWJ£ִмḴλ߼*/ - retValid = CI_ERROR; - tmpRet = SetRelayStateUpdateCycNum(relayZFWId, 0u); /*ZFWܸλ̵Чʼں*/ - if (CI_ERROR == tmpRet) - { - /**/ - } - else - { - SetVirCIZfwValidCycNum(virCIid, 0u); /*ZFWܸλЧ*/ - if (CI_PHYSEC_GENERAL_RESET_YES == retGeneralResetFlag) - {/*Чִмܸλ*/ - /*յܸλʼ*/ - checkZFWcmdRes = SystemOverTimeCheck(rZFWcmdStartCycNum, ZFWJ_REYLAY_VALID_CYCLE_NUM); - if (CI_TIME_OUT == checkZFWcmdRes) - {/*ܸλʱ*/ - /*Чִмܸλ*/ - SetPhySecZfwManage(virCIid, CI_PHYSEC_GENERAL_RESET_NO); /*ܸλЧ*/ - (void)SetRelayDriveState(relayZFWId, RELAY_STATE_DOWN);/*üܸλ̵*/ - } - else - {/*δʱ*/ - (void)SetRelayDriveState(relayZFWId, RELAY_STATE_UP);/*üܸλ̵*/ - } - } - else - {/*Чִмܸλ*/ + { + /*ɼZFWJ*/ + (void)SetRelayStateUpdateCycNum(relayZFWId, 0u); /*ZFWܸλ̵Чʼں*/ + SetVirCIZfwValidCycNum(virCIid, 0u); /*ZFWܸλЧ*/ + if (CI_PHYSEC_GENERAL_RESET_YES == retGeneralResetFlag) + {/*Чִмܸλ*/ + /*յܸλʼ*/ + checkZFWcmdRes = SystemOverTimeCheck(rZFWcmdStartCycNum, ZFWJ_REYLAY_VALID_CYCLE_NUM); + if (CI_TIME_OUT == checkZFWcmdRes) + {/*ܸλʱ*/ + /*Чִмܸλ*/ + SetPhySecZfwManage(virCIid, CI_PHYSEC_GENERAL_RESET_NO); /*ܸλЧ*/ (void)SetRelayDriveState(relayZFWId, RELAY_STATE_DOWN);/*üܸλ̵*/ } + else + {/*δʱ*/ + (void)SetRelayDriveState(relayZFWId, RELAY_STATE_UP);/*üܸλ̵*/ + } + } + else + {/*Чִмܸλ*/ + (void)SetRelayDriveState(relayZFWId, RELAY_STATE_DOWN);/*üܸλ̵*/ } } } else - {/*ܸλ̵ִмḴλ*/ - retValid = CI_SUCCESS; + { + /*ܸλ̵ִмḴλ*/ } - if (CI_SUCCESS == retValid) - {/*ЧִмḴλ*/ - for (ii = 0u; ii < GetPhySecCurSum(); ii++) - { - retValid = CI_ERROR; /*ܸλ̵״̬ЧֵλΪЧ*/ - phySecId = GetPhySecId(ii);/*ȡID*/ - belongVirCIid = GetPhySecBelongVirCiId(phySecId); + /*ִмḴλ/Ԥλ*/ + wPhySecCurSum = GetPhySecCurSum(); + for (ii = 0u; ii < wPhySecCurSum; ii++) + { + phySecId = GetPhySecId(ii); /*ȡID*/ + belongVirCIid = GetPhySecBelongVirCiId(phySecId); - if (SYSTEM_WORK_MODE_MAIN != chCurSystemAreaState) + if (SYSTEM_WORK_MODE_MAIN != chCurSystemAreaState) + { + /*ǰϵͳΪϵüḴλʼںΪ0Ḵλ*/ + SetPhySecResetStartCycNum(phySecId, 0U); + } + else + { + ; + } + startCycNum = GetPhySecResetStartCycNum(phySecId); + if ((startCycNum > 0u) && (belongVirCIid == virCIid)) /*Ḵλ*/ + { + occupyState = GetPhySecCurOccupyState(phySecId); + if (SECTION_OCCUPY_NO == occupyState) /*ɼ*/ { - /*ǰϵͳΪϵüḴλʼںΪ0Ḵλ*/ - SetPhySecResetStartCycNum(phySecId, 0U); + SetPhySecResetStartCycNum(phySecId, 0u);/*޸ļḴλʼں*/ + (void)SetRelayDriveState(GetPhySecFWRelayId(phySecId), RELAY_STATE_DOWN);/*üḴλ̵*/ } - else + else /*ɼռ*/ { - ; - } - startCycNum = GetPhySecResetStartCycNum(phySecId); - if ((startCycNum > 0u) && (belongVirCIid == virCIid)) /*Ḵλ*/ - { - occupyState = GetPhySecCurOccupyState(phySecId); - if (SECTION_OCCUPY_NO == occupyState) /*ɼ*/ + occupyState = GetPhySecCurTxOccupyState(phySecId); /*m by yt޸ȱݣʼͨųռãڼḴλУͨųռúδ⣬202283*/ + if (LOGICSECTION_OCCUPY_TX == occupyState) /*ͨųռ*/ { SetPhySecResetStartCycNum(phySecId, 0u);/*޸ļḴλʼں*/ (void)SetRelayDriveState(GetPhySecFWRelayId(phySecId), RELAY_STATE_DOWN);/*üḴλ̵*/ + SetErrorData(functionId, CI_DEVICE_TYPE_PHYSEC, phySecId, ETYPE_PS_NO_UT_CT_OCU_STATE, occupyState, ESEND_LEVEL_ATS); } - else /*ɼռ*/ + else { - occupyState = GetPhySecCurTxOccupyState(phySecId); /*m by yt޸ȱݣʼͨųռãڼḴλУͨųռúδ⣬202283*/ - if (LOGICSECTION_OCCUPY_TX == occupyState) /*ͨųռ*/ - { + overTimeCheck = SystemOverTimeCheck(GetPhySecResetStartCycNum(phySecId), GetSystemParaSectionResetCount()); + if (CI_TIME_OUT == overTimeCheck) + {/*μḴλʱ*/ + SetPhySecResetStartCycNum(phySecId, 0u);/*޸ļḴλʼں*/ (void)SetRelayDriveState(GetPhySecFWRelayId(phySecId), RELAY_STATE_DOWN);/*üḴλ̵*/ - SetErrorData(functionId, CI_DEVICE_TYPE_PHYSEC, phySecId, ETYPE_PS_NO_UT_CT_OCU_STATE, occupyState, ESEND_LEVEL_ATS); +#if 0 + SetCiSendCmdBackInfoData(CI_BACK_PSEC_RESET_ERROR, CI_DEVICE_TYPE_PHYSEC, phySecId, 0u, 0u);/*Ḵλʧ*/ +#endif } else { - overTimeCheck = SystemOverTimeCheck(GetPhySecResetStartCycNum(phySecId), GetSystemParaSectionResetCount()); - if (CI_TIME_OUT == overTimeCheck) - {/*μḴλʱ*/ - - SetPhySecResetStartCycNum(phySecId, 0u);/*޸ļḴλʼں*/ - (void)SetRelayDriveState(GetPhySecFWRelayId(phySecId), RELAY_STATE_DOWN);/*üḴλ̵*/ -#if 0 - SetCiSendCmdBackInfoData(CI_BACK_PSEC_RESET_ERROR, CI_DEVICE_TYPE_PHYSEC, phySecId, 0u, 0u);/*Ḵλʧ*/ -#endif - + resetType = GetPhySecSectionResetType(phySecId); + if (PHYSICAL_SECTION_PRE_RESET_YES != resetType) + { + retValid = GetZFWValidByPhySecId(phySecId); /*Ḵλμܸλ̵״̬Ч*/ } else { - retValid = GetZFWValidByPhySecId(phySecId); /*ȡμܸλ̵״̬Ч*/ - if (CI_SUCCESS == retValid) /*ЧִмḴλ*/ - { - resetType = GetPhySecSectionResetType(phySecId); + retValid = CI_SUCCESS; /*ԤλܸλЧ*/ + } - if ((PHYSICAL_SECTION_PRE_RESET_NO == resetType) || (PHYSICAL_SECTION_PRE_RESET_YES == resetType)) /*ֱӸλԤλ*/ - { - (void)SetRelayDriveState(GetPhySecFWRelayId(phySecId), RELAY_STATE_UP);/*üḴλ̵ʱ̵*/ - } - else /**/ - { - SetPhySecResetStartCycNum(phySecId, 0u);/*޸ļḴλʼں*/ - (void)SetRelayDriveState(GetPhySecFWRelayId(phySecId), RELAY_STATE_DOWN);/*üḴλ̵*/ - } + if (CI_SUCCESS == retValid) /*ЧִмḴλ*/ + { + if ((PHYSICAL_SECTION_PRE_RESET_NO == resetType) || (PHYSICAL_SECTION_PRE_RESET_YES == resetType)) /*ֱӸλԤλ*/ + { + (void)SetRelayDriveState(GetPhySecFWRelayId(phySecId), RELAY_STATE_UP);/*üḴλ̵ʱ̵*/ } - else /*Ч*/ + else /**/ { SetPhySecResetStartCycNum(phySecId, 0u);/*޸ļḴλʼں*/ (void)SetRelayDriveState(GetPhySecFWRelayId(phySecId), RELAY_STATE_DOWN);/*üḴλ̵*/ - SetCiSendCmdBackInfoData(CI_BACK_PSEC_RESET_ZFW_ERROR, CI_DEVICE_TYPE_PHYSEC, phySecId, 0u, 0u);/*Ḵλʧܣܸλ̵*/ } } + else /*Ч*/ + { + SetPhySecResetStartCycNum(phySecId, 0u);/*޸ļḴλʼں*/ + (void)SetRelayDriveState(GetPhySecFWRelayId(phySecId), RELAY_STATE_DOWN);/*üḴλ̵*/ + SetCiSendCmdBackInfoData(CI_BACK_PSEC_RESET_ZFW_ERROR, CI_DEVICE_TYPE_PHYSEC, phySecId, 0u, 0u);/*Ḵλʧܣܸλ̵*/ + } } } } @@ -7861,13 +7904,12 @@ UINT8 WashMachineDevToRelayStaProc(void) UINT16 WashTrainRequestRelayId = 0u; /*ϴ̵*/ UINT16 TrainHeadStopSteadyRelayId = 0u; /*ͷͣȼ̵*/ UINT16 TrainTailStopSteadyRelayId = 0u; /*βͣȼ̵*/ + UINT16 wCoupingStopSteadyRelayId = 0u; /*Ҷͣȼ̵*/ UINT16 pauseTrainWashRelayId = 0u; /*ͣϴ̵*/ UINT16 passRequestRelayId = 0u; /*̵ͨ*/ UINT8 retVal = CI_SUCCESS; UINT8 lineIdentity = 0u; /*CI-VOBCӿڱʶ*/ - UINT8 xtaLogicState = 0u;/*ϴͬⰴť߼״̬*/ - lineIdentity = GetCiFunctionSwitchConfig(VOBC_INTERFACE_IDENTITY);/*ȡCI-VOBCӿڱʶ*/ washMachineSum = GetWashMachineSum(); /*ȡϴǰ*/ @@ -7985,6 +8027,41 @@ UINT8 WashMachineDevToRelayStaProc(void) /*δøü̵ִ*/ } + } + if (CI_SUCCESS == retVal) + { + wCoupingStopSteadyRelayId = GetCoupingStopSteadyRelayId(washMachineId); /*ȡҶͣȼ̵*/ + + if (0u != wCoupingStopSteadyRelayId) + {/*Ҷϴλͣȼ̵IDЧ*/ + if (WASHMACHINE_TAIL_STEADY_YES == GetCoupingStopSteadyDrvState(washMachineId)) + { + if (CI_ERROR == SetRelayDriveState(wCoupingStopSteadyRelayId, RELAY_STATE_UP)) + {/*Ҷͣȼ̵*/ + retVal = CI_ERROR; + } + } + else if (WASHMACHINE_TAIL_STEADY_NO == GetCoupingStopSteadyDrvState(washMachineId)) + { + if (CI_ERROR == SetRelayDriveState(wCoupingStopSteadyRelayId, RELAY_STATE_DOWN)) + {/*Ҷͣȼ̵*/ + retVal = CI_ERROR; + } + + } + else + { + if (CI_ERROR == SetRelayDriveState(wCoupingStopSteadyRelayId, RELAY_STATE_DOWN)) + {/*Ҷͣȼ̵*/ + retVal = CI_ERROR; + } + } + } + else + { + /*δøü̵ִ*/ + } + } if (CI_SUCCESS == retVal) { @@ -8227,8 +8304,15 @@ UINT8 EsbRelayToDeviceStateProc(void) } } - /*ͬվť·ť״̬*/ - OnePlatEsbAndCutBtnProc(); + if (FUNC_SWITCH_ESB_NINGXIANG_RAIL == funcswitchZfsBtn) + { + /*ͬվť·ť״̬*/ + OnePlatEsbAndCutBtnProc(); + } + else + { + /**/ + } return reVal; } @@ -9414,7 +9498,6 @@ void WashMachinePassButtonUpdate(const UINT16 washMachineId) UINT8 chDownWashButtonGzType = CI_TIME_OUT; /*ģʽϴͬⰴťϳʱ*/ UINT8 chDownWashReqState = WASH_REQ_STATE_ALLOW_NO; /*ģʽϴ״̬*/ UINT32 dwDownWashPassReqCycle = 0U; /*ģʽϴ*/ - UINT32 dwDownWashApplyCycle = 0U; /*ģʽϴʼ*/ UINT32 dwWashButtonPressCycle = 0U; /*ϴͬⰴťʼ*/ UINT32 dwSelfCollSnCount = GetSelfButCollCount(); /*ԸʽťӦ̵ɼЧ*/ UINT32 dwZfsBtnFaultCycNum = GetSelfButErrCount(); /*Ըʽ۳//ͬⰴť/ģʽϴͬⰴť/ģʽͨͬⰴťжʱ*/ @@ -9908,6 +9991,7 @@ UINT8 WashMachineToDeviceStateProc(void) UINT16 headWashAllowRelayId = 0u; /*ϴͷϴ̵ID*/ UINT16 emergencyStopRelayId = 0u; /*ϴгͣID*/ UINT16 tailWashAllowRelayId = 0u; /*ϴβϴ̵ID*/ + UINT16 coupingWashAllowRelayId = 0u; /*ϴҶϴ̵ID*/ UINT16 outWashTrainPortAllowRelayId = 0u; /*ϴϴ̵ID*/ UINT8 ret = CI_SUCCESS; UINT8 lineIdentity = 0u; /*CI-VOBCӿڱʶ*/ @@ -10030,6 +10114,41 @@ UINT8 WashMachineToDeviceStateProc(void) } } + if (CI_SUCCESS == ret) + { + /*Ҷϴ״̬*/ + coupingWashAllowRelayId = GetCoupingWashAllowRelayId(washMachineId); + if (0U != coupingWashAllowRelayId) + { + /*ϴҶϴ̵IDЧ*/ + relayCollState = GetRelayCollState(coupingWashAllowRelayId); + if (RELAY_STATE_UP == relayCollState) + { + retRsult = SetCoupingWashAllowState(washMachineId, WASHMACHINE_COL_COUPINGWASH_YES); + if (CI_ERROR == retRsult) + { + ret = CI_ERROR; + } + } + else if (RELAY_STATE_DOWN == relayCollState) + { + retRsult = SetCoupingWashAllowState(washMachineId, WASHMACHINE_COL_COUPINGWASH_NO); + if (CI_ERROR == retRsult) + { + ret = CI_ERROR; + } + } + else + { + ret = CI_ERROR; + } + } + else + { + /*øü̵ִ*/ + } + } + if (CI_SUCCESS == ret) { /*ϴ״̬*/ @@ -11078,8 +11197,6 @@ void RouteDCTYRelayToDeviceStateProc(void) UINT16 routeId = 0U; /*·ID*/ UINT8 localCi = 0U; UINT8 belongCi = 0U; - UINT8 tmpExecRes = CI_ERROR;/*ʱִн*/ - UINT8 reVal = CI_ERROR;/*ֵ*/ UINT16 routeDCTYId = 0U;/*̵ͬid*/ UINT8 relayCollState = 0U;/*̵ɼ״̬*/ UINT8 chRouteType = 0U; /*·*/ @@ -11266,7 +11383,6 @@ void SetNoDriveSignalCurColor(const UINT16 signalId) UINT16 replxRelayId = 0u; /*ʾгźż̵ID*/ UINT16 ddRelayId = 0u; /*Ƽ̵ID*/ UINT8 blockOpenColor = 0u; /*ģʽҪɫ*/ - UINT8 signalType = 0u; /*źŻƵ·*/ UINT8 repLxRelaySta = RELAY_STATE_DOWN; /*ʾгźż̵״̬*/ firDsRelayId = GetSignalFirstDsRelayId(signalId); /*ȡźŻ1˿̵ID*/ @@ -11280,7 +11396,6 @@ void SetNoDriveSignalCurColor(const UINT16 signalId) blueRelayId = GetSignalBlueRelayId(signalId); /*Ƽ̵ID*/ replxRelayId = GetSignalRepLxRelayId(signalId); ddRelayId = GetSignalDdRelayId(signalId); /*ȡźŻƼ̵ID*/ - signalType = GetSignalType(signalId); /*ȡźŻ߼*/ repLxRelaySta = GetRelayCollState(replxRelayId); /*ȡʾгźż̵̵״̬*/ /*ֻвɼжϳLXJ̵IDȫΪ0u人5-8*/ @@ -11291,7 +11406,7 @@ void SetNoDriveSignalCurColor(const UINT16 signalId) if (RELAY_STATE_UP == repLxRelaySta) { /*ȡźŻģʽɫ*/ - blockOpenColor = GetSignalBlockOpenColorValue((UINT16)signalType); + blockOpenColor = GetSignalBlockOpenColorValue(signalId); /*õɫ*/ (void)SetSignalCurColor(signalId, blockOpenColor); } @@ -12796,7 +12911,7 @@ void EsbRelateDelayDriveOutputProc(void) { if (FUNC_SWITCH_ON == funcswitchZfsBtn) { - /***** Ըʽ/·ESB̵ *****/ + /***** ԸʽESB̵ *****/ /*1.ԸʽESB̵״̬*/ esbBuzzRelayId = GetEsbBuzzRelayId(esbId); if ((0u < esbBuzzRelayId) && (UINT16_MAX > esbBuzzRelayId)) @@ -15133,6 +15248,9 @@ void SetAllSingleSwitchCurPosition(UINT16 switchCurSum) UINT16 ii = 0U; /*ѭ*/ UINT8 chSwitchColPos = SWITCH_POSITION_INVALID; /*ǰλ*/ UINT8 chSwitchTolPos = SWITCH_POSITION_INVALID; /*̺λ*/ + UINT8 ocId = 0u; + UINT8 chLocalCiOCSswitch = 0u; + chLocalCiOCSswitch = GetLocalCiOCSswitch(); localCiId = GetSystemParaLocalCiId(); /*ȡID*/ for (ii = 0U; ii < switchCurSum; ii++) { @@ -15147,10 +15265,21 @@ void SetAllSingleSwitchCurPosition(UINT16 switchCurSum) if ((belongCiId == localCiId) && (0U != localCiId)) { - chSwitchColPos = GetOcSwitchState(switchId); - SetSwitchCollPos(switchId, chSwitchColPos); - chSwitchTolPos = GetSwitchCollToleratePos(switchId); - SetSingleSwitchCurPosition(switchId, chSwitchTolPos);/*õλ*/ + /*ͨ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);/*õλ*/ + } } } } @@ -16885,39 +17014,62 @@ void PsdExceptOpenProc(void) UINT8 cPsdState = 0U; /*PSD״̬*/ UINT16 wPsdRelPhySecId = 0U; /*PSDID*/ UINT8 cPhySecMerOccState = 0U; /*վ̨ںռ״̬*/ - + UINT8 startLockFlag = 0U;/*ϵ־*/ + UINT8 chCancleExceptType = GetCiFunctionSwitchConfig(FUNC_PSD_EXCEPT_CANCLE_TYPE);/*ȡ쳣ʽ*/ + UINT8 chCancleCheck = CI_ERROR;/*Ƿ쳣״̬*/ + startLockFlag = GetStartLockFlag(); wPsdCurNum = GetPsdSum(); - for (ii = 0U; ii < wPsdCurNum; ii++) + /*ʼδ쳣á˹ȡ*/ + if (CI_START_LOCK_NO == startLockFlag) { - wPsdId = GetPsdId(ii); - cPsdVirtualAttr = GetPsdVirtualAttribute(wPsdId); /*ȡPSD*/ - if (PSD_VIRTUAL_ATTR_NO == cPsdVirtualAttr) + for (ii = 0U; ii < wPsdCurNum; ii++) { - cPsdMutualLockRemoveState = GetPsdMutualLockRemoveState(wPsdId); /*ȡPSD״̬*/ - if (PSD_MUTUALLOCK_REMOVE_NO == cPsdMutualLockRemoveState) + wPsdId = GetPsdId(ii); + chCancleCheck = CI_ERROR; + cPsdVirtualAttr = GetPsdVirtualAttribute(wPsdId); /*ȡPSD*/ + if(PSD_VIRTUAL_ATTR_NO == cPsdVirtualAttr) { - cPsdState = GetPsdState(wPsdId); /*ȡPSD״̬*/ - wPsdRelPhySecId = GetPsdRelatedPhySecId(wPsdId); - cPhySecMerOccState = GetPhySecCurMergeState(wPsdRelPhySecId); - if ((PSD_STATE_OPEN == cPsdState) && (SECTION_OCCUPY_YES != cPhySecMerOccState)) + cPsdMutualLockRemoveState = GetPsdMutualLockRemoveState(wPsdId); /*ȡPSD״̬*/ + if ((PSD_MUTUALLOCK_REMOVE_YES == cPsdMutualLockRemoveState) || (PSD_ATS_MUTUALLOCK_REMOVE_YES == cPsdMutualLockRemoveState) + || (PSD_ATS_AND_JD_MUTUALLOCK_REMOVE_YES == cPsdMutualLockRemoveState)) { - SetPsdExceptOpenState(wPsdId, PSD_EXCEPT_OPEN_YES); /*PSDδռãPSD쳣*/ + chCancleCheck = CI_SUCCESS;/*ȡ*/ } else { - SetPsdExceptOpenState(wPsdId, PSD_EXCEPT_OPEN_NO); /*PSDδ쳣*/ + cPsdState = GetPsdState(wPsdId); /*ȡPSD״̬*/ + wPsdRelPhySecId = GetPsdRelatedPhySecId(wPsdId); + cPhySecMerOccState = GetPhySecCurMergeState(wPsdRelPhySecId); + if ((PSD_STATE_CLOSE != cPsdState) && (SECTION_OCCUPY_YES != cPhySecMerOccState)) + { + SetPsdExceptState(wPsdId, PSD_EXCEPT_YES); /*PSDδռãPSD쳣ȡ*/ + chCancleCheck = CI_ERROR; + } + else + { + chCancleCheck = CI_SUCCESS; + } + } + + if ((CI_SUCCESS == chCancleCheck) && (PSD_EXCEPT_CANCLE_RCI == chCancleExceptType)) + { + SetPsdExceptState(wPsdId, PSD_EXCEPT_NO); /*PSDδ쳣򿪣Զ쳣PSDδ쳣*/ + } + else + { + ;/*ά쳣򿪻δԶȡ쳣ATS쳣*/ } } else { - SetPsdExceptOpenState(wPsdId, PSD_EXCEPT_OPEN_NO); /*PSDδ쳣*/ + SetPsdExceptState(wPsdId, PSD_EXCEPT_NO); /*PSDPSDδ쳣*/ } } - else - { - SetPsdExceptOpenState(wPsdId, PSD_EXCEPT_OPEN_NO); /*PSDPSDδ쳣*/ - } } + else + { + ;/*δ 쳣*/ + } } /* @@ -17736,4 +17888,633 @@ void OnePlatEsbAndCutBtnProc(void) /*ɴ֧*/ } } +} + +/* +* ȡǰδ쳣򿪵վ̨ŵ쳣״̬ +* ˵ const UINT16 doorIdID +* ֵ +*Create fan 2026.03.26 +*/ +void CancelPsdExceptState(UINT16 doorId) +{ + UINT8 chPsdState = 0U; + UINT8 chPsdPlState = 0U;/*Ż״̬*/ + UINT8 chExceptCheck = CI_ERROR;/*ɷȡ쳣*/ + UINT16 wPsdRelPhySecId = 0U; /*PSDID*/ + UINT8 cPhySecMerOccState = 0U; /*վ̨ںռ״̬*/ + chPsdPlState = GetPsdMutualLockRemoveState(doorId); + chPsdState = GetPsdState(doorId); + if (CI_ERROR != chPsdPlState) + { + /*ɷȡ쳣״̬*/ + if ((PSD_MUTUALLOCK_REMOVE_YES == chPsdPlState) || (PSD_ATS_MUTUALLOCK_REMOVE_YES == chPsdPlState) || (PSD_ATS_AND_JD_MUTUALLOCK_REMOVE_YES == chPsdPlState)) + { + /*Ż*/ + chExceptCheck = CI_SUCCESS; + } + else if (PSD_STATE_CLOSE == chPsdState) + { + /*Ź*/ + chExceptCheck = CI_SUCCESS; + } + else + { + wPsdRelPhySecId = GetPsdRelatedPhySecId(doorId); + cPhySecMerOccState = GetPhySecCurMergeState(wPsdRelPhySecId); + if (SECTION_OCCUPY_YES == cPhySecMerOccState) + { + chExceptCheck = CI_SUCCESS; + } + else + { + /*վ̨δռáҴʱ ޷ȡ*/ + chExceptCheck = CI_ERROR; + } + } + if (CI_SUCCESS == chExceptCheck) + { + SetPsdExceptState(doorId, PSD_EXCEPT_NO); + } + else + { + ;/*޷ȡ쳣ıԤ*/ + } + } + else + { + ;/*ȡʧ*/ + } +} + +/* +* ٲõǰOC +* ˵ UINT16 switchCurSum +* ֵ +* add by mpt 20260326 +*/ +void SetAllSwitchCurMainControlOC(UINT16 switchCurSum) +{ + UINT8 localCiId = 0U; /*ID*/ + UINT16 switchId = 0U; /*ID*/ + UINT8 belongCiId = 0U; /*ID*/ + UINT16 ii = 0U; /*ѭ*/ + UINT8 ocId = 0u; + UINT8 chOcCotrolMode = 0U; + UINT8 otherOcId = 0U; + UINT8 chOtherOcCotrolMode = 0U; + + localCiId = GetSystemParaLocalCiId(); /*ȡID*/ + for (ii = 0U; ii < switchCurSum; ii++) + { + switchId = 0U; /*ID*/ + belongCiId = 0U; /*ID*/ + + switchId = GetSwitchId(ii); /*ȡID*/ + + if ((0U != switchId) && (SWITCH_SUM_MAX > switchId)) + { + belongCiId = GetSwitchBelongCiId(switchId); /*ȡID*/ + + if ((belongCiId == localCiId) && (0U != localCiId)) + { + SetOcSwitchControlState(switchId);/*õOC״̬*/ + + ocId = GetSwitchIncludeOCId(switchId, 0u); + chOcCotrolMode = GetSwitchThisOcCotrolMode(switchId, ocId); + + otherOcId = GetSwitchThisOcOtherOCId(switchId, ocId); + chOtherOcCotrolMode = GetSwitchThisOcCotrolMode(switchId, otherOcId); + + if ((MAIN_CONTROL == chOcCotrolMode) && (STANDBY_CONTROL == chOtherOcCotrolMode)) + { + SetSwitchMainCotrolOCId(switchId, ocId);/*õǰOC*/ + } + else if ((STANDBY_CONTROL == chOcCotrolMode) && (MAIN_CONTROL == chOtherOcCotrolMode)) + { + SetSwitchMainCotrolOCId(switchId, otherOcId);/*õǰOC*/ + } + else + { + SetSwitchMainCotrolOCId(switchId, 0u);/*ÿڽOC״̬*/ + } + + } + else + { + /*޴*/ + } + } + else + { + /*޴*/ + } + } +} + +/* +* õÿһOC״̬ +* ˵ + UINT16 switchIdid +* ֵ void +* add by mpt 20260326 +*/ +void SetOcSwitchControlState(UINT16 switchId) +{ + UINT8 i = 0u; + UINT16 j = 0u; + UINT8 k = 0u; + UINT8 chIncludeOcNum = 0u; + UINT8 ocId = 0u; + UINT8 mainControlNum = 0u; + UINT8 chStanbyControlNum = 0u; + UINT8 chNoControlfunNum = 0u; + UINT8 chSwitchThisOCBoardNum = 0u; + UINT8 transmitState = 0u; + UINT8 chThisOcCotrolMode = 0U; + + chIncludeOcNum = GetSwitchIncludeOcNum(switchId); + + for (i = 0u; i < chIncludeOcNum; i++) + { + mainControlNum = 0u; + chStanbyControlNum = 0u; + chNoControlfunNum=0u; + ocId = GetSwitchIncludeOCId(switchId, i); + transmitState = GetCiTransmitState(CI_SYSTEM_TYPE_OC, ocId);/*OCͨ״̬ñͷ*/ + if (0u < ocId) + { + chSwitchThisOCBoardNum = GetSwitchThisOCBoardNum(switchId, ocId); + for (j = 0u; j < m_SwitchNum; j++) + { + if ((m_Switches[j].DeviceId == switchId)&&(m_Switches[j].OcId== ocId)) + { + for (k = 0u; k < m_Switches[j].BoardNum; k++) + { + if (MAIN_CONTROL == m_Switches[j].MainStandbyState[k]) + { + mainControlNum++; + } + else if (STANDBY_CONTROL == m_Switches[j].MainStandbyState[k]) + { + chStanbyControlNum++; + } + else if (NO_CONTROL_FUN == m_Switches[j].MainStandbyState[k]) + { + chNoControlfunNum++; + } + else + { + /*޴*/ + } + } + + if (m_Switches[j].BoardNum == chSwitchThisOCBoardNum) + {/*֤OCĺCIһ*/ + if (m_Switches[j].BoardNum == mainControlNum) + {/*ת޻嶼,OCͰ忨ȡİ忨*/ + SetSwitchThisOcCotrolMode(switchId, ocId, MAIN_CONTROL); + } + else if (m_Switches[j].BoardNum == chStanbyControlNum) + {/*ת޻嶼*/ + chThisOcCotrolMode = GetSwitchThisOcCotrolMode(switchId, ocId); + if (MAIN_CONTROL == chThisOcCotrolMode) + { + SetSwitchOutMainContrCmdCycNum(switchId, ocId, 0u);/*֮ǰأǰͨжϵµıز뱾֧ΪͨжϴģѾ*/ + } + SetSwitchThisOcCotrolMode(switchId, ocId, STANDBY_CONTROL); + + } + else if (m_Switches[j].BoardNum == chNoControlfunNum) + {/*ת޻嶼*/ + SetSwitchThisOcCotrolMode(switchId, ocId, NO_CONTROL_FUN); + } + else + {/*ֱΪ״̬*/ + SetSwitchThisOcCotrolMode(switchId, ocId, ERR_MODE_CONTROL); + } + } + else + {/*룬÷֧*/ + if (TRANSMIT_STATE_GOOD == transmitState) + {/*пܰ忨ûȫ*/ + SetSwitchThisOcCotrolMode(switchId, ocId, ERR_MODE_CONTROL); + } + else + {/*ͨжϣͳһش*/ + SetSwitchThisOcCotrolMode(switchId, ocId, STANDBY_CONTROL); + } + } + break; + } + } + } + } +} + +/* +* OC״̬ +* ˵ void +* ֵ void +* add by mpt 20260328 +*/ +void OcSwitchControlModeCmdOutput(void) +{ + UINT16 switchCurSum = 0u; /*Ŀ*/ + UINT8 localCiId = 0u; /*ID*/ + UINT16 switchId = 0u; /*ID*/ + UINT16 ii = 0u; /*ѭ*/ + + + switchCurSum = GetSwitchCurSum(); /*ȡ*/ + localCiId = GetSystemParaLocalCiId(); /*ȡID*/ + + + for (ii = 0u; ii < switchCurSum; ii++) + { + switchId = GetSwitchId(ii); /*ȡID*/ + + if ((0u < switchId) && (SWITCH_SUM_MAX > switchId)) + { + /*ģ*/ + OutSwitchControlModeCmd(switchId); + + /*˫״̬Уģ*/ + SwitchDoubleMainProtect(switchId); + + /*Ѱ*/ + FindSwitchPostionCmdOut(switchId); + } + } +} + +/* +* OCɴ +* ˵ UINT16 switchId ID +* ֵ void +* add by mpt 20260328 +*/ +void OutSwitchControlModeCmd(UINT16 switchId) +{ + UINT8 ocId = 0u; + UINT8 chPlusBoxSateState = 0u; + UINT8 chOCBoardState = 0U; + UINT8 otherOcId = 0u; + UINT32 chCurCycleNum = 0u; + UINT8 i = 0u; + UINT8 chSwitchIncludeOcNum = 0u; + UINT8 chOcCotrolMode = 0U; + UINT8 chOtherOcCotrolMode = 0U; + UINT8 chThisOcCmd = 0U; + UINT8 chOtherOcCmd = 0U; + + + chCurCycleNum = Get2oo2CurCycleNum(); + ocId = GetSwitchMainCotrolOCId(switchId);/*ȡOCID*/ + + if (0u < ocId) + {/*ǰOC*/ + chPlusBoxSateState = GetSwitchOcPlusBoxSateState(switchId, ocId); + chOCBoardState = GetSwitchThisOCBoardState(switchId, ocId); + otherOcId = GetSwitchThisOcOtherOCId(switchId, ocId); + if((SWITCH_BOX_NORMAL == chPlusBoxSateState)&&(SWITCH_BOARD_NORMAL == chOCBoardState)) + { + /*ά֮ǰ,ˢں*/ + SetSwitchThisOcOutControlCmd(switchId, ocId, MAIN_CONTROL); + SetSwitchOutMainContrCmdCycNum(switchId, ocId, chCurCycleNum); + + /*һOC*/ + SetSwitchThisOcOutControlCmd(switchId, otherOcId, STANDBY_CONTROL); + + } + else + {/*ɱ*/ + SetSwitchThisOcOutControlCmd(switchId, ocId, STANDBY_CONTROL); + SetSwitchThisOcOutControlCmd(switchId, otherOcId, STANDBY_CONTROL); + } + } + else + {/*ǰ,DzܴOCа忨DZһOCְ忨ְ忨Ҳ֧*/ + + 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); + + + chThisOcCmd = GetSwitchThisOcOutControlCmd(switchId, ocId); + chOtherOcCmd = GetSwitchThisOcOutControlCmd(switchId, otherOcId); + + if ((STANDBY_CONTROL == chThisOcCmd) && (STANDBY_CONTROL == chOtherOcCmd)) + {/*֮ǰ˫*/ + if ((STANDBY_CONTROL == chOcCotrolMode) && (STANDBY_CONTROL == chOtherOcCotrolMode)) + {/*ǰ˫״̬*/ + /*ǰOC*/ + SwitchMainControlCmdOut(switchId, ocId); + } + else + {/*OC*/ + SetSwitchThisOcOutControlCmd(switchId, ocId, STANDBY_CONTROL); + } + } + else + {/*ѾʼˣҪOCؼ*/ + if ((STANDBY_CONTROL == chOtherOcCotrolMode) && (STANDBY_CONTROL == chOtherOcCmd)) + {/*OCΪ,Ϊ*/ + /*ǰOC*/ + SwitchMainControlCmdOut(switchId, ocId); + } + else + {/*OC*/ + SetSwitchThisOcOutControlCmd(switchId, ocId, STANDBY_CONTROL); + } + } + } + } +} + +/* +* ʱ +* ˵ UINT16 switchId +* ֵ void +* add by mpt 20260328 +*/ +void SwitchMainControlCmdOut(UINT16 switchId,UINT8 ocId) +{ + UINT8 chPlusBoxSateState = 0U; + UINT8 chOCBoardState = 0U; + UINT8 otherOcId = 0u; + UINT32 chOutMainContrCmdCycNum = 0U; + UINT32 dwSwitchOutputDrvCmdCycNum = 0U;/*·*/ + UINT32 dwDrvCutMaxCycNum = 0u; + UINT8 timeCheckRet = 0u; + UINT32 chCurCycleNum = 0u; + UINT8 ret = CI_ERROR; + + + chCurCycleNum = Get2oo2CurCycleNum(); + + chPlusBoxSateState = GetSwitchOcPlusBoxSateState(switchId, ocId); + chOCBoardState = GetSwitchThisOCBoardState(switchId, ocId); + otherOcId = GetSwitchThisOcOtherOCId(switchId, ocId); + + if ((SWITCH_BOX_NORMAL == chPlusBoxSateState) && (SWITCH_BOARD_NORMAL == chOCBoardState)) + {/*˫ϵ忨*/ + if (0u < otherOcId) + {/*һOC*/ + chOutMainContrCmdCycNum = GetSwitchOutMainContrCmdCycNum(switchId, otherOcId); + if (0U < chOutMainContrCmdCycNum) + {/*ǰһOC*/ + dwDrvCutMaxCycNum = GetSwitchMachineCutInterval();/*δڼлʱ*/ + timeCheckRet = SystemOverTimeCheck(chOutMainContrCmdCycNum, dwDrvCutMaxCycNum); + + if ((CI_TIME_OUT == timeCheckRet)&&(0u= dwSystemUpdateMainUseCycNum) { - dwRemainValidiy = HLHTCommonMsgRemainingValidity(dwTimeOutCout, dwCurCycleNum, dwCiCurappCycleTime, gSzRcAxleHLHTHeadCtxs[axisSysId].sourceRecvOppMsgSN, gSzRcAxleHLHTHeadCtxs[axisSysId].sourceCrntOwnMsgSN, gSzRcAxleHLHTHeadCtxs[axisSysId].sourcePreOwnMsgSN, gSzRcAxleHLHTHeadCtxs[axisSysId].sourceComPeriod); - dwSystemUpdateMainUseCycNum = GetSystemUpdateMainUseCycNum(); - /*ͨñͷУϷ*/ - if (gSzRcAxleHLHTHeadCtxs[axisSysId].sourceRecvOppMsgSN >= dwSystemUpdateMainUseCycNum) - { - /* RCᱨͷЧԷյһRCںŴڵں */ - } - else - { - debug_infor_printf((const)"\nProcessAxleToCiData Error CI HLHTCommonMsgRemainingValidity Fail,sourceRecvOppMsgSN = %d,dwRemainValidiy = %d \n", gSzRcAxleHLHTHeadCtxs[axisSysId].sourceRecvOppMsgSN, dwRemainValidiy); - /* RCᱨͷЧ*/ - dwRemainValidiy = -1; - } - } - - if (0 < dwRemainValidiy) - { - if ((axisSysId < AXIS_TO_CI_SUM_MAX) && (dwCurCycleNum == axisToCiDataStru[axisSysId].dwLastRecvDataCycNum)) - { - /*CIAXISͨ*/ - for (jj = 0u; jj < axisToCiDataStru[axisSysId].SectionSum; jj++) - { - secId = axisToCiDataStru[axisSysId].axisDataStr[jj].PhySecId; - colAxisRelaySta = axisToCiDataStru[axisSysId].axisDataStr[jj].gdRelayState; - - if (RELAY_STATE_UP == colAxisRelaySta) - { - secOccupySta = SECTION_OCCUPY_NO; - } - else if (RELAY_STATE_DOWN == colAxisRelaySta) - { - secOccupySta = SECTION_OCCUPY_YES; - } - else - { - secOccupySta = SECTION_OCCUPY_YES; - } - (void)SetPhySecCurAxisGdOccupyState(secId, secOccupySta); - - /*Ԥλ*/ - acFty = GetCiFunctionSwitchConfig(FUNC_SWITCH_AC_FACTORY); - if (AXIS_TYPE_KEANDA == acFty) - { - if (RELAY_STATE_UP == axisToCiDataStru[axisSysId].axisDataStr[jj].PreResetRst) - { - /*Ԥλ̵*/ - SetPhySecPreResetState(secId, PHYSICAL_SECTION_PRE_RESET_YES); /*üԤλ״̬Ч*/ - } - else if (RELAY_STATE_DOWN == axisToCiDataStru[axisSysId].axisDataStr[jj].PreResetRst) - { - /*Ԥλ̵*/ - SetPhySecPreResetState(secId, PHYSICAL_SECTION_PRE_RESET_NO); /*üԤλ״̬Ч*/ - } - else - { - /*쳣ֵ*/ - SetPhySecPreResetState(secId, PHYSICAL_SECTION_PRE_RESET_NO); /*üԤλ״̬Ч*/ - } - - /*ưֱӸλ״̬ӿڣΪ˼ḴλͳһóЧ*/ - SetPhySecDirectResetState(secId, PHYSICAL_DIRECT_RESET_NO); /*üֱӸλ״̬Ч*/ - } - else if (AXIS_TYPE_FUHAOSHENG == acFty) - { - if ((RELAY_STATE_UP == axisToCiDataStru[axisSysId].axisDataStr[jj].PreResetRst) - && (RELAY_STATE_UP == axisToCiDataStru[axisSysId].axisDataStr[jj].chDirectResetRst)) - { - /*ԤλλͬʱЧ쳣*/ - SetPhySecPreResetState(secId, PHYSICAL_SECTION_PRE_RESET_NO); /*üԤλ״̬Ч*/ - SetPhySecDirectResetState(secId, PHYSICAL_DIRECT_RESET_NO); /*üֱӸλ״̬Ч*/ - SetPhySecPreResetBack(secId, PHY_RESET_BACK_RECIVE_YES); - SetPhySecDirectResetBack(secId, PHY_RESET_BACK_RECIVE_YES); - } - else - { - if (RELAY_STATE_UP == axisToCiDataStru[axisSysId].axisDataStr[jj].PreResetRst) - { - /*Ԥλ̵*/ - SetPhySecPreResetState(secId, PHYSICAL_SECTION_PRE_RESET_YES); /*üԤλ״̬Ч*/ - } - else if (RELAY_STATE_DOWN == axisToCiDataStru[axisSysId].axisDataStr[jj].PreResetRst) - { - /*Ԥλ̵*/ - SetPhySecPreResetState(secId, PHYSICAL_SECTION_PRE_RESET_NO); /*üԤλ״̬Ч*/ - } - else - { - /*쳣ֵ*/ - SetPhySecPreResetState(secId, PHYSICAL_SECTION_PRE_RESET_NO); /*üԤλ״̬Ч*/ - } - - if (RELAY_STATE_UP == axisToCiDataStru[axisSysId].axisDataStr[jj].chPreResetBack) - { - /*Ԥλ-յ*/ - SetPhySecPreResetBack(secId, PHY_RESET_BACK_RECIVE_YES); - } - else if (RELAY_STATE_DOWN == axisToCiDataStru[axisSysId].axisDataStr[jj].chPreResetBack) - { - /**Ԥλ-δյ*/ - SetPhySecPreResetBack(secId, PHY_RESET_BACK_RECIVE_NO); - } - else - { - /*쳣ֵ*/ - SetPhySecPreResetBack(secId, PHY_RESET_BACK_RECIVE_YES); - } - - if (RELAY_STATE_UP == axisToCiDataStru[axisSysId].axisDataStr[jj].chDirectResetRst) - { - /*ֱӸλ̵*/ - SetPhySecDirectResetState(secId, PHYSICAL_DIRECT_RESET_YES); /*üֱӸλ״̬Ч*/ - } - else if (RELAY_STATE_DOWN == axisToCiDataStru[axisSysId].axisDataStr[jj].chDirectResetRst) - { - /*ֱӸλ̵*/ - SetPhySecDirectResetState(secId, PHYSICAL_DIRECT_RESET_NO); /*üֱӸλ״̬Ч*/ - } - else - { - /*쳣ֵ*/ - SetPhySecDirectResetState(secId, PHYSICAL_DIRECT_RESET_NO); /*üֱӸλ״̬Ч*/ - } - - if (RELAY_STATE_UP == axisToCiDataStru[axisSysId].axisDataStr[jj].chDirectResetBack) - { - /*ֱӸλ-յ*/ - SetPhySecDirectResetBack(secId, PHY_RESET_BACK_RECIVE_YES); - } - else if (RELAY_STATE_DOWN == axisToCiDataStru[axisSysId].axisDataStr[jj].chDirectResetBack) - { - /**ֱӸλ-δյ*/ - SetPhySecDirectResetBack(secId, PHY_RESET_BACK_RECIVE_NO); - } - else - { - /*쳣ֵ*/ - SetPhySecDirectResetBack(secId, PHY_RESET_BACK_RECIVE_YES); - } - } - - } - else if (AXIS_TYPE_STANDARD_INTERFACE == acFty) - { - if (RELAY_STATE_UP == axisToCiDataStru[axisSysId].axisDataStr[jj].PreResetRst) - { - /*Ԥλ̵*/ - SetPhySecPreResetState(secId, PHYSICAL_SECTION_PRE_RESET_YES); /*üԤλ״̬Ч*/ - } - else if (RELAY_STATE_DOWN == axisToCiDataStru[axisSysId].axisDataStr[jj].PreResetRst) - { - /*Ԥλ̵*/ - SetPhySecPreResetState(secId, PHYSICAL_SECTION_PRE_RESET_NO); /*üԤλ״̬Ч*/ - } - else - { - /*쳣ֵ*/ - SetPhySecPreResetState(secId, PHYSICAL_SECTION_PRE_RESET_NO); /*üԤλ״̬Ч*/ - } - - /*üֱӸλ״̬Ч-Ŀǰʹø״̬Ϊ߼ͳһ*/ - SetPhySecDirectResetState(secId, PHYSICAL_DIRECT_RESET_NO); - - /*ӿѾУ飬ֱ*/ - SetPhySecResetCmdTagBack(secId, axisToCiDataStru[axisSysId].axisDataStr[jj].chResetCmdTagBack); - } - else - { - ; /*ӿڲ*/ - } - } - - - } - else - { - ; - /**/ - } + /* RCᱨͷЧԷյһRCںŴڵں */ } else { - debug_infor_printf((const)"\nProcessAxleToCiData Error HLHTCommonMsgRemainingValidity Fail,\n"); - /*CIAXISͨжϣAXIS豸״̬ȫ*/ - dwCurCycNum = Get2oo2CurCycleNum(); - dwLastRecvAxisDataCycNum = GetCiTransmitRecvDataCycNum(localCiId, CI_SYSTEM_TYPE_AXIS, axisSysId); - dwCommBadEnsureCount = GetCiAndAxleTransBadEnsureCnt(); + debug_infor_printf((const)"\nProcessAxleToCiData Error CI HLHTCommonMsgRemainingValidity Fail,sourceRecvOppMsgSN = %d,dwRemainValidiy = %d \n", gSzRcAxleHLHTHeadCtxs[axisSysId].sourceRecvOppMsgSN, dwRemainValidiy); + /* RCᱨͷЧ*/ + dwRemainValidiy = -1; + } + } + + if (0 < dwRemainValidiy) + { + if ((axisSysId < AXIS_TO_CI_SUM_MAX) && (dwCurCycleNum == axisToCiDataStru[axisSysId].dwLastRecvDataCycNum) && (SYSTEM_WORK_MODE_MAIN == chCurSystemAreaState)) + { + /*CIAXISͨ*/ for (jj = 0u; jj < axisToCiDataStru[axisSysId].SectionSum; jj++) { secId = axisToCiDataStru[axisSysId].axisDataStr[jj].PhySecId; + colAxisRelaySta = axisToCiDataStru[axisSysId].axisDataStr[jj].gdRelayState; - (void)SetPhySecCurAxisGdOccupyState(secId, SECTION_OCCUPY_FAULT); - SetPhySecPreResetState(secId, PHYSICAL_SECTION_PRE_RESET_NO); /*üԤλ״̬Ч*/ - SetPhySecDirectResetState(secId, PHYSICAL_DIRECT_RESET_NO); /*üֱӸλ״̬Ч*/ - SetPhySecPreResetBack(secId, PHY_RESET_BACK_RECIVE_YES); - SetPhySecDirectResetBack(secId, PHY_RESET_BACK_RECIVE_YES); - - if (dwCurCycNum == (dwLastRecvAxisDataCycNum + dwCommBadEnsureCount + 1U)) + if (RELAY_STATE_UP == colAxisRelaySta) { - SetSecColOccupyStartCycNum(secId, dwCurCycNum); + secOccupySta = SECTION_OCCUPY_NO; + } + else if (RELAY_STATE_DOWN == colAxisRelaySta) + { + secOccupySta = SECTION_OCCUPY_YES; } else { - /*ͨжϵڸһβɼռʼ*/ + secOccupySta = SECTION_OCCUPY_YES; + } + (void)SetPhySecCurAxisGdOccupyState(secId, secOccupySta); + + /*Ԥλ*/ + acFty = GetCiFunctionSwitchConfig(FUNC_SWITCH_AC_FACTORY); + if (AXIS_TYPE_KEANDA == acFty) + { + if (RELAY_STATE_UP == axisToCiDataStru[axisSysId].axisDataStr[jj].PreResetRst) + { + /*Ԥλ̵*/ + SetPhySecPreResetState(secId, PHYSICAL_SECTION_PRE_RESET_YES); /*üԤλ״̬Ч*/ + } + else if (RELAY_STATE_DOWN == axisToCiDataStru[axisSysId].axisDataStr[jj].PreResetRst) + { + /*Ԥλ̵*/ + SetPhySecPreResetState(secId, PHYSICAL_SECTION_PRE_RESET_NO); /*üԤλ״̬Ч*/ + } + else + { + /*쳣ֵ*/ + SetPhySecPreResetState(secId, PHYSICAL_SECTION_PRE_RESET_NO); /*üԤλ״̬Ч*/ + } + + /*ưֱӸλ״̬ӿڣΪ˼ḴλͳһóЧ*/ + SetPhySecDirectResetState(secId, PHYSICAL_DIRECT_RESET_NO); /*üֱӸλ״̬Ч*/ + } + else if (AXIS_TYPE_FUHAOSHENG == acFty) + { + if ((RELAY_STATE_UP == axisToCiDataStru[axisSysId].axisDataStr[jj].PreResetRst) + && (RELAY_STATE_UP == axisToCiDataStru[axisSysId].axisDataStr[jj].chDirectResetRst)) + { + /*ԤλλͬʱЧ쳣*/ + SetPhySecPreResetState(secId, PHYSICAL_SECTION_PRE_RESET_NO); /*üԤλ״̬Ч*/ + SetPhySecDirectResetState(secId, PHYSICAL_DIRECT_RESET_NO); /*üֱӸλ״̬Ч*/ + SetPhySecPreResetBack(secId, PHY_RESET_BACK_RECIVE_YES); + SetPhySecDirectResetBack(secId, PHY_RESET_BACK_RECIVE_YES); + } + else + { + if (RELAY_STATE_UP == axisToCiDataStru[axisSysId].axisDataStr[jj].PreResetRst) + { + /*Ԥλ̵*/ + SetPhySecPreResetState(secId, PHYSICAL_SECTION_PRE_RESET_YES); /*üԤλ״̬Ч*/ + } + else if (RELAY_STATE_DOWN == axisToCiDataStru[axisSysId].axisDataStr[jj].PreResetRst) + { + /*Ԥλ̵*/ + SetPhySecPreResetState(secId, PHYSICAL_SECTION_PRE_RESET_NO); /*üԤλ״̬Ч*/ + } + else + { + /*쳣ֵ*/ + SetPhySecPreResetState(secId, PHYSICAL_SECTION_PRE_RESET_NO); /*üԤλ״̬Ч*/ + } + + if (RELAY_STATE_UP == axisToCiDataStru[axisSysId].axisDataStr[jj].chPreResetBack) + { + /*Ԥλ-յ*/ + SetPhySecPreResetBack(secId, PHY_RESET_BACK_RECIVE_YES); + } + else if (RELAY_STATE_DOWN == axisToCiDataStru[axisSysId].axisDataStr[jj].chPreResetBack) + { + /**Ԥλ-δյ*/ + SetPhySecPreResetBack(secId, PHY_RESET_BACK_RECIVE_NO); + } + else + { + /*쳣ֵ*/ + SetPhySecPreResetBack(secId, PHY_RESET_BACK_RECIVE_YES); + } + + if (RELAY_STATE_UP == axisToCiDataStru[axisSysId].axisDataStr[jj].chDirectResetRst) + { + /*ֱӸλ̵*/ + SetPhySecDirectResetState(secId, PHYSICAL_DIRECT_RESET_YES); /*üֱӸλ״̬Ч*/ + } + else if (RELAY_STATE_DOWN == axisToCiDataStru[axisSysId].axisDataStr[jj].chDirectResetRst) + { + /*ֱӸλ̵*/ + SetPhySecDirectResetState(secId, PHYSICAL_DIRECT_RESET_NO); /*üֱӸλ״̬Ч*/ + } + else + { + /*쳣ֵ*/ + SetPhySecDirectResetState(secId, PHYSICAL_DIRECT_RESET_NO); /*üֱӸλ״̬Ч*/ + } + + if (RELAY_STATE_UP == axisToCiDataStru[axisSysId].axisDataStr[jj].chDirectResetBack) + { + /*ֱӸλ-յ*/ + SetPhySecDirectResetBack(secId, PHY_RESET_BACK_RECIVE_YES); + } + else if (RELAY_STATE_DOWN == axisToCiDataStru[axisSysId].axisDataStr[jj].chDirectResetBack) + { + /**ֱӸλ-δյ*/ + SetPhySecDirectResetBack(secId, PHY_RESET_BACK_RECIVE_NO); + } + else + { + /*쳣ֵ*/ + SetPhySecDirectResetBack(secId, PHY_RESET_BACK_RECIVE_YES); + } + } + + } + else if (AXIS_TYPE_STANDARD_INTERFACE == acFty) + { + if (RELAY_STATE_UP == axisToCiDataStru[axisSysId].axisDataStr[jj].PreResetRst) + { + /*Ԥλ̵*/ + SetPhySecPreResetState(secId, PHYSICAL_SECTION_PRE_RESET_YES); /*üԤλ״̬Ч*/ + } + else if (RELAY_STATE_DOWN == axisToCiDataStru[axisSysId].axisDataStr[jj].PreResetRst) + { + /*Ԥλ̵*/ + SetPhySecPreResetState(secId, PHYSICAL_SECTION_PRE_RESET_NO); /*üԤλ״̬Ч*/ + } + else + { + /*쳣ֵ*/ + SetPhySecPreResetState(secId, PHYSICAL_SECTION_PRE_RESET_NO); /*üԤλ״̬Ч*/ + } + + /*üֱӸλ״̬Ч-Ŀǰʹø״̬Ϊ߼ͳһ*/ + SetPhySecDirectResetState(secId, PHYSICAL_DIRECT_RESET_NO); + + /*ӿѾУ飬ֱ*/ + SetPhySecResetCmdTagBack(secId, axisToCiDataStru[axisSysId].axisDataStr[jj].chResetCmdTagBack); + } + else + { + ; /*ӿڲ*/ } } - } + + } + else + { + ; + /**/ + } } - } - else - { - ; + else + { + debug_infor_printf((const)"\nProcessAxleToCiData Error HLHTCommonMsgRemainingValidity Fail,\n"); + /*CIAXISͨжϣAXIS豸״̬ȫ*/ + dwCurCycNum = Get2oo2CurCycleNum(); + dwLastRecvAxisDataCycNum = GetCiTransmitRecvDataCycNum(localCiId, CI_SYSTEM_TYPE_AXIS, axisSysId); + dwCommBadEnsureCount = GetCiAndAxleTransBadEnsureCnt(); + for (jj = 0u; jj < axisToCiDataStru[axisSysId].SectionSum; jj++) + { + secId = axisToCiDataStru[axisSysId].axisDataStr[jj].PhySecId; + + (void)SetPhySecCurAxisGdOccupyState(secId, SECTION_OCCUPY_FAULT); + SetPhySecPreResetState(secId, PHYSICAL_SECTION_PRE_RESET_NO); /*üԤλ״̬Ч*/ + SetPhySecDirectResetState(secId, PHYSICAL_DIRECT_RESET_NO); /*üֱӸλ״̬Ч*/ + SetPhySecPreResetBack(secId, PHY_RESET_BACK_RECIVE_YES); + SetPhySecDirectResetBack(secId, PHY_RESET_BACK_RECIVE_YES); + + if (dwCurCycNum == (dwLastRecvAxisDataCycNum + dwCommBadEnsureCount + 1U)) + { + SetSecColOccupyStartCycNum(secId, dwCurCycNum); + } + else + { + /*ͨжϵڸһβɼռʼ*/ + } + } + } + } } else { - ; /*ϵ*/ + ; } + } /* @@ -959,6 +967,8 @@ void ProcessOcToCiData(void) UINT8 chSwitchZzjIndex = 0U; UINT8 chOcId = 0U; UINT8 transmitState = 0U; + UINT8 chThisOcCotrolMode = 0u; + localCiId = GetSystemParaLocalCiId(); curCycle = Get2oo2CurCycleNum(); @@ -1004,6 +1014,12 @@ void ProcessOcToCiData(void) { pTempOc->OcDevices[jj].szSwitchIncldeZzjState[chSwitchZzjIndex] = OC_SWITCH_POSITION_SIKAI; } + + for (kk = 0u; kk < MAX_OC_SWITCH_INCLUDE_BOARD_NUM; kk++) + { + pTempOc->OcDevices[jj].MainStandbyState[kk] = STANDBY_CONTROL;/*Ȩ*/ + } + } else { @@ -1012,6 +1028,14 @@ void ProcessOcToCiData(void) } + /*ͨжϣò*/ + for (jj = 0u; jj < pTempOc->chPbNum; jj++) + { + /* */ + pTempOc->szPlusBox[jj].chAsState = SWITCH_BOX_FAULT; + } + + /*תźŻ״̬*/ for (jj = 0u; jj < CI_SIGNAL_MAX; jj++) { @@ -1041,6 +1065,28 @@ void ProcessOcToCiData(void) { m_Switches[jj].szSwitchIncldeZzjState[j] = OC_SWITCH_POSITION_SIKAI;/*Ŀ*/ } + + for (j = 0U; j < MAX_OC_SWITCH_INCLUDE_BOARD_NUM; j++) + { + m_Switches[jj].MainStandbyState[j] = STANDBY_CONTROL;/**/ + } + + SetSwitchOcPlusBoxSateState(m_Switches[jj].DeviceId, 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); + } + + /*ͨжϽ״̬Ϊزں*/ + chThisOcCotrolMode = GetSwitchThisOcCotrolMode(m_Switches[jj].DeviceId, 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زʱʱһʱ*/ + } + } } @@ -1083,7 +1129,6 @@ void ProcessOcToCiData(void) SetAllCleFarePCBButKeepSta(pTempOc->OcId,QK_PSD_BUTTON_STATE_UP); /*OCͨжϣϢ*/ - SetOcToCiDefaultDataStru(ii); } @@ -1308,13 +1353,11 @@ void ProcessZcToCiData(void) UINT16 floodId = 0u; UINT8 dianshiLinshixiansuFlag = 0u; UINT8 jizhongqulsxsFlag = 0u;/*ZCͨжϺǷüʱٿ 0x55 0xaa*/ - UINT8 labourCancelLinShiXian = 0u; UINT16 signalCurSum = 0u; UINT16 logicSecCurSum = 0u; UINT16 axisSecCurSum = 0u; UINT16 phySecCurSum = 0u; UINT16 routeCurSum = 0u; - UINT8 logSecLinShiXianSuSetState = 0u; UINT8 phySecJumpDelayUnlockFlag = 0u; UINT8 belongCiId = 0u; UINT16 garagedoorSum = 0u; @@ -1329,7 +1372,7 @@ void ProcessZcToCiData(void) UINT16* pAxisSectionIdBuf = NULL;/*ζӦID*/ UINT8 cTsrSureFlag = CI_TSR_SURE_NO; ZcToCiDataStruct* pZcToCiDataStru = NULL; /*ZCϢݽṹ*/ - UINT8 indIcatorDevId = 0U; /*ָʾ豸ID*/ + UINT16 indIcatorDevId = 0U; /*ָʾ豸ID*/ UINT16 wNonAutoReturnCurSum = 0U;/*۷ǰ*/ localCiId = GetSystemParaLocalCiId(); @@ -1403,6 +1446,8 @@ void ProcessZcToCiData(void) tmpPhyId = GetAxisSecRelativePhySecId(deviceId); SetPhySecArbState(tmpPhyId,AXIS_SECTION_ARB_NO); + + SetAxisSecArbStateZc(deviceId, AXIS_SECTION_ARB_NO); } phySecCurSum = GetPhySecCurSum(); for (ii = 0u; ii < phySecCurSum; ii++) @@ -1460,6 +1505,9 @@ void ProcessZcToCiData(void) } } + + /*տѹṹ*/ + SetCbtcCrossInfo(0u, NULL, NULL); } /*else if( TRANSMIT_STATE_GOOD == GetCiTransmitState(CI_SYSTEM_TYPE_ZC, 0u))*/ else if(1U == dataValidFlag) @@ -1519,6 +1567,7 @@ void ProcessZcToCiData(void) { SetAxisJumpLockState(pAxisSectionIdBuf[jj], AXIS_SECTION_JUMPLOCK_STATE_IDLE);/*ͨжüԾ״̬Ϊ*/ (void)SetAxisSecJumpLockApplyCylce(pAxisSectionIdBuf[jj], 0U);/*Ծں*/ + SetAxisRelProSwitchLockSta(pAxisSectionIdBuf[jj], SWITCH_LOCK_PROTECT_CANCEL);/*ȡ*/ } } } @@ -1644,6 +1693,25 @@ void ProcessZcToCiData(void) { /**/ } + + /*ZC͵CBTCгѹϢ*/ + if (CI_SUCCESS == reVal) + { + if ((1u == dataValidFlag) && (ALL_CBTC_CROSS_SUM_MAX >= pZcToCiDataStru->wCbtcCrossNum)) + { + /**/ + SetCbtcCrossInfo(pZcToCiDataStru->wCbtcCrossNum, + pZcToCiDataStru->wCbtcCrossSignalId, pZcToCiDataStru->wCbtcCrossTrainId); + } + else + { + reVal = CI_ERROR; + } + } + else + { + /**/ + } } } #endif @@ -1791,33 +1859,15 @@ void ProcessVobcToCiData(void) UINT8 ii = 0u; UINT8 jj = 0u; UINT8 kk = 0u; - UINT16 wRouteIndex = 0u; - UINT16 wRouteSum = 0u; UINT8 vobcToCiDataSum = GetVobcToCiSum(); VobcToCiDataStruct* vobcToCiDataStru = GetVobcToCiDataStru(); UINT8 chLineIdentity = GetCiFunctionSwitchConfig(VOBC_INTERFACE_IDENTITY);/*ȡ·ʶ*/ UINT8 dataValid = 0u; - UINT8 bufIndex = 0u; - UINT16 psdId = 0u; UINT8 localCiId = 0u; - UINT8 belongCiId = 0u; - UINT8 deviceSum =0u;/*ͨ豸*/ - UINT8* deviceIdBuf = NULL;/*ͨ豸ID*/ - UINT8 platformId = 0u; - UINT16 platformPsdId = 0u; - UINT16 wRouteId = 0u; - UINT16 wTrainId = 0u; - UINT32 dwDelayTime = 0u; - UINT32 dwVobcBrkTime = 0u; - UINT16 phySecCurSum = 0u; - UINT16 deviceId = 0u; - UINT8 funRet = CI_ERROR; UINT8 getResult = CI_ERROR; UINT32 dwCurCycNum = 0U; UINT32 dwTransmitBadEnsureCount = 0U; /*CIVOBCͨжжʱ*/ - UINT8 cTrainReportState = 0U; - UINT8 cCheckFlag = CI_ERROR; localCiId = GetSystemParaLocalCiId(); @@ -1872,6 +1922,10 @@ void ProcessVobcToCiData(void) ClearPsdVobcContext(vobcToCiDataStru[ii].VobcId); break; } + if (TRAIN_MAIN_MODE != vobcToCiDataStru[ii].controlMode) + {/*أ*/ + vobcToCiDataStru[ii].PsdData[jj].CmdType = 0u; + } if ((PSD_INVALID_ID != vobcToCiDataStru[ii].PsdData[jj].PsdId)&&(TRAIN_MAIN_MODE ==vobcToCiDataStru[ii].controlMode)) {/*PSD IDЧ*/ @@ -2027,7 +2081,7 @@ void ProcessVobcToCiData(void) /*ϴVOBC״̬*/ ClearWashVobcDriveState(&(vobcToCiDataStru[ii])); - /*гӿϢ*/ + /*гӿϢ--ʽϢ*/ VobcConnectDataClear(vobcToCiDataStru[ii].VobcId); /*ɾVOBCCI*/ @@ -2339,7 +2393,6 @@ UINT8 ProcessAtsOrXianDiToCiData(void) UINT32 commandId = 0u; /*id*/ UINT16 terminalId = 0u; /*նid*/ UINT16 ii = 0u; /*α*/ - UINT8 localCiType = GetLocalCiType(); UINT8 checkRetVal = CI_FALSE; UINT16 cmd_idx = 0u; UINT16 wATSToCiCmdReturnToTRCurSum = 0u;/*źؿĿ*/ @@ -2363,7 +2416,6 @@ UINT8 ProcessAtsOrXianDiToCiData(void) UINT8 startFLockFlag =0u; UINT8 startLockFlag = 0u; UINT8 ciTrainTestState =0u; - UINT8 allSwitchYLockFlag = 0u; UINT8 OrderCheckReVal = 0u; UINT8 belongVirCIid = 0u; UINT8 virCiID = 0u; @@ -2385,6 +2437,7 @@ UINT8 ProcessAtsOrXianDiToCiData(void) UINT8 jkjRelayValidFlag = 0U; UINT8 chCldAndScxMergeFlag = 0U; UINT8 interfaceType = 0U; + UINT8 chVirtualAttribute = 0U; localCiId = GetSystemParaLocalCiId(); /*ȡID*/ /*ATS*/ @@ -4469,6 +4522,16 @@ UINT8 ProcessAtsOrXianDiToCiData(void) checkRetVal = AFFIRM_FAIL; } + break; + case ATS_CMD_CANCEL_PSD_EXCEPT:/*쳣*/ + belongVirCIid = GetPsdbelongVirCIid(CmdDeviceId); + chVirtualAttribute = GetPsdVirtualAttribute(CmdDeviceId); + OrderCheckReVal = CheckOrderWhetherDoing(virCiID, belongVirCIid, cmdType, CmdDeviceId);/*ִܷ*/ + if((CI_SUCCESS == OrderCheckReVal)&& (PSD_VIRTUAL_ATTR_NO == chVirtualAttribute)) + { + /*վ̨ 鲢δ쳣*/ + (void)CancelPsdExceptState(CmdDeviceId); + } break; default: localVirCiType = GetLocalVirCiType(virCiID); @@ -4862,8 +4925,6 @@ UINT8 MaskDataProcess(const UINT8 systemType,const UINT8* maskBuf, const UINT16 UINT16 ii = 0u; /*α*/ UINT16 jj = 0u; UINT16 maskConfigSum = 0u; /*λλ*/ - UINT8 indicatorContainRelaySum = 0u;/*ʾư̵Ŀ*/ - UINT16* indicatorContainRelayIdBuf = NULL;/*ʾư̵ID*/ UINT8 returnValue = CI_SUCCESS;/*ֵĬϳɹ*/ UINT8 funcSwitchJumpLockDriveSwitch = 0u;/*ܿأԾǷ*/ @@ -4878,7 +4939,6 @@ UINT8 MaskDataProcess(const UINT8 systemType,const UINT8* maskBuf, const UINT16 UINT16 *pPhyAxisIDBuf = NULL; UINT16 numAxisHaveJumpLockApply = 0u;/*Ծ*/ UINT8 applyFlag = 0u;/*־*/ - UINT8 chRtnIndcDevId = 0U;/*۷ָʾ豸ID*/ ciid = GetSystemParaLocalCiId();/*ȡID*/ phyNum = GetPhySecCurSum(); @@ -4989,10 +5049,12 @@ UINT8 MaskDataProcess(const UINT8 systemType,const UINT8* maskBuf, const UINT16 if (1U == maskBuf[ii]) { SetAxisSecArbState(DeviceId, AXIS_SECTION_ARB_YES); /*ARB*/ + SetAxisSecArbStateZc(DeviceId, AXIS_SECTION_ARB_YES); } else { SetAxisSecArbState(DeviceId, AXIS_SECTION_ARB_NO); /*δARB*/ + SetAxisSecArbStateZc(DeviceId, AXIS_SECTION_ARB_NO); } break; case MASK_TYPE_LIECHE_STOPSTATE:/*гͣϢ״̬λ*/ @@ -5310,7 +5372,7 @@ void ProcessCiToCiData(void) if (0U != chMainMode) { ClearNearRCISendInfo(tranCiIdBuf[jj], chMainMode); - debug_infor_printf((const)"\ProcessCiToCiData Near CI%x %d TRANSMIT_STATE_BAD.\n", chMainMode, tranCiIdBuf[jj]); + debug_infor_printf((const)"\n ProcessCiToCiData Near CI%x %d TRANSMIT_STATE_BAD.\n", chMainMode, tranCiIdBuf[jj]); } else { @@ -6587,6 +6649,8 @@ static void HLHTVOBCDataProc(VobcToCiDataStruct* vobcToCiDataStru) { ClearVobcStopSteadyData(vobcToCiDataStru->VobcId); StopSteadyDataProc(vobcToCiDataStru); /*VOBCͣϢ*/ + /*VOBCʽϢ*/ + VobcBlocLinkDataProc(vobcToCiDataStru); } } /* @@ -6604,8 +6668,6 @@ static void StopSteadyDataProc(VobcToCiDataStruct* vobcToCiDataStru) UINT8 utOrCtOccFlag = SECTION_OCCUPY_YES; UINT8 phyBelongCiId = 0u; UINT8 chRCMode = GetLocalRcWorkMode(); - UINT8 chControlMode = 0U; - UINT8 chMainControl = 0u; if (NULL != vobcToCiDataStru) { if (VOBC_CI_STOP_TW == vobcToCiDataStru->trainStopSteadyState) @@ -8245,14 +8307,6 @@ static void ResetCiDevStateHlht(UINT8 const ciId) void ClearPsdVobcContext(const UINT16 vobcId) { UINT16 bufIndex = 0u; /*±*/ - UINT16 psdId = 0u; - UINT8 ii = 0u; - UINT8 jj = 0u; - UINT8 deviceSum =0u;/*ͨ豸*/ - UINT8* deviceIdBuf = NULL;/*ͨ豸ID*/ - UINT8 platformId = 0u; - UINT8 psdSum = 0u; - UINT16 platformPsdId = 0u; for(bufIndex=0u;bufIndexcouplingWashStopSteadyInfo) + { + /*βͣЧ*/ + SetCoupingStopSteadyDrvState(washMachineId, WASHMACHINE_TAIL_STEADY_YES); + } + else + { + SetCoupingStopSteadyDrvState(washMachineId, WASHMACHINE_TAIL_STEADY_NO); + } + if (WASHMACHINE_PAUSE_DRVREQ_TRUE == vobcToCiDataStru->washPauseRequest) { /*ͣϴЧ*/ @@ -10015,6 +10073,7 @@ void ClearWashVobcDriveState(VobcToCiDataStruct* vobcToCiDataStru) SetWashTrainRequestDrvState(washMachineId, WASHMACHINE_DRVSTATE_REQ_FALSE); SetTrainHeadStopSteadyDrvState(washMachineId, WASHMACHINE_HEAD_STEADY_NO); SetTrainTailStopSteadyDrvState(washMachineId, WASHMACHINE_TAIL_STEADY_NO); + SetCoupingStopSteadyDrvState(washMachineId, WASHMACHINE_COUPING_STEADY_NO); SetPauseTrainWashRequestDrvSta(washMachineId, WASHMACHINE_PAUSE_DRVREQ_FALSE); SetPassWashMachineReqtDrvSta(washMachineId, PASS_WASHMACHINE_DRVREQ_FALSE); SetWashMachineWorkModeDrvState(washMachineId, WASHMACHINE_WORKMODE_INVALID_DRV); @@ -11510,12 +11569,18 @@ void ProcessOcToCiRelayDiffData(void) } else { - /*λɼһ̳ʱ¼*/ - pTempIODiffData[i].OcId = (UINT8)ocId; /*OC ID*/ - pTempIODiffData[i].LocalBoardAdd[pTempIODiffData[i].DiffPointNum] = BoardAddress_ForProcess;/*λӦİ忨ַ*/ - pTempIODiffData[i].OtherBoardAdd[pTempIODiffData[i].DiffPointNum] = BoardAddress_ForProcessOther;/*ϵ忨ַ*/ - pTempIODiffData[i].TheDiffPoint[pTempIODiffData[i].DiffPointNum] = k + 1u;/*һµĵλ*/ - pTempIODiffData[i].DiffPointNum++; /*λ*/ + if (IO_COLL_DIFF_MAX > pTempIODiffData[i].DiffPointNum) + { + /*λɼһ̳ʱ¼*/ + pTempIODiffData[i].OcId = (UINT8)ocId; /*OC ID*/ + pTempIODiffData[i].LocalBoardAdd[pTempIODiffData[i].DiffPointNum] = BoardAddress_ForProcess;/*λӦİ忨ַ*/ + pTempIODiffData[i].OtherBoardAdd[pTempIODiffData[i].DiffPointNum] = BoardAddress_ForProcessOther;/*ϵ忨ַ*/ + pTempIODiffData[i].TheDiffPoint[pTempIODiffData[i].DiffPointNum] = k + 1u;/*һµĵλ*/ + pTempIODiffData[i].DiffPointNum++; /*λ*/ + } + else + {/**/ + } } } else @@ -11611,6 +11676,18 @@ void ProcessCiAndRcInfo(void) /*DZRC*/ } } + else if (CI_SYSTEM_TYPE_RC == CI_SYSTEM_TYPE_RCI) + { + if (cLocalCiId == pTransDecIdBuf[ii]) + { + /*RC뱾CIͨжϣZCѹϢ*/ + SetCbtcCrossInfo(0u, NULL, NULL); + } + else + { + /*DZCI*/ + } + } else { /**/ @@ -12179,17 +12256,12 @@ void SignalInfoMergeDeal(void) static void ProcessVobcToRcData(void) { UINT16 ii = 0U; - UINT8 jj = 0U; UINT8 chValid = CI_ERROR; - UINT8 mainValid = CI_ERROR; - UINT8 headCheck = CI_ERROR; - UINT8 psdCmdCode = 0U; - UINT8 cRcWorkMode = 0U; UINT8 vobcToRcDataSum = 0u; UINT32 dwDelayTime = 0U; UINT32 dwVobcBrkTime = 0U; - UINT8 funRet = 0u; + UINT8 tempVobcNum = 0U; vobcToRcDataSum = GetVobcToRcSum(); @@ -12261,15 +12333,11 @@ static void ProcessVobcToRcData(void) static void VobcInputRefreshTrain(const VobcToRcDataStruct stvobcToRcData) { UINT16 wTrainId = 0U; - UINT32 dwCurCycle = 0U; - UINT8 chIndex = 0U; - TrainEaStru szTmp[EA_MAX_NUM] = { 0U }; UINT8 chRet = 0U; wTrainId = ((UINT16)(CI_SYSTEM_TYPE_VOBC * 256U)) + stvobcToRcData.VobcId; - chRet = SetTrainTransmitStat(wTrainId, TRAIN_COMM_STATE_GOOD); chRet &= SetVobcTrainDir(wTrainId, stvobcToRcData.trainDirection); chRet &= SetVobcTrainSpeed(wTrainId, stvobcToRcData.wTrainSpeed); chRet &= SetVobcTrainSpeedDir(wTrainId, stvobcToRcData.chSpeedDir); @@ -12292,7 +12360,6 @@ static void VobcInputRefreshTrain(const VobcToRcDataStruct stvobcToRcData) SetVobcTrainMode(wTrainId, stvobcToRcData.chTrainMode);/*гʻģʽ*/ - SetTrainMsgFromTiocId(wTrainId, 0U); if (CI_ERROR == chRet) { @@ -12315,7 +12382,7 @@ static void VobcToRcDataClear(const UINT16 wTrainId) if ((TRAIN_SUM_MAX > wTrainId) && (0U < wTrainId)) { (void)SetVobcTrainSpeed(wTrainId, 0u); - (void)SetVobcTrainLevel(wTrainId, TRAIN_LEVEL_BACKUP_UNKNOWN); + (void)SetVobcTrainLevel(wTrainId, TRAIN_LEVEL_UR); (void)SetVobcTrainMaxHeadLink(wTrainId, 0u); (void)SetVobcTrainMaxTailLink(wTrainId, 0u); @@ -12350,8 +12417,6 @@ void SignalTrainCrossPro(void) UINT16 ii = 0U; UINT16 wSignalId = 0U; /*źŻID*/ UINT8 cSignalBelongCiId = 0U; /*źŻ*/ - UINT8 cSignalCurColor = 0U; /*źŻǰɫ*/ - UINT8 cSignalOpenState = 0U; /*źŻ״̬*/ UINT16 wStartRelRouteSum = 0U; /*ԸźŻΪʼźŻĽ·*/ UINT16* pStartRelRouteId = NULL; /*ԸźŻΪʼźŻĽ·ID*/ UINT16 jj = 0U; @@ -12361,68 +12426,87 @@ void SignalTrainCrossPro(void) UINT8 cRouteResTrainSum = 0U; /*·Դг*/ UINT16 szRouteResTrainId[LOGIC_SECTION_RES_SUM_MAX] = { 0U }; /*·ԴгID*/ UINT8 cTrainEnterState = 0U; /*гʻ·״̬*/ + UINT16 cTrainCtrlState = TRAIN_NO_MODE; /*гVOBC*/ + UINT8 wTacsCrossTrainId = 0u; /*TACSؿѹгID*/ + UINT8 cPrevCrossState = 0u; /*֮ǰѹ״̬*/ cLocalCiId = GetSystemParaLocalCiId(); wSignalCurSum = GetSignalCurSum(); for (ii = 0U; ii < wSignalCurSum; ii++) { + /*ȽźŻѹ״̬ΪδѹгID*/ + cSignalCrossState = SIGNAL_CROSS_STATE_NO; + wTacsCrossTrainId = 0u; + wSignalId = GetSignalId(ii); cSignalBelongCiId = GetSignalBelongCiId(wSignalId); if (cLocalCiId == cSignalBelongCiId) { - cSignalCurColor = GetSignalCurColor(wSignalId); /*ȡźŻɫͿ״̬*/ - cSignalOpenState = GetSignalOpenCloseState(cSignalCurColor); - if (SIGNAL_OPEN == cSignalOpenState) + wStartRelRouteSum = GetStartSignalRouteSum(wSignalId); /*ȡԸźŻΪʼźŻĽ·Ŀ*/ + pStartRelRouteId = GetStartSignalRouteBuf(wSignalId); /*ȡԸźŻΪʼźŻĽ·ID*/ + cPrevCrossState = GetSignalCrossStateCC(wSignalId); + if ((0U < wStartRelRouteSum) && (NULL != pStartRelRouteId)) { - wStartRelRouteSum = GetStartSignalRouteSum(wSignalId); /*ȡԸźŻΪʼźŻĽ·Ŀ*/ - pStartRelRouteId = GetStartSignalRouteBuf(wSignalId); /*ȡԸźŻΪʼźŻĽ·ID*/ - if ((0U < wStartRelRouteSum) && (NULL != pStartRelRouteId)) + for (jj = 0U; jj < wStartRelRouteSum; jj++) { - for (jj = 0U; jj < wStartRelRouteSum; jj++) + cRouteState = GetRouteState(pStartRelRouteId[jj]); /*ȡ·״̬*/ + cRouteLevel = GetRouteLevel(pStartRelRouteId[jj]); /*ȡ·*/ + if (((ROUTE_STATE_NEAR_OPEN == cRouteState) || (SIGNAL_CROSS_STATE_YES == cPrevCrossState)) + && (ROUTE_LEVEL_CBTC == cRouteLevel)) { - cRouteState = GetRouteState(pStartRelRouteId[jj]); /*ȡ·״̬*/ - cRouteLevel = GetRouteLevel(pStartRelRouteId[jj]); /*ȡ·*/ - if ((ROUTE_STATE_NEAR_OPEN == cRouteState) && (ROUTE_LEVEL_CBTC == cRouteLevel)) - { - cFunRet = GetRouteInOutFstLgcTrainInfo(pStartRelRouteId[jj], &cRouteResTrainSum, szRouteResTrainId); /*ȡ·ԴгϢ*/ + cFunRet = GetRouteInOutFstLgcTrainInfo(pStartRelRouteId[jj], &cRouteResTrainSum, szRouteResTrainId); /*ȡ·ԴгϢ*/ - if ((CI_SUCCESS == cFunRet) && (1U == cRouteResTrainSum)) + if ((CI_SUCCESS == cFunRet) && (1U == cRouteResTrainSum)) + { + cTrainEnterState = dsuTrainMinHeadCrossSignal(szRouteResTrainId[0], pStartRelRouteId[jj], CI_ERROR); /*гʻ·״̬*/ + if (TRAIN_ENTER_ROUTE_CROSS == cTrainEnterState) { - cTrainEnterState = dsuTrainMinHeadCrossSignal(szRouteResTrainId[0], pStartRelRouteId[jj]); /*гʻ·״̬*/ - if (TRAIN_ENTER_ROUTE_CROSS == cTrainEnterState) - { - /*ÿѹ*/ - cSignalCrossState = SIGNAL_CROSS_STATE_YES; - } - else - { - /*δѹ*/ - } + /*ÿѹ*/ + cSignalCrossState = SIGNAL_CROSS_STATE_YES; } else { - /*ȡ·ԴгϢʧܻԴгδѹ*/ + /*δѹ*/ } - break; } else { - /*·δӽŻCBTCδѹ*/ + /*ȡ·ԴгϢʧܻԴгδѹ*/ } + break; + } + else + { + /*·δӽ/ӽգCBTCδѹ*/ } - } - else - { - /*ȡʧܣ*/ } } else { - /*źŻδţδѹ*/ + /*ȡʧܣ*/ } /*ݼRCźŻѹ״̬*/ - SetSignalCrossStateCC(wSignalId, cSignalCrossState); + wTacsCrossTrainId = 0u; + if (SIGNAL_CROSS_STATE_YES == cSignalCrossState) + { + cTrainCtrlState = GetTrainControlMode(szRouteResTrainId[0]); + if (TRAIN_IVOC_MODE == cTrainCtrlState) + { + /*PB-TACS VOBCأ¼гID*/ + wTacsCrossTrainId = (UINT8)szRouteResTrainId[0]; + } + else + { + /*TACSأ¼гID*/ + } + } + else + { + /*δѹ¼гID*/ + } + + SetSignalCrossStateCC(wSignalId, cSignalCrossState, wTacsCrossTrainId); } else { @@ -12441,7 +12525,6 @@ static void ProIvocToRcLocationData(void) UINT8 ii = 0u; UINT8 chIvocSum = GetIvocToRcSum(); IvocToRcDataStruct* pIvocToCiDataStru = GetVobcToCiDataStru(); - UINT8 dataValid = 0u; UINT8 getResult = CI_ERROR; UINT16 wTrainId = 0U; UINT32 dwDelayTime = 0U; @@ -12473,9 +12556,9 @@ static void ProIvocToRcLocationData(void) } else { - /*Ϣ*/ + /*Ϣ*/ (void)SetIvocTrainSpeed(wTrainId, 0u); - (void)SetIvocTrainLevel(wTrainId, TRAIN_LEVEL_BACKUP_UNKNOWN); + (void)SetIvocTrainLevel(wTrainId, TRAIN_LEVEL_UR); SetIvocControlMode(wTrainId, 0U);/*سģʽ*/ (void)SetIvocTrainMsgDelayTime(wTrainId, 0u);/*гϢӳʱ*/ SetIvocTrainMode(wTrainId, 0u);/*гʻģʽ*/ @@ -12592,28 +12675,21 @@ static void PsdCmdMergeDeal(void) void ProcessIvocToRCData(void) { UINT8 ii = 0u; - UINT8 jj = 0u; - UINT8 kk = 0u; + UINT16 wRouteIndex = 0u; UINT16 wRouteSum = 0u; UINT8 chIvocToCiDataSum = GetIvocToRcSum(); IvocToRcDataStruct* pIvocToRcDataStru = GetVobcToCiDataStru(); - UINT8 chLineIdentity = GetCiFunctionSwitchConfig(VOBC_INTERFACE_IDENTITY);/*ȡ·ʶ*/ + UINT8 dataValid = 0u; - UINT8 bufIndex = 0u; - UINT16 psdId = 0u; + UINT8 localCiId = 0u; UINT8 belongCiId = 0u; - UINT8 deviceSum = 0u;/*ͨ豸*/ - UINT8* deviceIdBuf = NULL;/*ͨ豸ID*/ - UINT8 platformId = 0u; - UINT16 platformPsdId = 0u; + UINT16 wRouteId = 0u; - UINT32 dwDelayTime = 0u; - UINT32 dwVobcBrkTime = 0u; UINT16 phySecCurSum = 0u; UINT16 deviceId = 0u; - UINT8 chRCMode = GetLocalRcWorkMode(); + UINT32 dwCurCycNum = 0U; UINT32 dwTransmitBadEnsureCount = 0U; /*CIVOBCͨжжʱ*/ UINT8 cTrainReportState = 0U; @@ -12847,6 +12923,7 @@ static void ProcessVobcOrIvocData(void) { UINT8 cRcWorkMode = 0U; + cRcWorkMode = GetLocalRcWorkMode(); /**/ @@ -12916,14 +12993,11 @@ static void RefreshIvocInputlocation(const IvocToRcDataStruct stIvocToCiData) { UINT16 wTrainId = 0U; UINT32 dwCurCycle = 0U; - UINT8 chIndex = 0U; - TrainEaStru szTmp[EA_MAX_NUM] = { 0U }; UINT8 chRet = 0U; dwCurCycle = Get2oo2CurCycleNum(); wTrainId = ((UINT16)(CI_SYSTEM_TYPE_IVOC * 256U)) + stIvocToCiData.VobcId; - chRet = SetTrainTransmitStat(wTrainId, TRAIN_COMM_STATE_GOOD); chRet &= SetIvocTrainDir(wTrainId, stIvocToCiData.trainDirection); chRet &= SetIvocTrainSpeed(wTrainId, stIvocToCiData.wTrainSpeed); chRet &= SetIvocTrainSpeedDir(wTrainId, stIvocToCiData.chSpeedDir); @@ -12942,7 +13016,6 @@ static void RefreshIvocInputlocation(const IvocToRcDataStruct stIvocToCiData) SetIvocControlMode(wTrainId, stIvocToCiData.controlMode);/*سģʽ*/ SetIvocTrainMode(wTrainId, stIvocToCiData.chTrainMode);/*гʻģʽ*/ - SetTrainMsgFromTiocId(wTrainId, 0U); SetTrainSleepCancleFlag(wTrainId, TRAIN_SLEEP_CANCLE_YES); @@ -12950,6 +13023,62 @@ static void RefreshIvocInputlocation(const IvocToRcDataStruct stIvocToCiData) } +/* +* VobcʽӿϢ +* ˵ vobcToCiDataStruVOBCݽṹָ +* ֵ void +* by lyj 20260316 +*/ + +static void VobcBlocLinkDataProc(VobcToCiDataStruct* vobcToCiDataStru) +{ + UINT32 dwCurCycle = 0U; + + if (NULL != vobcToCiDataStru) + { + /*гʽϢ*/ + VobcBlocLinkDataClear(vobcToCiDataStru->VobcId); + dwCurCycle = Get2oo2CurCycleNum(); + if ((dwCurCycle == vobcToCiDataStru->strBlocLinkData.chBlocLinkCycle) + && ((VOBC_CI_BLOCLINK_BLOCK_CTRL == vobcToCiDataStru->strBlocLinkData.chBlocLinkTrainLevel) || (VOBC_CI_BLOCLINK_CI_CTRL == vobcToCiDataStru->strBlocLinkData.chBlocLinkTrainLevel))) + { + /*¼ʽгλãABLͨṹ*/ + SetAblTrainDir(vobcToCiDataStru->VobcId, vobcToCiDataStru->strBlocLinkData.chTrainDirection); + SetAblTrainMaxHeadLink(vobcToCiDataStru->VobcId, vobcToCiDataStru->strBlocLinkData.wTrainMaxSafeHeadLink); + SetAblTrainMaxHeadOffset(vobcToCiDataStru->VobcId, vobcToCiDataStru->strBlocLinkData.dwTrainMaxSafeHeadOffset); + SetAblTrainMinTailLink(vobcToCiDataStru->VobcId, vobcToCiDataStru->strBlocLinkData.wTrainMinSafeTailLink); + SetAblTrainMinTailOffset(vobcToCiDataStru->VobcId, vobcToCiDataStru->strBlocLinkData.dwTrainMinSafeTailOffset); + } + else + { + /**/ + } + + } + else + { + /**/ + } +} - +/* +* VobcʽϢ +* ˵ UINT16 wTrainIdVOBCid +* ֵ void +* by lyj 20260316 +*/ +void VobcBlocLinkDataClear(const UINT16 wTrainId) +{ + if ((TRAIN_SUM_MAX > wTrainId) && (0U < wTrainId)) + { + SetAblTrainMaxHeadLink(wTrainId, 0U); + SetAblTrainMaxHeadOffset(wTrainId, UINT32_MAX); + SetAblTrainMinTailLink(wTrainId, 0U); + SetAblTrainMinTailOffset(wTrainId, UINT32_MAX); + } + else + { + /**/ + } +} \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/IO/InputDataProcess.h b/TSCP/src/APP/ciapp/IO/InputDataProcess.h index 263d1ab..f3fa1e0 100644 --- a/TSCP/src/APP/ciapp/IO/InputDataProcess.h +++ b/TSCP/src/APP/ciapp/IO/InputDataProcess.h @@ -537,6 +537,13 @@ void SignalTrainCrossPro(void); * ֵ void */ void ProcessIvocToRCData(void); +/* +* VobcʽϢ +* ˵ UINT16 wTrainIdVOBCid +* ֵ void +* by lyj 20260316 +*/ +void VobcBlocLinkDataClear(const UINT16 wTrainId); #ifdef __cplusplus } diff --git a/TSCP/src/APP/ciapp/IO/OutputDataProcess.c b/TSCP/src/APP/ciapp/IO/OutputDataProcess.c index bec2baa..a133410 100644 --- a/TSCP/src/APP/ciapp/IO/OutputDataProcess.c +++ b/TSCP/src/APP/ciapp/IO/OutputDataProcess.c @@ -81,10 +81,12 @@ void OutputDataProcess(void) UINT8 CiPattern = 0u; UINT8 chDsnLinSwitch = 0U; UINT8 chTiocSysMode = 0U; + UINT8 chLocalCiOCSswitch = 0U; chTiocSysMode = GetTiocSystemMode(); chDsnLinSwitch = GetCiFunctionSwitchConfig(FUNC_DSN_LINE_SWITCH); CiPattern = GetLocalCiPattern(); + chLocalCiOCSswitch = GetLocalCiOCSswitch(); if (REVERSE_MODE_MAIN != chTiocSysMode) { @@ -118,6 +120,12 @@ void OutputDataProcess(void) /**/ OcSwitchDeviceOutput(); + if (OC_S_ON == chLocalCiOCSswitch) + {/*OCSش*/ + /*Ѱ*/ + OcSwitchControlModeCmdOutput(); + } + /*źŻ*/ OcSignalDeviceOutput(); } @@ -217,6 +225,9 @@ void OutputDataProcess(void) /*гݴ*/ VobcBackUpOutputProcess(); + /*ʽгݴ*/ + VobcBlocLinkOutputProcess(); + /*ԴԶݼ*/ (void)ReqAlignmentInfoCalc(); @@ -441,11 +452,11 @@ UINT8 GetAtsBackInfoParam(const UINT8 functionId,const UINT8 deviceStateType, co case ETYPE_SIG_CLOSE_OVER_TIME: returnValue = CI_BACK_SIG_CLOSE_OT; /*źŻرճʱ*/ break; - +#if 0 case ETYPE_SIG_RETURN_OPENED_STATE: returnValue = CI_BACK_AS_RETR_ENDSIG_RT_SET;/*ԸźŻΪնźŻ۷·Ѿ*/ break; - +#endif case ETYPE_SIG_LEAD_ALL_LOCK: returnValue = CI_BACK_SIG_LEAD_OPEN_FAIL; /*źſ㣬ȫվ·*/ break; @@ -3538,6 +3549,7 @@ void NonRouteRelayStateProc(void) UINT8 interfaceType = FUNC_SWITCH_UNDEF;/*Գ복νӿ*/ UINT8 i = 0u; UINT16 agreeTryTrainRelayId = 0u;/*ͬԳ̵ID*/ + UINT16 wColWaysideTryTrainIndRelayId = 0u;/*Գָʾ̵ID*/ NonRouteDataStruct* pNonRoute = NULL; UINT8 localCiId = 0U; /*ID*/ UINT8 nonRouteBelongCiId = 0U; /*ǽ·ID*/ @@ -3564,6 +3576,7 @@ void NonRouteRelayStateProc(void) { /*źģʽԳ복βü̵ӿ*/ agreeTryTrainRelayId = GetNonRouteAgreeTryRelayIdById(pNonRoute->NonRouteId); (void)SetRelayDriveState(agreeTryTrainRelayId, RELAY_DRIVE_STATE_UP); /*ͬԳ̵*/ + } else if ((NONROUTE_RUN_MODE_APPLY == pNonRoute->RunMode) && (SCX_CLD_INTERFACE_COMM == interfaceType)) {/*źģʽԳ복βͨŽӿ*/ @@ -3577,6 +3590,17 @@ void NonRouteRelayStateProc(void) { /**/ } + wColWaysideTryTrainIndRelayId = GetWaysideTryTrainIndRelayId(pNonRoute->NonRouteId); + if (0 != wColWaysideTryTrainIndRelayId) + { + /*ùԳָʾ̵*/ + (void)SetRelayDriveState(wColWaysideTryTrainIndRelayId, RELAY_DRIVE_STATE_UP); + } + else + { + /**/ + } + } else {/*ηǽ·ǿ״̬ʱԳ߲ͬԳ̵ӿڣͬԳ̵£ںڣͬԳЧ״̬*/ @@ -3586,6 +3610,7 @@ void NonRouteRelayStateProc(void) /*ǽ·ͬԳ̵ ǽ·ͬԳ̵̬£൱ڻָĬ̬*/ agreeTryTrainRelayId = GetNonRouteAgreeTryRelayIdById(pNonRoute->NonRouteId); (void)SetRelayDriveState(agreeTryTrainRelayId, RELAY_DRIVE_STATE_DOWN); + } else if ((SCX_CLD_INTERFACE_COMM == interfaceType) || (SCX_CLD_SERIAL_PORT_COMM == interfaceType)) { @@ -3595,6 +3620,16 @@ void NonRouteRelayStateProc(void) { ; /**/ } + wColWaysideTryTrainIndRelayId = GetWaysideTryTrainIndRelayId(pNonRoute->NonRouteId); + if (0 != wColWaysideTryTrainIndRelayId) + { + /*ùԳָʾ̵*/ + (void)SetRelayDriveState(wColWaysideTryTrainIndRelayId, RELAY_DRIVE_STATE_DOWN); + } + else + { + /**/ + } } break; @@ -5722,6 +5757,8 @@ void VobcBackUpOutputProcess(void) UINT8 chBackUpValid = 0U;/*ͨЧ־*/ UINT8 cRcWorkMode = 0U; + cRcWorkMode = GetLocalRcWorkMode(); + for (ii = 0U; ii < TRAIN_SUM_MAX; ii++) { wTrainId = GetTrainId(ii); @@ -8629,4 +8666,285 @@ void SetSCOverIndicator(const UINT16 wIndicatorId) { SetIndicatorState(wIndicatorId, INDICATOR_SHOW_SC_NO); /*ԳָʾЧ*/ } +} + +/* +* ʽгϢ +* ˵ void +* ֵ +* by lyj 20260314 +*/ +void VobcBlocLinkOutputProcess(void) +{ + UINT16 wTrainId = 0U; /*гID*/ + UINT8 chXiansuState = 0U; /*ʱ״̬*/ + UINT8 chlineIdentity = 0U; /*·ʶ*/ + UINT8 ii = 0U; /*ѭ*/ + UINT8 chResult = 0U; /*ʱнӱ*/ + + /*Ŀǰͨ·߱ʽӿ*/ + chlineIdentity = GetCiFunctionSwitchConfig(VOBC_INTERFACE_IDENTITY); /*ȡ·ʶ*/ + + if (LINE_HLHT == chlineIdentity) + { + /*ȷ֮֮*/ + chXiansuState = CheckLocalCiLSXSStata(); + if (CI_SUCCESS == chXiansuState) + { + for (ii = 0U; ii < TRAIN_SUM_MAX; ii++) + { + wTrainId = GetTrainId(ii); + wTrainId = wTrainId & 0x00ffU; + /*ҪгĵʽϢȻ¼*/ + ClearBlocLinkTrainInfo(wTrainId); + + /*ͨ·ʹϢʣЧжCIVOBCͨǷж*/ + chResult = GetHLHTHeadCtxValid(CI_SYSTEM_TYPE_VOBC, (UINT8)wTrainId); + if (CI_SUCCESS == chResult) + { + /*г·Ϣ*/ + chResult = BlocLinkTrainRouteMange(wTrainId); + + /*г߼Ϣ*/ + chResult &= BlocLinkTrainLogSecMange(wTrainId); + if (CI_SUCCESS != chResult) + { + /*ҪгĵʽϢ*/ + ClearBlocLinkTrainInfo(wTrainId); + } + else + { + /**/ + } + } + else + { + /**/ + } + + } + } + else + { + /*ҪгĵʽϢ*/ + for (ii = 0U; ii < TRAIN_SUM_MAX; ii++) + { + wTrainId = GetTrainId(ii); + wTrainId = wTrainId & 0x00ffU; + ClearBlocLinkTrainInfo(wTrainId); + } + debug_infor_printf((const)"\nCheckLocalCiLSXSStata ERROR\n"); + } + + + } + else + { + /**/ + } + +} +/* +* ʽг·Ϣ +* ˵ const UINT16 wTrainId гID +* ֵ +* by lyj 20260316 +*/ + +UINT8 BlocLinkTrainRouteMange(const UINT16 wTrainId) +{ + UINT8 chRetVal = CI_ERROR; + struct_PathPoint end = { 0U }; /*г߼յ*/ + UINT16 wTempLogSecId = 0U; /*ͷ߼*/ + UINT16 wLogSecRLockRouteId = 0U; /*߼·*/ + UINT8 chLocalCiId = 0U; /*ID*/ + UINT16 wRouteEndSigId = 0U; /*·նźŻID*/ + UINT8 chSigBelongCiId = 0U; /*źŻID*/ + UINT8 chRouteType = 0U; /*·*/ + UINT16 wLastSectionId = 0U; /*·һ*/ + UINT16 wValidReturnSigId = 0U; /*Ч۷źŻ*/ + UINT8 ii = 0U; + UINT16 wSigInFirstPhyId = 0U; /*źŻڷ*/ + UINT16 wTempRouteId = 0U; + UINT8 chTempRouteState = 0U; + UINT8 chRouteDir = 0U; + UINT8 chTrainDir = 0U; + + UINT8 chLogSecLockState = 0U; + if ((0U < wTrainId) && (TRAIN_SUM_MAX > wTrainId)) + { + /*ͷλ*/ + end.wLinkId = GetAblTrainMaxHeadLink(wTrainId); + end.dwOffset = GetAblTrainMaxHeadOffset(wTrainId); + + /*жϳͷ߼Ƿ*/ + wTempLogSecId = GetPointBelongLogSec(end); + wLogSecRLockRouteId = GetLogSecLockBelongRoute(wTempLogSecId); + chLogSecLockState = GetLogSecLockState(wTempLogSecId); + chRouteType = GetRouteType(wLogSecRLockRouteId); + if ((LOG_SECTION_LOCK_NORMAL == chLogSecLockState) && (0U < wLogSecRLockRouteId) && (ROUTE_SUM_MAX > wLogSecRLockRouteId) && (ROUTE_TYPE_DIAOCHE != chRouteType)) + { + chRetVal = CI_SUCCESS; + /*¼½·*/ + SetBlocLinkRouteData(wTrainId, wLogSecRLockRouteId); + chLocalCiId = GetSystemParaLocalCiId(); + + for (ii = 0U; ii < (CI_VOBC_ROUTE_MAX -1U); ii++) + { + wRouteEndSigId = GetRouteEndSignalId(wLogSecRLockRouteId); + chSigBelongCiId = GetSignalBelongCiId(wRouteEndSigId); + if (chLocalCiId == chSigBelongCiId) + { + /*·նźŻDZƥ*/ + chRouteType = GetRouteType(wLogSecRLockRouteId); + if (ROUTE_TYPE_RETURN == chRouteType) + { + wLastSectionId = GetRouteLastPhySectionId(wLogSecRLockRouteId); /*ȡ·һ*/ + wValidReturnSigId = GetValidReturnSinalId(wLogSecRLockRouteId, wLastSectionId); /*Ч۷źŻ*/ + wRouteEndSigId = wValidReturnSigId; + } + else + { + /*ֱͨ·-ֱӻȡնźŻ*/ + wRouteEndSigId = GetRouteEndSignalId(wLogSecRLockRouteId); + } + /*·ŲҲǵ·*/ + wSigInFirstPhyId = GetSignalInFirstLockedPhySecId(wRouteEndSigId); + wTempRouteId = GetPhySecRLockBelongRouteId(wSigInFirstPhyId); + chTempRouteState = GetRouteState(wTempRouteId); + + chRouteDir = GetRouteConfigDirection(wTempRouteId); + chTrainDir = GetAblTrainDir(wTrainId); + if (((ROUTE_STATE_YUXIAN_OPEN == chTempRouteState) || (ROUTE_STATE_NEAR_OPEN == chTempRouteState)) && (chRouteDir == chTrainDir) && (ROUTE_TYPE_DIAOCHE != chRouteType)) + { + /*·״̬ǽӽŻԤȿ(ƥ·)г֮ƥ۳·*/ + SetBlocLinkRouteData(wTrainId, wTempRouteId); + wLogSecRLockRouteId = wTempRouteId; + } + else + { + break; + } + + } + else + { + break; + } + } + + } + else + { + /*ƥ·*/ + } + + } + else + { + /**/ + } + + return chRetVal; +} + +/* +* ʽг߼Ϣ +* ˵ const UINT16 wTrainId гID +* ֵ +* by lyj 20260316 +*/ + +UINT8 BlocLinkTrainLogSecMange(const UINT16 wTrainId) +{ + /*г߼--Լͷ·(նźŻ)ʣµȫ߼*/ + + struct_PathPoint start = { 0U }; /*г߼*/ + struct_PathPoint end = { 0U }; /*г߼յ*/ + UINT8 chRetVal = CI_ERROR; + UINT16 wTrainLogSecSum = 0U; /*г߼*/ + UINT16 wTrainLogSecBuf[TRAIN_ABL_LOGSEC_SUM] = { 0U }; /*г߼ID*/ + UINT16 wTempLogSecId = 0U; /*ͷ߼*/ + UINT16 wLogSecRLockRouteId = 0U; /*߼·*/ + UINT16 wRouteLogSectionSum = 0U; /*·߼*/ + UINT16* pRouteLogSectionIdBuf = NULL; /*·߼*/ + UINT16 ii = 0U; + UINT16 jj = 0U; + UINT8 chFlag = 0U; /*ʼ¼·ı־*/ + + /*βλ*/ + start.wLinkId = GetAblTrainMinTailLink(wTrainId);; + start.dwOffset = GetAblTrainMinTailOffset(wTrainId); + + /*ͷλ*/ + end.wLinkId = GetAblTrainMaxHeadLink(wTrainId); + end.dwOffset = GetAblTrainMaxHeadOffset(wTrainId); + + /*ȡ߼*/ + chRetVal = GetLogSecBtwTwoPoints(start, end, &wTrainLogSecSum, wTrainLogSecBuf); + if (CI_SUCCESS == chRetVal) + { + /*鳵ͷڽ·߼*/ + wTempLogSecId = GetPointBelongLogSec(end); /*ͷ߼*/ + wLogSecRLockRouteId = GetLogSecLockBelongRoute(wTempLogSecId); /*߼·*/ + wRouteLogSectionSum = GetRouteLogSectionSum(wLogSecRLockRouteId); /*·߼*/ + pRouteLogSectionIdBuf = GetRouteLogSectionIdBuf(wLogSecRLockRouteId); /*·߼*/ + if (TRAIN_ABL_LOGSEC_SUM > (wTrainLogSecSum + wRouteLogSectionSum)) + { + if (NULL != pRouteLogSectionIdBuf) + { + for (ii = 0U; ii < wRouteLogSectionSum; ii++) + { + /*·߼Σ鵽˳ͷ߼λãʼ¼߼*/ + if ((wTempLogSecId == pRouteLogSectionIdBuf[ii]) && (0U == chFlag)) + { + chFlag = 1U; + for (jj = 0U; jj < wTrainLogSecSum; jj++) + { + if (wTempLogSecId == wTrainLogSecBuf[jj]) + { + break; /*ͷѴ룬ٴ*/ + } + } + /*ͷδ룬Ҫһ*/ + if ((jj == wTrainLogSecSum) && (TRAIN_ABL_LOGSEC_SUM > wTrainLogSecSum)) + { + wTrainLogSecBuf[wTrainLogSecSum] = pRouteLogSectionIdBuf[ii]; + wTrainLogSecSum++; + } + } + else + { + /**/ + } + /*ҵ˳ͷʼ棬ͷ߼Ѵ룬ٴ*/ + if ((1U == chFlag) && (TRAIN_ABL_LOGSEC_SUM > wTrainLogSecSum) && (wTempLogSecId != pRouteLogSectionIdBuf[ii])) + { + wTrainLogSecBuf[wTrainLogSecSum] = pRouteLogSectionIdBuf[ii]; + wTrainLogSecSum++; + } + else + { + /**/ + } + + } + SetBlocLinkOccLogSecData(wTrainId, wTrainLogSecSum, wTrainLogSecBuf); + + } + else + { + chRetVal = CI_ERROR; + } + } + else + { + chRetVal = CI_ERROR;/*·߼γ*/ + } + } + else + { + /**/ + } + return chRetVal; } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/IO/OutputDataProcess.h b/TSCP/src/APP/ciapp/IO/OutputDataProcess.h index 7c69a01..ab22f4d 100644 --- a/TSCP/src/APP/ciapp/IO/OutputDataProcess.h +++ b/TSCP/src/APP/ciapp/IO/OutputDataProcess.h @@ -524,6 +524,29 @@ void SetSCAllowIndicator(const UINT16 wIndicatorId); * by lyj 20260106 */ void SetSCOverIndicator(const UINT16 wIndicatorId); +/* +* ʽгϢ +* ˵ void +* ֵ +* by lyj 20260314 +*/ +void VobcBlocLinkOutputProcess(void); +/* +* ʽг·Ϣ +* ˵ const UINT16 wTrainId гID +* ֵ +* by lyj 20260316 +*/ + +UINT8 BlocLinkTrainRouteMange(const UINT16 wTrainId); +/* +* ʽг߼Ϣ +* ˵ const UINT16 wTrainId гID +* ֵ +* by lyj 20260316 +*/ + +UINT8 BlocLinkTrainLogSecMange(const UINT16 wTrainId); #ifdef __cplusplus } diff --git a/TSCP/src/APP/ciapp/Initial/ConfigDataReadManage.c b/TSCP/src/APP/ciapp/Initial/ConfigDataReadManage.c index 4dd9a28..71fc38d 100644 --- a/TSCP/src/APP/ciapp/Initial/ConfigDataReadManage.c +++ b/TSCP/src/APP/ciapp/Initial/ConfigDataReadManage.c @@ -1119,10 +1119,11 @@ UINT8 ReadConfigureData(void) if (0u == rtnVal) { /*Գ복κ*/ - g_ret = SetCldAndScxMergeConfig(); - if (CI_ERROR == g_ret) + g_ret = (INT16)SetCldAndScxMergeConfig(); + if (0 == g_ret) { debug_infor_printf((const)"SetCldAndScxMergeConfig fail.\r\n"); + rtnVal = 44u; } } diff --git a/TSCP/src/APP/ciapp/Initial/InitialProcess.c b/TSCP/src/APP/ciapp/Initial/InitialProcess.c index 5e50b95..f95dafa 100644 --- a/TSCP/src/APP/ciapp/Initial/InitialProcess.c +++ b/TSCP/src/APP/ciapp/Initial/InitialProcess.c @@ -683,6 +683,7 @@ UINT8 InitialSignalData(void) SignalDataStruCC[signalId].cSleepTrainLightUpFlag = SIGNAL_SLEEP_TRAIN_LIGHTUP_NO; /*ʼ߳źŻ־Ч*/ SignalDataStruCC[signalId].LightExtinctState = SIGNAL_LIGHT_EXTICT_STATE_YES; /*źŻ״̬CC(0x55ƣ0xaa)*/ SignalDataStruCC[signalId].SignalCrossState = SIGNAL_CROSS_STATE_NO; /*ͨųѹͨźŻ״̬CC(0x55δѹ0xaaѹ)*/ + SignalDataStruCC[signalId].wCrossTacsTrainId = 0u; /*ͨųѹͨźŻTACSгID*/ /*ʼZC͵źŻ̬*/ gZcToCiDymDataStru.szSignalDataStruZc[signalId].SignalId = signalId; @@ -733,9 +734,11 @@ UINT8 InitialWashMachineData(void) WashMachineDataStru[washMachinelId].TrainEmergencyStopState = WASHMACHINE_COL_FALUT_YES; WashMachineDataStru[washMachinelId].HeadWashAllowState = WASHMACHINE_COL_HEADWASH_NO; WashMachineDataStru[washMachinelId].TailWashAllowState = WASHMACHINE_COL_TAILWASH_NO; + WashMachineDataStru[washMachinelId].chCoupingWashAllowState = WASHMACHINE_COL_COUPINGWASH_NO; WashMachineDataStru[washMachinelId].WashTrainRequestDrvState = WASHMACHINE_DRVSTATE_REQ_FALSE; WashMachineDataStru[washMachinelId].TrainHeadStopSteadyDrvState = WASHMACHINE_HEAD_STEADY_NO; WashMachineDataStru[washMachinelId].TrainTailStopSteadyDrvState = WASHMACHINE_TAIL_STEADY_NO; + WashMachineDataStru[washMachinelId].chCoupingStopSteadyDrvState = WASHMACHINE_COUPING_STEADY_NO; WashMachineDataStru[washMachinelId].TrainOutWashTrainPortAllowState = WASHMACHINE_COL_OUT_NO; WashMachineDataStru[washMachinelId].PauseTrainWashRequestDrvState = WASHMACHINE_PAUSE_DRVREQ_FALSE; WashMachineDataStru[washMachinelId].PaseWashMachineRequesDrvtState = PASS_WASHMACHINE_DRVREQ_FALSE; @@ -787,67 +790,88 @@ UINT8 InitialSwitchData(void) UINT16 ii = 0u; /*α*/ UINT16 jj = 0u; /*α*/ UINT8 reVal = CI_ERROR; + UINT8 chSwitchIncludeOcNum = 0U; + UINT8 ocId = 0u; + UINT8 kk = 0u; switchDataSum = GetTotalSwitchCurNum(); /*͸ĵĿ*/ /*ֵSWITCH_SUM_MAX᷵0*/ for (ii = 0u; ii < switchDataSum; ii++) - { - switchId = GetSwitchId(ii);/*ȡļиµĵID*/ + { + switchId = GetSwitchId(ii);/*ȡļиµĵID*/ - SwitchDataStru[switchId].SwitchId = switchId; - SwitchDataStruCC[switchId].SwitchId = switchId; - SwitchDataStru[switchId].YLockState = SWITCH_LOCK_YINZONG_NO; - SwitchDataStru[switchId].LockStatus = SWITCH_LOCK_STATUS_NO; - SwitchDataStru[switchId].FLockState = SWITCH_LOCK_FENGSUO_NO; - SwitchDataStru[switchId].SwitchPrePosition = SWITCH_POSITION_SIKAI; - SwitchDataStru[switchId].SwitchCurPosition = SWITCH_POSITION_SIKAI; - SwitchDataStru[switchId].SingleSwitchCurPosition = SWITCH_POSITION_SIKAI; - SwitchDataStru[switchId].SwitchDrivePos = SWITCH_DRIVE_POS_INVALID; - SwitchDataStru[switchId].SwitchExpDrvPos = SWITCH_DRIVE_POS_INVALID; - SwitchDataStru[switchId].switchPreExpDrvPos = SWITCH_DRIVE_POS_INVALID; - SwitchDataStru[switchId].SwitMoveStartCycNum = 0u; - SwitchDataStru[switchId].SwitDriveStartCycNum = 0u; - SwitchDataStru[switchId].chSwitchDrivedFlag = SWITCH_DRIVED_FLAG_NO; - SwitchDataStru[switchId].SwitchDanCaoPostition = SWITCH_POSITION_INVALID; - SwitchDataStru[switchId].switchDrivingState = SWIT_DRIV_IDLE_TIME; - SwitchDataStru[switchId].switchDrivOvtmDrvPos = SWITCH_DRIVE_POS_INVALID; - SwitchDataStru[switchId].switchFaultState = SWITCH_FAULT_STATE_YES; - /* zt ɾش 2022-02-15 */ - SwitchDataStru[switchId].switchKRState = SWITCH_KERAO_STATE_YES; - SwitchDataStru[switchId].switchLastValidDrvPosCycleNum = 0u; - SwitchDataStru[switchId].switchLastValidDrvPos = SWITCH_DRIVE_POS_INVALID; - SwitchDataStru[switchId].UsingBelongOverlapId = 0u; - SwitchDataStru[switchId].DFHRelayValidCycNum = 0u; - SwitchDataStru[switchId].SigleDFHRelayValidCycNum = 0u; - SwitchDataStru[switchId].PLockedRouteNum = 0u; - SwitchDataStruCC[switchId].PLockedLogRouteNum = 0u; - SwitchDataStru[switchId].PLockedOverlapNum = 0u; - SwitchDataStru[switchId].PLockedNonRouteNum = 0u; - SwitchDataStru[switchId].YCRelayValidCycNum = 0u; - SwitchDataStru[switchId].SigleYCRelayValidCycNum = 0u; - SwitchDataStru[switchId].ConnetSwitchDsState = CONNECT_SWITCH_DANSUO_NO; - SwitchDataStru[switchId].SwitchByPassState = SWITCH_BYPASS_NO; - SwitchDataStru[switchId].SwitchBypassStartCycNum = 0u; - SwitchDataStru[switchId].chSwitchJichaState = 0U; - SwitchDataStru[switchId].cSwitchUsingState = SWITCH_USING_NO; - SwitchDataStru[switchId].SwitchCollTolerateCycNum = 0U; - SwitchDataStru[switchId].SwitchColPosition = SWITCH_POSITION_SIKAI; - SwitchDataStru[switchId].switchFaultState = SWITCH_FAULT_STATE_YES; /*Ϊ忨*/ - /*ʼյĽ·Ρǽ·*/ - for (jj=0; jj 0u) && (devId < OVERLAP_SUM_MAX)) + if((chOverlapCiId == ciId)) { OverlapDataStru[devId].BelongRouteId = 0u; OverlapDataStru[devId].UnlockStartCycNum = 0u; @@ -2586,7 +2613,7 @@ void ResetDynamicState(const UINT8 ciId) OverlapDataStru[devId].chPreLaborUnlockState = PRO_PRE_LABOR_UNLOCK_STATE_NO; OverlapDataStru[devId].dwAtsLastTimeLockCyc = 0U; } - else if ((chOverlapCiId == localCi) && (devId > 0U) && (devId < OVERLAP_SUM_MAX)) + else if ((chOverlapCiId == localCi)) { cOverlapRelProSwNum = GetOverlapRelatedProtSwitSum(devId); /*ȡιķϢ*/ pOverlapRelProSwStru = GetOverlapRelatedProtSwitStru(devId); @@ -3411,7 +3438,7 @@ void ResetLocalRcDynamicState(void) if (cBelongCiId == cLocalCiId) { SetSignalLightExtinctStateCC(wSignalId, SIGNAL_LIGHT_EXTICT_STATE_YES); /*RCźŻ״̬Ϊ*/ - SetSignalCrossStateCC(wSignalId, SIGNAL_CROSS_STATE_NO); /*RCźŻѹ״̬Ϊδѹ*/ + SetSignalCrossStateCC(wSignalId, SIGNAL_CROSS_STATE_NO, 0u); /*RCźŻѹ״̬Ϊδѹ*/ } else { diff --git a/TSCP/src/APP/ciapp/LogRecord/LogRecord.c b/TSCP/src/APP/ciapp/LogRecord/LogRecord.c index b9da4ee..49b5a67 100644 --- a/TSCP/src/APP/ciapp/LogRecord/LogRecord.c +++ b/TSCP/src/APP/ciapp/LogRecord/LogRecord.c @@ -505,6 +505,7 @@ UINT8 RecordDeviceDataLog(UINT8 Flag) UINT16 wNonAutoReturnCurSum = 0U;/*۷ťǰ*/ NonAutoReturnDataStruct* pNonAutoReturnData = NULL; /*۷ݽṹָ*/ NonAutoReturnDataStructCC* pNonReturnDataStruCC = NULL; /*۷ݽṹָ-CC*/ + UINT8 chThisOCBoardState = 0U; /*************************************ӡ********************************************/ /*ӡ*/ @@ -955,6 +956,36 @@ UINT8 RecordDeviceDataLog(UINT8 Flag) outString[outStringLength++] = newSwitchData[deviceId].chSwitchJichaState; /*״̬*/ LongToChar(newSwitchData[deviceId].SwitchCollTolerateCycNum, &outString[outStringLength]);/*ں*/ outStringLength += 4u; + + LongToChar(newSwitchData[deviceId].SwitchOutputDrvCmdCycNum, &outString[outStringLength]);/*ʼ*/ + outStringLength += 4u; + + outString[outStringLength++] = newSwitchData[deviceId].mainControlOcId;/*OC*/ + + outString[outStringLength++] = newSwitchData[deviceId].chSwitchBelongOcNum;/*OC*/ + for (jj = 0U; jj < newSwitchData[deviceId].chSwitchBelongOcNum; jj++) + { + outString[outStringLength++] = newSwitchData[deviceId].belongOCData[jj].OcId;/*OC*/ + outString[outStringLength++] = newSwitchData[deviceId].belongOCData[jj].controlMode;/*OCǰ״̬*/ + outString[outStringLength++] = newSwitchData[deviceId].belongOCData[jj].OutControlCmd;/*OCǰ*/ + outString[outStringLength++] = newSwitchData[deviceId].belongOCData[jj].PlusBoxSate;/*״̬*/ + chThisOCBoardState = GetSwitchThisOCBoardState(deviceId, newSwitchData[deviceId].belongOCData[jj].OcId); + outString[outStringLength++] = chThisOCBoardState;/*˫ϵ忨״̬*/ + + LongToChar(newSwitchData[deviceId].belongOCData[jj].OutMainControlCmdCycNum, &outString[outStringLength]);/**/ + outStringLength += 4u; + outString[outStringLength++] = newSwitchData[deviceId].belongOCData[jj].FindPostionCmd;/*Ѱ*/ + LongToChar(newSwitchData[deviceId].belongOCData[jj].FindCmdStartCycNum, &outString[outStringLength]);/*Ѱʼ*/ + outStringLength += 4u; + } + + outString[outStringLength++] = newSwitchData[deviceId].PLockedAxisSecNum;/*յļID*/ + for (jj = 0; jj < SWITCH_MAX_PROTECT_LOCKED_NUM; jj++) + { + ShortToChar(newSwitchData[deviceId].PLockedAxisSecIdArr[jj], &outString[outStringLength]); + outStringLength += 2u; + } + } } else @@ -1344,6 +1375,9 @@ UINT8 RecordDeviceDataLog(UINT8 Flag) outStringLength++; outString[outStringLength] = pLogicSecDataCC[deviceId].TXOccupyState;/*߼ͨųռ״̬CC(0x55-޳ͨųռã0xAA-ͨųռ)*/ outStringLength++; + outString[outStringLength++] = newLogicSecData[deviceId].chLogSecCbtcArbState;/*߼CBTC_ARB״̬*/ + outString[outStringLength++] = newLogicSecData[deviceId].chLogSecPbTacsArbState;/*߼PB_TACS_ARB״̬*/ + outString[outStringLength++] = newLogicSecData[deviceId].chArbState;/*߼ARB״̬*/ outString[outStringLength++] = newLogicSecData[deviceId].LogLockState;/*߼״̬*/ outString[outStringLength++] = newLogicSecData[deviceId].LogLockDir;/*߼շ*/ outString[outStringLength++] = pLogicSecDataCC[deviceId].chResShareFlag;/*߼ι־ 0x55 0xAAǹ*/ diff --git a/TSCP/src/APP/ciapp/LogicManage/InterlockCommonManage.c b/TSCP/src/APP/ciapp/LogicManage/InterlockCommonManage.c index 049c3c0..f44d4c6 100644 --- a/TSCP/src/APP/ciapp/LogicManage/InterlockCommonManage.c +++ b/TSCP/src/APP/ciapp/LogicManage/InterlockCommonManage.c @@ -595,7 +595,7 @@ void SetRouteRelProSwitchLockSta(const UINT16 routeId, const UINT8 lockCommand) cSwitchCurPos = GetSwitchCurPosition(protectSwitchId); cFuncRet = checkSwtLastValDrvPosStayorNot(protectSwitchId, routeProtectSwitchStru[ii].ProtectPosition); if ((SWITCH_LOCK_PROTECT_CANCEL == lockCommand) - || ((SWITCH_LOCK_PROTECT_SET == lockCommand) && (cSwitchCurPos == routeProtectSwitchStru[ii].ProtectPosition) && (CI_SUCCESS == cFuncRet))) + || ((cSwitchCurPos == routeProtectSwitchStru[ii].ProtectPosition) && (CI_SUCCESS == cFuncRet))) { SetSwitchLockStatus(SWITCH_PLOCKTYPE_ROUTE, routeId, protectSwitchId, lockCommand); /*õ״̬*/ /*RC 13.0.0 ޣ˫һ*/ diff --git a/TSCP/src/APP/ciapp/LogicManage/InterlockLogicManage.c b/TSCP/src/APP/ciapp/LogicManage/InterlockLogicManage.c index 515dbdb..807e4fb 100644 --- a/TSCP/src/APP/ciapp/LogicManage/InterlockLogicManage.c +++ b/TSCP/src/APP/ciapp/LogicManage/InterlockLogicManage.c @@ -16,7 +16,6 @@ #include "TrainDataManage.h" #include "HLHTHeadContexManage.h" #include "TrainOnAcManage.h" -#include "TrainDataManage.h" #include "SectionStateProcess_define.h" #include "DynamicRouteDataManage.h" #include "LogicalRouteDataManage.h" @@ -2014,8 +2013,10 @@ void RouteNearLockManage(const UINT16 routeId) UINT16 returnSecId = 0U; /*۷*/ UINT8 localCiType = 0U;/**/ UINT8 cFuncRetVal = CI_ERROR; + UINT8 chRouteBelongVirCiId = 0U; - localCiType = GetLocalCiType(); + chRouteBelongVirCiId = GetRouteBelongVirCiId(routeId); + localCiType = GetLocalVirCiType(chRouteBelongVirCiId); /*ȡ·ʼźŻID*/ startSignalId = GetRouteStartSignalId(routeId); autoSigRouteState = GetRouteAutoSigSetState(routeId); /*ȡԶźŽ·״̬*/ @@ -2141,6 +2142,7 @@ void RouteNearLockManage(const UINT16 routeId) validReturnSigId = GetValidReturnSinalId(routeId, logBelongPhyId); returnSecId = GetSignalOutFirstPhySecId(validReturnSigId); + /*߼εǰCTռã֮ǰCTռãǰ ߼βǵΣҷ۷·Ϊ۷·۷*/ if (((LOGICSECTION_OCCUPY_CT == logCurOccupyState) || ((LOGICSECTION_OCCUPY_NO == logCurOccupyState) && (LOGICSECTION_OCCUPY_CT == logPreOccupyState))) @@ -2254,7 +2256,6 @@ void RouteNearLockManage(const UINT16 routeId) */ void RouteDelayUnlockManage(const UINT16 routeId) { - UINT8 routeLevel = 0u; /*·ල*/ UINT16 startSignalId = 0u; /*·ʼźŻID*/ UINT32 delayStartCycNum = 0u; /*ʱʼں*/ UINT32 delayTotalCycSum = 0u; /*ʱ*/ @@ -2267,13 +2268,10 @@ void RouteDelayUnlockManage(const UINT16 routeId) UINT16 wTrainId = 0u; UINT16 wLastTrainId = 0u; UINT32 curCycle = 0u; - UINT8 chRouteState = 0u; /*ȡ·ֶ̬*/ - routeLevel = GetRouteLevel(routeId); /*ȡ·ල*/ startSignalId = GetRouteStartSignalId(routeId); /*ȡ·ʼźŻID*/ curCycle = Get2oo2CurCycleNum(); - chRouteState = GetRouteType(routeId); (void)DriveSignalClose(startSignalId); /*źŹر*/ @@ -4515,7 +4513,10 @@ void RouteZongRenJieProc(const UINT16 routeId) if (CI_SUCCESS == checkResultSecAndQXZC) { /*οлһռ*/ - SetRouteStateManage(routeId, ROUTE_STATE_IDLE); /*-->ý·*/ + /*˽*/ + 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)) {/*˽·ʱȡղ̵δܽ·*/ @@ -4904,6 +4905,7 @@ UINT8 RouteLTrainEnter(const UINT16 routeId) UINT8 chRCMode = 0u; UINT8 cRoutePreLevel = 0U; /*·֮ǰ*/ UINT8 chLocalCiType = 0U;/**/ + UINT8 chRouteBelongVirCiId = 0U; /* ߼ */ @@ -5048,7 +5050,8 @@ UINT8 RouteLTrainEnter(const UINT16 routeId) chDevState = GetPhySecCurMergeState(inPhySecId); if (SECTION_OCCUPY_YES == chDevState) { /*ڷռã·ΪCBTCdzʱΪгٿѹ,ֻҪڷһεռѹùⷽ*/ - chLocalCiType = GetLocalCiType(); + chRouteBelongVirCiId = GetRouteBelongVirCiId(routeId); + chLocalCiType = GetLocalVirCiType(chRouteBelongVirCiId); if ((ROUTE_LEVEL_CBTC == routeLevel) && (CI_TYPE_CLD != chLocalCiType)) { chRetVal = CI_SUCCESS; @@ -8368,7 +8371,14 @@ void SetSectionResetLogicManage(const UINT16 phySecId, const UINT8 resetType) } else { - retValid = GetZFWValidByPhySecId(phySecId); /*ȡμܸλ̵״̬Ч*/ + if (PHYSICAL_SECTION_PRE_RESET_YES != resetType) + { + retValid = GetZFWValidByPhySecId(phySecId); /*Ḵλμܸλ̵״̬Ч*/ + } + else + { + retValid = CI_SUCCESS;/*Ԥλܸλ̵*/ + } if (CI_SUCCESS == retValid) /*ЧִмḴλ*/ { dwResetStartCycNum = GetPhySecResetStartCycNum(phySecId); @@ -11117,6 +11127,7 @@ void UnlockSwitchLogicManage(void) UINT8 unlockFlag = 0U;/*־*/ UINT8 funcSwitch = 0U; UINT8 chPhySecLogLockState = 0U;/*߼״̬*/ + UINT8 chPhySecJumpLockState = 0U; localCiId = GetSystemParaLocalCiId(); /*ȡID*/ funcSwitch = GetCiFunctionSwitchConfig(FUNC_ROUTE_DRV_SWITCH_EARLY); @@ -11147,10 +11158,11 @@ void UnlockSwitchLogicManage(void) phyLockStatus = GetPhySecLockState(hostPhyId);/*ȡ״̬*/ chFuncRet1 = GetSwitchLogSecLockState(hostSwitchId, &wDevId, &chDevState); chPhySecLogLockState = PhySecLogLockStateCheck(hostPhyId); + chPhySecJumpLockState = GetPhySecJumpLockState(hostPhyId); if ((PHYSICAL_SECTION_LOCK_NO == phyLockStatus) && (CI_SUCCESS == chFuncRet1) - && (LOG_SECTION_LOGLOCK_NO == chPhySecLogLockState)) - {/*״̬Ϊδ(δ·߼δ·δ߼·)*/ + && (LOG_SECTION_LOGLOCK_NO == chPhySecLogLockState)&&(PHYSICAL_SECTION_JUMP_LOCK_NO == chPhySecJumpLockState)) + {/*״̬Ϊδ(δ·߼δ·δ߼·,δԾ)*/ unlockFlag = 1u; } else @@ -11413,6 +11425,9 @@ void CheckLogSecJumpLockManage(void) UINT8 logJumpLockState = LOGIC_SECTION_JUMP_LOCK_NO; UINT8 localCi = 0u;/**/ UINT16 logJumpLockTrainId = 0u; + UINT16 devId = 0u; /*豸ID*/ + UINT8 devState = 0u; /*豸״̬*/ + UINT8 retVal = CI_ERROR; localCi = GetSystemParaLocalCiId(); @@ -11432,8 +11447,19 @@ void CheckLogSecJumpLockManage(void) checkResult = CheckLogJumpLockApply(logicSecId); if (CI_SUCCESS == checkResult) { - /** 㣬Ծ־Ϊ */ - SetLogSecJumpLockPermFlag(logicSecId, LOGIC_JUMPUNLOCK_PERMISSIVE_YES); + devId = 0u; + devState = 0u; + retVal = LogicSecRltvPrtctSwLockCheck(logicSecId, &devId, &devState); + if (CI_SUCCESS == retVal) + { + /** 㣬Ծ־Ϊ */ + SetLogSecJumpLockPermFlag(logicSecId, LOGIC_JUMPUNLOCK_PERMISSIVE_YES); + } + else + { + /** 㣬Ծ־Ϊֹ */ + SetLogSecJumpLockPermFlag(logicSecId, LOGIC_JUMPUNLOCK_PERMISSIVE_NO); + } } else { @@ -11488,7 +11514,6 @@ void AxisSecJumpLockLogicManage(void) UINT8 applyFlag = 0u;/*־*/ UINT8 cancelApplyFlag = 0u;/*ȡ־*/ UINT16 phyId = 0u;/*ID*/ - UINT8 phyUseState = 0u;/*״̬*/ UINT8 jumpLockState = 0u;/*Ծ״̬*/ UINT8 secBelongCi = 0u;/**/ UINT8 localCi = 0u;/**/ @@ -11501,6 +11526,7 @@ void AxisSecJumpLockLogicManage(void) UINT32 applyCycle = 0u;/*Ծ*/ UINT32 curCycle = 0u;/*ǰں*/ UINT8 chPhySecJmpState = 0U; + UINT8 chJumpPhySectionUseCheck = 0U; localCi = GetSystemParaLocalCiId(); axisSectionDataSum = GetTotalAxisCurNum(); @@ -11516,7 +11542,6 @@ void AxisSecJumpLockLogicManage(void) jumpLockState = GetAxisJumpLockState(axisSectionId);/*ȡԾ״̬*/ phyId = GetAxisSecRelativePhySecId(axisSectionId);/*ȡID*/ - phyUseState = GetPhySecUseState(phyId);/*ȡ״̬*/ secBelongCi = GetPhySecBelongCiId(phyId); @@ -11554,10 +11579,12 @@ void AxisSecJumpLockLogicManage(void) (AXSEC_CANCEL_JUMPLOCK_APPLY_NO == cancelApplyFlag)) {/*Ծ*/ - if (PHYSICAL_SECTION_USING_NO == phyUseState) + chJumpPhySectionUseCheck = JumpPhySectionUseCheck(axisSectionId); + if (CI_SUCCESS == chJumpPhySectionUseCheck) {/*δ*/ /**/ SetPhySecUseState(phyId, PHYSICAL_SECTION_USING_YES, 0); + SetJumpPhySectionPortectSecUse(phyId, PHYSICAL_SECTION_USING_YES);/*ι*/ /*תΪѡ*/ SetAxisJumpLockState(axisSectionId, AXIS_SECTION_JUMPLOCK_STATE_XUANPAI); } @@ -11583,6 +11610,7 @@ void AxisSecJumpLockLogicManage(void) (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); } @@ -11603,6 +11631,7 @@ void AxisSecJumpLockLogicManage(void) (AXSEC_CANCEL_JUMPLOCK_APPLY_YES == cancelApplyFlag)) {/*ȡԾ*/ SetAxisJumpLockState(axisSectionId, AXIS_SECTION_JUMPLOCK_STATE_IDLE); + SetAxisRelProSwitchLockSta(axisSectionId, SWITCH_LOCK_PROTECT_CANCEL); } } break; @@ -11645,12 +11674,14 @@ void AxisJumpLockXuanPaiManage(const UINT16 axisSecId) { rtVal = LockAxisSecProc(axisSecId);/*Ծ*/ } - axisSecSwitDrvOvtmFlag = ChekJumpLockSwitDrivOvtmStat(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);/*εķȡ*/ } else if ((RETURN_LOCK_ERR_SWITPOS == rtVal) && (CI_SUCCESS == axisSecSwitDrvOvtmFlag)) {/*λôûгʱ*/ @@ -11661,6 +11692,8 @@ void AxisJumpLockXuanPaiManage(const UINT16 axisSecId) { /*δ*/ SetPhySecUseState(phyId, PHYSICAL_SECTION_USING_NO, 0); + SetJumpPhySectionPortectSecUse(phyId, PHYSICAL_SECTION_USING_NO);/*εķȡ*/ + /*üԾ״̬*/ SetAxisJumpLockState(axisSecId, AXIS_SECTION_JUMPLOCK_STATE_IDLE); } @@ -11669,6 +11702,8 @@ void AxisJumpLockXuanPaiManage(const UINT16 axisSecId) {/**/ /*δ*/ SetPhySecUseState(phyId, PHYSICAL_SECTION_USING_NO, 0); + SetJumpPhySectionPortectSecUse(phyId, PHYSICAL_SECTION_USING_NO);/*εķȡ*/ + /*üԾ״̬*/ SetAxisJumpLockState(axisSecId, AXIS_SECTION_JUMPLOCK_STATE_IDLE); } @@ -12393,8 +12428,11 @@ void RoutePhyOrLogSecAutoUnlocManage(const UINT16 routeId) UINT8 chPhyIncSwitchSum = 0U; UINT16* pPhySecSwitchId = NULL; UINT8 localCiType = 0U;/**/ + UINT8 chRouteBelongVirCiId = 0U; - localCiType = GetLocalCiType(); + + chRouteBelongVirCiId = GetRouteBelongVirCiId(routeId); + localCiType = GetLocalVirCiType(chRouteBelongVirCiId); /*ȡ·յĵһ߼ռ״̬*/ @@ -12562,7 +12600,6 @@ void LogicSecResManage(void) startLockState = GetStartLockFlag(); /*ȡϵ־*/ startFlockFlag = GetStartFLockFlag(); /*ȡϵ־*/ - if (0u == localCiId) { rtVal = CI_ERROR; @@ -13730,6 +13767,8 @@ static void TrainTransitmitStatJumpLockProcess(const UINT16 logSectionId, const /** Ծʱʼںźʱñ־*/ SetLogSecJumpDelayUnlocStartCyc(logSectionId, 0u); SetLogSecJumpDelayUnlockFlag(logSectionId, LOGIC_JUMPUNLOCK_DELAY_SET_NO); + /*ȡ*/ + SetLogSecRelProSwitchLockSta(logSectionId, SWITCH_LOCK_PROTECT_CANCEL); } else { @@ -14434,6 +14473,8 @@ void PhySecJumpLockLogicManage(void) UINT32 dwApplyCycle = 0U;/*Ծں*/ UINT8 chPhySecFLockType = 0U;/*η*/ UINT8 chPhySecJempState = 0U;/*Ծ״̬*/ + UINT16 devId = 0u; /*豸ID*/ + UINT8 devState = 0u; /*豸״̬*/ wAxisSectionDataSum = GetTotalAxisCurNum(); @@ -14457,7 +14498,8 @@ void PhySecJumpLockLogicManage(void) if ((PHY_SEC_FLOCK_TYPE_NONE == chPhySecFLockType)) { SetPhySecJumpLockState(wPhyId, PHYSICAL_SECTION_JUMP_LOCK_YES); - SetPhySecJumpLockStateToZC(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); } else @@ -14480,8 +14522,13 @@ void PhySecJumpLockLogicManage(void) } else { /*ڲգʱٴθZC*/ - - SetPhySecJumpLockStateToZC(wPhyId, PHYSICAL_SECTION_JUMP_LOCK_YES); + devId = 0u; + devState = 0u; + chTempcheck = AxisRelatedProSwitchLockCheck(wAxisSectionId, &devId, &devState); + if (CI_SUCCESS == chTempcheck) + { + SetPhySecJumpLockStateToZC(wPhyId, PHYSICAL_SECTION_JUMP_LOCK_YES); + } } } } @@ -14490,6 +14537,7 @@ void PhySecJumpLockLogicManage(void) {/*ȡԾ*/ SetPhySecJumpLockState(wPhyId, PHYSICAL_SECTION_JUMP_LOCK_NO); SetPhySecJumpLockStateToZC(wPhyId, PHYSICAL_SECTION_JUMP_LOCK_NO); + SetAxisRelProSwitchLockSta(wAxisSectionId, SWITCH_LOCK_PROTECT_CANCEL);/*ȡ*/ } } } @@ -15607,7 +15655,7 @@ void SetNormalRouteLogicResUsable(const UINT16 wLogSectionId, const UINT16 wTrai if ((LOG_SECTION_LOCK_NORMAL == chLogicLockState) || (LOG_SECTION_LOCK_DELAY == chLogicLockState)) { - chRouteTrainEnterFlag = dsuTrainMinHeadCrossSignal(wTrainId, wLogicRLockRouteId); + chRouteTrainEnterFlag = dsuTrainMinHeadCrossSignal(wTrainId, wLogicRLockRouteId, CI_SUCCESS); chTrainMaxHeadCross = dsuTrainCrossSignal(wTrainId, wLogicRLockRouteId);/*жгǰǷʻ·*/ diff --git a/TSCP/src/APP/ciapp/LogicManage/RouteRecoverManage.c b/TSCP/src/APP/ciapp/LogicManage/RouteRecoverManage.c index b39599c..ca7464f 100644 --- a/TSCP/src/APP/ciapp/LogicManage/RouteRecoverManage.c +++ b/TSCP/src/APP/ciapp/LogicManage/RouteRecoverManage.c @@ -3161,14 +3161,14 @@ static UINT8 OtherCiValidErrCheck(UINT16 const routeId) { if (psdIdBuf[j] == tmpOtherCiDevInfo->DevId) { - cPsdExceptOpenState = GePsdExceptOpenState(tmpOtherCiDevInfo->DevId); - if (PSD_EXCEPT_OPEN_NO == cPsdExceptOpenState) + cPsdExceptOpenState = GePsdExceptState(tmpOtherCiDevInfo->DevId); + if (PSD_EXCEPT_NO == cPsdExceptOpenState) { - toOpenCheckFlag = 1U; /*PSDδ쳣򿪣ÿԶؿ*/ + toOpenCheckFlag = 1U; /*PSDδ쳣ÿԶؿ*/ } else { - toOpenCheckFlag = 0U; /*PSD쳣򿪣ֹͣòԶؿ*/ + toOpenCheckFlag = 0U; /*PSD쳣ֹͣòԶؿ*/ break; } } @@ -4171,12 +4171,15 @@ static UINT8 KeepCbtcRouteSectionErrCheck(const UINT16 routeId) UINT8 preLogDevState = 0u; /*֮ǰ߼ռ״̬*/ UINT8 LogSecCurCtOrUtOcc = 0U; /*߼εǰռ״̬*/ UINT8 cLocalCiType = 0U; /**/ + UINT8 chRouteBelongVirCiId = 0U; rcWorkMode = GetLocalRcWorkMode(); /* ߼ */ reResult = CI_SUCCESS; cLocalCiType = GetLocalCiType(); + chRouteBelongVirCiId = GetRouteBelongVirCiId(routeId); + cLocalCiType = GetLocalVirCiType(chRouteBelongVirCiId); if (CI_TYPE_CLD != cLocalCiType) { /*dzΣCBTC߼*/ @@ -4324,10 +4327,12 @@ static UINT8 OpenCbtcRouteSectionErrCheck(const UINT16 routeId) UINT8 cLocalCiType = 0U; /**/ UINT8 chRouteCouplinkFlag = 0U; UINT8 chSigCrossState = 0U; + UINT8 chRouteBelongVirCiId = 0U; rcWorkMode = GetLocalRcWorkMode(); /* ߼ */ - cLocalCiType = GetLocalCiType(); + chRouteBelongVirCiId = GetRouteBelongVirCiId(routeId); + cLocalCiType = GetLocalVirCiType(chRouteBelongVirCiId); if (CI_TYPE_CLD != cLocalCiType) { /*dzΣCBTC߼*/ diff --git a/TSCP/src/APP/ciapp/LogicManage/TradInterlockLogicManage.c b/TSCP/src/APP/ciapp/LogicManage/TradInterlockLogicManage.c index 6412aea..dff2d7a 100644 --- a/TSCP/src/APP/ciapp/LogicManage/TradInterlockLogicManage.c +++ b/TSCP/src/APP/ciapp/LogicManage/TradInterlockLogicManage.c @@ -229,6 +229,7 @@ void NonRouteLogicProcess(void) { NonRouteCancelDeal(pNonRoute->NonRouteId); /*ǽ·ȡ*/ } + } } @@ -240,22 +241,42 @@ void NonRouteLogicProcess(void) */ void NonRouteXuanPaiDeal(UINT8 nonRouteId) { + UINT8 reResult = CI_ERROR; NonRouteDataStruct *pNonRoute = GetNonRouteDataById(nonRouteId); - if (CI_SUCCESS == LockNonRouteP(nonRouteId)) + reResult = LockNonRouteP(nonRouteId); + if (CI_SUCCESS == reResult) { /*ճɹ*/ - - if (CI_SUCCESS == CheckNonRouteSwitchPosRight(nonRouteId,0u,0u)) - { /*·λȷ*/ - SetNonRouteStateDeal(nonRouteId,NONROUTE_STATE_LOCK); /*÷ǽ·Ϊ*/ + reResult = CheckNonRouteSwitchPosRight(nonRouteId, 0U, 0U); + if (CI_SUCCESS == reResult) + { + /*·λȷ*/ + /**/ + reResult = NonRouteIntruSecVainCheck(nonRouteId, EFUNC_CLD_LOCK_NONROUTE, ESEND_LEVEL_ATS); + if (CI_SUCCESS == reResult) + { + SetNonRouteStateDeal(nonRouteId, NONROUTE_STATE_LOCK); /*÷ǽ·Ϊ*/ + } + else + { + SetNonRouteStateDeal(nonRouteId, NONROUTE_STATE_IDLE); /*÷ǽ·Ϊ*/ + /* NonRouteIntruSecVainCheckѾй룬ټ¼*/ + } + + } else { /*δλ*/ /*ǽ·*/ - if (CI_ERROR == NonRouteLockDrvSwitchDeal(nonRouteId)) + reResult = NonRouteLockDrvSwitchDeal(nonRouteId); + if (CI_SUCCESS == reResult) { - SetNonRouteStateDeal(nonRouteId,NONROUTE_STATE_IDLE); /*÷ǽ·Ϊ*/ + /**/ } + else + { + SetNonRouteStateDeal(nonRouteId, NONROUTE_STATE_IDLE); /*÷ǽ·Ϊ*/ + } } } @@ -6026,6 +6047,8 @@ void DTrainReturnUnlockP(void) UINT16 routeId = 0u; /*·ID*/ UINT8 belongCiId = 0u; /*·ID*/ UINT16 ii = 0u; /*ѭ*/ + UINT8 belongVirCIid = 0U; + UINT8 chLocalVirCiType = 0U; routeCurSum = GetRouteCurSum(); /*ȡ·*/ @@ -6047,9 +6070,13 @@ void DTrainReturnUnlockP(void) { continue; } - - /*;۷·մ*/ - DTrainReturnUnlockRouteAllLockP(routeId); + belongVirCIid = GetRouteBelongVirCiId(routeId); + chLocalVirCiType = GetLocalVirCiType(belongVirCIid); + if (CI_TYPE_CLD == chLocalVirCiType) + { + /*;۷·մ*/ + DTrainReturnUnlockRouteAllLockP(routeId); + } } /*;۷*/ @@ -6068,9 +6095,13 @@ void DTrainReturnUnlockP(void) { continue; } - - /*;۷·մ*/ - DTrainRtnUnlockRoutePartLockP(routeId); + belongVirCIid = GetRouteBelongVirCiId(routeId); + chLocalVirCiType = GetLocalVirCiType(belongVirCIid); + if (CI_TYPE_CLD == chLocalVirCiType) + { + /*;۷·մ*/ + DTrainRtnUnlockRoutePartLockP(routeId); + } } } @@ -6089,6 +6120,11 @@ UINT16 GetReturnId(const UINT16 routeId) UINT8 preRouteState = 0u; /* ֮ǰ·״̬ */ UINT16 ii = 0u; UINT8 toGo = CI_SUCCESS; + UINT8 chRouteState = 0U; + UINT8 chRoutePhysicalType = 0U; + UINT8 chAllLockSecNoOccupyCheck = 0U; + UINT8 chTrainEnterRouteFlag = 0U; + routeState = GetRouteState(routeId); /*ȡ·״̬*/ preRouteState = GetRoutePreState(routeId);/*ȡ·ǰһ״̬*/ @@ -6098,7 +6134,8 @@ UINT16 GetReturnId(const UINT16 routeId) toGo = CI_ERROR; } - if ((CI_ERROR == RouteAllLockSecNoOccupyCheck(routeId)) && (CI_SUCCESS == toGo)) + chAllLockSecNoOccupyCheck = RouteAllLockSecNoOccupyCheck(routeId); + if ((CI_ERROR == chAllLockSecNoOccupyCheck) && (CI_SUCCESS == toGo)) { /*·βǶ*/ toGo = CI_ERROR; @@ -6119,8 +6156,10 @@ UINT16 GetReturnId(const UINT16 routeId) /*ȡĽ·ID*/ for (ii = 0u; ii < starSigRouteSum; ii++) { + chRouteState = GetRouteState(starSigRouteBuf[ii]); + chRoutePhysicalType = CheckRoutePhysicalType(starSigRouteBuf[ii]); /*BΪ·8鳵ռѹ·ʱʱBG2·ҪԲֵźŻΪʼ˵Ľ·״̬*/ - if ((ROUTE_STATE_IDLE == GetRouteState(starSigRouteBuf[ii])) &&(CI_SUCCESS == CheckRoutePhysicalType(starSigRouteBuf[ii]))) + if ((ROUTE_STATE_IDLE == chRouteState) &&(CI_SUCCESS == chRoutePhysicalType)) { /*ԲźŻΪʼ˵Ľ·Ϊҽ·ξΪмΣҲźŻΪźŻ, 㷨Ŀǰֻڿ;۷(SIGNAL_VIRTUAL_YES == GetSignalVirtualAttr(returnSigId))*/ @@ -6148,7 +6187,8 @@ UINT16 GetReturnId(const UINT16 routeId) /* Dzгʻ·ͬʱ֮ǰ״̬Ϊӽտ * Ϊͬһг;۷ */ - if((ROUTE_STATE_NEAR_OPEN == preRouteState) && (TRAIN_ENTER_ROUTE_FLAG_YES == GetTrainEnterRouteFlag(routeId))) + chTrainEnterRouteFlag = GetTrainEnterRouteFlag(routeId); + if((ROUTE_STATE_NEAR_OPEN == preRouteState) && (TRAIN_ENTER_ROUTE_FLAG_YES == chTrainEnterRouteFlag)) { returnSigId = GetRouteChaZhiSignalId(routeId); /*ȡźŻID*/ } diff --git a/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicCheck.c b/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicCheck.c index eb8f672..242afef 100644 --- a/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicCheck.c +++ b/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicCheck.c @@ -5249,14 +5249,7 @@ UINT8 CheckDTrainKeepSigPhySecOccupy(const UINT16 routeId,UINT8 functionId,UINT8 } else { - if (0u == outPhySecId) - {/*ⷽβ*/ - devState = SECTION_OCCUPY_YES;/*ĬΪռ*/ - } - else - { - devState = GetPhySecCurMergeState(outPhySecId); - } + devState = GetPhySecCurMergeState(outPhySecId); SetErrorData(functionId,CI_DEVICE_TYPE_PHYSEC,outPhySecId,ETYPE_PS_MERGY_OCU_STATE,devState,sendLevel); } } @@ -7636,9 +7629,9 @@ UINT8 OtherCiValidCheck(UINT16 const routeId,UINT8 const functionId,UINT8 const UINT8 OtherCiDevStatusCheck(UINT16 const routeId,const RouteOtherCheckStruct *pOtherDevInfo, UINT16 *pDevId,UINT8 *pDevState) { - UINT16 devId = pOtherDevInfo->DevId; - UINT16 chkDevStatus = pOtherDevInfo->DevStatus; - UINT16 devType = pOtherDevInfo->DevType; + UINT16 devId = 0U; + UINT16 chkDevStatus = 0U; + UINT16 devType = 0U; UINT8 devState = 0u; UINT8 ret = CI_ERROR; UINT8 routeLeadProperty = 0u; /*·*/ @@ -7654,130 +7647,142 @@ UINT8 OtherCiDevStatusCheck(UINT16 const routeId,const RouteOtherCheckStruct *pO UINT8 cFuncSwitchEsb = FUNC_SWITCH_ON; /*·ǷESB*/ UINT8 cRouteToLeadFlag = 0U; /*·ת·־*/ - devState = GetOtherCiDevStatus(devType,devId,chkDevStatus); + if (NULL != pOtherDevInfo) + { + devId = pOtherDevInfo->DevId; + chkDevStatus = pOtherDevInfo->DevStatus; + devType = pOtherDevInfo->DevType; - if (CI_DEVICE_TYPE_SIGNAL != devType) - { /* źŻ״̬ */ - /* ״̬㣬򷵻ʧ */ - if (chkDevStatus != devState) - { - routeLeadProperty = GetRouteLeadProperty(routeId);/*ȡ·*/ - routeState = GetRouteState(routeId);/*ȡ·״̬*/ - cRouteToLeadFlag = GetRouteToLeadFlag(routeId); /*ȡ·ת־*/ - if (((ROUTE_LEAD_PROPERTY_YES == routeLeadProperty) || (ROUTE_LEAD_PROPERTY_CBTC_YES == routeLeadProperty)) - && (((ROUTE_STATE_LEAD_LOCK == routeState) || (ROUTE_STATE_LEAD_LOCKERR == routeState) || (ROUTE_STATE_LEAD_OPEN == routeState)) || (ROUTE_TO_LEAD_FLAG_YES == cRouteToLeadFlag))) + devState = GetOtherCiDevStatus(devType, devId, chkDevStatus); + + if (CI_DEVICE_TYPE_SIGNAL != devType) + { /* źŻ״̬ */ + /* ״̬㣬򷵻ʧ */ + if (chkDevStatus != devState) { - /*·ֻ·ⷽεռ״̬ߵ(ݡ·Ƿ״̬ȷǷ) - ESB(ݡ·ǷESB״̬ȷǷ)*/ - cFuncSwitchFloodGate = GetCiFunctionSwitchConfig(FUNC_LEADROUTE_FLOODGATE_CHECK); - cFuncSwitchEsb = GetCiFunctionSwitchConfig(FUNC_LEADROUTE_ESB_CHECK); + routeLeadProperty = GetRouteLeadProperty(routeId);/*ȡ·*/ + routeState = GetRouteState(routeId);/*ȡ·״̬*/ + cRouteToLeadFlag = GetRouteToLeadFlag(routeId); /*ȡ·ת־*/ - if ((CI_DEVICE_TYPE_AXISSEC == devType) || (CI_DEVICE_TYPE_CONNECT_SWITCH == devType) || (CI_DEVICE_TYPE_SWITCH == devType) - || ((CI_DEVICE_TYPE_FLOODGATE == devType) && (FUNC_SWITCH_OFF != cFuncSwitchFloodGate)) - || ((CI_DEVICE_TYPE_ESB == devType) && (FUNC_SWITCH_OFF != cFuncSwitchEsb))) - { - ret = CI_ERROR; + if (((ROUTE_LEAD_PROPERTY_YES == routeLeadProperty) || (ROUTE_LEAD_PROPERTY_CBTC_YES == routeLeadProperty)) + && (((ROUTE_STATE_LEAD_LOCK == routeState) || (ROUTE_STATE_LEAD_LOCKERR == routeState) || (ROUTE_STATE_LEAD_OPEN == routeState)) || (ROUTE_TO_LEAD_FLAG_YES == cRouteToLeadFlag))) + { + /*·ֻ·ⷽεռ״̬ߵ(ݡ·Ƿ״̬ȷǷ) + ESB(ݡ·ǷESB״̬ȷǷ)*/ + cFuncSwitchFloodGate = GetCiFunctionSwitchConfig(FUNC_LEADROUTE_FLOODGATE_CHECK); + cFuncSwitchEsb = GetCiFunctionSwitchConfig(FUNC_LEADROUTE_ESB_CHECK); + + if ((CI_DEVICE_TYPE_AXISSEC == devType) || (CI_DEVICE_TYPE_CONNECT_SWITCH == devType) || (CI_DEVICE_TYPE_SWITCH == devType) + || ((CI_DEVICE_TYPE_FLOODGATE == devType) && (FUNC_SWITCH_OFF != cFuncSwitchFloodGate)) + || ((CI_DEVICE_TYPE_ESB == devType) && (FUNC_SWITCH_OFF != cFuncSwitchEsb))) + { + ret = CI_ERROR; + } + else + { + ret = CI_SUCCESS; + } } else { - ret = CI_SUCCESS; - } - } - else - { - if (CI_DEVICE_TYPE_AXISSEC == devType) /*վֱ죬Ҫᵥж*/ - { - AxisSecLinXianFlag = GetAxisSecLinXianFlag(devId); - - if (AXIS_SEC_LINXIAN_NO == AxisSecLinXianFlag) + if (CI_DEVICE_TYPE_AXISSEC == devType) /*վֱ죬Ҫᵥж*/ { - /*ȡ·ⷽһȥ߼*/ - leaveLogicSecId = GetRouteLeaveLogicSecId(routeId); - /*·ⷽȥ*/ - if (0U != leaveLogicSecId) - { - /*߼ΰĵ*/ - logSwichSum = GetLogicSecSwitchSum(leaveLogicSecId); - routeOverlapSum = GetRouteOverlapSum(routeId); - /*߼ιļ*/ - logBelogAxisNum = GetLgcSecRelativeAxleSecSum(leaveLogicSecId); - logBelogAxisBuff = GetLgcSecRltvAxleSecIdBuf(leaveLogicSecId); + AxisSecLinXianFlag = GetAxisSecLinXianFlag(devId); - /*ǰ·ޱΣȥ߼β*/ - if ((0U == logSwichSum) && (0U == routeOverlapSum) && (1U == logBelogAxisNum)) + if (AXIS_SEC_LINXIAN_NO == AxisSecLinXianFlag) + { + /*ȡ·ⷽһȥ߼*/ + leaveLogicSecId = GetRouteLeaveLogicSecId(routeId); + /*·ⷽȥ*/ + if (0U != leaveLogicSecId) { - /*õļΪ·ȥΣɼ·ȥABLг*/ - if (logBelogAxisBuff[0] == devId) + /*߼ΰĵ*/ + logSwichSum = GetLogicSecSwitchSum(leaveLogicSecId); + routeOverlapSum = GetRouteOverlapSum(routeId); + /*߼ιļ*/ + logBelogAxisNum = GetLgcSecRelativeAxleSecSum(leaveLogicSecId); + logBelogAxisBuff = GetLgcSecRltvAxleSecIdBuf(leaveLogicSecId); + + /*ǰ·ޱΣȥ߼β*/ + if ((0U == logSwichSum) && (0U == routeOverlapSum) && (1U == logBelogAxisNum)) { - ret = TrainLeaveLogSecABLTrainCheck(leaveLogicSecId); + /*õļΪ·ȥΣɼ·ȥABLг*/ + if (logBelogAxisBuff[0] == devId) + { + ret = TrainLeaveLogSecABLTrainCheck(leaveLogicSecId); + } + else + { + ret = CI_ERROR; + } + } else { ret = CI_ERROR; } - } else { - ret = CI_ERROR; + ret = CI_ERROR; /*·ȥΣټǷVBLӽֱӷʧ*/ } } else { - ret = CI_ERROR; /*·ȥΣټǷVBLӽֱӷʧ*/ + ret = CI_ERROR; /*DZ·ټǷVBLӽֱӷʧ*/ } } else { - ret = CI_ERROR; /*DZ·ټǷVBLӽֱӷʧ*/ + if (OTHER_CI_PSD_STATUS_OCCUPY_OPEN == devState) + { + /* յVOBC ֻ¼*/ + ret = CI_ROUTE_RECOVER_ERR; + } + else + { + /* 쳣 */ + ret = CI_ERROR; + } } } - else - { - if (OTHER_CI_PSD_STATUS_OCCUPY_OPEN == devState) - { - /* յVOBC ֻ¼*/ - ret = CI_ROUTE_RECOVER_ERR; - } - else - { - /* 쳣 */ - ret = CI_ERROR; - } - } - } - } - else - { - ret = CI_SUCCESS; - } - } - else - { - /* źŻ״̬ */ - if ((OTHER_CI_SIGNAL_STATUS_SAME == chkDevStatus)||(OTHER_CI_SIGNAL_STATUS_OPEN == chkDevStatus)) - { - retVal = CheckRelationSignalOnSameOpen(routeId, devId, (UINT8)chkDevStatus); - if (CI_SUCCESS == retVal) - { - ret = CI_SUCCESS; } else { - ret = CI_ERROR; + ret = CI_SUCCESS; } } else { - /*쳣ֵźŻֻÿ0x550xbb*/ - ret = CI_ERROR; + /* źŻ״̬ */ + if ((OTHER_CI_SIGNAL_STATUS_SAME == chkDevStatus) || (OTHER_CI_SIGNAL_STATUS_OPEN == chkDevStatus)) + { + retVal = CheckRelationSignalOnSameOpen(routeId, devId, (UINT8)chkDevStatus); + if (CI_SUCCESS == retVal) + { + ret = CI_SUCCESS; + } + else + { + ret = CI_ERROR; + } + } + else + { + /*쳣ֵźŻֻÿ0x550xbb*/ + ret = CI_ERROR; + } + } + if (CI_ERROR == ret) + { + *pDevId = devId; + *pDevState = devState; } } - if (CI_ERROR == ret) - { - *pDevId = devId; - *pDevState = devState; + else + {/*룬ʵʲ*/ + ret = CI_ERROR; } return ret; @@ -8452,7 +8457,7 @@ UINT8 KeepBlocRouteOtherSignalCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLe /*·źŻ۷·*/ UINT8 const zheFanRouteSum = GetRtnEndSigAsStartSigRouteSum(routeId); UINT16 * const zheFanRouteIdBuf = GetReturnEndSigAsStartSigRoute(routeId); - + UINT16 const startSignalId = GetRouteStartSignalId(routeId); /* ߼ */ @@ -8530,8 +8535,9 @@ UINT8 KeepBlocRouteOtherSignalCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLe else { /* ¼ */ - SetErrorData(functionId,CI_DEVICE_TYPE_ROUTE,devId,ETYPE_SIG_RETURN_OPENED_STATE,devState,sendLevel); - reResult = CI_ERROR; + /*ԭETYPE_SIG_RETURN_OPENED_STATE·id˳ֱһ*/ + SetErrorData(functionId, CI_DEVICE_TYPE_SIGNAL, startSignalId, ETYPE_SIG_START_OPEN_STATE, SIGNAL_CLOSE, sendLevel); + reResult = CI_ERROR; } } @@ -8701,6 +8707,7 @@ UINT8 OpenBlocRouteOtherSignalCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLe UINT8 signalVirtualAttr = SIGNAL_VIRTUAL_NO;/*źŻ*/ UINT8 repeatOpenFlag = ROUTE_REPEATOPEN_SET_NO;/*ؿ־*/ + UINT16 const startSignalId = GetRouteStartSignalId(routeId); /* ߼ */ cRouteLeadProperty = GetRouteLeadProperty(routeId); @@ -8837,7 +8844,8 @@ UINT8 OpenBlocRouteOtherSignalCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLe else { /* ¼ */ - SetErrorData(functionId,CI_DEVICE_TYPE_ROUTE,devId,ETYPE_SIG_RETURN_OPENED_STATE,devState,sendLevel); + /*ԭETYPE_SIG_RETURN_OPENED_STATE ·id˳ֱһ */ + SetErrorData(functionId, CI_DEVICE_TYPE_SIGNAL, startSignalId, ETYPE_SIG_START_OPEN_STATE, SIGNAL_CLOSE, sendLevel); reResult = CI_ERROR; } } @@ -8887,7 +8895,7 @@ UINT8 OpenCbtcRouteOtherSignalCheck(UINT16 routeId, UINT8 functionId, UINT8 send UINT8 signalVirtualAttr = SIGNAL_VIRTUAL_NO;/*źŻ*/ UINT8 repeatOpenFlag = ROUTE_REPEATOPEN_SET_NO;/*ؿ־*/ UINT8 needOpenNotTrueRepeatFlag = ROUTE_NEEDOPEN_REOPEN_NO;/*迪Ųؿ־*/ - + UINT16 const startSignalId = GetRouteStartSignalId(routeId);/*ʼźŻ*/ routeState = GetRouteState(routeId);/*ȡ·״̬*/ /* ߼ */ @@ -9013,7 +9021,8 @@ UINT8 OpenCbtcRouteOtherSignalCheck(UINT16 routeId, UINT8 functionId, UINT8 send else { /* ¼ */ - SetErrorData(functionId, CI_DEVICE_TYPE_ROUTE, devId, ETYPE_SIG_RETURN_OPENED_STATE, devState, sendLevel); + /*ԭETYPE_SIG_RETURN_OPENED_STATE·id˳ֱһ*/ + SetErrorData(functionId, CI_DEVICE_TYPE_SIGNAL, startSignalId, ETYPE_SIG_START_OPEN_STATE, SIGNAL_CLOSE, sendLevel); reResult = CI_ERROR; } } @@ -11815,7 +11824,6 @@ UINT8 CheckRouteEndSignalNotCbtc(UINT16 routeId,UINT8 functionId,UINT8 sendLevel UINT8 confirmRelayInterfaceFlag = GetCiCiRelayInterfConfirmFlag();/*̵ӿȷ״̬*/ UINT8 sigalMaintainState = 0U;/*źŻά޵״̬*/ UINT8 belongVirCI = 0u; - UINT8 allSignalBrightFlag = 0u; /*ȫվ*/ bCiSwitchShowGreenYellow = GetCiFunctionSwitchConfig(CI_FUNCTION_SWITCH_SHOW_SIGNAL_GreenYellow); @@ -11841,9 +11849,6 @@ UINT8 CheckRouteEndSignalNotCbtc(UINT16 routeId,UINT8 functionId,UINT8 sendLevel sigalMaintainState = GetSignalMaintainState(routeEndSignalId);/*źŻά޵״̬*/ - belongVirCI = GetSignalBelongVirCiId(routeEndSignalId); - allSignalBrightFlag = GetVirCIAllSignalBrightState(belongVirCI);/*ȫվƱ־*/ - if ((SIGNAL_LIGHT_EXTICT_STATE_NO == endSignalLightExtinctState )&&(MAINTAIN_STATE_NO == sigalMaintainState)) { routeState = GetRouteState(routeId); @@ -13431,21 +13436,24 @@ UINT8 checkSwtLastValDrvPosStayorNot(const UINT16 switchId,const UINT8 swtCurPos UINT8 retVal = CI_ERROR;/*ֵ*/ UINT8 lastValidDrvSta = 0u;/*һεЧ״̬*/ UINT32 lastValidDrvCycNum = 0u;/*һεЧ״̬ʼ*/ + UINT32 dwLastDrvValidTime = 0u; + UINT8 timeOut = 0u; lastValidDrvSta = GetSwitchLastValidDrvPos(switchId); lastValidDrvCycNum = GetSwitchLastValDrvPosStartCyc(switchId); - + dwLastDrvValidTime = GetSwitchLastDrvValidTime();/*һЧڼ*/ if (SWITCH_POSITION_DINGWEI == swtCurPos) {/*λ*/ if (SWITCH_DRIVE_POS_FANWEI == lastValidDrvSta) {/*һЧΪλ*/ - if ((Get2oo2CurCycleNum() - lastValidDrvCycNum) <= SWITCH_LAST_DRV_STAY_MAX_NUM ) - {/**/ - retVal = CI_ERROR; + timeOut = SystemOverTimeCheck(lastValidDrvCycNum, dwLastDrvValidTime); + if (CI_TIME_OUT == timeOut) + {/*ʱ*/ + retVal = CI_SUCCESS; } else { - retVal = CI_SUCCESS; + retVal = CI_ERROR; } } else if((SWITCH_DRIVE_POS_DINGWEI == lastValidDrvSta) @@ -13463,13 +13471,14 @@ UINT8 checkSwtLastValDrvPosStayorNot(const UINT16 switchId,const UINT8 swtCurPos {/*λ*/ if (SWITCH_DRIVE_POS_DINGWEI == lastValidDrvSta) {/*һЧΪλ*/ - if ((Get2oo2CurCycleNum() - lastValidDrvCycNum) <= SWITCH_LAST_DRV_STAY_MAX_NUM ) - {/**/ - retVal = CI_ERROR; + timeOut = SystemOverTimeCheck(lastValidDrvCycNum, dwLastDrvValidTime); + if (CI_TIME_OUT == timeOut) + {/*ʱ*/ + retVal = CI_SUCCESS; } else { - retVal = CI_SUCCESS; + retVal = CI_ERROR; } } else if ((SWITCH_DRIVE_POS_FANWEI == lastValidDrvSta) @@ -15309,6 +15318,7 @@ UINT8 ChekJumpLockSwitDrivOvtmStat(const UINT16 axisSecId) UINT8 SwitchPos = SWITCH_POSITION_INVALID; UINT8 SwitchDrivOvtmDrvPos = SWITCH_DRIVE_POS_INVALID; + if (NULL == dataIdBuf) { /*޼*/ @@ -15351,6 +15361,81 @@ UINT8 ChekJumpLockSwitDrivOvtmStat(const UINT16 axisSecId) } } + if (CI_SUCCESS == retVal) + {/*Ƿʱ*/ + retVal = ChekJumpLockProtectSwitDrivOvtmStat(axisSecId); + } + + return retVal; +} + +/* +* ԾǷзʱ +* ˵ const UINT16 routeId, ID +* ֵ UINT8 + CI_SUCCESS:η޵ʱ + CI_ERROR:ηʱ +add by mpt 20260331 +*/ +UINT8 ChekJumpLockProtectSwitDrivOvtmStat(const UINT16 axisSecId) +{ + UINT8 retVal = CI_ERROR; + + UINT8 checkSum = 0u; + AxisSwitchStruct* dataIdBuf = NULL; + + /* ֲʼ */ + UINT16 i = 0u; /* ѭ */ + UINT16 SwitchId = 0u; + UINT8 SwitchPos = SWITCH_POSITION_INVALID; + UINT8 SwitchDrivOvtmDrvPos = SWITCH_DRIVE_POS_INVALID; + + + checkSum = GetAxisSecRelateProSwSum(axisSecId); + dataIdBuf = GetAxisSecRelateProSwStru(axisSecId); + + if (NULL == dataIdBuf) + { + /*޼*/ + retVal = CI_ERROR; + } + else + { + retVal = CI_SUCCESS; + /*ʼڵ*/ + for (i = 0u; i < checkSum; i++) + { + SwitchId = dataIdBuf[i].SwitchId; + SwitchPos = dataIdBuf[i].SwitchPosition; + SwitchDrivOvtmDrvPos = GetSwitchDrivOvtmDrvPosition(SwitchId); + + if (SWITCH_POSITION_DINGWEI == SwitchPos) + { + /*λȷ*/ + if (SWITCH_DRIVE_POS_DINGWEI == SwitchDrivOvtmDrvPos) + { + retVal = CI_ERROR; + break; + } + + } + else if (SWITCH_POSITION_FANWEI == SwitchPos) + { + /*λȷ*/ + if (SWITCH_DRIVE_POS_FANWEI == SwitchDrivOvtmDrvPos) + { + retVal = CI_ERROR; + break; + } + + } + else + { + /*ʲôҲ*/ + } + } + } + return retVal; } @@ -15516,6 +15601,10 @@ UINT8 JumpLockSwitchCheck(const UINT16 axisSecId,UINT8 funcId,UINT8 sendLevel) UINT16 devId = 0u; /*豸ID*/ UINT8 devState = 0u; /*豸״̬*/ UINT8 reVal = CI_ERROR; + UINT16 phyId = 0u; + UINT8 chPhySecJmpState = 0U; + + phyId = GetAxisSecRelativePhySecId(axisSecId);/*ȡID*/ /*еδ*/ devId = 0u; @@ -15541,6 +15630,22 @@ UINT8 JumpLockSwitchCheck(const UINT16 axisSecId,UINT8 funcId,UINT8 sendLevel) } } + /*εķδ*/ + if (CI_SUCCESS == reVal) + { + devId = 0u; + devState = 0u; + reVal = AxisSecProtSwitchFLockCheck(axisSecId, &devId, &devState); + if (CI_ERROR == reVal) + { + /* ¼ */ + SetErrorData(funcId, CI_DEVICE_TYPE_SWITCH, devId, ETYPE_SWT_FLOCK_STATE, devState, sendLevel); + } + } + + + + /*еλȷһһ»λòȷɶ*/ if (CI_SUCCESS == reVal) { @@ -15553,6 +15658,35 @@ UINT8 JumpLockSwitchCheck(const UINT16 axisSecId,UINT8 funcId,UINT8 sendLevel) SetErrorData(funcId,CI_DEVICE_TYPE_SWITCH,devId,ETYPE_SWT_FLOCK_STATE,devState,sendLevel); } } + + /*ηλȷһһ»λòȷɶ*/ + if (CI_SUCCESS == reVal) + { + devId = 0u; + devState = 0u; + reVal = AxisSecPorteSwitchPosMoveCheck(axisSecId, &devId, &devState, funcId, sendLevel); + if (CI_ERROR == reVal) + { + /* ¼ */ + SetErrorData(funcId, CI_DEVICE_TYPE_SWITCH, devId, ETYPE_SWT_FLOCK_STATE, devState, sendLevel); + } + } + + if (CI_SUCCESS == reVal) + { + chPhySecJmpState = GetPhySecJumpLockState(phyId); + if (PHYSICAL_SECTION_JUMP_LOCK_YES == chPhySecJmpState) + {/*״̬*/ + devId = 0u; + devState = 0u; + reVal = AxisRelatedProSwitchLockCheck(axisSecId, &devId, &devState); + } + else + { + /*ʱδΣδշ,ʲ*/ + } + } + /*еλȷ ȷRETURN_LOCK_ERR_SWITPOS ȷCI_SUCCESS*/ @@ -15567,6 +15701,18 @@ UINT8 JumpLockSwitchCheck(const UINT16 axisSecId,UINT8 funcId,UINT8 sendLevel) } } + /*ηеλȷ ȷRETURN_LOCK_ERR_SWITPOS ȷCI_SUCCESS*/ + if (CI_SUCCESS == reVal) + { + devId = 0u; + devState = 0u; + reVal = AxisSecAllProtSwitchPosCheck(axisSecId, &devId, &devState); + if (CI_ERROR == reVal) + { + reVal = RETURN_LOCK_ERR_SWITPOS; + } + } + return reVal; } @@ -15781,7 +15927,108 @@ UINT8 AxisSecSwitchPosMoveValCheck(UINT16 const axisSecId,UINT16 *pDevId,UINT8 * return reVal; } +/* +* εķλúͶЧԼ +* ˵ UINT16 const axisSecId, α +* UINT16 *pDevId, 豸Idأ +* UINT8 *pDevState, 豸״̬أ +* ֵ CI_ERROR +* CI_SUCCESS +* add by mpt 20260331 +*/ +UINT8 AxisSecPorteSwitchPosMoveCheck(UINT16 const axisSecId, UINT16* pDevId, UINT8* pDevState, UINT8 funcId, UINT8 sendLevel) +{ + /* ε */ + /* ֲʼ */ + UINT16 i = 0u; /* ѭ */ + UINT16 devId = 0u; + UINT8 devState = 0u; + UINT8 switchPos = 0u; + + UINT8 switchMoveState = 0u; + UINT8 reVal = CI_ERROR; + UINT8 checkResult = 0u; + + UINT8 checkSum = 0U; + AxisSwitchStruct* dataIdBuf = NULL; + + + checkSum = GetAxisSecRelateProSwSum(axisSecId); + dataIdBuf = GetAxisSecRelateProSwStru(axisSecId); + /**/ + if (NULL == dataIdBuf) + { + /*޼*/ + reVal = CI_ERROR; + } + else + { + reVal = CI_SUCCESS; + /*ʼ*/ + /* ·еλȷ ҲΪ λòȷɶ*/ + for (i = 0u; i < checkSum; i++) + { + devId = dataIdBuf[i].SwitchId; + devState = GetSwitchCurPosition(devId); + switchPos = dataIdBuf[i].SwitchPosition; + if (devState == switchPos) + { + /* λȷ */ + /*һβЧ򷵻ʧ*/ + checkResult = checkSwtLastValDrvPosStayorNot(devId, switchPos); + if (CI_SUCCESS == checkResult) + { + } + else + { + reVal = CI_ERROR; + } + } + else if (SWITCH_POSITION_SIKAI == devState) + { + /*Ŀ*/ + *pDevId = devId; + *pDevState = devState; + /* ¼ */ + SetErrorData(funcId, CI_DEVICE_TYPE_SWITCH, devId, ETYPE_SWT_POSTION_STATE, devState, sendLevel); + reVal = CI_ERROR; + } + else if (SWITCH_POSITION_JICHA == devState) + { + /**/ + *pDevId = devId; + *pDevState = devState; + /* ¼ */ + SetErrorData(funcId, CI_DEVICE_TYPE_SWITCH, devId, ETYPE_SWT_POSTION_STATE, devState, sendLevel); + reVal = CI_ERROR; + } + else + { + /* λòȷ */ + switchMoveState = GetSwitchMoveValidState(devId, SWITCH_OPER_NO_DANCAO, sendLevel); + if (CI_SUCCESS == switchMoveState) + { + /*ɶ*/ + } + else + { + /*λòȷ ɶ*/ + *pDevId = devId; + *pDevState = devState; + reVal = CI_ERROR; + } + } + if (CI_ERROR == reVal) + { + break; + } + } + } + + /*ȫͨ*/ + return reVal; +} /* * еλȷ * ˵ UINT16 const axisSecId, α @@ -15836,6 +16083,63 @@ UINT8 AxisSecAllSwitchPosCheck(UINT16 const axisSecId,UINT16 *pDevId,UINT8 *pDev return reVal; } /* +* зλȷ +* ˵ UINT16 const axisSecId, α +* UINT16 *pDevId, 豸Idأ +* UINT8 *pDevState, 豸״̬أ +* ֵ CI_ERROR +* CI_SUCCESS +* add mpt 20260331 +*/ +UINT8 AxisSecAllProtSwitchPosCheck(UINT16 const axisSecId, UINT16* pDevId, UINT8* pDevState) +{ + /* ε */ + UINT8 checkSum = 0u; + AxisSwitchStruct* dataIdBuf =NULL; + + /* ֲʼ */ + UINT16 i = 0u; /* ѭ */ + UINT16 devId = 0u; + UINT8 devState = 0u; + UINT8 reVal = CI_ERROR; + + checkSum = GetAxisSecRelateProSwSum(axisSecId); + dataIdBuf = GetAxisSecRelateProSwStru(axisSecId); + + /* ״̬ */ + if (NULL == dataIdBuf) + { + /*޼*/ + reVal = CI_ERROR; + } + else + { + reVal = CI_SUCCESS; + /*ʼ*/ + for (i = 0u; i < checkSum; i++) + { + devId = dataIdBuf[i].SwitchId; + devState = GetSwitchCurPosition(devId); + if (devState == dataIdBuf[i].SwitchPosition) + { + /*λȷ*/ + + } + else + { + /*λòȷ*/ + *pDevId = devId; + *pDevState = devState; + reVal = CI_ERROR; + break; + } + } + } + + /*ȫͨ*/ + return reVal; +} +/* * ָ·źŻⷽһελü * ˵ UINT16 const routeId, · * ֵ CI_ERROR @@ -18413,7 +18717,7 @@ UINT8 RouteCbtcFirstLgcSecCheck(UINT16 const routeId, UINT16 *pDevId, UINT8 *pDe } else if (1U == chReadyEnterRouteTrainSum) { - chTrainEnterState = dsuTrainMinHeadCrossSignal(wszReadyEtRouteTrainId[0], routeId); + chTrainEnterState = dsuTrainMinHeadCrossSignal(wszReadyEtRouteTrainId[0], routeId, CI_ERROR); if ((TRAIN_ENTER_ROUTE_FULL == chTrainEnterState) || (TRAIN_ENTER_ROUTE_TAIL == chTrainEnterState)) { /*гȫʻ·/̳ٳͷʻ·βڽ·ص by cgh 20250102*/ @@ -18596,7 +18900,7 @@ UINT8 RouteCbtcReturnFirstLgcSecCheck(UINT16 const routeId, UINT16 *pDevId, UINT /*ѹ֮ź*/ if ((CI_SUCCESS == chRetVal)&&(0u != wCrossTrainId)) { - chTrainEnterState = dsuTrainMinHeadCrossSignal(wCrossTrainId, routeId); + chTrainEnterState = dsuTrainMinHeadCrossSignal(wCrossTrainId, routeId, CI_ERROR); if ((TRAIN_ENTER_ROUTE_FULL == chTrainEnterState) || (TRAIN_ENTER_ROUTE_TAIL == chTrainEnterState)) { @@ -19467,7 +19771,7 @@ UINT8 RouteCbtcTiranEnterCheck(UINT16 const routeId) { wInFirstSecId = GetRouteInFirstLogSecId(routeId); chLogSecCurOccupySta = GetLogSecCurOccupyState(wInFirstSecId); - chTrainEnterState = dsuTrainMinHeadCrossSignal(wCrossTrainId, routeId); + chTrainEnterState = dsuTrainMinHeadCrossSignal(wCrossTrainId, routeId, CI_ERROR); wStartSignalId = GetRouteStartSignalId(routeId); wOutFirstPhySecId = GetSignalOutFirstPhySecId(wStartSignalId); @@ -19984,6 +20288,7 @@ UINT8 KeepCBTCRouteOtherSignalCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLe UINT16* pNeedCloseBuf = NULL; UINT8 zheFanRouteSum = 0U; UINT16 * zheFanRouteIdBuf = NULL; + UINT16 const startSignalId = GetRouteStartSignalId(routeId);/*ʼźŻ*/ /* ·豸 */ /*·迪źŻ*/ @@ -20077,7 +20382,8 @@ UINT8 KeepCBTCRouteOtherSignalCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLe else { /* ¼ */ - SetErrorData(functionId,CI_DEVICE_TYPE_ROUTE,devId,ETYPE_SIG_RETURN_OPENED_STATE,devState,sendLevel); + /*ԭETYPE_SIG_RETURN_OPENED_STATE·id˳ֱһ*/ + SetErrorData(functionId, CI_DEVICE_TYPE_SIGNAL, startSignalId, ETYPE_SIG_START_OPEN_STATE, SIGNAL_CLOSE, sendLevel); reResult = CI_ERROR; } } @@ -26888,7 +27194,6 @@ UINT8 KeepCouplinkRouteSecOccCheck(const UINT16 wRouteId, UINT16* pDevId, UINT8* UINT16* pDataIdBuf = NULL; UINT16 i = 0U; UINT8 chLogOccState = 0U; - UINT16 wLastLogId = 0U; if ((NULL != pDevId) && (NULL != pDevState)) { @@ -27947,3 +28252,564 @@ UINT8 AllAutoReturnRCouplinkCheck(const UINT16 wAutoRouteId, const UINT8 chFunct return chReval; } + + +/* +* áηáڵü顢ڷ +* ˵const UINT16 axisSecId ID +* ֵ CI_ERROR +* CI_SUCCESS +* add by mpt 20260331 +*/ +UINT8 JumpPhySectionUseCheck(const UINT16 axisSecId) +{ + /* ֲʼ */ + UINT8 reResult = CI_ERROR; /*ֵ*/ + UINT8 phyUseState = 0u;/*ü*/ + UINT8 phyId = 0u; + + + + /*Ծ*/ + phyId = GetAxisSecRelativePhySecId(axisSecId);/*ȡID*/ + phyUseState = GetPhySecUseState(phyId);/*ȡ״̬*/ + if (PHYSICAL_SECTION_USING_NO == phyUseState) + { + reResult = CI_SUCCESS; + } + else + { + /*޴*/ + } + + /*εķε*/ + if (CI_SUCCESS == reResult) + { + reResult = JumpPhySectionPortectUseCheck(axisSecId); + } + + + /*εĵ*/ + if (CI_SUCCESS == reResult) + { + reResult = JumpPhySectionSwitchUseCheck(axisSecId); + } + + /*εķ*/ + if (CI_SUCCESS == reResult) + { + reResult = JumpPhySectionSwitchUseCheck(axisSecId); + } + + + + return reResult; +} + +/* +* ηΡü +* ˵const UINT16 axisSecId ID +* ֵ CI_ERROR +* CI_SUCCESS +* add by mpt 20260331 +*/ +UINT8 JumpPhySectionPortectUseCheck(const UINT16 axisSecId) +{ + UINT16* pLogSectionIdBuf = NULL; + UINT8 chLogSectionSum = 0U; + UINT8 ii = 0U; + UINT8 chRetVal = CI_ERROR; + + pLogSectionIdBuf = GetAxisSecLogSectionIdBuf(axisSecId); + chLogSectionSum = GetAxisSecLogSectionSum(axisSecId); + + if (NULL != pLogSectionIdBuf) + { + for (ii = 0U; ii < chLogSectionSum; ii++) + { + /*߼ηΡ*/ + chRetVal = JumpLogicSecPortectUseCheck(pLogSectionIdBuf[ii]); + if (CI_SUCCESS != chRetVal) + { + break; + } + } + } + return chRetVal; +} + +/* +* ߼ηáü +* ˵const UINT16 axisSecId ID +* ֵ CI_ERROR +* CI_SUCCESS +* add by mpt 20260331 +*/ +UINT8 JumpLogicSecPortectUseCheck(const UINT16 wLgcId) +{ + /* ֲʼ */ + UINT8 chRetVal = CI_ERROR; + UINT8 ii = 0U; + UINT16 chDevId = 0U; + UINT8 chCheckSum = 0U; + LogsecSwitchStruct* pstLogicSecSwitchBuf = NULL; + UINT16 phyId = 0U; + UINT8 phyUseState = 0U; + UINT8 cSwitchUsingState = 0U; + + chCheckSum = GetLgcRelateProSwSum(wLgcId);/*ȡָID߼ιĿ*/ + pstLogicSecSwitchBuf = GetLgcRelateProSwStru(wLgcId); + if ((NULL != pstLogicSecSwitchBuf) + && (LOGSEC_RELATE_PRO_SW_SUM_MAX > chCheckSum)) + { + chRetVal = CI_SUCCESS; + /*߼ι*/ + for (ii = 0U; ii < chCheckSum; ii++) + { + + chDevId = pstLogicSecSwitchBuf[ii].SwitchId; + cSwitchUsingState = GetSwitchUsingState(chDevId); + phyId = GetSwitchPhySectionId(chDevId); + phyUseState = GetPhySecUseState(phyId); + if((PHYSICAL_SECTION_USING_NO != phyUseState)||(SWITCH_USING_NO !=cSwitchUsingState)) + {/**/ + chRetVal = CI_ERROR; + break; + } + else + { + /*޴*/ + } + } + } + else + { + chRetVal = CI_ERROR; + } + + return chRetVal; +} + +/* +* ڵü +* ˵const UINT16 axisSecId ID +* ֵ CI_ERROR +* CI_SUCCESS +* add by mpt 20260331 +*/ +UINT8 JumpPhySectionSwitchUseCheck(const UINT16 axisSecId) +{ + UINT8 retVal = CI_ERROR; + + UINT8 checkSum = GetAxisSwitchSum(axisSecId); + AxisSwitchStruct* dataIdBuf = GetAxisSwitchIdStru(axisSecId); + + /* ֲʼ */ + UINT8 i = 0u; /* ѭ */ + UINT16 SwitchId = 0u; + UINT8 cSwitchUsingState = 0U; + + + if (NULL == dataIdBuf) + { + /*޼*/ + retVal = CI_ERROR; + } + else + { + retVal = CI_SUCCESS; + /*ʼڵ*/ + for (i = 0u; i < checkSum; i++) + { + SwitchId = dataIdBuf[i].SwitchId; + cSwitchUsingState = GetSwitchUsingState(SwitchId); + if (SWITCH_USING_NO != cSwitchUsingState) + { + retVal = CI_ERROR; + break; + } + else + { + /*ѭ*/ + } + + } + } + + return retVal; +} + +/* +* Ծշ״̬ +* ˵const UINT16 axisSecId ID +* const UINT8 state ״̬ +* ֵ void +* add by mpt 20260331 +*/ +void SetJumpPhySectionPortectSecUse(const UINT16 axisSecId,const UINT8 state) +{ + UINT16* pLogSectionIdBuf = NULL; + UINT8 chLogSectionSum = 0U; + UINT8 ii = 0U; + UINT8 chRetVal = CI_ERROR; + + pLogSectionIdBuf = GetAxisSecLogSectionIdBuf(axisSecId); + chLogSectionSum = GetAxisSecLogSectionSum(axisSecId); + + if (NULL != pLogSectionIdBuf) + { + for (ii = 0U; ii < chLogSectionSum; ii++) + { + /*߼η*/ + SetJumpLogicSecPortectUse(pLogSectionIdBuf[ii], state); + } + } +} + +/* +* ߼εķ +* ˵const UINT16 axisSecId ID +* const UINT8 state ״̬ +* ֵ void +* add by mpt 20260331 +*/ +void SetJumpLogicSecPortectUse(const UINT16 wLgcId,const UINT8 state) +{ + /* ֲʼ */ + UINT8 chRetVal = CI_ERROR; + UINT8 ii = 0U; + UINT16 chDevId = 0U; + UINT8 chCheckSum = 0U; + LogsecSwitchStruct* pstLogicSecSwitchBuf = NULL; + UINT16 phyId = 0U; + UINT8 phyUseState = 0U; + + chCheckSum = GetLgcRelateProSwSum(wLgcId);/*ȡָID߼ιĿ*/ + pstLogicSecSwitchBuf = GetLgcRelateProSwStru(wLgcId); + if ((NULL != pstLogicSecSwitchBuf) + && (LOGSEC_RELATE_PRO_SW_SUM_MAX > chCheckSum)) + { + chRetVal = CI_SUCCESS; + /*߼ι*/ + for (ii = 0U; ii < chCheckSum; ii++) + { + chDevId = pstLogicSecSwitchBuf[ii].SwitchId; + phyId = GetSwitchPhySectionId(chDevId); + /**/ + SetPhySecUseState(phyId, state, 0U); + } + } + else + { + chRetVal = CI_ERROR; + } +} +/* +* η״̬ +* ˵ UINT16 const axisSecId, α +* UINT16 *pDevId, 豸Idأ +* UINT8 *pDevState, 豸״̬أ +* ֵ CI_ERROR +* CI_SUCCESS +* Add by mpt 20260331 +*/ +UINT8 AxisSecProtSwitchFLockCheck(UINT16 const axisSecId, UINT16* pDevId, UINT8* pDevState) +{ + /* · */ + UINT8 checkSum =0u; + AxisSwitchStruct* dataIdBuf = NULL; + + /* ֲʼ */ + UINT16 i = 0u; /* ѭ */ + UINT16 devId = 0u; + UINT8 devState = 0u; + UINT8 reVal = CI_ERROR; + + + checkSum = GetAxisSecRelateProSwSum(axisSecId); + dataIdBuf = GetAxisSecRelateProSwStru(axisSecId); + /* ״̬ */ + if (NULL == dataIdBuf) + { + /*޼*/ + reVal = CI_ERROR; + } + else + { + reVal = CI_SUCCESS; + /*ʼ*/ + for (i = 0u; i < checkSum; i++) + { + devId = dataIdBuf[i].SwitchId; + devState = GetSwitchFLockState(devId); + if (SWITCH_LOCK_FENGSUO_NO == devState) + { + /* ͨ*/ + + } + else + { + /*״̬һ·ع״̬*/ + *pDevId = devId; + *pDevState = devState; + reVal = CI_ERROR; + break; + } + } + } + + /*ȫͨ*/ + return reVal; +} + +/* +* üι״̬ +* ˵ const UINT16 axisSecId, ID +* const UINT8 lockCommand, ״̬ +* ֵ void +* add by mpt 20260331 +*/ +void SetAxisRelProSwitchLockSta(const UINT16 axisSecId, const UINT8 lockCommand) +{ + UINT8 ii = 0u; /**/ + UINT8 retVal = CI_ERROR; /*ֵ*/ + UINT16 protectSwitchId = 0u; /*ID*/ + UINT8 cSwitchCurPos = 0U; /*ǰλ*/ + UINT8 cFuncRet = CI_ERROR; + + UINT8 checkSum = 0u; + AxisSwitchStruct* dataIdBuf = NULL; + + + checkSum = GetAxisSecRelateProSwSum(axisSecId); + dataIdBuf = GetAxisSecRelateProSwStru(axisSecId); + + if (NULL == dataIdBuf) + { + retVal = CI_ERROR; + } + else + { + retVal = CI_SUCCESS; + } + + if (CI_SUCCESS == retVal) + { + if ((SWITCH_LOCK_PROTECT_SET != lockCommand) && (SWITCH_LOCK_PROTECT_CANCEL != lockCommand)) + { + retVal = CI_ERROR; + } + else + { + } + } + + if (CI_SUCCESS == retVal) + { + for (ii = 0u; ii < checkSum; ii++) + { + protectSwitchId = dataIdBuf[ii].SwitchId; + cSwitchCurPos = GetSwitchCurPosition(protectSwitchId); + 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); /*õ״̬*/ + + } + else + { + /*ڷλûڷ÷*/ + } + } + } + else + { + retVal = CI_ERROR; + } +} + +/* +* ιռ +* ˵ UINT16 const routeId, κ +* UINT16 *pDevId, 豸Idأ +* UINT8 *pDevState, 豸״̬أ +* ֵ CI_ERROR +* CI_SUCCESS +* add mpt 20260331 +*/ +UINT8 AxisRelatedProSwitchLockCheck(UINT16 const axisSecId, UINT16* pDevId, UINT8* pDevState) +{ + + /* ֲʼ */ + UINT16 i = 0u; /* ѭ */ + UINT16 devId = 0u; + UINT8 devState = 0u; + UINT8 reVal = CI_ERROR; + UINT8 checkSum = 0u; + AxisSwitchStruct* dataIdBuf = NULL; + + + checkSum = GetAxisSecRelateProSwSum(axisSecId); + dataIdBuf = GetAxisSecRelateProSwStru(axisSecId); + + if (NULL == dataIdBuf) + { + reVal = CI_ERROR; + } + else + { + reVal = CI_SUCCESS; + } + + if (CI_SUCCESS == reVal) + { + /*ʼ*/ + for (i = 0u; i < checkSum; i++) + { + devId = dataIdBuf[i].SwitchId; + devState = GetSwitchLockStatus(devId); + if ((SWITCH_LOCK_STATUS_PROTECT == devState) || (SWITCH_LOCK_STATUS_DAP == devState)) + { + /*ѡա򡾵ҷա*/ + } + else + { + /*δաδҷա*/ + *pDevId = devId; + *pDevState = SWITCH_LOCK_STATUS_PROTECT_NO; + reVal = CI_ERROR; + break; + } + } + } + /*ȫͨ*/ + 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; +} + +/* +* ߼ι״̬ +* ˵ const UINT16 axisSecId, ID +* const UINT8 lockCommand, ״̬ +* ֵ void +* add by mpt 20260331 +*/ +void SetLogSecRelProSwitchLockSta(const UINT16 wLgcId, const UINT8 lockCommand) +{ + UINT8 ii = 0u; /**/ + UINT8 retVal = CI_ERROR; /*ֵ*/ + UINT16 protectSwitchId = 0u; /*ID*/ + UINT8 cSwitchCurPos = 0U; /*ǰλ*/ + UINT8 cFuncRet = CI_ERROR; + + UINT8 checkSum = 0u; + LogsecSwitchStruct* dataIdBuf = NULL; + UINT16* pLgcSecRltvAxleSecIdBuf = NULL; + + + checkSum = GetLgcRelateProSwSum(wLgcId);/*ȡָID߼ιĿ*/ + dataIdBuf = GetLgcRelateProSwStru(wLgcId); + pLgcSecRltvAxleSecIdBuf = GetLgcSecRltvAxleSecIdBuf(wLgcId); + + + if ((NULL == dataIdBuf)||(NULL == pLgcSecRltvAxleSecIdBuf)) + { + retVal = CI_ERROR; + } + else + { + retVal = CI_SUCCESS; + } + + if (CI_SUCCESS == retVal) + { + if ((SWITCH_LOCK_PROTECT_SET != lockCommand) && (SWITCH_LOCK_PROTECT_CANCEL != lockCommand)) + { + retVal = CI_ERROR; + } + else + { + } + } + + if (CI_SUCCESS == retVal) + { + for (ii = 0u; ii < checkSum; ii++) + { + protectSwitchId = dataIdBuf[ii].SwitchId; + cSwitchCurPos = GetSwitchCurPosition(protectSwitchId); + cFuncRet = checkSwtLastValDrvPosStayorNot(protectSwitchId, dataIdBuf[ii].SwitchPosition); + if ((SWITCH_LOCK_PROTECT_CANCEL == lockCommand) + || ((cSwitchCurPos == dataIdBuf[ii].SwitchPosition) && (CI_SUCCESS == cFuncRet))) + { + + SetSwitchLockStatus(SWITCH_PLOCKTYPE_AXISSEC, pLgcSecRltvAxleSecIdBuf[0], protectSwitchId, lockCommand); /*õ״̬*/ + + } + else + { + /*ڷλûڷ÷*/ + } + } + } + else + { + retVal = CI_ERROR; + } +} \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicCheck.h b/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicCheck.h index 00248c7..49f4527 100644 --- a/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicCheck.h +++ b/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicCheck.h @@ -2919,7 +2919,128 @@ UINT8 AutoReturnRouteCouplinkCheck(const UINT16 wAutoRouteId, const UINT8 chFunc * by lyj 20250929 */ UINT8 AllAutoReturnRCouplinkCheck(const UINT16 wAutoRouteId, const UINT8 chFunctionId); - - +/* +* áηáڵü顢ڷ +* ˵const UINT16 axisSecId ID +* ֵ CI_ERROR +* CI_SUCCESS +* add by mpt 20260331 +*/ +UINT8 JumpPhySectionUseCheck(const UINT16 axisSecId); +/* +* ηΡü +* ˵const UINT16 axisSecId ID +* ֵ CI_ERROR +* CI_SUCCESS +* add by mpt 20260331 +*/ +UINT8 JumpPhySectionPortectUseCheck(const UINT16 axisSecId); +/* +* ߼ηáü +* ˵const UINT16 axisSecId ID +* ֵ CI_ERROR +* CI_SUCCESS +* add by mpt 20260331 +*/ +UINT8 JumpLogicSecPortectUseCheck(const UINT16 wLgcId); +/* +* ڵü +* ˵const UINT16 axisSecId ID +* ֵ CI_ERROR +* CI_SUCCESS +* add by mpt 20260331 +*/ +UINT8 JumpPhySectionSwitchUseCheck(const UINT16 axisSecId); +/* +* Ծշ״̬ +* ˵const UINT16 axisSecId ID +* const UINT8 state ״̬ +* ֵ void +* add by mpt 20260331 +*/ +void SetJumpPhySectionPortectSecUse(const UINT16 axisSecId, const UINT8 state); +/* +* ߼εķ +* ˵const UINT16 axisSecId ID +* const UINT8 state ״̬ +* ֵ void +* add by mpt 20260331 +*/ +void SetJumpLogicSecPortectUse(const UINT16 wLgcId, const UINT8 state); +/* +* ԾǷзʱ +* ˵ const UINT16 routeId, ·ID +* ֵ UINT8 + CI_SUCCESS:η޵ʱ + CI_ERROR:ηʱ +add by mpt 20260331 +*/ +UINT8 ChekJumpLockProtectSwitDrivOvtmStat(const UINT16 axisSecId); +/* +* ε״̬ +* ˵ UINT16 const axisSecId, α +* UINT16 *pDevId, 豸Idأ +* UINT8 *pDevState, 豸״̬أ +* ֵ CI_ERROR +* CI_SUCCESS +* Add by mpt 20260331 +*/ +UINT8 AxisSecProtSwitchFLockCheck(UINT16 const axisSecId, UINT16* pDevId, UINT8* pDevState); +/* +* εķλúͶЧԼ +* ˵ UINT16 const axisSecId, α +* UINT16 *pDevId, 豸Idأ +* UINT8 *pDevState, 豸״̬أ +* ֵ CI_ERROR +* CI_SUCCESS +* add by mpt 20260331 +*/ +UINT8 AxisSecPorteSwitchPosMoveCheck(UINT16 const axisSecId, UINT16* pDevId, UINT8* pDevState, UINT8 funcId, UINT8 sendLevel); +/* +* зλȷ +* ˵ UINT16 const axisSecId, α +* UINT16 *pDevId, 豸Idأ +* UINT8 *pDevState, 豸״̬أ +* ֵ CI_ERROR +* CI_SUCCESS +* add mpt 20260331 +*/ +UINT8 AxisSecAllProtSwitchPosCheck(UINT16 const axisSecId, UINT16* pDevId, UINT8* pDevState); +/* +* üι״̬ +* ˵ const UINT16 axisSecId, ID +* const UINT8 lockCommand, ״̬ +* ֵ void +* add by mpt 20260331 +*/ +void SetAxisRelProSwitchLockSta(const UINT16 axisSecId, const UINT8 lockCommand); +/* +* ιռ +* ˵ UINT16 const routeId, κ +* UINT16 *pDevId, 豸Idأ +* UINT8 *pDevState, 豸״̬أ +* ֵ CI_ERROR +* CI_SUCCESS +* add mpt 20260331 +*/ +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); #endif diff --git a/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicProcess.c b/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicProcess.c index 2a146ab..8ce766f 100644 --- a/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicProcess.c +++ b/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicProcess.c @@ -9604,11 +9604,13 @@ UINT8 OpenBlocRouteSectionCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel) UINT8 chDsnFuncSwitch = 0U; /* ֱռùܿ */ UINT8 chXianSuFuncSwitch = 0U; /*ģʽźſǷʱٿ*/ UINT8 cCrossState = 0U; /*źŻѹ״̬*/ + UINT8 chRouteBelongVirCiId = 0U; chDsnFuncSwitch = GetCiFunctionSwitchConfig(FUNC_TOA_SWITCH); chXianSuFuncSwitch = GetCiFunctionSwitchConfig(FUNC_XIANSU_SWITCH); - ciType = GetCiType(LocalCiId); + chRouteBelongVirCiId = GetRouteBelongVirCiId(routeId); + ciType = GetLocalVirCiType(chRouteBelongVirCiId); /* ߼ */ /* ·δ */ @@ -9635,6 +9637,8 @@ UINT8 OpenBlocRouteSectionCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel) devState = 0u; startSignalId = GetRouteStartSignalId(routeId);/*ȡ·ʼźŻID*/ checkResult = RouteAllSecOccuClearCheck(routeId,&devId, &cPhySecCurMergeState); + + routeState = GetRouteState(routeId); if ((CI_TYPE_CLD == ciType) && ((ROUTE_STATE_YUXIAN_OPEN == routeState) ||(ROUTE_STATE_NEAR_OPEN == routeState))) {/*ν·ԤȿŻӽ*/ @@ -9873,8 +9877,6 @@ UINT8 CLDKeepOpenSecCheck(UINT16 routeId, UINT8 functionId, UINT8 sendLevel) { /*·ΣUTռãźűʧ*/ /*·ΣCTҵһ߼κⷽһһ߼CTռãźűֳɹʧ*/ - hasUtFlag = 0u; - hasCtFlag = 0u; for (ii = 0u; ii < routePhyNum; ii++) { phyId = pRoutePhySecData[ii].PhysicalSectionId; @@ -9916,7 +9918,7 @@ UINT8 CLDKeepOpenSecCheck(UINT16 routeId, UINT8 functionId, UINT8 sendLevel) chFunRet = GetRouteInOutFstLgcTrainInfo(routeId, &chReadyEnterRouteTrainSum, wszReadyEtRouteTrainId); if (CI_SUCCESS == chFunRet) { - chTrainEnterState = dsuTrainMinHeadCrossSignal(wszReadyEtRouteTrainId[0], routeId); + chTrainEnterState = dsuTrainMinHeadCrossSignal(wszReadyEtRouteTrainId[0], routeId, CI_ERROR); if (TRAIN_ENTER_ROUTE_FULL == chTrainEnterState) { /*гȫʻ·ص by cgh 20231128*/ @@ -10038,6 +10040,7 @@ UINT8 OpenCbtcRouteSectionCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel) UINT16 startSignalId = 0u; UINT8 signalCrossState = 0u; UINT8 chRouteCouplinkFlag = 0U; + UINT8 chRouteBelongVirCiId = 0U; /* ߼ */ /* ·δ */ @@ -10060,7 +10063,8 @@ UINT8 OpenCbtcRouteSectionCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel) /*CBTC·ڷһ߼飬ν·ڷο*/ if (CI_SUCCESS == reResult) { - cLocalCiType = GetLocalCiType(); + chRouteBelongVirCiId = GetRouteBelongVirCiId(routeId); + cLocalCiType = GetLocalVirCiType(chRouteBelongVirCiId); if (CI_TYPE_CLD != cLocalCiType) { /*dzΣCBTC߼*/ @@ -10138,6 +10142,8 @@ UINT8 OpenCbtcRouteSectionCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel) } else { + devId = GetRouteInFirstLogSecId(routeId); + devState = GetLogSecCurOccupyState(devId); reResult = CheckEngineerVehicleNear(routeId);/*Ƿǹ̳ӽĿѹ*/ if (CI_SUCCESS == reResult) { @@ -10384,6 +10390,7 @@ UINT8 KeepCbtcRouteSectionCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel) UINT8 outPhySecState = 0U; UINT8 cLocalCiType = 0U; /**/ UINT8 chRouteCouplinkFlag = 0U; + UINT8 chRouteBelongVirCiId = 0U; /* ߼ */ /* ·δ */ @@ -10406,7 +10413,8 @@ UINT8 KeepCbtcRouteSectionCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel) /*CBTC·ڷһ߼*/ if(CI_SUCCESS == reResult) { - cLocalCiType = GetLocalCiType(); + chRouteBelongVirCiId = GetRouteBelongVirCiId(routeId); + cLocalCiType = GetLocalVirCiType(chRouteBelongVirCiId); if (CI_TYPE_CLD != cLocalCiType) { /*dzΣCBTC߼*/ @@ -10443,7 +10451,12 @@ UINT8 KeepCbtcRouteSectionCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel) if (ROUTE_COUPLINK_FLAG_YES == chRouteCouplinkFlag) { reResult = KeepCouplinkRouteSecOccCheck(routeId,&devId,&devState); - if (CI_ERROR == reResult) + if (CI_SUCCESS == reResult) + { + /* ͨ */ + reResult = CI_SUCCESS; + } + else { /* ¼ */ SetErrorData(functionId, CI_DEVICE_TYPE_PHYSEC, devId, SECTION_OCCUPY_YES, devState, sendLevel); @@ -10492,6 +10505,8 @@ UINT8 KeepCbtcRouteSectionCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel) } else { + devId = GetRouteInFirstLogSecId(routeId); + devState = GetLogSecCurOccupyState(devId); reResult = CheckEngineerVehicleNear(routeId);/*Ƿǹ̳ӽĿѹԼгʵѹ*/ if (CI_SUCCESS == reResult) { @@ -11577,6 +11592,7 @@ void RouteLgcSecResReleaseProcess(const UINT16 wRouteId) wUnlockLgcSecId = routeLogIdBuf[ii]; wBelongRouteId = GetLogSecLockBelongRoute(wUnlockLgcSecId); wLgcBufIndex = GetlogSectionBufIndex(wUnlockLgcSecId); + chLgcResTrainSum = GetLogSecTrainInfoSum(wUnlockLgcSecId); chLogSecLogLockState = GetLogSecLogLockState(wUnlockLgcSecId); @@ -11594,7 +11610,6 @@ void RouteLgcSecResReleaseProcess(const UINT16 wRouteId) /*·ڱ·߼ѽ*/ if (wBelongRouteId == wRouteId) { - chLgcResTrainSum = GetLogSecTrainInfoSum(wUnlockLgcSecId); if (LOGIC_SECTION_RES_SUM_MAX > chLgcResTrainSum) { ; /*ִ*/ diff --git a/TSCP/src/APP/ciapp/LogicProcess/TradInterlockLogicProcess.c b/TSCP/src/APP/ciapp/LogicProcess/TradInterlockLogicProcess.c index 51796e2..ef08102 100644 --- a/TSCP/src/APP/ciapp/LogicProcess/TradInterlockLogicProcess.c +++ b/TSCP/src/APP/ciapp/LogicProcess/TradInterlockLogicProcess.c @@ -1598,12 +1598,14 @@ UINT8 SetNonRouteP(UINT8 nonRouteId) reResult = NonRouteRelProSwiPosMovValCheck(nonRouteId,functionId,sendLevel); } +#if 0 + /*޸ȱYF0083-2105---LYJ--20260128*/ if (CI_SUCCESS == reResult) {/**/ reResult = NonRouteIntruSecVainCheck(nonRouteId,functionId,sendLevel); } - +#endif return reResult; } @@ -1721,14 +1723,6 @@ UINT8 LockNonRouteP(UINT8 nonRouteId) reResult = NonRouteRelProSwiPosMovValCheck(nonRouteId,functionId,sendLevel); } - - if (CI_SUCCESS == reResult) - {/**/ - reResult = NonRouteIntruSecVainCheck(nonRouteId,functionId,sendLevel); - } - - - return reResult; } diff --git a/TSCP/src/APP/ciapp/Mask/MaskDefine.h b/TSCP/src/APP/ciapp/Mask/MaskDefine.h index 0506a00..b90bef2 100644 --- a/TSCP/src/APP/ciapp/Mask/MaskDefine.h +++ b/TSCP/src/APP/ciapp/Mask/MaskDefine.h @@ -118,6 +118,8 @@ #define MASK_TYPE_PHYSECTION_HEAD_XTD ((UINT8)0x31) /*з״̬λ*/ #define MASK_TYPE_PHYSECTION_HEAD_STD ((UINT8)0x32) /*з״̬λ*/ #define MASK_TYPE_LIECHE_STOPSTATE ((UINT8)0x3a) /*гͣϢ״̬λ*/ +#define MASK_TYPE_PHYSECTION_INTRUSION ((UINT8)0x5a) /*״̬λ(CI->ZC)*/ +#define MASK_TYPE_PHYSECTION_ATS_FLOCK ((UINT8)0x5b) /*ATS״̬λ(CI->ZC)*/ #define MASK_TYPE_PHYSEC_CENTERDETAIN_UP ((UINT8)0x3d) /*CI-ATSп۳״̬״̬λ (28.0.0.14ʹ)*/ #define MASK_TYPE_PHYSEC_CENTERDETAIN_DOWN ((UINT8)0x3e) /*CI-ATSп۳״̬״̬λ (28.0.0.14ʹ)*/ #define MASK_TYPE_PHYSEC_STATIONDETAIN_UP ((UINT8)0x3f) /*CI-ATSվп۳״̬״̬λ (28.0.0.14ʹ)*/ @@ -139,9 +141,10 @@ #define MASK_TYPE_DOWNWARD_DIRECTION ((UINT8)0x94) /*߼λ*/ #define MASK_TYPE_LOGICSECTION_PROTECTLOCK ((UINT8)0x99) /*߼ηλ*/ #define MASK_TYPE_LOGICSECTION_JUMPLOCK ((UINT8)0x9A) /*߼Ծλ*/ -#define MASK_TYPE_LOGICSECTION_ARB ((UINT8)0x9B) /*߼ARB״̬λ*/ +#define MASK_TYPE_LOGSEC_CBTC_ARB ((UINT8)0x9B) /*߼CBTC_ARB״̬λ*/ #define MASK_TYPE_LOGICSECTION_SPKS_FLOCK ((UINT8)0x9C) /*߼SPKS״̬λ*/ #define MASK_TYPE_LOGICSECTION_EMERG_XIANSU ((UINT8)0x9D) /*߼νʱλ*/ +#define MASK_TYPE_LOGSEC_PB_TACS_ARB ((UINT8)0xB3) /*߼PB_TACS_ARB״̬λ*/ /*λ*/ @@ -204,7 +207,7 @@ #define MASK_TYPE_PSD_PDB_FLASH_STATE ((UINT8)0xA0) /*ȷPDBťָʾ״̬λ*/ #define MASK_TYPE_PSD_VIDEO_QK_LU ((UINT8)0xA1) /*ͰťƵͱʾƣ)״̬λ*/ #define MASK_TYPE_PSD_VIDEO_QK_HONG ((UINT8)0xA2) /*ͰťƵͱʾƣ)״̬λ*/ -#define MASK_TYPE_PSD_EXCEPT_OPEN ((UINT8)0xA5) /*վ̨ȫ쳣λ*/ +#define MASK_TYPE_PSD_EXCEPT ((UINT8)0xA5) /*վ̨ȫ쳣λ CI-ATSCI-ZC*/ #define MASK_TYPE_PSD_JXTCPANGLU_FAULT ((UINT8)0xAA) /*϶̽·ťλ*/ #define MASK_TYPE_PSD_IBP_STATE ((UINT8)0xAD) /*IBP̰ť״̬λ*/ #define MASK_TYPE_PSD_IBP_FAULT ((UINT8)0xAE) /*IBP̰ťλ*/ diff --git a/TSCP/src/APP/ciapp/NonRoute/NonRouteConfigDataManage.c b/TSCP/src/APP/ciapp/NonRoute/NonRouteConfigDataManage.c index bfa3736..d9856f1 100644 --- a/TSCP/src/APP/ciapp/NonRoute/NonRouteConfigDataManage.c +++ b/TSCP/src/APP/ciapp/NonRoute/NonRouteConfigDataManage.c @@ -365,6 +365,24 @@ UINT16 GetSCXColAgreeTryRelayIdById(UINT8 nonRouteId) return collAgreeTryTrainRelayId; } +/* +* ȡԳ߲ɼĹԳָʾ̵ID +* ˵ UINT8 nonRouteId ǽ·id +* ֵ Գ߲ɼĹԳָʾ̵ID +*/ +UINT16 GetWaysideTryTrainIndRelayId(UINT8 nonRouteId) +{ + UINT16 collAgreeTryTrainRelayId = 0u; + + NonRouteConfigDataStruct* pNonRouteConfig = GetNonRouteConfigDataPtrById(nonRouteId); + if (pNonRouteConfig != NULL) + { + collAgreeTryTrainRelayId = pNonRouteConfig->ColWaysideTryTrainIndRelayId; /* Գ߲ɼĹԳָʾ̵ID */ + } + + return collAgreeTryTrainRelayId; +} + /* * ݵidҶӦķǽ· * ˵swId-id diff --git a/TSCP/src/APP/ciapp/NonRoute/NonRouteConfigDataManage.h b/TSCP/src/APP/ciapp/NonRoute/NonRouteConfigDataManage.h index 5c784a3..3cbfbfe 100644 --- a/TSCP/src/APP/ciapp/NonRoute/NonRouteConfigDataManage.h +++ b/TSCP/src/APP/ciapp/NonRoute/NonRouteConfigDataManage.h @@ -82,6 +82,7 @@ typedef struct S_NonRouteConfigDataStruct UINT16 AgreeTryTrainRelayId; /*ͬԳ̵ID (ֶ)*/ UINT16 DrvApplyTryTrainRelayId; /* ԳԳ̵ID */ UINT16 ColAgreeTryTrainRelayId; /* Գ߲ɼͬԳ̵ID */ + UINT16 ColWaysideTryTrainIndRelayId; /* Գ߲ɼĹԳָʾ̵ID */ } NonRouteConfigDataStruct; /*******************************ȫֱ*******************************/ @@ -268,6 +269,14 @@ UINT8 GetnonRouteIdbelongVirCIid(UINT8 nonRouteId); */ UINT8 GetnonRouteIdbelongCIid(UINT8 nonRouteId); + +/* +* ȡԳ߲ɼĹԳָʾ̵ID +* ˵ UINT8 nonRouteId ǽ·id +* ֵ Գ߲ɼĹԳָʾ̵ID +*/ +UINT16 GetWaysideTryTrainIndRelayId(UINT8 nonRouteId); + #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/NonRoute/NonRouteDefine.h b/TSCP/src/APP/ciapp/NonRoute/NonRouteDefine.h index 3c8e623..6bf5f45 100644 --- a/TSCP/src/APP/ciapp/NonRoute/NonRouteDefine.h +++ b/TSCP/src/APP/ciapp/NonRoute/NonRouteDefine.h @@ -28,7 +28,7 @@ /*ǽ·״̬*/ -#define NONROUTE_STATE_INVALID ((UINT8)0x0) /*ǽ·״̬Ч*/ +#define NONROUTE_STATE_INVALID ((UINT8)0x0) /*ǽ·״̬Ч*/ #define NONROUTE_STATE_IDLE ((UINT8)0x01) /*ǽ·*/ #define NONROUTE_STATE_XUANPAI ((UINT8)0x02) /*ǽ·ѡ*/ #define NONROUTE_STATE_LOCK ((UINT8)0x04) /*ǽ·*/ diff --git a/TSCP/src/APP/ciapp/Overlap/OverlapDataManage.c b/TSCP/src/APP/ciapp/Overlap/OverlapDataManage.c index 4f0b94d..656ff30 100644 --- a/TSCP/src/APP/ciapp/Overlap/OverlapDataManage.c +++ b/TSCP/src/APP/ciapp/Overlap/OverlapDataManage.c @@ -97,7 +97,7 @@ void SetOverlapRelateProtSwLockSta(const UINT16 overlapId, const UINT8 lockComma overlapProtectSwitchSum = GetOverlapRelatedProtSwitSum(overlapId); /*ȡĿ*/ overlapProtectSwitchStru = GetOverlapRelatedProtSwitStru(overlapId); /*ȡ*/ - if (0u == overlapProtectSwitchSum) + if ((0U == overlapProtectSwitchSum) || (NULL == overlapProtectSwitchStru)) { retVal = CI_ERROR; } diff --git a/TSCP/src/APP/ciapp/PSD/PSDDataManage.c b/TSCP/src/APP/ciapp/PSD/PSDDataManage.c index cc8ff8e..36eba83 100644 --- a/TSCP/src/APP/ciapp/PSD/PSDDataManage.c +++ b/TSCP/src/APP/ciapp/PSD/PSDDataManage.c @@ -1565,7 +1565,6 @@ UINT8 GetPsdPlFlag(const UINT16 doorId) void SetNearCiPscPlFlag(const UINT16 psdId,const UINT16 pscId,const UINT8 setFlag) { /*ʼ*/ - UINT8 i = 0u; UINT8 transmitState = 0u; UINT8 localCiId = 0u; UINT8 psdCiId = 0u; @@ -2575,21 +2574,21 @@ UINT16 GePsdVideoQkRelateVobcId(const UINT16 wPsdId) } /* -* ָID쳣״̬ +* ָID쳣״̬ * ˵const UINT16 wPsdId ID -* const UINT8 cExceptOpenState 쳣״̬ +* const UINT8 cExceptOpenState 쳣״̬ * ֵ * Created By LQ 2025.05.22 */ -void SetPsdExceptOpenState(const UINT16 wPsdId, const UINT8 cExceptOpenState) +void SetPsdExceptState(const UINT16 wPsdId, const UINT8 cExceptOpenState) { UINT16 bufIndex = 0U; - bufIndex = GetPsdConfigBufIndex(wPsdId); /*ȡ±*/ + bufIndex = GetPsdConfigBufIndex(wPsdId); /*ȡ±*/ - if ((PSD_SUM_MAX > bufIndex) && ((PSD_EXCEPT_OPEN_YES == cExceptOpenState) || (PSD_EXCEPT_OPEN_NO == cExceptOpenState))) + if ((PSD_SUM_MAX > bufIndex) && ((PSD_EXCEPT_YES == cExceptOpenState) || (PSD_EXCEPT_NO == cExceptOpenState))) { - PsdDataStru[bufIndex].cPsdExceptOpenState = cExceptOpenState; /*쳣״̬*/ + PsdDataStru[bufIndex].cPsdExceptOpenState = cExceptOpenState; /*쳣״̬*/ } else { @@ -2598,16 +2597,16 @@ void SetPsdExceptOpenState(const UINT16 wPsdId, const UINT8 cExceptOpenState) } /* -* ȡָID쳣״̬ +* ȡָID쳣״̬ * ˵const UINT16 wPsdId ID -* ֵ0x55 쳣 -* 0xAA δ쳣 +* ֵ0x55 쳣쳣δ +* 0xAA δ쳣 * Created By LQ 2025.05.22 */ -UINT8 GePsdExceptOpenState(const UINT16 wPsdId) +UINT8 GePsdExceptState(const UINT16 wPsdId) { UINT16 bufIndex = 0U; - UINT8 cRetVal = PSD_EXCEPT_OPEN_YES; + UINT8 cRetVal = PSD_EXCEPT_YES; bufIndex = GetPsdConfigBufIndex(wPsdId); /*ȡ±*/ @@ -3375,4 +3374,46 @@ UINT32 GetIBPPressCycNum(const UINT16 doorId) retVal = CI_ERROR; } return retVal; +} + +/* +* ȡָID״̬ VOBC +* ˵ const UINT16 doorIdID +* ֵ ״̬ +*/ +UINT8 GetPsdStateToVobc(const UINT16 doorId) +{ + UINT8 chPsdState = 0U; + UINT8 chPsdPlState = 0U; + UINT8 chExceptOpenState = 0U; + UINT8 chRet = 0U; + chPsdPlState = GetPsdMutualLockRemoveState(doorId); /*Ż*/ + if ((PSD_MUTUALLOCK_REMOVE_YES == chPsdPlState) || (PSD_ATS_MUTUALLOCK_REMOVE_YES == chPsdPlState) || (PSD_ATS_AND_JD_MUTUALLOCK_REMOVE_YES == chPsdPlState)) + { + /*Ż*/ + chRet = CI_IVOC_PSD_STATE_PANGLU; + } + else + { + chPsdState = GetPsdState(doorId); + if (PSD_STATE_CLOSE == chPsdState) + {/*Ź*/ + chRet = CI_IVOC_PSD_STATE_CLOSE; + } + else + { + /*ſ, жǷ쳣*/ + chExceptOpenState = GePsdExceptState(doorId); + if (PSD_EXCEPT_NO == chExceptOpenState) + { + chRet = CI_IVOC_PSD_STATE_OPEN; + } + else + { + /*쳣*/ + chRet = CI_IVOC_PSD_STATE_OPEN_EXCEPT; + } + } + } + return chRet; } \ 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 d53456c..40963f7 100644 --- a/TSCP/src/APP/ciapp/PSD/PSDDataManage.h +++ b/TSCP/src/APP/ciapp/PSD/PSDDataManage.h @@ -925,22 +925,22 @@ void SetPsdVideoQkRelateVobcId(const UINT16 wPsdId, const UINT16 wVobcId); UINT16 GePsdVideoQkRelateVobcId(const UINT16 wPsdId); /* -* ָID쳣״̬ +* ָID쳣״̬ * ˵const UINT16 wPsdId ID -* const UINT8 cExceptOpenState 쳣״̬ +* const UINT8 cExceptOpenState 쳣״̬ * ֵ * Created By LQ 2025.05.22 */ -void SetPsdExceptOpenState(const UINT16 wPsdId, const UINT8 cExceptOpenState); +void SetPsdExceptState(const UINT16 wPsdId, const UINT8 cExceptOpenState); /* -* ȡָID쳣״̬ +* ȡָID쳣״̬ * ˵const UINT16 wPsdId ID -* ֵ0x55 쳣 -* 0xAA δ쳣 +* ֵ0x55 쳣쳣δ +* 0xAA δ쳣 * Created By LQ 2025.05.22 */ -UINT8 GePsdExceptOpenState(const UINT16 wPsdId); +UINT8 GePsdExceptState(const UINT16 wPsdId); /* * ָIDŹϸϢ @@ -1179,6 +1179,12 @@ UINT8 GetPsdButtonIbpState(const UINT16 doorId); * >0: ݳɹ */ UINT8 SetIBPPressCycNum(const UINT16 doorId, const UINT32 startCycNum); +/* +* ȡָID״̬ VOBC +* ˵ const UINT16 doorIdID +* ֵ ״̬ +*/ +UINT8 GetPsdStateToVobc(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 0a4f69d..ebc91b0 100644 --- a/TSCP/src/APP/ciapp/PSD/PSDDefine.h +++ b/TSCP/src/APP/ciapp/PSD/PSDDefine.h @@ -198,9 +198,13 @@ #define VIDEO_QK_DRIVE_STATE_TESTING ((UINT8)0xccU) /*Ƶ״̬*/ #define VIDEO_QK_DRIVE_STATE_INVALID ((UINT8)0xffU) /*Ƶ״̬Ч*/ -/*쳣״̬*/ -#define PSD_EXCEPT_OPEN_NO ((UINT8)0xAAU) /*δ쳣*/ -#define PSD_EXCEPT_OPEN_YES ((UINT8)0x55U) /*쳣*/ +/*쳣״̬*/ +#define PSD_EXCEPT_NO ((UINT8)0xAAU) /*δ쳣*/ +#define PSD_EXCEPT_YES ((UINT8)0x55U) /*쳣(쳣δȡ)*/ + +/*쳣ȡʽ*/ +#define PSD_EXCEPT_CANCLE_ATS ((UINT8)0xAAU) /*ATSȡ*/ +#define PSD_EXCEPT_CANCLE_RCI ((UINT8)0x55U) /*δ쳣ʱԶȡ쳣*/ /*OC-P·״̬ȷ*/ #define OC_PSC_PL_CONFIRM_YES ((UINT8)0xaaU) /*OC-P·״̬ȷ*/ @@ -218,4 +222,10 @@ #define PSD_INCLUDE_ESB_NUM ((UINT8)10U) /*ESB*/ + +/*CI-VOBC״̬*/ +#define CI_IVOC_PSD_STATE_CLOSE ((UINT8)0xAAU) /*CIIVOCŹر*/ +#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쳣*/ #endif diff --git a/TSCP/src/APP/ciapp/ParsePack/CiInterfaceDefine.h b/TSCP/src/APP/ciapp/ParsePack/CiInterfaceDefine.h index d9ea0eb..96ca9c3 100644 --- a/TSCP/src/APP/ciapp/ParsePack/CiInterfaceDefine.h +++ b/TSCP/src/APP/ciapp/ParsePack/CiInterfaceDefine.h @@ -163,6 +163,7 @@ #define ATS_CMD_APPLY_XICHE ((UINT8)0xB1) /*ģʽϴ*/ #define ATS_CMD_APPLY_PASSXICHE ((UINT8)0xB2) /*ֵϴ-ģʽ*/ #define ATS_CMD_CANCEL_PASSXICHE ((UINT8)0xB3) /*ֵȡϴ-ģʽ*/ +#define ATS_CMD_CANCEL_PSD_EXCEPT ((UINT8)0xBA) /*ֵȡվ̨쳣״̬*/ /****궨****/ #define CI_CMD_PHYSEC_USING_APPLY ((UINT16)0x0001) /**/ diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackCiData.c b/TSCP/src/APP/ciapp/ParsePack/ParsePackCiData.c index 88d1bd3..0b2f1f5 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackCiData.c +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackCiData.c @@ -16,6 +16,7 @@ #include "../QueryFiles/dquCIInterFace.h" #include "../CutoffPoint/CutoffPointDataManage.h" #include "ELMDataPrepare.h" +#include "../ParsePack/ParsePackZcData.h" #define RCI_GENERAL_DEFAULT_DEV_SUM_LEN (UINT16)38U /*RC/CI䲻Ҫ豸״̬ʱֻʱӦ豸ռĻλҪд0ÿ豸2/1ֽڣͨ豸Ϣ֡18*2+2*1=38ֽ*/ #define RCI_PBTACS_DEFAULT_DEV_SUM_LEN (UINT16)8U /*RC䲻Ҫ豸״ֻ̬ɢ+ʱӦ豸ռĻλҪд0ÿ豸2/1ֽڣPBTACS豸Ϣ֡4*2=8ֽ*/ @@ -1952,7 +1953,7 @@ UINT8 ParseCiToCiDataFrame(UINT8* dataBuf, UINT16 dataLength,UINT16 wSourceDevId belongCiId = GetLogSecBelongCiId(deviceId); if (belongCiId == localCiId) { - ii += 3U; /*ڱ߼״̬Ϣ*/ + ii += CICI_ONE_LOGSEC_LEN -2U; /*ڱ߼״̬Ϣ*/ } else { @@ -2055,7 +2056,30 @@ UINT8 ParseCiToCiDataFrame(UINT8* dataBuf, UINT16 dataLength,UINT16 wSourceDevId SetLogEmergXianSuOtherCi(deviceId, chTempState); /*ʱٶֵ*/ - SetLogSecXiansuSpeed(deviceId, dataBuf[ii++]); + SetLogSecXiansuSpeed(deviceId, dataBuf[ii++]); + + chMergeBit = dataBuf[ii++]; + /* ߼CBTC_ARB״̬ */ + if (((chMergeBit & BIT_PALCE00001100) >> 2U) == BIT_VAL_00000001B) + { + chTempState = LGC_SECTION_ARB_YES; + } + else + { + chTempState = LGC_SECTION_ARB_NO; + } + SetLogSecCbtcArbState(deviceId, chTempState); + + /* ߼PB_TACS_ARB״̬ */ + if ((chMergeBit & BIT_PALCE00000011) == BIT_VAL_00000001B) + { + chTempState = LGC_SECTION_ARB_YES; + } + else + { + chTempState = LGC_SECTION_ARB_NO; + } + SetLogSecPbTacsArbState(deviceId, chTempState); } } @@ -2125,9 +2149,9 @@ UINT8 ParseCiToCiDataFrame(UINT8* dataBuf, UINT16 dataLength,UINT16 wSourceDevId (void)SetPsdState(deviceId, dataBuf[ii++]); /*ſ״̬״̬*/ (void)SetPsdMutualLockRemoveState(deviceId, dataBuf[ii++]); /*Ż״̬״̬*/ - deviceInfo = dataBuf[ii]; /*PSD쳣״̬*/ + deviceInfo = dataBuf[ii]; /*PSD쳣״̬*/ ii++; - SetPsdExceptOpenState(deviceId, deviceInfo); + SetPsdExceptState(deviceId, deviceInfo); } } } @@ -4812,6 +4836,41 @@ UINT8 PackNearRciLogSecStateData(UINT8 dstCiId, UINT8* dataFrame, UINT16* dataLe dataFrame[ii] = GetLogSecXiansuSpeed(deviceId); /*߼ʱȡֵ*/ ii++; + + cCurPackDevState = 0U; /*豸״̬Ϊ0*/ + + cDevState = GetLogSecCbtcArbState(deviceId); /*߼CBTC_ARB״̬*/ + switch (cDevState) + { + case LGC_SECTION_ARB_YES: + cCurPackDevState |= (BIT_VAL_00000001B << 2U); + break; + case LGC_SECTION_ARB_NO: + cCurPackDevState |= (BIT_VAL_00000010B << 2U); + break; + default: + debug_infor_printf((const)"\nPackNearRciLogSecStateData Error: LogSec[%d] CBTC_ARB[%d] Error.\n", deviceId, cDevState); + cRetVal = CI_ERROR; + break; + } + + cDevState = GetLogSecPbTacsArbState(deviceId); /*߼PB_TACS_ARB״̬*/ + switch (cDevState) + { + case LGC_SECTION_ARB_YES: + cCurPackDevState |= BIT_VAL_00000001B; + break; + case LGC_SECTION_ARB_NO: + cCurPackDevState |= BIT_VAL_00000010B; + break; + default: + debug_infor_printf((const)"\nPackNearRciLogSecStateData Error: LogSec[%d] PB_TACS_ARB[%d] Error.\n", deviceId, cDevState); + cRetVal = CI_ERROR; + break; + } + + dataFrame[ii] = cCurPackDevState; /*߼CBTC_ARB+PB_TACS_ARB״̬*/ + ii++; deviceSum++; } @@ -4958,7 +5017,7 @@ UINT8 PackNearRciPsdData(UINT8 dstCiId, UINT8* dataFrame, UINT16* dataLength) dataFrame[ii++] = GetPsdState(deviceId); /*״̬*/ dataFrame[ii++] = GetPsdMutualLockRemoveState(deviceId); /*Ż״̬*/ - deviceState = GePsdExceptOpenState(deviceId); /*PSD쳣״̬*/ + deviceState = GePsdExceptState(deviceId); /*PSD쳣״̬*/ dataFrame[ii] = deviceState; ii++; deviceSum++; @@ -6562,13 +6621,11 @@ UINT8 PackNearRciLogSecResLockData(UINT8 dstCiId, UINT8* dataFrame, UINT16* data UINT8 routeBelongCi = 0U; UINT8 chLogSecTrainInfoSum = 0U; UINT16 wTrainId = 0U; - UINT8 chTrainIndex = 0U; UINT8 cLogSecLogicLockState = LOG_SECTION_LOCK_NO; /*߼߼״̬*/ UINT8 cLogSecLogicLockDir = CI_SYSTEM_DIRECTION_NONE; /*߼߼շ*/ UINT8 cLogLockBelLogRouteSum = 0U; UINT8 chLgcResShrFlag = 0U; UINT8 chLogSecIndex = 0U; - UINT8 chLogicTrainSum = 0U; /*߼εг*/ UINT8 cCurPackDevState = 0U; localCi = GetSystemParaLocalCiId(); @@ -7178,7 +7235,7 @@ UINT8 InitPhySecIdBufOfOtherCiByConf(void) UINT8 chRouteProSwitchSum = 0U; /*Ŀ*/ RouteProtectSwitchStruct* pRouteProtectSwitchStru = NULL; /**/ UINT16 wProSwRelPhySecId = 0U;/*ID*/ - UINT16 wPhySecIdCheck = 0U;/*ID*/ + UINT8 wPhySecIdCheck = 0U;/*ID*/ belongCiId = GetSystemParaLocalCiId(); @@ -8665,11 +8722,11 @@ static UINT8 ParseLogSecPacket(const UINT8 *pInputData, UINT16 *pItemLen,const U if ((LOG_SECTION_LOCK_NORMAL == sectionRouteLockState)) { SetLogSecLockStateHlht(logSecId, LOG_SECTION_LOCK_NORMAL); - SetLogSecRLockRouteIdHlht(logSecId, UINT16_MAX); + SetLogSecRLockRouteIdHlht(logSecId); } else { - SetLogSecRLockRouteIdHlht(logSecId, 0u); + SetLogSecRLockRouteIdHlht(logSecId); } /*쳣յȼ*/ @@ -10270,7 +10327,7 @@ static UINT8 ParseStartLockPacket(const UINT8* pInputData, UINT16* pItemLen, con SetLogSecStartLockStateHlht(wLogSecId, LOG_SECTION_LOCK_START); SetLogSecLockDirHlht(wLogSecId, CI_SYSTEM_DIRECTION_NONE); SetLogSecPLockRouteIdHlht(wLogSecId, 0U); - SetLogSecRLockRouteIdHlht(wLogSecId, 0U); + SetLogSecRLockRouteIdHlht(wLogSecId); break; default: /*ɴ֧*/ @@ -11845,7 +11902,7 @@ void ClearCiRevCiDrCmdData(void) * ֵ CI_ERROR:Уʧ * CI_SUCCESS:Уɹ */ -UINT8 ParseCiToCiDataCheck(UINT8* dataBuf, UINT16 dataLength,UINT8 *errNo, UINT16 srcDevTypeId) +UINT8 ParseCiToCiDataCheck(UINT8* dataBuf, UINT16 dataLength, UINT8* errNo, UINT16 srcDevTypeId) { UINT8 reVal = CI_ERROR; UINT8 errorNo_length = 0U; @@ -11859,431 +11916,421 @@ UINT8 ParseCiToCiDataCheck(UINT8* dataBuf, UINT16 dataLength,UINT8 *errNo, UINT1 if ((dataBuf != NULL) && (dataLength > 0U)) { reVal = CI_SUCCESS; - } - else - { - reVal = CI_ERROR; - } - /*汾У ֹӿڰ汾һУʱԽ*/ - if (CI_SUCCESS == reVal) - { - reVal = CheckCiIDAndVer(dataBuf, &ii); - if (CI_ERROR == reVal) + + /*汾У ֹӿڰ汾һУʱԽ*/ + if (CI_SUCCESS == reVal) { - *errNo = 0U; + reVal = CheckCiIDAndVer(dataBuf, &ii); + if (CI_ERROR == reVal) + { + *errNo = 0U; + } } - } -#if 0 - /*У*/ - if (CI_SUCCESS == reVal) - { - reVal = CheckCi2CiDataLenValid(dataBuf, dataLength, &errorNo_length); - if (CI_ERROR == reVal) + + /*֡ͽУ*/ + wAppLen = ShortFromChar(&dataBuf[CICI_BEGIN_TO_STATION_LEN - 2U]); + if ((wAppLen < 6U) || ((wAppLen + CICI_BEGIN_TO_STATION_LEN) > CI_TO_CI_DATA_LEN_MAX)) { debug_infor_printf((const)"CheckCi2CiDataLenValid error:%d\n", errorNo_length); - *errNo = 2U; + *errNo = 29U; } - } -#endif - /*֡ͽУ*/ - wAppLen = ShortFromChar(&dataBuf[CICI_BEGIN_TO_STATION_LEN - 2U]); - if ((wAppLen < 6U)||((wAppLen+ CICI_BEGIN_TO_STATION_LEN)>CI_TO_CI_DATA_LEN_MAX)) - { - debug_infor_printf((const)"CheckCi2CiDataLenValid error:%d\n", errorNo_length); - *errNo = 29U; - } - while (wTotalLen < wAppLen) - { - wMsgLen = ShortFromChar(&dataBuf[ii]); - ii += 2U; - wMsgType = ShortFromChar(&dataBuf[ii]); - ii += 2U; - ii += 2U;/*Ԥֽ*/ - if (NEAR_RCI_GENERAL_DEV_INFO== wMsgType) + while (wTotalLen < wAppLen) { - /*У*/ - if (CI_SUCCESS == reVal) + wMsgLen = ShortFromChar(&dataBuf[ii]); + ii += 2U; + wMsgType = ShortFromChar(&dataBuf[ii]); + ii += 2U; + ii += 2U;/*Ԥֽ*/ + if (NEAR_RCI_GENERAL_DEV_INFO == wMsgType) { - reVal = CheckCiToCiSwitchData(dataBuf, &ii); - if (CI_ERROR == reVal) - { - *errNo = 1U; - } - } - - /*У*/ - if (CI_SUCCESS == reVal) - { - reVal = CheckCiToCiPhySecData(dataBuf, &ii); - if (CI_ERROR == reVal) - { - *errNo = 2U; - } - } - - /*߼У*/ - if (CI_SUCCESS == reVal) - { - reVal = CheckCiToCiLogSecData(dataBuf, &ii); - if (CI_ERROR == reVal) - { - *errNo = 3U; - } - } - - /*źŻУ*/ - if (CI_SUCCESS == reVal) - { - reVal = CheckCiToCiSignalData(dataBuf, &ii); - if (CI_ERROR == reVal) - { - *errNo = 4U; - } - } - - /*У*/ - if (CI_SUCCESS == reVal) - { - reVal = CheckCiToCiPsdData(dataBuf, &ii); - if (CI_ERROR == reVal) - { - *errNo = 5U; - } - } - - /*ͣťУ*/ - if (CI_SUCCESS == reVal) - { - reVal = CheckCiToCiEsbData(dataBuf, &ii); - if (CI_ERROR == reVal) - { - *errNo = 6U; - } - } - - /*·У*/ - if (CI_SUCCESS == reVal) - { - reVal = CheckCiToCiRouteData(dataBuf, &ii); - if (CI_ERROR == reVal) - { - *errNo = 7U; - } - } - - /*ͬ״̬У*/ - if (CI_SUCCESS == reVal) - { - reVal = CheckCiToCiCommonPhyLockData(dataBuf, &ii); - if (CI_ERROR == reVal) - { - *errNo = 8U; - } - } - - /*SPKSУ*/ - if (CI_SUCCESS == reVal) - { - reVal = CheckCiToCiSpksData(dataBuf, &ii); - if (CI_ERROR == reVal) - { - *errNo = 9U; - } - } - - /*̵У*/ - if (CI_SUCCESS == reVal) - { - reVal = CheckCiToCiVirRelayData(dataBuf, &ii); - if (CI_ERROR == reVal) - { - *errNo = 10U; - } - } - - /*У*/ - if (CI_SUCCESS == reVal) - { - reVal = CheckCiToCiFloodGateData(dataBuf, &ii); - if (CI_ERROR == reVal) - { - *errNo = 11U; - } - } - - /*У*/ - if (CI_SUCCESS == reVal) - { - reVal = CheckCiToCiOverlapData(dataBuf, &ii); - if (CI_ERROR == reVal) - { - *errNo = 12U; - } - } - - /*Զͨ·У*/ - if (CI_SUCCESS == reVal) - { - reVal = CheckCiToCiAutoRouteData(dataBuf, &ii); - if (CI_ERROR == reVal) - { - *errNo = 13U; - } - } - - /*߼״̬У*/ - if (CI_SUCCESS == reVal) - { - reVal = CheckCiToCiLogicLockData(dataBuf, &ii); - if (CI_ERROR == reVal) - { - *errNo = 14U; - } - } - - /*ѩУ*/ - if (CI_SUCCESS == reVal) - { - reVal = CheckCiToCiAreaSnowData(dataBuf, &ii); - if (CI_ERROR == reVal) - { - *errNo = 15U; - } - } - - /*ITEгУ*/ - if (CI_SUCCESS == reVal) - { - reVal = CheckCiToCiAreaIteCutData(dataBuf, &ii); - if (CI_ERROR == reVal) - { - *errNo = 16U; - } - } - - /*·ȥ߼У*/ - if (CI_SUCCESS == reVal) - { - reVal = CheckCiToCiLeaveLogSecData(dataBuf, &ii); - if (CI_ERROR == reVal) - { - *errNo = 17U; - } - } - - /*Ҫ״̬Ľ·У*/ - if (CI_SUCCESS == reVal) - { - reVal = CheckCiToCiNeedCheckSwRouteData(dataBuf, &ii); - if (CI_ERROR == reVal) - { - *errNo = 18U; - } - } - - /*Ҫ״̬ıУ*/ - if (CI_SUCCESS == reVal) - { - reVal = CheckCiToCiNeedCheckSwOlpData(dataBuf, &ii); + /*У*/ if (CI_SUCCESS == reVal) + { + reVal = CheckCiToCiSwitchData(dataBuf, &ii); + if (CI_ERROR == reVal) + { + *errNo = 1U; + } + } + + /*У*/ + if (CI_SUCCESS == reVal) + { + reVal = CheckCiToCiPhySecData(dataBuf, &ii); + if (CI_ERROR == reVal) + { + *errNo = 2U; + } + } + + /*߼У*/ + if (CI_SUCCESS == reVal) + { + reVal = CheckCiToCiLogSecData(dataBuf, &ii); + if (CI_ERROR == reVal) + { + *errNo = 3U; + } + } + + /*źŻУ*/ + if (CI_SUCCESS == reVal) + { + reVal = CheckCiToCiSignalData(dataBuf, &ii); + if (CI_ERROR == reVal) + { + *errNo = 4U; + } + } + + /*У*/ + if (CI_SUCCESS == reVal) + { + reVal = CheckCiToCiPsdData(dataBuf, &ii); + if (CI_ERROR == reVal) + { + *errNo = 5U; + } + } + + /*ͣťУ*/ + if (CI_SUCCESS == reVal) + { + reVal = CheckCiToCiEsbData(dataBuf, &ii); + if (CI_ERROR == reVal) + { + *errNo = 6U; + } + } + + /*·У*/ + if (CI_SUCCESS == reVal) + { + reVal = CheckCiToCiRouteData(dataBuf, &ii); + if (CI_ERROR == reVal) + { + *errNo = 7U; + } + } + + /*ͬ״̬У*/ + if (CI_SUCCESS == reVal) + { + reVal = CheckCiToCiCommonPhyLockData(dataBuf, &ii); + if (CI_ERROR == reVal) + { + *errNo = 8U; + } + } + + /*SPKSУ*/ + if (CI_SUCCESS == reVal) + { + reVal = CheckCiToCiSpksData(dataBuf, &ii); + if (CI_ERROR == reVal) + { + *errNo = 9U; + } + } + + /*̵У*/ + if (CI_SUCCESS == reVal) + { + reVal = CheckCiToCiVirRelayData(dataBuf, &ii); + if (CI_ERROR == reVal) + { + *errNo = 10U; + } + } + + /*У*/ + if (CI_SUCCESS == reVal) + { + reVal = CheckCiToCiFloodGateData(dataBuf, &ii); + if (CI_ERROR == reVal) + { + *errNo = 11U; + } + } + + /*У*/ + if (CI_SUCCESS == reVal) + { + reVal = CheckCiToCiOverlapData(dataBuf, &ii); + if (CI_ERROR == reVal) + { + *errNo = 12U; + } + } + + /*Զͨ·У*/ + if (CI_SUCCESS == reVal) + { + reVal = CheckCiToCiAutoRouteData(dataBuf, &ii); + if (CI_ERROR == reVal) + { + *errNo = 13U; + } + } + + /*߼״̬У*/ + if (CI_SUCCESS == reVal) + { + reVal = CheckCiToCiLogicLockData(dataBuf, &ii); + if (CI_ERROR == reVal) + { + *errNo = 14U; + } + } + + /*ѩУ*/ + if (CI_SUCCESS == reVal) + { + reVal = CheckCiToCiAreaSnowData(dataBuf, &ii); + if (CI_ERROR == reVal) + { + *errNo = 15U; + } + } + + /*ITEгУ*/ + if (CI_SUCCESS == reVal) + { + reVal = CheckCiToCiAreaIteCutData(dataBuf, &ii); + if (CI_ERROR == reVal) + { + *errNo = 16U; + } + } + + /*·ȥ߼У*/ + if (CI_SUCCESS == reVal) + { + reVal = CheckCiToCiLeaveLogSecData(dataBuf, &ii); + if (CI_ERROR == reVal) + { + *errNo = 17U; + } + } + + /*Ҫ״̬Ľ·У*/ + if (CI_SUCCESS == reVal) + { + reVal = CheckCiToCiNeedCheckSwRouteData(dataBuf, &ii); + if (CI_ERROR == reVal) + { + *errNo = 18U; + } + } + + /*Ҫ״̬ıУ*/ + if (CI_SUCCESS == reVal) + { + reVal = CheckCiToCiNeedCheckSwOlpData(dataBuf, &ii); + if (CI_SUCCESS == reVal) + { + /**/ + } + else + { + *errNo = 19U; + } + } + else { /**/ } - else - { - *errNo = 19U; - } - } - else - { - /**/ - } - /*·/ηյķУ*/ - if (CI_SUCCESS == reVal) - { - reVal = CheckCiToCiProSwPLockData(dataBuf, &ii); + /*·/ηյķУ*/ if (CI_SUCCESS == reVal) + { + reVal = CheckCiToCiProSwPLockData(dataBuf, &ii); + if (CI_SUCCESS == reVal) + { + /**/ + } + else + { + *errNo = 20U; + } + } + else { /**/ } - else - { - *errNo = 20U; - } - } - else - { - /**/ - } - /*У*/ - if (CI_SUCCESS == reVal) - { - reVal = CheckCiToCiCommandData(dataBuf, &ii); - if (CI_ERROR == reVal) + /*У*/ + if (CI_SUCCESS == reVal) { - *errNo = 21U; + reVal = CheckCiToCiCommandData(dataBuf, &ii); + if (CI_ERROR == reVal) + { + *errNo = 21U; + } } - } - if (CI_SUCCESS == reVal) - { - if ((ii - CICI_BEGIN_TO_STATION_LEN - wTotalLen - 2U) != wMsgLen) + if (CI_SUCCESS == reVal) { - reVal = CI_ERROR; - debug_infor_printf((const)"ParseCiToCiDataCheck NEAR_RCI_GENERAL_DEV_INFO Len Error \n"); - *errNo = 30U; + if ((ii - CICI_BEGIN_TO_STATION_LEN - wTotalLen - 2U) != wMsgLen) + { + reVal = CI_ERROR; + debug_infor_printf((const)"ParseCiToCiDataCheck NEAR_RCI_GENERAL_DEV_INFO Len Error \n"); + *errNo = 30U; + } } - } - if (CI_SUCCESS == reVal) - { - wTotalLen += wMsgLen; - wTotalLen += 2U; - } - else - { - wTotalLen = UINT16_MAX;/*ٽ,Ѽ¼*/ - } - } - else if (wMsgType == NEAR_RCI_PBTACS_DEV_INFO) - { - /*ģʽУ*/ - if ((CI_SYSTEM_TYPE_RC == chSendType) && (CI_SYSTEM_TYPE_RC == CI_SYSTEM_TYPE_RCI)) - { - ;/*RC*/ - } - else - { - reVal = CI_ERROR; - *errNo = 34U; - } - /*RCλռУ*/ - if (CI_SUCCESS == reVal) - { - reVal = CheckCiToCiPhySecUtOccData(dataBuf, &ii); - if (CI_ERROR == reVal) + if (CI_SUCCESS == reVal) { - *errNo = 22U; + wTotalLen += wMsgLen; + wTotalLen += 2U; } else { - /*У*/ + wTotalLen = UINT16_MAX;/*ٽ,Ѽ¼*/ } } - else + else if (wMsgType == NEAR_RCI_PBTACS_DEV_INFO) { - /*Уʧܣ*/ - } - - /*RC߼У*/ - if (CI_SUCCESS == reVal) - { - reVal = CheckCiToCiLogSecDataRcOnly(dataBuf, &ii); - if (CI_ERROR == reVal) + /*ģʽУ*/ + if ((CI_SYSTEM_TYPE_RC == chSendType) && (CI_SYSTEM_TYPE_RC == CI_SYSTEM_TYPE_RCI)) { - *errNo = 23U; + ;/*RC*/ } - } - - /*߼״̬У*/ - if (CI_SUCCESS == reVal) - { - reVal = CheckCiToCiLogicLockDataRcOnly(dataBuf, &ii); - if (CI_ERROR == reVal) - { - *errNo = 24U; - } - } - /*ֽУ*/ - if (CI_SUCCESS == reVal) - { - reVal = CheckCiToCiCfpData(dataBuf, &ii); - if (CI_ERROR == reVal) - { - *errNo = 25U; - } - } - - /*ɢУ*/ - if (CI_SUCCESS == reVal) - { - reVal = CheckCiToCiEaData(dataBuf, &ii); - if (CI_ERROR == reVal) - { - *errNo = 26U; - } - } - /*У*/ - if (CI_SUCCESS == reVal) - { - reVal = CheckCiToCiCommandDataRcOnly(dataBuf, &ii); - if (CI_ERROR == reVal) - { - *errNo = 27U; - } - } - - /*̬·ϢУ*/ - if (CI_SUCCESS == reVal) - { - reVal = CheckCiToCiDrCmdData(dataBuf, &ii); - if (CI_ERROR == reVal) - { - *errNo = 28U; - } - } - - if (CI_SUCCESS == reVal) - { - if ((ii - CICI_BEGIN_TO_STATION_LEN - wTotalLen - 2U) != wMsgLen) + else { reVal = CI_ERROR; - debug_infor_printf((const)"ParseCiToCiDataCheck NEAR_RCI_PBTACS_DEV_INFO Len Error \n"); - *errNo = 31U; + *errNo = 34U; + } + /*RCλռУ*/ + if (CI_SUCCESS == reVal) + { + reVal = CheckCiToCiPhySecUtOccData(dataBuf, &ii); + if (CI_ERROR == reVal) + { + *errNo = 22U; + } + else + { + /*У*/ + } + } + else + { + /*Уʧܣ*/ + } + + /*RC߼У*/ + if (CI_SUCCESS == reVal) + { + reVal = CheckCiToCiLogSecDataRcOnly(dataBuf, &ii); + if (CI_ERROR == reVal) + { + *errNo = 23U; + } + } + + /*߼״̬У*/ + if (CI_SUCCESS == reVal) + { + reVal = CheckCiToCiLogicLockDataRcOnly(dataBuf, &ii); + if (CI_ERROR == reVal) + { + *errNo = 24U; + } + } + /*ֽУ*/ + if (CI_SUCCESS == reVal) + { + reVal = CheckCiToCiCfpData(dataBuf, &ii); + if (CI_ERROR == reVal) + { + *errNo = 25U; + } + } + + /*ɢУ*/ + if (CI_SUCCESS == reVal) + { + reVal = CheckCiToCiEaData(dataBuf, &ii); + if (CI_ERROR == reVal) + { + *errNo = 26U; + } + } + /*У*/ + if (CI_SUCCESS == reVal) + { + reVal = CheckCiToCiCommandDataRcOnly(dataBuf, &ii); + if (CI_ERROR == reVal) + { + *errNo = 27U; + } + } + + /*̬·ϢУ*/ + if (CI_SUCCESS == reVal) + { + reVal = CheckCiToCiDrCmdData(dataBuf, &ii); + if (CI_ERROR == reVal) + { + *errNo = 28U; + } + } + + if (CI_SUCCESS == reVal) + { + if ((ii - CICI_BEGIN_TO_STATION_LEN - wTotalLen - 2U) != wMsgLen) + { + reVal = CI_ERROR; + debug_infor_printf((const)"ParseCiToCiDataCheck NEAR_RCI_PBTACS_DEV_INFO Len Error \n"); + *errNo = 31U; + } + } + if (CI_SUCCESS == reVal) + { + wTotalLen += wMsgLen; + wTotalLen += 2U; + } + else + { + wTotalLen = UINT16_MAX;/*ٽ,Ѽ¼*/ } } - if (CI_SUCCESS == reVal) + else if (wMsgType == NEAR_RCI_HEART_INFO) { - wTotalLen += wMsgLen; - wTotalLen += 2U; - } - else - { - wTotalLen = UINT16_MAX;/*ٽ,Ѽ¼*/ - } - } - else if (wMsgType == NEAR_RCI_HEART_INFO) - { - /*ģʽУ*/ - if ((CI_SYSTEM_TYPE_RCI != chSendType) && - (4U == wMsgLen) && ((wMsgLen + 2U) == wAppLen)) - { - /*ͬڣ޽,֡ */ - wTotalLen += wMsgLen; - wTotalLen += 2U; + /*ģʽУ*/ + if ((CI_SYSTEM_TYPE_RCI != chSendType) && + (4U == wMsgLen) && ((wMsgLen + 2U) == wAppLen)) + { + /*ͬڣ޽,֡ */ + wTotalLen += wMsgLen; + wTotalLen += 2U; + } + else + { + reVal = CI_ERROR; + *errNo = 35U; + wTotalLen = UINT16_MAX; + } } else { + wTotalLen = UINT16_MAX;/*ٽ*/ + *errNo = 32U;/*֡ʹ*/ + debug_infor_printf((const)"ParseCiToCiDataCheck MsgType:0x%x Error \n", wMsgType); reVal = CI_ERROR; - *errNo = 35U; - wTotalLen = UINT16_MAX; - } + } } - else + + if ((wTotalLen != wAppLen) && (wTotalLen != UINT16_MAX) && (CI_ERROR != reVal)) { - wTotalLen = UINT16_MAX;/*ٽ*/ - *errNo = 32U;/*֡ʹ*/ - debug_infor_printf((const)"ParseCiToCiDataCheck MsgType:0x%x Error \n", wMsgType); + *errNo = 33U;/*ܳ*/ + debug_infor_printf((const)"ParseCiToCiDataCheck ToTalLen:0x%x ,MsgCntLen:0x%x ; Error \n", wAppLen, wTotalLen); reVal = CI_ERROR; } } - - if ((wTotalLen != wAppLen) && (wTotalLen != UINT16_MAX)&&(CI_ERROR!= reVal)) + else { - *errNo = 33U;/*ܳ*/ - debug_infor_printf((const)"ParseCiToCiDataCheck ToTalLen:0x%x ,MsgCntLen:0x%x ; Error \n", wAppLen, wTotalLen); reVal = CI_ERROR; } return reVal; @@ -12908,7 +12955,6 @@ UINT8 CheckCiToCiLogSecData(const UINT8* dataBuf, UINT16* index) UINT8 retVal = CI_ERROR; UINT16 ii = 0U; UINT16 jj = 0U; - UINT16 kk = 0U; UINT16 wLogSecSum = 0U;/*߼Ŀ*/ UINT16 wLogSecId = 0U;/*߼Id*/ UINT8 chLogSecBelongCiId = 0U;/*߼*/ @@ -12988,6 +13034,19 @@ UINT8 CheckCiToCiLogSecData(const UINT8* dataBuf, UINT16* index) debug_infor_printf((const)"CheckCiToCiLogSecData wLogSecId %d Is Error: chLogSecXinsuSpeed Is %d\n", wLogSecId, chLogSecXinsuSpeed); } } + + /*߼CBTC_ARB+PB_TACS_ARB״̬*/ + chMergeBit = dataBuf[ii++]; + if (((chMergeBit & BIT_PALCE00001100) != 0x00U) && ((chMergeBit & BIT_PALCE00001100) != BIT_PALCE00001100) + && ((chMergeBit & BIT_PALCE00000011) != 0x00U) && ((chMergeBit & BIT_PALCE00000011) != BIT_PALCE00000011)) + { + ;/* ARB00B 11B*/ + } + else + { + retVal = CI_ERROR; + debug_infor_printf((const)"CheckCiToCiLogSecData wLogSecId %d State:0x%x Error Step 4;\n", wLogSecId, chMergeBit); + } } } else @@ -13040,7 +13099,6 @@ UINT8 CheckCiToCiLogSecDataRcOnly(const UINT8* dataBuf, UINT16* index) UINT8 chLogSecResTrainSum = 0U;/*߼Դг*/ UINT16 wLogSecResTrainId = 0U;/*߼ԴгID*/ UINT8 chLogSecTrainUseState = 0U;/*߼Դ״̬*/ - UINT8 chLogSecAblUseFlag = 0U; chLocalCiId = GetSystemParaLocalCiId(); if ((NULL != dataBuf) && (NULL != index)) @@ -16335,10 +16393,10 @@ UINT8 CheckCiToCiPsdData(const UINT8* dataBuf, UINT16* index) } } - /*쳣״̬*/ + /*쳣״̬*/ cPsdExceptOpenState = dataBuf[ii]; ii++; - if ((PSD_EXCEPT_OPEN_YES == cPsdExceptOpenState) || (PSD_EXCEPT_OPEN_NO == cPsdExceptOpenState)) + if ((PSD_EXCEPT_YES == cPsdExceptOpenState) || (PSD_EXCEPT_NO == cPsdExceptOpenState)) { ;/*Уͨ*/ } @@ -19024,6 +19082,7 @@ UINT8 PackManufacDefPacket(UINT8* pInputBuf, UINT16* pItemLen, const UINT8 dstCi UINT16 wSwitchRelPhySecId = 0U; /*ID*/ UINT16 wLockedRouteId = 0U; /*·ID*/ UINT8 chExiansuState = 0U; + UINT8 chLockDir = 0U; /*շ*/ pTmpCiTransInfo = GetDstCiTransInfo(dstCiId); if ((NULL != pInputBuf) && (NULL != pItemLen) && (NULL != pTmpCiTransInfo)) @@ -19241,6 +19300,72 @@ UINT8 PackManufacDefPacket(UINT8* pInputBuf, UINT16* pItemLen, const UINT8 dstCi /**/ } wPackedInfoNum++; /*һϢ1*/ + + /*α״̬*/ + cTempCounter = (UINT8)(wPackedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽڿɴ4Ϣ*/ + cBitOffset = cTempCounter * BIT_NUM_PER_DEV; + wLockedRouteId = GetPhySecPLockBelongRouteId(wSwitchRelPhySecId); /*ȡη·ID*/ + if ((0U < wLockedRouteId) && (ROUTE_SUM_MAX > wLockedRouteId)) + { + *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000010B << cBitOffset); /*ڷ*/ + } + else + { + *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000001B << cBitOffset); /*ڷ*/ + } + + if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) + { + wPackedLen++; /*һֽڣȼ1*/ + } + else + { + /**/ + } + wPackedInfoNum++; /*һϢ1*/ + + /*շ*/ + cTempCounter = (UINT8)(wPackedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽڿɴ4Ϣ*/ + cBitOffset = cTempCounter * BIT_NUM_PER_DEV; + chLockDir = GetPhySecLockDirection(wSwitchRelPhySecId);/*ȡշ*/ + if (CI_SYSTEM_DIRECTION_UP == chLockDir) + { + *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000010B << cBitOffset); /*Ӫ*/ + } + else + { + *(pInputBuf + wPackedLen) = *(pInputBuf + wPackedLen) | (BIT_VAL_00000001B << cBitOffset); /*η*/ + } + if ((DEV_NUM_PER_BYTE - 1U) == cTempCounter) + { + wPackedLen++; /*һֽڣȼ1*/ + } + else + { + /**/ + } + wPackedInfoNum++; /*һϢ1*/ + + /*շ*/ + cTempCounter = (UINT8)(wPackedInfoNum % DEV_NUM_PER_BYTE); /*ÿ2λһϢһֽڿɴ4Ϣ*/ + cBitOffset = cTempCounter * BIT_NUM_PER_DEV; + if (CI_SYSTEM_DIRECTION_DOWN == chLockDir) + { + *(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*/ } /*ͣ׼ͣ״̬*/ @@ -19443,7 +19568,10 @@ UINT8 ParseManufacDefPacket(const UINT8* pInputData, UINT16* pItemLen, const UIN UINT16 wPhySecId = 0U; /*ID*/ UINT8 cSignalAtsDetainFlag = 0U; /*źŻĿ۳־*/ UINT8 cSignalXiandiDetainFlag = 0U; /*źŻվ۳־*/ - + UINT8 cSwitchPLockState = 0U; /*ηձ־*/ + UINT8 cSwitchPhyUpLockDir = 0U; /*շ*/ + UINT8 cSwitchPhyDownLockDir = 0U; /*շ*/ + UINT8 cSwitchPhyLockDir = 0U; /*շ*/ cLocalCiId = GetSystemParaLocalCiId(); pCiRecptStru = GetSrcCiTransInfo(srcCiId); /*ȡԴӦĽṹ*/ pstrAutoRouteData = GetAutoRouteDataStr(); /*ȡԶ·̬ݽṹ*/ @@ -19770,7 +19898,91 @@ UINT8 ParseManufacDefPacket(const UINT8* pInputData, UINT16* pItemLen, const UIN } wParsedInfoNum++; /*һϢ1*/ - /*ȷCT/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) + { + 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) + { + 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) + { + 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*/ + + /*ȷCT/UTռ״̬--ʱ0x0202֡*/ if ((LOGICSECTION_OCCUPY_NO == cPhySecCtOcc) && (LOGICSECTION_OCCUPY_NO == cPhySecUtOcc)) { cPhySecCtOrUtOcc = LOGICSECTION_OCCUPY_NO; /*CT/UTУ*/ @@ -19789,10 +20001,17 @@ UINT8 ParseManufacDefPacket(const UINT8* pInputData, UINT16* pItemLen, const UIN cRetVal = CI_ERROR; /*Ϣ쳣ʧ*/ } - /*ȷ״̬*/ + /*ȷ״̬--ʱ0x0202֡*/ if ((PHYSICAL_SECTION_LOCK_NO == cPhySecRouteLockState) && (PHYSICAL_SECTION_LOCK_NO == cPhySecExceptLockState)) { - cPhySecLockState = PHYSICAL_SECTION_LOCK_NO; /*·պ͹վδգδ*/ + 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)) { @@ -19808,6 +20027,21 @@ UINT8 ParseManufacDefPacket(const UINT8* pInputData, UINT16* pItemLen, const UIN 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]; @@ -19816,7 +20050,7 @@ UINT8 ParseManufacDefPacket(const UINT8* pInputData, UINT16* pItemLen, const UIN if ((cLocalCiId != cDevBelongCiId) && (0U != cDevBelongCiId)) { /*洢DZ豸״̬*/ - wDevIndex = GetPhySecConfigBufIndex(wDevId); + wDevIndex = GetPhySecConfigBufIndex(wPhySecId); pstrPhySecData[wDevIndex].PhysicalSectionId = wPhySecId; /*ʱԤ*/ @@ -20570,6 +20804,7 @@ UINT8 PackRcToLocalCiDataFrame(const UINT8 cCiId) UINT16 wSignalId = 0U; /*źŻID*/ UINT8 cLightExtinctState = 0U; /*źŻ״̬*/ UINT8 cSignalCrossState = 0U; /*źŻѹ״̬*/ + UINT8 wCrossTacsTainId = 0U; /*ѹTACSгID*/ UINT16 wAxisSecNum = 0U; /**/ UINT16 wAxisSecId = 0U; /*ID*/ UINT8 cAxisArbState = 0U; /*ARB״̬*/ @@ -20712,6 +20947,11 @@ UINT8 PackRcToLocalCiDataFrame(const UINT8 cCiId) szRcToCiDataBuf[ii] = cSignalCrossState; ii++; + /*ѹTACSгID*/ + wCrossTacsTainId = GetSignalCrossTacsTrainIdCC(wSignalId); + szRcToCiDataBuf[ii] = wCrossTacsTainId; + ii++; + wNeedPackDevNum++; } else @@ -20995,6 +21235,7 @@ UINT8 ParseRcToLocalCiDataFrame(const UINT8* pDataBuf, const UINT16 dataLength, UINT16 wSignalId = 0U; /*źŻID*/ UINT8 cLightExtinctState = 0U; /*źŻ״̬*/ UINT8 cSignalCrossState = 0U; /*źŻѹ״̬*/ + UINT8 wTacsCrossTrainId = 0U; /*TACSؿѹгID*/ UINT16 wAxisSecNum = 0U; /**/ UINT16 wAxisSecId = 0U; /*ID*/ UINT8 cAxisArbState = 0U; /*ARB״̬*/ @@ -21099,8 +21340,11 @@ UINT8 ParseRcToLocalCiDataFrame(const UINT8* pDataBuf, const UINT16 dataLength, cSignalCrossState = pDataBuf[ii]; /*źŻѹ״̬*/ ii++; + wTacsCrossTrainId = pDataBuf[ii]; /*ѹTACSгID*/ + ii++; + SetSignalLightExtinctStateCC(wSignalId, cLightExtinctState); /*źŻ״̬CC*/ - SetSignalCrossStateCC(wSignalId, cSignalCrossState); /*źŻѹ״̬CC*/ + SetSignalCrossStateCC(wSignalId, cSignalCrossState, wTacsCrossTrainId); /*źŻѹ״̬CC*/ } /****** ******/ @@ -21696,6 +21940,7 @@ UINT8 CheckLocalRcToCiSignalData(const UINT8* dataBuf, UINT16* index) UINT16 wSignalId = 0U; /*źŻID*/ UINT8 cLightExtinctState = 0U; /*źŻ״̬*/ UINT8 cSignalCrossState = 0U; /*źŻѹ״̬*/ + UINT8 cCrossTacsTrainId = 0U; /*źŻѹTACSгID*/ UINT8 cLocalCiId = 0U; /*ID*/ UINT8 cSignalBelongCiId = 0U; /*źŻID*/ @@ -21755,6 +22000,27 @@ UINT8 CheckLocalRcToCiSignalData(const UINT8* dataBuf, UINT16* index) { /**/ } + + if (CI_SUCCESS == retVal) + { + cCrossTacsTrainId = dataBuf[ii]; /*źŻѹTACSгID*/ + ii++; + + if (TACS_CROSS_ID_MAX >= cCrossTacsTrainId) + { + /**/ + } + else + { + /*źŻѹTACSгIDǷʧ*/ + debug_infor_printf((const)"\nCheckLocalRcToCiSignalData Is Error: wSignalId[%d] cCrossTacsTrainId Is %d\n", wSignalId, cCrossTacsTrainId); + retVal = CI_ERROR; + } + } + else + { + /**/ + } } else { diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackCiData.h b/TSCP/src/APP/ciapp/ParsePack/ParsePackCiData.h index 71956ce..f9ae6ee 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackCiData.h +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackCiData.h @@ -108,13 +108,13 @@ #define PHYSEC_LOCKDIRECTION_OPPST_YES ((UINT8)0xAA) /*ȡ*/ #define PHYSEC_LOCKDIRECTION_OPPST_DEFAULT ((UINT8)0xFF) /*Ĭֵ*/ -#define CICI_VERSION ((UINT8)31) /*ciciӿڰ汾ţÿ޸ĽӿҪ汾šLast Modified On 2026.01.04*/ +#define CICI_VERSION ((UINT8)32) /*ciciӿڰ汾ţÿ޸ĽӿҪ汾šLast Modified On 2026.03.10*/ #define CICI_BEGIN_TO_STATION_LEN ((UINT16)31) /*20251104ΪHLHTͷ+Ӧò㱣ǰ6ֽ*/ #define CICI_CICIVERINDEX (CICI_BEGIN_TO_STATION_LEN-3U) /*20251104ºCIӿڰ汾Ϣ*/ #define CICI_ONE_SWITCH_LEN ((UINT16)13) /*һݳ*/ #define CICI_ONE_PHYSEC_LEN ((UINT16)12U)/*һݳ*/ #define CICI_ONE_PHYSEC_UT_LEN ((UINT16)1U)/*һλռݳ*/ -#define CICI_ONE_LOGSEC_LEN ((UINT16)9)/*һ߼ݳ*/ +#define CICI_ONE_LOGSEC_LEN ((UINT16)6)/*һ߼ݳ*/ #define CICI_ONE_SIGNAL_LEN ((UINT16)11)/*һźŻݳ*/ #define CICI_ONE_PSD_LEN ((UINT16)5)/*һݳ*/ #define CICI_ONE_ESB_LEN ((UINT16)4)/*һESBݳ*/ diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackCommon.c b/TSCP/src/APP/ciapp/ParsePack/ParsePackCommon.c index 480c80b..c303709 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackCommon.c +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackCommon.c @@ -524,7 +524,6 @@ UINT8 SwitchMaskManage(UINT8 MaskType, UINT16 DeviceId, UINT16 MaskId, UINT8* da UINT16 indexFind = 0U; UINT8 devBelongThisLine = 0U; UINT8 switchBoardNum = 0U; - UINT8 switchStateCheck = CI_ERROR; switchLockStatus = GetSwitchLockStatus(DeviceId); @@ -1178,6 +1177,42 @@ UINT8 PhySectionMaskManage(UINT8 MaskType, UINT16 DeviceId, UINT16 MaskId, UINT8 ; } break; + case MASK_TYPE_PHYSECTION_INTRUSION: + /* ״̬λ */ + phyIntruSecVainCheck = PhysicalIntruSecVainCheck(DeviceId); + if (CI_SUCCESS == phyIntruSecVainCheck) + { + /*δޣ1*/ + SetMaskValue(MaskId, dataBuf); + } + else + { + /*ޣ0*/ + } + break; + case MASK_TYPE_PHYSECTION_ATS_FLOCK: + /* ATS״̬λ */ + /*״̬λ(ATS) 0 δԼSPKS1*/ + phySecState = GetPhySecFLockState(DeviceId); + if (PHYSICAL_SECTION_FLOCK_NO != phySecState) + { + phySecLockType = GetPhySecFLockType(DeviceId); + if (PHY_SEC_FLOCK_TYPE_SPKS != phySecLockType) + { + /*SPKS 0*/ + } + else + { + /*SPKSķ 1*/ + SetMaskValue(MaskId, dataBuf); + } + } + else + { + /*δ 1*/ + SetMaskValue(MaskId, dataBuf); + } + break; default: returnValue = CI_ERROR; @@ -1204,13 +1239,16 @@ UINT8 LogicSectionMaskManage(UINT8 MaskType, UINT16 DeviceId, UINT16 MaskId, UIN UINT16 logLockBelongRoute = 0U;/*߼·*/ UINT16 logProtectLockRoute = 0U;/*߼η·*/ UINT8 chJumpLockState = 0U;/*߼״̬*/ - UINT8 cLogArbState = 0U; /* ߼ARB״̬ */ + UINT8 cLogCbtcArbState = 0U; /* ߼CBTC_ARB״̬ */ + UINT8 cLogPbTacsArbState = 0U; /* ߼PB_TACS_ARB״̬ */ UINT8 chLogSecLockDirOpposedFlag = CI_ERROR;/*߼շǷȡ־*/ UINT8 cLogSpksFlockState = 0U; /* ߼SPKS״̬ */ UINT8 cLogSecLogicLockState = LOG_SECTION_LOCK_NO; /*߼߼״̬*/ UINT8 cLogSecLockDir = CI_SYSTEM_DIRECTION_NONE; /*߼շ*/ UINT8 chLogSecBelLogRouteSum = 0U;/*߼߼·Ŀ*/ UINT8 chLogSecEmergXianSu = 0U;/*߼νʱ״̬*/ + UINT8 chRcWorkMode = 0U; /*RCģʽ*/ + switch (MaskType) { case MASK_TYPE_LOGICSECTION_UTOCCUPY: @@ -1364,15 +1402,33 @@ UINT8 LogicSectionMaskManage(UINT8 MaskType, UINT16 DeviceId, UINT16 MaskId, UIN SetMaskValue(MaskId, dataBuf); } break; - case MASK_TYPE_LOGICSECTION_ARB: - /* ߼ARB״̬ */ - cLogArbState = GetLgcArbState(DeviceId); - /*ARB*/ - if (LGC_SECTION_ARB_YES == cLogArbState) + case MASK_TYPE_LOGSEC_CBTC_ARB: + /* ߼CBTC_ARB״̬ */ + cLogCbtcArbState = GetLogSecCbtcArbState(DeviceId); + /*ǰϵͳΪCIȡ߼ARB״̬*/ + if (LGC_SECTION_ARB_YES == cLogCbtcArbState) { /*λΪ1*/ SetMaskValue(MaskId, dataBuf); } + else + { + ; + } + break; + case MASK_TYPE_LOGSEC_PB_TACS_ARB: + /* ߼PC_TACS_ARB״̬ */ + cLogPbTacsArbState = GetLogSecPbTacsArbState(DeviceId); + /*ǰϵͳΪRCȡ߼ARB״̬*/ + if (LGC_SECTION_ARB_YES == cLogPbTacsArbState) + { + /*λΪ1*/ + SetMaskValue(MaskId, dataBuf); + } + else + { + ; + } break; case MASK_TYPE_LOGICSECTION_SPKS_FLOCK: /* ߼SPKS״̬ */ @@ -1387,7 +1443,7 @@ UINT8 LogicSectionMaskManage(UINT8 MaskType, UINT16 DeviceId, UINT16 MaskId, UIN /*λΪ1*/ SetMaskValue(MaskId, dataBuf); } - + break; case MASK_TYPE_LOGICSECTION_EMERG_XIANSU: /* ߼νʱ״̬ */ @@ -1906,11 +1962,10 @@ UINT8 PlatMaskManage(UINT8 MaskType, UINT16 DeviceId, UINT16 MaskId, UINT8* data UINT16 wRtnIndicatorDevId = 0U;/*۷豸ID*/ UINT8 chNonRrnAdhesionState = 0U;/*۷ťճ״̬*/ UINT8 cEsbCutErrFlag = ESB_ERROR_FLAG_NO; /*ر·ťϱ־*/ - UINT8 cPsdExceptOpenState = 0U; /*쳣״̬*/ + UINT8 cPsdExceptState = 0U; /*쳣״̬*/ UINT8 chJXTCMutualLockFaultState = 0U; /*϶̽ⰴť״̬*/ UINT8 chIBPBtnState = 0U; /*IBPť״̬*/ UINT8 chIBPBtnFaultState = 0U; /*IBPť״̬*/ - UINT8 chJXTCState = 0U; /*϶̽״̬*/ UINT8 cEsbCutBtnState = 0U; /*ر·ť״̬*/ UINT8 cOnePlatEsbState = 0U; /*ͬվť״̬*/ UINT8 cOnePlatEsbCutState = 0U; /*ͬվ·ť״̬*/ @@ -2308,15 +2363,15 @@ UINT8 PlatMaskManage(UINT8 MaskType, UINT16 DeviceId, UINT16 MaskId, UINT8* data /*Ƶ״̬Ϊ˻ЧλЧ*/ } break; - case MASK_TYPE_PSD_EXCEPT_OPEN: /*վ̨쳣״̬λ-ZC/ATS*/ - cPsdExceptOpenState = GePsdExceptOpenState(DeviceId); - if (PSD_EXCEPT_OPEN_NO == cPsdExceptOpenState) + case MASK_TYPE_PSD_EXCEPT: /*վ̨쳣״̬λ-ATS/ZC*/ + cPsdExceptState = GePsdExceptState(DeviceId); + if (PSD_EXCEPT_NO == cPsdExceptState) { - SetMaskValue(MaskId, dataBuf); /*PSDδ쳣򿪣λ1*/ + SetMaskValue(MaskId, dataBuf); /*PSDδ쳣λ1*/ } else { - /*PSD쳣򿪣λ0*/ + /*PSD쳣λ0*/ } break; case MASK_TYPE_PSD_JXTCPANGLU_FAULT: @@ -4833,6 +4888,7 @@ UINT8 ParasePlantCCUHeartFrame(UINT8* dataBuf) UINT16 curCoup = 0U; UINT32 tempera = 0U; UINT8 flagEEPROM = 0U; + UINT32 ccuSyn = 0u;/*ͨк*/ UINT32 crcRecv = 0U; /*յƽ̨֡*/ @@ -4874,6 +4930,9 @@ UINT8 ParasePlantCCUHeartFrame(UINT8* dataBuf) /*EEPROM洢*/ flagEEPROM = dataBuf[ii]; ii += 1u; + /*ͨк*/ + ccuSyn = LongFromChar(&dataBuf[ii]); + ii += 4u; /*CRCУ*/ crcRecv = LongFromChar(&dataBuf[ii]); /*ȡCRC*/ ii += 4u; @@ -4883,7 +4942,7 @@ UINT8 ParasePlantCCUHeartFrame(UINT8* dataBuf) { /*CRCУ,2CRC4*/ - crcCheck = Tioc_PlatCommonCrc32(&dataBuf[2], 22U); + crcCheck = Tioc_PlatCommonCrc32(&dataBuf[2], 26U); if (crcCheck == crcRecv) @@ -4974,6 +5033,7 @@ UINT8 ParasePlantSEBHeartFrame(UINT8* dataBuf) UINT8 boardSEBId = 0U;/*չID */ UINT16 dataLengthRcv = 0U; /*֡*/ + UINT32 sebSyn = 0u; /*к*/ UINT32 crcRecv = 0U; /*CRCУ*/ UINT32 rcvCyc = 0U; /*ں*/ /*յƽ̨֡*/ @@ -4997,17 +5057,20 @@ UINT8 ParasePlantSEBHeartFrame(UINT8* dataBuf) /* 3ֽ*/ ii += 5U; + /*к*/ + sebSyn = LongFromChar(&dataBuf[ii]); + ii += 4U; /*CRCУ*/ crcRecv = LongFromChar(&dataBuf[ii]); /*ȡCRC*/ ii += 4u; - /*У*/ /*ܳ16ֽ*/ + /*У*/ /*ܳ20ֽ*/ if (dataLengthRcv == ii - 2U) { /*CRCУ,2CRC4*/ - crcCheck = Tioc_PlatCommonCrc32(&dataBuf[2], 10U); + crcCheck = Tioc_PlatCommonCrc32(&dataBuf[2], 14U); if (crcCheck == crcRecv) diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackManage.c b/TSCP/src/APP/ciapp/ParsePack/ParsePackManage.c index 9513035..812b205 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackManage.c +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackManage.c @@ -989,7 +989,7 @@ UINT8 PackCiToOtherSysData(void) reVal = PackCiToCiData(cLocalDevType, deviceIdBuf[ii]); if (CI_ERROR == reVal) { - debug_infor_printf((const)"\nPackCiToCiData Error: DstDev[0x%x]", (UINT16)(cLocalDevType) +(UINT16)(deviceIdBuf[ii])); /**/ + debug_infor_printf((const)"\nPackCiToCiData Error: DstDev[0x%x]", (UINT16)(cLocalDevType * 256U) + (UINT16)(deviceIdBuf[ii])); /**/ } else { @@ -1002,7 +1002,7 @@ UINT8 PackCiToOtherSysData(void) reVal = PackHLHTCiToCiData(deviceIdBuf[ii]); if (CI_ERROR == reVal) { - debug_infor_printf((const)"\nPackHLHTCiToCiData Error: DstDev[0x%x]", (UINT16)(cLocalDevType)+(UINT16)(deviceIdBuf[ii]));/**/ + debug_infor_printf((const)"\nPackHLHTCiToCiData Error: DstDev[0x%x]", (UINT16)(cLocalDevType * 256U) +(UINT16)(deviceIdBuf[ii]));/**/ } else { @@ -1017,11 +1017,11 @@ UINT8 PackCiToOtherSysData(void) } - cSysType = GetSystemWorkType(); + cSysType = GetSystemWorkType(); cLocalCiType = GetLocalCiType(); - if ((SYSTEM_WORK_MODE_ALL == cSysType) && ((CI_TYPE_ZX == cLocalCiType) || (CI_TYPE_SCX == cLocalCiType))) + if (SYSTEM_WORK_MODE_ALL == cSysType) { - /*****˫ϵͳ߻Գߣڿһ豸*****/ + /*****˫ϵͳڿһ豸*****/ if (CI_SYSTEM_TYPE_CI == cLocalDevType) { cNearOtherDevType = CI_SYSTEM_TYPE_RC; @@ -1048,7 +1048,7 @@ UINT8 PackCiToOtherSysData(void) reVal = PackCiToCiData(cNearOtherDevType, deviceIdBuf[ii]); if (CI_ERROR == reVal) { - debug_infor_printf((const)"\nPackCiToCiData Error: DstDev[0x%x]", (UINT16)(cNearOtherDevType) +(UINT16)(deviceIdBuf[ii])); /**/ + debug_infor_printf((const)"\nPackCiToCiData Error: DstDev[0x%x]", (UINT16)(cNearOtherDevType * 256U) +(UINT16)(deviceIdBuf[ii])); /**/ } else { @@ -1068,7 +1068,7 @@ UINT8 PackCiToOtherSysData(void) /*鱾CI-RC*/ cStartLockFlag = GetStartLockFlag(); - if (CI_START_LOCK_NO == cStartLockFlag) + if ((CI_START_LOCK_NO == cStartLockFlag) && ((CI_TYPE_ZX == cLocalCiType) || (CI_TYPE_SCX == cLocalCiType))) { /*˫ϵͳµߺԳ߲ŽбCI-RC*/ if (CI_SYSTEM_TYPE_CI == cLocalDevType) diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackOcData.c b/TSCP/src/APP/ciapp/ParsePack/ParsePackOcData.c index 0482f13..622e8c6 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackOcData.c +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackOcData.c @@ -94,7 +94,10 @@ UINT16 ConvertSigDrvColorToSigDrvCmd(const UINT16 signalId, const UINT8 drvColor UINT8 ocHasBlue = 0u; UINT8 funSwitchGreenYellow = GetCiFunctionSwitchConfig(CI_FUNCTION_SWITCH_SHOW_SIGNAL_GreenYellow);/*ʾ̻ƹܿǷ*/ UINT8 funSwitchALLCloseUseBlue = GetCiFunctionSwitchConfig(FUNC_SWITCH_ZX_ALLCLOSE_USEBLUE);/*ƾתƹܿ*/ - UINT8 ciType = GetLocalCiType(); + UINT8 ciType = 0U; + UINT8 chSigBelongRtuId = 0U; + chSigBelongRtuId = GetSignalBelongVirCiId(signalId); + ciType = GetLocalVirCiType(chSigBelongRtuId); switch (drvColor) { case SIGNAL_DRIVECOLOUR_RED:/**/ @@ -247,6 +250,15 @@ UINT8 PackCiToOcData( UINT8 deviceId) UINT16 deviceSum = 0u; UINT16 kqChangeCommand = 0u;/*Ȩл*/ UINT8 chCurSystemAreaState = 0u; /*ģʽ*/ + UINT8 chMainCotrolOCId = 0U; + UINT8 chControlCmd = 0U; + UINT8 chControlCmdNum = 0u; + UINT16 cmdIndex = 0u; + UINT8 chOcOutControlCmd = 0u; + UINT8 chOcFindPostionCmd = 0u; + UINT8 chLocalCiOCSswitch = 0u; + + chLocalCiOCSswitch = GetLocalCiOCSswitch(); #if 0 QueueClear(CiToOcDataQueue); /**/ #endif @@ -325,7 +337,25 @@ UINT8 PackCiToOcData( UINT8 deviceId) ShortToChar(pOcData->OcDevices[kk].DeviceId, &Ci2OcDataBuffer[ii]); ii += 2u; drvPos = GetSwitchDrivePostion(pOcData->OcDevices[kk].DeviceId); - drvCmd = ConvertSwitchDrvPosToSwDrvCmd(drvPos); + chMainCotrolOCId = GetSwitchMainCotrolOCId(pOcData->OcDevices[kk].DeviceId); + + + if ((chMainCotrolOCId == pOcData->OcId)||(OC_S_OFF == chLocalCiOCSswitch)) + {/*ǰOCOC-Sܹر*/ + drvCmd = ConvertSwitchDrvPosToSwDrvCmd(drvPos); + } + else + {/*OC-SҵǰأѰ*/ + drvCmd = OC_SWITCH_DRIVE_POS_KEEP;/**/ + + chOcOutControlCmd = GetSwitchThisOcOutControlCmd(pOcData->OcDevices[kk].DeviceId, pOcData->OcId); + + if (MAIN_CONTROL == chOcOutControlCmd) + { + chOcFindPostionCmd = GetSwitchThisOcFindPostionCmd(pOcData->OcDevices[kk].DeviceId, pOcData->OcId); + drvCmd = ConvertSwitchFindPosToSwFindCmd(chOcFindPostionCmd); + } + } ShortToChar(drvCmd, &Ci2OcDataBuffer[ii]); ii += 2u; break; @@ -636,6 +666,50 @@ UINT8 PackCiToOcData( UINT8 deviceId) ii += ciSorToOcIdx; } + if (CI_SUCCESS == retVal) + { + cmdIndex = ii; + ii += 1u; + for (kk = 0u; kk < pOcData->OcDeviceNum; kk++)/*豸*/ + { + switch (pOcData->OcDevices[kk].DeviceType) + { + case CI_DEVICE_TYPE_SWITCH:/*豸*/ + { + ShortToChar(pOcData->OcDevices[kk].DeviceId, &Ci2OcDataBuffer[ii]); + 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)) + { + Ci2OcDataBuffer[ii] = chControlCmd; + } + else + { + Ci2OcDataBuffer[ii] = STANDBY_CONTROL; + } + } + else + {/*OC-Sعر*/ + Ci2OcDataBuffer[ii] = NO_CONTROL_FUN; + } + ii += 1u; + + chControlCmdNum++; + break; + } + default: + {/*ִ*/ + } + } + } + + Ci2OcDataBuffer[cmdIndex]= chControlCmdNum;/*豸*/ + } + + + #if 0 /*ʽʵ飬ԺҪٴ*/ if (curCycleNum == xingshiTestStartCycle && 1 == xingshiTestStart) { @@ -1124,6 +1198,10 @@ 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 chSwitchBelongOThisOCRet = 0U; + + (void)CommonMemSet(pTmpOcToCiData, (UINT32)sizeof(OcToCiOriginDataStruct),0U, (UINT32)sizeof(OcToCiOriginDataStruct));/*ڴ棬ֹ*/ chMainWorckMode = GetLocalCiBackUpPattern(); dwUpToMainCyc = GetSystemUpdateMainUseCycNum(); @@ -1253,9 +1331,9 @@ UINT8 ParseOcToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength,const U { tmpDeviceId = ShortFromChar(&dataBuf[ii]); /*豸Id 2B*/ ii += 2u; - chDevBelongOC = (UINT8)GetSwitchBelongOcId(tmpDeviceId); + chSwitchBelongOThisOCRet = (UINT8)GetSwitchWhetherBelongThisOc(tmpDeviceId, systemId); chDevBelongCI = GetSwitchBelongCiId(tmpDeviceId); - if ((chDevBelongOC != systemId)||(chDevBelongCI != localCiId)) + if ((CI_SUCCESS != chSwitchBelongOThisOCRet)||(chDevBelongCI != localCiId)) { retVal = CI_ERROR; debug_infor_printf((const)"Swicth devId:%d Belong OC/CI Error\n", tmpDeviceId); @@ -1319,20 +1397,39 @@ UINT8 ParseOcToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength,const U { switchBoardCheck = CI_SUCCESS; /*忨*/ } - } - pTmpOcToCiData->OcDevices[j].DeviceType = tmpDeviceType; /*豸 1B*/ - pTmpOcToCiData->OcDevices[j].DeviceId = tmpDeviceId; /*豸Id 2B*/ - pTmpOcToCiData->OcDevices[j].DeviceState = tmpDeviceState; /*豸״̬ 1B*/ + dwMainStandbyState = dataBuf[ii++];/*忨״̬*/ + if ((MAIN_CONTROL == dwMainStandbyState) || (STANDBY_CONTROL == dwMainStandbyState) || (NO_CONTROL_FUN == dwMainStandbyState)) + { + pTmpOcToCiData->OcDevices[j].MainStandbyState[k] = dwMainStandbyState; + + } + else + { + retVal = CI_ERROR; + debug_infor_printf((const)"Swicth devId %d Board ControlMode ill, mode: %d\n", tmpDeviceId, dwMainStandbyState); + break; + } - if (CI_SUCCESS == switchBoardCheck) /*0Ϊ 忨*/ + } + if (CI_SUCCESS == retVal) { + pTmpOcToCiData->OcDevices[j].DeviceType = tmpDeviceType; /*豸 1B*/ + pTmpOcToCiData->OcDevices[j].DeviceId = tmpDeviceId; /*豸Id 2B*/ pTmpOcToCiData->OcDevices[j].DeviceState = tmpDeviceState; /*豸״̬ 1B*/ - } - else - { - /*ats*/ + if (CI_SUCCESS == switchBoardCheck) /*0Ϊ 忨*/ + { + pTmpOcToCiData->OcDevices[j].DeviceState = tmpDeviceState; /*豸״̬ 1B*/ + } + else + { + /*ats*/ + + } } + + + } else { @@ -2072,10 +2169,10 @@ INT16 GetIndexBySignalId(UINT16 sigId) /* * ͨidȡ -* ˵ void -* ֵ void +* ˵ UINT16 swId ID,UINT8 ocId OCID +* ֵ */ -INT16 GetIndexBySwitchId(UINT16 swId) +INT16 GetIndexBySwitchId(UINT16 swId,UINT16 ocId) { INT16 retIndex = -1; @@ -2083,7 +2180,7 @@ INT16 GetIndexBySwitchId(UINT16 swId) for (i=0u;iDeviceId); + ind = GetIndexBySwitchId(pOcDevice->DeviceId, pOcDevice->OcId); if ((ind >=0) && (OC_DEVICE_TYPE_SWITCH == pOcDevice->DeviceType)) { if ((m_Switches[ind].OcId == pOcDevice->OcId) && @@ -2302,6 +2414,8 @@ void ConvertOcOriginDataToOcSigSwDev(UINT8 devId) { m_Switches[ind].BoardAddr[k] = pOcDevice->BoardAddr[k]; m_Switches[ind].BoardState[k] = pOcDevice->BoardState[k]; + + } /* */ m_Switches[ind].chSwitchIncldeZzjNum = pOcDevice->chSwitchIncldeZzjNum; @@ -2309,6 +2423,36 @@ void ConvertOcOriginDataToOcSigSwDev(UINT8 devId) { m_Switches[ind].szSwitchIncldeZzjState[k] = pOcDevice->szSwitchIncldeZzjState[k]; } + + for (k = 0U; k < MAX_OC_SWITCH_INCLUDE_BOARD_NUM; k++) + {/*OC״̬*/ + m_Switches[ind].MainStandbyState[k] = pOcDevice->MainStandbyState[k]; + } + + chSwitchszPlusBoxId = GetSwitchszPlusBoxId(m_Switches[ind].DeviceId, 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); + } + else + { + SetSwitchOcPlusBoxSateState(m_Switches[ind].DeviceId, m_Switches[ind].OcId, SWITCH_BOX_FAULT); + } + break; + } + } + + /*忨״̬*/ + 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]); + + } + } else { @@ -2352,6 +2496,10 @@ void ConvertOcOriginDataToOcSigSwDev(UINT8 devId) } + + + + } else { @@ -2867,6 +3015,38 @@ UINT8 OcInputSignalStateCheck(const UINT8 chInput) } return retVal; } +/* +* ѵѰ״̬תΪѰ +* ˵ +* +* UINT8 drvColorѰλ +* ֵ 0:תʧ +* 1:Ѱ +* add by mpt 20260330 +*/ +UINT16 ConvertSwitchFindPosToSwFindCmd(UINT8 chFindPos) +{ + UINT16 retDrvCmd = 0u; + switch (chFindPos) + { + case FIND_DINGWEI_CMD: + retDrvCmd = OC_SWITCH_FIND_DINGWEI; + break; + case FIND_FANWEI_CMD: + retDrvCmd = OC_SWITCH_FIND_FANWEI; + break; + case INIT_FIND_CMD: + retDrvCmd = OC_SWITCH_ININ_FIAND; + break; + case NO_FIND_CMD: + retDrvCmd = OC_SWITCH_DRIVE_POS_KEEP; + break; + default: + retDrvCmd = OC_SWITCH_DRIVE_POS_KEEP; + break; + } + return retDrvCmd; +} diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackOcData.h b/TSCP/src/APP/ciapp/ParsePack/ParsePackOcData.h index acf3995..08b273a 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackOcData.h +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackOcData.h @@ -55,7 +55,7 @@ #define MAX_OC_PLUS_BOX_NUM ((UINT16)3) /*һOCִ֧е䣨ɴֵ*/ #define MAX_OC_DEVICE_SWAP_MAX ((UINT16)83) /*һOCϵ忨(MAX_OC_DEVICE_NUM/2)ɴֵ */ #define MAX_OC_SWITCH_INCLUDE_ZZJ_NUM ((UINT16)10) /*һ֧ת޻ɴֵ*/ -#define MAX_OC_SWITCH_INCLUDE_BOARD_NUM ((UINT8)10) /*һ֧忨ɴֵ*/ + #define Max_OC_GD_NUM ((UINT16)252) /*һoc֧ٸΣɴֵ*/ #define MAX_OC_DEVICE_PSD_MAX ((UINT8)2) /*һOCɴֵ*/ @@ -95,6 +95,7 @@ typedef struct s_OcDevState UINT8 BoardNum; /*忨*/ UINT8 BoardAddr[MAX_OC_SWITCH_INCLUDE_BOARD_NUM]; /*忨ַ*/ UINT8 BoardState[MAX_OC_SWITCH_INCLUDE_BOARD_NUM]; /*忨״̬ 0x0000 󷢴*/ + UINT8 MainStandbyState[MAX_OC_SWITCH_INCLUDE_BOARD_NUM]; /*״̬*/ }OcDeviceStruct; typedef struct s_OcDoBoardData @@ -436,12 +437,10 @@ INT16 GetIndexBySignalId(UINT16 sigId); /* * ͨidȡ -* ˵ -* Id -* ֵ -* Int16:Id +* ˵ UINT16 swId ID,UINT8 ocId OCID +* ֵ */ -INT16 GetIndexBySwitchId(UINT16 swId); +INT16 GetIndexBySwitchId(UINT16 swId, UINT16 ocId); /* * ͨidȡ @@ -513,7 +512,16 @@ UINT8 OcInputStateCheck(const UINT8 chInput, const UINT8 chOtherValid); * ֵ CI_ERROR CI_SUCCESS */ UINT8 OcInputSignalStateCheck(const UINT8 chInput); - +/* +* ѵѰ״̬תΪѰ +* ˵ +* +* UINT8 drvColorѰλ +* ֵ 0:תʧ +* 1:Ѱ +* add by mpt 20260330 +*/ +UINT16 ConvertSwitchFindPosToSwFindCmd(UINT8 chFindPos); #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackVobcData.c b/TSCP/src/APP/ciapp/ParsePack/ParsePackVobcData.c index f9ab6b0..2b35454 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackVobcData.c +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackVobcData.c @@ -317,7 +317,7 @@ static UINT8 PassWashMachineRequestCheck(UINT8 Data); * CI_SUCCESS ɹ * by cgh 20230802 */ -static UINT8 PackCiToIvocReqAlignmentInfo(UINT8* pDataBuf, UINT16* wDataLength, UINT16 wTrnId); +static UINT8 PackCiToIvocReqAlignmentInfo(UINT8* pDataBuf, UINT16* wDataLength); /* * CiIvocϢ @@ -456,7 +456,110 @@ static UINT8 PackRcToIvocDataHLHTHeart(const UINT8 vobcId, const UINT16 logId); * -1 Ϊվ̨ESB */ static INT8 GetVobcSendPsdRelatESBId(const UINT16 psd1Id, const UINT16 psd2Id, UINT16* pEsbIdBuf); +/* +* һCI Id +* ˵ UINT8* CiToVobcDataBuffer Ϣbuffer +* UINT16* ii ƫ +* VobcToCiDataStruct* vobcToCiDataStru VOBC-CI +* ֵ +* Create lyj 20260314 +*/ +static void PackNextCiId(UINT8* CiToVobcDataBuffer, UINT16* ii, VobcToCiDataStruct* vobcToCiDataStru); +/* +* ƶȨϢ +* ˵ UINT8* CiToVobcDataBuffer Ϣbuffer +* UINT16* ii ƫ +* VobcToCiDataStruct* vobcToCiDataStru VOBC-CI +* ֵ ƶȨ +* Create lyj 20260314 +*/ +static UINT8 PackMoveAuthorityData(UINT8* CiToVobcDataBuffer, UINT16* ii, VobcToCiDataStruct* vobcToCiDataStru); +/* +* ȡ·Ϣ +* ˵UINT16* pPathTempBuf Ϣbuffer +* const UINT16 wTrainId гID +* ֵ 豸 +* Create lyj 20260314 +*/ +static UINT8 GetPathSwitchData(UINT16* pPathTempBuf, const UINT16 wTrainId); +/* +* ȡ·Ϣ +* ˵ UINT16* pPathTempBuf Ϣbuffer +* const UINT16 wTrainId гID +* ֵ 豸 +* Create lyj 20260314 +*/ +static UINT8 GetPathPsdData(UINT16* pPathTempBuf, const UINT16 wTrainId); +/* +* ȡ·ͣťϢ +* ˵ UINT16* pPathTempBuf Ϣbuffer +* const UINT16 wTrainId гID +* ֵ 豸 +* Create lyj 20260314 +*/ +static UINT8 GetPathEsbData(UINT16* pPathTempBuf,const UINT16 wTrainId); +/* +* ȡ·SPKSϢ +* ˵ UINT16* pPathTempBuf Ϣbuffer +* const UINT16 wTrainId гID +* ֵ 豸 +* Create lyj 20260316 +*/ +static UINT8 GetPathSpksData(UINT16* pPathTempBuf, const UINT16 wTrainId); +/* +* ȡ·Ϣ +* ˵ +* const UINT16 wTrainId гID +* ֵ 豸 +* Create lyj 20260316 +*/ +static UINT8 GetPathXianSuData(const UINT16 wTrainId); +/* +* ȡ·Ϣ +* ˵ UINT16* pPathTempBuf +* const UINT16 wTrainId гID +* ֵ 豸 +* Create lyj 20260316 +*/ +static UINT8 GetPathFloodGateData(UINT16* pPathTempBuf, const UINT16 wTrainId); +/* +* ȡ·Ŀĵ +* ˵ UINT8 chRouteNum,· +* UINT16* pRouteBuf· +* ֵ 豸 +* Create lyj 20260316 +*/ +static UINT8 GetDestinationType(UINT8 chRouteNum, UINT16* pRouteBuf); + +/* +* CiIvocͨŹRCĿ +* ˵ UINT8* dataBuf, ݻ +* UINT16 *dataLength, ݳ +* ֵCI_ERROR 0 ʧ +* CI_SUCCESS 1 ɹ +* by cgh 20260327 +*/ +static UINT8 PackCiToIvocComErrRcInfo(UINT8* pDataBuf, UINT16* wDataLength); + +/* +* 黥ͨRC->VOBC״̬ +* ˵ VobcToRcDataStruct * pstVobcToRcDataStru VobcRCϢṹ +* ֵ 0:ʧ +* 1:ݳɹ +* by cgh 20260328 +*/ +static UINT8 PackRcToVobcStateData(VobcToRcDataStruct* pstVobcToRcDataStru); + +/* +* RCVOBCARB״̬Ϣ +* ˵ UINT8* dataBuf, ݻ +* UINT16 *dataLength, ݳ +* ֵCI_ERROR 0 ʧ +* CI_SUCCESS 1 ɹ +* by cgh 20260328 +*/ +static UINT8 PackRcToVobcArbState(UINT8* pDataBuf, UINT16* wDataLength); /*ʹ*/ VobcToCiDataStruct VobcToCiDataStru[VOBC_TO_CI_SUM_MAX] = {0u};/*ͨŵVobcϢCIģʽ£洢510ϢRCģʽ£洢ϵͳIVOCϢ*/ @@ -622,7 +725,6 @@ UINT8 ParseVobcBackUpToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength UINT8 cmdType = 0U; /*ſϢ0x550xAA*/ UINT8 funRet = 0U; UINT8 galSaveTag = 0U; /*ͨͷ־*/ - UINT32 hlhtStationId = 0U; /*ȡͨվ̨ID*/ UINT32 transmitBadEnsureTime = 0U; /*ͨʧЧʱ*/ UINT16 TrainSignalId = 0U; UINT8 errorNum = 0U; @@ -1448,29 +1550,33 @@ static void CopyVobcToCiMsg(const VobcToCiDataStruct* srcMsg,VobcToCiDataStruct* */ static UINT8 ParseVobcToCiDataFrameHLHT(const UINT8* dataBuf, const UINT16 dataLength, const UINT8 systemId, VobcToCiDataStruct* vobcToCiDataStru, UINT8* saveGalHead,const UINT16 logId) { - UINT8 cmdType = 0u; /**/ - UINT8 trainStopSteadyState = 0u; /*гͣ״̬*/ - UINT8 psdSum = 0u; - UINT8 trainDirection = 0u; /*г*/ - UINT8 ii = 0u; /**/ - UINT8 jj = 0u; - UINT8 retVal = CI_SUCCESS; - UINT8 retValue = 0u; - UINT16 psdId = 0u; /*PSDID*/ - UINT16 appInfoType = 0u; /*ӦϢ*/ - UINT32 psdIdIntConnt = 0u; /*ͨPSDID*/ - UINT32 trackSectionId = 0u; /*ID*/ - UINT32 curntCycleNo = 0u; /*ǰں*/ - UINT16 vobcName = 0u; /*VOBC豸ƣ+ID*/ - UINT16 ciName = 0u; /*豸ƣ+ID*/ - UINT8 localCiId = GetSystemParaLocalCiId();/*ID*/ - UINT32 errCode = 0u; - HLHTGALInfoStruct hlhtGalHead = { 0u }; + UINT8 cmdType = 0U; /**/ + UINT8 trainStopSteadyState = 0U; /*гͣ״̬*/ + UINT8 psdSum = 0U; + UINT8 trainDirection = 0U; /*г*/ + UINT8 ii = 0U; /**/ + UINT8 jj = 0U; + UINT8 retVal = CI_ERROR; + UINT8 retValue = 0U; + UINT16 psdId = 0U; /*PSDID*/ + UINT16 appInfoType = 0U; /*ӦϢ*/ + UINT32 psdIdIntConnt = 0U; /*ͨPSDID*/ + UINT32 trackSectionId = 0U; /*ID*/ + UINT32 curntCycleNo = 0U; /*ǰں*/ + UINT16 vobcName = 0U; /*VOBC豸ƣ+ID*/ + UINT16 ciName = 0U; /*豸ƣ+ID*/ + UINT8 localCiId = GetSystemParaLocalCiId(); /*ID*/ + UINT32 errCode = 0U; + HLHTGALInfoStruct hlhtGalHead = { 0U }; INT32 vobcInfoRemainValidiy = 0; UINT8 headRet = HLHT_HEAD_ERROR;/*ͨ*/ UINT8 cTempPsdCmdCode = 0U; - UINT32 signalId = 0u; /*VOBC->CIźŻID*/ - UINT8 ci_vobcPrtclVersion = 0u; + UINT32 signalId = 0U; /*VOBC->CIźŻID*/ + UINT8 ci_vobcPrtclVersion = 0U; + UINT16 wTmpDataLen = 0U; /*ʱȼ¼*/ + UINT16 wMsgLen = 0U; /*Ӧݳ*/ + UINT32 dwCiAndVobcTransBadTime = 0U; /*ciVOBCͨжʱ*/ + UINT32 dwAppCycleTime = 0U; /*ci*/ ci_vobcPrtclVersion = GetVersionOfVOBCToCI(); vobcName = (CI_SYSTEM_TYPE_VOBC)*256U + systemId; @@ -1509,152 +1615,182 @@ static UINT8 ParseVobcToCiDataFrameHLHT(const UINT8* dataBuf, const UINT16 dataL if (HLHT_HEAD_SUCCESS==headRet) { /*ϢʱЧ*/ - vobcInfoRemainValidiy = HLHTCommonMsgRemainingValidity(GetCiAndVobcTransBadEnsureTime(), curntCycleNo, GetSystemParaAppCycleTime(), hlhtGalHead.recvOppMsgSN, hlhtGalHead.crntOwnMsgSN, hlhtGalHead.preOwnMsgSN, hlhtGalHead.comPeriod); + dwCiAndVobcTransBadTime = GetCiAndVobcTransBadEnsureTime(); + dwAppCycleTime = GetSystemParaAppCycleTime(); + vobcInfoRemainValidiy = HLHTCommonMsgRemainingValidity(dwCiAndVobcTransBadTime, curntCycleNo, dwAppCycleTime, hlhtGalHead.recvOppMsgSN, hlhtGalHead.crntOwnMsgSN, hlhtGalHead.preOwnMsgSN, hlhtGalHead.comPeriod); if (0 < vobcInfoRemainValidiy) { - /*Ӧ*/ - /*½յһϢʱıں*/ - ii += 2u;/*Ӧñij2ֽ*/ - - appInfoType = ShortFromChar(&dataBuf[ii]);/*ӦϢͣſϢ֡Ϣ*/ - ii += 2u; - vobcToCiDataStru->appInfoType = appInfoType; - vobcToCiDataStru->VobcId = systemId; - - vobcToCiDataStru->controlMode = TRAIN_MAIN_MODE;/*״̬ӿ*/ -#if 0 - vobcToCiDataStru->vobcInfoStartCycNum = Get2oo2CurCycleNum();/*CIյVOBC͵Ϣʼ*/ -#endif - - ii += 2u;/*Ԥֽ*/ - - if (VOBC_CI_INFO_TYPE_PSD_CONTROL == appInfoType) - {/*ֻеVOBCCIϢſƱʱżϢ*/ - vobcToCiDataStru->ComStartCycle = Get2oo2CurCycleNum(); - /*гзж*/ - trainDirection = dataBuf[ii]; - ii += 1u; - - if ((TRAIN_DIR_UP == trainDirection) || (TRAIN_DIR_DOWN == trainDirection) || (TRAIN_DIR_DEF == trainDirection)) + if (6U > hlhtGalHead.totalDataLen) + { + retVal = CI_ERROR; + } + else + { + while (wTmpDataLen < hlhtGalHead.totalDataLen) { - vobcToCiDataStru->trainDirection = trainDirection; - } - else - { - retVal = CI_ERROR; - } - - /*гͣͣ׼Ϣж*/ - if (CI_SUCCESS == retVal) - { - trainStopSteadyState = dataBuf[ii]; - ii += 1u; - - if ((VOBC_CI_STOP_TW == trainStopSteadyState) || (VOBC_CI_STOP_WTW == trainStopSteadyState)) - { - vobcToCiDataStru->trainStopSteadyState = trainStopSteadyState; - vobcToCiDataStru->stopSteadyStartCycNum = Get2oo2CurCycleNum();/*¼յͣȻδͣϢ*/ - } - else + /*Ӧ*/ + wMsgLen = ShortFromChar(&dataBuf[ii]);/*Ӧñij2ֽ*/ + ii += 2U; + if (4U > wMsgLen) { retVal = CI_ERROR; } - } - else - { - } - - trackSectionId = LongFromChar(&dataBuf[ii]);/*ȡID*/ - ii += 4u; - vobcToCiDataStru->trackSecID = trackSectionId; - - if (CI_SUCCESS == retVal) - { - vobcToCiDataStru->VobcId = systemId; /*VOBCID*/ - vobcToCiDataStru->psdCmdCode = dataBuf[ii++]; /*վ̨룬ÿӦCIҪһվ̨*/ - /*վ̨ȡϢĵ5λʾгʵʱ*/ - - /*ΪڹʱVOBCͳĬֵ,Ҫڿʱ泵ֵ*/ - cTempPsdCmdCode = 0x1Fu & vobcToCiDataStru->psdCmdCode; - if (0U != cTempPsdCmdCode) /*ȱYF0083-6822023-07-03*/ - { - vobcToCiDataStru->trainEditGroupInfo = cTempPsdCmdCode; - } else { - ;/**/ - } + retVal = CI_SUCCESS; + wTmpDataLen = wTmpDataLen + wMsgLen + 2U; + appInfoType = ShortFromChar(&dataBuf[ii]);/*ӦϢ*/ + ii += 2U; + + vobcToCiDataStru->VobcId = systemId; + vobcToCiDataStru->controlMode = TRAIN_MAIN_MODE;/*״̬ӿ*/ + ii += 2U;/*Ԥֽ*/ - psdSum = dataBuf[ii]; - ii += 1u; - - if ((2u == psdSum) || (1u == psdSum) || (0u == psdSum)) - {/*ӿڶ壺ȡֵΪ012*/ - vobcToCiDataStru->PsdSum = psdSum; /**/ - } - else - { - retVal = CI_ERROR; - } - } - else - { - } - - if (CI_SUCCESS == retVal) - { - for (jj = 0u; jj < 2u; jj++) - { - psdIdIntConnt = LongFromChar(&dataBuf[ii]);/*ȡͨ4ֽID*/ - ii += 4u; - vobcToCiDataStru->PsdData[jj].PsdIdInterConn = psdIdIntConnt; - - /*ݻͨ4ֽIDȡID*/ - retValue = dquQueryInDevIndex(QFUN_IDMAP_PSD_ID, psdIdIntConnt, &psdId); - - if (CI_SUCCESS == retValue) + switch (appInfoType) { - vobcToCiDataStru->PsdData[jj].PsdId = psdId; + case VOBC_CI_INFO_TYPE_PSD_CONTROL: /*ſ֡*/ + { + vobcToCiDataStru->appInfoType = appInfoType; + vobcToCiDataStru->ComStartCycle = Get2oo2CurCycleNum(); + /*гзж*/ + trainDirection = dataBuf[ii]; + ii += 1U; - cmdType = dataBuf[ii];/*ȡ*/ - ii += 1u; - if ((VOBCTOCI_COMMAND_TYPE_PSDOPEN == cmdType) || (VOBCTOCI_COMMAND_TYPE_PSDCLOSE == cmdType) || (VOBCTOCI_COMMAND_TYPE_PSDCHECK_FAOHLHT == cmdType)) /*ȱYF0083-6822023-07-03*/ + if ((TRAIN_DIR_UP == trainDirection) || (TRAIN_DIR_DOWN == trainDirection) || (TRAIN_DIR_DEF == trainDirection)) { - vobcToCiDataStru->PsdData[jj].CmdType = cmdType; - - vobcToCiDataStru->PsdData[jj].CmdStartCycNum = Get2oo2CurCycleNum(); + vobcToCiDataStru->trainDirection = trainDirection; } else { retVal = CI_ERROR; } + + /*гͣͣ׼Ϣж*/ + if (CI_SUCCESS == retVal) + { + trainStopSteadyState = dataBuf[ii]; + ii += 1U; + + if ((VOBC_CI_STOP_TW == trainStopSteadyState) || (VOBC_CI_STOP_WTW == trainStopSteadyState)) + { + vobcToCiDataStru->trainStopSteadyState = trainStopSteadyState; + vobcToCiDataStru->stopSteadyStartCycNum = Get2oo2CurCycleNum();/*¼յͣȻδͣϢ*/ + } + else + { + retVal = CI_ERROR; + } + } + else + { + } + + trackSectionId = LongFromChar(&dataBuf[ii]);/*ȡID*/ + ii += 4U; + vobcToCiDataStru->trackSecID = trackSectionId; + + if (CI_SUCCESS == retVal) + { + /*vobcToCiDataStru->VobcId = systemId; */ /*VOBCID*/ + vobcToCiDataStru->psdCmdCode = dataBuf[ii++]; /*վ̨룬ÿӦCIҪһվ̨*/ + /*վ̨ȡϢĵ5λʾгʵʱ*/ + + /*ΪڹʱVOBCͳĬֵ,Ҫڿʱ泵ֵ*/ + cTempPsdCmdCode = 0x1FU & vobcToCiDataStru->psdCmdCode; + if (0U != cTempPsdCmdCode) /*ȱYF0083-6822023-07-03*/ + { + vobcToCiDataStru->trainEditGroupInfo = cTempPsdCmdCode; + } + else + { + ;/**/ + } + + psdSum = dataBuf[ii]; + ii += 1U; + + if ((2U == psdSum) || (1U == psdSum) || (0U == psdSum)) + {/*ӿڶ壺ȡֵΪ012*/ + vobcToCiDataStru->PsdSum = psdSum; /**/ + } + else + { + retVal = CI_ERROR; + } + } + else + { + } + + if (CI_SUCCESS == retVal) + { + for (jj = 0U; jj < 2U; jj++) + { + psdIdIntConnt = LongFromChar(&dataBuf[ii]);/*ȡͨ4ֽID*/ + ii += 4U; + vobcToCiDataStru->PsdData[jj].PsdIdInterConn = psdIdIntConnt; + + /*ݻͨ4ֽIDȡID*/ + retValue = dquQueryInDevIndex(QFUN_IDMAP_PSD_ID, psdIdIntConnt, &psdId); + + if (CI_SUCCESS == retValue) + { + vobcToCiDataStru->PsdData[jj].PsdId = psdId; + + cmdType = dataBuf[ii];/*ȡ*/ + ii += 1U; + if ((VOBCTOCI_COMMAND_TYPE_PSDOPEN == cmdType) || (VOBCTOCI_COMMAND_TYPE_PSDCLOSE == cmdType) || (VOBCTOCI_COMMAND_TYPE_PSDCHECK_FAOHLHT == cmdType)) /*ȱYF0083-6822023-07-03*/ + { + vobcToCiDataStru->PsdData[jj].CmdType = cmdType; + + vobcToCiDataStru->PsdData[jj].CmdStartCycNum = Get2oo2CurCycleNum(); + } + else + { + retVal = CI_ERROR; + } + } + else + { + ii++; + } + } + + /*µĽӿڣźŻID1~0xFFFFFFFF,0ΪĬֵVOBCȫǰǰгзͬźŻ*/ + signalId = LongFromChar(&dataBuf[ii]); /*ȡźŻID*/ + ii += 4U; + + vobcToCiDataStru->signalID = signalId; /*źŻID浽ṹ*/ + + } + else + { + } + } - else + break; + case VOBC_CI_INFO_TYPE_HEART_FRAME: /*֡ע֡*/ + case VOBC_CI_INFO_TYPE_LOGOUT_ASK: { - ii++; + vobcToCiDataStru->appInfoType = appInfoType; + vobcToCiDataStru->ComStartCycle = Get2oo2CurCycleNum(); + } + break; + case VOBC_CI_INFO_TYPE_BLOCLINK: /*ʽϢ֡*/ + { + retVal = ParseVobcBlocLinkData(&dataBuf[ii], wMsgLen-4U, vobcToCiDataStru); + } + break; + default: + retVal = CI_ERROR; + debug_infor_printf((const)"\nVOBC: %d VOBC_CI_appInfoType_Error:%d\n", systemId, appInfoType); + break; } } - - /*µĽӿڣźŻID1~0xFFFFFFFF,0ΪĬֵVOBCȫǰǰгзͬźŻ*/ - signalId = LongFromChar(&dataBuf[ii]); /*ȡźŻID*/ - ii += 4u; - - vobcToCiDataStru->signalID = signalId; /*źŻID浽ṹ*/ - - } - else - { } } - else if ((VOBC_CI_INFO_TYPE_HEART_FRAME == appInfoType) || (VOBC_CI_INFO_TYPE_LOGOUT_ASK == appInfoType)) - {/*֡ע֡*/ - vobcToCiDataStru->ComStartCycle = Get2oo2CurCycleNum(); - } - else - { - retVal = CI_ERROR; - } + if (CI_SUCCESS == retVal) { @@ -1662,6 +1798,7 @@ static UINT8 ParseVobcToCiDataFrameHLHT(const UINT8* dataBuf, const UINT16 dataL if (ii > dataLength) { retVal = CI_ERROR; + debug_infor_printf((const)"\nVOBC: %d VOBC_CI_DataLength_Error:%d,%d\n", systemId, dataLength, ii); } else { @@ -1690,6 +1827,7 @@ static UINT8 ParseVobcToCiDataFrameHLHT(const UINT8* dataBuf, const UINT16 dataL else { retVal = CI_ERROR; + debug_infor_printf((const)"\nVOBC: %d RemainValidiy Check Error:%d ", systemId, vobcInfoRemainValidiy); } } else if (HLHT_HEAD_INIT ==headRet) @@ -1952,38 +2090,29 @@ static UINT8 ParseVobcToCiDataFrameFAO(const UINT8* dataBuf, const UINT16 dataLe */ static UINT8 PackCiToVobcDataHLHT(VobcToCiDataStruct *vobcToCiDataStru) { - UINT8 CiToVobcDataBuffer[VOBC_TO_CI_DATA_LEN_MAX] = {0u};/*CIVOBC֡*/ - UINT16 psdId = 0u; /*ID*/ - UINT32 psdIdInterConn = 0u; /*ͨ4ֽID*/ - UINT8 startSigColour = 0u; /*Źijվ·ʼźŻ*/ - UINT8 psdState = 0u; /*״̬*/ - UINT16 ii = 0u; - UINT8 kk = 0u; - UINT16 sigId = 0u; /*źŻID*/ - UINT8 rowIndex = 0u; - UINT8 colIndex = 0u; + UINT8 CiToVobcDataBuffer[VOBC_TO_CI_DATA_LEN_MAX] = {0U};/*CIVOBC֡*/ + UINT16 psdId = 0U; /*ID*/ + UINT32 psdIdInterConn = 0U; /*ͨ4ֽID*/ + UINT8 startSigColour = 0U; /*Źijվ·ʼźŻ*/ + UINT8 psdState = 0U; /*״̬*/ + UINT16 ii = 0U; + UINT8 kk = 0U; + UINT16 sigId = 0U; /*źŻID*/ UINT32 curCycleNum = Get2oo2CurCycleNum(); UINT32 appCycleTime = GetSystemParaAppCycleTime(); UINT8 retVal = CI_SUCCESS; UINT8 localCiId = GetSystemParaLocalCiId(); /*ID*/ - UINT32 ciEtcsId = 0u; - UINT32 vobcEtcsId = 0u; - UINT32 emapCheckVer = 0u; -#if 0 - UINT8 sigIdx = 0u;/*źŻ*/ - UINT8 sigDir = 0u;/*źŻӪ*/ - UINT16 trackIdRelatePhySecId = 0u;/*ιID*/ - UINT8 outStationSignalAllowOrNotUp = CI_VOBC_SIGNAL_DEFAULT; /*źŻֹ״̬*/ - UINT8 outStationSignalAllowOrNotDown = CI_VOBC_SIGNAL_DEFAULT; /*źŻֹ״̬*/ - UINT8 outStationSignalSum = 0u;/*վźŻĿ*/ -#endif - UINT8 ci_vobcPrtclVersion = 0u; - UINT8 mutualLockState = 0u; - UINT16 dstDevId = 0u; - UINT8 outnetSafeSendRtn = 0u; + UINT32 ciEtcsId = 0U; + UINT32 vobcEtcsId = 0U; + UINT32 emapCheckVer = 0U; + UINT8 ci_vobcPrtclVersion = 0U; + UINT8 mutualLockState = 0U; + UINT16 dstDevId = 0U; + UINT8 outnetSafeSendRtn = 0U; UINT8 chPsdBelongCiId = 0U; UINT8 outStationSignalAllowOrNot = CI_VOBC_SIGNAL_DEFAULT; /*źŻֹ״̬*/ - UINT32 signalIdInterConn = 0u; /*ͨ4ֽźŻID*/ + UINT32 signalIdInterConn = 0U; /*ͨ4ֽźŻID*/ + UINT16 wTempIndex = 0U; /*ʱ¼±*/ ci_vobcPrtclVersion = GetVersionOfVOBCToCI(); @@ -1999,45 +2128,45 @@ static UINT8 PackCiToVobcDataHLHT(VobcToCiDataStruct *vobcToCiDataStru) if (CI_SUCCESS == retVal) { - ii = 0u; + ii = 0U; /*ʼӦ֡*/ ShortToChar(CI_VOBC_INTERFACE_INFOTYPE, &CiToVobcDataBuffer[ii]);/*ӿϢ*/ - ii += 2u; + ii += 2U; LongToChar(ciEtcsId, &CiToVobcDataBuffer[ii]);/*ͷʶϢ*/ - ii += 4u; + ii += 4U; LongToChar(vobcEtcsId, &CiToVobcDataBuffer[ii]);/*շʶϢ*/ - ii += 4u; + ii += 4U; LongToChar(emapCheckVer, &CiToVobcDataBuffer[ii]);/*ӵͼ汾УϢ*/ - ii += 4u; + ii += 4U; LongToChar(curCycleNum, &CiToVobcDataBuffer[ii]);/*Ϣк*/ - ii += 4u; + ii += 4U; ShortToChar((UINT16)appCycleTime, &CiToVobcDataBuffer[ii]);/*豸ͨѶ*/ - ii += 2u; + ii += 2U; LongToChar(GetHLHTHeadCtxSrcCrntSN(CI_SYSTEM_TYPE_VOBC, (UINT8)(vobcToCiDataStru->VobcId)), &CiToVobcDataBuffer[ii]);/*ԷϢкţrecvOppMsgSN¼յԷһϢеĶԷϢк*/ - ii += 4u; + ii += 4U; LongToChar(GetHLHTHeadCtxCiRcvSN(CI_SYSTEM_TYPE_VOBC, (UINT8)(vobcToCiDataStru->VobcId)), &CiToVobcDataBuffer[ii]);/*յһϢʱк*/ - ii += 4u; + ii += 4U; CiToVobcDataBuffer[ii++] = ci_vobcPrtclVersion;/*CI_VOBCӿЭ汾*/ - ii += 2u;/*ͨñͷеӦò㱨ܳ*/ + ii += 2U;/*ͨñͷеӦò㱨ܳ*/ /*ΪӦò*/ - ii += 2u;/*ij*/ + ii += 2U;/*ij*/ - ii += 2u;/*Ӧñ*/ + ii += 2U;/*Ӧñ*/ - ii += 2u;/*Ԥֽ*/ + ii += 2U;/*Ԥֽ*/ if ((VOBC_CI_INFO_TYPE_PSD_CONTROL == vobcToCiDataStru->appInfoType) && (curCycleNum == vobcToCiDataStru->ComStartCycle)) {/*ֻеVOBC͵ϢſϢʱݣϢΪֻ֡ͱ֡ͷ31+6*/ LongToChar(vobcToCiDataStru->trackSecID,&CiToVobcDataBuffer[ii]);/*ظյĹID,CI-VOBCV2.9ӿĵ޸*/ - ii += 4u; + ii += 4U; CiToVobcDataBuffer[ii++] = vobcToCiDataStru->psdCmdCode; /*ظյ״̬*/ CiToVobcDataBuffer[ii++] = vobcToCiDataStru->PsdSum; /**/ - for (kk = 0u; kk < 2u; kk++) + for (kk = 0U; kk < 2U; kk++) { psdId = vobcToCiDataStru->PsdData[kk].PsdId; psdIdInterConn = vobcToCiDataStru->PsdData[kk].PsdIdInterConn; @@ -2056,7 +2185,7 @@ static UINT8 PackCiToVobcDataHLHT(VobcToCiDataStruct *vobcToCiDataStru) else {/*ڱ*/ LongToChar(psdIdInterConn, &CiToVobcDataBuffer[ii]); /*ID*/ - ii += 4u; + ii += 4U; mutualLockState = GetPsdMutualLockRemoveState(psdId); if ((PSD_MUTUALLOCK_REMOVE_YES == mutualLockState) || (PSD_ATS_MUTUALLOCK_REMOVE_YES == mutualLockState) || (PSD_ATS_AND_JD_MUTUALLOCK_REMOVE_YES == mutualLockState)) @@ -2089,7 +2218,7 @@ static UINT8 PackCiToVobcDataHLHT(VobcToCiDataStruct *vobcToCiDataStru) signalIdInterConn = vobcToCiDataStru->signalID; /*ͨ4ֽźŻID*/ /*ظյźŻID,CI-VOBCV3.0ӿĵ޸*/ LongToChar(signalIdInterConn,&CiToVobcDataBuffer[ii]); - ii += 4u; + ii += 4U; /*ݻͨ4ֽIDȡźŻID*/ retVal = dquQueryInDevIndex(QFUN_IDMAP_SIGNAL_ID, signalIdInterConn, &sigId); @@ -2152,32 +2281,72 @@ static UINT8 PackCiToVobcDataHLHT(VobcToCiDataStruct *vobcToCiDataStru) CiToVobcDataBuffer[ii++] = outStationSignalAllowOrNotUp; /*CI_VOBCгվźŻ״̬*/ CiToVobcDataBuffer[ii++] = outStationSignalAllowOrNotDown; /*CI_VOBCгվźŻ״̬*/ #endif - ShortToChar(CI_VOBC_INFO_TYPE_PSD_STATE,&CiToVobcDataBuffer[33]);/*ſƱֽͣ*/ + ShortToChar(CI_VOBC_INFO_TYPE_PSD_STATE,&CiToVobcDataBuffer[33U]);/*ſƱֽͣ*/ + + /*Ӧòݵıij */ + CiToVobcDataBuffer[31U] = (UINT8)(((ii - 33U) >> 8U) & 0xffU); + CiToVobcDataBuffer[32U] = (UINT8)((ii - 33U) & 0xffU); } else if ((VOBC_CI_INFO_TYPE_HEART_FRAME == vobcToCiDataStru->appInfoType) && (curCycleNum == vobcToCiDataStru->ComStartCycle)) {/*֡*/ - ShortToChar(CI_VOBC_INFO_TYPE_HEART_FRAME,&CiToVobcDataBuffer[33]);/*ֽ֡ͣ*/ + ShortToChar(CI_VOBC_INFO_TYPE_HEART_FRAME,&CiToVobcDataBuffer[33U]);/*ֽ֡ͣ*/ + + /*Ӧòݵıij */ + CiToVobcDataBuffer[31U] = (UINT8)(((ii - 33U) >> 8U) & 0xffU); + CiToVobcDataBuffer[32U] = (UINT8)((ii - 33U) & 0xffU); } else if ((VOBC_CI_INFO_TYPE_LOGOUT_ASK == vobcToCiDataStru->appInfoType) && (curCycleNum == vobcToCiDataStru->ComStartCycle)) {/*עظ֡*/ - ShortToChar(CI_VOBC_INFO_TYPE_LOGOUT_ACK,&CiToVobcDataBuffer[33]);/*עظֽ֡ͣ*/ + ShortToChar(CI_VOBC_INFO_TYPE_LOGOUT_ACK,&CiToVobcDataBuffer[33U]);/*עظֽ֡ͣ*/ + + /*Ӧòݵıij */ + CiToVobcDataBuffer[31U] = (UINT8)(((ii - 33U) >> 8U) & 0xffU); + CiToVobcDataBuffer[32U] = (UINT8)((ii - 33U) & 0xffU); } else { /*Ϣʹʲô*/ } + /*ʽϢ*/ + if (curCycleNum == vobcToCiDataStru->strBlocLinkData.chBlocLinkCycle) + { + /*-ڿԺſ֡ͬʱеʽ-*/ + if (0U == CiToVobcDataBuffer[33U]) + { + /*ûϢ֡Ԥ*/ + ShortToChar(CI_VOBC_INFO_TYPE_BLOCLINK, &CiToVobcDataBuffer[33U]); /*ֽͣ*/ + PackVobcBlocLinkData(CiToVobcDataBuffer, &ii, vobcToCiDataStru); /*ʽϢ*/ + /*Ӧòݵıij */ + CiToVobcDataBuffer[31U] = (UINT8)(((ii - 33U) >> 8U) & 0xffu); + CiToVobcDataBuffer[32U] = (UINT8)((ii - 33U) & 0xffU); + } + else + { + /*Ϣ֡*/ + wTempIndex = ii; /*Ԥijȣֽ*/ + ii += 2U; + ShortToChar(CI_VOBC_INFO_TYPE_BLOCLINK, &CiToVobcDataBuffer[ii]); /*ֽͣ*/ + ii += 2U; + ii += 2U; /*Ԥֽ*/ + PackVobcBlocLinkData(CiToVobcDataBuffer, &ii, vobcToCiDataStru); + /*ӦòϢ*/ + CiToVobcDataBuffer[wTempIndex] = (UINT8)(((ii - wTempIndex - 2U) >> 8U) & 0xffU); + CiToVobcDataBuffer[wTempIndex + 1U] = (UINT8)((ii - wTempIndex - 2U) & 0xffU); + } + } + else + { + /**/ + } + /*ͨñͷӦò㱨ܳ*/ - 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); - /*Ӧòݵıij */ - CiToVobcDataBuffer[31U] = (UINT8) (((ii - 33U) >> 8u) & 0xffu); - CiToVobcDataBuffer[32U] = (UINT8) ((ii - 33U) & 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ƽ̨ӡ*/ @@ -2631,18 +2800,9 @@ static UINT8 PackCiToVobcDataHLHTHeart(const UINT8 vobcId, const UINT16 logId) */ static UINT8 ParseVobcToCiDataFrameFAOHLHT(const UINT8* dataBuf, const UINT16 dataLength, const UINT8 systemId, VobcToCiDataStruct* vobcToCiDataStru, UINT8* saveGalHead,const UINT16 logId) { - UINT8 cmdType = 0u; /**/ - UINT8 trainStopSteadyState = 0u; /*гͣ״̬*/ - UINT8 psdSum = 0u; - UINT8 trainDirection = 0u; /*г*/ UINT16 ii = 0u; /**/ - UINT8 jj = 0u; UINT8 retVal = CI_SUCCESS; - UINT8 retValue = 0u; - UINT16 psdId = 0u; /*PSDID*/ UINT16 appInfoType = 0u; /*ӦϢ*/ - UINT32 psdIdIntConnt = 0u; /*ͨPSDID*/ - UINT32 trackSectionId = 0u; /*ID*/ UINT32 curntCycleNo = 0u; /*ǰں*/ UINT16 vobcName = 0u; /*VOBC豸ƣ+ID*/ UINT16 ciName = 0u; /*豸ƣ+ID*/ @@ -2651,12 +2811,6 @@ static UINT8 ParseVobcToCiDataFrameFAOHLHT(const UINT8* dataBuf, const UINT16 da HLHTGALInfoStruct hlhtGalHead = { 0u }; INT32 vobcInfoRemainValidiy = 0; UINT8 headRet = HLHT_HEAD_ERROR;/*ͨ*/ - UINT32 signalId = 0u; /*VOBC->CIźŻID*/ - UINT8 gapDetCmdType = 0u; /*϶̽*/ - UINT8 doorState = 0u; /*VOBC-CI״̬*/ - UINT8 cTempPsdCmdCode = 0U; - UINT8 chVideoQkState = 0U;/*Ƶ״̬*/ - UINT8 chVideoQkResult = 0U;/*Ƶͽ*/ UINT16 wMsgLen = 0U;/*һӦݳ*/ UINT16 wTmpDataLen = 0U;/*ʱȼ¼*/ UINT16 wMsgCheckLen = 0u; /* ڽУݳ */ @@ -2753,7 +2907,6 @@ static UINT8 ParseVobcToCiDataFrameFAOHLHT(const UINT8* dataBuf, const UINT16 da ; /**/ } vobcToCiDataStru->VobcId = systemId; - vobcToCiDataStru->controlMode = TRAIN_MAIN_MODE;/*״̬ӿ*/ ii += 2u;/*Ԥֽ*/ @@ -2917,7 +3070,6 @@ static UINT8 PackCiToVobcDataFAOHLHT(VobcToCiDataStruct *vobcToCiDataStru) UINT8 startSigColour = 0u; /*Źijվ·ʼźŻ*/ UINT8 psdState = 0u; /*״̬*/ UINT16 ii = 0u; - UINT16 jj = 0u; UINT8 kk = 0u; UINT16 sigId = 0u; /*źŻID*/ UINT32 curCycleNum = Get2oo2CurCycleNum(); @@ -3422,7 +3574,6 @@ static UINT8 ParseIvocToCiDataFrameCC(const UINT8* pDataBuf, const UINT16 dataLe UINT8 chEaNum = 0U; UINT8 chLogOutState = 0U; UINT32 dwCyc = 0u; - UINT8 chGroupState = 0u; UINT16 wGroupOtherTrainId = 0u; UINT8 chTrainMode = 0u; UINT8 chTrainHeadScreenConfirm = 0u; @@ -4962,8 +5113,6 @@ static UINT8 PackCiToIvocDataCC(VobcToCiDataStruct *pstVobcToCiDataStru) { UINT8 cszCiToIvocDataBuf[VOBC_TO_CI_DATA_LEN_MAX] = { 0u };/*CIVOBC֡*/ UINT16 ii = 0u; - UINT16 jj = 0u; - UINT8 kk = 0u; UINT32 curCycleNum = Get2oo2CurCycleNum(); UINT32 appCycleTime = GetSystemParaAppCycleTime(); UINT8 chRetVal = CI_ERROR; @@ -4998,7 +5147,7 @@ static UINT8 PackCiToIvocDataCC(VobcToCiDataStruct *pstVobcToCiDataStru) } else { - debug_infor_printf((const)"\nPack IVOC %d HLHT_id or EmapCheckVer error ciEmapCheckVer%d \n", pstVobcToCiDataStru->VobcId, ciEmapCheckVer); + debug_infor_printf((const)"\nPack IVOC HLHT_id or EmapCheckVer error ciEmapCheckVer%d \n", ciEmapCheckVer); chRetVal = CI_ERROR; } if (CI_SUCCESS == chRetVal) @@ -5181,7 +5330,7 @@ static UINT8 PackCiToIvocDataCC(VobcToCiDataStruct *pstVobcToCiDataStru) if (CI_SUCCESS == chRetVal) { - chRetVal = PackCiToIvocReqAlignmentInfo(cszCiToIvocDataBuf, &ii, pstVobcToCiDataStru->VobcId); + chRetVal = PackCiToIvocReqAlignmentInfo(cszCiToIvocDataBuf, &ii); } else { @@ -5293,7 +5442,18 @@ static UINT8 PackCiToIvocDataCC(VobcToCiDataStruct *pstVobcToCiDataStru) else { /**/ - debug_infor_printf((const)"\n VOBC: %d PackCiToIvocJumpBackReply Error \n", pstVobcToCiDataStru->VobcId); + debug_infor_printf((const)"\n IVOC: %d PackCiToIvocJumpBackReply Error \n", pstVobcToCiDataStru->VobcId); + } + + /*IVOCͨŹϵRCϢ*/ + if (CI_SUCCESS == chRetVal) + { + chRetVal = PackCiToIvocComErrRcInfo(cszCiToIvocDataBuf, &ii); + } + else + { + /**/ + debug_infor_printf((const)"\n IVOC: %d PackCiToIvocOpenRouteNotNearInfo Error \n", pstVobcToCiDataStru->VobcId); } if (CI_SUCCESS == chRetVal) @@ -5303,7 +5463,7 @@ static UINT8 PackCiToIvocDataCC(VobcToCiDataStruct *pstVobcToCiDataStru) else { /**/ - debug_infor_printf((const)"\n IVOC: %d PackCiToIvocOpenRouteNotNearInfo Error \n", pstVobcToCiDataStru->VobcId); + debug_infor_printf((const)"\n IVOC: %d PackCiToIvocComErrRcInfo Error \n", pstVobcToCiDataStru->VobcId); } /*Ԥ10ֽ*/ @@ -5384,7 +5544,7 @@ static UINT8 PackCiToIvocDataCC(VobcToCiDataStruct *pstVobcToCiDataStru) { /*дгɹ*/ #ifdef LOGPRINT/*־ӡ*/ #ifdef PLATFORM_2OO2/*2oo2ƽ̨ӡ*/ - debug_infor_printf((const)"\VOBC_PBTACS_SEND:%d", ii); + debug_infor_printf((const)"\nVOBC_PBTACS_SEND:%d", ii); debug_out_array(0xAA, cszCiToIvocDataBuf, ii); #endif/*ƽ̨ӡ*/ #endif @@ -5420,7 +5580,6 @@ static UINT8 PackCiToIvocBackUpDataCC(VobcBackUpToCiDataStruct *pstVobcBackUpToC { UINT8 cszCiToIvocDataBuf[VOBC_TO_CI_DATA_LEN_MAX] = { 0u };/*CIVOBC֡*/ UINT16 ii = 0u; - UINT8 psdIndex = 0U; /*PSD*/ UINT32 curCycleNum = Get2oo2CurCycleNum(); UINT32 appCycleTime = GetSystemParaAppCycleTime(); UINT8 chRetVal = CI_ERROR; @@ -5434,8 +5593,6 @@ static UINT8 PackCiToIvocBackUpDataCC(VobcBackUpToCiDataStruct *pstVobcBackUpToC UINT16 wAppInfoIndex = 0U; UINT16 dstDevId = 0u; UINT8 outnetSafeSendRtn = 0u; - UINT8 chFunRtn = CI_ERROR; - UINT8 chSwState = 0u; /*ȻȡʱϢȡɹбҪ*/ if (NULL != pstVobcBackUpToCiDataStru) @@ -5455,7 +5612,7 @@ static UINT8 PackCiToIvocBackUpDataCC(VobcBackUpToCiDataStruct *pstVobcBackUpToC } else { - debug_infor_printf((const)"\nPack vobc %d data check error", pstVobcBackUpToCiDataStru->VobcId); + debug_infor_printf((const)"\nPack vobc data check error"); chRetVal = CI_ERROR; } @@ -6591,7 +6748,6 @@ static UINT8 PackCiToIvocFloodGateInfo(UINT8* pDataBuf, UINT16 *wDataLength, UI UINT8 chRetVal = CI_ERROR; UINT8 chRet = CI_ERROR; UINT8 floodOpenState = 0U; /*Ϣ*/ - UINT8 floodCloseReq = 0U; /*Ϣ*/ UINT8 floodCloseReqTempSta = 0U; if ((NULL == pDataBuf) @@ -7094,11 +7250,8 @@ static UINT8 PackCiToIvocFaultTrainInfo(UINT8* pDataBuf, UINT16 *wDataLength) UINT32 dwTmpOff = 0U; UINT16 wOrgnLinkId = 0u; UINT32 dwOrgnOffset = 0u; - UINT8 chTrainDir = 0U; UINT16 ii = 0U; UINT8 chRetVal = CI_ERROR; - UINT8 chHeadScreStat = 0u; /*гǰɸ־*/ - UINT8 chTailScreStat = 0u; /*гɸ־*/ UINT16 szEnvelopeIdBuf[ENVELOPE_SUM_MAX] = { 0u }; UINT16 wEnvelopeSum = 0u; UINT16 wEnvelopeIndex = 0u; @@ -7408,15 +7561,7 @@ static UINT8 PackCiToIvocSleepTrainInfo(UINT8* pDataBuf, UINT16 *wDataLength) */ static UINT8 PackCiToIvocTsrInfo(UINT8* pDataBuf, UINT16 *wDataLength) { - UINT8 chPhyFlockStat = 0U; /*¼״̬*/ - UINT16 wTsrId = 0U; /*ID*/ - UINT16 wTsrIndex = 0U; UINT8 cTsrSum = 0U; - UINT16 wTmpLinkId = 0U; - UINT32 dwTmpOff = 0U; - UINT16 wTsrSpeed = 0U; - UINT16 wTsrSecSum = 0U; - UINT8 chTsrCommStat = 0U; UINT16 ii = 0U; UINT8 chRetVal = CI_ERROR; UINT8 jj = 0u; @@ -7654,7 +7799,6 @@ static UINT8 PackCiToIvocLgcSgmtInfo(UINT8* pDataBuf, UINT16 *wDataLength,UINT1 UINT16 wLogicSecSum = 0U; UINT16 wLogicSecSendIndex = 0U; UINT16 wLogicSecSendSum = 0U; - UINT16 wRouteId = 0U; UINT16 wPLockRouteId = 0U; UINT16 wRLockRouteId = 0U; UINT16 wRouteLockOverlapId = 0U; @@ -7674,7 +7818,6 @@ static UINT8 PackCiToIvocLgcSgmtInfo(UINT8* pDataBuf, UINT16 *wDataLength,UINT1 UINT16 wLogSecRLockRouteId = 0U;/*߼·*/ UINT8 chRouteType = 0U;/*·*/ UINT16 wRouteLastPhy = 0U;/*·һ*/ - UINT8 chSendFlag = 0U; UINT16 wMinTailPointBelongLogSecId = 0U; struct_PathPoint strTrainMinTail = { 0u }; @@ -8085,7 +8228,6 @@ static UINT8 PackCiToIvocLgcSgmtInfo(UINT8* pDataBuf, UINT16 *wDataLength,UINT1 */ static UINT8 PackCiToIvocReqAndReplyInfo(UINT8* pDataBuf, UINT16 *wDataLength,UINT16 wTrnId) { - UINT8 chPhyFlockStat = 0U; /*¼״̬*/ UINT16 wRouteId = 0U; /*ID*/ UINT16 wRouteBelongCiId = 0U; /*ID*/ UINT16 wCiId = 0U; /*ID*/ @@ -8517,8 +8659,6 @@ UINT8 PackCiToVobcDataFAOHLHToneSelf(VobcToCiDataStruct* vobcToCiDataStru) UINT16 ii = 0; UINT8 kk = 0; UINT16 sigId = 0; /*źŻID*/ - UINT8 rowIndex = 0; - UINT8 colIndex = 0; UINT32 curCycleNum = Get2oo2CurCycleNum(); UINT32 appCycleTime = GetSystemParaAppCycleTime(); UINT8 retVal = CI_SUCCESS; @@ -8530,7 +8670,6 @@ UINT8 PackCiToVobcDataFAOHLHToneSelf(VobcToCiDataStruct* vobcToCiDataStru) UINT32 signalIdInterConn = 0u; /*ͨ4ֽźŻID*/ UINT16 washMachineCurSum = GetWashMachineSum(); /*ȡǰϴ*/ UINT16 washMachineId = 0u; - UINT8 psdValidFlag[2] = { 0,0 }; /*0Ч1Ч*/ UINT8 psdReopenButtState = 0u; /*վ̨ٴοŰť״̬*/ UINT8 platDepartButtState = 0u; /*վ̨ť״̬*/ UINT8 psdCloseButtState = 0u; /*״̬*/ @@ -8559,12 +8698,10 @@ UINT8 PackCiToVobcDataFAOHLHToneSelf(VobcToCiDataStruct* vobcToCiDataStru) UINT8 chWashWorkModeBack = WASH_WORKMODE_BACK_DEFAULT;/*ϴģʽ÷*/ UINT16 wTempSendIndex = 0U;/*ʱ*/ UINT8 chTempCheckFlag = CI_ERROR; - UINT16 esbId = 0; UINT8 chEsbState = 0u; UINT16 pEsbIdBuf[PSD_INCOUDE_ESB_NUM] = { 0U }; INT8 chEsbNum = -1; UINT32 dwEsbhlhtId = 0u; - UINT8 chRetVal = 0U; UINT8 chJXTCMutualLockFaultState = 0U; UINT32 dwJXTCMutualLockFaultTime = 0U; UINT16 wPsdObtacleRelayId = 0U; @@ -9162,8 +9299,6 @@ UINT8 PackCiToVobcDataFAOHLHToneSelfSecond(VobcToCiDataStruct* vobcToCiDataStru) UINT16 ii = 0U; UINT8 kk = 0U; UINT16 sigId = 0U; /*źŻID*/ - UINT8 rowIndex = 0U; - UINT8 colIndex = 0U; UINT32 curCycleNum = Get2oo2CurCycleNum(); UINT32 appCycleTime = GetSystemParaAppCycleTime(); UINT8 retVal = CI_SUCCESS; @@ -9173,12 +9308,10 @@ UINT8 PackCiToVobcDataFAOHLHToneSelfSecond(VobcToCiDataStruct* vobcToCiDataStru) UINT32 emapCheckVer = 0u; UINT8 outStationSignalAllowOrNot = CI_VOBC_SIGNAL_DEFAULT; /*źŻֹ״̬*/ UINT32 signalIdInterConn = 0u; /*ͨ4ֽźŻID*/ - UINT8 psdValidFlag[2U] = { 0U,0U }; /*0Ч1Ч*/ UINT8 mutualLockState = 0u; /*״̬*/ UINT8 localhlhtId = 0u; UINT8 vobcHlhtId = 0u; UINT8 ciEmapCheckVer = 0u; - UINT8 flag = 0u; /*ͰťºPDB״̬Ĭֵ*/ UINT8 chPsdBelongCiId = 0U; UINT16 wTempSendIndex = 0U; UINT8 chTempCheckFlag = CI_ERROR; @@ -9659,7 +9792,7 @@ static UINT8 PassWashMachineRequestCheck(UINT8 Data) * CI_SUCCESS ɹ * by cgh 20230802 */ -static UINT8 PackCiToIvocReqAlignmentInfo(UINT8* pDataBuf, UINT16* wDataLength, UINT16 wTrnId) +static UINT8 PackCiToIvocReqAlignmentInfo(UINT8* pDataBuf, UINT16* wDataLength) { UINT16 ii = 0U; UINT8 jj = 0U; @@ -10844,7 +10977,7 @@ static UINT8 PackCiToIvocBackUpTsrInfo(UINT8* pDataBuf, UINT16* wDataLength,UINT if ((0U < chPhySecRelAxisSecSum) && (NULL != szPhySecRelAxisId)) { - wTempAxisSum = GetAllAxisFromAxisSeqSafeSw(szPhySecRelAxisId, (UINT16)chPhySecRelAxisSecSum, &szAxisIdBuf); + wTempAxisSum = GetAllAxisFromAxisSeqSafeSw(szPhySecRelAxisId, (UINT16)chPhySecRelAxisSecSum, szAxisIdBuf); if (0U == wTempAxisSum) { @@ -11403,6 +11536,8 @@ UINT8 ParseFAOHLHTOtherTypeData(const UINT16 appInfoType, UINT8* dataBuf, UINT16 { chRetVal = CI_SUCCESS; + vobcToCiDataStru->controlMode = TRAIN_MAIN_MODE;/*״̬ӿ*/ + if (VOBC_CI_INFO_TYPE_PSD_CONTROL == appInfoType) { /*ֻеVOBCCIϢſƱʱżϢ*/ /*гзж*/ @@ -13315,10 +13450,10 @@ UINT8 PackRcToVobcData(void) UINT8 initVobcSum = 0u; UINT8 cFuncRet = CI_ERROR; - debug_infor_printf((const)"\PackRcToVobcData VobcToRcSum = %d\n", VobcToRcSum); /*ӡRCͨŵVOBCĿ*/ + debug_infor_printf((const)"\nPackRcToVobcData VobcToRcSum = %d\n", VobcToRcSum); /*ӡRCͨŵVOBCĿ*/ for (ii = 0u; (ii < (UINT32)VobcToRcSum) && (ii < VOBC_TO_CI_SUM_MAX); ii++) { - retVal = PackRcToVobcDataHLHTHeart((UINT8)VobcToRcDataStru[ii].VobcId, VobcToRcDataStru[ii].vobcLogId); + retVal = PackRcToVobcStateData(&(VobcToRcDataStru[ii])); } @@ -13328,6 +13463,8 @@ UINT8 PackRcToVobcData(void) for (ii = 0u; ii < initVobcSum; ii++) { retVal &= PackRcToVobcDataHLHTHeart(initVobcIds[ii], initVobcIdLogIds[ii]); + debug_infor_printf((const)"\nPACK HEARTFARME TO VOBC %d", initVobcIds[ii]); /*ӡϢ*/ + } } else @@ -13889,4 +14026,2077 @@ UINT8 PackCiToIvocOpenRouteNotNearInfo(UINT8* pDataBuf, UINT16* wDataLength, UIN return chRetVal; -} \ No newline at end of file +} + +/* +* VOBCʽ +* ˵ UINT8* CiToVobcDataBuffer Ϣbuffer +* UINT16* ii ƫ +* VobcToCiDataStruct *vobcToCiDataStru VOBC-CI +* ֵ +* Create lyj 20260314 +*/ +void PackVobcBlocLinkData(UINT8* CiToVobcDataBuffer, UINT16* ii, VobcToCiDataStruct* vobcToCiDataStru) +{ + UINT16 wIndex = 0U; + UINT16* pRouteBuf = NULL; + UINT8 chRouteNum = 0U; + UINT8 chRet = CI_ERROR; + UINT16 wSwitchBuffer[CI_VOBC_SWITCH_MAX] = { 0U }; /*CIVOBC*/ + UINT8 chTempNum = 0U; + UINT16 wTempBuffer[CI_VOBC_OTHER_EQUIPMENT_MAX] = { 0U }; /*CIVOBC豸*/ + UINT8 chTempState = 0U; + UINT8 k = 0U; + UINT32 dwTempHLHTId = 0U; + UINT8 chEsbPLState = 0U; + wIndex = *ii; + if ((NULL != CiToVobcDataBuffer) && (NULL != ii) && (NULL != vobcToCiDataStru)) + { + /*жǷƥ䵽·δƥ䵽·Ӧ*/ + 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)) + { + /*1 һCIͨ*/ + PackNextCiId(CiToVobcDataBuffer, &wIndex,vobcToCiDataStru); + + /*2 ƶȨϢ*/ + chRet = PackMoveAuthorityData(CiToVobcDataBuffer, &wIndex,vobcToCiDataStru); + if (CI_SUCCESS == chRet) + { + /*3 ·Ϣ*/ + chTempNum = GetPathSwitchData(wSwitchBuffer, vobcToCiDataStru->VobcId); + ShortToChar(chTempNum, &CiToVobcDataBuffer[wIndex]); /**/ + wIndex += 2U; + for (k = 0U; k < chTempNum; k++) + { + chRet = dquQueryOutDevId(QFUN_IDMAP_SWITCH_ID, wSwitchBuffer[k], &dwTempHLHTId); + if (CI_SUCCESS == chRet) + { + LongToChar(dwTempHLHTId, &CiToVobcDataBuffer[wIndex]); /*ID*/ + wIndex += 4U; + chTempState = GetSwitchCurPosition(wSwitchBuffer[k]); /*״̬D*/ + if (SWITCH_POSITION_DINGWEI == chTempState) + { + CiToVobcDataBuffer[wIndex++] = CI_IVOC_SWITCH_POSTION_DING; + } + else if (SWITCH_POSITION_FANWEI == chTempState) + { + CiToVobcDataBuffer[wIndex++] = CI_IVOC_SWITCH_POSTION_FAN; + } + else + { + CiToVobcDataBuffer[wIndex++] = CI_IVOC_SWITCH_POSTION_SHIBIAO; /*ʧ*/ + } + } + else + { + LongToChar(0U, &CiToVobcDataBuffer[wIndex]); /*Чֵ*/ + wIndex += 4U; + CiToVobcDataBuffer[wIndex++] = CI_IVOC_SWITCH_POSTION_SHIBIAO; + } + } + + /*4 ·PSDϢ*/ + chTempNum = GetPathPsdData(wTempBuffer, vobcToCiDataStru->VobcId); + ShortToChar(chTempNum, &CiToVobcDataBuffer[wIndex]); /**/ + wIndex += 2U; + for (k = 0U; k < chTempNum; k++) + { + chRet = dquQueryOutDevId(QFUN_IDMAP_PSD_ID, wTempBuffer[k], &dwTempHLHTId); + if (CI_SUCCESS == chRet) + { + LongToChar(dwTempHLHTId, &CiToVobcDataBuffer[wIndex]); /*ID*/ + wIndex += 4U; + CiToVobcDataBuffer[wIndex++] = GetPsdStateToVobc(wTempBuffer[k]); /*״̬D*/ + } + else + { + LongToChar(0U, &CiToVobcDataBuffer[wIndex]); /*Чֵ*/ + wIndex += 4U; + CiToVobcDataBuffer[wIndex++] = CI_IVOC_PSD_STATE_OPEN; + } + } + + /*5 ·ESBϢ*/ + chTempNum = GetPathEsbData(wTempBuffer, vobcToCiDataStru->VobcId); + ShortToChar(chTempNum, &CiToVobcDataBuffer[wIndex]); /**/ + wIndex += 2U; + for (k = 0U; k < chTempNum; k++) + { + chRet = dquQueryOutDevId(QFUN_IDMAP_EMERGBTN_ID, wTempBuffer[k], &dwTempHLHTId); + if (CI_SUCCESS == chRet) + { + LongToChar(dwTempHLHTId, &CiToVobcDataBuffer[wIndex]); /*ID*/ + wIndex += 4U; + chTempState = GetEsbState(wTempBuffer[k]); + chEsbPLState = GetEsbCutState(wTempBuffer[k]); + if ((ESB_STATE_VALID_NO == chTempState) || (ESB_CUT_YES == chEsbPLState)) + { + CiToVobcDataBuffer[wIndex++] = CI_IVOC_ESB_STATE_INVALID; /*״̬*/ + } + else + { + CiToVobcDataBuffer[wIndex++] = CI_IVOC_ESB_STATE_VALID; + } + + } + else + { + LongToChar(0U, &CiToVobcDataBuffer[wIndex]); /*Чֵ*/ + wIndex += 4U; + CiToVobcDataBuffer[wIndex++] = CI_IVOC_ESB_STATE_VALID; + } + } + + /*6 ·SPKSϢ*/ + chTempNum = GetPathSpksData(wTempBuffer,vobcToCiDataStru->VobcId); + ShortToChar(chTempNum, &CiToVobcDataBuffer[wIndex]); /**/ + 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; + } + } + + /*7 ·ʱϢ*/ + CiToVobcDataBuffer[wIndex++] = GetPathXianSuData(vobcToCiDataStru->VobcId); + + /*8 ·Ϣ*/ + chTempNum = GetPathFloodGateData(wTempBuffer,vobcToCiDataStru->VobcId); + CiToVobcDataBuffer[wIndex++] = chTempNum; /**/ + for (k = 0U; k < chTempNum; k++) + { + ShortToChar(wTempBuffer[k], &CiToVobcDataBuffer[wIndex]); /*ID*/ + wIndex += 2U; + chTempState = GetFloodGateCurLogicCloseState(wTempBuffer[k]); + if (FLOOD_GATE_OPEN == chTempState) + { + CiToVobcDataBuffer[wIndex++] = CI_VOBC_FLOOD_STATE_OPEN; + } + else + { + CiToVobcDataBuffer[wIndex++] = CI_VOBC_FLOOD_STATE_CLOSE; + } + } + + /*9 ·Ŀĵ*/ + CiToVobcDataBuffer[wIndex++] = GetDestinationType(chRouteNum,pRouteBuf); + + /*10 Ԥ10ֽ*/ + wIndex += 10U; + + *ii = wIndex; /**/ + } + else + { + debug_infor_printf((const)"\nVOBC %d BlocLink MoveAuthority Error\n", VobcToCiDataStru->VobcId); + /*ƶȨϢʧܣ;һ*/ + (void)CommonMemSet((void*)&CiToVobcDataBuffer[*ii], (UINT32)(VOBC_TO_CI_DATA_LEN_MAX - *ii), 0U, (UINT32)(wIndex - *ii)); + } + + } + else + { + debug_infor_printf((const)"\nVOBC %d BlocLink NoRoute\n", VobcToCiDataStru->VobcId); + /**/ + } + } + else + { + /**/ + } +} +/* +* VOBCʽ +* ˵ const UINT8* dataBuf, ݻ +* const UINT16 dataLength, ݳ +* VobcToCiDataStruct* vobcToCiDataStru VOBCCIṹ +* ֵ +* Create lyj 20260314 +*/ +UINT8 ParseVobcBlocLinkData(const UINT8* dataBuf, const UINT16 dataLength, VobcToCiDataStruct* vobcToCiDataStru) +{ + UINT8 chRetVal = CI_ERROR; + UINT8 chTempCheck = 0U; + UINT8 ii = 0U; + UINT32 dwLinkHLHTId = 0U; + UINT16 wLinkId = 0U; + UINT32 dwLinkOff = 0U; + if ((NULL != dataBuf) && (NULL != vobcToCiDataStru)) + { + chRetVal = CI_SUCCESS; + /*ڵʽϢ֡ԵҲԺſ֡һ𷢣Բ¼֡*/ + vobcToCiDataStru->ComStartCycle = Get2oo2CurCycleNum(); /*ж*/ + + chTempCheck = dataBuf[ii++]; /*гпƼ*/ + if ((VOBC_CI_BLOCLINK_BLOCK_CTRL == chTempCheck) || (VOBC_CI_BLOCLINK_CI_CTRL == chTempCheck) || (VOBC_CI_BLOCLINK_CI_DEFAULT == chTempCheck)) + { + vobcToCiDataStru->strBlocLinkData.chBlocLinkTrainLevel = chTempCheck; + } + else + { + debug_infor_printf((const)"\nVOBC %d ParseVobcBlocLinkData ERR:chBlocLinkTrainLevel:%d", vobcToCiDataStru->VobcId, chTempCheck); + chRetVal = CI_ERROR; + } + + chTempCheck = dataBuf[ii++]; /*з*/ + if ((TRAIN_DIR_UP == chTempCheck) || (TRAIN_DIR_DOWN == chTempCheck) || (TRAIN_DIR_DEF == chTempCheck)) + { + vobcToCiDataStru->strBlocLinkData.chTrainDirection = chTempCheck; + } + else + { + debug_infor_printf((const)"\nVOBC %d ParseVobcBlocLinkData ERR:chTrainDirection:%d", vobcToCiDataStru->VobcId, chTempCheck); + chRetVal = CI_ERROR; + } + /*¼λ*/ + if (CI_SUCCESS == chRetVal) + { + dwLinkHLHTId = LongFromChar(&dataBuf[ii]); /*гȫǰLink*/ + ii += 4U; + chTempCheck = dquQueryInDevIndex(QFUN_IDMAP_TRACKSEC_ID, dwLinkHLHTId, &wLinkId); + if (CI_SUCCESS == chTempCheck) + { + vobcToCiDataStru->strBlocLinkData.wTrainMaxSafeHeadLink = wLinkId; + debug_infor_printf((const)"\nwTrainMaxSafeHeadLink:%d\n", wLinkId); + } + else + { + chRetVal = CI_ERROR; + debug_infor_printf((const)"\nVOBC %d ParseVobcBlocLinkData ERR:wTrainMaxSafeHeadLink:%d", vobcToCiDataStru->VobcId, dwLinkHLHTId); + } + dwLinkOff = LongFromChar(&dataBuf[ii]); /*гȫǰƫ*/ + ii += 4U; + if (UINT32_MAX != dwLinkOff) + { + vobcToCiDataStru->strBlocLinkData.dwTrainMaxSafeHeadOffset = dwLinkOff; + } + else + { + chRetVal = CI_ERROR; + debug_infor_printf((const)"\nVOBC %d ParseVobcBlocLinkData ERR:dwTrainMaxSafeHeadOffset:%d", vobcToCiDataStru->VobcId, dwLinkOff); + } + + dwLinkHLHTId = LongFromChar(&dataBuf[ii]); /*гСȫLink*/ + ii += 4U; + chTempCheck = dquQueryInDevIndex(QFUN_IDMAP_TRACKSEC_ID, dwLinkHLHTId, &wLinkId); + if (CI_SUCCESS == chTempCheck) + { + vobcToCiDataStru->strBlocLinkData.wTrainMinSafeTailLink = wLinkId; + debug_infor_printf((const)"\nwTrainMinSafeTailLink:%d\n", wLinkId); + } + else + { + chRetVal = CI_ERROR; + debug_infor_printf((const)"\nVOBC %d ParseVobcBlocLinkData ERR:wTrainMinSafeTailLink:%d", vobcToCiDataStru->VobcId, dwLinkHLHTId); + } + dwLinkOff = LongFromChar(&dataBuf[ii]);/*гСȫƫ*/ + if (UINT32_MAX != dwLinkOff) + { + vobcToCiDataStru->strBlocLinkData.dwTrainMinSafeTailOffset = dwLinkOff; + } + else + { + chRetVal = CI_ERROR; + debug_infor_printf((const)"\nVOBC %d ParseVobcBlocLinkData ERR:dwTrainMinSafeTailOffset:%d", vobcToCiDataStru->VobcId, dwLinkOff); + } + if (ii > dataLength) + { + chRetVal = CI_ERROR; + } + else + { + /**/ + } + } + else + { + /**/ + } + if (CI_SUCCESS == chRetVal) + { + vobcToCiDataStru->strBlocLinkData.chBlocLinkCycle = Get2oo2CurCycleNum(); /*бǷ͵ʽϢ*/ + } + else + { + /**/ + } + } + else + { + /**/ + } + return chRetVal; + +} + +/* +* һCI Id +* ˵ UINT8* CiToVobcDataBuffer Ϣbuffer +* UINT16* ii ƫ +* VobcToCiDataStruct* vobcToCiDataStru VOBC-CI +* ֵ +* Create lyj 20260314 +*/ +static void PackNextCiId(UINT8* CiToVobcDataBuffer, UINT16* ii, VobcToCiDataStruct* vobcToCiDataStru) +{ + UINT16 wEndSigId = 0U; + UINT8 chSigBelongCiId = 0U; + UINT8 chlocalCiId = 0U; + UINT16 wIndex = 0U; + UINT8 chRet = CI_ERROR; + UINT32 dwCiHLHTId = 0U; + struct_PathPoint start = { 0U }; /*г߼*/ + struct_PathPoint end = { 0U }; /*г߼յ*/ + UINT16 wStartLogSecId = 0U; + UINT16 wEndLogSecId = 0U; + UINT16 wStartRouteId = 0U; /*߼·*/ + UINT16 wEndRouteId = 0U; + UINT16* pRouteBuf = NULL; + UINT8 chRouteNum = 0U; + + if ((NULL != CiToVobcDataBuffer) && (NULL != ii) && (NULL != vobcToCiDataStru)) + { + wIndex = *ii; + chlocalCiId = GetSystemParaLocalCiId(); + chRouteNum = GetBlocLinkRouteNum(vobcToCiDataStru->VobcId); + pRouteBuf = GetBlocLinkRouteBuf(vobcToCiDataStru->VobcId); + if ((NULL != pRouteBuf) && (0U < chRouteNum)) + { + wEndSigId = GetRouteEndSignalId(pRouteBuf[chRouteNum - 1U]); + chSigBelongCiId = GetSignalBelongCiId(wEndSigId); + + /*ͷλ*/ + end.wLinkId = GetAblTrainMaxHeadLink(vobcToCiDataStru->VobcId); + end.dwOffset = GetAblTrainMaxHeadOffset(vobcToCiDataStru->VobcId); + /*βλ*/ + start.wLinkId = GetAblTrainMinTailLink(vobcToCiDataStru->VobcId); + start.dwOffset = GetAblTrainMinTailOffset(vobcToCiDataStru->VobcId); + + /*ȡ·*/ + wStartLogSecId = GetPointBelongLogSec(start); + wEndLogSecId = GetPointBelongLogSec(end); + wStartRouteId = GetLogSecLockBelongRoute(wStartLogSecId); + wEndRouteId = GetLogSecLockBelongRoute(wEndLogSecId); + /*ƥһ·նźŻDZҳβͷڽ·һ·һCIΪնźŻCI*/ + if ((chlocalCiId != chSigBelongCiId) && ((wStartRouteId == pRouteBuf[chRouteNum - 1U]) || (wEndRouteId == pRouteBuf[chRouteNum - 1U]))) + { + chRet = dquQueryOutDevId(QFUN_IDMAP_CI_ID, (UINT16)chSigBelongCiId, &dwCiHLHTId); + if (CI_SUCCESS == chRet) + { + LongToChar(dwCiHLHTId, &CiToVobcDataBuffer[wIndex]); + wIndex += 4U; + } + else + { + LongToChar(0U, &CiToVobcDataBuffer[wIndex]); /*Ĭֵ*/ + wIndex += 4U; + } + } + else + { + LongToChar(0U, &CiToVobcDataBuffer[wIndex]); /*Ĭֵ*/ + wIndex += 4U; + } + *ii = wIndex; /**/ + } + else + { + /**/ + } + + } + else + { + /**/ + } +} +/* +* ƶȨϢ +* ˵ UINT8* CiToVobcDataBuffer Ϣbuffer +* UINT16* ii ƫ +* VobcToCiDataStruct* vobcToCiDataStru VOBC-CI +* ֵ ƶȨ +* Create lyj 20260314 +*/ +static UINT8 PackMoveAuthorityData(UINT8* CiToVobcDataBuffer, UINT16* ii, VobcToCiDataStruct* vobcToCiDataStru) +{ + UINT16 wIndex = 0U; + UINT16 wOverLapId = 0U; + UINT16 wEndSigId = 0U; + UINT8 chSigProtectDir = 0U; + UINT8 chOverlapLogSum = 0U; + UINT16* pOverlapLogBuf = NULL; + UINT16 wLinkId = 0U; + UINT8 chFlag = 0U; + UINT32 dwLinkHLHTId = 0U; + UINT32 dwlinkLength = 0U; + UINT8 chRet = CI_ERROR; + UINT16* pRouteBuf = NULL; + UINT8 chRouteNum = 0U; + + if ((NULL != CiToVobcDataBuffer) && (NULL != ii) && (NULL != vobcToCiDataStru)) + { + wIndex = *ii; + CiToVobcDataBuffer[wIndex++] = vobcToCiDataStru->strBlocLinkData.chTrainDirection; /*ƶȨ*/ + 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); + + 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; /**/ + } + else + { + /**/ + } + } + else + { + chRet = CI_ERROR; + } + } + else + { + /**/ + } + + return chRet; +} +/* +* ȡ·Ϣ +* ˵ UINT16* pPathTempBuf Ϣbuffer +* const UINT16 wTrainId гID +* ֵ 豸 +* Create lyj 20260314 +*/ +static UINT8 GetPathSwitchData(UINT16* pPathTempBuf, const UINT16 wTrainId) +{ + UINT8 chTempNum = 0U; + UINT8 chRet = CI_ERROR; + UINT8 chLogSecNum = 0U; + UINT16* pLogSecBuf = NULL; + UINT16* pRouteBuf = NULL; + UINT8 chRouteNum = 0U; + UINT8 chLogsecSwitchSum = 0U; + LogsecSwitchStruct* pLogsecSwitchBuf = NULL; + UINT8 j = 0U; + UINT8 k = 0U; + UINT16 chRouteLogSecNum = 0U; + UINT16* pRouteLogSecBuf = NULL; + UINT16 m = 0U; + UINT8 chCheckFlag = 0U; + UINT16 wOverlapId = 0U; + UINT8 chOverLapSwitchSum = 0U; + OverlapConditionSwitchStruct* pOverLapSwitch = NULL; + if (NULL != pPathTempBuf) + { + /*鳵ºͳͷ·ĵ*/ + chLogSecNum = GetBlocLinkLogSecNum(wTrainId); + pLogSecBuf = GetBlocLinkLogSecBuf(wTrainId); + if (NULL != pLogSecBuf) + { + for (j = 0U;j < chLogSecNum;j++) + { + chLogsecSwitchSum = GetLogicSecSwitchSum(pLogSecBuf[j]); /*߼ΰ*/ + pLogsecSwitchBuf = GetLogicSecSwitchIdStru(pLogSecBuf[j]); + if (NULL != pLogsecSwitchBuf) + { + if (CI_VOBC_SWITCH_MAX > (chLogsecSwitchSum + chTempNum)) + { + for (k = 0U; k < chLogsecSwitchSum; k++) + { + chCheckFlag = CheckRepeatData(pLogsecSwitchBuf[k].SwitchId, pPathTempBuf, chTempNum);/*ȥ*/ + if (CI_SUCCESS == chCheckFlag) + { + pPathTempBuf[chTempNum] = pLogsecSwitchBuf[k].SwitchId; + chTempNum++; + } + else + { + /**/ + } + } + } + else + { + break; + } + } + else + { + /**/ + } + + } + } + else + { + /**/ + } + + /*ƥ·ĵ*/ + chRouteNum = GetBlocLinkRouteNum(wTrainId); + pRouteBuf = GetBlocLinkRouteBuf(wTrainId); + if (CI_VOBC_SWITCH_MAX > chTempNum) + { + chRet = CI_SUCCESS; + if (NULL != pRouteBuf) + { + /*ƥĵ2·ʼ*/ + for (j = 1U; j < chRouteNum; j++) + { + chRouteLogSecNum = GetRouteLogSectionSum(pRouteBuf[j]); + pRouteLogSecBuf = GetRouteLogSectionIdBuf(pRouteBuf[j]); + if (NULL != pRouteLogSecBuf) + { + for (m = 0U;m < chRouteLogSecNum;m++) + { + chLogsecSwitchSum = GetLogicSecSwitchSum(pRouteLogSecBuf[m]); + pLogsecSwitchBuf = GetLogicSecSwitchIdStru(pRouteLogSecBuf[m]); + if (NULL != pLogsecSwitchBuf) + { + if (CI_VOBC_SWITCH_MAX > (chLogsecSwitchSum + chTempNum)) + { + for (k = 0U; k < chLogsecSwitchSum; k++) + { + chCheckFlag = CheckRepeatData(pLogsecSwitchBuf[k].SwitchId, pPathTempBuf, chTempNum);/*ȥ*/ + if (CI_SUCCESS == chCheckFlag) + { + pPathTempBuf[chTempNum] = pLogsecSwitchBuf[k].SwitchId; + chTempNum++; + } + else + { + /**/ + } + } + } + else + { + chRet = CI_ERROR; + break; + } + } + else + { + chRet = CI_ERROR; + break; + } + } + if (CI_ERROR == chRet) + { + break; + } + else + { + /**/ + } + + } + else + { + break; + } + + + } + } + else + { + /**/ + } + + } + else + { + /**/ + } + /*һ·ε*/ + if (CI_VOBC_SWITCH_MAX > chTempNum) + { + if ((NULL != pRouteBuf) && (0U < chRouteNum)) + { + wOverlapId = GetRouteOverlapLockedId(pRouteBuf[chRouteNum-1U]); + if ((0U < wOverlapId) && (OVERLAP_SUM_MAX > wOverlapId)) + { + chOverLapSwitchSum = GetOverlapSwitchSum(wOverlapId); + pOverLapSwitch = GetOverlapCondSwitchStruct(wOverlapId); + if (NULL != pOverLapSwitch) + { + if (CI_VOBC_SWITCH_MAX > (chTempNum + chOverLapSwitchSum)) + { + for (k = 0U; k < chOverLapSwitchSum; k++) + { + chCheckFlag = CheckRepeatData(pOverLapSwitch[k].SwitchId, pPathTempBuf, chTempNum);/*ȥ*/ + if (CI_SUCCESS == chCheckFlag) + { + pPathTempBuf[chTempNum] = pOverLapSwitch[k].SwitchId; + chTempNum++; + } + else + { + /**/ + } + } + + } + else + { + /**/ + } + } + else + { + /**/ + } + } + else + { + /**/ + } + + } + } + } + else + { + /**/ + } + + return chTempNum; +} + +/* +* ȡ·Ϣ +* ˵ UINT16* pPathTempBuf Ϣbuffer +* const UINT16 wTrainId гID +* ֵ 豸 +* Create lyj 20260314 +*/ + +static UINT8 GetPathPsdData(UINT16* pPathTempBuf,const UINT16 wTrainId) +{ + UINT8 chTempNum = 0U; + UINT8 chRet = CI_ERROR; + UINT8 chLogSecNum = 0U; + UINT16* pLogSecBuf = NULL; + UINT16* pRouteBuf = NULL; + UINT8 chRouteNum = 0U; + UINT8 chLogsecPsdSum = 0U; + UINT16 wLogsecPsdId = 0U; + UINT8 j = 0U; + UINT8 k = 0U; + UINT16 wRouteLogSecNum = 0U; + UINT16* pRouteLogSecBuf = NULL; + UINT16 m = 0U; + UINT8 chCheckFlag = 0U; + UINT16 wOverlapId = 0U; + UINT8 chOverLapLogSecNum = 0U; + UINT16* pOverLapLogSecBuf = NULL; + if (NULL != pPathTempBuf) + { + /*鳵ºͳͷ·PSD*/ + chLogSecNum = GetBlocLinkLogSecNum(wTrainId); + pLogSecBuf = GetBlocLinkLogSecBuf(wTrainId); + if (NULL != pLogSecBuf) + { + for (j = 0U; j < chLogSecNum; j++) + { + chLogsecPsdSum = GetLogSecPsdSum(pLogSecBuf[j]); + if (CI_VOBC_OTHER_EQUIPMENT_MAX > (chTempNum + chLogsecPsdSum)) + { + for (k = 0U; k < chLogsecPsdSum; k++) + { + wLogsecPsdId = GetLogSecPsdByIdx(pLogSecBuf[j], k); + chCheckFlag = CheckRepeatData(wLogsecPsdId, pPathTempBuf, chTempNum); /*ȥ*/ + if (CI_SUCCESS == chCheckFlag) + { + pPathTempBuf[chTempNum] = wLogsecPsdId; + chTempNum++; + } + else + { + /**/ + } + } + } + else + { + break; + } + } + } + else + { + /**/ + } + /*ƥ·PSD*/ + chRouteNum = GetBlocLinkRouteNum(wTrainId); + pRouteBuf = GetBlocLinkRouteBuf(wTrainId); + if (CI_VOBC_OTHER_EQUIPMENT_MAX > chTempNum) + { + chRet = CI_SUCCESS; + + if (NULL != pRouteBuf) + { + for (j = 1U; j < chRouteNum; j++) + { + wRouteLogSecNum = GetRouteLogSectionSum(pRouteBuf[j]); + pRouteLogSecBuf = GetRouteLogSectionIdBuf(pRouteBuf[j]); + if (NULL != pRouteLogSecBuf) + { + for (m = 0U; m < wRouteLogSecNum; m++) + { + chLogsecPsdSum = GetLogSecPsdSum(pRouteLogSecBuf[m]); + if (CI_VOBC_OTHER_EQUIPMENT_MAX > (chTempNum + chLogsecPsdSum)) + { + for (k = 0U; k < chLogsecPsdSum; k++) + { + wLogsecPsdId = GetLogSecPsdByIdx(pRouteLogSecBuf[m], k); + chCheckFlag = CheckRepeatData(wLogsecPsdId, pPathTempBuf, chTempNum); /*ȥ*/ + if (CI_SUCCESS == chCheckFlag) + { + pPathTempBuf[chTempNum] = wLogsecPsdId; + chTempNum++; + } + else + { + /**/ + } + + } + } + else + { + chRet = CI_ERROR; + break; + } + } + if (CI_ERROR == chRet) + { + break; + } + else + { + /**/ + } + } + else + { + break; + } + } + } + else + { + /**/ + } + } + /*һ·PSD*/ + if (CI_VOBC_OTHER_EQUIPMENT_MAX > chTempNum) + { + if ((NULL != pRouteBuf) && (0U < chRouteNum)) + { + wOverlapId = GetRouteOverlapLockedId(pRouteBuf[chRouteNum - 1U]); + if ((0U < wOverlapId) && (OVERLAP_SUM_MAX > wOverlapId)) + { + chOverLapLogSecNum = GetOverlapLogicSectionSum(wOverlapId); + pOverLapLogSecBuf = GetOverlapLogicSectionBuf(wOverlapId); + if (NULL != pOverLapLogSecBuf) + { + for (j = 0U; j < chOverLapLogSecNum; j++) + { + chLogsecPsdSum = GetLogSecPsdSum(pOverLapLogSecBuf[j]); + if (CI_VOBC_OTHER_EQUIPMENT_MAX > (chTempNum + chLogsecPsdSum)) + { + for (k = 0U; k < chLogsecPsdSum; k++) + { + wLogsecPsdId = GetLogSecPsdByIdx(pOverLapLogSecBuf[j], k); + chCheckFlag = CheckRepeatData(wLogsecPsdId, pPathTempBuf, chTempNum); /*ȥ*/ + if (CI_SUCCESS == chCheckFlag) + { + pPathTempBuf[chTempNum] = wLogsecPsdId; + chTempNum++; + } + else + { + /**/ + } + } + } + else + { + break; + } + } + } + else + { + /**/ + } + } + else + { + /**/ + } + } + } + else + { + /**/ + } + } + else + { + /**/ + } + + return chTempNum; +} + +/* +* ȡ·ͣťϢ +* ˵ UINT16* pPathTempBuf Ϣbuffer +* const UINT16 wTrainId гID +* ֵ 豸 +* Create lyj 20260314 +*/ + +static UINT8 GetPathEsbData(UINT16* pPathTempBuf,const UINT16 wTrainId) +{ + UINT8 chTempNum = 0U; + UINT8 chRet = CI_ERROR; + UINT8 chLogSecNum = 0U; + UINT16* pLogSecBuf = NULL; + UINT16* pRouteBuf = NULL; + UINT8 chRouteNum = 0U; + UINT8 chLogsecEsbSum = 0U; + UINT16 wLogsecEsbId = 0U; + UINT8 j = 0U; + UINT8 k = 0U; + UINT16 wRouteLogSecNum = 0U; + UINT16* pRouteLogSecBuf = NULL; + UINT16 m = 0U; + UINT8 chCheckFlag = 0U; + UINT16 wOverlapId = 0U; + UINT8 chOverLapLogSecNum = 0U; + UINT16* pOverLapLogSecBuf = NULL; + + if (NULL != pPathTempBuf) + { + /*鳵ºͳͷ·ESB*/ + chLogSecNum = GetBlocLinkLogSecNum(wTrainId); + pLogSecBuf = GetBlocLinkLogSecBuf(wTrainId); + if (NULL != pLogSecBuf) + { + for (j = 0U; j < chLogSecNum; j++) + { + chLogsecEsbSum = GetLogSecEsbSum(pLogSecBuf[j]); + if (CI_VOBC_OTHER_EQUIPMENT_MAX > (chLogsecEsbSum + chTempNum)) + { + for (k = 0U; k < chLogsecEsbSum; k++) + { + wLogsecEsbId = GetLogSecEsbByIdx(pLogSecBuf[j], k); + chCheckFlag = CheckRepeatData(wLogsecEsbId, pPathTempBuf, chTempNum); /*ȥ*/ + if (CI_SUCCESS == chCheckFlag) + { + pPathTempBuf[chTempNum] = wLogsecEsbId; + chTempNum++; + } + else + { + /**/ + } + } + } + else + { + break; + } + } + } + else + { + /**/ + } + /*ƥ·PSD*/ + chRouteNum = GetBlocLinkRouteNum(wTrainId); + pRouteBuf = GetBlocLinkRouteBuf(wTrainId); + if (CI_VOBC_OTHER_EQUIPMENT_MAX > chTempNum) + { + chRet = CI_SUCCESS; + if (NULL != pRouteBuf) + { + for (j = 1U; j < chRouteNum; j++) + { + wRouteLogSecNum = GetRouteLogSectionSum(pRouteBuf[j]); + pRouteLogSecBuf = GetRouteLogSectionIdBuf(pRouteBuf[j]); + if (NULL != pRouteLogSecBuf) + { + for (m = 0U; m < wRouteLogSecNum; m++) + { + chLogsecEsbSum = GetLogSecEsbSum(pRouteLogSecBuf[m]); + if (CI_VOBC_OTHER_EQUIPMENT_MAX > (chLogsecEsbSum + chTempNum)) + { + for (k = 0U; k < chLogsecEsbSum; k++) + { + wLogsecEsbId = GetLogSecEsbByIdx(pRouteLogSecBuf[m], k); + chCheckFlag = CheckRepeatData(wLogsecEsbId, pPathTempBuf, chTempNum); /*ȥ*/ + if (CI_SUCCESS == chCheckFlag) + { + pPathTempBuf[chTempNum] = wLogsecEsbId; + chTempNum++; + } + else + { + /**/ + } + + } + } + else + { + chRet = CI_ERROR; + break; + } + } + if (CI_ERROR == chRet) + { + break; + } + else + { + /**/ + } + } + else + { + chRet = CI_ERROR; + break; + } + } + } + else + { + /**/ + } + } + else + { + /**/ + } + /*һ·PSD*/ + if (CI_VOBC_OTHER_EQUIPMENT_MAX > chTempNum) + { + if ((NULL != pRouteBuf) && (0U < chRouteNum)) + { + wOverlapId = GetRouteOverlapLockedId(pRouteBuf[chRouteNum - 1U]); + if ((0U < wOverlapId) && (OVERLAP_SUM_MAX > wOverlapId)) + { + chOverLapLogSecNum = GetOverlapLogicSectionSum(wOverlapId); + pOverLapLogSecBuf = GetOverlapLogicSectionBuf(wOverlapId); + if (NULL != pOverLapLogSecBuf) + { + for (j = 0U; j < chOverLapLogSecNum; j++) + { + chLogsecEsbSum = GetLogSecEsbSum(pOverLapLogSecBuf[j]); + if (CI_VOBC_OTHER_EQUIPMENT_MAX > (chLogsecEsbSum + chTempNum)) + { + for (k = 0U; k < chLogsecEsbSum; k++) + { + wLogsecEsbId = GetLogSecEsbByIdx(pOverLapLogSecBuf[j], k); + chCheckFlag = CheckRepeatData(wLogsecEsbId, pPathTempBuf, chTempNum); /*ȥ*/ + if (CI_SUCCESS == chCheckFlag) + { + pPathTempBuf[chTempNum] = wLogsecEsbId; + chTempNum++; + } + else + { + /**/ + } + + } + } + else + { + break; + } + } + } + else + { + /**/ + } + } + else + { + /**/ + } + } + else + { + /**/ + } + } + else + { + /**/ + } + } + else + { + /**/ + } + + return chTempNum; +} + +/* +* ȡ·SPKSϢ +* ˵ UINT16* pPathTempBuf Ϣbuffer +* const UINT16 wTrainId гID +* ֵ 豸 +* Create lyj 20260316 +*/ +static UINT8 GetPathSpksData(UINT16* pPathTempBuf, const UINT16 wTrainId) +{ + UINT8 chTempNum = 0U; + UINT8 chLogSecNum = 0U; + UINT16* pLogSecBuf = NULL; + UINT16 wLogBelongPhyId = 0U; + UINT8 j = 0U; + UINT8 chSpksNum = 0U; + UINT8 k = 0U; + UINT16 wTempSpksId = 0U; + UINT8 chCheckFlag = 0U; + UINT16* pRouteBuf = NULL; + UINT8 chRouteNum = 0U; + UINT8 chRoutePhySum = 0U; + UINT8 m = 0U; + UINT8 chSpksState = 0U; + UINT8 chSpksPLState = 0U; + UINT8 chRet = 0U; + RoutePhysicalSectionStruct* pRoutePhyBuf = NULL; + UINT16 wOverlapId = 0U; + UINT8 chOverLapPhyNum = 0U; + UINT16* pOverLapPhyBuf = NULL; + if (NULL != pPathTempBuf) + { + /*鳵ºͳͷ·SPKSǷ񼤻*/ + chLogSecNum = GetBlocLinkLogSecNum(wTrainId); + pLogSecBuf = GetBlocLinkLogSecBuf(wTrainId); + if (NULL != pLogSecBuf) + { + for (j = 0U;j< chLogSecNum;j++) + { + wLogBelongPhyId = GetLgcSecRelativePhySecId(pLogSecBuf[j]); + chSpksNum = GetPhySecSpksSum(wLogBelongPhyId); + if (CI_VOBC_OTHER_EQUIPMENT_MAX > (chTempNum + chSpksNum)) + { + for (k = 0U; k < chSpksNum;k++) + { + wTempSpksId = GetPhySecSpksIdBySpksIdx(wLogBelongPhyId,k); + chSpksState = GetSpksState(wTempSpksId); /*SPKS*/ + chSpksPLState = GetSpksCutState(wTempSpksId); + chCheckFlag = CheckRepeatData(wTempSpksId, pPathTempBuf, chTempNum); /*ȥ*/ + if ((CI_SUCCESS == chCheckFlag) && (SPKS_STATUS_YES == chSpksState) && (SPKS_CUT_NO == chSpksPLState)) + { + pPathTempBuf[chTempNum] = wTempSpksId; + chTempNum++; + } + else + { + /**/ + } + } + } + else + { + break; + } + + } + + } + else + { + /**/ + } + /*ƥ·SPKS*/ + chRouteNum = GetBlocLinkRouteNum(wTrainId); + pRouteBuf = GetBlocLinkRouteBuf(wTrainId); + if (CI_VOBC_OTHER_EQUIPMENT_MAX > chTempNum) + { + chRet = CI_SUCCESS; + + if (NULL != pRouteBuf) + { + for (j = 1U; j < chRouteNum; j++) + { + chRoutePhySum = GetRoutePhysicalSectionSum(pRouteBuf[j]); + pRoutePhyBuf = GetRouteSectionData(pRouteBuf[j]); + if (NULL != pRoutePhyBuf) + { + for (m =0U;m < chRoutePhySum;m++) + { + chSpksNum = GetPhySecSpksSum(pRoutePhyBuf[m].PhysicalSectionId); + if (CI_VOBC_OTHER_EQUIPMENT_MAX > (chTempNum + chSpksNum)) + { + for (k = 0U; k < chSpksNum; k++) + { + wTempSpksId = GetPhySecSpksIdBySpksIdx(pRoutePhyBuf[m].PhysicalSectionId, k); + chSpksState = GetSpksState(wTempSpksId); /*SPKS*/ + chSpksPLState = GetSpksCutState(wTempSpksId); + chCheckFlag = CheckRepeatData(wTempSpksId, pPathTempBuf, chTempNum); /*ȥ*/ + if ((CI_SUCCESS == chCheckFlag) && (SPKS_STATUS_YES == chSpksState) && (SPKS_STATUS_NO == chSpksPLState)) + { + pPathTempBuf[chTempNum] = wTempSpksId; + chTempNum++; + } + else + { + /**/ + } + } + } + else + { + chRet = CI_ERROR; + break; + } + } + if (CI_ERROR == chRet) + { + break; + } + else + { + /**/ + } + + } + else + { + break; + } + } + } + else + { + /**/ + } + + } + else + { + /**/ + } + + /*һ·εSPKS*/ + if (CI_VOBC_OTHER_EQUIPMENT_MAX > chTempNum) + { + if ((NULL != pRouteBuf) && (0U < chRouteNum)) + { + wOverlapId = GetRouteOverlapLockedId(pRouteBuf[chRouteNum - 1U]); + if ((0U < wOverlapId) && (OVERLAP_SUM_MAX > wOverlapId)) + { + chOverLapPhyNum = GetOverlapPhySecSum(wOverlapId); + pOverLapPhyBuf = GetOverlapPhySecIdBuf(wOverlapId); + if (NULL != pOverLapPhyBuf) + { + for (j = 0U;j < chOverLapPhyNum;j++) + { + chSpksNum = GetPhySecSpksSum(pOverLapPhyBuf[j]); + if (CI_VOBC_OTHER_EQUIPMENT_MAX > (chTempNum + chSpksNum)) + { + for (k = 0U; k < chSpksNum; k++) + { + wTempSpksId = GetPhySecSpksIdBySpksIdx(pOverLapPhyBuf[j], k); + chSpksState = GetSpksState(wTempSpksId); /*SPKS*/ + chSpksPLState = GetSpksCutState(wTempSpksId); + chCheckFlag = CheckRepeatData(wTempSpksId, pPathTempBuf, chTempNum); /*ȥ*/ + if ((CI_SUCCESS == chCheckFlag) && (SPKS_STATUS_YES == chSpksState) && (SPKS_CUT_NO == chSpksPLState)) + { + pPathTempBuf[chTempNum] = wTempSpksId; + chTempNum++; + } + else + { + /**/ + } + } + } + else + { + break; + } + } + } + else + { + /**/ + } + } + else + { + /**/ + } + } + else + { + /**/ + } + } + else + { + /**/ + } + } + else + { + /**/ + } + return chTempNum; +} +/* +* ȡ·Ϣ +* ˵ +* const UINT16 wTrainId гID +* ֵ ״̬ +* Create lyj 20260316 +*/ +static UINT8 GetPathXianSuData(const UINT16 wTrainId) +{ + UINT8 chRet = CI_VOBC_XIANSU_YES; + UINT8 chLogSecNum = 0U; + UINT16* pLogSecBuf = NULL; + UINT8 chXianSuState = 0U; + UINT8 j = 0U; + UINT16* pRouteBuf = NULL; + UINT8 chRouteNum = 0U; + UINT16 chRouteLogSecNum = 0U; + UINT16* pRouteLogSecBuf = NULL; + UINT16 m = 0U; + UINT16 wOverlapId = 0U; + UINT8 chOverLapLogSecNum = 0U; + UINT16* pOverLapLogSecBuf = NULL; + /*鳵ºͳͷ·Ƿ*/ + chLogSecNum = GetBlocLinkLogSecNum(wTrainId); + pLogSecBuf = GetBlocLinkLogSecBuf(wTrainId); + if (NULL != pLogSecBuf) + { + for (j = 0U;j < chLogSecNum;j++) + { + chXianSuState = GetLogSecLinShiXianSuSetState(pLogSecBuf[j]); + if ((LOGSEC_LSXS_SET_STATE_NO == chXianSuState) || (LOGSEC_LSXS_SET_STATE_INVALID == chXianSuState)) + { + chRet = CI_VOBC_XIANSU_NOT; + } + else + { + chRet = CI_VOBC_XIANSU_YES; + break; + } + } + + } + else + { + chRet = CI_VOBC_XIANSU_YES; + } + /*ƥ·Ƿ*/ + chRouteNum = GetBlocLinkRouteNum(wTrainId); + pRouteBuf = GetBlocLinkRouteBuf(wTrainId); + if (CI_VOBC_XIANSU_NOT == chRet) + { + if (NULL != pRouteBuf) + { + for (j = 1U; j < chRouteNum; j++) + { + chRouteLogSecNum = GetRouteLogSectionSum(pRouteBuf[j]); + pRouteLogSecBuf = GetRouteLogSectionIdBuf(pRouteBuf[j]); + if (NULL != pRouteLogSecBuf) + { + for (m = 0U; m < chRouteLogSecNum; m++) + { + chXianSuState = GetLogSecLinShiXianSuSetState(pRouteLogSecBuf[m]); + if ((LOGSEC_LSXS_SET_STATE_NO == chXianSuState) || (LOGSEC_LSXS_SET_STATE_INVALID == chXianSuState)) + { + /**/ + } + else + { + chRet = CI_VOBC_XIANSU_YES; + break; + } + } + if (CI_VOBC_XIANSU_YES == chRet) + { + break; + } + else + { + /**/ + } + } + else + { + chRet = CI_VOBC_XIANSU_YES; + } + } + } + else + { + chRet = CI_VOBC_XIANSU_YES; + } + } + else + { + /**/ + } + /*һ·ıǷ*/ + if (CI_VOBC_XIANSU_NOT == chRet) + { + if ((NULL != pRouteBuf) && (0U < chRouteNum)) + { + wOverlapId = GetRouteOverlapLockedId(pRouteBuf[chRouteNum - 1U]); + if ((0U < wOverlapId) && (OVERLAP_SUM_MAX > wOverlapId)) + { + chOverLapLogSecNum = GetOverlapLogicSectionSum(wOverlapId); + pOverLapLogSecBuf = GetOverlapLogicSectionBuf(wOverlapId); + if (NULL != pOverLapLogSecBuf) + { + for (j = 0U; j < chOverLapLogSecNum; j++) + { + chXianSuState = GetLogSecLinShiXianSuSetState(pOverLapLogSecBuf[j]); + if ((LOGSEC_LSXS_SET_STATE_NO == chXianSuState) || (LOGSEC_LSXS_SET_STATE_INVALID == chXianSuState)) + { + chRet = CI_VOBC_XIANSU_NOT; + } + else + { + chRet = CI_VOBC_XIANSU_YES; + break; + } + } + } + else + { + /**/ + } + } + else + { + /**/ + } + } + } + else + { + /**/ + } + return chRet; +} +/* +* ȡ·Ϣ +* ˵ UINT16* pPathTempBuf +* const UINT16 wTrainId гID +* ֵ 豸 +* Create lyj 20260316 +*/ +static UINT8 GetPathFloodGateData(UINT16* pPathTempBuf, const UINT16 wTrainId) +{ + UINT8 chTempNum = 0U; + UINT8 chLogSecNum = 0U; + UINT16* pLogSecBuf = NULL; + UINT16* pRouteBuf = NULL; + UINT8 chRouteNum = 0U; + UINT8 j = 0U; + UINT16 wLogBelongPhyId = 0U; + UINT16 chFloodGateNum = 0U; + UINT16* phFloodGateBuf = 0U; + UINT16 m = 0U; + UINT8 k = 0U; + UINT8 chCheckFlag = 0U; + RoutePhysicalSectionStruct* pRoutePhyBuf = NULL; + UINT8 chRoutePhySum = 0U; + UINT8 chRet = 0U; + UINT16 wOverlapId = 0U; + UINT8 chOverLapPhyNum = 0U; + UINT16* pOverLapPhyBuf = NULL; + if (NULL != pPathTempBuf) + { + /*鳵ºͳͷǷڷ*/ + chLogSecNum = GetBlocLinkLogSecNum(wTrainId); + pLogSecBuf = GetBlocLinkLogSecBuf(wTrainId); + if (NULL != pLogSecBuf) + { + for (j = 0U;j < chLogSecNum;j++) + { + wLogBelongPhyId = GetLgcSecRelativePhySecId(pLogSecBuf[j]); + chFloodGateNum = GetPhySecLocatedFloodSum(wLogBelongPhyId); + phFloodGateBuf = GetPhySecLocatedFloodId(wLogBelongPhyId); + if ((CI_VOBC_OTHER_EQUIPMENT_MAX > (chTempNum + chFloodGateNum)) && (NULL != phFloodGateBuf)) + { + for (m = 0U;m < chFloodGateNum;m++) + { + chCheckFlag = CheckRepeatData(phFloodGateBuf[m], pPathTempBuf, chTempNum); /*ȥ*/ + if (CI_SUCCESS == chCheckFlag) + { + pPathTempBuf[chTempNum] = phFloodGateBuf[m]; + chTempNum++; + } + else + { + /**/ + } + } + } + else + { + break; + } + } + } + else + { + /**/ + } + /*ƥ·ķ*/ + chRouteNum = GetBlocLinkRouteNum(wTrainId); + pRouteBuf = GetBlocLinkRouteBuf(wTrainId); + if (CI_VOBC_OTHER_EQUIPMENT_MAX > chTempNum) + { + chRet = CI_SUCCESS; + if (NULL != pRouteBuf) + { + for (j = 1U; j < chRouteNum; j++) + { + chRoutePhySum = GetRoutePhysicalSectionSum(pRouteBuf[j]); + pRoutePhyBuf = GetRouteSectionData(pRouteBuf[j]); + if (NULL != pRoutePhyBuf) + { + for (k = 0U;k < chRoutePhySum;k++) + { + chFloodGateNum = GetPhySecLocatedFloodSum(pRoutePhyBuf[k].PhysicalSectionId); + phFloodGateBuf = GetPhySecLocatedFloodId(pRoutePhyBuf[k].PhysicalSectionId); + if ((CI_VOBC_OTHER_EQUIPMENT_MAX > (chTempNum + chFloodGateNum)) && (NULL != phFloodGateBuf)) + { + for (m = 0U; m < chFloodGateNum; m++) + { + chCheckFlag = CheckRepeatData(phFloodGateBuf[m], pPathTempBuf, chTempNum); /*ȥ*/ + if (CI_SUCCESS == chCheckFlag) + { + pPathTempBuf[chTempNum] = phFloodGateBuf[m]; + chTempNum++; + } + else + { + /**/ + } + } + } + else + { + chRet = CI_ERROR; + break; + } + + } + if (CI_ERROR == chRet) + { + break; + } + else + { + /**/ + } + + } + else + { + break; + } + } + + } + else + { + /**/ + } + } + else + { + /**/ + } + + if (CI_VOBC_OTHER_EQUIPMENT_MAX > chTempNum) + { + if ((NULL != pRouteBuf) && (0U < chRouteNum)) + { + wOverlapId = GetRouteOverlapLockedId(pRouteBuf[chRouteNum - 1U]); + if ((0U < wOverlapId) && (OVERLAP_SUM_MAX > wOverlapId)) + { + chOverLapPhyNum = GetOverlapPhySecSum(wOverlapId); + pOverLapPhyBuf = GetOverlapPhySecIdBuf(wOverlapId); + if (NULL != pOverLapPhyBuf) + { + for (k = 0U; k < chOverLapPhyNum; k++) + { + chFloodGateNum = GetPhySecLocatedFloodSum(pOverLapPhyBuf[k]); + phFloodGateBuf = GetPhySecLocatedFloodId(pOverLapPhyBuf[k]); + if ((CI_VOBC_OTHER_EQUIPMENT_MAX > (chTempNum + chFloodGateNum)) && (NULL != phFloodGateBuf)) + { + for (m = 0U; m < chFloodGateNum; m++) + { + chCheckFlag = CheckRepeatData(phFloodGateBuf[m], pPathTempBuf, chTempNum); /*ȥ*/ + if (CI_SUCCESS == chCheckFlag) + { + pPathTempBuf[chTempNum] = phFloodGateBuf[m]; + chTempNum++; + } + else + { + /**/ + } + } + } + else + { + break; + } + } + } + else + { + /**/ + } + } + else + { + /**/ + } + } + else + { + /**/ + } + } + else + { + /**/ + } + + } + return chTempNum; +} +/* +* ȡ·Ŀĵ +* ˵ UINT8 chRouteNum,· +* UINT16* pRouteBuf· +* ֵ 豸 +* Create lyj 20260316 +*/ +static UINT8 GetDestinationType(UINT8 chRouteNum, UINT16* pRouteBuf) +{ + UINT8 chTempState = 0U; + UINT8 chRet = 0U; + if ((NULL != pRouteBuf) && (CI_VOBC_ROUTE_MAX >= chRouteNum) && (0U < chRouteNum)) + { + chTempState = GetRouteType(pRouteBuf[chRouteNum - 1U]); + if (ROUTE_TYPE_RETURN == chTempState) + { + chRet = CI_VOBC_DESTINATION_TYPE_RETURN; + } + else + { + chRet = CI_VOBC_DESTINATION_TYPE_LIECHE; + } + } + + return chRet; +} + +/* +* 豸ǷѾ +* ˵const UINT16 wCheckDeviceId 豸ID +* const UINT16* pDeviceBuf +* const UINT8 wDeviceNum +* ֵ +*/ +UINT8 CheckRepeatData(const UINT16 wCheckDeviceId, const UINT16* pDeviceBuf, const UINT8 wDeviceNum) +{ + UINT8 chRet = CI_ERROR; + UINT8 i = 0U; + if (NULL != pDeviceBuf) + { + for (i = 0U; i < wDeviceNum; i++) + { + if (wCheckDeviceId == pDeviceBuf[i]) + { + /*ظ*/ + break; + } + else + { + /**/ + } + } + if (wDeviceNum == i) + { + chRet = CI_SUCCESS; + } + else + { + /**/ + } + } + return chRet; +} + +/* +* CiIvocͨŹRCĿ +* ˵ UINT8* dataBuf, ݻ +* UINT16 *dataLength, ݳ +* ֵCI_ERROR 0 ʧ +* CI_SUCCESS 1 ɹ +* by cgh 20260327 +*/ +static UINT8 PackCiToIvocComErrRcInfo(UINT8* pDataBuf, UINT16* wDataLength) +{ + UINT8 chRetVal = CI_ERROR; + UINT16 ii = 0U;/*洢±*/ + UINT16 wComErrRcNumIndex = 0U; /*ͨŹRC*/ + UINT8 chTransRciSum = 0U; /*ͨ豸*/ + UINT8* pTransRciId = NULL; /*ͨ豸ID*/ + UINT8 jj = 0U; + UINT8 chNearRciCommState = 0U; /*RCͨ״̬*/ + UINT8 chComErrRcNum = 0U; /*ͨŹRC*/ + UINT16 wComRcId = 0U; /*ͨ豸ID*/ + + if ((NULL == pDataBuf) || (NULL == wDataLength)) + { + chRetVal = CI_ERROR; + } + else + { + ii = *wDataLength; + /*ȼ¼ͨŹRCĿеĴ洢*/ + wComErrRcNumIndex = ii; + ii++; + + chTransRciSum = GetCiTransmitSpecifySysDevSum(CI_SYSTEM_TYPE_RC); + pTransRciId = GetCiTransmitSpecifySysDevBuf(CI_SYSTEM_TYPE_RC); + + /*ݺϷ*/ + if (NULL != pTransRciId) + { + 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 (CI_SUCCESS == chRetVal) + { + pDataBuf[wComErrRcNumIndex] = chComErrRcNum; /*ͨŹRC*/ + *wDataLength = ii; /*ݳ*/ + } + else + { + chRetVal = CI_ERROR; + } + + return chRetVal; +} + +/* +* 黥ͨRC->VOBC״̬ +* ˵ VobcToRcDataStruct * pstVobcToRcDataStru VobcRCϢṹ +* ֵ 0:ʧ +* 1:ݳɹ +* by cgh 20260328 +*/ +static UINT8 PackRcToVobcStateData(VobcToRcDataStruct * pstVobcToRcDataStru) +{ + UINT8 retVal = CI_ERROR; + UINT8 chRcToVobcDataBuffer[VOBC_TO_CI_DATA_LEN_MAX] = { 0u };/*RCVOBC֡*/ + UINT32 curCycleNum = 0U; /*ǰں*/ + UINT32 appCycleTime = 0U; /*Ӧ*/ + UINT16 ii = 0U; + UINT8 localCiId = 0U; /*ID*/ + UINT32 ciEtcsId = 0U; /*ͨID*/ + UINT32 vobcEtcsId = 0U; /*VOBCͨID*/ + UINT32 emapCheckVer = 0U; /*ӵͼ*/ + UINT16 dstDevId = 0U; /*Ŀ豸ַ*/ + UINT8 outnetSafeSendRtn = 0U; /*ݷͽ*/ + UINT32 chCtxSrcCrntSN = 0U; /*ij豸һθRCʱ䵱ǰ*/ + UINT32 chCtxCiRcvSN = 0U; /*RCյij豸ʱRCʱ*/ + + localCiId = GetSystemParaLocalCiId(); + curCycleNum = Get2oo2CurCycleNum(); + appCycleTime = GetSystemParaAppCycleTime(); + + retVal = dquDevName2HlhtId(((UINT16)CI_SYSTEM_TYPE_RCI * 256U + localCiId), 0U, &ciEtcsId); + retVal &= dquDevName2HlhtId(((UINT16)(CI_SYSTEM_TYPE_VOBC * 256U) + pstVobcToRcDataStru->VobcId), pstVobcToRcDataStru->vobcLogId, &vobcEtcsId); + retVal &= GetCiEmapCheckVer(localCiId, &emapCheckVer, CI_SYSTEM_TYPE_VOBC);/*RCģʽ£IVOCVOBC汾ʹRC*/ + +/*ȻȡʱϢȡɹбҪ*/ + if (CI_SUCCESS == retVal) + { + ii = 0U; + + /*ʼӦ֡*/ + ShortToChar(VOBC_RC_INTERFACE_INFOTYPE, &chRcToVobcDataBuffer[ii]);/*ӿϢ*/ + ii += 2U; + + LongToChar(ciEtcsId, &chRcToVobcDataBuffer[ii]);/*ͷʶϢ*/ + ii += 4U; + LongToChar(vobcEtcsId, &chRcToVobcDataBuffer[ii]);/*շʶϢ*/ + ii += 4U; + LongToChar(emapCheckVer, &chRcToVobcDataBuffer[ii]);/*ӵͼ汾УϢ*/ + ii += 4U; + LongToChar(curCycleNum, &chRcToVobcDataBuffer[ii]);/*Ϣк*/ + ii += 4U; + ShortToChar((UINT16)appCycleTime, &chRcToVobcDataBuffer[ii]);/*豸ͨѶ*/ + ii += 2U; + chCtxSrcCrntSN = GetHLHTHeadCtxSrcCrntSN(CI_SYSTEM_TYPE_VOBC, (UINT8)(pstVobcToRcDataStru->VobcId)); + LongToChar(chCtxSrcCrntSN, &chRcToVobcDataBuffer[ii]);/*ԷϢкţյԷһϢеĶԷϢк*/ + ii += 4U; + chCtxCiRcvSN = GetHLHTHeadCtxCiRcvSN(CI_SYSTEM_TYPE_VOBC, (UINT8)(pstVobcToRcDataStru->VobcId)); + LongToChar(chCtxCiRcvSN, &chRcToVobcDataBuffer[ii]);/*յһϢʱк*/ + ii += 4U; + + chRcToVobcDataBuffer[ii++] = RC_VOBC_PRTCL_VER;/*RC_VOBCӿЭ汾*/ + /*ͨñͷеӦò㱨ܳ*/ + ii += 2U; + + /*ΪӦò*/ + ii += 2U;/*ij*/ + + ShortToChar(RC_VOBC_STATE_FRAME, &chRcToVobcDataBuffer[ii]); + ii += 2u;/*Ӧñ*/ + ii += 2u;/*Ԥֽ*/ + + retVal = PackRcToVobcArbState(chRcToVobcDataBuffer,&ii); + + if (CI_SUCCESS == retVal) + { + /*ɹ*/ + } + else + { + /**/ + debug_infor_printf((const)"\n VOBC: %d PackRcToVobcArbState Error \n", pstVobcToRcDataStru->VobcId); + } + + if (CI_SUCCESS == retVal) + { + if (CI_IVOC_PACKET_LENGTH_MAX > ii) + { + ; /*ִ*/ + } + else + { + retVal = CI_ERROR; + debug_infor_printf((const)"\nPack vobc %d PackRcToVobcStateData Error, len: %d \n", pstVobcToRcDataStru->VobcId, ii); + } + } + + if (CI_SUCCESS == retVal) + { + /*ͨñͷӦò㱨ܳ*/ + chRcToVobcDataBuffer[29U] = (UINT8)((UINT8)((ii - 31U) >> 8u) & 0xffu); + chRcToVobcDataBuffer[30U] = (UINT8)((ii - 31U) & 0xffu); + + /*Ӧòݵıij */ + chRcToVobcDataBuffer[31U] = (UINT8)((UINT8)((ii - 33U) >> 8u) & 0xffu); + chRcToVobcDataBuffer[32U] = (UINT8)((ii - 33U) & 0xffu); + + dstDevId = ((UINT16)(CI_SYSTEM_TYPE_VOBC << 8U) | pstVobcToRcDataStru->VobcId); + outnetSafeSendRtn = OutnetSafeSend(dstDevId, pstVobcToRcDataStru->vobcLogId, &chRcToVobcDataBuffer[0U], ii); + if (1u == outnetSafeSendRtn) + { /*дгɹ*/ +#ifdef LOGPRINT/*־ӡ*/ +#ifdef PLATFORM_2OO2/*2oo2ƽ̨ӡ*/ + debug_infor_printf((const)"\nRC_VOBC_CBTC_SEND:%d", ii); + debug_out_array(0xAA, chRcToVobcDataBuffer, ii); +#endif/*ƽ̨ӡ*/ +#endif + retVal = CI_SUCCESS; + } + else + { + /*дʧ*/ + retVal = CI_ERROR; + } + } + else + { + ; + } + } + else + { + ; + } + + return retVal; +} + +/* +* RCVOBCARB״̬Ϣ +* ˵ UINT8* dataBuf, ݻ +* UINT16 *dataLength, ݳ +* ֵCI_ERROR 0 ʧ +* CI_SUCCESS 1 ɹ +* by cgh 20260328 +*/ +static UINT8 PackRcToVobcArbState(UINT8* pDataBuf, UINT16* wDataLength) +{ + UINT8 chRetVal = CI_ERROR; + UINT16 ii = 0U; + UINT8 cLocalCiId = 0U; /*ID*/ + UINT16 wArbSecNumIndex = 0U; /*ARB*/ + UINT16 wAxisSecSum = 0U; /**/ + UINT16 wAxisSecId = 0U; /*ID*/ + UINT8 cAxisSecBlongCiId = 0U; /**/ + UINT8 chAcArbState = 0U; /*ARB״̬*/ + UINT16 wAxisSecIndex = 0U; /**/ + UINT16 wSendArbStateNum = 0U; /*ARBĿ*/ + + if ((NULL == pDataBuf) || (NULL == wDataLength)) + { + chRetVal = CI_ERROR; + } + else + { + + ii = *wDataLength; + wArbSecNumIndex = ii; + ii += 2U; + + chRetVal = CI_SUCCESS; + + cLocalCiId = GetSystemParaLocalCiId(); + wAxisSecSum = GetAxisSecCurSum(); + /**/ + for (wAxisSecIndex = 0U; wAxisSecIndex < wAxisSecSum; wAxisSecIndex++) + { + wAxisSecId = GetAxisSecId(wAxisSecIndex); + cAxisSecBlongCiId = GetAxisSectionBelongCiId(wAxisSecId); + + if ((cLocalCiId == cAxisSecBlongCiId) && (0U != cAxisSecBlongCiId)) + { + chAcArbState = aam_GetAxisStatusAPI(wAxisSecId); + /* ARB߼ARB */ + if (AAM_STATUS_ARB == chAcArbState) + { + /*ARB¼ǰ ID*/ + ShortToChar(wAxisSecId, &pDataBuf[ii]); + ii += 2U; + wSendArbStateNum++; + } + else + { + ; /**/ + } + } + else + { + ; /*ڱֻ쳣*/ + } + } + + } + + if (CI_SUCCESS == chRetVal) + { + ShortToChar(wSendArbStateNum, &pDataBuf[wArbSecNumIndex]); /*ARB*/ + *wDataLength = ii; + } + else + { + chRetVal = CI_ERROR; + } + + return chRetVal; +} + diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackVobcData.h b/TSCP/src/APP/ciapp/ParsePack/ParsePackVobcData.h index 8cef97a..960f44f 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackVobcData.h +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackVobcData.h @@ -36,6 +36,8 @@ #include "../IO/DeviceRelayDataProcess.h" #include "dquIdmapQuery.h" #include "../Section/LogicSectionConfigDataManage.h" +#include "AxisAssertDefine.h" +#include "AxisAssertManageAPI.h" #define CI_PSD_COMM_STATE_GOOD ((UINT8)0x55) @@ -53,7 +55,7 @@ #define CI_VOBC_NO_LOCK ((UINT8)0x00) /*CIͨվֱշĬֵ*/ -#define CI_VOBC_INTERFACE_INFOTYPE ((UINT16)0x0206) /*ͨCI_VOBCӿϢ*/ +#define CI_VOBC_INTERFACE_INFOTYPE ((UINT16)0x0206) /*ͨCI_VOBCӿϢ*/ #define CI_VOBC_BACKUP_INTERFACE_INFOTYPE ((UINT16)0x0402) /*ģʽCI_VOBCӿϢ*/ #define VOBC_CI_INFO_TYPE_PSD_CONTROL ((UINT16)0x0201) /*VOBC_CIſƱ*/ #define VOBC_CI_INFO_TYPE_BACKUP ((UINT16)0x0308) /*VOBC_CIͨ*/ @@ -73,6 +75,10 @@ #define CI_VOBC_BACKUP_STATE_INFO ((UINT16)0x0211) /*CI=>VOBC״̬Ϣ*/ #define VOBC_CI_INFO_TYPE_BACKUU_CONTROL ((UINT16)0x0212) /*VOBC=>CIпϢ*/ +/*VOBC_CIʽϢ֡-Ŀǰͨӿھ߱֡ȫԶϴظҪӿڣҪ֡*/ +#define VOBC_CI_INFO_TYPE_BLOCLINK ((UINT16)0x020b) /*VOBC_CIʽϢ֡*/ +#define CI_VOBC_INFO_TYPE_BLOCLINK ((UINT16)0x020c) /*CI_VOBCʽϢ֡*/ + #define VOBC_CI_GAP_DETECT_CMD_START ((UINT8)0x55) /*VOBC2CI϶̽*/ #define VOBC_CI_GAP_DETECT_CMD_STOP ((UINT8)0xAA) /*VOBC2CIֹͣ϶̽*/ #define VOBC_CI_GAP_DETECT_CMD_DEFAULT ((UINT8)0xFF) /*VOBC2CIĬϼ϶̽*/ @@ -106,7 +112,8 @@ #define VOBC_RC_INTERFACE_INFOTYPE ((UINT16)0x0217U) /*VOBC-RCӿڣRC-VOBCӿ*/ #define VOBC_RC_INFO_STATE ((UINT16)0x0201U) /*VOBC->RCϢڷ*/ -#define RC_VOBC_HEART_FRAME ((UINT16)0x0202U) /*RC->VOBCϢڷ*/ +#define RC_VOBC_HEART_FRAME ((UINT16)0x0202U) /*RC->VOBCϢڷ*/ +#define RC_VOBC_STATE_FRAME ((UINT16)0x0205U) /*RC->VOBC豸״̬Ϣڷ*/ #define CI_IVOC_PRTCL_VER ((UINT8)0x01U) /*CI_VOBCЭ汾*/ @@ -145,9 +152,9 @@ #define IVOC_CI_LOGOUT_NORMAL ((UINT8)0x00U) /*IVOCIC ע*/ #define IVOC_CI_LOGOUT_SLEEP ((UINT8)0x01U) /*IVOCIC ע*/ -#define VOBC_CI_DIR_UP ((UINT8)0x55U) /*IVOCIC */ -#define VOBC_CI_DIR_DOWN ((UINT8)0xAAU) /*IVOCIC */ -#define VOBC_CI_DIR_DEF ((UINT8)0xFFU) /*IVOCIC Ĭ*/ +#define VOBC_CI_DIR_UP ((UINT8)0x55U) /*VOBC-CI */ +#define VOBC_CI_DIR_DOWN ((UINT8)0xAAU) /*VOBC-CI */ +#define VOBC_CI_DIR_DEF ((UINT8)0xFFU) /*VOBC-CI Ĭ*/ #define CI_IVOC_SWITCH_POSTION_DING ((UINT8)0x55U) /*CIIVOCλ״̬*/ #define CI_IVOC_SWITCH_POSTION_FAN ((UINT8)0xAAU) /*CIIVOCλ״̬*/ @@ -225,6 +232,7 @@ #define IVOC_CI_FLOODGATE_CLOSE_ALLOW_SUM ((UINT8)50U) /*IVOCCIŹرֵ*/ #define IVOC_CI_GARAGEDOOR_CLOSE_ALLOW_SUM ((UINT8)50U) /*IVOCCIŹرֵ*/ #define CI_IVOC_YUXIANOPEN_ROUTE_MAX ((UINT8)200U) /*CIIVOCԤȿŽ·ֵ*/ +#define CI_IVOC_COM_ERR_RC_NUM_MAX ((UINT8)5U) /*CIIVOCͨŹRCֵ*/ #define CI_IVOC_URGENT_YES ((UINT8)0x55U) /*CIIVOC ƶ״̬Ч*/ #define CI_IVOC_URGENT_NO ((UINT8)0xaaU) /*CIIVOC ƶ״̬Ч*/ @@ -243,6 +251,23 @@ #define TRAIN_LEN_MIN 1000U /*С*/ #define TRAIN_LEN_MAX 50000U /*󳵳*/ +#define VOBC_CI_BLOCLINK_BLOCK_CTRL ((UINT8)0x01) /*ʽгƼ*/ +#define VOBC_CI_BLOCLINK_CI_CTRL ((UINT8)0x02) /*Ƽ*/ +#define VOBC_CI_BLOCLINK_CI_DEFAULT ((UINT8)0xFF) /*Ĭֵ*/ + +#define CI_VOBC_SWITCH_MAX ((UINT8)20U) /*CI-VOBCʽֵ*/ +#define CI_VOBC_OTHER_EQUIPMENT_MAX ((UINT8)10U) /*CI-VOBCʽ豸ֵ*/ + +#define CI_VOBC_XIANSU_NOT ((UINT8)0xaaU) /*CI-VOBCʽδʱ*/ +#define CI_VOBC_XIANSU_YES ((UINT8)0x55U) /*CI-VOBCʽʱ*/ + +#define CI_VOBC_DESTINATION_TYPE_RETURN ((UINT8)0xaaU) /*CI-VOBCʽĿĵ-۷*/ +#define CI_VOBC_DESTINATION_TYPE_LIECHE ((UINT8)0x55U) /*CI-VOBCʽĿĵ-ֱͨ*/ + +#define CI_VOBC_FLOOD_STATE_OPEN ((UINT8)0xaaU) /*CI-VOBCʽſ״̬޹*/ +#define CI_VOBC_FLOOD_STATE_CLOSE ((UINT8)0x55U) /*CI-VOBCʽͷǿ״̬й*/ + + #ifdef __cplusplus extern "C" { #endif @@ -286,6 +311,18 @@ typedef struct S_IvocToCiCmdStruct UINT16 wCmdDevId[IVOC_CI_CMD_DEVICE_MAX]; /* 豸ID*/ }IvocCmdStru; +/*ʽϢ*/ +typedef struct S_VobcToCiBlocLinkStruct +{ + UINT8 chBlocLinkTrainLevel; /*ʽм*/ + UINT32 chBlocLinkCycle; /*ʽͨ*/ + UINT8 chTrainDirection; /*з*/ + UINT16 wTrainMaxSafeHeadLink; /*гȫǰLink*/ + UINT32 dwTrainMaxSafeHeadOffset; /*гȫǰƫ*/ + UINT16 wTrainMinSafeTailLink; /*гСȫlink*/ + UINT32 dwTrainMinSafeTailOffset; /*гСȫƫ*/ +}VobcToCiBlocLinkStruct; + /*ͨŵVobcϢ*/ typedef struct S_VobcToCiDataStruct { @@ -295,6 +332,7 @@ typedef struct S_VobcToCiDataStruct UINT8 washTrainRequest; /*ϴϢ*/ UINT8 headWashStopSteadyInfo; /*ͷϴλͣϢϴͣ1*/ UINT8 tailWashStopSteadyInfo; /*βϴλͣϢϴͣ2*/ + UINT8 couplingWashStopSteadyInfo; /*ҶϴλͣϢϴͣ3*/ UINT8 passWashMachineRequest; /*ͨϴϢ*/ UINT8 washPauseRequest; /*ͣϴ*/ UINT8 chWashMachineWorkMode; /*ϴģʽ*/ @@ -309,7 +347,9 @@ typedef struct S_VobcToCiDataStruct UINT16 vobcLogId; /*ͨ4IP VOBC1˻2˱ʶ*/ VobcToCiPsdDataStruct PsdData[VOBC_TO_CI_TRAIN_PSD_MAX]; /**/ UINT32 signalID; /*VOBC->CIźŻID*/ - + + VobcToCiBlocLinkStruct strBlocLinkData; /*VOBC->CIʽϢ*/ + /*add by qw.liu 2022-02-24 ӳ½ӿֶ*/ UINT8 chTrainLevel; /*гм:01:VBTC;02:ITC;03:UR;04:ABL*/ UINT8 chTrainMode; /*гģʽ*/ @@ -809,6 +849,32 @@ UINT8 GetRecvVobcControlMode(const UINT16 wVobcId); * Create fan 20250725 */ UINT8 PackCiToIvocOpenRouteNotNearInfo(UINT8* pDataBuf, UINT16* wDataLength, UINT16 wTrainId); +/* +* VOBCʽ +* ˵ UINT8* CiToVobcDataBuffer Ϣbuffer +* UINT16* ii ƫ +* VobcToCiDataStruct *vobcToCiDataStru VOBC-CI +* ֵ +* Create lyj 20260314 +*/ +void PackVobcBlocLinkData(UINT8* CiToVobcDataBuffer, UINT16* ii, VobcToCiDataStruct* vobcToCiDataStru); +/* +* VOBCʽ +* ˵ const UINT8* dataBuf, ݻ +* const UINT16 dataLength, ݳ +* VobcToCiDataStruct* vobcToCiDataStru VOBCCIṹ +* ֵ +* Create lyj 20260314 +*/ +UINT8 ParseVobcBlocLinkData(const UINT8* dataBuf, const UINT16 dataLength, VobcToCiDataStruct* vobcToCiDataStru); +/* +* 豸ǷѾ +* ˵const UINT16 wCheckDeviceId 豸ID +* const UINT16* pDeviceBuf +* const UINT8 wDeviceNum +* ֵ +*/ +UINT8 CheckRepeatData(const UINT16 wCheckDeviceId, const UINT16* pDeviceBuf, const UINT8 wDeviceNum); #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackZcData.c b/TSCP/src/APP/ciapp/ParsePack/ParsePackZcData.c index 5c9ef07..98cc0c5 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackZcData.c +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackZcData.c @@ -28,6 +28,11 @@ UINT8 lineIdentity = 0u; /* ZcToCiDynamicDataStruct gZcToCiDymDataStru = { 0U }; /*ZC̬ݽṹ*/ +UINT8 gCbtcCrossNumZc = 0u; /*CBTCгѹ*/ +CbtcCrossStructZC gCbtcCrossStructZc[ALL_CBTC_CROSS_SUM_MAX] = { 0u }; /*CBTCгѹϢ*/ + +static UINT8 ParseZcCbtcCrossData(UINT8* pDataBuf, UINT16 dataLen); +static UINT16 PackRcTacsCrossData(UINT8 *pDataBuf); /* * ZC֡ @@ -41,8 +46,6 @@ UINT8 ParseZcToCiDataFrame(UINT8* dataBuf, UINT16 dataLength, UINT8 systemId) { UINT8* sourceId = NULL; /*ԴID*/ UINT16 ii = 0u; - UINT16 jj = 0u; - UINT8 kk = 0u; UINT8 retVal = CI_SUCCESS; UINT32 dwStep = 0U; UINT8 galHeadSaved = 0u; /*ͨͷǷѱ־1棻0δ*/ @@ -133,7 +136,7 @@ UINT8 ParseZcToCiDataFrame(UINT8* dataBuf, UINT16 dataLength, UINT8 systemId) /*Ч*/ retVal = CI_SUCCESS; { - if (DATA_TYPE_NEW == chDataType) + if (DATA_TYPE_MAIN_BRANCH == chDataType) { while (wTmpDataLen < hlhtGalHead.totalDataLen) { @@ -191,6 +194,11 @@ UINT8 ParseZcToCiDataFrame(UINT8* dataBuf, UINT16 dataLength, UINT8 systemId) 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; @@ -1072,6 +1080,7 @@ UINT8 PackCiToZcData( UINT8 deviceId) UINT32 dwHlhtHSrcSN = 0u; UINT32 dwHlhtHRcvSN = 0u; UINT16 totallenIndex = 0U; + UINT16 wCrossFrameLen = 0U; UINT8 chDataType = 0U; localCi = GetSystemParaLocalCiId(); /*ȡID*/ @@ -1151,7 +1160,7 @@ UINT8 PackCiToZcData( UINT8 deviceId) totallenIndex = ii; ii += 2u;/*ͨñͷеӦò㱨ܳ*/ - if (DATA_TYPE_NEW == chDataType) + if (DATA_TYPE_MAIN_BRANCH == chDataType) { ii += 2u;/*ͨñͷеӦò㱨ij(0x202ij)*/ @@ -1167,16 +1176,27 @@ UINT8 PackCiToZcData( UINT8 deviceId) /*λϢ*/ (void)MaskPack(CI_SYSTEM_TYPE_ZC,&CiToZcDataBuffer[ii]); - ii = (UINT16) (ii + SendMaskSum); + ii = (UINT16)(ii + SendMaskSum); - /*ͨñͷӦò㱨ܳ*/ - ShortToChar(ii - totallenIndex - 2U, &CiToZcDataBuffer[totallenIndex]); - if (DATA_TYPE_NEW == chDataType) + if (DATA_TYPE_MAIN_BRANCH == chDataType) { /*ͨӦò㱨ij(0x202ij)*/ - totallenIndex += 2U; - ShortToChar(ii - totallenIndex - 2U, &CiToZcDataBuffer[totallenIndex]); + /*ȥ2ֽӦñܳ+2ֽ0202֡*/ + ShortToChar((ii - (totallenIndex + 4u)), &CiToZcDataBuffer[totallenIndex + 2u]); + + /*TACSгѹϢ*/ + wCrossFrameLen = PackRcTacsCrossData(&CiToZcDataBuffer[ii]); + ii += wCrossFrameLen; } + else + { + /*nothing*/ + } + + /*ͨñͷӦò㱨ܳ*/ + /*ȥ2ֽӦñܳ*/ + ShortToChar(ii - (totallenIndex + 2u), &CiToZcDataBuffer[totallenIndex]); + /*ZC*/ ClearZcData(); @@ -1244,6 +1264,101 @@ UINT8 PackCiToZcData( UINT8 deviceId) return retVal; } +/* +* 鷢͸ZCTACSгѹϢ +* ˵ UINT8 *pDataBuf ݰ +* ֵ ݳ +*/ +static UINT16 PackRcTacsCrossData(UINT8 *pDataBuf) +{ + UINT16 Index = 0u; /**/ + UINT16 i = 0u; /*ѭ*/ + UINT8 j = 0u; /*ѭ*/ + UINT16 wSignalCurSum = 0u; /*źŻ*/ + UINT16 wSignalId = 0u; /*źŻID*/ + UINT8 wSignalBelongCiId = 0u; /*źŻID*/ + UINT8 wLocalCiId = 0u; /*ID*/ + UINT8 wCrossTacsTrainId = 0u; /*TACSѹгID*/ + + UINT8 wTacsCrossTrainSum = 0u; /*TACSѹг*/ + UINT16 wTacsCrossSignalBuf[ALL_TACS_CROSS_SUM_MAX] = { 0u }; /*TACSѹźŻID*/ + UINT8 wTacsCrossTrainBuf[ALL_TACS_CROSS_SUM_MAX] = { 0u }; /*TACSѹгID*/ + + /*Step1TACSѹϢ׼*/ + wSignalCurSum = GetSignalCurSum(); + /*бźŻ*/ + for (i = 0u; i < wSignalCurSum; i++) + { + wSignalId = GetSignalId(i); + wSignalBelongCiId = GetSignalBelongCiId(wSignalId); + wLocalCiId = GetSystemParaLocalCiId(); + if (wSignalBelongCiId == wLocalCiId) + { + /*жϿѹTACSгIDǷΪ*/ + wCrossTacsTrainId = GetSignalCrossTacsTrainIdCC(wSignalId); + + /*Ƿֵ*/ + if ((0u < wSignalId) && (CROSS_SIGNAL_ID_MAX >= wSignalId) + && (0u < wCrossTacsTrainId) && (TACS_CROSS_ID_MAX >= wCrossTacsTrainId) + && (ALL_TACS_CROSS_SUM_MAX >= wTacsCrossTrainSum)) + { + /*TACSгIDЧֵ*/ + wTacsCrossSignalBuf[wTacsCrossTrainSum] = wSignalId; + wTacsCrossTrainBuf[wTacsCrossTrainSum] = wCrossTacsTrainId; + wTacsCrossTrainSum += 1u; + } + else + { + /**/ + } + } + else + { + /**/ + } + } + + /*Step2TACSѹϢ*/ + /*֡ȣֵ*/ + Index += 2u; + + /*֡*/ + ShortToChar(RC_TO_ZC_TACS_CROSS_MSG, &pDataBuf[Index]); + Index += 2u; + + /*Ԥ2ֽڷ0*/ + ShortToChar(0u, &pDataBuf[Index]); + Index += 2u; + + /*ѹTACSг*/ + pDataBuf[Index] = wTacsCrossTrainSum; + Index += 1u; + + for (j = 0u; j < wTacsCrossTrainSum; j++) + { + /*ѹźŻID*/ + ShortToChar(wTacsCrossSignalBuf[j], &pDataBuf[Index]); + Index += 2u; + + /*ѹгID*/ + pDataBuf[Index] = wTacsCrossTrainBuf[j]; + Index += 1u; + } + + /*ֵ*/ + 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; +} + /* * ȡZCλֵBuf @@ -1448,6 +1563,92 @@ UINT8 ParseZcIteCutData(UINT8* dataBuf, UINT16 dataLen) return cRetVal; } +/* +* ZCCICBTCгѹ +* ˵UINT8* pDataBuf ݻ +* UINT16 dataLen ݳ +* ֵCI_ERROR 0 ݽʧ +* CI_SUCCESS 1 ݽɹ +* Edit By wyd 2026.3.26 +*/ +static UINT8 ParseZcCbtcCrossData(UINT8* pDataBuf, UINT16 dataLen) +{ + UINT8 cRetVal = CI_ERROR; /*ֵ*/ + UINT8 wCrossNum = 0u; /*нӿѹ״̬*/ + UINT16 ii = 0U; /*±*/ + UINT8 jj = 0U; /*ѭ*/ + UINT16 wSignalId = 0U; /*нӿѹźŻID*/ + UINT8 wTrainId = 0U; /*нӿѹгID*/ + + if (NULL != pDataBuf) + { + cRetVal = CI_SUCCESS; + wCrossNum = pDataBuf[ii]; + ii++; + + if (ALL_CBTC_CROSS_SUM_MAX >= wCrossNum) + { + ZcToCiDataStru.wCbtcCrossNum = wCrossNum; + for (jj = 0U; jj < wCrossNum; jj++) + { + wSignalId = ShortFromChar(&pDataBuf[ii]); /*źŻID*/ + ii += 2u; + + if ((0U < wSignalId) && (CROSS_SIGNAL_ID_MAX >= wSignalId)) + { + ZcToCiDataStru.wCbtcCrossSignalId[jj] = wSignalId; + } + else + { + debug_infor_printf((const)"ParseZcCbtcCrossData: wSignalId Error\n"); + cRetVal = CI_ERROR; /*ZźŻIDޣʧ*/ + } + + wTrainId = pDataBuf[ii]; /*гID*/ + ii += 1u; + + if ((0U < wTrainId) && (CBTC_CROSS_ID_MAX >= wTrainId)) + { + ZcToCiDataStru.wCbtcCrossTrainId[jj] = wTrainId; + } + else + { + debug_infor_printf((const)"ParseZcCbtcCrossData: wTrainId Error\n"); + cRetVal = CI_ERROR; /*гIDޣʧ*/ + } + } + + if (CI_SUCCESS == cRetVal) + { + if (dataLen != ii) + { + debug_infor_printf((const)"ParseZcCbtcCrossData: Msg Len Error\n"); + cRetVal = CI_ERROR; + } + else + { + /**/ + } + } + else + { + /**/ + } + } + else + { + debug_infor_printf((const)"ParseZcCbtcCrossData Error: wCrossNum Error\n"); + cRetVal = CI_ERROR; /*״̬Ƿʧ*/ + } + } + else + { + cRetVal = CI_ERROR; /*ηǷʧ*/ + } + + return cRetVal; +} + /** * @brief ȡZC͵Ľ·֤ͣ־ * @param[in] UINT16 wDeviceId 豸ID @@ -2017,4 +2218,61 @@ void SetLocalSnowModelZc(UINT8 setmodle) { ; /**/ } +} + +/* +* ȡZC͵CBTCгѹ +* ˵ +* ֵѹ +* Created By wyd 2026.3.27 +*/ +UINT8 GetCbtcCrossNumZc(void) +{ + return gCbtcCrossNumZc; +} + +/* +* ȡZC͵CBTCгѹϢ +* ˵ +* ֵѹϢ +* Created By wyd 2026.3.27 +*/ +CbtcCrossStructZC *GetCbtcCrossStructZc(void) +{ + return gCbtcCrossStructZc; +} + +/* +* ZCCBTCгѹϢ +* ˵UINT8 wCrossNum ѹ +* UINT16 wSignalId[ALL_CBTC_CROSS_SUM_MAX] ѹźŻID +* UINT8 wTrainId[ALL_CBTC_CROSS_SUM_MAX] ѹгID +* ֵ +* עRCCI->RCͬĸϢʱֱӸֵûøýӿں +* Created By wyd 2026.3.26 +*/ +void SetCbtcCrossInfo(UINT8 wCrossNum, UINT16 wSignalId[ALL_CBTC_CROSS_SUM_MAX], + UINT8 wTrainId[ALL_CBTC_CROSS_SUM_MAX]) +{ + UINT8 i = 0u; + + /*գֹ*/ + (void)CommonMemSet(gCbtcCrossStructZc, ALL_CBTC_CROSS_SUM_MAX * sizeof(CbtcCrossStructZC), + 0x00u, ALL_CBTC_CROSS_SUM_MAX * sizeof(CbtcCrossStructZC)); + + /*ֵѹID*/ + gCbtcCrossNumZc = wCrossNum; + + if ((NULL == wSignalId) || (NULL == wTrainId)) + { + /**/ + } + else + { + for (i = 0u; i < wCrossNum; i++) + { + gCbtcCrossStructZc[i].wSignalId = wSignalId[i]; + gCbtcCrossStructZc[i].wTrainId = wTrainId[i]; + } + } } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackZcData.h b/TSCP/src/APP/ciapp/ParsePack/ParsePackZcData.h index 54c3f55..bbbca0e 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackZcData.h +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackZcData.h @@ -26,15 +26,17 @@ #include "../ParsePack/ParsePackTmcData.h" -#define CI_ZC_INTERFACE_INFOTYPE ((UINT16)0x0106) /*ͨCI_ZCӿϢ*/ -#define CI_ZC_PRTCL_VER ((UINT16)0x65) /*CI_ZCЭ汾ţݡIFAO-3048-ZC-CIӿ˵顷޸*/ -#define ZC_TO_TIOC_MASK_MSG ((UINT16)0x0201u) /*ZCTIOCλϢ*/ -#define TIOC_TO_ZC_MASK_MSG ((UINT16)0x0202u) /*TIOCZCλϢ*/ -#define ZC_TO_TIOC_TSR_MSG ((UINT16)0x0203u) /*ZCTIOCʱϢ*/ -#define ZC_TO_TIOC_WLB_MSG ((UINT16)0x0204u) /*ZCTIOCƶϢ*/ -#define ZC_TO_TIOC_SNOW_MSG ((UINT16)0x0205u) /*ZCTIOCѩģʽϢ*/ -#define ZC_TO_TIOC_ITELINECUT_MSG ((UINT16)0x0206U) /*ZCTIOCȫITEг״̬Ϣ*/ -#define ZC_TSR_VALID ((UINT8)0x55U) /*ZCʱЧ*/ +#define CI_ZC_INTERFACE_INFOTYPE ((UINT16)0x0106) /*ͨCI_ZCӿϢ*/ +#define CI_ZC_PRTCL_VER ((UINT16)0x65) /*CI_ZCЭ汾ţݡIFAO-3048-ZC-CIӿ˵顷޸*/ +#define ZC_TO_TIOC_MASK_MSG ((UINT16)0x0201u) /*ZCTIOCλϢ*/ +#define TIOC_TO_ZC_MASK_MSG ((UINT16)0x0202u) /*TIOCZCλϢ*/ +#define ZC_TO_TIOC_TSR_MSG ((UINT16)0x0203u) /*ZCTIOCʱϢ*/ +#define ZC_TO_TIOC_WLB_MSG ((UINT16)0x0204u) /*ZCTIOCƶϢ*/ +#define ZC_TO_TIOC_SNOW_MSG ((UINT16)0x0205u) /*ZCTIOCѩģʽϢ*/ +#define ZC_TO_TIOC_ITELINECUT_MSG ((UINT16)0x0206U) /*ZCTIOCȫITEг״̬Ϣ*/ +#define ZC_TO_RC_CBTC_CROSS_MSG ((UINT16)0x0207U) /*ZC͸RCCBTCгѹϢ*/ +#define RC_TO_ZC_TACS_CROSS_MSG ((UINT16)0x0208u) /*RC͸ZCTACSгѹϢ*/ +#define ZC_TSR_VALID ((UINT8)0x55U) /*ZCʱЧ*/ #ifdef __cplusplus extern "C" { @@ -64,6 +66,9 @@ typedef struct S_ZcToCiDataStruct UINT8 cIteLineCutState; /* ITEȫг״̬ */ UINT8 cAreaIteCutNum; /*ITEг*/ UINT16 szAreaIteCutId[ALL_AREA_SNOW_SUM_MAX]; /*ITEгID*/ + UINT8 wCbtcCrossNum; /*CBTCгѹ*/ + UINT16 wCbtcCrossSignalId[ALL_CBTC_CROSS_SUM_MAX]; /*CBTCгѹźŻID*/ + UINT8 wCbtcCrossTrainId[ALL_CBTC_CROSS_SUM_MAX]; /*CBTCгѹгID*/ } ZcToCiDataStruct; /*ZC͵źŻ̬ݽṹ*/ @@ -87,7 +92,7 @@ typedef struct S_LogicSectionDataStructZC typedef struct S_AxisSectionDataStructZC { UINT16 AxisSectionId; /*ID (ʼֶ)*/ - UINT8 AxisArbState; /*ARB״̬CC(0x55-δARB0xaa-ARB)*/ + UINT8 AxisArbState; /*ARB״̬(0x55-δARB0xaa-ARB)*/ }AxisSectionDataStructZC; /*ZC͵ζ̬ݽṹ*/ @@ -104,6 +109,13 @@ typedef struct S_RouteDataStructZC UINT8 StopensureFlag; /*֤ͣ־ZC(0x55ã0xAAδ) */ }RouteDataStructZC; +/*ZC͵CBTCгѹṹ*/ +typedef struct S_CbtcCrossStructZC +{ + UINT16 wSignalId; /*ѹźŻID*/ + UINT8 wTrainId; /*ѹгID*/ +}CbtcCrossStructZC; + /*洢ZC͵Ķ̬ݽṹ*/ typedef struct S_ZcToCiDynamicDataStruct { @@ -133,7 +145,8 @@ extern ComTrainPosDataStruct ComTrainPosDataStru[ZC_TO_CI_TRAIN_MAX]; extern UINT16 ComTrainSum; extern UINT8 lineIdentity; extern ZcToCiDynamicDataStruct gZcToCiDymDataStru; /*ZC̬ݽṹ*/ - +extern UINT8 gCbtcCrossNumZc; +extern CbtcCrossStructZC gCbtcCrossStructZc[ALL_CBTC_CROSS_SUM_MAX]; #endif @@ -468,6 +481,34 @@ UINT8 GetLocalSnowModelZc(void); */ void SetLocalSnowModelZc(UINT8 setmodle); +/* +* ȡZC͵CBTCгѹ +* ˵ +* ֵѹ +* Created By wyd 2026.3.27 +*/ +UINT8 GetCbtcCrossNumZc(void); + +/* +* ȡZC͵CBTCгѹϢ +* ˵ +* ֵѹϢ +* Created By wyd 2026.3.27 +*/ +CbtcCrossStructZC *GetCbtcCrossStructZc(void); + +/* +* ZCCBTCгѹϢ +* ˵UINT8 wCrossNum ѹ +* UINT16 wSignalId[ALL_CBTC_CROSS_SUM_MAX] ѹźŻID +* UINT8 wTrainId[ALL_CBTC_CROSS_SUM_MAX] ѹгID +* ֵ +* עRCCI->RCͬĸϢʱֱӸֵûøýӿں +* Created By wyd 2026.3.26 +*/ +void SetCbtcCrossInfo(UINT8 wCrossNum, UINT16 wSignalId[ALL_CBTC_CROSS_SUM_MAX], + UINT8 wTrainId[ALL_CBTC_CROSS_SUM_MAX]); + #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/QueryFiles/dquCIInit.c b/TSCP/src/APP/ciapp/QueryFiles/dquCIInit.c index ff76510..de3aea2 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dquCIInit.c +++ b/TSCP/src/APP/ciapp/QueryFiles/dquCIInit.c @@ -138,7 +138,7 @@ UINT8 RelayInit(CHAR* FSName) tmpSpeedLimitType = GetCiFunctionSwitchConfig(BLK_TEMP_SPEED_LIM_CONF); /*ȡʱ*/ chDataType = GetLocalPublicDataType(); - if (DATA_TYPE_NEW == chDataType) + if (DATA_TYPE_MAIN_BRANCH == chDataType) { /* ݽṹ */ funcRtn = TransmitDataStructInitNew(FSName); @@ -514,6 +514,9 @@ UINT8 RelayInit(CHAR* FSName) debug_infor_printf((const)"LinkSpecialEaDataInit fail.\r\n"); } + /*ηʼ*/ + funcRtn *= AxisSecProtectSwitchInit(); + return funcRtn; } @@ -687,60 +690,27 @@ UINT8 SystemParameterStructInit(CHAR* FSName) if (1u == rtnValue) { - /*ƶߴٶȣλdfsInitSubSystemCommonConfigData_CCת*/ - dquCICfgDtStr.SystemParaStrNew.MaxLineLimitSpeed = pCbtcConfigDataStru.MaxLineLimitSpeed; - /*ʱ(km/h)δеλת*/ dquCICfgDtStr.SystemParaStrNew.MaxTsrSpeed = pCbtcConfigDataStru.MaxTsrSpeed; - /*NTPУʱʱСʱ*/ - dquCICfgDtStr.SystemParaStrNew.TimeZoneDifference = pCbtcConfigDataStru.TimeZoneDifference; - - /*ͬʻ˫Сȫ(cm))*/ - dquCICfgDtStr.SystemParaStrNew.MABackDistance = pCbtcConfigDataStru.MABackDistance; - /*һõʱ*/ dquCICfgDtStr.SystemParaStrNew.MaxTsrNum = pCbtcConfigDataStru.MaxTsrNum; /*һʱٱа*/ dquCICfgDtStr.SystemParaStrNew.MaxSectionOfTsr = pCbtcConfigDataStru.MaxSectionOfTsr; - /*IVOC-IVOCŹжʱ䣨ms*/ - dquCICfgDtStr.SystemParaStrNew.IvocIvocCommunicationErrorTime = pCbtcConfigDataStru.IvocIvocCommunicationErrorTime; - /*IVOC-OCͨŹжʱ(ms)*/ dquCICfgDtStr.SystemParaStrNew.IvocOcCommunicationErrorTime = pCbtcConfigDataStru.IvocOcCommunicationErrorTime; - /*VOBC-ITSͨŹжʱ(ms)*/ - dquCICfgDtStr.SystemParaStrNew.VobcAtsCommunicationErrorTime = pCbtcConfigDataStru.VobcAtsCommunicationErrorTime; - - /*TMC-ITSͨŹжʱ䣨ms*/ - dquCICfgDtStr.SystemParaStrNew.TmcItsCommunicationErrorTime = pCbtcConfigDataStru.TmcItsCommunicationErrorTime; - - /*ITS-OCͨŹжʱ䣨ms*/ - dquCICfgDtStr.SystemParaStrNew.ItsOcCommunicationErrorTime = pCbtcConfigDataStru.ItsOcCommunicationErrorTime; - /*OC-TMCͨŹжʱ䣨ms*/ dquCICfgDtStr.SystemParaStrNew.TmcOcCommunicationErrorTime = pCbtcConfigDataStru.TmcOcCommunicationErrorTime; - /*OC-PSDͨŹжʱ䣨ms*/ - dquCICfgDtStr.SystemParaStrNew.OcPsdCommunicationErrorTime = pCbtcConfigDataStru.OcPsdCommunicationErrorTime; - - /*IVOC-TSLͨŹжʱ䣨ms*/ - dquCICfgDtStr.SystemParaStrNew.IvocTslCommunicationErrorTime = pCbtcConfigDataStru.IvocTslCommunicationErrorTime; - /*OC-TSLͨŹжʱ䣨ms*/ dquCICfgDtStr.SystemParaStrNew.OcTslCommunicationErrorTime = pCbtcConfigDataStru.OcTslCommunicationErrorTime; - /*㾫ȷͣMA쳤ȣcm*/ - dquCICfgDtStr.SystemParaStrNew.MALengthForATOParking = pCbtcConfigDataStru.MALengthForATOParking; - /*ϵͳ߼зĹϵ*/ dquCICfgDtStr.SystemParaStrNew.LinkLogicDirUpAndDown = pCbtcConfigDataStru.LinkLogicDirUpAndDown; - /*ʻ˫Сȫ(cm)*/ - dquCICfgDtStr.SystemParaStrNew.OppositeTrackDistance = pCbtcConfigDataStru.OppositeTrackDistance; - /*·½ƶ루λm*/ dquCICfgDtStr.SystemParaStrNew.MaxMALength = pCbtcConfigDataStru.MaxMALength; @@ -1557,9 +1527,11 @@ UINT8 WashMachineCfgDtStruFromDquStr(Relay_WashMachineStruct * relayWashMachineS pWashMachineCfgDtStr->TrainEmergencyStopRelayId = relayWashMachineStruct->TrainEmergencyStopRelayId; pWashMachineCfgDtStr->HeadWashAllowRelayId = relayWashMachineStruct->HeadWashAllowRelayId; pWashMachineCfgDtStr->TailWashAllowRelayId = relayWashMachineStruct->TailWashAllowRelayId; + pWashMachineCfgDtStr->wCouplingWashAllowRelayId = relayWashMachineStruct->wCouplingWashAllowRelayId; pWashMachineCfgDtStr->WashTrainRequestRelayId = relayWashMachineStruct->WashTrainRequestRelayId; pWashMachineCfgDtStr->TrainHeadStopSteadyRelayId = relayWashMachineStruct->TrainHeadStopSteadyRelayId; pWashMachineCfgDtStr->TrainTailStopSteadyRelayId = relayWashMachineStruct->TrainTailStopSteadyRelayId; + pWashMachineCfgDtStr->wCoupingStopSteadyRelayId = relayWashMachineStruct->wCoupingStopSteadyRelayId; pWashMachineCfgDtStr->TrainPassRequestRelayId = relayWashMachineStruct->TrainPassRequestRelayId; pWashMachineCfgDtStr->TrainOutWashPortAllowRelayId = relayWashMachineStruct->TrainOutWashPortAllowRelayId; pWashMachineCfgDtStr->PauseTrainWashRequestRelayId = relayWashMachineStruct->PauseTrainWashRequestRelayId; @@ -1768,6 +1740,9 @@ 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)) @@ -1783,7 +1758,24 @@ UINT8 SwitchCfgDtStruFromDquPointStr(DSU_POINT_STRU* pPoint,SwitchConfigDataStru pSwitchCfgDtStr->chKiloType = pPoint->dwPointKiloPlueMinusSign; if (pSwitchCfgDtStr->SwitchId < SWITCH_SUM_MAX) { - pSwitchCfgDtStr->BelongOcId = dquCICfgDtStr.OCSwitchCfgStr[pSwitchCfgDtStr->SwitchId].BelongOcId; + + /*OCñݴ洢ݽṹ*/ + rtnvalue = SwitchCfgDtStruFromOCconfigStr(pSwitchCfgDtStr); + if (DATA_TYPE_MAIN_BRANCH == chDataType) + { + /*ͨ忨IDð忨ڱOCʹЩ*/ + rtnvalue &= CalcuSwitchInsertionBoxData(pSwitchCfgDtStr); + } + else + {/*ִ*/ + } + + if (0u == rtnvalue) + { + return rtnvalue; + } + + } pSwitchCfgDtStr->DSwitchOtherId = (pPoint->DPointOtherId != 0xffffu)?pPoint->DPointOtherId:0U; pSwitchCfgDtStr->SwitchPhySecId = 0xffu; @@ -2436,8 +2428,8 @@ UINT8 LogicSecCfgDtStruFromDquSgmtStr(DSU_LOGIC_SGMT_STRU* pLogicSgmt,LogicSecti UINT16 wSignalAttribute = 0U; UINT16 protectLinkId = 0u; INT16 intrtVal = -1; - - + UINT8 chDataType = 0U; + chDataType = GetLocalPublicDataType();/*28.0.0.1423.1.2.X߼βֶγʼ*/ /*ڲ*/ if ((NULL != pLogicSgmt) && (NULL != pLgScCfgDtStr)) { @@ -2924,107 +2916,117 @@ UINT8 LogicSecCfgDtStruFromDquSgmtStr(DSU_LOGIC_SGMT_STRU* pLogicSgmt,LogicSecti } } #endif - /*߼ιźŻ*/ - if ((0U == pLgScCfgDtStr->dwOrgnOffset) || (dsuStaticHeadStru.pLinkStru[g_dsuEmapStru->dsuEmapIndexStru->dsuLinkIndex[pLgScCfgDtStr->wTmnlLink]].dwLength == pLgScCfgDtStr->dwTmnlOffset)) - {/*ƫΪ0յƫΪӦLINKȲž߱źŻ*/ - for (ii = 0; ii < dquCICfgDtStr.SgnlCfgDtStrLen; ii++) - { - wSignalAttribute = dsuStaticHeadStru.pSignalStru[g_dsuEmapStru->dsuEmapIndexStru->dsuSignalIndex[dquCICfgDtStr.SgnlCfgDtStr[ii].SignalId]].wAttribute; - if (0x4000U != (wSignalAttribute & 0x4000U)) + if (DATA_TYPE_MAIN_BRANCH == chDataType) + { + /*߼ιźŻ*/ + if ((0U == pLgScCfgDtStr->dwOrgnOffset) || (dsuStaticHeadStru.pLinkStru[g_dsuEmapStru->dsuEmapIndexStru->dsuLinkIndex[pLgScCfgDtStr->wTmnlLink]].dwLength == pLgScCfgDtStr->dwTmnlOffset)) + {/*ƫΪ0յƫΪӦLINKȲž߱źŻ*/ + for (ii = 0; ii < dquCICfgDtStr.SgnlCfgDtStrLen; ii++) { - if (dquCICfgDtStr.SgnlCfgDtStr[ii].wOutFirstLinkId == dquCICfgDtStr.SgnlCfgDtStr[ii].wProtectLinkId) + wSignalAttribute = dsuStaticHeadStru.pSignalStru[g_dsuEmapStru->dsuEmapIndexStru->dsuSignalIndex[dquCICfgDtStr.SgnlCfgDtStr[ii].SignalId]].wAttribute; + if (0x4000U != (wSignalAttribute & 0x4000U)) { - /*źŻLINKLINKͬһLINKҴźŻΪͷߵķźŻ*/ - if (dquCICfgDtStr.SgnlCfgDtStr[ii].InFirstPhySecId == pLgScCfgDtStr->wRelativePhySecId) + if (dquCICfgDtStr.SgnlCfgDtStr[ii].wOutFirstLinkId == dquCICfgDtStr.SgnlCfgDtStr[ii].wProtectLinkId) { - /*ǰ߼ΪѯźŻڷһ - ҵǰ߼Ϊеһһ(һIFѾͨƫѯ)*/ - pLgScCfgDtStr->wRelateBeginSigId[pLgScCfgDtStr->chRelateBeginSigSum] = dquCICfgDtStr.SgnlCfgDtStr[ii].SignalId; - pLgScCfgDtStr->chRelateBeginSigSum++; - } - - if ((0U == pLgScCfgDtStr->dwOrgnOffset) && (dsuStaticHeadStru.pLinkStru[g_dsuEmapStru->dsuEmapIndexStru->dsuLinkIndex[pLgScCfgDtStr->wTmnlLink]].dwLength != pLgScCfgDtStr->dwTmnlOffset)) - {/*߼ƫΪ0յ㲻һLINK*/ - if (dquCICfgDtStr.SgnlCfgDtStr[ii].wProtectLinkId == pLgScCfgDtStr->wOrgnLink) - {/*źŻLINK뱾߼ͬ*/ - pLgScCfgDtStr->wRelateEndSigId[pLgScCfgDtStr->chRelateEndSigSum] = dquCICfgDtStr.SgnlCfgDtStr[ii].SignalId; - pLgScCfgDtStr->chRelateEndSigSum++; + /*źŻLINKLINKͬһLINKҴźŻΪͷߵķźŻ*/ + if (dquCICfgDtStr.SgnlCfgDtStr[ii].InFirstPhySecId == pLgScCfgDtStr->wRelativePhySecId) + { + /*ǰ߼ΪѯźŻڷһ + ҵǰ߼Ϊеһһ(һIFѾͨƫѯ)*/ + pLgScCfgDtStr->wRelateBeginSigId[pLgScCfgDtStr->chRelateBeginSigSum] = dquCICfgDtStr.SgnlCfgDtStr[ii].SignalId; + pLgScCfgDtStr->chRelateBeginSigSum++; } - } - else if ((0U != pLgScCfgDtStr->dwOrgnOffset) && (dsuStaticHeadStru.pLinkStru[g_dsuEmapStru->dsuEmapIndexStru->dsuLinkIndex[pLgScCfgDtStr->wTmnlLink]].dwLength == pLgScCfgDtStr->dwTmnlOffset)) - {/*߼㲻ΪһLINKյһLINK*/ - if (dquCICfgDtStr.SgnlCfgDtStr[ii].wProtectLinkId == pLgScCfgDtStr->wTmnlLink) - {/*źŻLINK뱾߼յͬ*/ - pLgScCfgDtStr->wRelateEndSigId[pLgScCfgDtStr->chRelateEndSigSum] = dquCICfgDtStr.SgnlCfgDtStr[ii].SignalId; - pLgScCfgDtStr->chRelateEndSigSum++; + + if ((0U == pLgScCfgDtStr->dwOrgnOffset) && (dsuStaticHeadStru.pLinkStru[g_dsuEmapStru->dsuEmapIndexStru->dsuLinkIndex[pLgScCfgDtStr->wTmnlLink]].dwLength != pLgScCfgDtStr->dwTmnlOffset)) + {/*߼ƫΪ0յ㲻һLINK*/ + if (dquCICfgDtStr.SgnlCfgDtStr[ii].wProtectLinkId == pLgScCfgDtStr->wOrgnLink) + {/*źŻLINK뱾߼ͬ*/ + pLgScCfgDtStr->wRelateEndSigId[pLgScCfgDtStr->chRelateEndSigSum] = dquCICfgDtStr.SgnlCfgDtStr[ii].SignalId; + pLgScCfgDtStr->chRelateEndSigSum++; + } + } + else if ((0U != pLgScCfgDtStr->dwOrgnOffset) && (dsuStaticHeadStru.pLinkStru[g_dsuEmapStru->dsuEmapIndexStru->dsuLinkIndex[pLgScCfgDtStr->wTmnlLink]].dwLength == pLgScCfgDtStr->dwTmnlOffset)) + {/*߼㲻ΪһLINKյһLINK*/ + if (dquCICfgDtStr.SgnlCfgDtStr[ii].wProtectLinkId == pLgScCfgDtStr->wTmnlLink) + {/*źŻLINK뱾߼յͬ*/ + pLgScCfgDtStr->wRelateEndSigId[pLgScCfgDtStr->chRelateEndSigSum] = dquCICfgDtStr.SgnlCfgDtStr[ii].SignalId; + pLgScCfgDtStr->chRelateEndSigSum++; + } + } + else + { + if ((dquCICfgDtStr.SgnlCfgDtStr[ii].wProtectLinkId == pLgScCfgDtStr->wOrgnLink) || (dquCICfgDtStr.SgnlCfgDtStr[ii].wProtectLinkId == pLgScCfgDtStr->wTmnlLink)) + {/*źŻLINK߼յLINKͬΪ߼ιնźŻ*/ + pLgScCfgDtStr->wRelateEndSigId[pLgScCfgDtStr->chRelateEndSigSum] = dquCICfgDtStr.SgnlCfgDtStr[ii].SignalId; + pLgScCfgDtStr->chRelateEndSigSum++; + } } } else { - if ((dquCICfgDtStr.SgnlCfgDtStr[ii].wProtectLinkId == pLgScCfgDtStr->wOrgnLink) || (dquCICfgDtStr.SgnlCfgDtStr[ii].wProtectLinkId == pLgScCfgDtStr->wTmnlLink)) - {/*źŻLINK߼յLINKͬΪ߼ιնźŻ*/ - pLgScCfgDtStr->wRelateEndSigId[pLgScCfgDtStr->chRelateEndSigSum] = dquCICfgDtStr.SgnlCfgDtStr[ii].SignalId; - pLgScCfgDtStr->chRelateEndSigSum++; + /*źŻLINKLINKΪͬһǾͷߵķźŻ*/ + if (((dquCICfgDtStr.SgnlCfgDtStr[ii].wProtectLinkId == pLgScCfgDtStr->wOrgnLink) || (dquCICfgDtStr.SgnlCfgDtStr[ii].wProtectLinkId == pLgScCfgDtStr->wTmnlLink)) + && ((pLgScCfgDtStr->dwOrgnOffset <= dquCICfgDtStr.SgnlCfgDtStr[ii].dwProtectOff) && (dquCICfgDtStr.SgnlCfgDtStr[ii].dwProtectOff <= pLgScCfgDtStr->dwTmnlOffset))) + {/*źŻLINK߼յLINKͬźŻLINKƫڱ߼ƫΧ֮ڼΪ߼ιʼźŻ*/ + pLgScCfgDtStr->wRelateBeginSigId[pLgScCfgDtStr->chRelateBeginSigSum] = dquCICfgDtStr.SgnlCfgDtStr[ii].SignalId; + pLgScCfgDtStr->chRelateBeginSigSum++; + } + if ((0U == pLgScCfgDtStr->dwOrgnOffset) && (dsuStaticHeadStru.pLinkStru[g_dsuEmapStru->dsuEmapIndexStru->dsuLinkIndex[pLgScCfgDtStr->wTmnlLink]].dwLength != pLgScCfgDtStr->dwTmnlOffset)) + {/*߼ƫΪ0յ㲻һLINK*/ + if ((dquCICfgDtStr.SgnlCfgDtStr[ii].wOutFirstLinkId == pLgScCfgDtStr->wOrgnLink) && (dquCICfgDtStr.SgnlCfgDtStr[ii].wProtectLinkId == dsuStaticHeadStru.pLinkStru[g_dsuEmapStru->dsuEmapIndexStru->dsuLinkIndex[pLgScCfgDtStr->wOrgnLink]].wOrgnJointMainLkId)) + {/*źŻⷽһLINK뱾߼ͬLINKΪ߼LINK*/ + pLgScCfgDtStr->wRelateEndSigId[pLgScCfgDtStr->chRelateEndSigSum] = dquCICfgDtStr.SgnlCfgDtStr[ii].SignalId; + pLgScCfgDtStr->chRelateEndSigSum++; + } + } + else if ((0U != pLgScCfgDtStr->dwOrgnOffset) && (dsuStaticHeadStru.pLinkStru[g_dsuEmapStru->dsuEmapIndexStru->dsuLinkIndex[pLgScCfgDtStr->wTmnlLink]].dwLength == pLgScCfgDtStr->dwTmnlOffset)) + {/*߼㲻ΪһLINKյһLINK*/ + if ((dquCICfgDtStr.SgnlCfgDtStr[ii].wOutFirstLinkId == pLgScCfgDtStr->wTmnlLink) && (dquCICfgDtStr.SgnlCfgDtStr[ii].wProtectLinkId == dsuStaticHeadStru.pLinkStru[g_dsuEmapStru->dsuEmapIndexStru->dsuLinkIndex[pLgScCfgDtStr->wTmnlLink]].wTmnlJointMainLkId)) + {/*źŻⷽһLINK뱾߼յͬLINKΪ߼յLINK*/ + pLgScCfgDtStr->wRelateEndSigId[pLgScCfgDtStr->chRelateEndSigSum] = dquCICfgDtStr.SgnlCfgDtStr[ii].SignalId; + pLgScCfgDtStr->chRelateEndSigSum++; + } + } + else + { + if ((dquCICfgDtStr.SgnlCfgDtStr[ii].wOutFirstLinkId == pLgScCfgDtStr->wOrgnLink) || (dquCICfgDtStr.SgnlCfgDtStr[ii].wOutFirstLinkId == pLgScCfgDtStr->wTmnlLink)) + {/*źŻⷽһLINK߼յLINKͬΪ߼ιնźŻ*/ + pLgScCfgDtStr->wRelateEndSigId[pLgScCfgDtStr->chRelateEndSigSum] = dquCICfgDtStr.SgnlCfgDtStr[ii].SignalId; + pLgScCfgDtStr->chRelateEndSigSum++; + } } } } else { - /*źŻLINKLINKΪͬһǾͷߵķźŻ*/ - if (((dquCICfgDtStr.SgnlCfgDtStr[ii].wProtectLinkId == pLgScCfgDtStr->wOrgnLink) || (dquCICfgDtStr.SgnlCfgDtStr[ii].wProtectLinkId == pLgScCfgDtStr->wTmnlLink)) - && ((pLgScCfgDtStr->dwOrgnOffset <= dquCICfgDtStr.SgnlCfgDtStr[ii].dwProtectOff) && (dquCICfgDtStr.SgnlCfgDtStr[ii].dwProtectOff <= pLgScCfgDtStr->dwTmnlOffset))) - {/*źŻLINK߼յLINKͬźŻLINKƫڱ߼ƫΧ֮ڼΪ߼ιʼźŻ*/ - pLgScCfgDtStr->wRelateBeginSigId[pLgScCfgDtStr->chRelateBeginSigSum] = dquCICfgDtStr.SgnlCfgDtStr[ii].SignalId; - pLgScCfgDtStr->chRelateBeginSigSum++; - } - if ((0U == pLgScCfgDtStr->dwOrgnOffset) && (dsuStaticHeadStru.pLinkStru[g_dsuEmapStru->dsuEmapIndexStru->dsuLinkIndex[pLgScCfgDtStr->wTmnlLink]].dwLength != pLgScCfgDtStr->dwTmnlOffset)) - {/*߼ƫΪ0յ㲻һLINK*/ - if ((dquCICfgDtStr.SgnlCfgDtStr[ii].wOutFirstLinkId == pLgScCfgDtStr->wOrgnLink) && (dquCICfgDtStr.SgnlCfgDtStr[ii].wProtectLinkId == dsuStaticHeadStru.pLinkStru[g_dsuEmapStru->dsuEmapIndexStru->dsuLinkIndex[pLgScCfgDtStr->wOrgnLink]].wOrgnJointMainLkId)) - {/*źŻⷽһLINK뱾߼ͬLINKΪ߼LINK*/ - pLgScCfgDtStr->wRelateEndSigId[pLgScCfgDtStr->chRelateEndSigSum] = dquCICfgDtStr.SgnlCfgDtStr[ii].SignalId; - pLgScCfgDtStr->chRelateEndSigSum++; - } - } - else if ((0U != pLgScCfgDtStr->dwOrgnOffset) && (dsuStaticHeadStru.pLinkStru[g_dsuEmapStru->dsuEmapIndexStru->dsuLinkIndex[pLgScCfgDtStr->wTmnlLink]].dwLength == pLgScCfgDtStr->dwTmnlOffset)) - {/*߼㲻ΪһLINKյһLINK*/ - if ((dquCICfgDtStr.SgnlCfgDtStr[ii].wOutFirstLinkId == pLgScCfgDtStr->wTmnlLink) && (dquCICfgDtStr.SgnlCfgDtStr[ii].wProtectLinkId == dsuStaticHeadStru.pLinkStru[g_dsuEmapStru->dsuEmapIndexStru->dsuLinkIndex[pLgScCfgDtStr->wTmnlLink]].wTmnlJointMainLkId)) - {/*źŻⷽһLINK뱾߼յͬLINKΪ߼յLINK*/ - pLgScCfgDtStr->wRelateEndSigId[pLgScCfgDtStr->chRelateEndSigSum] = dquCICfgDtStr.SgnlCfgDtStr[ii].SignalId; - pLgScCfgDtStr->chRelateEndSigSum++; - } - } - else - { - if ((dquCICfgDtStr.SgnlCfgDtStr[ii].wOutFirstLinkId == pLgScCfgDtStr->wOrgnLink) || (dquCICfgDtStr.SgnlCfgDtStr[ii].wOutFirstLinkId == pLgScCfgDtStr->wTmnlLink)) - {/*źŻⷽһLINK߼յLINKͬΪ߼ιնźŻ*/ - pLgScCfgDtStr->wRelateEndSigId[pLgScCfgDtStr->chRelateEndSigSum] = dquCICfgDtStr.SgnlCfgDtStr[ii].SignalId; - pLgScCfgDtStr->chRelateEndSigSum++; - } - } + /*ťźŻ߼ιźŻ*/ + } + + if ((LOGSEC_RELATE_SIG_SUM_MAX < pLgScCfgDtStr->chRelateEndSigSum) || (LOGSEC_RELATE_SIG_SUM_MAX < pLgScCfgDtStr->chRelateBeginSigSum)) + { + rtnvalue = 0U; + debug_infor_printf((const)"LogicSecCfgDtStruFromDquSgmtStr Error: LogSec Rel Begin or End Signal Num Is Exceed Max\n"); + break; + } + else + { + /*ʼ*/ } } - else - { - /*ťźŻ߼ιźŻ*/ - } - - if ((LOGSEC_RELATE_SIG_SUM_MAX < pLgScCfgDtStr->chRelateEndSigSum) || (LOGSEC_RELATE_SIG_SUM_MAX < pLgScCfgDtStr->chRelateBeginSigSum)) - { - rtnvalue = 0U; - debug_infor_printf((const)"LogicSecCfgDtStruFromDquSgmtStr Error: LogSec Rel Begin or End Signal Num Is Exceed Max\n"); - break; - } - else - { - /*ʼ*/ - } + } + else + {/*߼Ϊͬһзͷβ*/ + pLgScCfgDtStr->chRelateBeginSigSum = 0U; + pLgScCfgDtStr->chRelateEndSigSum = 0U; } } else - {/*߼Ϊͬһзͷβ*/ + { pLgScCfgDtStr->chRelateBeginSigSum = 0U; pLgScCfgDtStr->chRelateEndSigSum = 0U; + /*֧ʱʼֶ*/ } + #if 0 /* Ԥ*/ /*߼ιߵ*/ @@ -3500,7 +3502,7 @@ UINT8 OverlapCfgDtStruFromDquStr(DSU_PROTECT_LINK_STRU * pProtectLink, OverlapCo { if (pOvlpCfgDtStr->SideProtecGroupData.GroupID == LSData.pLSSideProtecGroupStru[k].GroupID)/*ݲIDƥ*/ { - CommonMemCpy(&pOvlpCfgDtStr->SideProtecGroupData, sizeof(SideProtecGroupStru), &LSData.pLSSideProtecGroupStru[k], sizeof(SideProtecGroupStru)); + (void)CommonMemCpy(&pOvlpCfgDtStr->SideProtecGroupData, sizeof(SideProtecGroupStru), &LSData.pLSSideProtecGroupStru[k], sizeof(SideProtecGroupStru)); break; } } @@ -3918,6 +3920,8 @@ UINT8 PsdConfigDataStructInit(CHAR * FSName) UINT16 wLogSectionId = 0u; UINT8 k = 0u; INT16 rtVal = -1; + UINT16 wPhyIndex = 0U; + UINT16 wLogicSgmtIndex = 0U; callFun = dfsEmapInit (FSName); callFun *= InitRelay_ScreenStru (FSName); @@ -3976,8 +3980,16 @@ UINT8 PsdConfigDataStructInit(CHAR * FSName) dquCICfgDtStr.PsdCfgDtStr[i].PsdRelationPhySecId = dsuStaticHeadStru.pAxleSgmtStru[j].wRelatePhysicalSgmtId; break; } - } + if (j == dsuDataLenStru.wAxleSgmtLen) + { + rtnvalue = 0u; + } + else + { + /*޴*/ + } + } @@ -3986,51 +3998,53 @@ UINT8 PsdConfigDataStructInit(CHAR * FSName) /*ʼվ̨ŹESB*/ wPhySecId = 0U; wLogSectionId = 0U; - if (1u == rtnvalue) + wPhyIndex = 0U; + wLogicSgmtIndex = 0U; + if (1U == rtnvalue) { wPhySecId = dquCICfgDtStr.PsdCfgDtStr[i].PsdRelationPhySecId; - for (j = 0u; j < dquCICfgDtStr.PsclSgmtCfgDtStrLen; j++) + if ((0U < wPhySecId) && (PHYSICAL_SECTION_SUM_MAX > wPhySecId)) { - if (wPhySecId == dquCICfgDtStr.PsclSgmtCfgDtStr[j].PhysicalSectionId) + wPhyIndex = dsuPhysicalSgmtIndex[wPhySecId];/*ȡ*/ + wLogSectionId = dquCICfgDtStr.PsclSgmtCfgDtStr[wPhyIndex].LogSectionIdBuf[0];/*ƥһ߼μ*/ + + if ((0U < wLogSectionId) && (LOGIC_SECTION_SUM_MAX > wLogSectionId)) { - wLogSectionId = dquCICfgDtStr.PsclSgmtCfgDtStr[j].LogSectionIdBuf[0];/*ƥһ߼μ*/ - break; + wLogicSgmtIndex = dsuLogicSgmtIndex[wLogSectionId]; } - } - if (0u < wLogSectionId) - { - for (j = 0u; j < dquCICfgDtStr.lgcSctCfgDtStrLen; j++) + else { - if (wLogSectionId == dquCICfgDtStr.lgcSctCfgDtStr[j].LogicSectionId) - { - for (k = 0u; k < dquCICfgDtStr.lgcSctCfgDtStr[j].logSecRltEsbSum; k++) - { - rtVal = SetNoRepeatDataToBuf(dquCICfgDtStr.PsdCfgDtStr[i].IncloudeEsbIdBuf, PSD_INCLUDE_ESB_NUM, dquCICfgDtStr.lgcSctCfgDtStr[j].logSecRltEsbBuf[k], dquCICfgDtStr.PsdCfgDtStr[i].IncloudeEsbNum); - if (-1 != rtVal) - { - dquCICfgDtStr.PsdCfgDtStr[i].IncloudeEsbNum = (UINT8)rtVal; - } - else - { - rtnvalue = 0u; - } - } - break; - } + rtnvalue = 0U;/*Ƿֵʼʧ*/ } } else - {/*ѯ󣬷ʧ*/ - rtnvalue = 0u; + { + 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; + } + } } } } - if ((0u == rtnvalue) || (j == dsuDataLenStru.wAxleSgmtLen)) + if (0u == rtnvalue) { break; } @@ -4547,6 +4561,7 @@ UINT8 NonRouteCfgDtStruFrmLSStr( LS_NoRouteDcStru * pLSNoRouteDcStr,NonRouteConf pNonRouteCfgDtStr->AgreeTryTrainRelayId = RelayData.pRelayNoRouteDcStr[i].wRelayTongYiScId; pNonRouteCfgDtStr->DrvApplyTryTrainRelayId = RelayData.pRelayNoRouteDcStr[i].wRelayDrvShiCheShengQingId; pNonRouteCfgDtStr->ColAgreeTryTrainRelayId = RelayData.pRelayNoRouteDcStr[i].wRelayColTongYiScId; + pNonRouteCfgDtStr->ColWaysideTryTrainIndRelayId = RelayData.pRelayNoRouteDcStr[i].wWaysideTryTrainIndRelayId; } } @@ -5007,7 +5022,7 @@ UINT8 RouteCfgDtStruFrmLSRouteStr( LS_RouteStruct * pLSRouteStr,RouteConfigDataS UINT8 isEachInvFlag = 0U; UINT16 wLgcSecIndex = 0U; /*߼*/ UINT8 chLocalCiPattern = 0u; /*CIģʽ*/ - + UINT8 chRtuCiType = 0U; lineIdentity = GetCiFunctionSwitchConfig(LINE_RAILWAY_TYPE_CONF);/*??????:0x55:????;0xAA:????*/ /*ڲ*/ @@ -5019,7 +5034,7 @@ UINT8 RouteCfgDtStruFrmLSRouteStr( LS_RouteStruct * pLSRouteStr,RouteConfigDataS pRouteCfgDtStr->RouteId = pLSRouteStr->wRouteId; pRouteCfgDtStr->BelongCiId = (UINT8)pDsuRouteStr->wManageCI; - + pRouteCfgDtStr->chRouteConfigDirection = pLSRouteStr->wDir; if (pLSRouteStr->wDir == dquCICfgDtStr.SystemParaStrNew.LinkLogicDirUpAndDown) { pRouteCfgDtStr->RouteDirection = CI_SYSTEM_DIRECTION_DOWN; @@ -5057,7 +5072,18 @@ UINT8 RouteCfgDtStruFrmLSRouteStr( LS_RouteStruct * pLSRouteStr,RouteConfigDataS rtnvalue = CI_ERROR; } - ciType = GetdsuStaticDataCiType(pRouteCfgDtStr->BelongCiId);/*·*/ + chRtuCiType = GetLocalVirCiType(pRouteCfgDtStr->BelongVirCIid); + if (CI_TYPE_SCX == chRtuCiType) + { + /*жRTUǷǺԳ*/ + ciType = CI_TYPE_SCX; + } + else + { + ciType = GetdsuStaticDataCiType(pRouteCfgDtStr->BelongCiId);/*·*/ + } + + if ((CI_ERROR != ciType)&&(CI_ERROR!= rtnvalue)) { /*·*/ @@ -7023,7 +7049,7 @@ UINT8 RouteCfgDtStruFrmLSRouteStr( LS_RouteStruct * pLSRouteStr,RouteConfigDataS { if (LSData.pLSSideProtecGroupStru[i].GroupID == pRouteCfgDtStr->RouteSideProtecData.GroupID) { - CommonMemCpy(&pRouteCfgDtStr->RouteSideProtecData, sizeof(SideProtecGroupStru), &LSData.pLSSideProtecGroupStru[i], sizeof(SideProtecGroupStru)); + (void)CommonMemCpy(&pRouteCfgDtStr->RouteSideProtecData, sizeof(SideProtecGroupStru), &LSData.pLSSideProtecGroupStru[i], sizeof(SideProtecGroupStru)); break; } } @@ -7093,7 +7119,7 @@ UINT8 RouteConfigDataStruLogDataInit(RouteConfigDataStruct * pRouteCfgDtStr, LS_ if(ROUTE_NOT_HAVE_DIR_CHANGE_POINT == pRouteCfgDtStr->HaveDirChangePointInRoute) { /*Ϊ0x55(linkͬ)*/ - if(CI_SYSTEM_DIRECTION_UP == cRouteDir) + if(DIR_SAME == cRouteDir) { for(i = 0U; i < routeAxleNum; i++) { @@ -7109,7 +7135,7 @@ UINT8 RouteConfigDataStruLogDataInit(RouteConfigDataStruct * pRouteCfgDtStr, LS_ } } /*Ϊ0xaa(link෴,߼ȡ)*/ - else if(CI_SYSTEM_DIRECTION_DOWN == cRouteDir) + else if(DIR_CONVERT == cRouteDir) { for(i = 0U; i < routeAxleNum; i++) { @@ -7137,7 +7163,7 @@ UINT8 RouteConfigDataStruLogDataInit(RouteConfigDataStruct * pRouteCfgDtStr, LS_ else { /*Ϊ0x55(linkͬ)*/ - if(CI_SYSTEM_DIRECTION_UP == cRouteDir) + if(DIR_SAME == cRouteDir) { for(i = 0u; i < routeAxleNum; i++) { @@ -7182,7 +7208,7 @@ UINT8 RouteConfigDataStruLogDataInit(RouteConfigDataStruct * pRouteCfgDtStr, LS_ } } /*Ϊ0xaa(link෴,߼ȡ)*/ - else if(CI_SYSTEM_DIRECTION_DOWN == cRouteDir) + else if(DIR_CONVERT == cRouteDir) { for(i = 0u; i < routeAxleNum; i++) { @@ -7255,7 +7281,7 @@ UINT8 RouteConfigDataStructInit(CHAR * FSName) UINT8 callFun = 0u; UINT16 i=0u; UINT8 execRet = 0u; - UINT8 chDataType = DATA_TYPE_NEW; + UINT8 chDataType = DATA_TYPE_MAIN_BRANCH; chDataType = GetLocalPublicDataType();/*28.0.0.14߼ι·ʼ*/ callFun = dfsEmapInit(FSName); callFun *= InitLS_RouteStruct(FSName); @@ -7334,7 +7360,10 @@ UINT8 RouteConfigDataStructInit(CHAR * FSName) { rtnvalue = 0u; } - execRet = RouteOpposedConfigDataInite(dquCICfgDtStr.RouteCfgDtStr,&(dquCICfgDtStr.RouteCfgDtStr[i])); + else + { + execRet = RouteOpposedConfigDataInite(dquCICfgDtStr.RouteCfgDtStr, &(dquCICfgDtStr.RouteCfgDtStr[i])); + } /*ִ·ʼ*/ if(execRet > 0u) { @@ -7374,7 +7403,10 @@ UINT8 RouteConfigDataStructInit(CHAR * FSName) { rtnvalue = 0u; } - execRet = RouteOutLgcSecConfigDataInit(&(dquCICfgDtStr.RouteCfgDtStr[i])); + else + { + execRet = RouteOutLgcSecConfigDataInit(&(dquCICfgDtStr.RouteCfgDtStr[i])); + } /*ִ·ʼ*/ if (execRet > 0u) { @@ -7396,54 +7428,67 @@ UINT8 RouteConfigDataStructInit(CHAR * FSName) { for (i = 0u; i < LSDataLen.LSRouteStrLen; i++) { - if (i >= ROUTE_SUM_MAX) + if (ROUTE_SUM_MAX <= i) { rtnvalue = 0u; } else { - callFun = GetdsuStaticDataCiType(dquCICfgDtStr.RouteCfgDtStr[i].BelongCiId); - if (CI_ERROR != callFun) + if (DATA_TYPE_MAIN_BRANCH == chDataType) { - if ((CI_TYPE_ZX == callFun) || (CI_TYPE_SCX == callFun)) + callFun = GetdsuStaticDataCiType(dquCICfgDtStr.RouteCfgDtStr[i].BelongCiId); + if (CI_ERROR != callFun) { - execRet = RouteMainProConfigDataInit(dquCICfgDtStr.RouteCfgDtStr, &(dquCICfgDtStr.RouteCfgDtStr[i])); - if (execRet > 0u) + if ((CI_TYPE_ZX == callFun) || (CI_TYPE_SCX == callFun)) { + execRet = RouteMainProConfigDataInit(dquCICfgDtStr.RouteCfgDtStr, &(dquCICfgDtStr.RouteCfgDtStr[i])); + if (execRet > 0u) + { + } + else + {/*úʧܣ0*/ + rtnvalue = 0u; + } + if (1U != rtnvalue) + { + break; + } } else - {/*úʧܣ0*/ - rtnvalue = 0u; - } - if (1U != rtnvalue) { - break; + dquCICfgDtStr.RouteCfgDtStr[i].MainOrSubData.RouteBelMainSum = 0U; + dquCICfgDtStr.RouteCfgDtStr[i].MainOrSubData.RouteSubSum = 0U; + dquCICfgDtStr.RouteCfgDtStr[i].MainOrSubData.MainRouteProperty = ROUTE_INIT_PROPERTY; /*ĬΪͨ·*/ } } else { - dquCICfgDtStr.RouteCfgDtStr[i].MainOrSubData.RouteBelMainSum = 0U; - dquCICfgDtStr.RouteCfgDtStr[i].MainOrSubData.RouteSubSum = 0U; - dquCICfgDtStr.RouteCfgDtStr[i].MainOrSubData.MainRouteProperty = ROUTE_INIT_PROPERTY; /*ĬΪͨ·*/ + rtnvalue = 0u; /*ͻȡʧ*/ } } else { - rtnvalue = 0u; /*ͻȡʧ*/ + /*28.0.0.x23.2.1.xݽṹݲ֧·ӽ·ݳʼ*/ + dquCICfgDtStr.RouteCfgDtStr[i].MainOrSubData.RouteBelMainSum = 0U; + dquCICfgDtStr.RouteCfgDtStr[i].MainOrSubData.RouteSubSum = 0U; + dquCICfgDtStr.RouteCfgDtStr[i].MainOrSubData.MainRouteProperty = ROUTE_INIT_PROPERTY; /*ĬΪͨ·*/ } - } + + } } + } /*߼ι·*/ if (1u == rtnvalue) { - if (DATA_TYPE_NEW == chDataType) + if (DATA_TYPE_MAIN_BRANCH == chDataType) { for (i = 0u; i < dquCICfgDtStr.lgcSctCfgDtStrLen; i++) { execRet = LogRelateRouteDataInit(dquCICfgDtStr.RouteCfgDtStr, &(dquCICfgDtStr.lgcSctCfgDtStr[i]));/*߼ι·*/ execRet *= LogRelateProSwDataInit(dquCICfgDtStr.RouteCfgDtStr, &(dquCICfgDtStr.lgcSctCfgDtStr[i]));/*߼ι*/ + execRet *= LogRelateOverlapDataInit(dquCICfgDtStr.OvlapCfgDtStr, &(dquCICfgDtStr.lgcSctCfgDtStr[i]));/*߼ι*/ if (execRet > 0u) { @@ -9497,6 +9542,10 @@ UINT8 CiPatternInit(CHAR* FSName) SetLocalWaysidePattern(pDataAddr[11]); rtnValue = SetSystemWorkType(pDataAddr[12]); + + /*Ƿ֧OC-S*/ + rtnValue &=SetLocalCiOCSswitch(pDataAddr[13]); + } findFlag = 1u; } @@ -10189,44 +10238,6 @@ UINT8 OCConfigDataStructInit(UINT16* len, CHAR* FSName, UINT32 DataTypeID, UINT3 return rtnValue; } - -/********************************************* -*ܣʼOC ñ -*˵FSNameļָ -*ֵ0ʧܣ1ɹ -*********************************************/ -UINT8 OCSwitchConfigDataStructInit(CHAR *FSName) -{ - UINT8 rtnValue = 0u; - UINT16 len = 0u; - UINT16 i = 0u; - UINT8 ArrBuff[MEMBERA_SUM_MAX] = { 0u }; - OCSwitchConfigDataStruct OCSwitchCfgStrBuff[SWITCH_SUM_MAX] = { 0u }; - - /*index0ṹԱ˳ṹԱ*/ - ArrBuff[0] = OC_SWITCH_CFG_STR_MEMBER_NUM; - ArrBuff[1] = (UINT8)sizeof(OCSwitchCfgStrBuff[0].SwitchId); - ArrBuff[2] = (UINT8)sizeof(OCSwitchCfgStrBuff[0].BelongOcId); - (void)memset(dquCICfgDtStr.OCSwitchCfgStr, 0x00, sizeof(OCSwitchConfigDataStruct) * SWITCH_SUM_MAX); - - rtnValue = OCConfigDataStructInit(&len, FSName, OC_DATA_TYPE, OC_SWITCH_ID, SWITCH_SUM_MAX, \ - (void*)OCSwitchCfgStrBuff, ArrBuff); - - if (1u == rtnValue) - { - /*OCSwitchCfgStr鳤*/ - dquCICfgDtStr.OCSwitchCfgStrLen = len; - for (i = 0u; i < len; i++) - { - if (OCSwitchCfgStrBuff[i].SwitchId < SWITCH_SUM_MAX) - { - dquCICfgDtStr.OCSwitchCfgStr[OCSwitchCfgStrBuff[i].SwitchId] = OCSwitchCfgStrBuff[i]; - } - } - } - - return rtnValue; -} /********************************************* *ܣʼOC ת޻״ָ̬ʾƱ *˵FSNameļָ @@ -10298,6 +10309,83 @@ UINT8 OCSwitchCfgZzjDataStuInit(CHAR* FSName) return rtnValue; } + +/********************************************* +*ܣʼOC ñ +*˵FSNameļָ +*ֵ0ʧܣ1ɹ +*********************************************/ +UINT8 OCSwitchConfigDataStructInit(CHAR* FSName) +{ + UINT8 rtnValue = 0u; + UINT8* pDataAddr = NULL; /*ݵַ*/ + UINT32 DataSize = 0u; /*ݴСֽ*/ + UINT8 funcRtn = 0u; + UINT16 realRowCount = 0u; /*ʵʱݵ*/ + UINT16 i = 0u; + UINT16 wDataLen = 0u; /*ݿ*/ + + /*ڲ*/ + if (NULL == FSName) + { + ; /*ڲϷ*/ + } + else + { + /*ȡת޻״ָ̬ʾƱ*/ + funcRtn = dquGetConfigDataNew(FSName, OC_DATA_TYPE, OC_SWITCH_ID, &pDataAddr, &DataSize, &realRowCount); + if (0u == funcRtn) + { + rtnValue = 0u; + } + else + { + rtnValue = 1u; + for (i = 0u; i < SWITCH_SUM_MAX; i++) + { + funcRtn &= CommonMemSet(dquCICfgDtStr.OCSwitchCfgStr, (UINT32)sizeof(OCSwitchConfigDataStruct), 0u, (UINT32)sizeof(OCSwitchConfigDataStruct)); + } + + if (1u == funcRtn) + { + /**/ + } + if ((0u != DataSize) && (0u != realRowCount)) + { + if (0u == (DataSize % realRowCount)) + { + /*ÿֽڳ*/ + wDataLen = (UINT16)(DataSize / realRowCount); + for (i = 0u; i < realRowCount; i++) + { + /*ñ*/ + (void)R_OCSwitchModeCfgDataFromChar(pDataAddr); + pDataAddr += wDataLen; + } + + if (dquCICfgDtStr.OCSwitchCfgStrLen != realRowCount) + { + /*ݴ*/ + rtnValue = 0u; + } + } + else + { + /*ݴ*/ + rtnValue = 0u; + } + } + else + { + ; /**/ + } + + } + + } + + return rtnValue; +} #if 0 /********************************************* *ܣʼOC ñ----- δ @@ -11929,37 +12017,7 @@ UINT8 EaConfigDataStruFromDquEaStr(DSU_EMAP_EA_STRU* pEa, EaConfigStru* pEaCfgDt rtnvalue = 1u; return rtnvalue; } -/********************************************* -*ܣOC ñ -*˵pDataAddr ݵַ -*ֵ0ʧܣ1ɹ -*עcgh-ϲCID-2539-5޸ijʼOC_ݱСģñźŻģñģñijʼʽijʼʽһ -*********************************************/ -void R_OCSwitchConfigDataFromChar(UINT8* pDataAddr) -{ - UINT8* pData = NULL; - UINT16 SwitchIdTemp = 0u; - if (NULL == pDataAddr) - { - ; /*ڲΪգн*/ - } - else - { - pData = pDataAddr; - SwitchIdTemp = ShortFromChar(pData); - if (SwitchIdTemp < SWITCH_SUM_MAX) - { - /*ID--2ֽ*/ - dquCICfgDtStr.OCSwitchCfgStr[SwitchIdTemp].SwitchId = SwitchIdTemp; - pData += 2u; - - /*OC--2ֽ*/ - dquCICfgDtStr.OCSwitchCfgStr[SwitchIdTemp].BelongOcId = ShortFromChar(pData); - pData += 2u; - } - } -} /********************************************* *ܣOC ת޻״ָ̬ʾƱ @@ -12388,6 +12446,11 @@ UINT8 LogRelateProSwDataInit(RouteConfigDataStruct* RouteCfgDtStr, LogicSectionC { rtnvalue = 1U; } + + if (1U == rtnvalue) + {/*߼εķ洢߼νṹ*/ + rtnvalue = LogRelateProSwDataByOverlapInit(pLgScCfgDtStr); + } return rtnvalue; } @@ -13698,4 +13761,584 @@ UINT8 SetCldAndScxMergeConfig(void) return ret; } + +/********************************************* +*ܣģñ +*˵pDataAddr ݵַ +*ֵ0ʧܣ1ɹ +* add by mpt 20260325 +*********************************************/ +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) + { + ; /*ڲΪգн*/ + } + else + { + + pData = pDataAddr; + + wSwitchIdTemp = ShortFromChar(pData);/*ID--2ֽ*/ + + + if (SWITCH_SUM_MAX > wSwitchIdTemp) + { + dquCICfgDtStr.OCSwitchCfgStr[dquCICfgDtStr.OCSwitchCfgStrLen].SwitchId = wSwitchIdTemp; + pData += 2u; + + 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; + pData += 1u;/*ģλ*/ + + /*ģ-B忨ID*/ + dquCICfgDtStr.OCSwitchCfgStr[dquCICfgDtStr.OCSwitchCfgStrLen].ModuleAddrB[i] = *pData; + pData += 1u; + pData += 1u;/*ģλ*/ + + } + } + + dquCICfgDtStr.OCSwitchCfgStrLen++;/**/ + + } + } +} + +/********************************************* +*ܣӵṹ̵ṹ +*˵SwitchConfigDataStruct* pSwitchCfgDtStr ݽṹ +* add by mpt 20260325 +*ֵ0ʧܣ1ɹ +*********************************************/ +UINT8 SwitchCfgDtStruFromOCconfigStr(SwitchConfigDataStruct* pSwitchCfgDtStr) +{ + UINT16 j = 0u; + UINT8 rtnvalue = 0u; + UINT8 ocNum = 0u; + /*ڲ*/ + if (NULL == pSwitchCfgDtStr) + { + /*ʧ*/ + rtnvalue = 0u; + } + else + { + rtnvalue = 1u; + + if (SWITCH_SUM_MAX > pSwitchCfgDtStr->SwitchId) + { + + for (j = 0u; j < SWITCH_SUM_MAX; j++) + { + if (pSwitchCfgDtStr->SwitchId == dquCICfgDtStr.OCSwitchCfgStr[j].SwitchId) + { + if (SWITCH_BELONG_OC_MAX > ocNum) + { + rtnvalue = SwitchOcCfgStrFromOCconfigStr(&pSwitchCfgDtStr->belongOCConfigData[ocNum], &dquCICfgDtStr.OCSwitchCfgStr[j]); + + if (0u != pSwitchCfgDtStr->belongOCConfigData[ocNum].OcId) + { + pSwitchCfgDtStr->BelongOcId = pSwitchCfgDtStr->belongOCConfigData[ocNum].OcId;/*ձһOC*/ + } + ocNum++; + pSwitchCfgDtStr->chSwitchBelongOcNum = ocNum; + + } + + if (0u == rtnvalue) + { + break; + } + + } + } + + + } + else + { + /*ʧ*/ + rtnvalue = 0u; + } + } + + return rtnvalue; +} + +/********************************************* +*ܣ洢OCİ忨ݽṹ +*˵SwitchBelongOCConfigDataStr* pSwitchOCcfgDtStr ýṹ +* OCSwitchConfigDataStruct* pOcCfgDtStr OCñṹ +*ֵ0ʧܣ1ɹ +* add by mpt 20260325 +*********************************************/ +UINT8 SwitchOcCfgStrFromOCconfigStr(SwitchBelongOCConfigDataStr* pSwitchOCcfgDtStr, OCSwitchConfigDataStruct* pOcCfgDtStr) +{ + UINT8 i = 0u; + UINT8 rtnvalue = 0u; + INT16 ret = 0; + UINT8 boardNum = 0u; + /*ڲ*/ + if ((NULL == pSwitchOCcfgDtStr)||(NULL == pOcCfgDtStr)) + { + /*ʧ*/ + rtnvalue = 0u; + } + else + { + pSwitchOCcfgDtStr->OcId = pOcCfgDtStr->BelongOcId; + rtnvalue =1u; + for (i = 0u; i < MAX_OC_SWITCH_INCLUDE_BOARD_NUM; i++) + { + /*ȴAϵ忨*/ + if ((0U != pOcCfgDtStr->ModuleAddrA[i]) && (UINT8_MAX != pOcCfgDtStr->ModuleAddrA[i])) + {/*忨ID0255*/ + ret = SetNoUINT8RepeatDataToBuf((UINT8 *)pSwitchOCcfgDtStr->ModuleAddr, MAX_OC_SWITCH_INCLUDE_BOARD_NUM, pOcCfgDtStr->ModuleAddrA[i], boardNum); + if (-1 != ret) + { + boardNum = ret; + } + else + { + /*ʧ*/ + rtnvalue = 0u; + } + } + /*Aϵ忨Bϵ忨*/ + if (1u == rtnvalue) + { + if ((0U != pOcCfgDtStr->ModuleAddrB[i]) && (UINT8_MAX != pOcCfgDtStr->ModuleAddrB[i])) + {/*忨ID0255*/ + ret = SetNoUINT8RepeatDataToBuf((UINT8*)pSwitchOCcfgDtStr->ModuleAddr, MAX_OC_SWITCH_INCLUDE_BOARD_NUM, pOcCfgDtStr->ModuleAddrB[i], boardNum); + if (-1 != ret) + { + boardNum = ret; + } + else + { + /*ʧ*/ + rtnvalue = 0u; + } + } + } + + if (0u == rtnvalue) + { + break; + } + } + + + if (1u == rtnvalue) + { + pSwitchOCcfgDtStr->chSwitchBoardNum = boardNum; + } + else + { + /*޴*/ + } + } + + return rtnvalue; +} + +/********************************************* +*ܣÿһOCIJ +*˵SwitchConfigDataStruct* pSwitchCfgDtStr ݽṹ +*ֵ0ʧܣ1ɹ +* add by mpt 20260325 +*********************************************/ +UINT8 CalcuSwitchInsertionBoxData(SwitchConfigDataStruct* pSwitchCfgDtStr) +{ + UINT8 rtnvalue = 0u; + UINT8 i = 0u; + UINT8 j = 0u; + UINT8 chBoxId = 0u;/*ID*/ + UINT8 cInsertionBoxNum = 0u; + INT16 ret = 0; + + /*ڲ*/ + if (NULL == pSwitchCfgDtStr) + { + /*ʧ*/ + rtnvalue = 0u; + } + else + { + rtnvalue = 1u; + + for (i = 0u; i < pSwitchCfgDtStr->chSwitchBelongOcNum; i++) + { + /*ͨAϵ忨ַͿ忨ڲ䣬ÿBϵ忨*/ + for (j = 0u; j < pSwitchCfgDtStr->belongOCConfigData[i].chSwitchBoardNum; j++) + { + chBoxId = (pSwitchCfgDtStr->belongOCConfigData[i].ModuleAddr[j] >> 4) & 0x0F;/*ֻȡֵĸֽλ*/ + if ((0U < chBoxId)&&(SWITCH_BOX_NUM > chBoxId)) + { + /*䱾ڵǰOCIJ*/ + if (0u == pSwitchCfgDtStr->belongOCConfigData[i].szPlusBoxId) + { + pSwitchCfgDtStr->belongOCConfigData[i].szPlusBoxId = chBoxId; + } + else + { + if (chBoxId != pSwitchCfgDtStr->belongOCConfigData[i].szPlusBoxId) + {/*һת޻岻ͬһ䣬ʼʧ*/ + /*ʧ*/ + rtnvalue = 0u; + } + } + } + else + { + /*ʧ*/ + rtnvalue = 0u; + } + + if (0u == rtnvalue) + { + break; + } + } + } + + } + + return rtnvalue; +} +/********************************************* +*ܣ䲻ظݽ +*˵Ŀָ +* +*ֵ-1Ϊij,-1Ϊռ +* add by mpt 20260330 +*********************************************/ +INT16 SetNoUINT8RepeatDataToBuf(UINT8* pBuf, UINT16 maxlen, UINT8 dwData, UINT16 currentLen) +{ + UINT16 i = 0u; + INT16 bufNewLen = -1; + + if ((NULL != pBuf) && (maxlen >= currentLen)) + { + for (i = 0u; i < currentLen; i++) + { + if (pBuf[i] == dwData) + { + break; + } + } + if (i == currentLen) + {/**/ + if (maxlen > currentLen) + { + pBuf[i] = dwData; + bufNewLen = (INT16)(currentLen + 1u); + } + else + { + bufNewLen = -1; + } + } + else + {/**/ + bufNewLen = (INT16)currentLen; + } + } + else + { + /*޴*/ + bufNewLen = -1; + } + return bufNewLen; +} +/********************************************* +*ܣ߼ιΣ +*˵pLogCfgDtStrݽṹָ +*ֵ0ʧܣ1ɹ +* add mpt 20260331 +*********************************************/ +UINT8 LogRelateProSwDataByOverlapInit(LogicSectionConfigDataStruct* pLgScCfgDtStr) +{ + UINT8 rtnvalue = 0U; + UINT16 ii = 0U; + UINT16 jj = 0U; + UINT8 kk = 0U; + UINT8 hh = 0U; + UINT8 mm = 0U; + UINT16 wProtectSwSum = 0U;/*߼ι*/ + UINT16 wProtectSwId = 0U;/*߼ιIDɱ*/ + UINT8 chProtectSwFlag = 0U;/*߼ιȥر־*/ + UINT8 chMaxCheck = CI_SUCCESS; + + 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; + 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) + { + break; + } + } + if (CI_ERROR == chMaxCheck) + { + break; + } + } + if (CI_ERROR == chMaxCheck) + { + rtnvalue = 0U; + } + else + { + rtnvalue = 1U; + } + } + + return rtnvalue; +} + +/********************************************* +*ܣ߼ιݳʼ +*˵pOverlapCfgDtStrݽṹָ pLogCfgDtStrݽṹָ +*ֵ0ʧܣ1ɹ +* add by mpt 20260331 +*********************************************/ +UINT8 LogRelateOverlapDataInit(OverlapConfigDataStruct* pOverlapCfgDtStr, LogicSectionConfigDataStruct* pLogCfgDtStr) +{ + UINT16 i = 0U; + UINT16 j = 0U; + UINT8 rtnvalue = 0U; + UINT8 chMaxCheck = CI_SUCCESS; + + if ((NULL != pOverlapCfgDtStr) && (NULL != pLogCfgDtStr)) + { + /*߼ΰĿʼΪ0*/ + pLogCfgDtStr->chRelateOverLapSum = 0U; + for (i = 0U; i < dquCICfgDtStr.OvlapCfgDtStrLen; i++) + {/*б,߼Σ˱Ϊ߼ι*/ + for (j = 0; j < pOverlapCfgDtStr[i].cLogicSectionSum; j++) + { + if (pOverlapCfgDtStr[i].szLogicSectionIdBuf[j] == pLogCfgDtStr->LogicSectionId) + { + if (LOGSEC_RELATE_OVERLAP_SUM_MAX > pLogCfgDtStr->chRelateOverLapSum) + { + pLogCfgDtStr->wRelateOverLapIdBuf[pLogCfgDtStr->chRelateOverLapSum] = pOverlapCfgDtStr[i].OverlapId; + pLogCfgDtStr->chRelateOverLapSum++; + } + else + { + chMaxCheck = CI_ERROR; + } + break; + } + if (CI_ERROR == chMaxCheck) + { + break; + } + } + if (CI_ERROR == chMaxCheck) + { + break; + } + } + if (CI_ERROR == chMaxCheck) + { + rtnvalue = 0U; + } + else + { + rtnvalue = 1U; + } + } + + return rtnvalue; +} + +/********************************************* +*ܣ߼ݽṹ +*˵LogsecSwitchStruct* pSrcSwitchStructBuf Դ + UINT8 chSrclen Դݳ + AxisSwitchStruct* pDstSwitchStructBuf Ŀ + UINT8 dstLen Ŀݳ +*ֵ-1ʧܣΪ +*add by mpt 20260331 +*********************************************/ +INT16 AxisSecCfgDtStruFromLogicSecStr(LogsecSwitchStruct* pSrcSwitchStructBuf,UINT8 chSrclen, AxisSwitchStruct* pDstSwitchStructBuf,UINT8 dstLen) +{ + UINT8 i = 0u; + UINT8 j = 0u; + INT16 rtnvalue = -1; + UINT8 tempLen = 0u; + + if ((NULL != pSrcSwitchStructBuf) && (NULL != pDstSwitchStructBuf)) + { + rtnvalue = 0; + tempLen = dstLen; + for (i = 0u; i < chSrclen; i++) + { + for (j = 0u; j < dstLen; j++) + { + if ((pSrcSwitchStructBuf[i].SwitchId == pDstSwitchStructBuf[j].SwitchId) && (pSrcSwitchStructBuf[i].SwitchPosition == pDstSwitchStructBuf[j].SwitchPosition)) + {/*ԴĿѾҵˣ*/ + break; + } + else + { + /**/ + } + } + if (j == dstLen) + {/*Ŀδҵ*/ + if (AXIS_RELATE_PRO_SW_SUM_MAX > tempLen) + { + pDstSwitchStructBuf[tempLen].SwitchId = pSrcSwitchStructBuf[i].SwitchId; + pDstSwitchStructBuf[tempLen].SwitchPosition = pSrcSwitchStructBuf[i].SwitchPosition; + tempLen++; + } + else + { + rtnvalue = -1; + break; + } + } + else + { + /**/ + } + } + } + else + { + /*ʧ*/ + rtnvalue = -1; + } + + if (0 == rtnvalue) + { + rtnvalue = (INT16)tempLen; + } + + return rtnvalue; +} + +/********************************************* +*ܣηʼ +*˵void +*ֵ0ʧܣ1ɹ +* add mpt 20260331 +*********************************************/ +UINT8 AxisSecProtectSwitchInit(void) +{ + UINT16 j = 0u; + UINT16 i = 0u; + INT16 ret = 0; + UINT16 k = 0u; + UINT8 rtnvalue = 0u; + AxisSectionConfigDataStruct* pAxScCfgDtStr = NULL; + + for (k = 0u; k < dquCICfgDtStr.AxisCfgDtStrLen; k++) + { + pAxScCfgDtStr = &dquCICfgDtStr.AxisSctCfgDtStr[k]; + + + for (i = 0u; i < pAxScCfgDtStr->LogSectionSum; i++) + { + for (j = 0u; j < dquCICfgDtStr.lgcSctCfgDtStrLen; j++) + { + if (dquCICfgDtStr.lgcSctCfgDtStr[j].LogicSectionId == pAxScCfgDtStr->LogSectionIdBuf[i]) + { + /**/ + ret = AxisSecCfgDtStruFromLogicSecStr(dquCICfgDtStr.lgcSctCfgDtStr[j].wRelateProSwId, dquCICfgDtStr.lgcSctCfgDtStr[j].chRelateProSwSum, pAxScCfgDtStr->wRelateProSwId, pAxScCfgDtStr->chRelateProSwSum); + if (-1 != ret) + { + pAxScCfgDtStr->chRelateProSwSum = ret;/**/ + } + break; + } + } + if (-1 == ret) + { + break; + } + } + + + if (-1 == ret) + { + break; + } + } + + if (-1 == ret) + { + rtnvalue = 0u; + } + else + { + rtnvalue = 1u; + } + + return rtnvalue; +} + diff --git a/TSCP/src/APP/ciapp/QueryFiles/dquCIInit.h b/TSCP/src/APP/ciapp/QueryFiles/dquCIInit.h index d3f5f08..bb350af 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dquCIInit.h +++ b/TSCP/src/APP/ciapp/QueryFiles/dquCIInit.h @@ -49,9 +49,6 @@ /*4ֽ*/ #define LONG_LEN ((UINT8)4) -/*dquCICfgDtStr.OCSwitchCfgStrгԱ*/ -#define OC_SWITCH_CFG_STR_MEMBER_NUM ((UINT8)2) - /*dquCICfgDtStr.OCSwitchCfgStrгԱ_ɰ*/ #define OC_SWITCH_CFG_STR_MEMBER_NUM_OLD ((UINT8)6) @@ -839,14 +836,6 @@ UINT8 EaConfigDataStruFromDquEaStr(DSU_EMAP_EA_STRU* pEa, EaConfigStru* pEaCfgDt *ֵ0ʧܣ1ɹ *********************************************/ UINT8 EaConfigDataStructInit(CHAR * FSName); - -/********************************************* -*ܣOC ñ -*˵pDataAddr ݵַ -*ֵ0ʧܣ1ɹ -*עcgh-ϲCID-2539-5޸ijʼOC_ݱСģñźŻģñģñijʼʽijʼʽһ -*********************************************/ -void R_OCSwitchConfigDataFromChar(UINT8* pDataAddr); /********************************************* *ܣOC ת޻״ָ̬ʾƱ *˵pDataAddr ݵַ @@ -1011,5 +1000,73 @@ INT16 SetNoRepeatDataToBuf(UINT16* pBuf, UINT16 maxlen, UINT16 dwData, UINT16 cu * add by mpt 20260104 *********************************************/ UINT8 SetCldAndScxMergeConfig(void); +/********************************************* +*ܣģñ +*˵pDataAddr ݵַ +*ֵ0ʧܣ1ɹ +* add by mpt 20260325 +*********************************************/ +void R_OCSwitchModeCfgDataFromChar(UINT8* pDataAddr); +/********************************************* +*ܣ洢OCİ忨ݽṹ +*˵SwitchBelongOCConfigDataStr* pSwitchOCcfgDtStr ýṹ +* OCSwitchConfigDataStruct* pOcCfgDtStr OCñṹ +*ֵ0ʧܣ1ɹ +* add by mpt 20260325 +*********************************************/ +UINT8 SwitchOcCfgStrFromOCconfigStr(SwitchBelongOCConfigDataStr* pSwitchOCcfgDtStr, OCSwitchConfigDataStruct* pOcCfgDtStr); +/********************************************* +*ܣӵṹ̵ṹ +*˵SwitchConfigDataStruct* pSwitchCfgDtStr ݽṹ +*ֵ0ʧܣ1ɹ +* add by mpt 20260325 +*********************************************/ +UINT8 SwitchCfgDtStruFromOCconfigStr(SwitchConfigDataStruct* pSwitchCfgDtStr); +/********************************************* +*ܣÿһOCIJ +*˵SwitchConfigDataStruct* pSwitchCfgDtStr ݽṹ +*ֵ0ʧܣ1ɹ +* add by mpt 20260325 +*********************************************/ +UINT8 CalcuSwitchInsertionBoxData(SwitchConfigDataStruct* pSwitchCfgDtStr); +/********************************************* +*ܣ䲻ظݽ +*˵Ŀָ +* +*ֵ-1Ϊij,-1Ϊռ +* add by mpt 20260330 +*********************************************/ +INT16 SetNoUINT8RepeatDataToBuf(UINT8* pBuf, UINT16 maxlen, UINT8 dwData, UINT16 currentLen); +/********************************************* +*ܣ߼ιݳʼ +*˵pOverlapCfgDtStrݽṹָ pLogCfgDtStrݽṹָ +*ֵ0ʧܣ1ɹ +* add by mpt 20260331 +*********************************************/ +UINT8 LogRelateOverlapDataInit(OverlapConfigDataStruct* pOverlapCfgDtStr, LogicSectionConfigDataStruct* pLogCfgDtStr); +/********************************************* +*ܣ߼ιΣ +*˵pLogCfgDtStrݽṹָ +*ֵ0ʧܣ1ɹ +* add mpt 20260331 +*********************************************/ +UINT8 LogRelateProSwDataByOverlapInit(LogicSectionConfigDataStruct* pLgScCfgDtStr); +/********************************************* +*ܣ߼ݽṹ +*˵LogsecSwitchStruct* pSrcSwitchStructBuf Դ + UINT8 chSrclen Դݳ + AxisSwitchStruct* pDstSwitchStructBuf Ŀ + UINT8 dstLen Ŀݳ +*ֵ-1ʧܣΪ +*add by mpt 20260331 +*********************************************/ +INT16 AxisSecCfgDtStruFromLogicSecStr(LogsecSwitchStruct* pSrcSwitchStructBuf, UINT8 chSrclen, AxisSwitchStruct* pDstSwitchStructBuf, UINT8 dstLen); +/********************************************* +*ܣηʼ +*˵void +*ֵ0ʧܣ1ɹ +* add mpt 20260331 +*********************************************/ +UINT8 AxisSecProtectSwitchInit(void); #endif diff --git a/TSCP/src/APP/ciapp/QueryFiles/dquCIInterFace.c b/TSCP/src/APP/ciapp/QueryFiles/dquCIInterFace.c index 9a3d1bd..b3448cb 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dquCIInterFace.c +++ b/TSCP/src/APP/ciapp/QueryFiles/dquCIInterFace.c @@ -2369,57 +2369,25 @@ UINT8 ReadSystemParamConfDataNew(const UINT8 ciId,SystemParameterStructNew* Syst } if (1u == rtnVal) { /*ӹѯ*/ - /*ƶߴٶȣλdfsInitSubSystemCommonConfigData_CCת*/ - SystemParameterStru->MaxLineLimitSpeed = dquCICfgDtStr.SystemParaStrNew.MaxLineLimitSpeed; /*ʱ(km/h)δеλת*/ SystemParameterStru->MaxTsrSpeed = dquCICfgDtStr.SystemParaStrNew.MaxTsrSpeed; - /*NTPУʱʱСʱ*/ - SystemParameterStru->TimeZoneDifference = dquCICfgDtStr.SystemParaStrNew.TimeZoneDifference; - - /*ͬʻ˫Сȫ(cm))*/ - SystemParameterStru->MABackDistance = dquCICfgDtStr.SystemParaStrNew.MABackDistance; - /*һõʱ*/ SystemParameterStru->MaxTsrNum = dquCICfgDtStr.SystemParaStrNew.MaxTsrNum; /*һʱٱа*/ SystemParameterStru->MaxSectionOfTsr = dquCICfgDtStr.SystemParaStrNew.MaxSectionOfTsr; - /*IVOC-IVOCŹжʱ䣨ms*/ - SystemParameterStru->IvocIvocCommunicationErrorTime = dquCICfgDtStr.SystemParaStrNew.IvocIvocCommunicationErrorTime; - /*IVOC-OCͨŹжʱ(ms)*/ SystemParameterStru->IvocOcCommunicationErrorTime = dquCICfgDtStr.SystemParaStrNew.IvocOcCommunicationErrorTime; - /*VOBC-ITSͨŹжʱ(ms)*/ - SystemParameterStru->VobcAtsCommunicationErrorTime = dquCICfgDtStr.SystemParaStrNew.VobcAtsCommunicationErrorTime; - - /*TMC-ITSͨŹжʱ䣨ms*/ - SystemParameterStru->TmcItsCommunicationErrorTime = dquCICfgDtStr.SystemParaStrNew.TmcItsCommunicationErrorTime; - - /*ITS-OCͨŹжʱ䣨ms*/ - SystemParameterStru->ItsOcCommunicationErrorTime = dquCICfgDtStr.SystemParaStrNew.ItsOcCommunicationErrorTime; - - /*OC-PSDͨŹжʱ䣨ms*/ - SystemParameterStru->OcPsdCommunicationErrorTime = dquCICfgDtStr.SystemParaStrNew.OcPsdCommunicationErrorTime; - - /*IVOC-TSLͨŹжʱ䣨ms*/ - SystemParameterStru->IvocTslCommunicationErrorTime = dquCICfgDtStr.SystemParaStrNew.IvocTslCommunicationErrorTime; - /*OC-TSLͨŹжʱ䣨ms*/ SystemParameterStru->OcTslCommunicationErrorTime = dquCICfgDtStr.SystemParaStrNew.OcTslCommunicationErrorTime; - /*㾫ȷͣMA쳤ȣcm*/ - SystemParameterStru->MALengthForATOParking = dquCICfgDtStr.SystemParaStrNew.MALengthForATOParking; - /*ϵͳ߼зĹϵ*/ SystemParameterStru->LinkLogicDirUpAndDown = dquCICfgDtStr.SystemParaStrNew.LinkLogicDirUpAndDown; - /*ʻ˫Сȫ(cm)*/ - SystemParameterStru->OppositeTrackDistance = dquCICfgDtStr.SystemParaStrNew.OppositeTrackDistance; - /*·½ƶ루λm*/ SystemParameterStru->MaxMALength = dquCICfgDtStr.SystemParaStrNew.MaxMALength; @@ -3465,7 +3433,7 @@ void ReadEmapCiConfig(EmapCiConfigStru emapVerArr[]) for (i = 0u; i < wCIStruSum; i++) { - ciId = (UINT8)(dsuStaticHeadStru.pCIStruStru[i].wID & 0x00FF); + ciId = (UINT8)(dsuStaticHeadStru.pCIStruStru[i].wID & 0x00FFu); emapVerArr[ciId].devId = ciId; emapVerArr[ciId].ciType = (UINT8)(dsuStaticHeadStru.pCIStruStru[i].wType); if (CI_TYPE_TCC == dsuStaticHeadStru.pCIStruStru[i].wType) @@ -3531,7 +3499,7 @@ void ReadEmapCiConfig(EmapCiConfigStru emapVerArr[]) for (i = 0u; i < wRCStruSum; i++) { /*RCδRCʱCIʼ*/ - ciId = (UINT8)(dsuStaticHeadStru.pRCStruStru[i].wID & 0x00FF); + ciId = (UINT8)(dsuStaticHeadStru.pRCStruStru[i].wID & 0x00FFu); emapVerArr[ciId].devId = ciId; emapVerArr[ciId].ciType = (UINT8)(dsuStaticHeadStru.pRCStruStru[i].wType); if (CI_TYPE_TCC == dsuStaticHeadStru.pRCStruStru[i].wType) diff --git a/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruFrmChar.c b/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruFrmChar.c index ce2f60a..5afb0b5 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruFrmChar.c +++ b/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruFrmChar.c @@ -521,13 +521,16 @@ UINT8 R_WashMachineStructFromChar(UINT8* pDataAddr, Relay_WashMachineStruct* pWa pData += 2U; pWashMachineStr->TailWashAllowRelayId = dquCiShortFromChar(pData); /*2̵ID*/ pData += 2U; + pWashMachineStr->wCouplingWashAllowRelayId = dquCiShortFromChar(pData); /*Ҷ˳̵ID*/ + pData += 2U; pWashMachineStr->WashTrainRequestRelayId = dquCiShortFromChar(pData); /*ϴ̵ID*/ pData += 2U; - pWashMachineStr->TrainHeadStopSteadyRelayId = dquCiShortFromChar(pData); /*гͣ1̵ID*/ pData += 2U; pWashMachineStr->TrainTailStopSteadyRelayId = dquCiShortFromChar(pData); /*гͣ2̵ID*/ pData += 2U; + pWashMachineStr->wCoupingStopSteadyRelayId = dquCiShortFromChar(pData); /*Ҷͣȼ̵ID*/ + pData += 2U; pWashMachineStr->TrainOutWashPortAllowRelayId = dquCiShortFromChar(pData);/*̵ID*/ pData += 2U; pWashMachineStr->PauseTrainWashRequestRelayId = dquCiShortFromChar(pData); /*ͣϴ̵ID*/ @@ -611,6 +614,10 @@ UINT8 R_NoRouteDcStruFromChar(UINT8 * pDataAddr,Relay_NoRouteDcStruct* pNoRotStr pNoRotStr->wRelayColTongYiScId = dquCiShortFromChar(pData); /* Գ߲ɼͬԳ̵ID */ pData += 2u; + pNoRotStr->wWaysideTryTrainIndRelayId = dquCiShortFromChar(pData); /* Գָʾ̵ID */ + pData += 2u; + + rtnvalue = 1u; return rtnvalue; diff --git a/TSCP/src/APP/ciapp/QueryFiles/dquCIPZStru.h b/TSCP/src/APP/ciapp/QueryFiles/dquCIPZStru.h index 885f82c..8d41f4a 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dquCIPZStru.h +++ b/TSCP/src/APP/ciapp/QueryFiles/dquCIPZStru.h @@ -40,7 +40,7 @@ #define CI_SYSTEM_OUTSIG_RALATE_AXIS_LEN ((UINT8)82) #define CI_SYSTEM_CI_PATTERN_ID ((UINT8)0x08) /*ñ*/ -#define CI_SYSTEM_CI_PATTERN_LEN ((UINT8)13) /*޸Ϊ13ǷֲʽUT/CTνͣʱ䣬UT/CTӽʱʱ*/ +#define CI_SYSTEM_CI_PATTERN_LEN ((UINT8)14) /*޸Ϊ14ǷֲʽUT/CTνͣʱ䣬UT/CTӽʱʱ*/ #define CI_SYSTEM_VIRCI_INCLUDEOC_ID ((UINT8)0x09) /*OCӦϵ*/ #define CI_SYSTEM_VIRCI_INCLUDEOC_LEN ((UINT8)22) diff --git a/TSCP/src/APP/ciapp/QueryFiles/dquMaskInit.c b/TSCP/src/APP/ciapp/QueryFiles/dquMaskInit.c index 6042967..be8beab 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dquMaskInit.c +++ b/TSCP/src/APP/ciapp/QueryFiles/dquMaskInit.c @@ -304,7 +304,7 @@ UINT8 MaskCfgDtStruFrmCIATSPsdMask(UINT8* FSDataName) MASK_TYPE_PSD_PCB,MASK_TYPE_PSD_POB,MASK_TYPE_PSD_PSB,MASK_TYPE_PSD_PCB_INVALID, MASK_TYPE_PSD_POB_INVALID,MASK_TYPE_PSD_PSB_INVALID,MASK_TYPE_PSD_JXTC_PANGLU, MASK_TYPE_PSD_PCBPSBDPB_PANGLU_STATE,MASK_TYPE_PSD_PDB_FLASH_STATE, - MASK_TYPE_PSD_VIDEO_QK_LU,MASK_TYPE_PSD_VIDEO_QK_HONG,MASK_TYPE_PSD_EXCEPT_OPEN,MASK_TYPE_PSD_JXTCPANGLU_FAULT,MASK_TYPE_PSD_IBP_STATE,MASK_TYPE_PSD_IBP_FAULT,MASK_TYPE_PSD_JXTC_STATE,0U }; + MASK_TYPE_PSD_VIDEO_QK_LU,MASK_TYPE_PSD_VIDEO_QK_HONG,MASK_TYPE_PSD_EXCEPT,MASK_TYPE_PSD_JXTCPANGLU_FAULT,MASK_TYPE_PSD_IBP_STATE,MASK_TYPE_PSD_IBP_FAULT,MASK_TYPE_PSD_JXTC_STATE,0U }; #else UINT8 MaskType[] = { 0u,MASK_TYPE_PSD_STATE_ATS,MASK_TYPE_MUTUALLOCK_STATE,MASK_TYPE_REMORA_STATE, MASK_TYPE_PSD_PCB,MASK_TYPE_PSD_POB,MASK_TYPE_PSD_PSB,MASK_TYPE_PSD_PCB_INVALID,MASK_TYPE_PSD_POB_INVALID,MASK_TYPE_PSD_PSB_INVALID,0 }; #endif @@ -546,7 +546,7 @@ UINT8 MaskCfgDtStruFrmCIATSLogSgmtT(UINT8* FSDataName) MASK_TYPE_LOGICSECTION_JUMPLOCK, MASK_TYPE_UPWARD_DIRECTION, MASK_TYPE_DOWNWARD_DIRECTION, - MASK_TYPE_LOGICSECTION_ARB, + MASK_TYPE_LOGSEC_CBTC_ARB, MASK_TYPE_LOGICSECTION_EMERG_XIANSU,1u }; UINT16 BuChang = 0u; funcRtn = dquGetConfigDataNew(FSDataName, CI_ATS_MASK_TYPE, CI_ATS_LOGIC_SGMT_MASK_ID, &pDataAddr, &DataSize, &rowCount); @@ -594,7 +594,7 @@ UINT8 MaskCfgDtStruFrmCIATSLogSgmtT(UINT8* FSDataName) if ((0xFFFFu != tempMaskId) && (0u != tempMaskId)) { /*00xFFFFЧλ*/ - if ((CI_SUM_MAX > MaskRow) && (CI_TO_ATS_MASK_SUM_MAX > tempMaskId) && (0u < tempMaskId))/*ǷΪЧλֵ*/ + if ((CI_SUM_MAX > MaskRow) && (CI_TO_ATS_MASK_SUM_MAX > tempMaskId))/*ǷΪЧλֵ*/ { ConfigCiToAtsMaskConfigDataStru[MaskRow][tempMaskId].DeviceId = DeviceID; ConfigCiToAtsMaskConfigDataStru[MaskRow][tempMaskId].DeviceType = CI_DEVICE_TYPE_LOGICSEC; @@ -669,8 +669,9 @@ UINT8 MaskCfgDtStruFrmCIATSLogSgmt(UINT8 * FSDataName) MASK_TYPE_LOGICSECTION_JUMPLOCK, MASK_TYPE_UPWARD_DIRECTION, MASK_TYPE_DOWNWARD_DIRECTION, - MASK_TYPE_LOGICSECTION_ARB, + MASK_TYPE_LOGSEC_CBTC_ARB, MASK_TYPE_LOGICSECTION_SPKS_FLOCK, + MASK_TYPE_LOGSEC_PB_TACS_ARB, 1u}; UINT16 BuChang = 0u; funcRtn = dquGetConfigDataNew(FSDataName,CI_ATS_MASK_TYPE,CI_ATS_LOGIC_SGMT_MASK_ID,&pDataAddr,&DataSize,&rowCount); @@ -1426,7 +1427,7 @@ UINT8 MaskCfgDtStruFrmCIATSWashM(UINT8* FSDataName) UINT16 residue = 0u; UINT16 tempMaskId = 0u; /*λIDʱ*/ - UINT8 MaskType[] = { 0u,MASK_TYPE_WASHMACHINE_READYSTATE,MASK_TYPE_WASHMACHINE_WORKMODE,0u }; + UINT8 MaskType[] = { 0u,MASK_TYPE_WASHMACHINE_READYSTATE,0u }; UINT16 BuChang = 0u; funcRtn = dquGetConfigData(FSDataName, CI_ATS_MASK_TYPE, CI_ATS_WASHMACHINE_MASK_ID, &pDataAddr, &DataSize); if (0u == funcRtn) @@ -2459,7 +2460,7 @@ UINT8 MaskCfgDtStruFrmCIZCPsdMask(UINT8 * FSDataName) UINT16 DeviceID=0u; UINT16 tempMaskId = 0u; /*λIDʱ*/ - UINT8 MaskType[] = { 1u,MASK_TYPE_PSD_STATE,MASK_TYPE_PSD_EXCEPT_OPEN,1u }; + UINT8 MaskType[] = { 1u,MASK_TYPE_PSD_STATE,MASK_TYPE_PSD_EXCEPT,1u }; UINT16 BuChang = 0u; UINT16 wTempCount = 0U; funcRtn = dquGetConfigData(FSDataName,CI_ZC_MASK_TYPE,CI_ZC_PSD_MASK_ID,&pDataAddr,&DataSize); @@ -3333,7 +3334,7 @@ UINT8 MaskCfgStruFrmCIZCAxleSgmtMask(UINT8 * FSDataName) UINT8 MaskType[]={1u,MASK_TYPE_PHYSECTION_HEAD_STD,MASK_TYPE_PHYSECTION_HEAD_XTD,MASK_TYPE_PHYSECTION_OCCUPY, MASK_TYPE_PHYSECTION_ROUTELOCK,MASK_TYPE_PHYSECTION_JUMPLOCK_ZC,MASK_TYPE_AXISSECTION_ARB,MASK_TYPE_LIECHE_STOPSTATE, MASK_TYPE_PHYSECTION_HEAD_STD,MASK_TYPE_PHYSECTION_HEAD_XTD,MASK_TYPE_PHYSECTION_JUMPLOCK_APPLY, - MASK_TYPE_PHYSECTION_JUMPLOCK_CANCEL,1u}; + MASK_TYPE_PHYSECTION_JUMPLOCK_CANCEL,MASK_TYPE_PHYSECTION_INTRUSION,MASK_TYPE_PHYSECTION_ATS_FLOCK,1u}; UINT16 BuChang = 0u; funcRtn = dquGetConfigData(FSDataName,CI_ZC_MASK_TYPE,CI_ZC_AXLE_SGMT_MASK_ID,&pDataAddr,&DataSize); if(funcRtn==0u) @@ -3397,7 +3398,7 @@ UINT8 MaskCfgStruFrmCIZCAxleSgmtMask(UINT8 * FSDataName) } } } - else if((0u < residue )&&( residue < 6u)) + else if(((0u < residue )&&( residue < 6u))||((11U < residue)&&(residue < 14U))) { /*ȡλID*/ tempMaskId = ShortFromChar(pDataAddr); @@ -3438,7 +3439,7 @@ UINT8 MaskCfgStruFrmCIZCAxleSgmtMask(UINT8 * FSDataName) BuChang++; } } - funcRtn = 1u; + funcRtn = 1u; return funcRtn; } @@ -3581,7 +3582,7 @@ UINT8 MaskCfgStruFrmZCCIAxleSgmtMask(UINT8 * FSDataName) UINT8 MaskType[]={1u,MASK_TYPE_PHYSECTION_HEAD_STD,MASK_TYPE_PHYSECTION_HEAD_XTD,MASK_TYPE_PHYSECTION_OCCUPY, MASK_TYPE_PHYSECTION_ROUTELOCK,MASK_TYPE_PHYSECTION_JUMPLOCK_ZC,MASK_TYPE_AXISSECTION_ARB,MASK_TYPE_LIECHE_STOPSTATE, MASK_TYPE_PHYSECTION_HEAD_STD,MASK_TYPE_PHYSECTION_HEAD_XTD,MASK_TYPE_PHYSECTION_JUMPLOCK_APPLY, - MASK_TYPE_PHYSECTION_JUMPLOCK_CANCEL,1u}; + MASK_TYPE_PHYSECTION_JUMPLOCK_CANCEL,MASK_TYPE_PHYSECTION_INTRUSION,MASK_TYPE_PHYSECTION_ATS_FLOCK,1u}; UINT16 BuChang = 0u; funcRtn = dquGetConfigData(FSDataName,CI_ZC_MASK_TYPE,CI_ZC_AXLE_SGMT_MASK_ID,&pDataAddr,&DataSize); if(0U == funcRtn) @@ -3658,7 +3659,7 @@ UINT8 MaskCfgStruFrmZCCIAxleSgmtMask(UINT8 * FSDataName) return funcRtn; } } - else if((6u <= residue)&&(residue <((CI_ZC_AXLE_SGMT_MASK_LEN/2u)-1u))) + else if((6u <= residue)&&(residue < 12U)) { /*ȡλID*/ tempMaskId = ShortFromChar(pDataAddr); @@ -4697,7 +4698,7 @@ UINT8 MaskInit(UINT8 * FSDataName) ******CIATSλ ********/ /*CI-ATSλ*/ - if (DATA_TYPE_NEW == chPulicData) + if (DATA_TYPE_MAIN_BRANCH == chPulicData) { /*CI-ATSλ*/ funcRtn = MaskCfgDtStruFrmCIATSSwitchMask(FSDataName); @@ -4718,7 +4719,7 @@ UINT8 MaskInit(UINT8 * FSDataName) /*CI-ATSͣťλ*/ funcRtn *= MaskCfgDtStruFrmCIATSEsbMask( FSDataName); /*CI-ATS߼λ*/ - if (DATA_TYPE_NEW == chPulicData) + if (DATA_TYPE_MAIN_BRANCH == chPulicData) { /**/ funcRtn *= MaskCfgDtStruFrmCIATSLogSgmt(FSDataName); @@ -4742,7 +4743,7 @@ UINT8 MaskInit(UINT8 * FSDataName) funcRtn *= MaskCfgDtStruFrmCIATSSPKSMask(FSDataName); /*CI-ATS ϴλ*/ - if (DATA_TYPE_NEW == chPulicData) + if (DATA_TYPE_MAIN_BRANCH == chPulicData) { /**/ funcRtn *= MaskCfgDtStruFrmCIATSWash(FSDataName); @@ -4773,7 +4774,7 @@ UINT8 MaskInit(UINT8 * FSDataName) if(RC_WORK_MODE_CI == ciPattern) { - if (DATA_TYPE_NEW == chPulicData) + if (DATA_TYPE_MAIN_BRANCH == chPulicData) { /*CI-ZCλ*/ funcRtn *= MaskCfgDtStruFrmCIZCSwitchMask(FSDataName); @@ -4806,7 +4807,7 @@ UINT8 MaskInit(UINT8 * FSDataName) /*ZC-CI߼λ*/ funcRtn *= MaskCfgStruFrmZCCILogSgmtMask( FSDataName); /*CI-ZC߼λ*/ - if (DATA_TYPE_NEW == chPulicData) + if (DATA_TYPE_MAIN_BRANCH == chPulicData) { funcRtn *= MaskCfgDtStruFrmCI2ZCLogSgmt(FSDataName); } @@ -4818,7 +4819,7 @@ UINT8 MaskInit(UINT8 * FSDataName) /*CI-ZC·λ*/ funcRtn *= MaskCfgStruFrmCIZCRouteMask( FSDataName); /*ZC-CI·λ*/ - if (DATA_TYPE_NEW == chPulicData) + if (DATA_TYPE_MAIN_BRANCH == chPulicData) { funcRtn *= MaskCfgDtStruFrmZC2CiRouteMask(FSDataName); } diff --git a/TSCP/src/APP/ciapp/QueryFiles/dquMaskInit.h b/TSCP/src/APP/ciapp/QueryFiles/dquMaskInit.h index 75ac4e0..24a6e9d 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dquMaskInit.h +++ b/TSCP/src/APP/ciapp/QueryFiles/dquMaskInit.h @@ -53,7 +53,7 @@ #define CI_ZC_ROUTE_MASK_LEN ((UINT32)14) /*CI-ZC·λֽڳ--1г*/ #define CI_ZC_AXLE_SGMT_MASK_ID ((UINT32)5) /*CI-ZCλ*/ -#define CI_ZC_AXLE_SGMT_MASK_LEN ((UINT32)26) /*CI-ZCλֽڳ--1гȣModified 20151015*/ +#define CI_ZC_AXLE_SGMT_MASK_LEN ((UINT32)30) /*CI-ZCλֽڳ--1гȣModified 20151015*/ #define CI_ZC_OVER_LAP_MASK_ID ((UINT32)8) /*CI-ZCλ*/ #define CI_ZC_OVER_LAP_MASK_LEN ((UINT32)8) /*CI-ZCλֽڳ--1г*/ @@ -114,7 +114,7 @@ #define CI_ATS_SPKS_MASK_LEN ((UINT32)8) /*CI-ATS SPKS״̬λֽڳ--1гȣ2018.03.19 6Ϊ8CI_ATS SPKSλһп·״̬λ*/ #define CI_ATS_WASHMACHINE_MASK_ID ((UINT32)11) /*CI-ATS ϴ״̬λ*/ -#define CI_ATS_WASHMACHINE_MASK_LEN ((UINT32)8) /*CI-ATS ϴ״̬λֽڳ--1г*/ +#define CI_ATS_WASHMACHINE_MASK_LEN ((UINT32)6) /*CI-ATS ϴ״̬λֽڳ--1г*/ #define CI_ATS_AAR_ROUTE_MASK_ID ((UINT32)12) /*CI-ATSȫԶ۷·λ*/ #define CI_ATS_AAR_ROUTE_MASK_LEN ((UINT32)6) /*CI-ATSȫԶ۷·λֽڳ--1г*/ diff --git a/TSCP/src/APP/ciapp/QueryFiles/dqucijdqstru.h b/TSCP/src/APP/ciapp/QueryFiles/dqucijdqstru.h index 1ac7d24..58b202f 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dqucijdqstru.h +++ b/TSCP/src/APP/ciapp/QueryFiles/dqucijdqstru.h @@ -108,7 +108,8 @@ /*ñ*/ #define OC_SWITCH_ID ((UINT8)2) -#define LEN_OC_SWITCH ((UINT8)8) +#define LEN_OC_SWITCH ((UINT8)25) +#define SWITCH_BOARD_MODE_MAX 5U /*һOCеģ*/ /*̵ñ*/ #define OC_SWITCH_RELAY_ID ((UINT8)4) #define LEN_OC_SWITCH_RELAY ((UINT8)24) @@ -171,7 +172,7 @@ /*ǽ·̵*/ #define OC_RELAY_NO_ROUTE_ID ((UINT8)20) -#define OC_LEN_RELAY_NO_ROUTE ((UINT8)10) +#define OC_LEN_RELAY_NO_ROUTE ((UINT8)12) /*ż̵*/ #define OC_RELAY_GARAGE_DOOR_ID ((UINT8)21) @@ -340,6 +341,7 @@ typedef struct S_Relay_NoRouteDcStruct UINT16 wRelayTongYiScId; /*ͬԳ̵ID*/ UINT16 wRelayDrvShiCheShengQingId; /* ԳԳ̵ID */ UINT16 wRelayColTongYiScId; /* ԳͬԳ̵ID */ + UINT16 wWaysideTryTrainIndRelayId; /* Գָʾ̵ID */ } Relay_NoRouteDcStruct; /*ղ̵ṹ*/ @@ -437,9 +439,11 @@ typedef struct S_Relay_WashMachineStruct UINT16 TrainEmergencyStopRelayId; /*ȫԶг̵ͣ(ֶ:ɼ̵)*/ UINT16 HeadWashAllowRelayId; /*ȫԶͷϴ̵(ֶ:ɼ̵)*/ UINT16 TailWashAllowRelayId; /*ȫԶβϴ̵(ֶ:ɼ̵)*/ + UINT16 wCouplingWashAllowRelayId; /*ȫԶҶϴ̵(ֶ:ɼ̵)*/ UINT16 WashTrainRequestRelayId; /*ȫԶϴ̵(ֶ:̵)*/ UINT16 TrainHeadStopSteadyRelayId; /*ȫԶͷͣȼ̵(ֶ:̵)*/ UINT16 TrainTailStopSteadyRelayId; /*ȫԶβͣȼ̵(ֶ:̵)*/ + UINT16 wCoupingStopSteadyRelayId; /*ȫԶβͣȼ̵(ֶ:̵)*/ UINT16 TrainPassRequestRelayId; /*ȫԶ̵ͨ(ֶ:̵)*/ UINT16 TrainOutWashPortAllowRelayId; /*ȫԶг̵(ֶ:ɼ̵)*/ UINT16 PauseTrainWashRequestRelayId; /*ȫԶͣϴ̵(ֶ:̵)*/ diff --git a/TSCP/src/APP/ciapp/RemoteRM/RRMDataPrepare.c b/TSCP/src/APP/ciapp/RemoteRM/RRMDataPrepare.c index daae5b1..22f9bb8 100644 --- a/TSCP/src/APP/ciapp/RemoteRM/RRMDataPrepare.c +++ b/TSCP/src/APP/ciapp/RemoteRM/RRMDataPrepare.c @@ -900,6 +900,7 @@ UINT8 rrm_PrepareSwitchStatOfAC(UINT16 acID) UINT8 cycleESB = 0u; UINT8 chLinkNum = 0u; UINT8 ESBStatus = ESB_STATE_VALID_YES; + UINT8 chEsbCutState = 0U; /*ESB·״̬*/ const UINT16 *pLinkIdBuf = NULL; const DSU_DEVICE_IN_LINK_STRU* pTempDeviceStru = NULL; @@ -932,14 +933,22 @@ UINT8 rrm_PrepareSwitchStatOfAC(UINT16 acID) for (cycleESB = 0u;cycleESB < pTempDeviceStru->struESBDev.wDevCount;cycleESB++) { ESBStatus = GetEsbState(pTempDeviceStru->struESBDev.wDevSetId[cycleESB]); + chEsbCutState = GetEsbCutState(pTempDeviceStru->struESBDev.wDevSetId[cycleESB]); - if (ESB_STATE_VALID_NO == ESBStatus) + if (ESB_CUT_YES == chEsbCutState) { - /** ESBδ£*/ + /* ESB·Ϊťδ*/ } else { - break; + if (ESB_STATE_VALID_NO == ESBStatus) + { + /** ESBδ£*/ + } + else + { + break; + } } } @@ -986,6 +995,7 @@ UINT8 rrm_PrepareSwitchStatOfAC(UINT16 acID) UINT8 PSDStatus = PSD_STATE_OPEN; const UINT16 *pLinkIdBuf = NULL; const DSU_DEVICE_IN_LINK_STRU* pTempDeviceStru = NULL; + UINT8 chPsdMutualLockStat = 0U; /*PSD״̬*/ chLinkNum = GetAxisLinkSum(acID); pLinkIdBuf = GetAxisLinkIdBuf(acID); @@ -1016,15 +1026,23 @@ UINT8 rrm_PrepareSwitchStatOfAC(UINT16 acID) for (cyclePSD = 0u;cyclePSD < pTempDeviceStru->struScreenDev.wDevCount;cyclePSD++) { PSDStatus = GetPsdState(pTempDeviceStru->struScreenDev.wDevSetId[cyclePSD]); + chPsdMutualLockStat = GetPsdMutualLockRemoveState(pTempDeviceStru->struScreenDev.wDevSetId[cyclePSD]); - if (PSD_STATE_CLOSE == PSDStatus) + if (PSD_MUTUALLOCK_REMOVE_YES == chPsdMutualLockStat) { - /** Źرգ*/ + /*ΪPSD״̬*/ } else { - break; - } + if (PSD_STATE_CLOSE == PSDStatus) + { + /** Źرգ*/ + } + else + { + break; + } + } } if (cyclePSD != pTempDeviceStru->struScreenDev.wDevCount) @@ -1182,20 +1200,13 @@ UINT8 rrm_PrepareSwitchStatOfAC(UINT16 acID) */ void rrm_SetRRMResult(UINT16 trainID,UINT8 rrmReply,UINT8 rrmReason,UINT8 nextOCId) { - UINT16 wRcIdWithType = 0U; - if (RC_WORK_MODE_CI == CI_SYSTEM_TYPE_RCI) - { - wRcIdWithType = 0x3C00U; - } - else - { - wRcIdWithType = 0x3D00U; - } + UINT16 wRcIdWithType = 0x3D00U; + wRcIdWithType |= (UINT16)nextOCId; SetTrainRrmState(trainID,rrmReply); SetTrainRrmReson(trainID,rrmReason); - SetTrainNextTioc(trainID, wRcIdWithType); /*һID0x3cIVOCʱ޷ȡͨID*/ + SetTrainNextTioc(trainID, wRcIdWithType); } /** diff --git a/TSCP/src/APP/ciapp/Route/RouteConfigDataManage.c b/TSCP/src/APP/ciapp/Route/RouteConfigDataManage.c index 792dbfa..f278152 100644 --- a/TSCP/src/APP/ciapp/Route/RouteConfigDataManage.c +++ b/TSCP/src/APP/ciapp/Route/RouteConfigDataManage.c @@ -3699,5 +3699,31 @@ UINT8 GetPhySecInRoutePosIndex(const UINT16 routeId, const UINT16 phySectionId) retVal = ROUTE_PHYSICALSECTION_SUM_MAX; /*ʧ*/ } + return retVal; +} + + +/* +* ȡָID·÷ +* ˵ const UINT16 routeId, ·ID +* ֵ 0x55 Linkһ +* 0xAA Link෴ +** by LYJ 20260330 +*/ +UINT8 GetRouteConfigDirection(const UINT16 routeId) +{ + UINT16 bufIndex = 0U; /*±*/ + UINT8 retVal = CI_ERROR; + + bufIndex = GetRouteConfigBufIndex(routeId); /*ȡ·±*/ + + if (ROUTE_SUM_MAX > bufIndex) + { + retVal = RouteConfigDataStru[bufIndex].chRouteConfigDirection; + } + else + { + retVal = CI_ERROR; + } return retVal; } \ 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 dc3daaa..76ee4e4 100644 --- a/TSCP/src/APP/ciapp/Route/RouteConfigDataManage.h +++ b/TSCP/src/APP/ciapp/Route/RouteConfigDataManage.h @@ -188,7 +188,8 @@ typedef struct S_RouteConfigDataStruct UINT16 RouteId; /*·ID (ֶ)*/ UINT8 BelongCiId; /*ID (ֶ)*/ UINT8 BelongVirCIid; /*ID*/ - UINT8 RouteDirection; /*·(/) (ֶ)*/ + UINT8 RouteDirection; /*·(/) (ֶεϵͳ߼зĹϵ)*/ + UINT8 chRouteConfigDirection; /*·(/) (ֶ0x55 Linkһ 0xAA Link෴)*/ UINT8 RouteType; /*·(г·/۷·/·) (ֶ)*/ UINT8 ConfigRouteType; /*ý·(г·/۷·/·) (ֶ)*/ UINT8 LeadProperty; /*·(/) (ֶ)*/ @@ -1418,6 +1419,14 @@ UINT8 GetRouteThisPortecSwitchPos(const UINT16 wRouteId, const UINT16 wSwitchId) * λ */ UINT8 GetPhySecInRoutePosIndex(const UINT16 routeId, const UINT16 phySectionId); +/* +* ȡָID·÷ +* ˵ const UINT16 routeId, ·ID +* ֵ 0x55 Linkһ +* 0xAA Link෴ +** by LYJ 20260330 +*/ +UINT8 GetRouteConfigDirection(const UINT16 routeId); #ifdef __cplusplus } diff --git a/TSCP/src/APP/ciapp/Route/RouteDataManage.h b/TSCP/src/APP/ciapp/Route/RouteDataManage.h index 6e477a9..4db2edf 100644 --- a/TSCP/src/APP/ciapp/Route/RouteDataManage.h +++ b/TSCP/src/APP/ciapp/Route/RouteDataManage.h @@ -72,7 +72,7 @@ typedef struct S_RouteDataStruct UINT8 RouteAssoSwitSingOperStat; /*·״̬*/ UINT8 RouteInnerSwitDrivState; /*·ڵ״̬*/ UINT8 RouteAssocSwitDrivState; /*·״̬*/ - UINT8 RouteStateFlag; /*·״̬־1ʾЧ0ʾЧ*/ + UINT8 RouteStateFlag; /*·״̬־0x55ʾЧ0xAAʾЧ*/ UINT8 TrainEnterFlag; /*гʻ־*/ UINT8 ZongRenJieDelayType; /*˽ʱͣΪʱȫνһռѹǰ쳣գеα쳣*/ UINT8 RecoverOpenState; /*·Ҫؿ״̬ڴPSDSPKS۳ָؿź*/ diff --git a/TSCP/src/APP/ciapp/Section/AxisSectionConfigDataManage.c b/TSCP/src/APP/ciapp/Section/AxisSectionConfigDataManage.c index cbf9f51..7763775 100644 --- a/TSCP/src/APP/ciapp/Section/AxisSectionConfigDataManage.c +++ b/TSCP/src/APP/ciapp/Section/AxisSectionConfigDataManage.c @@ -17,7 +17,7 @@ AxisSectionConfigDataStruct AxisSectionConfigDataStru[AXIS_SECTION_SUM_MAX]; /*ݽṹ,cgh-ϲCID-2539-1˴гʼͳһŵInitAllStaticDataStrнгʼΪں˹*/ UINT16 LocalCiAxisSectionIdBuf[AXIS_SECTION_SUM_MAX] = {0u}; /*屾IDӳ*/ -INT16 AxisSectionCurSum = 0; /*߼εǰ*/ +INT16 AxisSectionCurSum = 0; /*εǰ*/ UINT16 totalAxisNum = 0u; /*+ļID*/ /* @@ -1150,4 +1150,56 @@ UINT8 GetAxisSecCbtcProperty(const UINT16 axisSectionId) } return retVal; -} \ No newline at end of file +} + +/* +* ȡָIDιĿ +* ˵ const UINT16 wLogicSecId, ID +* ֵ 0: ȡʧ +* >0: Ŀ +* : mpt 20260331 +*/ +UINT8 GetAxisSecRelateProSwSum(const UINT16 wAxisSecId) +{ + UINT16 wBufIndex = 0u; /*±*/ + UINT8 retVal = CI_ERROR; + + wBufIndex = GetAxisSecConfigBufIndex(wAxisSecId); /*ȡ±*/ + + if (AXIS_SECTION_SUM_MAX > wBufIndex) + { + retVal = AxisSectionConfigDataStru[wBufIndex].chRelateProSwSum; + } + else + { + retVal = CI_ERROR; + } + return retVal; +} + + +/* +* ȡָIDιṹ +* ˵ const UINT16 wLogicSecId, ID +* ֵ NULL: ȡʧ +* NULL: IDָ +* : mpt 20260331 +*/ +AxisSwitchStruct* GetAxisSecRelateProSwStru(const UINT16 wAxisSecId) +{ + UINT16 wBufIndex = 0u; /*±*/ + AxisSwitchStruct* retVal = NULL; + + wBufIndex = GetAxisSecConfigBufIndex(wAxisSecId); /*ȡ±*/ + + if (AXIS_SECTION_SUM_MAX > wBufIndex) + { + retVal = AxisSectionConfigDataStru[wBufIndex].wRelateProSwId; + } + else + { + retVal = NULL; + } + return retVal; +} + diff --git a/TSCP/src/APP/ciapp/Section/AxisSectionConfigDataManage.h b/TSCP/src/APP/ciapp/Section/AxisSectionConfigDataManage.h index 7511d5e..33fba62 100644 --- a/TSCP/src/APP/ciapp/Section/AxisSectionConfigDataManage.h +++ b/TSCP/src/APP/ciapp/Section/AxisSectionConfigDataManage.h @@ -53,6 +53,8 @@ typedef struct S_AxisSectionConfigDataStruct UINT8 chAxisLinXian; /*-ǷΪ·-ӵͼLink*/ UINT32 dwAxisTotalLen; /*linkܳ*/ UINT8 cAcCbtcAttr; /*CBTCԣ0x55-CBTCԣ0xaa-CBTC*/ + UINT8 chRelateProSwSum; /* add by mpt 20260331 ι*/ + AxisSwitchStruct wRelateProSwId[AXIS_RELATE_PRO_SW_SUM_MAX];/* add by mpt 20260331 ιID*/ } AxisSectionConfigDataStruct; extern AxisSectionConfigDataStruct AxisSectionConfigDataStru[AXIS_SECTION_SUM_MAX]; /*ݽṹ,cgh-ϲCID-2539-1˴гʼͳһŵInitAllStaticDataStrнгʼΪں˹*/ @@ -320,6 +322,22 @@ UINT8 GetAxisSecBorderProperty(const UINT16 axisSectionId); * Created By LQ 2025.08.05 */ UINT8 GetAxisSecCbtcProperty(const UINT16 axisSectionId); +/* +* ȡָIDιĿ +* ˵ const UINT16 wLogicSecId, ID +* ֵ 0: ȡʧ +* >0: Ŀ +* : mpt 20260331 +*/ +UINT8 GetAxisSecRelateProSwSum(const UINT16 wAxisSecId); +/* +* ȡָIDιṹ +* ˵ const UINT16 wLogicSecId, ID +* ֵ NULL: ȡʧ +* NULL: IDָ +* : mpt 20260331 +*/ +AxisSwitchStruct* GetAxisSecRelateProSwStru(const UINT16 wAxisSecId); #ifdef __cplusplus } diff --git a/TSCP/src/APP/ciapp/Section/AxisSectionDataManage.c b/TSCP/src/APP/ciapp/Section/AxisSectionDataManage.c index 5cbca15..b732dba 100644 --- a/TSCP/src/APP/ciapp/Section/AxisSectionDataManage.c +++ b/TSCP/src/APP/ciapp/Section/AxisSectionDataManage.c @@ -854,4 +854,49 @@ void SetAxisSecArbStateCC(const UINT16 axisSectionId, const UINT8 arbState) { ; /**/ } +} + +/* +* ״̬ +* ˵void +* ֵ +* by cgh 20260327 +*/ +void AxisSecStateDeal(void) +{ + UINT8 cLocalCiId = 0U; /*ID*/ + UINT16 ii = 0U; + UINT16 wAxisSecSum = 0U; /**/ + UINT16 wAxisSecId = 0U; /*ID*/ + UINT8 cAxisSecBlongCiId = 0U; /**/ + UINT8 chAcArbState = 0U; /*ARB״̬*/ + + cLocalCiId = GetSystemParaLocalCiId(); + wAxisSecSum = GetAxisSecCurSum(); + /**/ + for (ii = 0U; ii < wAxisSecSum; ii++) + { + wAxisSecId = GetAxisSecId(ii); + cAxisSecBlongCiId = GetAxisSectionBelongCiId(wAxisSecId); + + if ((cLocalCiId == cAxisSecBlongCiId) && (0U != cAxisSecBlongCiId)) + { + chAcArbState = aam_GetAxisStatusAPI(wAxisSecId); + /* ARB߼ARB */ + if (AAM_STATUS_ARB == chAcArbState) + { + /*RCARB״̬ΪARB*/ + SetAxisSecArbStateCC(wAxisSecId, AXIS_SECTION_ARB_YES); + } + else + { + /*RCARB״̬ΪδARB*/ + SetAxisSecArbStateCC(wAxisSecId, AXIS_SECTION_ARB_NO); + } + } + else + { + ; /*ڱֻ쳣*/ + } + } } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/Section/AxisSectionDataManage.h b/TSCP/src/APP/ciapp/Section/AxisSectionDataManage.h index 8945181..8c5eaa7 100644 --- a/TSCP/src/APP/ciapp/Section/AxisSectionDataManage.h +++ b/TSCP/src/APP/ciapp/Section/AxisSectionDataManage.h @@ -288,6 +288,14 @@ UINT8 GetAxisSecArbStateCC(const UINT16 axisSectionId); */ void SetAxisSecArbStateCC(const UINT16 axisSectionId, const UINT8 arbState); +/* +* ״̬ +* ˵void +* ֵ +* by cgh 20260327 +*/ +void AxisSecStateDeal(void); + #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/Section/LogicSectionConfigDataManage.h b/TSCP/src/APP/ciapp/Section/LogicSectionConfigDataManage.h index 094e152..c29a73e 100644 --- a/TSCP/src/APP/ciapp/Section/LogicSectionConfigDataManage.h +++ b/TSCP/src/APP/ciapp/Section/LogicSectionConfigDataManage.h @@ -89,6 +89,9 @@ typedef struct S_LogicSectionConfigDataStruct UINT16 logSecRltPsdBuf[LOGSEC_RELATE_PSD_MAX]; /*߼ιID*/ UINT8 logSecRltEsbSum; /*ť*/ UINT16 logSecRltEsbBuf[LOGSEC_RELATE_ESB_MAX]; /*߼ιťID*/ + + UINT8 chRelateOverLapSum; /* add by mpt 20260330 ߼ι*/ + UINT16 wRelateOverLapIdBuf[LOGSEC_RELATE_OVERLAP_SUM_MAX];/* add by mpt 20260330 ߼ιID*/ } LogicSectionConfigDataStruct; /*******************************ȫֱ*******************************/ diff --git a/TSCP/src/APP/ciapp/Section/LogicSectionDataManage.c b/TSCP/src/APP/ciapp/Section/LogicSectionDataManage.c index 4264328..7a1b4f1 100644 --- a/TSCP/src/APP/ciapp/Section/LogicSectionDataManage.c +++ b/TSCP/src/APP/ciapp/Section/LogicSectionDataManage.c @@ -1099,7 +1099,6 @@ void RemoveLogSecTrainInfoById(const UINT16 wLogSectionId, const UINT16 wTrnId) UINT8 chTrainSum = 0U; UINT8 ii = 0U; UINT8 chNeedKeepSum = 0U; - LogicTrainResStruct * pLogicTrainInfo = NULL; wBufIndex = GetlogSectionBufIndex(wLogSectionId); /*ȡ±*/ @@ -1406,7 +1405,7 @@ void AddLogSecTrainResFromCI(const UINT16 wLogSectionId, const UINT16 wTrnId) if (TRANSMIT_STATE_GOOD == trainTransSta) { - trainInRoutePos = dsuTrainMinHeadCrossSignal(wTrnId, wRLockBelongRouteId); + trainInRoutePos = dsuTrainMinHeadCrossSignal(wTrnId, wRLockBelongRouteId, CI_ERROR); if ((ROUTE_AUTOROUTE_NORMAL == autoRouteType) || (ROUTE_AUTOROUTE_NORMAL == autoProtRouteType) || (ROUTE_AUTOSIGROUTE_YES == (ROUTE_AUTOSIGROUTE_YES & autoSigRouteType)) @@ -1589,7 +1588,6 @@ void ClearLgcSecResTrain(UINT16 wLogSecId) UINT8 chTrainResSum = 0U; UINT16 wBufIndex = 0U; UINT8 ii = 0U; - UINT8 logRouteSum = 0; UINT16 wTrainId = 0U; /*гID*/ UINT16 chFlag = 0U; UINT8 chNeedKeepSum = 0U; @@ -1620,7 +1618,7 @@ void ClearLgcSecResTrain(UINT16 wLogSecId) /*0*/ for (ii = chNeedKeepSum; ii < LOGIC_SECTION_RES_SUM_MAX; ii++) { - (void)ComMemSet(&(LogicSectionDataStruCC[wBufIndex].szTrainResData[ii]), (UINT16)sizeof(LogicTrainResStruct), 0U); + (void)ComMemSet((UINT8*)&(LogicSectionDataStruCC[wBufIndex].szTrainResData[ii]), (UINT16)sizeof(LogicTrainResStruct), 0U); } LogicSectionDataStruCC[wBufIndex].chTrainInfoSum = chNeedKeepSum; } @@ -1647,7 +1645,7 @@ void CpyLgcSecResTrain(UINT16 wLogSecId,UINT8 chTrainSum, LogicTrainResStruct *p } else { - (void)ComMemCopy(pstLgcResInfo, (LogicSectionDataStruCC[wBufIndex].szTrainResData), (UINT16)(sizeof(LogicTrainResStruct)*LOGIC_SECTION_RES_SUM_MAX)); + (void)ComMemCopy((UINT8*)pstLgcResInfo, (UINT8*)(LogicSectionDataStruCC[wBufIndex].szTrainResData), (UINT16)(sizeof(LogicTrainResStruct)*LOGIC_SECTION_RES_SUM_MAX)); LogicSectionDataStruCC[wBufIndex].chTrainInfoSum = chTrainSum; } } @@ -1774,7 +1772,7 @@ void SetLogSecTrainLockApply(const UINT16 wLogSectionId, const UINT16 wTrnId) } else { - trainInRoutePos = dsuTrainMinHeadCrossSignal(wTrnId, wRLockBelongRouteId); + trainInRoutePos = dsuTrainMinHeadCrossSignal(wTrnId, wRLockBelongRouteId, CI_ERROR); if ((TRAIN_ENTER_ROUTE_FULL == trainInRoutePos) || (TRAIN_ENTER_ROUTE_TAIL == trainInRoutePos)) { ; /* V12.0.22*/ @@ -1900,17 +1898,10 @@ UINT8 GetLgcSecResCanAdd(const UINT16 wLogSectionId,const UINT16 wTrnId) UINT16 wBufIndex = 0u; /*±*/ UINT16 wRLockBelongRouteId = 0U; UINT16 wRLockStartSignalId = 0U; - UINT16 wPLockStartSignalId = 0U; - UINT16 wPLockEndSignalId = 0U; UINT16 wRLockLightUpTrainId = 0U; - UINT16 wPLockLightUpTrainId = 0U; - UINT16 wRouteLockOverLapId = 0U; - UINT8 chOverLapBelongCiId = 0U; - UINT8 chTrainCrossPLockStt = 0U; UINT8 chTrainCrossRLockStt = 0U; UINT8 cRouteCId = 0u; UINT8 cLocalCiId = 0u; - UINT8 chLgcResShareFlag = 0U; UINT8 autoRouteType = 0U; UINT8 autoSigRouteType = 0U; UINT8 autoProtRouteType = 0U; @@ -2983,7 +2974,7 @@ UINT8 GetBackUpVobcMinTsr(UINT16* minSpeed, UINT16 logSum, UINT16 szLogId[]) { if (pTsrData[jj].cSpeed < *minSpeed) { - for (mm == 0U; mm < pTsrData[jj].cLogSecSum; mm++) + for (mm = 0U; mm < pTsrData[jj].cLogSecSum; mm++) { for (kk = 0U; kk < logSum; kk++) { @@ -3037,7 +3028,7 @@ void SetTsrSum(UINT8 cTsrSum) */ TsrDataStruct* GetTsrData(void) { - return &g_TsrDataStru; + return g_TsrDataStru; } /* @@ -3790,6 +3781,9 @@ void LogJumpLockCmdManage(const UINT16 logSectionId, const UINT8 jumpLockState) { UINT16 bufIndex = 0u; /*±*/ UINT8 checkResult = CI_ERROR; + UINT16 devId = 0u; /*豸ID*/ + UINT8 devState = 0u; /*豸״̬*/ + UINT8 retVal = 0u; /** ȡ߼±*/ bufIndex = GetlogSectionBufIndex(logSectionId); @@ -3811,9 +3805,20 @@ void LogJumpLockCmdManage(const UINT16 logSectionId, const UINT8 jumpLockState) else { /** Ծ־Ϊ */ - SetLogSecJumpLockPermFlag(logSectionId, LOGIC_JUMPUNLOCK_PERMISSIVE_YES); + /** ߼Ծ */ SetLogSecJumpLockState(logSectionId, LOGIC_SECTION_JUMP_LOCK_YES); + + SetLogSecRelProSwitchLockSta(logSectionId, SWITCH_LOCK_PROTECT_SET); + + devId = 0u; + devState = 0u; + retVal = LogicSecRltvPrtctSwLockCheck(logSectionId, &devId, &devState); + if (CI_SUCCESS == retVal) + { + SetLogSecJumpLockPermFlag(logSectionId, LOGIC_JUMPUNLOCK_PERMISSIVE_YES); + } + } } /** ߼Ծδ*/ @@ -3823,6 +3828,8 @@ void LogJumpLockCmdManage(const UINT16 logSectionId, const UINT8 jumpLockState) SetLogSecJumpLockPermFlag(logSectionId, LOGIC_JUMPUNLOCK_PERMISSIVE_NO); /** Ծδ */ SetLogSecJumpLockState(logSectionId, LOGIC_SECTION_JUMP_LOCK_NO); + + SetLogSecRelProSwitchLockSta(logSectionId, SWITCH_LOCK_PROTECT_CANCEL); } else { @@ -4283,7 +4290,7 @@ UINT8 GetLgcArbState(const UINT16 wLgcId) } /* -* ƶ߼ARB״̬ +* ָ߼ARB״̬ * ˵ const UINT16 wLgcId, ߼ID * const UINT8 chArb ARB״̬ * ֵ @@ -4384,6 +4391,7 @@ void SetLgcArbStateProc(void) } } } + /* * ȡָ߼ʱʼں * ˵ const UINT16 logSectionId, ߼ID @@ -4460,7 +4468,6 @@ UINT8 GetLogicSupicTrainStat(UINT16 wLgcId) UINT8 chIndex = 0u; UINT8 chRtn = CI_ERROR; TRAIN_SEQUANCE_s strTmp[SIZE_MAX_TRAINOFAC] = { 0u }; - TRAIN_SEQUANCE_s strTmpB = { 0u }; UINT8 chTrainNum = 0u; chLinkNum = GetSecIntrudeLinkSum(wLgcId); pLinkId = GetSecIntrudeLinkIdBuf(wLgcId); @@ -4853,7 +4860,7 @@ UINT8 DelLogSecBelongLogRouteId(const UINT16 logSectionId, const UINT16 wLogRout } } /* 0ֹ*/ - (void)ComMemSet(&logRoutBuf[chNeedKeepSum], (UINT16)sizeof(LogSecLockBelLogRouteStruct), 0U); + (void)ComMemSet((UINT8*)&logRoutBuf[chNeedKeepSum], (UINT16)sizeof(LogSecLockBelLogRouteStruct), 0U); LogicSectionDataStruCC[bufIndex].chLogSecLockBelLogRouteSum = chNeedKeepSum;/*޸߼·*/ retVal = CI_SUCCESS; } @@ -4883,8 +4890,6 @@ UINT8 AddLogSecBelongLogRouteId(const UINT16 logSectionId, const UINT16 wLogRout LogSecLockBelLogRouteStruct* logRoutBuf = NULL; /*߼߼·*/ UINT16 logRoutSum = 0U; /*߼߼·*/ UINT8 retVal = CI_ERROR; - UINT8 ii = 0U; - UINT8 chNeedKeepSum = 0U; bufIndex = GetlogSectionBufIndex(logSectionId); /*ȡ±*/ @@ -5647,7 +5652,6 @@ UINT8 GetLogSecLockBelLogRouteBuf(const UINT16 wLgcId,OUT LogSecLockBelLogRouteS void SetLogSecLockStateHlht(UINT16 wLogSectionId, const UINT8 lockState) { UINT16 bufIndex = 0u; /*±*/ - UINT8 preLockState = 0u; bufIndex = GetlogSectionBufIndex(wLogSectionId); /*ȡ±*/ @@ -5756,11 +5760,10 @@ void SetLogSecPLockRouteIdHlht(UINT16 wLogSectionId, const UINT16 routeId) /* * ûͨ߼Ľ·ID * ˵UINT16 wLogSectionId, ߼ID - const UINT16 routeId,Ľ·ID * ֵ * by 20250117 */ -void SetLogSecRLockRouteIdHlht(UINT16 wLogSectionId, const UINT16 routeId) +void SetLogSecRLockRouteIdHlht(UINT16 wLogSectionId) { UINT16 bufIndex = 0u; /*±*/ @@ -6396,4 +6399,218 @@ UINT8 ReqAlignmentInfoCalc(void) } return chRetVal; +} + +/* +* ȡATS߼ARB״̬ +* ˵ const UINT16 wLgcId ߼״̬ +* const UINT8 chDevType 豸 +* ֵ LGC_SECTION_ARB_NO ߼δARB +* LGC_SECTION_ARB_YES ߼ARB +* by cgh 20260327 +*/ +UINT8 GetToAtsLgcArbState(const UINT16 wLgcId,const UINT8 chDevType) +{ + UINT8 chReval = LGC_SECTION_ARB_NO; + UINT8 chAcNum = 0U; /*߼ζӦĿ*/ + UINT16* pAcId = NULL; /*߼ιID*/ + UINT8 chAcIndex = 0U; /*ѭ*/ + UINT8 chAcArbState = 0U; /*ARB״̬*/ + + chAcNum = GetLgcSecRelativeAxleSecSum(wLgcId); + pAcId = GetLgcSecRltvAxleSecIdBuf(wLgcId); + + /*߼ιݺϷ*/ + if ((0U != chAcNum) && (NULL != pAcId) && ((RC_WORK_MODE_TIOC == chDevType) || (RC_WORK_MODE_CI == chDevType))) + { + /*߼ιм*/ + for (chAcIndex = 0U; chAcIndex < chAcNum; chAcIndex++) + { + /*ǰϵͳģʽΪRC*/ + if (RC_WORK_MODE_TIOC == chDevType) + { + chAcArbState = GetAxisSecArbStateCC(pAcId[chAcIndex]); + } + /*ǰϵͳģʽΪCI*/ + else + { + chAcArbState = GetAxisSecArbStateZc(pAcId[chAcIndex]); + } + + /* ARB߼ARB */ + if (AXIS_SECTION_ARB_YES == chAcArbState) + { + chReval = LGC_SECTION_ARB_YES; + /*ҵ߼ιһARBټңΪ߼ARB*/ + break; + } + else + { + /* ηARB */ + ; + } + } + } + else + { + /* ݻȡʧ */ + } + return chReval; +} + +/* +* ȡָ߼CBTC_ARB״̬ +* ˵ const UINT16 wLgcId, ߼ID +* ֵ 0: ȡʧ +* >0: ߼CBTC_ARB״̬ +* BY CGH 20260330 +*/ +UINT8 GetLogSecCbtcArbState(const UINT16 wLgcId) +{ + UINT16 bufIndex = LGC_SECTION_ARB_NO; /*±*/ + UINT8 retVal = CI_ERROR; + + bufIndex = GetlogSectionBufIndex(wLgcId); /*ȡ±*/ + + if (LOGIC_SECTION_SUM_MAX > bufIndex) + { + retVal = LogicSectionDataStru[bufIndex].chLogSecCbtcArbState; + } + else + { + ; + } + return retVal; +} + +/* +* ָ߼CBTC_ARB״̬ +* ˵ const UINT16 wLgcId, ߼ID +* const UINT8 chArb ARB״̬ +* ֵ +* BY CGH 20260330 +*/ +void SetLogSecCbtcArbState(const UINT16 wLgcId, const UINT8 chArb) +{ + UINT16 bufIndex = 0U; /*±*/ + + bufIndex = GetlogSectionBufIndex(wLgcId); /*ȡ±*/ + + if ((LOGIC_SECTION_SUM_MAX > bufIndex) + && ((LGC_SECTION_ARB_NO == chArb) || (LGC_SECTION_ARB_YES == chArb))) + { + LogicSectionDataStru[bufIndex].chLogSecCbtcArbState = chArb; + } + else + { + ; + } +} + +/* +* ȡָ߼PB_TACS_ARB״̬ +* ˵ const UINT16 wLgcId, ߼ID +* ֵ 0: ȡʧ +* >0: ߼PB_TACS_ARB״̬ +* BY CGH 20260330 +*/ +UINT8 GetLogSecPbTacsArbState(const UINT16 wLgcId) +{ + UINT16 bufIndex = LGC_SECTION_ARB_NO; /*±*/ + UINT8 retVal = CI_ERROR; + + bufIndex = GetlogSectionBufIndex(wLgcId); /*ȡ±*/ + + if (LOGIC_SECTION_SUM_MAX > bufIndex) + { + retVal = LogicSectionDataStru[bufIndex].chLogSecPbTacsArbState; + } + else + { + ; + } + return retVal; +} + +/* +* ָ߼PB_TACS_ARB״̬ +* ˵ const UINT16 wLgcId, ߼ID +* const UINT8 chArb ARB״̬ +* ֵ +* BY CGH 20260330 +*/ +void SetLogSecPbTacsArbState(const UINT16 wLgcId, const UINT8 chArb) +{ + UINT16 bufIndex = 0U; /*±*/ + + bufIndex = GetlogSectionBufIndex(wLgcId); /*ȡ±*/ + + if ((LOGIC_SECTION_SUM_MAX > bufIndex) + && ((LGC_SECTION_ARB_NO == chArb) || (LGC_SECTION_ARB_YES == chArb))) + { + LogicSectionDataStru[bufIndex].chLogSecPbTacsArbState = chArb; + } + else + { + ; + } +} + +/* +* ÷͸ATS߼ARB״̬ +* ˵ +* ֵ +* by cgh 20260330 +*/ +void SetSendAtsLgcArbState(void) +{ + UINT8 chLocalId = 0U; /*ID*/ + UINT8 chBelongCiId = 0U; /*ID*/ + UINT16 wLgcNum = 0U; /*߼Ŀ*/ + UINT16 wLgcIndex = 0U; /*߼ID*/ + UINT16 wLgcId = 0U; /*߼ID*/ + UINT8 chArbState = 0U; /*ARB״̬*/ + + chLocalId = GetSystemParaLocalCiId(); + + /* ȡ߼ */ + wLgcNum = GetLogicSecCurSum(); + + for (wLgcIndex = 0u; wLgcIndex < wLgcNum; wLgcIndex++) + { + wLgcId = GetLogicSecId(wLgcIndex); + chBelongCiId = GetLogSecBelongCiId(wLgcId); + + if ((chLocalId == chBelongCiId) && (0U != chBelongCiId)) + { + /*CBTC_ARB״̬*/ + chArbState = GetToAtsLgcArbState(wLgcId, RC_WORK_MODE_CI); + + if (LGC_SECTION_ARB_YES == chArbState) + { + SetLogSecCbtcArbState(wLgcId, LGC_SECTION_ARB_YES); + } + else + { + SetLogSecCbtcArbState(wLgcId, LGC_SECTION_ARB_NO); + } + + /*PB_TACS_ARB״̬*/ + chArbState = GetToAtsLgcArbState(wLgcId, RC_WORK_MODE_TIOC); + + if (LGC_SECTION_ARB_YES == chArbState) + { + SetLogSecPbTacsArbState(wLgcId, LGC_SECTION_ARB_YES); + } + else + { + SetLogSecPbTacsArbState(wLgcId, LGC_SECTION_ARB_NO); + } + + } + else + { + ; /* ݻȡʧ */ + } + } } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/Section/LogicSectionDataManage.h b/TSCP/src/APP/ciapp/Section/LogicSectionDataManage.h index 20c9870..4682b32 100644 --- a/TSCP/src/APP/ciapp/Section/LogicSectionDataManage.h +++ b/TSCP/src/APP/ciapp/Section/LogicSectionDataManage.h @@ -75,6 +75,8 @@ typedef struct S_LogicSectionDataStruct UINT8 chLogicSpksFLockState; /*߼αSPKS״̬ 0x55 δ 0xaa */ UINT8 chLogSecEmergXianSu; /*߼νʱ*/ + UINT8 chLogSecCbtcArbState; /*߼CBTC_ARB״̬*/ + UINT8 chLogSecPbTacsArbState; /*߼PB_TACS_ARB״̬*/ } LogicSectionDataStruct; /*߼νṹ-*/ @@ -1310,11 +1312,10 @@ void SetLogSecPLockRouteIdHlht(UINT16 wLogSectionId, const UINT16 routeId); /* * ûͨ߼Ľ·ID * ˵UINT16 wLogSectionId, ߼ID - const UINT16 routeId,Ľ·ID * ֵ * by 20250117 */ -void SetLogSecRLockRouteIdHlht(UINT16 wLogSectionId, const UINT16 routeId); +void SetLogSecRLockRouteIdHlht(UINT16 wLogSectionId); /* * ߼ι߼·״̬ @@ -1415,6 +1416,60 @@ void SetLogSecTXOccupyStateCC(const UINT16 logSectionId, const UINT8 curOccupySt */ UINT8 ReqAlignmentInfoCalc(void); +/* +* ȡATS߼ARB״̬ +* ˵ const UINT16 wLgcId ߼״̬ +* const UINT8 chDevType 豸 +* ֵ LGC_SECTION_ARB_NO ߼δARB +* LGC_SECTION_ARB_YES ߼ARB +* by cgh 20260327 +*/ +UINT8 GetToAtsLgcArbState(const UINT16 wLgcId, const UINT8 chDevType); + +/* +* ȡָ߼CBTC_ARB״̬ +* ˵ const UINT16 wLgcId, ߼ID +* ֵ 0: ȡʧ +* >0: ߼CBTC_ARB״̬ +* BY CGH 20260330 +*/ +UINT8 GetLogSecCbtcArbState(const UINT16 wLgcId); + +/* +* ָ߼CBTC_ARB״̬ +* ˵ const UINT16 wLgcId, ߼ID +* const UINT8 chArb ARB״̬ +* ֵ +* BY CGH 20260330 +*/ +void SetLogSecCbtcArbState(const UINT16 wLgcId, const UINT8 chArb); + +/* +* ȡָ߼PB_TACS_ARB״̬ +* ˵ const UINT16 wLgcId, ߼ID +* ֵ 0: ȡʧ +* >0: ߼PB_TACS_ARB״̬ +* BY CGH 20260330 +*/ +UINT8 GetLogSecPbTacsArbState(const UINT16 wLgcId); + +/* +* ָ߼PB_TACS_ARB״̬ +* ˵ const UINT16 wLgcId, ߼ID +* const UINT8 chArb ARB״̬ +* ֵ +* BY CGH 20260330 +*/ +void SetLogSecPbTacsArbState(const UINT16 wLgcId, const UINT8 chArb); + +/* +* ÷͸ATS߼ARB״̬ +* ˵ +* ֵ +* by cgh 20260330 +*/ +void SetSendAtsLgcArbState(void); + #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/Section/SectionDefine.h b/TSCP/src/APP/ciapp/Section/SectionDefine.h index c9b13bd..fc47938 100644 --- a/TSCP/src/APP/ciapp/Section/SectionDefine.h +++ b/TSCP/src/APP/ciapp/Section/SectionDefine.h @@ -26,7 +26,7 @@ #define PHYSICAL_INCLUDE_SWITCH_SUM_MAX ((UINT16)10) /*ΰĵֵ*/ #define SEC_INVASECT_N_CONDSWIT_SUM_MAX ((UINT16)20) /*ΰֵ*/ #define LOGSEC_INV_N_CONDSWIT_SUM_MAX ((UINT16)8) /*߼ΰֵ*/ -#define LINK_SUM_MAX ((UINT16)1300) /*LINKֵ*//* add 2022.02.28 */ +#define LINK_SUM_MAX ((UINT16)1600) /*LINKֵ*//* add 2022.02.28 2026021116003*/ #define LOGSEC_INCLUDE_AXIS_SUM_MAX ((UINT16)8) /*߼ΰļֵ*//* add 20220919 TIOC5.0*/ #define LOGSEC_INCLUDE_SWITCH_SUM_MAX ((UINT16)4) /*߼ΰĵֵ*//* add 20220921 TIOC5.0*/ #define LOGSEC_LTRL_DFNC_SUM_MAX ((UINT16)8) /*߼βֵ*//* add 20220921 TIOC5.0*/ @@ -34,12 +34,14 @@ #define LOGSEC_NEXT_LOGSEC_SUM_MAX ((UINT16)16) /*߼߼ֵ*//* add 20230408 cgh*/ #define LOGSEC_RELATE_SIG_SUM_MAX ((UINT16)2) /*߼ιźŻֵ*//* add 20230504 cgh*/ #define LOGSEC_RELATE_ROUTE_SUM_MAX ((UINT16)200) /*߼ι·ֵ*//* add 20230504 cgh*/ -#define LOGSEC_RELATE_PRO_SW_SUM_MAX ((UINT16)8) /*߼ιֵ*//* add 20230504 cgh*/ +#define LOGSEC_RELATE_PRO_SW_SUM_MAX ((UINT16)50) /*߼ιֵ*//* add 20230504 cgh*/ #define LOGSEC_RELATE_CON_SW_SUM_MAX ((UINT16)4) /*߼ιߵֵ*//* add 20230504 cgh*/ #define PHYSEC_RELATE_ROUTE_SUM_MAX ((UINT16)24) /*ι·ֵ*//* add 20231113 lq*/ #define LOGSEC_RELATE_PSD_MAX ((UINT8)0X04U) /*߼ιֵ*//* add 20240410 fan*/ #define LOGSEC_RELATE_ESB_MAX ((UINT8)10U) /*߼ιťֵ*//* add 20240410 fan*/ #define TRCAK_SECTION_SUM_MAX ((UINT16)5000) /*ֵ*/ +#define LOGSEC_RELATE_OVERLAP_SUM_MAX ((UINT16)200) /*߼ιֵ add 20260330 mpt*/ +#define AXIS_RELATE_PRO_SW_SUM_MAX ((UINT16)100) /*ιֵ*/ #define QINXIAN_SWITCH_MAX_NUM ((UINT8)0X16U) /*ι add 20240607 LC */ diff --git a/TSCP/src/APP/ciapp/Signal/SignalDataManage.c b/TSCP/src/APP/ciapp/Signal/SignalDataManage.c index 8fad57a..6af206e 100644 --- a/TSCP/src/APP/ciapp/Signal/SignalDataManage.c +++ b/TSCP/src/APP/ciapp/Signal/SignalDataManage.c @@ -5646,9 +5646,9 @@ UINT32 GetDetainSndBtnPressCycNum(const UINT16 signalId) * ȡָIDźŻ״̬CC * ˵const UINT16 signalId, źŻID * ֵ0 ȡʧ -* 0x55 δѹ -* 0xaa ѹ -* Created By LQ 2025.11.05 +* 0x55 +* 0xaa +* EDIT By CGH 2026.02.01 */ UINT8 GetSignalLightExtinctStateCC(const UINT16 signalId) { @@ -5736,23 +5736,51 @@ UINT8 GetSignalCrossStateCC(const UINT16 signalId) return reVal; } +/* +* ȡͨųѹͨźŻ TACSгID +* ˵const UINT16 signalId, źŻID +* ֵTACSгID +* Created By wyd 2026.3.27 +*/ +UINT8 GetSignalCrossTacsTrainIdCC(const UINT16 signalId) +{ + UINT16 bufIndex = 0U; /*±*/ + UINT8 reVal = CI_ERROR; + + bufIndex = GetSignalConfigBufIndex(signalId); /*ȡ±*/ + + if (SIGNAL_SUM_MAX > bufIndex) + { + reVal = SignalDataStruCC[bufIndex].wCrossTacsTrainId; + } + else + { + /**/ + } + return reVal; +} + /* * ͨųѹͨźŻ״̬CC * ˵const UINT16 signalId, źŻID +* const UINT8 signalCrossState źŻѹ״̬ +* const UINT8 wTrainId гID * ֵ * Created By LQ 2025.11.05 */ -void SetSignalCrossStateCC(const UINT16 signalId, const UINT8 signalCrossState) +void SetSignalCrossStateCC(const UINT16 signalId, const UINT8 signalCrossState, const UINT8 wTrainId) { UINT16 bufIndex = 0U; /*±*/ - bufIndex = GetSignalConfigBufIndex(signalId); /*ȡ±*/ + bufIndex = GetSignalConfigBufIndex(signalId); /*ȡźŻ±*/ if (bufIndex < SIGNAL_SUM_MAX) { - if ((SIGNAL_CROSS_STATE_NO == signalCrossState) || (SIGNAL_CROSS_STATE_YES == signalCrossState)) + if (((SIGNAL_CROSS_STATE_NO == signalCrossState) || (SIGNAL_CROSS_STATE_YES == signalCrossState)) + && (TACS_CROSS_ID_MAX >= wTrainId)) { SignalDataStruCC[bufIndex].SignalCrossState = signalCrossState; /*ͨųѹͨźŻ״̬*/ + SignalDataStruCC[bufIndex].wCrossTacsTrainId = wTrainId; /*ͨųѹͨźŻгID*/ } else { diff --git a/TSCP/src/APP/ciapp/Signal/SignalDataManage.h b/TSCP/src/APP/ciapp/Signal/SignalDataManage.h index 35220c4..e426e20 100644 --- a/TSCP/src/APP/ciapp/Signal/SignalDataManage.h +++ b/TSCP/src/APP/ciapp/Signal/SignalDataManage.h @@ -111,6 +111,7 @@ typedef struct S_SignalDataStructCC UINT8 cSleepTrainLightUpFlag; /*߳źŻ־0x55 Ч0xAA Ч*/ UINT8 LightExtinctState; /*źŻ״̬CC(0x55ƣ0xaa)*/ UINT8 SignalCrossState; /*ͨųѹͨźŻ״̬CC(0x55δѹ0xaaѹ)*/ + UINT8 wCrossTacsTrainId; /*PB-TACSأͨųѹͨźŻгID*/ }SignalDataStructCC; extern SignalDataStruct SignalDataStru[SIGNAL_SUM_MAX]; /*źŻݽṹ*/ @@ -1205,9 +1206,9 @@ UINT32 GetDetainSndBtnPressCycNum(const UINT16 signalId); * ȡָIDźŻ״̬CC * ˵const UINT16 signalId, źŻID * ֵ0 ȡʧ -* 0x55 δѹ -* 0xaa ѹ -* Created By LQ 2025.11.05 +* 0x55 +* 0xaa +* EDIT By CGH 2026.02.01 */ UINT8 GetSignalLightExtinctStateCC(const UINT16 signalId); @@ -1230,13 +1231,23 @@ void SetSignalLightExtinctStateCC(const UINT16 signalId, const UINT8 lightExtinc */ UINT8 GetSignalCrossStateCC(const UINT16 signalId); +/* +* ȡͨųѹͨźŻ TACSгID +* ˵const UINT16 signalId, źŻID +* ֵTACSгID +* Created By wyd 2026.3.27 +*/ +UINT8 GetSignalCrossTacsTrainIdCC(const UINT16 signalId); + /* * ͨųѹͨźŻ״̬CC * ˵const UINT16 signalId, źŻID +* const UINT8 signalCrossState źŻѹ״̬ +* const UINT8 wTrainId гID * ֵ * Created By LQ 2025.11.05 */ -void SetSignalCrossStateCC(const UINT16 signalId, const UINT8 signalCrossState); +void SetSignalCrossStateCC(const UINT16 signalId, const UINT8 signalCrossState, const UINT8 wTrainId); #ifdef __cplusplus } diff --git a/TSCP/src/APP/ciapp/Switch/SwitchConfigDataManage.c b/TSCP/src/APP/ciapp/Switch/SwitchConfigDataManage.c index 3d4f925..b8e9a87 100644 --- a/TSCP/src/APP/ciapp/Switch/SwitchConfigDataManage.c +++ b/TSCP/src/APP/ciapp/Switch/SwitchConfigDataManage.c @@ -1467,4 +1467,262 @@ UINT16 GetSwitchIbpDrvRelayId(const UINT16 switchId) retVal = CI_ERROR; } return retVal; -} \ No newline at end of file +} + +/* +* ȡָOC +* ˵ const UINT16 switchId, ID +* ֵ 0 ش +* >0 صOC +* add by mpt 20260326 +*/ +UINT8 GetSwitchIncludeOcNum(const UINT16 switchId) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT8 retVal = CI_ERROR; + + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if (SWITCH_SUM_MAX > bufIndex) + { + retVal = SwitchConfigDataStru[bufIndex].chSwitchBelongOcNum; + if (SWITCH_BELONG_OC_MAX < retVal) + { + retVal = CI_ERROR; + } + } + else + { + retVal = CI_ERROR; + } + return retVal; +} + +/* +* ȡָOCID +* ˵ const UINT8 index +* ֵ ָOCID +* add by mpt 20260326 +*/ +UINT8 GetSwitchIncludeOCId(const UINT16 switchId,const UINT8 index) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT8 retVal = CI_ERROR; + + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if ((SWITCH_SUM_MAX >bufIndex )&&(SWITCH_BELONG_OC_MAX > index)) + { + retVal = SwitchConfigDataStru[bufIndex].belongOCConfigData[index].OcId; + } + else + { + retVal = CI_ERROR; + } + return retVal; +} + +/* +* ȡָOC +* ˵ const UINT8 index +* ֵ ָOC +* add by mpt 20260326 +*/ +UINT8 GetSwitchThisOCIndex(const UINT16 switchId, const UINT8 ocId) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT8 retVal = SWITCH_BELONG_OC_MAX; + UINT8 i = 0u; + + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if ((SWITCH_SUM_MAX > bufIndex) && (OC_SUM_MAX > ocId)) + { + for (i = 0u; i < SWITCH_BELONG_OC_MAX;i++) + { + if (SwitchConfigDataStru[bufIndex].belongOCConfigData[i].OcId== ocId) + { + retVal = i; + break; + } + } + } + else + { + retVal = SWITCH_BELONG_OC_MAX; + } + return retVal; +} + +/* +* ȡָOCIJID +* ˵ const UINT16 switchId ID +* const UINT8 ocId OCID +* ֵ صָOCIJ +* add by mpt 20260326 +*/ +UINT8 GetSwitchszPlusBoxId(const UINT16 switchId, const UINT8 ocId) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT8 retVal = CI_ERROR; + UINT8 i = 0u; + + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if ((SWITCH_SUM_MAX > bufIndex) && (OC_SUM_MAX > ocId)) + { + for (i = 0u; i < SwitchConfigDataStru[bufIndex].chSwitchBelongOcNum; i++) + { + if (ocId == SwitchConfigDataStru[bufIndex].belongOCConfigData[i].OcId) + { + retVal = SwitchConfigDataStru[bufIndex].belongOCConfigData[i].szPlusBoxId; + break; + } + } + } + else + { + retVal = CI_ERROR; + } + return retVal; +} + +/* +* ȡָڸOCת޻忨 +* ˵ const UINT16 switchId ID +* const UINT8 ocId OCID +* ֵ ָڸOCת޻忨 +* add by mpt 20260326 +*/ +UINT8 GetSwitchThisOCBoardNum(const UINT16 switchId, const UINT8 ocId) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT8 retVal = CI_ERROR; + UINT8 i = 0u; + + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if ((SWITCH_SUM_MAX > bufIndex) && (OC_SUM_MAX > ocId)) + { + for (i = 0u; i < SwitchConfigDataStru[bufIndex].chSwitchBelongOcNum; i++) + { + if (ocId == SwitchConfigDataStru[bufIndex].belongOCConfigData[i].OcId) + { + retVal = SwitchConfigDataStru[bufIndex].belongOCConfigData[i].chSwitchBoardNum; + break; + } + } + } + else + { + retVal = CI_ERROR; + } + return retVal; +} + +/* +* ȡָڸOCת޻忨ID +* ˵ const UINT16 switchId ID +* const UINT8 ocId OCID +* ֵ ָڸOCת޻忨ID +* add by mpt 20260326 +*/ +UINT8 GetSwitchThisOCBoardIDindex(const UINT16 switchId, const UINT8 ocId,const UINT8 boardId) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT8 num = 0u; + UINT8 i = 0u; + UINT8 j = 0u; + UINT8 retVal = MAX_OC_SWITCH_INCLUDE_BOARD_NUM; + + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if ((SWITCH_SUM_MAX > bufIndex) && (OC_SUM_MAX > ocId)) + { + for (i = 0u; i < SwitchConfigDataStru[bufIndex].chSwitchBelongOcNum; i++) + { + if (ocId == SwitchConfigDataStru[bufIndex].belongOCConfigData[i].OcId) + { + num = SwitchConfigDataStru[bufIndex].belongOCConfigData[i].chSwitchBoardNum; + for (j = 0u; j < num; j++) + { + if (boardId == SwitchConfigDataStru[bufIndex].belongOCConfigData[i].ModuleAddr[j]) + { + retVal = j; + break; + } + } + break; + } + } + } + else + { + retVal = CI_ERROR; + } + return retVal; +} + +/* +* ȡָָOCһOCId +* ˵ const UINT16 switchId ID +* const UINT8 ocId OCID +* ֵ ָָOCһOCId +* add by mpt 20260326 +*/ +UINT8 GetSwitchThisOcOtherOCId(const UINT16 switchId, const UINT8 ocId) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT8 i = 0u; + UINT8 retVal = 0u; + + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if ((SWITCH_SUM_MAX > bufIndex) && (OC_SUM_MAX > ocId)&&(0u < ocId)) + { + for (i = 0u; i < SwitchConfigDataStru[bufIndex].chSwitchBelongOcNum; i++) + { + if ((ocId != SwitchConfigDataStru[bufIndex].belongOCConfigData[i].OcId)&&(0u < SwitchConfigDataStru[bufIndex].belongOCConfigData[i].OcId)) + { + retVal = SwitchConfigDataStru[bufIndex].belongOCConfigData[i].OcId; + break; + } + } + } + + return retVal; +} +/* +* ȡǷڱOC +* ˵ +* +* UINT16 switchId ID +* UINT8 ocId OCID +* ֵ 0: +* 1: +* Add by mpt 20260330 +*/ +UINT8 GetSwitchWhetherBelongThisOc(UINT16 switchId, UINT8 ocId) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT8 i = 0u; + UINT8 retVal = CI_ERROR; + 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) + { + if (ocId == SwitchConfigDataStru[bufIndex].belongOCConfigData[chOCIndex].OcId) + { + retVal = CI_SUCCESS; + } + } + } + + return retVal; +} + diff --git a/TSCP/src/APP/ciapp/Switch/SwitchConfigDataManage.h b/TSCP/src/APP/ciapp/Switch/SwitchConfigDataManage.h index 39b8123..29829c8 100644 --- a/TSCP/src/APP/ciapp/Switch/SwitchConfigDataManage.h +++ b/TSCP/src/APP/ciapp/Switch/SwitchConfigDataManage.h @@ -33,6 +33,14 @@ typedef struct S_ZzjPowerConfigDataStruct UINT16 ZzjFanweiPower2; /*ת޻J1_2*/ }ZzjPowerConfigDataStruct; +typedef struct S_SwitchBelongOCConfigDataStr/*OC*/ +{ + UINT8 OcId; /*ǰOC*/ + UINT8 chSwitchBoardNum; /*忨*/ + UINT8 ModuleAddr[MAX_OC_SWITCH_INCLUDE_BOARD_NUM]; /*ַID*/ + UINT8 szPlusBoxId; /*ת޻ڲID*/ +}SwitchBelongOCConfigDataStr; + typedef struct S_SwitchConfigDataStruct { UINT16 SwitchId; /*ID (ֶ)*/ @@ -99,6 +107,9 @@ typedef struct S_SwitchConfigDataStruct UINT16 DsDrvHRelayId; /*ڵ̵ID (ֶ-ʹ)*/ UINT16 IbpDrvRelayId; /*IBP̵·̵ID (ֶ-ʹ)*/ ZzjPowerConfigDataStruct ZzjPowerData[SWITCH_ZZJ_POWER_STATE_MAX_NUM]; /*ת޻*/ + + UINT8 chSwitchBelongOcNum;/*OC*/ + SwitchBelongOCConfigDataStr belongOCConfigData[SWITCH_BELONG_OC_MAX];/*OC*/ } SwitchConfigDataStruct; @@ -107,6 +118,8 @@ typedef struct S_OC_SwitchConfigDataStruct { UINT16 SwitchId; /*ID(ֶ)*/ UINT16 BelongOcId; /*OCID(ֶ)*/ + UINT8 ModuleAddrA[MAX_OC_SWITCH_INCLUDE_BOARD_NUM]; /*Aϵַ*/ + UINT8 ModuleAddrB[MAX_OC_SWITCH_INCLUDE_BOARD_NUM]; /*Bϵַ*/ }OCSwitchConfigDataStruct; /*ɰOCݱ*/ @@ -592,8 +605,71 @@ ZzjPowerConfigDataStruct* GetSwitchZzjPowerConfigData(const UINT16 switchId); * >0: IBP̵·ʾ̵ID */ UINT16 GetSwitchIbpDrvRelayId(const UINT16 switchId); - - +/* +* ȡָOC +* ˵ const UINT16 switchId, ID +* ֵ 0 ش +* >0 صOC +* add by mpt 20260326 +*/ +UINT8 GetSwitchIncludeOcNum(const UINT16 switchId); +/* +* ȡָOCID +* ˵ const UINT8 index +* ֵ ָOCID +* add by mpt 20260326 +*/ +UINT8 GetSwitchIncludeOCId(const UINT16 switchId, const UINT8 index); +/* +* ȡָOC +* ˵ const UINT8 index +* ֵ ָOC +* add by mpt 20260326 +*/ +UINT8 GetSwitchThisOCIndex(const UINT16 switchId, const UINT8 ocId); +/* +* ȡָOCIJID +* ˵ const UINT16 switchId ID +* const UINT8 ocId OCID +* ֵ صָOCIJ +* add by mpt 20260326 +*/ +UINT8 GetSwitchszPlusBoxId(const UINT16 switchId, const UINT8 ocId); +/* +* ȡָڸOCת޻忨 +* ˵ const UINT16 switchId ID +* const UINT8 ocId OCID +* ֵ ָڸOCת޻忨 +* add by mpt 20260326 +*/ +UINT8 GetSwitchThisOCBoardNum(const UINT16 switchId, const UINT8 ocId); +/* +* ȡָڸOCת޻忨ID +* ˵ const UINT16 switchId ID +* const UINT8 ocId OCID +* ֵ ָڸOCת޻忨ID +* add by mpt 20260326 +*/ +UINT8 GetSwitchThisOCBoardIDindex(const UINT16 switchId, const UINT8 ocId, const UINT8 boardId); +/* +* ȡָָOCһOCId +* ˵ const UINT16 switchId ID +* const UINT8 ocId OCID +* ֵ ָָOCһOCId +* add by mpt 20260326 +*/ +UINT8 GetSwitchThisOcOtherOCId(const UINT16 switchId, const UINT8 ocId); +/* +* ȡǷڱOC +* ˵ +* +* UINT16 switchId ID +* UINT8 ocId OCID +* ֵ 0: +* 1: +* Add by mpt 20260330 +*/ +UINT8 GetSwitchWhetherBelongThisOc(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 36c7602..fd57f0c 100644 --- a/TSCP/src/APP/ciapp/Switch/SwitchDataManage.c +++ b/TSCP/src/APP/ciapp/Switch/SwitchDataManage.c @@ -416,6 +416,73 @@ void SetSwitchLockStatus(const UINT8 pLockType,const UINT16 pLockId,const UINT16 retVal = CI_SUCCESS; } break; + case SWITCH_PLOCKTYPE_AXISSEC:/*Ϊη*/ + { + if (SWITCH_LOCK_PROTECT_SET == lockCommand) + {/*÷*/ + findFlag = 0u;/*δҵ*/ + emptyIndex = -1;/*λ*/ + /*ұidǷڣڣ˳ڣһλã±յļ*/ + for (ii = 0u; ii < SWITCH_MAX_PROTECT_LOCKED_NUM; ii++) + { + if (emptyIndex < 0)/*λС0Ųҿλ*/ + { + if (0u == SwitchDataStru[bufIndex].PLockedAxisSecIdArr[ii]) + { + emptyIndex = (INT16)ii;/*λֵΪ0ʾΪλס*/ + } + } + + if (pLockId == SwitchDataStru[bufIndex].PLockedAxisSecIdArr[ii]) + {/*ҵյid*/ + findFlag = 1u; + } + } + + if (0u == findFlag) + {/*ûҵid*/ + if (emptyIndex >= 0) + {/*ҿλ*/ + SwitchDataStru[bufIndex].PLockedAxisSecIdArr[emptyIndex] = pLockId;/*ñid*/ + SwitchDataStru[bufIndex].PLockedAxisSecNum++; /*id1*/ + } + else + {/*ֵ֧豸ĿӡϢ*/ + debug_infor_printf((const)"Set switch id %d PLOCK by axis %d fail,no empty space\n", bufIndex, pLockId); + } + } + } + else if (SWITCH_LOCK_PROTECT_CANCEL == lockCommand) + {/*ȡ*/ + targetIndex = -1;/*Ŀ*/ + /*ûҵ*/ + /*ҵΪ0Ұ-1*/ + for (ii = 0u; ii < SWITCH_MAX_PROTECT_LOCKED_NUM; ii++) + { + if (SwitchDataStru[bufIndex].PLockedAxisSecIdArr[ii] == pLockId) + { + targetIndex = (INT16)ii; + SwitchDataStru[bufIndex].PLockedAxisSecIdArr[ii] = 0;/*Ϊ0*/ + break; + } + } + + if (targetIndex >= 0)/*ҵ*/ + { + if (SwitchDataStru[bufIndex].PLockedAxisSecNum > 0U) + { + SwitchDataStru[bufIndex].PLockedAxisSecNum--;/*1*/ + } + } + + } + else + { + /*Ƿ*/ + } + retVal = CI_SUCCESS; + break; + } default: { /*ͷǷ÷ر־*/ @@ -432,7 +499,7 @@ void SetSwitchLockStatus(const UINT8 pLockType,const UINT16 pLockId,const UINT16 (SWITCH_LOCK_STATUS_DAP == SwitchDataStru[bufIndex].LockStatus))/*״̬*/ { if (SwitchDataStru[bufIndex].PLockedNonRouteNum + SwitchDataStru[bufIndex].PLockedOverlapNum + - SwitchDataStru[bufIndex].PLockedRouteNum + SwitchDataStruCC[bufIndex].PLockedLogRouteNum > 0u) + SwitchDataStru[bufIndex].PLockedRouteNum + SwitchDataStruCC[bufIndex].PLockedLogRouteNum + SwitchDataStru[bufIndex].PLockedAxisSecNum > 0u) {/*յ豸Ŀ0*/ SwitchDataStru[bufIndex].LockStatus = SWITCH_LOCK_STATUS_DAP; } @@ -451,7 +518,7 @@ void SetSwitchLockStatus(const UINT8 pLockType,const UINT16 pLockId,const UINT16 else {/**/ if (SwitchDataStru[bufIndex].PLockedNonRouteNum + SwitchDataStru[bufIndex].PLockedOverlapNum + - SwitchDataStru[bufIndex].PLockedRouteNum + SwitchDataStruCC[bufIndex].PLockedLogRouteNum > 0u) + SwitchDataStru[bufIndex].PLockedRouteNum + SwitchDataStruCC[bufIndex].PLockedLogRouteNum + SwitchDataStru[bufIndex].PLockedAxisSecNum > 0u) {/*յ豸Ŀ0*/ SwitchDataStru[bufIndex].LockStatus = SWITCH_LOCK_STATUS_PROTECT; } @@ -1092,11 +1159,14 @@ 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) { @@ -1120,7 +1190,9 @@ void SetSwitchDrivePostion(const UINT16 switchId, const UINT8 drivePosition) /*λ*/ SwitchDataStru[bufIndex].SwitchDrivePos = drivePosition; /*ʼʱ*/ - SetSwitchDriveStartCycNum(switchId, Get2oo2CurCycleNum()); + SetSwitchDriveStartCycNum(switchId, dwCurCycleNum); + /*õʼڣֱλʱ0*/ + SetSwitchOutputDrvCmdCycNum(switchId, dwCurCycleNum); } } else @@ -1156,7 +1228,10 @@ void SetSwitchDrivePostion(const UINT16 switchId, const UINT8 drivePosition) /*λ*/ SwitchDataStru[bufIndex2].SwitchDrivePos = drivePosition; /*ʼʱ*/ - SetSwitchDriveStartCycNum(switchOtherId, Get2oo2CurCycleNum()); + SetSwitchDriveStartCycNum(switchOtherId, dwCurCycleNum); + + /*õʼڣֱλʱ0*/ + SetSwitchOutputDrvCmdCycNum(switchOtherId, dwCurCycleNum); } } else @@ -3068,4 +3143,515 @@ UINT8 GetSwitchThisOverlapPLocked(const UINT16 switchId, const UINT16 overlapId) } return retVal; -} \ No newline at end of file +} + +/* +* õָOCĿģʽ +* ˵ const UINT16 switchId, ID +* const UINT8 ocId ָOC +* const UINT8 controlMode ģʽ +* ֵ void +* add by mpt 20260326 +*/ +void SetSwitchThisOcCotrolMode(const UINT16 switchId, const UINT8 ocId,const UINT8 controlMode) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT8 i = 0u; + UINT8 chSwitchIncludeOcNum = 0U; + + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + chSwitchIncludeOcNum = GetSwitchIncludeOcNum(switchId); + if ((SWITCH_SUM_MAX > bufIndex) && (0u < ocId)) + { + for (i = 0u; i < chSwitchIncludeOcNum; i++) + { + if (ocId == SwitchDataStru[bufIndex].belongOCData[i].OcId) + { + if ((MAIN_CONTROL == controlMode) || (STANDBY_CONTROL == controlMode) || (NO_CONTROL_FUN == controlMode) || (ERR_MODE_CONTROL == controlMode)) + { + SwitchDataStru[bufIndex].belongOCData[i].controlMode = controlMode; + } + break; + } + } + } + else + { + /*ʲôҲ*/ + } +} + +/* +* ȡָOCĿģʽ +* ˵ const UINT16 switchId, ID +* const UINT8 ocId ָOC +* ֵ ģʽ +* add by mpt 20260326 +*/ +UINT8 GetSwitchThisOcCotrolMode(const UINT16 switchId, const UINT8 ocId) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT8 retVal = CI_ERROR; + UINT8 i = 0u; + UINT8 chSwitchIncludeOcNum = 0U; + + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + chSwitchIncludeOcNum = GetSwitchIncludeOcNum(switchId); + if ((SWITCH_SUM_MAX > bufIndex) && (0u < ocId)) + { + for (i = 0u; i < chSwitchIncludeOcNum; i++) + { + if (ocId == SwitchDataStru[bufIndex].belongOCData[i].OcId) + { + retVal= SwitchDataStru[bufIndex].belongOCData[i].controlMode; + break; + } + } + } + else + { + /*ʲôҲ*/ + } + + return retVal; +} + +/* +* õOCID +* ˵ const UINT16 switchId, ID +* const UINT8 ocId ָOC +* ֵ void +* add by mpt 20260326 +*/ +void SetSwitchMainCotrolOCId(const UINT16 switchId, const UINT8 ocId) +{ + UINT16 bufIndex = 0u; /*±*/ + + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + if (SWITCH_SUM_MAX > bufIndex) + { + SwitchDataStru[bufIndex].mainControlOcId = ocId; + } + else + { + /*ʲôҲ*/ + } +} + +/* +* ȡOC +* ˵ const UINT16 switchId ID +* ֵ OCId +* add by mpt 20260326 +*/ +UINT8 GetSwitchMainCotrolOCId(const UINT16 switchId) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT8 retVal = CI_ERROR; + + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + if (SWITCH_SUM_MAX > bufIndex) + { + retVal = SwitchDataStru[bufIndex].mainControlOcId; + } + else + { + /*ʲôҲ*/ + } + + return retVal; +} + +/* +* õָOCִе״̬ +* ˵ const UINT16 switchId, ID +* const UINT8 ocId ָOC +* const UINT8 state ״̬ +* ֵ void +* add by mpt 20260326 +*/ +void SetSwitchOcPlusBoxSateState(const UINT16 switchId, const UINT8 ocId, const UINT8 state) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT8 i = 0u; + UINT8 chOCIndex = 0U; + + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + chOCIndex = GetSwitchThisOCIndex(switchId, ocId); + if ((SWITCH_SUM_MAX > bufIndex) && (chOCIndex < SWITCH_BELONG_OC_MAX)) + { + SwitchDataStru[bufIndex].belongOCData[chOCIndex].PlusBoxSate = state; + } + else + { + /*ʲôҲ*/ + } +} + +/* +* ȡָOCеִе״̬ +* ˵ const UINT16 switchId, ID +* const UINT8 ocId ָOC +* const UINT8 state ״̬ +* ֵ 0x55 ת޻ִеʾʾ +* 0xAA ת޻ִе˿ʾ˿ +* 0 Ƿ״̬ +* add by mpt 20260326 +*/ +UINT8 GetSwitchOcPlusBoxSateState(const UINT16 switchId, const UINT8 ocId) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT8 ret = 0u; + UINT8 chOCIndex = 0U; + + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + chOCIndex = GetSwitchThisOCIndex(switchId, ocId); + if ((SWITCH_SUM_MAX > bufIndex) && (chOCIndex < SWITCH_BELONG_OC_MAX)) + { + ret = SwitchDataStru[bufIndex].belongOCData[chOCIndex].PlusBoxSate; + } + else + { + /*ʲôҲ*/ + } + return ret; +} + + +/* +* ָڸOCת޻忨ID״̬ +* ˵ const UINT16 switchId ID +* const UINT8 ocId OCID +* const UINT8 boardId 忨ID +* UINT8 state 忨״̬ +* ֵ void +* add by mpt 20260326 +*/ +void SetSwitchThisOCBoardState(const UINT16 switchId, const UINT8 ocId, const UINT8 boardId, const UINT8 state) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT8 chBoardIndex = 0u; + UINT8 chOCIndex = 0u; + + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if (SWITCH_SUM_MAX > bufIndex) + { + + chOCIndex = GetSwitchThisOCIndex(switchId, ocId); + chBoardIndex = GetSwitchThisOCBoardIDindex(switchId, ocId, boardId); + if ((MAX_OC_SWITCH_INCLUDE_BOARD_NUM > chBoardIndex)&&(SWITCH_BELONG_OC_MAX >chOCIndex)) + { + SwitchDataStru[bufIndex].belongOCData[chOCIndex].BoardStateBuf[chBoardIndex] = state; + } + else + { + /*nothing*/ + } + } + else + { + /*nothing*/ + } +} + +/* +* ȡָڸOCǷijת޻ +* ˵ const UINT16 switchId ID +* const UINT8 ocId OCID +* const UINT8 boardId 忨ID +* UINT8 state 忨״̬ +* ֵ SWITCH_BOARD_FAULT +* SWITCH_BOARD_NORMAL +* add by mpt 20260326 +*/ +UINT8 GetSwitchThisOCBoardState(const UINT16 switchId, const UINT8 ocId) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT8 num = 0u; + UINT8 i = 0u; + UINT8 chSwitchThisOCBoardNum = 0u; + UINT8 chOCIndex = 0U; + UINT8 addrAState = 0u; + UINT8 addrBState = 0u; + UINT8 retVal = SWITCH_BOARD_FAULT; + + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if (SWITCH_SUM_MAX > bufIndex) + { + chOCIndex = GetSwitchThisOCIndex(switchId, ocId); + chSwitchThisOCBoardNum = GetSwitchThisOCBoardNum(switchId, ocId); + if (SWITCH_BELONG_OC_MAX > chOCIndex) + { + for (i = 0; i < (chSwitchThisOCBoardNum/2u); i+=2u) + { + 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_FAULT; + break; + } + } + + if ((0U < chSwitchThisOCBoardNum) && (i == chSwitchThisOCBoardNum)) + { + retVal = SWITCH_BOARD_NORMAL; + } + + } + + } + else + { + /*nothing*/ + } + return retVal; +} + +/* +* õָOC +* ˵ const UINT16 switchId, ID +* const UINT8 ocId ָOC +* const UINT8 state ״̬ +* ֵ void +* add by mpt 20260326 +*/ +void SetSwitchThisOcOutControlCmd(const UINT16 switchId, const UINT8 ocId, const UINT8 state) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT8 chOCIndex = 0U; + + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + chOCIndex = GetSwitchThisOCIndex(switchId, ocId); + if ((SWITCH_SUM_MAX > bufIndex) && (SWITCH_BELONG_OC_MAX >chOCIndex)) + { + if ((MAIN_CONTROL == state) || (STANDBY_CONTROL == state)||(NO_CONTROL_FUN == state)) + { + SwitchDataStru[bufIndex].belongOCData[chOCIndex].OutControlCmd = state; + } + } + else + { + /*ʲôҲ*/ + } +} + +/* +* ȡָOC +* ˵ const UINT16 switchId, ID +* const UINT8 ocId ָOC +* const UINT8 state ״̬ +* ֵ 0x55 +* 0xaa +* add by mpt 20260326 +*/ +UINT8 GetSwitchThisOcOutControlCmd(const UINT16 switchId, const UINT8 ocId) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT8 chOCIndex = 0U; + UINT8 retVal = 0U; + + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + chOCIndex = GetSwitchThisOCIndex(switchId, ocId); + if ((SWITCH_SUM_MAX > bufIndex) && (SWITCH_BELONG_OC_MAX > chOCIndex)) + { + retVal = SwitchDataStru[bufIndex].belongOCData[chOCIndex].OutControlCmd; + } + else + { + /*ʲôҲ*/ + } + return retVal; +} + +/* +* õָOC +* ˵ const UINT16 switchId, ID +* const UINT8 ocId ָOC +* const UINT32 cycnum +* ֵ void +* add by mpt 20260326 +*/ +void SetSwitchOutMainContrCmdCycNum(const UINT16 switchId, const UINT8 ocId,const UINT32 cycnum) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT8 chOCIndex = 0U; + + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + chOCIndex = GetSwitchThisOCIndex(switchId, ocId); + if ((SWITCH_SUM_MAX > bufIndex) && (SWITCH_BELONG_OC_MAX > chOCIndex)) + { + SwitchDataStru[bufIndex].belongOCData[chOCIndex].OutMainControlCmdCycNum = cycnum; + } + else + { + /*ʲôҲ*/ + } +} + +/* +* ȡָOC +* ˵ const UINT16 switchId, ID +* const UINT8 ocId ָOC +* ֵ void +* add by mpt 20260326 +*/ +UINT32 GetSwitchOutMainContrCmdCycNum(const UINT16 switchId, const UINT8 ocId) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT8 chOCIndex = 0U; + UINT32 retVal = 0u; + + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + chOCIndex = GetSwitchThisOCIndex(switchId, ocId); + if ((SWITCH_SUM_MAX > bufIndex) && (SWITCH_BELONG_OC_MAX > chOCIndex)) + { + retVal = SwitchDataStru[bufIndex].belongOCData[chOCIndex].OutMainControlCmdCycNum; + } + else + { + /*ʲôҲ*/ + } + + return retVal; +} + +/* +* õ·ʼ +* ˵ const UINT16 switchId, ID +* const UINT32 cycNum ں +* ֵ +* add mpt by 20260327 +*/ +void SetSwitchOutputDrvCmdCycNum(const UINT16 switchId, const UINT32 cycNum) +{ + UINT16 bufIndex = 0u; /*±*/ + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + if (bufIndex < SWITCH_SUM_MAX) + { + SwitchDataStru[bufIndex].SwitchOutputDrvCmdCycNum = cycNum; + } +} +/* +* ȡ·ʼ +* ˵ const UINT16 switchId, ID +* ֵ ʼ +* add mpt by 20260327 +*/ +UINT32 GetSwitchOutputDrvCmdCycNum(const UINT16 switchId) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT32 retVal = CI_ERROR; + + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + if (bufIndex < SWITCH_SUM_MAX) + { + retVal = SwitchDataStru[bufIndex].SwitchOutputDrvCmdCycNum; + } + return retVal; +} +/* +* õѰұʾλ +* ˵ const UINT16 switchId, ID +* const UINT8 ocId OCID +* const UINT8 chFindCmd Ѱ +* ֵ +* add mpt by 20260327 +*/ +void SetSwitchThisOcFindPostionCmd(const UINT16 switchId, const UINT8 ocId, const UINT8 chFindCmd) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT8 chOCIndex = 0U; + + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + if (SWITCH_SUM_MAX > bufIndex) + { + chOCIndex = GetSwitchThisOCIndex(switchId, ocId); + if (SWITCH_BELONG_OC_MAX > chOCIndex) + { + if ((FIND_DINGWEI_CMD == chFindCmd)||(FIND_FANWEI_CMD == chFindCmd) || (INIT_FIND_CMD == chFindCmd)||(NO_FIND_CMD == chFindCmd)) + { + SwitchDataStru[bufIndex].belongOCData[chOCIndex].FindPostionCmd = chFindCmd; + } + else + { + /*޴*/ + } + } + } +} +/* +* ȡѰұʾ +* ˵ const UINT16 switchId, ID +* const UINT8 ocId OCID +* ֵ Ѱұʾλ +* add mpt by 20260327 +*/ +UINT8 GetSwitchThisOcFindPostionCmd(const UINT16 switchId, const UINT8 ocId) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT8 chOCIndex = 0U; + UINT8 retVal = 0u; + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + if (SWITCH_SUM_MAX > bufIndex) + { + chOCIndex = GetSwitchThisOCIndex(switchId, ocId); + if (SWITCH_BELONG_OC_MAX > chOCIndex) + { + retVal = SwitchDataStru[bufIndex].belongOCData[chOCIndex].FindPostionCmd; + } + } + + return retVal; +} + + +/* +* ȡѰұʾʼ +* ˵ const UINT16 switchId, ID +* const UINT8 ocId OCID +* ֵ Ѱұʾʼ +* add mpt by 20260327 +*/ +UINT32 GetSwitchThisOcFindCmdCycNum(const UINT16 switchId, const UINT8 ocId) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT8 chOCIndex = 0U; + UINT32 retVal = 0u; + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + if (SWITCH_SUM_MAX > bufIndex) + { + chOCIndex = GetSwitchThisOCIndex(switchId, ocId); + if (SWITCH_BELONG_OC_MAX > chOCIndex) + { + retVal = SwitchDataStru[bufIndex].belongOCData[chOCIndex].FindCmdStartCycNum; + } + } + + return retVal; +} +/* +* õѰұʾʼ +* ˵ const UINT16 switchId, ID +* const UINT8 ocId OCID +* UINT32 cycNum ں +* ֵ void +* add mpt by 20260402 +*/ +void SetSwitchThisOcFindCmdCycNum(const UINT16 switchId, const UINT8 ocId, const UINT32 cycNum) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT8 chOCIndex = 0U; + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + if (SWITCH_SUM_MAX > bufIndex) + { + chOCIndex = GetSwitchThisOCIndex(switchId, ocId); + if (SWITCH_BELONG_OC_MAX > chOCIndex) + { + SwitchDataStru[bufIndex].belongOCData[chOCIndex].FindCmdStartCycNum = cycNum; + } + } +} + diff --git a/TSCP/src/APP/ciapp/Switch/SwitchDataManage.h b/TSCP/src/APP/ciapp/Switch/SwitchDataManage.h index db8527c..68b0d2e 100644 --- a/TSCP/src/APP/ciapp/Switch/SwitchDataManage.h +++ b/TSCP/src/APP/ciapp/Switch/SwitchDataManage.h @@ -28,6 +28,18 @@ extern "C" { #endif +/*ݽṹ*/ +typedef struct S_SwitchOcDataStruct +{ + UINT8 OcId; /*OC ID*/ + UINT8 controlMode; /*ǰģʽ*/ + UINT8 OutControlCmd;/**/ + UINT8 PlusBoxSate; /*״̬*/ + UINT8 BoardStateBuf[MAX_OC_SWITCH_INCLUDE_BOARD_NUM];/*忨״̬*/ + UINT32 OutMainControlCmdCycNum;/*ڣʱãһֱһֱãǰͨж->ʱãյOC->ʱ*/ + UINT8 FindPostionCmd;/*1 Ѱ2 Ѱ3ʼѰ0 Ѱλָ*/ + UINT32 FindCmdStartCycNum;/*Ѱʾʼ*/ +}SwitchOCDataStr; /*ݽṹ*/ typedef struct S_SwitchDataStruct @@ -83,6 +95,16 @@ typedef struct S_SwitchDataStruct UINT8 chSwitchIncldeZzjNum; /*Ӧת޻Ŀ豸ΪźŻʱ,˸Ϊ0*/ UINT8 szSwitchIncldeZzjState[SWITCH_ZZJ_POWER_STATE_MAX_NUM];/*ת޻״̬*/ + + UINT32 SwitchOutputDrvCmdCycNum; /*ʼ*/ + UINT8 mainControlOcId;/*OCId*/ + UINT8 chSwitchBelongOcNum;/*OC*/ + SwitchOCDataStr belongOCData[SWITCH_BELONG_OC_MAX];/*OC״̬*/ + + UINT8 PLockedAxisSecNum;/*յļidֻڱļʹ*/ + UINT16 PLockedAxisSecIdArr[SWITCH_MAX_PROTECT_LOCKED_NUM];/*յļid飬ֻڱļʹ*/ + + } SwitchDataStruct; /*ݽṹ*/ @@ -748,7 +770,163 @@ UINT8 GetSwitchThisRoutePLocked(const UINT16 switchId, const UINT16 routeId); * ֵ CI_SUCCESS ѾջβϷCI_ERROR δñη */ UINT8 GetSwitchThisOverlapPLocked(const UINT16 switchId, const UINT16 overlapId); +/* +* õָOCĿģʽ +* ˵ const UINT16 switchId, ID +* const UINT8 ocId ָOC +* const UINT8 controlMode ģʽ +* ֵ void +* add by mpt 20260326 +*/ +void SetSwitchThisOcCotrolMode(const UINT16 switchId, const UINT8 ocId, const UINT8 controlMode); +/* +* ȡָOCĿģʽ +* ˵ const UINT16 switchId, ID +* const UINT8 ocId ָOC +* ֵ ģʽ +* add by mpt 20260326 +*/ +UINT8 GetSwitchThisOcCotrolMode(const UINT16 switchId, const UINT8 ocId); +/* +* õOCID +* ˵ const UINT16 switchId, ID +* const UINT8 ocId ָOC +* ֵ void +* add by mpt 20260326 +*/ +void SetSwitchMainCotrolOCId(const UINT16 switchId, const UINT8 ocId); +/* +* ȡOC +* ˵ const UINT16 switchId ID +* ֵ OCId +* add by mpt 20260326 +*/ +UINT8 GetSwitchMainCotrolOCId(const UINT16 switchId); +/* +* õָOCִе״̬ +* ˵ const UINT16 switchId, ID +* const UINT8 ocId ָOC +* const UINT8 state ״̬ +* ֵ void +* add by mpt 20260326 +*/ +void SetSwitchOcPlusBoxSateState(const UINT16 switchId, const UINT8 ocId, const UINT8 state); +/* +* ȡָOCеִе״̬ +* ˵ const UINT16 switchId, ID +* const UINT8 ocId ָOC +* const UINT8 state ״̬ +* ֵ > 0ָOCִе״̬ +* =0 Ƿ״̬ +* add by mpt 20260326 +*/ +UINT8 GetSwitchOcPlusBoxSateState(const UINT16 switchId, const UINT8 ocId); +/* +* ָڸOCת޻忨ID״̬ +* ˵ const UINT16 switchId ID +* const UINT8 ocId OCID +* const UINT8 boardId 忨ID +* UINT8 state 忨״̬ +* ֵ void +* add by mpt 20260326 +*/ +void SetSwitchThisOCBoardState(const UINT16 switchId, const UINT8 ocId, const UINT8 boardId, const UINT8 state); +/* +* ȡָڸOCǷijת޻ +* ˵ const UINT16 switchId ID +* const UINT8 ocId OCID +* const UINT8 boardId 忨ID +* UINT8 state 忨״̬ +* ֵ SWITCH_BOARD_FAULT +* SWITCH_BOARD_NORMAL +* add by mpt 20260326 +*/ +UINT8 GetSwitchThisOCBoardState(const UINT16 switchId, const UINT8 ocId); +/* +* õָOC +* ˵ const UINT16 switchId, ID +* const UINT8 ocId ָOC +* const UINT8 state ״̬ +* ֵ void +* add by mpt 20260326 +*/ +void SetSwitchThisOcOutControlCmd(const UINT16 switchId, const UINT8 ocId, const UINT8 state); +/* +* ȡָOC +* ˵ const UINT16 switchId, ID +* const UINT8 ocId ָOC +* const UINT8 state ״̬ +* ֵ 0x55 +* 0xaa +* add by mpt 20260326 +*/ +UINT8 GetSwitchThisOcOutControlCmd(const UINT16 switchId, const UINT8 ocId); +/* +* õָOC +* ˵ const UINT16 switchId, ID +* const UINT8 ocId ָOC +* ֵ void +* add by mpt 20260326 +*/ +void SetSwitchOutMainContrCmdCycNum(const UINT16 switchId, const UINT8 ocId, const UINT32 cycnum); +/* +* ȡָOC +* ˵ const UINT16 switchId, ID +* const UINT8 ocId ָOC +* ֵ void +* add by mpt 20260326 +*/ +UINT32 GetSwitchOutMainContrCmdCycNum(const UINT16 switchId, const UINT8 ocId); +/* +* õ·ʼ +* ˵ const UINT16 switchId, ID +* const UINT32 cycNum ں +* ֵ +* add mpt by 20260327 +*/ +void SetSwitchOutputDrvCmdCycNum(const UINT16 switchId, const UINT32 cycNum); +/* +* ȡ·ʼ +* ˵ const UINT16 switchId, ID +* ֵ ʼ +* add mpt by 20260327 +*/ +UINT32 GetSwitchOutputDrvCmdCycNum(const UINT16 switchId); +/* +* õѰұʾλ +* ˵ const UINT16 switchId, ID +* const UINT8 ocId OCID +* const UINT8 chFindCmd Ѱ +* ֵ +* add mpt by 20260327 +*/ +void SetSwitchThisOcFindPostionCmd(const UINT16 switchId, const UINT8 ocId, const UINT8 chFindCmd); +/* +* ȡѰұʾ +* ˵ const UINT16 switchId, ID +* const UINT8 ocId OCID +* ֵ Ѱұʾλ +* add mpt by 20260327 +*/ +UINT8 GetSwitchThisOcFindPostionCmd(const UINT16 switchId, const UINT8 ocId); +/* +* ȡѰұʾʼ +* ˵ const UINT16 switchId, ID +* const UINT8 ocId OCID +* ֵ Ѱұʾʼ +* add mpt by 20260327 +*/ +UINT32 GetSwitchThisOcFindCmdCycNum(const UINT16 switchId, const UINT8 ocId); +/* +* õѰұʾʼ +* ˵ const UINT16 switchId, ID +* const UINT8 ocId OCID +* UINT32 cycNum ں +* ֵ void +* add mpt by 20260402 +*/ +void SetSwitchThisOcFindCmdCycNum(const UINT16 switchId, const UINT8 ocId, const UINT32 cycNum); #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/Switch/SwitchDefine.h b/TSCP/src/APP/ciapp/Switch/SwitchDefine.h index e249e95..d143ac3 100644 --- a/TSCP/src/APP/ciapp/Switch/SwitchDefine.h +++ b/TSCP/src/APP/ciapp/Switch/SwitchDefine.h @@ -74,6 +74,9 @@ #define OC_SWITCH_DRIVE_POS_DINGWEI ((UINT16)0x5555) /*λ*/ #define OC_SWITCH_DRIVE_POS_FANWEI ((UINT16)0xaaaa) /*λ*/ #define OC_SWITCH_DRIVE_POS_KEEP ((UINT16)0x55aa) /*λñ*/ +#define OC_SWITCH_FIND_DINGWEI ((UINT16)0x555f) /*Ѱ*/ +#define OC_SWITCH_FIND_FANWEI ((UINT16)0xaaaf) /*Ѱ*/ +#define OC_SWITCH_ININ_FIAND ((UINT16)0x5faf) /*ʼѰ*/ #define OC_SWITCH_OTHER_BJ_STATE ((UINT8)0xf6) /*OCת޻˷ǣ״̬忨״̬*/ #define OC_SWITCH_OPEN_CAP_STATE ((UINT8)0x01) /*OCת޻״̬忨״̬*/ @@ -96,8 +99,6 @@ #define SWITCH_KERAO_STATE_NO ((UINT8)0xAA) /**/ /* zt ɾش 2022-02-15 */ -#define SWITCH_LAST_DRV_STAY_MAX_NUM ((UINT8)10) /*һЧλ*/ - #define SWITCH_MOVE_FAIL (UINT8)0x55 /*ƶʧ*/ #define SWITCH_USING_NORMAL (UINT8)0xaa /*ƶ*/ @@ -109,6 +110,7 @@ #define SWITCH_PLOCKTYPE_NONROUTE ((UINT8)0x4) /*ǽ·*/ #define SWITCH_PLOCKTYPE_NOROUTE_NOOVERLAP_NONONROUTE ((UINT8)0x5) /**/ #define SWITCH_PLOCKTYPE_LOGROUTE ((UINT8)0x6) /*߼·*/ +#define SWITCH_PLOCKTYPE_AXISSEC ((UINT8)0x7) /*η*/ #define SWITCH_OPER_NO_DANCAO ((UINT8)0x55) /*ǵٲ·աաǽ·աԶ·*/ #define SWITCH_OPER_DANCAO ((UINT8)0xaa) /*ٲ*/ @@ -147,5 +149,28 @@ #define SWITCH_ZZJ_POWER_STATE_MAX_NUM 5U /*ת޻ʶ״̬*/ +#define MAX_OC_SWITCH_INCLUDE_BOARD_NUM ((UINT8)10) /*һ֧忨ɴֵ*/ + +#define SWITCH_BOX_NUM 10U /*OC*/ + + +#define SWITCH_BELONG_OC_MAX 2U /*OC*/ + +#define MAIN_CONTROL 0x55U /**/ +#define STANDBY_CONTROL 0xAAU /**/ +#define NO_CONTROL_FUN 0x00U /*޴˹*/ +#define ERR_MODE_CONTROL 0xCCU /*쳣ģʽزֱأOCûȫа忨*/ + + +#define SWITCH_BOX_NORMAL ((UINT8)0x55) /*ת޻ִеʾʾ*/ +#define SWITCH_BOX_FAULT ((UINT8)0xAA) /*ת޻ִе˿ʾ˿*/ + +#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) /*Ѱλָ*/ #endif diff --git a/TSCP/src/APP/ciapp/System/SystemConfigDefine.h b/TSCP/src/APP/ciapp/System/SystemConfigDefine.h index 695a462..05ca236 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)25) /*ϵͳ汾*/ #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)2) /*ϵͳع汾*/ #ifdef SCADE_MODE /*SCADE汾*/ @@ -76,20 +76,20 @@ #define VER_SOFT_PRODUCT ((UINT8)40) /*Ʒ*/ #define VER_SOFT_MODUAL_APP ((UINT8)1) /*ģ*/ #define VER_SOFT_MIANVERSION ((UINT8)25) /*汾*/ -#define VER_SOFT_SUBVERSION ((UINT8)1) /*Ӱ汾*/ +#define VER_SOFT_SUBVERSION ((UINT8)3) /*Ӱ汾*/ #endif /*ɼݵĹݽṹ汾*/ #define VER_1_PUBLIC_FS_1 ((UINT8)31) -#define VER_1_PUBLIC_FS_2 ((UINT8)4) +#define VER_1_PUBLIC_FS_2 ((UINT8)5) #define VER_1_PUBLIC_FS_3 ((UINT8)0) #define VER_1_PUBLIC_FS_4 ((UINT8)0) -#define VER_2_PUBLIC_FS_1 ((UINT8)0) -#define VER_2_PUBLIC_FS_2 ((UINT8)0) -#define VER_2_PUBLIC_FS_3 ((UINT8)0) -#define VER_2_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_3_PUBLIC_FS_1 ((UINT8)28) #define VER_3_PUBLIC_FS_2 ((UINT8)0) @@ -98,7 +98,7 @@ /*ɼݵ˽ݽṹ汾*/ -#define VER_1_PRIVATE_FS_1 ((UINT8)49) +#define VER_1_PRIVATE_FS_1 ((UINT8)50) #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)36) /*oc 3.0 ݰ汾*/ +#define VER_1_OCDATA_FS_1 ((UINT8)37) /*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 11a725c..0f90313 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; /*Լ̵ӿ*/ + +static UINT8 OCSswitch = 0u; /*OC-S*/ /* RCϲTIOCܻ */ UINT8 CI_SYSTEM_TYPE_RCI = 0u; /*ģʽ0x3C-CI,0x3D-RC*/ static UINT8 gLocalRcLinkLineAttr = 0u; /* RC */ @@ -120,6 +122,10 @@ UINT32 wJXTCStopDetectTime = 0U; /* 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ϵͳһЧʱ*/ /* * ϵͳʱת * ˵ void @@ -342,6 +348,17 @@ void SystemParaTimeToCycleCount(void) paraVal = GetSystemParaValue(JXTC_STOP_DETECTION_TIME); wJXTCStopDetectTime = TimeToCycleCount((UINT32)paraVal * 1000U, appCycleTime); /*JXTCֹͣʱ䣨s*/ + + + paraVal = GetSystemParaValue(SWITCH_MACHINE_CUT_INTERVAL); + wSwitchMachineCutInterval = TimeToCycleCount((UINT32)paraVal * 1000U, appCycleTime); /*RC/CIϵͳת޻лʱ(λS)*/ + + + paraVal = GetSystemParaValue(SWITCH_MACHINE_CUT_DRV_INTERVAL); + wSwitchMachineDrvingCutInterval = TimeToCycleCount((UINT32)paraVal * 1000U, appCycleTime); /*RC/CIϵͳת޻лʱ(λS)*/ + + paraVal = GetSystemParaValue(SWITCH_LAST_DRV_TIME); + wSwitchLastDrvValidTime = TimeToCycleCount((UINT32)paraVal * 1000U, appCycleTime); /*RC/CIϵͳһЧʱ*/ } /* @@ -1340,20 +1357,22 @@ UINT8 CheckTiocPublicFsVersion(UINT8* pSrcFsVersion) if (NULL != pSrcFsVersion) { - SetLocalPublicDataType(DATA_TYPE_NEW); - /*ѯݽṹ汾Ƿڿɼݵİ汾 - 28.0.0.14汾ֻ֧õݽṹ VER_3_PUBLIC*/ + SetLocalPublicDataType(DATA_TYPE_MAIN_BRANCH); + /*ѯݽṹ汾Ƿڿɼݵİ汾 */ + /*28.0.0.14汾ֻ֧õݽṹ VER_3_PUBLIC*/ + /*23.2.1.4 汾ֻ֧õڶݽṹ VER_2_PUBLIC */ if ((VER_1_PUBLIC_FS_1 == pSrcFsVersion[0]) && (VER_1_PUBLIC_FS_2 == pSrcFsVersion[1]) && (VER_1_PUBLIC_FS_3 == pSrcFsVersion[2]) && (VER_1_PUBLIC_FS_4 == pSrcFsVersion[3])) { retVal = CI_SUCCESS; } else if ((VER_2_PUBLIC_FS_1 == pSrcFsVersion[0]) && (VER_2_PUBLIC_FS_2 == pSrcFsVersion[1]) && (VER_2_PUBLIC_FS_3 == pSrcFsVersion[2]) && (VER_2_PUBLIC_FS_4 == pSrcFsVersion[3])) { + SetLocalPublicDataType(DATA_TYPE_23_BRANCH); retVal = CI_SUCCESS; } else if ((VER_3_PUBLIC_FS_1 == pSrcFsVersion[0]) && (VER_3_PUBLIC_FS_2 == pSrcFsVersion[1]) && (VER_3_PUBLIC_FS_3 == pSrcFsVersion[2]) && (VER_3_PUBLIC_FS_4 == pSrcFsVersion[3])) { - SetLocalPublicDataType(DATA_TYPE_OLD); + SetLocalPublicDataType(DATA_TYPE_28_BRANCH); retVal = CI_SUCCESS; } else @@ -1421,11 +1440,11 @@ UINT8 CheckTiocOcFsVersion(UINT8* pSrcFsVersion) /*ѯOCݽṹ汾Ƿڿɼݵİ汾*/ if ((VER_1_OCDATA_FS_1 == pSrcFsVersion[0]) && (VER_1_OCDATA_FS_2 == pSrcFsVersion[1])) { - retVal = SetLocalOcPattern(DATA_TYPE_NEW); + retVal = CI_SUCCESS; } else if ((VER_2_OCDATA_FS_1 == pSrcFsVersion[0]) && (VER_2_OCDATA_FS_2 == pSrcFsVersion[1])) { - retVal = SetLocalOcPattern(DATA_TYPE_OLD); + retVal = CI_SUCCESS; } else { @@ -2426,6 +2445,55 @@ UINT16 GetTiocSystemParameterData(UINT32* pConfigDataAdderBuf, UINT16* pConfigDa { ;/* ޴ */ } + /* OC-S */ + wTmpLen = 1u + wTmpConfigDataSum; + if (wBufMaxLen >= wTmpLen) + { + pConfigDataAdderBuf[wTmpConfigDataSum] = &OCSswitch; + pConfigDataLenBuf[wTmpConfigDataSum] = (UINT16)sizeof(UINT8); + wTmpConfigDataSum++; + } + else + { + ;/* ޴ */ + } + + /* RC/CIϵͳת޻лʱ(λS) */ + wTmpLen = 1u + wTmpConfigDataSum; + if (wBufMaxLen >= wTmpLen) + { + pConfigDataAdderBuf[wTmpConfigDataSum] = &wSwitchMachineCutInterval; + pConfigDataLenBuf[wTmpConfigDataSum] = (UINT16)sizeof(UINT32); + wTmpConfigDataSum++; + } + else + { + ;/* ޴ */ + } + /* RC/CIϵͳת޻лʱ(λS) */ + wTmpLen = 1u + wTmpConfigDataSum; + if (wBufMaxLen >= wTmpLen) + { + pConfigDataAdderBuf[wTmpConfigDataSum] = &wSwitchMachineDrvingCutInterval; + pConfigDataLenBuf[wTmpConfigDataSum] = (UINT16)sizeof(UINT32); + wTmpConfigDataSum++; + } + else + { + ;/* ޴ */ + } + /* RC/CIϵͳһЧʱ*/ + wTmpLen = 1u + wTmpConfigDataSum; + if (wBufMaxLen >= wTmpLen) + { + pConfigDataAdderBuf[wTmpConfigDataSum] = &wSwitchLastDrvValidTime; + pConfigDataLenBuf[wTmpConfigDataSum] = (UINT16)sizeof(UINT32); + wTmpConfigDataSum++; + } + else + { + ;/* ޴ */ + } } else @@ -2880,24 +2948,7 @@ UINT32 GetdwNonReturnBtnErrEnsureCount(void) return dwNonReturnBtnErrEnsureTime; } -/* -* ñOC汾 -* ˵OC汾 -* ֵɹ CI_SUCCESS ʧCI_ERROR -* Create: fan 20250210 -*/ -UINT8 SetLocalOcPattern(UINT8 localOcPattern) -{ - UINT8 rtn = CI_ERROR; /*ֵ*/ - if ((DATA_TYPE_NEW == localOcPattern) || (DATA_TYPE_OLD == localOcPattern)) - { - gLocalOcType = localOcPattern; - rtn = CI_SUCCESS; - } - - return rtn; -} #if 0 /* * ȡOC汾 ----- δ @@ -2952,7 +3003,7 @@ UINT8 GetLocalRcLinkLineAttr(void) */ void SetLocalPublicDataType(UINT8 localPublicData) { - if ((DATA_TYPE_NEW == localPublicData) || (DATA_TYPE_OLD == localPublicData)) + if ((DATA_TYPE_MAIN_BRANCH == localPublicData) || (DATA_TYPE_28_BRANCH == localPublicData) || (DATA_TYPE_23_BRANCH == localPublicData)) { gLocalPublicDataType = localPublicData; } @@ -2961,7 +3012,9 @@ void SetLocalPublicDataType(UINT8 localPublicData) /* * ȡǰݰ汾 * ˵ -* ֵ0x55 °汾 0xaa Ͼɰ汾 +* ֵ0x01 ߰汾 + 0x02 28.0.0.x汾 + 0x03 23.2.1.x汾 * Create: fan 20250521 */ UINT8 GetLocalPublicDataType(void) @@ -3216,3 +3269,59 @@ void SetCiFunctionSwitchConfig(UINT8 chFunctionConfigIndex,UINT8 chSwitchVal) } } +/* +* ȡRC/CIϵͳת޻лʱ(λS) +* ˵ +* ֵRC/CIϵͳת޻лʱ(λS) +* by mpt 20260324 +*/ +UINT32 GetSwitchMachineCutInterval(void) +{ + return wSwitchMachineCutInterval; +} +/* +* ȡRC/CIϵͳת޻лʱ(λS) +* ˵ +* ֵRC/CIϵͳת޻лʱ(λS) +* by mpt 20260324 +*/ +UINT32 GetSwitchMachineDrvCutInterval(void) +{ + return wSwitchMachineDrvingCutInterval; +} +/* +* ȡRC/CIϵͳһЧʱ +* ˵ +* ֵRC/CIϵͳһЧʱ +* by mpt 20260324 +*/ +UINT32 GetSwitchLastDrvValidTime(void) +{ + return wSwitchLastDrvValidTime; +} +/* +* ñOCS +* ˵֧OC-S +* ֵǷóɹ +*/ +UINT8 SetLocalCiOCSswitch(UINT8 funSwitch) +{ + UINT8 rtn = 0u; /*ֵ*/ + + if ((OC_S_ON == funSwitch) || (OC_S_OFF == funSwitch)) + { + OCSswitch = funSwitch; + rtn = 1u; + } + + return rtn; +} +/* +* ñOCS +* ˵void +* ֵOCS +*/ +UINT8 GetLocalCiOCSswitch(void) +{ + return OCSswitch; +} diff --git a/TSCP/src/APP/ciapp/System/SystemParameterManage.h b/TSCP/src/APP/ciapp/System/SystemParameterManage.h index b4ce62a..150e918 100644 --- a/TSCP/src/APP/ciapp/System/SystemParameterManage.h +++ b/TSCP/src/APP/ciapp/System/SystemParameterManage.h @@ -84,7 +84,7 @@ extern "C" { #define FUNC_DA_SWITCH ((UINT8)48) /*ѹܿأ0x55:֧֣0xaa֧֣*/ #define FUNC_OC_100_OR_200 ((UINT8)49) /*ִеԪʹͣ0x55:OC-1000xaaOC-200*/ #define FUNC_OC_200_INOUTNET ((UINT8)50) /*OCͨʹã0x55:0xaa*/ -#define FUNC_ZIFUSHI_BUTTON ((UINT8)51) /*ťǷΪԸʽ0x55:Ըʽ0xaaԸʽ*/ +#define FUNC_ZIFUSHI_BUTTON ((UINT8)51) /*ťǷΪԸʽ0x55:Ըʽ0xaaԸʽ0x5A·*/ #define FUNC_JIZHONGQU_LINSHIXIASNSU_FLAG ((UINT8)52) /*ZCͨжϺǷüʱ٣0x55:ã0xaaã*/ #define FUNC_REPEATE_OPEN_CHECK_SPKS ((UINT8)53) /*ʽ·ؿźǷSPKS״̬0x55:飬ʽؿ0xaa飬ؿ*/ #define FUNC_SWITCH_SHIBIAO_PROMPTLY_ALARM ((UINT8)54) /*ʧǷATS0XAA 0X55ȴʱ䳬ޱ*/ @@ -107,6 +107,7 @@ extern "C" { #define FUNC_WDOWNWASH_ZIFUSHI_BUTTON ((UINT8)72) /*ģʽϴͬⰴťǷΪԸʽ0X55Ըʽ0XAAԸʽ*/ #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 CiSum_ID ((UINT16)1)/*ʵվ */ @@ -186,7 +187,9 @@ extern "C" { #define JXTCJXTC_MUTUALLOCK_FAULT_TIME (75U) /*϶̽·ťжʱ䣨s*/ #define JXTC_STOP_DETECTION_TIME (76U) /*JXTCֹͣʱ䣨s*/ - +#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 FUNC_SWITCH_ON ((UINT8)0xAA) /*ÿش*/ #define FUNC_SWITCH_OFF ((UINT8)0x55) /*ÿعر*/ @@ -218,7 +221,7 @@ extern "C" { #define Oc_Max_Board_Num (57U) /*һOC忨Ŀϲ8+3*16=56飩*/ #define CI_SIGNAL_MAX ((UINT16)300) /*һCIźŻĿ*/ -#define CI_SWITCH_MAX ((UINT16)100) /*һCIĿ*/ +#define CI_SWITCH_MAX ((UINT16)200) /*һCIĿ*/ #define CI_GD_MAX ((UINT16)700) /**/ #define RC_WORK_MODE_CI ((UINT8)0x3Cu) /*ģʽ*/ @@ -242,8 +245,10 @@ extern "C" { #define FUNC_OVERLAP_LOCK_BY_ATS ((UINT8)0x01) /*ATSձ*/ #define FUNC_OVERLAP_LOCK_BY_CI ((UINT8)0x02) /*ձ*/ -#define DATA_TYPE_NEW ((UINT8)0x55u) /*ݽṹ__OC3.2 ݽṹ¹ݽṹ30.X*/ -#define DATA_TYPE_OLD ((UINT8)0xAAu) /*ݵOCݽṹ_򺼵ݽṹ28.0.0.X*/ +#define DATA_TYPE_MAIN_BRANCH ((UINT8)0x01U) /*ݽṹ----30.X*/ +#define DATA_TYPE_28_BRANCH ((UINT8)0x02U) /*ݽṹ--ݽṹ-28.0.0.X*/ +#define DATA_TYPE_23_BRANCH ((UINT8)0x03U) /*ݽṹ--3ݽṹ23.2.1.X*/ + #define OC200_VER2_1_9 ((UINT8)0x01u)/*ܿ7Ϊ1OC200 2.1.9ӿ*/ #define OC200_VER3_2 ((UINT8)0x02u)/*ܿ7Ϊ2OC200 3.2ӿ*/ @@ -254,6 +259,9 @@ 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_OFF ((UINT8)0x55) /*֧OC-S*/ + /*ϵͳṹ*/ typedef struct S_SystemParameterStruct { @@ -364,25 +372,14 @@ typedef struct S_SystemParaStruct UINT32 CiAndPscTransmitBadEnsureTime ; /**********ϵͳ****************/ - UINT16 MaxLineLimitSpeed;/*·,˴ݿдŵUINT8km/hݣҪתcmpsλ*/ UINT8 MaxTsrSpeed;/*ʱ*/ - UINT8 TimeZoneDifference;/*NTPУʱʱ.ʱ뱾ʱʱλʱӦʹʱӦ3600תΪ롣*/ - UINT16 MABackDistance;/*ȫ.ǵ£DZо·¶ȵȣƶȨǵİȫ*/ UINT16 MaxTsrNum;/*һʱٵ*/ UINT16 MaxSectionOfTsr;/*һʱٱа߼*/ - UINT32 IvocIvocCommunicationErrorTime;/*IVOC-IVOCŹжʱ䣨ms,add by yt202231գ䳵ϵͳ*/ UINT32 IvocOcCommunicationErrorTime;/*IVOC-OCͨŹжʱ(ms),add by yt202231գ䳵ϵͳ*/ - UINT32 TmcItsCommunicationErrorTime;/*TMC-ITSͨŹжʱ䣨ms,add by yt202231գ䳵ϵͳ*/ UINT32 TmcOcCommunicationErrorTime;/*TMC-OCͨŹжʱ(ms),add by yt202231գ䳵ϵͳ*/ - UINT32 ItsOcCommunicationErrorTime;/*ITS-OCͨŹжʱ䣨ms,add by yt202231գ䳵ϵͳ*/ - UINT32 OcPsdCommunicationErrorTime;/*OC-PSDͨŹжʱ䣨ms,add by yt202231գ䳵ϵͳ*/ - UINT32 IvocTslCommunicationErrorTime;/*IVOC-TSLͨŹжʱ䣨ms,add by yt202231գ䳵ϵͳ*/ UINT32 OcTslCommunicationErrorTime;/*OC-TSLͨŹжʱ䣨ms,add by yt202231գ䳵ϵͳ*/ - UINT16 MALengthForATOParking; /*ATO׼ͣMA,add by yt202231գ䳵ϵͳ*/ UINT8 LinkLogicDirUpAndDown; /*ϵͳ߼зĹϵ,add by yt202231գ䳵ϵͳ*/ - UINT16 OppositeTrackDistance; /*ʻ˫Сȫ루cm,add by yt202231գ䳵ϵͳ*/ UINT32 MaxMALength; /*·½ƶ루λm,add by yt202231գ䳵ϵͳ*/ - UINT32 VobcAtsCommunicationErrorTime;/*VOBCATSͨŹжʱ*/ UINT32 dwLineMinTrainLength; /*ϵͳݣ·С*/ UINT8 chZXDynamicTestSwitch; /*Ƿֶ֧̬ԣ55 رգAA aaر 55*/ UINT8 chDynamicTestSwitch; /*Ƿֶ֧̬Կأ55 رգAA aaر 55*/ @@ -508,6 +505,7 @@ extern UINT32 gSystemUpdateMainUseCycNum; /*ϵͳ extern UINT8 localBackUpFlag; /*/ģʽ ԭڴϵֱ־*/ extern UINT32 dwDownWashWaitAcceptTime; /*ģʽϴȴֵԱͬʱ䣨S*/ extern UINT32 LineMinTrainLength; /*ϵͳݣ·С*/ +extern UINT32 wJXTCStopDetectTime; /*϶ֹ̽ͣʱ䣨s*/ /* * ϵͳʱת * ˵ void @@ -1384,13 +1382,6 @@ UINT32 GetArbProtectCheckTime(void); */ UINT32 GetdwNonReturnBtnErrEnsureCount(void); -/* -* ñOC汾 -* ˵OC汾 -* ֵɹ CI_SUCCESS ʧCI_ERROR -* Create: fan 20250210 -*/ -UINT8 SetLocalOcPattern(UINT8 localOcPattern); #if 0 /* * ȡOC汾-----OC δ @@ -1427,7 +1418,9 @@ void SetLocalPublicDataType(UINT8 localPublicData); /* * ȡǰݰ汾 * ˵ -* ֵ0x55 °汾 0xaa Ͼɰ汾 +* ֵ0x01 ߰汾 + 0x02 28.0.0.x汾 + 0x03 23.2.1.x汾 * Create: fan 20250521 */ UINT8 GetLocalPublicDataType(void); @@ -1543,6 +1536,40 @@ UINT8 GetCldAndScxMergeFlag(void); */ void SetCiFunctionSwitchConfig(UINT8 chFunctionConfigIndex, UINT8 chSwitchVal); +/* +* ȡRC/CIϵͳת޻лʱ(λS) +* ˵ +* ֵRC/CIϵͳת޻лʱ(λS) +* by mpt 20260324 +*/ +UINT32 GetSwitchMachineCutInterval(void); +/* +* ȡRC/CIϵͳת޻лʱ(λS) +* ˵ +* ֵRC/CIϵͳת޻лʱ(λS) +* by mpt 20260324 +*/ +UINT32 GetSwitchMachineDrvCutInterval(void); +/* +* ȡRC/CIϵͳһЧʱ +* ˵ +* ֵRC/CIϵͳһЧʱ +* by mpt 20260324 +*/ +UINT32 GetSwitchLastDrvValidTime(void); +/* +* ñOCS +* ˵֧OC-S +* ֵǷóɹ +*/ +UINT8 SetLocalCiOCSswitch(UINT8 funSwitch); +/* +* ñOCS +* ˵void +* ֵOCS +*/ +UINT8 GetLocalCiOCSswitch(void); + #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/Train/TrainDataManage.c b/TSCP/src/APP/ciapp/Train/TrainDataManage.c index b257b24..7465ff8 100644 --- a/TSCP/src/APP/ciapp/Train/TrainDataManage.c +++ b/TSCP/src/APP/ciapp/Train/TrainDataManage.c @@ -15,6 +15,7 @@ #include "WLBrakeDataManage.h" #include "SectionStateProcess_define.h" #include "AxisSort_api.h" +#include "../ParsePack/ParsePackZcData.h" TrainInfoStru gstTrainInfo[TRAIN_SUM_MAX] = { 0 }; UINT16 gszTrainId[TRAIN_SUM_MAX] = { 0U }; @@ -192,6 +193,30 @@ const UINT8 chFlag * note߳粻תΪUCT */ static void SetTrainCanUct(const UINT16 wTrainId, const UINT8 chFlag); +/* +* λϢ +* ˵ const UINT16 wTrainId, гID +* const UINT8 chInputFlag ־ +* ֵ +*/ +static void ImportLocationData(const UINT16 wTrainId, const UINT8 chInputFlag); +/* +* ˫ͨ״̬ +* ˵ const UINT16 wTrainId, гID +* const UINT8 chComBadFlag ͨжϱ־ +* ֵ +*/ +static void DoubleTrianComStateJuge(const UINT16 wTrainId, const UINT8 chComBadFlag); + +/** +* @brief ȡгСȫͷԴã +* @param UINT16 wTrainId гID +* @param UINT16 wRouteId ·ID +* @param struct_PathPoint *pMinHead Сȫͷ +* @return +*/ +static void GetTrainCrossMinHead(UINT16 wTrainId, UINT16 wRouteId, struct_PathPoint *pMinHead); + /*================================================================================== *ܣʼгϢṹ塣 *úʵгϢṹijʼ @@ -304,6 +329,8 @@ UINT8 TrainDataModuleInit(void) /*еĺгABLϢṹ*/ (void)CommonMemSet((void*)&gstTrainInfo[chCycle].strAblTrainNeedData, (UINT32)sizeof(ABLTrainInfoStru), 0U, (UINT32)sizeof(ABLTrainInfoStru)); + /*гʽϢṹ*/ + (void)CommonMemSet((void*)&gstTrainInfo[chCycle].strBlocLinkData, (UINT32)sizeof(BlocLinkInfoStru), 0U, (UINT32)sizeof(BlocLinkInfoStru)); gstTrainInfo[chCycle].wTrainHeadSigId = 0U; gstTrainInfo[chCycle].wTrainHeadTrainId = TRAIN_ID_INVAL; gstTrainInfo[chCycle].chTrainLocReverseRouteFlag = TRAIN_LOC_REV_ROUTE_FLAG_NONE; @@ -1631,6 +1658,105 @@ UINT8 SetTrainSafeHeadDir(const UINT16 wTrainId, const UINT8 chDir) return chRetVal; } +/* +* ȡָгСȫͷlink +* ˵ const UINT16 wTrainId, гID +* ֵ ȫͷlink +* : 2026.3.27 +*/ +UINT16 GetTrainMinSafeHeadLink(const UINT16 wTrainId) +{ + UINT16 wRetVal = UINT16_MAX; + UINT16 wBufIndex = 0U; + + wBufIndex = GetTrainBufIndex(wTrainId); + if (TRAIN_SUM_MAX > wBufIndex) + { + wRetVal = gstTrainInfo[wBufIndex].wMinSafeHeadLink; + } + else + { + wRetVal = UINT16_MAX; + } + + return wRetVal; +} + +/* +* ȡָгСȫͷlinkƫ +* ˵ const UINT16 wTrainId, гID +* ֵ ȫͷlinkƫ +* : 2026.3.27 +*/ +UINT32 GetTrainMinSafeHeadOffset(const UINT16 wTrainId) +{ + UINT32 dwRetVal = UINT32_MAX; + UINT16 wBufIndex = 0U; + + wBufIndex = GetTrainBufIndex(wTrainId); + if (TRAIN_SUM_MAX > wBufIndex) + { + dwRetVal = gstTrainInfo[wBufIndex].dwMinSafeHeadOffset; + } + else + { + dwRetVal = UINT32_MAX; + } + + return dwRetVal; +} + +/* +* ȡָгСȫͷ +* ˵ const UINT16 wTrainId, гID +* ֵ ȫͷ +* : 2026.3.27 +*/ +UINT8 GetTrainMinSafeHeadDir(const UINT16 wTrainId) +{ + UINT8 chRetVal = UINT8_MAX; + UINT16 wBufIndex = 0U; + + wBufIndex = GetTrainBufIndex(wTrainId); + if (TRAIN_SUM_MAX > wBufIndex) + { + chRetVal = gstTrainInfo[wBufIndex].chMinSafeHeadDir; + } + else + { + chRetVal = UINT8_MAX; + } + + return chRetVal; +} + +/* +* ָгСȫͷλ +* ˵const UINT16 wTrainId, гID +* const UINT16 wLinkId +* const UINT16 dwLinkOffset +* const UINT16 chDir +* ֵ CI_ERROR: ʧ +* CI_SUCCESS:ݳɹ +* : 2026.3.27 +*/ +void SetTrainMinSafeHead(const UINT16 wTrainId, const UINT16 wLinkId, const UINT32 dwLinkOffset, const UINT8 chDir) +{ + UINT16 wBufIndex = 0U; + + wBufIndex = GetTrainBufIndex(wTrainId); + if (TRAIN_SUM_MAX > wBufIndex) + { + gstTrainInfo[wBufIndex].wMinSafeHeadLink = wLinkId; + gstTrainInfo[wBufIndex].dwMinSafeHeadOffset = dwLinkOffset; + gstTrainInfo[wBufIndex].chMinSafeHeadDir = chDir; + } + else + { + /**/ + } +} + /* * ָгȫͷlink * ˵ const UINT16 wTrainId, гID @@ -2300,8 +2426,11 @@ void UpdateVbtcTrainSafePos(UINT8 rtnValue, UINT16 trainID, TrainSafeLocStru *te */ static void CalHeadTrainSafePosFromUnSafe(UINT16 wTrainId, UINT32 dwHeadDistance, UINT8 chDir) { - UINT16 wTrainHeadLink = 0u; /*гͷLINK*/ + UINT16 wTrainHeadLink = 0u; /*гͷLINK*/ UINT32 dwTrainHeadOffset = 0u; /*гͷLINKƫ*/ + UINT16 wTrainMinHeadLink = 0u; /*гСͷLINK*/ + UINT32 dwTrainMinHeadOffset = 0u; /*гСͷLINKƫ*/ + UINT8 chMinHeadDir = 0u; /*гСͷ*/ UINT16 wSwitchId = 0u; UINT8 chFunRtn = 0u; /*ȫλü㷵ֵ*/ TrainSafeLocStru Temp_TrainSafeLoc; /*гȫλýṹ*/ @@ -2320,7 +2449,7 @@ static void CalHeadTrainSafePosFromUnSafe(UINT16 wTrainId, UINT32 dwHeadDistance UINT8 changePNum = 0U; /*սṹ*/ - (void)memset(&Temp_TrainSafeLoc, 0x00, sizeof(TrainSafeLocStru)); + (void)CommonMemSet(&Temp_TrainSafeLoc, sizeof(TrainSafeLocStru), 0x00u, sizeof(TrainSafeLocStru)); wTrainHeadLink = GetTrainMaxHeadLink(wTrainId); dwTrainHeadOffset = GetTrainMaxHeadOffset(wTrainId); chNvramPosFlag = GetTrainNvramPosFlag(wTrainId); @@ -2421,6 +2550,29 @@ static void CalHeadTrainSafePosFromUnSafe(UINT16 wTrainId, UINT32 dwHeadDistance ClearTrainSafeHeadDir(wTrainId); } } + + /*ȡСǰλ*/ + wTrainMinHeadLink = GetTrainMinHeadLink(wTrainId); + dwTrainMinHeadOffset = GetTrainMinHeadOffset(wTrainId); + chMinHeadDir = GetTrainDir_MinHead(wTrainId); + wSwitchId = UINT16_MAX; + (void)CommonMemSet(&Temp_TrainSafeLoc, sizeof(TrainSafeLocStru), 0x00u, sizeof(TrainSafeLocStru)); + + /*Сǰȫλ*/ + chFunRtn = CalTrainSafeLoc(FINDHEADSAFEFLAG, CALSAFEPOSFLAG, wTrainMinHeadLink, + dwTrainMinHeadOffset, dwHeadDistance, chMinHeadDir, &wSwitchId, &Temp_TrainSafeLoc); + /*ȫλòѯɹ*/ + if ((3u == chFunRtn) || (1u == chFunRtn) || (2u == chFunRtn)) + { + SetTrainMinSafeHead(wTrainId, Temp_TrainSafeLoc.wHeadLink, + Temp_TrainSafeLoc.dwHeadOffset, Temp_TrainSafeLoc.chHeadDir); + } + else + { + /*ȫλòѯʧ*/ + SetTrainMinSafeHead(wTrainId, 0u, UINT32_MAX, 0u); + } + (void)SetTrainSafeHeadFlag(wTrainId); } @@ -2838,6 +2990,9 @@ void ClearTrainInfo(UINT16 wTrainId) /*еĺгABLϢṹ*/ (void)CommonMemSet((void*)&gstTrainInfo[wBufIndex].strAblTrainNeedData, (UINT32)sizeof(ABLTrainInfoStru), 0U, (UINT32)sizeof(ABLTrainInfoStru)); + /*гʽϢṹ*/ + (void)CommonMemSet((void*)&gstTrainInfo[wBufIndex].strBlocLinkData, (UINT32)sizeof(BlocLinkInfoStru), 0U, (UINT32)sizeof(BlocLinkInfoStru)); + gstTrainInfo[wBufIndex].wTrainHeadSigId = 0U; gstTrainInfo[wBufIndex].wTrainHeadTrainId = TRAIN_ID_INVAL; gstTrainInfo[wBufIndex].chTrainLocReverseRouteFlag = TRAIN_LOC_REV_ROUTE_FLAG_NONE; @@ -2936,6 +3091,7 @@ 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 }; @@ -2968,6 +3124,8 @@ 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); @@ -2987,6 +3145,7 @@ 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 { @@ -3108,6 +3267,8 @@ UINT8 dsuTrainCrossSignal(const UINT16 wTrainId, const UINT16 wRouteId) * @brief ѯгڽ·λ ʹгСǰС * @param UINT16 wTrainId гID * @param UINT16 wRouteId ·ID +* @param UINT8 cSetResTag ǷΪ߼Դʱ +* CBTCؿѹʱʹʱСǰ CI_SUCCESS CI_ERROR * @return 0ѯʧ * 1гδʻ· * 2гͷʻ·δѹ @@ -3115,7 +3276,7 @@ UINT8 dsuTrainCrossSignal(const UINT16 wTrainId, const UINT16 wRouteId) * 4гȫʻ· * 5гͷ· */ -UINT8 dsuTrainMinHeadCrossSignal(const UINT16 wTrainId, const UINT16 wRouteId) +UINT8 dsuTrainMinHeadCrossSignal(const UINT16 wTrainId, const UINT16 wRouteId, const UINT8 cSetResTag) { UINT8 chRouteDir = 0u; UINT16 wStartSignal = 0u; @@ -3141,8 +3302,15 @@ UINT8 dsuTrainMinHeadCrossSignal(const UINT16 wTrainId, const UINT16 wRouteId) wStartSignal = GetRouteStartSignalId(wRouteId); wEndSignal = GetRouteEndSignalId(wRouteId); chRouteDir = GetSignalDirection(wStartSignal); - strTrainMinHead.wLinkId = GetTrainMinHeadLink(wTrainId); - strTrainMinHead.dwOffset = GetTrainMinHeadOffset(wTrainId); + if (CI_SUCCESS == cSetResTag) + { + GetTrainCrossMinHead(wTrainId, wRouteId, &strTrainMinHead); + } + else + { + strTrainMinHead.wLinkId = GetTrainMinHeadLink(wTrainId); + strTrainMinHead.dwOffset = GetTrainMinHeadOffset(wTrainId); + } strTrainMinTail.wLinkId = GetTrainMinTailLink(wTrainId); strTrainMinTail.dwOffset = GetTrainMinTailOffset(wTrainId); strRouteZone.Dir = chRouteDir; @@ -3289,6 +3457,72 @@ UINT8 dsuTrainMinHeadCrossSignal(const UINT16 wTrainId, const UINT16 wRouteId) return chRtnVal; } + +/** +* @brief ȡгСȫͷԴã +* @param UINT16 wTrainId гID +* @param UINT16 wRouteId ·ID +* @param struct_PathPoint *pMinHead Сȫͷ +* @return +*/ +static void GetTrainCrossMinHead(UINT16 wTrainId, UINT16 wRouteId, struct_PathPoint *pMinHead) +{ + UINT8 chTrainCtrlMode = TRAIN_NO_MODE; /*гVOBC*/ + UINT8 wCbtcCrossNum = 0u; /*ZCCBTCѹ*/ + CbtcCrossStructZC *pCbtcCrossStruZc = NULL; /*ZCCBTCѹϢ*/ + UINT8 i = 0u; /*ѭ*/ + UINT16 wStartSignal = 0u; /*·ʼźŻ*/ + + if (NULL == pMinHead) + { + /*쳣*/ + } + else + { + /*ȸֵδʱСȫͷ*/ + pMinHead->wLinkId = GetTrainMinHeadLink(wTrainId); + pMinHead->dwOffset = GetTrainMinHeadOffset(wTrainId); + + /*ȡVOBC*/ + chTrainCtrlMode = GetTrainControlMode(wTrainId); + if (TRAIN_VOBC_MODE == chTrainCtrlMode) + { + /*CBTCصVOBCſʹʱСǰ*/ + wStartSignal = GetRouteStartSignalId(wRouteId); + wCbtcCrossNum = GetCbtcCrossNumZc(); + pCbtcCrossStruZc = GetCbtcCrossStructZc(); + + if (NULL == pCbtcCrossStruZc) + { + /*쳣*/ + } + else + { + /*ZCCBTCѹϢ*/ + for (i = 0u; i < wCbtcCrossNum; i++) + { + if (((UINT8)wTrainId == pCbtcCrossStruZc[i].wTrainId) + && (wStartSignal == pCbtcCrossStruZc[i].wSignalId)) + { + /*ZCCBTCгѹʹʱСȫͷпѹ*/ + pMinHead->wLinkId = GetTrainMinSafeHeadLink(wTrainId); + pMinHead->dwOffset = GetTrainMinSafeHeadOffset(wTrainId); + break; + } + else + { + /**/ + } + } + } + } + else + { + /**/ + } + } +} + /* * ָгȫͷǷռòͨ * ˵ const UINT16 wTrainId, гID @@ -12624,157 +12858,188 @@ UINT8 GetTrainControlMode(const UINT16 wTrainId) */ void InputMainTrainInformation(UINT16 wTrainId) { - UINT8 chTrainControlMode = 0u; + UINT8 chTrainControlMode = 0U; UINT16 wBufIndex = 0U; - UINT8 chIvocCtxValid = 0u; - UINT8 chVobcCtxValid = 0u; - UINT8 chInputFlag = 0u; - UINT8 chVobcLevel = 0u; + UINT8 chIvocCtxValid = 0U; + UINT8 chVobcCtxValid = 0U; + UINT8 chInputFlag = 0U; + UINT8 chVobcLevel = 0U; UINT8 chTrainPostionMode = 0U; - UINT8 chIvocLevel = 0u; + UINT8 chIvocLevel = 0U; UINT8 chTrainSleepState = 0U; UINT8 trainMsgFromTiocId = 0U; + UINT8 chIvocControlMode = 0U; + UINT8 chVobcControlMode = 0U; + UINT16 wAppCycleTime = 0U; + UINT32 dwCiAndVobcBadEnsureTime = 0U; + UINT32 dwTrainMsgDelayTime = 0U; + UINT8 chTransmitStat = 0U; + UINT8 chComBadFlag = 0U; chTrainControlMode = GetTrainControlMode(wTrainId); chIvocCtxValid = GetHLHTHeadCtxValid(CI_SYSTEM_TYPE_IVOC, (UINT8)wTrainId); chVobcCtxValid = GetHLHTHeadCtxValid(CI_SYSTEM_TYPE_VOBC, (UINT8)wTrainId); + chIvocControlMode = GetIvocControlMode(wTrainId); + chVobcControlMode = GetVobcControlMode(wTrainId); + + chTrainSleepState = GetTrainSleepState(wTrainId); + trainMsgFromTiocId = GetTrainMsgFromTiocId(wTrainId); - if (TRAIN_IVOC_MODE == chTrainControlMode) - { - if (CI_SUCCESS == chIvocCtxValid) - { - /*ʹIVOCλ,¼־*/ - chInputFlag = 2u; - SetTrainPostionMode(wTrainId, CI_SYSTEM_TYPE_IVOC); - /*سȼ*/ - chIvocLevel = GetIvocTrainLevel(wTrainId); - SetTrainLevel(wTrainId, chIvocLevel); - } - else if (CI_SUCCESS == chVobcCtxValid) - { - /*ʹVOBCλ,¼־*/ - chInputFlag = 1u; - SetTrainPostionMode(wTrainId, CI_SYSTEM_TYPE_VOBC); - /*δʹسλãгȼΪUR*/ - SetTrainLevel(wTrainId, TRAIN_LEVEL_UR); - } - else - {/*ΪЧֵ*/ + if (((TRAIN_STANDBY_MODE == chIvocControlMode) && (TRAIN_STANDBY_MODE == chVobcControlMode)) + || ((TRAIN_MAIN_MODE == chIvocControlMode) && (TRAIN_MAIN_MODE == chVobcControlMode))) + {/*˫˫ˢгλ*/ + if (0U == trainMsgFromTiocId) + {/*RCг*/ + wAppCycleTime = GetSystemParaValue(AppCycleTime_ID);/*ȡһʱ*/ - SetTrainPostionMode(wTrainId, 0U); - SetTrainLevel(wTrainId, TRAIN_LEVEL_BACKUP_UNKNOWN); - } + dwTrainMsgDelayTime = GetTrainMsgDelayTime(wTrainId); + (void)SetTrainMsgDelayTime(wTrainId, dwTrainMsgDelayTime + (UINT32)wAppCycleTime);/*λϢ룬Ϣʱ300ms*/ - } - else if (TRAIN_VOBC_MODE == chTrainControlMode) - { - if (CI_SUCCESS == chVobcCtxValid) - { - chInputFlag = 1u; - SetTrainPostionMode(wTrainId, CI_SYSTEM_TYPE_VOBC); - /*سȼ*/ - chVobcLevel = GetVobcTrainLevel(wTrainId); - SetTrainLevel(wTrainId, chVobcLevel); - } - else if (CI_SUCCESS == chIvocCtxValid) - { - /*ʹIVOCλ,¼־*/ - chInputFlag = 2u; + dwTrainMsgDelayTime = GetTrainMsgDelayTime(wTrainId); + dwCiAndVobcBadEnsureTime = GetCiAndVobcTransBadEnsureTime(); + if (dwCiAndVobcBadEnsureTime <= dwTrainMsgDelayTime) + {/*ۻʱӴﵽͨжʱ*/ - /*ֱʹIVOCϢɣ֮ǰѾùˣٴ*/ - SetTrainPostionMode(wTrainId, CI_SYSTEM_TYPE_IVOC); - /*δʹسλãгȼΪUR*/ - SetTrainLevel(wTrainId, TRAIN_LEVEL_UR); - } - else - {/*ΪЧֵ*/ - SetTrainPostionMode(wTrainId, 0U); - - SetTrainLevel(wTrainId, TRAIN_LEVEL_BACKUP_UNKNOWN); - } - } - else - { - if (CI_SUCCESS == chIvocCtxValid) - { - /*ʹIVOCλ,¼־*/ - chInputFlag = 2u; - SetTrainPostionMode(wTrainId, CI_SYSTEM_TYPE_IVOC); - /*δʹسλãгȼΪUR*/ - SetTrainLevel(wTrainId, TRAIN_LEVEL_UR); - } - else if (CI_SUCCESS == chVobcCtxValid) - { - /*ʹVOBCλ,¼־*/ - chInputFlag = 1u; - SetTrainPostionMode(wTrainId, CI_SYSTEM_TYPE_VOBC); - /*δʹسλãгȼΪUR*/ - SetTrainLevel(wTrainId, TRAIN_LEVEL_UR); - } - - else - { - SetTrainPostionMode(wTrainId, 0U); - (void)SetTrainControlMode(wTrainId, TRAIN_NO_MODE);/*سģʽ*/ - - if (0U == trainMsgFromTiocId) - {/*ûRCгϢ*/ - SetTrainLevel(wTrainId, TRAIN_LEVEL_BACKUP_UNKNOWN); + chTransmitStat = GetTrainTransitmitStat(wTrainId); + if (TRAIN_COMM_STATE_GOOD == chTransmitStat) + { + (void)SetTrainTransmitStat(wTrainId, TRAIN_COMM_STATE_BAD); + SetTrainLevel(wTrainId, TRAIN_LEVEL_UR); + } + else + { + /*޴*/ + } + (void)SetTrainMsgDelayTime(wTrainId, dwCiAndVobcBadEnsureTime);/*ͨжʱ䵼룬ۼ*/ + chComBadFlag = 1U;/*ͨжϱ־*/ + } + else + { + /*޴*/ } } - } - - /*λϢת*/ - - wBufIndex = GetTrainBufIndex(wTrainId); - if (TRAIN_SUM_MAX > wBufIndex) - { - if (1u == chInputFlag) - {/*ʹVOBCϢ*/ - gstTrainInfo[wBufIndex].chTrainDir = gTrainInfoTemp[wBufIndex].chVobcTrainDir; /*гзСȫָͷ*/ - gstTrainInfo[wBufIndex].chTrainDir_MaxTail = gTrainInfoTemp[wBufIndex].chVobcTrainDir_MaxTail; /*гзȫˣ*/ - gstTrainInfo[wBufIndex].chTrainDir_MinHead = gTrainInfoTemp[wBufIndex].chVobcTrainDir_MinHead; /*гзСȫǰˣ*/ - gstTrainInfo[wBufIndex].chTrainDir_MaxHead = gTrainInfoTemp[wBufIndex].chVobcTrainDir_MaxHead; /*гзȫǰˣ*/ - gstTrainInfo[wBufIndex].wTrainMaxHeadLink = gTrainInfoTemp[wBufIndex].wVobcTrainMaxHeadLink; /*гȫǰLink*/ - gstTrainInfo[wBufIndex].dwTrainMaxHeadOffset = gTrainInfoTemp[wBufIndex].dwVobcTrainMaxHeadOffset; /*гȫǰƫ*/ - gstTrainInfo[wBufIndex].wTrainMinHeadLink = gTrainInfoTemp[wBufIndex].wVobcTrainMinHeadLink; /*гСȫǰlink*/ - gstTrainInfo[wBufIndex].dwTrainMinHeadOffset = gTrainInfoTemp[wBufIndex].dwVobcTrainMinHeadOffset; /*гСȫǰƫ*/ - gstTrainInfo[wBufIndex].wTrainMaxTailLink = gTrainInfoTemp[wBufIndex].wVobcTrainMaxTailLink; /*гȫLink*/ - gstTrainInfo[wBufIndex].dwTrainMaxTailOffset = gTrainInfoTemp[wBufIndex].dwVobcTrainMaxTailOffset; /*гȫƫ*/ - gstTrainInfo[wBufIndex].wTrainMinTailLink = gTrainInfoTemp[wBufIndex].wVobcTrainMinTailLink; /*гСȫlink*/ - gstTrainInfo[wBufIndex].dwTrainMinTailOffset = gTrainInfoTemp[wBufIndex].dwVobcTrainMinTailOffset; /*гСȫƫ*/ - gstTrainInfo[wBufIndex].chSpeedDir = gTrainInfoTemp[wBufIndex].chVobcSpeedDir; /*ٶȷ*/ - gstTrainInfo[wBufIndex].wTrainSpeed = gTrainInfoTemp[wBufIndex].wVobcTrainSpeed; /*ٶ*/ - gstTrainInfo[wBufIndex].dwDelayTime = gTrainInfoTemp[wBufIndex].dwVobcDelayTime; /*ʱʱ*/ - gstTrainInfo[wBufIndex].chTrainModel = gTrainInfoTemp[wBufIndex].chVobcTrainModel; /*ʻģʽ*/ - - + else + {/*ͨųϢֱʹ*/ } - else if (2u == chInputFlag) - {/*ʹIVOCϢ*/ - gstTrainInfo[wBufIndex].chTrainDir = gTrainInfoTemp[wBufIndex].chIvocTrainDir; /*гзСȫָͷ*/ - gstTrainInfo[wBufIndex].chTrainDir_MaxTail = gTrainInfoTemp[wBufIndex].chIvocTrainDir_MaxTail; /*гзȫˣ*/ - gstTrainInfo[wBufIndex].chTrainDir_MinHead = gTrainInfoTemp[wBufIndex].chIvocTrainDir_MinHead; /*гзСȫǰˣ*/ - gstTrainInfo[wBufIndex].chTrainDir_MaxHead = gTrainInfoTemp[wBufIndex].chIvocTrainDir_MaxHead; /*гзȫǰˣ*/ - gstTrainInfo[wBufIndex].wTrainMaxHeadLink = gTrainInfoTemp[wBufIndex].wIvocTrainMaxHeadLink; /*гȫǰLink*/ - gstTrainInfo[wBufIndex].dwTrainMaxHeadOffset = gTrainInfoTemp[wBufIndex].dwIvocTrainMaxHeadOffset; /*гȫǰƫ*/ - gstTrainInfo[wBufIndex].wTrainMinHeadLink = gTrainInfoTemp[wBufIndex].wIvocTrainMinHeadLink; /*гСȫǰlink*/ - gstTrainInfo[wBufIndex].dwTrainMinHeadOffset = gTrainInfoTemp[wBufIndex].dwIvocTrainMinHeadOffset; /*гСȫǰƫ*/ - gstTrainInfo[wBufIndex].wTrainMaxTailLink = gTrainInfoTemp[wBufIndex].wIvocTrainMaxTailLink; /*гȫLink*/ - gstTrainInfo[wBufIndex].dwTrainMaxTailOffset = gTrainInfoTemp[wBufIndex].dwIvocTrainMaxTailOffset; /*гȫƫ*/ - gstTrainInfo[wBufIndex].wTrainMinTailLink = gTrainInfoTemp[wBufIndex].wIvocTrainMinTailLink; /*гСȫlink*/ - gstTrainInfo[wBufIndex].dwTrainMinTailOffset = gTrainInfoTemp[wBufIndex].dwIvocTrainMinTailOffset; /*гСȫƫ*/ - gstTrainInfo[wBufIndex].chSpeedDir = gTrainInfoTemp[wBufIndex].chIvocSpeedDir; /*ٶȷ*/ - gstTrainInfo[wBufIndex].wTrainSpeed = gTrainInfoTemp[wBufIndex].wIvocTrainSpeed; /*ٶ*/ - gstTrainInfo[wBufIndex].dwDelayTime = gTrainInfoTemp[wBufIndex].dwIvocDelayTime; /*ʱʱ*/ - gstTrainInfo[wBufIndex].chTrainModel = gTrainInfoTemp[wBufIndex].chIvocTrainModel; /*ʻģʽ*/ + + + chInputFlag = 0U;/*λϢ־*/ + } + else + {/*˫˫*/ + + if (TRAIN_IVOC_MODE == chTrainControlMode) + { + if (CI_SUCCESS == chIvocCtxValid) + { + /*ʹIVOCλ,¼־*/ + chInputFlag = 2u; + SetTrainPostionMode(wTrainId, CI_SYSTEM_TYPE_IVOC); + + if (TRAIN_MAIN_MODE == chIvocControlMode) + {/*سȼ*/ + chIvocLevel = GetIvocTrainLevel(wTrainId); + SetTrainLevel(wTrainId, chIvocLevel); + } + else + { + /*IVOCأʹλãгȼΪUR*/ + SetTrainLevel(wTrainId, TRAIN_LEVEL_UR); + } + } + else if (CI_SUCCESS == chVobcCtxValid) + { + /*ʹVOBCλ,¼־*/ + chInputFlag = 1u; + SetTrainPostionMode(wTrainId, CI_SYSTEM_TYPE_VOBC); + /*δʹسλãгȼΪUR*/ + SetTrainLevel(wTrainId, TRAIN_LEVEL_UR); + } + else + {/*ΪЧֵ*/ + + SetTrainPostionMode(wTrainId, 0U); + SetTrainLevel(wTrainId, TRAIN_LEVEL_UR); + } + + } + else if (TRAIN_VOBC_MODE == chTrainControlMode) + { + if (CI_SUCCESS == chVobcCtxValid) + { + chInputFlag = 1u; + SetTrainPostionMode(wTrainId, CI_SYSTEM_TYPE_VOBC); + if (TRAIN_MAIN_MODE == chVobcControlMode) + { + /*سȼ*/ + chVobcLevel = GetVobcTrainLevel(wTrainId); + SetTrainLevel(wTrainId, chVobcLevel); + } + else + { /*VOBCأʹλãгȼΪUR*/ + SetTrainLevel(wTrainId, TRAIN_LEVEL_UR); + } + } + else if (CI_SUCCESS == chIvocCtxValid) + { + /*ʹIVOCλ,¼־*/ + chInputFlag = 2u; + + /*ֱʹIVOCϢɣ֮ǰѾùˣٴ*/ + SetTrainPostionMode(wTrainId, CI_SYSTEM_TYPE_IVOC); + /*δʹسλãгȼΪUR*/ + SetTrainLevel(wTrainId, TRAIN_LEVEL_UR); + } + else + {/*ΪЧֵ*/ + SetTrainPostionMode(wTrainId, 0U); + + SetTrainLevel(wTrainId, TRAIN_LEVEL_UR); + } } else - {/*޴*/ + {/*س򽫵ǰܹͨŵijλõ벢õȼΪUR*/ + if (CI_SUCCESS == chIvocCtxValid) + { + /*ʹIVOCλ,¼־*/ + chInputFlag = 2u; + SetTrainPostionMode(wTrainId, CI_SYSTEM_TYPE_IVOC); + /*δʹسλãгȼΪUR*/ + SetTrainLevel(wTrainId, TRAIN_LEVEL_UR); + } + else if (CI_SUCCESS == chVobcCtxValid) + { + /*ʹVOBCλ,¼־*/ + chInputFlag = 1u; + SetTrainPostionMode(wTrainId, CI_SYSTEM_TYPE_VOBC); + /*δʹسλãгȼΪUR*/ + SetTrainLevel(wTrainId, TRAIN_LEVEL_UR); + } + else + { + SetTrainPostionMode(wTrainId, 0U); + + if ((0U == trainMsgFromTiocId) && (TRAIN_SLEEP_NO == chTrainSleepState)) + {/*ûRCгϢҷ״̬*/ + SetTrainLevel(wTrainId, TRAIN_LEVEL_UR); + } + } + } } + + + + + + /*λϢת*/ + ImportLocationData(wTrainId, chInputFlag); + + /*˫ͨ״̬*/ + DoubleTrianComStateJuge(wTrainId, chComBadFlag); + } /* @@ -12842,10 +13107,6 @@ void MainTrainInformationManage(void) { UINT16 ii = 0u;/*гѭƱ*/ UINT16 wTrainId = 0U; - UINT8 chIvocCtxValid = 0U; - UINT8 chVobcCtxValid = 0U; - UINT8 chTransmitStat = 0U; - UINT16 trainMsgFromTiocId = 0U; /*г*/ for (ii = 0u; ii < TRAIN_SUM_MAX; ii++) @@ -12853,27 +13114,6 @@ void MainTrainInformationManage(void) wTrainId = GetTrainId(ii); if (0u < wTrainId) { - chIvocCtxValid = GetHLHTHeadCtxValid(CI_SYSTEM_TYPE_IVOC, (UINT8)wTrainId); - chVobcCtxValid = GetHLHTHeadCtxValid(CI_SYSTEM_TYPE_VOBC, (UINT8)wTrainId); - - if ((CI_ERROR == chIvocCtxValid) && (CI_ERROR == chVobcCtxValid)) - {/*IVOC,VOBCͨжϣΪͨж*/ - chTransmitStat = GetTrainTransitmitStat(wTrainId); - if (TRAIN_COMM_STATE_GOOD == chTransmitStat) - { - trainMsgFromTiocId = GetTrainMsgFromTiocId(wTrainId); - /**ͨųϢTIOC*/ - if (0u == trainMsgFromTiocId) - { - (void)SetTrainTransmitStat(wTrainId, TRAIN_COMM_STATE_BAD); - } - } - } - else - {/*һͨ*/ - (void)SetTrainTransmitStat(wTrainId, TRAIN_COMM_STATE_GOOD); - - } JugeTrianControlMode(wTrainId);/*ٲõǰسģʽ*/ @@ -12911,28 +13151,6 @@ void SetTrainPostionMode(const UINT16 wTrainId, const UINT8 chPos) } } -/* -* ȡָгλģʽ -* ˵ const UINT16 wTrainId, гID -* ֵ -*/ -UINT8 GetTrainPostionMode(const UINT16 wTrainId) -{ - UINT16 wBufIndex = 0U; - UINT8 rtVal = 0u; - - wBufIndex = GetTrainBufIndex(wTrainId); - if (TRAIN_SUM_MAX > wBufIndex) - { - rtVal = gstTrainInfo[wBufIndex].chTrainPostionMode; - } - else - { - /*޴*/ - } - return rtVal; -} - /* * ָгСȫָͷз @@ -13383,15 +13601,12 @@ void SetIvocTrainMode(const UINT16 wTrainId, const UINT8 chMode) wBufIndex = GetTrainBufIndex(wTrainId); if ((TRAIN_SUM_MAX > wBufIndex) - && ( - (VOBC_TRAIN_MODE_AM == chMode) - || (VOBC_TRAIN_MODE_CM == chMode) - || (VOBC_TRAIN_MODE_RM == chMode) - || (VOBC_TRAIN_MODE_EUM == chMode) - || (VOBC_TRAIN_MODE_FAM == chMode) - || (VOBC_TRAIN_MODE_CAM == chMode) - ||(0u == chMode) - )) + && ((TRAIN_MODE_DEFAULT == chMode) || (TRAIN_MODE_RM == chMode) + || (TRAIN_MODE_CM == chMode) || (TRAIN_MODE_AM == chMode) + || (TRAIN_MODE_EUM == chMode) || (TRAIN_MODE_RD == chMode) + || (TRAIN_MODE_AR == chMode) || (TRAIN_MODE_FAM == chMode) + || (TRAIN_MODE_CAM == chMode) || (TRAIN_MODE_RRM == chMode) + || (TRAIN_MODE_VCM == chMode))) { gTrainInfoTemp[wBufIndex].chIvocTrainModel = chMode; } @@ -13455,4 +13670,284 @@ UINT8 GetIvocTrainLevel(const UINT16 wTrainId) } return chRetVal; -} \ No newline at end of file +} +/* +* λϢ +* ˵ const UINT16 wTrainId, гID +* const UINT8 chInputFlag ־ +* ֵ +*/ +static void ImportLocationData(const UINT16 wTrainId, const UINT8 chInputFlag) +{ + UINT16 wBufIndex = 0U; + + wBufIndex = GetTrainBufIndex(wTrainId); + if (TRAIN_SUM_MAX > wBufIndex) + { + if (1u == chInputFlag) + {/*ʹVOBCϢ*/ + if (0U != gTrainInfoTemp[wBufIndex].wVobcTrainMaxHeadLink) + { + gstTrainInfo[wBufIndex].chTrainDir = gTrainInfoTemp[wBufIndex].chVobcTrainDir; /*гзСȫָͷ*/ + gstTrainInfo[wBufIndex].chTrainDir_MaxTail = gTrainInfoTemp[wBufIndex].chVobcTrainDir_MaxTail; /*гзȫˣ*/ + gstTrainInfo[wBufIndex].chTrainDir_MinHead = gTrainInfoTemp[wBufIndex].chVobcTrainDir_MinHead; /*гзСȫǰˣ*/ + gstTrainInfo[wBufIndex].chTrainDir_MaxHead = gTrainInfoTemp[wBufIndex].chVobcTrainDir_MaxHead; /*гзȫǰˣ*/ + gstTrainInfo[wBufIndex].wTrainMaxHeadLink = gTrainInfoTemp[wBufIndex].wVobcTrainMaxHeadLink; /*гȫǰLink*/ + gstTrainInfo[wBufIndex].dwTrainMaxHeadOffset = gTrainInfoTemp[wBufIndex].dwVobcTrainMaxHeadOffset; /*гȫǰƫ*/ + gstTrainInfo[wBufIndex].wTrainMinHeadLink = gTrainInfoTemp[wBufIndex].wVobcTrainMinHeadLink; /*гСȫǰlink*/ + gstTrainInfo[wBufIndex].dwTrainMinHeadOffset = gTrainInfoTemp[wBufIndex].dwVobcTrainMinHeadOffset; /*гСȫǰƫ*/ + gstTrainInfo[wBufIndex].wTrainMaxTailLink = gTrainInfoTemp[wBufIndex].wVobcTrainMaxTailLink; /*гȫLink*/ + gstTrainInfo[wBufIndex].dwTrainMaxTailOffset = gTrainInfoTemp[wBufIndex].dwVobcTrainMaxTailOffset; /*гȫƫ*/ + gstTrainInfo[wBufIndex].wTrainMinTailLink = gTrainInfoTemp[wBufIndex].wVobcTrainMinTailLink; /*гСȫlink*/ + gstTrainInfo[wBufIndex].dwTrainMinTailOffset = gTrainInfoTemp[wBufIndex].dwVobcTrainMinTailOffset; /*гСȫƫ*/ + gstTrainInfo[wBufIndex].chSpeedDir = gTrainInfoTemp[wBufIndex].chVobcSpeedDir; /*ٶȷ*/ + gstTrainInfo[wBufIndex].wTrainSpeed = gTrainInfoTemp[wBufIndex].wVobcTrainSpeed; /*ٶ*/ + gstTrainInfo[wBufIndex].dwDelayTime = gTrainInfoTemp[wBufIndex].dwVobcDelayTime; /*ʱʱ*/ + gstTrainInfo[wBufIndex].chTrainModel = gTrainInfoTemp[wBufIndex].chVobcTrainModel; /*ʻģʽ*/ + + SetTrainMsgFromTiocId(wTrainId, 0U); + } + } + else if (2u == chInputFlag) + {/*ʹIVOCϢ*/ + if (0U != gTrainInfoTemp[wBufIndex].wIvocTrainMaxHeadLink) + { + gstTrainInfo[wBufIndex].chTrainDir = gTrainInfoTemp[wBufIndex].chIvocTrainDir; /*гзСȫָͷ*/ + gstTrainInfo[wBufIndex].chTrainDir_MaxTail = gTrainInfoTemp[wBufIndex].chIvocTrainDir_MaxTail; /*гзȫˣ*/ + gstTrainInfo[wBufIndex].chTrainDir_MinHead = gTrainInfoTemp[wBufIndex].chIvocTrainDir_MinHead; /*гзСȫǰˣ*/ + gstTrainInfo[wBufIndex].chTrainDir_MaxHead = gTrainInfoTemp[wBufIndex].chIvocTrainDir_MaxHead; /*гзȫǰˣ*/ + gstTrainInfo[wBufIndex].wTrainMaxHeadLink = gTrainInfoTemp[wBufIndex].wIvocTrainMaxHeadLink; /*гȫǰLink*/ + gstTrainInfo[wBufIndex].dwTrainMaxHeadOffset = gTrainInfoTemp[wBufIndex].dwIvocTrainMaxHeadOffset; /*гȫǰƫ*/ + gstTrainInfo[wBufIndex].wTrainMinHeadLink = gTrainInfoTemp[wBufIndex].wIvocTrainMinHeadLink; /*гСȫǰlink*/ + gstTrainInfo[wBufIndex].dwTrainMinHeadOffset = gTrainInfoTemp[wBufIndex].dwIvocTrainMinHeadOffset; /*гСȫǰƫ*/ + gstTrainInfo[wBufIndex].wTrainMaxTailLink = gTrainInfoTemp[wBufIndex].wIvocTrainMaxTailLink; /*гȫLink*/ + gstTrainInfo[wBufIndex].dwTrainMaxTailOffset = gTrainInfoTemp[wBufIndex].dwIvocTrainMaxTailOffset; /*гȫƫ*/ + gstTrainInfo[wBufIndex].wTrainMinTailLink = gTrainInfoTemp[wBufIndex].wIvocTrainMinTailLink; /*гСȫlink*/ + gstTrainInfo[wBufIndex].dwTrainMinTailOffset = gTrainInfoTemp[wBufIndex].dwIvocTrainMinTailOffset; /*гСȫƫ*/ + gstTrainInfo[wBufIndex].chSpeedDir = gTrainInfoTemp[wBufIndex].chIvocSpeedDir; /*ٶȷ*/ + gstTrainInfo[wBufIndex].wTrainSpeed = gTrainInfoTemp[wBufIndex].wIvocTrainSpeed; /*ٶ*/ + gstTrainInfo[wBufIndex].dwDelayTime = gTrainInfoTemp[wBufIndex].dwIvocDelayTime; /*ʱʱ*/ + gstTrainInfo[wBufIndex].chTrainModel = gTrainInfoTemp[wBufIndex].chIvocTrainModel; /*ʻģʽ*/ + + SetTrainMsgFromTiocId(wTrainId, 0U); + } + } + else + {/*޴*/ + + } + + } +} + +/* +* ˫ͨ״̬ +* ˵ const UINT16 wTrainId, гID +* const UINT8 chComBadFlag ͨжϱ־ +* ֵ +*/ +static void DoubleTrianComStateJuge(const UINT16 wTrainId, const UINT8 chComBadFlag) +{ + UINT8 chIvocCtxValid = 0U; + UINT8 chVobcCtxValid = 0U; + UINT8 trainMsgFromTiocId = 0U; + UINT8 chTransmitStat = 0U; + + 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)) + {/*IVOC,VOBCͨжϣΪͨж*/ + chTransmitStat = GetTrainTransitmitStat(wTrainId); + if (TRAIN_COMM_STATE_GOOD == chTransmitStat) + { + /**ͨųϢTIOC*/ + trainMsgFromTiocId = GetTrainMsgFromTiocId(wTrainId); + if (0u == trainMsgFromTiocId) + { + (void)SetTrainTransmitStat(wTrainId, TRAIN_COMM_STATE_BAD); + } + else + {/*ʲôҲִ*/ + } + } + } + else + {/*һͨ*/ + if (0U == chComBadFlag) + {/*ǰûͨж*/ + (void)SetTrainTransmitStat(wTrainId, TRAIN_COMM_STATE_GOOD); + } + + } +} + +/* +* ʽгϢ +* ˵ UINT16 wTrainId +* ֵ void +* by:lyj 20260316 +*/ +void ClearBlocLinkTrainInfo(UINT16 wTrainId) +{ + UINT16 wBufIndex = 0U; + + wBufIndex = GetTrainBufIndex(wTrainId); + if (TRAIN_SUM_MAX > wBufIndex) + { + /*ʽгϢ*/ + (void)CommonMemSet((void*)&gstTrainInfo[wBufIndex].strBlocLinkData, (UINT32)sizeof(BlocLinkInfoStru), 0U, (UINT32)sizeof(BlocLinkInfoStru)); + } + else + { + /*ʲôҲִ*/ + } +} + + +/* +* õʽг߼ +* ˵ const UINT16 wTrainId гID +* const UINT8 chOcculogNum г߼ +* const UINT16* pOcculogIdbuff г߼ +* ֵ void +* by:lyj 20260316 +*/ +void SetBlocLinkOccLogSecData(const UINT16 wTrainId, const UINT8 chOcculogNum, const UINT16* pOcculogIdbuff) +{ + UINT16 wBufIndex = 0U; + UINT8 i = 0U; + wBufIndex = GetTrainBufIndex(wTrainId); + if ((TRAIN_SUM_MAX > wBufIndex) && (NULL != pOcculogIdbuff) && (TRAIN_ABL_LOGSEC_SUM > chOcculogNum)) + { + gstTrainInfo[wBufIndex].strBlocLinkData.chBlocLinkLogSecNum = chOcculogNum; + for (i = 0U; i < chOcculogNum; i++) + { + gstTrainInfo[wBufIndex].strBlocLinkData.wBlocLinkLogSecBuf[i] = pOcculogIdbuff[i]; + } + + } + else + { + /**/ + } +} + +/* +* õʽгƥĽ· +* ˵ const UINT16 wTrainId гID +* const UINT16 wRouteId гƥĽ·id +* ֵ void +* by:lyj 20260316 +*/ +void SetBlocLinkRouteData(const UINT16 wTrainId, const UINT16 wRouteId) +{ + UINT16 wBufIndex = 0U; + UINT8 chRouteNum = 0U; + wBufIndex = GetTrainBufIndex(wTrainId); + if ((TRAIN_SUM_MAX > wBufIndex) && (0U < wRouteId) && (ROUTE_SUM_MAX > wRouteId)) + { + chRouteNum = gstTrainInfo[wBufIndex].strBlocLinkData.chBlocLinkRouteNum; + if (CI_VOBC_ROUTE_MAX > chRouteNum) + { + gstTrainInfo[wBufIndex].strBlocLinkData.wBlocLinkRouteBuf[chRouteNum] = wRouteId; + gstTrainInfo[wBufIndex].strBlocLinkData.chBlocLinkRouteNum++; + } + else + { + /**/ + } + } + else + { + /**/ + } +} + +/* +* ȡʽгƥĽ· +* ˵ const UINT16 wTrainId гID +* ֵ гƥĽ· +* by:lyj 20260316 +*/ +UINT8 GetBlocLinkRouteNum(const UINT16 wTrainId) +{ + UINT16 wBufIndex = 0U; + UINT8 chRouteNum = 0U; + wBufIndex = GetTrainBufIndex(wTrainId); + if (TRAIN_SUM_MAX > wBufIndex) + { + chRouteNum = gstTrainInfo[wBufIndex].strBlocLinkData.chBlocLinkRouteNum; + } + else + { + /**/ + } + return chRouteNum; +} + +/* +* ȡʽгƥĽ· +* ˵ const UINT16 wTrainId гID +* ֵ гƥĽ· +* by:lyj 20260316 +*/ +UINT16* GetBlocLinkRouteBuf(const UINT16 wTrainId) +{ + UINT16 wBufIndex = 0U; + UINT16* pRouteBuf = NULL; + wBufIndex = GetTrainBufIndex(wTrainId); + if (TRAIN_SUM_MAX > wBufIndex) + { + pRouteBuf = gstTrainInfo[wBufIndex].strBlocLinkData.wBlocLinkRouteBuf; + } + else + { + /**/ + } + return pRouteBuf; +} +/* +* ȡʽг߼ +* ˵ const UINT16 wTrainId гID +* ֵ г߼ +* by:lyj 20260316 +*/ +UINT8 GetBlocLinkLogSecNum(const UINT16 wTrainId) +{ + UINT16 wBufIndex = 0U; + UINT8 chLogSecNum = 0U; + wBufIndex = GetTrainBufIndex(wTrainId); + if (TRAIN_SUM_MAX > wBufIndex) + { + chLogSecNum = gstTrainInfo[wBufIndex].strBlocLinkData.chBlocLinkLogSecNum; + } + else + { + /**/ + } + return chLogSecNum; +} +/* +* ȡʽгƥ߼ +* ˵ const UINT16 wTrainId гID +* ֵ г߼ +* by:lyj 20260316 +*/ +UINT16* GetBlocLinkLogSecBuf(const UINT16 wTrainId) +{ + UINT16 wBufIndex = 0U; + UINT16* pLogSecBuf = NULL; + wBufIndex = GetTrainBufIndex(wTrainId); + if (TRAIN_SUM_MAX > wBufIndex) + { + pLogSecBuf = gstTrainInfo[wBufIndex].strBlocLinkData.wBlocLinkLogSecBuf; + } + else + { + /**/ + } + return pLogSecBuf; +} diff --git a/TSCP/src/APP/ciapp/Train/TrainDataManage.h b/TSCP/src/APP/ciapp/Train/TrainDataManage.h index 305ba64..a7e10d5 100644 --- a/TSCP/src/APP/ciapp/Train/TrainDataManage.h +++ b/TSCP/src/APP/ciapp/Train/TrainDataManage.h @@ -142,6 +142,17 @@ typedef struct S_ABLTrainInfoStru }ABLTrainInfoStru; +/*ʽϢṹ*/ +typedef struct S_BlocLinkInfoStru +{ + UINT8 chBlocLinkLogSecNum; /*ʽг߼-Լǰڽ·߼*/ + UINT16 wBlocLinkLogSecBuf[TRAIN_ABL_LOGSEC_SUM]; /*ʽг߼*/ + UINT8 chBlocLinkRouteNum; /*ʽƥ·*/ + UINT16 wBlocLinkRouteBuf[CI_VOBC_ROUTE_MAX]; /*ʽƥ·*/ + +}BlocLinkInfoStru; + + /*ǰATPλϢṹ*/ typedef struct S_HeadTrainAtpLocStru { @@ -213,12 +224,15 @@ typedef struct S_TrainInfoStru UINT16 wTrainMinTailLink; /*гСȫlink*/ UINT32 dwTrainMinTailOffset; /*гСȫƫ*/ UINT8 chSpeedDir; /*ٶȷ*/ - UINT16 wTrainSpeed; /*ٶȷ*/ + UINT16 wTrainSpeed; /*ٶ*/ UINT8 chTrainZeroState; /*г״̬*/ UINT8 chTransmitStat; /*г״̬*/ UINT8 chHeadScreenStat; /*гǰɸ־*/ UINT8 chTailScreenStat; /*гɸ־*/ TrainSafeLocStru strSafeLoc; /*гȫλ*/ + UINT16 wMinSafeHeadLink; /*Сȫͷlink*/ + UINT32 dwMinSafeHeadOffset; /*Сȫͷlinkƫ*/ + UINT8 chMinSafeHeadDir; /*Сȫͷ*/ UINT32 dwDelayTime; /*Ϣӳʱ*/ UINT16 wGroupOtherTrainId; /* һгID*/ UINT8 chGroupRunState; /* г״̬: 1DZ 2齨 3 4۷ 5*/ @@ -280,6 +294,7 @@ typedef struct S_TrainInfoStru UINT8 chtrainControlMode; /*ǰسģʽ0κοģʽ1:IVOCأ2VOBC*/ UINT8 chTrainPostionMode; /*гλģʽ0x10 ʹIVOCλã0x14ʹVOBCλ*/ + BlocLinkInfoStru strBlocLinkData; /*ʽϢ*/ }TrainInfoStru; @@ -710,6 +725,41 @@ CI_SUCCESS: */ UINT8 SetTrainSafeHeadDir(const UINT16 wTrainId, const UINT8 chDir); +/* +* ȡָгСȫͷlink +* ˵ const UINT16 wTrainId, гID +* ֵ ȫͷlink +* : 2026.3.27 +*/ +UINT16 GetTrainMinSafeHeadLink(const UINT16 wTrainId); + +/* +* ȡָгСȫͷlinkƫ +* ˵ const UINT16 wTrainId, гID +* ֵ ȫͷlinkƫ +* : 2026.3.27 +*/ +UINT32 GetTrainMinSafeHeadOffset(const UINT16 wTrainId); + +/* +* ȡָгСȫͷ +* ˵ const UINT16 wTrainId, гID +* ֵ ȫͷ +* : 2026.3.27 +*/ +UINT8 GetTrainMinSafeHeadDir(const UINT16 wTrainId); + +/* +* ָгСȫͷλ +* ˵const UINT16 wTrainId, гID +* const UINT16 wLinkId +* const UINT16 dwLinkOffset +* const UINT16 chDir +* ֵ +* : 2026.3.27 +*/ +void SetTrainMinSafeHead(const UINT16 wTrainId, const UINT16 wLinkId, const UINT32 dwLinkOffset, const UINT8 chDir); + /* * ָгȫͷlink * ˵ const UINT16 wTrainId, гID @@ -1062,6 +1112,8 @@ UINT8 isGroupHeadTrain(const UINT16 wTrainId); * @brief ѯгڽ·λ ʹгСǰС * @param UINT16 wTrainId гID * @param UINT16 wRouteId ·ID +* @param UINT8 cSetResTag ǷΪ߼Դʱ +* CBTCؿѹʱʹʱСǰ CI_SUCCESS CI_ERROR * @return 0ѯʧ * 1гδʻ· * 2гͷʻ·δѹ @@ -1069,7 +1121,7 @@ UINT8 isGroupHeadTrain(const UINT16 wTrainId); * 4гȫʻ· * 5гͷ· */ -UINT8 dsuTrainMinHeadCrossSignal(const UINT16 wTrainId, const UINT16 wRouteId); +UINT8 dsuTrainMinHeadCrossSignal(const UINT16 wTrainId, const UINT16 wRouteId, const UINT8 cSetResTag); /** * @brief ȡϵͨг @@ -2854,12 +2906,6 @@ UINT32 CalTrainMsgDelayTime(UINT16 wTrainId, UINT8 trainType); */ void SetTrainPostionMode(const UINT16 wTrainId, const UINT8 chPos); /* -* ȡָгλģʽ -* ˵ const UINT16 wTrainId, гID -* ֵ -*/ -UINT8 GetTrainPostionMode(const UINT16 wTrainId); -/* * ָIVOCгģʽ * ˵ const UINT16 wTrainId, гID * const UINT8 chMode ģʽ @@ -3004,6 +3050,59 @@ UINT8 SetIvocTrainMsgDelayTime(const UINT16 wTrainId, const UINT32 dwDelayTime); * ֵ :гȼ */ UINT8 GetIvocTrainLevel(const UINT16 wTrainId); +/* +* ʽгϢ +* ˵ void +* ֵ void +*/ +void ClearBlocLinkTrainInfo(UINT16 wTrainId); +/* +* õʽг߼ +* ˵ const UINT16 wTrainId гID +* const UINT8 chAOcculogNum г߼ +* const UINT16* chOcculogIdbuff г߼ +* ֵ void +* by:lyj 20260316 +*/ +void SetBlocLinkOccLogSecData(const UINT16 wTrainId, const UINT8 chAOcculogNum, const UINT16* chOcculogIdbuff); + +/* +* õʽгƥĽ· +* ˵ const UINT16 wTrainId гID +* const UINT16 wRouteId гƥĽ·id +* ֵ void +* by:lyj 20260316 +*/ +void SetBlocLinkRouteData(const UINT16 wTrainId, const UINT16 wRouteId); +/* +* ȡʽгƥĽ· +* ˵ const UINT16 wTrainId гID +* ֵ гƥĽ· +* by:lyj 20260316 +*/ +UINT8 GetBlocLinkRouteNum(const UINT16 wTrainId); +/* +* ȡʽгƥĽ· +* ˵ const UINT16 wTrainId гID +* ֵ гƥĽ· +* by:lyj 20260316 +*/ +UINT16* GetBlocLinkRouteBuf(const UINT16 wTrainId); +/* +* ȡʽг߼ +* ˵ const UINT16 wTrainId гID +* ֵ г߼ +* by:lyj 20260316 +*/ +UINT8 GetBlocLinkLogSecNum(const UINT16 wTrainId); +/* +* ȡʽгƥ߼ +* ˵ const UINT16 wTrainId гID +* ֵ г߼ +* by:lyj 20260316 +*/ +UINT16* GetBlocLinkLogSecBuf(const UINT16 wTrainId); + #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/Train/TrainDefine.h b/TSCP/src/APP/ciapp/Train/TrainDefine.h index 7a0effb..f124bc8 100644 --- a/TSCP/src/APP/ciapp/Train/TrainDefine.h +++ b/TSCP/src/APP/ciapp/Train/TrainDefine.h @@ -279,6 +279,9 @@ /*ؿس״̬*/ #define VEHICLE_CONTROL_STATUS_YES ((UINT8)0x55) /*ؿس״̬-س*/ #define VEHICLE_CONTROL_STATUS_NO ((UINT8)0xaa) /*ؿس״̬-ǿس*/ + +/*ʽֵ*/ +#define CI_VOBC_ROUTE_MAX ((UINT8)3U) /*CI-VOBCʽƥ·ֵ*/ #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/Transmit/TransmitStateDataManage.c b/TSCP/src/APP/ciapp/Transmit/TransmitStateDataManage.c index ce5f33a..f072724 100644 --- a/TSCP/src/APP/ciapp/Transmit/TransmitStateDataManage.c +++ b/TSCP/src/APP/ciapp/Transmit/TransmitStateDataManage.c @@ -1253,7 +1253,7 @@ UINT8 GetCiWithOtherCiTransmitState(const UINT8 DeviceType, const UINT8 DeviceId { pstrHlhtHeadCtx = GetCiToRcWithCiHeadCtx(DeviceId); } - else if (CI_SYSTEM_TYPE_CI == DeviceType) + else if (CI_SYSTEM_TYPE_RC == DeviceType) { pstrHlhtHeadCtx = GetCiToRcWithRcHeadCtx(DeviceId); } diff --git a/TSCP/src/APP/ciapp/WashMachine/WashMachineConfigDataManage.c b/TSCP/src/APP/ciapp/WashMachine/WashMachineConfigDataManage.c index 657f3ca..17a1dbe 100644 --- a/TSCP/src/APP/ciapp/WashMachine/WashMachineConfigDataManage.c +++ b/TSCP/src/APP/ciapp/WashMachine/WashMachineConfigDataManage.c @@ -334,6 +334,30 @@ UINT16 GetTrainTailStopSteadyRelayId(const UINT16 washMachineId) return retVal; } +/* +* ȡָIDϴҶͣȼ̵ +* ˵ const UINT16 washMachineId, ϴID +* ֵ 0: ȡʧ +* >0: Ҷͣȼ̵ +*/ +UINT16 GetCoupingStopSteadyRelayId(const UINT16 washMachineId) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT16 retVal = 0u; + + bufIndex = GetWashMachineIdConfigBufIndex(washMachineId); /*ȡϴ±*/ + + if (bufIndex < WASHMACHINE_SUM_MAX) + { + retVal = WashMachineConfigDataStru[bufIndex].wCoupingStopSteadyRelayId; + } + else + { + retVal = CI_ERROR; + } + return retVal; +} + /* * ϴ * ˵ @@ -953,3 +977,29 @@ UINT16 GetDccWashPassApplyLightRelayId(const UINT16 washMachineId) } return retVal; } + +/* +* ȡָIDϴҶϴ̵ +* ˵ const UINT16 washMachineId, ϴID +* ֵ 0: ȡʧ +* >0: Ҷϴ̵ +*/ +UINT16 GetCoupingWashAllowRelayId(const UINT16 washMachineId) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT16 retVal = 0u; + + bufIndex = GetWashMachineIdConfigBufIndex(washMachineId); /*ȡϴ±*/ + + if (bufIndex < WASHMACHINE_SUM_MAX) + { + retVal = WashMachineConfigDataStru[bufIndex].wCouplingWashAllowRelayId; + } + else + { + retVal = CI_ERROR; + } + return retVal; +} + + diff --git a/TSCP/src/APP/ciapp/WashMachine/WashMachineConfigDataManage.h b/TSCP/src/APP/ciapp/WashMachine/WashMachineConfigDataManage.h index 041df75..7f922ef 100644 --- a/TSCP/src/APP/ciapp/WashMachine/WashMachineConfigDataManage.h +++ b/TSCP/src/APP/ciapp/WashMachine/WashMachineConfigDataManage.h @@ -37,14 +37,17 @@ typedef struct S_WashMachineConfigDataStruct UINT16 TrainEmergencyStopRelayId; /*г̵ͣ(ֶ:ɼ̵)*/ UINT16 HeadWashAllowRelayId; /*ͷϴ̵(ֶ:ɼ̵)*/ UINT16 TailWashAllowRelayId; /*βϴ̵(ֶ:ɼ̵)*/ + UINT16 wCouplingWashAllowRelayId; /*Ҷϴ̵(ֶ:ɼ̵)*/ UINT16 WashTrainRequestRelayId; /*ϴ̵(ֶ:̵)Ϸϴ̵ͬ*/ UINT16 TrainHeadStopSteadyRelayId; /*ͷͣȼ̵(ֶ:̵)*/ UINT16 TrainTailStopSteadyRelayId; /*βͣȼ̵(ֶ:̵)*/ + UINT16 wCoupingStopSteadyRelayId; /*Ҷͣȼ̵(ֶ:̵)*/ UINT16 TrainPassRequestRelayId; /*̵ͨ(ֶ:̵)*/ UINT16 TrainOutWashPortAllowRelayId; /*г̵(ֶ:ɼ̵)*/ UINT16 PauseTrainWashRequestRelayId; /*ͣϴ̵(ֶ:̵)*/ UINT16 WashModeBackRelayId; /*ȫԶϴģʽ̵(ֶ:ɼ̵)*/ UINT16 WashModeRelayId; /*ȫԶԶϴģʽ̵ֶ:̵)*/ + UINT16 wDownWashAllowRelayId; /*ģʽϴͬⰴť̵ID(ֶ:ɼ̵)*/ UINT16 wDownWashAllowLightRelayId; /*ģʽϴָͬʾƼ̵IDֶ:̵)*/ UINT16 wDownDccWashAllowRelayId; /*ģʽDCCϴͬⰴť̵ID (ֶ:ɼ̵)*/ @@ -397,6 +400,21 @@ UINT16 GetWashPassApplyLightRelayId(const UINT16 washMachineId); */ UINT16 GetDccWashPassApplyLightRelayId(const UINT16 washMachineId); +/* +* ȡָIDϴҶϴ̵ +* ˵ const UINT16 washMachineId, ϴID +* ֵ 0: ȡʧ +* >0: Ҷϴ̵ +*/ +UINT16 GetCoupingWashAllowRelayId(const UINT16 washMachineId); + +/* +* ȡָIDϴҶͣȼ̵ +* ˵ const UINT16 washMachineId, ϴID +* ֵ 0: ȡʧ +* >0: Ҷͣȼ̵ +*/ +UINT16 GetCoupingStopSteadyRelayId(const UINT16 washMachineId); #ifdef __cplusplus } diff --git a/TSCP/src/APP/ciapp/WashMachine/WashMachineDataManage.c b/TSCP/src/APP/ciapp/WashMachine/WashMachineDataManage.c index 3d17d0d..2c2f0b8 100644 --- a/TSCP/src/APP/ciapp/WashMachine/WashMachineDataManage.c +++ b/TSCP/src/APP/ciapp/WashMachine/WashMachineDataManage.c @@ -2296,3 +2296,119 @@ void SetDownWashDccAllowPassCycle(const UINT16 washMachineId, const UINT32 washA } } +/* +* ȡָIDϴҶϴ״̬ +* ˵ const UINT16 WashMachineId, ϴID +* ֵ 0: ȡʧ +* >0: Ҷϴ״̬ +*/ +UINT8 GetCoupingWashAllowState(const UINT16 WashMachineId) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT8 retVal = 0u; + + bufIndex = GetWashMachineIdConfigBufIndex(WashMachineId); /*ȡϴ±*/ + + if (bufIndex < WASHMACHINE_SUM_MAX) + { + retVal = WashMachineDataStru[bufIndex].chCoupingWashAllowState; + } + else + { + retVal = CI_ERROR; + } + return retVal; + +} + +/* +* ָIDϴҶϴ״̬ +* ˵ const UINT16 WashMachineId, ϴID + const UINT8 state,״̬ +* ֵ 0: ʧ +* 1: óɹ +*/ +UINT8 SetCoupingWashAllowState(const UINT16 WashMachineId, const UINT8 state) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT8 retVal = 0u; + + bufIndex = GetWashMachineIdConfigBufIndex(WashMachineId); /*ȡϴ±*/ + + if (bufIndex < WASHMACHINE_SUM_MAX) + { + if ((WASHMACHINE_COL_COUPINGWASH_YES == state) || (WASHMACHINE_COL_COUPINGWASH_NO == state)) + { + WashMachineDataStru[bufIndex].chCoupingWashAllowState = state; + + retVal = CI_SUCCESS; + } + else + { + retVal = CI_ERROR; + } + } + else + { + retVal = CI_ERROR; + } + return retVal; +} + + +/* +* ָIDϴҶͣ״̬ +* ˵ const UINT16 WashMachineId, ϴID +* const UINT8 drvState, ״̬ +* ֵ +* +*/ +void SetCoupingStopSteadyDrvState(const UINT16 WashMachineId, const UINT8 drvState) +{ + UINT16 bufIndex = 0u; /*±*/ + + bufIndex = GetWashMachineIdConfigBufIndex(WashMachineId); /*ȡϴ±*/ + + if (bufIndex < WASHMACHINE_SUM_MAX) + { + if ((WASHMACHINE_COUPING_STEADY_YES == drvState) || (WASHMACHINE_COUPING_STEADY_NO == drvState)) + { + WashMachineDataStru[bufIndex].chCoupingStopSteadyDrvState = drvState; + } + else + { + /**/ + } + } + else + { + /**/ + } +} + +/* +* ȡָIDϴҶͣ״̬ +* ˵ const UINT16 WashMachineId, ϴID +* ֵ 0: ȡʧ +* >0: ͣ״̬ +*/ +UINT8 GetCoupingStopSteadyDrvState(const UINT16 WashMachineId) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT8 retVal = 0u; + + bufIndex = GetWashMachineIdConfigBufIndex(WashMachineId); /*ȡϴ±*/ + + if (bufIndex < WASHMACHINE_SUM_MAX) + { + retVal = WashMachineDataStru[bufIndex].chCoupingStopSteadyDrvState; + } + else + { + retVal = CI_ERROR; + } + return retVal; + +} + + diff --git a/TSCP/src/APP/ciapp/WashMachine/WashMachineDataManage.h b/TSCP/src/APP/ciapp/WashMachine/WashMachineDataManage.h index cc25dfe..b7d27c3 100644 --- a/TSCP/src/APP/ciapp/WashMachine/WashMachineDataManage.h +++ b/TSCP/src/APP/ciapp/WashMachine/WashMachineDataManage.h @@ -35,9 +35,11 @@ typedef struct S_WashMachineDataStruct UINT8 TrainEmergencyStopState; /*гͣ״̬(ֶ̬:ɼ)*/ UINT8 HeadWashAllowState; /*ͷϴ״̬(ֶ̬:ɼ)*/ UINT8 TailWashAllowState; /*βϴ״̬(ֶ̬:ɼ)*/ + UINT8 chCoupingWashAllowState; /*Ҷϴ״̬(ֶ̬:ɼ)*/ UINT8 WashTrainRequestDrvState; /*ϴ״̬(ֶ̬:)*/ UINT8 TrainHeadStopSteadyDrvState; /*ͷͣ״̬(ֶ̬:)*/ UINT8 TrainTailStopSteadyDrvState; /*βͣ״̬(ֶ̬:)*/ + UINT8 chCoupingStopSteadyDrvState; /*Ҷͣ״̬(ֶ̬:)*/ UINT8 TrainOutWashTrainPortAllowState; /*ϴ״̬(ֶ̬:ɼ)*/ UINT8 PauseTrainWashRequestDrvState; /*ͣϴ״̬(ֶ̬:)*/ UINT8 PaseWashMachineRequesDrvtState; /*ͨϴ״̬(ֶ̬:)*/ @@ -45,6 +47,7 @@ typedef struct S_WashMachineDataStruct UINT32 WashWorkModeRelayDrvCycle; /*ϴģʽ̵ʼں*/ UINT8 WashModeState; /*ϴģʽ(ֶ̬:ɼ)*/ UINT8 chSetWashWorkModeBack; /*ϴģʽ(ֶ̬:ɼ)*/ + UINT8 chDownWashAllowState; /*ģʽϴͬ״̬(ֶ̬:ں)*/ UINT8 chDownWashAllowPassState; /*ģʽϴͬͨ״̬(ֶ̬:ں)*/ UINT8 chDownWashReqState; /*ģʽϴ״̬*/ @@ -776,7 +779,39 @@ UINT8 GetDownDccWashAllowPassErrState(const UINT16 washMachineId); */ void SetDownDccWashAllowPassErrState(const UINT16 washMachineId, const UINT8 dccPassWashAdhesionState); +/* +* ȡָIDϴҶϴ״̬ +* ˵ const UINT16 WashMachineId, ϴID +* ֵ 0: ȡʧ +* >0: Ҷϴ״̬ +*/ +UINT8 GetCoupingWashAllowState(const UINT16 WashMachineId); +/* +* ָIDϴҶϴ״̬ +* ˵ const UINT16 WashMachineId, ϴID + const UINT8 state,״̬ +* ֵ 0: ʧ +* 1: óɹ +*/ +UINT8 SetCoupingWashAllowState(const UINT16 WashMachineId, const UINT8 state); + +/* +* ָIDϴҶͣ״̬ +* ˵ const UINT16 WashMachineId, ϴID +* const UINT8 drvState, ״̬ +* ֵ +* +*/ +void SetCoupingStopSteadyDrvState(const UINT16 WashMachineId, const UINT8 drvState); + +/* +* ȡָIDϴҶͣ״̬ +* ˵ const UINT16 WashMachineId, ϴID +* ֵ 0: ȡʧ +* >0: ͣ״̬ +*/ +UINT8 GetCoupingStopSteadyDrvState(const UINT16 WashMachineId); #ifdef __cplusplus } diff --git a/TSCP/src/APP/ciapp/WashMachine/WashMachineDefine.h b/TSCP/src/APP/ciapp/WashMachine/WashMachineDefine.h index 683d809..d58454e 100644 --- a/TSCP/src/APP/ciapp/WashMachine/WashMachineDefine.h +++ b/TSCP/src/APP/ciapp/WashMachine/WashMachineDefine.h @@ -30,6 +30,9 @@ #define WASHMACHINE_TAIL_STEADY_YES ((UINT8)0x55) /*βͣ״̬*/ #define WASHMACHINE_TAIL_STEADY_NO ((UINT8)0xaa) /*βδͣ״̬*/ +#define WASHMACHINE_COUPING_STEADY_YES ((UINT8)0x55) /*Ҷͣ״̬*/ +#define WASHMACHINE_COUPING_STEADY_NO ((UINT8)0xaa) /*Ҷδͣ״̬*/ + #define WASHMACHINE_PAUSE_DRVREQ_TRUE ((UINT8)0x55) /*ͣϴЧ״̬*/ #define WASHMACHINE_PAUSE_DRVREQ_FALSE ((UINT8)0xaa) /*ͣϴЧ״̬*/ @@ -52,6 +55,9 @@ #define WASHMACHINE_COL_TAILWASH_YES ((UINT8)0x55) /*βϴ*/ #define WASHMACHINE_COL_TAILWASH_NO ((UINT8)0xaa) /*βϴ*/ +#define WASHMACHINE_COL_COUPINGWASH_YES ((UINT8)0x55) /*Ҷϴ*/ +#define WASHMACHINE_COL_COUPINGWASH_NO ((UINT8)0xaa) /*Ҷϴ*/ + #define WASHMACHINE_COL_FALUT_YES ((UINT8)0x55) /*ϴ*/ #define WASHMACHINE_COL_FALUT_NO ((UINT8)0xaa) /*ϴδ*/ diff --git a/TSCP/src/MSCP/CFM/CFM_Net.c b/TSCP/src/MSCP/CFM/CFM_Net.c index c08a6f4..2f3d6bb 100644 --- a/TSCP/src/MSCP/CFM/CFM_Net.c +++ b/TSCP/src/MSCP/CFM/CFM_Net.c @@ -2940,14 +2940,13 @@ void CFM_LogCiphertextSend(void) } else { - MSCP_LOG_MSG("Ciphertext read queue fail \n"); + /* 无处理*/ } } else { (void)CM_Mutex_Unlock(ciphertextCtrl.mutex); - MSCP_LOG_MSG("dataLen = %d\n",dataLen); } } @@ -4553,44 +4552,32 @@ CM_UINT16 CFM_OutnetHeart_Recv(OUT CM_UINT8* pBuf, IN CM_UINT32 BufSize, OUT ENU { /*- 来自外网红网 */ *pChn = ENUM_OUTNET_RED; - rt = CM_Memcpy((void*)pBuf, (CM_SIZE_T)BufSize, (void*)(s_CFM_UDP_Cache + 6), (CM_SIZE_T)len); - CM_RE_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_37, TSCP_DARK_ASSERT_1); } /*- 是否来自蓝网CC */ else if ((srcIP == inet_addr(g_PFM_Cfg.CC_B_IP)) && (g_PFM_Cfg.CC_B_Heart_Port == srcPort)) { /*- 来自外网蓝网 */ *pChn = ENUM_OUTNET_BLUE; - rt = CM_Memcpy((void*)pBuf, (CM_SIZE_T)BufSize, (void*)(s_CFM_UDP_Cache + 6), (CM_SIZE_T)len); - CM_RE_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_37, TSCP_DARK_ASSERT_2); } /*- 是否来自红网SEB */ else if ((srcIP == inet_addr(g_PFM_Cfg.EXTEND_R_IP)) && (g_PFM_Cfg.CC_R_Heart_Port == srcPort)) { /*- 来自外网红网SEB */ *pChn = ENUM_OUTNET_EXTEND_RED; - rt = CM_Memcpy((void*)pBuf, (CM_SIZE_T)BufSize, (void*)(s_CFM_UDP_Cache + 6), (CM_SIZE_T)len); - CM_RE_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_37, TSCP_DARK_ASSERT_3); } /*- 是否来自蓝网SEB */ else if ((srcIP == inet_addr(g_PFM_Cfg.EXTEND_B_IP)) && (g_PFM_Cfg.CC_B_Heart_Port == srcPort)) { - /*- 来自外网蓝网SEB */ + /*- 来自外网蓝网SEB */ *pChn = ENUM_OUTNET_EXTEND_BLUE; - rt = CM_Memcpy((void*)pBuf, (CM_SIZE_T)BufSize, (void*)(s_CFM_UDP_Cache + 6), (CM_SIZE_T)len); - CM_RE_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_37, TSCP_DARK_ASSERT_4); } else if((srcIP == inet_addr(g_PFM_Cfg.ANOTHER_EXTEND_R_IP)) && (g_PFM_Cfg.ANOTHER_R_Heart_Port == srcPort)) { *pChn = ENUM_ANOTHER_EXTEND_RED; - rt = CM_Memcpy((void*)pBuf, (CM_SIZE_T)BufSize, (void*)(s_CFM_UDP_Cache + 6), (CM_SIZE_T)len); - CM_RE_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_23, TSCP_DARK_ASSERT_5); } else if((srcIP == inet_addr(g_PFM_Cfg.ANOTHER_EXTEND_B_IP)) && (g_PFM_Cfg.ANOTHER_B_Heart_Port == srcPort)) { *pChn = ENUM_ANOTHER_EXTEND_BLUE; - rt = CM_Memcpy((void*)pBuf, (CM_SIZE_T)BufSize, (void*)(s_CFM_UDP_Cache + 6), (CM_SIZE_T)len); - CM_RE_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_23, TSCP_DARK_ASSERT_6); } else { @@ -4602,6 +4589,8 @@ CM_UINT16 CFM_OutnetHeart_Recv(OUT CM_UINT8* pBuf, IN CM_UINT32 BufSize, OUT ENU MSCP_LOG_MSG("unkown msg rcv from %08x:%d,len=%d\n", srcIP, srcPort, len); CM_RE_ASSERT(0, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_37, TSCP_DARK_ASSERT_5); } + rt = CM_Memcpy((void*)pBuf, (CM_SIZE_T)BufSize, (void*)(s_CFM_UDP_Cache + 6), (CM_SIZE_T)len); + CM_RE_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_37, TSCP_DARK_ASSERT_1); } else { @@ -4681,8 +4670,46 @@ ENUM_CM_RETURN CFM_OutnetHeart_Send(IN const CM_UINT8* pBuf, IN CM_INT32 Len, IN static CM_THREAD_FUNC_T t_ClearArpThread(void) { static STRU_HARDWARE_BOOT_COM_T lastComRecord; + CM_UINT32 i = 0u; /* 循环变量*/ + CM_UINT32 i_max = 6u; /* 循环次数上限*/ CM_UINT32 cycle = DFM_GetBirthCount(); CM_UINT8 cmdBuf[100] = {0}; + /* 记录所有通控与串口IP配置*/ + CM_UINT32* p_com_count[6u] = {&g_Hardware_boot_com_state.CCU_A_Count, + &g_Hardware_boot_com_state.CCU_B_Count, + &g_Hardware_boot_com_state.SEB_A_Count, + &g_Hardware_boot_com_state.SEB_B_Count, + &g_Hardware_boot_com_state.SEB_A_Another_Count, + &g_Hardware_boot_com_state.SEB_B_Another_Count}; + CM_UINT32 *p_last_count[6u] = {&lastComRecord.CCU_A_Count, + &lastComRecord.CCU_B_Count, + &lastComRecord.SEB_A_Count, + &lastComRecord.SEB_B_Count, + &lastComRecord.SEB_A_Another_Count, + &lastComRecord.SEB_B_Another_Count}; + CM_CHAR* p_com_ip[6u] = {g_PFM_Cfg.CC_R_IP, + g_PFM_Cfg.CC_B_IP, + g_PFM_Cfg.EXTEND_R_IP, + g_PFM_Cfg.EXTEND_B_IP, + g_PFM_Cfg.ANOTHER_EXTEND_R_IP, + g_PFM_Cfg.ANOTHER_EXTEND_B_IP}; + /* 等待应用初始化完成启动*/ + while(ENUM_INIT_APP >= PFM_LOG_GET_INIT_STAGE()) + { + CM_Sleep(1000u); + } + if(NULL == p_Serial_IN_VOBC_Func) + { + i_max = 2u; + } + else if(0x55u != g_PFM_Cfg.M_AREA_SEB_Enable) + { + i_max = 4u; + } + else + { + i_max = 6u; + } #if QNX void* pmask = NULL; /*- 本线程锁定在 A53 core 1 */ @@ -4692,94 +4719,15 @@ static CM_THREAD_FUNC_T t_ClearArpThread(void) while(1) { cycle = DFM_GetBirthCount(); - if((cycle > (g_Hardware_boot_com_state.CCU_A_Count + 100u))&&(lastComRecord.CCU_A_Count != g_Hardware_boot_com_state.CCU_A_Count)) + for(i = 0u; i < i_max; i++) { - lastComRecord.CCU_A_Count = g_Hardware_boot_com_state.CCU_A_Count; - snprintf(cmdBuf, sizeof(cmdBuf), "arp -d %s", g_PFM_Cfg.CC_R_IP); - (void)system(cmdBuf); - MSCP_LOG_MSG("%s\n", cmdBuf); - MSCP_LOG_MSG("clear arp cycle = %d,g_Hardware_boot_com_state.CCU_A_Count=%d,lastComRecord.CCU_A_Count=%d\n",cycle,g_Hardware_boot_com_state.CCU_A_Count,lastComRecord.CCU_A_Count); - } - else - { - /* 无处理 */ - } - - if((cycle > (g_Hardware_boot_com_state.CCU_B_Count + 100u))&&(lastComRecord.CCU_B_Count != g_Hardware_boot_com_state.CCU_B_Count)) - { - lastComRecord.CCU_B_Count = g_Hardware_boot_com_state.CCU_B_Count; - snprintf(cmdBuf, sizeof(cmdBuf), "arp -d %s", g_PFM_Cfg.CC_B_IP); - (void)system(cmdBuf); - MSCP_LOG_MSG("%s\n", cmdBuf); - MSCP_LOG_MSG("clear arp cycle = %d,g_Hardware_boot_com_state.CCU_B_Count=%d,lastComRecord.CCU_B_Count=%d\n",cycle,g_Hardware_boot_com_state.CCU_B_Count,lastComRecord.CCU_B_Count); - } - else - { - /* 无处理 */ - } - - if(NULL == p_Serial_IN_VOBC_Func) - { - /* 无处理 */ - } - else - { - if((cycle > (g_Hardware_boot_com_state.SEB_A_Count + 100u))&&(lastComRecord.SEB_A_Count != g_Hardware_boot_com_state.SEB_A_Count)) + if((cycle > (*(p_com_count[i]) + 100u)) && (*(p_last_count[i]) != *(p_com_count[i]))) { - lastComRecord.SEB_A_Count = g_Hardware_boot_com_state.SEB_A_Count; - snprintf(cmdBuf, sizeof(cmdBuf), "arp -d %s", g_PFM_Cfg.EXTEND_R_IP); + *(p_last_count[i]) = *(p_com_count[i]); + snprintf(cmdBuf, sizeof(cmdBuf), "arp -d %s", p_com_ip[i]); (void)system(cmdBuf); MSCP_LOG_MSG("%s\n", cmdBuf); - MSCP_LOG_MSG("clear arp cycle = %d,g_Hardware_boot_com_state.SEB_A_Count=%d,lastComRecord.SEB_A_Count=%d\n",cycle,g_Hardware_boot_com_state.SEB_A_Count,lastComRecord.SEB_A_Count); - } - else - { - /* 无处理 */ - } - - if((cycle > (g_Hardware_boot_com_state.SEB_B_Count + 100u))&&(lastComRecord.SEB_B_Count != g_Hardware_boot_com_state.SEB_B_Count)) - { - lastComRecord.SEB_B_Count = g_Hardware_boot_com_state.SEB_B_Count; - snprintf(cmdBuf, sizeof(cmdBuf), "arp -d %s", g_PFM_Cfg.EXTEND_B_IP); - (void)system(cmdBuf); - MSCP_LOG_MSG("%s\n", cmdBuf); - MSCP_LOG_MSG("clear arp cycle = %d,g_Hardware_boot_com_state.SEB_B_Count=%d,lastComRecord.SEB_B_Count=%d\n",cycle,g_Hardware_boot_com_state.SEB_B_Count,lastComRecord.SEB_B_Count); - } - else - { - /* 无处理 */ - } - if(0x55u == g_PFM_Cfg.M_AREA_SEB_Enable) - { - if((cycle > (g_Hardware_boot_com_state.SEB_A_Another_Count + 100u))&&(lastComRecord.SEB_A_Another_Count != g_Hardware_boot_com_state.SEB_A_Another_Count)) - { - lastComRecord.SEB_A_Another_Count = g_Hardware_boot_com_state.SEB_A_Another_Count; - snprintf(cmdBuf, sizeof(cmdBuf), "arp -d %s", g_PFM_Cfg.ANOTHER_EXTEND_R_IP); - (void)system(cmdBuf); - MSCP_LOG_MSG("%s\n", cmdBuf); - MSCP_LOG_MSG("clear arp cycle = %d,g_Hardware_boot_com_state.SEB_A_Another_Count=%d,lastComRecord.SEB_A_Another_Count=%d\n",cycle,g_Hardware_boot_com_state.SEB_A_Another_Count,lastComRecord.SEB_A_Another_Count); - } - else - { - /* 无处理 */ - } - - if((cycle > (g_Hardware_boot_com_state.SEB_B_Another_Count + 100u))&&(lastComRecord.SEB_B_Another_Count != g_Hardware_boot_com_state.SEB_B_Another_Count)) - { - lastComRecord.SEB_B_Another_Count = g_Hardware_boot_com_state.SEB_B_Another_Count; - snprintf(cmdBuf, sizeof(cmdBuf), "arp -d %s", g_PFM_Cfg.ANOTHER_EXTEND_B_IP); - (void)system(cmdBuf); - MSCP_LOG_MSG("%s\n", cmdBuf); - MSCP_LOG_MSG("clear arp cycle = %d,g_Hardware_boot_com_state.SEB_B_Another_Count=%d,lastComRecord.SEB_B_Another_Count=%d\n",cycle,g_Hardware_boot_com_state.SEB_B_Another_Count,lastComRecord.SEB_B_Another_Count); - } - else - { - /* 无处理 */ - } - } - else - { - /* 无处理 */ + MSCP_LOG_MSG("clear arp cycle = %d, index = %d, g_Hardware_boot_com_state = %d,lastComRecord = %d\n",cycle, i, *(p_com_count[i]), *(p_last_count[i])); } } @@ -4793,7 +4741,7 @@ static CM_THREAD_FUNC_T t_ClearArpThread(void) * - ENUM_CM_TRUE 均为空 * - ENUM_CM_FALSE 不均为空 */ -ENUM_CM_RETURN CFM_LogQ_isEmpty() +ENUM_CM_RETURN CFM_LogQ_isEmpty(void) { ENUM_CM_RETURN ret = ENUM_CM_FALSE; CM_UINT32 len1 = 0u, len2 = 0u; @@ -4812,7 +4760,7 @@ ENUM_CM_RETURN CFM_LogQ_isEmpty() /** * @brief 判断收到宕机后的2取,立即执行宕机操作 */ -void CFM_AssertRecved() +void CFM_AssertRecved(void) { CM_INT32 assertMsgNum = 0; /*- 指针防空*/ diff --git a/TSCP/src/MSCP/CFM/CFM_Net.h b/TSCP/src/MSCP/CFM/CFM_Net.h index 51bfdfb..de93934 100644 --- a/TSCP/src/MSCP/CFM/CFM_Net.h +++ b/TSCP/src/MSCP/CFM/CFM_Net.h @@ -754,11 +754,11 @@ extern "C" * - ENUM_CM_TRUE 均为空 * - ENUM_CM_FALSE 不均为空 */ - ENUM_CM_RETURN CFM_LogQ_isEmpty(); + ENUM_CM_RETURN CFM_LogQ_isEmpty(void); /** * @brief 判断收到宕机后的2取,立即执行宕机操作 */ - void CFM_AssertRecved(); + void CFM_AssertRecved(void); #ifdef __cplusplus } #endif diff --git a/TSCP/src/MSCP/CFM/CFM_Raw.c b/TSCP/src/MSCP/CFM/CFM_Raw.c index 8cb7c4a..239798a 100644 --- a/TSCP/src/MSCP/CFM/CFM_Raw.c +++ b/TSCP/src/MSCP/CFM/CFM_Raw.c @@ -40,7 +40,7 @@ static CM_UINT8 s_CFM_RawInfo[CFM_INNET_RAW_MSG_NUM_MAX * 12u]; static CM_UINT32 s_CFM_RawInfo_peer_len = 0u; static CM_UINT8 s_CFM_RawInfo_peer[CFM_INNET_RAW_MSG_NUM_MAX * 12u]; /*判断CC与SEB状态*/ -static void s_CCSEB_STATE_CAL(); +static void s_CCSEB_STATE_CAL(void); /** * @brief 内网透传接收(通用模式--原艾弗瑞模式) * @param ch 透传通道号 @@ -998,7 +998,7 @@ CM_UINT8 CFM_TxOutnetHeart(ENUM_2x2_STATE_T local2x2state) return rt; } /*判断CC与SEB状态*/ -static void s_CCSEB_STATE_CAL() +static void s_CCSEB_STATE_CAL(void) { CM_UINT8 ccsebState[6] = {0}; CM_UINT32 i = 0u, j = 0u; diff --git a/TSCP/src/MSCP/DFM/DFM_DRV.h b/TSCP/src/MSCP/DFM/DFM_DRV.h index 57bd47b..7b4fdf1 100644 --- a/TSCP/src/MSCP/DFM/DFM_DRV.h +++ b/TSCP/src/MSCP/DFM/DFM_DRV.h @@ -64,8 +64,6 @@ CM_INT32 DFM_output(CM_UINT8 channel, CM_UINT8 level); /*- 切系按钮 */ CM_INT32 DFM_switchButton(void); -/*- 看门狗指示灯 */ -void DFM_ledMonitor(CM_UINT8 light); /*-通道电流电压读取*/ CM_INT32 DFM_Read_ina3321(INOUT CM_INT32* channel_1_shunt, INOUT CM_FLOAT32* channel_1_bus, INOUT CM_INT32* channel_2_shunt, INOUT CM_FLOAT32* channel_2_bus, INOUT CM_INT32* channel_3_shunt, INOUT CM_FLOAT32* channel_3_bus); @@ -100,15 +98,15 @@ ENUM_CM_RETURN DFM_GetQNX_Verion(CM_UINT8 *buf); /* * 脉冲初始化 */ -void DFM_Pulse_Init(); +void DFM_Pulse_Init(void); /* * 脉冲启动 */ -void DFM_Pulse_Start(); +void DFM_Pulse_Start(void); /* * 脉冲停止 */ -void DFM_Pulse_Stop(); +void DFM_Pulse_Stop(void); /* * 脉冲设置 */ @@ -125,9 +123,10 @@ ENUM_CM_RETURN DFM_Pulse_FeedBack(ENUM_PULSE_TYPE_T *p_pulse); /* * 开关模式获取 **/ -ENUM_SWITCH_MODE_T DFM_Switch_Mode_Get(); +ENUM_SWITCH_MODE_T DFM_Switch_Mode_Get(void); /* * 区域状态指示灯控制 +参数为3时,灭灯且不再点亮;参数为1时,点亮6号灯;参数为2时,点亮7号灯;其他情况灭灯 **/ void DFM_ledAREA(CM_UINT8 light); /** @@ -141,8 +140,4 @@ CM_UINT8 DFM_PulseCnt_Get(CM_UINT8 index, OUT CM_UINT32* pPulseCnt); * 用来检测fec0 fec1 up/down状态 */ void DFM_Network_Check(void); -#if 0 -/* 记录fec0,fec1 状态*/ -void DFM_PhyLog(void); -#endif #endif /* SRC_MSCP_DFM_DFM_DRV_H_ */ diff --git a/TSCP/src/MSCP/DFM/DFM_DRV_QNX.c b/TSCP/src/MSCP/DFM/DFM_DRV_QNX.c index 4584703..82e4022 100644 --- a/TSCP/src/MSCP/DFM/DFM_DRV_QNX.c +++ b/TSCP/src/MSCP/DFM/DFM_DRV_QNX.c @@ -22,8 +22,6 @@ CM_UINT16 g_InIoLog = 0; /** 脉冲类型转换 */ static ENUM_PULSE_TYPE_T s_PulseConvert(ABSynMsgType type); -/* 超过5kb截断PhyLog.txt*/ -static void s_ManagePhyLog(void); /** * @brief 驱动初始化 @@ -651,7 +649,7 @@ void DFM_Network_Check(void) /* * 脉冲初始化 */ -void DFM_Pulse_Init() +void DFM_Pulse_Init(void) { int ret = -1; ret = imx8_create_gpio_irq_pthread(); @@ -662,14 +660,14 @@ void DFM_Pulse_Init() /* * 脉冲启动 */ -void DFM_Pulse_Start() +void DFM_Pulse_Start(void) { drvStartABSynSwitch(); } /* * 脉冲停止 */ -void DFM_Pulse_Stop() +void DFM_Pulse_Stop(void) { drvStopABSynSwitch(); } @@ -778,7 +776,7 @@ ENUM_CM_RETURN DFM_Pulse_FeedBack(ENUM_PULSE_TYPE_T *p_pulse) /* * 开关模式获取 **/ -ENUM_SWITCH_MODE_T DFM_Switch_Mode_Get() +ENUM_SWITCH_MODE_T DFM_Switch_Mode_Get(void) { CM_UINT8 in = 0x00u; ENUM_SWITCH_MODE_T ret = ENUM_SWITCH_ERROR; @@ -813,28 +811,35 @@ ENUM_SWITCH_MODE_T DFM_Switch_Mode_Get() } /* * 区域状态指示灯控制 +* 参数为3时,灭灯且不再点亮;参数为1时,点亮6号灯;参数为2时,点亮7号灯;其他情况灭灯 **/ void DFM_ledAREA(CM_UINT8 light) { - switch(light) + static CM_UINT8 s_light = 1u; /* 允许点灯标志位*/ + if(s_light == 1u) { - case 0x01u: - imx8_output(6, 1); - imx8_output(7, 0); - break; - case 0x02u: - imx8_output(6, 0); - imx8_output(7, 1); - break; - case 0x03u: - imx8_output(6, 0); - imx8_output(7, 0); - break; - default: - imx8_output(6, 0); - imx8_output(7, 0); - break; + switch(light) + { + case 0x01u: + imx8_output(6, 1); + imx8_output(7, 0); + break; + case 0x02u: + imx8_output(6, 0); + imx8_output(7, 1); + break; + case 0x03u: + s_light = 0u; + imx8_output(6, 0); + imx8_output(7, 0); + break; + default: + imx8_output(6, 0); + imx8_output(7, 0); + break; + } } + } /** * @brief 获取脉冲计数 @@ -848,104 +853,3 @@ CM_UINT8 DFM_PulseCnt_Get(CM_UINT8 index, OUT CM_UINT32* pPulseCnt) rt = drvCheckABSynPulCnt(index,pPulseCnt); return rt; } -#if 0 -/* 记录fec0,fec1 状态*/ -void DFM_PhyLog(void) -{ - CM_UINT16 phyinfo[12] = {0}; - CM_UINT8 buf[256]; // 统一的 buffer - CM_UINT8* fecNames[2] = {"fec0", "fec1"}; - CM_UINT8 fec[10] = {0}; - CM_INT32 ret = -1; - CM_INT32 cnt = 0; - CM_INT32 pos = 0; - FILE *fp = NULL; - CM_INT32 phyError = 0; - CM_UINT32 i = 0u, j = 0u; - CM_UINT64 sTick = CM_GetTick(); - MSCP_LOG_MSG("----Phy Log Start At Time %llu----\n", sTick); - for(j = 0u; j < 2; j++) - { - pos = 0; - phyError = 0; - CM_Memset(phyinfo, 0, sizeof(phyinfo), sizeof(phyinfo)); - strncpy(fec, fecNames[j], sizeof(fec)); - - // cnt = drvPhyRegInfoUpdate(fec, phyinfo, 12); - // phyError = phytool(fec); - - // 模拟读取phy寄存器信息 - CM_Sleep(2); - - pos += snprintf(buf + pos, sizeof(buf) - pos, - "CYC:%d, %s-phylog[%d]_%s:", - g_MSCP_BirthCount, fec, cnt, ((phyError == -1) ? "Error" : "Correct")); - - for (i = 0; i < 12; i++) - { - pos += snprintf(buf + pos, sizeof(buf) - pos, - ((i == 11) ? "%02X-%02X\n" : "%02X-%02X-"), - phyinfo[i] >> 8, phyinfo[i] & 0x00ff); - } - - if (phyError == -1) - { - fp = fopen("PhyLog.txt", "a"); - if (NULL != fp) - { - fwrite(buf, 1, pos, fp); - fclose(fp); - } - s_ManagePhyLog(); - } - - MSCP_LOG_MSG("%s", buf); - } - MSCP_LOG_MSG("----Phy Log End At Time %llu Used %llums----\n", CM_GetTick(), (CM_GetTick() - sTick) / CM_UNSIGNED_MILLION); -} -/* 超过5kb截断PhyLog.txt*/ -static void s_ManagePhyLog(void) -{ - FILE* fp = NULL; - CM_UINT32 fileCurrentSize = 0u; - CM_UINT8 historyBuf[2048] = {0}; - CM_UINT8 tempBuf[2048] = {0}; - CM_UINT32 i = 0u; - - fp = fopen("PhyLog.txt", "r"); - if (fp != NULL) - { - fseek(fp, 0, SEEK_END); - /*- 获取当前文件字节数 */ - fileCurrentSize = ftell(fp); - /*- 文件超过5kb,则保留1kb */ - if(fileCurrentSize >= 5120u) - { - fseek(fp, fileCurrentSize-1024, SEEK_SET); - fileCurrentSize = fread(historyBuf, 1024, 1, fp); - (void)fclose(fp); - /*- 处理字符串 */ - for(i = 0u; i < 1024u; i++) - { - if('\n' == historyBuf[i]) - { - (void)CM_Memcpy(tempBuf,1024,&historyBuf[i+1],1024-i); - break; - } - } - - fp = fopen("PhyLog.txt", "w"); - fileCurrentSize = fwrite(tempBuf, 1024-i, 1, fp); - } - else - { - /*- 无处理 */ - } - (void)fclose(fp); - } - else - { - /*- 文件不存在空指针为正常情况*/ - } -} -#endif \ No newline at end of file diff --git a/TSCP/src/MSCP/MSCP_APP_Interface.h b/TSCP/src/MSCP/MSCP_APP_Interface.h index 0f94e30..b2475a3 100644 --- a/TSCP/src/MSCP/MSCP_APP_Interface.h +++ b/TSCP/src/MSCP/MSCP_APP_Interface.h @@ -76,7 +76,9 @@ typedef ENUM_CM_RETURN(*pSetAppfunc)(void); /* 应用周期调用函数 */ ENUM_OUTNET_EXTEND_RED = 5, /**< 扩展红网 */ ENUM_OUTNET_EXTEND_BLUE = 6, /**< 扩展蓝网 */ ENUM_ANOTHER_EXTEND_RED = 7, /**< 另一插箱扩展红网 */ - ENUM_ANOTHER_EXTEND_BLUE = 8 /**< 另一插箱扩展蓝网 */ + ENUM_ANOTHER_EXTEND_BLUE = 8, /**< 另一插箱扩展蓝网 */ + ENUM_CHN_RED = 9, /**< 红网通道,包含红网和扩展红网 */ + ENUM_CHN_BLUE = 10 /**< 蓝网通道,包含蓝网和扩展蓝网 */ }ENUM_OUTNET_CHN_T; /*- 板卡状态类型 */ diff --git a/TSCP/src/MSCP/PFM/PFM_Cfg.c b/TSCP/src/MSCP/PFM/PFM_Cfg.c index 761d971..a049969 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, 59u }; +const CM_UINT8 MSCP_SW_VERION[4] = { 93u, 1u, 1u, 62u }; /** 驱动软件版本号 */ CM_UINT8 MSCP_DRV_VERION[4] = {0}; /** 与维护一体机接口文档版本号(接口文档发生改变时升级版本号) */ diff --git a/TSCP/src/MSCP/PFM/PFM_Log.c b/TSCP/src/MSCP/PFM/PFM_Log.c index 2380dc1..b0b0126 100644 --- a/TSCP/src/MSCP/PFM/PFM_Log.c +++ b/TSCP/src/MSCP/PFM/PFM_Log.c @@ -47,7 +47,7 @@ static STRU_2OO2_NET_NO_PACK_T s_2oo2_AutoReboot = { static CM_UINT8 PFM_LOG_SHUTDOWN(CM_UINT32 darkBuf, CM_UINT32 MaintenanceFlag, const CM_CHAR *filename, const CM_CHAR *func, CM_INT32 line); static void PFM_LOG_MaintenanceMode(ENUM_BOARD_STATE_T boardState, CM_UINT32 MaintenanceFlag); /* 宕机前向通控发送状态为宕机的心跳*/ -static void s_OutnetHeart_Send(); +static void s_OutnetHeart_Send(void); /* @brief 通用循环日志管理 * @param file_type 文件类型标识 * 0: 宕机日志 (crashlog) @@ -328,6 +328,7 @@ void MSCP_ASSERT(unsigned int x, unsigned int MaintenanceFlag, unsigned short Mo { /* 脉冲停止必须放在前面,避免延时导致的脉冲停止不及时*/ DFM_Pulse_Stop(); + DFM_ledAREA(0x03u); } } SFM_2x2_LOG_Transition(); @@ -372,7 +373,6 @@ void MSCP_ASSERT(unsigned int x, unsigned int MaintenanceFlag, unsigned short Mo (void)fclose(fp_historical); /*- 关闭所有TCP连接 */ (void)CM_TCP_Socket_Close_shutdown(); - // CM_Sleep(500u); /*- 安全关断*/ DFM_saftyOff(); @@ -383,10 +383,6 @@ void MSCP_ASSERT(unsigned int x, unsigned int MaintenanceFlag, unsigned short Mo if(ENUM_INIT_DRV <= PFM_LOG_GET_INIT_STAGE()) { /*- 设置LED指示灯*/ - if(0x00u != g_PFM_Cfg.M_Area_Enable) - { - DFM_ledAREA(0x03u); - } DFM_ledError(); DFM_ledMS(0u); DFM_ledMonitor(2); @@ -411,8 +407,9 @@ void MSCP_ASSERT(unsigned int x, unsigned int MaintenanceFlag, unsigned short Mo LogQisEmpty = CFM_LogQ_isEmpty(); while (ENUM_CM_FALSE == LogQisEmpty) { + CFM_LogCiphertextSend(); + CM_Sleep(5u); LogQisEmpty = CFM_LogQ_isEmpty(); - CM_Sleep(10u); } /*- 退出运营故障码*/ @@ -505,6 +502,7 @@ void MSCP_REBOOT_ASSERT(unsigned int x, unsigned int MaintenanceFlag,unsigned sh { /* 脉冲停止必须放在前面,避免延时操作导致的脉冲停止不及时*/ DFM_Pulse_Stop(); + DFM_ledAREA(0x03u); /* 灭灯逻辑提前,避免被2取卡住不灭灯*/ } } SFM_2x2_LOG_Transition(); @@ -516,17 +514,12 @@ void MSCP_REBOOT_ASSERT(unsigned int x, unsigned int MaintenanceFlag,unsigned sh (void)printf("MSCP_REBOOT_ASSERT: %s:%s:%d,version:%d.%d.%d.%d,Cyc = %d,DefaultNum:0x%x\n", filename, func, line,MSCP_SW_VERION[0], MSCP_SW_VERION[1], MSCP_SW_VERION[2], MSCP_SW_VERION[3],g_MSCP_SysCount,darkBuf); AutoReboot_Flag = PFM_LOG_SHUTDOWN(darkBuf, MaintenanceFlag, filename, func, line); /*- 关闭所有TCP连接 */ - (void)CM_TCP_Socket_Close_shutdown(); - // CM_Sleep(500u); + (void)CM_TCP_Socket_Close_shutdown(); /*- 安全关断*/ DFM_saftyOff(); if(ENUM_INIT_DRV <= PFM_LOG_GET_INIT_STAGE()) { /*- 设置LED指示灯*/ - if(0x00u != g_PFM_Cfg.M_Area_Enable) - { - DFM_ledAREA(0x03u); - } DFM_ledError(); DFM_ledMS(0u); DFM_ledMonitor(2); @@ -550,13 +543,18 @@ void MSCP_REBOOT_ASSERT(unsigned int x, unsigned int MaintenanceFlag,unsigned sh LogQisEmpty = CFM_LogQ_isEmpty(); while (ENUM_CM_FALSE == LogQisEmpty) { + CFM_LogCiphertextSend(); + CM_Sleep(5u); LogQisEmpty = CFM_LogQ_isEmpty(); - CM_Sleep(2u); } + + /* 启动跟踪录制 */ + MSCP_ASSERT_TraceLog(); /*- 是否执行重启命令*/ if(AutoReboot_Flag == 0x55u) { (void)printf("See You Later!!!\n"); + CM_Sleep(2000u); /* 等待tracelogger记录完成 */ (void)system("shutdown"); /*- 休眠等待重启 */ CM_Sleep(CM_UINT32_MAX); @@ -565,8 +563,6 @@ void MSCP_REBOOT_ASSERT(unsigned int x, unsigned int MaintenanceFlag,unsigned sh { (void)printf("Please check err!!!\n"); } - /* 启动跟踪录制 */ - MSCP_ASSERT_TraceLog(); /*- 设置故障模式*/ PFM_SetBoardState(ENUM_BOARDSTATE_DEFAULT); @@ -967,7 +963,7 @@ static void PFM_LOG_MaintenanceMode(ENUM_BOARD_STATE_T MaintenanceFlag, CM_UINT3 DFM_ledMonitor(1u); if(0x00u != g_PFM_Cfg.M_Area_Enable) { - DFM_ledAREA(0x0u); + DFM_ledAREA(0x03u); } (void)CFM_DarkLog_Storage(DARK_LOG_HEX, TSCP_DARK_PSLIGHT, 1U, &lightPs); (void)CFM_DarkLog_Storage(DARK_LOG_HEX, TSCP_DARK_LOCAL, 1U, &localState); @@ -1114,9 +1110,9 @@ CM_UINT32 *PFM_DarkLogGenerate(CM_UINT16 mode, CM_UINT16 fault, CM_UINT16 num) return &lastcode; } /* 宕机前向通控发送状态为宕机的心跳 连续发送三包*/ -static void s_OutnetHeart_Send() +static void s_OutnetHeart_Send(void) { CFM_TxOutnetHeart(ENUM_2x2_SHUTDOWN); CFM_TxOutnetHeart(ENUM_2x2_SHUTDOWN); CFM_TxOutnetHeart(ENUM_2x2_SHUTDOWN); -} \ No newline at end of file +} diff --git a/TSCP/src/MSCP/PFM/PFM_Log.h b/TSCP/src/MSCP/PFM/PFM_Log.h index 906ce00..1cc2034 100644 --- a/TSCP/src/MSCP/PFM/PFM_Log.h +++ b/TSCP/src/MSCP/PFM/PFM_Log.h @@ -180,7 +180,7 @@ void MSCP_PFM_LOG_MSG(IN const CM_CHAR *filename, IN CM_INT32 line, IN const CM_ #define PFM_BASE_THREADS_NAME "threads_state_" // 文件名前缀 (threads_state_1.txt) #define PFM_LATEST_THREADS_NAME "threads_state_latest.txt" #define PFM_RECORD_TIME_S (5u) -#define PFM_RECORD_BUF (1024) /* 1024 * 16KB = 16MB*/ +#define PFM_RECORD_BUF (1024) /* 1024 * 11KB = 11MB*/ /* 函数实现 */ void MSCP_PFM_LOG_BIN(IN const CM_CHAR *filename, IN const CM_CHAR *func, IN CM_INT32 line, IN const CM_UINT8 *Buf, IN CM_UINT32 Len); diff --git a/TSCP/src/MSCP/SFM/SFM_2oo2.c b/TSCP/src/MSCP/SFM/SFM_2oo2.c index 9355d02..86989df 100644 --- a/TSCP/src/MSCP/SFM/SFM_2oo2.c +++ b/TSCP/src/MSCP/SFM/SFM_2oo2.c @@ -552,7 +552,6 @@ static CM_INT32 s_2oo2_ARQ_Recv(OUT CM_UINT8 *RxData, IN CM_UINT32 RxSize, OUT E { /*- 超时发送请求*/ s_2oo2_ARQ_Send(p_2oo2_Ctrl,ENUM_2oo2_ARQ,p_2oo2_Ctrl->FrameCtrl.FramIndex + 1u); - MSCP_LOG_MSG("[%d]s_2oo2_ARQ_Send:%d\n",p_2oo2_Ctrl->SN,p_2oo2_Ctrl->FrameCtrl.FramIndex + 1); /*- 重置起始时间*/ sTick = CM_GetTick(); ARQ_Cut++; @@ -561,10 +560,10 @@ static CM_INT32 s_2oo2_ARQ_Recv(OUT CM_UINT8 *RxData, IN CM_UINT32 RxSize, OUT E sizeof(CM_UINT16),(p_2oo2_Ctrl->FrameCtrl.FramIndex + 1u), sizeof(CM_UINT16),ARQ_Cut); } - else - { + else + { /*- 无处理 */ - } + } } /*本机与邻机接收成功或重传次数超过1分钟(6000次)退出重传 */ if(((CM_TRUE == MineRcvSuccessFlag) && (CM_TRUE == PeerRcvSuccessFlag)) || (ARQ_Cut >= 6000)) @@ -583,6 +582,10 @@ static CM_INT32 s_2oo2_ARQ_Recv(OUT CM_UINT8 *RxData, IN CM_UINT32 RxSize, OUT E break; } } + if(ARQ_Cut > 0u) + { + MSCP_LOG_MSG("[%d]s_2oo2_ARQ_Send:%d, ARQ_Cut = %d\n",p_2oo2_Ctrl->SN,p_2oo2_Ctrl->FrameCtrl.FramIndex + 1, ARQ_Cut); + } PFM_LOG_SET_STOPTIMER(TSCP_DARK_NULL); /*- 返回报文总长度 */ return allLen; diff --git a/TSCP/src/MSCP/SFM/SFM_2x2.c b/TSCP/src/MSCP/SFM/SFM_2x2.c index 92f8b1f..98ac872 100644 --- a/TSCP/src/MSCP/SFM/SFM_2x2.c +++ b/TSCP/src/MSCP/SFM/SFM_2x2.c @@ -101,15 +101,15 @@ static CM_BOOL s_State_2x2_Analysis(OUT STRU_2X2_STATE_CTRL_T *p_partner_state,C static ENUM_CM_RETURN s_State_2x2Sync(OUT STRU_2X2_STATE_CTRL_T *p_partner_state); static void s_State_Transition(void); /* 倒切按钮消抖 在2x微周期执行*/ -static void s_Area_Switch_Get(); +static void s_Area_Switch_Get(void); /* 脉冲获取 在2x微周期执行*/ -static void s_Area_Pulse_Get(); +static void s_Area_Pulse_Get(void); /** 4个CPU脉冲同步 在2x后的2取执行*/ -static void s_Pulse_Sync(); +static void s_Pulse_Sync(void); /* 4个CPU开关状态判断 在2x后的2取执行 */ -static void s_AreaSwitch_Sync(); +static void s_AreaSwitch_Sync(void); /* 区域状态转换前从2x线程获取脉冲等信息后,进行状态转换*/ -static void s_Area_Transition(); +static void s_Area_Transition(void); /** * @brief 通过脉冲计数,判断脉冲是否停止 * @param index 0-A系,1-B系 @@ -119,7 +119,7 @@ static ENUM_CM_RETURN s_isPulseStopped(CM_UINT8 index); /** * 统一置切系标志 */ -static void s_2x2_CloseSwitchFlag(); +static void s_2x2_CloseSwitchFlag(void); /* 校时计算offset时的2取双CPU计算*/ static ENUM_CM_RETURN s_TimeSync_2oo2(INOUT CM_INT64 *myOffset, OUT CM_INT64 *peerOffset); /* 校时计算时钟调整量*/ @@ -151,6 +151,8 @@ static void s_Ctrl_2oo2Sync(OUT STRU_2X2_CTRL_T *pPeerCtrl); static void SFM_2x2_Input2oo2Exchange(STRU_2X2_CTRL_T *peerCtrl); /* 判断2x422以及以太网的通信状况并且填写暗文日志 */ static void SFM_2x2_Eth422StateDark(void); +/* 返回4线中通信正常的数量*/ +static CM_UINT8 s_2x2_CommNormalNum(void); /* 输入周期号同步函数 */ static void SFM_2x2_InputSysCycSyn(STRU_2X2_CTRL_T *peerCtrl){ @@ -273,7 +275,7 @@ static void s_State_Switch(void) } /* 倒切按钮消抖*/ -static void s_Area_Switch_Get() +static void s_Area_Switch_Get(void) { /*- 变量初始化 */ static CM_UINT64 s_timeFirst = 0u; @@ -306,7 +308,7 @@ static void s_Area_Switch_Get() } } /* 脉冲获取 在2x微周期执行*/ -static void s_Area_Pulse_Get() +static void s_Area_Pulse_Get(void) { static ENUM_CM_RETURN pulseAStopped = ENUM_CM_FALSE; static ENUM_CM_RETURN pulseBStopped = ENUM_CM_FALSE; @@ -818,6 +820,7 @@ static void s_State_Transition(void) static CM_UINT32 dropCount = 0u; ENUM_CM_RETURN Flag_Sick_Down = ENUM_CM_FALSE; /* TODO:如果自己健康度不足以升主 */ ENUM_2x2_STATE_T TempState = ENUM_2x2_SHUTDOWN; /*临时状态*/ + CM_UINT8 comstate_num = 0u; /* 四线通信状态,有三线正常即为ok*/ boardID = g_PFM_Cfg.BOARD_ID; SFM_LOG_MSG_2X("Transition:[%d]MineCom:%d-%d:%d-%d:%d-%d\r\n",s_2x2_state_Ctrl.MicroCyc,\ @@ -1144,13 +1147,9 @@ static void s_State_Transition(void) (ENUM_CM_FALSE == MSCP_Get_2X_Com_State(&s_2x2_state_Ctrl.MineUartOKCount[0],0u)) && (ENUM_CM_FALSE == MSCP_Get_2X_Com_State(&s_2x2_state_Ctrl.PeerUartOKCount[0],0u))) { - - /*前两个周期是否存在中断-本周期串口是否正常-并且对系不是主系则升主*/ - if( /*与当前周期差3-5认为正常,超过阈值认为不同时断线,通信故障*/ - (MSCP_Get_2X_DisCom_Count(&s_2x2_state_Ctrl.MineComOKCount[0],0u) <= MSCP_2X2_SYNC_TIMEOUT_CYC) && - (MSCP_Get_2X_DisCom_Count(&s_2x2_state_Ctrl.PeerComOKCount[0],0u) <= MSCP_2X2_SYNC_TIMEOUT_CYC) && - (MSCP_Get_2X_DisCom_Count(&s_2x2_state_Ctrl.MineUartOKCount[0],0u) <= MSCP_2X2_SYNC_TIMEOUT_CYC) && - (MSCP_Get_2X_DisCom_Count(&s_2x2_state_Ctrl.PeerUartOKCount[0],0u) <= MSCP_2X2_SYNC_TIMEOUT_CYC)) + /*在完全中断前,有三线通信正常则允许切系*/ + comstate_num = s_2x2_CommNormalNum(); + if(comstate_num >= 3u) /* 三线及以上同时中断*/ { /*不存在断线,判断为宕机或断电升主*/ /*- 本系升主 */ @@ -1321,7 +1320,7 @@ static CM_THREAD_FUNC_T SFM_2x2_StateChange_Thread(void) if(0x00u != g_PFM_Cfg.M_Area_Enable) { /*获取脉冲状态*/ - s_Area_Pulse_Get(); + s_Area_Pulse_Get(); /* 检查区域按钮状态*/ s_Area_Switch_Get(); } @@ -3880,7 +3879,7 @@ void SFM_2x2_SemPost(void) } } /** 4个CPU脉冲同步*/ -static void s_Pulse_Sync() +static void s_Pulse_Sync(void) { CM_UINT32 i = 0u, j = 0u, jmax = 0u; /* 循环变量*/ CM_INT32 pulseNum[5] = {0}; @@ -3940,7 +3939,7 @@ static void s_Pulse_Sync() } } /* 4个CPU开关状态判断 在2x后的2取执行*/ -static void s_AreaSwitch_Sync() +static void s_AreaSwitch_Sync(void) { if(ENUM_2x2_SHUTDOWN == s_2x2_state_Ctrl.PartnerState) { @@ -4033,7 +4032,7 @@ static ENUM_CM_RETURN s_isPulseStopped(CM_UINT8 index) } /* 区域状态转换前从2x线程获取脉冲等信息后,进行状态转换*/ -static void s_Area_Transition() +static void s_Area_Transition(void) { STRU_AREA_STATE_CTRL_T* AreaStateCtrl = SFM_Area_BackPointer_Ctrl(); /* 区域状态控制*/ if(1u == s_2x2_state_Ctrl.AreaIsAllowed && @@ -4096,7 +4095,7 @@ void SFM_2x2_UpdateCYC(void) /** * 统一置切系标志 */ -static void s_2x2_CloseSwitchFlag() +static void s_2x2_CloseSwitchFlag(void) { s_2x2_state_Ctrl.LocalSwitchState = ENUM_2x2_SWITCH_CLOSE; s_2x2_state_Ctrl.PeerSwitchState = ENUM_2x2_SWITCH_CLOSE; @@ -4203,4 +4202,27 @@ static void s_TimeSync_AreaSyncFlag(IN CM_INT64 offset, IN CM_INT64 threshold) MSCP_LOG_MSG("area:WARING[%d][%lldms]:area offset sync success\n",SFM_2x2_GetSysCount(),offset/CM_MILLION); s_2x2_Ctrl.TimeSyncFlag_Area = CM_TRUE; } +} +/* 返回4线中通信正常的数量*/ +static CM_UINT8 s_2x2_CommNormalNum(void) +{ + CM_UINT8 num = 0u; + if(MSCP_Get_2X_DisCom_Count(&s_2x2_state_Ctrl.MineComOKCount[0],0u) <= MSCP_2X2_SYNC_TIMEOUT_CYC) + { + num++; + } + if(MSCP_Get_2X_DisCom_Count(&s_2x2_state_Ctrl.PeerComOKCount[0],0u) <= MSCP_2X2_SYNC_TIMEOUT_CYC) + { + num++; + } + if(MSCP_Get_2X_DisCom_Count(&s_2x2_state_Ctrl.MineUartOKCount[0],0u) <= MSCP_2X2_SYNC_TIMEOUT_CYC) + { + num++; + } + if(MSCP_Get_2X_DisCom_Count(&s_2x2_state_Ctrl.PeerUartOKCount[0],0u) <= MSCP_2X2_SYNC_TIMEOUT_CYC) + { + num++; + } + + return num; } \ No newline at end of file diff --git a/TSCP/src/MSCP/SFM/SFM_Area.c b/TSCP/src/MSCP/SFM/SFM_Area.c index 903e88d..bf8aac6 100644 --- a/TSCP/src/MSCP/SFM/SFM_Area.c +++ b/TSCP/src/MSCP/SFM/SFM_Area.c @@ -62,19 +62,19 @@ static void s_Area_Recv(void); /*获取最新的区域数据buf*/ static CM_INT32 s_Get_LatestAreaBuf(IN CM_UINT8* data1, IN CM_INT32 len1,IN CM_UINT8* data2, IN CM_INT32 len2,OUT CM_UINT8** dataOut); /* CI状态机*/ -static void s_Area_CI_Transition(); +static void s_Area_CI_Transition(void); /* RC状态机*/ -static void s_Area_RC_Transition(); +static void s_Area_RC_Transition(void); /* 区域状态机*/ -static void s_Area_State_Transition(); +static void s_Area_State_Transition(void); /* 从AB两系的脉冲选择有效的脉冲*/ -static void s_Area_GetValidPulse(); +static void s_Area_GetValidPulse(void); /* 区域协程的2oo2x交互*/ -static void s_Area_2oo2x2(); +static void s_Area_2oo2x2(void); /* 根据脉冲状态获取区域状态 状态转换前进行*/ -static void s_Area_GetStateFromPulse(); +static void s_Area_GetStateFromPulse(void); /* 主备系接收情况判断*/ -static void s_Area_GetMasterData(); +static void s_Area_GetMasterData(void); /** * @brief 直接从脉冲状态转换出区域状态 * */ @@ -85,6 +85,14 @@ static ENUM_AREA_STATE_T s_ConvertPulseToState(ENUM_PULSE_TYPE_T pulse); * @see :: s_2x2_SendState */ static void s_2x2_Area_Recv(void); +/** + * @brief 解析2x2数据,更新状态控制结构体,并根据不同类型的数据进行不同处理 + */ +static void s_Parse2x2Data(ENUM_2x2_MSG_T msgType, CM_UINT32 msgCyc, CM_UINT16 framNum, CM_UINT16 framIndex, CM_UINT8* data, CM_INT32 len); +/** + * @brief 解析区域数据,更新状态控制结构体,并根据不同类型的数据进行不同处理 + */ +static void s_ParseAreaData(ENUM_AREA_MSG_T msgType, CM_UINT32 msgCyc, CM_UINT16 framNum, CM_UINT16 framIndex, CM_UINT8* data, CM_INT32 len); /** * 区域通信处理线程 */ @@ -96,7 +104,7 @@ static void s_2oo2Before_AreaSend(CM_UINT8 *buf, CM_INT32 len, CM_UINT32 bufsize /** * 初始化 */ -void SFM_Area_Init() +void SFM_Area_Init(void) { CM_BOOL rt = CM_FALSE; ENUM_CM_RETURN ret = ENUM_CM_FALSE; @@ -165,7 +173,7 @@ void SFM_Area_Init() /** * 发送起始信号量 */ -void SFM_AREA_Thread_PostStart() +void SFM_AREA_Thread_PostStart(void) { if(0x00 != g_PFM_Cfg.M_Area_Enable) { @@ -179,7 +187,7 @@ void SFM_AREA_Thread_PostStart() /** * 等待结束信号量 */ -void SFM_AREA_Thread_WaitStop() +void SFM_AREA_Thread_WaitStop(void) { if(0x00 != g_PFM_Cfg.M_Area_Enable) { @@ -263,6 +271,7 @@ static CM_THREAD_FUNC_T t_AreaThread(void) s_area_state_Ctrl.AnotherBoardID); CM_Sem_Post(s_Area_Thread_Ctrl.m_Stop); } + return NULL; } /** * @brief 区域发送 @@ -348,7 +357,6 @@ void SFM_AREA_Send(IN const CM_UINT8 *Data, IN CM_UINT32 DataLen, IN ENUM_AREA_M static void s_Area_Recv(void) { /*- 变量初始化 */ - static STRU_FrameCtrl_T s_Area_FrameCtrl[2]; /**< 分帧接收控制 */ CM_INT32 rxLen = 0; /* 网络接收长度 */ CM_UINT32 msgLen = 0u; /* 报文长度 */ CM_UINT32 SrcID = 0u; /* 源ID */ @@ -418,47 +426,7 @@ static void s_Area_Recv(void) { pData = s_area_Cache + offset; DataLen = (CM_INT32)CM_UNSIGNED_INT_EXP(msgLen - offset + 6); - switch(type) - { - case ENUM_AREA_MSG_MASTER: - Buff_Area = g_Area_App_DATA; - Buff_Len = &g_Area_App_Data_Len; - Buff_FrameCtrl = &s_Area_FrameCtrl[0]; - break; - case ENUM_AREA_MSG_SLAVE: - Buff_Area = g_Area_State_Cache; - Buff_Len = &g_Area_State_Cache_Len; - Buff_FrameCtrl = &s_Area_FrameCtrl[1]; - break; - default: - break; - } - /*- 分帧接收跟随报文 */ - CM_RE_ASSERT(FrameNum <= (SFM_AREA_DATA_BUFF_SIZE / NET_20K_SIZE), SFM_AREA_MODE, DARK_FAULT_CODE_FUN_ORDER_3, TSCP_DARK_ASSERT_2); - CM_RE_ASSERT(FrameIndex <= FrameNum, SFM_AREA_MODE, DARK_FAULT_CODE_FUN_ORDER_3, TSCP_DARK_ASSERT_3); - ret = SFM_FrameSave(Buff_FrameCtrl, (CM_UINT8)type, FrameNum, FrameIndex, pData, DataLen, Buff_Area, Buff_Len, sizeof(g_Area_App_DATA)); - /*- 是否收齐了跟随报文 */ - if (ENUM_CM_TRUE == ret && 8u <= *Buff_Len) - { - *Buff_Len -= 8; - msgCrc1 = CM_LongFromChar(Buff_Area + *Buff_Len); - msgCrc2 = CM_LongFromChar(Buff_Area + *Buff_Len + 4); - calcCrc1 = CM_Crc32_1(Buff_Area, *Buff_Len); - calcCrc2 = CM_Crc32_2(Buff_Area, *Buff_Len); - if(calcCrc1 != msgCrc1 || calcCrc2 != msgCrc2) - { - SFM_LOG_MSG_AREA("Recv %d double crc fail\n", type); - *Buff_Len = 0u; - } - else - { - SFM_LOG_MSG_AREA("Recv Success, cyc:%d\n", msgCyc); - } - } - else - { - - } + s_ParseAreaData(type, msgCyc, FrameNum, FrameIndex, pData, DataLen); } else { @@ -587,7 +555,6 @@ void SFM_2x2_AREA_Send(IN const CM_UINT8 *Data, IN CM_UINT32 DataLen, IN ENUM_2x static void s_2x2_Area_Recv(void) { /*- 变量初始化 */ - static STRU_FrameCtrl_T s_2x2_Area_FrameCtrl; /**< 分帧接收控制 */ CM_INT32 rxLen = 0; /* 网络接收长度 */ CM_UINT32 msgLen = 0u; /* 报文长度 */ CM_UINT32 SrcID = 0u; /* 源ID */ @@ -645,32 +612,7 @@ static void s_2x2_Area_Recv(void) { pData = s_area_Cache + offset; DataLen = (CM_INT32)CM_UNSIGNED_INT_EXP(msgLen - offset); - /*- 报文类型 */ - switch (type) - { - case ENUM_2x2_AREA_MSG_DATA: - if(msgCyc > s_area_state_Ctrl.Rx2x2DataSysCyc) - { - /*- 分帧接收跟随报文 */ - CM_RE_ASSERT(FrameNum <= (SFM_AREA_DATA_BUFF_SIZE / NET_20K_SIZE), SFM_AREA_MODE, DARK_FAULT_CODE_FUN_ORDER_7, TSCP_DARK_ASSERT_5); - CM_RE_ASSERT(FrameIndex <= FrameNum, SFM_AREA_MODE, DARK_FAULT_CODE_FUN_ORDER_7, TSCP_DARK_ASSERT_6); - ret = SFM_FrameSave(&s_2x2_Area_FrameCtrl, (CM_UINT8)ENUM_2x2_MSG_BASE_FOLLOW, FrameNum, FrameIndex, pData, DataLen, g_2x2_Area_App_DATA, &g_2x2_Area_App_Data_Len, (CM_UINT32)sizeof(g_2x2_Area_App_DATA)); - /*- 是否收齐了跟随报文 */ - if (ENUM_CM_TRUE == ret) - { - s_area_state_Ctrl.Rx2x2DataSysCyc = msgCyc; - - } - else - { - - } - } - break; - default: - /* 无处理*/ - break; - }/* end switch */ + s_Parse2x2Data(type, msgCyc, FrameNum, FrameIndex, pData, DataLen); } else { @@ -816,7 +758,7 @@ CM_UINT32 SFM_GetAreaData(OUT CM_UINT8** data) return len; } /* 区域状态切换*/ -void SFM_Area_State_Transition() +void SFM_Area_State_Transition(void) { s_Area_GetStateFromPulse(); @@ -906,7 +848,7 @@ void SFM_Area_State_Transition() } } /* 区域状态机*/ -static void s_Area_State_Transition() +static void s_Area_State_Transition(void) { ENUM_AREA_STATE_T tempState; SFM_LOG_MSG_AREA("pulse is %d\n", s_area_state_Ctrl.pulse); @@ -1021,7 +963,7 @@ void SFM_SetAreaLed(ENUM_AREA_STATE_T state) DFM_ledAREA(0x02u); break; case ENUM_AREA_UNAVAILABLE: - DFM_ledAREA(0x03u); + DFM_ledAREA(0x00u); break; default: DFM_ledAREA(0x03u); @@ -1035,14 +977,14 @@ CM_UINT32 SFM_Area_GetRxSysCount() return s_area_state_Ctrl.RxAreaSysCyc; } /* 获取区域周期号*/ -CM_UINT32 SFM_Area_GetSysCount() +CM_UINT32 SFM_Area_GetSysCount(void) { return g_MSCP_AreaCount; } /* 从AB两系的脉冲选择有效的脉冲 * 必须在状态转换(SFM_Area_State_Transition)前进行 */ -static void s_Area_GetValidPulse() +static void s_Area_GetValidPulse(void) { s_area_state_Ctrl.AllInterrupt = 0u; /* 更新亚健康标志*/ @@ -1104,7 +1046,7 @@ static void s_Area_GetValidPulse() } } /* 区域协程的2oo2x交互*/ -static void s_Area_2oo2x2() +static void s_Area_2oo2x2(void) { /* 清空缓冲区长度*/ g_Area_App_Master_Len = 0; @@ -1153,7 +1095,7 @@ static void s_Area_2oo2x2() SFM_LOG_MSG_AREA("Master Data Len:%d, Slave Data Len:%d\n",g_Area_App_Master_Len ,g_Area_App_Slave_Len ); } /* 根据脉冲状态获取区域状态 状态转换前进行*/ -static void s_Area_GetStateFromPulse() +static void s_Area_GetStateFromPulse(void) { /* 获取有效脉冲*/ static CM_UINT32 notSameCnt = 0u; @@ -1209,12 +1151,12 @@ void SFM_Area_EndProc(CM_UINT8* CI_Buf, CM_INT32 buf_len, CM_UINT32 buf_size) if(NULL != RC_API_FollowUp && 4u < areaDataLen) { s_area_state_Ctrl.RCFollowFlag = RC_API_FollowUp(p_areaData, areaDataLen); + MSCP_LOG_MSG("RC:Set App Data, alllen=%d, len=%d, time:%llums\n", areaDataLen, CM_LongFromChar(p_areaData), NOW_USED_TIME / 1000u); } else { - MSCP_LOG_MSG("RC:Set App Func Fail, len = %d\n", areaDataLen); + MSCP_LOG_MSG("RC:Set App Func Fail, len = %d, time:%llums\n", areaDataLen, NOW_USED_TIME / 1000u); } - MSCP_LOG_MSG("RC:Set App Data, alllen=%d, len=%d, time:%llums\n", areaDataLen, CM_LongFromChar(p_areaData), NOW_USED_TIME / 1000u); } else if(0x55u == g_PFM_Cfg.M_Area_Enable) { @@ -1335,7 +1277,7 @@ static void s_2oo2Before_AreaSend(CM_UINT8 *buf, CM_INT32 len, CM_UINT32 bufsize } /* 主备系接收情况判断*/ -static void s_Area_GetMasterData() +static void s_Area_GetMasterData(void) { CM_UINT32 appLen = 0u; static CM_UINT32 Slave_sysCyc = 0; @@ -1403,7 +1345,7 @@ void SFM_Area_UpdateCYC(void) } } /* CI状态机*/ -static void s_Area_CI_Transition() +static void s_Area_CI_Transition(void) { switch(s_area_state_Ctrl.LocalAreaState) { @@ -1434,7 +1376,7 @@ static void s_Area_CI_Transition() } } /* RC状态机*/ -static void s_Area_RC_Transition() +static void s_Area_RC_Transition(void) { switch(s_area_state_Ctrl.LocalAreaState) { @@ -1494,4 +1436,98 @@ static void s_Area_RC_Transition() /*无处理*/ break; } +} +static void s_Parse2x2Data(ENUM_2x2_MSG_T msgType, CM_UINT32 msgCyc, CM_UINT16 framNum, CM_UINT16 framIndex, CM_UINT8* data, CM_INT32 len) +{ + static STRU_FrameCtrl_T s_2x2_Area_FrameCtrl; /**< 分帧接收控制 */ + CM_UINT32 ret = 0u; + switch (msgType) + { + case ENUM_2x2_AREA_MSG_DATA: + if(msgCyc > s_area_state_Ctrl.Rx2x2DataSysCyc) + { + /*- 分帧接收跟随报文 */ + CM_RE_ASSERT(framNum <= (SFM_AREA_DATA_BUFF_SIZE / NET_20K_SIZE), SFM_AREA_MODE, DARK_FAULT_CODE_FUN_ORDER_9, TSCP_DARK_ASSERT_1); + CM_RE_ASSERT(framIndex <= framNum, SFM_AREA_MODE, DARK_FAULT_CODE_FUN_ORDER_9, TSCP_DARK_ASSERT_2); + ret = SFM_FrameSave(&s_2x2_Area_FrameCtrl, (CM_UINT8)ENUM_2x2_MSG_BASE_FOLLOW, framNum, framIndex, data, len, g_2x2_Area_App_DATA, &g_2x2_Area_App_Data_Len, (CM_UINT32)sizeof(g_2x2_Area_App_DATA)); + /*- 是否收齐了跟随报文 */ + if (ENUM_CM_TRUE == ret) + { + s_area_state_Ctrl.Rx2x2DataSysCyc = msgCyc; + } + else + { + + } + } + break; + default: + /* 无处理*/ + break; + }/* end switch */ +} +static void s_ParseAreaData(ENUM_AREA_MSG_T msgType, CM_UINT32 msgCyc, CM_UINT16 framNum, CM_UINT16 framIndex, CM_UINT8* data, CM_INT32 len) +{ + static STRU_FrameCtrl_T s_Area_FrameCtrl[2]; /**< 分帧接收控制 */ + CM_UINT32 msgCrc1 = 0u, msgCrc2 = 0u, calcCrc1 = 0u, calcCrc2 = 0u; + ENUM_CM_RETURN ret = ENUM_CM_FALSE; + switch(msgType) + { + case ENUM_AREA_MSG_MASTER: + /*- 分帧接收跟随报文 */ + CM_RE_ASSERT(framNum <= (SFM_AREA_DATA_BUFF_SIZE / NET_20K_SIZE), SFM_AREA_MODE, DARK_FAULT_CODE_FUN_ORDER_10, TSCP_DARK_ASSERT_1); + CM_RE_ASSERT(framIndex <= framNum, SFM_AREA_MODE, DARK_FAULT_CODE_FUN_ORDER_10, TSCP_DARK_ASSERT_2); + ret = SFM_FrameSave(&s_Area_FrameCtrl[0], (CM_UINT8)msgType, framNum, framIndex, data, len, g_Area_App_DATA, &g_Area_App_Data_Len, sizeof(g_Area_App_DATA)); + /*- 是否收齐了跟随报文 */ + if (ENUM_CM_TRUE == ret && 8u <= g_Area_App_Data_Len) + { + g_Area_App_Data_Len -= 8; + msgCrc1 = CM_LongFromChar(g_Area_App_DATA + g_Area_App_Data_Len); + msgCrc2 = CM_LongFromChar(g_Area_App_DATA + g_Area_App_Data_Len + 4); + calcCrc1 = CM_Crc32_1(g_Area_App_DATA, g_Area_App_Data_Len); + calcCrc2 = CM_Crc32_2(g_Area_App_DATA, g_Area_App_Data_Len); + if(calcCrc1 != msgCrc1 || calcCrc2 != msgCrc2) + { + SFM_LOG_MSG_AREA("Recv %d double crc fail\n", msgType); + g_Area_App_Data_Len = 0u; + } + else + { + SFM_LOG_MSG_AREA("Recv Success, cyc:%d\n", msgCyc); + } + } + else + { + + } + break; + case ENUM_AREA_MSG_SLAVE: + CM_RE_ASSERT(framNum == 1, SFM_AREA_MODE, DARK_FAULT_CODE_FUN_ORDER_10, TSCP_DARK_ASSERT_3); + CM_RE_ASSERT(framIndex <= framNum, SFM_AREA_MODE, DARK_FAULT_CODE_FUN_ORDER_10, TSCP_DARK_ASSERT_4); + ret = SFM_FrameSave(&s_Area_FrameCtrl[1], (CM_UINT8)msgType, framNum, framIndex, data, len, g_Area_State_Cache, &g_Area_State_Cache_Len, sizeof(g_Area_State_Cache)); + if (ENUM_CM_TRUE == ret && 8u <= g_Area_State_Cache_Len) + { + g_Area_State_Cache_Len -= 8; + msgCrc1 = CM_LongFromChar(g_Area_State_Cache + g_Area_State_Cache_Len); + msgCrc2 = CM_LongFromChar(g_Area_State_Cache + g_Area_State_Cache_Len + 4); + calcCrc1 = CM_Crc32_1(g_Area_State_Cache, g_Area_State_Cache_Len); + calcCrc2 = CM_Crc32_2(g_Area_State_Cache, g_Area_State_Cache_Len); + if(calcCrc1 != msgCrc1 || calcCrc2 != msgCrc2) + { + SFM_LOG_MSG_AREA("Recv %d double crc fail\n", msgType); + g_Area_State_Cache_Len = 0u; + } + else + { + SFM_LOG_MSG_AREA("Recv Success, cyc:%d\n", msgCyc); + } + } + else + { + + } + break; + default: + break; + } } \ No newline at end of file diff --git a/TSCP/src/MSCP/SFM/SFM_Area.h b/TSCP/src/MSCP/SFM/SFM_Area.h index 56b5cdb..58a1ce0 100644 --- a/TSCP/src/MSCP/SFM/SFM_Area.h +++ b/TSCP/src/MSCP/SFM/SFM_Area.h @@ -104,11 +104,11 @@ typedef struct /** * 发送起始信号量 */ -void SFM_AREA_Thread_PostStart(); +void SFM_AREA_Thread_PostStart(void); /** * 等待结束信号量 */ -void SFM_AREA_Thread_WaitStop(); +void SFM_AREA_Thread_WaitStop(void); /** * @brief 时间同步失败清空消息队列 * @param 无 @@ -124,7 +124,7 @@ void SFM_2X2_AREA_ClearRcvMsgQ(void); /** * 初始化 */ -void SFM_Area_Init(); +void SFM_Area_Init(void); /** * @brief 区域发送 * @param Data 发送报文指针 @@ -150,7 +150,7 @@ void SFM_2x2_AREA_Send(IN const CM_UINT8 *Data, IN CM_UINT32 DataLen, IN ENUM_2x */ CM_UINT32 SFM_GetAreaData(OUT CM_UINT8** data); /* 区域状态切换 必须在2x线程结束后进行*/ -void SFM_Area_State_Transition(); +void SFM_Area_State_Transition(void); /*日志转换*/ void SFM_AREA_LOG_Transition(void); /*协程状态控制接口*/ @@ -162,7 +162,7 @@ void SFM_SetAreaLed(ENUM_AREA_STATE_T state); /* 获取接收到的周期号*/ CM_UINT32 SFM_Area_GetRxSysCount(); /* 获取区域周期号*/ -CM_UINT32 SFM_Area_GetSysCount(); +CM_UINT32 SFM_Area_GetSysCount(void); /** * @brief 周期末区域同步 * @param CI_Buf CI待发送区域数据 diff --git a/TSCP/src/MSCP/SFM/SFM_Prtcl.c b/TSCP/src/MSCP/SFM/SFM_Prtcl.c index 40f10a5..a4d2a58 100644 --- a/TSCP/src/MSCP/SFM/SFM_Prtcl.c +++ b/TSCP/src/MSCP/SFM/SFM_Prtcl.c @@ -74,6 +74,21 @@ extern CM_UINT32 g_MSCP_SysCount; /**< 系统周期号 */ extern CM_INT32 g_PFM_Check; static CM_UINT32 s_txSn = 1u; + +/** + * @breif 外网通道转换函数 + * @param chn 外网通道枚举值 + * @return 转换后的外网通道枚举值 红或者蓝 + */ +static ENUM_OUTNET_CHN_T s_Outnet_Chn_ROB(ENUM_OUTNET_CHN_T chn); +/** + * @brief 外网接收后的去重操作 + * @param redData 红网数据指针 + * @param redDataLen 红网数据长度 + * @param blueData 蓝网数据指针 + * @param blueDataLen 蓝网数据长度 + */ +static CM_UINT8 s_Outnet_Recv_Dedup(CM_UINT8* redData, CM_UINT32 redDataLen, CM_UINT8* blueData, CM_UINT32 *blueDataLen); /** * @breif 外网安全协议初始化(-1) * @details @@ -371,7 +386,7 @@ CM_INT32 SFM_RxInnetRemoteUpdate(OUT CM_UINT8 Buf[], IN CM_UINT32 BufSize) CM_INT32 SFM_RxOutnetSafe(OUT CM_UINT8 buf[], IN CM_UINT32 bufSize) { /*- 变量初始化 */ - ENUM_OUTNET_CHN_T ch = ENUM_OUTNET_ERROR; /* 通道类型 */ + ENUM_OUTNET_CHN_T ch = ENUM_OUTNET_ERROR, ch_rob; /* 通道类型 */ CM_INT32 allLen = 0; /* 报文总长 */ CM_INT32 rxLen = 0; /* 接收报文长度 */ CM_UINT8 ccVer = 0u; /* CC版本 */ @@ -397,6 +412,8 @@ CM_INT32 SFM_RxOutnetSafe(OUT CM_UINT8 buf[], IN CM_UINT32 bufSize) { /*- 从通信层接收外网数据 */ rxLen = CFM_OutnetSafe_Recv(s_Prtcl_UDP_Cache, sizeof(s_Prtcl_UDP_Cache), &ch); + /* 判断为红网还是蓝网通道*/ + ch_rob = s_Outnet_Chn_ROB(ch); (rxLen > 0)?(rxCtrlLen += rxLen):rxCtrlLen; if(rxCtrlLen > g_PFM_Cfg.OutnetSafePack_Len) { @@ -467,7 +484,7 @@ CM_INT32 SFM_RxOutnetSafe(OUT CM_UINT8 buf[], IN CM_UINT32 bufSize) n字节 数据 */ /*- 如果是来自红网数据 */ - if ((ENUM_OUTNET_RED == ch) || (ENUM_OUTNET_EXTEND_RED == ch) || (ENUM_ANOTHER_EXTEND_RED == ch)) + if (ch_rob == ENUM_CHN_RED) { /*- 是否来自ats转车的输入数据 */ if(ENUM_CM_TRUE == isTransformInFrame) @@ -531,16 +548,11 @@ CM_INT32 SFM_RxOutnetSafe(OUT CM_UINT8 buf[], IN CM_UINT32 bufSize) */ /*- 输出红蓝网的外网接收帧 */ CM_LongToChar(redLen, buf); - if((redLen > 0u) && (blueLen > 0u)) - { - CM_LongToChar(blueLen, s_TmpCache); /* parasoft-suppress MISRA2004-17_1 "指针运算提高代码执行效率" */ - blueLen += 4u; - MSCP_LOG_MSG("SFM_RxOutnetSafe redLen=%u, blueLen=%u\n", redLen, blueLen); - ret = SFM_OutProtclTwoRepeat(buf, redLen + 4u, s_TmpCache, &blueLen); - MSCP_LOG_MSG("SFM_RxOutnetSafe Two Repeat redLen=%u, blueLen=%u\n", redLen, blueLen); - CM_ASSERT(ret == 1u, PRTCL_MODE, DARK_FAULT_CODE_FUN_ORDER_3, TSCP_DARK_ASSERT_7); - blueLen -= 4u; - } + CM_LongToChar(blueLen, s_TmpCache); /* parasoft-suppress MISRA2004-17_1 "指针运算提高代码执行效率" */ + blueLen += 4u; + ret = s_Outnet_Recv_Dedup(buf, redLen + 4u, s_TmpCache, &blueLen); + CM_ASSERT(ret == 1u, PRTCL_MODE, DARK_FAULT_CODE_FUN_ORDER_3, TSCP_DARK_ASSERT_7); + blueLen -= 4u; CM_RE_ASSERT((redLen + blueLen + 8u) <= bufSize, PRTCL_MODE, DARK_FAULT_CODE_FUN_ORDER_3, TSCP_DARK_ASSERT_6); CM_LongToChar(blueLen, &buf[4u + redLen]); /* parasoft-suppress MISRA2004-17_1 "指针运算提高代码执行效率" */ allLen = (CM_INT32)CM_UNSIGNED_INT_EXP(redLen + blueLen + 8u); @@ -2417,4 +2429,52 @@ CM_UINT32 SFM_GetTxSn(void) /*- 返回sn号*/ return tmpsn; } +static ENUM_OUTNET_CHN_T s_Outnet_Chn_ROB(ENUM_OUTNET_CHN_T chn) +{ + ENUM_OUTNET_CHN_T rt = ENUM_OUTNET_ERROR; + switch(chn) + { + case ENUM_OUTNET_RED: + case ENUM_OUTNET_EXTEND_RED: + case ENUM_ANOTHER_EXTEND_RED: + case ENUM_CHN_RED: + rt = ENUM_CHN_RED; + break; + case ENUM_OUTNET_BLUE: + case ENUM_OUTNET_EXTEND_BLUE: + case ENUM_ANOTHER_EXTEND_BLUE: + case ENUM_CHN_BLUE: + rt = ENUM_CHN_BLUE; + break; + default: + rt = ENUM_OUTNET_ERROR; + break; + } + return rt; +} +/** + * @brief 外网接收后的去重操作 + * @param redData 红网数据指针 + * @param redDataLen 红网数据长度 + * @param blueData 蓝网数据指针 + * @param blueDataLen 蓝网数据长度 + */ +static CM_UINT8 s_Outnet_Recv_Dedup(CM_UINT8 *redData, CM_UINT32 redDataLen, CM_UINT8 *blueData, CM_UINT32 *blueDataLen) +{ + CM_UINT8 ret = 0u; + if((redData != NULL) && (blueData != NULL) && (blueDataLen != NULL)) + { + if ((redDataLen > 4u) && (*blueDataLen > 4u)) + { + MSCP_LOG_MSG("SFM_RxOutnetSafe redLen=%u, blueLen=%u\n", redDataLen, *blueDataLen); + ret = SFM_OutProtclTwoRepeat(redData, redDataLen, blueData, blueDataLen); + MSCP_LOG_MSG("SFM_RxOutnetSafe Two Repeat redLen=%u, blueLen=%u\n", redDataLen, *blueDataLen); + } + else + { + ret = 1u; + } + } + return ret; +} diff --git a/TSCP/src/dqu_common/dqu_cbtc_common/dquCbtcConfigData.c b/TSCP/src/dqu_common/dqu_cbtc_common/dquCbtcConfigData.c index 608c79c..6a1e017 100644 --- a/TSCP/src/dqu_common/dqu_cbtc_common/dquCbtcConfigData.c +++ b/TSCP/src/dqu_common/dqu_cbtc_common/dquCbtcConfigData.c @@ -18,6 +18,8 @@ #include "dfsDataRead.h" #include "CbtcVersion.h" #include "dquCbtcType.h" +#include "../dqu_emap_common/dsuEmapDefine.h" +#include "../../APP/ciapp/System/SystemParameterManage.h" static CBTC_CFG_DATA_STRU *qds_dsuCbtcConfigDataStru=NULL;/*CBTCϢòѯԴ*/ static CBTC_CFG_DATA_STRU *g_pCbtcConfigDataStru=NULL; /*ָʼݿָ*/ @@ -30,20 +32,27 @@ static UINT16 g_RowCount; /* static UINT16 g_wCurInitStruProg=0U;/*ǰṹʼֲ̣ʱʹ*/ static UINT16 g_wCurMainIndex=0U; /*ǰֲʱʹ*/ +extern UINT8 CI_SYSTEM_TYPE_RCI; +extern UINT8 gLocalPublicDataType; + /*----------ڲʼ--------------*/ /*г1*/ UINT8 dfsInitTrainModelConfigData(UINT8 *pDataAddr, UINT32 dataSize, UINT16 rowCount); /*гܲýṹ2*/ UINT8 dfsInitTrainPerformConfigData(UINT8 *pDataAddr, UINT32 dataSize, UINT16 rowCount); +#if 0 /*ϵͳýṹ3-CPK*/ UINT8 dfsInitSubSystemCommonConfigData_CPK(UINT8 *pDataAddr, UINT32 dataSize, UINT16 rowCount); /*ϵͳýṹ3-FAO*/ UINT8 dfsInitSubSystemCommonConfigData_FAO(UINT8 *pDataAddr, UINT32 dataSize, UINT16 rowCount); +#endif /*ϵͳýṹ3-HLTݻͨݽṹV12.0.0޸ģmodify by lmy 20180314*/ UINT8 dfsInitSubSystemCommonConfigData_HLT(UINT8 *pDataAddr, UINT32 dataSize, UINT16 rowCount); +#if 0 /*ϵͳýṹ3-DGݻͨݽṹV12.0.0޸ĺDGHLTʹͬijʼӴ˺add by lmy 20180312*/ UINT8 dfsInitSubSystemCommonConfigData_DG(UINT8 *pDataAddr, UINT32 dataSize, UINT16 rowCount); +#endif /*ʼ[ϵͳ]-CC(Ҫҽ1)*/ UINT8 dfsInitSubSystemCommonConfigData_CC(UINT8 *pDataAddr, UINT32 dataSize, UINT16 rowCount); /*ݽṹ4-FAO ͨ˰汾һ*/ @@ -61,16 +70,16 @@ static UINT8 initConfigCbtcInfoTaskTab(void); /*ʼǼDZ*/ static INIT_TASK_TAB_STRU g_struInitTaskTab[]= { - {DQU_QFUN_TRUE, CBTC_TRAIN_TYPE_CONFIG_ID, dfsInitTrainModelConfigData, 5,1,0}, - {DQU_QFUN_TRUE, CBTC_TRAIN_INFO_ID, dfsInitTrainPerformConfigData, 5,1,0}, - {DQU_QFUN_TRUE, CBTC_CONFIG_DATA_ID, dfsInitSubSystemCommonConfigData_CPK,5,1,0}, - {DQU_QFUN_TRUE, CBTC_CONFIG_DATA_ID, dfsInitSubSystemCommonConfigData_FAO,5,1,0}, - {DQU_QFUN_TRUE, CBTC_CONFIG_DATA_ID, dfsInitSubSystemCommonConfigData_HLT,5,1,0}, - {DQU_QFUN_TRUE, CBTC_CONFIG_DATA_ID, dfsInitSubSystemCommonConfigData_DG, 5,1,0}, - {DQU_QFUN_TRUE, CBTC_CONFIG_DEPOT_ID, dfsInitTrainDepotConfigData, 5,1,0}, - {DQU_QFUN_TRUE, CBTC_CONFIG_DATA_ID, dfsInitSubSystemCommonConfigData_CC, 5,1,0}, - {DQU_QFUN_TRUE, CBTC_CONFIG_BOUNDARY_AXLE_ID,dfsInitBoundaryAxleConfigData, 5,1,0}, - {DQU_QFUN_TRUE, CBTC_SPECIAL_EA_ID, dfsInitSpecialEaConfigData, 5,1,0}, + {DQU_QFUN_TRUE, CBTC_TRAIN_TYPE_CONFIG_ID, dfsInitTrainModelConfigData, 5,1,0}, + {DQU_QFUN_TRUE, CBTC_TRAIN_INFO_ID, dfsInitTrainPerformConfigData, 5,1,0}, + {DQU_QFUN_TRUE, CBTC_CONFIG_DATA_ID, NULL, 5,1,0}, + {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_DATA_ID, dfsInitSubSystemCommonConfigData_CC, 5,1,0}, + {DQU_QFUN_TRUE, CBTC_CONFIG_BOUNDARY_AXLE_ID,dfsInitBoundaryAxleConfigData, 5,1,0}, + {DQU_QFUN_TRUE, CBTC_SPECIAL_EA_ID, dfsInitSpecialEaConfigData, 5,1,0}, }; /*ʼǼDZĿ*/ static const UINT16 MAX_INITTASK_COUNT=sizeof(g_struInitTaskTab)/sizeof(INIT_TASK_TAB_STRU); @@ -114,7 +123,7 @@ static UINT8 initConfigCbtcInfoTaskTab(void) UINT8 cbtcVersionType=0U; cbtcVersionType = GetCbtcSysType(); - if (DQU_CBTC_CPK == cbtcVersionType)/*Ͽ⹦*/ + if (DQU_CBTC_CPK == cbtcVersionType)/*Ͽ⹦ ݲʹ*/ { g_struInitTaskTab[3].bIsEffective=DQU_QFUN_FASLE;/*ϿĬϲִУϵͳýṹ3-FAO*/ g_struInitTaskTab[4].bIsEffective=DQU_QFUN_FASLE;/*ϿĬϲִУϵͳýṹ3-HLT*/ @@ -125,7 +134,7 @@ static UINT8 initConfigCbtcInfoTaskTab(void) g_struInitTaskTab[9].bIsEffective = DQU_QFUN_FASLE;/*ϿĬϲִУѹ*/ rtnValue = 1U; } - else if (DQU_CBTC_FAO == cbtcVersionType) /*FAO*/ + else if (DQU_CBTC_FAO == cbtcVersionType) /*FAO ݲʹ*/ { g_struInitTaskTab[2].bIsEffective=DQU_QFUN_FASLE;/*FAOĬϲִУϵͳýṹ3-CPK*/ g_struInitTaskTab[4].bIsEffective=DQU_QFUN_FASLE;/*FAOĬϲִУϵͳýṹ3-HLT*/ @@ -135,7 +144,7 @@ static UINT8 initConfigCbtcInfoTaskTab(void) g_struInitTaskTab[9].bIsEffective = DQU_QFUN_FASLE;/*FAOĬϲִУѹ*/ rtnValue = 1U; } - else if(DQU_CBTC_HLT == cbtcVersionType) /*ͨ*/ + else if(DQU_CBTC_HLT == cbtcVersionType) /*ͨ ݲʹ*/ { g_struInitTaskTab[2].bIsEffective=DQU_QFUN_FASLE;/*ͨĬϲִУϵͳýṹ3-CPK*/ g_struInitTaskTab[3].bIsEffective=DQU_QFUN_FASLE;/*ͨĬϲִУϵͳýṹ3-FAO*/ @@ -143,9 +152,9 @@ static UINT8 initConfigCbtcInfoTaskTab(void) g_struInitTaskTab[7].bIsEffective = DQU_QFUN_FASLE;/*ͨĬϲִУ*/ g_struInitTaskTab[8].bIsEffective = DQU_QFUN_FASLE;/*ͨĬϲִУ߽*/ g_struInitTaskTab[9].bIsEffective = DQU_QFUN_FASLE;/*ͨĬϲִУѹ*/ - rtnValue = 1; + rtnValue = 1u; } - else if(DQU_CBTC_DG == cbtcVersionType)/*칦*/ + else if(DQU_CBTC_DG == cbtcVersionType)/*칦 ݲʹ*/ { g_struInitTaskTab[2].bIsEffective=DQU_QFUN_FASLE;/*DGĬϲִУϵͳýṹ3-CPK*/ g_struInitTaskTab[3].bIsEffective=DQU_QFUN_FASLE;/*DGĬϲִУϵͳýṹ3-FAO*/ @@ -157,11 +166,26 @@ static UINT8 initConfigCbtcInfoTaskTab(void) } else if (DQU_CBTC_CC == cbtcVersionType)/**/ { - 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*/ - rtnValue = 1U; + if ((DATA_TYPE_28_BRANCH == gLocalPublicDataType) || (DATA_TYPE_23_BRANCH == gLocalPublicDataType)) + { + g_struInitTaskTab[0].bIsEffective = DQU_QFUN_FASLE;/*2823֧ĬϲִУгñ*/ + g_struInitTaskTab[1].bIsEffective = DQU_QFUN_FASLE;/*2823֧ĬϲִУгܲñ*/ + g_struInitTaskTab[2].bIsEffective = DQU_QFUN_FASLE;/*2823֧ĬϲִУϵͳýṹ3-CPK*/ + g_struInitTaskTab[3].bIsEffective = DQU_QFUN_FASLE;/*2823֧ĬϲִУϵͳýṹ3-FAO*/ + g_struInitTaskTab[5].bIsEffective = DQU_QFUN_FASLE;/*2823֧ĬϲִУϵͳýṹ3-DG*/ + g_struInitTaskTab[6].bIsEffective = DQU_QFUN_FASLE;/*2823֧ĬϲִУϢ*/ + g_struInitTaskTab[7].bIsEffective = DQU_QFUN_FASLE;/*2823֧ĬϲִУϵͳýṹ3-CC*/ + g_struInitTaskTab[8].bIsEffective = DQU_QFUN_FASLE;/*2823֧ĬϲִУ߽*/ + g_struInitTaskTab[9].bIsEffective = DQU_QFUN_FASLE;/*2823֧ĬϲִУѹ*/ + } + 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*/ + } + rtnValue = 1u; } else /*δֵð汾ֵδñ־λ*/ { @@ -278,26 +302,46 @@ UINT8 dfsInitTrainModelConfigData(UINT8 *pDataAddr, UINT32 dataSize, UINT16 rowC UINT32 i =0U; static UINT32 rowDataLen = 0U; UINT8 *pData = pDataAddr; - - g_pCbtcConfigDataStru->TrainTypeConfigLen = rowCount; + UINT16 tempTrainName = 0u; + UINT16 TrainCount = 0u; + if (NULL != pDataAddr) { - if (rowCount > 0) + if (0u < rowCount) { rowDataLen = dataSize / rowCount; - for (i = 0; icbtcTrainTypeConfig[i].TrainName = ShortFromChar(pData); - pData += 2; + tempTrainName = ShortFromChar(pData); + if (((0x3cu == CI_SYSTEM_TYPE_RCI) && (0x14u == (UINT8)(tempTrainName >> 8u))) + || ((0x3du == CI_SYSTEM_TYPE_RCI) && (0x10u == (UINT8)(tempTrainName >> 8u)))) + { + /*CIֻʼ0x14͵܇RCֻʼ0x10͵܇*/ + g_pCbtcConfigDataStru->cbtcTrainTypeConfig[i].TrainName = ShortFromChar(pData); + pData += 2u; - g_pCbtcConfigDataStru->cbtcTrainTypeConfig[i].TrainType = *pData; - pData += 1; + g_pCbtcConfigDataStru->cbtcTrainTypeConfig[i].TrainType = *pData; + pData += 1u; + + TrainCount += 1u; + } + else + { + /*ʼ*/ + pData += 3u; + } } } - rtnValue = 1; + else + { + /*nothing*/ + } + + g_pCbtcConfigDataStru->TrainTypeConfigLen = (UINT32)TrainCount; + rtnValue = 1u; } else { @@ -318,38 +362,51 @@ UINT8 dfsInitTrainModelConfigData(UINT8 *pDataAddr, UINT32 dataSize, UINT16 rowC UINT8 dfsInitTrainPerformConfigData(UINT8 *pDataAddr, UINT32 dataSize, UINT16 rowCount) { UINT8 rtnValue = 0U; - UINT32 i =0U; - UINT32 rowDataLen=0U; + UINT32 i = 0U; + UINT32 rowDataLen = 0U; UINT8 *pData = pDataAddr; if (NULL != pDataAddr) { g_pCbtcConfigDataStru->TrainInfoLen = rowCount; - if (rowCount > 0) + if (0u < rowCount) { rowDataLen = dataSize / rowCount; - for (i = 0; icbtcTrainInfo[i].TrainType = *pData; - pData += 1; + pData += 1u; /*г*/ g_pCbtcConfigDataStru->cbtcTrainInfo[i].TrainLength = ShortFromChar(pData); - pData += 2; + pData += 2u; /*гǣٶ*/ g_pCbtcConfigDataStru->cbtcTrainInfo[i].TrainMaxTracAcc = *pData; - pData += 1; + pData += 1u; /*·¶*/ g_pCbtcConfigDataStru->cbtcTrainInfo[i].WorstGrade = ShortFromChar(pData); - pData += 2; + pData += 2u; + /*ƶߴٶȣ*/ + pData += 2u; + /*վ̨׷ʱг*/ g_pCbtcConfigDataStru->cbtcTrainInfo[i].StationTrackDistance = ShortFromChar(pData); - pData += 2; + pData += 2u; + /*ʻ˫Сȫ룬*/ + pData += 2u; + /*ͬʻ˫Сȫ(cm)*/ + pData += 2u; + /*̳źϵͳ䣬*/ + pData += 2u; } } + else + { + /*nothing*/ + } rtnValue = 1; @@ -361,7 +418,7 @@ UINT8 dfsInitTrainPerformConfigData(UINT8 *pDataAddr, UINT32 dataSize, UINT16 ro } return rtnValue; } - +#if 0 /********************************************** ܣʼ[ϵͳ]-CPK(Ҫҽ1) pDataAddr:׵ַ @@ -565,6 +622,7 @@ UINT8 dfsInitSubSystemCommonConfigData_FAO(UINT8 *pDataAddr, UINT32 dataSize, UI return rtnValue; } +#endif /********************************************** ܣʼ[ϵͳ]-HLT(Ҫҽ1) @@ -817,7 +875,7 @@ UINT8 dfsInitSubSystemCommonConfigData_HLT(UINT8 *pDataAddr, UINT32 dataSize, UI return rtnValue; } - +#if 0 /********************************************** ܣʼ[ϵͳ]-DG(Ҫҽ1) pDataAddr:׵ַ @@ -932,7 +990,7 @@ UINT8 dfsInitSubSystemCommonConfigData_DG(UINT8 *pDataAddr, UINT32 dataSize, UIN return rtnValue; } - +#endif /********************************************** ܣʼ[ϵͳ]-CC(Ҫҽ1) pDataAddr:׵ַ @@ -948,120 +1006,101 @@ UINT8 dfsInitSubSystemCommonConfigData_CC(UINT8 *pDataAddr, UINT32 dataSize, UIN if ((NULL != pDataAddr) && (1U == rowCount)) { /*ݽṹ*/ - /*·*/ - g_pCbtcConfigDataStru->cbtcConfigData.MaxLineLimitSpeed = *pDataAddr; - g_pCbtcConfigDataStru->cbtcConfigData.MaxLineLimitSpeed = (UINT16)(27.77778*g_pCbtcConfigDataStru->cbtcConfigData.MaxLineLimitSpeed + 0.5); - pDataAddr += 1; /*ʱ*/ g_pCbtcConfigDataStru->cbtcConfigData.MaxTsrSpeed = *pDataAddr; - pDataAddr += 1; + pDataAddr += 1u; - /*NTPУʱʱ*/ - g_pCbtcConfigDataStru->cbtcConfigData.TimeZoneDifference = *pDataAddr; - pDataAddr += 1; - -#if 0 - /*30.13 ݽṹɾ*/ - /*ͬʻ˫Сȫ(cm))*/ - g_pCbtcConfigDataStru->cbtcConfigData.MABackDistance = ShortFromChar(pDataAddr); - pDataAddr += 2; - -#endif /*һʱٵ*/ g_pCbtcConfigDataStru->cbtcConfigData.MaxTsrNum = ShortFromChar(pDataAddr); - pDataAddr += 2; + pDataAddr += 2u; /*һʱٱа߼*/ g_pCbtcConfigDataStru->cbtcConfigData.MaxSectionOfTsr = ShortFromChar(pDataAddr); - pDataAddr += 2; -#if 0 - /*IVOC-IVOCŹжʱ䣨ms*/ - g_pCbtcConfigDataStru->cbtcConfigData.IvocIvocCommunicationErrorTime = LongFromChar(pDataAddr); - pDataAddr += 4; -#endif - /*IVOC-TIOCͨŹжʱ(ms)*/ + pDataAddr += 2u; + + /*CI-CIͨжʱ (λMS)*/ + g_pCbtcConfigDataStru->cbtcConfigData.CICICommunicationErrorTime = LongFromChar(pDataAddr); + pDataAddr += 4u; + + /*CI-VOBCͨŹжʱ(ms)*/ g_pCbtcConfigDataStru->cbtcConfigData.CiVobcCommunicationErrorTime = LongFromChar(pDataAddr); - pDataAddr += 4; -#if 0 - /*VOBC-ITSͨŹжʱ(ms)*/ - g_pCbtcConfigDataStru->cbtcConfigData.VobcAtsCommunicationErrorTime = LongFromChar(pDataAddr); - pDataAddr += 4; + pDataAddr += 4u; - /*TMC-ITSͨŹжʱ䣨ms*/ - g_pCbtcConfigDataStru->cbtcConfigData.TmcItsCommunicationErrorTime = LongFromChar(pDataAddr); - pDataAddr += 4; -#endif - /*TMC-OCͨŹжʱ(ms)*/ - g_pCbtcConfigDataStru->cbtcConfigData.TmcOcCommunicationErrorTime = LongFromChar(pDataAddr); - pDataAddr += 4; + /*CI-ZCͨŹжʱ(ms)*/ + g_pCbtcConfigDataStru->cbtcConfigData.CiZcCommunicationErrorTime = LongFromChar(pDataAddr); + pDataAddr += 4u; - /*ITS-OCͨŹжʱ䣨ms*/ - g_pCbtcConfigDataStru->cbtcConfigData.ItsOcCommunicationErrorTime = LongFromChar(pDataAddr); - pDataAddr += 4; - - /*OC-PSDͨŹжʱ䣨ms*/ - g_pCbtcConfigDataStru->cbtcConfigData.OcPsdCommunicationErrorTime = LongFromChar(pDataAddr); - pDataAddr += 4; -#if 0 - /*IVOC-TSLͨŹжʱ䣨ms*/ - g_pCbtcConfigDataStru->cbtcConfigData.IvocTslCommunicationErrorTime = LongFromChar(pDataAddr); - pDataAddr += 4; -#endif - /*OC-TSLͨŹжʱ䣨ms*/ - g_pCbtcConfigDataStru->cbtcConfigData.OcTslCommunicationErrorTime = LongFromChar(pDataAddr); - pDataAddr += 4; - - /*㾫׼ͣMA쳤*/ - g_pCbtcConfigDataStru->cbtcConfigData.MALengthForATOParking = ShortFromChar(pDataAddr); - pDataAddr += 2; + /*CI-PSDͨŹжʱ(ms)*/ + g_pCbtcConfigDataStru->cbtcConfigData.CiPsdCommunicationErrorTime = LongFromChar(pDataAddr); + pDataAddr += 4u; /*ϵͳ߼зĹϵ*/ g_pCbtcConfigDataStru->cbtcConfigData.LinkLogicDirUpAndDown = *pDataAddr; - pDataAddr += 1; + pDataAddr += 1u; -#if 0 - /*ݽṹ30.13 ɾ*/ - /*ʻ˫Сȫ*/ - g_pCbtcConfigDataStru->cbtcConfigData.OppositeTrackDistance = ShortFromChar(pDataAddr); - pDataAddr += 2; + /*ͨŽӿͣݲʹãýӿ*/ + pDataAddr += 1u; - /*վ̨׷ʱг*/ - g_pCbtcConfigDataStru->cbtcConfigData.StationTrackDistance = ShortFromChar(pDataAddr); - pDataAddr += 2; + /*Ƿ̬*/ + g_pCbtcConfigDataStru->cbtcConfigData.chZXDynamicTestSwitch = *pDataAddr; + pDataAddr += 1u; -#endif + /*ZC-CIӿЭ汾*/ + g_pCbtcConfigDataStru->cbtcConfigData.VersionOfZCToCI = *pDataAddr; + pDataAddr += 1u; + + /*VOBC-CIӿЭ汾*/ + g_pCbtcConfigDataStru->cbtcConfigData.VersionOfVOBCToCI = *pDataAddr; + pDataAddr += 1u; + + /*PSC-CIͨŹжʱ(ms)*/ + g_pCbtcConfigDataStru->cbtcConfigData.CommFaultTimeOfPSC_CI = LongFromChar(pDataAddr); + pDataAddr += 4u; + + /*VOBC-CIͨŹжʱ(ms)*/ + g_pCbtcConfigDataStru->cbtcConfigData.dwVobcCiackUpCommErrorTime = LongFromChar(pDataAddr); + pDataAddr += 4u; + + /*CI/DSUϵͳУЭ汾*/ + g_pCbtcConfigDataStru->cbtcConfigData.ProtocolVersionOfAxisToCI = ShortFromChar(pDataAddr); + pDataAddr += 2u; + + /*շʽ*/ + g_pCbtcConfigDataStru->cbtcConfigData.chOverlapLockType = *pDataAddr; + pDataAddr += 1u; + + /*ν·ռü*/ + g_pCbtcConfigDataStru->cbtcConfigData.chOccuCheckinCD = *pDataAddr; + pDataAddr += 1u; + + /*·Сܳ*/ + g_pCbtcConfigDataStru->cbtcConfigData.dwLineMinTrainLength = (UINT32)ShortFromChar(pDataAddr); + pDataAddr += 2u; + + /*ȫɸܿ*/ + g_pCbtcConfigDataStru->cbtcConfigData.chWLSFunSwitch = *pDataAddr; + pDataAddr += 1u; + + /*TMC-RCͨŹжʱ(ms)*/ + g_pCbtcConfigDataStru->cbtcConfigData.TmcOcCommunicationErrorTime = LongFromChar(pDataAddr); + pDataAddr += 4u; + + /*IVOC-RCͨŹжʱ䣨ms*/ + g_pCbtcConfigDataStru->cbtcConfigData.IvocOcCommunicationErrorTime = LongFromChar(pDataAddr); + pDataAddr += 4u; + + /*RC-TSLͨŹжʱ䣨ms*/ + g_pCbtcConfigDataStru->cbtcConfigData.OcTslCommunicationErrorTime = LongFromChar(pDataAddr); + pDataAddr += 4u; + /*·½ƶ루λm*/ g_pCbtcConfigDataStru->cbtcConfigData.MaxMALength = LongFromChar(pDataAddr); - pDataAddr += 4; + pDataAddr += 4u; - /*TIOC TIOCͨжʱ (λMS)*/ - g_pCbtcConfigDataStru->cbtcConfigData.CICICommunicationErrorTime = LongFromChar(pDataAddr); - pDataAddr += 4; - - /*·С*/ - g_pCbtcConfigDataStru->cbtcConfigData.dwLineMinTrainLength = LongFromChar(pDataAddr); - pDataAddr += 4; - - /*Ƿֶ֧̬Կ*/ - g_pCbtcConfigDataStru->cbtcConfigData.chZXDynamicTestSwitch = *pDataAddr; - pDataAddr += 1; - - /*̬Կ*/ + /*̬Թܿ*/ g_pCbtcConfigDataStru->cbtcConfigData.chDynamicTestSwitch = *pDataAddr; - pDataAddr += 1; - - /*ȫɸ*/ - g_pCbtcConfigDataStru->cbtcConfigData.chWLSFunSwitch = *pDataAddr; - pDataAddr += 1; - - /*ɢǰ*/ - g_pCbtcConfigDataStru->cbtcConfigData.dwEaFrontDis = LongFromChar(pDataAddr); - pDataAddr += 4; - - /*ɢ*/ - g_pCbtcConfigDataStru->cbtcConfigData.dwEaBehindDis = LongFromChar(pDataAddr); - pDataAddr += 4; + pDataAddr += 1u; pDataAddr += 1U; /*ԶRMܿ*/ @@ -1072,23 +1111,22 @@ UINT8 dfsInitSubSystemCommonConfigData_CC(UINT8 *pDataAddr, UINT32 dataSize, UIN g_pCbtcConfigDataStru->cbtcConfigData.dwVobcCiackUpCommErrorTime = LongFromChar(pDataAddr); /*RCIVOCͨͨŹжʱ*/ pDataAddr += 4U; - - g_pCbtcConfigDataStru->cbtcConfigData.ProtocolVersionOfAxisToCI = ShortFromChar(pDataAddr); /*CIϵͳУЭ汾ţadd by lq 2023.11.16*/ - pDataAddr += 2U; g_pCbtcConfigDataStru->cbtcConfigData.cHitSoftWallSwitch = *pDataAddr; /*ײǽܿ*/ pDataAddr += 1U; - g_pCbtcConfigDataStru->cbtcConfigData.chOverlapLockType= *pDataAddr; /*շʽ*/ - pDataAddr += 1U; - - g_pCbtcConfigDataStru->cbtcConfigData.chOccuCheckinCD = *pDataAddr; /*ν·ռü*/ - pDataAddr += 1U; - g_pCbtcConfigDataStru->cbtcConfigData.chNoCGFollowUtSwitch = *pDataAddr; /*CվBUTǿ׷ٹܿ*/ pDataAddr += 1U; - rtnValue = 1; + /*ɢǰ*/ + g_pCbtcConfigDataStru->cbtcConfigData.dwEaFrontDis = LongFromChar(pDataAddr); + pDataAddr += 4u; + + /*ɢ*/ + g_pCbtcConfigDataStru->cbtcConfigData.dwEaBehindDis = LongFromChar(pDataAddr); + pDataAddr += 4u; + + rtnValue = 1u; } return rtnValue; diff --git a/TSCP/src/dqu_common/dqu_cbtc_common/dquCbtcConfigData.h b/TSCP/src/dqu_common/dqu_cbtc_common/dquCbtcConfigData.h index 26f56a2..ab74793 100644 --- a/TSCP/src/dqu_common/dqu_cbtc_common/dquCbtcConfigData.h +++ b/TSCP/src/dqu_common/dqu_cbtc_common/dquCbtcConfigData.h @@ -48,48 +48,41 @@ extern "C" { /*ϵͳýṹ*/ typedef struct { - UINT16 MaxLineLimitSpeed;/*·,˴ݿдŵUINT8km/hݣҪתcmpsλ*/ - UINT8 MaxTsrSpeed;/*ʱ*/ - UINT8 TimeZoneDifference;/*NTPУʱʱ.ʱ뱾ʱʱλʱӦʹʱӦ3600תΪ롣*/ - UINT16 MABackDistance;/*ȫ.ǵ£DZо·¶ȵȣƶȨǵİȫ*/ - UINT16 MaxTsrNum;/*һʱٵ*/ - UINT16 MaxSectionOfTsr;/*һʱٱа߼*/ - UINT32 VobcZcCommunicationErrorTime;/*VOBCZCͨŹжʱ*/ - UINT32 DsuZcCommunicationErrorTime;/*DSUZCͨŹжʱ*/ - UINT32 ZcZcCommunicationErrorTime;/*ZCZCͨŹжʱ*/ - UINT32 ZcCiCommunicationErrorTime;/*ZCCIͨŹжʱ*/ - UINT32 DsuAtsCommunicationErrorTime;/*DSUATSͨŹжʱ*/ - UINT32 ZcAtsCommunicationErrorTime;/*ZCATSͨŹжʱ*/ - UINT32 VobcCiCommunicationErrorTime;/*VOBCCIͨŹжʱ*/ - UINT32 VobcAtsCommunicationErrorTime;/*VOBCATSͨŹжʱ*/ - UINT16 MaxOverlapLength;/*ϵͳ󱣻γȣcm*/ - UINT32 CICICommunicationErrorTime; /*CI-CIͨŹжʱ(ms)*/ - UINT32 CiVobcCommunicationErrorTime;/*CI-VOBCͨŹжʱ*/ - UINT32 CiZcCommunicationErrorTime; /*CI-ZCͨŹжʱ*/ - UINT32 CiPsdCommunicationErrorTime; /*CI-ZCͨŹжʱ*/ - UINT32 IvocIvocCommunicationErrorTime;/*IVOC-IVOCŹжʱ䣨ms,add by yt202231գ䳵ϵͳ*/ - UINT32 IvocOcCommunicationErrorTime;/*IVOC-OCͨŹжʱ(ms),add by yt202231գ䳵ϵͳ*/ + UINT8 MaxTsrSpeed; /*ʱ*/ + UINT16 MaxTsrNum; /*һʱٵ*/ + UINT16 MaxSectionOfTsr; /*һʱٱа߼*/ + UINT32 CICICommunicationErrorTime; /*CI-CIͨŹжʱ(ms)*/ + UINT32 CiVobcCommunicationErrorTime; /*CI-VOBCͨŹжʱ*/ + UINT32 CiZcCommunicationErrorTime; /*CI-ZCͨŹжʱ*/ + UINT32 CiPsdCommunicationErrorTime; /*CI-PSDͨŹжʱ*/ + UINT8 LinkLogicDirUpAndDown; /*ϵͳ߼зĹϵ,add by yt202231գ䳵ϵͳ*/ + UINT8 chZXDynamicTestSwitch; /*Ƿֶ֧̬ aaر 55*/ + UINT8 VersionOfZCToCI; /*ZC-CIӿЭ汾ţadd by sds 2019-1-21*/ + UINT8 VersionOfVOBCToCI; /*VOBC-CIӿЭ汾ţadd by sds 2019-1-21*/ + UINT32 CommFaultTimeOfPSC_CI; /*PSC-CIͨŹжʱ(ms) ͨݽṹV20.0.0*/ + UINT32 dwVobcCiackUpCommErrorTime; /*IVOC-RCVOBC-CIͨͨŹжʱ(ms)----䳵510Ŀ*/ + UINT16 ProtocolVersionOfAxisToCI; /*Axis-CIӿЭ汾ţadd by lq 2023.11.16*/ + UINT8 chOverlapLockType; /*շʽ 0x01 ATS 0x02 CI*/ + UINT8 chOccuCheckinCD; /*ν·ռü 0x55 0xaa*/ + 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*/ + UINT8 cAwakeCheckSpksSwitch; /*ѹмSPKS״̬أ0xaa飬0x55*/ + UINT32 dwEaFrontDis; /*ɢǰ*/ + UINT32 dwEaBehindDis; /*ɢ*/ + UINT8 cHitSoftWallSwitch; /*ײǽܿ 0x55ش 0xaaعر*/ + UINT8 chNoCGFollowUtSwitch; /*CվBUTǿ׷ٹܿ aa 55ر*/ +#if 0 UINT32 TmcItsCommunicationErrorTime;/*TMC-ITSͨŹжʱ䣨ms,add by yt202231գ䳵ϵͳ*/ - UINT32 TmcOcCommunicationErrorTime;/*TMC-OCͨŹжʱ(ms),add by yt202231գ䳵ϵͳ*/ UINT32 ItsOcCommunicationErrorTime;/*ITS-OCͨŹжʱ䣨ms,add by yt202231գ䳵ϵͳ*/ UINT32 OcPsdCommunicationErrorTime;/*OC-PSDͨŹжʱ䣨ms,add by yt202231գ䳵ϵͳ*/ UINT32 IvocTslCommunicationErrorTime;/*IVOC-TSLͨŹжʱ䣨ms,add by yt202231գ䳵ϵͳ*/ - UINT32 OcTslCommunicationErrorTime;/*OC-TSLͨŹжʱ䣨ms,add by yt202231գ䳵ϵͳ*/ - UINT8 LinkLogicDirUpAndDown; /*ϵͳ߼зĹϵ,add by yt202231գ䳵ϵͳ*/ UINT16 OppositeTrackDistance; /*ʻ˫Сȫ루cm,add by yt202231գ䳵ϵͳ*/ - UINT32 MaxMALength; /*·½ƶ루λm,add by yt202231գ䳵ϵͳ*/ - UINT32 dwLineMinTrainLength; /*ϵͳݣ·С*/ - UINT8 chZXDynamicTestSwitch; /*Ƿֶ֧̬ aaر 55*/ - UINT8 chDynamicTestSwitch; /*Ƿֶ֧̬Կ aaر 55*/ - UINT8 chWLSFunSwitch; /* Ƿ֧ȫɸܣ0x55 ֧ 0xAA֧ */ - UINT32 dwEaFrontDis; /*ɢǰ*/ - UINT32 dwEaBehindDis; /*ɢ*/ - UINT8 cAwakeCheckSpksSwitch; /*ѹмSPKS״̬أ0xaa飬0x55*/ - UINT32 dwVobcCiackUpCommErrorTime; /*IVOC-RCVOBC-CIͨͨŹжʱ(ms)----䳵510Ŀ*/ - UINT8 cHitSoftWallSwitch; /*ײǽܿ 0x55ش 0xaaعر*/ - UINT8 chOverlapLockType; /*շʽ 0x01 ATS 0x02 CI*/ - UINT8 chOccuCheckinCD; /*ν·ռü 0x55 0xaa*/ - UINT8 chNoCGFollowUtSwitch; /*CվBUTǿ׷ٹܿ aa 55ر*/ + /*Ϊatsʾһֶ---Ϲѧ2012-12-17*/ /*UINT8 LinkLogicDirUpAndDown;*/ /*link߼*/ @@ -111,12 +104,10 @@ extern "C" { UINT8 VersionOfZCToCI; /*ZC-CIӿЭ汾ţadd by sds 2019-1-21*/ UINT8 VersionOfZCToATS; /*ZC-ATSӿЭ汾ţadd by sds 2019-1-21*/ UINT8 VersionOfVOBCToATS; /*VOBC-ATSӿЭ汾ţadd by sds 2019-1-21*/ - UINT8 VersionOfVOBCToCI; /*VOBC-CIӿЭ汾ţadd by sds 2019-1-21*/ UINT16 FactoryCodeOfCRSC; /*ͨҴ"ͨ"ţadd by sds 2020-02-12*/ UINT16 FactoryCodeOfTCT; /*ͨҴ"ؿƼ"šͣadd by sds 2020-02-12*/ UINT16 FactoryCodeOfTK; /*ͨҴ""šͣadd by sds 2020-02-12*/ UINT16 FactoryCodeOfZH; /*ͨҴ"ں"ţadd by sds 2020-02-12*/ - UINT32 CommFaultTimeOfPSC_CI; /*PSC-CIͨŹжʱ(ms) ͨݽṹV20.0.0*/ UINT32 CommFaultTimeOfPSC_VOBC; /*PSC-VOBCͨŹжʱ(ms) ͨݽṹV20.0.0*/ UINT32 CommFaultTimeOfPSC_IM; /*PSC-IMͨŹжʱ(ms) ͨݽṹV20.0.0*/ UINT8 CommProtocolTypeOfVOBC_PSC; /*VOBC-PSCӿЭ ͨݽṹV20.0.0*/ @@ -125,7 +116,7 @@ extern "C" { UINT8 CommProtocolTypeOfVOBC_CI; /*VOBCCIͨʱʹýӿЭ ͨݽṹV20.0.0*/ UINT8 CommProtocolTypeOfVOBC_ZC; /*VOBCZCͨʱʹýӿЭ ͨݽṹV20.0.0*/ UINT8 CommProtocolTypeOfVOBC_ATS; /*VOBCATSͨʱʹýӿЭ ͨݽṹV20.0.0*/ - UINT16 ProtocolVersionOfAxisToCI; /*Axis-CIӿЭ汾ţadd by lq 2023.11.16*/ +#endif } CBTC_CONFIG_DATA_STRU; diff --git a/TSCP/src/dqu_common/dqu_dfs_common/dquCbtcType.c b/TSCP/src/dqu_common/dqu_dfs_common/dquCbtcType.c index e1a622b..160a6ec 100644 --- a/TSCP/src/dqu_common/dqu_dfs_common/dquCbtcType.c +++ b/TSCP/src/dqu_common/dqu_dfs_common/dquCbtcType.c @@ -27,7 +27,15 @@ void SetCbtcSysType(UINT8 sysType) { if(0xff == g_CbtcVersionType) { - g_CbtcVersionType=sysType; + if (DQU_CBTC_HLT == sysType) + { + /*HLTʹCCʼwyd 20260331*/ + g_CbtcVersionType = DQU_CBTC_CC; + } + else + { + g_CbtcVersionType = sysType; + } } else { diff --git a/TSCP/src/dqu_common/dqu_emap_common/dquEmapInit.c b/TSCP/src/dqu_common/dqu_emap_common/dquEmapInit.c index 4c45ced..a9c0b9e 100644 --- a/TSCP/src/dqu_common/dqu_emap_common/dquEmapInit.c +++ b/TSCP/src/dqu_common/dqu_emap_common/dquEmapInit.c @@ -250,9 +250,9 @@ static UINT8 initConfigEmapTaskTab() g_struInitTaskTab[loopIndex].bIsEffective = DQU_QFUN_FASLE;/*ΪȫݱռλĿձ60~80*/ } g_struInitTaskTab[EMAP_NOP_60].bIsEffective = DQU_QFUN_FASLE;/*ΪȫݱռλĿձ54*/ - if (0x55 != gLocalPublicDataType)/*28.0.0.14*/ + if (0x01 != gLocalPublicDataType)/*28.0.0.x23.2..1.X*/ { - g_struInitTaskTab[EMAP_RC_ID].bIsEffective = DQU_QFUN_FASLE;/*28.0.0.14߱ӵͼRC*/ + g_struInitTaskTab[EMAP_RC_ID].bIsEffective = DQU_QFUN_FASLE;/*28.0.0.x23.2.1.X߱ӵͼRC*/ } else { diff --git a/TSCP/src/dqu_common/dqu_emap_common/dquStructInit.c b/TSCP/src/dqu_common/dqu_emap_common/dquStructInit.c index ec44eee..6545466 100644 --- a/TSCP/src/dqu_common/dqu_emap_common/dquStructInit.c +++ b/TSCP/src/dqu_common/dqu_emap_common/dquStructInit.c @@ -1356,6 +1356,7 @@ static UINT8 STATION_STRU_init_DG(UINT8 *pDataAdd, DSU_STATION_STRU *pStationStr static UINT8 STATION_STRU_init_CC(UINT8 *pDataAdd, DSU_STATION_STRU *pStationStru) { UINT8 rtnValue = 0U; + UINT8 chDataType = gLocalPublicDataType; /*ָ*/ if ((NULL != pDataAdd) && (NULL != pStationStru)) { @@ -1376,9 +1377,19 @@ static UINT8 STATION_STRU_init_CC(UINT8 *pDataAdd, DSU_STATION_STRU *pStationStr pStationStru->wLinkId = ShortFromChar(pData); pData += 2U; - /*ͣ*/ - pStationStru->dwAttribute = LongFromChar(pData); - pData += 4U; + if (3U == chDataType) + { + /*3֧ݽṹ 23.2.1.X ͣ2ֽ*/ + pStationStru->dwAttribute = ShortFromChar(pData); + pData += 2U; + } + else + { + /*ͣ ߺͺ·֧4ֽ*/ + pStationStru->dwAttribute = LongFromChar(pData); + pData += 4U; + } + #if 0 /*վ̨Ĭͣվʱ*/ @@ -1611,7 +1622,7 @@ UINT8 AXLE_SGMT_STRU_init(UINT8 * pDataAdd, DSU_AXLE_SGMT_STRU * pAxleSgmtStru) pAxleSgmtStru->wId = ShortFromChar(pData); pData += 2U; - if (0x55 == chDataType)/*°*/ + if ((0x01U == chDataType) || (0x03U == chDataType))/*߻23֧*/ { wLength = 16U; } @@ -2566,7 +2577,7 @@ UINT8 LOGIC_SGMT_STRU_init(UINT8 * pDataAdd, DSU_LOGIC_SGMT_STRU * pLogicSgmtStr pLogicSgmtStru->wId = ShortFromChar(pData); pData += 2; - if (0x55 == chDataType)/*°*/ + if ((0x01U == chDataType) || (0x03U == chDataType))/*߻23֧*/ { wLength = 16U; } @@ -3447,9 +3458,9 @@ static UINT8 CI_STRU_init_CC(UINT8 * pDataAdd, DSU_CI_STRU * pCIStru) pCIStru->RCIEntraceType = *pData; pData += 1; #endif - if (0x55U == chDataType)/*°*/ + if (0x01U == chDataType)/*°*/ { - /*28.0.0.14߱½ṹ*/ + /*28.0.0.X23.2.1.x߱½ṹ*/ /*ȫɸ*/ pCIStru->cWLScreenType = *pData; pData += 1U; @@ -3574,9 +3585,9 @@ UINT8 RC_STRU_init(UINT8 * pDataAdd, DSU_CI_STRU * pCIStru) pCIStru->RCIEntraceType = *pData; pData += 1; #endif - if (0x55U == chDataType)/*°*/ + if (0x01U == chDataType)/*°*/ { - /*28.0.0.14߱½ṹ*/ + /*28.0.0.X23.2.1.x߱½ṹ*/ /*ȫɸ*/ pCIStru->cWLScreenType = *pData; pData += 1U; @@ -3832,7 +3843,7 @@ UINT8 PHYSICAL_SGMT_STRU_init(UINT8 * pDataAdd, DSU_PHYSICAL_SGMT_STRU * pPhysic /*ID*/ - if (0x55 == chDataType)/*°*/ + if ((0x01U == chDataType) || (0x03U == chDataType))/*߻23֧*/ { wLength = 16U; } @@ -4162,6 +4173,7 @@ UINT8 DSU_FLOOD_GATE_STRU_init(UINT8 * pDataAdd, DSU_FLOOD_GATE_STRU * pFloodGat static UINT8 runCount = 0U;/*ִиúĴ жǷΪһν*/ static UINT8 maxProtectAxisNum = MAX_PROTECT_AXIS_NUM;/*·ʵʵʽӽ*/ UINT8 i = 0; + UINT8 chDataType = gLocalPublicDataType; /*ָ*/ if ((NULL != pDataAdd) && (NULL != pFloodGateStru)) { @@ -4282,14 +4294,23 @@ UINT8 DSU_FLOOD_GATE_STRU_init(UINT8 * pDataAdd, DSU_FLOOD_GATE_STRU * pFloodGat } } - if ((0U == pFloodGateStru->wProtectAxisNum) || (0U == pFloodGateStru->wAccessAxisNum)) + if (0x01U == chDataType) { - rtnValue = 0U; /*λӽΪ00*/ + if ((0U == pFloodGateStru->wProtectAxisNum) || (0U == pFloodGateStru->wAccessAxisNum)) + { + rtnValue = 0U; /*λӽΪ00*/ + } + else + { + /*ԭֵ*/ + } } else { - /*ԭֵ*/ + /*ݽṹ÷λӽΪ0֧ݽṹ*/ } + + } return rtnValue; } diff --git a/TSCP/src/dqu_common/dqu_idmap_common/dquIdmapInit.c b/TSCP/src/dqu_common/dqu_idmap_common/dquIdmapInit.c index b6631ef..4725c3f 100644 --- a/TSCP/src/dqu_common/dqu_idmap_common/dquIdmapInit.c +++ b/TSCP/src/dqu_common/dqu_idmap_common/dquIdmapInit.c @@ -152,10 +152,10 @@ UINT8 dfsIdmapInit(CHAR * FSName) { /*ȡ*/ DataID=g_struInitTaskTab[wIndex].DataTypeId; - if ((0x55 != gLocalPublicDataType) + if ((0x01 != gLocalPublicDataType) && ((IDMAP_RC_ID == DataID) || (IDMAP_IVOC_ID == DataID))) { - /*0x55Ϊ 28.0.0.14ʼRC&IVOCŶձ*/ + /*0x01Ϊ 28.0.0.X23.2.1.xʼRC&IVOCŶձ*/ chUseTable = 0U; } else diff --git a/TSCP/src/dqu_common/dqu_idmap_common/dquIdmapQuery.c b/TSCP/src/dqu_common/dqu_idmap_common/dquIdmapQuery.c index a9e039d..c46450d 100644 --- a/TSCP/src/dqu_common/dqu_idmap_common/dquIdmapQuery.c +++ b/TSCP/src/dqu_common/dqu_idmap_common/dquIdmapQuery.c @@ -17,10 +17,7 @@ #include "dquQuery.h" #include "math.h" -#define QFUN_IDMAP_TRACKSEC_ID 5 -#define QFUN_IDMAP_VOBC_ID 11 -#define QFUN_IDMAP_AOM_ID 15 /*AOMID*/ -#define QFUN_IDMAP_IVOC_ID 24 + #define DQU_IDMAP_INIT_TRUE 0x55 #define DQU_IDMAP_INIT_FALSE 0xAA @@ -269,7 +266,7 @@ UINT32 dquGetTrackDevId(UINT16 dataPos) UINT32 dwRetVal=0U; if(dataPospTrackSecNumStru[dataPos].dwTrackDevId;*/ + dwRetVal = qds_dsuStaticIdmapStru->pTrackSecNumStru[dataPos].dwTrackSecId[0U]; } return dwRetVal; } diff --git a/TSCP/src/dqu_common/dqu_idmap_common/dquIdmapQuery.h b/TSCP/src/dqu_common/dqu_idmap_common/dquIdmapQuery.h index 9d5df55..d1efd69 100644 --- a/TSCP/src/dqu_common/dqu_idmap_common/dquIdmapQuery.h +++ b/TSCP/src/dqu_common/dqu_idmap_common/dquIdmapQuery.h @@ -47,6 +47,11 @@ #define QFUN_IDMAP_ITE_ID 22 /*ITEID*/ #define QFUN_IDMAP_RC_ID 23 /*RCID*/ +#define QFUN_IDMAP_TRACKSEC_ID 5U /*αID*/ +#define QFUN_IDMAP_VOBC_ID 11U /*VOBCID*/ +#define QFUN_IDMAP_AOM_ID 15U /*AOMID*/ +#define QFUN_IDMAP_IVOC_ID 24U /*IVOCID*/ + #define IDMAP_TYPE_MIN 1 /*ѯṹСֵ add by qxt 20170509*/ #define IDMAP_TYPE_MAX 21 /*ѯṹֵڷѯstruTypeķΧ*/ diff --git a/数据/data_line_BJL10_工程数据(1.2).0.20260210-ts.zip b/数据/data_line_BJL10_工程数据(1.2).0.20260210-ts.zip new file mode 100644 index 0000000..2461dbe --- /dev/null +++ b/数据/data_line_BJL10_工程数据(1.2).0.20260210-ts.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2a23966aba7a8761bccf9fe2821d66bb5d2103340030baed8530a81fbc7957a +size 8172278 diff --git a/数据/标准站车车+公共V31.4+V52.0IVOC+V49.0RCI_CI+V36.0RCI_OC+V22.0ATS+V1.0TMC+V9.0AIM及AID-20250922(3).zip b/数据/标准站车车+公共V31.4+V52.0IVOC+V49.0RCI_CI+V36.0RCI_OC+V22.0ATS+V1.0TMC+V9.0AIM及AID-20250922(3).zip deleted file mode 100644 index 335064c..0000000 --- a/数据/标准站车车+公共V31.4+V52.0IVOC+V49.0RCI_CI+V36.0RCI_OC+V22.0ATS+V1.0TMC+V9.0AIM及AID-20250922(3).zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9b1398e32e5a5276403f5b468942229a97addabdb2bf60cfe8f15865dabd1b1c -size 60915571 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 new file mode 100644 index 0000000..9660e41 --- /dev/null +++ b/数据/标准站车车V8.0+公共V31.5+V54.0IVOC+V50.0RCI_CI+V37.0RCI_OC+V22.0ATS+V1.0TMC+V9.0AIM及AID-20260401(1).zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9abd7242a4fcafef099eadcb600e771b6fc1c2a7b34cf698479245dee5db2d1a +size 33112105 diff --git a/数据/电子地图数据V1.2-CBTC-11.zip b/数据/电子地图数据V1.2-CBTC-11.zip deleted file mode 100644 index 04cd00a..0000000 --- a/数据/电子地图数据V1.2-CBTC-11.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:195fe2e4b1cacc96841de227782f955fc00a96503c5514244d47760fc4272eb2 -size 4627799 diff --git a/数据/电子地图数据V1.2-车车-4.zip b/数据/电子地图数据V1.2-车车-4.zip deleted file mode 100644 index d7192c2..0000000 --- a/数据/电子地图数据V1.2-车车-4.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:53653f9691e6f158baca6b414753d0b753e020d0019ffff8ba6c9c8f8de93c7c -size 3476979 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 new file mode 100644 index 0000000..4ed92a4 --- /dev/null +++ b/数据/电子地图数据V2.2-CBTC-14-公共31.5+CI50.0+OC37.0-8.zip @@ -0,0 +1,3 @@ +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 new file mode 100644 index 0000000..df5b392 --- /dev/null +++ b/数据/电子地图数据V2.2-车车-11-公共31.5+CI50.0+OC37.0+IVOC54.0-6.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc54ffd8691e818718c10702f8cb80c536c3c644ac312aedb068930f0783a011 +size 4259937