From a8d15629ac18a84709d2b94181535bf1c4fadda0 Mon Sep 17 00:00:00 2001 From: lh <3191213465@qq.com> Date: Wed, 17 Jun 2026 15:56:22 +0800 Subject: [PATCH] =?UTF-8?q?9.9=E9=A6=96=E7=89=88=E9=A6=96=E8=BD=AE?= =?UTF-8?q?=E5=8F=91=E7=AD=BE=E4=BB=A3=E7=A0=81=EF=BC=8C=E5=BA=94=E7=94=A8?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=B8=8E=E6=95=B0=E6=8D=AE=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitattributes | 1 + .../ci_integrate_config.h | 2 +- .../APP/ciapp/2oo2/2oo2DataTransferManage.c | 46 +- TSCP/src/APP/ciapp/ERROR/ErrorDefine.h | 9 +- .../src/APP/ciapp/IO/DeviceRelayDataProcess.c | 1567 +++++++++--- .../src/APP/ciapp/IO/DeviceRelayDataProcess.h | 8 + TSCP/src/APP/ciapp/IO/InputDataProcess.c | 86 +- TSCP/src/APP/ciapp/IO/OutputDataProcess.c | 28 + .../src/APP/ciapp/Indicator/IndicatorDefine.h | 1 + .../APP/ciapp/Initial/ConfigDataReadManage.c | 38 +- TSCP/src/APP/ciapp/Initial/InitialProcess.c | 15 + .../LightTestButtonDefine.h | 2 +- TSCP/src/APP/ciapp/LogRecord/LogRecord.c | 31 +- .../ciapp/LogicManage/InterlockCommonManage.c | 16 +- .../ciapp/LogicManage/InterlockLogicManage.c | 1429 ++++++++++- .../ciapp/LogicManage/InterlockLogicManage.h | 110 + .../ciapp/LogicProcess/InterlockLogicCheck.c | 84 +- .../LogicProcess/InterlockLogicProcess.c | 398 ++- .../LogicProcess/InterlockLogicProcess.h | 7 + TSCP/src/APP/ciapp/PSD/PSDConfigDataManage.c | 48 + TSCP/src/APP/ciapp/PSD/PSDConfigDataManage.h | 18 + TSCP/src/APP/ciapp/PSD/PSDDataManage.c | 66 +- TSCP/src/APP/ciapp/PSD/PSDDataManage.h | 24 +- TSCP/src/APP/ciapp/PSD/PSDDefine.h | 6 +- .../APP/ciapp/ParsePack/CiInterfaceDefine.h | 47 +- .../APP/ciapp/ParsePack/ParsePackAtsData.c | 675 ++++- .../APP/ciapp/ParsePack/ParsePackAtsData.h | 194 ++ .../src/APP/ciapp/ParsePack/ParsePackCommon.c | 161 +- .../src/APP/ciapp/ParsePack/ParsePackCommon.h | 7 + .../src/APP/ciapp/ParsePack/ParsePackDefine.h | 35 +- .../ciapp/ParsePack/ParsePackGateWayData.c | 2176 +++++++++++------ .../ciapp/ParsePack/ParsePackGateWayData.h | 43 +- .../src/APP/ciapp/ParsePack/ParsePackManage.c | 6 +- .../APP/ciapp/ParsePack/ParsePackVobcData.c | 19 +- .../APP/ciapp/ParsePack/ParsePackVobcData.h | 3 + TSCP/src/APP/ciapp/QueryFiles/dquCIInit.c | 276 ++- TSCP/src/APP/ciapp/QueryFiles/dquCIInit.h | 18 + .../src/APP/ciapp/QueryFiles/dquCIInterFace.c | 64 + .../src/APP/ciapp/QueryFiles/dquCIInterFace.h | 7 + .../ciapp/QueryFiles/dquCIJDQStruFrmChar.c | 187 +- .../ciapp/QueryFiles/dquCIJDQStruFrmChar.h | 14 + .../APP/ciapp/QueryFiles/dquCIJDQStruInit.c | 192 +- .../APP/ciapp/QueryFiles/dquCIJDQStruInit.h | 16 + TSCP/src/APP/ciapp/QueryFiles/dqucijdqstru.h | 37 +- TSCP/src/APP/ciapp/Relay/RelayDefine.h | 5 + .../ReverseCut/ReverseCutConfigDataManage.c | 174 +- .../ReverseCut/ReverseCutConfigDataManage.h | 73 +- .../ciapp/ReverseCut/ReverseCutDataManage.c | 73 + .../ciapp/ReverseCut/ReverseCutDataManage.h | 37 + .../APP/ciapp/ReverseCut/ReverseCutDefine.h | 8 + .../APP/ciapp/Route/RouteConfigDataManage.c | 72 + .../APP/ciapp/Route/RouteConfigDataManage.h | 18 + TSCP/src/APP/ciapp/Route/RouteDataManage.c | 50 + TSCP/src/APP/ciapp/Route/RouteDataManage.h | 16 + TSCP/src/APP/ciapp/Route/RouteDefine.h | 6 + .../ciapp/Section/LogicSectionDataManage.c | 2 +- TSCP/src/APP/ciapp/Section/SectionDefine.h | 2 +- .../APP/ciapp/Signal/SignalConfigDataManage.c | 91 +- .../APP/ciapp/Signal/SignalConfigDataManage.h | 33 + TSCP/src/APP/ciapp/Signal/SignalDataManage.c | 67 + TSCP/src/APP/ciapp/Signal/SignalDataManage.h | 8 + .../APP/ciapp/Switch/SwitchConfigDataManage.c | 221 +- .../APP/ciapp/Switch/SwitchConfigDataManage.h | 88 +- TSCP/src/APP/ciapp/Switch/SwitchDataManage.c | 301 ++- TSCP/src/APP/ciapp/Switch/SwitchDataManage.h | 138 +- TSCP/src/APP/ciapp/Switch/SwitchDefine.h | 21 +- .../src/APP/ciapp/System/SystemConfigDefine.h | 10 +- .../APP/ciapp/System/SystemParameterManage.c | 45 +- .../APP/ciapp/System/SystemParameterManage.h | 10 + TSCP/src/APP/ciapp/Train/TrainDataManage.c | 223 +- TSCP/src/APP/ciapp/Train/TrainDataManage.h | 55 +- .../dqu_emap_common/dquStructInit.c | 22 +- .../dqu_common/dqu_emap_common/dsuStruct.h | 2 +- .../fsfb/common_fsfb/FsfbRecordDelare.h | 164 +- .../common_sfp_nr_config/sfpConfig.h | 1 + ...I_OC+V22.0ATS+V1.0TMC+V13.0AIM及AID-20260612(1).zip | 3 + 数据/电子地图数据V2.3-CBTC-23.zip | 3 - 数据/电子地图数据V2.3-CBTC-26 -调试数据-2.rar | 3 + 数据/电子地图数据V2.3-车车-13.zip | 3 - 数据/电子地图数据V2.3-车车-16 -调试数据-2.rar | 3 + 80 files changed, 8383 insertions(+), 1885 deletions(-) create mode 100644 数据/标准站车车V8.2+公共V31.8+V56.0IVOC+V53.0RCI_CI+V38.0RCI_OC+V22.0ATS+V1.0TMC+V13.0AIM及AID-20260612(1).zip delete mode 100644 数据/电子地图数据V2.3-CBTC-23.zip create mode 100644 数据/电子地图数据V2.3-CBTC-26 -调试数据-2.rar delete mode 100644 数据/电子地图数据V2.3-车车-13.zip create mode 100644 数据/电子地图数据V2.3-车车-16 -调试数据-2.rar diff --git a/.gitattributes b/.gitattributes index 486a232..64500de 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1,2 @@ *.zip filter=lfs diff=lfs merge=lfs -text +*.rar filter=lfs diff=lfs merge=lfs -text diff --git a/TSCP/src/APP/PU13_integration_config/ci_integrate_config.h b/TSCP/src/APP/PU13_integration_config/ci_integrate_config.h index a17f79b..0837b44 100644 --- a/TSCP/src/APP/PU13_integration_config/ci_integrate_config.h +++ b/TSCP/src/APP/PU13_integration_config/ci_integrate_config.h @@ -30,6 +30,6 @@ #define VER_INTE_PROJECT 220 /*Ŀ*/ #define VER_INTE_PRODUCT 40 /*Ʒ*/ #define VER_INTE_EXE 1 /*ִб*/ -#define VER_INTE_TIME 127 /*ɴ*/ +#define VER_INTE_TIME 131 /*ɴ*/ #endif/*endif of #define _CI_INTEGRATE_CONFIG_H*/ \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/2oo2/2oo2DataTransferManage.c b/TSCP/src/APP/ciapp/2oo2/2oo2DataTransferManage.c index 28f01c3..bce22ab 100644 --- a/TSCP/src/APP/ciapp/2oo2/2oo2DataTransferManage.c +++ b/TSCP/src/APP/ciapp/2oo2/2oo2DataTransferManage.c @@ -1629,11 +1629,31 @@ UINT32 GetCiAppData(UINT8 *pCiAppDataPointer) pCiAppDataPointer[curIndex] = gCbtcCrossStructZc[ii].wTrainId; curIndex += 1u; } - + /*ATS/�ֵ�/����һ�����ȷ����Ϣͬ��*/ + /*������������*/ + (void)CommonMemCpy((void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(AtsFollowUpCmdFstStru), (const void *)(&gDansuoCancleMsgFst), (UINT32)sizeof(AtsFollowUpCmdFstStru)); + curIndex = curIndex + (UINT32)sizeof(AtsFollowUpCmdFstStru); + (void)CommonMemCpy((void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(RCIFollowUpReplyStru), (const void *)(&gDansuoCancleReplyFst), (UINT32)sizeof(RCIFollowUpReplyStru)); + curIndex = curIndex + (UINT32)sizeof(RCIFollowUpReplyStru); + /*�����������*/ + (void)CommonMemCpy((void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(AtsFollowUpCmdFstStru), (const void *)(&gSwitchUnflockMsgFst), (UINT32)sizeof(AtsFollowUpCmdFstStru)); + curIndex = curIndex + (UINT32)sizeof(AtsFollowUpCmdFstStru); + (void)CommonMemCpy((void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(RCIFollowUpReplyStru), (const void *)(&gSwitchUnflockReplyFst), (UINT32)sizeof(RCIFollowUpReplyStru)); + curIndex = curIndex + (UINT32)sizeof(RCIFollowUpReplyStru); + /*���ν������*/ + (void)CommonMemCpy((void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(AtsFollowUpCmdFstStru), (const void *)(&gSecUnflockMsgFst), (UINT32)sizeof(AtsFollowUpCmdFstStru)); + curIndex = curIndex + (UINT32)sizeof(AtsFollowUpCmdFstStru); + (void)CommonMemCpy((void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(RCIFollowUpReplyStru), (const void *)(&gSecUnflockReplyFst), (UINT32)sizeof(RCIFollowUpReplyStru)); + curIndex = curIndex + (UINT32)sizeof(RCIFollowUpReplyStru); + /*�źŻ��������*/ + (void)CommonMemCpy((void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(AtsFollowUpCmdFstStru), (const void *)(&gSignalUnflockMsgFst), (UINT32)sizeof(AtsFollowUpCmdFstStru)); + curIndex = curIndex + (UINT32)sizeof(AtsFollowUpCmdFstStru); + (void)CommonMemCpy((void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(RCIFollowUpReplyStru), (const void *)(&gSignalUnflockReplyFst), (UINT32)sizeof(RCIFollowUpReplyStru)); + curIndex = curIndex + (UINT32)sizeof(RCIFollowUpReplyStru); /*����һ��CRC*/ crcLength = curIndex - crcIndex; crcResult = Tioc_CommonCrc32(pCiAppDataPointer + crcIndex, crcLength); - debug_infor_printf((const)"2oo2 RecvCiCmdDataStruCurSum-gDyTestNum CRC:%x, Length:%d\n", crcResult, crcLength); + debug_infor_printf((const)"2oo2 RecvCiCmdDataStruCurSum-FollowUpCmd CRC:%x, Length:%d\n", crcResult, crcLength); } return curIndex; } @@ -2477,7 +2497,27 @@ UINT8 SetCiAppData(const UINT8 *pCiAppDataPointer,const UINT32 len) gCbtcCrossStructZc[ii].wTrainId = pCiAppDataPointer[curIndex]; curIndex += 1u; } - + /*ͬ��һ���������*/ + /*��������*/ + (void)CommonMemCpy((void *)(&gDansuoCancleMsgFst), (UINT32)sizeof(AtsFollowUpCmdFstStru), (const void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(AtsFollowUpCmdFstStru)); + curIndex = curIndex + (UINT32)sizeof(AtsFollowUpCmdFstStru); + (void)CommonMemCpy((void *)(&gDansuoCancleReplyFst), (UINT32)sizeof(RCIFollowUpReplyStru), (const void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(RCIFollowUpReplyStru)); + curIndex = curIndex + (UINT32)sizeof(RCIFollowUpReplyStru); + /*�������*/ + (void)CommonMemCpy((void *)(&gSwitchUnflockMsgFst), (UINT32)sizeof(AtsFollowUpCmdFstStru), (const void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(AtsFollowUpCmdFstStru)); + curIndex = curIndex + (UINT32)sizeof(AtsFollowUpCmdFstStru); + (void)CommonMemCpy((void *)(&gSwitchUnflockReplyFst), (UINT32)sizeof(RCIFollowUpReplyStru), (const void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(RCIFollowUpReplyStru)); + curIndex = curIndex + (UINT32)sizeof(RCIFollowUpReplyStru); + /*���ν��*/ + (void)CommonMemCpy((void *)(&gSecUnflockMsgFst), (UINT32)sizeof(AtsFollowUpCmdFstStru), (const void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(AtsFollowUpCmdFstStru)); + curIndex = curIndex + (UINT32)sizeof(AtsFollowUpCmdFstStru); + (void)CommonMemCpy((void *)(&gSecUnflockReplyFst), (UINT32)sizeof(RCIFollowUpReplyStru), (const void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(RCIFollowUpReplyStru)); + curIndex = curIndex + (UINT32)sizeof(RCIFollowUpReplyStru); + /*�źŻ����*/ + (void)CommonMemCpy((void *)(&gSignalUnflockMsgFst), (UINT32)sizeof(AtsFollowUpCmdFstStru), (const void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(AtsFollowUpCmdFstStru)); + curIndex = curIndex + (UINT32)sizeof(AtsFollowUpCmdFstStru); + (void)CommonMemCpy((void *)(&gSignalUnflockReplyFst), (UINT32)sizeof(RCIFollowUpReplyStru), (const void *)(pCiAppDataPointer + curIndex), (UINT32)sizeof(RCIFollowUpReplyStru)); + curIndex = curIndex + (UINT32)sizeof(RCIFollowUpReplyStru); rtn = 1U; } } diff --git a/TSCP/src/APP/ciapp/ERROR/ErrorDefine.h b/TSCP/src/APP/ciapp/ERROR/ErrorDefine.h index a77aafe..894ef75 100644 --- a/TSCP/src/APP/ciapp/ERROR/ErrorDefine.h +++ b/TSCP/src/APP/ciapp/ERROR/ErrorDefine.h @@ -111,6 +111,10 @@ #define EFUNC_OVERLAP_VALIDMASK_CHECK ((UINT8)0x4A) /*OverlapValidMaskCheck 㱣Чλ*/ #define EFUNC_ROUTE_LOCK_DRIVE_SWITCH ((UINT8)0xD2) /*RouteLockDriveSwitch յ*/ #define EFUNC_ROUTE_COUPLINK_SET ((UINT8)0xD7) /*SetCouplinkRouteLogicManage ҽ·߼*/ +#define EFUNC_FOLLOWUP_SWITCH_DANSUO_CANCLE ((UINT8)0xD8) /*FollowUpSwitchUnFlockCheck һε*/ +#define EFUNC_FOLLOWUP_SWITCH_UNFLOCK ((UINT8)0xD9) /*FollowUpSwitchUnFlockCheck һε*/ +#define EFUNC_FOLLOWUP_SEC_UNFLOCK ((UINT8)0xDA) /*FollowUpSecUnFlockCheck һν*/ +#define EFUNC_FOLLOWUP_SIGNAL_UNFLOCK ((UINT8)0xDB) /*FollowUpSwitchUnFlockCheck һźŽ*/ /*߼*/ #define EFUNC_SET_LEAD_ROUTE_CHECK ((UINT8)0x4B) /*·*/ @@ -219,7 +223,8 @@ #define EFUNC_PARSE_LOCAL_RC2CI_DATA ((UINT8)0xD5U) /*ParseRcToLocalCiDataFrame*/ #define EFUNC_PARSE_LOCAL_CI2CI_DATA ((UINT8)0xD6U) /*ParseCiToCiDataFrame*/ #define EFUNC_PARSE_LOCAL_OC2CI_DATA ((UINT8)0xD7U) /*ParseOcToCiDataFrame*/ - +#define EFUNC_CONNECT_ROUTE_RELEASE ((UINT8)0xD8U) /*ConnectRouteReleaseManage*/ +#define EFUNC_PARSE_GATEWAY2CI_DATA ((UINT8)0xD9U) /*ParseGateWayToCiDataProc*/ /*************************************************ֽ******************************************************************************/ /*************************************************ֽ******************************************************************************/ @@ -242,6 +247,7 @@ #define ETYPE_GROUP_AUTO_ROUTE_STATE ((UINT8)0x16) /*Զ·*/ #define ETYPE_ROUTE_APPLY_SWITCH_MOVE ((UINT8)0xA4) /*·*/ #define ETYPE_COUPLINK_ROUTE_IDLE ((UINT8)0xA5) /*ҽ·ޱҳ*/ +#define ETYPE_CONNECT_ROUTE_RELEASE ((UINT8)0xA6) /*߽ӳ·*/ #define ETYPE_COMM_WITH_VOBC ((UINT8)0x11) /*VOBCͨ*/ @@ -254,6 +260,7 @@ #define ETYPE_COMM_WITH_TMC ((UINT8)0x17) /*TMCͨ*/ #define ETYPE_COMM_WITH_RC ((UINT8)0x18U) /*RCͨ*/ #define ETYPE_COMM_WITH_OC ((UINT8)0x19U) /*OCͨ*/ +#define ETYPE_COMM_WITH_GATEWAY ((UINT8)0x1AU) /*ͨ*/ /* źŻͱ (UINT8)0x21-(UINT8)0x3f */ /* 豸 CI_DEVICE_TYPE_SIGNAL */ diff --git a/TSCP/src/APP/ciapp/IO/DeviceRelayDataProcess.c b/TSCP/src/APP/ciapp/IO/DeviceRelayDataProcess.c index 23563d9..6fa4bff 100644 --- a/TSCP/src/APP/ciapp/IO/DeviceRelayDataProcess.c +++ b/TSCP/src/APP/ciapp/IO/DeviceRelayDataProcess.c @@ -22,6 +22,7 @@ #include "AxisAssertManage.h" #include "AxisAssertDataPrepare.h" #include "dquCIInit.h" +#include "ReverseCutConfigDataManage.h" /*źŻ̵ʱʱ()*/ #define SIG_RELAY_DRV_DELAY_TIME ((UINT32)3) @@ -39,6 +40,17 @@ static void IsOccPhyHasOccAc(void); * ֵ */ static void DriveSwitchRelayState(const UINT16 switchId, const UINT8 driveSwitchPos); + +/*ɼغ*/ +static UINT8 SwitchRedunFusionHunXianProc(UINT8 cMainOcPos, const UINT8 *pRedunPos, INOUT UINT8 *pHunXianStt); +static UINT8 CalcRedunSwitchFinalFusionPos(UINT8 cMainOcPos, const UINT8 *pRedunPosForFusion, UINT8 cConflictTag); +static UINT8 GetSwitchRedunFusionPos(UINT16 switchId, UINT8 cMainOcPos, UINT8 *pRedunPos, UINT8 *pHunXianStt); +static UINT8 GetMainOcSwitchColPos(UINT16 switchId); +static UINT8 GetRedunSwitchColPos(UINT16 switchId, UINT8 ocIndex, UINT8 *pHunXianStt, UINT8 *pCombineStt); +static void SwitchRedunFaultProc(UINT16 switchId, UINT8 ocIndex, UINT8 cCombineState); +static void SwitchRedunHunXianProc(UINT16 switchId, UINT8 ocIndex, UINT8 cCurrHunXianState, UINT8 cCombineState); +static UINT8 SwitchRedunCombineProc(UINT8 cDBJ1State, UINT8 cDBJ2State, UINT8 cFBJ1State, UINT8 cFBJ2State); + /* zt ɾش 2022-02-15 */ /******************************źŻؼ̵****************************/ @@ -79,6 +91,8 @@ void OcSwitchDeviceOutput(void) UINT8 mainOcId = 0u;/*OCId*/ UINT8 chLocalCiOCSswitch = 0U; UINT8 chSwitchLastValidDrvPos = 0U; + UINT16 wReverseBoardId = 0U; + UINT8 chReverseState = 0U; chLocalCiOCSswitch = GetLocalCiOCSswitch(); @@ -142,6 +156,26 @@ void OcSwitchDeviceOutput(void) }/*for*/ + /*µ״̬*/ + for (ii = 0u; ii < switchCurSum; ii++) + { + switchId = GetSwitchId(ii); + wReverseBoardId = GetSwitchRelateReverseBoardId(switchId); + if (0U != wReverseBoardId) + { + /*õ*/ + chReverseState = GetReverseBoardState(wReverseBoardId); + if (REVERSE_STATE_NEW_SYSTEM != chReverseState) + { + (void)SetSwitchExpDrvPosition(switchId, SWITCH_DRIVE_POS_INVALID);/*½ϵͳ ,λΪЧӿڴתΪ0x55aaλñ*/ + } + } + else + { + ;/*δõУΪ½ϵͳ*/ + } + } + /*״̬*/ for (ii = 0u; ii < switchCurSum; ii++) { @@ -5271,7 +5305,7 @@ void SwitchRelayToDeviceStateProc(void) switchId = GetSwitchId(ii); /*ȡID*/ - if ((0u != switchId) && (switchId < SWITCH_SUM_MAX)) + if ((0u != switchId) && (SWITCH_SUM_MAX > switchId)) { belongCiId = GetSwitchBelongCiId(switchId); /*ȡID*/ @@ -5286,15 +5320,6 @@ void SwitchRelayToDeviceStateProc(void) ZFbRelayId = GetSwitchZFbRelayId(switchId); /*ȡܷλʾ̵ID*/ DFHRelayId = GetSwitchDFHRelayId(switchId); /*ȡDFH̵ID*/ - if (REVERSE_MODE_SHADOW == chTiocSysMode) - { - /*ӰģʽʹӰģʽ̵*/ - DbRelayId = GetSwitchShadowDbRelayId(switchId); - FbRelayId = GetSwitchShadowFbRelayId(switchId); - ZDbRelayId = DbRelayId; - ZFbRelayId = FbRelayId; - DFHRelayId = 0u; - } /*µλ*/ YcRelayState = GetRelayCollState(YcRelayId); /*ʲټ̵״̬*/ DbRelayState = GetRelayCollState(DbRelayId); /*̵״̬*/ @@ -7125,7 +7150,6 @@ void PsdRelayToDeviceStateProc(void) { ; } - } } @@ -7313,7 +7337,11 @@ UINT8 PsdDeviceToRelayStateProc(void) UINT8 relayFlag = CI_ERROR; UINT8 chKeepCloseType = FUNC_SWITCH_OFF; UINT8 cFuncRet = 0u; - + UINT16 trainZeroSpeedRelayId = 0U; /*гټ̵ID*/ + UINT8 chTrainZeroSpeedState = 0U; /*״̬*/ + UINT32 curCycle = 0U; + UINT16 wReverseBoard = 0U; + UINT8 chReverseState = 0U; vobcInterFlag = GetCiFunctionSwitchConfig(VOBC_INTERFACE_IDENTITY);/*ȡVOBCӿڱʶ*/ @@ -7324,246 +7352,302 @@ UINT8 PsdDeviceToRelayStateProc(void) psdVirtualState = GetPsdVirtualAttribute(psdId); if (PSD_VIRTUAL_ATTR_NO == psdVirtualState) {/*Ųؼ̵*/ - psdEditGroupInfo = GetPsdEditGroupInfoFromPsdData(psdId); - /*鶨ͳһ*/ - if ((LINE_HLHT == vobcInterFlag) || (LINE_FAOHLHT == vobcInterFlag) || (LINE_FAOHLHT_ONESELF == vobcInterFlag) || (LINE_FAOHLHT_ONESELFSECOND == vobcInterFlag)) + wReverseBoard = GetPsdRelateReverseBoardId(psdId); + chReverseState = GetReverseBoardState(wReverseBoard); + if((0U == wReverseBoard)||(REVERSE_STATE_NEW_SYSTEM == chReverseState)) { - /*ͨFAOͨıϢVOBC*/ - } - else if (LINE_FAO == vobcInterFlag) - { - if (PSD_FOUR_EDIT_GROUP_FAO_YF == psdEditGroupInfo)/*෿4*/ + psdEditGroupInfo = GetPsdEditGroupInfoFromPsdData(psdId); + /*鶨ͳһ*/ + if ((LINE_HLHT == vobcInterFlag) || (LINE_FAOHLHT == vobcInterFlag) || (LINE_FAOHLHT_ONESELF == vobcInterFlag) || (LINE_FAOHLHT_ONESELFSECOND == vobcInterFlag)) { - psdEditGroupInfo = PSD_FOUR_EDIT_GROUP; + /*ͨFAOͨıϢVOBC*/ } - else if (PSD_SIX_EDIT_GROUP_FAO_YF == psdEditGroupInfo)/*෿6*/ + else if (LINE_FAO == vobcInterFlag) { - psdEditGroupInfo = PSD_SIX_EDIT_GROUP; + if (PSD_FOUR_EDIT_GROUP_FAO_YF == psdEditGroupInfo)/*෿4*/ + { + psdEditGroupInfo = PSD_FOUR_EDIT_GROUP; + } + else if (PSD_SIX_EDIT_GROUP_FAO_YF == psdEditGroupInfo)/*෿6*/ + { + psdEditGroupInfo = PSD_SIX_EDIT_GROUP; + } + else + { + /*Ϣ*/ + } } else { - /*Ϣ*/ + /*·Ϣdo nothing*/ } - } - else - { - /*·Ϣdo nothing*/ - } - if (PSD_FOUR_EDIT_GROUP == psdEditGroupInfo) - {/*ı*/ - psdKMRelayId = GetFourGroupPsdOpenDrvRelayId(psdId); - } - else if (PSD_SIX_EDIT_GROUP == psdEditGroupInfo) - {/**/ - psdKMRelayId = GetSixGroupPsdOpenDrvRelayId(psdId); - } - else if (PSD_EIGHT_EDIT_GROUP == psdEditGroupInfo) - {/*˱*/ - psdKMRelayId = GetEightGroupPsdOpenDrvRelayId(psdId); - } - else if (PSD_THREE_EDIT_GROUP == psdEditGroupInfo) - { - /**/ - psdKMRelayId = GetThreeGroupPsdOpenDrvRelayId(psdId); - } - else - {/*Ч*/ - psdKMRelayId = 0u; - } - psdGMRelayId = GetPsdCloseDriveRelayId(psdId); - psdDriveState = GetPsdDriveState(psdId); - if (PSD_DRIVE_STATE_CLOSE == psdDriveState)/*Ϊ*/ - { - relayFlag = SetRelayDriveState(psdGMRelayId, RELAY_DRIVE_STATE_UP); - if (CI_ERROR == relayFlag) - {/*ż̵*/ - reVal = CI_ERROR; + if (PSD_FOUR_EDIT_GROUP == psdEditGroupInfo) + {/*ı*/ + psdKMRelayId = GetFourGroupPsdOpenDrvRelayId(psdId); + } + else if (PSD_SIX_EDIT_GROUP == psdEditGroupInfo) + {/**/ + psdKMRelayId = GetSixGroupPsdOpenDrvRelayId(psdId); + } + else if (PSD_EIGHT_EDIT_GROUP == psdEditGroupInfo) + {/*˱*/ + psdKMRelayId = GetEightGroupPsdOpenDrvRelayId(psdId); + } + else if (PSD_THREE_EDIT_GROUP == psdEditGroupInfo) + { + /**/ + psdKMRelayId = GetThreeGroupPsdOpenDrvRelayId(psdId); } else - { - tmpPsdKMRelayId = GetFourGroupPsdOpenDrvRelayId(psdId); - if (tmpPsdKMRelayId > 0u) - { - relayFlag = SetRelayDriveState(tmpPsdKMRelayId, RELAY_DRIVE_STATE_DOWN); - /*пż̵*/ - if (CI_ERROR == relayFlag) - {/*ż̵*/ - reVal = CI_ERROR; - } - - } - tmpPsdKMRelayId = GetSixGroupPsdOpenDrvRelayId(psdId); - if (tmpPsdKMRelayId > 0u) - { - relayFlag = SetRelayDriveState(tmpPsdKMRelayId, RELAY_DRIVE_STATE_DOWN); - /*пż̵*/ - if (CI_ERROR == relayFlag) - {/*ż̵*/ - reVal = CI_ERROR; - } - } - - - tmpPsdKMRelayId = GetEightGroupPsdOpenDrvRelayId(psdId); - if (tmpPsdKMRelayId > 0u) - { - /*пż̵*/ - relayFlag = SetRelayDriveState(tmpPsdKMRelayId, RELAY_DRIVE_STATE_DOWN); - if (CI_ERROR == relayFlag) - {/*ż̵*/ - reVal = CI_ERROR; - } - } - tmpPsdKMRelayId = GetThreeGroupPsdOpenDrvRelayId(psdId); - if (tmpPsdKMRelayId > 0u) - { - /*пż̵*/ - relayFlag = SetRelayDriveState(tmpPsdKMRelayId, RELAY_DRIVE_STATE_DOWN); - if (CI_ERROR == relayFlag) - {/*ż̵*/ - reVal = CI_ERROR; - } - } - + {/*Ч*/ + psdKMRelayId = 0u; } - } - else if (PSD_DRIVE_STATE_OPEN == psdDriveState)/*Ϊ*/ - { - if (0u != psdKMRelayId) - {/*ȡ̵Ч*/ - /*޸ǰʱӦVOBCĿPSDЧ*/ - /*޸ĺ󣺶ʱжǷ״̬仯*/ - relayFlag = SetRelayDriveState(psdGMRelayId, RELAY_DRIVE_STATE_DOWN); + psdGMRelayId = GetPsdCloseDriveRelayId(psdId); + psdDriveState = GetPsdDriveState(psdId); + if (PSD_DRIVE_STATE_CLOSE == psdDriveState)/*Ϊ*/ + { + relayFlag = SetRelayDriveState(psdGMRelayId, RELAY_DRIVE_STATE_UP); if (CI_ERROR == relayFlag) {/*ż̵*/ reVal = CI_ERROR; } else { - relayFlag = SetRelayDriveState(psdKMRelayId, RELAY_DRIVE_STATE_UP); + tmpPsdKMRelayId = GetFourGroupPsdOpenDrvRelayId(psdId); + if (tmpPsdKMRelayId > 0u) + { + relayFlag = SetRelayDriveState(tmpPsdKMRelayId, RELAY_DRIVE_STATE_DOWN); + /*пż̵*/ + if (CI_ERROR == relayFlag) + {/*ż̵*/ + reVal = CI_ERROR; + } + + } + tmpPsdKMRelayId = GetSixGroupPsdOpenDrvRelayId(psdId); + if (tmpPsdKMRelayId > 0u) + { + relayFlag = SetRelayDriveState(tmpPsdKMRelayId, RELAY_DRIVE_STATE_DOWN); + /*пż̵*/ + if (CI_ERROR == relayFlag) + {/*ż̵*/ + reVal = CI_ERROR; + } + } + + + tmpPsdKMRelayId = GetEightGroupPsdOpenDrvRelayId(psdId); + if (tmpPsdKMRelayId > 0u) + { + /*пż̵*/ + relayFlag = SetRelayDriveState(tmpPsdKMRelayId, RELAY_DRIVE_STATE_DOWN); + if (CI_ERROR == relayFlag) + {/*ż̵*/ + reVal = CI_ERROR; + } + } + tmpPsdKMRelayId = GetThreeGroupPsdOpenDrvRelayId(psdId); + if (tmpPsdKMRelayId > 0u) + { + /*пż̵*/ + relayFlag = SetRelayDriveState(tmpPsdKMRelayId, RELAY_DRIVE_STATE_DOWN); + if (CI_ERROR == relayFlag) + {/*ż̵*/ + reVal = CI_ERROR; + } + } + + } + } + else if (PSD_DRIVE_STATE_OPEN == psdDriveState)/*Ϊ*/ + { + if (0u != psdKMRelayId) + {/*ȡ̵Ч*/ + /*޸ǰʱӦVOBCĿPSDЧ*/ + /*޸ĺ󣺶ʱжǷ״̬仯*/ + relayFlag = SetRelayDriveState(psdGMRelayId, RELAY_DRIVE_STATE_DOWN); if (CI_ERROR == relayFlag) - {/*ż̵*/ + {/*ż̵*/ reVal = CI_ERROR; } + else + { + relayFlag = SetRelayDriveState(psdKMRelayId, RELAY_DRIVE_STATE_UP); + if (CI_ERROR == relayFlag) + {/*ż̵*/ + reVal = CI_ERROR; + } + } + + } - - } - } - else if (PSD_DRIVE_STATE_INVALID == psdDriveState) - {/*Ч*/ - chKeepCloseType = GetCiFunctionSwitchConfig(FUNC_PSD_KEEP_CLOSE_TYPE); - if (FUNC_SWITCH_ON == chKeepCloseType) - { - /*ȡPSD򿪹ر״̬*/ - cFuncRet = GetPsdState(psdId); - if (PSD_STATE_OPEN == cFuncRet) + else if (PSD_DRIVE_STATE_INVALID == psdDriveState) + {/*Ч*/ + chKeepCloseType = GetCiFunctionSwitchConfig(FUNC_PSD_KEEP_CLOSE_TYPE); + if (FUNC_SWITCH_ON == chKeepCloseType) { - ctmpPsdGMRelayState = RELAY_DRIVE_STATE_DOWN; - ctmpPsdKMRelayState = RELAY_DRIVE_STATE_UP; + /*ȡPSD򿪹ر״̬*/ + cFuncRet = GetPsdState(psdId); + if (PSD_STATE_OPEN == cFuncRet) + { + ctmpPsdGMRelayState = RELAY_DRIVE_STATE_DOWN; + ctmpPsdKMRelayState = RELAY_DRIVE_STATE_UP; + } + else + { + ctmpPsdGMRelayState = RELAY_DRIVE_STATE_UP ; + ctmpPsdKMRelayState = RELAY_DRIVE_STATE_DOWN; + } + + } + relayFlag = SetRelayDriveState(psdGMRelayId, ctmpPsdGMRelayState); + + if (CI_ERROR == relayFlag) + {/*ż̵*/ + reVal = CI_ERROR; } else { - ctmpPsdGMRelayState = RELAY_DRIVE_STATE_UP ; - ctmpPsdKMRelayState = RELAY_DRIVE_STATE_DOWN; + tmpPsdKMRelayId = GetFourGroupPsdOpenDrvRelayId(psdId); + if (tmpPsdKMRelayId > 0u) + { + /*пż̵*/ + relayFlag = SetRelayDriveState(tmpPsdKMRelayId, ctmpPsdKMRelayState); + if (CI_ERROR == relayFlag) + {/*ż̵*/ + reVal = CI_ERROR; + } + + } + tmpPsdKMRelayId = GetSixGroupPsdOpenDrvRelayId(psdId); + if (tmpPsdKMRelayId > 0u) + { + /*пż̵*/ + relayFlag = SetRelayDriveState(tmpPsdKMRelayId, ctmpPsdKMRelayState); + if (CI_ERROR == relayFlag) + {/*ż̵*/ + reVal = CI_ERROR; + } + } + + + tmpPsdKMRelayId = GetEightGroupPsdOpenDrvRelayId(psdId); + if (tmpPsdKMRelayId > 0u) + { + /*пż̵*/ + relayFlag = SetRelayDriveState(tmpPsdKMRelayId, ctmpPsdKMRelayState); + if (CI_ERROR == relayFlag) + {/*ż̵*/ + reVal = CI_ERROR; + } + } + tmpPsdKMRelayId = GetThreeGroupPsdOpenDrvRelayId(psdId); + if (tmpPsdKMRelayId > 0u) + { + /*пż̵*/ + relayFlag = SetRelayDriveState(tmpPsdKMRelayId, ctmpPsdKMRelayState); + if (CI_ERROR == relayFlag) + {/*ż̵*/ + reVal = CI_ERROR; + } + } } - - } - relayFlag = SetRelayDriveState(psdGMRelayId, ctmpPsdGMRelayState); - - if (CI_ERROR == relayFlag) - {/*ż̵*/ - reVal = CI_ERROR; } else - { - tmpPsdKMRelayId = GetFourGroupPsdOpenDrvRelayId(psdId); - if (tmpPsdKMRelayId > 0u) - { - /*пż̵*/ - relayFlag = SetRelayDriveState(tmpPsdKMRelayId, ctmpPsdKMRelayState); - if (CI_ERROR == relayFlag) - {/*ż̵*/ - reVal = CI_ERROR; - } - - } - tmpPsdKMRelayId = GetSixGroupPsdOpenDrvRelayId(psdId); - if (tmpPsdKMRelayId > 0u) - { - /*пż̵*/ - relayFlag = SetRelayDriveState(tmpPsdKMRelayId, ctmpPsdKMRelayState); - if (CI_ERROR == relayFlag) - {/*ż̵*/ - reVal = CI_ERROR; - } - } - - - tmpPsdKMRelayId = GetEightGroupPsdOpenDrvRelayId(psdId); - if (tmpPsdKMRelayId > 0u) - { - /*пż̵*/ - relayFlag = SetRelayDriveState(tmpPsdKMRelayId, ctmpPsdKMRelayState); - if (CI_ERROR == relayFlag) - {/*ż̵*/ - reVal = CI_ERROR; - } - } - tmpPsdKMRelayId = GetThreeGroupPsdOpenDrvRelayId(psdId); - if (tmpPsdKMRelayId > 0u) - { - /*пż̵*/ - relayFlag = SetRelayDriveState(tmpPsdKMRelayId, ctmpPsdKMRelayState); - if (CI_ERROR == relayFlag) - {/*ż̵*/ - reVal = CI_ERROR; - } - } + {/*Ӧֵֵ*/ + reVal = CI_ERROR; } - } - else - {/*Ӧֵֵ*/ - reVal = CI_ERROR; - } - if ((LINE_FAOHLHT == vobcInterFlag)||(LINE_CC == vobcInterFlag) || (LINE_FAOHLHT_ONESELF == vobcInterFlag) || (LINE_FAOHLHT_ONESELFSECOND == vobcInterFlag)) - {/*ǰֻлͨFAO·м϶̽⹦*/ - /*VOBC϶ֹ̽ͣ϶̽Ӧ̵*/ - startJXTCRelayId = GetPsdDetStartRelayId(psdId); /*ȡ϶̵̽ID*/ - stopJXTCRelayId = GetPsdDetStopRelayId(psdId); /*ȡֹͣ϶̵̽ID*/ - JXCTInterfaceType = GetCiFunctionSwitchConfig(FUNC_JXTC_INTERFACE_MODE);/*ȡӿڷʽ*/ - /*϶̵̽IDЧ*/ - if ((0u != startJXTCRelayId) && (0u != stopJXTCRelayId)) - { - /**/ - if (FUNC_SWITCH_ON == JXCTInterfaceType) + if ((LINE_FAOHLHT == vobcInterFlag)||(LINE_CC == vobcInterFlag) || (LINE_FAOHLHT_ONESELF == vobcInterFlag) || (LINE_FAOHLHT_ONESELFSECOND == vobcInterFlag)) + {/*ǰֻлͨFAO·м϶̽⹦*/ + /*VOBC϶ֹ̽ͣ϶̽Ӧ̵*/ + startJXTCRelayId = GetPsdDetStartRelayId(psdId); /*ȡ϶̵̽ID*/ + stopJXTCRelayId = GetPsdDetStopRelayId(psdId); /*ȡֹͣ϶̵̽ID*/ + JXCTInterfaceType = GetCiFunctionSwitchConfig(FUNC_JXTC_INTERFACE_MODE);/*ȡӿڷʽ*/ + /*϶̵̽IDЧ*/ + if ((0u != startJXTCRelayId) && (0u != stopJXTCRelayId)) { - /*ֹͣ*/ - ProcessJXTCPulseInterfStartDrv(startJXTCRelayId, stopJXTCRelayId, psdId); - ProcessJXTCPulseInterfStopDrv(startJXTCRelayId, stopJXTCRelayId, psdId); - - } - /*ƽģʽ*/ - else - { - /* VobcֹͣȥӦ̵*/ - JXTCStartState = GetStartDetectionState(psdId); - JXTCStopState = GetStopDetectionState(psdId); - if (JXTC_START_DETECTION_YES == JXTCStartState) + /**/ + if (FUNC_SWITCH_ON == JXCTInterfaceType) { - if (0u == GetStartDetectionCycNum(psdId)) - {/*δʱ̵̽*/ - SetStartDetectionCycNum(psdId, Get2oo2CurCycleNum()); - } - relayFlag = SetRelayDriveState(startJXTCRelayId, RELAY_DRIVE_STATE_UP); - if (CI_ERROR == relayFlag) - {/*̵̽*/ - reVal = CI_ERROR; + /*ֹͣ*/ + ProcessJXTCPulseInterfStartDrv(startJXTCRelayId, stopJXTCRelayId, psdId); + ProcessJXTCPulseInterfStopDrv(startJXTCRelayId, stopJXTCRelayId, psdId); + + } + /*ƽģʽ*/ + else + { + /* VobcֹͣȥӦ̵*/ + JXTCStartState = GetStartDetectionState(psdId); + JXTCStopState = GetStopDetectionState(psdId); + if (JXTC_START_DETECTION_YES == JXTCStartState) + { + if (0u == GetStartDetectionCycNum(psdId)) + {/*δʱ̵̽*/ + SetStartDetectionCycNum(psdId, Get2oo2CurCycleNum()); + } + relayFlag = SetRelayDriveState(startJXTCRelayId, RELAY_DRIVE_STATE_UP); + if (CI_ERROR == relayFlag) + {/*̵̽*/ + reVal = CI_ERROR; + } + else + { + relayFlag = SetRelayDriveState(stopJXTCRelayId, RELAY_DRIVE_STATE_DOWN); + if (CI_ERROR == relayFlag) + {/*̵ֹͣ̽*/ + reVal = CI_ERROR; + } + } } else { + SetStartDetectionCycNum(psdId, 0u); /*϶̽⿪ʼʱ*/ + relayFlag = SetRelayDriveState(startJXTCRelayId, RELAY_DRIVE_STATE_DOWN); + if (CI_ERROR == relayFlag) + {/*̵̽*/ + reVal = CI_ERROR; + } + } + + /*ֹͣ϶̵̽IDЧ*/ + if (JXTC_STOP_DETECTION_YES == JXTCStopState) + { /*ֹͣ̽״̬ʱ̵ֹͣ̽*/ + if (0u == GetStopDetectionCycNum(psdId)) + {/*δʱ̵ֹͣ̽*/ + SetStopDetectionCycNum(psdId, Get2oo2CurCycleNum()); + } + else + { + + } + relayFlag = SetRelayDriveState(stopJXTCRelayId, RELAY_DRIVE_STATE_UP); + if (CI_ERROR == relayFlag) + {/*̵ֹͣ̽*/ + reVal = CI_ERROR; + } + else + { + relayFlag = SetRelayDriveState(startJXTCRelayId, RELAY_DRIVE_STATE_DOWN); + if (CI_ERROR == relayFlag) + {/*̵̽*/ + reVal = CI_ERROR; + } + } + } + else + { + if (CI_TIME_OUT == SystemOverTimeCheck(GetStopDetectionCycNum(psdId), GetwJXTCStopDetectTime())) + { + SetStopDetectionCycNum(psdId, 0u); /*϶ֹ̽ͣʱ*/ + } + else + { + /*δʱ䲻*/ + } relayFlag = SetRelayDriveState(stopJXTCRelayId, RELAY_DRIVE_STATE_DOWN); if (CI_ERROR == relayFlag) {/*̵ֹͣ̽*/ @@ -7571,93 +7655,121 @@ UINT8 PsdDeviceToRelayStateProc(void) } } } - else - { - SetStartDetectionCycNum(psdId, 0u); /*϶̽⿪ʼʱ*/ - relayFlag = SetRelayDriveState(startJXTCRelayId, RELAY_DRIVE_STATE_DOWN); + } + + vobcDoorStateRelayId = GetPsdDoorStateRelayId(psdId); /*ȡŹ״̵̬ID*/ + if (0u != vobcDoorStateRelayId) + {/*ȡŹ״̵̬IDЧ*/ + doorState = GetVOBCDoorState(psdId); + if (PSD_DOOR_CLOSEDANDLOCKED_VALID == doorState) + {/*Ź״̬Ϊر*/ + relayFlag = SetRelayDriveState(vobcDoorStateRelayId, RELAY_DRIVE_STATE_UP); if (CI_ERROR == relayFlag) - {/*̵̽*/ + {/*Źż̵*/ reVal = CI_ERROR; } } - - /*ֹͣ϶̵̽IDЧ*/ - if (JXTC_STOP_DETECTION_YES == JXTCStopState) - { /*ֹͣ̽״̬ʱ̵ֹͣ̽*/ - if (0u == GetStopDetectionCycNum(psdId)) - {/*δʱ̵ֹͣ̽*/ - SetStopDetectionCycNum(psdId, Get2oo2CurCycleNum()); - } - else - { - - } - relayFlag = SetRelayDriveState(stopJXTCRelayId, RELAY_DRIVE_STATE_UP); + else if (PSD_DOOR_CLOSEDANDLOCKED_INVALID == doorState) + {/*Ź״̬Ϊǹر*/ + relayFlag = SetRelayDriveState(vobcDoorStateRelayId, RELAY_DRIVE_STATE_DOWN); if (CI_ERROR == relayFlag) - {/*̵ֹͣ̽*/ + {/*ֹͣŹż̵*/ reVal = CI_ERROR; } - else - { - relayFlag = SetRelayDriveState(startJXTCRelayId, RELAY_DRIVE_STATE_DOWN); + } + else + { + /*Ź״̬Ч޲̵*/ + } + } + /*վ̨ͣȵƴ*/ + StationCearPassenagerProcess(psdId); + /*by cgh ɶ--ȷ䷢ťָʾƴ*/ + PsdCleFarePDBFlashProcess(psdId); + /*ɶ132730ٿ/ٹŰťʾƴ*/ + PsdOpenAndCloseBsdProc(psdId); + /*by cgh Ƶʹ*/ + PsdVideoQkDriveStateProc(psdId); + } + else if (LINE_HLHT == vobcInterFlag) + {/*3 ϶̵̽*/ + trainZeroSpeedRelayId = GetPsdDetStartRelayId(psdId); /*ȡгټ̵ID̵̽*/ + stopJXTCRelayId = GetPsdDetStopRelayId(psdId); /*ȡֹͣ϶̵̽ID*/ + JXCTInterfaceType = GetCiFunctionSwitchConfig(FUNC_JXTC_INTERFACE_MODE);/*ȡӿڷʽ*/ + /*϶̵̽IDЧ*/ + if ((0u != trainZeroSpeedRelayId) && (0u != stopJXTCRelayId)) + { + /**/ + if (FUNC_SWITCH_ON == JXCTInterfaceType) + { + /*3 ϶̽ؼ̵ƽʽ*/ + } + /*ƽģʽ*/ + else + { + chTrainZeroSpeedState = GetTrainZeroSpeedState(psdId); + JXTCStopState = GetStopDetectionState(psdId); + if (PSD_TRAIN_ZERO_SPEED_NO == chTrainZeroSpeedState) + {/*г*/ + relayFlag = SetRelayDriveState(trainZeroSpeedRelayId, RELAY_DRIVE_STATE_UP); /*ټ̵*/ if (CI_ERROR == relayFlag) - {/*̵̽*/ + { reVal = CI_ERROR; } + else + { + /**/ + } + } + else + {/*г*/ + relayFlag = SetRelayDriveState(trainZeroSpeedRelayId, RELAY_DRIVE_STATE_DOWN); /*ټ̵*/ + if (CI_ERROR == relayFlag) + { + reVal = CI_ERROR; + } + else + { + /**/ + } + } + + /*ֹͣ϶̵̽IDЧ*/ + if (JXTC_STOP_DETECTION_YES == JXTCStopState) + { /*ֹͣ̽״̬ʱ̵ֹͣ̽*/ + relayFlag = SetRelayDriveState(stopJXTCRelayId, RELAY_DRIVE_STATE_UP); /*̵ֹͣ̽*/ + if (CI_ERROR == relayFlag) + { + reVal = CI_ERROR; + } + else + { + /**/ + } + } + else + { + relayFlag = SetRelayDriveState(stopJXTCRelayId, RELAY_DRIVE_STATE_DOWN); /*̵ֹͣ̽*/ + if (CI_ERROR == relayFlag) + { + reVal = CI_ERROR; + } + else + { + /**/ + } } } - else - { - if (CI_TIME_OUT == SystemOverTimeCheck(GetStopDetectionCycNum(psdId), GetwJXTCStopDetectTime())) - { - SetStopDetectionCycNum(psdId, 0u); /*϶ֹ̽ͣʱ*/ - } - else - { - /*δʱ䲻*/ - } - relayFlag = SetRelayDriveState(stopJXTCRelayId, RELAY_DRIVE_STATE_DOWN); - if (CI_ERROR == relayFlag) - {/*̵ֹͣ̽*/ - reVal = CI_ERROR; - } - } } } - - vobcDoorStateRelayId = GetPsdDoorStateRelayId(psdId); /*ȡŹ״̵̬ID*/ - if (0u != vobcDoorStateRelayId) - {/*ȡŹ״̵̬IDЧ*/ - doorState = GetVOBCDoorState(psdId); - if (PSD_DOOR_CLOSEDANDLOCKED_VALID == doorState) - {/*Ź״̬Ϊر*/ - relayFlag = SetRelayDriveState(vobcDoorStateRelayId, RELAY_DRIVE_STATE_UP); - if (CI_ERROR == relayFlag) - {/*Źż̵*/ - reVal = CI_ERROR; - } - } - else if (PSD_DOOR_CLOSEDANDLOCKED_INVALID == doorState) - {/*Ź״̬Ϊǹر*/ - relayFlag = SetRelayDriveState(vobcDoorStateRelayId, RELAY_DRIVE_STATE_DOWN); - if (CI_ERROR == relayFlag) - {/*ֹͣŹż̵*/ - reVal = CI_ERROR; - } - } - else - { - /*Ź״̬Ч޲̵*/ - } + else + { + /**/ } - /*վ̨ͣȵƴ*/ - StationCearPassenagerProcess(psdId); - /*by cgh ɶ--ȷ䷢ťָʾƴ*/ - PsdCleFarePDBFlashProcess(psdId); - /*ɶ132730ٿ/ٹŰťʾƴ*/ - PsdOpenAndCloseBsdProc(psdId); - /*by cgh Ƶʹ*/ - PsdVideoQkDriveStateProc(psdId); + } + else + { + ;/*еҷϵͳЧм̵Ч*/ } } else @@ -11529,6 +11641,8 @@ void ConnectLineRelayToDevStateProc(void) UINT8 DxrelayColleState = 0u; OcConnetDataCfgStruct* pOcConnetDataCfgStru = NULL; UINT8 chBlocOpenColor = 0U; + UINT16 wFirstDsRealy = 0U; + UINT8 chFirstDsColleState = 0U; /*ȡϢ*/ ocConnetDataDevNum = GetOcConnetDataDevNum(); @@ -11555,67 +11669,85 @@ void ConnectLineRelayToDevStateProc(void) LxrelayId = GetSignalLxRelayId(devId); YxrelayId = GetSignalYxRelayId(devId); DxrelayId = GetSignalDxRelayId(devId); - + wFirstDsRealy = GetSignalFirstDsRelayId(devId); + LxrelayColleState = GetRelayCollState(LxrelayId); YxrelayColleState = GetRelayCollState(YxrelayId); DxrelayColleState = GetRelayCollState(DxrelayId); - - if (RELAY_STATE_UP == LxrelayColleState) + if ((0U < wFirstDsRealy) && (RELAY_SUM_MAX > wFirstDsRealy)) { - /*̵쳣*/ - if ((RELAY_STATE_UP == YxrelayColleState) || (RELAY_STATE_UP == DxrelayColleState)) + chFirstDsColleState = GetRelayCollState(wFirstDsRealy); + } + else + { + chFirstDsColleState = RELAY_STATE_UP; /*δDJ̵ʾɫ*/ + } + + if (RELAY_STATE_UP == chFirstDsColleState) + { + if (RELAY_STATE_UP == LxrelayColleState) { - /*ú*/ - (void)SetSignalCurColor(devId, SIGNAL_SHOWCOLOUR_RED); - } - else - { - /*ú󱸿ɫպ󱸿ʾ*/ - chBlocOpenColor = GetSignalBlockOpenColorValue(devId); - if (0U != chBlocOpenColor) + /*̵쳣*/ + if ((RELAY_STATE_UP == YxrelayColleState) || (RELAY_STATE_UP == DxrelayColleState)) { - (void)SetSignalCurColor(devId, chBlocOpenColor); + /*ú*/ + (void)SetSignalCurColor(devId, SIGNAL_SHOWCOLOUR_RED); } else { - /*ûƵ*/ - (void)SetSignalCurColor(devId, SIGNAL_SHOWCOLOUR_YELLOW); + /*ú󱸿ɫպ󱸿ʾ*/ + chBlocOpenColor = GetSignalBlockOpenColorValue(devId); + if (0U != chBlocOpenColor) + { + (void)SetSignalCurColor(devId, chBlocOpenColor); + } + else + { + /*ûƵ*/ + (void)SetSignalCurColor(devId, SIGNAL_SHOWCOLOUR_YELLOW); + } } } - } - else if (RELAY_STATE_UP == YxrelayColleState) - { - /*̵쳣*/ - if ((RELAY_STATE_UP == LxrelayColleState) || (RELAY_STATE_UP == DxrelayColleState)) + else if (RELAY_STATE_UP == YxrelayColleState) { - /*ú*/ - (void)SetSignalCurColor(devId, SIGNAL_SHOWCOLOUR_RED); + /*̵쳣*/ + if ((RELAY_STATE_UP == LxrelayColleState) || (RELAY_STATE_UP == DxrelayColleState)) + { + /*ú*/ + (void)SetSignalCurColor(devId, SIGNAL_SHOWCOLOUR_RED); + } + else + { + /*úƵ*/ + (void)SetSignalCurColor(devId, SIGNAL_SHOWCOLOUR_REDYELLOW); + } + } + else if (RELAY_STATE_UP == DxrelayColleState) + { + /*̵쳣*/ + if ((RELAY_STATE_UP == LxrelayColleState) || (RELAY_STATE_UP == YxrelayColleState)) + { + /*ú*/ + (void)SetSignalCurColor(devId, SIGNAL_SHOWCOLOUR_RED); + } + else + { + /*ð׵*/ + (void)SetSignalCurColor(devId, SIGNAL_SHOWCOLOUR_WHITE); + } } else - { - /*úƵ*/ - (void)SetSignalCurColor(devId, SIGNAL_SHOWCOLOUR_REDYELLOW); - } - } - else if (RELAY_STATE_UP == DxrelayColleState) - { - /*̵쳣*/ - if ((RELAY_STATE_UP == LxrelayColleState) || (RELAY_STATE_UP == YxrelayColleState)) { /*ú*/ (void)SetSignalCurColor(devId, SIGNAL_SHOWCOLOUR_RED); } - else - { - /*ð׵*/ - (void)SetSignalCurColor(devId, SIGNAL_SHOWCOLOUR_WHITE); - } } else { - /*ú*/ - (void)SetSignalCurColor(devId, SIGNAL_SHOWCOLOUR_RED); + /*ú*/ + (void)SetSignalCurColor(devId, SIGNAL_SHOWCOLOUR_REDBREAK); } + } } } @@ -11825,6 +11957,13 @@ void UpdateConnectDriveRelayOutput(void) UINT8 checkTimeState = CI_TIME_NO; OcConnetDataCfgStruct* pOcConnetDataCfgStru = NULL; UINT8 ciToAtsSendFlag = 0U; + UINT16 wMainRelay = 0U; + UINT16 wAckRelay = 0U; + UINT16 wCMainRelay = 0U; + UINT8 chCheckFlag = 0U; + UINT8 chSigState = 0U; + UINT16 wFirseDsRelay = 0U; + /*ȡϢ*/ ocConnetDataDevNum = GetOcConnetDataDevNum(); @@ -11857,16 +11996,22 @@ void UpdateConnectDriveRelayOutput(void) LxrelayId = GetSignalLxDrvRelayId(devId); YxrelayId = GetSignalYxDrvRelayId(devId); DxrelayId = GetSignalDxDrvRelayId(devId); - + wMainRelay = GetSignalMainDrvRelayId(devId); + wAckRelay = GetSignalAckDrvRelayId(devId); + wCMainRelay = GetSignalCMainDrvRelayId(devId); + wFirseDsRelay = GetSignalFirstDsDrvRelayId(devId); /*źſ*/ if (SIGNAL_OPEN == devState) { if (SIGNAL_SHOWCOLOUR_REDYELLOW == signalColor) { - /*YXJ*/ + /*YXJ/οؼ̵*/ (void)SetRelayDriveState(YxrelayId, RELAY_DRIVE_STATE_UP); (void)SetRelayDriveState(LxrelayId, RELAY_DRIVE_STATE_DOWN); (void)SetRelayDriveState(DxrelayId, RELAY_DRIVE_STATE_DOWN); + (void)SetRelayDriveState(wAckRelay, RELAY_DRIVE_STATE_UP); + (void)SetRelayDriveState(wMainRelay, RELAY_DRIVE_STATE_DOWN); + (void)SetRelayDriveState(wCMainRelay, RELAY_DRIVE_STATE_DOWN); } else if ((SIGNAL_SHOWCOLOUR_WHITE == signalColor) || (SIGNAL_SHOWCOLOUR_RED_WHITE == signalColor)) { @@ -11874,23 +12019,55 @@ void UpdateConnectDriveRelayOutput(void) (void)SetRelayDriveState(DxrelayId, RELAY_DRIVE_STATE_UP); (void)SetRelayDriveState(LxrelayId, RELAY_DRIVE_STATE_DOWN); (void)SetRelayDriveState(YxrelayId, RELAY_DRIVE_STATE_DOWN); + (void)SetRelayDriveState(wMainRelay, RELAY_DRIVE_STATE_DOWN); + (void)SetRelayDriveState(wAckRelay, RELAY_DRIVE_STATE_DOWN); + (void)SetRelayDriveState(wCMainRelay, RELAY_DRIVE_STATE_DOWN); } else { - /*LXJ*/ + /*LXJ/οؼ̵/ؼ̵*/ (void)SetRelayDriveState(LxrelayId, RELAY_DRIVE_STATE_UP); (void)SetRelayDriveState(YxrelayId, RELAY_DRIVE_STATE_DOWN); (void)SetRelayDriveState(DxrelayId, RELAY_DRIVE_STATE_DOWN); + (void)SetRelayDriveState(wMainRelay, RELAY_DRIVE_STATE_UP); + (void)SetRelayDriveState(wAckRelay, RELAY_DRIVE_STATE_UP); + + /*ؼ̵*/ + chCheckFlag = GetCMainRelayDriveState(wCMainRelay,devId); + if (CI_SUCCESS == chCheckFlag) + { + (void)SetRelayDriveState(wCMainRelay, RELAY_DRIVE_STATE_UP); + } + else + { + (void)SetRelayDriveState(wCMainRelay, RELAY_DRIVE_STATE_DOWN); + } } } else { - /*LXJ,YXJ,DXJ*/ + /**/ (void)SetRelayDriveState(LxrelayId, RELAY_DRIVE_STATE_DOWN); (void)SetRelayDriveState(YxrelayId, RELAY_DRIVE_STATE_DOWN); (void)SetRelayDriveState(DxrelayId, RELAY_DRIVE_STATE_DOWN); + (void)SetRelayDriveState(wMainRelay, RELAY_DRIVE_STATE_DOWN); + (void)SetRelayDriveState(wAckRelay, RELAY_DRIVE_STATE_DOWN); + (void)SetRelayDriveState(wCMainRelay, RELAY_DRIVE_STATE_DOWN); } + /* 1DJ ״̬*/ + chSigState = GetSignalCurColor(devId); + + if (SIGNAL_SHOWCOLOUR_REDBREAK == chSigState) + { + (void)SetRelayDriveState(wFirseDsRelay, RELAY_DRIVE_STATE_DOWN); + } + else + { + (void)SetRelayDriveState(wFirseDsRelay, RELAY_DRIVE_STATE_UP); + } + + /*Ƿһ£һ±*/ LxCollerelayId = GetSignalLxRelayId(devId); ProcessCoupleRelayHunXianState(LxrelayId, LxCollerelayId); @@ -15286,10 +15463,24 @@ void SetAllSingleSwitchCurPosition(UINT16 switchCurSum) UINT16 switchId = 0U; /*ID*/ UINT8 belongCiId = 0U; /*ID*/ UINT16 ii = 0U; /*ѭ*/ + UINT8 jj = 0U; /*ѭ*/ UINT8 chSwitchColPos = SWITCH_POSITION_INVALID; /*ǰλ*/ UINT8 chSwitchTolPos = SWITCH_POSITION_INVALID; /*̺λ*/ UINT8 ocId = 0u; UINT8 chLocalCiOCSswitch = 0u; + UINT8 RedunCollCfg = 0u; + UINT8 chMainOcCollPos = SWITCH_POSITION_INVALID; /*ɼת޻ĵλ*/ + UINT8 chRedunOcCollPos[SWITCH_REDUN_COLL_MAX] = { 0u }; /*ɼOCɼԶĵλ*/ + UINT8 chRedunOcHunXianStt[SWITCH_REDUN_COLL_MAX] = { 0u }; /*ɼOCɼԶ״̬*/ + UINT8 chRedunCollCombineStt[SWITCH_REDUN_COLL_MAX] = { 0u }; /*ɼOCɼԶ̵״̬*/ + + for (jj = 0u; jj < SWITCH_REDUN_COLL_MAX; jj++) + { + /*ɼλóʼЧδ*/ + chRedunOcCollPos[jj] = SWITCH_POSITION_INVALID; + chRedunOcHunXianStt[jj] = RELAY_HUNXIAN_STATE_NO; + } + chLocalCiOCSswitch = GetLocalCiOCSswitch(); localCiId = GetSystemParaLocalCiId(); /*ȡID*/ for (ii = 0U; ii < switchCurSum; ii++) @@ -15305,26 +15496,653 @@ void SetAllSingleSwitchCurPosition(UINT16 switchCurSum) if ((belongCiId == localCiId) && (0U != localCiId)) { - /*ͨOCҵɼ״̬*/ - ocId = GetSwitchMainCotrolOCId(switchId); - if ((0u < ocId)|| (OC_S_OFF == chLocalCiOCSswitch)) - {/*ǰػOC-Sعر*/ - chSwitchColPos = GetOcSwitchState(switchId, ocId); - SetSwitchCollPos(switchId, chSwitchColPos); + /*ɼ*/ + RedunCollCfg = GetSwitchRedunCollCfg(switchId); + if (REDUN_COLL_YES == RedunCollCfg) + { + /*߱ɼ*/ + /*ȡת޻IJɼλ*/ + chMainOcCollPos = GetMainOcSwitchColPos(switchId); + /*¼*/ + SetSwitchMainCollPos(switchId, chMainOcCollPos); + /*ȡOCɼԶӵλ*/ + for (jj = 0u; jj < SWITCH_REDUN_COLL_MAX; jj++) + { + chRedunOcCollPos[jj] = GetRedunSwitchColPos(switchId, jj, &chRedunOcHunXianStt[jj], &chRedunCollCombineStt[jj]); + } + + /*ɼںϴ*/ + chSwitchColPos = GetSwitchRedunFusionPos(switchId, chMainOcCollPos, chRedunOcCollPos, chRedunOcHunXianStt); + + /*ɼϺͻߴ*/ + for (jj = 0u; jj < SWITCH_REDUN_COLL_MAX; jj++) + { + SwitchRedunFaultProc(switchId, jj, chRedunOcCollPos[jj]); + SwitchRedunHunXianProc(switchId, jj, chRedunOcHunXianStt[jj], chRedunCollCombineStt[jj]); + /*¼*/ + SetSwitchRedunCurrHunXianStt(switchId, jj, chRedunOcHunXianStt[jj]); + } + + /*õɼλ*/ + SetSwitchCollPos(switchId, chSwitchColPos); + /*յ̣õλ*/ chSwitchTolPos = GetSwitchCollToleratePos(switchId); - SetSingleSwitchCurPosition(switchId, chSwitchTolPos);/*õλ*/ + SetSingleSwitchCurPosition(switchId, chSwitchTolPos); } else - {/*OCSشҵǰ״̬Ŀ*/ - SetSwitchCollPos(switchId, SWITCH_POSITION_SIKAI);/*òɼλΪĿ*/ - SetSingleSwitchCurPosition(switchId, SWITCH_POSITION_SIKAI);/*õλ*/ + { + /*߱ɼֱӴת޻ȡ*/ + /*ͨOCҵɼ״̬*/ + ocId = GetSwitchMainCotrolOCId(switchId); + if ((0u < ocId) || (OC_S_OFF == chLocalCiOCSswitch)) + { + /*ǰػOC-Sعر*/ + chSwitchColPos = GetOcSwitchState(switchId, ocId); + SetSwitchCollPos(switchId, chSwitchColPos); + + chSwitchTolPos = GetSwitchCollToleratePos(switchId); + SetSingleSwitchCurPosition(switchId, chSwitchTolPos);/*õλ*/ + } + else + { + /*OCSشҵǰ״̬Ŀ*/ + SetSwitchCollPos(switchId, SWITCH_POSITION_SIKAI);/*òɼλΪĿ*/ + SetSingleSwitchCurPosition(switchId, SWITCH_POSITION_SIKAI);/*õλ*/ + } } } } } } +/* +* ɼλõǰж +* ˵UINT8 cMainOcPos ת޻λ +* UINT8 *pRedunPos OC/OC-Sɼλ +* UINT8 *pHunXianStt OC/OC-Sɼ״̬ +* ֵ ·ɼǷ񶨷λͻ CI_ERRORгͻ CI_SUCCESS޳ͻ +* עֻ֧SWITCH_REDUN_COLL_MAXΪ2޸ĺֵд +*/ +static UINT8 SwitchRedunFusionHunXianProc(UINT8 cMainOcPos, const UINT8 *pRedunPos, INOUT UINT8 *pHunXianStt) +{ + UINT8 cConflictTag = CI_ERROR; + + if ((NULL == pRedunPos) || (NULL == pHunXianStt)) + { + /*ηǷ*/ + } + else + { + cConflictTag = CI_SUCCESS; + + /*ںϻжϣöһжǰλã*/ + if (((SWITCH_POSITION_DINGWEI == cMainOcPos) && (SWITCH_POSITION_FANWEI == pRedunPos[0])) + || ((SWITCH_POSITION_FANWEI == cMainOcPos) && (SWITCH_POSITION_DINGWEI == pRedunPos[0]))) + { + /*ת޻ɼڶͻɼ*/ + pHunXianStt[0] = RELAY_HUNXIAN_STATE_YES; + } + else + { + /*nothing*/ + } + + if (((SWITCH_POSITION_DINGWEI == cMainOcPos) && (SWITCH_POSITION_FANWEI == pRedunPos[1])) + || ((SWITCH_POSITION_FANWEI == cMainOcPos) && (SWITCH_POSITION_DINGWEI == pRedunPos[1]))) + { + /*ת޻ɼڶͻɼ*/ + pHunXianStt[1] = RELAY_HUNXIAN_STATE_YES; + } + else + { + /*nothing*/ + } + + if (((SWITCH_POSITION_DINGWEI == pRedunPos[0]) && (SWITCH_POSITION_FANWEI == pRedunPos[1])) + || ((SWITCH_POSITION_FANWEI == pRedunPos[0]) && (SWITCH_POSITION_DINGWEI == pRedunPos[1]))) + { + /*¼ɼλͻ־Ч*/ + cConflictTag = CI_ERROR; + if ((SWITCH_POSITION_DINGWEI == cMainOcPos) || (SWITCH_POSITION_FANWEI == cMainOcPos)) + { + /*ת޻ͻIJɼлߣѴ*/ + } + else + { + /*·ɼ֮ڶλͻת޻ޱʾ·ɼ*/ + pHunXianStt[0] = RELAY_HUNXIAN_STATE_YES; + pHunXianStt[1] = RELAY_HUNXIAN_STATE_YES; + } + } + else + { + /*nothing*/ + } + } + + return cConflictTag; +} + +/* +* ɼλں +* ˵UINT8 cMainOcPos ת޻λ +* UINT8 *pRedunPos OC/OC-Sɼλ +* UINT8 *pHunXianStt OC/OC-Sɼ״̬ +* ֵ ںλ +* עֻ֧SWITCH_REDUN_COLL_MAXΪ2޸ĺֵд +*/ +static UINT8 GetSwitchRedunFusionPos(UINT16 switchId, UINT8 cMainOcPos, INOUT UINT8 *pRedunPos, INOUT UINT8 *pHunXianStt) +{ + UINT8 cFusionPos = SWITCH_POSITION_INVALID; + UINT8 cConflictTag = CI_ERROR; + UINT8 cSwitchLastDrvPos = 0u; + UINT32 dwDrvStartCyc = 0u; + UINT8 i = 0u; + UINT8 cHunXianRecovStt = 0u; + UINT8 RedunPosForFusion[SWITCH_REDUN_COLL_MAX] = { 0u }; + + if ((NULL == pRedunPos) || (NULL == pHunXianStt)) + { + /*ηǷ*/ + } + else + { + /*ɼжϣ⣩*/ + cConflictTag = SwitchRedunFusionHunXianProc(cMainOcPos, pRedunPos, pHunXianStt); + + /*һж*/ + cSwitchLastDrvPos = GetSwitchLastValidDrvPos(switchId); + dwDrvStartCyc = GetSwitchDriveStartCycNum(switchId); + for (i = 0u; i < SWITCH_REDUN_COLL_MAX; i++) + { + if (((SWITCH_POSITION_DINGWEI == pRedunPos[i]) && (SWITCH_DRIVE_POS_FANWEI == cSwitchLastDrvPos)) + || ((SWITCH_POSITION_FANWEI == pRedunPos[i]) && (SWITCH_DRIVE_POS_DINGWEI == cSwitchLastDrvPos))) + { + /*һ*/ + if (0u < dwDrvStartCyc) + { + /*ƶ*/ + pRedunPos[i] = SWITCH_POSITION_MOVE; + } + else + { + /*Ŀ*/ + pRedunPos[i] = SWITCH_POSITION_SIKAI; + } + } + else + { + /*δһ*/ + } + } + + /*ߵĵĿںϣþֲΪ˱߻ָڣ޷ɼںգ౨һڲɼϱ*/ + for (i = 0u; i < SWITCH_REDUN_COLL_MAX; i++) + { + cHunXianRecovStt = GetSwitchRedunHunXianRecovStt(switchId, i); + if (REDUN_HX_RECOV_ALL != cHunXianRecovStt) + { + RedunPosForFusion[i] = SWITCH_POSITION_SIKAI; + } + else + { + RedunPosForFusion[i] = pRedunPos[i]; + } + /*¼λ*/ + SetSwitchRedunCollPos(switchId, i, RedunPosForFusion[i]); + } + + /*ںϵλ*/ + cFusionPos = CalcRedunSwitchFinalFusionPos(cMainOcPos, RedunPosForFusion, cConflictTag); + } + + return cFusionPos; +} + +/* +* ɼںϵλ +* ˵UINT8 cMainOcPos ת޻λ +* UINT8 *pRedunPosForFusion OC/OC-Sɼλ +* UINT8 cConflictTag ·ɼǷ񶨷λͻ CI_ERRORгͻ CI_SUCCESS޳ͻ +* ֵ ںϵλ +* עֻ֧SWITCH_REDUN_COLL_MAXΪ2޸ĺֵд +*/ +static UINT8 CalcRedunSwitchFinalFusionPos(UINT8 cMainOcPos, const UINT8 *pRedunPosForFusion, UINT8 cConflictTag) +{ + UINT8 cFusionPos = SWITCH_POSITION_INVALID; /*ںϵλ*/ + + if (NULL == pRedunPosForFusion) + { + /*ηǷ*/ + } + else + { + if ((SWITCH_POSITION_DINGWEI == cMainOcPos) + || (SWITCH_POSITION_FANWEI == cMainOcPos) + || (SWITCH_POSITION_MOVE == cMainOcPos)) + { + /*ת޻λЧںλʹת޻λ*/ + cFusionPos = cMainOcPos; + } + else + { + /*ǷڳͻȸֵΪĿ*/ + cFusionPos = SWITCH_POSITION_SIKAI; + if (CI_SUCCESS == cConflictTag) + { + /*޳ͻһɼЧλüλ*/ + if ((SWITCH_POSITION_DINGWEI == pRedunPosForFusion[0]) || (SWITCH_POSITION_DINGWEI == pRedunPosForFusion[1])) + { + cFusionPos = SWITCH_POSITION_DINGWEI; + } + else if ((SWITCH_POSITION_FANWEI == pRedunPosForFusion[0]) || (SWITCH_POSITION_FANWEI == pRedunPosForFusion[1])) + { + cFusionPos = SWITCH_POSITION_FANWEI; + } + else if ((SWITCH_POSITION_MOVE == pRedunPosForFusion[0]) || (SWITCH_POSITION_MOVE == pRedunPosForFusion[1])) + { + cFusionPos = SWITCH_POSITION_MOVE; + } + else + { + /*Ŀ*/ + } + } + else + { + /*гͻĿ*/ + } + } + } + + return cFusionPos; +} + +/* +* ת޻ȡλ +* ˵ UINT16 switchId ID +* ֵ λ +*/ +static UINT8 GetMainOcSwitchColPos(UINT16 switchId) +{ + UINT8 ocId = 0u; + UINT8 chLocalCiOCSswitch = 0u; + UINT8 chSwitchColPos = SWITCH_POSITION_INVALID; /*ǰλ*/ + + chLocalCiOCSswitch = GetLocalCiOCSswitch(); + ocId = GetSwitchMainCotrolOCId(switchId); + if ((0u < ocId) || (OC_S_OFF == chLocalCiOCSswitch)) + { + /*ǰػOC-Sعر*/ + chSwitchColPos = GetOcSwitchState(switchId, ocId); + } + else + { + /*OCSشҵǰ״̬Ŀ*/ + chSwitchColPos = SWITCH_POSITION_SIKAI; + } + + return chSwitchColPos; +} + +/* +* ɼȡλ +* ˵UINT16 switchId ID +* UINT8 ocIndex ± +* UINT8 *pHunXianStt ״̬ +* ֵ λ +*/ +static UINT8 GetRedunSwitchColPos(UINT16 switchId, UINT8 ocIndex, UINT8 *pHunXianStt, UINT8 *pCombineStt) +{ + UINT8 chSwitchColPos = SWITCH_POSITION_INVALID; /*ǰλ*/ + UINT16 wDBJ1RelayId = 0u; /*DBJ1̵ID*/ + UINT16 wDBJ2RelayId = 0u; /*DBJ2̵ID*/ + UINT16 wFBJ1RelayId = 0u; /*FBJ1̵ID*/ + UINT16 wFBJ2RelayId = 0u; /*FBJ2̵ID*/ + UINT8 cDBJ1CollState = 0u; /*DBJ1̵״̬*/ + UINT8 cDBJ2CollState = 0u; /*DBJ2̵״̬*/ + UINT8 cFBJ1CollState = 0u; /*FBJ1̵״̬*/ + UINT8 cFBJ2CollState = 0u; /*FBJ2̵״̬*/ + UINT8 cCombineCollState = 0u; /*DBJ1/2/FBJ1/2״̬*/ + UINT32 dwSwitchDrvStartCyc = 0u; /*ʼ*/ + UINT8 cHunXianState = RELAY_HUNXIAN_STATE_NO; /*״̬*/ + + /*ȡɼ̵ID״̬*/ + wDBJ1RelayId = GetSwitchRedunDBJ1RelayId(switchId, ocIndex); + wDBJ2RelayId = GetSwitchRedunDBJ2RelayId(switchId, ocIndex); + wFBJ1RelayId = GetSwitchRedunFBJ1RelayId(switchId, ocIndex); + wFBJ2RelayId = GetSwitchRedunFBJ2RelayId(switchId, ocIndex); + cDBJ1CollState = GetRelayCollState(wDBJ1RelayId); + cDBJ2CollState = GetRelayCollState(wDBJ2RelayId); + cFBJ1CollState = GetRelayCollState(wFBJ1RelayId); + cFBJ2CollState = GetRelayCollState(wFBJ2RelayId); + cCombineCollState = SwitchRedunCombineProc(cDBJ1CollState, cDBJ2CollState, cFBJ1CollState, cFBJ2CollState); + dwSwitchDrvStartCyc = GetSwitchDriveStartCycNum(switchId); + /*¼ɼ״̬*/ + SetSwitchRedunCombineStt(switchId, ocIndex, cCombineCollState); + + switch (cCombineCollState) + { + case 0b00000011u: + /*λߡһں洦*/ + chSwitchColPos = SWITCH_POSITION_FANWEI; + break; + + case 0b00001010u: + /*ʱƶ*/ + if (0u < dwSwitchDrvStartCyc) + { + chSwitchColPos = SWITCH_POSITION_MOVE; + } + else + { + chSwitchColPos = SWITCH_POSITION_SIKAI; + } + break; + + case 0b00001100u: + /*λߡһں洦*/ + chSwitchColPos = SWITCH_POSITION_DINGWEI; + break; + + case 0b00000000u: + case 0b00000010u: + case 0b00001000u: + /**/ + chSwitchColPos = SWITCH_POSITION_SIKAI; + break; + + case 0b00000001u: + case 0b00000100u: + /*תлߣй*/ + chSwitchColPos = SWITCH_POSITION_SIKAI; + if (0u < dwSwitchDrvStartCyc) + { + cHunXianState = RELAY_HUNXIAN_STATE_YES; + } + else + { + /*nothing*/ + } + break; + + /*case 0b00000101u: + case 0b00000110u: + case 0b00000111u: + case 0b00001001u: + case 0b00001011u: + case 0b00001101u: + case 0b00001110u: + case 0b00001111u:*/ + default: + /**/ + chSwitchColPos = SWITCH_POSITION_SIKAI; + cHunXianState = RELAY_HUNXIAN_STATE_YES; + break; + } + + if ((NULL == pHunXianStt) || (NULL == pCombineStt)) + { + /*쳣*/ + } + else + { + /*ֵ*/ + *pHunXianStt = cHunXianState; + *pCombineStt = cCombineCollState; + } + + return chSwitchColPos; +} + +/* +* ɼϴ +* ˵UINT16 switchId ID +* UINT8 ocIndex ± +* UINT8 cCombineState ɼ״̬ +* ֵ +*/ +static void SwitchRedunFaultProc(UINT16 switchId, UINT8 ocIndex, UINT8 cCombineState) +{ + UINT32 dwRedunFaultStCyc = 0u; /*ɼʼں*/ + UINT32 dwCurrCycleNum = 0u; /*ǰں*/ + + dwRedunFaultStCyc = GetSwitchRedunFaultStCyc(switchId, ocIndex); + if (0u < dwRedunFaultStCyc) + { + /*֮ǰѾɼ*/ + if ((SWITCH_POSITION_DINGWEI == cCombineState) + || (SWITCH_POSITION_FANWEI == cCombineState) + || (SWITCH_POSITION_MOVE == cCombineState)) + { + /*ϻָں*/ + SetSwitchRedunFaultStCyc(switchId, ocIndex, 0u); + } + else + { + /*άֹϼ¼*/ + } + } + else + { + /*֮ǰδɼ*/ + if ((SWITCH_POSITION_DINGWEI == cCombineState) + || (SWITCH_POSITION_FANWEI == cCombineState) + || (SWITCH_POSITION_MOVE == cCombineState)) + { + /*δ*/ + } + else + { + /*ϣ¼ں*/ + dwCurrCycleNum = Get2oo2CurCycleNum(); + SetSwitchRedunFaultStCyc(switchId, ocIndex, dwCurrCycleNum); + } + } +} + +/* +* ɼߴ +* ˵UINT16 switchId ID +* UINT8 ocIndex ± +* UINT8 cCurrHunXianState ڻ״̬ +* UINT8 cCombineState ɼ״̬ +* ֵ +*/ +static void SwitchRedunHunXianProc(UINT16 switchId, UINT8 ocIndex, UINT8 cCurrHunXianState, UINT8 cCombineState) +{ + UINT32 dwJudgHunXianCycleNum = 0u; /*жϻʼں*/ + UINT32 dwRealHunXianCycleNum = 0u; /*ʵʼں*/ + UINT32 dwCurrCycleNum = 0u; /*ǰں*/ + UINT32 dwRedunCollHunXianCycCfg = 0u; /*ɼʱ*/ + UINT8 cTimeCount = 0u; /*ʱж*/ + UINT8 cLastHunXianRecovStt = 0u; /*֮ǰ״̬*/ + UINT8 cHunXianRecovStt = 0u; /*ߣָ״̬*/ + UINT32 dwSwitchDrvStartCyc = 0u; /*ʼں*/ + + dwCurrCycleNum = Get2oo2CurCycleNum(); + dwRedunCollHunXianCycCfg = GetSwitchRedunCollHunXianCycCfg(); + dwSwitchDrvStartCyc = GetSwitchDriveStartCycNum(switchId); + cLastHunXianRecovStt = GetSwitchRedunHunXianRecovStt(switchId, ocIndex); + + /*жϻж*/ + if (RELAY_HUNXIAN_STATE_YES == cCurrHunXianState) + { + /*ǰڻ*/ + dwJudgHunXianCycleNum = GetSwitchRedunJudgHunXianStCyc(switchId, ocIndex); + if (0u == dwJudgHunXianCycleNum) + { + /*ڻ֮ǰδߣ¼ʼں*/ + SetSwitchRedunJudgHunXianStCyc(switchId, ocIndex, dwCurrCycleNum); + } + else + { + /*nothing*/ + } + + if (0u == dwSwitchDrvStartCyc) + { + /*ûֱл*/ + SetSwitchRedunHunXianRecovStt(switchId, ocIndex, 0u); + } + else + { + /*ʱл*/ + cTimeCount = SystemOverTimeCheck(dwJudgHunXianCycleNum, dwRedunCollHunXianCycCfg); + if (CI_TIME_OUT == cTimeCount) + { + SetSwitchRedunHunXianRecovStt(switchId, ocIndex, 0u); + } + else + { + /*nothing*/ + } + } + } + + /*ʵж*/ + dwRealHunXianCycleNum = GetSwitchRedunRealHunXianStCyc(switchId, ocIndex); + if ((RELAY_HUNXIAN_STATE_YES == cCurrHunXianState) && (0u == dwRealHunXianCycleNum)) + { + /*ڻ֮ǰδߣ¼ʼں*/ + SetSwitchRedunRealHunXianStCyc(switchId, ocIndex, dwCurrCycleNum); + } + else if (RELAY_HUNXIAN_STATE_NO == cCurrHunXianState) + { + /*δߣջʼں*/ + SetSwitchRedunRealHunXianStCyc(switchId, ocIndex, 0u); + } + else + { + /*nothing*/ + } + + /*жϻ״̬ʱ + ֮ǰûߣʱڻ߻ָֻںţ + ڲɼ110000111010δʱ䷢ʵ*/ + /**/ + if ((RELAY_HUNXIAN_STATE_NO == cCurrHunXianState) && (0u < dwSwitchDrvStartCyc) && (REDUN_HX_RECOV_ALL == cLastHunXianRecovStt)) + { + dwJudgHunXianCycleNum = GetSwitchRedunJudgHunXianStCyc(switchId, ocIndex); + cTimeCount = SystemOverTimeCheck(dwJudgHunXianCycleNum, dwRedunCollHunXianCycCfg); + if (CI_TIME_OUT == cTimeCount) + { + /*Ѿʱ䣬߻ûֱָӻָ*/ + } + else + { + /*ûʱ䣬ջں*/ + SetSwitchRedunJudgHunXianStCyc(switchId, ocIndex, 0u); + } + } + else + { + /*nothing*/ + } + + /**/ + cHunXianRecovStt = GetSwitchRedunHunXianRecovStt(switchId, ocIndex); + if (REDUN_HX_RECOV_ALL == cHunXianRecovStt) + { + /*δжϻ*/ + } + else + { + /*жϻЧǷʵ߳ʱ*/ + dwRealHunXianCycleNum = GetSwitchRedunRealHunXianStCyc(switchId, ocIndex); + cTimeCount = SystemOverTimeCheck(dwRealHunXianCycleNum, dwRedunCollHunXianCycCfg); + if (CI_TIME_OUT == cTimeCount) + { + /*ʵ߳ʱջ߻ָ״̬*/ + SetSwitchRedunHunXianRecovStt(switchId, ocIndex, 0u); + } + else if (0b00001100u == cCombineState) + { + /*ɼλ1100*/ + SetSwitchRedunHunXianRecovStt(switchId, ocIndex, REDUN_HX_RECOV_1100); + } + else if (0b00001010u == cCombineState) + { + /*ɼƶУ1010*/ + SetSwitchRedunHunXianRecovStt(switchId, ocIndex, REDUN_HX_RECOV_1010); + } + else if (0b00000011u == cCombineState) + { + /*ɼλ0011*/ + SetSwitchRedunHunXianRecovStt(switchId, ocIndex, REDUN_HX_RECOV_0011); + } + else + { + /*nothing*/ + } + + /*ȫ߻ָ״̬Ƿ񶼲ɼ*/ + cHunXianRecovStt = GetSwitchRedunHunXianRecovStt(switchId, ocIndex); + if (REDUN_HX_RECOV_ALL == cHunXianRecovStt) + { + /*ɼȫ߻ָ״ָ̬жϻ*/ + SetSwitchRedunJudgHunXianStCyc(switchId, ocIndex, 0u); + } + else + { + /*nothing*/ + } + } +} + +/* +* ɼ̵ϴ +* ˵UINT16 cDBJ1State DBJ1״̬ +* UINT16 cDBJ1State DBJ2״̬ +* UINT16 cDBJ1State FBJ1״̬ +* UINT16 cDBJ1State FBJ2״̬ +* ֵ ̵ϣ0000|DBJ1|DBJ2|FBJ1|FBJ2 +*/ +static UINT8 SwitchRedunCombineProc(UINT8 cDBJ1State, UINT8 cDBJ2State, UINT8 cFBJ1State, UINT8 cFBJ2State) +{ + UINT8 cCombineCollState = 0u; + + /*̵״̬תΪbitλںж*/ + if (RELAY_STATE_UP == cDBJ1State) + { + cCombineCollState |= 0b00001000u; + } + else + { + /*nothing*/ + } + + if (RELAY_STATE_UP == cDBJ2State) + { + cCombineCollState |= 0b00000100u; + } + else + { + /*nothing*/ + } + + if (RELAY_STATE_UP == cFBJ1State) + { + cCombineCollState |= 0b00000010u; + } + else + { + /*nothing*/ + } + + if (RELAY_STATE_UP == cFBJ2State) + { + cCombineCollState |= 0b00000001u; + } + else + { + /*nothing*/ + } + + return cCombineCollState; +} + /* * еת޻λ * ˵ UINT16 switchCurSum @@ -16429,6 +17247,7 @@ UINT8 GetSwitchCollToleratePos(const UINT16 switchId) UINT8 switchCurPosition = 0u; UINT8 faultFlag = GetSwitchFaultState(switchId); /*ȡǷ忨*/ UINT16 switch2ndId = GetDSwitchOtherId(switchId); /*˫*/ + UINT8 cRedunCollCfg = GetSwitchRedunCollCfg(switchId); /*ȡǷɼ*/ curCycNum = Get2oo2CurCycleNum(); chSwitchColPos = GetSwitchCollPos(switchId); @@ -16438,7 +17257,7 @@ UINT8 GetSwitchCollToleratePos(const UINT16 switchId) { if (SWITCH_POSITION_SIKAI == chSwitchColPos) { - if (SWITCH_FAULT_STATE_NO == faultFlag) /*忨޹*/ + if ((SWITCH_FAULT_STATE_NO == faultFlag) || (REDUN_COLL_YES == cRedunCollCfg)) /*忨޹ϣ߱ɼ*/ { chSwitch1CollTolerateState = CheckSwitchCollTolerateState(switchId); chSwitch2CollTolerateState = CheckSwitchCollTolerateState(switch2ndId); @@ -18540,4 +19359,70 @@ void FindSwitchPostionCmdOut(UINT16 switchId) SetSwitchThisOcFindCmdCycNum(switchId, otherOcId, 0u); } +} + +/* +* µй״̬ +* ˵ void +* ֵ +* Create Fan 20260608 +*/ +void ReverseStateUpdateProc(void) +{ + UINT16 ii = 0u; /*α*/ + UINT16 wOpenRelay = 0U;/*ɼ̵*/ + UINT16 wCloseRelay = 0U; /*ղɼ̵*/ + UINT8 chReverseOpenState = 0U;/*ɼ*/ + UINT8 chReverseCloseState = 0U;/*ղɼ*/ + UINT16 wBoardNum = 0U;/*忨*/ + wOpenRelay = GetReverseSwitchOpenRelay(); + wCloseRelay = GetReverseSwitchCloseRelay(); + if ((0U == wOpenRelay) || (0U == wCloseRelay)) + { + /*Ϊδõм̵ ״̬Ϊ*/ + SetReverseSwitchState(REVERSE_STATE_NEW_SYSTEM); + for (ii = 0U; ii < REVERSE_BOARD_SUM_MAX ; ii++) + { + SetReverseBoardState(REVERSE_STATE_NEW_SYSTEM, ii); + } + } + else + { + chReverseOpenState = GetRelayCollState(wOpenRelay); + chReverseCloseState = GetRelayCollState(wCloseRelay); + if ((RELAY_STATE_UP == chReverseOpenState)&&(RELAY_STATE_DOWN == chReverseCloseState)) + { + SetReverseSwitchState(REVERSE_STATE_NEW_SYSTEM); + } + else if ((RELAY_STATE_DOWN == chReverseOpenState) && (RELAY_STATE_UP == chReverseCloseState)) + { + SetReverseSwitchState(REVERSE_STATE_OLD_SYSTEM); + } + else + { + SetReverseSwitchState(REVERSE_STATE_ABNORMAL);/*쳣״̬*/ + } + + /*忨״̬*/ + wBoardNum = GetReverseBoardNum(); + for (ii = 0U; ii < wBoardNum; ii++) + { + wOpenRelay = GetReverseBoardOpenRelay(ii);/*忨ɼ̵*/ + wCloseRelay = GetReverseBoardCloseRelay(ii);/*忨ղɼ̵*/ + chReverseOpenState = GetRelayCollState(wOpenRelay); + chReverseCloseState = GetRelayCollState(wCloseRelay); + if ((RELAY_STATE_UP == chReverseOpenState) && (RELAY_STATE_DOWN == chReverseCloseState)) + { + SetReverseBoardState(REVERSE_STATE_NEW_SYSTEM, ii); + } + else if ((RELAY_STATE_DOWN == chReverseOpenState) && (RELAY_STATE_UP == chReverseCloseState)) + { + SetReverseBoardState(REVERSE_STATE_OLD_SYSTEM, ii); + } + else + { + SetReverseBoardState(REVERSE_STATE_ABNORMAL, ii);/*쳣״̬*/ + } + } + } } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/IO/DeviceRelayDataProcess.h b/TSCP/src/APP/ciapp/IO/DeviceRelayDataProcess.h index b21e27b..a4e0a89 100644 --- a/TSCP/src/APP/ciapp/IO/DeviceRelayDataProcess.h +++ b/TSCP/src/APP/ciapp/IO/DeviceRelayDataProcess.h @@ -1193,6 +1193,14 @@ void SwitchDoubleMainProtect(UINT16 switchId); */ void FindSwitchPostionCmdOut(UINT16 switchId); +/* +* µй״̬ +* ˵ void +* ֵ +* Create Fan 20260608 +*/ +void ReverseStateUpdateProc(void); + #ifdef __cplusplus } diff --git a/TSCP/src/APP/ciapp/IO/InputDataProcess.c b/TSCP/src/APP/ciapp/IO/InputDataProcess.c index 8b7d74d..2cf8e36 100644 --- a/TSCP/src/APP/ciapp/IO/InputDataProcess.c +++ b/TSCP/src/APP/ciapp/IO/InputDataProcess.c @@ -24,6 +24,7 @@ #include "../IO/DeviceRelayDataProcess.h" #include "MSCP_APP_API.h" #include "LightTestButtonDataManage.h" +#include "InterlockLogicManage.h" extern PlatformToCiDataStruct platformToCiDataStru[PLATFORM_TO_CI_SUM_MAX]; /*վ̨CIͨݽṹ*/ extern unsigned long TimeStamp = 0u; @@ -430,12 +431,10 @@ void InputDataProcess(void) /*豸״̬*/ ProcessDeviceLogicState(); - /*LEU*/ ProcessLeuToCiData(); if (RC_WORK_MODE_TIOC == cRcWorkMode) { - /*ϵռ䵽 */ ProcessPhyOCcStateToAxisSection(); @@ -445,8 +444,10 @@ void InputDataProcess(void) /* г */ TrainMainProc(); cost[5] = MSCP_GetTick(); + /*гԴ*/ (void)TrainResRecycle(); + if (FUNC_SWITCH_ON == chSwitch) { /* гռѹμ */ @@ -521,6 +522,9 @@ void InputDataProcess(void) /**/ ProcessPsdData(); + /*ATS/ ֵ / һ֡*/ + AtsFollowUpCmdProcess(); + /*ATS*/ (void)ProcessAtsOrXianDiToCiData(); @@ -2015,6 +2019,22 @@ void ProcessVobcToCiData(void) } else if ((LINE_HLHT == chLineIdentity) || (LINE_FAO == chLineIdentity)) { + /*3гϢ*/ + if (CI_VOBC_TRAIN_ZERO_SPEED_NO == VobcToCiDataStru[ii].chTrainZeroState) + {/*г*/ + SetTrainZeroSpeedState(vobcToCiDataStru[ii].PsdData[jj].PsdId, PSD_TRAIN_ZERO_SPEED_NO); /*г*/ + SetStopDetectionState(vobcToCiDataStru[ii].PsdData[jj].PsdId, JXTC_STOP_DETECTION_NO); /*δֹͣ϶̽*/ + } + else if (CI_VOBC_TRAIN_ZERO_SPEED_YES == VobcToCiDataStru[ii].chTrainZeroState) + {/*г*/ + SetTrainZeroSpeedState(vobcToCiDataStru[ii].PsdData[jj].PsdId, PSD_TRAIN_ZERO_SPEED_YES); /*г*/ + SetStopDetectionState(vobcToCiDataStru[ii].PsdData[jj].PsdId, JXTC_STOP_DETECTION_NO); /*δֹͣ϶̽*/ + } + else + { + /*ûзϢʱ*/ + } + switch (vobcToCiDataStru[ii].PsdData[jj].CmdType) { case VOBCTOCI_COMMAND_TYPE_PSDOPEN: @@ -2050,7 +2070,7 @@ void ProcessVobcToCiData(void) default: /*ѯ*/ break; - } + } } else { @@ -4546,6 +4566,42 @@ UINT8 ProcessAtsOrXianDiToCiData(void) (void)CancelPsdExceptState(CmdDeviceId); } break; + case ATS_CMD_CONNECT_ROUTE_RELEASE_ONE: /*߽ӳ·һ*/ + belongVirCIid = GetRouteBelongVirCiId(CmdDeviceId); + OrderCheckReVal = CheckOrderWhetherDoing(virCiID, belongVirCIid, cmdType, CmdDeviceId); + if (CI_SUCCESS == OrderCheckReVal) + { + checkRetVal = AFFIRM_SUCCESS; + } + else + { + checkRetVal = AFFIRM_FAIL; + } + SetCiSendCmdBackData_OrderBack(commandId, CmdDeviceId, cmdDevType, terminalId, AtsOrXianDiToCiCmdStru[ii].CommandType, RESPONSE_FIRST, checkRetVal, virCiID); + break; + case ATS_CMD_CONNECT_ROUTE_RELEASE_TWO: /*߽ӳ·*/ + checkRetVal = CheckSecondOrderValid(commandId, CmdDeviceId, cmdDevType, terminalId, AtsOrXianDiToCiCmdStru[ii].CommandType, virCiID); + if (CI_SUCCESS == checkRetVal) + { + belongVirCIid = GetRouteBelongVirCiId(CmdDeviceId); + OrderCheckReVal = CheckOrderWhetherDoing(virCiID, belongVirCIid, cmdType, CmdDeviceId); + if (CI_SUCCESS == OrderCheckReVal) + { + checkRetVal = AFFIRM_SUCCESS; + /*߽ӳ·*/ + ConnectRouteReleaseManage(CmdDeviceId); + } + else + { + checkRetVal = AFFIRM_FAIL; + } + } + else + { + checkRetVal = AFFIRM_FAIL; + } + SetCiSendCmdBackData_OrderBack(commandId, CmdDeviceId, cmdDevType, terminalId, AtsOrXianDiToCiCmdStru[ii].CommandType, RESPONSE_SECOND, checkRetVal, virCiID); + break; default: localVirCiType = GetLocalVirCiType(virCiID); if (CI_TYPE_SCX == localVirCiType) @@ -4916,6 +4972,9 @@ void ProcessDeviceLogicState(void) /*豸̵*/ RvrsCutRlyToDvicSttPrc(); } + + /*йĵп/忨ɼ״̬*/ + ReverseStateUpdateProc(); } @@ -6445,9 +6504,14 @@ static void ProcessPsdData(void) SetStartDetectionState(psdId,JXTC_START_DETECTION_NO); SetStopDetectionState(psdId,JXTC_STOP_DETECTION_YES); } + else if(LINE_HLHT == chLineIdentity) + {/*3 HLHT·վ̨޳ֹͣ̽*/ + SetStopDetectionState(psdId, JXTC_STOP_DETECTION_YES); /*ֹͣ϶̽״̬Ϊֹͣ*/ + SetTrainZeroSpeedState(psdId, PSD_TRAIN_ZERO_SPEED_YES); /*ŷ״̬Ϊ*/ + } else { - ; + ;/*޴*/ } } else @@ -6582,7 +6646,7 @@ static void ProcessPsdData(void) } } } -#endif +#endif curPsdDrvState = GetPsdDriveState(psdId); SetPsdPreDriveState(psdId,curPsdDrvState); /*ɱPSD״̬*/ @@ -8356,6 +8420,8 @@ void ClearPsdVobcContext(const UINT16 vobcId) { ; /**/ } + /*3϶̽-CIVOBCͨжϣŷ״̬Ϊ*/ + PsdDataStru[bufIndex].chTrainZeroSpeedState = PSD_TRAIN_ZERO_SPEED_YES; } } @@ -12793,10 +12859,13 @@ void ProcessIvocToRCData(void) { /*MMIʪ죬*/ } + + SetPbtacsTrainTransState(pIvocToRcDataStru[ii].VobcId, TRAIN_COMM_STATE_GOOD); /*PBTACSͨ*/ } else { - + SetPbtacsTrainTransState(pIvocToRcDataStru[ii].VobcId, TRAIN_COMM_STATE_BAD); /*PBTACSͨжϣݲǷֽгͨ״̬*/ + /*PSDɾVOBCϢ*/ ClearPsdVobcContext(pIvocToRcDataStru[ii].VobcId); ProcessIvocLoseCom(pIvocToRcDataStru[ii]); @@ -12845,8 +12914,6 @@ static void ClearPsdData(const UINT16 psdId) UINT8 psdSum = 0u; UINT16 platformPsdId = 0u; UINT8 chRcWorkMode = 0u; - - chRcWorkMode = GetLocalRcWorkMode(); bufIndex = GetPsdConfigBufIndex(psdId); if ((0u != psdId) && (PSD_INVALID_ID != psdId)&&(PSD_SUM_MAX > bufIndex)) @@ -12857,8 +12924,7 @@ static void ClearPsdData(const UINT16 psdId) PsdDataStru[bufIndex].PsdCmd = PSD_DEFAULT_CONTROL_CMD; PsdDataStru[bufIndex].VOBCDoorState = PSD_DOOR_CLOSEDANDLOCKED_INVALID; PsdDataStru[bufIndex].psdEditGroupInfo = 0u;/*Ϣ*/ - - + if (RC_WORK_MODE_TIOC == chRcWorkMode) { SetPsdEditGroupInfoDataCC(psdId, PSD_EDIT_GROUP_DEFAULT); /*RCPSDϢΪĬֵ*/ diff --git a/TSCP/src/APP/ciapp/IO/OutputDataProcess.c b/TSCP/src/APP/ciapp/IO/OutputDataProcess.c index f270d07..d37fbb8 100644 --- a/TSCP/src/APP/ciapp/IO/OutputDataProcess.c +++ b/TSCP/src/APP/ciapp/IO/OutputDataProcess.c @@ -400,6 +400,10 @@ UINT8 GetAtsBackInfoParam(const UINT8 functionId,const UINT8 deviceStateType, co case ETYPE_COUPLINK_ROUTE_IDLE: returnValue = CI_BACK_COUPLINK_ROUTE_IDLE; /*ҽ·ޱҳ*/ break; + case ETYPE_CONNECT_ROUTE_RELEASE: + returnValue = CI_BACK_CONNECT_ROUTE_RELEASE; /*߽ӳ·*/ + break; + /*źŻϷ*/ case ETYPE_SIG_START_OPEN_STATE: @@ -1890,6 +1894,30 @@ void IndicatorStateProc(void) } } + else if (INDICATOR_TYPE_XDC_DCGDJ == devType) + { /*صع*/ + + devRelaySum = GetIndicatorRelaySum(devId); /*ȡؼ̵*/ + devRelayIdBuf = GetIndicatorRelayIdBuf(devId); /*ȡؼ̵ID buf*/ + + if ((0U == devRelaySum) || (NULL == devRelayIdBuf)) + { + SetIndicatorState(devId, INDICATOR_SHOW_YES); /*úƱ*/ + } + else + { + relayCollState = GetRelayCollState(devRelayIdBuf[0]); + if (RELAY_STATE_DOWN == relayCollState) + { /*̵*/ + + SetIndicatorState(devId, INDICATOR_SHOW_NO); /*̵*/ + } + else + { + SetIndicatorState(devId, INDICATOR_SHOW_YES); /*ú*/ + } + } + } else if (INDICATOR_TYPE_PORT_RONGSI == devType) { devRelaySum = GetIndicatorRelaySum(devId); /*ȡؼ̵*/ diff --git a/TSCP/src/APP/ciapp/Indicator/IndicatorDefine.h b/TSCP/src/APP/ciapp/Indicator/IndicatorDefine.h index 4fa2358..30f818f 100644 --- a/TSCP/src/APP/ciapp/Indicator/IndicatorDefine.h +++ b/TSCP/src/APP/ciapp/Indicator/IndicatorDefine.h @@ -67,6 +67,7 @@ #define INDICATOR_TYPE_DOWNWASH_ALLOW_PASS ((UINT8)0x29) /* ģʽϴָͬͨʾ */ #define INDICATOR_TYPE_DOWNWASH_APPLY ((UINT8)0x63) /* ģʽϴָʾ */ #define INDICATOR_TYPE_DOWNWASH_PASS_APPLY ((UINT8)0x64) /* ģʽָͨʾ */ +#define INDICATOR_TYPE_XDC_DCGDJ ((UINT8)0x65) /* ع籨ָʾ */ #define INDICATOR_TYPE_ATS_CONFIRM_RELAY_INTERFACE ((UINT8)0x27) /*̵ӿȷ״ָ̬ʾ*/ diff --git a/TSCP/src/APP/ciapp/Initial/ConfigDataReadManage.c b/TSCP/src/APP/ciapp/Initial/ConfigDataReadManage.c index 71fc38d..6448b8c 100644 --- a/TSCP/src/APP/ciapp/Initial/ConfigDataReadManage.c +++ b/TSCP/src/APP/ciapp/Initial/ConfigDataReadManage.c @@ -531,7 +531,7 @@ UINT8 ReadConfigureData(void) g_ret = ReadReverseCutConfigData(LocalCiId, gstReverseCutCfgData); if (-1 == g_ret) { - rtnVal = 28u;/*ʧ*/ + rtnVal = 28u;/*ʧ-OCݱ30*/ debug_infor_printf((const)"ReadReverseCutConfigData fail."); } else if (0 < g_ret) @@ -810,6 +810,25 @@ UINT8 ReadConfigureData(void) ; /**/ } + + if (0u == rtnVal) + { + g_ret = ReadReverseSwitchConfigData(LocalCiId, &gLocalReverseData); + if (-1 == g_ret) + { + rtnVal = 39u;/*忨ʧ-OCݱ4041*/ + debug_infor_printf((const)"ReadReverseSwitchConfigData fail."); + } + else + { + /*޲*/ + } + } + else + { + ; /**/ + } + if (0u == rtnVal) { /*ϵͳ*/ @@ -2011,6 +2030,23 @@ INT8 OcConnectConfigDataToDevStruct(SignalConfigDataStruct* pSignalCfgData, Phys pSignalCfgData[j].DxRelayId = pConnectCfgData[i].OcConnetRelayDataBuf[k].RelayId; pSignalCfgData[j].DxDrvRelayId = pConnectCfgData[i].OcConnetRelayDataBuf[k].DrvRelayId; } + else if (SIGNAL_DJ_TYPE == pConnectCfgData[i].OcConnetRelayDataBuf[k].RelayType) + { + pSignalCfgData[j].FirDsRelayId = pConnectCfgData[i].OcConnetRelayDataBuf[k].RelayId; + pSignalCfgData[j].wFirstDsDrvRelayId = pConnectCfgData[i].OcConnetRelayDataBuf[k].DrvRelayId; + } + else if (SIGNAL_MAINJ_TYPE == pConnectCfgData[i].OcConnetRelayDataBuf[k].RelayType) + { + pSignalCfgData[j].wMainDrvRelayId = pConnectCfgData[i].OcConnetRelayDataBuf[k].DrvRelayId; + } + else if (SIGNAL_ACKJ_TYPE == pConnectCfgData[i].OcConnetRelayDataBuf[k].RelayType) + { + pSignalCfgData[j].wAckDrvRelayId = pConnectCfgData[i].OcConnetRelayDataBuf[k].DrvRelayId; + } + else if (SINNAL_CMAINJ_TYPE == pConnectCfgData[i].OcConnetRelayDataBuf[k].RelayType) + { + pSignalCfgData[j].wCMainDrvRelayId = pConnectCfgData[i].OcConnetRelayDataBuf[k].DrvRelayId; + } else { ; /**/ diff --git a/TSCP/src/APP/ciapp/Initial/InitialProcess.c b/TSCP/src/APP/ciapp/Initial/InitialProcess.c index 0cba77c..85ef212 100644 --- a/TSCP/src/APP/ciapp/Initial/InitialProcess.c +++ b/TSCP/src/APP/ciapp/Initial/InitialProcess.c @@ -871,6 +871,17 @@ UINT8 InitialSwitchData(void) SwitchDataStru[switchId].belongOCData[jj].FindPostionCmd = NO_FIND_CMD; SwitchDataStru[switchId].belongOCData[jj].OutMainControlCmdCycNum = 0u; } + + for (jj = 0u; jj < SWITCH_REDUN_COLL_MAX; jj++) + { + SwitchDataStru[switchId].RedunCollData[jj].dwRedunJudgHunXianStCyc = 0u; + SwitchDataStru[switchId].RedunCollData[jj].dwRedunRealHunXianStCyc = 0u; + SwitchDataStru[switchId].RedunCollData[jj].cHunXianRecovStt = REDUN_HX_RECOV_ALL; + SwitchDataStru[switchId].RedunCollData[jj].dwRedunFaultStCyc = 0u; + SwitchDataStru[switchId].RedunCollData[jj].cCollPos = SWITCH_POSITION_INVALID; + SwitchDataStru[switchId].RedunCollData[jj].cCombineStt = 0u; + SwitchDataStru[switchId].RedunCollData[jj].cCurrHunxianStt = RELAY_HUNXIAN_STATE_NO; + } } reVal = CI_SUCCESS; return reVal; @@ -1515,6 +1526,8 @@ UINT8 InitialPsdData(void) { PsdDataStru[psdId].ibpButtonState = PSD_RELATED_BUTTON_STATE_DEFAULT; /*IBP̷ť״̬ʼ*/ } + /*ʼ״̬*/ + PsdDataStru[psdId].chTrainZeroSpeedState = PSD_TRAIN_ZERO_SPEED_YES; /**/ } reVal = CI_SUCCESS; return reVal; @@ -1717,6 +1730,8 @@ UINT8 InitialRouteData(void) RouteDataStru[routeId].chCouplinkSuccessFlag = ROUTE_COUPLINK_RESULT_NOT; /*ʼҳɹ־Ϊδյ*/ RouteDataStru[routeId].chCouplinkErrorFlag = ROUTE_COUPLINK_RESULT_NOT; /*ʼʧܱ־Ϊδյ*/ RouteDataStru[routeId].dwRouteIdleCycNum = 0U; /*·ʼں*/ + RouteDataStru[routeId].chRouteConnReleaseFlag = ROUTE_CONNECT_RELEASE_NO; /*·߽־*/ + /*ʼṹԱ*/ RouteDataStruCC[routeId].RouteId = routeId; diff --git a/TSCP/src/APP/ciapp/LightTestButtonManage/LightTestButtonDefine.h b/TSCP/src/APP/ciapp/LightTestButtonManage/LightTestButtonDefine.h index b3fb543..2c73d2d 100644 --- a/TSCP/src/APP/ciapp/LightTestButtonManage/LightTestButtonDefine.h +++ b/TSCP/src/APP/ciapp/LightTestButtonManage/LightTestButtonDefine.h @@ -20,7 +20,7 @@ #define LIGHTTESTBUTTON_LIGHT_MAX_NUM ((UINT8)13U) /* ԵƱʾ֧ */ -#define LIGHTTESTBUTTON_LIGHT_SUPPORT_MAX_NUM ((UINT8)39U) +#define LIGHTTESTBUTTON_LIGHT_SUPPORT_MAX_NUM ((UINT8)208U) /* Եưť */ #define LIGHTTESTBUTTON_BUTTON_MAX_NUM ((UINT16)70U) diff --git a/TSCP/src/APP/ciapp/LogRecord/LogRecord.c b/TSCP/src/APP/ciapp/LogRecord/LogRecord.c index e12c75c..4bd4c45 100644 --- a/TSCP/src/APP/ciapp/LogRecord/LogRecord.c +++ b/TSCP/src/APP/ciapp/LogRecord/LogRecord.c @@ -988,7 +988,27 @@ UINT8 RecordDeviceDataLog(UINT8 Flag) ShortToChar(newSwitchData[deviceId].PLockedAxisSecIdArr[jj], &outString[outStringLength]); outStringLength += 2u; } - + + outString[outStringLength] = newSwitchData[deviceId].cMainOcCollPos; + outStringLength += 1u; + + for (jj = 0u; jj < SWITCH_REDUN_COLL_MAX; jj++) + { + LongToChar(newSwitchData[deviceId].RedunCollData[jj].dwRedunJudgHunXianStCyc, &outString[outStringLength]); + outStringLength += 4u; + LongToChar(newSwitchData[deviceId].RedunCollData[jj].dwRedunRealHunXianStCyc, &outString[outStringLength]); + outStringLength += 4u; + outString[outStringLength] = newSwitchData[deviceId].RedunCollData[jj].cHunXianRecovStt; + outStringLength += 1u; + LongToChar(newSwitchData[deviceId].RedunCollData[jj].dwRedunFaultStCyc, &outString[outStringLength]); + outStringLength += 4u; + outString[outStringLength] = newSwitchData[deviceId].RedunCollData[jj].cCombineStt; + outStringLength += 1u; + outString[outStringLength] = newSwitchData[deviceId].RedunCollData[jj].cCollPos; + outStringLength += 1u; + outString[outStringLength] = newSwitchData[deviceId].RedunCollData[jj].cCurrHunxianStt; + outStringLength += 1u; + } } } else @@ -1207,6 +1227,7 @@ UINT8 RecordDeviceDataLog(UINT8 Flag) outString[outStringLength++] = newRouteData[deviceId].chRoutCouplinkFlag; /*·ұ־*/ outString[outStringLength++] = newRouteData[deviceId].chCouplinkSuccessFlag; /*·ҳɹ*/ outString[outStringLength++] = newRouteData[deviceId].chCouplinkErrorFlag; /*·ʧ*/ + outString[outStringLength++] = newRouteData[deviceId].chRouteConnReleaseFlag; /*·߽־*/ } } else @@ -1707,6 +1728,8 @@ UINT8 RecordDeviceDataLog(UINT8 Flag) outString[outStringLength++] = newPsdData[deviceId].ibpButtonState;/*IBP̷ť״̬*/ LongToChar(newPsdData[deviceId].IBPPressCycNum, &outString[outStringLength]); /*IBP̷ť*/ outStringLength += 4U; + outString[outStringLength] = newPsdData[deviceId].chTrainZeroSpeedState; /*״̬*/ + outStringLength++; } } else @@ -2456,6 +2479,12 @@ UINT8 RecordDeviceDataLog(UINT8 Flag) LongToChar(pNewTrainInfoData[deviceId].dwMinSafeHeadOffset, &outString[outStringLength]);/*ʱСǰlinkƫ*/ outStringLength += 4u; outString[outStringLength++] = pNewTrainInfoData[deviceId].chMinSafeHeadDir;/* ʱСǰ */ + + outString[outStringLength] = pNewTrainInfoData[deviceId].chPbtacsTransState; /*RCPBTACSгͨ״̬0x55-ͨ0xAA-ͨжϣ0xFF-δ֪*/ + outStringLength++; + + LongToChar(pNewTrainInfoData[deviceId].dwPbtacsTransBadCyc, &outString[outStringLength]); /*RCPBTACSгͨж*/ + outStringLength += 4U; } diff --git a/TSCP/src/APP/ciapp/LogicManage/InterlockCommonManage.c b/TSCP/src/APP/ciapp/LogicManage/InterlockCommonManage.c index f44d4c6..cf7004f 100644 --- a/TSCP/src/APP/ciapp/LogicManage/InterlockCommonManage.c +++ b/TSCP/src/APP/ciapp/LogicManage/InterlockCommonManage.c @@ -1875,8 +1875,9 @@ void SetRouteOvlpOtherCiShrFlg(const UINT16 wRouteId, const UINT16 wOverlapId,co void ClearSomeFlagDependRouteState(const UINT16 routeId) { UINT8 routeState = GetRouteState(routeId); - UINT16 startSignalId = 0u; - UINT16 EnginVehicCroCloBelongRoute = 0u; + UINT16 startSignalId = 0U; + UINT16 EnginVehicCroCloBelongRoute = 0U; + UINT8 chZrenjieFlag = 0U; /*̳ѹź·,̳ѹ״̬*/ if ((ROUTE_STATE_YUXIAN_LOCK != routeState) @@ -1925,6 +1926,17 @@ void ClearSomeFlagDependRouteState(const UINT16 routeId) { /**/ } + /*˽־Ҳʱ״̬߽־*/ + chZrenjieFlag = GetRouteZongRenJieFlag(routeId); + if ((ROUTE_ZONGRENJIE_SET_NO == chZrenjieFlag) && (ROUTE_STATE_DELAY_UNLOCK != routeState)) + { + SetRouteConnectReleaseFlag(routeId, ROUTE_CONNECT_RELEASE_NO); /*߽־*/ + } + else + { + /**/ + } + } /* diff --git a/TSCP/src/APP/ciapp/LogicManage/InterlockLogicManage.c b/TSCP/src/APP/ciapp/LogicManage/InterlockLogicManage.c index 76a1b69..77c1032 100644 --- a/TSCP/src/APP/ciapp/LogicManage/InterlockLogicManage.c +++ b/TSCP/src/APP/ciapp/LogicManage/InterlockLogicManage.c @@ -21,6 +21,7 @@ #include "LogicalRouteDataManage.h" #include "../LogicProcess/LogicalRouteLogicCheck.h" #include "../LogicManage/TradInterlockLogicManage.h" +#include "../ParsePack/ParsePackAtsData.h" #include "ParsePackZcData.h" @@ -145,6 +146,7 @@ void InterlockLogicMainProc(void) UINT8 localCiType = GetLocalCiType(); UINT8 cRcWorkMode = GetLocalRcWorkMode(); UINT8 cControlState = GetLocalCiBackUpPattern(); + signed long long cost[20] = {0U}; cost[0] = MSCP_GetTick(); if (SYSTEM_WORK_MODE_MAIN == cControlState) @@ -221,16 +223,30 @@ void InterlockLogicMainProc(void) /*Ծ߼*/ JumpLockManage(); } + else + { + if ((RC_WORK_MODE_TIOC == cRcWorkMode) && (SYSTEM_WORK_MODE_BACKUP == cControlState)) + { + /*źѿŽ·ĹԴ*/ + OpenedRouteShareResPro(); + } + else + { + /**/ + } + } + cost[3] = MSCP_GetTick(); + /*·гͷŽ߼*/ RouteTrainResUnlockManage(); + /*߼Դ*/ LogicSecResManage(); cost[4] = MSCP_GetTick(); debug_infor_printf((const)"\n JKJRelayLogicProcess :%dms RouteLogicManage:%dms LogicSecResManage:%dms JumpLockManage:%dms \n",(cost[1]-cost[0])/1000,(cost[2]-cost[1])/1000,(cost[3]-cost[2])/1000,(cost[4]-cost[3])/1000); - } @@ -4397,17 +4413,18 @@ UINT8 AutoSigRouteQuXiaoProc(const UINT16 routeId) */ void RouteZongRenJieProc(const UINT16 routeId) { - UINT8 routeState = 0u; /*·״̬*/ - UINT16 startSignalId = 0u; + UINT8 routeState = 0U; /*·״̬*/ + UINT16 startSignalId = 0U; UINT8 checkResult = CI_ERROR;/*Ƿгռ*/ - UINT16 firstOccuSecId = 0u;/*·ڷһռõID*/ - UINT8 devState = 0u; - UINT8 trainEnterSta = 0u;/*·гʻ־*/ - UINT8 checkZongRenJieResult = 0u; - UINT8 routeDelayUnlockflag = 0u; - UINT8 checkResultSecAndQXZC = 0u; /*RouteExceptLastSecOccuClrCheck˺ļ*/ - UINT8 cSignalColor = 0u; - UINT8 cSignalOpenState = 0u; + UINT16 firstOccuSecId = 0U;/*·ڷһռõID*/ + UINT8 devState = 0U; + UINT8 trainEnterSta = 0U;/*·гʻ־*/ + UINT8 checkZongRenJieResult = 0U; + UINT8 routeDelayUnlockflag = 0U; + UINT8 checkResultSecAndQXZC = 0U; /*RouteExceptLastSecOccuClrCheck˺ļ*/ + UINT8 cSignalColor = 0U; + UINT8 cSignalOpenState = 0U; + UINT8 chRouteConnectFlag = 0U; /*ȡ·ֶ̬*/ routeState = GetRouteState(routeId); /*ȡ·״̬*/ @@ -4419,143 +4436,145 @@ void RouteZongRenJieProc(const UINT16 routeId) if (SIGNAL_OPEN == cSignalOpenState) { /*źδر*/ - (void)DriveSignalClose(startSignalId); /*źŹر*/ -#if 0 - SetRouteZongRenJieCloseFlag(routeId, ROUTE_ZRJ_CLOSE_FLAG_YES); /*·źŹر˽⵼*/ -#endif - return; } else { /*źѹر*/ (void)SetRouteZongRenJieFlag(routeId, ROUTE_ZONGRENJIE_SET_NO); /*ȡ·˽־*/ -#if 0 - zrjCloseSigFlag = GetRouteZongRenJieCloseFlag(routeId); /*ȡ·˽źű־*/ - SetRouteZongRenJieCloseFlag(routeId, ROUTE_ZRJ_CLOSE_FLAG_NO); /**/ -#endif - } - checkResult = RouteAllSecOccuClearCheck(routeId, &firstOccuSecId, &devState); - trainEnterSta = GetRouteTrainEnterFlag(routeId); - - /*˽·*/ - if ((ROUTE_STATE_XUANPAI == routeState) || (ROUTE_STATE_FIRST_XUANPAI == routeState)) - { - /*·ѡŻѡ*/ - - /*ȡ·ѡ*/ - SetRouteStateManage(routeId, ROUTE_STATE_IDLE); /*-->ý·*/ - - } - else if ((ROUTE_STATE_FIRST_LOCK == routeState) || - (ROUTE_STATE_FIRST_LOCKERR == routeState) || - (ROUTE_STATE_YUXIAN_LOCK == routeState)) - { - /*·||·쳣||·Ԥ*/ - /*˽߼*/ - checkZongRenJieResult = CheckRouteZongRenJieFeasibility(routeId); - /* ȡ·ʱ*/ - routeDelayUnlockflag = GetRouteNeedDelayUnlock(routeId); - if (CI_SUCCESS == checkZongRenJieResult) + /*Ƿ߽ӳ·*/ + chRouteConnectFlag = GetRouteConnectReleaseFlag(routeId); + if (ROUTE_CONNECT_RELEASE_YES == chRouteConnectFlag) { - /*·Ҫʱ*/ - if (ROUTE_NEED_DELAY_UNLOCK == routeDelayUnlockflag) - { - /*·ռ*/ - if (CI_SUCCESS == checkResult) - { - /*-->ý·ʱ*/ - SetRouteStateManage(routeId, ROUTE_STATE_DELAY_UNLOCK); - /*·ռѹʱȫ*/ - SetRouteZongRenJieDelayType(routeId, ROUTE_ZRJ_DELAY_TYPE_IDLE); - } - else - { - /*̹*/ - SetRoutePhySecExpLockToOccupy(routeId); - SetRouteStateManage(routeId, ROUTE_STATE_AUTO_UNLOCKERR); - } - } - else - { - - if (CI_SUCCESS == checkResult) - {/*ռ*/ - SetRouteStateManage(routeId, ROUTE_STATE_IDLE); /*-->ý·*/ - } - else - { - /*̹*/ - SetRoutePhySecExpLockToOccupy(routeId); - - SetRouteStateManage(routeId, ROUTE_STATE_AUTO_UNLOCKERR); - } - } + /*ִ߽ӳ·*/ + ConnectRouteReleaseProc(routeId); } else { - /*·ȡ*/ - } - } - else if (ROUTE_STATE_NEAR_LOCKERR == routeState) - { - /*˽߼*/ - checkZongRenJieResult = CheckRouteZongRenJieFeasibility(routeId); - if (CI_SUCCESS == checkZongRenJieResult) - { - SetRouteStateManage(routeId, ROUTE_STATE_DELAY_UNLOCK); /*-->ý·ʱ*/ + checkResult = RouteAllSecOccuClearCheck(routeId, &firstOccuSecId, &devState); + trainEnterSta = GetRouteTrainEnterFlag(routeId); - if (CI_SUCCESS == checkResult) + /*˽·*/ + if ((ROUTE_STATE_XUANPAI == routeState) || (ROUTE_STATE_FIRST_XUANPAI == routeState)) { - /*·ռѹʱȫ*/ - SetRouteZongRenJieDelayType(routeId, ROUTE_ZRJ_DELAY_TYPE_IDLE); + /*·ѡŻѡ*/ + + /*ȡ·ѡ*/ + SetRouteStateManage(routeId, ROUTE_STATE_IDLE); /*-->ý·*/ + + } + else if ((ROUTE_STATE_FIRST_LOCK == routeState) || + (ROUTE_STATE_FIRST_LOCKERR == routeState) || + (ROUTE_STATE_YUXIAN_LOCK == routeState)) + { + /*·||·쳣||·Ԥ*/ + /*˽߼*/ + checkZongRenJieResult = CheckRouteZongRenJieFeasibility(routeId); + /* ȡ·ʱ*/ + routeDelayUnlockflag = GetRouteNeedDelayUnlock(routeId); + if (CI_SUCCESS == checkZongRenJieResult) + { + /*·Ҫʱ*/ + if (ROUTE_NEED_DELAY_UNLOCK == routeDelayUnlockflag) + { + /*·ռ*/ + if (CI_SUCCESS == checkResult) + { + /*-->ý·ʱ*/ + SetRouteStateManage(routeId, ROUTE_STATE_DELAY_UNLOCK); + /*·ռѹʱȫ*/ + SetRouteZongRenJieDelayType(routeId, ROUTE_ZRJ_DELAY_TYPE_IDLE); + } + else + { + /*̹*/ + SetRoutePhySecExpLockToOccupy(routeId); + SetRouteStateManage(routeId, ROUTE_STATE_AUTO_UNLOCKERR); + } + } + else + { + + if (CI_SUCCESS == checkResult) + {/*ռ*/ + SetRouteStateManage(routeId, ROUTE_STATE_IDLE); /*-->ý·*/ + } + else + { + /*̹*/ + SetRoutePhySecExpLockToOccupy(routeId); + + SetRouteStateManage(routeId, ROUTE_STATE_AUTO_UNLOCKERR); + } + } + } + else + { + /*·ȡ*/ + } + } + else if (ROUTE_STATE_NEAR_LOCKERR == routeState) + { + /*˽߼*/ + checkZongRenJieResult = CheckRouteZongRenJieFeasibility(routeId); + if (CI_SUCCESS == checkZongRenJieResult) + { + SetRouteStateManage(routeId, ROUTE_STATE_DELAY_UNLOCK); /*-->ý·ʱ*/ + + if (CI_SUCCESS == checkResult) + { + /*·ռѹʱȫ*/ + SetRouteZongRenJieDelayType(routeId, ROUTE_ZRJ_DELAY_TYPE_IDLE); + } + else + { + + /*ʱ󲿷̹һռѹ֮ǰα̹*/ + SetRouteZongRenJieDelayType(routeId, ROUTE_ZRJ_DELAY_TYPE_EXP_TO_OCCUPY); + } + } + else + { + /*·ȡ*/ + } + } + else if ((ROUTE_STATE_LEAD_LOCK == routeState) || (ROUTE_STATE_LEAD_LOCKERR == routeState)) + { /*||쳣*/ + /*˽·ԭ޸20180809 + ·ڷлһռʱ + һռʻ룬ʱ*/ + + checkResultSecAndQXZC = RouteExceptLastSecOccuClrCheck(routeId); + if (CI_SUCCESS == checkResultSecAndQXZC) + { /*οлһռ*/ + + /*˽*/ + SetRouteStateManage(routeId, ROUTE_STATE_DELAY_UNLOCK); /*-->ý·ʱ*/ + /*ʱȫ*/ + SetRouteZongRenJieDelayType(routeId, ROUTE_ZRJ_DELAY_TYPE_IDLE);/*ʱν*/ + } + else if ((ROUTE_TRAIN_ENTER_FLAG_NO == trainEnterSta) && (CI_ERROR_QXZC != checkResultSecAndQXZC)) + {/*˽·ʱȡղ̵δܽ·*/ + /*˽*/ + SetRouteStateManage(routeId, ROUTE_STATE_DELAY_UNLOCK); /*-->ý·ʱ*/ + /*ʱȫ*/ + SetRouteZongRenJieDelayType(routeId, ROUTE_ZRJ_DELAY_TYPE_IDLE);/*ʱν*/ + } + else + { + /**/ + } + } else { + /*·״̬*/ + /* ¼ */ + SetErrorData(EFUNC_ROUTE_ZRJ_DEAL, CI_DEVICE_TYPE_ROUTE, routeId, ETYPE_ROUTE_STATE, routeState, ESEND_LEVEL_ATS); + } + } - /*ʱ󲿷̹һռѹ֮ǰα̹*/ - SetRouteZongRenJieDelayType(routeId, ROUTE_ZRJ_DELAY_TYPE_EXP_TO_OCCUPY); - } - } - else - { - /*·ȡ*/ - } - } - else if ((ROUTE_STATE_LEAD_LOCK == routeState) || (ROUTE_STATE_LEAD_LOCKERR == routeState)) - { /*||쳣*/ - /*˽·ԭ޸20180809 - ·ڷлһռʱ - һռʻ룬ʱ*/ - - checkResultSecAndQXZC = RouteExceptLastSecOccuClrCheck(routeId); - if (CI_SUCCESS == checkResultSecAndQXZC) - { /*οлһռ*/ - - /*˽*/ - SetRouteStateManage(routeId, ROUTE_STATE_DELAY_UNLOCK); /*-->ý·ʱ*/ - /*ʱȫ*/ - SetRouteZongRenJieDelayType(routeId, ROUTE_ZRJ_DELAY_TYPE_IDLE);/*ʱν*/ - } - else if ((ROUTE_TRAIN_ENTER_FLAG_NO == trainEnterSta) && (CI_ERROR_QXZC != checkResultSecAndQXZC)) - {/*˽·ʱȡղ̵δܽ·*/ - /*˽*/ - SetRouteStateManage(routeId, ROUTE_STATE_DELAY_UNLOCK); /*-->ý·ʱ*/ - /*ʱȫ*/ - SetRouteZongRenJieDelayType(routeId, ROUTE_ZRJ_DELAY_TYPE_IDLE);/*ʱν*/ - } - else - { - /**/ - } - - } - else - { - /*·״̬*/ - /* ¼ */ - SetErrorData(EFUNC_ROUTE_ZRJ_DEAL, CI_DEVICE_TYPE_ROUTE, routeId, ETYPE_ROUTE_STATE, routeState, ESEND_LEVEL_ATS); } } @@ -16979,4 +16998,1152 @@ UINT8 GetLocalCiIsScx(void) ;/*CI_ERROR;*/ } return chRtn; +} + +/* +* ߽· +* ˵ const UINT16 wRouteId ·ID +* ֵ +* Create:lyj 20260603 +*/ +void ConnectRouteReleaseManage(const UINT16 wRouteId) +{ + UINT8 chLocalCiId = 0U; /*ID*/ + UINT8 chBelongCiId = 0U; /*·ID*/ + UINT8 chAutoSigRouteState = 0U; /*ԶźŽ·״̬*/ + UINT16 wQXzhaochaRelay = 0U; + UINT8 chColleState = 0U; + UINT8 chvirCiId = 0U; + UINT8 chVirCiType = 0U; + UINT8 chRouteState = 0U; + UINT8 chConnectType = 0U; + + if ((0U < wRouteId) && (ROUTE_SUM_MAX > wRouteId)) + { + chLocalCiId = GetSystemParaLocalCiId(); /*ȡID*/ + chBelongCiId = GetRouteBelongCiId(wRouteId); /*ȡ·ID*/ + if ((chLocalCiId == chBelongCiId) && (0U != chBelongCiId)) + { + chConnectType = GetRouteConnectType(wRouteId); /*ȡ·*/ + if (ROUTE_TYPE_CONNECT == chConnectType) + { + chAutoSigRouteState = GetRouteAutoSigSetState(wRouteId); /*ȡ·Զź״̬*/ + chRouteState = GetRouteState(wRouteId); + /*Զźţҽ·ʱ*/ + if ((ROUTE_AUTOSIGROUTE_NO == chAutoSigRouteState) && (ROUTE_STATE_DELAY_UNLOCK != chRouteState)) + { + wQXzhaochaRelay = GetRouteCancleZhaoChaRelayId(wRouteId); + if ((0U < wQXzhaochaRelay) && (RELAY_SUM_MAX > wQXzhaochaRelay)) + { + chColleState = GetRelayCollState(wQXzhaochaRelay); + if (RELAY_STATE_DOWN == chColleState) + { + SetRouteConnectReleaseFlag(wRouteId, ROUTE_CONNECT_RELEASE_YES); /*߽־*/ + chvirCiId = GetRouteBelongVirCiId(wRouteId); + chVirCiType = GetLocalVirCiType(chvirCiId); + /*˽⺯˽־*/ + if (CI_TYPE_CLD == chVirCiType) + { + /*˽*/ + ZongRenJieRouteM(wRouteId); + } + else + {/*˽*/ + RouteZongRenJieLogicManage(wRouteId); + } + + } + else + { + SetErrorData(EFUNC_CONNECT_ROUTE_RELEASE, CI_DEVICE_TYPE_ROUTE, wRouteId, ETYPE_CONNECT_ROUTE_RELEASE, 0U, ESEND_LEVEL_ATS); + } + } + else + { + SetErrorData(EFUNC_CONNECT_ROUTE_RELEASE, CI_DEVICE_TYPE_ROUTE, wRouteId, ETYPE_CONNECT_ROUTE_RELEASE, 0U, ESEND_LEVEL_ATS); + } + } + else + { + SetErrorData(EFUNC_CONNECT_ROUTE_RELEASE, CI_DEVICE_TYPE_ROUTE, wRouteId, ETYPE_CONNECT_ROUTE_RELEASE, 0U, ESEND_LEVEL_ATS); + } + } + else + { + SetErrorData(EFUNC_CONNECT_ROUTE_RELEASE, CI_DEVICE_TYPE_ROUTE, wRouteId, ETYPE_CONNECT_ROUTE_RELEASE, 0U, ESEND_LEVEL_ATS); + } + + } + else + { + /*-ATS*/ + } + + } + else + { + /*-ATS*/ + } + +} + + +/* +* : һ +* ˵ +* ֵ void +* BY fan 20260602 +*/ +void AtsFollowUpCmdProcess(void) +{ + /*νиϢ鼰*/ + + /**/ + FollowUpDansuoCanclMsgProc(); + /**/ + FollowUpSwitchUnFlockMsgProc(); + /*ν*/ + FollowUpSecUnFlockMsgProc(); + /*źŻ*/ + FollowUpSignalUnFlockMsgProc(); +} + +/* +* : +* ˵ +* ֵ void +* BY fan 20260602 +*/ +void FollowUpDansuoCanclMsgProc(void) +{ + AtsFollowUpCmdFstStru * strMsgFst = NULL;/*״Ϣָ*/ + AtsFollowUpCmdSndStru * strMsgSnd = NULL;/*ٴϢָ*/ + RCIFollowUpReplyStru * strCfmFst = NULL;/*״λظָ*/ + RCIFollowUpReplyStru *strCfmSnd = NULL;/*λظָ*/ + UINT8 chLocalId = 0U; + UINT32 dwCycle = 0U; + UINT8 chRtn = CI_ERROR;/*мȡ*/ + UINT8 szCrcTmp[1024] = { 0U }; + UINT16 ii = 0U; + UINT32 dwCrc = 0U;/*ϢCRC*/ + chLocalId = GetSystemParaLocalCiId(); + dwCycle = Get2oo2CurCycleNum(); + + /*ȡӦһΡ Լ״ΡٴȷϢ*/ + strMsgFst = GetAtsFollowUpMsgFst(ATS_CI_INFO_FST_DS_CANCEL); + strMsgSnd = GetAtsFollowUpMsgSnd(ATS_CI_INFO_SND_DS_CANCEL); + strCfmFst = GetAtsFollowUpReplyFst(RCI_ATS_INFO_FST_DS_CANCEL); + strCfmSnd = GetAtsFollowUpReplySnd(RCI_ATS_INFO_SND_DS_CANCEL); + if ((NULL == strMsgFst) || (NULL == strMsgSnd) + || (NULL == strCfmFst) || (NULL == strCfmSnd)) + { + ; + } + else + { + if ((strMsgFst->chFlag != FLAG_SET) && (strMsgSnd->chFlag != FLAG_SET)) + { + ; /* ûϢʲôҲ */ + } + else if (FLAG_SET == strMsgFst->chFlag) + { + /* һϢЧ */ + if (strMsgFst->dwCycle == dwCycle) + { + strCfmFst->chFlag = FLAG_SET; + strCfmFst->chTiocId = chLocalId; + strCfmFst->chRtuId = strMsgFst->chRtuId; + strCfmFst->chAtsId = strMsgFst->chAtsId; + strCfmFst->wIndex = strMsgFst->wIndex; + strCfmFst->dwTime = dwCycle; + + if ((SWITCH_SUM_MAX <= strMsgFst->wDevId)||(chLocalId != strMsgFst->chTiocId)) + {/* ȡ豸IDزڱ*/ + strCfmFst->chOpStatus = CONFIRM_FST_BELONGERROR; + } + else + { + strCfmFst->chOpStatus = FollowUpDansuoCancleCheck(strMsgFst->wDevId, ATS_CI_INFO_FST_DS_CANCEL); + } + + szCrcTmp[ii] = strMsgFst->chAtsId; + ii++; + szCrcTmp[ii] = strMsgFst->chRtuId; + ii++; + ShortToChar(strMsgFst->wIndex, &szCrcTmp[ii]); + ii += 2U; + LongToChar(strMsgFst->dwTime, &szCrcTmp[ii]); + ii += 4U; + ShortToChar(strMsgFst->wDevId, &szCrcTmp[ii]); + ii += 2U; + strCfmFst->dwCrc32 = Tioc_CommonCrc32(szCrcTmp, ii); /* ATSšվšվšID·ʱ CRC */ + debug_infor_printf((char*)"\n FollowUpDansuoCanclMsgProc DevId:%d, First Reply:%d \n", strMsgFst->wDevId, strCfmFst->chOpStatus); + if (CONFIRM_REPLY_SUCCESS != strCfmFst->chOpStatus) + { + ClearAtsCmdMsgFst(ATS_CI_INFO_FST_DS_CANCEL); + } + else + { + strMsgFst->chFlag = FLAG_UNSET; + } + } + else + { + ;/* յӦһϢDZ */ + } + } + else + { + /*  */ + if (strMsgSnd->dwCycle == dwCycle) + { + strCfmSnd->chFlag = FLAG_SET; + strCfmSnd->chTiocId = chLocalId; + strCfmSnd->chRtuId = strMsgSnd->chRtuId; + strCfmSnd->chAtsId = strMsgSnd->chAtsId; + strCfmSnd->wIndex = strMsgSnd->wIndex; + strCfmSnd->dwTime = dwCycle; + + if(0u == strMsgFst->chFlag) + { + /*Ӧһ*/ + strCfmSnd->chOpStatus = CONFIRM_SND_FIRST_NOTFIND; + } + else if ((strMsgSnd->chAtsId != strMsgFst->chAtsId) + ||(strMsgSnd->chRtuId != strMsgFst->chRtuId) + || (strMsgSnd->wIndex != strMsgFst->wIndex) + || (strMsgSnd->chTiocId != strMsgFst->chTiocId) + || (strMsgSnd->wDevId != strMsgFst->wDevId)) + { + strCfmSnd->chOpStatus = CONFIRM_SND_DIFFCMD; + } + else + { + szCrcTmp[ii] = strMsgSnd->chTiocId; + ii++; + LongToChar(strCfmFst->dwTime, &szCrcTmp[ii]); + ii += 4u; + ShortToChar(strMsgSnd->wDevId, &szCrcTmp[ii]); + ii += 2u; + debug_infor_printf((char*)"\nSecondRecvCrc: 1.Tioc:%d , 2.Time:%d 3.Id:%d", strMsgSnd->chTiocId, strCfmFst->dwTime, strMsgSnd->wDevId ); + dwCrc = Tioc_CommonCrc32(szCrcTmp, ii); + if (dwCrc != strMsgSnd->dwCrc32) + { + /* CRC32ATSϢCRC32һ */ + strCfmSnd->chOpStatus = CONFIRM_SND_CRCFAIL; + } + else + { + strCfmSnd->chOpStatus = FollowUpDansuoCancleCheck(strMsgSnd->wDevId, ATS_CI_INFO_SND_DS_CANCEL); + } + } + ii = 0U; + szCrcTmp[ii] = strMsgSnd->chAtsId; + ii++; + szCrcTmp[ii] = strMsgSnd->chRtuId; + ii++; + ShortToChar(strMsgSnd->wIndex, &szCrcTmp[ii]); + ii += 2U; + LongToChar(strMsgSnd->dwTime, &szCrcTmp[ii]); + ii += 4u; + ShortToChar(strMsgSnd->wDevId, &szCrcTmp[ii]); + ii += 2u; + strCfmSnd->dwCrc32 = Tioc_CommonCrc32(szCrcTmp, ii); /* ATSšRtušվš·ʱ䡢豸ID CRC */ + debug_infor_printf((char*)"\n FollowUpDansuoCanclMsgProc DevId:%d, Second Reply:%d \n", strMsgSnd->wDevId, strCfmSnd->chOpStatus); + /*Ѵ*/ + ClearAtsCmdMsgFst(ATS_CI_INFO_FST_DS_CANCEL); + ClearAtsCmdReplyFst(RCI_ATS_INFO_FST_DS_CANCEL); + ClearAtsCmdMsgSnd(ATS_CI_INFO_SND_DS_CANCEL); + } + } + /*ʱ*/ + chRtn = SystemOverTimeCheck(strMsgFst->dwCycle, FOLLOWUP_CONFIRM_TIMEOUT); + if (CI_TIME_OUT == chRtn) + { + ClearAtsCmdMsgFst(ATS_CI_INFO_FST_DS_CANCEL); + ClearAtsCmdReplyFst(RCI_ATS_INFO_FST_DS_CANCEL); + ClearAtsCmdMsgSnd(ATS_CI_INFO_SND_DS_CANCEL); + ClearAtsCmdReplySnd(RCI_ATS_INFO_SND_DS_CANCEL); + } + } +} + +/* +* : ״̬,سɹʧԭ +* ˵ + UINT16 wDevId豸 + UINT16 wMsgType, +* ֵ +1 ɹ +2δõ +3ڱ +5Ѱǽ· +* BY fan 20260603 +*/ +UINT8 FollowUpDansuoCancleCheck(UINT16 wDevId, UINT16 wMsgType) +{ + UINT8 chRtn = CONFIRM_FST_BELONGERROR; + UINT8 chDevBelongCi = 0U;/*豸*/ + UINT8 chLocalId = GetSystemParaLocalCiId(); + UINT8 localCiType = 0U; + UINT8 chNonRouteCheck = CI_ERROR; + UINT8 chState = 0U;/*ǰ״̬*/ + UINT8 switchType = GetSwitchType(wDevId); + UINT16 switch2ndId = 0U;/*˫*/ + UINT8 functionId = EFUNC_FOLLOWUP_SWITCH_DANSUO_CANCLE; + UINT8 chVir = 0U;/*豸ID*/ + chDevBelongCi = GetSwitchBelongCiId(wDevId); + + if (chDevBelongCi == chLocalId) + { + /*1״̬ =򡾵ҷա*/ + chState = GetSwitchLockStatus(wDevId); + if ((SWITCH_LOCK_STATUS_DANSUO == chState) || (SWITCH_LOCK_STATUS_DAP == chState)) + { + /*򡾵ҷա*/ + chRtn = CONFIRM_REPLY_SUCCESS; + if (SWITCH_TYPE_DOUBLE == switchType) + { + switch2ndId = GetDSwitchOtherId(wDevId); + chState = GetSwitchLockStatus(switch2ndId); + if ((SWITCH_LOCK_STATUS_DANSUO == chState) || (SWITCH_LOCK_STATUS_DAP == chState)) + { + chRtn = CONFIRM_REPLY_SUCCESS; + } + else + { + chRtn = CONFIRM_FST_UNSET; + SetErrorData(functionId, CI_DEVICE_TYPE_SWITCH, switch2ndId, ETYPE_SWT_LOCK_STATUS, SWITCH_LOCK_STATUS_DANSUO_NO, ESEND_LEVEL_ZERO); + /* ʧܷ */ + } + } + if (CONFIRM_REPLY_SUCCESS == chRtn) + { + chVir = GetSwitchBelongVirCiId(wDevId); + localCiType = GetLocalVirCiType(chVir); + if (CI_TYPE_CLD == localCiType) + { + chNonRouteCheck = CheckSwitchBelongNonRoute(wDevId); + if (CI_SUCCESS == chNonRouteCheck) + { /*Ѱǽ·*/ + chRtn = CONFIRM_DEVICE_NONROUTE_SET; + debug_infor_printf((char*)"FollowUpDansuoCancleCheck Fail: Swicth%d SetNonRoute\n", wDevId); + } + else if (SWITCH_TYPE_DOUBLE == switchType) + { + chNonRouteCheck = CheckSwitchBelongNonRoute(switch2ndId); + if (CI_SUCCESS == chNonRouteCheck) + { /*Ѱǽ·*/ + chRtn = CONFIRM_DEVICE_NONROUTE_SET; + debug_infor_printf((char*)"FollowUpDansuoCancleCheck Fail: Swicth%d SetNonRoute\n", switch2ndId); + } + else + { + ;/*޷ǽ· سɹ*/ + } + } + else + { + chRtn = CONFIRM_REPLY_SUCCESS; + } + } + else + { + ;/*޷ǽ· سɹ*/ + } + } + } + else + { + chRtn = CONFIRM_FST_UNSET; + SetErrorData(functionId, CI_DEVICE_TYPE_SWITCH, wDevId, ETYPE_SWT_LOCK_STATUS, SWITCH_LOCK_STATUS_DANSUO_NO, ESEND_LEVEL_ZERO); + } + } + else + { + chRtn = CONFIRM_FST_BELONGERROR; + } + + if ((CONFIRM_REPLY_SUCCESS == chRtn) && (ATS_CI_INFO_SND_DS_CANCEL == wMsgType)) + { + /*ִͨв*/ + if (SWITCH_TYPE_DOUBLE == switchType) + {/*˫*/ + switch2ndId = GetDSwitchOtherId(wDevId); + SetSwitchLockStatus(SWITCH_PLOCKTYPE_DANSUO, 0u, switch2ndId, SWITCH_LOCK_DANSUO_CANCEL); /*ȡһ*/ + } + + SetSwitchLockStatus(SWITCH_PLOCKTYPE_DANSUO, 0u, wDevId, SWITCH_LOCK_DANSUO_CANCEL); /*ȡ*/ + } + return chRtn; +} + +/* +* : +* ˵ +* ֵ void +* BY fan 20260602 +*/ +void FollowUpSwitchUnFlockMsgProc(void) +{ + AtsFollowUpCmdFstStru * strMsgFst = NULL;/*״Ϣָ*/ + AtsFollowUpCmdSndStru * strMsgSnd = NULL;/*ٴϢָ*/ + RCIFollowUpReplyStru * strCfmFst = NULL;/*״λظָ*/ + RCIFollowUpReplyStru *strCfmSnd = NULL;/*λظָ*/ + UINT8 chLocalId = 0U; + UINT32 dwCycle = 0U; + UINT8 chRtn = CI_ERROR;/*мȡ*/ + UINT8 szCrcTmp[1024] = { 0U }; + UINT16 ii = 0U; + UINT32 dwCrc = 0U;/*ϢCRC*/ + chLocalId = GetSystemParaLocalCiId(); + dwCycle = Get2oo2CurCycleNum(); + + /*ȡӦһΡ Լ״ΡٴȷϢ*/ + strMsgFst = GetAtsFollowUpMsgFst(ATS_CI_INFO_FST_SWIUNFLOCK); + strMsgSnd = GetAtsFollowUpMsgSnd(ATS_CI_INFO_SND_SWIUNFLOCK); + strCfmFst = GetAtsFollowUpReplyFst(RCI_ATS_INFO_FST_SWIUNFLOCK); + strCfmSnd = GetAtsFollowUpReplySnd(RCI_ATS_INFO_SND_SWIUNFLOCK); + if ((NULL == strMsgFst) || (NULL == strMsgSnd) + || (NULL == strCfmFst) || (NULL == strCfmSnd)) + { + ; + } + else + { + if ((strMsgFst->chFlag != FLAG_SET) && (strMsgSnd->chFlag != FLAG_SET)) + { + ; /* ûϢʲôҲ */ + } + else if (strMsgFst->chFlag == FLAG_SET) + { + /* һϢЧ */ + if (strMsgFst->dwCycle == dwCycle) + { + strCfmFst->chFlag = FLAG_SET; + strCfmFst->chTiocId = chLocalId; + strCfmFst->chAtsId = strMsgFst->chAtsId; + strCfmFst->chRtuId = strMsgFst->chRtuId; + strCfmFst->wIndex = strMsgFst->wIndex; + strCfmFst->dwTime = dwCycle; + + if((SWITCH_SUM_MAX <= strMsgFst->wDevId) || (chLocalId != strMsgFst->chTiocId)) + {/* ȡ豸IDزڱ*/ + strCfmFst->chOpStatus = CONFIRM_FST_BELONGERROR; + } + else + { + strCfmFst->chOpStatus = FollowUpSwitchUnFlockCheck(strMsgFst->wDevId, ATS_CI_INFO_FST_SWIUNFLOCK); + } + + szCrcTmp[ii] = strMsgFst->chAtsId; + ii++; + szCrcTmp[ii] = strMsgFst->chRtuId; + ii++; + ShortToChar(strMsgFst->wIndex, &szCrcTmp[ii]); + ii += 2U; + LongToChar(strMsgFst->dwTime, &szCrcTmp[ii]); + ii += 4U; + ShortToChar(strMsgFst->wDevId, &szCrcTmp[ii]); + ii += 2U; + strCfmFst->dwCrc32 = Tioc_CommonCrc32(szCrcTmp, ii); /* ATSšRtušվšһ·ʱ䡢豸ID CRC */ + + debug_infor_printf((char*)"\n FollowUpSwitchUnFlockMsgProc DevId:%d, First Reply:%d \n", strMsgFst->wDevId, strCfmFst->chOpStatus); + if (CONFIRM_REPLY_SUCCESS != strCfmFst->chOpStatus) + { + ClearAtsCmdMsgFst(ATS_CI_INFO_FST_SWIUNFLOCK); + } + else + { + strMsgFst->chFlag = FLAG_UNSET; + } + } + else + { + ;/* յӦһϢDZ*/ + } + } + else + { + /* */ + if (strMsgSnd->dwCycle == dwCycle) + { + strCfmSnd->chFlag = FLAG_SET; + strCfmSnd->chTiocId = chLocalId; + strCfmSnd->chRtuId = strMsgSnd->chRtuId; + strCfmSnd->chAtsId = strMsgSnd->chAtsId; + strCfmSnd->wIndex = strMsgSnd->wIndex; + strCfmSnd->dwTime = dwCycle; + + if (0u == strMsgFst->chFlag) + { + /*Ӧһ*/ + strCfmSnd->chOpStatus = CONFIRM_SND_FIRST_NOTFIND; + } + else if ((strMsgSnd->chAtsId != strMsgFst->chAtsId) + || (strMsgSnd->chRtuId != strMsgFst->chRtuId) + || (strMsgSnd->wIndex != strMsgFst->wIndex) + || (strMsgSnd->chTiocId != strMsgFst->chTiocId) + || (strMsgSnd->wDevId != strMsgFst->wDevId)) + { + strCfmSnd->chOpStatus = CONFIRM_SND_DIFFCMD; + } + else + { + szCrcTmp[ii] = strMsgSnd->chTiocId; + ii++; + LongToChar(strCfmFst->dwTime, &szCrcTmp[ii]); + ii += 4u; + ShortToChar(strMsgSnd->wDevId, &szCrcTmp[ii]); + ii += 2u; + dwCrc = Tioc_CommonCrc32(szCrcTmp, ii); + if (dwCrc != strMsgSnd->dwCrc32) + { + /* CRC32ATSϢCRC32һ */ + strCfmSnd->chOpStatus = CONFIRM_SND_CRCFAIL; + } + else + { + strCfmSnd->chOpStatus = FollowUpSwitchUnFlockCheck(strMsgSnd->wDevId, ATS_CI_INFO_SND_SWIUNFLOCK); + } + } + ii = 0U; + szCrcTmp[ii] = strMsgSnd->chAtsId; + ii++; + szCrcTmp[ii] = strMsgSnd->chRtuId; + ii++; + ShortToChar(strMsgSnd->wIndex, &szCrcTmp[ii]); + ii += 2U; + LongToChar(strMsgSnd->dwTime, &szCrcTmp[ii]); + ii += 4u; + ShortToChar(strMsgSnd->wDevId, &szCrcTmp[ii]); + ii += 2u; + strCfmSnd->dwCrc32 = Tioc_CommonCrc32(szCrcTmp, ii); /* ATSšվšվšID CRC*/ + debug_infor_printf((char*)"\n FollowUpSwitchUnFlockMsgProc DevId:%d, Second Reply:%d \n", strMsgSnd->wDevId, strCfmSnd->chOpStatus); + /*Ѵ*/ + ClearAtsCmdMsgFst(ATS_CI_INFO_FST_SWIUNFLOCK); + ClearAtsCmdReplyFst(RCI_ATS_INFO_FST_SWIUNFLOCK); + ClearAtsCmdMsgSnd(ATS_CI_INFO_SND_SWIUNFLOCK); + } + } + + /*ʱ*/ + chRtn = SystemOverTimeCheck(strMsgFst->dwCycle, FOLLOWUP_CONFIRM_TIMEOUT); + if (CI_TIME_OUT == chRtn) + { + ClearAtsCmdMsgFst(ATS_CI_INFO_FST_SWIUNFLOCK); + ClearAtsCmdReplyFst(RCI_ATS_INFO_FST_SWIUNFLOCK); + ClearAtsCmdMsgSnd(ATS_CI_INFO_SND_SWIUNFLOCK); + ClearAtsCmdReplySnd(RCI_ATS_INFO_SND_SWIUNFLOCK); + } + } +} + +/* +* : ״̬,سɹʧԭ򣬶βʱִ +* ˵ +UINT16 wDevId豸 +UINT16 wMsgType, +* ֵ +1 ɹ +2δ÷ +3ڱ +5Ѱǽ· +* BY fan 20260603 +*/ +UINT8 FollowUpSwitchUnFlockCheck(UINT16 wDevId, UINT16 wMsgType) +{ + UINT8 chRtn = CONFIRM_FST_BELONGERROR; + UINT8 chDevBelongCi = 0U;/*豸*/ + UINT8 chLocalId = GetSystemParaLocalCiId(); + UINT8 localCiType = 0U; + UINT8 chNonRouteCheck = CI_ERROR; + UINT8 chState = 0U;/*ǰ״̬*/ + UINT8 switchType = GetSwitchType(wDevId); + UINT16 switch2ndId = 0U;/*˫*/ + UINT8 functionId = EFUNC_FOLLOWUP_SWITCH_UNFLOCK; + UINT8 chVir = 0U;/*豸ID*/ + chDevBelongCi = GetSwitchBelongCiId(wDevId); + + if (chDevBelongCi == chLocalId) + { + /*״̬*/ + chState = GetSwitchFLockState(wDevId); + if(SWITCH_LOCK_FENGSUO_YES == chState) + { + /*ڷ*/ + chRtn = CONFIRM_REPLY_SUCCESS; + if (SWITCH_TYPE_DOUBLE == switchType) + { + switch2ndId = GetDSwitchOtherId(wDevId); + chState = GetSwitchFLockState(switch2ndId); + if (SWITCH_LOCK_FENGSUO_YES == chState) + { + chRtn = CONFIRM_REPLY_SUCCESS; + } + else + { + chRtn = CONFIRM_FST_UNSET; + SetErrorData(functionId, CI_DEVICE_TYPE_SWITCH, switch2ndId, ETYPE_SWT_FLOCK_STATE, SWITCH_LOCK_FENGSUO_NO, ESEND_LEVEL_ZERO); + } + } + if (CONFIRM_REPLY_SUCCESS == chRtn) + { + chVir = GetSwitchBelongVirCiId(wDevId); + localCiType = GetLocalVirCiType(chVir); + if (CI_TYPE_CLD == localCiType) + { + chNonRouteCheck = CheckSwitchBelongNonRoute(wDevId); + if (CI_SUCCESS == chNonRouteCheck) + { /*Ѱǽ·*/ + chRtn = CONFIRM_DEVICE_NONROUTE_SET; + debug_infor_printf((char*)"FollowUpSwitchUnFlockCheck Fail: Swicth%d SetNonRoute\n", wDevId); + } + else if (SWITCH_TYPE_DOUBLE == switchType) + { + chNonRouteCheck = CheckSwitchBelongNonRoute(switch2ndId); + if (CI_SUCCESS == chNonRouteCheck) + { /*Ѱǽ·*/ + chRtn = CONFIRM_DEVICE_NONROUTE_SET; + debug_infor_printf((char*)"FollowUpSwitchUnFlockCheck Fail: Swicth%d SetNonRoute\n", switch2ndId); + } + else + { + ;/*޷ǽ· سɹ*/ + } + } + else + { + chRtn = CONFIRM_REPLY_SUCCESS; + } + } + else + { + ;/*޷ǽ· سɹ*/ + } + } + } + else + { + chRtn = CONFIRM_FST_UNSET; + SetErrorData(functionId, CI_DEVICE_TYPE_SWITCH, wDevId, ETYPE_SWT_FLOCK_STATE, SWITCH_LOCK_FENGSUO_NO, ESEND_LEVEL_ZERO); + } + } + else + { + chRtn = CONFIRM_FST_BELONGERROR; + } + + if ((CONFIRM_REPLY_SUCCESS == chRtn) && (ATS_CI_INFO_SND_SWIUNFLOCK == wMsgType)) + { + /*ִͨв*/ + if (SWITCH_TYPE_DOUBLE == switchType) + {/*˫*/ + switch2ndId = GetDSwitchOtherId(wDevId); + SetSwitchFLockState(switch2ndId, SWITCH_LOCK_FENGSUO_NO); /*ȡһ*/ + } + SetSwitchFLockState(wDevId, SWITCH_LOCK_FENGSUO_NO); /*ȡ*/ + + } + return chRtn; +} + +/* +* : ν +* ˵ +* ֵ void +* BY fan 20260604 +*/ +void FollowUpSecUnFlockMsgProc(void) +{ + AtsFollowUpCmdFstStru * strMsgFst = NULL;/*״Ϣָ*/ + AtsFollowUpCmdSndStru * strMsgSnd = NULL;/*ٴϢָ*/ + RCIFollowUpReplyStru * strCfmFst = NULL;/*״λظָ*/ + RCIFollowUpReplyStru *strCfmSnd = NULL;/*λظָ*/ + UINT8 chLocalId = 0U; + UINT32 dwCycle = 0U; + UINT8 chRtn = CI_ERROR;/*мȡ*/ + UINT8 szCrcTmp[1024] = { 0U }; + UINT16 ii = 0U; + UINT32 dwCrc = 0U;/*ϢCRC*/ + chLocalId = GetSystemParaLocalCiId(); + dwCycle = Get2oo2CurCycleNum(); + + /*ȡӦһΡ Լ״ΡٴȷϢ*/ + strMsgFst = GetAtsFollowUpMsgFst(ATS_CI_INFO_FST_SECUNFLOCK); + strMsgSnd = GetAtsFollowUpMsgSnd(ATS_CI_INFO_SND_SECUNFLOCK); + strCfmFst = GetAtsFollowUpReplyFst(RCI_ATS_INFO_FST_SECUNFLOCK); + strCfmSnd = GetAtsFollowUpReplySnd(RCI_ATS_INFO_SND_SECUNFLOCK); + if ((NULL == strMsgFst) || (NULL == strMsgSnd) + || (NULL == strCfmFst) || (NULL == strCfmSnd)) + { + ; + } + else + { + if ((strMsgFst->chFlag != FLAG_SET) && (strMsgSnd->chFlag != FLAG_SET)) + { + ; /* ûϢʲôҲ */ + } + else if (strMsgFst->chFlag == FLAG_SET) + { + /* һϢЧ */ + if (strMsgFst->dwCycle == dwCycle) + { + strCfmFst->chFlag = FLAG_SET; + strCfmFst->chTiocId = chLocalId; + strCfmFst->chAtsId = strMsgFst->chAtsId; + strCfmFst->chRtuId = strMsgFst->chRtuId; + strCfmFst->wIndex = strMsgFst->wIndex; + strCfmFst->dwTime = dwCycle; + + if ((PHYSICAL_SECTION_SUM_MAX <= strMsgFst->wDevId) || (chLocalId != strMsgFst->chTiocId)) + {/* ȡ豸IDزڱ*/ + strCfmFst->chOpStatus = CONFIRM_FST_BELONGERROR; + } + else + { + strCfmFst->chOpStatus = FollowUpSecUnFlockCheck(strMsgFst->wDevId, ATS_CI_INFO_FST_SECUNFLOCK); + } + + szCrcTmp[ii] = strMsgFst->chAtsId; + ii++; + szCrcTmp[ii] = strMsgFst->chRtuId; + ii++; + ShortToChar(strMsgFst->wIndex, &szCrcTmp[ii]); + ii += 2U; + LongToChar(strMsgFst->dwTime, &szCrcTmp[ii]); + ii += 4U; + ShortToChar(strMsgFst->wDevId, &szCrcTmp[ii]); + ii += 2U; + strCfmFst->dwCrc32 = Tioc_CommonCrc32(szCrcTmp, ii); /* ATSšRtušվš·ʱ䡢豸ID CRC */ + debug_infor_printf((char*)"\n FollowUpSecUnFlockMsgProc DevId:%d, First Reply:%d \n", strMsgFst->wDevId, strCfmFst->chOpStatus); + if (CONFIRM_REPLY_SUCCESS != strCfmFst->chOpStatus) + { + ClearAtsCmdMsgFst(ATS_CI_INFO_FST_SECUNFLOCK); + } + else + { + strMsgFst->chFlag = FLAG_UNSET; + } + } + else + { + ;/* յӦһϢDZ*/ + } + } + else + { + /* */ + if (strMsgSnd->dwCycle == dwCycle) + { + strCfmSnd->chFlag = FLAG_SET; + strCfmSnd->chTiocId = chLocalId; + strCfmSnd->chRtuId = strMsgSnd->chRtuId; + strCfmSnd->chAtsId = strMsgSnd->chAtsId; + strCfmSnd->wIndex = strMsgSnd->wIndex; + strCfmSnd->dwTime = dwCycle; + + if (0u == strMsgFst->chFlag) + { + /*Ӧһ*/ + strCfmSnd->chOpStatus = CONFIRM_SND_FIRST_NOTFIND; + } + else if ((strMsgSnd->chAtsId != strMsgFst->chAtsId) + || (strMsgSnd->chRtuId != strMsgFst->chRtuId) + || (strMsgSnd->wIndex != strMsgFst->wIndex) + || (strMsgSnd->chTiocId != strMsgFst->chTiocId) + || (strMsgSnd->wDevId != strMsgFst->wDevId)) + { + strCfmSnd->chOpStatus = CONFIRM_SND_DIFFCMD; + } + else + { + szCrcTmp[ii] = strMsgSnd->chTiocId; + ii++; + LongToChar(strCfmFst->dwTime, &szCrcTmp[ii]); + ii += 4u; + ShortToChar(strMsgSnd->wDevId, &szCrcTmp[ii]); + ii += 2u; + dwCrc = Tioc_CommonCrc32(szCrcTmp, ii); + if (dwCrc != strMsgSnd->dwCrc32) + { + /* CRC32ATSϢCRC32һ */ + strCfmSnd->chOpStatus = CONFIRM_SND_CRCFAIL; + } + else + { + strCfmSnd->chOpStatus = FollowUpSecUnFlockCheck(strMsgSnd->wDevId, ATS_CI_INFO_SND_SECUNFLOCK); + } + } + ii = 0U; + szCrcTmp[ii] = strMsgSnd->chAtsId; + ii++; + szCrcTmp[ii] = strMsgSnd->chRtuId; + ii++; + ShortToChar(strMsgSnd->wIndex, &szCrcTmp[ii]); + ii += 2U; + LongToChar(strMsgSnd->dwTime, &szCrcTmp[ii]); + ii += 4u; + ShortToChar(strMsgSnd->wDevId, &szCrcTmp[ii]); + ii += 2u; + strCfmSnd->dwCrc32 = Tioc_CommonCrc32(szCrcTmp, ii); /* ATSšվšվš·ʱ䡢ID*/ + debug_infor_printf((char*)"\n FollowUpSecUnFlockMsgProc DevId:%d, Second Reply:%d \n", strMsgSnd->wDevId, strCfmSnd->chOpStatus); + /*Ѵ*/ + ClearAtsCmdMsgFst(ATS_CI_INFO_FST_SECUNFLOCK); + ClearAtsCmdReplyFst(RCI_ATS_INFO_FST_SECUNFLOCK); + ClearAtsCmdMsgSnd(ATS_CI_INFO_SND_SECUNFLOCK); + } + } + + chRtn = SystemOverTimeCheck(strMsgFst->dwCycle, FOLLOWUP_CONFIRM_TIMEOUT); + if (CI_TIME_OUT == chRtn) + { + ClearAtsCmdMsgFst(ATS_CI_INFO_FST_SECUNFLOCK); + ClearAtsCmdReplyFst(RCI_ATS_INFO_FST_SECUNFLOCK); + ClearAtsCmdMsgSnd(ATS_CI_INFO_SND_SECUNFLOCK); + ClearAtsCmdReplySnd(RCI_ATS_INFO_SND_SECUNFLOCK); + } + } +} + +/* +* : ν״̬,سɹʧԭ򣬶βʱִ +* ˵ +UINT16 wDevId豸 +UINT16 wMsgType, +* ֵ +1 ɹ +2δ˹η +3ڱ +* BY fan 20260604 +*/ +UINT8 FollowUpSecUnFlockCheck(UINT16 wDevId, UINT16 wMsgType) +{ + UINT8 chRtn = CONFIRM_FST_BELONGERROR; + UINT8 chDevBelongCi = 0U;/*豸*/ + UINT8 chLocalId = GetSystemParaLocalCiId(); + UINT8 chState = 0U;/*ǰ״̬*/ + UINT8 flockType = 0u;/**/ + chDevBelongCi = GetPhySecBelongCiId(wDevId); + + if (chDevBelongCi == chLocalId) + { + /*״̬*/ + chState = GetPhySecFLockState(wDevId); + flockType = GetPhySecFLockType(wDevId); /*η*/ + if (PHYSICAL_SECTION_FLOCK_YES == chState) + { + if ((PHY_SEC_FLOCK_TYPE_SPKSCMD == flockType)|| (PHY_SEC_FLOCK_TYPE_CMD == flockType)) + {/*η*/ + chRtn = CONFIRM_REPLY_SUCCESS; + } + else + { + /*SPKSȡ*/ + chRtn = CONFIRM_FST_UNSET; + SetErrorData(EFUNC_FOLLOWUP_SEC_UNFLOCK,CI_DEVICE_TYPE_PHYSEC,wDevId, ETYPE_PS_FLOCK_STATE, flockType, ESEND_LEVEL_ZERO); + } + } + else + { + chRtn = CONFIRM_FST_UNSET; + SetErrorData(EFUNC_FOLLOWUP_SEC_UNFLOCK, CI_DEVICE_TYPE_PHYSEC, wDevId, ETYPE_PS_UNFLOCK_STATE, chState, ESEND_LEVEL_ZERO); + } + } + else + { + chRtn = CONFIRM_FST_BELONGERROR; + } + + if ((CONFIRM_REPLY_SUCCESS == chRtn) && (ATS_CI_INFO_SND_SECUNFLOCK == wMsgType)) + { + /*ִͨв*/ + if (PHY_SEC_FLOCK_TYPE_CMD == flockType) + { + (void)SetPhySecFLockState(wDevId, PHYSICAL_SECTION_FLOCK_NO);/*η״̬Ϊδ*/ + SetPhySecFLockType(wDevId, PHY_SEC_FLOCK_TYPE_NONE);/*ó޷*/ + } + else + { + /*ѼspksCMD˴SPKS*/ + SetPhySecFLockType(wDevId, PHY_SEC_FLOCK_TYPE_SPKS); + } + } + return chRtn; +} + + +/* +* : źŻ +* ˵ +* ֵ void +* BY fan 20260604 +*/ +void FollowUpSignalUnFlockMsgProc(void) +{ + AtsFollowUpCmdFstStru * strMsgFst = NULL;/*״Ϣָ*/ + AtsFollowUpCmdSndStru * strMsgSnd = NULL;/*ٴϢָ*/ + RCIFollowUpReplyStru * strCfmFst = NULL;/*״λظָ*/ + RCIFollowUpReplyStru *strCfmSnd = NULL;/*λظָ*/ + UINT8 chLocalId = 0U; + UINT32 dwCycle = 0U; + UINT8 chRtn = CI_ERROR;/*мȡ*/ + UINT8 szCrcTmp[1024] = { 0U }; + UINT16 ii = 0U; + UINT32 dwCrc = 0U;/*ϢCRC*/ + chLocalId = GetSystemParaLocalCiId(); + dwCycle = Get2oo2CurCycleNum(); + + /*ȡӦһΡ Լ״ΡٴȷϢ*/ + strMsgFst = GetAtsFollowUpMsgFst(ATS_CI_INFO_FST_SIGUNFLOCK); + strMsgSnd = GetAtsFollowUpMsgSnd(ATS_CI_INFO_SND_SIGUNFLOCK); + strCfmFst = GetAtsFollowUpReplyFst(RCI_ATS_INFO_FST_SIGUNFLOCK); + strCfmSnd = GetAtsFollowUpReplySnd(RCI_ATS_INFO_SND_SIGUNFLOCK); + if ((NULL == strMsgFst) || (NULL == strMsgSnd) + || (NULL == strCfmFst) || (NULL == strCfmSnd)) + { + ; + } + else + { + if ((strMsgFst->chFlag != FLAG_SET) && (strMsgSnd->chFlag != FLAG_SET)) + { + ; /* ûϢʲôҲ */ + } + else if (strMsgFst->chFlag == FLAG_SET) + { + /* һϢЧ */ + if (strMsgFst->dwCycle == dwCycle) + { + strCfmFst->chFlag = FLAG_SET; + strCfmFst->chTiocId = chLocalId; + strCfmFst->chAtsId = strMsgFst->chAtsId; + strCfmFst->chRtuId = strMsgFst->chRtuId; + strCfmFst->wIndex = strMsgFst->wIndex; + strCfmFst->dwTime = dwCycle; + + if ((SIGNAL_SUM_MAX <= strMsgFst->wDevId) || (chLocalId != strMsgFst->chTiocId)) + {/* ȡ豸IDزڱ*/ + strCfmFst->chOpStatus = CONFIRM_FST_BELONGERROR; + } + else + { + strCfmFst->chOpStatus = FollowUpSignalUnFlockCheck(strMsgFst->wDevId, ATS_CI_INFO_FST_SIGUNFLOCK); + } + + szCrcTmp[ii] = strMsgFst->chAtsId; + ii++; + szCrcTmp[ii] = strMsgFst->chRtuId; + ii++; + ShortToChar(strMsgFst->wIndex, &szCrcTmp[ii]); + ii += 2U; + LongToChar(strMsgFst->dwTime, &szCrcTmp[ii]); + ii += 4U; + ShortToChar(strMsgFst->wDevId, &szCrcTmp[ii]); + ii += 2U; + strCfmFst->dwCrc32 = Tioc_CommonCrc32(szCrcTmp, ii); /* ATSšRtušվš·ʱ䡢豸ID CRC */ + + debug_infor_printf((char*)"\n FollowUpSignalUnFlockMsgProc DevId:%d, First Reply:%d \n", strMsgFst->wDevId, strCfmFst->chOpStatus); + if (CONFIRM_REPLY_SUCCESS != strCfmFst->chOpStatus) + { + ClearAtsCmdMsgFst(ATS_CI_INFO_FST_SIGUNFLOCK); + } + else + { + strMsgFst->chFlag = FLAG_UNSET; + } + } + else + { + ;/* յӦһϢDZ*/ + } + } + else + { + /* */ + if (strMsgSnd->dwCycle == dwCycle) + { + strCfmSnd->chFlag = FLAG_SET; + strCfmSnd->chTiocId = chLocalId; + strCfmSnd->chRtuId = strMsgSnd->chRtuId; + strCfmSnd->chAtsId = strMsgSnd->chAtsId; + strCfmSnd->wIndex = strMsgSnd->wIndex; + strCfmSnd->dwTime = dwCycle; + + if (0u == strMsgFst->chFlag) + { + /*Ӧһ*/ + strCfmSnd->chOpStatus = CONFIRM_SND_FIRST_NOTFIND; + } + else if ((strMsgSnd->chAtsId != strMsgFst->chAtsId) + || (strMsgSnd->chRtuId != strMsgFst->chRtuId) + || (strMsgSnd->wIndex != strMsgFst->wIndex) + || (strMsgSnd->chTiocId != strMsgFst->chTiocId) + || (strMsgSnd->wDevId != strMsgFst->wDevId)) + { + strCfmSnd->chOpStatus = CONFIRM_SND_DIFFCMD; + } + else + { + szCrcTmp[ii] = strMsgSnd->chTiocId; + ii++; + LongToChar(strCfmFst->dwTime, &szCrcTmp[ii]); + ii += 4u; + ShortToChar(strMsgSnd->wDevId, &szCrcTmp[ii]); + ii += 2u; + dwCrc = Tioc_CommonCrc32(szCrcTmp, ii); + if (dwCrc != strMsgSnd->dwCrc32) + { + /* CRC32ATSϢCRC32һ */ + strCfmSnd->chOpStatus = CONFIRM_SND_CRCFAIL; + } + else + { + strCfmSnd->chOpStatus = FollowUpSignalUnFlockCheck(strMsgSnd->wDevId, ATS_CI_INFO_SND_SIGUNFLOCK); + } + } + ii = 0U; + szCrcTmp[ii] = strMsgSnd->chAtsId; + ii++; + szCrcTmp[ii] = strMsgSnd->chRtuId; + ii++; + ShortToChar(strMsgSnd->wIndex, &szCrcTmp[ii]); + ii += 2U; + LongToChar(strMsgSnd->dwTime, &szCrcTmp[ii]); + ii += 4u; + ShortToChar(strMsgSnd->wDevId, &szCrcTmp[ii]); + ii += 2u; + strCfmSnd->dwCrc32 = Tioc_CommonCrc32(szCrcTmp, ii); /* ATSšվšվš·ʱ䡢ID CRC */ + debug_infor_printf((char*)"\n FollowUpSignalUnFlockMsgProc DevId:%d, Second Reply:%d \n", strMsgSnd->wDevId, strCfmSnd->chOpStatus); + /*Ѵ*/ + ClearAtsCmdMsgFst(ATS_CI_INFO_FST_SIGUNFLOCK); + ClearAtsCmdReplyFst(RCI_ATS_INFO_FST_SIGUNFLOCK); + ClearAtsCmdMsgSnd(ATS_CI_INFO_SND_SIGUNFLOCK); + } + } + + chRtn = SystemOverTimeCheck(strMsgFst->dwCycle, FOLLOWUP_CONFIRM_TIMEOUT); + if (CI_TIME_OUT == chRtn) + { + ClearAtsCmdMsgFst(ATS_CI_INFO_FST_SIGUNFLOCK); + ClearAtsCmdReplyFst(RCI_ATS_INFO_FST_SIGUNFLOCK); + ClearAtsCmdMsgSnd(ATS_CI_INFO_SND_SIGUNFLOCK); + ClearAtsCmdReplySnd(RCI_ATS_INFO_SND_SIGUNFLOCK); + } + } +} + +/* +* : źŻ״̬,سɹʧԭ򣬶βʱִ +* ˵ +UINT16 wDevId豸 +UINT16 wMsgType, +* ֵ +1 ɹ +2δźŻ +3ڱ +5ǽ·Ѱ +* BY fan 20260604 +*/ +UINT8 FollowUpSignalUnFlockCheck(UINT16 wDevId, UINT16 wMsgType) +{ + UINT8 chRtn = CONFIRM_FST_BELONGERROR; + UINT8 chDevBelongCi = 0U;/*豸*/ + UINT8 chLocalId = GetSystemParaLocalCiId(); + UINT8 chState = 0U;/*ǰ״̬*/ + UINT8 localCiType = 0U; + UINT8 chNonRouteCheck = CI_ERROR; + UINT8 chVir = 0U;/*豸ID*/ + chDevBelongCi = GetSignalBelongCiId(wDevId); + + if (chDevBelongCi == chLocalId) + { + /*״̬*/ + chState = GetSignalFLockState(wDevId); + if (SIGNAL_FENGSUO_YES == chState) + { + chVir = GetSignalBelongVirCiId(wDevId); + localCiType = GetLocalVirCiType(chVir); + if (CI_TYPE_CLD == localCiType) + { + chNonRouteCheck = CheckSignalBelongNonRoute(wDevId); + if (CI_SUCCESS == chNonRouteCheck) + { /*źŻѰǽ·*/ + chRtn = CONFIRM_DEVICE_NONROUTE_SET; + debug_infor_printf((char*)"FollowUpSignalUnFlockCheck Fail: Signal %d SetNonRoute\n", wDevId); + } + else + { + chRtn = CONFIRM_REPLY_SUCCESS; + } + } + else + { + chRtn = CONFIRM_REPLY_SUCCESS; + } + } + else + { + chRtn = CONFIRM_FST_UNSET; + SetErrorData(EFUNC_FOLLOWUP_SIGNAL_UNFLOCK, CI_DEVICE_TYPE_SIGNAL, wDevId, ETYPE_SIG_FLOCK_STATE, chState, ESEND_LEVEL_ZERO); + } + } + else + { + chRtn = CONFIRM_FST_BELONGERROR; + } + + if ((CONFIRM_REPLY_SUCCESS == chRtn) && (ATS_CI_INFO_SND_SIGUNFLOCK == wMsgType)) + { + /*ִͨв*/ + SetSignalFLockState(wDevId, SIGNAL_FENGSUO_NO); /*źŻδ*/ + } + return chRtn; +} + +/* +* źѿŽ·ĹԴ +* ˵ +* ֵ +* Created By LQ 2026.06.09 +*/ +void OpenedRouteShareResPro(void) +{ + UINT8 cLocalCiId = 0U; /*ID*/ + UINT16 wRouteCurSum = 0U; /*źŻ*/ + UINT16 ii = 0U; + UINT16 wRouteId = 0U; /*·ID*/ + UINT8 cRouteBelongCiId = 0U; /*·ID*/ + UINT8 cRouteCurState = 0U; /*·ǰ״̬*/ + + cLocalCiId = GetSystemParaLocalCiId(); + wRouteCurSum = GetRouteCurSum(); + + for (ii = 0U; ii < wRouteCurSum; ii++) + { + wRouteId = GetRouteId(ii); + cRouteBelongCiId = GetRouteBelongCiId(wRouteId); /*ȡ·ID*/ + + /*жǷΪ·*/ + if (cLocalCiId == cRouteBelongCiId) + { + cRouteCurState = GetRouteState(wRouteId); /*ȡ·״̬*/ + + /*жϽ·źǷ񿪷*/ + if ((ROUTE_STATE_YUXIAN_OPEN == cRouteCurState) || (ROUTE_STATE_NEAR_OPEN == cRouteCurState)) + { + /*·״̬ΪԤȿ ӽţý·߼Դ־Ϊ*/ + SetRouteLgcSecShareFlag(wRouteId, LOGIC_SECTION_RES_SHARE_YES); + } + else + { + /**/ + } + } + else + { + /*DZ·*/ + } + } } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/LogicManage/InterlockLogicManage.h b/TSCP/src/APP/ciapp/LogicManage/InterlockLogicManage.h index e8e3a69..7307c7f 100644 --- a/TSCP/src/APP/ciapp/LogicManage/InterlockLogicManage.h +++ b/TSCP/src/APP/ciapp/LogicManage/InterlockLogicManage.h @@ -1175,6 +1175,116 @@ void AxisJumpLockStateManage(const UINT16 axisSectionId); * ֵ CI_SUCCESS Գߣ裩 CI_ERROR */ UINT8 GetLocalCiIsScx(void); +/* +* ߽· +* ˵ const UINT16 wRouteId ·ID +* ֵ +* Create:lyj 20260603 +*/ +void ConnectRouteReleaseManage(const UINT16 wRouteId); + +/* +* : һ +* ˵ +* ֵ void +* BY fan 20260602 +*/ +void AtsFollowUpCmdProcess(void); + +/* +* : +* ˵ +* ֵ void +* BY fan 20260602 +*/ +void FollowUpDansuoCanclMsgProc(void); + +/* +* : ״̬,سɹʧԭ +* ˵ +UINT16 wDevId豸 +UINT16 wMsgType, +* ֵ +1 ɹ +2δõ +3ڱ +5Ѱǽ· +* BY fan 20260603 +*/ +UINT8 FollowUpDansuoCancleCheck(UINT16 wDevId, UINT16 wMsgType); + +/* +* : +* ˵ +* ֵ void +* BY fan 20260602 +*/ +void FollowUpSwitchUnFlockMsgProc(void); + +/* +* : ״̬,سɹʧԭ򣬶βʱִ +* ˵ +UINT16 wDevId豸 +UINT16 wMsgType, +* ֵ +1 ɹ +2δ÷ +3ڱ +5Ѱǽ· +* BY fan 20260603 +*/ +UINT8 FollowUpSwitchUnFlockCheck(UINT16 wDevId, UINT16 wMsgType); + +/* +* : ν +* ˵ +* ֵ void +* BY fan 20260604 +*/ +void FollowUpSecUnFlockMsgProc(void); + +/* +* : ν״̬,سɹʧԭ򣬶βʱִ +* ˵ +UINT16 wDevId豸 +UINT16 wMsgType, +* ֵ +1 ɹ +2δ˹η +3ڱ +* BY fan 20260604 +*/ +UINT8 FollowUpSecUnFlockCheck(UINT16 wDevId, UINT16 wMsgType); + +/* +* : źŻ +* ˵ +* ֵ void +* BY fan 20260604 +*/ +void FollowUpSignalUnFlockMsgProc(void); + +/* +* : źŻ״̬,سɹʧԭ򣬶βʱִ +* ˵ +UINT16 wDevId豸 +UINT16 wMsgType, +* ֵ +1 ɹ +2δźŻ +3ڱ +5ǽ·Ѱ +* BY fan 20260604 +*/ +UINT8 FollowUpSignalUnFlockCheck(UINT16 wDevId, UINT16 wMsgType); + +/* +* źѿŽ·ĹԴ +* ˵ +* ֵ +* Created By LQ 2026.06.09 +*/ +void OpenedRouteShareResPro(void); #ifdef __cplusplus } diff --git a/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicCheck.c b/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicCheck.c index 9fac982..fdd0991 100644 --- a/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicCheck.c +++ b/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicCheck.c @@ -7159,7 +7159,7 @@ UINT8 RouteExceptLastSecOccuClrCheck(UINT16 const routeId) UINT16 cancleZhaoChaRelayId = 0u; /*ȡղ̵ID*/ UINT8 relayState = 0u; /*̵ɼ״̬*/ UINT8 sendLevel = ESEND_LEVEL_ATS; /*ATS*/ - + UINT8 chRConnectReleaseFlag = 0U; /* ռü */ if (0u == checkSum) { @@ -7211,10 +7211,20 @@ UINT8 RouteExceptLastSecOccuClrCheck(UINT16 const routeId) } else { - /* ¼ */ - SetErrorData(functionId, CI_DEVICE_TYPE_RELAY, devId, ETYPE_CANCLE_ZHAOCHA, devState, sendLevel); - /* ʧܷ */ - result = CI_ERROR_QXZC; + chRConnectReleaseFlag = GetRouteConnectReleaseFlag(routeId); + if (ROUTE_CONNECT_RELEASE_YES == chRConnectReleaseFlag) + { + /* ͨ */ + result = CI_SUCCESS; + } + else + { + /* ¼ */ + SetErrorData(functionId, CI_DEVICE_TYPE_RELAY, devId, ETYPE_CANCLE_ZHAOCHA, devState, sendLevel); + /* ʧܷ */ + result = CI_ERROR_QXZC; + } + } } @@ -7802,37 +7812,61 @@ UINT8 OtherCiDevStatusCheck(UINT16 const routeId,const RouteOtherCheckStruct *pO */ static UINT8 CheckRelationSignalOnSameOpen(UINT16 const routeId,UINT16 const relationSignalId,UINT8 const devStatus) { - UINT8 routeState = 0u,routeLeadProperty = 0u; + UINT8 routeState = 0U; + UINT8 routeLeadProperty = 0U; UINT8 ret = CI_SUCCESS; UINT8 routeType = 0u; /*·*/ UINT8 relationSignalOpenColor = GetSignalCurColor(relationSignalId); UINT8 cRouteStartSigOpenColor = 0U; /*·ʼźŻɫ*/ - + UINT8 cRouteToLeadFlag = 0U; + UINT8 chOpenCloseState = 0U; routeState = GetRouteState(routeId); routeLeadProperty = GetRouteLeadProperty(routeId);/*ȡ·*/ routeType = GetRouteType(routeId); /*ȡ·*/ - if ((routeState != 0u) && (relationSignalOpenColor != 0u)) + + if ((routeState != 0U) && (relationSignalOpenColor != 0U)) { /* źſţ鱾·ҪŵźǷȵǰĿŵļҪ */ - if (SIGNAL_OPEN == GetSignalOpenCloseState(relationSignalOpenColor)) + chOpenCloseState = GetSignalOpenCloseState(relationSignalOpenColor); + if (SIGNAL_OPEN == chOpenCloseState) { switch (relationSignalOpenColor) { case SIGNAL_SHOWCOLOUR_REDYELLOW: /* Ƶ,źſűź */ - - if (((ROUTE_LEAD_PROPERTY_YES == routeLeadProperty) || (ROUTE_LEAD_PROPERTY_CBTC_YES == routeLeadProperty)) - && ((ROUTE_STATE_LEAD_LOCK == routeState) + if ((ROUTE_LEAD_PROPERTY_YES == routeLeadProperty) || (ROUTE_LEAD_PROPERTY_CBTC_YES == routeLeadProperty)) + { + /* ·Ϊ*/ + if ((ROUTE_STATE_LEAD_LOCK == routeState) || (ROUTE_STATE_LEAD_LOCKERR == routeState) - || (ROUTE_STATE_LEAD_OPEN == routeState))) - {/* ·Ϊҽ·״̬Ϊ<><쳣><> ,·, */ - ret = CI_SUCCESS; + || (ROUTE_STATE_LEAD_OPEN == routeState)) + { + /* ·״̬Ϊ<><쳣><> */ + ret = CI_SUCCESS; + } + else + { + cRouteToLeadFlag = GetRouteToLeadFlag(routeId); /*ȡ·ת־*/ + if ((ROUTE_TO_LEAD_FLAG_YES == cRouteToLeadFlag) && + ((ROUTE_STATE_YUXIAN_LOCK == routeState) || (ROUTE_STATE_NEAR_LOCK == routeState) + || (ROUTE_STATE_FIRST_LOCKERR == routeState) || (ROUTE_STATE_NEAR_LOCKERR == routeState))) + { + /*г·תת־Чг·ӽջԤջ쳣ӽ쳣ת*/ + ret = CI_SUCCESS; + } + else + { + ret = CI_ERROR; + } + + } } else { ret = CI_ERROR; } + break; case SIGNAL_SHOWCOLOUR_WHITE: if (ROUTE_TYPE_DIAOCHE == routeType) @@ -10844,7 +10878,7 @@ UINT8 CheckRouteZongRenJieFeasibility(const UINT16 routeId) UINT8 sectionSum = 0u;/*·*/ /*Ϸͼ*/ UINT8 sendLevel = ESEND_LEVEL_ATS; /*ATS*/ UINT16 secIdx = 0u;/*·ڰα*/ - + UINT8 chRouteConnectFlag = 0U; /**/ /* ·״̬ա*/ devId = 0u; @@ -10967,10 +11001,20 @@ UINT8 CheckRouteZongRenJieFeasibility(const UINT16 routeId) } else { - /* ¼ */ - SetErrorData(functionId, CI_DEVICE_TYPE_RELAY, devId, ETYPE_CANCLE_ZHAOCHA, devState, sendLevel); - /* ʧܷ */ - reResult = CI_ERROR; + chRouteConnectFlag = GetRouteConnectReleaseFlag(routeId); + if (ROUTE_CONNECT_RELEASE_YES == chRouteConnectFlag) + { + /* ͨ */ + reResult = CI_SUCCESS; + } + else + { + /* ¼ */ + SetErrorData(functionId, CI_DEVICE_TYPE_RELAY, devId, ETYPE_CANCLE_ZHAOCHA, devState, sendLevel); + /* ʧܷ */ + reResult = CI_ERROR; + } + } } diff --git a/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicProcess.c b/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicProcess.c index a2a6580..643e003 100644 --- a/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicProcess.c +++ b/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicProcess.c @@ -6362,13 +6362,15 @@ UINT8 RouteOtherSecAutoUnlockProcess(UINT16 const routeId, UINT16* phySectionId) UINT8 sendLevel = ESEND_LEVEL_ZERO; /*ATS*/ UINT8 chPhySecCurMergeState = 0U;/*εǰں״̬*/ UINT8 chPhySecPreMergeState = 0U;/*֮ǰں״̬*/ + UINT8 chPhyOtherLineFlag = 0U; + UINT16 wFrontPhyId = 0U; /**/ if(CI_SUCCESS == reResult) { /*ҵڵǰ·ĵһա*/ - if (nlockSectionId > 0u) + if (0U < nlockSectionId) { reResult = CI_SUCCESS; } @@ -6378,98 +6380,27 @@ UINT8 RouteOtherSecAutoUnlockProcess(UINT16 const routeId, UINT16* phySectionId) reResult = CI_ERROR; /*ID = 0*/ - *phySectionId = 0u; + *phySectionId = 0U; } } - if(CI_SUCCESS == reResult) + if (CI_SUCCESS == reResult) { - /*·Ϊ۷·ҽΪ۷*/ - if ((routeType == ROUTE_TYPE_RETURN) - && (nlockSectionId == returnSecId)) + /* жǷ߶Է */ + chPhyOtherLineFlag = GetPhyIsThisLineState(nlockSectionId); + if ((DEV_IS_THIS_LINE_NO == chPhyOtherLineFlag) && (UINT16_MAX == nextSecId) && (ROUTE_TYPE_RETURN != routeType)) { - /*۷*/ - /*۷ΡС֮ǰռá*/ - chPhySecCurMergeState = GetPhySecCurMergeState(returnSecId); - chPhySecPreMergeState = GetPhySecPreMergeState(returnSecId); - - if ((SECTION_OCCUPY_NO == chPhySecCurMergeState) && - (SECTION_OCCUPY_YES == chPhySecPreMergeState)) + /*βDZ·Ҳһ,ҽ·Ϊ۷*/ + wFrontPhyId = GetRoutePhySecFrontPhyId(routeId, nlockSectionId); + chPhySecPreMergeState = GetPhySecPreMergeState(wFrontPhyId); + chPhySecCurMergeState = GetPhySecCurMergeState(wFrontPhyId); + /* ǰһεǰУ֮ǰռ */ + if ((SECTION_OCCUPY_YES == chPhySecPreMergeState) && (SECTION_OCCUPY_NO == chPhySecCurMergeState)) { - reResult = CI_SUCCESS; - } - else - { - /* ʧܷ */ - reResult = CI_ERROR; - *phySectionId = nlockSectionId; - } - - if(CI_SUCCESS == reResult) - { - /*۳·һΡռá*/ - chPhySecCurMergeState = GetPhySecCurMergeState(backSecId); - - if (SECTION_OCCUPY_YES == chPhySecCurMergeState) - { - /*۷*/ - reResult = CI_SUCCESS; - } - else - { - /*۷쳣*/ - /* ¼ */ - SetErrorData(functionId,CI_DEVICE_TYPE_PHYSEC,backSecId,ETYPE_PS_RUNLOCK_ERROR,chPhySecCurMergeState,sendLevel); - /* ʧܷ */ - reResult = RETURN_AUTOLOCK_ERR_EXCEPT; - *phySectionId = nlockSectionId; - } - } - if(CI_SUCCESS == reResult) - { - /*۷·ʱ۳· ۳·״̬Ϊӽ*/ - if ((returnRouteLockTime < backRouteLockTime) - && ((ROUTE_STATE_NEAR_LOCK == backRouteState) - || (ROUTE_STATE_AUTO_UNLOCK == backRouteState))) - { - reResult = CI_SUCCESS; - *phySectionId = nlockSectionId; - } - else - { - /*۷쳣*/ - /* ¼ */ - SetErrorData(functionId,CI_DEVICE_TYPE_ROUTE, wPhySecRLockId,ETYPE_PS_RUNLOCK_ERROR, backRouteState,sendLevel); - /* ʧܷ */ - reResult = RETURN_AUTOLOCK_ERR_EXCEPT; - *phySectionId = nlockSectionId; - } - } - } - else - { - /**/ - /*ǰ֮ǰǰС֮ǰռá*/ - chPhySecCurMergeState = GetPhySecCurMergeState(nlockSectionId); - chPhySecPreMergeState = GetPhySecPreMergeState(nlockSectionId); - - if ((SECTION_OCCUPY_NO == chPhySecCurMergeState) && - (SECTION_OCCUPY_YES == chPhySecPreMergeState)) - { - reResult = CI_SUCCESS; - } - else - { - /* ʧܷ */ - reResult = CI_ERROR; - *phySectionId = nlockSectionId; - - } - if(CI_SUCCESS == reResult) - { - /* һΡռá*/ - chPhySecCurMergeState = GetPhySecCurMergeState(nextSecId); - if (SECTION_OCCUPY_YES == chPhySecCurMergeState) + chPhySecPreMergeState = GetPhySecPreMergeState(nlockSectionId); + chPhySecCurMergeState = GetPhySecCurMergeState(nlockSectionId); + /* εǰУ֮ǰռ */ + if ((SECTION_OCCUPY_YES == chPhySecPreMergeState) && (SECTION_OCCUPY_NO == chPhySecCurMergeState)) { /**/ reResult = CI_SUCCESS; @@ -6477,59 +6408,171 @@ UINT8 RouteOtherSecAutoUnlockProcess(UINT16 const routeId, UINT16* phySectionId) } else { - if (validReturnSigId > 0u)/*ͨ·ת۷·*/ - { - /*۳·һռ*/ - chPhySecCurMergeState = GetPhySecCurMergeState(backSecId); + /* ʧܷ */ + reResult = CI_ERROR; + *phySectionId = nlockSectionId; + } + } + else + { + /* ʧܷ */ + reResult = CI_ERROR; + *phySectionId = nlockSectionId; + } - if (SECTION_OCCUPY_YES == chPhySecCurMergeState) - { - /*۷*/ - reResult = CI_SUCCESS; - } - else - { - /*۷쳣*/ - /* ¼ */ - SetErrorData(functionId,CI_DEVICE_TYPE_PHYSEC,backSecId,ETYPE_PS_RUNLOCK_ERROR, chPhySecCurMergeState,sendLevel); - /* ʧܷ */ - reResult = RETURN_AUTOLOCK_ERR_EXCEPT; - *phySectionId = nlockSectionId; - } - if(CI_SUCCESS == reResult) - { - /*۷·ʱ۳· ۳·״̬Ϊӽ*/ - if ((((INT32)(backRouteLockTime- returnRouteLockTime)) > 0 ) - &&(backRouteState == ROUTE_STATE_NEAR_LOCK)) - { - reResult = CI_SUCCESS; - *phySectionId = nlockSectionId; - } - else - { - /*۷쳣*/ - /* ¼ */ - SetErrorData(functionId,CI_DEVICE_TYPE_ROUTE, wPhySecRLockId,ETYPE_PS_RUNLOCK_ERROR, backRouteState,sendLevel); - /* ʧܷ */ - reResult = RETURN_AUTOLOCK_ERR_EXCEPT; - *phySectionId = nlockSectionId; - } - } + } + else + { + /*·Ϊ۷·ҽΪ۷*/ + if ((ROUTE_TYPE_RETURN == routeType) + && (nlockSectionId == returnSecId)) + { + /*۷*/ + /*۷ΡС֮ǰռá*/ + chPhySecCurMergeState = GetPhySecCurMergeState(returnSecId); + chPhySecPreMergeState = GetPhySecPreMergeState(returnSecId); + + if ((SECTION_OCCUPY_NO == chPhySecCurMergeState) && + (SECTION_OCCUPY_YES == chPhySecPreMergeState)) + { + reResult = CI_SUCCESS; + } + else + { + /* ʧܷ */ + reResult = CI_ERROR; + *phySectionId = nlockSectionId; + } + + if (CI_SUCCESS == reResult) + { + /*۳·һΡռá*/ + chPhySecCurMergeState = GetPhySecCurMergeState(backSecId); + + if (SECTION_OCCUPY_YES == chPhySecCurMergeState) + { + /*۷*/ + reResult = CI_SUCCESS; } else - {/*ͨ·쳣*/ - /*һΡСɳ*/ - /* 쳣 */ + { + /*۷쳣*/ /* ¼ */ - SetErrorData(functionId,CI_DEVICE_TYPE_PHYSEC,nextSecId,ETYPE_PS_AUNLOCK_ERROR, chPhySecCurMergeState,sendLevel); + SetErrorData(functionId, CI_DEVICE_TYPE_PHYSEC, backSecId, ETYPE_PS_RUNLOCK_ERROR, chPhySecCurMergeState, sendLevel); + /* ʧܷ */ + reResult = RETURN_AUTOLOCK_ERR_EXCEPT; + *phySectionId = nlockSectionId; + } + } + if (CI_SUCCESS == reResult) + { + /*۷·ʱ۳· ۳·״̬Ϊӽ*/ + if ((returnRouteLockTime < backRouteLockTime) + && ((ROUTE_STATE_NEAR_LOCK == backRouteState) + || (ROUTE_STATE_AUTO_UNLOCK == backRouteState))) + { + reResult = CI_SUCCESS; + *phySectionId = nlockSectionId; + } + else + { + /*۷쳣*/ + /* ¼ */ + SetErrorData(functionId, CI_DEVICE_TYPE_ROUTE, wPhySecRLockId, ETYPE_PS_RUNLOCK_ERROR, backRouteState, sendLevel); /* ʧܷ */ reResult = RETURN_AUTOLOCK_ERR_EXCEPT; *phySectionId = nlockSectionId; } } } + else + { + /**/ + /*ǰ֮ǰǰС֮ǰռá*/ + chPhySecCurMergeState = GetPhySecCurMergeState(nlockSectionId); + chPhySecPreMergeState = GetPhySecPreMergeState(nlockSectionId); + + if ((SECTION_OCCUPY_NO == chPhySecCurMergeState) && + (SECTION_OCCUPY_YES == chPhySecPreMergeState)) + { + reResult = CI_SUCCESS; + } + else + { + /* ʧܷ */ + reResult = CI_ERROR; + *phySectionId = nlockSectionId; + + } + if (CI_SUCCESS == reResult) + { + /* һΡռá*/ + chPhySecCurMergeState = GetPhySecCurMergeState(nextSecId); + if (SECTION_OCCUPY_YES == chPhySecCurMergeState) + { + /**/ + reResult = CI_SUCCESS; + *phySectionId = nlockSectionId; + } + else + { + if (0U < validReturnSigId)/*ͨ·ת۷·*/ + { + /*۳·һռ*/ + chPhySecCurMergeState = GetPhySecCurMergeState(backSecId); + + if (SECTION_OCCUPY_YES == chPhySecCurMergeState) + { + /*۷*/ + reResult = CI_SUCCESS; + } + else + { + /*۷쳣*/ + /* ¼ */ + SetErrorData(functionId, CI_DEVICE_TYPE_PHYSEC, backSecId, ETYPE_PS_RUNLOCK_ERROR, chPhySecCurMergeState, sendLevel); + /* ʧܷ */ + reResult = RETURN_AUTOLOCK_ERR_EXCEPT; + *phySectionId = nlockSectionId; + } + if (CI_SUCCESS == reResult) + { + /*۷·ʱ۳· ۳·״̬Ϊӽ*/ + if (0 < (((INT32)(backRouteLockTime - returnRouteLockTime))) + && (ROUTE_STATE_NEAR_LOCK == backRouteState)) + { + reResult = CI_SUCCESS; + *phySectionId = nlockSectionId; + } + else + { + /*۷쳣*/ + /* ¼ */ + SetErrorData(functionId, CI_DEVICE_TYPE_ROUTE, wPhySecRLockId, ETYPE_PS_RUNLOCK_ERROR, backRouteState, sendLevel); + /* ʧܷ */ + reResult = RETURN_AUTOLOCK_ERR_EXCEPT; + *phySectionId = nlockSectionId; + } + } + } + else + {/*ͨ·쳣*/ + /*һΡСɳ*/ + /* 쳣 */ + /* ¼ */ + SetErrorData(functionId, CI_DEVICE_TYPE_PHYSEC, nextSecId, ETYPE_PS_AUNLOCK_ERROR, chPhySecCurMergeState, sendLevel); + /* ʧܷ */ + reResult = RETURN_AUTOLOCK_ERR_EXCEPT; + *phySectionId = nlockSectionId; + } + } + } + } } + } + + return reResult; } @@ -7044,6 +7087,7 @@ UINT8 RouteCancelLogicProcess(UINT16 const routeId) /*Ϸͼ*/ UINT8 sendLevel = ESEND_LEVEL_ATS; /*ATS*/ UINT8 cRouteType = 0U; /*·*/ + UINT8 chRConnectReleaseFlag = 0U; /**/ /* ·״̬ա*/ @@ -7131,10 +7175,20 @@ UINT8 RouteCancelLogicProcess(UINT16 const routeId) } else { - /* ¼ */ - SetErrorData(functionId,CI_DEVICE_TYPE_RELAY,devId,ETYPE_CANCLE_ZHAOCHA,devState,sendLevel); - /* ʧܷ */ - reResult = CI_ERROR; + chRConnectReleaseFlag = GetRouteConnectReleaseFlag(routeId); + if (ROUTE_CONNECT_RELEASE_YES == chRConnectReleaseFlag) + { + /* ͨ */ + reResult = CI_SUCCESS; + } + else + { + /* ¼ */ + SetErrorData(functionId, CI_DEVICE_TYPE_RELAY, devId, ETYPE_CANCLE_ZHAOCHA, devState, sendLevel); + /* ʧܷ */ + reResult = CI_ERROR; + } + } } @@ -13105,4 +13159,84 @@ void UpdateRouteCouplinkFlag(const UINT16 wRouteId) /**/ } +} +/* +* ߽ӳ· +* ˵ const UINT16 wRouteId ·ID +* ֵ +* Create: lyj 20260603 +*/ +void ConnectRouteReleaseProc(const UINT16 wRouteId) +{ + UINT8 chRouteState = 0U; /*·״̬*/ + UINT8 chResult = 0U; + UINT16 wFirstOccuSecId = 0U;/*·ڷһռõID*/ + UINT8 chDevState = 0U; + UINT8 chTrainEnterSta = 0U; + UINT8 chZongRenJieResult = 0U; + + if ((0U < wRouteId) && (ROUTE_SUM_MAX > wRouteId)) + { + chRouteState = GetRouteState(wRouteId); + + if ((ROUTE_STATE_FIRST_LOCK == chRouteState) + || (ROUTE_STATE_FIRST_LOCKERR == chRouteState) + || (ROUTE_STATE_YUXIAN_LOCK == chRouteState) + || (ROUTE_STATE_NEAR_LOCKERR == chRouteState)) + { + chZongRenJieResult = CheckRouteZongRenJieFeasibility(wRouteId); + chResult = RouteAllSecOccuClearCheck(wRouteId, &wFirstOccuSecId, &chDevState); + if (CI_SUCCESS == chZongRenJieResult) + { + SetRouteStateManage(wRouteId, ROUTE_STATE_DELAY_UNLOCK); /*-->ý·ʱ*/ + + if (CI_SUCCESS == chResult) + { + /*·ռѹʱȫ*/ + SetRouteZongRenJieDelayType(wRouteId, ROUTE_ZRJ_DELAY_TYPE_IDLE); + } + else + { + /*ʱ󲿷̹һռѹ֮ǰα̹*/ + SetRouteZongRenJieDelayType(wRouteId, ROUTE_ZRJ_DELAY_TYPE_EXP_TO_OCCUPY); + } + } + else + { + /*·ܽ*/ + } + + } + else if ((ROUTE_STATE_LEAD_LOCK == chRouteState) || (ROUTE_STATE_LEAD_LOCKERR == chRouteState)) + { + chTrainEnterSta = GetRouteTrainEnterFlag(wRouteId); + chZongRenJieResult = RouteExceptLastSecOccuClrCheck(wRouteId); + if (CI_SUCCESS == chZongRenJieResult) + { + /*οлһռ*/ + SetRouteStateManage(wRouteId, ROUTE_STATE_DELAY_UNLOCK); /*-->ý·ʱ*/ + /*ʱȫ*/ + SetRouteZongRenJieDelayType(wRouteId, ROUTE_ZRJ_DELAY_TYPE_IDLE);/*ʱν*/ + } + else if (ROUTE_TRAIN_ENTER_FLAG_NO == chTrainEnterSta) + { + SetRouteStateManage(wRouteId, ROUTE_STATE_DELAY_UNLOCK); /*-->ý·ʱ*/ + /*ʱȫ*/ + SetRouteZongRenJieDelayType(wRouteId, ROUTE_ZRJ_DELAY_TYPE_IDLE);/*ʱν*/ + } + else + { + /**/ + } + } + else + { + /*¼·״̬*/ + SetErrorData(EFUNC_ROUTE_ZRJ_DEAL, CI_DEVICE_TYPE_ROUTE, wRouteId, ETYPE_ROUTE_STATE, chRouteState, ESEND_LEVEL_ATS); + } + } + else + { + /*·ID쳣*/ + } } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicProcess.h b/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicProcess.h index 57a3165..c516182 100644 --- a/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicProcess.h +++ b/TSCP/src/APP/ciapp/LogicProcess/InterlockLogicProcess.h @@ -841,6 +841,13 @@ UINT8 SetRouteCouplinkProcess(const UINT16 wRouteId, const UINT8 functionId, con * Create: 20250919 */ void UpdateRouteCouplinkFlag(const UINT16 wRouteId); +/* +* ߽ӳ· +* ˵ const UINT16 wRouteId ·ID +* ֵ +* Create: lyj 20260603 +*/ +void ConnectRouteReleaseProc(const UINT16 wRouteId); #ifdef __cplusplus } diff --git a/TSCP/src/APP/ciapp/PSD/PSDConfigDataManage.c b/TSCP/src/APP/ciapp/PSD/PSDConfigDataManage.c index 2f1df0e..7157403 100644 --- a/TSCP/src/APP/ciapp/PSD/PSDConfigDataManage.c +++ b/TSCP/src/APP/ciapp/PSD/PSDConfigDataManage.c @@ -1183,3 +1183,51 @@ UINT16 GetIbpConfmRelayId(const UINT16 doorId) } return retVal; } + +/* +* õа忨 +* ˵ const UINT16 PsdId, IDUINT16 wBoardId 忨Id +* ֵ CI_SUCCESS CI_ERROR +*/ +UINT8 SetPsdRelateReverseRelay(const UINT16 PsdId, UINT16 wBoardId) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT8 chRet = CI_ERROR; + bufIndex = GetPsdConfigBufIndex(PsdId); /*ȡ±*/ + + if (bufIndex < PSD_SUM_MAX) + { + PsdConfigDataStru[bufIndex].wReverseBoardId = wBoardId; + chRet = CI_SUCCESS; + } + else + { + ; + } + return chRet; +} + +/* +* ȡа忨 +* ˵ const UINT16 wPsdId, ID +* ֵ UINT16_MAX: ȡʧ +* 0: ޵ +* [1,65534]忨ID +*/ +UINT16 GetPsdRelateReverseBoardId(const UINT16 wPsdId) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT16 retVal = UINT16_MAX; + + bufIndex = GetPsdConfigBufIndex(wPsdId); /*ȡ±*/ + + if (bufIndex < PSD_SUM_MAX) + { + retVal = PsdConfigDataStru[bufIndex].wReverseBoardId; + } + else + { + retVal = UINT16_MAX; + } + return retVal; +} diff --git a/TSCP/src/APP/ciapp/PSD/PSDConfigDataManage.h b/TSCP/src/APP/ciapp/PSD/PSDConfigDataManage.h index caa656a..c1e571d 100644 --- a/TSCP/src/APP/ciapp/PSD/PSDConfigDataManage.h +++ b/TSCP/src/APP/ciapp/PSD/PSDConfigDataManage.h @@ -73,6 +73,7 @@ typedef struct S_PsdConfigDataStruct UINT16 IncloudeEsbIdBuf[PSD_INCLUDE_ESB_NUM]; /*ŰESB ID*/ UINT8 IncloudeEsbNum; /*ESB*/ UINT16 wIbpRelayId; /*IBP̷ť̵ID*/ + UINT16 wReverseBoardId; /*а忨Id*/ } PsdConfigDataStruct; @@ -461,6 +462,23 @@ UINT16* GetPsdIncloudeEsbIdBuf(const UINT16 psdId); */ UINT16 GetIbpConfmRelayId(const UINT16 doorId); +/* +* õа忨 +* ˵ const UINT16 PsdId, IDUINT16 wBoardId 忨Id +* ֵ CI_SUCCESS CI_ERROR +*/ +UINT8 SetPsdRelateReverseRelay(const UINT16 PsdId,UINT16 wBoardId); + +/* +* ȡа忨 +* ˵ const UINT16 wPsdId, ID +* ֵ UINT16_MAX: ȡʧ +* 0: ޵ +* [1,65534]忨ID +*/ +UINT16 GetPsdRelateReverseBoardId(const UINT16 wPsdId); + + #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/PSD/PSDDataManage.c b/TSCP/src/APP/ciapp/PSD/PSDDataManage.c index 36eba83..d692c3d 100644 --- a/TSCP/src/APP/ciapp/PSD/PSDDataManage.c +++ b/TSCP/src/APP/ciapp/PSD/PSDDataManage.c @@ -851,7 +851,7 @@ UINT32 GetStartDetectionCycNum(const UINT16 doorId) * ֵ * */ -void SetStartDetectionState(const UINT16 doorId, const UINT32 detectionState) +void SetStartDetectionState(const UINT16 doorId, const UINT8 detectionState) { UINT16 bufIndex = 0u; /*±*/ @@ -861,7 +861,7 @@ void SetStartDetectionState(const UINT16 doorId, const UINT32 detectionState) { if ((JXTC_START_DETECTION_NO == detectionState) || (JXTC_START_DETECTION_YES == detectionState) ) { - PsdDataStru[bufIndex].StartDetectionState = (UINT8)(detectionState); + PsdDataStru[bufIndex].StartDetectionState = detectionState; } else { @@ -906,7 +906,7 @@ UINT8 GetStartDetectionState(const UINT16 doorId) * ֵ * */ -void SetStopDetectionState(const UINT16 doorId, const UINT32 detectionState) +void SetStopDetectionState(const UINT16 doorId, const UINT8 detectionState) { UINT16 bufIndex = 0u; /*±*/ @@ -916,7 +916,7 @@ void SetStopDetectionState(const UINT16 doorId, const UINT32 detectionState) { if ((JXTC_STOP_DETECTION_NO == detectionState) || (JXTC_STOP_DETECTION_YES == detectionState) ) { - PsdDataStru[bufIndex].StopDetectionState = (UINT8)(detectionState); + PsdDataStru[bufIndex].StopDetectionState = detectionState; } else { @@ -1405,7 +1405,7 @@ UINT16 GetPsdEditGroupInfoFromPsdData(const UINT16 doorId) * ֵ * */ -void SetVOBCDoorState(const UINT16 doorId, const UINT32 doorState) +void SetVOBCDoorState(const UINT16 doorId, const UINT8 doorState) { UINT16 bufIndex = 0u; /*±*/ @@ -1415,7 +1415,7 @@ void SetVOBCDoorState(const UINT16 doorId, const UINT32 doorState) { if ((PSD_DOOR_CLOSEDANDLOCKED_VALID == doorState) || (PSD_DOOR_CLOSEDANDLOCKED_INVALID == doorState)) { - PsdDataStru[bufIndex].VOBCDoorState = (UINT8)(doorState); + PsdDataStru[bufIndex].VOBCDoorState = doorState; } else { @@ -3416,4 +3416,58 @@ UINT8 GetPsdStateToVobc(const UINT16 doorId) } } return chRet; +} + +/* +* г״̬ +* ˵ const UINT16 doorId, ID +* const UINT32 detectionState, ״̬ +* ֵ +* +*/ +void SetTrainZeroSpeedState(const UINT16 doorId, const UINT8 detectionState) +{ + UINT16 bufIndex = 0u; /*±*/ + + bufIndex = GetPsdConfigBufIndex(doorId); /*ȡ±*/ + + if (bufIndex < PSD_SUM_MAX) + { + if ((PSD_TRAIN_ZERO_SPEED_NO == detectionState) || (PSD_TRAIN_ZERO_SPEED_YES == detectionState)) + { + PsdDataStru[bufIndex].chTrainZeroSpeedState = detectionState; + } + else + { + /**/ + } + + } + else + { + /**/ + } +} +/* +* ȡг״̬ +* ˵ const UINT16 doorId, ID +* ֵ 0: ȡʧ +* >0: ״̬ +*/ +UINT8 GetTrainZeroSpeedState(const UINT16 doorId) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT8 retVal = CI_ERROR; + + bufIndex = GetPsdConfigBufIndex(doorId); /*ȡ±*/ + + if (bufIndex < PSD_SUM_MAX) + { + retVal = PsdDataStru[bufIndex].chTrainZeroSpeedState; + } + else + { + retVal = CI_ERROR; + } + return retVal; } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/PSD/PSDDataManage.h b/TSCP/src/APP/ciapp/PSD/PSDDataManage.h index 40963f7..e749f06 100644 --- a/TSCP/src/APP/ciapp/PSD/PSDDataManage.h +++ b/TSCP/src/APP/ciapp/PSD/PSDDataManage.h @@ -98,6 +98,7 @@ typedef struct S_PsdDataStruct UINT32 JXTCMutualLockStartCycNum; /*϶̽⻥ʼʱ*/ UINT8 ibpButtonState; /*IBP̷ť״̬(ֶ̬)*/ UINT32 IBPPressCycNum; /*IBPʼ*/ + UINT8 chTrainZeroSpeedState; /*г״̬*/ } PsdDataStruct; /*ݽṹ*/ @@ -386,7 +387,7 @@ UINT32 GetStartDetectionCycNum(const UINT16 doorId); * ֵ * */ -void SetStartDetectionState(const UINT16 doorId, const UINT32 detectionState); +void SetStartDetectionState(const UINT16 doorId, const UINT8 detectionState); /* * ȡʼ̽״̬ * ˵ const UINT16 routeId, ·ID @@ -402,7 +403,7 @@ UINT8 GetStartDetectionState(const UINT16 doorId); * ֵ * */ -void SetStopDetectionState(const UINT16 doorId, const UINT32 detectionState); +void SetStopDetectionState(const UINT16 doorId, const UINT8 detectionState); /* * ȡֹͣ̽״̬ @@ -541,7 +542,7 @@ UINT16 GetPsdEditGroupInfoFromPsdData(const UINT16 doorId); * ֵ * */ -void SetVOBCDoorState(const UINT16 doorId, const UINT32 doorState); +void SetVOBCDoorState(const UINT16 doorId, const UINT8 doorState); /* * ȡVOBC2CI״̬Ϣ @@ -1185,6 +1186,23 @@ UINT8 SetIBPPressCycNum(const UINT16 doorId, const UINT32 startCycNum); * ֵ ״̬ */ UINT8 GetPsdStateToVobc(const UINT16 doorId); + +/* +* г״̬ +* ˵ const UINT16 doorId, ID +* const UINT32 detectionState, ״̬ +* ֵ +* +*/ +void SetTrainZeroSpeedState(const UINT16 doorId, const UINT8 detectionState); + +/* +* ȡг״̬ +* ˵ const UINT16 doorId, ID +* ֵ 0: ȡʧ +* >0: ״̬ +*/ +UINT8 GetTrainZeroSpeedState(const UINT16 doorId); #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/PSD/PSDDefine.h b/TSCP/src/APP/ciapp/PSD/PSDDefine.h index ccb324b..d1c7470 100644 --- a/TSCP/src/APP/ciapp/PSD/PSDDefine.h +++ b/TSCP/src/APP/ciapp/PSD/PSDDefine.h @@ -17,7 +17,7 @@ /*ֵ*/ -#define PSD_SUM_MAX ((UINT16)150U) /*ֵ*/ +#define PSD_SUM_MAX ((UINT16)200U) /*ֵ*/ /*Źijվ·Ŀֵ*/ #define RALATED_OUT_STATION_ROUTE_SUM_MAX ((UINT16)10U) /*Źijվ·Ŀֵ*/ @@ -228,4 +228,8 @@ #define CI_IVOC_PSD_STATE_OPEN ((UINT8)0x55U) /*CIIVOCŴ*/ #define CI_IVOC_PSD_STATE_PANGLU ((UINT8)0xCCU) /*CIIVOCŻ*/ #define CI_IVOC_PSD_STATE_OPEN_EXCEPT ((UINT8)0x33U) /*CIIVOC쳣*/ + +#define PSD_TRAIN_ZERO_SPEED_YES ((UINT8)0x55U) /*г*/ +#define PSD_TRAIN_ZERO_SPEED_NO ((UINT8)0xAAU) /*г*/ + #endif diff --git a/TSCP/src/APP/ciapp/ParsePack/CiInterfaceDefine.h b/TSCP/src/APP/ciapp/ParsePack/CiInterfaceDefine.h index 96ca9c3..59b3e6a 100644 --- a/TSCP/src/APP/ciapp/ParsePack/CiInterfaceDefine.h +++ b/TSCP/src/APP/ciapp/ParsePack/CiInterfaceDefine.h @@ -164,6 +164,8 @@ #define ATS_CMD_APPLY_PASSXICHE ((UINT8)0xB2) /*ֵϴ-ģʽ*/ #define ATS_CMD_CANCEL_PASSXICHE ((UINT8)0xB3) /*ֵȡϴ-ģʽ*/ #define ATS_CMD_CANCEL_PSD_EXCEPT ((UINT8)0xBA) /*ֵȡվ̨쳣״̬*/ +#define ATS_CMD_CONNECT_ROUTE_RELEASE_ONE ((UINT8)0xBB) /*߽ӳ·һ*/ +#define ATS_CMD_CONNECT_ROUTE_RELEASE_TWO ((UINT8)0xBC) /*߽ӳ·*/ /****궨****/ #define CI_CMD_PHYSEC_USING_APPLY ((UINT16)0x0001) /**/ @@ -246,9 +248,10 @@ #define CI_BACK_GROUP_AUTO_ROUTE_SET_ERR ((UINT8)0x7e) /*Զ·Զʧ*/ -#define CI_BACK_AUTO_TRIGGER_SET_ERR (UINT8)0x85 /*·Զ־ʧ*/ +#define CI_BACK_AUTO_TRIGGER_SET_ERR ((UINT8)0x85) /*·Զ־ʧ*/ #define CI_BACK_LEAD_ROUTE_CANCEL ((UINT8)0xA4) /*·޷ʹȡ*/ #define CI_BACK_COUPLINK_ROUTE_IDLE ((UINT8)0xAF) /*ҽ·ޱҳ*/ +#define CI_BACK_CONNECT_ROUTE_RELEASE ((UINT8)0xBB) /*߽ӳ·*/ /*źŻϷ*/ #define CI_BACK_SIG_START_OPEN ((UINT8)0x11) /*·ʼźŻ*/ @@ -469,6 +472,48 @@ #define CI_BACK_ALLAUTO_RETURN_FLOOD_STATE_ERR ((UINT8)0x9C) /*ȫԶ۷·ڷŲ*/ #define CI_BACK_ALLAUTO_RETURN_COUPROUTE_SET ((UINT8)0xB2) /*ȫԶ۷ҽ·Ѱ*/ +#define ATS_CI_INFO_TYPE_FIRST_LEN ((UINT16)11) /*ATS״*/ +#define ATS_CI_INFO_TYPE_SND_LEN ((UINT16)15) /*ATSٴ*/ + +/* ATS֡״Ϣṹ */ +typedef struct +{ + UINT8 chFlag; /*״Ϣ״̬*/ + UINT32 dwCycle; /*״Ϣں*/ + UINT8 chAtsId; /*ATS:Ϊ0ʱ*/ + UINT8 chRtuId; /*RtuţΪ0ʱֵأȫ0ATS*/ + UINT16 wIndex; /*վ*/ + UINT8 chTiocId; /*TIOC*/ + UINT32 dwTime; /*ʱ*/ + UINT16 wDevId; /*豸ID*/ +}AtsFollowUpCmdFstStru; + +/* ATS֡ٴϢṹ */ +typedef struct +{ + UINT8 chFlag; /*״Ϣ״̬*/ + UINT32 dwCycle; /*ٴϢں*/ + UINT8 chAtsId; /*ATS:Ϊ0ʱ*/ + UINT8 chRtuId; /*RtuţΪ0ʱֵأȫ0ATS*/ + UINT16 wIndex; /*վ*/ + UINT8 chTiocId; /*TIOC*/ + UINT32 dwTime; /*ʱ*/ + UINT16 wDevId; /*豸ID*/ + UINT32 dwCrc32; /*ٴηCrc*/ +}AtsFollowUpCmdSndStru; + +/*֡Ϣṹ */ +typedef struct +{ + UINT8 chFlag; /*ϢЧ*/ + UINT8 chTiocId; /*TIOC*/ + UINT8 chAtsId; /*Ats: жʹã*/ + UINT8 chRtuId; /*Rtu*/ + UINT16 wIndex; /*վ*/ + UINT32 dwTime; /*ʱ*/ + UINT8 chOpStatus; /**/ + UINT32 dwCrc32; /*CRC*/ +}RCIFollowUpReplyStru; #endif diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackAtsData.c b/TSCP/src/APP/ciapp/ParsePack/ParsePackAtsData.c index 72da56d..e5a52e2 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackAtsData.c +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackAtsData.c @@ -46,6 +46,36 @@ PSCToCiDataStruct* pscCiSendToAtsDataStru = NULL; ReciveAtsCmdDataCycInfo szReciveAtsCmdDataCycInfo[ATS_SUM_MAX * 2U] = {0U}; /*յATSںϢ*/ UINT16 gReciveAtsCmdDataDeviceSum = 0U; /*յATS豸Ŀ*/ +AtsFollowUpCmdFstStru gDansuoCancleMsgFst = { 0u }; /*ȡ״Ϣ*/ +RCIFollowUpReplyStru gDansuoCancleReplyFst = { 0u }; /*ȡ״ȷ*/ +AtsFollowUpCmdSndStru gDansuoCancleMsgSnd = { 0u }; /*ȡϢ*/ +RCIFollowUpReplyStru gDansuoCancleReplySnd = { 0u }; /*ȡȷ*/ + +AtsFollowUpCmdFstStru gSwitchUnflockMsgFst = { 0u }; /*״Ϣ*/ +RCIFollowUpReplyStru gSwitchUnflockReplyFst = { 0u }; /*״ȷ*/ +AtsFollowUpCmdSndStru gSwitchUnflockMsgSnd = { 0u }; /*Ϣ*/ +RCIFollowUpReplyStru gSwitchUnflockReplySnd = { 0u }; /*ȷ*/ + +AtsFollowUpCmdFstStru gSecUnflockMsgFst = { 0u }; /*ν״Ϣ*/ +RCIFollowUpReplyStru gSecUnflockReplyFst = { 0u }; /*ν״ȷ*/ +AtsFollowUpCmdSndStru gSecUnflockMsgSnd = { 0u }; /*νϢ*/ +RCIFollowUpReplyStru gSecUnflockReplySnd = { 0u }; /*νȷ*/ + +AtsFollowUpCmdFstStru gSignalUnflockMsgFst = { 0u }; /*źŻ״Ϣ*/ +RCIFollowUpReplyStru gSignalUnflockReplyFst = { 0u }; /*źŻ״ȷ*/ +AtsFollowUpCmdSndStru gSignalUnflockMsgSnd = { 0u }; /*źŻϢ*/ +RCIFollowUpReplyStru gSignalUnflockReplySnd = { 0u }; /*źŻȷ*/ + +AtsFollowUpCmdFstStru gZRJMsgFst = { 0u }; /*˽״Ϣ*/ +RCIFollowUpReplyStru gZRJReplyFst = { 0u }; /*˽״ȷ*/ +AtsFollowUpCmdSndStru gZRJMsgSnd = { 0u }; /*˽Ϣ*/ +RCIFollowUpReplyStru gZRJReplySnd = { 0u }; /*˽ȷ*/ + +AtsFollowUpCmdFstStru gCanclPsdExceptMsgFst = { 0u }; /*վ̨쳣״Ϣ*/ +RCIFollowUpReplyStru gCanclPsdExceptReplyFst = { 0u }; /*վ̨쳣״ȷ*/ +AtsFollowUpCmdSndStru gCanclPsdExceptMsgSnd = { 0u }; /*վ̨쳣Ϣ*/ +RCIFollowUpReplyStru gCanclPsdExceptReplySnd = { 0u }; /*վ̨쳣ȷ*/ + /* * CiAts߼Ϣ * ˵ const UINT8* pDataBuf, ݻ @@ -189,7 +219,6 @@ UINT8 ParseAtsOrXianDiToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLengt UINT32 dwCiAndAtsTimeOutTime = 0u; /*ATSͨжʱ*/ UINT32 dwCiCurappCycleTime = 0u; /*ǰ*/ INT32 remainValidiy = 0; /*ʣʱǷЧ*/ - UINT16 wApplyDataLenth = 0U; /*Ӧòݳ*/ UINT16 wTmpDataLen = 0U; /*ݳʱ¼*/ UINT16 wMsgLen = 0U; /*һӦݳ*/ UINT16 wMsgType = 0U; /**/ @@ -198,7 +227,14 @@ UINT8 ParseAtsOrXianDiToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLengt UINT8 chCurSystemAreaState = 0U; /*ǰϵͳ״̬*/ UINT32 dwReciveCmdDataAtsCycNum = 0U; /*յATSʱATSں*/ UINT32 dwSystemUpdateMainUseCycNum = 0U; /*ϵͳʼں*/ - + UINT16 wPreCmdNum = 0U;/*֡УͨϢУʧʱյ֡*/ + UINT16 wCurCmdNum = 0U;/*֡ǰ*/ + AtsFollowUpCmdFstStru tempFstCmd[FOLLOWUP_MSGID_MAX] = { 0U };/*һʱ洢*/ + AtsFollowUpCmdSndStru tempSndCmd[FOLLOWUP_MSGID_MAX] = { 0U };/*ʱ洢*/ + UINT16 wIndex = 0U;/*ʱϢ洢*/ + UINT16 wMsgTypeTmp = 0U;/*ȫֱϢ*/ + AtsFollowUpCmdFstStru *pGlobalFst = NULL; + AtsFollowUpCmdSndStru *pGlobalSnd = NULL; if ((NULL!= dataBuf) && (0u < dataLength)) { chAtsInterfaceType = GetCiFunctionSwitchConfig(FUNC_ATS_INTERFACE_IDENTIFIER); @@ -261,6 +297,8 @@ UINT8 ParseAtsOrXianDiToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLengt else { chRetVal = CI_SUCCESS; + /*ȻȡһǴ洢·*/ + wPreCmdNum = GetCiRevCmdStruCurSum(); while (wTmpDataLen < hlhtGalHead.totalDataLen) { @@ -321,6 +359,83 @@ UINT8 ParseAtsOrXianDiToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLengt debug_infor_printf((const)"\nATS/Xiandi %d Not Deal Cmd,Because chCurSystemAreaState %d\n", chDeciveId, chCurSystemAreaState); } break; + case ATS_CI_INFO_FST_DS_CANCEL: + case ATS_CI_INFO_FST_SWIUNFLOCK: + case ATS_CI_INFO_FST_FAULTUNLOCK: + case ATS_CI_INFO_FST_SECUNFLOCK: + case ATS_CI_INFO_FST_SIGUNFLOCK: + case ATS_CI_INFO_FST_ZONGRENJIE: + case ATS_CI_INFO_FST_PSD_UNEXCEPT: + chCurSystemAreaState = GetLocalCiBackUpPattern(); + if (SYSTEM_WORK_MODE_MAIN == chCurSystemAreaState) + { + /*ý鵱ǰðǷѾ*/ + dwReciveCmdDataAtsCycNum = GetReciveCmdDataAtsCycNum(chDevType, chDeciveId); + dwSystemUpdateMainUseCycNum = GetSystemUpdateMainUseCycNum(); + + if ((dwReciveCmdDataAtsCycNum < hlhtGalHead.crntOwnMsgSN) || + (dwSystemUpdateMainUseCycNum <= hlhtGalHead.recvOppMsgSN)) + { + /*ǰATSʱںŴڽյATSʱATSں + ǰATSʱںŴڵڵǰϵͳʼں*/ + wIndex = (wMsgType - ATS_CI_INFO_FST_DS_CANCEL) / 4; + if ((FOLLOWUP_MSGID_MAX > wIndex)&&(ATS_CI_INFO_TYPE_FIRST_LEN == wMsgCheckLen)) + { + chRetVal = ProcessCmdFirstMsgCheck(dataBuf, ii, &tempFstCmd[wIndex]); + ii += ATS_CI_INFO_TYPE_FIRST_LEN; + chExistCmdDataFlag = 1U; /*ôݱ־ЧݽΪЧ*/ + } + else + { + chRetVal = CI_ERROR;/*Խ*/ + } + + } + else + { + ii += wMsgCheckLen; + /*Ѿһ*/ + debug_infor_printf((const)"\nATS/Xiandi %d Not Deal FstCmd%d,Because curCmd has been processed by another System,dwReciveCmdDataAtsCycNum %d dwSystemUpdateMainUseCycNum %d\n", chDeciveId, wMsgType, dwReciveCmdDataAtsCycNum, dwSystemUpdateMainUseCycNum); + } + } + break; + case ATS_CI_INFO_SND_DS_CANCEL: + case ATS_CI_INFO_SND_SWIUNFLOCK: + case ATS_CI_INFO_SND_FAULTUNLOCK: + case ATS_CI_INFO_SND_SECUNFLOCK: + case ATS_CI_INFO_SND_SIGUNFLOCK: + case ATS_CI_INFO_TYPE_SND_ZRJ: + case ATS_CI_INFO_SND_PSD_UNEXCEPT: + chCurSystemAreaState = GetLocalCiBackUpPattern(); + if (SYSTEM_WORK_MODE_MAIN == chCurSystemAreaState) + { + /*ý鵱ǰðǷѾ*/ + dwReciveCmdDataAtsCycNum = GetReciveCmdDataAtsCycNum(chDevType, chDeciveId); + dwSystemUpdateMainUseCycNum = GetSystemUpdateMainUseCycNum(); + + if ((dwReciveCmdDataAtsCycNum < hlhtGalHead.crntOwnMsgSN) || + (dwSystemUpdateMainUseCycNum <= hlhtGalHead.recvOppMsgSN)) + { + wIndex = (wMsgType - ATS_CI_INFO_SND_DS_CANCEL) / 4; + if ((FOLLOWUP_MSGID_MAX > wIndex) && (ATS_CI_INFO_TYPE_SND_LEN == wMsgCheckLen)) + { + chRetVal = ProcessCmdSndMsgCheck(dataBuf, ii, &tempSndCmd[wIndex]); + ii += ATS_CI_INFO_TYPE_SND_LEN; + chExistCmdDataFlag = 1U; /*ôݱ־ЧݽΪЧ*/ + } + else + { + chRetVal = CI_ERROR;/*Խ*/ + } + } + else + { + ii += wMsgCheckLen; + /*Ѿһ*/ + debug_infor_printf((const)"\nATS/Xiandi %d Not Deal SndCmd%d,Because curCmd has been processed by another System,dwReciveCmdDataAtsCycNum %d dwSystemUpdateMainUseCycNum %d\n", chDeciveId, wMsgType, dwReciveCmdDataAtsCycNum, dwSystemUpdateMainUseCycNum); + } + } + break; default: chRetVal = CI_ERROR; break; @@ -340,21 +455,51 @@ UINT8 ParseAtsOrXianDiToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLengt } - if (CI_SUCCESS == chRetVal) + /*Уݳ*/ + if ((hlhtGalHead.totalDataLen != ii - (UINT16)31U) || (dataLength != hlhtGalHead.totalDataLen+ (UINT16)31U)) { - /*Уݳ*/ - if (hlhtGalHead.totalDataLen != ii - 31U) - { - /* 31ΪӦ֡ͷ */ - chRetVal = CI_ERROR; + /* 31ΪӦ֡ͷ */ + chRetVal = CI_ERROR; + debug_infor_printf((char*)"Lenght Error \n"); + } + if (CI_SUCCESS != chRetVal) + { + /*δ洢Ϣ*/ + wCurCmdNum = GetCiRevCmdStruCurSum();/*ǰϢ*/ + ToaClearCmd(); + for (wIndex = wPreCmdNum; wIndex <= wCurCmdNum; wIndex++) + { + (void)CommonMemSet(&CiRevCmdDataStru[wIndex], (UINT32)sizeof(CommandDataStruct), 0u, (UINT32)sizeof(CommandDataStruct)); } } else { - ; + /*ʱһϢȫֱ*/ + for (wIndex = 0U; wIndex < FOLLOWUP_MSGID_MAX; wIndex++) + { + if (FLAG_SET == tempFstCmd[wIndex].chFlag) + { + wMsgTypeTmp = ATS_CI_INFO_FST_DS_CANCEL + wIndex*(UINT16)4U; + pGlobalFst = GetAtsFollowUpMsgFst(wMsgTypeTmp); + if (NULL != pGlobalFst) + { + (void)CommonMemCpy((void *)(pGlobalFst), (UINT32)sizeof(AtsFollowUpCmdFstStru), (const void *)(&tempFstCmd[wIndex]), (UINT32)sizeof(AtsFollowUpCmdFstStru)); + } + } + if (FLAG_SET == tempSndCmd[wIndex].chFlag) + { + wMsgTypeTmp = ATS_CI_INFO_SND_DS_CANCEL + wIndex*(UINT16)4U; + pGlobalSnd = GetAtsFollowUpMsgSnd(wMsgTypeTmp); + if (NULL != pGlobalSnd) + { + (void)CommonMemCpy((void *)(pGlobalSnd), (UINT32)sizeof(AtsFollowUpCmdSndStru), (const void *)(&tempSndCmd[wIndex]), (UINT32)sizeof(AtsFollowUpCmdSndStru)); + } + } + } } + if (CI_SUCCESS == chRetVal) { /*ݾУ飬Ҫ洢ͨñ*/ @@ -578,6 +723,12 @@ UINT8 PackCiToAtsOrXianDiData(const UINT8 deviceId, const UINT8 targetDevType, c ; /**/ } } + + if (CI_SUCCESS == chReval) + { + /*һΡλظϢ֡*/ + chReval = PackCiToAtsFollowUpMsg(ciToXianDiDataBuffer, &ii, targetDevType, PACK_ATS_TYPE_CENTER); + } } else { @@ -1297,6 +1448,9 @@ UINT8 FindFirstOrder(UINT8 SecondOrder) case ATS_CMD_EMERG_XS_CANCEL_TWO: reVal = ATS_CMD_EMERG_XS_CANCEL_ONE; /*ȡʱһ*/ break; + case ATS_CMD_CONNECT_ROUTE_RELEASE_TWO: /*߽ӳ·*/ + reVal = ATS_CMD_CONNECT_ROUTE_RELEASE_ONE; /*߽ӳ·һ*/ + break; default: reVal = 0u; break; @@ -3622,7 +3776,8 @@ UINT8 ReciveAtsCmdDeal(const UINT8* dataBuf, UINT16* dataIndex,const UINT16 wDat } if (CI_ERROR == chRetVal) - {/*ݴ󣬶*/ + { + /*ݴ󣬶*/ /*Ȿ*/ ToaClearCmd(); commandTotalSum = 0u; @@ -3930,4 +4085,504 @@ void PackRcOrCiDeciveCommonState(UINT8* ciToXianDiDataBuffer, UINT16* ii) { /*μʧܣ*/ } +} + +/** +* @brief ȡATSӦ״Ϣ +* @param[in] const UINT16 wMsgType, +* @return ȡATSϢ֡е״Ϣ +* @note by fan 20260602 +*/ +AtsFollowUpCmdFstStru * GetAtsFollowUpMsgFst(UINT16 chMsgType) +{ + AtsFollowUpCmdFstStru* rtnVal = NULL; + switch (chMsgType) + { + case ATS_CI_INFO_FST_DS_CANCEL: + rtnVal = &gDansuoCancleMsgFst; + break; + case ATS_CI_INFO_FST_SWIUNFLOCK: + rtnVal = &gSwitchUnflockMsgFst; + break; + case ATS_CI_INFO_FST_FAULTUNLOCK: + break; + case ATS_CI_INFO_FST_SECUNFLOCK: + rtnVal = &gSecUnflockMsgFst; + break; + case ATS_CI_INFO_FST_SIGUNFLOCK: + rtnVal = &gSignalUnflockMsgFst; + break; + case ATS_CI_INFO_FST_ZONGRENJIE: + break; + case ATS_CI_INFO_FST_PSD_UNEXCEPT: + break; + default: + break; + } + return rtnVal; +} + +/** +* @brief ȡATSӦĶϢ +* @param[in] const UINT16 wMsgType, +* @return ȡATSϢ֡еٴϢ +* @note by fan 20260602 +*/ +AtsFollowUpCmdSndStru * GetAtsFollowUpMsgSnd(UINT16 chMsgType) +{ + AtsFollowUpCmdSndStru* rtnVal = NULL; + switch (chMsgType) + { + case ATS_CI_INFO_SND_DS_CANCEL: + rtnVal = &gDansuoCancleMsgSnd; + break; + case ATS_CI_INFO_SND_SWIUNFLOCK: + rtnVal = &gSwitchUnflockMsgSnd; + break; + case ATS_CI_INFO_SND_FAULTUNLOCK: + break; + case ATS_CI_INFO_SND_SECUNFLOCK: + rtnVal = &gSecUnflockMsgSnd; + break; + case ATS_CI_INFO_SND_SIGUNFLOCK: + rtnVal = &gSignalUnflockMsgSnd; + break; + case ATS_CI_INFO_TYPE_SND_ZRJ: + break; + case ATS_CI_INFO_SND_PSD_UNEXCEPT: + break; + default: + break; + } + return rtnVal; +} + +/** +* @brief ȡATSӦ״ηϢ +* @param[in] const UINT16 wMsgType, +* @return ȡATSϢ֡е״η +* @note by fan 20260602 +*/ +RCIFollowUpReplyStru * GetAtsFollowUpReplyFst(UINT16 chMsgType) +{ + RCIFollowUpReplyStru* rtnVal = NULL; + switch (chMsgType) + { + case RCI_ATS_INFO_FST_DS_CANCEL: + rtnVal = &gDansuoCancleReplyFst; + break; + case RCI_ATS_INFO_FST_SWIUNFLOCK: + rtnVal = &gSwitchUnflockReplyFst; + break; + case RCI_ATS_INFO_FST_FAULTUNLOCK: + break; + case RCI_ATS_INFO_FST_SECUNFLOCK: + rtnVal = &gSecUnflockReplyFst; + break; + case RCI_ATS_INFO_FST_SIGUNFLOCK: + rtnVal = &gSignalUnflockReplyFst; + break; + case RCI_ATS_INFO_FST_ZONGRENJIE: + break; + case RCI_ATS_INFO_FST_PSD_UNEXCEPT: + break; + default: + break; + } + return rtnVal; +} + +/** +* @brief ȡATSӦٴηϢ +* @param[in] const UINT16 wMsgType, +* @return ȡATSϢ֡еٴη +* @note by fan 20260602 +*/ +RCIFollowUpReplyStru * GetAtsFollowUpReplySnd(UINT16 chMsgType) +{ + RCIFollowUpReplyStru* rtnVal = NULL; + switch (chMsgType) + { + case RCI_ATS_INFO_SND_DS_CANCEL: + rtnVal = &gDansuoCancleReplySnd; + break; + case RCI_ATS_INFO_SND_SWIUNFLOCK: + rtnVal = &gSwitchUnflockReplySnd; + break; + case RCI_ATS_INFO_SND_FAULTUNLOCK: + break; + case RCI_ATS_INFO_SND_SECUNFLOCK: + rtnVal = &gSecUnflockReplySnd; + break; + case RCI_ATS_INFO_SND_SIGUNFLOCK: + rtnVal = &gSignalUnflockReplySnd; + break; + case RCI_ATS_INFO_SND_ZRJ: + break; + case RCI_ATS_INFO_SND_PSD_UNEXCEPT: + break; + default: + break; + } + return rtnVal; +} + +/** +* @brief 1ATSϢ +* @param[in] const UINT16 wMsgType, +* @return void +* @note by fan 20260603 +*/ +void ClearAtsCmdMsgFst(UINT16 chMsgType) +{ + switch (chMsgType) + { + case ATS_CI_INFO_FST_DS_CANCEL: + (void)CommonMemSet((void*)&gDansuoCancleMsgFst, (UINT32)sizeof(gDansuoCancleMsgFst), (UINT8)0U, (UINT32)sizeof(gDansuoCancleMsgFst)); + break; + case ATS_CI_INFO_FST_SWIUNFLOCK: + (void)CommonMemSet((void*)&gSwitchUnflockMsgFst, (UINT32)sizeof(gSwitchUnflockMsgFst), (UINT8)0U, (UINT32)sizeof(gSwitchUnflockMsgFst)); + break; + case ATS_CI_INFO_FST_FAULTUNLOCK: + break; + case ATS_CI_INFO_FST_SECUNFLOCK: + (void)CommonMemSet((void*)&gSecUnflockMsgFst, (UINT32)sizeof(gSecUnflockMsgFst), (UINT8)0U, (UINT32)sizeof(gSecUnflockMsgFst)); + break; + case ATS_CI_INFO_FST_SIGUNFLOCK: + (void)CommonMemSet((void*)&gSignalUnflockMsgFst, (UINT32)sizeof(gSignalUnflockMsgFst), (UINT8)0U, (UINT32)sizeof(gSignalUnflockMsgFst)); + break; + case ATS_CI_INFO_FST_ZONGRENJIE: + break; + case ATS_CI_INFO_FST_PSD_UNEXCEPT: + break; + default: + break; + } +} + +/** +* @brief ״ηϢ +* @param[in] const UINT16 wMsgType, +* @return void +* @note by fan 20260603 +*/ +void ClearAtsCmdReplyFst(UINT16 chMsgType) +{ + switch (chMsgType) + { + case RCI_ATS_INFO_FST_DS_CANCEL: + (void)CommonMemSet((void*)&gDansuoCancleReplyFst, (UINT32)sizeof(gDansuoCancleReplyFst), (UINT8)0U, (UINT32)sizeof(gDansuoCancleReplyFst)); + break; + case RCI_ATS_INFO_FST_SWIUNFLOCK: + (void)CommonMemSet((void*)&gSwitchUnflockReplyFst, (UINT32)sizeof(gSwitchUnflockReplyFst), (UINT8)0U, (UINT32)sizeof(gSwitchUnflockReplyFst)); + break; + case RCI_ATS_INFO_FST_FAULTUNLOCK: + break; + case RCI_ATS_INFO_FST_SECUNFLOCK: + (void)CommonMemSet((void*)&gSecUnflockReplyFst, (UINT32)sizeof(gSecUnflockReplyFst), (UINT8)0U, (UINT32)sizeof(gSecUnflockReplyFst)); + break; + case RCI_ATS_INFO_FST_SIGUNFLOCK: + (void)CommonMemSet((void*)&gSignalUnflockReplyFst, (UINT32)sizeof(gSignalUnflockReplyFst), (UINT8)0U, (UINT32)sizeof(gSignalUnflockReplyFst)); + break; + case RCI_ATS_INFO_FST_ZONGRENJIE: + break; + case RCI_ATS_INFO_FST_PSD_UNEXCEPT: + break; + default: + break; + } +} +/** +* @brief 2ATSϢ +* @param[in] const UINT16 wMsgType, +* @return void +* @note by fan 20260603 +*/ +void ClearAtsCmdMsgSnd(UINT16 chMsgType) +{ + switch (chMsgType) + { + case ATS_CI_INFO_SND_DS_CANCEL: + (void)CommonMemSet((void*)&gDansuoCancleMsgSnd, (UINT32)sizeof(gDansuoCancleMsgSnd), (UINT8)0U, (UINT32)sizeof(gDansuoCancleMsgSnd)); + break; + case ATS_CI_INFO_SND_SWIUNFLOCK: + (void)CommonMemSet((void*)&gSwitchUnflockMsgSnd, (UINT32)sizeof(gSwitchUnflockMsgSnd), (UINT8)0U, (UINT32)sizeof(gSwitchUnflockMsgSnd)); + break; + case ATS_CI_INFO_SND_FAULTUNLOCK: + break; + case ATS_CI_INFO_SND_SECUNFLOCK: + (void)CommonMemSet((void*)&gSecUnflockMsgSnd, (UINT32)sizeof(gSecUnflockMsgSnd), (UINT8)0U, (UINT32)sizeof(gSecUnflockMsgSnd)); + break; + case ATS_CI_INFO_SND_SIGUNFLOCK: + (void)CommonMemSet((void*)&gSignalUnflockMsgSnd, (UINT32)sizeof(gSignalUnflockMsgSnd), (UINT8)0U, (UINT32)sizeof(gSignalUnflockMsgSnd)); + break; + case ATS_CI_INFO_TYPE_SND_ZRJ: + break; + case ATS_CI_INFO_SND_PSD_UNEXCEPT: + break; + default: + break; + } +} + +/** +* @brief ٴηϢ +* @param[in] const UINT16 wMsgType, +* @return void +* @note by fan 20260603 +*/ +void ClearAtsCmdReplySnd(UINT16 chMsgType) +{ + switch (chMsgType) + { + case RCI_ATS_INFO_SND_DS_CANCEL: + (void)CommonMemSet((void*)&gDansuoCancleReplySnd, (UINT32)sizeof(gDansuoCancleReplySnd), (UINT8)0U, (UINT32)sizeof(gDansuoCancleReplySnd)); + break; + case RCI_ATS_INFO_SND_SWIUNFLOCK: + (void)CommonMemSet((void*)&gSwitchUnflockReplySnd, (UINT32)sizeof(gSwitchUnflockReplySnd), (UINT8)0U, (UINT32)sizeof(gSwitchUnflockReplySnd)); + break; + case RCI_ATS_INFO_SND_FAULTUNLOCK: + break; + case RCI_ATS_INFO_SND_SECUNFLOCK: + (void)CommonMemSet((void*)&gSecUnflockReplySnd, (UINT32)sizeof(gSecUnflockReplySnd), (UINT8)0U, (UINT32)sizeof(gSecUnflockReplySnd)); + break; + case RCI_ATS_INFO_SND_SIGUNFLOCK: + (void)CommonMemSet((void*)&gSignalUnflockReplySnd, (UINT32)sizeof(gSignalUnflockReplySnd), (UINT8)0U, (UINT32)sizeof(gSignalUnflockReplySnd)); + break; + case RCI_ATS_INFO_SND_ZRJ: + break; + case RCI_ATS_INFO_SND_PSD_UNEXCEPT: + break; + default: + break; + } +} +/** +* @brief յATS/״Ϣ鴦 +* @param[in] const UINT8* dataBuf, ݻ +* @param[in] UINT16* dataIndex, +* @param[Out] AtsFollowUpCmdFstStru* pMsgFst ״Ϣָ +* @return CI_ERROR ʧ CI_SUCCESS ɹ +* @note by fan 20260602 +*/ +UINT8 ProcessCmdFirstMsgCheck(const UINT8* dataBuf, UINT16 dataIndex, AtsFollowUpCmdFstStru* pMsgFst) +{ + UINT8 chRetVal = CI_ERROR; + UINT16 ii = 0U; + UINT32 dwCurCyc = Get2oo2CurCycleNum(); + if ((NULL != dataBuf) && (0U != dataIndex)&&(NULL != pMsgFst)) + { + chRetVal = CI_SUCCESS; + ii = dataIndex; + /*һ*/ + pMsgFst->chAtsId = dataBuf[ii++]; + pMsgFst->chRtuId = dataBuf[ii++]; + pMsgFst->wIndex = ShortFromChar(&dataBuf[ii]); /* վ */ + ii += 2u; + pMsgFst->chTiocId = dataBuf[ii++]; + pMsgFst->dwTime = LongFromChar(&dataBuf[ii]); /* ʱ */ + ii += 4u; + pMsgFst->wDevId = ShortFromChar(&dataBuf[ii]); /* 豸 */ + ii += 2u; + if (((0U == pMsgFst->chAtsId) || (0U == pMsgFst->chRtuId)) + &&(0UwIndex) + && (0U < pMsgFst->wDevId) && (UINT16_MAX > pMsgFst->wDevId) + && (0U < pMsgFst->chTiocId) && (CI_SUM_MAX> pMsgFst->chTiocId)) + { + pMsgFst->chFlag = FLAG_SET; + pMsgFst->dwCycle = dwCurCyc; + } + else + { + chRetVal = CI_ERROR; + } + } + return chRetVal; +} + +/** +* @brief յATS/ٴ鴦 +* @param[in] const UINT8* dataBuf, ݻ +* @param[in] UINT16* dataIndex, +* @param[Out] AtsFollowUpCmdSndStru* pMsgSnd ٴϢָ +* @return CI_ERROR ʧ CI_SUCCESS ɹ +* @note by fan 20260602 +*/ +UINT8 ProcessCmdSndMsgCheck(const UINT8* dataBuf, UINT16 dataIndex, AtsFollowUpCmdSndStru* pMsgSnd) +{ + UINT8 chRetVal = CI_ERROR; + UINT16 ii = 0U; + UINT32 dwCurCyc = Get2oo2CurCycleNum(); + if ((NULL != dataBuf) && (0U != dataIndex) && (NULL != pMsgSnd)) + { + chRetVal = CI_SUCCESS; + ii = dataIndex; + pMsgSnd->chAtsId = dataBuf[ii++]; + pMsgSnd->chRtuId = dataBuf[ii++]; + pMsgSnd->wIndex = ShortFromChar(&dataBuf[ii]); /* վ */ + ii += 2u; + pMsgSnd->chTiocId = dataBuf[ii++]; + pMsgSnd->dwTime = LongFromChar(&dataBuf[ii]); /* ʱ */ + ii += 4u; + pMsgSnd->wDevId = ShortFromChar(&dataBuf[ii]); /* 豸 */ + ii += 2u; + pMsgSnd->dwCrc32 = LongFromChar(&dataBuf[ii]); /* CRC32 */ + ii += 4u; + if (((0U == pMsgSnd->chAtsId) || (0U == pMsgSnd->chRtuId)) + && (0UwIndex) + && (0U < pMsgSnd->wDevId) && (UINT16_MAX > pMsgSnd->wDevId) + && (0U < pMsgSnd->chTiocId) && (CI_SUM_MAX> pMsgSnd->chTiocId)) + { + pMsgSnd->chFlag = FLAG_SET; + pMsgSnd->dwCycle = dwCurCyc; + } + else + { + chRetVal = CI_ERROR; + } + } + return chRetVal; +} +/** +* @brief ATS//ֵ ظ +* @brief ATSͨվ״̬ +* @param[in] UINT8* ciToXianDiDataBuffer CIATSֵص +* @param[out] UINT16* wDataIndex CIATSֵص +* @param[in] const UINT8 chTargetType, Ŀϵͳ +* @param[in] const UINT8 chAtsType, ats(豸0x03) +* @return +* @note by fan 20260602 +*/ +UINT8 PackCiToAtsFollowUpMsg(UINT8* ciToXianDiDataBuffer, UINT16* wDataIndex, UINT8 chTargetType, UINT8 chAtsType) +{ + UINT8 reVal = CI_ERROR; + UINT16 ii = 0U;/*α*/ + UINT16 j = 0U; + UINT16 wMsgIndex = 0u;/*֡ ʹ*/ + RCIFollowUpReplyStru * strCfmTemp = NULL;/*ظϢָ*/ + UINT16 wMagDataLenIndex = 0U; + UINT16 wMagLen = 0U;/*Ϣȼ¼*/ + UINT8 chPackCheck = CI_ERROR;/*豸ǷϢӦ*/ + UINT32 dwCurCyc = Get2oo2CurCycleNum(); + if ((NULL != ciToXianDiDataBuffer) && (NULL != wDataIndex) && + ((CI_SYSTEM_TYPE_XIANDI == chTargetType)||(CI_SYSTEM_TYPE_ATS == chTargetType))) + { + ii = *wDataIndex; + for (j = 0U; j < FOLLOWUP_MSGID_MAX; j++) + { + wMsgIndex = (UINT16)0x0300U + j* (UINT16)4U + (UINT16)2U; + /*ȡ״Ϣ*/ + strCfmTemp = GetAtsFollowUpReplyFst(wMsgIndex); + /*УݣϢЧϢڶӦ豸*/ + if ((NULL != strCfmTemp)&&(dwCurCyc == strCfmTemp->dwTime)) + { + if ((0U < strCfmTemp->chAtsId) && (CI_SYSTEM_TYPE_ATS == chTargetType) && (PACK_ATS_TYPE_GATEWAY == chAtsType)) + { + /*atsIDΪ0Ӧ豸Ϊ*/ + chPackCheck = CI_SUCCESS; + } + else if ((0U < strCfmTemp->chRtuId) && (CI_SYSTEM_TYPE_XIANDI == chTargetType)) + { + /*Rtu IDΪ0Ӧ豸Ϊֵ*/ + chPackCheck = CI_SUCCESS; + } + else if ((0U == strCfmTemp->chAtsId)&&(0U == strCfmTemp->chRtuId)&&(CI_SYSTEM_TYPE_ATS == chTargetType) && (PACK_ATS_TYPE_CENTER == chAtsType)) + { + /*ȫ0 ATS*/ + chPackCheck = CI_SUCCESS; + } + else + { + chPackCheck = CI_ERROR;/*DZ豸*/ + } + if(CI_SUCCESS == chPackCheck) + { + wMagDataLenIndex = ii; + ii += 2U; + ShortToChar(wMsgIndex, &ciToXianDiDataBuffer[ii]);/* */ + ii += 2u; + /* Ԥ2ֽ */ + ii += 2u; + ciToXianDiDataBuffer[ii++] = strCfmTemp->chTiocId; /*RC/CI*/ + ciToXianDiDataBuffer[ii++] = strCfmTemp->chRtuId; /*RTU id*/ + ShortToChar(strCfmTemp->wIndex , &ciToXianDiDataBuffer[ii]);/* վ */ + ii += 2u; + LongToChar(strCfmTemp->dwTime, &ciToXianDiDataBuffer[ii]); /* յʱ */ + ii += 4U; + ciToXianDiDataBuffer[ii++] = strCfmTemp->chOpStatus; /**/ + LongToChar(strCfmTemp->dwCrc32, &ciToXianDiDataBuffer[ii]); /* CRC */ + ii += 4U; + wMagLen = ii - wMagDataLenIndex - 2U; + /* ݳ */ + ShortToChar(wMagLen, &ciToXianDiDataBuffer[wMagDataLenIndex]); + /*޸ķ״̬*/ + } + } + if ((NULL != strCfmTemp)&& (dwCurCyc != strCfmTemp->dwTime)) + { + /*DZ*/ + strCfmTemp->chFlag = FLAG_UNSET; + } + wMsgIndex = (UINT16)0x0300U + j* (UINT16)4U + (UINT16)4U; + /*ȡٴδϢ*/ + strCfmTemp = GetAtsFollowUpReplySnd(wMsgIndex); + if ((NULL != strCfmTemp) && (dwCurCyc == strCfmTemp->dwTime)) + { + /*УݣϢϢڶӦ豸*/ + if ((0U < strCfmTemp->chAtsId) && (CI_SYSTEM_TYPE_ATS == chTargetType) && (PACK_ATS_TYPE_GATEWAY == chAtsType)) + { + /*atsIDΪ0Ӧ豸Ϊ*/ + chPackCheck = CI_SUCCESS; + } + else if ((0U < strCfmTemp->chRtuId) && (CI_SYSTEM_TYPE_XIANDI == chTargetType)) + { + /*Rtu IDΪ0Ӧ豸Ϊֵ*/ + chPackCheck = CI_SUCCESS; + } + else if ((0U == strCfmTemp->chAtsId)&&(0U == strCfmTemp->chRtuId)&&(CI_SYSTEM_TYPE_ATS == chTargetType) && (PACK_ATS_TYPE_CENTER == chAtsType)) + { + /*ȫ0 ATS*/ + chPackCheck = CI_SUCCESS; + } + else + { + chPackCheck = CI_ERROR;/*DZ豸*/ + } + if (CI_SUCCESS == chPackCheck) + { + wMagDataLenIndex = ii; + ii += 2U; + ShortToChar(wMsgIndex, &ciToXianDiDataBuffer[ii]);/* */ + ii += 2u; + /* Ԥ2ֽ */ + ii += 2u; + ciToXianDiDataBuffer[ii++] = strCfmTemp->chTiocId; /*RC/CI*/ + ciToXianDiDataBuffer[ii++] = strCfmTemp->chRtuId; /*RTU id*/ + ShortToChar(strCfmTemp->wIndex, &ciToXianDiDataBuffer[ii]);/* վ */ + ii += 2u; + LongToChar(strCfmTemp->dwTime, &ciToXianDiDataBuffer[ii]); /* յʱ */ + ii += 4U; + ciToXianDiDataBuffer[ii++] = strCfmTemp->chOpStatus; /**/ + LongToChar(strCfmTemp->dwCrc32, &ciToXianDiDataBuffer[ii]); /* CRC */ + ii += 4U; + wMagLen = ii - wMagDataLenIndex - 2U; + /* ݳ */ + ShortToChar(wMagLen, &ciToXianDiDataBuffer[wMagDataLenIndex]); + /* η*/ + } + } + if ((NULL != strCfmTemp) && (dwCurCyc != strCfmTemp->dwTime)) + { + /*DZ*/ + ClearAtsCmdReplySnd(wMsgIndex); + } + } + *wDataIndex = ii; + reVal = CI_SUCCESS; + } + else + { + ;/*ʧ*/ + } + return reVal; } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackAtsData.h b/TSCP/src/APP/ciapp/ParsePack/ParsePackAtsData.h index e55a942..f1fc982 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackAtsData.h +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackAtsData.h @@ -75,11 +75,57 @@ #define RCI_ATS_INFO_TYPE_DEVICE_STATE ((UINT16)0x0203U) /*RCI->ATS豸״̬Ϣ1ڷ*/ #define ATS_CI_INFO_TYPE_HEART_STATE ((UINT16)0x0204U) /*ATS->CI״̬Ϣڷ*/ #define ATS_CI_INFO_TYPE_CMD_CONTROL ((UINT16)0x0205U) /*ATS->CIϢATS*/ +#define ATS_CI_INFO_TYPE_GATEWAY_COMMON ((UINT16)0x0206U) /*->CIϢ֡ ATS*/ +#define RCI_ATS_INFO_TYPE_GATEWAY_COMMON ((UINT16)0x0207U) /*RC->ؼϢ㱨ڷ*/ +#define RCI_ATS_INFO_TYPE_GATEWAY_HEART ((UINT16)0x0208U) /*CI->*/ +#define ATS_CI_INFO_FST_DS_CANCEL ((UINT16)0x0301U) /*ATS->CIһATS*/ +#define RCI_ATS_INFO_FST_DS_CANCEL ((UINT16)0x0302U) /*RCI->ATS״λظһκ*/ +#define ATS_CI_INFO_SND_DS_CANCEL ((UINT16)0x0303U) /*ATS->CIATS*/ +#define RCI_ATS_INFO_SND_DS_CANCEL ((UINT16)0x0304U) /*RCI->ATSٴλظκ*/ +#define ATS_CI_INFO_FST_SWIUNFLOCK ((UINT16)0x0305U) /*ATS->CIһATS*/ +#define RCI_ATS_INFO_FST_SWIUNFLOCK ((UINT16)0x0306U) /*RCI->ATS״λظһκ*/ +#define ATS_CI_INFO_SND_SWIUNFLOCK ((UINT16)0x0307U) /*ATS->CIATS*/ +#define RCI_ATS_INFO_SND_SWIUNFLOCK ((UINT16)0x0308U) /*RCI->ATSٴλظκ*/ +#define ATS_CI_INFO_FST_FAULTUNLOCK ((UINT16)0x0309U) /*ATS->CI ʽ Ԥ*/ +#define RCI_ATS_INFO_FST_FAULTUNLOCK ((UINT16)0x030AU) /*RCI->ATSʽһλظ Ԥ*/ +#define ATS_CI_INFO_SND_FAULTUNLOCK ((UINT16)0x030BU) /*ATS->CIʽ Ԥ*/ +#define RCI_ATS_INFO_SND_FAULTUNLOCK ((UINT16)0x030CU) /*RCI->ATSʽ Ԥ*/ +#define ATS_CI_INFO_FST_SECUNFLOCK ((UINT16)0x030DU) /*ATS->CIνһATS*/ +#define RCI_ATS_INFO_FST_SECUNFLOCK ((UINT16)0x030EU) /*RCI->ATSν״λظһκ*/ +#define ATS_CI_INFO_SND_SECUNFLOCK ((UINT16)0x030FU) /*ATS->CIνATS*/ +#define RCI_ATS_INFO_SND_SECUNFLOCK ((UINT16)0x0310U) /*RCI->ATSνٴλظκ*/ +#define ATS_CI_INFO_FST_SIGUNFLOCK ((UINT16)0x0311U) /*ATS->CIźŻһATS*/ +#define RCI_ATS_INFO_FST_SIGUNFLOCK ((UINT16)0x0312U) /*RCI->ATSźŻ״λظһκ*/ +#define ATS_CI_INFO_SND_SIGUNFLOCK ((UINT16)0x0313U) /*ATS->CIźŻATS*/ +#define RCI_ATS_INFO_SND_SIGUNFLOCK ((UINT16)0x0314U) /*RCI->ATSźŻٴλظκ*/ +#define ATS_CI_INFO_FST_ZONGRENJIE ((UINT16)0x0315U) /*ATS->CI˽һATS*/ +#define RCI_ATS_INFO_FST_ZONGRENJIE ((UINT16)0x0316U) /*RCI->ATS˽״λظһκ*/ +#define ATS_CI_INFO_TYPE_SND_ZRJ ((UINT16)0x0317U) /*ATS->CI˽ATS*/ +#define RCI_ATS_INFO_SND_ZRJ ((UINT16)0x0318U) /*RCI->ATS˽ٴλظκ*/ +#define ATS_CI_INFO_FST_PSD_UNEXCEPT ((UINT16)0x0319U) /*ATS->CIվ̨쳣һATS*/ +#define RCI_ATS_INFO_FST_PSD_UNEXCEPT ((UINT16)0x031AU) /*RCI->ATSվ̨쳣״λظһκ*/ +#define ATS_CI_INFO_SND_PSD_UNEXCEPT ((UINT16)0x031BU) /*ATS->CIվ̨쳣ATS*/ +#define RCI_ATS_INFO_SND_PSD_UNEXCEPT ((UINT16)0x031CU) /*RCI->ATSվ̨쳣ٴλظκ*/ + #define SHOW_2OO2_STATE_MAIN ((UINT8)0x55U) /*ʾϵ״̬-ϵ*/ #define SHOW_2OO2_STATE_BACKUP ((UINT8)0xaaU) /*ʾϵ״̬-ϵ*/ #define SHOW_2OO2_STATE_UNKNOW ((UINT8)0xFFU) /*ʾϵ״̬-δ֪*/ +#define CONFIRM_REPLY_SUCCESS ((UINT8)1u) /*ȷϳɹ*/ +#define CONFIRM_FST_UNSET ((UINT8)2u) /*״λظδø״̬*/ +#define CONFIRM_FST_BELONGERROR ((UINT8)3u) /*״λظ豸ڱ*/ +#define CONFIRM_DEVICE_NONROUTE_SET ((UINT8)5u) /*ظǽ·Ѱ*/ + +#define CONFIRM_SND_DIFFCMD ((UINT8)2u) /*ٴλظһ*/ +#define CONFIRM_SND_FIRST_NOTFIND ((UINT8)3u) /*ٴλ״δִ*/ +#define CONFIRM_SND_CRCFAIL ((UINT8)4u) /*ٴλظCRCУʧ*/ + +#define FOLLOWUP_CONFIRM_TIMEOUT ((UINT16)400u) /*״ϢȴϢʱʱ*/ +#define PACK_ATS_TYPE_CENTER ((UINT8) 0xAAU)/*ATSϢظATSʹú󣬴ATS*/ +#define PACK_ATS_TYPE_GATEWAY ((UINT8) 0x55U) /*ATSϢظATSʹú󣬴*/ +#define FOLLOWUP_MSGID_MAX ((UINT16)7) /*ݶ࣬ʹ*/ + /*ִеϢ*/ typedef struct s_PlusBoxDataSendATS { @@ -143,6 +189,36 @@ extern UINT32 FirstCmdId; /* extern ReciveAtsCmdDataCycInfo szReciveAtsCmdDataCycInfo[ATS_SUM_MAX * 2U]; /*յATSںϢ*/ extern UINT16 gReciveAtsCmdDataDeviceSum; /*յATS豸Ŀ*/ +extern AtsFollowUpCmdFstStru gDansuoCancleMsgFst;/*ȡ״Ϣ*/ +extern RCIFollowUpReplyStru gDansuoCancleReplyFst;/*ȡ״ȷ*/ +extern AtsFollowUpCmdSndStru gDansuoCancleMsgSnd; /*ȡϢ*/ +extern RCIFollowUpReplyStru gDansuoCancleReplySnd; /*ȡȷ*/ + +extern AtsFollowUpCmdFstStru gSwitchUnflockMsgFst; /*״Ϣ*/ +extern RCIFollowUpReplyStru gSwitchUnflockReplyFst; /*״ȷ*/ +extern AtsFollowUpCmdSndStru gSwitchUnflockMsgSnd; /*Ϣ*/ +extern RCIFollowUpReplyStru gSwitchUnflockReplySnd; /*ȷ*/ + +extern AtsFollowUpCmdFstStru gSecUnflockMsgFst; /*ν״Ϣ*/ +extern RCIFollowUpReplyStru gSecUnflockReplyFst; /*ν״ȷ*/ +extern AtsFollowUpCmdSndStru gSecUnflockMsgSnd; /*νϢ*/ +extern RCIFollowUpReplyStru gSecUnflockReplySnd; /*νȷ*/ + +extern AtsFollowUpCmdFstStru gSignalUnflockMsgFst; /*źŻ״Ϣ*/ +extern RCIFollowUpReplyStru gSignalUnflockReplyFst; /*źŻ״ȷ*/ +extern AtsFollowUpCmdSndStru gSignalUnflockMsgSnd; /*źŻϢ*/ +extern RCIFollowUpReplyStru gSignalUnflockReplySnd; /*źŻȷ*/ + +extern AtsFollowUpCmdFstStru gZRJMsgFst; /*˽״Ϣ*/ +extern RCIFollowUpReplyStru gZRJReplyFst; /*˽״ȷ*/ +extern AtsFollowUpCmdSndStru gZRJMsgSnd; /*˽Ϣ*/ +extern RCIFollowUpReplyStru gZRJReplySnd; /*˽ȷ*/ + +extern AtsFollowUpCmdFstStru gCanclPsdExceptMsgFst; /*վ̨쳣״Ϣ*/ +extern RCIFollowUpReplyStru gCanclPsdExceptReplyFst; /*վ̨쳣״ȷ*/ +extern AtsFollowUpCmdSndStru gCanclPsdExceptMsgSnd; /*վ̨쳣Ϣ*/ +extern RCIFollowUpReplyStru gCanclPsdExceptReplySnd; /*վ̨쳣ȷ*/ + /* * ֡ * ˵ const UINT8* dataBuf, ݻ @@ -502,6 +578,30 @@ void SendAtsCommonStationStateDeal(UINT8* ciToXianDiDataBuffer, UINT16* wDataInd */ UINT8 ReciveAtsCmdDeal(const UINT8* dataBuf, UINT16* dataIndex, const UINT16 wDataLength); +/** +* @brief յATS֡һ +* @param[in] const UINT8* dataBuf, ݻ +* @param[in] UINT16 dataIndex, +* @param[in] const UINT16 dataLength, ݳ +* @param[in] const UINT16 wMsgType, ֡ +* @param[in]AtsFollowUpCmdFstStru* pTempTotalFstMsg, ʱ洢νһռ +* @return CI_ERROR ʧ CI_SUCCESS ɹ +* @note by fan 20260602 +*/ +UINT8 ReciveAtsFollowUpFstCmd(const UINT8* dataBuf, UINT16 dataIndex, const UINT16 wDataLength, const UINT16 wMsgType, AtsFollowUpCmdFstStru* pTempTotalFstMsg); + +/** +* @brief յATS֡ж +* @param[in] const UINT8* dataBuf, ݻ +* @param[in] UINT16 dataIndex, +* @param[in] const UINT16 dataLength, ݳ +* @param[in] const UINT16 wMsgType, ֡ +* @param[in]AtsFollowUpCmdSndStru* pTempTotalSndMsg, ʱ洢νռ +* @return CI_ERROR ʧ CI_SUCCESS ɹ +* @note by fan 20260602 +*/ +UINT8 ReciveAtsFollowUpSndCmd(const UINT8* dataBuf, UINT16 dataIndex, const UINT16 wDataLength, const UINT16 wMsgType, AtsFollowUpCmdSndStru* pTempTotalSndMsg); + /** * @brief ATSںϢ * @param[in] UINT8 chDeviceType 豸 @@ -529,6 +629,100 @@ UINT32 GetReciveCmdDataAtsCycNum(UINT8 chDeviceType, UINT8 chDeviceId); */ void PackRcOrCiDeciveCommonState(UINT8* ciToXianDiDataBuffer, UINT16* ii); +/** +* @brief ȡATSӦ״Ϣ +* @param[in] const UINT16 wMsgType, +* @return ȡATSϢ֡е״Ϣ +* @note by fan 20260602 +*/ +AtsFollowUpCmdFstStru * GetAtsFollowUpMsgFst(UINT16 chMsgType); + +/** +* @brief ȡATSӦĶϢ +* @param[in] const UINT16 wMsgType, +* @return ȡATSϢ֡еٴϢ +* @note by fan 20260602 +*/ +AtsFollowUpCmdSndStru * GetAtsFollowUpMsgSnd(UINT16 chMsgType); + +/** +* @brief ȡATSӦ״ηϢ +* @param[in] const UINT16 wMsgType, +* @return ȡATSϢ֡е״η +* @note by fan 20260602 +*/ +RCIFollowUpReplyStru * GetAtsFollowUpReplyFst(UINT16 chMsgType); +/** +* @brief ȡATSӦٴηϢ +* @param[in] const UINT16 wMsgType, +* @return ȡATSϢ֡еٴη +* @note by fan 20260602 +*/ +RCIFollowUpReplyStru * GetAtsFollowUpReplySnd(UINT16 chMsgType); + +/** +* @brief 1ATSϢ +* @param[in] const UINT16 wMsgType, +* @return void +* @note by fan 20260603 +*/ +void ClearAtsCmdMsgFst(UINT16 chMsgType); + +/** +* @brief 2ATSϢ +* @param[in] const UINT16 wMsgType, +* @return void +* @note by fan 20260603 +*/ +void ClearAtsCmdMsgSnd(UINT16 chMsgType); + +/** +* @brief ٴηϢ +* @param[in] const UINT16 wMsgType, +* @return void +* @note by fan 20260603 +*/ +void ClearAtsCmdReplySnd(UINT16 chMsgType); + +/** +* @brief ״ηϢ +* @param[in] const UINT16 wMsgType, +* @return void +* @note by fan 20260603 +*/ +void ClearAtsCmdReplyFst(UINT16 chMsgType); + +/** +* @brief ATS//ֵ ظ +* @brief ATSͨվ״̬ +* @param[in] UINT8* ciToXianDiDataBuffer CIATSֵص +* @param[out] UINT16* wDataIndex CIATSֵص +* @param[in] const UINT8 chTargetType, Ŀϵͳ +* @param[in] const UINT8 chAtsType, ats(豸0x03) +* @return +* @note by fan 20260602 +*/ +UINT8 PackCiToAtsFollowUpMsg(UINT8* ciToXianDiDataBuffer, UINT16* wDataIndex, UINT8 chTargetType, UINT8 chAtsType); +/** +* @brief յATS/״Ϣ鴦 +* @param[in] const UINT8* dataBuf, ݻ +* @param[in] UINT16* dataIndex, +* @param[Out] AtsFollowUpCmdFstStru* pMsgFst ״Ϣָ +* @return CI_ERROR ʧ CI_SUCCESS ɹ +* @note by fan 20260602 +*/ +UINT8 ProcessCmdFirstMsgCheck(const UINT8* dataBuf, UINT16 dataIndex, AtsFollowUpCmdFstStru* pMsgFst); + +/** +* @brief յATS/ٴ鴦 +* @param[in] const UINT8* dataBuf, ݻ +* @param[in] UINT16* dataIndex, +* @param[Out] AtsFollowUpCmdSndStru* pMsgSnd ٴϢָ +* @return CI_ERROR ʧ CI_SUCCESS ɹ +* @note by fan 20260602 +*/ +UINT8 ProcessCmdSndMsgCheck(const UINT8* dataBuf, UINT16 dataIndex, AtsFollowUpCmdSndStru* pMsgSnd); + #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackCommon.c b/TSCP/src/APP/ciapp/ParsePack/ParsePackCommon.c index 4bbfdf2..8879c5f 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackCommon.c +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackCommon.c @@ -26,7 +26,7 @@ #include "../DataManage/PlatDataManage.h" #include "dquCIInterFace.h" #include "NonAutoReturnDataManage.h" - +#include "ReverseCutDataManage.h" #include "2oo2InterfaceDataManage.h" PlatHeartDataStruct RecvHeartDataStru = { 0U }; /*ƽ̨֡ݽṹ*/ @@ -4338,6 +4338,8 @@ void PackCiToCimDeviceData(void) UINT32 switchCollTolerateCycNum = 0U; UINT8 chSwitchBDState = SEND_CIM_COLLTOLERATE_NO; UINT8 chSignalDsState = 0xFFU; + UINT8 chReverseState = 0xFFU; + const ReverseSwitchCfgDataStru* pReverseCfg = NULL; /*͵*/ pSwitchData = GetSwitchData(); @@ -4657,9 +4659,35 @@ void PackCiToCimDeviceData(void) ciToCimDataBuffer[ii++] = pFloodGateDataCC[deviceId].FloodGateCloseApplyIvocSum; /*Źг*/ ciToCimDataBuffer[ii++] = pFloodGateDataCC[deviceId].FloodGateCloseAnsIvocSum; /*Źгظ*/ ciToCimDataBuffer[ii++] = pFloodGateDataCC[deviceId].FloodGateAccessUTFlag; /*ŽӽǷзͨų־*/ - - } + + /*ӡй*/ + pReverseCfg = GetReverseCfgData(); + if (NULL != pReverseCfg) + { + if (0U == pReverseCfg->wId) + { + ciToCimDataBuffer[ii++] = 0U;/*п0*/ + } + else + { + ciToCimDataBuffer[ii++] = 1U;/*п1*/ + ShortToChar(pReverseCfg->wId, &ciToCimDataBuffer[ii]);/*пID (ʼֶ)*/ + ii += 2u; + chReverseState = GetReverseSwitchState(); + ciToCimDataBuffer[ii++] = chReverseState;/*п״̬*/ + ShortToChar(pReverseCfg->wRelateBoardNum, &ciToCimDataBuffer[ii]);/*а忨*/ + ii += 2u; + for (jj = 0u; jj wRelateBoardNum; jj++) + { + ShortToChar(pReverseCfg->strRelateBoardBuf[jj].wReversBoardId, &ciToCimDataBuffer[ii]);/*а忨ID*/ + ii += 2u; + chReverseState = GetReverseBoardState(pReverseCfg->strRelateBoardBuf[jj].wReversBoardId); + ciToCimDataBuffer[ii++] = chReverseState;/*а忨״̬*/ + } + } + } + /*CIM*/ debug_infor_printf((const)"\nCIM_SEND_DEVSTATE:%d", ii); debug_out_array(0xAA, ciToCimDataBuffer, ii); @@ -5549,4 +5577,131 @@ void PackCiToCimCollDiffData(void) /*ά*/ (void)DarkInfoPack(CIM_INFO_IO_COLL_DIFF_ALARM, ciToCimDataBuffer, ii); +} + +/* +* CIM˫ϵIOɼһϢ +* ˵ void +* ֵ +*/ +void PackCiToCimSwitchRedunAlarmData(void) +{ + UINT16 wSwitchCurSum = 0u; + UINT32 dwRedunHunXianAlarmCfg = 0u; + UINT16 i = 0u; + UINT16 wSwitchId = 0u; + UINT8 cRedunCollCfg = 0u; + UINT16 cAlarmCount = 0u; + UINT32 dwHunXianStCyc = 0u; + UINT8 cRedunHunXianStt = 0u; + UINT32 dwFaultStCyc = 0u; + UINT8 j = 0u; + UINT32 dwSwitchDrvStCyc = 0u; + UINT8 cTimeOut = 0u; + UINT16 wRelayId = 0u; + UINT16 wBelongOcId = 0u; + UINT16 wIndex = 1u; /*±꣬1ֽڵ*/ + UINT8 ciToCimDataBuffer[CI_TO_CIM_DATA_LEN_MAX] = { 0U }; /*鳤5000ֽڣ500*2OC*4ֽڱԽ*/ + + wSwitchCurSum = GetSwitchCurSum(); + dwRedunHunXianAlarmCfg = GetSwitchRedunCollHunXianCycCfg(); + for (i = 0u; i < wSwitchCurSum; i++) + { + wSwitchId = GetSwitchId(i); + cRedunCollCfg = GetSwitchRedunCollCfg(wSwitchId); + if (REDUN_COLL_YES == cRedunCollCfg) + { + for (j = 0u; j < SWITCH_REDUN_COLL_MAX; j++) + { + /*߱*/ + cRedunHunXianStt = GetSwitchRedunHunXianRecovStt(wSwitchId, j); + if (REDUN_HX_RECOV_ALL != cRedunHunXianStt) + { + /*жϻЧУ̱ʱٱֱӱ*/ + dwHunXianStCyc = GetSwitchRedunJudgHunXianStCyc(wSwitchId, j); + dwSwitchDrvStCyc = GetSwitchDriveStartCycNum(wSwitchId); + cTimeOut = SystemOverTimeCheck(dwHunXianStCyc, dwRedunHunXianAlarmCfg); + if ((0u == dwSwitchDrvStCyc) || (CI_TIME_OUT == cTimeOut)) + { + /**/ + cAlarmCount += 1u; + /*ID*/ + ShortToChar(wSwitchId, &ciToCimDataBuffer[wIndex]); + wIndex += 2u; + /*OC IDѡһɼ̵ѯ*/ + wRelayId = GetSwitchRedunDBJ1RelayId(wSwitchId, j); + wBelongOcId = GetRelayBelongOCId(wRelayId); + ciToCimDataBuffer[wIndex] = (UINT8)wBelongOcId; + wIndex += 1u; + /*߱*/ + ciToCimDataBuffer[wIndex] = REDUN_ALARM_HUNXIAN; + wIndex += 1u; + /*򲻱ɼ*/ + continue; + } + else + { + /**/ + } + } + else + { + /*δߣ*/ + } + + /*ɼϱ*/ + dwFaultStCyc = GetSwitchRedunFaultStCyc(wSwitchId, j); + if (0u < dwFaultStCyc) + { + /*ɼЧУ̱ʱٱֱӱ*/ + dwSwitchDrvStCyc = GetSwitchDriveStartCycNum(wSwitchId); + cTimeOut = SystemOverTimeCheck(dwFaultStCyc, dwRedunHunXianAlarmCfg); + if ((0u == dwSwitchDrvStCyc) || (CI_TIME_OUT == cTimeOut)) + { + /**/ + cAlarmCount += 1u; + /*ID*/ + ShortToChar(wSwitchId, &ciToCimDataBuffer[wIndex]); + wIndex += 2u; + /*OC IDѡһɼ̵ѯ*/ + wRelayId = GetSwitchRedunDBJ1RelayId(wSwitchId, j); + wBelongOcId = GetRelayBelongOCId(wRelayId); + ciToCimDataBuffer[wIndex] = (UINT8)wBelongOcId; + wIndex += 1u; + /*ɼϱ*/ + ciToCimDataBuffer[wIndex] = REDUN_ALARM_FAULT; + wIndex += 1u; + } + else + { + /**/ + } + } + else + { + /*δϣ*/ + } + } + } + else + { + /*߱ɼ*/ + } + } + + if ((UINT16)UINT8_MAX < cAlarmCount) + { + /*Ƿ򱨾Ϊ0*/ + ciToCimDataBuffer[0] = 0u; + (void)debug_infor_printf((const)"SwtRedunCollAlarm Err = %d\n", cAlarmCount); + (void)DarkInfoPack(CIM_INFO_SWT_REDUN_COLL_ALARM, ciToCimDataBuffer, 1u); + } + else + { + /**/ + ciToCimDataBuffer[0] = (UINT8)cAlarmCount; + (void)debug_infor_printf((const)"SwtRedunCollAlarm = %d:", cAlarmCount); + (void)debug_out_array(0xAA, ciToCimDataBuffer, wIndex); + (void)DarkInfoPack(CIM_INFO_SWT_REDUN_COLL_ALARM, ciToCimDataBuffer, wIndex); + } } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackCommon.h b/TSCP/src/APP/ciapp/ParsePack/ParsePackCommon.h index 9adef2f..dad98d2 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackCommon.h +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackCommon.h @@ -388,6 +388,13 @@ void PackCiToCimFlyProtectData(void); */ void PackCiToCimCollDiffData(void); +/* +* CIM˫ϵIOɼһϢ +* ˵ void +* ֵ +*/ +void PackCiToCimSwitchRedunAlarmData(void); + #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackDefine.h b/TSCP/src/APP/ciapp/ParsePack/ParsePackDefine.h index efae5c4..384a4cc 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackDefine.h +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackDefine.h @@ -87,23 +87,24 @@ #define CI_TO_AXIS_DATA_LEN_MAX ((UINT16)3000) /*AXISֵ*/ /*CI CIM*/ -#define CI_TO_CIM_DATA_LEN_MAX ((UINT16)5000) /*CICIMֵ*/ -#define CI_TO_AIM_DATA_LEN_MAX ((UINT16)5000) /*CIAIMֵ*/ -#define CIM_INFO_RCI_TO_ATS_DATA ((UINT16)0x2001) /*CIM ATS״̬Ϣ*/ -#define CIM_INFO_ATS_TO_RCI_DATA ((UINT16)0x2002) /*CIM ATS״̬Ϣ*/ -#define CIM_INFO_VER_INFO ((UINT16)0x2003) /*CIM汾Ϣ*/ -#define CIM_INFO_COMM_STATE ((UINT16)0x2004) /*CIM豸ͨ״̬Ϣ*/ -#define CIM_INFO_SIGNAL_DS_STATE ((UINT16)0x2005) /*CIMźŻ˿״̬Ϣ*/ -#define CIM_INFO_RELAY_DRVANDCOLLDEF ((UINT16)0x2006) /*CIM̵زɲһ±*/ -#define CIM_INFO_PSD_ALARM ((UINT16)0x2007) /*CIMű֡*/ -#define CIM_INFO_DEVICE_STATE ((UINT16)0x2008) /*CIM豸״̬Ϣ*/ -#define CIM_INFO_MAINTENANCE ((UINT16)0x2009) /*CIMάϢ*/ -#define CIM_INFO_LEU_STATE ((UINT16)0x200A) /*CIMLEU״̬*/ -#define CIM_INFOR_RELAY_HUNXIAN_STATE ((UINT16)0x200F) /*CIM̵״̬Ϣ*/ -#define CIM_INFO_SIGNAL_DRIVOUT ((UINT16)0x2010) /*CIMźŻʱϢ*/ -#define CIM_INFO_UNIT_ALARM ((UINT16)0x2011) /*CIMִеԪ*/ -#define CIM_INFO_FLYPROTECT_ALARM ((UINT16)0x2012) /*CIMɳ崻*/ -#define CIM_INFO_IO_COLL_DIFF_ALARM ((UINT16)0x2013) /*CIM IO˫ϵɼһ±*/ +#define CI_TO_CIM_DATA_LEN_MAX ((UINT16)5000) /*CICIMֵ*/ +#define CI_TO_AIM_DATA_LEN_MAX ((UINT16)5000) /*CIAIMֵ*/ +#define CIM_INFO_RCI_TO_ATS_DATA ((UINT16)0x2001) /*CIM ATS״̬Ϣ*/ +#define CIM_INFO_ATS_TO_RCI_DATA ((UINT16)0x2002) /*CIM ATS״̬Ϣ*/ +#define CIM_INFO_VER_INFO ((UINT16)0x2003) /*CIM汾Ϣ*/ +#define CIM_INFO_COMM_STATE ((UINT16)0x2004) /*CIM豸ͨ״̬Ϣ*/ +#define CIM_INFO_SIGNAL_DS_STATE ((UINT16)0x2005) /*CIMźŻ˿״̬Ϣ*/ +#define CIM_INFO_RELAY_DRVANDCOLLDEF ((UINT16)0x2006) /*CIM̵زɲһ±*/ +#define CIM_INFO_PSD_ALARM ((UINT16)0x2007) /*CIMű֡*/ +#define CIM_INFO_DEVICE_STATE ((UINT16)0x2008) /*CIM豸״̬Ϣ*/ +#define CIM_INFO_MAINTENANCE ((UINT16)0x2009) /*CIMάϢ*/ +#define CIM_INFO_LEU_STATE ((UINT16)0x200A) /*CIMLEU״̬*/ +#define CIM_INFOR_RELAY_HUNXIAN_STATE ((UINT16)0x200F) /*CIM̵״̬Ϣ*/ +#define CIM_INFO_SIGNAL_DRIVOUT ((UINT16)0x2010) /*CIMźŻʱϢ*/ +#define CIM_INFO_UNIT_ALARM ((UINT16)0x2011) /*CIMִеԪ*/ +#define CIM_INFO_FLYPROTECT_ALARM ((UINT16)0x2012) /*CIMɳ崻*/ +#define CIM_INFO_IO_COLL_DIFF_ALARM ((UINT16)0x2013) /*CIM IO˫ϵɼһ±*/ +#define CIM_INFO_SWT_REDUN_COLL_ALARM ((UINT16)0x2014) /*CIMɼ*/ #define CI_AND_OTHER_TRANSMIT_GOOD ((UINT8)0x55) /*CIϵͳ˫ͨ*/ #define CI_AND_OTHER_TRANSMIT_LINK ((UINT8)0x5A) /*CIϵͳͨ*/ diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackGateWayData.c b/TSCP/src/APP/ciapp/ParsePack/ParsePackGateWayData.c index a14b801..4ee6fc0 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackGateWayData.c +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackGateWayData.c @@ -5,6 +5,9 @@ #include "dquCIInterFace.h" #include "WLBrakeDataManage.h" #include "RRMManageAPI.h" +#include "../ParsePack/ParsePackAtsData.h" +#include "../HLHTMsgHead/HLHTCommonDataPacketHead.h" +#include "../HLHTMsgHead/HLHTHeadContexManage.h" AtsScreenMsgFstStru g_strAtsMsgFst = { 0u }; /*Զɸѡ״Ϣ*/ AtsMsgCfmStru g_strAtsCfmFst = { 0u }; /*Զɸѡ״ȷ*/ @@ -32,12 +35,13 @@ AtsMsgCfmStru g_strSndAtsWlbCfmFst = { 0U }; /* AtsMsgCfmStru g_strSndAtsDaCfmFst = { 0U }; /*ڶATSȡѹ״ȷ*/ /** -* @brief ֡ +* @brief ֡---GALϢ * @param const UINT8* dataBuf, ݻ -* @param const UINT16 dataLength, ݳ +* @param[out] UINT16* dataIndex, +* @param[in] const UINT16 dataLength, ݳ * @return CI_SUCCESS:ɹCI_ERROR:ʧ */ -UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength) +UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, UINT16* dataIndex, const UINT16 dataLength) { UINT8 chRtn = CI_ERROR; UINT8 chRtn1 = CI_SUCCESS; @@ -71,10 +75,10 @@ UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength) UINT8 szCrcTmp[1024] = { 0U }; - if ((NULL != dataBuf) && (0u < dataLength)) + if ((NULL != dataBuf) && (0u < dataLength)&&(NULL !=dataIndex)) { + ii = *dataIndex; chLocalId = GetSystemParaLocalCiId(); - /* Ϣ */ chMsgNum = dataBuf[ii++]; /* ݰ汾 */ @@ -1557,7 +1561,7 @@ UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength) if (CI_SUCCESS == chRtn) { - ; /**/ + *dataIndex = ii; } else { @@ -1839,13 +1843,12 @@ void ClearAtsDaMsgSecond(void) } /** -* @brief TIOC +* @brief TIOC--Ϣ * @param * @return CI_ERRORʧܣCI_SUCCESSɹ */ -UINT8 PackTiocToGateWayData(const UINT8 deviceId, const UINT8 targetDevType) +UINT8 PackTiocToGateWayData(UINT8* szToGateWayDataBuf, const UINT8 targetDevType, UINT16* wDataIndex) { - UINT8 szToGateWayDataBuf[CI_TO_ATS_DATA_LEN_MAX] = { 0u }; UINT16 ii = 0u; UINT16 jj = 0U; UINT16 wMsgNumIndex = 0u; @@ -1861,7 +1864,6 @@ UINT8 PackTiocToGateWayData(const UINT8 deviceId, const UINT8 targetDevType) UINT8 chTrainIndex = 0u; UINT32 dwTrainId = 0u; UINT16 wMsgLen = 0u; - UINT16 wDstDevId = 0u; UINT16 wTrainLgcId = 0u; UINT8 chEaNum = 0u; UINT16 wEaTrainid = 0u; @@ -1894,826 +1896,820 @@ UINT8 PackTiocToGateWayData(const UINT8 deviceId, const UINT8 targetDevType) TrainFlyProtectStru * pFlyData = NULL; wRcId = (UINT16)chLocalId; /* RCţ */ - - /* Ϣλ */ - ii++; - - chRtn = GetCiEmapCheckVer(chLocalId, &dwDataVer, targetDevType); - if (CI_SUCCESS == chRtn) - {/* ݰ汾 */ - LongToChar(dwDataVer, &szToGateWayDataBuf[ii]); - ii += 4u; - } - else + if ((NULL != szToGateWayDataBuf) && (NULL != wDataIndex)) { - ; - } + ii = *wDataIndex; + wMsgNumIndex = ii; + /* Ϣλ */ + ii++; - if (CI_SUCCESS == chRtn) - {/* Э汾 */ - LongToChar(GATE_WAY_PRTCL_VER, &szToGateWayDataBuf[ii]); - ii += 4u; - } - else - { - ; - } - if (0U == dwFlyProtectOverCyc) - { + chRtn = GetCiEmapCheckVer(chLocalId, &dwDataVer, targetDevType); if (CI_SUCCESS == chRtn) - {/* TIOC㱨ATSԶɸѡгϢ */ - szToGateWayDataBuf[ii++] = MSG_TYPE_REPORT; /* 㱨ԶɸѡгϢ֡ */ - wMsgLenIndex = ii; /* ¼֡ȴ± */ - ii += 2u; - szToGateWayDataBuf[ii++] = MSG_TYPE_REPORT; - ShortToChar(GATE_WAY_APP_PRTCL_VER, &szToGateWayDataBuf[ii]); /* ӦЭ汾 */ - ii += 2u; - szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ - chAtsScreenNum = GetAtsScreenNum(); - szToGateWayDataBuf[ii++] = chAtsScreenNum; /* Զɸѡг */ - for (chTrainIndex = 0u; chTrainIndex < chAtsScreenNum; chTrainIndex++) - { - wTrainId = GetAtsScreenTrainIdByIndex(chTrainIndex); - chRtn = dquDevName2HlhtId(wTrainId, wTrainLgcId, &dwTrainId); - chScreenType = GetAtsScreenTypeByIndex(chTrainIndex); - wLgcId = GetAtsScreenLgcIdByIndex(chTrainIndex); - chTrainPosMonitorState = GetTrainPosMonitorState(wTrainId); - chTrainNvramFlag = GetTrainNvramPosFlag(wTrainId); + {/* ݰ汾 */ + LongToChar(dwDataVer, &szToGateWayDataBuf[ii]); + ii += 4u; + } + else + { + ; + } - LongToChar(dwTrainId, &szToGateWayDataBuf[ii]); /* гID */ - ii += 4u; - - if (TRAIN_SCREEN_TYPE_LU == chScreenType) + if (CI_SUCCESS == chRtn) + {/* Э汾 */ + LongToChar(GATE_WAY_PRTCL_VER, &szToGateWayDataBuf[ii]); + ii += 4u; + } + else + { + ; + } + if (0U == dwFlyProtectOverCyc) + { + if (CI_SUCCESS == chRtn) + {/* TIOC㱨ATSԶɸѡгϢ */ + szToGateWayDataBuf[ii++] = MSG_TYPE_REPORT; /* 㱨ԶɸѡгϢ֡ */ + wMsgLenIndex = ii; /* ¼֡ȴ± */ + ii += 2u; + szToGateWayDataBuf[ii++] = MSG_TYPE_REPORT; + ShortToChar(GATE_WAY_APP_PRTCL_VER, &szToGateWayDataBuf[ii]); /* ӦЭ汾 */ + ii += 2u; + szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ + chAtsScreenNum = GetAtsScreenNum(); + szToGateWayDataBuf[ii++] = chAtsScreenNum; /* Զɸѡг */ + for (chTrainIndex = 0u; chTrainIndex < chAtsScreenNum; chTrainIndex++) { - if ((TRAIN_POS_MONITOR_VALID == chTrainPosMonitorState) || (TRAIN_NVRAM_POS_FLAG_NO == chTrainNvramFlag)) - { - szToGateWayDataBuf[ii++] = TRAIN_SCREEN_TYPE_LU; /* Զɸѡ */ - } - else - { - szToGateWayDataBuf[ii++] = TRAIN_SCREEN_TYPE_POSTION_LOST; /* ලλЧɸѡ */ - } - - } - else - { - szToGateWayDataBuf[ii++] = chScreenType; - } + wTrainId = GetAtsScreenTrainIdByIndex(chTrainIndex); + chRtn = dquDevName2HlhtId(wTrainId, wTrainLgcId, &dwTrainId); + chScreenType = GetAtsScreenTypeByIndex(chTrainIndex); + wLgcId = GetAtsScreenLgcIdByIndex(chTrainIndex); + chTrainPosMonitorState = GetTrainPosMonitorState(wTrainId); + chTrainNvramFlag = GetTrainNvramPosFlag(wTrainId); - ShortToChar(wLgcId, &szToGateWayDataBuf[ii]); /* г߼ */ - ii += 2u; - } - wMsgLen = (ii - wMsgLenIndex - 2u); - ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ - chMsgNum++; /* Ϣ */ - } - else - { - ; - } - - if (CI_SUCCESS == chRtn) - { - if (FLAG_SET == g_strAtsCfmFst.chFlag) - { - szToGateWayDataBuf[ii++] = MSG_TYPE_CONFIRM_FIRST; /* ֡ */ - wMsgLenIndex = ii; /* ¼֡ȴ± */ - ii += 2u; - szToGateWayDataBuf[ii++] = MSG_TYPE_CONFIRM_FIRST; - szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ - szToGateWayDataBuf[ii++] = g_strAtsCfmFst.chStation; /* վ */ - ShortToChar(g_strAtsCfmFst.wIndex, &szToGateWayDataBuf[ii]); /* վ */ - ii += 2U; - LongToChar(g_strAtsCfmFst.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ - ii += 4u; - szToGateWayDataBuf[ii++] = g_strAtsCfmFst.chOpStatus; /* ȷϽ */ - LongToChar(g_strAtsCfmFst.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ - ii += 4u; - wMsgLen = (ii - wMsgLenIndex - 2u); - ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ - chMsgNum++; /* Ϣ */ - } - else - { - ; - } - g_strAtsCfmFst.chFlag = FLAG_UNSET; - } - else - { - ; - } - - if (CI_SUCCESS == chRtn) - { - /*ڶATSԶɸѡ״ȷϢ*/ - if (FLAG_SET == g_strSndAtsCfmFst.chFlag) - { - szToGateWayDataBuf[ii] = MSG_TYPE_CONFIRM_FIRST; /* ֡ */ - ii++; - wMsgLenIndex = ii; /* ¼֡ȴ± */ - ii += 2U; - szToGateWayDataBuf[ii] = MSG_TYPE_CONFIRM_FIRST; - ii++; - szToGateWayDataBuf[ii] = chLocalId; /* TIOC */ - ii++; - szToGateWayDataBuf[ii] = g_strSndAtsCfmFst.chStation; /* վ */ - ii++; - ShortToChar(g_strSndAtsCfmFst.wIndex, &szToGateWayDataBuf[ii]); /* վ */ - ii += 2U; - LongToChar(g_strSndAtsCfmFst.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ - ii += 4U; - szToGateWayDataBuf[ii] = g_strSndAtsCfmFst.chOpStatus; /* ȷϽ */ - ii++; - LongToChar(g_strSndAtsCfmFst.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ - ii += 4U; - wMsgLen = (ii - wMsgLenIndex - 2U); - ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ - chMsgNum++; /* Ϣ */ - - /*ڶATSȷϢ*/ - ClearSndAtsScreenFstCfmMsg(); - } - else - { - ; - } - } - else - { - ; - } - - if (CI_SUCCESS == chRtn) - { - if (FLAG_SET == g_strAtsCfmSnd.chFlag) - { - szToGateWayDataBuf[ii++] = MSG_TYPE_CONFIRM_SECOND; /* ֡ */ - wMsgLenIndex = ii; /* ¼֡ȴ± */ - ii += 2u; - szToGateWayDataBuf[ii++] = MSG_TYPE_CONFIRM_SECOND; - szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ - szToGateWayDataBuf[ii++] = g_strAtsCfmSnd.chStation; /* վ */ - ShortToChar(g_strAtsCfmSnd.wIndex, &szToGateWayDataBuf[ii]); /* վ */ - ii += 2U; - LongToChar(g_strAtsCfmSnd.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ - ii += 4u; - szToGateWayDataBuf[ii++] = g_strAtsCfmSnd.chOpStatus; /* ȷϽ */ - LongToChar(g_strAtsCfmSnd.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ - ii += 4u; - wMsgLen = (ii - wMsgLenIndex - 2u); - ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ - chMsgNum++; /* Ϣ */ - } - else - { - ; - } - g_strAtsCfmSnd.chFlag = FLAG_UNSET; - } - else - { - ; - } - - if (CI_SUCCESS == chRtn) - { - /* TIOC㱨ATSɢϢ */ - szToGateWayDataBuf[ii++] = MSG_TYPE_EA_REPORT; /* ɢ㱨Ϣ */ - wMsgLenIndex = ii; /* ¼֡ȴ± */ - ii += 2u; - szToGateWayDataBuf[ii++] = MSG_TYPE_EA_REPORT; - ShortToChar(GATE_WAY_APP_PRTCL_VER, &szToGateWayDataBuf[ii]); /* ӦЭ汾 */ - ii += 2u; - szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ - - chEaNum = GetEaNum(); - if (EA_MAX_NUM < chEaNum) - { - chRtn = CI_ERROR; - } - else - { - chEaSendNum = 0u; - wEaNumIndex = ii; /* ¼㱨洢± */ - ii++; - - for (chEaIndex = 0u; chEaIndex < chEaNum; chEaIndex++) - { - wEaTrainid = GetEvacuatingTrainIdByIndex(chEaIndex); - chRtn = dquDevName2HlhtId(wEaTrainid, wTrainLgcId, &dwEaTrainHlhtId); - chEaLgcNum = EaGetLgcNum(chEaIndex); - pEaLgcId = EaGetLgcId(chEaIndex); - chEaBuidFlag = GetEaBuildedFlag(chEaIndex); - chEaSrcId = GetEaSrcTiocByIndex(chEaIndex); - chPaType = GetPaTypeByIndex(chEaIndex); - chEaConfigId = GetEaConfigID(chEaIndex); - chEaAreaLineType = GetEaAreaLineType(chEaIndex); - if ((NULL == pEaLgcId) || (CI_ERROR == chRtn) || (EA_SECTION_MAX_NUM < chEaLgcNum) - || ((PA_TYPE_DA != chPaType) && (PA_TYPE_EA != chPaType))) - { - chRtn = CI_ERROR; - break; - } - else - { - if ((chEaSrcId == chLocalId) && (PA_TYPE_EA == chPaType)) - { - chEaSendNum++; - LongToChar(dwEaTrainHlhtId, &szToGateWayDataBuf[ii]); /* ɢгͨID */ - ii += 4u; - - szToGateWayDataBuf[ii++] = chEaConfigId; /* ID*/ - - szToGateWayDataBuf[ii++] = chEaBuidFlag; /* ־ */ - - szToGateWayDataBuf[ii++] = chEaAreaLineType; /* */ - - szToGateWayDataBuf[ii++] = chEaLgcNum; /* ߼ */ - for (chEaLgcIndex = 0u; chEaLgcIndex < chEaLgcNum; chEaLgcIndex++) - { - ShortToChar(pEaLgcId[chEaLgcIndex], &szToGateWayDataBuf[ii]); - ii += 2u; - } - } - else - { - ; /* ǽ㱨ATS */ - } - } - } - - szToGateWayDataBuf[wEaNumIndex] = chEaSendNum; /* 㱨 */ - - wMsgLen = (ii - wMsgLenIndex - 2u); - ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ - chMsgNum++; /* Ϣ */ - } - } - else - { - ; - } - - if (CI_SUCCESS == chRtn) - { - if (FLAG_SET == g_strAtsEaCfmFst.chFlag) - { - szToGateWayDataBuf[ii++] = MSG_TYPE_EA_CONFIRM_FIRST; /* ֡ */ - wMsgLenIndex = ii; /* ¼֡ȴ± */ - ii += 2u; - szToGateWayDataBuf[ii++] = MSG_TYPE_EA_CONFIRM_FIRST; - szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ - szToGateWayDataBuf[ii++] = g_strAtsEaCfmFst.chStation; /* վ */ - ShortToChar(g_strAtsEaCfmFst.wIndex, &szToGateWayDataBuf[ii]); /* վ */ - ii += 2U; - LongToChar(g_strAtsEaCfmFst.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ - ii += 4u; - szToGateWayDataBuf[ii++] = g_strAtsEaCfmFst.chOpStatus; /* ȷϽ */ - LongToChar(g_strAtsEaCfmFst.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ - ii += 4u; - wMsgLen = (ii - wMsgLenIndex - 2u); - ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ - chMsgNum++; /* Ϣ */ - } - else - { - ; - } - g_strAtsEaCfmFst.chFlag = FLAG_UNSET; - } - else - { - ; - } - - if (CI_SUCCESS == chRtn) - { - /*ڶATSȡɢ״ȷϢ*/ - if (FLAG_SET == g_strSndAtsEaCfmFst.chFlag) - { - szToGateWayDataBuf[ii] = MSG_TYPE_EA_CONFIRM_FIRST; /* ֡ */ - ii++; - wMsgLenIndex = ii; /* ¼֡ȴ± */ - ii += 2U; - szToGateWayDataBuf[ii] = MSG_TYPE_EA_CONFIRM_FIRST; - ii++; - szToGateWayDataBuf[ii] = chLocalId; /* TIOC */ - ii++; - szToGateWayDataBuf[ii] = g_strSndAtsEaCfmFst.chStation; /* վ */ - ii++; - ShortToChar(g_strSndAtsEaCfmFst.wIndex, &szToGateWayDataBuf[ii]); /* վ */ - ii += 2U; - LongToChar(g_strSndAtsEaCfmFst.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ - ii += 4U; - szToGateWayDataBuf[ii] = g_strSndAtsEaCfmFst.chOpStatus; /* ȷϽ */ - ii++; - LongToChar(g_strSndAtsEaCfmFst.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ - ii += 4U; - wMsgLen = (ii - wMsgLenIndex - 2U); - ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ - chMsgNum++; /* Ϣ */ - - /*ڶATSȷϢ*/ - ClearSndAtsEaFstCfmMsg(); - } - else - { - ; - } - } - else - { - ; - } - - if (CI_SUCCESS == chRtn) - { - if (FLAG_SET == g_strAtsEaCfmSnd.chFlag) - { - szToGateWayDataBuf[ii++] = MSG_TYPE_EA_CONFIRM_SECOND; /* ֡ */ - wMsgLenIndex = ii; /* ¼֡ȴ± */ - ii += 2u; - szToGateWayDataBuf[ii++] = MSG_TYPE_EA_CONFIRM_SECOND; - szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ - szToGateWayDataBuf[ii++] = g_strAtsEaCfmSnd.chStation; /* վ */ - ShortToChar(g_strAtsEaCfmSnd.wIndex, &szToGateWayDataBuf[ii]); /* վ */ - ii += 2U; - LongToChar(g_strAtsEaCfmSnd.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ - ii += 4u; - szToGateWayDataBuf[ii++] = g_strAtsEaCfmSnd.chOpStatus; /* ȷϽ */ - LongToChar(g_strAtsEaCfmSnd.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ - ii += 4u; - wMsgLen = (ii - wMsgLenIndex - 2u); - ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ - chMsgNum++; /* Ϣ */ - } - else - { - ; - } - g_strAtsEaCfmSnd.chFlag = FLAG_UNSET; - } - else - { - ; - } - - if (CI_SUCCESS == chRtn) - { - /* TIOC㱨ATSȫгƶϢ */ - szToGateWayDataBuf[ii++] = MSG_TYPE_WLB_REPORT; /* ȫгƶ㱨Ϣ */ - wMsgLenIndex = ii; /* ¼֡ȴ± */ - ii += 2u; - szToGateWayDataBuf[ii++] = MSG_TYPE_WLB_REPORT; - szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ - - wWlbSum = 0U; - wWlbSumIndex = ii; - ii += 2U; - - /*ȫ߽ƶϢ*/ - chWlbState = WlbGetState(); - if (WLB_UNSET != chWlbState) - { - wWlbSum++; - szToGateWayDataBuf[ii++] = WLB_TYPE_RC; /* ƶ */ - ShortToChar(wRcId, &szToGateWayDataBuf[ii]); /* RC */ - ii += 2u; - } - else - { - /* δã */ - } - - /*ƶϢ*/ - wPhyCurSum = GetPhySecCurSum(); - for (jj = 0U; jj < wPhyCurSum; jj++) - { - wPhySecId = GetPhySecId(jj); - cPhySecAreaUrgentState = GetPhySecAreaUrgentState(wPhySecId); - if (PHYSEC_AREA_URGENT_NO != cPhySecAreaUrgentState) - { - wWlbSum++; - szToGateWayDataBuf[ii++] = WLB_TYPE_PHYSEC; /* ƶ */ - ShortToChar(wPhySecId, &szToGateWayDataBuf[ii]); /* α */ - ii += 2U; - } - else - { - /**/ - } - } - - ShortToChar(wWlbSum, &szToGateWayDataBuf[wWlbSumIndex]); /* ƶ */ - - wMsgLen = (ii - wMsgLenIndex - 2u); - ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ - chMsgNum++; /* Ϣ */ - } - else - { - ; - } - - if (CI_SUCCESS == chRtn) - { - if (FLAG_SET == g_strAtsWlbCfmFst.chFlag) - { - szToGateWayDataBuf[ii++] = MSG_TYPE_WLB_CONFIRM_FIRST; /* ֡ */ - wMsgLenIndex = ii; /* ¼֡ȴ± */ - ii += 2u; - szToGateWayDataBuf[ii++] = MSG_TYPE_WLB_CONFIRM_FIRST; - szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ - szToGateWayDataBuf[ii++] = g_strAtsWlbCfmFst.chStation; /* վ */ - ShortToChar(g_strAtsWlbCfmFst.wIndex, &szToGateWayDataBuf[ii]); /* վ */ - ii += 2U; - LongToChar(g_strAtsWlbCfmFst.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ - ii += 4u; - szToGateWayDataBuf[ii++] = g_strAtsWlbCfmFst.chOpStatus; /* ȷϽ */ - LongToChar(g_strAtsWlbCfmFst.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ - ii += 4u; - wMsgLen = (ii - wMsgLenIndex - 2u); - ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ - chMsgNum++; /* Ϣ */ - } - else - { - ; - } - g_strAtsWlbCfmFst.chFlag = FLAG_UNSET; - } - else - { - ; - } - - if (CI_SUCCESS == chRtn) - { - /*ڶATSȫ߽ƶ״ȷϢ*/ - if (FLAG_SET == g_strSndAtsWlbCfmFst.chFlag) - { - szToGateWayDataBuf[ii] = MSG_TYPE_WLB_CONFIRM_FIRST; /* ֡ */ - ii++; - wMsgLenIndex = ii; /* ¼֡ȴ± */ - ii += 2U; - szToGateWayDataBuf[ii] = MSG_TYPE_WLB_CONFIRM_FIRST; - ii++; - szToGateWayDataBuf[ii] = chLocalId; /* TIOC */ - ii++; - szToGateWayDataBuf[ii] = g_strSndAtsWlbCfmFst.chStation; /* վ */ - ii++; - ShortToChar(g_strSndAtsWlbCfmFst.wIndex, &szToGateWayDataBuf[ii]); /* վ */ - ii += 2U; - LongToChar(g_strSndAtsWlbCfmFst.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ - ii += 4U; - szToGateWayDataBuf[ii] = g_strSndAtsWlbCfmFst.chOpStatus; /* ȷϽ */ - ii++; - LongToChar(g_strSndAtsWlbCfmFst.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ - ii += 4U; - wMsgLen = (ii - wMsgLenIndex - 2U); - ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ - chMsgNum++; /* Ϣ */ - - /*ڶATSȷϢ*/ - ClearSndAtsWlbFstCfmMsg(); - } - else - { - ; - } - } - else - { - ; - } - - if (CI_SUCCESS == chRtn) - { - if (FLAG_SET == g_strAtsWlbCfmSnd.chFlag) - { - szToGateWayDataBuf[ii++] = MSG_TYPE_WLB_CONFIRM_SECOND; /* ֡ */ - wMsgLenIndex = ii; /* ¼֡ȴ± */ - ii += 2u; - szToGateWayDataBuf[ii++] = MSG_TYPE_WLB_CONFIRM_SECOND; - szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ - szToGateWayDataBuf[ii++] = g_strAtsWlbCfmSnd.chStation; /* վ */ - ShortToChar(g_strAtsWlbCfmSnd.wIndex, &szToGateWayDataBuf[ii]); /* վ */ - ii += 2U; - LongToChar(g_strAtsWlbCfmSnd.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ - ii += 4u; - szToGateWayDataBuf[ii++] = g_strAtsWlbCfmSnd.chOpStatus; /* ȷϽ */ - LongToChar(g_strAtsWlbCfmSnd.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ - ii += 4u; - wMsgLen = (ii - wMsgLenIndex - 2u); - ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ - chMsgNum++; /* Ϣ */ - } - else - { - ; - } - g_strAtsWlbCfmSnd.chFlag = FLAG_UNSET; - } - else - { - ; - } - - if (CI_SUCCESS == chRtn) - { - /* TIOC㱨ATSѹϢ */ - szToGateWayDataBuf[ii++] = MSG_TYPE_DA_REPORT; /* ѹ㱨Ϣ */ - wMsgLenIndex = ii; /* ¼֡ȴ± */ - ii += 2u; - szToGateWayDataBuf[ii++] = MSG_TYPE_DA_REPORT; - ShortToChar(GATE_WAY_APP_PRTCL_VER, &szToGateWayDataBuf[ii]); /* ӦЭ汾 */ - ii += 2u; - szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ - - chEaNum = GetEaNum(); - if (EA_MAX_NUM < chEaNum) - { - chRtn = CI_ERROR; - } - else - { - chEaSendNum = 0u; - wEaNumIndex = ii; /* ¼㱨洢± */ - ii++; - - for (chEaIndex = 0u; chEaIndex < chEaNum; chEaIndex++) - { - wEaTrainid = GetEvacuatingTrainIdByIndex(chEaIndex); - chRtn = dquDevName2HlhtId(wEaTrainid, wTrainLgcId, &dwEaTrainHlhtId); - chEaLgcNum = EaGetLgcNum(chEaIndex); - pEaLgcId = EaGetLgcId(chEaIndex); - chEaBuidFlag = GetEaBuildedFlag(chEaIndex); - chEaSrcId = GetEaSrcTiocByIndex(chEaIndex); - chPaType = GetPaTypeByIndex(chEaIndex); - chEaAreaLineType = GetEaAreaLineType(chEaIndex); - - if ((NULL == pEaLgcId) || (CI_ERROR == chRtn) || (EA_SECTION_MAX_NUM < chEaLgcNum) - || ((PA_TYPE_DA != chPaType) && (PA_TYPE_EA != chPaType))) - { - chRtn = CI_ERROR; - break; - } - else - { - if ((chEaSrcId == chLocalId) && (PA_TYPE_DA == chPaType)) - { - chEaSendNum++; - LongToChar(dwEaTrainHlhtId, &szToGateWayDataBuf[ii]); /* ɢгͨID */ - ii += 4u; - - szToGateWayDataBuf[ii++] = chEaAreaLineType; /* */ - - szToGateWayDataBuf[ii++] = chEaLgcNum; /* ߼ */ - for (chEaLgcIndex = 0u; chEaLgcIndex < chEaLgcNum; chEaLgcIndex++) - { - ShortToChar(pEaLgcId[chEaLgcIndex], &szToGateWayDataBuf[ii]); - ii += 2u; - } - } - else - { - ; /* ǽ㱨ATS */ - } - } - } - - szToGateWayDataBuf[wEaNumIndex] = chEaSendNum; /* 㱨 */ - - wMsgLen = (ii - wMsgLenIndex - 2u); - ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ - chMsgNum++; /* Ϣ */ - } - } - else - { - ; - } - - if (CI_SUCCESS == chRtn) - { - if (FLAG_SET == g_strAtsDaCfmFst.chFlag) - { - szToGateWayDataBuf[ii++] = MSG_TYPE_DA_CONFIRM_FIRST; /* ֡ */ - wMsgLenIndex = ii; /* ¼֡ȴ± */ - ii += 2u; - szToGateWayDataBuf[ii++] = MSG_TYPE_DA_CONFIRM_FIRST; - szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ - szToGateWayDataBuf[ii++] = g_strAtsDaCfmFst.chStation; /* վ */ - ShortToChar(g_strAtsDaCfmFst.wIndex, &szToGateWayDataBuf[ii]); /* վ */ - ii += 2U; - LongToChar(g_strAtsDaCfmFst.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ - ii += 4u; - szToGateWayDataBuf[ii++] = g_strAtsDaCfmFst.chOpStatus; /* ȷϽ */ - LongToChar(g_strAtsDaCfmFst.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ - ii += 4u; - wMsgLen = (ii - wMsgLenIndex - 2u); - ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ - chMsgNum++; /* Ϣ */ - } - else - { - ; - } - g_strAtsDaCfmFst.chFlag = FLAG_UNSET; - } - else - { - ; - } - - if (CI_SUCCESS == chRtn) - { - /*ڶATSȡ״ȷϢ*/ - if (FLAG_SET == g_strSndAtsDaCfmFst.chFlag) - { - szToGateWayDataBuf[ii] = MSG_TYPE_DA_CONFIRM_FIRST; /* ֡ */ - ii++; - wMsgLenIndex = ii; /* ¼֡ȴ± */ - ii += 2U; - szToGateWayDataBuf[ii] = MSG_TYPE_DA_CONFIRM_FIRST; - ii++; - szToGateWayDataBuf[ii] = chLocalId; /* TIOC */ - ii++; - szToGateWayDataBuf[ii] = g_strSndAtsDaCfmFst.chStation; /* վ */ - ii++; - ShortToChar(g_strSndAtsDaCfmFst.wIndex, &szToGateWayDataBuf[ii]); /* վ */ - ii += 2U; - LongToChar(g_strSndAtsDaCfmFst.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ - ii += 4U; - szToGateWayDataBuf[ii] = g_strSndAtsDaCfmFst.chOpStatus; /* ȷϽ */ - ii++; - LongToChar(g_strSndAtsDaCfmFst.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ - ii += 4U; - wMsgLen = (ii - wMsgLenIndex - 2U); - ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ - chMsgNum++; /* Ϣ */ - - /*ڶATSȷϢ*/ - ClearSndAtsDaFstCfmMsg(); - } - else - { - ; - } - } - else - { - ; - } - - if (CI_SUCCESS == chRtn) - { - if (FLAG_SET == g_strAtsDaCfmSnd.chFlag) - { - szToGateWayDataBuf[ii++] = MSG_TYPE_DA_CONFIRM_SECOND; /* ֡ */ - wMsgLenIndex = ii; /* ¼֡ȴ± */ - ii += 2u; - szToGateWayDataBuf[ii++] = MSG_TYPE_DA_CONFIRM_SECOND; - szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ - szToGateWayDataBuf[ii++] = g_strAtsDaCfmSnd.chStation; /* վ */ - ShortToChar(g_strAtsDaCfmSnd.wIndex, &szToGateWayDataBuf[ii]); /* վ */ - ii += 2U; - LongToChar(g_strAtsDaCfmSnd.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ - ii += 4u; - szToGateWayDataBuf[ii++] = g_strAtsDaCfmSnd.chOpStatus; /* ȷϽ */ - LongToChar(g_strAtsDaCfmSnd.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ - ii += 4u; - wMsgLen = (ii - wMsgLenIndex - 2u); - ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ - chMsgNum++; /* Ϣ */ - } - else - { - ; - } - g_strAtsDaCfmSnd.chFlag = FLAG_UNSET; - } - else - { - ; - } - - if (CI_SUCCESS == chRtn) - { - /* TIOC㱨ATSгϢ */ - rrm_GetInfToATSUCTInfo(&strTrainInfo); - szToGateWayDataBuf[ii++] = MSG_TYPE_TRIAN_INFO_REPORT; /* 㱨ԶɸѡгϢ֡ */ - wMsgLenIndex = ii; /* ¼֡ȴ± */ - ii += 2u; - szToGateWayDataBuf[ii++] = MSG_TYPE_TRIAN_INFO_REPORT; - ShortToChar(GATE_WAY_APP_PRTCL_VER, &szToGateWayDataBuf[ii]); /* ӦЭ汾 */ - ii += 2u; - szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ - szToGateWayDataBuf[ii++] = strTrainInfo.trainCnt; /* г */ - for (chTrainIndex = 0u; chTrainIndex < strTrainInfo.trainCnt; chTrainIndex++) - { - (void)dquDevName2HlhtId(strTrainInfo.TrainID[chTrainIndex], wTrainLgcId, &dwTrainId); - LongToChar(dwTrainId, &szToGateWayDataBuf[ii]); /* гͨID */ - ii += 4u; - - ShortToChar(strTrainInfo.TailSecID[chTrainIndex], &szToGateWayDataBuf[ii]); /* гβ߼ */ - ii += 2u; - } - wMsgLen = (ii - wMsgLenIndex - 2u); - ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ - chMsgNum++; /* Ϣ */ - } - else - { - ; - } - } - else - { - /*ɳ崻Ϣ*/ - szToGateWayDataBuf[ii++] = MSG_TYPE_TRAIN_FLY_INFO; /* ֡ */ - wMsgLenIndex = ii; /* ¼֡ȴ± */ - ii += 2u; - szToGateWayDataBuf[ii++] = MSG_TYPE_TRAIN_FLY_INFO; - - ShortToChar(GATE_WAY_APP_PRTCL_VER, &szToGateWayDataBuf[ii]); /* ӦЭ汾 */ - ii += 2u; - szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ - - FlyProtectTrainNum = GetFlyProtectNum(); - if (SHUT_DOWN_TRAIN_NUMMAX < FlyProtectTrainNum) - { - chRtn = CI_ERROR; - } - else - { - szToGateWayDataBuf[ii++] = FlyProtectTrainNum; /*ɳг*/ - for (chIndex = 0U; chIndex < FlyProtectTrainNum; chIndex++) - { - pFlyData = GetFlyProtectData(chIndex); - wTrainId = pFlyData->wTrainId; - TrainFlyAxis = pFlyData->flyProtectSecCnt; - chRtn = dquDevName2HlhtId((UINT16)(CI_SYSTEM_TYPE_IVOC * 256U) + wTrainId, 0U, &dwTrainId); /*ֽгIDתΪ4ֽڻͨID*/ - if (chRtn == CI_SUCCESS) - {/*ͨIDѯɹ*/ LongToChar(dwTrainId, &szToGateWayDataBuf[ii]); /* гID */ ii += 4u; - /** ȡͨųӦİid */ - - if (TRAIN_FLYALARM_SECNUM_MAX < TrainFlyAxis) + + if (TRAIN_SCREEN_TYPE_LU == chScreenType) { - chRtn = CI_ERROR; + if ((TRAIN_POS_MONITOR_VALID == chTrainPosMonitorState) || (TRAIN_NVRAM_POS_FLAG_NO == chTrainNvramFlag)) + { + szToGateWayDataBuf[ii++] = TRAIN_SCREEN_TYPE_LU; /* Զɸѡ */ + } + else + { + szToGateWayDataBuf[ii++] = TRAIN_SCREEN_TYPE_POSTION_LOST; /* ලλЧɸѡ */ + } + } else { - szToGateWayDataBuf[ii++] = TrainFlyAxis; /* */ - /* ȡ id*/ - for (jj = 0U; jj < TrainFlyAxis; jj++) + szToGateWayDataBuf[ii++] = chScreenType; + } + + ShortToChar(wLgcId, &szToGateWayDataBuf[ii]); /* г߼ */ + ii += 2u; + } + wMsgLen = (ii - wMsgLenIndex - 2u); + ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ + chMsgNum++; /* Ϣ */ + } + else + { + ; + } + + if (CI_SUCCESS == chRtn) + { + if (FLAG_SET == g_strAtsCfmFst.chFlag) + { + szToGateWayDataBuf[ii++] = MSG_TYPE_CONFIRM_FIRST; /* ֡ */ + wMsgLenIndex = ii; /* ¼֡ȴ± */ + ii += 2u; + szToGateWayDataBuf[ii++] = MSG_TYPE_CONFIRM_FIRST; + szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ + szToGateWayDataBuf[ii++] = g_strAtsCfmFst.chStation; /* վ */ + ShortToChar(g_strAtsCfmFst.wIndex, &szToGateWayDataBuf[ii]); /* վ */ + ii += 2U; + LongToChar(g_strAtsCfmFst.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ + ii += 4u; + szToGateWayDataBuf[ii++] = g_strAtsCfmFst.chOpStatus; /* ȷϽ */ + LongToChar(g_strAtsCfmFst.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ + ii += 4u; + wMsgLen = (ii - wMsgLenIndex - 2u); + ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ + chMsgNum++; /* Ϣ */ + } + else + { + ; + } + g_strAtsCfmFst.chFlag = FLAG_UNSET; + } + else + { + ; + } + + if (CI_SUCCESS == chRtn) + { + /*ڶATSԶɸѡ״ȷϢ*/ + if (FLAG_SET == g_strSndAtsCfmFst.chFlag) + { + szToGateWayDataBuf[ii] = MSG_TYPE_CONFIRM_FIRST; /* ֡ */ + ii++; + wMsgLenIndex = ii; /* ¼֡ȴ± */ + ii += 2U; + szToGateWayDataBuf[ii] = MSG_TYPE_CONFIRM_FIRST; + ii++; + szToGateWayDataBuf[ii] = chLocalId; /* TIOC */ + ii++; + szToGateWayDataBuf[ii] = g_strSndAtsCfmFst.chStation; /* վ */ + ii++; + ShortToChar(g_strSndAtsCfmFst.wIndex, &szToGateWayDataBuf[ii]); /* վ */ + ii += 2U; + LongToChar(g_strSndAtsCfmFst.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ + ii += 4U; + szToGateWayDataBuf[ii] = g_strSndAtsCfmFst.chOpStatus; /* ȷϽ */ + ii++; + LongToChar(g_strSndAtsCfmFst.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ + ii += 4U; + wMsgLen = (ii - wMsgLenIndex - 2U); + ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ + chMsgNum++; /* Ϣ */ + + /*ڶATSȷϢ*/ + ClearSndAtsScreenFstCfmMsg(); + } + else + { + ; + } + } + else + { + ; + } + + if (CI_SUCCESS == chRtn) + { + if (FLAG_SET == g_strAtsCfmSnd.chFlag) + { + szToGateWayDataBuf[ii++] = MSG_TYPE_CONFIRM_SECOND; /* ֡ */ + wMsgLenIndex = ii; /* ¼֡ȴ± */ + ii += 2u; + szToGateWayDataBuf[ii++] = MSG_TYPE_CONFIRM_SECOND; + szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ + szToGateWayDataBuf[ii++] = g_strAtsCfmSnd.chStation; /* վ */ + ShortToChar(g_strAtsCfmSnd.wIndex, &szToGateWayDataBuf[ii]); /* վ */ + ii += 2U; + LongToChar(g_strAtsCfmSnd.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ + ii += 4u; + szToGateWayDataBuf[ii++] = g_strAtsCfmSnd.chOpStatus; /* ȷϽ */ + LongToChar(g_strAtsCfmSnd.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ + ii += 4u; + wMsgLen = (ii - wMsgLenIndex - 2u); + ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ + chMsgNum++; /* Ϣ */ + } + else + { + ; + } + g_strAtsCfmSnd.chFlag = FLAG_UNSET; + } + else + { + ; + } + + if (CI_SUCCESS == chRtn) + { + /* TIOC㱨ATSɢϢ */ + szToGateWayDataBuf[ii++] = MSG_TYPE_EA_REPORT; /* ɢ㱨Ϣ */ + wMsgLenIndex = ii; /* ¼֡ȴ± */ + ii += 2u; + szToGateWayDataBuf[ii++] = MSG_TYPE_EA_REPORT; + ShortToChar(GATE_WAY_APP_PRTCL_VER, &szToGateWayDataBuf[ii]); /* ӦЭ汾 */ + ii += 2u; + szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ + + chEaNum = GetEaNum(); + if (EA_MAX_NUM < chEaNum) + { + chRtn = CI_ERROR; + } + else + { + chEaSendNum = 0u; + wEaNumIndex = ii; /* ¼㱨洢± */ + ii++; + + for (chEaIndex = 0u; chEaIndex < chEaNum; chEaIndex++) + { + wEaTrainid = GetEvacuatingTrainIdByIndex(chEaIndex); + chRtn = dquDevName2HlhtId(wEaTrainid, wTrainLgcId, &dwEaTrainHlhtId); + chEaLgcNum = EaGetLgcNum(chEaIndex); + pEaLgcId = EaGetLgcId(chEaIndex); + chEaBuidFlag = GetEaBuildedFlag(chEaIndex); + chEaSrcId = GetEaSrcTiocByIndex(chEaIndex); + chPaType = GetPaTypeByIndex(chEaIndex); + chEaConfigId = GetEaConfigID(chEaIndex); + chEaAreaLineType = GetEaAreaLineType(chEaIndex); + if ((NULL == pEaLgcId) || (CI_ERROR == chRtn) || (EA_SECTION_MAX_NUM < chEaLgcNum) + || ((PA_TYPE_DA != chPaType) && (PA_TYPE_EA != chPaType))) { - wPhySecId = pFlyData->flyProtectSec[jj]; - ShortToChar(wPhySecId, &szToGateWayDataBuf[ii]); - ii += 2u; + chRtn = CI_ERROR; + break; + } + else + { + if ((chEaSrcId == chLocalId) && (PA_TYPE_EA == chPaType)) + { + chEaSendNum++; + LongToChar(dwEaTrainHlhtId, &szToGateWayDataBuf[ii]); /* ɢгͨID */ + ii += 4u; + + szToGateWayDataBuf[ii++] = chEaConfigId; /* ID*/ + + szToGateWayDataBuf[ii++] = chEaBuidFlag; /* ־ */ + + szToGateWayDataBuf[ii++] = chEaAreaLineType; /* */ + + szToGateWayDataBuf[ii++] = chEaLgcNum; /* ߼ */ + for (chEaLgcIndex = 0u; chEaLgcIndex < chEaLgcNum; chEaLgcIndex++) + { + ShortToChar(pEaLgcId[chEaLgcIndex], &szToGateWayDataBuf[ii]); + ii += 2u; + } + } + else + { + ; /* ǽ㱨ATS */ + } } } - } - else - { /*ʧ*/ - chRtn = CI_ERROR; + szToGateWayDataBuf[wEaNumIndex] = chEaSendNum; /* 㱨 */ + + wMsgLen = (ii - wMsgLenIndex - 2u); + ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ + chMsgNum++; /* Ϣ */ } } - wMsgLen = (ii - wMsgLenIndex - 2u); - ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ - } + else + { + ; + } - if (CI_SUCCESS == chRtn) - { - debug_infor_printf((const)"\n GATEWAY_FLY_SHUT_DOWN \n"); - chMsgNum = 1U; - } - } - if (CI_SUCCESS == chRtn) - { - /* ɹϢ */ - szToGateWayDataBuf[wMsgNumIndex] = chMsgNum; - wDstDevId = (UINT16)(((UINT16)targetDevType << 8U) | (UINT16)deviceId); - chRtn = OutnetSafeSend(wDstDevId, 0u, &szToGateWayDataBuf[0], ii); - if (CI_SUCCESS == chRtn) - { - debug_infor_printf((const)"\nGATEWAY_SEND:%d", ii); - debug_out_array(0xAA, szToGateWayDataBuf, ii); + if (CI_SUCCESS == chRtn) + { + if (FLAG_SET == g_strAtsEaCfmFst.chFlag) + { + szToGateWayDataBuf[ii++] = MSG_TYPE_EA_CONFIRM_FIRST; /* ֡ */ + wMsgLenIndex = ii; /* ¼֡ȴ± */ + ii += 2u; + szToGateWayDataBuf[ii++] = MSG_TYPE_EA_CONFIRM_FIRST; + szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ + szToGateWayDataBuf[ii++] = g_strAtsEaCfmFst.chStation; /* վ */ + ShortToChar(g_strAtsEaCfmFst.wIndex, &szToGateWayDataBuf[ii]); /* վ */ + ii += 2U; + LongToChar(g_strAtsEaCfmFst.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ + ii += 4u; + szToGateWayDataBuf[ii++] = g_strAtsEaCfmFst.chOpStatus; /* ȷϽ */ + LongToChar(g_strAtsEaCfmFst.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ + ii += 4u; + wMsgLen = (ii - wMsgLenIndex - 2u); + ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ + chMsgNum++; /* Ϣ */ + } + else + { + ; + } + g_strAtsEaCfmFst.chFlag = FLAG_UNSET; + } + else + { + ; + } + + if (CI_SUCCESS == chRtn) + { + /*ڶATSȡɢ״ȷϢ*/ + if (FLAG_SET == g_strSndAtsEaCfmFst.chFlag) + { + szToGateWayDataBuf[ii] = MSG_TYPE_EA_CONFIRM_FIRST; /* ֡ */ + ii++; + wMsgLenIndex = ii; /* ¼֡ȴ± */ + ii += 2U; + szToGateWayDataBuf[ii] = MSG_TYPE_EA_CONFIRM_FIRST; + ii++; + szToGateWayDataBuf[ii] = chLocalId; /* TIOC */ + ii++; + szToGateWayDataBuf[ii] = g_strSndAtsEaCfmFst.chStation; /* վ */ + ii++; + ShortToChar(g_strSndAtsEaCfmFst.wIndex, &szToGateWayDataBuf[ii]); /* վ */ + ii += 2U; + LongToChar(g_strSndAtsEaCfmFst.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ + ii += 4U; + szToGateWayDataBuf[ii] = g_strSndAtsEaCfmFst.chOpStatus; /* ȷϽ */ + ii++; + LongToChar(g_strSndAtsEaCfmFst.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ + ii += 4U; + wMsgLen = (ii - wMsgLenIndex - 2U); + ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ + chMsgNum++; /* Ϣ */ + + /*ڶATSȷϢ*/ + ClearSndAtsEaFstCfmMsg(); + } + else + { + ; + } + } + else + { + ; + } + + if (CI_SUCCESS == chRtn) + { + if (FLAG_SET == g_strAtsEaCfmSnd.chFlag) + { + szToGateWayDataBuf[ii++] = MSG_TYPE_EA_CONFIRM_SECOND; /* ֡ */ + wMsgLenIndex = ii; /* ¼֡ȴ± */ + ii += 2u; + szToGateWayDataBuf[ii++] = MSG_TYPE_EA_CONFIRM_SECOND; + szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ + szToGateWayDataBuf[ii++] = g_strAtsEaCfmSnd.chStation; /* վ */ + ShortToChar(g_strAtsEaCfmSnd.wIndex, &szToGateWayDataBuf[ii]); /* վ */ + ii += 2U; + LongToChar(g_strAtsEaCfmSnd.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ + ii += 4u; + szToGateWayDataBuf[ii++] = g_strAtsEaCfmSnd.chOpStatus; /* ȷϽ */ + LongToChar(g_strAtsEaCfmSnd.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ + ii += 4u; + wMsgLen = (ii - wMsgLenIndex - 2u); + ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ + chMsgNum++; /* Ϣ */ + } + else + { + ; + } + g_strAtsEaCfmSnd.chFlag = FLAG_UNSET; + } + else + { + ; + } + + if (CI_SUCCESS == chRtn) + { + /* TIOC㱨ATSȫгƶϢ */ + szToGateWayDataBuf[ii++] = MSG_TYPE_WLB_REPORT; /* ȫгƶ㱨Ϣ */ + wMsgLenIndex = ii; /* ¼֡ȴ± */ + ii += 2u; + szToGateWayDataBuf[ii++] = MSG_TYPE_WLB_REPORT; + szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ + + wWlbSum = 0U; + wWlbSumIndex = ii; + ii += 2U; + + /*ȫ߽ƶϢ*/ + chWlbState = WlbGetState(); + if (WLB_UNSET != chWlbState) + { + wWlbSum++; + szToGateWayDataBuf[ii++] = WLB_TYPE_RC; /* ƶ */ + ShortToChar(wRcId, &szToGateWayDataBuf[ii]); /* RC */ + ii += 2u; + } + else + { + /* δã */ + } + + /*ƶϢ*/ + wPhyCurSum = GetPhySecCurSum(); + for (jj = 0U; jj < wPhyCurSum; jj++) + { + wPhySecId = GetPhySecId(jj); + cPhySecAreaUrgentState = GetPhySecAreaUrgentState(wPhySecId); + if (PHYSEC_AREA_URGENT_NO != cPhySecAreaUrgentState) + { + wWlbSum++; + szToGateWayDataBuf[ii++] = WLB_TYPE_PHYSEC; /* ƶ */ + ShortToChar(wPhySecId, &szToGateWayDataBuf[ii]); /* α */ + ii += 2U; + } + else + { + /**/ + } + } + + ShortToChar(wWlbSum, &szToGateWayDataBuf[wWlbSumIndex]); /* ƶ */ + + wMsgLen = (ii - wMsgLenIndex - 2u); + ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ + chMsgNum++; /* Ϣ */ + } + else + { + ; + } + + if (CI_SUCCESS == chRtn) + { + if (FLAG_SET == g_strAtsWlbCfmFst.chFlag) + { + szToGateWayDataBuf[ii++] = MSG_TYPE_WLB_CONFIRM_FIRST; /* ֡ */ + wMsgLenIndex = ii; /* ¼֡ȴ± */ + ii += 2u; + szToGateWayDataBuf[ii++] = MSG_TYPE_WLB_CONFIRM_FIRST; + szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ + szToGateWayDataBuf[ii++] = g_strAtsWlbCfmFst.chStation; /* վ */ + ShortToChar(g_strAtsWlbCfmFst.wIndex, &szToGateWayDataBuf[ii]); /* վ */ + ii += 2U; + LongToChar(g_strAtsWlbCfmFst.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ + ii += 4u; + szToGateWayDataBuf[ii++] = g_strAtsWlbCfmFst.chOpStatus; /* ȷϽ */ + LongToChar(g_strAtsWlbCfmFst.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ + ii += 4u; + wMsgLen = (ii - wMsgLenIndex - 2u); + ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ + chMsgNum++; /* Ϣ */ + } + else + { + ; + } + g_strAtsWlbCfmFst.chFlag = FLAG_UNSET; + } + else + { + ; + } + + if (CI_SUCCESS == chRtn) + { + /*ڶATSȫ߽ƶ״ȷϢ*/ + if (FLAG_SET == g_strSndAtsWlbCfmFst.chFlag) + { + szToGateWayDataBuf[ii] = MSG_TYPE_WLB_CONFIRM_FIRST; /* ֡ */ + ii++; + wMsgLenIndex = ii; /* ¼֡ȴ± */ + ii += 2U; + szToGateWayDataBuf[ii] = MSG_TYPE_WLB_CONFIRM_FIRST; + ii++; + szToGateWayDataBuf[ii] = chLocalId; /* TIOC */ + ii++; + szToGateWayDataBuf[ii] = g_strSndAtsWlbCfmFst.chStation; /* վ */ + ii++; + ShortToChar(g_strSndAtsWlbCfmFst.wIndex, &szToGateWayDataBuf[ii]); /* վ */ + ii += 2U; + LongToChar(g_strSndAtsWlbCfmFst.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ + ii += 4U; + szToGateWayDataBuf[ii] = g_strSndAtsWlbCfmFst.chOpStatus; /* ȷϽ */ + ii++; + LongToChar(g_strSndAtsWlbCfmFst.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ + ii += 4U; + wMsgLen = (ii - wMsgLenIndex - 2U); + ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ + chMsgNum++; /* Ϣ */ + + /*ڶATSȷϢ*/ + ClearSndAtsWlbFstCfmMsg(); + } + else + { + ; + } + } + else + { + ; + } + + if (CI_SUCCESS == chRtn) + { + if (FLAG_SET == g_strAtsWlbCfmSnd.chFlag) + { + szToGateWayDataBuf[ii++] = MSG_TYPE_WLB_CONFIRM_SECOND; /* ֡ */ + wMsgLenIndex = ii; /* ¼֡ȴ± */ + ii += 2u; + szToGateWayDataBuf[ii++] = MSG_TYPE_WLB_CONFIRM_SECOND; + szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ + szToGateWayDataBuf[ii++] = g_strAtsWlbCfmSnd.chStation; /* վ */ + ShortToChar(g_strAtsWlbCfmSnd.wIndex, &szToGateWayDataBuf[ii]); /* վ */ + ii += 2U; + LongToChar(g_strAtsWlbCfmSnd.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ + ii += 4u; + szToGateWayDataBuf[ii++] = g_strAtsWlbCfmSnd.chOpStatus; /* ȷϽ */ + LongToChar(g_strAtsWlbCfmSnd.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ + ii += 4u; + wMsgLen = (ii - wMsgLenIndex - 2u); + ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ + chMsgNum++; /* Ϣ */ + } + else + { + ; + } + g_strAtsWlbCfmSnd.chFlag = FLAG_UNSET; + } + else + { + ; + } + + if (CI_SUCCESS == chRtn) + { + /* TIOC㱨ATSѹϢ */ + szToGateWayDataBuf[ii++] = MSG_TYPE_DA_REPORT; /* ѹ㱨Ϣ */ + wMsgLenIndex = ii; /* ¼֡ȴ± */ + ii += 2u; + szToGateWayDataBuf[ii++] = MSG_TYPE_DA_REPORT; + ShortToChar(GATE_WAY_APP_PRTCL_VER, &szToGateWayDataBuf[ii]); /* ӦЭ汾 */ + ii += 2u; + szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ + + chEaNum = GetEaNum(); + if (EA_MAX_NUM < chEaNum) + { + chRtn = CI_ERROR; + } + else + { + chEaSendNum = 0u; + wEaNumIndex = ii; /* ¼㱨洢± */ + ii++; + + for (chEaIndex = 0u; chEaIndex < chEaNum; chEaIndex++) + { + wEaTrainid = GetEvacuatingTrainIdByIndex(chEaIndex); + chRtn = dquDevName2HlhtId(wEaTrainid, wTrainLgcId, &dwEaTrainHlhtId); + chEaLgcNum = EaGetLgcNum(chEaIndex); + pEaLgcId = EaGetLgcId(chEaIndex); + chEaBuidFlag = GetEaBuildedFlag(chEaIndex); + chEaSrcId = GetEaSrcTiocByIndex(chEaIndex); + chPaType = GetPaTypeByIndex(chEaIndex); + chEaAreaLineType = GetEaAreaLineType(chEaIndex); + + if ((NULL == pEaLgcId) || (CI_ERROR == chRtn) || (EA_SECTION_MAX_NUM < chEaLgcNum) + || ((PA_TYPE_DA != chPaType) && (PA_TYPE_EA != chPaType))) + { + chRtn = CI_ERROR; + break; + } + else + { + if ((chEaSrcId == chLocalId) && (PA_TYPE_DA == chPaType)) + { + chEaSendNum++; + LongToChar(dwEaTrainHlhtId, &szToGateWayDataBuf[ii]); /* ɢгͨID */ + ii += 4u; + + szToGateWayDataBuf[ii++] = chEaAreaLineType; /* */ + + szToGateWayDataBuf[ii++] = chEaLgcNum; /* ߼ */ + for (chEaLgcIndex = 0u; chEaLgcIndex < chEaLgcNum; chEaLgcIndex++) + { + ShortToChar(pEaLgcId[chEaLgcIndex], &szToGateWayDataBuf[ii]); + ii += 2u; + } + } + else + { + ; /* ǽ㱨ATS */ + } + } + } + + szToGateWayDataBuf[wEaNumIndex] = chEaSendNum; /* 㱨 */ + + wMsgLen = (ii - wMsgLenIndex - 2u); + ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ + chMsgNum++; /* Ϣ */ + } + } + else + { + ; + } + + if (CI_SUCCESS == chRtn) + { + if (FLAG_SET == g_strAtsDaCfmFst.chFlag) + { + szToGateWayDataBuf[ii++] = MSG_TYPE_DA_CONFIRM_FIRST; /* ֡ */ + wMsgLenIndex = ii; /* ¼֡ȴ± */ + ii += 2u; + szToGateWayDataBuf[ii++] = MSG_TYPE_DA_CONFIRM_FIRST; + szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ + szToGateWayDataBuf[ii++] = g_strAtsDaCfmFst.chStation; /* վ */ + ShortToChar(g_strAtsDaCfmFst.wIndex, &szToGateWayDataBuf[ii]); /* վ */ + ii += 2U; + LongToChar(g_strAtsDaCfmFst.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ + ii += 4u; + szToGateWayDataBuf[ii++] = g_strAtsDaCfmFst.chOpStatus; /* ȷϽ */ + LongToChar(g_strAtsDaCfmFst.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ + ii += 4u; + wMsgLen = (ii - wMsgLenIndex - 2u); + ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ + chMsgNum++; /* Ϣ */ + } + else + { + ; + } + g_strAtsDaCfmFst.chFlag = FLAG_UNSET; + } + else + { + ; + } + + if (CI_SUCCESS == chRtn) + { + /*ڶATSȡ״ȷϢ*/ + if (FLAG_SET == g_strSndAtsDaCfmFst.chFlag) + { + szToGateWayDataBuf[ii] = MSG_TYPE_DA_CONFIRM_FIRST; /* ֡ */ + ii++; + wMsgLenIndex = ii; /* ¼֡ȴ± */ + ii += 2U; + szToGateWayDataBuf[ii] = MSG_TYPE_DA_CONFIRM_FIRST; + ii++; + szToGateWayDataBuf[ii] = chLocalId; /* TIOC */ + ii++; + szToGateWayDataBuf[ii] = g_strSndAtsDaCfmFst.chStation; /* վ */ + ii++; + ShortToChar(g_strSndAtsDaCfmFst.wIndex, &szToGateWayDataBuf[ii]); /* վ */ + ii += 2U; + LongToChar(g_strSndAtsDaCfmFst.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ + ii += 4U; + szToGateWayDataBuf[ii] = g_strSndAtsDaCfmFst.chOpStatus; /* ȷϽ */ + ii++; + LongToChar(g_strSndAtsDaCfmFst.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ + ii += 4U; + wMsgLen = (ii - wMsgLenIndex - 2U); + ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ + chMsgNum++; /* Ϣ */ + + /*ڶATSȷϢ*/ + ClearSndAtsDaFstCfmMsg(); + } + else + { + ; + } + } + else + { + ; + } + + if (CI_SUCCESS == chRtn) + { + if (FLAG_SET == g_strAtsDaCfmSnd.chFlag) + { + szToGateWayDataBuf[ii++] = MSG_TYPE_DA_CONFIRM_SECOND; /* ֡ */ + wMsgLenIndex = ii; /* ¼֡ȴ± */ + ii += 2u; + szToGateWayDataBuf[ii++] = MSG_TYPE_DA_CONFIRM_SECOND; + szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ + szToGateWayDataBuf[ii++] = g_strAtsDaCfmSnd.chStation; /* վ */ + ShortToChar(g_strAtsDaCfmSnd.wIndex, &szToGateWayDataBuf[ii]); /* վ */ + ii += 2U; + LongToChar(g_strAtsDaCfmSnd.dwTime, &szToGateWayDataBuf[ii]); /* ʱ */ + ii += 4u; + szToGateWayDataBuf[ii++] = g_strAtsDaCfmSnd.chOpStatus; /* ȷϽ */ + LongToChar(g_strAtsDaCfmSnd.dwCrc32, &szToGateWayDataBuf[ii]); /* CRC */ + ii += 4u; + wMsgLen = (ii - wMsgLenIndex - 2u); + ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ + chMsgNum++; /* Ϣ */ + } + else + { + ; + } + g_strAtsDaCfmSnd.chFlag = FLAG_UNSET; + } + else + { + ; + } + + if (CI_SUCCESS == chRtn) + { + /* TIOC㱨ATSгϢ */ + rrm_GetInfToATSUCTInfo(&strTrainInfo); + szToGateWayDataBuf[ii++] = MSG_TYPE_TRIAN_INFO_REPORT; /* 㱨ԶɸѡгϢ֡ */ + wMsgLenIndex = ii; /* ¼֡ȴ± */ + ii += 2u; + szToGateWayDataBuf[ii++] = MSG_TYPE_TRIAN_INFO_REPORT; + ShortToChar(GATE_WAY_APP_PRTCL_VER, &szToGateWayDataBuf[ii]); /* ӦЭ汾 */ + ii += 2u; + szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ + szToGateWayDataBuf[ii++] = strTrainInfo.trainCnt; /* г */ + for (chTrainIndex = 0u; chTrainIndex < strTrainInfo.trainCnt; chTrainIndex++) + { + (void)dquDevName2HlhtId(strTrainInfo.TrainID[chTrainIndex], wTrainLgcId, &dwTrainId); + LongToChar(dwTrainId, &szToGateWayDataBuf[ii]); /* гͨID */ + ii += 4u; + + ShortToChar(strTrainInfo.TailSecID[chTrainIndex], &szToGateWayDataBuf[ii]); /* гβ߼ */ + ii += 2u; + } + wMsgLen = (ii - wMsgLenIndex - 2u); + ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ + chMsgNum++; /* Ϣ */ + } + else + { + ; + } } else { - ; + /*ɳ崻Ϣ*/ + szToGateWayDataBuf[ii++] = MSG_TYPE_TRAIN_FLY_INFO; /* ֡ */ + wMsgLenIndex = ii; /* ¼֡ȴ± */ + ii += 2u; + szToGateWayDataBuf[ii++] = MSG_TYPE_TRAIN_FLY_INFO; + + ShortToChar(GATE_WAY_APP_PRTCL_VER, &szToGateWayDataBuf[ii]); /* ӦЭ汾 */ + ii += 2u; + szToGateWayDataBuf[ii++] = chLocalId; /* TIOC */ + + FlyProtectTrainNum = GetFlyProtectNum(); + if (SHUT_DOWN_TRAIN_NUMMAX < FlyProtectTrainNum) + { + chRtn = CI_ERROR; + } + else + { + szToGateWayDataBuf[ii++] = FlyProtectTrainNum; /*ɳг*/ + for (chIndex = 0U; chIndex < FlyProtectTrainNum; chIndex++) + { + pFlyData = GetFlyProtectData(chIndex); + wTrainId = pFlyData->wTrainId; + TrainFlyAxis = pFlyData->flyProtectSecCnt; + chRtn = dquDevName2HlhtId((UINT16)(CI_SYSTEM_TYPE_IVOC * 256U) + wTrainId, 0U, &dwTrainId); /*ֽгIDתΪ4ֽڻͨID*/ + if (chRtn == CI_SUCCESS) + {/*ͨIDѯɹ*/ + LongToChar(dwTrainId, &szToGateWayDataBuf[ii]); /* гID */ + ii += 4u; + /** ȡͨųӦİid */ + + if (TRAIN_FLYALARM_SECNUM_MAX < TrainFlyAxis) + { + chRtn = CI_ERROR; + } + else + { + szToGateWayDataBuf[ii++] = TrainFlyAxis; /* */ + /* ȡ id*/ + for (jj = 0U; jj < TrainFlyAxis; jj++) + { + wPhySecId = pFlyData->flyProtectSec[jj]; + ShortToChar(wPhySecId, &szToGateWayDataBuf[ii]); + ii += 2u; + } + } + + } + else + { /*ʧ*/ + chRtn = CI_ERROR; + } + } + wMsgLen = (ii - wMsgLenIndex - 2u); + ShortToChar(wMsgLen, &szToGateWayDataBuf[wMsgLenIndex]); /* ֡ */ + } + + if (CI_SUCCESS == chRtn) + { + debug_infor_printf((char*)"\n GATEWAY_FLY_SHUT_DOWN \n"); + chMsgNum = 1U; + } + } + if (CI_SUCCESS == chRtn) + { + /* ɹϢ */ + szToGateWayDataBuf[wMsgNumIndex] = chMsgNum; + *wDataIndex = ii; } } else { ; } - + return chRtn; } @@ -2813,4 +2809,580 @@ void ClearSndAtsWlbFstCfmMsg(void) void ClearSndAtsDaFstCfmMsg(void) { (void)CommonMemSet((void*)&g_strSndAtsDaCfmFst, (UINT32)sizeof(AtsMsgCfmStru), (UINT8)0U, (UINT32)sizeof(AtsMsgCfmStru)); +} + +/** +* @brief ֡--սӿGAL +* @param const UINT8* dataBuf, ݻ +* @param const UINT16 dataLength, ݳ +* @return CI_SUCCESS:ɹCI_ERROR:ʧ +* @note Created By fan 20260604 +*/ +UINT8 ParseGateWayToCiDataProc(const UINT8* dataBuf, const UINT16 dataLength) +{ + UINT8 chAtsInterfaceType = 0U; /*ATSӿ*/ + UINT8 chGalHeadSaved = 0u; /*ͨͷǷѱ־1棻0δ*/ + UINT16 ii = 0U; /**/ + UINT8 chRetVal = CI_ERROR; + HLHTGALInfoStruct hlhtGalHead = { 0U }; /*ͨͷ*/ + UINT8 chHeadReval = CI_ERROR; /*ͨͷ*/ + UINT16 wTiocRcvAtsGtwyDevTypeId = 0U; + UINT8 chLocalCiId = GetSystemParaLocalCiId();/*ID*/ + UINT16 wRemoteDevName = 0U; /*Է豸Ϣ*/ + UINT32 dwErrCode = 0U; /*ͨñͷ¼*/ + UINT32 dwCurCycNum = Get2oo2CurCycleNum(); /*ǰں*/ + UINT32 dwCiAndAtsTimeOutTime = 0u; /*ATSͨжʱ*/ + INT32 remainValidiy = 0; /*ʣʱǷЧ*/ + UINT32 dwCiCurappCycleTime = 0u; /*ǰ*/ + UINT16 wMsgLen = 0U; /*һӦݳ*/ + UINT16 wTmpDataLen = 0U; /*ݳʱ¼*/ + UINT16 wMsgType = 0U; /**/ + UINT16 wMsgCheckLen = 0U; /* ֡ݳ*/ + UINT8 chCurSystemAreaState = 0U; /*ǰϵͳ״̬*/ + UINT32 dwReciveCmdDataAtsCycNum = 0U; /*յATSʱATSں*/ + UINT32 dwSystemUpdateMainUseCycNum = 0U; /*ϵͳʼں*/ + UINT8 chExistCmdDataFlag = 0U; /*ݱ־*/ + UINT8 chDeciveId = 0U; /*ID*/ + AtsFollowUpCmdFstStru tempFstCmd[FOLLOWUP_MSGID_MAX] = { 0U };/*һʱ洢*/ + AtsFollowUpCmdSndStru tempSndCmd[FOLLOWUP_MSGID_MAX] = { 0U };/*ʱ洢*/ + UINT16 wIndex = 0U;/*ʱϢ洢*/ + UINT16 wMsgTypeTmp = 0U;/*ȫֱϢ*/ + AtsFollowUpCmdFstStru *pGlobalFst = NULL; + AtsFollowUpCmdSndStru *pGlobalSnd = NULL; + wTiocRcvAtsGtwyDevTypeId = GetTiocTrnsmtGtwyDevTypeId(); + chDeciveId =(UINT8)(wTiocRcvAtsGtwyDevTypeId & 0x00FFU); + if ((NULL != dataBuf) && (0u < dataLength)) + { + chAtsInterfaceType = GetCiFunctionSwitchConfig(FUNC_GATEWAY_INTERFACE_IDENTIFIER); + + if (ATS_INTERFACE_EXIST_GAL != chAtsInterfaceType) + { + /*ݽṹֻϢ*/ + chRetVal = ParseGateWayToCiDataFrame(dataBuf, &ii, dataLength); + } + else + { + /*ݽṹGALͷҴ֡Ϣ֡*/ + /*ͨϢͷ*/ + hlhtGalHead.devInterInfoType = ShortFromChar(&dataBuf[ii]); + ii += 2U; + hlhtGalHead.sourceId = LongFromChar(&dataBuf[ii]); + ii += 4U; + hlhtGalHead.destId = LongFromChar(&dataBuf[ii]); + ii += 4U; + hlhtGalHead.emapVerCrc = LongFromChar(&dataBuf[ii]); + ii += 4U; + hlhtGalHead.crntOwnMsgSN = LongFromChar(&dataBuf[ii]); + ii += 4U; + hlhtGalHead.comPeriod = ShortFromChar(&dataBuf[ii]); + ii += 2U; + hlhtGalHead.recvOppMsgSN = LongFromChar(&dataBuf[ii]); + ii += 4U; + hlhtGalHead.preOwnMsgSN = LongFromChar(&dataBuf[ii]); + ii += 4U; + hlhtGalHead.prtclVer = dataBuf[ii++]; + hlhtGalHead.totalDataLen = ShortFromChar(&dataBuf[ii]); + ii += 2U; + + wRemoteDevName = (CI_SYSTEM_TYPE_RCI)* 256U + chLocalCiId; + chHeadReval = HLHTRecvCommonPacketHeadCheck(wTiocRcvAtsGtwyDevTypeId, wRemoteDevName, ATS_CI_INTERFACE_INFOTYPE, 1U, &hlhtGalHead, &dwErrCode, 0U, CI_SYSTEM_TYPE_ATS); + + debug_infor_printf((char*)"\nGateWay%#x GAL Check Result:%d errCode:%d\n", wTiocRcvAtsGtwyDevTypeId, chHeadReval, dwErrCode); /*0x55ȷ0xaa0x33ʼͨ֡*/ + + if (HLHT_HEAD_SUCCESS == chHeadReval) + { + dwCiAndAtsTimeOutTime = GetCiAndAtsTransBadEnsureTime(); + dwCiCurappCycleTime = GetSystemParaAppCycleTime(); + /*ϢʱЧ*/ + remainValidiy = HLHTCommonMsgRemainingValidity(dwCiAndAtsTimeOutTime, dwCurCycNum, dwCiCurappCycleTime, hlhtGalHead.recvOppMsgSN, hlhtGalHead.crntOwnMsgSN, hlhtGalHead.preOwnMsgSN, hlhtGalHead.comPeriod); + + if (remainValidiy > 0) + { + /*Ӧ*/ + if (0u == hlhtGalHead.totalDataLen) + { + /* GALͷϢ */ + chRetVal = CI_ERROR; + } + else if (6u > hlhtGalHead.totalDataLen) + { + /* ݳȴ,ʧ */ + chRetVal = CI_ERROR; + } + else + { + chRetVal = CI_SUCCESS; + /*ȻȡһǴ洢·*/ + while (wTmpDataLen < hlhtGalHead.totalDataLen) + { + /* һӦݳ */ + wMsgLen = ShortFromChar(&dataBuf[ii]); + ii += 2u; + wTmpDataLen += 2U; + wTmpDataLen += wMsgLen; + if (0u == wMsgLen) + { + ; /* ޴һ */ + } + else + { + /* ȡ */ + wMsgType = ShortFromChar(&dataBuf[ii]); + ii += 2u; + + /* Ԥ */ + ii += 2u; + wMsgCheckLen = wMsgLen - 4u; + switch (wMsgType) + { + case ATS_CI_INFO_TYPE_HEART_STATE: + /* Ϣ */ + ii += wMsgCheckLen; + break; + case ATS_CI_INFO_TYPE_GATEWAY_COMMON: + /* Ϣ */ + chRetVal = ParseGateWayToCiDataFrame(dataBuf, &ii, wMsgCheckLen); + chExistCmdDataFlag = 1U; /*ôݱ־ЧݽΪЧ*/ + break; + case ATS_CI_INFO_FST_DS_CANCEL: + case ATS_CI_INFO_FST_SWIUNFLOCK: + case ATS_CI_INFO_FST_FAULTUNLOCK: + case ATS_CI_INFO_FST_SECUNFLOCK: + case ATS_CI_INFO_FST_SIGUNFLOCK: + case ATS_CI_INFO_FST_ZONGRENJIE: + case ATS_CI_INFO_FST_PSD_UNEXCEPT: + chCurSystemAreaState = GetLocalCiBackUpPattern(); + if (SYSTEM_WORK_MODE_MAIN == chCurSystemAreaState) + { + /*ý鵱ǰðǷѾ*/ + dwReciveCmdDataAtsCycNum = GetReciveCmdDataAtsCycNum(CI_SYSTEM_TYPE_ATS, chDeciveId); + dwSystemUpdateMainUseCycNum = GetSystemUpdateMainUseCycNum(); + + if ((dwReciveCmdDataAtsCycNum < hlhtGalHead.crntOwnMsgSN) || + (dwSystemUpdateMainUseCycNum <= hlhtGalHead.recvOppMsgSN)) + { + /*ǰATSʱںŴڽյATSʱATSں + ǰATSʱںŴڵڵǰϵͳʼں*/ + wIndex = (wMsgType - ATS_CI_INFO_FST_DS_CANCEL) / 4; + if ((FOLLOWUP_MSGID_MAX > wIndex) && (ATS_CI_INFO_TYPE_FIRST_LEN == wMsgCheckLen)) + { + chRetVal = ProcessCmdFirstMsgCheck(dataBuf, ii, &tempFstCmd[wIndex]); + ii += ATS_CI_INFO_TYPE_FIRST_LEN; + chExistCmdDataFlag = 1U; /*ôݱ־ЧݽΪЧ*/ + } + else + { + chRetVal = CI_ERROR;/*Խ*/ + } + + } + else + { + ii += wMsgCheckLen; + /*Ѿһ*/ + debug_infor_printf((char*)"\nATS/Xiandi %d Not Deal FstCmd%d,Because curCmd has been processed by another System,dwReciveCmdDataAtsCycNum %d dwSystemUpdateMainUseCycNum %d\n", chDeciveId, wMsgType, dwReciveCmdDataAtsCycNum, dwSystemUpdateMainUseCycNum); + } + } + break; + case ATS_CI_INFO_SND_DS_CANCEL: + case ATS_CI_INFO_SND_SWIUNFLOCK: + case ATS_CI_INFO_SND_FAULTUNLOCK: + case ATS_CI_INFO_SND_SECUNFLOCK: + case ATS_CI_INFO_SND_SIGUNFLOCK: + case ATS_CI_INFO_TYPE_SND_ZRJ: + case ATS_CI_INFO_SND_PSD_UNEXCEPT: + chCurSystemAreaState = GetLocalCiBackUpPattern(); + if (SYSTEM_WORK_MODE_MAIN == chCurSystemAreaState) + { + /*ý鵱ǰðǷѾ*/ + dwReciveCmdDataAtsCycNum = GetReciveCmdDataAtsCycNum(CI_SYSTEM_TYPE_ATS, chDeciveId); + dwSystemUpdateMainUseCycNum = GetSystemUpdateMainUseCycNum(); + + if ((dwReciveCmdDataAtsCycNum < hlhtGalHead.crntOwnMsgSN) || + (dwSystemUpdateMainUseCycNum <= hlhtGalHead.recvOppMsgSN)) + { + wIndex = (wMsgType - ATS_CI_INFO_SND_DS_CANCEL) / 4; + if ((FOLLOWUP_MSGID_MAX > wIndex) && (ATS_CI_INFO_TYPE_SND_LEN == wMsgCheckLen)) + { + chRetVal = ProcessCmdSndMsgCheck(dataBuf, ii, &tempSndCmd[wIndex]); + ii += ATS_CI_INFO_TYPE_SND_LEN; + chExistCmdDataFlag = 1U; /*ôݱ־ЧݽΪЧ*/ + } + else + { + chRetVal = CI_ERROR;/*Խ*/ + } + } + else + { + ii += wMsgCheckLen; + /*Ѿһ*/ + debug_infor_printf((char*)"\nATS/Xiandi %d Not Deal SndCmd%d,Because curCmd has been processed by another System,dwReciveCmdDataAtsCycNum %d dwSystemUpdateMainUseCycNum %d\n", chDeciveId, wMsgType, dwReciveCmdDataAtsCycNum, dwSystemUpdateMainUseCycNum); + } + } + break; + default: + chRetVal = CI_ERROR; + break; + } + } + if (CI_ERROR == chRetVal) + { + chExistCmdDataFlag = 0U; + break; + } + else + { + ; /*do nothing*/ + } + } + } + + /*Уݳ*/ + if ((hlhtGalHead.totalDataLen != ii - (UINT16)31U) || (dataLength != hlhtGalHead.totalDataLen + (UINT16)31U)) + { + /* 31ΪӦ֡ͷ */ + chRetVal = CI_ERROR; + debug_infor_printf((char*)"ParseGateWayToCiDataProc HlhtGal Length Error\n"); + } + + if (CI_SUCCESS != chRetVal) + { + /*δ洢Ϣ*/ + ClearCurGateWayMsg(); + } + else + { + /*ʱһϢȫֱ*/ + for (wIndex = 0U; wIndex < FOLLOWUP_MSGID_MAX; wIndex++) + { + if (FLAG_SET == tempFstCmd[wIndex].chFlag) + { + wMsgTypeTmp = ATS_CI_INFO_FST_DS_CANCEL + wIndex*(UINT16)4U; + pGlobalFst = GetAtsFollowUpMsgFst(wMsgTypeTmp); + if (NULL != pGlobalFst) + { + (void)CommonMemCpy((void *)(pGlobalFst), (UINT32)sizeof(AtsFollowUpCmdFstStru), (const void *)(&tempFstCmd[wIndex]), (UINT32)sizeof(AtsFollowUpCmdFstStru)); + } + } + if (FLAG_SET == tempSndCmd[wIndex].chFlag) + { + wMsgTypeTmp = ATS_CI_INFO_SND_DS_CANCEL + wIndex*(UINT16)4U; + pGlobalSnd = GetAtsFollowUpMsgSnd(wMsgTypeTmp); + if (NULL != pGlobalSnd) + { + (void)CommonMemCpy((void *)(pGlobalSnd), (UINT32)sizeof(AtsFollowUpCmdSndStru), (const void *)(&tempSndCmd[wIndex]), (UINT32)sizeof(AtsFollowUpCmdSndStru)); + } + } + } + } + + if (CI_SUCCESS == chRetVal) + { + /*ݾУ飬Ҫ洢ͨñ*/ + SetHLHTHeadCtxComPeriod(CI_SYSTEM_TYPE_ATS, chDeciveId, hlhtGalHead.comPeriod); + SetHLHTHeadCtxSrcCrntSN(CI_SYSTEM_TYPE_ATS, chDeciveId, hlhtGalHead.crntOwnMsgSN); + SetHLHTHeadCtxSrcOppSN(CI_SYSTEM_TYPE_ATS, chDeciveId, hlhtGalHead.recvOppMsgSN); + SetHLHTHeadCtxSrcOwnSN(CI_SYSTEM_TYPE_ATS, chDeciveId, hlhtGalHead.preOwnMsgSN); + SetHLHTHeadCtxCiRcvSN(CI_SYSTEM_TYPE_ATS, chDeciveId, dwCurCycNum); + SetHLHTHeadCtxCiRcvLogId(CI_SYSTEM_TYPE_ATS, chDeciveId, 0U); + + chGalHeadSaved = 1U; + + if (1U == chExistCmdDataFlag) + { + UpdateAtsCmdDataCycInfo(CI_SYSTEM_TYPE_ATS, chDeciveId); + } + else + { + ; /*һյATSں*/ + } + } + else + { + ; + } + } + else + { + chRetVal = CI_ERROR; + } + } + else if (HLHT_HEAD_INIT == chHeadReval) + { + if (dwCurCycNum > 0U)/*жŴ0Ϊ0Ч*/ + { + SetHLHTHeadCtxComPeriod(CI_SYSTEM_TYPE_ATS, chDeciveId, hlhtGalHead.comPeriod); + SetHLHTHeadCtxSrcCrntSN(CI_SYSTEM_TYPE_ATS, chDeciveId, hlhtGalHead.crntOwnMsgSN); + SetHLHTHeadCtxSrcOppSN(CI_SYSTEM_TYPE_ATS, chDeciveId, hlhtGalHead.recvOppMsgSN); + SetHLHTHeadCtxSrcOwnSN(CI_SYSTEM_TYPE_ATS, chDeciveId, hlhtGalHead.preOwnMsgSN); + SetHLHTHeadCtxCiRcvSN(CI_SYSTEM_TYPE_ATS, chDeciveId, dwCurCycNum); + SetHLHTHeadCtxCiRcvLogId(CI_SYSTEM_TYPE_ATS, chDeciveId, 0U); + + chGalHeadSaved = 1U; + } + + chRetVal = CI_ERROR; + } + else + { + /*¼УʧϢ*/ + if (GAL_COMPARE_INFO_TYPE_ERR == (dwErrCode & GAL_COMPARE_INFO_TYPE_ERR)) + { + /*¼ӿϢʹ*/ + SetErrorData(EFUNC_PARSE_GATEWAY2CI_DATA, CI_SYSTEM_TYPE_ATS, wTiocRcvAtsGtwyDevTypeId, ETYPE_COMM_WITH_GATEWAY, CI_BACK_DATA_INFO_TYPE_ERR, ESEND_LEVEL_ZERO); + } + else if (GAL_COMPARE_SEND_FLAG_ERR == (dwErrCode & GAL_COMPARE_SEND_FLAG_ERR)) + { + /*ͷʶϢ*/ + SetErrorData(EFUNC_PARSE_GATEWAY2CI_DATA, CI_SYSTEM_TYPE_ATS, wTiocRcvAtsGtwyDevTypeId, ETYPE_COMM_WITH_GATEWAY, CI_BACK_DATA_SEND_FLAG_ERR, ESEND_LEVEL_ZERO); + } + else if (GAL_COMPARE_RECV_FLAG_ERR == (dwErrCode & GAL_COMPARE_RECV_FLAG_ERR)) + { + /*ݽշ־Ϣ*/ + SetErrorData(EFUNC_PARSE_GATEWAY2CI_DATA, CI_SYSTEM_TYPE_ATS, wTiocRcvAtsGtwyDevTypeId, ETYPE_COMM_WITH_GATEWAY, CI_BACK_DATA_RECV_FLAG_ERR, ESEND_LEVEL_ZERO); + } + else if (GAL_COMPARE_EMAP_VER_COMP_ERR == (dwErrCode & GAL_COMPARE_EMAP_VER_COMP_ERR)) + { + /*ݰ汾УʧϢ*/ + SetErrorData(EFUNC_PARSE_GATEWAY2CI_DATA, CI_SYSTEM_TYPE_ATS, wTiocRcvAtsGtwyDevTypeId, ETYPE_COMM_WITH_GATEWAY, CI_BACK_DATA_VER_CHECK_FAIL, ESEND_LEVEL_ATS); + } + else if (GAL_COMPARE_PROTOCOL_VER_ERR == (dwErrCode & GAL_COMPARE_PROTOCOL_VER_ERR)) + { + /*Э汾Ŵ*/ + SetErrorData(EFUNC_PARSE_GATEWAY2CI_DATA, CI_SYSTEM_TYPE_ATS, wTiocRcvAtsGtwyDevTypeId, ETYPE_COMM_WITH_GATEWAY, CI_BACK_DATA_PROTOCOL_VER_ERR, ESEND_LEVEL_ZERO); + } + else if (GAL_COMPARE_MSG_BDS_SN_ERR == (dwErrCode & GAL_COMPARE_MSG_BDS_SN_ERR)) + { + /*˫кŴ*/ + SetErrorData(EFUNC_PARSE_GATEWAY2CI_DATA, CI_SYSTEM_TYPE_ATS, wTiocRcvAtsGtwyDevTypeId, ETYPE_COMM_WITH_GATEWAY, CI_BACK_DATA_MSG_BDS_SN_ERR, ESEND_LEVEL_ZERO); + } + else if (GAL_COMPARE_APP_LEN_ERR == (dwErrCode & GAL_COMPARE_APP_LEN_ERR)) + { + /*ӦòݳЧ*/ + SetErrorData(EFUNC_PARSE_GATEWAY2CI_DATA, CI_SYSTEM_TYPE_ATS, wTiocRcvAtsGtwyDevTypeId, ETYPE_COMM_WITH_GATEWAY, CI_BACK_DATA_APP_LEN_ERR, ESEND_LEVEL_ZERO); + } + else + { + /*¼ͨŹ*/ + SetErrorData(EFUNC_PARSE_GATEWAY2CI_DATA, CI_SYSTEM_TYPE_ATS, wTiocRcvAtsGtwyDevTypeId, ETYPE_COMM_WITH_GATEWAY, CI_ERROR, ESEND_LEVEL_ZERO); + } + chRetVal = CI_ERROR; + } + } + + if ((CI_ERROR == chRetVal) && (0u == chGalHeadSaved)) + { + /*ͨͷѾˣִͨͷ򣬳Ҳͨͷ*/ + ClearHlhtHeadCtx(CI_SYSTEM_TYPE_ATS, chDeciveId); + } + else + { + ; /*do nothing*/ + } + } + else + { + /*Ч*/ + chRetVal = CI_ERROR; + } + return chRetVal; +} + +/* +* -սӿGAL +* ˵ QueueStruct* ciToAtsDataQueue, Ͷеַ +* const UINT8 deviceId, ĿϵͳID +* const UINT8 targetDevType, Ŀϵͳ +* const UINT8 frame,֡ +* UINT8* chSendXiandiorAtsBuf λ׵ַ +* ֵ 0: ʧ +* 1: ɹ +* fan 20260604 +*/ +UINT8 PackCiToGateWayDataProc(const UINT8 deviceId, const UINT8 targetDevType) +{ + UINT8 ciToGateWayBuffer[CI_TO_ATS_DATA_LEN_MAX] = { 0u }; + UINT16 ii = 0u; + UINT8 chReval = CI_ERROR; + UINT8 chAtsInterfaceType = 0U; /*ATSӿ*/ + UINT8 chLocalCiId = GetSystemParaLocalCiId(); /*ID*/ + UINT32 dwCiEtcsId = 0U; /*ͨID*/ + UINT32 dwAtsEtcsId = 0U; /*ATSͨID*/ + UINT32 dwEmapCheckVer = 0U; /*ӵͼУ汾*/ + UINT32 dwHlhtHSrcSN = 0U; /*CIݵһͱʱǰSN*/ + UINT32 dwHlhtHRcvSN = 0U; /*CIյʱSN*/ + UINT32 dwCurCycleNum = Get2oo2CurCycleNum(); /*Ӧں*/ + UINT32 dwAppCycleTime = GetSystemParaAppCycleTime(); /*Ӧ*/ + UINT16 wAppDataLenIndex = 0U; /* Ӧݳλ */ + UINT16 wAppDataLen = 0u; /* Ӧݳ */ + UINT16 wMagLen = 0u; /* ݳ */ + UINT16 wMagDataLenIndex = 0U; /* Ϣݳλ */ + UINT16 dstDevId = 0u; + UINT8 chCurSystemAreaState = GetLocalCiBackUpPattern(); /*ǰϵͳ״̬*/ + UINT32 dwFlyProtectOverCyc = GetFlyProtectOverCyc(); /*ɳ*/ + chAtsInterfaceType = GetCiFunctionSwitchConfig(FUNC_GATEWAY_INTERFACE_IDENTIFIER); + if (ATS_INTERFACE_EXIST_GAL != chAtsInterfaceType) + { + /*ݽṹGALͷ*/ + chReval = PackTiocToGateWayData(ciToGateWayBuffer, targetDevType, &ii); + + } + else + { + /*ݽṹҪGALͷ*/ + /*ȻȡʱϢȡɹż*/ + /*豸ID,ûͨID*/ + dwCiEtcsId = (UINT32)(CI_SYSTEM_TYPE_RCI * 256U + chLocalCiId); + dwAtsEtcsId = (UINT32)(targetDevType * 256U + deviceId); + chReval = GetCiEmapCheckVer(chLocalCiId, &dwEmapCheckVer, targetDevType); + dwHlhtHSrcSN = GetHLHTHeadCtxSrcCrntSN(targetDevType, deviceId); + dwHlhtHRcvSN = GetHLHTHeadCtxCiRcvSN(targetDevType, deviceId); + + if (CI_SUCCESS == chReval) + { + /*GALͷ*/ + ShortToChar(ATS_CI_INTERFACE_INFOTYPE, &ciToGateWayBuffer[ii]);/*ӿϢ*/ + ii += 2u; + LongToChar(dwCiEtcsId, &ciToGateWayBuffer[ii]);/*ͷʶϢ*/ + ii += 4u; + LongToChar(dwAtsEtcsId, &ciToGateWayBuffer[ii]);/*շʶϢ*/ + ii += 4u; + LongToChar(dwEmapCheckVer, &ciToGateWayBuffer[ii]);/*ӵͼ汾УϢ*/ + ii += 4u; + LongToChar(dwCurCycleNum, &ciToGateWayBuffer[ii]);/*Ϣк*/ + ii += 4u; + ShortToChar((UINT16)dwAppCycleTime, &ciToGateWayBuffer[ii]);/*豸ͨѶ*/ + ii += 2u; + LongToChar(dwHlhtHSrcSN, &ciToGateWayBuffer[ii]);/*ԷϢкţrecvOppMsgSN¼յԷһϢеĶԷϢк*/ + ii += 4u; + LongToChar(dwHlhtHRcvSN, &ciToGateWayBuffer[ii]);/*յһϢʱк*/ + ii += 4u; + + ciToGateWayBuffer[ii++] = 1U; /*CI_ATSӿЭ汾*/ + /*Ӧòݳ*/ + wAppDataLenIndex = ii; + ii += 2u; + + wMagDataLenIndex = ii; + ii += 2U; + if (RC_WORK_MODE_CI == CI_SYSTEM_TYPE_RCI) + { + ShortToChar(RCI_ATS_INFO_TYPE_GATEWAY_HEART, &ciToGateWayBuffer[ii]);/* */ + ii += 2u; + /* Ԥ2ֽ */ + ii += 2u; + } + else + { + ShortToChar(ATS_CI_INFO_TYPE_GATEWAY_COMMON, &ciToGateWayBuffer[ii]);/* */ + ii += 2u; + /* Ԥ2ֽ */ + ii += 2u; + + chReval = PackTiocToGateWayData(ciToGateWayBuffer, targetDevType, &ii); + } + wMagLen = ii - wMagDataLenIndex - 2U; + /* ݳ */ + ShortToChar(wMagLen, &ciToGateWayBuffer[wMagDataLenIndex]); + /*һΡλظϢ֡*/ + /*ģʽδɳ*/ + if ((CI_SUCCESS == chReval)&& (SYSTEM_WORK_MODE_MAIN == chCurSystemAreaState)&& ( 0U == dwFlyProtectOverCyc)) + { + chReval = PackCiToAtsFollowUpMsg(ciToGateWayBuffer, &ii, targetDevType, PACK_ATS_TYPE_GATEWAY); + } + } + + /* ݳ */ + if (CI_SUCCESS == chReval) + { + wAppDataLen = ii - wAppDataLenIndex - 2U; + ShortToChar(wAppDataLen, &ciToGateWayBuffer[wAppDataLenIndex]); + } + else + { + ; + } + } + if ((ii > CI_TO_ATS_DATA_LEN_MAX) || (CI_ERROR == chReval)) + { + chReval = CI_ERROR; + } + else + { + /* ⷢ */ + dstDevId = ((UINT16)((UINT16)targetDevType << 8u) | ((UINT16)deviceId)); + chReval = OutnetSafeSend(dstDevId, 0u, &ciToGateWayBuffer[0], ii); + if (CI_SUCCESS == chReval) + { + debug_infor_printf((char*)"\nGATEWAY_SEND:%d", ii); + debug_out_array(0xAA, ciToGateWayBuffer, ii); + } + else + { + ; + } + } + + return chReval; +} + +/* +* ϢʧܡѾ洢ıյϢ +* ˵ +* ֵ +* fan 20260604 +*/ +void ClearCurGateWayMsg(void) +{ + /*ԶɸѡϢ*/ + UINT32 dwCurCycNum = Get2oo2CurCycleNum(); /*ǰں*/ + if (dwCurCycNum == g_strAtsMsgFst.dwCycle) + { + ClearAtsMsgFirst(); + } + if (dwCurCycNum == g_strAtsMsgSnd.dwCycle) + { + ClearAtsMsgSecond(); + } + if (FLAG_SET == g_strSndAtsCfmFst.chFlag)/*ڶϢʱֱӴ洢ñ־*/ + { + ClearSndAtsScreenFstCfmMsg(); + } + if (dwCurCycNum == g_strAtsEaMsgFst.dwCycle) + { + ClearAtsEaMsgFirst(); + } + if (dwCurCycNum == g_strAtsEaMsgSnd.dwCycle) + { + ClearAtsEaMsgSecond(); + } + if (FLAG_SET == g_strSndAtsEaCfmFst.chFlag)/*ڶϢʱֱӴ洢ñ־*/ + { + ClearSndAtsEaFstCfmMsg(); + } + if (dwCurCycNum == g_strAtsWlbMsgFst.dwCycle) + { + ClearAtsWlbMsgFirst(); + } + if (dwCurCycNum == g_strAtsWlbMsgSnd.dwCycle) + { + ClearAtsWlbMsgSecond(); + } + if (FLAG_SET == g_strSndAtsWlbCfmFst.chFlag)/*ڶϢʱֱӴ洢ñ־*/ + { + ClearSndAtsWlbFstCfmMsg(); + } + if (dwCurCycNum == g_strAtsDaMsgFst.dwCycle) + { + ClearAtsDaMsgFirst(); + } + if (dwCurCycNum == g_strAtsDaMsgSnd.dwCycle) + { + ClearAtsDaMsgSecond(); + } + if (FLAG_SET == g_strSndAtsDaCfmFst.chFlag)/*ڶϢʱֱӴ洢ñ־*/ + { + ClearSndAtsDaFstCfmMsg(); + } } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackGateWayData.h b/TSCP/src/APP/ciapp/ParsePack/ParsePackGateWayData.h index 3ab0acb..b54ba8d 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackGateWayData.h +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackGateWayData.h @@ -253,20 +253,21 @@ extern AtsMsgCfmStru * GetAtsCfmFst(void); extern AtsMsgCfmStru * GetAtsCfmSnd(void); /** -* @brief ȡԶɸѡȷϢ +* @brief TIOC--Ϣ * @param -* @return ԶɸѡȷϢ +* @return CI_ERRORʧܣCI_SUCCESSɹ */ -extern UINT8 PackTiocToGateWayData(const UINT8 deviceId, const UINT8 targetDevType); +UINT8 PackTiocToGateWayData(UINT8* szToGateWayDataBuf, const UINT8 targetDevType, UINT16* wDataIndex); /** -* @brief ֡ +* @brief ֡---GALϢ * @param const UINT8* dataBuf, ݻ -* @param const UINT16 dataLength, ݳ +* @param[out] UINT16* dataIndex, +* @param[in] const UINT16 dataLength, ݳ * @return CI_SUCCESS:ɹCI_ERROR:ʧ */ -extern UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, const UINT16 dataLength); +UINT8 ParseGateWayToCiDataFrame(const UINT8* dataBuf, UINT16* dataIndex, const UINT16 dataLength); /** * @brief 1ATSɸѡϢ @@ -449,4 +450,34 @@ void ClearSndAtsWlbFstCfmMsg(void); */ void ClearSndAtsDaFstCfmMsg(void); +/** +* @brief ֡--սӿGAL +* @param const UINT8* dataBuf, ݻ +* @param const UINT16 dataLength, ݳ +* @note Created By fan 20260604 +* @return CI_SUCCESS:ɹCI_ERROR:ʧ +*/ +UINT8 ParseGateWayToCiDataProc(const UINT8* dataBuf, const UINT16 dataLength); + +/* +* -սӿGAL +* ˵ QueueStruct* ciToAtsDataQueue, Ͷеַ +* const UINT8 deviceId, ĿϵͳID +* const UINT8 targetDevType, Ŀϵͳ +* const UINT8 frame,֡ +* UINT8* chSendXiandiorAtsBuf λ׵ַ +* ֵ 0: ʧ +* 1: ɹ +* fan 20260604 +*/ +UINT8 PackCiToGateWayDataProc(const UINT8 deviceId, const UINT8 targetDevType); + +/* +* ϢʧܡѾ洢ıյϢ +* ˵ +* ֵ +* fan 20260604 +*/ +void ClearCurGateWayMsg(void); + #endif \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackManage.c b/TSCP/src/APP/ciapp/ParsePack/ParsePackManage.c index 812b205..8b7fa8f 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackManage.c +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackManage.c @@ -290,7 +290,7 @@ UINT8 ParseOtherSysToCiData(void) debug_infor_printf((const)"\nGATEWAY_RECV:%d", dataLen); debug_out_array(0xAA, data, (UINT16)dataLen); - checkResult = ParseGateWayToCiDataFrame(data, (UINT16)dataLen); + checkResult = ParseGateWayToCiDataProc(data, (UINT16)dataLen); } if (CI_ERROR == checkResult) @@ -881,7 +881,7 @@ UINT8 PackCiToOtherSysData(void) if (chTiocRcvAtsGtwyDevTypeId == deviceIdBuf[ii]) { /*ATSվ֡*/ - reVal = PackTiocToGateWayData(deviceIdBuf[ii], CI_SYSTEM_TYPE_ATS); + reVal = PackCiToGateWayDataProc(deviceIdBuf[ii], CI_SYSTEM_TYPE_ATS); if (CI_ERROR == reVal) { @@ -1256,6 +1256,8 @@ UINT8 PackCiToOtherSysData(void) PackCiToCimFlyProtectData(); /*άIO˫ϵɼһ±*/ PackCiToCimCollDiffData(); + /*͵ɼ*/ + PackCiToCimSwitchRedunAlarmData(); /*͸AIM˳ӪϢ*/ AIMOutput(); /*͸άִеԪϢ*/ diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackVobcData.c b/TSCP/src/APP/ciapp/ParsePack/ParsePackVobcData.c index 8668268..a999066 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackVobcData.c +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackVobcData.c @@ -1584,6 +1584,7 @@ static UINT8 ParseVobcToCiDataFrameHLHT(const UINT8* dataBuf, const UINT16 dataL UINT16 wMsgLen = 0U; /*Ӧݳ*/ UINT32 dwCiAndVobcTransBadTime = 0U; /*ciVOBCͨжʱ*/ UINT32 dwAppCycleTime = 0U; /*ci*/ + UINT8 trainZeroSpeedState = 0U; /*г״̬*/ ci_vobcPrtclVersion = GetVersionOfVOBCToCI(); vobcName = (CI_SYSTEM_TYPE_VOBC)*256U + systemId; @@ -1769,7 +1770,6 @@ static UINT8 ParseVobcToCiDataFrameHLHT(const UINT8* dataBuf, const UINT16 dataL ii += 4U; vobcToCiDataStru->signalID = signalId; /*źŻID浽ṹ*/ - } else { @@ -1784,6 +1784,23 @@ static UINT8 ParseVobcToCiDataFrameHLHT(const UINT8* dataBuf, const UINT16 dataL vobcToCiDataStru->ComStartCycle = Get2oo2CurCycleNum(); } break; + case VOBC_CI_INFO_TYPE_MANU_DEFINED: + {/*ֻ*/ + /*г״̬*/ + trainZeroSpeedState = dataBuf[ii]; + ii += 1U; + if ((CI_VOBC_TRAIN_ZERO_SPEED_YES == trainZeroSpeedState) || (CI_VOBC_TRAIN_ZERO_SPEED_NO == trainZeroSpeedState)) + { + vobcToCiDataStru->chTrainZeroState = trainZeroSpeedState; + } + else + { + retVal = CI_ERROR; + } + ii += 9U; /*Ԥ*/ + + } + break; case VOBC_CI_INFO_TYPE_BLOCLINK: /*ʽϢ֡*/ { retVal = ParseVobcBlocLinkData(&dataBuf[ii], wMsgLen-4U, vobcToCiDataStru); diff --git a/TSCP/src/APP/ciapp/ParsePack/ParsePackVobcData.h b/TSCP/src/APP/ciapp/ParsePack/ParsePackVobcData.h index 960f44f..4e4507f 100644 --- a/TSCP/src/APP/ciapp/ParsePack/ParsePackVobcData.h +++ b/TSCP/src/APP/ciapp/ParsePack/ParsePackVobcData.h @@ -267,6 +267,9 @@ #define CI_VOBC_FLOOD_STATE_OPEN ((UINT8)0xaaU) /*CI-VOBCʽſ״̬޹*/ #define CI_VOBC_FLOOD_STATE_CLOSE ((UINT8)0x55U) /*CI-VOBCʽͷǿ״̬й*/ +#define CI_VOBC_TRAIN_ZERO_SPEED_NO ((UINT8)0xAAU) /*CI-VOBCг*/ +#define CI_VOBC_TRAIN_ZERO_SPEED_YES ((UINT8)0x55U) /*CI-VOBCг*/ + #ifdef __cplusplus extern "C" { diff --git a/TSCP/src/APP/ciapp/QueryFiles/dquCIInit.c b/TSCP/src/APP/ciapp/QueryFiles/dquCIInit.c index c1aa19d..783914d 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dquCIInit.c +++ b/TSCP/src/APP/ciapp/QueryFiles/dquCIInit.c @@ -393,13 +393,10 @@ UINT8 RelayInit(CHAR* FSName) debug_infor_printf((const)"ReverseCutConfigDataStructInit fail.\r\n"); } - if (RC_WORK_MODE_TIOC == cLocalWorkType) + funcRtn *= GatewayConfigDataStructInit(FSName); + if (0u == funcRtn) { - funcRtn *= GatewayConfigDataStructInit(FSName); - if (0u == funcRtn) - { - debug_infor_printf((const)"GatewayConfigDataStructInit fail.\r\n"); - } + debug_infor_printf((const)"GatewayConfigDataStructInit fail.\r\n"); } /******************************************************************************** @@ -518,6 +515,12 @@ UINT8 RelayInit(CHAR* FSName) debug_infor_printf((const)"AxisSecProtectSwitchInit fail.\r\n"); } + /* ---ڿõе豸ʼ */ + funcRtn *= ReverseSwitchConfigDataStructInit(FSName); + if (0u == funcRtn) + { + debug_infor_printf((const)"ReverseSwitchConfigDataStructInit fail.\r\n"); + } return funcRtn; } @@ -1474,7 +1477,7 @@ UINT8 SglCfgDtStruFromDquSignalStr(DSU_SIGNAL_STRU* pSgnl,SignalConfigDataStruct pSgnlCfgDtStr->startSigRouBuf[pSgnlCfgDtStr->startSigRouSum] = pCurrentRouteStru->wId; pSgnlCfgDtStr->startSigRouSum ++; - if (0u==(pCurrentRouteStru->wRouteType & 0x0200u)) + if (0u==(pCurrentRouteStru->dwRouteType & 0x0200u)) {/*ZCԶĽ·*/ pSgnlCfgDtStr->startSigCiRouteSum++; } @@ -1730,7 +1733,7 @@ UINT8 SwitchCfgDtStruFromDquPointStr(DSU_POINT_STRU* pPoint,SwitchConfigDataStru UINT16 i=0u; UINT16 j=0u; UINT8 rtnvalue = 0u; - + UINT8 CiPattern = 0u; /*ڲ*/ if((NULL == pPoint) || (NULL == pSwitchCfgDtStr)) @@ -1745,15 +1748,25 @@ UINT8 SwitchCfgDtStruFromDquPointStr(DSU_POINT_STRU* pPoint,SwitchConfigDataStru if (1u == rtnvalue) { + /*ɼرʼΪĬֵ*/ + CiPattern = GetLocalCiPattern(); + pSwitchCfgDtStr->RedunCollCfg = REDUN_COLL_NO; + for (i = 0u; i < SWITCH_REDUN_COLL_MAX; i++) + { + pSwitchCfgDtStr->RedunCollRelayStru[i].wRedunDb1RelayId = 0u; + pSwitchCfgDtStr->RedunCollRelayStru[i].wRedunDb2RelayId = 0u; + pSwitchCfgDtStr->RedunCollRelayStru[i].wRedunFb1RelayId = 0u; + pSwitchCfgDtStr->RedunCollRelayStru[i].wRedunFb2RelayId = 0u; + } + pSwitchCfgDtStr->SwitchId = pPoint->wId; pSwitchCfgDtStr->BelongCiId = (UINT8)pPoint->wManagePhysicalCI; pSwitchCfgDtStr->BelongVirCI = (UINT8)pPoint->wBelongVirCI;/**/ pSwitchCfgDtStr->dwSwitchKilo = pPoint->dwPointKilo; /* */ pSwitchCfgDtStr->chKiloType = pPoint->dwPointKiloPlueMinusSign; - if (pSwitchCfgDtStr->SwitchId < SWITCH_SUM_MAX) + pSwitchCfgDtStr->wReverseBoardId = 0U;/*ʼ޵*/ + if (SWITCH_SUM_MAX > pSwitchCfgDtStr->SwitchId) { - - /*OCñݴ洢ݽṹ*/ rtnvalue = SwitchCfgDtStruFromOCconfigStr(pSwitchCfgDtStr); @@ -1784,9 +1797,27 @@ UINT8 SwitchCfgDtStruFromDquPointStr(DSU_POINT_STRU* pPoint,SwitchConfigDataStru pSwitchCfgDtStr->ZDbRelayId = (RelayData.pRelayPointStr + j)->wRelayZongDingBiaoId; pSwitchCfgDtStr->ZFbRelayId = (RelayData.pRelayPointStr + j)->wRelayZongFanBiaoId; pSwitchCfgDtStr->DFHRelayId = (RelayData.pRelayPointStr + j)->wDFHId; - pSwitchCfgDtStr->wShadowDbRelayId = (RelayData.pRelayPointStr + j)->wRelayShadowDingBiaoId; - pSwitchCfgDtStr->wShadowFbRelayId = (RelayData.pRelayPointStr + j)->wRelayShadowFanBiaoId; - if (pSwitchCfgDtStr->SwitchId > 0u) + + for (i = 0u; i < SWITCH_REDUN_COLL_MAX; i++) + { + if ((0u == pSwitchCfgDtStr->RedunCollRelayStru[i].wRedunDb1RelayId) + && (0u == pSwitchCfgDtStr->RedunCollRelayStru[i].wRedunDb2RelayId) + && (0u == pSwitchCfgDtStr->RedunCollRelayStru[i].wRedunFb1RelayId) + && (0u == pSwitchCfgDtStr->RedunCollRelayStru[i].wRedunFb2RelayId)) + { + pSwitchCfgDtStr->RedunCollRelayStru[i].wRedunDb1RelayId = (RelayData.pRelayPointStr + j)->wRelayRedunDB1Id; + pSwitchCfgDtStr->RedunCollRelayStru[i].wRedunDb2RelayId = (RelayData.pRelayPointStr + j)->wRelayRedunDB2Id; + pSwitchCfgDtStr->RedunCollRelayStru[i].wRedunFb1RelayId = (RelayData.pRelayPointStr + j)->wRelayRedunFB1Id; + pSwitchCfgDtStr->RedunCollRelayStru[i].wRedunFb2RelayId = (RelayData.pRelayPointStr + j)->wRelayRedunFB2Id; + break; + } + else + { + /**/ + } + } + + if (0u < pSwitchCfgDtStr->SwitchId) { if (0u == pSwitchCfgDtStr->DbRelayId) { @@ -1814,7 +1845,6 @@ UINT8 SwitchCfgDtStruFromDquPointStr(DSU_POINT_STRU* pPoint,SwitchConfigDataStru DebugPrintAppError(ERROR_SWITCH_FCJ_NOT_CONFIG, CI_DEVICE_TYPE_SWITCH, (UINT32)(pSwitchCfgDtStr->SwitchId), PRINT_ONCE); } } - break; } } @@ -1833,6 +1863,31 @@ UINT8 SwitchCfgDtStruFromDquPointStr(DSU_POINT_STRU* pPoint,SwitchConfigDataStru } } } + + if (CI_PATTERN_FULL_ELECTRONIC == CiPattern) + { + pSwitchCfgDtStr->RedunCollCfg = REDUN_COLL_YES; + for (i = 0u; i < SWITCH_REDUN_COLL_MAX; i++) + { + if ((0u == pSwitchCfgDtStr->RedunCollRelayStru[i].wRedunDb1RelayId) + || (0u == pSwitchCfgDtStr->RedunCollRelayStru[i].wRedunDb2RelayId) + || (0u == pSwitchCfgDtStr->RedunCollRelayStru[i].wRedunFb1RelayId) + || (0u == pSwitchCfgDtStr->RedunCollRelayStru[i].wRedunFb2RelayId)) + { + /*ɼ̵Ч߱ɼ*/ + pSwitchCfgDtStr->RedunCollCfg = REDUN_COLL_NO; + break; + } + else + { + /*ȫɼ̵Ч߱ɼ*/ + } + } + } + else + { + /*ͳֵ֧ɼ*/ + } } } return rtnvalue; @@ -3809,6 +3864,7 @@ UINT8 PsdCfgDtStruFromDquEmergStr(DSU_SCREEN_STRU * pScreen,PsdConfigDataStruct* pPsdCfgDtStr->VirtualAttribute = PSD_VIRTUAL_ATTR_YES; /*ʼΪ*/ pPsdCfgDtStr->chPsdControlType = PSD_CONTROL_TYPE_RCI; /*ʼΪRCI*/ pPsdCfgDtStr->wIbpRelayId = 0U; + pPsdCfgDtStr->wReverseBoardId = 0U;/*ʼ޵*/ if ((UINT16_MAX != pScreen->wLocalPlatformId) && (0U != pScreen->wLocalPlatformId)) { stationId = dsuStaticHeadStru.pStationStru[dsuStationIndex[pScreen->wLocalPlatformId]].wStationID; @@ -5021,12 +5077,12 @@ UINT8 RouteCfgDtStruFrmLSRouteStr( LS_RouteStruct * pLSRouteStr,RouteConfigDataS if ((CI_ERROR != ciType)&&(CI_ERROR!= rtnvalue)) { /*·*/ - if (0x01u == (pDsuRouteStr->wRouteType & 0x01u)) + if (0x01u == (pDsuRouteStr->dwRouteType & 0x01u)) { /*·Ϊг·*/ pRouteCfgDtStr->RouteType = ROUTE_TYPE_LIECHE; } - else if (0x02u == (pDsuRouteStr->wRouteType & 0x02u)) + else if (0x02u == (pDsuRouteStr->dwRouteType & 0x02u)) { /*·Ϊ۷·*/ pRouteCfgDtStr->RouteType = ROUTE_TYPE_RETURN; @@ -5040,16 +5096,16 @@ UINT8 RouteCfgDtStruFrmLSRouteStr( LS_RouteStruct * pLSRouteStr,RouteConfigDataS { } } - else if (0x0100u == (pDsuRouteStr->wRouteType & 0x0100u)) + else if (0x0100u == (pDsuRouteStr->dwRouteType & 0x0100u)) { /*·Ϊ·*/ pRouteCfgDtStr->RouteType = ROUTE_TYPE_DIAOCHE; } - else if (0u == pDsuRouteStr->wRouteType) + else if (0u == pDsuRouteStr->dwRouteType) { pRouteCfgDtStr->RouteType = 0u; } - else if (0u != (0xffu&pDsuRouteStr->wRouteType)) + else if (0u != (0xffu&pDsuRouteStr->dwRouteType)) { /*ͲΪ0,ҵֽڲΪ0,·Ϊг·*/ pRouteCfgDtStr->RouteType = ROUTE_TYPE_LIECHE; @@ -5062,7 +5118,7 @@ UINT8 RouteCfgDtStruFrmLSRouteStr( LS_RouteStruct * pLSRouteStr,RouteConfigDataS /*ý·*/ pRouteCfgDtStr->ConfigRouteType = pRouteCfgDtStr->RouteType; /*۷·,ý·*/ - if (0x02u == (pDsuRouteStr->wRouteType & 0x02u)) + if (0x02u == (pDsuRouteStr->dwRouteType & 0x02u)) { pRouteCfgDtStr->ConfigRouteType = ROUTE_TYPE_RETURN; } @@ -5070,7 +5126,7 @@ UINT8 RouteCfgDtStruFrmLSRouteStr( LS_RouteStruct * pLSRouteStr,RouteConfigDataS { } - if (0x0800u == (pDsuRouteStr->wRouteType & 0x0800u)) + if (0x0800u == (pDsuRouteStr->dwRouteType & 0x0800u)) { /*羮·*/ pRouteCfgDtStr->AirShaftRouteType = ROUTE_TYPE_AIRSHAFT; } @@ -5079,7 +5135,7 @@ UINT8 RouteCfgDtStruFrmLSRouteStr( LS_RouteStruct * pLSRouteStr,RouteConfigDataS } /*Զ·*/ - if (0x1000u == (pDsuRouteStr->wRouteType & 0x1000u)) + if (0x1000u == (pDsuRouteStr->dwRouteType & 0x1000u)) {/*Զ·*/ pRouteCfgDtStr->AutoTriggerType = ROUTE_TYPE_AUTO_TRIGGER; } @@ -5089,7 +5145,7 @@ UINT8 RouteCfgDtStruFrmLSRouteStr( LS_RouteStruct * pLSRouteStr,RouteConfigDataS /*ý·*/ pRouteCfgDtStr->cRouteRukuProperty = ROUTE_RUKU_PROPERTY_NO; - if (0x0010U == (pDsuRouteStr->wRouteType & 0x0010U)) + if (0x0010U == (pDsuRouteStr->dwRouteType & 0x0010U)) { pRouteCfgDtStr->cRouteRukuProperty = ROUTE_RUKU_PROPERTY_YES; } @@ -5108,13 +5164,22 @@ UINT8 RouteCfgDtStruFrmLSRouteStr( LS_RouteStruct * pLSRouteStr,RouteConfigDataS { } /*·*/ - if (0x8000U == (pDsuRouteStr->wRouteType & 0x8000U)) + if (0x8000U == (pDsuRouteStr->dwRouteType & 0x8000U)) { pRouteCfgDtStr->chRouteCouplinkType = ROUTE_TYPE_COUPLINK; } else { + } + /*·*/ + if (0x10000U == (pDsuRouteStr->dwRouteType & 0x10000U)) + { + pRouteCfgDtStr->chRouteConnectType = ROUTE_TYPE_CONNECT; + } + else + { + } /*Զ·*/ @@ -6139,7 +6204,7 @@ UINT8 RouteCfgDtStruFrmLSRouteStr( LS_RouteStruct * pLSRouteStr,RouteConfigDataS { routeEndSignal =dsuStaticHeadStru.pRouteStru[dsuRouteIndex[LSData.pLSRouteStr[i].wRouteId]].wEndSignalId; if((routeStartSignal == routeEndSignal) && - (0x02u == (dsuStaticHeadStru.pRouteStru[dsuRouteIndex[LSData.pLSRouteStr[i].wRouteId]].wRouteType & 0x02u))) + (0x02u == (dsuStaticHeadStru.pRouteStru[dsuRouteIndex[LSData.pLSRouteStr[i].wRouteId]].dwRouteType & 0x02u))) {/*۷·նźŻΪǰ·ʼźŻ*/ /*羮۷·ͨ۷·*/ if(ROUTE_SIGNAL_OPPOSED_ROUTE_SUM_MAX > index) { @@ -11644,6 +11709,162 @@ UINT8 ReverseCutCfgDtStruFromDquStr(Relay_ReverseCutStruct* pReverseCutRelay, Re return rtnvalue; } +/********************************************* +*ܣʼпݽṹ----ṹ +*˵FSNameļָ +*ֵ0ʧܣ1ɹ +*********************************************/ +UINT8 ReverseSwitchConfigDataStructInit(CHAR * FSName) +{ + + UINT8 rtnvalue = 0u; + UINT8 callFun = 0u; + UINT16 i = 0u; + + if (NULL != FSName) + { + + callFun = InitRelay_ReverseSwitchStru(FSName); + callFun *= InitRelay_ReverseBoardStru(FSName); + } + else + { + rtnvalue = 0u; + } + /*ӵͼʼʧܣʧ˳*/ + if (0u == callFun) + { + rtnvalue = 0u; + } + else + { + rtnvalue = 1u; + } + + if ((1u == rtnvalue)&&(CI_SUM_MAX > RelayDataLen.RelayReverseSwitchStrLen)) + { + dquCICfgDtStr.wRelayReverseSwitchStrLen = RelayDataLen.RelayReverseSwitchStrLen; + for (i = 0u; iwId = pReverseSwitchRelay->wReversSwitchId; + for (jj = 0u; jjwColCloseRelayId == RelayData.pRelayCfgDtStr[jj].RelayId) + { + chFindClose = CI_SUCCESS; + } + else if (pReverseSwitchRelay->wColOpenRelayId == RelayData.pRelayCfgDtStr[jj].RelayId) + { + pReverseSwitchCfgDtStr->chBelongCiId = RelayData.pRelayCfgDtStr[jj].BelongCiId; + chFindOpen = CI_SUCCESS; + } + else + { + ; + } + if ((CI_SUCCESS == chFindOpen) && (CI_SUCCESS == chFindClose)) + { + break;/*ҵ*/ + } + } + + if ((CI_ERROR == chFindOpen) || (CI_ERROR == chFindClose)) + { + /*ʧ*/ + rtnvalue = 0u; + debug_infor_printf((char*)"\nOpenRelay :%d CloseRelay%d, Not Find In RelayTable \n", pReverseSwitchRelay->wColOpenRelayId, pReverseSwitchRelay->wColCloseRelayId); + } + else + { + rtnvalue = 1u; + pReverseSwitchCfgDtStr->wColCloseRelayId = pReverseSwitchRelay->wColCloseRelayId; + pReverseSwitchCfgDtStr->wColOpenRelayId = pReverseSwitchRelay->wColOpenRelayId; + pReverseSwitchCfgDtStr->wRelateBoardNum = pReverseSwitchRelay->wRelateBoardNum; + if ((0U < pReverseSwitchCfgDtStr->wRelateBoardNum) && (REVERSE_BOARD_SUM_MAX >= pReverseSwitchCfgDtStr->wRelateBoardNum)) + { + for (kk = 0u; kk < pReverseSwitchCfgDtStr->wRelateBoardNum; kk++) + { + pReverseSwitchCfgDtStr->strRelateBoardBuf[kk].wReversBoardId = pReverseSwitchRelay->strRelateBoardBuf[kk].wReversBoardId; + pReverseSwitchCfgDtStr->strRelateBoardBuf[kk].chDevType = pReverseSwitchRelay->strRelateBoardBuf[kk].chDevType; + pReverseSwitchCfgDtStr->strRelateBoardBuf[kk].wBoardColCloseRelayId = pReverseSwitchRelay->strRelateBoardBuf[kk].wBoardColCloseRelayId; + pReverseSwitchCfgDtStr->strRelateBoardBuf[kk].wBoardColOpenRelayId = pReverseSwitchRelay->strRelateBoardBuf[kk].wBoardColOpenRelayId; + pReverseSwitchCfgDtStr->strRelateBoardBuf[kk].wDevId = pReverseSwitchRelay->strRelateBoardBuf[kk].wDevId; + chFindClose = CI_ERROR; + chFindOpen = CI_ERROR; + for (jj = 0u; jjstrRelateBoardBuf[kk].wBoardColCloseRelayId == RelayData.pRelayCfgDtStr[jj].RelayId) + { + chFindClose = CI_SUCCESS; + } + else if (pReverseSwitchCfgDtStr->strRelateBoardBuf[kk].wBoardColOpenRelayId == RelayData.pRelayCfgDtStr[jj].RelayId) + { + pReverseSwitchCfgDtStr->chBelongCiId = RelayData.pRelayCfgDtStr[jj].BelongCiId; + chFindOpen = CI_SUCCESS; + } + else + { + ; + } + if ((CI_SUCCESS == chFindOpen) && (CI_SUCCESS == chFindClose)) + { + break;/*ҵ*/ + } + } + + if ((CI_ERROR == chFindOpen) || (CI_ERROR == chFindClose)) + { + rtnvalue = 0u; + debug_infor_printf((char*)"\nBoard: %d openRelay:%d closeRelay:%d, Not Find In RelayTable \n", pReverseSwitchCfgDtStr->strRelateBoardBuf[kk].wReversBoardId, + pReverseSwitchCfgDtStr->strRelateBoardBuf[kk].wBoardColOpenRelayId, pReverseSwitchCfgDtStr->strRelateBoardBuf[kk].wBoardColCloseRelayId); + break; + } + } + } + } + } + else + { + /*ʧ*/ + rtnvalue = 0u; + } + return rtnvalue; +} + /********************************************* *ܣʼTIOCATS豸ݽṹ----ṹ *˵FSNameļָ @@ -14336,7 +14557,6 @@ static UINT8 RciSerialCommDataInit(void) UINT16 ii = 0U; /*ѭ*/ UINT8 chLocalCiId = 0U; /*ID*/ UINT16 wDataLen = 0U; /*ݿ*/ - UINT16 wTempData = 0U; /*ʱ*/ UINT16 val = 0U; /*ʱнӱ*/ UINT8 chCiDevId = 0U; /*CI豸ID*/ UINT8 chCiDevType = 0U; /*CI豸*/ @@ -14366,7 +14586,7 @@ static UINT8 RciSerialCommDataInit(void) chCiDevId = (UINT8)(val & 0x00FF); chCiDevType = (UINT8)((val & 0xFF00) >> 8); - if ((chLocalCiId == chCiDevType) && (chLocalRcWorkMode == chCiDevType)) + if ((chLocalCiId == chCiDevId) && (chLocalRcWorkMode == chCiDevType)) { /*ñͨű־*/ chRtnValue &= SetLocalSerialCommFlag(SERIAL_COMM_YES); diff --git a/TSCP/src/APP/ciapp/QueryFiles/dquCIInit.h b/TSCP/src/APP/ciapp/QueryFiles/dquCIInit.h index fff1284..35217f3 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dquCIInit.h +++ b/TSCP/src/APP/ciapp/QueryFiles/dquCIInit.h @@ -176,6 +176,9 @@ typedef struct ReverseCutCfgDataStru stReverseCutCfgDtStr[REVERSE_CUT_SUM_MAX]; /*豸*/ UINT16 wReverseCutCfgLen; + ReverseSwitchCfgDataStru stReverseSwitchCfgDtStr[CI_SUM_MAX]; /*豸ذ忨*/ + UINT16 wRelayReverseSwitchStrLen; /*пظ*/ + EaConfigStru szEaCfgDtStr[EA_CFG_SUM_MAX]; /**/ UINT16 wEaCfgLen; /*ݳ*/ @@ -1088,5 +1091,20 @@ UINT8 PsdRelateEsbConfigDataInit(UINT16 wPsdIndex); */ UINT8 RciCommonConfigDataInit(CHAR* FSName); +/********************************************* +*ܣʼпݽṹ----ṹ +*˵FSNameļָ +*ֵ0ʧܣ1ɹ +*********************************************/ +UINT8 ReverseSwitchConfigDataStructInit(CHAR * FSName); + +/********************************************* +*ܣпݽṹ +*˵pReverseSwitchRelay̵ʼָ +pReverseSwitchCfgDtStrݽṹָ +*ֵ0ʧܣ1ɹ +*********************************************/ +UINT8 ReverseSiwtchCfgDtStruFromDquStr(Relay_ReverseSwitchStruct* pReverseSwitchRelay, ReverseSwitchCfgDataStru* pReverseSwitchCfgDtStr); + #endif diff --git a/TSCP/src/APP/ciapp/QueryFiles/dquCIInterFace.c b/TSCP/src/APP/ciapp/QueryFiles/dquCIInterFace.c index 7000617..fa12b9e 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dquCIInterFace.c +++ b/TSCP/src/APP/ciapp/QueryFiles/dquCIInterFace.c @@ -4137,6 +4137,70 @@ INT16 ReadReverseCutConfigData(const UINT8 ciId, ReverseCutCfgDataStru* pstRever return DataNum; } +/********************************************* +*ܣ豸Ӧ忨 +*˵ciIdID pLocalReverseData 豸ݽṹָ +*ֵ-1 ʧ ɹ +*********************************************/ +INT16 ReadReverseSwitchConfigData(const UINT8 ciId, ReverseSwitchCfgDataStru* pLocalReverseData) +{ + UINT16 i = 0u; + INT16 DataNum = -1; + UINT16 jj = 0U; + if ((0u == ciId) || (NULL == pLocalReverseData)) + { + DataNum = -1; + } + else + { + DataNum = 0; + } + + if (0 == DataNum) + { + for (i = 0u; iwColCloseRelayId = dquCICfgDtStr.stReverseSwitchCfgDtStr[i].wColCloseRelayId; + pLocalReverseData->wColOpenRelayId = dquCICfgDtStr.stReverseSwitchCfgDtStr[i].wColOpenRelayId; + if ((0U == pLocalReverseData->wColCloseRelayId) || (UINT16_MAX == pLocalReverseData->wColCloseRelayId) + || (0U == pLocalReverseData->wColOpenRelayId) || (UINT16_MAX == pLocalReverseData->wColOpenRelayId)) + { + DataNum = -1;/*епصɼ*/ + } + else + { + pLocalReverseData->wRelateBoardNum = dquCICfgDtStr.stReverseSwitchCfgDtStr[i].wRelateBoardNum; + pLocalReverseData->wId = dquCICfgDtStr.stReverseSwitchCfgDtStr[i].wId; + pLocalReverseData->chBelongCiId = ciId; + for (jj = 0u; jj < dquCICfgDtStr.stReverseSwitchCfgDtStr[i].wRelateBoardNum; jj++) + { + pLocalReverseData->strRelateBoardBuf[jj].wReversBoardId = dquCICfgDtStr.stReverseSwitchCfgDtStr[i].strRelateBoardBuf[jj].wReversBoardId; + pLocalReverseData->strRelateBoardBuf[jj].chDevType = dquCICfgDtStr.stReverseSwitchCfgDtStr[i].strRelateBoardBuf[jj].chDevType; + pLocalReverseData->strRelateBoardBuf[jj].wBoardColCloseRelayId = dquCICfgDtStr.stReverseSwitchCfgDtStr[i].strRelateBoardBuf[jj].wBoardColCloseRelayId; + pLocalReverseData->strRelateBoardBuf[jj].wBoardColOpenRelayId = dquCICfgDtStr.stReverseSwitchCfgDtStr[i].strRelateBoardBuf[jj].wBoardColOpenRelayId; + if ((0U == pLocalReverseData->strRelateBoardBuf[jj].wBoardColCloseRelayId) || (UINT16_MAX == pLocalReverseData->strRelateBoardBuf[jj].wBoardColCloseRelayId) + || (0U == pLocalReverseData->strRelateBoardBuf[jj].wBoardColOpenRelayId) || (UINT16_MAX == pLocalReverseData->strRelateBoardBuf[jj].wBoardColOpenRelayId)) + { + DataNum = -1;/*еа忨ɼ*/ + break; + } + pLocalReverseData->strRelateBoardBuf[jj].wDevId = dquCICfgDtStr.stReverseSwitchCfgDtStr[i].strRelateBoardBuf[jj].wDevId; + } + } + break; + } + } + } + else + { + ; + } + + return DataNum; +} + /************************************************** *ܣȡVOBC豸Ӧλѯvobc diff --git a/TSCP/src/APP/ciapp/QueryFiles/dquCIInterFace.h b/TSCP/src/APP/ciapp/QueryFiles/dquCIInterFace.h index 133f09f..4ee1668 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dquCIInterFace.h +++ b/TSCP/src/APP/ciapp/QueryFiles/dquCIInterFace.h @@ -418,6 +418,13 @@ INT16 ReadCutoffPointConfigData(const UINT8 ciId, CfpConfigStru* pstCutoffConfig *ֵعֽID *********************************************/ INT16 ReadReverseCutConfigData(const UINT8 ciId, ReverseCutCfgDataStru* pstReverseConfigData); + +/********************************************* +*ܣ豸Ӧ忨 +*˵ciIdID pLocalReverseData ݽṹָ +*ֵ-1 ʧ ɹ +*********************************************/ +INT16 ReadReverseSwitchConfigData(const UINT8 ciId, ReverseSwitchCfgDataStru* pLocalReverseData); /************************************************************************ ܣHlhtIDתvobcڲ 룺 diff --git a/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruFrmChar.c b/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruFrmChar.c index 5afb0b5..3f57f37 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruFrmChar.c +++ b/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruFrmChar.c @@ -404,32 +404,34 @@ UINT8 R_PointStructFromChar(UINT8 * pDataAddr,Relay_PointStruct* pSwitchStr) } if (CI_TRADITION_RAILWAY == lineIdentity) {/*ǹ·*/ - pSwitchStr->wPointId = dquCiShortFromChar(pData); /*ID*/ + pSwitchStr->wPointId = dquCiShortFromChar(pData); /*ID*/ + pData += 2u; + pSwitchStr->wOcId = dquCiShortFromChar(pData); /*OC ID*/ + pData += 2u; + pSwitchStr->wRelayDingBiaoId = dquCiShortFromChar(pData); /*̵ID */ + pData += 2u; + pSwitchStr->wRelayFanBiaoId = dquCiShortFromChar(pData); /*̵ID */ pData += 2u; - /*OCID*/ - pData += 2u; - pSwitchStr->wRelayDingBiaoId = dquCiShortFromChar(pData); /*̵ID */ - pData += 2u; - pSwitchStr->wRelayFanBiaoId = dquCiShortFromChar(pData); /*̵ID */ + pSwitchStr->wRelayYunCaoId = dquCiShortFromChar(pData); /*ʲټ̵ID*/ pData += 2u; - - pSwitchStr->wRelayYunCaoId = dquCiShortFromChar(pData); /*ʲټ̵ID*/ - pData += 2u; - pSwitchStr->wRelayDingCaoId = dquCiShortFromChar(pData); /*ټ̵ID */ + pSwitchStr->wRelayDingCaoId = dquCiShortFromChar(pData); /*ټ̵ID */ pData += 2u; - pSwitchStr->wRelayFanCaoId = dquCiShortFromChar(pData); /*ټ̵ID */ + pSwitchStr->wRelayFanCaoId = dquCiShortFromChar(pData); /*ټ̵ID */ pData += 2u; - pSwitchStr->wRelayZongDingBiaoId = dquCiShortFromChar(pData); /*̵ܶID */ + pSwitchStr->wRelayZongDingBiaoId = dquCiShortFromChar(pData); /*̵ܶID */ pData += 2u; - pSwitchStr->wRelayZongFanBiaoId = dquCiShortFromChar(pData); /*̵ܷID */ + pSwitchStr->wRelayZongFanBiaoId = dquCiShortFromChar(pData); /*̵ܷID */ pData += 2u; - pSwitchStr->wDFHId = dquCiShortFromChar(pData); /*DFH̵ID*/ + pSwitchStr->wDFHId = dquCiShortFromChar(pData); /*DFH̵ID*/ pData += 2u; - - pSwitchStr->wRelayShadowDingBiaoId = dquCiShortFromChar(pData); /*̵ID */ + pSwitchStr->wRelayRedunDB1Id = dquCiShortFromChar(pData); /*10ɼDBJ1̵ID*/ pData += 2u; - pSwitchStr->wRelayShadowFanBiaoId = dquCiShortFromChar(pData); /*̵ID */ + pSwitchStr->wRelayRedunDB2Id = dquCiShortFromChar(pData); /*10ɼDBJ2̵ID*/ + pData += 2u; + pSwitchStr->wRelayRedunFB1Id = dquCiShortFromChar(pData); /*10ɼFBJ1̵ID*/ + pData += 2u; + pSwitchStr->wRelayRedunFB2Id = dquCiShortFromChar(pData); /*10ɼFBJ2̵ID*/ pData += 2u; }/* zt ɾش 2022-02-15 */ else @@ -1192,4 +1194,155 @@ UINT8 R_OCIndicStruFromChar(UINT8* pDataAddr, OCStationIndicConfigDataStru* pInd return reVal; } +/********************************************* +*ܣݵпü̵ṹ +*˵pDataAddrݵַ Relay_ReverseSwitchStruct пؼ̵ݽṹָ +*ֵ0ʧܣ1ɹ +*********************************************/ +UINT8 R_ReverseSwitchStrFromChar(UINT8 * pDataAddr, Relay_ReverseSwitchStruct * pReverseStr) +{ + UINT8 * pData = pDataAddr; + UINT8 rtnvalue = 0u; + UINT16 j = 0U; + UINT16 wTemp = 0U; + if ((NULL == pDataAddr) || (NULL == pReverseStr)) + { + rtnvalue = 0u; + + } + else + { + rtnvalue = 1U; + } + + if (1u == rtnvalue) + { + pReverseStr->wReversSwitchId = dquCiShortFromChar(pData); /*ID*/ + pData += 2u; + + pReverseStr->ocId = dquCiShortFromChar(pData); /*Oc ID*/ + pData += 2u; + + pReverseStr->wColOpenRelayId = dquCiShortFromChar(pData); /*̵*/ + pData += 2u; + + pReverseStr->wColCloseRelayId = dquCiShortFromChar(pData); /*ռ̵*/ + pData += 2u; + + if ((0U == pReverseStr->wColOpenRelayId) + ||(0U == pReverseStr->wColCloseRelayId) + || (pReverseStr->wColOpenRelayId == pReverseStr->wColCloseRelayId)) + { + rtnvalue = 0u; + } + else + { + pReverseStr->wRelateBoardNum = dquCiShortFromChar(pData); /*忨*/ + pData += 2u; + + if ((0U < pReverseStr->wRelateBoardNum)&&(OC_RELAY_REVERSE_BOARD_MAX >= pReverseStr->wRelateBoardNum)) + { + for (j = 0U; j < pReverseStr->wRelateBoardNum; j++) + { + wTemp = dquCiShortFromChar(pData); /*忨id*/ + pData += 2u; + if ((0U == wTemp) || (UINT16_MAX == wTemp)) + { + rtnvalue = 0U; + break; + } + else + { + pReverseStr->strRelateBoardBuf[j].wReversBoardId = wTemp; + } + } + } + else + { + rtnvalue = 0u; + debug_infor_printf((char*)"\nR_ReverseSwitchStrFromChar BoardNum%d", pReverseStr->wRelateBoardNum); + } + } + } + + return rtnvalue; + +} + +/********************************************* +*ܣݵа忨ṹ +*˵pDataAddrݵַ Relay_ReverseBoardStruct а忨̵ݽṹָ +*ֵ0ʧܣ1ɹ +*********************************************/ +UINT8 R_ReverseBoardStrFromChar(UINT8 * pDataAddr, Relay_ReverseBoardStruct * pReverseStr) +{ + UINT8 * pData = pDataAddr; + UINT8 rtnvalue = 0u; + UINT16 wBoardId = 0U; + if ((NULL == pDataAddr) || (NULL == pReverseStr)) + { + rtnvalue = 0u; + + } + else + { + rtnvalue = 1U; + } + + if (1u == rtnvalue) + { + wBoardId = dquCiShortFromChar(pData); /*ID*/ + pData += 2u; + + if (0U == wBoardId) + { + rtnvalue = 0U; + } + else + { + pReverseStr->wReversBoardId = wBoardId; /*忨ID*/ + + pReverseStr->wBoardColOpenRelayId = dquCiShortFromChar(pData); /*̵*/ + pData += 2u; + + pReverseStr->wBoardColCloseRelayId = dquCiShortFromChar(pData); /*ռ̵*/ + pData += 2u; + + if ((0U == pReverseStr->wBoardColCloseRelayId) + ||(0U == pReverseStr->wBoardColOpenRelayId) + || (pReverseStr->wBoardColOpenRelayId == pReverseStr->wBoardColCloseRelayId)) + { + rtnvalue = 0U; + } + else + { + pReverseStr->chDevType = *pData;/**/ + pData++; + + pReverseStr->wDevId = dquCiShortFromChar(pData); /*豸ID*/ + pData += 2u; + + if ((OC_LEN_REVERSE_TYPE_PSD == pReverseStr->chDevType) || (OC_LEN_REVERSE_TYPE_SWITCH == pReverseStr->chDevType)) + { + if ((0U < pReverseStr->wDevId) && (UINT16_MAX != pReverseStr->wDevId)) + { + rtnvalue = 1U; + } + else + { + rtnvalue = 0U; + } + } + else + { + rtnvalue = 0U; + } + } + } + } + + return rtnvalue; + +} + diff --git a/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruFrmChar.h b/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruFrmChar.h index 9df9f0c..4746325 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruFrmChar.h +++ b/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruFrmChar.h @@ -150,4 +150,18 @@ UINT8 R_ReverseCutStrFromChar(UINT8 * pDataAddr, Relay_ReverseCutStruct * pRever * cgh-ϲCID-3037-3 *********************************************/ UINT8 R_OCIndicStruFromChar(UINT8* pDataAddr, OCStationIndicConfigDataStru* pIndicStru); + +/********************************************* +*ܣݵпü̵ṹ +*˵pDataAddrݵַ Relay_ReverseSwitchStruct пؼ̵ݽṹָ +*ֵ0ʧܣ1ɹ +*********************************************/ +UINT8 R_ReverseSwitchStrFromChar(UINT8 * pDataAddr, Relay_ReverseSwitchStruct * pReverseStr); + +/********************************************* +*ܣݵа忨ṹ +*˵pDataAddrݵַ Relay_ReverseBoardStruct а忨̵ݽṹָ +*ֵ0ʧܣ1ɹ +*********************************************/ +UINT8 R_ReverseBoardStrFromChar(UINT8 * pDataAddr, Relay_ReverseBoardStruct * pReverseStr); #endif diff --git a/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruInit.c b/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruInit.c index 2e4f329..d7c93c7 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruInit.c +++ b/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruInit.c @@ -468,8 +468,8 @@ UINT8 InitRelay_PointStru(CHAR* CIDataName) if (CI_PATTERN_TRADITIONAL == localCiPattern) { excelId = CI_DATA_TYPE; - sheetId = RELAY_SIGNAL; - rowLen = LEN_RELAY_SIGNAL; + sheetId = RELAY_POINT; + rowLen = LEN_RELAY_POINT; } else { @@ -1642,3 +1642,191 @@ UINT8 InitRelay_ReverseCutStru(CHAR* CIDataName) return rtnValue; } +/********************************************* +*ܣ䵹пؼ̵ṹ---ڲ +*˵CIDataNameָ +*ֵ0ʧܣ1ɹ +*********************************************/ +UINT8 InitRelay_ReverseSwitchStru(CHAR* CIDataName) +{ + UINT8 funcRtn = 0u; + Relay_ReverseSwitchStruct* pReverseSwitchStr = NULL; /*пر*/ + UINT8* pDataAddr = NULL; /*ݵַ*/ + UINT32 DataSize = 0U; /*ݴСֽ*/ + UINT16 j = 0U; + UINT8 rtnValue = 0u; + + /*Ѿʼˣǵִй ȫӲóʼű*/ + if (NULL != RelayData.pRelayReverseSwitchStr) + { + rtnValue = 1u; + } + else + { + /*ȡ豸̵ݱ*/ + funcRtn = dquGetConfigData(CIDataName, OC_DATA_TYPE, OC_RELAY_REVERSE_SWITCH_ID, &pDataAddr, &DataSize); + if (0u == funcRtn) + { + /*ʧ*/ + rtnValue = 0u; + } + else + { + + if ((0u != DataSize% OC_LEN_REVERSE_SWITCH_LEN)) + { /*øΪݴ*/ + debug_infor_printf((char* )"\nCI_RELAY_DATA,REVERSE_Switch len %d not equal to fs", OC_LEN_REVERSE_SWITCH_LEN); + rtnValue = 0u; + } + else + { + RelayDataLen.RelayReverseSwitchStrLen = (UINT16)(DataSize / OC_LEN_REVERSE_SWITCH_LEN);/*ṹ*/ + + if (OC_LEN_REVERSE_SWITCH_LEN > DataSize) + {/*һ*/ + RelayData.pRelayReverseSwitchStr = (Relay_ReverseSwitchStruct *)MyNew((UINT32)sizeof(Relay_ReverseSwitchStruct)); + RelayDataLen.RelayReverseSwitchStrLen = 0u; + rtnValue = 1u; + } + else + { + + /*̬ռ*/ + RelayData.pRelayReverseSwitchStr = (Relay_ReverseSwitchStruct *)MyNew((UINT32)(sizeof(Relay_ReverseSwitchStruct) * RelayDataLen.RelayReverseSwitchStrLen)); + + if (NULL == RelayData.pRelayReverseSwitchStr) + {/*̬ռʧ*/ + RelayDataLen.RelayReverseSwitchStrLen = 0u; + rtnValue = 0u; + } + else + { + /*ڴΪЧ*/ + (void)CommonMemSet(RelayData.pRelayReverseSwitchStr, (UINT32)(sizeof(Relay_ReverseSwitchStruct) * RelayDataLen.RelayReverseSwitchStrLen), + (UINT8)0x00, (UINT32)(sizeof(Relay_ReverseSwitchStruct) * RelayDataLen.RelayReverseSwitchStrLen)); + /*ݵ ṹ */ + rtnValue = 1u; + for (j = 0u; j < RelayDataLen.RelayReverseSwitchStrLen; j++) + { + pReverseSwitchStr = RelayData.pRelayReverseSwitchStr + j; + + /*ݽṹ*/ + rtnValue &= R_ReverseSwitchStrFromChar(pDataAddr, pReverseSwitchStr); + pDataAddr += OC_LEN_REVERSE_SWITCH_LEN; + if (1U != rtnValue) + { + break; + } + } + } + } + } + } + } + return rtnValue; +} + +/********************************************* +*ܣ䵹а忨̵ṹ---ڲ +*˵CIDataNameָ +*ֵ0ʧܣ1ɹ +*********************************************/ +UINT8 InitRelay_ReverseBoardStru(CHAR* CIDataName) +{ + UINT8 funcRtn = 0u; + UINT8* pDataAddr = NULL; /*ݵַ*/ + UINT32 DataSize = 0U; /*ݴСֽ*/ + Relay_ReverseBoardStruct tempBoardStru = {0}; /*а忨ʱ洢*/ + Relay_ReverseSwitchStruct* pReverseSwitchStr = NULL;/*пָ*/ + Relay_ReverseBoardStruct* pReverseBoard = NULL; /*а忨ָ*/ + UINT16 j = 0U; + UINT16 ii = 0U; + UINT16 kk = 0U; + UINT8 rtnValue = 0u; + UINT16 wLen = 0U; + UINT8 chFind = CI_ERROR; + + if (NULL == RelayData.pRelayReverseSwitchStr) + { + /*Ҫȳʼпؼ̵*/ + rtnValue = 0u; + } + else + { + /*ȡа忨̵ݱ*/ + funcRtn = dquGetConfigData(CIDataName, OC_DATA_TYPE, OC_RELAY_REVERSE_BOARD_ID, &pDataAddr, &DataSize); + if (0u == funcRtn) + { + /*ʧ*/ + rtnValue = 0u; + } + else + { + + if ((0u != DataSize% OC_LEN_REVERSE_BOARD_LEN)) + { /*øΪݴ*/ + debug_infor_printf((char*)"\nCI_RELAY_DATA,REVERSE_Board len %d not equal to fs", OC_LEN_REVERSE_BOARD_LEN); + rtnValue = 0u; + } + else + { + wLen = (UINT16)(DataSize / OC_LEN_REVERSE_BOARD_LEN);/*ṹ*/ + + if ((0U == RelayDataLen.RelayReverseSwitchStrLen)&&(RelayDataLen.RelayReverseSwitchStrLen == wLen)) + { + /*޿*/ + rtnValue = 1u; + } + else if ((0U == RelayDataLen.RelayReverseSwitchStrLen) || (0U == wLen)||(CI_SUM_MAX <= RelayDataLen.RelayReverseSwitchStrLen)) + { + /*忨뿪òһ*/ + debug_infor_printf((char*)"\n InitRelay_ReverseBoardStru len %d Error \n", wLen); + rtnValue = 0u; + } + else + { + /*ʼӦݣ忨ݵĿռѾڿݽṹ*/ + rtnValue = 1u; + for (ii = 0U; ii < wLen; ii++) + { + /*ݽṹ*/ + rtnValue &= R_ReverseBoardStrFromChar(pDataAddr, &tempBoardStru); + pDataAddr += OC_LEN_REVERSE_BOARD_LEN; + chFind = CI_ERROR; + if (1U == rtnValue) + { + for (j = 0U; j < RelayDataLen.RelayReverseSwitchStrLen; j++) + { + pReverseSwitchStr = RelayData.pRelayReverseSwitchStr + j; + for (kk = 0U; kk < pReverseSwitchStr->wRelateBoardNum; kk++) + { + /*ҶӦа忨*/ + if (pReverseSwitchStr->strRelateBoardBuf[kk].wReversBoardId == tempBoardStru.wReversBoardId) + { + pReverseBoard = &pReverseSwitchStr->strRelateBoardBuf[kk]; + (void)CommonMemCpy((void *)(pReverseBoard), (UINT32)sizeof(Relay_ReverseBoardStruct), (const void *)(&tempBoardStru), (UINT32)sizeof(Relay_ReverseBoardStruct)); + chFind = CI_SUCCESS; + break; + } + } + if (CI_SUCCESS == chFind) + { + break; + } + } + } + + if ((CI_ERROR == chFind)||(0U == rtnValue)) + { + rtnValue = 0u; + debug_infor_printf((char*)"\n InitRelay_ReverseBoardStru Board%d Not Find \n", tempBoardStru.wReversBoardId); + break; + } + } + } + } + } + } + return rtnValue; +} + diff --git a/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruInit.h b/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruInit.h index 1344741..db8afea 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruInit.h +++ b/TSCP/src/APP/ciapp/QueryFiles/dquCIJDQStruInit.h @@ -36,6 +36,7 @@ typedef struct SConfig_RelayDataStruct Relay_WashMachineStruct *pRelayWashMachineStr; /*ϴ̵ṹ*/ Relay_DCAgreeStruct *pRelayDCAgreeStr;/*̵ͬṹ*/ Relay_ReverseCutStruct *pRelayReverseCutStr;/*豸̵ṹ*/ + Relay_ReverseSwitchStruct* pRelayReverseSwitchStr; /*пؼ̵ṹ*/ } RelayDataStruct_Config; /*̵鳤Ƚṹ*/ typedef struct S_RelayDataStructLen @@ -58,6 +59,7 @@ typedef struct S_RelayDataStructLen UINT16 RelayMonoRailPointStrLen ; /*̵ṹ鳤*/ UINT16 RelayDCAgreeStrLen;/*̵ͬṹ*/ UINT16 RelayReverseCutStrLen;/*豸̵ṹ*/ + UINT16 RelayReverseSwitchStrLen;/*пؼ̵ṹ*/ } RelayDataStruct_ConfigLen; /*********ȫֵļ̵Ϣݱ*******/ @@ -173,5 +175,19 @@ UINT8 InitRelay_DCAgreeStru(CHAR* CIDataName); *********************************************/ UINT8 InitRelay_ReverseCutStru(CHAR* CIDataName); +/********************************************* +*ܣ䵹пؼ̵ṹ---ڲ +*˵CIDataNameָ +*ֵ0ʧܣ1ɹ +*********************************************/ +UINT8 InitRelay_ReverseSwitchStru(CHAR* CIDataName); + +/********************************************* +*ܣ䵹а忨̵ṹ---ڲ +*˵CIDataNameָ +*ֵ0ʧܣ1ɹ +*********************************************/ +UINT8 InitRelay_ReverseBoardStru(CHAR* CIDataName); + #endif diff --git a/TSCP/src/APP/ciapp/QueryFiles/dqucijdqstru.h b/TSCP/src/APP/ciapp/QueryFiles/dqucijdqstru.h index 960f9c0..6e70cc8 100644 --- a/TSCP/src/APP/ciapp/QueryFiles/dqucijdqstru.h +++ b/TSCP/src/APP/ciapp/QueryFiles/dqucijdqstru.h @@ -111,7 +111,7 @@ #define SWITCH_BOARD_MODE_MAX 5U /*һOCеģ*/ /*̵ñ*/ #define OC_SWITCH_RELAY_ID ((UINT8)4) -#define LEN_OC_SWITCH_RELAY ((UINT8)24) +#define LEN_OC_SWITCH_RELAY ((UINT8)28) /*źŻñ*/ #define OC_SIGNAL_ID ((UINT8)5) #define LEN_OC_SIGNAL ((UINT8)24) @@ -201,6 +201,15 @@ /* ԵƼ̵ */ #define OC_RELAY_LIGHTTESTBUTTON_ID ((UINT8)39) +/*10а忨ɼ*/ +#define OC_RELAY_REVERSE_SWITCH_ID ((UINT8)42)/*п*/ +#define OC_RELAY_REVERSE_BOARD_ID ((UINT8)43)/*а忨*/ +#define OC_RELAY_REVERSE_BOARD_MAX ((UINT16)42)/*а忨ֵ*/ +#define OC_LEN_REVERSE_SWITCH_LEN ((UINT8)94) +#define OC_LEN_REVERSE_BOARD_LEN ((UINT8)9) +#define OC_LEN_REVERSE_TYPE_SWITCH ((UINT8)0x01) +#define OC_LEN_REVERSE_TYPE_PSD ((UINT8)0x10) + /*ͣť̵ṹ*/ typedef struct S_Relay_EmegencyStopStruct { @@ -275,10 +284,13 @@ typedef struct S_Relay_PhysicalSegmentStruct typedef struct S_Relay_PointStruct { UINT16 wPointId; /*ID*/ + UINT16 wOcId; /*OC ID*/ UINT16 wRelayDingBiaoId; /*̵ID*/ UINT16 wRelayFanBiaoId; /*̵ID*/ - UINT16 wRelayShadowDingBiaoId; /*̵ID*/ - UINT16 wRelayShadowFanBiaoId; /*̵ID*/ + UINT16 wRelayRedunDB1Id; /*10ɼ̵1ID*/ + UINT16 wRelayRedunDB2Id; /*10ɼ̵2ID*/ + UINT16 wRelayRedunFB1Id; /*10ɼ̵1ID*/ + UINT16 wRelayRedunFB2Id; /*10ɼ̵2ID*/ UINT16 wRelayYunCaoId; /*ʲټ̵ID*/ UINT16 wRelayDingCaoId; /*ټ̵ID*/ UINT16 wRelayFanCaoId; /*ټ̵ID*/ @@ -482,4 +494,23 @@ typedef struct S_Relay_ReverseCutStruct UINT16 wReverseCutRelayId; /*м̵ID*/ }Relay_ReverseCutStruct; +typedef struct S_Relay_ReverseBoardStruct +{ + UINT16 wReversBoardId; /*а忨D*/ + UINT8 chDevType; /*豸*/ + UINT16 wDevId; /*忨豸 ID*/ + UINT16 wBoardColOpenRelayId; /* ɼ̵ID */ + UINT16 wBoardColCloseRelayId; /* ղɼ̵ID */ +}Relay_ReverseBoardStruct; + +typedef struct S_Relay_ReverseSwitchStruct +{ + UINT16 wReversSwitchId; /*пID*/ + UINT16 ocId; /*OC ID*/ + UINT16 wColOpenRelayId; /* ɼ̵ID */ + UINT16 wColCloseRelayId; /* ղɼ̵ID */ + UINT16 wRelateBoardNum; /*忨*/ + Relay_ReverseBoardStruct strRelateBoardBuf[OC_RELAY_REVERSE_BOARD_MAX]; /*忨*/ +}Relay_ReverseSwitchStruct; + #endif diff --git a/TSCP/src/APP/ciapp/Relay/RelayDefine.h b/TSCP/src/APP/ciapp/Relay/RelayDefine.h index e5246ec..771b7f1 100644 --- a/TSCP/src/APP/ciapp/Relay/RelayDefine.h +++ b/TSCP/src/APP/ciapp/Relay/RelayDefine.h @@ -97,6 +97,11 @@ #define SIGNAL_DXJ_TYPE ((UINT8)0x0A) /*DXJ̵*/ #define CHECK_ZCJ_TYPE ((UINT8)0x0B) /*ZCJ̵*/ #define SWITCH_IBP_TYPE ((UINT8)0x0C) /*IBP̵*/ +#define SIGNAL_DJ_TYPE ((UINT8)0x0F) /*źŻ˿̵*/ +#define SIGNAL_MAINJ_TYPE ((UINT8)0x10) /*źŻؼ̵*/ +#define SIGNAL_ACKJ_TYPE ((UINT8)0x11) /*źŻοؼ̵*/ +#define SINNAL_CMAINJ_TYPE ((UINT8)0x12) /*źŻؼ̵*/ + /*̵*/ #define RELAY_HUNXIAN_NUM ((UINT8)10) /*̵*/ diff --git a/TSCP/src/APP/ciapp/ReverseCut/ReverseCutConfigDataManage.c b/TSCP/src/APP/ciapp/ReverseCut/ReverseCutConfigDataManage.c index f268dd8..32fbe1b 100644 --- a/TSCP/src/APP/ciapp/ReverseCut/ReverseCutConfigDataManage.c +++ b/TSCP/src/APP/ciapp/ReverseCut/ReverseCutConfigDataManage.c @@ -10,12 +10,16 @@ ********************************************************/ #include "ReverseCutConfigDataManage.h" +#include "../Switch/SwitchConfigDataManage.h" +#include "../PSD/PSDConfigDataManage.h" ReverseCutCfgDataStru gstReverseCutCfgData[REVERSE_CUT_SUM_MAX] = { 0U }; /*嵹װýṹ*/ UINT16 gReverseCutCfgIdBuf[REVERSE_CUT_SUM_MAX] = { 0U }; /*嵹װID */ INT16 gReverseCutCfgSum = 0; /*嵹װ */ +ReverseSwitchCfgDataStru gLocalReverseData = { 0U };/*ڱĵй*/ + /* * ȡװõǰ @@ -139,9 +143,13 @@ UINT8 ReverseCutConfigDataManage(void) UINT16 jj = 0u; /*α*/ UINT16 wReverseCutDataSum = 0u; /*źŻ豸*/ UINT8 ret = CI_ERROR; - UINT8 localCiId = GetSystemParaLocalCiId(); - - /*źŻID*/ + UINT16 wDevId = 0u; + UINT16 wLocalSwitchSum = 0U;/*ص*/ + UINT16 wLocalPsdSum = 0U;/*PSD*/ + UINT8 localCiId = GetSystemParaLocalCiId(); /*ȡID*/ + UINT8 belongCiId = 0u;/*豸óʼ*/ + UINT8 chFind = CI_ERROR; + /*浹ID*/ wReverseCutDataSum = GetReverseCutCurSum(); if (wReverseCutDataSum < REVERSE_CUT_SUM_MAX) {/**/ @@ -163,6 +171,162 @@ UINT8 ReverseCutConfigDataManage(void) ret = CI_SUCCESS; } - return ret; + if (CI_SUCCESS == ret) + { + if (0U != gLocalReverseData.wId) + { + wLocalSwitchSum = GetSwitchCurSum(); + wLocalPsdSum = GetPsdSum(); + /*߱*/ + for (ii = 0u; ii < gLocalReverseData.wRelateBoardNum; ii++) + { + chFind = CI_ERROR; + if (CI_DEVICE_TYPE_SWITCH == gLocalReverseData.strRelateBoardBuf[ii].chDevType) + { + for (jj = 0u; jj < wLocalSwitchSum; jj++) + { + wDevId = GetSwitchId(jj); /*ȡID*/ + belongCiId = GetSwitchBelongCiId(wDevId); /*ȡID*/ + if ((wDevId == gLocalReverseData.strRelateBoardBuf[ii].wDevId) && (belongCiId == localCiId)) + { + /*öӦм̵*/ + chFind = SetSwitchRelateReverseBoardId(wDevId, gLocalReverseData.strRelateBoardBuf[ii].wReversBoardId); + break; + } + } + } + else if (CI_DEVICE_TYPE_PSD == gLocalReverseData.strRelateBoardBuf[ii].chDevType) + { + for (jj = 0u; jj < wLocalPsdSum; jj++) + { + wDevId = GetPsdId(jj); /*ȡID*/ + belongCiId = GetPsdBelongCiId(wDevId); /*ȡID*/ + if ((wDevId == gLocalReverseData.strRelateBoardBuf[ii].wDevId) && (belongCiId == localCiId)) + { + /*öӦм̵*/ + chFind = SetPsdRelateReverseRelay(wDevId, gLocalReverseData.strRelateBoardBuf[ii].wReversBoardId); + break; + } + } + } + else + { + chFind = CI_ERROR; + } + if (CI_ERROR == chFind) + { + ret = CI_ERROR; + break; + } + } + } + } + + return ret; +} + +/* +* ȡпس̵ +* ˵ +* ֵ 0: ޵ +* [1,65534]̵ID +*/ +UINT16 GetReverseSwitchOpenRelay(void) +{ + return gLocalReverseData.wColOpenRelayId; +} + +/* +* ȡпسռ̵ +* ˵ +* ֵ 0: ޵ +* [1,65534]̵ID +*/ +UINT16 GetReverseSwitchCloseRelay(void) +{ + return gLocalReverseData.wColCloseRelayId; +} + +/* +* ȡָа忨̵ +* ˵ wIndex +* ֵ 0: ޵ +* [1,65534]̵ID +* UINT16_MAX +*/ +UINT16 GetReverseBoardOpenRelay(UINT16 wIndex) +{ + UINT16 chRetVal =UINT16_MAX; + if (0U == gLocalReverseData.wRelateBoardNum) + { + chRetVal = 0U; + } + else if (wIndex < gLocalReverseData.wRelateBoardNum) + { + chRetVal = gLocalReverseData.strRelateBoardBuf[wIndex].wBoardColOpenRelayId; + } + else + { + ;/**/ + } + return chRetVal; +} + +/* +* ȡָа忨ռ̵ +* ˵ wIndex +* ֵ 0: ޵ +* [1,65534]̵ID +*/ +UINT16 GetReverseBoardCloseRelay(UINT16 wIndex) +{ + UINT16 chRetVal = UINT16_MAX; + if (0U == gLocalReverseData.wRelateBoardNum) + { + chRetVal = 0U; + } + else if (wIndex < gLocalReverseData.wRelateBoardNum) + { + chRetVal = gLocalReverseData.strRelateBoardBuf[wIndex].wBoardColCloseRelayId; + } + else + { + ;/**/ + } + return chRetVal; +} + +/* +* ȡа忨 +* ˵ +* ֵ 0: ޵ [1,42]忨 +*/ +UINT16 GetReverseBoardNum(void) +{ + UINT16 chRetVal = 0U; + if (0U == gLocalReverseData.wRelateBoardNum) + { + chRetVal = 0U; + } + else if (REVERSE_BOARD_SUM_MAX >= gLocalReverseData.wRelateBoardNum) + { + chRetVal = gLocalReverseData.wRelateBoardNum; + } + else + { + chRetVal = REVERSE_BOARD_SUM_MAX; + } + return chRetVal; +} + +/** +* @brief ȡ +* @param[in] +* @return +* @note by fan 20260610 +*/ +const ReverseSwitchCfgDataStru * GetReverseCfgData(void) +{ + return &gLocalReverseData; +} -} \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/ReverseCut/ReverseCutConfigDataManage.h b/TSCP/src/APP/ciapp/ReverseCut/ReverseCutConfigDataManage.h index 32598fa..996c7ad 100644 --- a/TSCP/src/APP/ciapp/ReverseCut/ReverseCutConfigDataManage.h +++ b/TSCP/src/APP/ciapp/ReverseCut/ReverseCutConfigDataManage.h @@ -31,11 +31,34 @@ extern "C" { UINT16 wReverseRelayId; /*м̵ID ()*/ }ReverseCutCfgDataStru; + typedef struct S_ReverseBoardStruct + { + UINT16 wReversBoardId; /*а忨D*/ + UINT8 chDevType; /*豸*/ + UINT16 wDevId; /*忨豸 ID*/ + UINT16 wBoardColOpenRelayId; /* ɼ̵ID */ + UINT16 wBoardColCloseRelayId; /* ղɼ̵ID */ + }ReverseBoardStruct; + + /*пؼ忨ݽṹ*/ + typedef struct S_ReverseSwitchDataStruct + { + UINT16 wId; /*пر*/ + UINT16 wColOpenRelayId; /* ɼ̵ID */ + UINT16 wColCloseRelayId; /* ղɼ̵ID */ + UINT16 wRelateBoardNum; /*忨*/ + UINT8 chBelongCiId;/**/ + ReverseBoardStruct strRelateBoardBuf[REVERSE_BOARD_SUM_MAX]; /*忨*/ + }ReverseSwitchCfgDataStru; + + + + /*******************************ȫֱ*******************************/ extern ReverseCutCfgDataStru gstReverseCutCfgData[REVERSE_CUT_SUM_MAX]; /*嵹װýṹ*/ extern UINT16 gReverseCutCfgIdBuf[REVERSE_CUT_SUM_MAX]; /*嵹װID */ extern INT16 gReverseCutCfgSum; /*嵹װ */ - + extern ReverseSwitchCfgDataStru gLocalReverseData;/*ڱĵй*/ /* * ȡװõǰ * ˵ void @@ -83,6 +106,54 @@ extern "C" { * CI_ERROR,ʧ */ UINT8 ReverseCutConfigDataManage(void); + + /* + * ȡпس̵ + * ˵ + * ֵ 0: ޵ + * [1,65534]̵ID + */ + UINT16 GetReverseSwitchOpenRelay(void); + + /* + * ȡпسռ̵ + * ˵ + * ֵ 0: ޵ + * [1,65534]̵ID + */ + UINT16 GetReverseSwitchCloseRelay(void); + + /* + * ȡָа忨̵ + * ˵ wIndex + * ֵ 0: ޵ + * [1,65534]̵ID + * UINT16_MAX + */ + UINT16 GetReverseBoardOpenRelay(UINT16 wIndex); + + /* + * ȡָа忨ռ̵ + * ˵ wIndex + * ֵ 0: ޵ + * [1,65534]̵ID + */ + UINT16 GetReverseBoardCloseRelay(UINT16 wIndex); + + /* + * ȡа忨 + * ˵ + * ֵ 0: ޵ [1,42]忨 + */ + UINT16 GetReverseBoardNum(void); + + /** + * @brief ȡ + * @param[in] + * @return + * @note by fan 20260610 + */ + const ReverseSwitchCfgDataStru * GetReverseCfgData(void); #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/ReverseCut/ReverseCutDataManage.c b/TSCP/src/APP/ciapp/ReverseCut/ReverseCutDataManage.c index 14ee6d2..d2528bd 100644 --- a/TSCP/src/APP/ciapp/ReverseCut/ReverseCutDataManage.c +++ b/TSCP/src/APP/ciapp/ReverseCut/ReverseCutDataManage.c @@ -16,6 +16,7 @@ ReverseCutDataStru gstReverseCutData[REVERSE_CUT_SUM_MAX] = { 0U }; /* UINT8 gTiocSystemMode = 0U; /*TIOCģʽ (Ӱģʽ ģʽ)*/ UINT8 gTiocSystemCutState = 0U; /*TIOCܷ״̬ (ܷлĬ)*/ UINT8 gTiocCanntCutReason = 0U; /*ɵԭ*/ +LocalReverseBoardDataStru gstReversetData = { 0U }; /*״̬洢ˢ*/ /* @@ -235,6 +236,78 @@ UINT8 ReverseCutDataManageInit(void) ;/* ʼʧ */ } + if (CI_SUCCESS == ret) + { + /*ʼΪǿƲ*/ + gstReversetData.chSwitchState = REVERSE_STATE_OLD_SYSTEM; + for (i = 0u; i < REVERSE_BOARD_SUM_MAX; i++) + { + gstReversetData.localReverBoardState[i] = REVERSE_STATE_OLD_SYSTEM; + } + } + return ret; +} +/* +* õп״̬ +* ˵ const UINT8 chReverseCutState,״̬ 0xAA½ 0x55 0xFF쳣 +* ֵ +*/ +void SetReverseSwitchState(const UINT8 chReverseCutState) +{ + if ((REVERSE_STATE_NEW_SYSTEM == chReverseCutState) + || (REVERSE_STATE_OLD_SYSTEM == chReverseCutState) + ||(REVERSE_STATE_ABNORMAL == chReverseCutState)) + { + gstReversetData.chSwitchState = chReverseCutState; + } +} + +/* +* ָа忨״̬ +* ˵ const UINT8 chReverseCutState,״̬0xAA½ 0x55 0xFF쳣 wIndex +* ֵ +*/ +void SetReverseBoardState(const UINT8 chReverseCutState, const UINT16 wIndex) +{ + if ((REVERSE_STATE_NEW_SYSTEM == chReverseCutState) + || (REVERSE_STATE_OLD_SYSTEM == chReverseCutState) + ||(REVERSE_STATE_ABNORMAL == chReverseCutState)) + { + if(wIndex < REVERSE_BOARD_SUM_MAX) + { + gstReversetData.localReverBoardState[wIndex] = chReverseCutState; + } + } +} + +/* +* ȡп״̬ +* ˵ +* ֵ 0xAA½ 0x55 0xFF쳣 +*/ +UINT8 GetReverseSwitchState(void) +{ + UINT8 ret = gstReversetData.chSwitchState; + return ret; +} + +/* +* ȡָIDָа忨״̬ +* ˵ const UINT16 wBoardId,а忨Id +* ֵ 0xAA½ 0x55 0xFF쳣 +*/ +UINT8 GetReverseBoardState(const UINT16 wBoardId) +{ + UINT8 ret = REVERSE_STATE_ABNORMAL; + UINT16 jj = 0U;/**/ + for (jj = 0U; jj < gLocalReverseData.wRelateBoardNum; jj++) + { + if (wBoardId == gLocalReverseData.strRelateBoardBuf[jj].wReversBoardId) + { + ret = gstReversetData.localReverBoardState[jj]; + break; + } + } return ret; } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/ReverseCut/ReverseCutDataManage.h b/TSCP/src/APP/ciapp/ReverseCut/ReverseCutDataManage.h index 3e9445e..c672e8e 100644 --- a/TSCP/src/APP/ciapp/ReverseCut/ReverseCutDataManage.h +++ b/TSCP/src/APP/ciapp/ReverseCut/ReverseCutDataManage.h @@ -30,6 +30,15 @@ extern "C" { UINT16 wReverseState; /*״̬*/ }ReverseCutDataStru; + /*״̬ݽṹ*/ + typedef struct S_ReverseDataStruct + { + UINT8 chSwitchState; /*п״̬*/ + UINT8 localReverBoardState[REVERSE_BOARD_SUM_MAX];/*а忨״̬*/ + }LocalReverseBoardDataStru; + + + /*******************************ȫֱ*******************************/ extern ReverseCutDataStru gstReverseCutData[REVERSE_CUT_SUM_MAX]; /*嵹װݶ̬ݽṹ*/ extern UINT8 gTiocSystemMode; @@ -109,6 +118,34 @@ void SetReverseCutState(const UINT16 wReverseCutId, const UINT8 chReverseCutStat */ UINT8 ReverseCutDataManageInit(void); +/* +* õп״̬ +* ˵ const UINT8 chReverseCutState,״̬ 0xAA½ 0x55 0xFF쳣 +* ֵ +*/ +void SetReverseSwitchState(const UINT8 chReverseCutState); + +/* +* ָа忨״̬ +* ˵ const UINT8 chReverseCutState,״̬0xAA½ 0x55 0xFF쳣 wIndex +* ֵ +*/ +void SetReverseBoardState(const UINT8 chReverseCutState, const UINT16 wIndex); + +/* +* ȡп״̬ +* ˵ +* ֵ 0xAA½ 0x55 0xFF쳣 +*/ +UINT8 GetReverseSwitchState(void); + +/* +* ȡָIDָа忨״̬ +* ˵ const UINT16 wBoardId,а忨Id +* ֵ 0xAA½ 0x55 0xFF쳣 +*/ +UINT8 GetReverseBoardState(const UINT16 wBoardId); + #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/ReverseCut/ReverseCutDefine.h b/TSCP/src/APP/ciapp/ReverseCut/ReverseCutDefine.h index 0d4b91c..0758472 100644 --- a/TSCP/src/APP/ciapp/ReverseCut/ReverseCutDefine.h +++ b/TSCP/src/APP/ciapp/ReverseCut/ReverseCutDefine.h @@ -31,4 +31,12 @@ #define REVERSE_REASON_OC_COMM_ERR ((UINT8)0x01) /*ɵԭ OCͨŹ*/ #define REVERSE_REASON_IVOC_COMM_ERR ((UINT8)0x02) /*ɵԭ IVOCͨŹ*/ #define REVERSE_REASON_AXLE_COMM_ERR ((UINT8)0x04) /*ɵԭ ϵͳͨŹ*/ + +/*豸ֵ*/ +#define REVERSE_BOARD_SUM_MAX ((UINT16)42) /*嵹а忨ֵ*/ + +/*״̬*/ +#define REVERSE_STATE_NEW_SYSTEM ((UINT8)0xAAU) /*½ϵͳ*/ +#define REVERSE_STATE_OLD_SYSTEM ((UINT8)0x55U) /*ϵͳ*/ +#define REVERSE_STATE_ABNORMAL ((UINT8)0xFFU) /*ɼ쳣*/ #endif \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/Route/RouteConfigDataManage.c b/TSCP/src/APP/ciapp/Route/RouteConfigDataManage.c index c23eb69..6d1f390 100644 --- a/TSCP/src/APP/ciapp/Route/RouteConfigDataManage.c +++ b/TSCP/src/APP/ciapp/Route/RouteConfigDataManage.c @@ -3726,4 +3726,76 @@ UINT8 GetRouteConfigDirection(const UINT16 routeId) retVal = CI_ERROR; } return retVal; +} + +/* +* ȡ· +* ˵ const UINT16 wRouteId, ·ID +* ֵ · +* +* BY LYJ 20260602 +*/ +UINT8 GetRouteConnectType(const UINT16 wRouteId) +{ + UINT8 chRetVal = 0U; + UINT16 bufIndex = 0U; + bufIndex = GetRouteConfigBufIndex(wRouteId); /*ȡ·±*/ + + if (ROUTE_SUM_MAX > bufIndex) + { + chRetVal = RouteConfigDataStru[bufIndex].chRouteConnectType; + } + else + { + /**/ + } + + return chRetVal; +} + +/* +* ȡ·ָεǰһ +* ˵ const UINT16 wRouteId, ·ID +* const UINT16 wPhySecId,ID +* ֵ ·ָεǰһ +* +* BY LYJ 20260603 +*/ +UINT16 GetRoutePhySecFrontPhyId(const UINT16 wRouteId, const UINT16 wPhySecId) +{ + UINT16 wFroutPhySecId = 0U; + UINT8 chRoutePhySum = 0U; + RoutePhysicalSectionStruct* pRoutePhyBuf = NULL; + UINT8 ii = 0U; + + chRoutePhySum = GetRoutePhysicalSectionSum(wRouteId); + pRoutePhyBuf = GetRouteSectionData(wRouteId); + if (NULL != pRoutePhyBuf) + { + for (ii = 0U;ii < chRoutePhySum;ii++) + { + if (pRoutePhyBuf[ii].PhysicalSectionId == wPhySecId) + { + if (0U < ii) + { + wFroutPhySecId = pRoutePhyBuf[ii - 1U].PhysicalSectionId; + } + else + { + /*·һߣ·ߣڱߴ*/ + } + break; + } + else + { + /**/ + } + } + } + else + { + /**/ + } + + return wFroutPhySecId; } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/Route/RouteConfigDataManage.h b/TSCP/src/APP/ciapp/Route/RouteConfigDataManage.h index 76ee4e4..1ec65ce 100644 --- a/TSCP/src/APP/ciapp/Route/RouteConfigDataManage.h +++ b/TSCP/src/APP/ciapp/Route/RouteConfigDataManage.h @@ -317,6 +317,7 @@ typedef struct S_RouteConfigDataStruct UINT8 cRouteRukuProperty; /*ǷΪ·0x55 ·0xaa ·*/ SideProtecGroupStru RouteSideProtecData;/*·*/ UINT8 chRouteCouplinkType; /*·ԣ0x55 ԣ0xaa δ*/ + UINT8 chRouteConnectType; /*·ԣ0x55 ԣ0xaa δ*/ }RouteConfigDataStruct; /*******************************ȫֱ*******************************/ @@ -1427,6 +1428,23 @@ UINT8 GetPhySecInRoutePosIndex(const UINT16 routeId, const UINT16 phySectionId); ** by LYJ 20260330 */ UINT8 GetRouteConfigDirection(const UINT16 routeId); +/* +* ȡ· +* ˵ const UINT16 wRouteId, ·ID +* ֵ · +* +* BY LYJ 20260602 +*/ +UINT8 GetRouteConnectType(const UINT16 wRouteId); +/* +* ȡ·ָεǰһ +* ˵ const UINT16 wRouteId, ·ID +* const UINT16 wPhySecId,ID +* ֵ ·ָεǰһ +* +* BY LYJ 20260603 +*/ +UINT16 GetRoutePhySecFrontPhyId(const UINT16 wRouteId, const UINT16 wPhySecId); #ifdef __cplusplus } diff --git a/TSCP/src/APP/ciapp/Route/RouteDataManage.c b/TSCP/src/APP/ciapp/Route/RouteDataManage.c index 52f5ef6..1b0f6a4 100644 --- a/TSCP/src/APP/ciapp/Route/RouteDataManage.c +++ b/TSCP/src/APP/ciapp/Route/RouteDataManage.c @@ -6192,4 +6192,54 @@ UINT32 GetRouteIdleCycNum(const UINT16 routeId) } return reVal; +} + +/* +* ָ·߽־ +* ˵const UINT16 routeId õĽ·ID +* const UINT8 setFlag ñ־ +* ֵ +* Created lyj 2026.06.03 +*/ +void SetRouteConnectReleaseFlag(const UINT16 routeId, const UINT8 setFlag) +{ + UINT16 bufIndex = 0U; /*±*/ + bufIndex = GetRouteConfigBufIndex(routeId); /*ȡ·±*/ + if (ROUTE_SUM_MAX > bufIndex) + { + if ((ROUTE_CONNECT_RELEASE_YES == setFlag) || (ROUTE_CONNECT_RELEASE_NO == setFlag)) + { + RouteDataStru[bufIndex].chRouteConnReleaseFlag = setFlag; + } + else + { + /**/ + } + } + else + { + /**/ + } +} +/* +* ȡָ·߽־ +* ˵const UINT16 routeId ·ID +* ֵ·߽־ +* Created lyj 2026.06.03 +*/ +UINT8 GetRouteConnectReleaseFlag(const UINT16 routeId) +{ + UINT16 bufIndex = 0U; /*±*/ + UINT8 chRetVal = ROUTE_CONNECT_RELEASE_NO; + bufIndex = GetRouteConfigBufIndex(routeId); /*ȡ·±*/ + if (ROUTE_SUM_MAX > bufIndex) + { + chRetVal = RouteDataStru[bufIndex].chRouteConnReleaseFlag; + } + else + { + /**/ + } + + return chRetVal; } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/Route/RouteDataManage.h b/TSCP/src/APP/ciapp/Route/RouteDataManage.h index 4db2edf..e43273f 100644 --- a/TSCP/src/APP/ciapp/Route/RouteDataManage.h +++ b/TSCP/src/APP/ciapp/Route/RouteDataManage.h @@ -113,6 +113,7 @@ typedef struct S_RouteDataStruct UINT8 chCouplinkSuccessFlag; /*·ҳɹ*/ UINT8 chCouplinkErrorFlag; /*·ʧ*/ UINT32 dwRouteIdleCycNum; /*·ʼں*/ + UINT8 chRouteConnReleaseFlag; /*·߽־*/ } RouteDataStruct; /*·̬ݽṹ-*/ @@ -1787,6 +1788,21 @@ void SetRouteStopensureFlagCC(const UINT16 routeId, const UINT8 stopensureFlag); * by cgh 20251210 */ UINT32 GetRouteIdleCycNum(const UINT16 routeId); +/* +* ָ·߽־ +* ˵const UINT16 routeId õĽ·ID +* const UINT8 setFlag ñ־ +* ֵ +* Created lyj 2026.06.03 +*/ +void SetRouteConnectReleaseFlag(const UINT16 routeId, const UINT8 setFlag); +/* +* ȡָ·߽־ +* ˵const UINT16 routeId ·ID +* ֵ·߽־ +* Created lyj 2026.06.03 +*/ +UINT8 GetRouteConnectReleaseFlag(const UINT16 routeId); #ifdef __cplusplus } diff --git a/TSCP/src/APP/ciapp/Route/RouteDefine.h b/TSCP/src/APP/ciapp/Route/RouteDefine.h index 3720948..94922e3 100644 --- a/TSCP/src/APP/ciapp/Route/RouteDefine.h +++ b/TSCP/src/APP/ciapp/Route/RouteDefine.h @@ -100,6 +100,7 @@ #define ROUTE_TYPE_AUTO_TRIGGER ((UINT8)0x66) /*Զ·*/ #define ROUTE_TYPE_RUKU ((UINT8)0x77) /*·*/ #define ROUTE_TYPE_COUPLINK ((UINT8)0x88) /*ҽ·*/ +#define ROUTE_TYPE_CONNECT ((UINT8)0x99) /*߽·*/ /*·״̬*/ #define ROUTE_STATE_IDLE ((UINT8)0x01) /*·*/ @@ -401,5 +402,10 @@ #define SIDE_PROTECT_SWITCH_NUM_MAX ((UINT8)5) /**/ #define SIDE_PROTECT_PHYSEC_NUM_MAX ((UINT8)10) /**/ #define SIDE_PROTECT_NUM_MAX ((UINT8)10) /**/ + + +#define ROUTE_CONNECT_RELEASE_YES ((UINT8)0x55) /*·߽־Ч*/ +#define ROUTE_CONNECT_RELEASE_NO ((UINT8)0xaa) /*·߽־Ч*/ + #endif diff --git a/TSCP/src/APP/ciapp/Section/LogicSectionDataManage.c b/TSCP/src/APP/ciapp/Section/LogicSectionDataManage.c index d39455f..3525814 100644 --- a/TSCP/src/APP/ciapp/Section/LogicSectionDataManage.c +++ b/TSCP/src/APP/ciapp/Section/LogicSectionDataManage.c @@ -2812,7 +2812,7 @@ UINT8 GetLogSecResShareFlag(const UINT16 wLgcSecId) /*ش*/ funRetVal = CI_ERROR; } - return LOGIC_SECTION_RES_SHARE_YES; + return funRetVal; } /* diff --git a/TSCP/src/APP/ciapp/Section/SectionDefine.h b/TSCP/src/APP/ciapp/Section/SectionDefine.h index 6516f2b..336405b 100644 --- a/TSCP/src/APP/ciapp/Section/SectionDefine.h +++ b/TSCP/src/APP/ciapp/Section/SectionDefine.h @@ -18,7 +18,7 @@ #define PHYSICAL_SECTION_SUM_MAX ((UINT16)1000) /*ֵ*/ #define AXIS_SECTION_SUM_MAX ((UINT16)2000) /*ֵ*/ #define AXIS_INCLUDE_LOG_SUM_MAX ((UINT16)50) /*߼ֵ*/ -#define LOGIC_SECTION_SUM_MAX ((UINT16)2000) /*߼ֵ*/ +#define LOGIC_SECTION_SUM_MAX ((UINT16)3000) /*߼ֵ*/ #define PHYSICAL_INCLUDE_AXIS_SUM_MAX ((UINT16)10) /*ΰֵ*/ #define AXIS_INCLUDE_SWITCH_SUM_MAX ((UINT16)4) /*ΰĵֵ*/ #define AXIS_INCLUDE_LINK_SUM_MAX ((UINT16)5) /*ΰLINKֵ*/ diff --git a/TSCP/src/APP/ciapp/Signal/SignalConfigDataManage.c b/TSCP/src/APP/ciapp/Signal/SignalConfigDataManage.c index a193dab..fe397c1 100644 --- a/TSCP/src/APP/ciapp/Signal/SignalConfigDataManage.c +++ b/TSCP/src/APP/ciapp/Signal/SignalConfigDataManage.c @@ -1888,4 +1888,93 @@ UINT16 GetSignalOutFirstLogSec(const UINT16 signalId) } } return retVal; -} \ No newline at end of file +} + +/* +* ȡָIDźŻ1˿̵IDʹã +* ˵ const UINT16 signalId, źŻID +* ֵ 0: ȡʧ +* >0: ź1˿̵ID +*/ +UINT16 GetSignalFirstDsDrvRelayId(const UINT16 signalId) +{ + UINT16 bufIndex = 0U; /*±*/ + UINT16 retVal = CI_ERROR; + + bufIndex = GetSignalConfigBufIndex(signalId); /*ȡ±*/ + if (SIGNAL_SUM_MAX > bufIndex) + { + retVal = SignalConfigDataStru[bufIndex].wFirstDsDrvRelayId; + } + else + { + retVal = CI_ERROR; + } + return retVal; +} +/* +* ȡָIDźŻ̵IDʹã +* ˵ const UINT16 signalId, źŻID +* ֵ 0: ȡʧ +* >0: ź̵ID +*/ +UINT16 GetSignalMainDrvRelayId(const UINT16 signalId) +{ + UINT16 bufIndex = 0U; /*±*/ + UINT16 retVal = CI_ERROR; + + bufIndex = GetSignalConfigBufIndex(signalId); /*ȡ±*/ + if (SIGNAL_SUM_MAX > bufIndex) + { + retVal = SignalConfigDataStru[bufIndex].wMainDrvRelayId; + } + else + { + retVal = CI_ERROR; + } + return retVal; +} +/* +* ȡָIDźŻο̵IDʹã +* ˵ const UINT16 signalId, źŻID +* ֵ 0: ȡʧ +* >0: źŴο̵ID +*/ +UINT16 GetSignalAckDrvRelayId(const UINT16 signalId) +{ + UINT16 bufIndex = 0U; /*±*/ + UINT16 retVal = CI_ERROR; + + bufIndex = GetSignalConfigBufIndex(signalId); /*ȡ±*/ + if (SIGNAL_SUM_MAX > bufIndex) + { + retVal = SignalConfigDataStru[bufIndex].wAckDrvRelayId; + } + else + { + retVal = CI_ERROR; + } + return retVal; +} +/* +* ȡָIDźŻ̵IDʹã +* ˵ const UINT16 signalId, źŻID +* ֵ 0: ȡʧ +* >0: źŸ̵ID +*/ +UINT16 GetSignalCMainDrvRelayId(const UINT16 signalId) +{ + UINT16 bufIndex = 0U; /*±*/ + UINT16 retVal = CI_ERROR; + + bufIndex = GetSignalConfigBufIndex(signalId); /*ȡ±*/ + if (SIGNAL_SUM_MAX > bufIndex) + { + retVal = SignalConfigDataStru[bufIndex].wCMainDrvRelayId; + } + else + { + retVal = CI_ERROR; + } + return retVal; +} diff --git a/TSCP/src/APP/ciapp/Signal/SignalConfigDataManage.h b/TSCP/src/APP/ciapp/Signal/SignalConfigDataManage.h index 80a0591..71585b7 100644 --- a/TSCP/src/APP/ciapp/Signal/SignalConfigDataManage.h +++ b/TSCP/src/APP/ciapp/Signal/SignalConfigDataManage.h @@ -102,6 +102,11 @@ typedef struct S_SignalConfigDataStruct UINT16 LxDrvRelayId; /*гź̵ID(ֶ-ʹ)*/ UINT16 YxDrvRelayId; /*ź̵ID(ֶ-ʹ)*/ UINT16 DxDrvRelayId; /*ź̵ID(ֶ-ʹ)*/ + UINT16 wFirstDsDrvRelayId; /*1˿̵ID(ֶ-ʹ)*/ + UINT16 wMainDrvRelayId; /*źŻ̵ID(ֶ-ʹ)*/ + UINT16 wAckDrvRelayId; /*źŻο̵ID(ֶ-ʹ)*/ + UINT16 wCMainDrvRelayId; /*źŻ̵ID(ֶ-ʹ)*/ + } SignalConfigDataStruct; typedef struct S_OC_SignalConfigDataStruct @@ -744,6 +749,34 @@ UINT16 GetSignalDxDrvRelayId(const UINT16 signalId); * >0: ߼ID */ UINT16 GetSignalOutFirstLogSec(const UINT16 signalId); +/* +* ȡָIDźŻ1˿̵IDʹã +* ˵ const UINT16 signalId, źŻID +* ֵ 0: ȡʧ +* >0: ź1˿̵ID +*/ +UINT16 GetSignalFirstDsDrvRelayId(const UINT16 signalId); +/* +* ȡָIDźŻ̵IDʹã +* ˵ const UINT16 signalId, źŻID +* ֵ 0: ȡʧ +* >0: ź̵ID +*/ +UINT16 GetSignalMainDrvRelayId(const UINT16 signalId); +/* +* ȡָIDźŻο̵IDʹã +* ˵ const UINT16 signalId, źŻID +* ֵ 0: ȡʧ +* >0: źŴο̵ID +*/ +UINT16 GetSignalAckDrvRelayId(const UINT16 signalId); +/* +* ȡָIDźŻ̵IDʹã +* ˵ const UINT16 signalId, źŻID +* ֵ 0: ȡʧ +* >0: źŸ̵ID +*/ +UINT16 GetSignalCMainDrvRelayId(const UINT16 signalId); #ifdef __cplusplus } diff --git a/TSCP/src/APP/ciapp/Signal/SignalDataManage.c b/TSCP/src/APP/ciapp/Signal/SignalDataManage.c index 6af206e..1971e01 100644 --- a/TSCP/src/APP/ciapp/Signal/SignalDataManage.c +++ b/TSCP/src/APP/ciapp/Signal/SignalDataManage.c @@ -5791,4 +5791,71 @@ void SetSignalCrossStateCC(const UINT16 signalId, const UINT8 signalCrossState, { /**/ } +} + +/* +* ȡؼ̵״̬ +* ˵const UINT16 wCMainlRralyId, ̵ID +* const UINT16 wSignalId, źŻID +* ֵ״̬ +* Created LYJ 2026.6.2 +*/ +UINT8 GetCMainRelayDriveState(const UINT16 wCMainlRralyId, const UINT16 wSignalId) +{ + UINT8 chRet = CI_ERROR; + UINT16 wSigOutPhyId = 0U; + UINT16 wSigInPhyId = 0U; + UINT16 wLockRouteId = 0U; + UINT8 chOccState = 0U; + UINT8 chLockState = 0U; + UINT8 chFengSuoState = 0U; + UINT8 chJLockState = 0U; + UINT16 wQXzhaochaRelay = 0U; + UINT8 chColleState = 0U; + + if ((0U < wCMainlRralyId) && (RELAY_SUM_MAX > wCMainlRralyId)) + { + wSigOutPhyId = GetSignalOutFirstPhySecId(wSignalId); /*źŻⷽ*/ + chOccState = GetPhySecCurMergeState(wSigOutPhyId); /*ռ״̬*/ + chLockState = GetPhySecLockState(wSigOutPhyId); /*״̬*/ + chFengSuoState = GetPhySecFLockState(wSigOutPhyId); /*״̬*/ + chJLockState = GetPhySecJumpLockState(wSigOutPhyId); /*Ծ״̬*/ + /*źŻⷽΣδգδռãδ*/ + if ((SECTION_OCCUPY_NO == chOccState) && (PHYSICAL_SECTION_LOCK_NO == chLockState) + && (PHYSICAL_SECTION_FLOCK_NO == chFengSuoState) && (PHYSICAL_SECTION_JUMP_LOCK_NO == chJLockState)) + { + wSigInPhyId = GetSignalInFirstPhySecId(wSignalId,0U); /*źŻڷ*/ + wLockRouteId = GetPhySecRLockBelongRouteId(wSigInPhyId); /*·*/ + wQXzhaochaRelay = GetRouteCancleZhaoChaRelayId(wLockRouteId); /*·õȡղ̵*/ + + /*źŻΪʼ˵Ľ· õȡղ̵*/ + if ((0U < wQXzhaochaRelay) && (RELAY_SUM_MAX > wQXzhaochaRelay)) + { + chColleState = GetRelayCollState(wQXzhaochaRelay); + if (RELAY_STATE_DOWN == chColleState) + { + chRet = CI_SUCCESS; + } + else + { + /**/ + } + } + else + { + /**/ + } + } + else + { + /**/ + } + + } + else + { + /**/ + } + + return chRet; } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/Signal/SignalDataManage.h b/TSCP/src/APP/ciapp/Signal/SignalDataManage.h index e426e20..7a8f931 100644 --- a/TSCP/src/APP/ciapp/Signal/SignalDataManage.h +++ b/TSCP/src/APP/ciapp/Signal/SignalDataManage.h @@ -1248,6 +1248,14 @@ UINT8 GetSignalCrossTacsTrainIdCC(const UINT16 signalId); * Created By LQ 2025.11.05 */ void SetSignalCrossStateCC(const UINT16 signalId, const UINT8 signalCrossState, const UINT8 wTrainId); +/* +* ȡؼ̵״̬ +* ˵const UINT16 wCMainlRralyId, źŻID +* const UINT16 wSignalId, źŻID +* ֵ״̬ +* Created LYJ 2026.6.2 +*/ +UINT8 GetCMainRelayDriveState(const UINT16 wCMainlRralyId, const UINT16 wSignalId); #ifdef __cplusplus } diff --git a/TSCP/src/APP/ciapp/Switch/SwitchConfigDataManage.c b/TSCP/src/APP/ciapp/Switch/SwitchConfigDataManage.c index 171097d..f8e1f07 100644 --- a/TSCP/src/APP/ciapp/Switch/SwitchConfigDataManage.c +++ b/TSCP/src/APP/ciapp/Switch/SwitchConfigDataManage.c @@ -46,7 +46,7 @@ UINT16 GetSwitchCurSum(void) UINT16 retVal = 0u; if (SwitchCurSum >= (INT16)SWITCH_SUM_MAX) { - retVal = SWITCH_SUM_MAX; + retVal = SWITCH_SUM_MAX; } else if (SwitchCurSum < 0) { @@ -227,31 +227,6 @@ UINT16 GetSwitchDbRelayId(const UINT16 switchId) return retVal; } -/* -* ȡָIDӰģʽλʾ̵ID -* ˵ const UINT16 switchId, ID -* ֵ 0: ȡʧ -* >0: λʾ̵ID -*/ -UINT16 GetSwitchShadowDbRelayId(const UINT16 switchId) -{ - UINT16 bufIndex = 0u; /*±*/ - UINT16 retVal = CI_ERROR; - - bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ - - if (bufIndex < SWITCH_SUM_MAX) - { - retVal = SwitchConfigDataStru[bufIndex].wShadowDbRelayId; - } - else - { - retVal = CI_ERROR; - } - return retVal; -} - - /* * ȡָIDλʾ̵ID * ˵ const UINT16 switchId, ID @@ -276,31 +251,6 @@ UINT16 GetSwitchFbRelayId(const UINT16 switchId) return retVal; } -/* -* ȡָIDӰģʽλʾ̵ID -* ˵ const UINT16 switchId, ID -* ֵ 0: ȡʧ -* >0: λʾ̵ID -*/ -UINT16 GetSwitchShadowFbRelayId(const UINT16 switchId) -{ - UINT16 bufIndex = 0u; /*±*/ - UINT16 retVal = CI_ERROR; - - bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ - - if (bufIndex < SWITCH_SUM_MAX) - { - retVal = SwitchConfigDataStru[bufIndex].wShadowFbRelayId; - } - else - { - retVal = CI_ERROR; - } - return retVal; -} - - /* * ȡָIDʲټ̵ID * ˵ const UINT16 switchId, ID @@ -1762,3 +1712,172 @@ UINT16 GetSwitchThisOcOtherSwitchId(UINT16 switchId, UINT8 ocId) return retVal; } +/* +* ȡָIDǷ߱ɼ +* ˵const UINT16 switchId, ID +* ֵ REDUN_COLL_YES: ߱ɼ +* REDUN_COLL_NO: ߱ɼ +* CI_ERROR: ID +*/ +UINT8 GetSwitchRedunCollCfg(const UINT16 switchId) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT8 retVal = CI_ERROR; + + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if (SWITCH_SUM_MAX > bufIndex) + { + retVal = SwitchConfigDataStru[bufIndex].RedunCollCfg; + } + else + { + retVal = CI_ERROR; + } + return retVal; +} + +/* +* ȡָIDʾDBJ1̵ID +* ˵const UINT16 switchId, ID +* ֵ 0: ID +* ̵ID +*/ +UINT16 GetSwitchRedunDBJ1RelayId(const UINT16 switchId, const UINT16 ocIndex) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT16 retVal = 0u; + + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if ((SWITCH_SUM_MAX > bufIndex) && (SWITCH_REDUN_COLL_MAX > ocIndex)) + { + retVal = SwitchConfigDataStru[bufIndex].RedunCollRelayStru[ocIndex].wRedunDb1RelayId; + } + else + { + retVal = 0u; + } + return retVal; +} + +/* +* ȡָIDʾDBJ2̵ID +* ˵const UINT16 switchId, ID +* ֵ 0: ID +* ̵ID +*/ +UINT16 GetSwitchRedunDBJ2RelayId(const UINT16 switchId, const UINT16 ocIndex) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT16 retVal = 0u; + + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if ((SWITCH_SUM_MAX > bufIndex) && (SWITCH_REDUN_COLL_MAX > ocIndex)) + { + retVal = SwitchConfigDataStru[bufIndex].RedunCollRelayStru[ocIndex].wRedunDb2RelayId; + } + else + { + retVal = 0u; + } + return retVal; +} + +/* +* ȡָIDʾFBJ1̵ID +* ˵const UINT16 switchId, ID +* ֵ 0: ID +* ̵ID +*/ +UINT16 GetSwitchRedunFBJ1RelayId(const UINT16 switchId, const UINT16 ocIndex) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT16 retVal = 0u; + + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if ((SWITCH_SUM_MAX > bufIndex) && (SWITCH_REDUN_COLL_MAX > ocIndex)) + { + retVal = SwitchConfigDataStru[bufIndex].RedunCollRelayStru[ocIndex].wRedunFb1RelayId; + } + else + { + retVal = 0u; + } + return retVal; +} + +/* +* ȡָIDʾFBJ2̵ID +* ˵const UINT16 switchId, ID +* ֵ 0: ID +* ̵ID +*/ +UINT16 GetSwitchRedunFBJ2RelayId(const UINT16 switchId, const UINT16 ocIndex) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT16 retVal = 0u; + + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if ((SWITCH_SUM_MAX > bufIndex) && (SWITCH_REDUN_COLL_MAX > ocIndex)) + { + retVal = SwitchConfigDataStru[bufIndex].RedunCollRelayStru[ocIndex].wRedunFb2RelayId; + } + else + { + retVal = 0u; + } + return retVal; +} + +/* +* õа忨 +* ˵ const UINT16 switchId, IDUINT16 wBoardIdа忨Id +* ֵ CI_SUCCESS CI_ERROR +*/ +UINT8 SetSwitchRelateReverseBoardId(const UINT16 switchId, UINT16 wBoardId) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT8 chRet = CI_ERROR; + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if (bufIndex < SWITCH_SUM_MAX) + { + SwitchConfigDataStru[bufIndex].wReverseBoardId = wBoardId; + chRet = CI_SUCCESS; + } + else + { + ; + } + return chRet; +} + +/* +* ȡа忨id +* ˵ const UINT16 switchId, ID +* ֵ UINT16_MAX: ȡʧ +* 0: ޵ +* [1,65534]а忨Id +*/ +UINT16 GetSwitchRelateReverseBoardId(const UINT16 switchId) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT16 retVal = UINT16_MAX; + + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if (bufIndex < SWITCH_SUM_MAX) + { + retVal = SwitchConfigDataStru[bufIndex].wReverseBoardId; + } + else + { + retVal = UINT16_MAX; + } + return retVal; +} + diff --git a/TSCP/src/APP/ciapp/Switch/SwitchConfigDataManage.h b/TSCP/src/APP/ciapp/Switch/SwitchConfigDataManage.h index 0d9219b..2bb12c3 100644 --- a/TSCP/src/APP/ciapp/Switch/SwitchConfigDataManage.h +++ b/TSCP/src/APP/ciapp/Switch/SwitchConfigDataManage.h @@ -33,6 +33,15 @@ typedef struct S_ZzjPowerConfigDataStruct UINT16 ZzjFanweiPower2; /*ת޻J1_2*/ }ZzjPowerConfigDataStruct; +typedef struct S_SwitchRedunCollCfgDataStru +{ + UINT16 wRedunDb1RelayId; /*10ɼ̵1ID*/ + UINT16 wRedunDb2RelayId; /*10ɼ̵2ID*/ + UINT16 wRedunFb1RelayId; /*10ɼ̵1ID*/ + UINT16 wRedunFb2RelayId; /*10ɼ̵2ID*/ +} +SwitchRedunCollCfgDataStru; + typedef struct S_SwitchBelongOCConfigDataStr/*OC*/ { UINT8 OcId; /*ǰOC*/ @@ -59,8 +68,6 @@ typedef struct S_SwitchConfigDataStruct UINT16 FbRelayId; /*̵ID (ֶ) ʾ̵ID*/ UINT16 YcRelayId; /*ʲټ̵ID (ֶ) λ̵ID*/ UINT16 DcRelayId; /*ټ̵ID (ֶ) λ̵ID*/ - UINT16 wShadowDbRelayId; /*Ӱģʽ̵ID (ֶ) ˹*/ - UINT16 wShadowFbRelayId; /*Ӱģʽ̵ID (ֶ) ˹*/ /*Ϊؼ̵*/ UINT16 GZJId; /*ϼ̵ID (ֶ)*/ UINT16 JTYJaId; /*ֳ״̵̬ID (ֶ)*/ @@ -111,7 +118,9 @@ typedef struct S_SwitchConfigDataStruct UINT8 chSwitchBelongOcNum;/*OC*/ SwitchBelongOCConfigDataStr belongOCConfigData[SWITCH_BELONG_OC_MAX];/*OC*/ - + UINT8 RedunCollCfg; /*Ƿ߱ɼ*/ + SwitchRedunCollCfgDataStru RedunCollRelayStru[SWITCH_REDUN_COLL_MAX]; + UINT16 wReverseBoardId; /*а忨ID*/ } SwitchConfigDataStruct; @@ -543,22 +552,6 @@ UINT16 GetSwitchProtectSwitchNum(const UINT16 wSwitchId); */ UINT16* GetSwitchProtectSwitchIdBuf(const UINT16 wSwitchId); -/* -* ȡָIDӰģʽλʾ̵ID -* ˵ const UINT16 switchId, ID -* ֵ 0: ȡʧ -* >0: λʾ̵ID -*/ -UINT16 GetSwitchShadowFbRelayId(const UINT16 switchId); - -/* -* ȡָIDӰģʽλʾ̵ID -* ˵ const UINT16 switchId, ID -* ֵ 0: ȡʧ -* >0: λʾ̵ID -*/ -UINT16 GetSwitchShadowDbRelayId(const UINT16 switchId); - /** * @brief ȡ * @param const UINT16 switchId ID @@ -684,6 +677,63 @@ UINT8 GetSwitchWhetherBelongThisOc(UINT16 switchId, UINT8 ocId); * Add by mpt 20260404 */ UINT16 GetSwitchThisOcOtherSwitchId(UINT16 switchId, UINT8 ocId); + +/* +* ȡָIDǷ߱ɼ +* ˵const UINT16 switchId, ID +* ֵ REDUN_COLL_YES: ߱ɼ +* REDUN_COLL_NO: ߱ɼ +* CI_ERROR: ID +*/ +UINT8 GetSwitchRedunCollCfg(const UINT16 switchId); + +/* +* ȡָIDʾDBJ1̵ID +* ˵const UINT16 switchId, ID +* ֵ 0: ID +* ̵ID +*/ +UINT16 GetSwitchRedunDBJ1RelayId(const UINT16 switchId, const UINT16 ocIndex); + +/* +* ȡָIDʾDBJ2̵ID +* ˵const UINT16 switchId, ID +* ֵ 0: ID +* ̵ID +*/ +UINT16 GetSwitchRedunDBJ2RelayId(const UINT16 switchId, const UINT16 ocIndex); + +/* +* ȡָIDʾFBJ1̵ID +* ˵const UINT16 switchId, ID +* ֵ 0: ID +* ̵ID +*/ +UINT16 GetSwitchRedunFBJ1RelayId(const UINT16 switchId, const UINT16 ocIndex); + +/* +* ȡָIDʾFBJ2̵ID +* ˵const UINT16 switchId, ID +* ֵ 0: ID +* ̵ID +*/ +UINT16 GetSwitchRedunFBJ2RelayId(const UINT16 switchId, const UINT16 ocIndex); + +/* +* õа忨 +* ˵ const UINT16 switchId, IDUINT16 wBoardIdа忨Id +* ֵ CI_SUCCESS CI_ERROR +*/ +UINT8 SetSwitchRelateReverseBoardId(const UINT16 switchId, UINT16 wBoardId); +/* +* ȡа忨id +* ˵ const UINT16 switchId, ID +* ֵ UINT16_MAX: ȡʧ +* 0: ޵ +* [1,65534]а忨Id +*/ +UINT16 GetSwitchRelateReverseBoardId(const UINT16 switchId); + #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/Switch/SwitchDataManage.c b/TSCP/src/APP/ciapp/Switch/SwitchDataManage.c index 4523ebe..4e412ad 100644 --- a/TSCP/src/APP/ciapp/Switch/SwitchDataManage.c +++ b/TSCP/src/APP/ciapp/Switch/SwitchDataManage.c @@ -2876,7 +2876,7 @@ void SetHlhtCiSwitchPlockStatus(const UINT16 switchId, const UINT8 lockStatus) if (SWITCH_SUM_MAX > bufIndex) { - if ((SWITCH_LOCK_STATUS_PROTECT == lockStatus) || (SWITCH_LOCK_STATUS_NO == lockStatus)) + if ((SWITCH_LOCK_STATUS_PROTECT == lockStatus) || (SWITCH_LOCK_STATUS_NO == lockStatus) || (SWITCH_LOCK_STATUS_DAP == lockStatus)) { SwitchDataStru[bufIndex].LockStatus = lockStatus; } @@ -3650,3 +3650,302 @@ void SetSwitchThisOcFindCmdCycNum(const UINT16 switchId, const UINT8 ocId, const } } +/* +* жϻʼں +* ˵ const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* UINT32 cycNum ں +* ֵ void +* add by wyd 20260604 +*/ +void SetSwitchRedunJudgHunXianStCyc(const UINT16 switchId, const UINT8 chOCIndex, const UINT32 cycNum) +{ + UINT16 bufIndex = 0u; /*±*/ + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if ((SWITCH_SUM_MAX > bufIndex) && (SWITCH_REDUN_COLL_MAX > chOCIndex)) + { + SwitchDataStru[bufIndex].RedunCollData[chOCIndex].dwRedunJudgHunXianStCyc = cycNum; + } + else + { + /*nothing*/ + } +} + +/* +* ȡжϻʼں +* ˵const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* ֵ ں +* add by wyd 20260604 +*/ +UINT32 GetSwitchRedunJudgHunXianStCyc(const UINT16 switchId, const UINT8 chOCIndex) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT32 cycNum = 0u; + + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if ((SWITCH_SUM_MAX > bufIndex) && (SWITCH_REDUN_COLL_MAX > chOCIndex)) + { + cycNum = SwitchDataStru[bufIndex].RedunCollData[chOCIndex].dwRedunJudgHunXianStCyc; + } + else + { + /*nothing*/ + } + + return cycNum; +} + +/* +* ʵʻʼں +* ˵ const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* UINT32 cycNum ں +* ֵ void +* add by wyd 20260604 +*/ +void SetSwitchRedunRealHunXianStCyc(const UINT16 switchId, const UINT8 chOCIndex, const UINT32 cycNum) +{ + UINT16 bufIndex = 0u; /*±*/ + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if ((SWITCH_SUM_MAX > bufIndex) && (SWITCH_REDUN_COLL_MAX > chOCIndex)) + { + SwitchDataStru[bufIndex].RedunCollData[chOCIndex].dwRedunRealHunXianStCyc = cycNum; + } + else + { + /*nothing*/ + } +} + +/* +* ȡʵʻʼں +* ˵const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* ֵ ں +* add by wyd 20260604 +*/ +UINT32 GetSwitchRedunRealHunXianStCyc(const UINT16 switchId, const UINT8 chOCIndex) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT32 cycNum = 0u; + + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if ((SWITCH_SUM_MAX > bufIndex) && (SWITCH_REDUN_COLL_MAX > chOCIndex)) + { + cycNum = SwitchDataStru[bufIndex].RedunCollData[chOCIndex].dwRedunRealHunXianStCyc; + } + else + { + /*nothing*/ + } + + return cycNum; +} + +/* +* û߻ָ״̬ +* ˵ const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* const UINT8 cHunXianStt ߻ָ״̬ +* REDUN_HX_RECOV_1100REDUN_HX_RECOV_1010REDUN_HX_RECOV_0011 +* 0 +* ֵ void +* add by wyd 20260604 +*/ +void SetSwitchRedunHunXianRecovStt(const UINT16 switchId, const UINT8 chOCIndex, const UINT8 cHunXianStt) +{ + UINT16 bufIndex = 0u; /*±*/ + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if ((SWITCH_SUM_MAX > bufIndex) && (SWITCH_REDUN_COLL_MAX > chOCIndex)) + { + if ((REDUN_HX_RECOV_1100 == cHunXianStt) || (REDUN_HX_RECOV_1010 == cHunXianStt) + || (REDUN_HX_RECOV_0011 == cHunXianStt) || (REDUN_HX_RECOV_ALL == cHunXianStt)) + { + /*¼߻ָɼ*/ + SwitchDataStru[bufIndex].RedunCollData[chOCIndex].cHunXianRecovStt |= cHunXianStt; + } + else + { + /*ջ߻ָɼ*/ + SwitchDataStru[bufIndex].RedunCollData[chOCIndex].cHunXianRecovStt = 0u; + } + } + else + { + /*nothing*/ + } +} + +/* +* ȡ߻ָ״̬ +* ˵const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* ֵ ߻ָ״̬ +* add by wyd 20260604 +*/ +UINT8 GetSwitchRedunHunXianRecovStt(const UINT16 switchId, const UINT8 chOCIndex) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT8 RtnValue = 0u; + + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if ((SWITCH_SUM_MAX > bufIndex) && (SWITCH_REDUN_COLL_MAX > chOCIndex)) + { + RtnValue = SwitchDataStru[bufIndex].RedunCollData[chOCIndex].cHunXianRecovStt; + } + else + { + /*nothing*/ + } + + return RtnValue; +} + +/* +* òɼʼں +* ˵ const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* UINT32 cycNum ں +* ֵ void +* add by wyd 20260604 +*/ +void SetSwitchRedunFaultStCyc(const UINT16 switchId, const UINT8 chOCIndex, const UINT32 cycNum) +{ + UINT16 bufIndex = 0u; /*±*/ + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if ((SWITCH_SUM_MAX > bufIndex) && (SWITCH_REDUN_COLL_MAX > chOCIndex)) + { + SwitchDataStru[bufIndex].RedunCollData[chOCIndex].dwRedunFaultStCyc = cycNum; + } + else + { + /*nothing*/ + } +} + +/* +* ȡɼʼں +* ˵const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* ֵ ں +* add by wyd 20260604 +*/ +UINT32 GetSwitchRedunFaultStCyc(const UINT16 switchId, const UINT8 chOCIndex) +{ + UINT16 bufIndex = 0u; /*±*/ + UINT32 cycNum = 0u; + + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if ((SWITCH_SUM_MAX > bufIndex) && (SWITCH_REDUN_COLL_MAX > chOCIndex)) + { + cycNum = SwitchDataStru[bufIndex].RedunCollData[chOCIndex].dwRedunFaultStCyc; + } + else + { + /*nothing*/ + } + + return cycNum; +} + +/* +* ɼ״̬ +* ˵ const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* UINT32 cycNum ں +* ֵ void +* add by wyd 20260604 +*/ +void SetSwitchRedunCombineStt(const UINT16 switchId, const UINT8 chOCIndex, const UINT8 setValue) +{ + UINT16 bufIndex = 0u; /*±*/ + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if ((SWITCH_SUM_MAX > bufIndex) && (SWITCH_REDUN_COLL_MAX > chOCIndex)) + { + SwitchDataStru[bufIndex].RedunCollData[chOCIndex].cCombineStt = setValue; + } + else + { + /*nothing*/ + } +} + +/* +* ת޻ɼλ +* ˵ const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* UINT32 cycNum ں +* ֵ void +* add by wyd 20260604 +*/ +void SetSwitchMainCollPos(const UINT16 switchId, const UINT8 setValue) +{ + UINT16 bufIndex = 0u; /*±*/ + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if (SWITCH_SUM_MAX > bufIndex) + { + SwitchDataStru[bufIndex].cMainOcCollPos = setValue; + } + else + { + /*nothing*/ + } +} + +/* +* ɼɼλ +* ˵ const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* UINT32 cycNum ں +* ֵ void +* add by wyd 20260604 +*/ +void SetSwitchRedunCollPos(const UINT16 switchId, const UINT8 chOCIndex, const UINT8 setValue) +{ + UINT16 bufIndex = 0u; /*±*/ + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if ((SWITCH_SUM_MAX > bufIndex) && (SWITCH_REDUN_COLL_MAX > chOCIndex)) + { + SwitchDataStru[bufIndex].RedunCollData[chOCIndex].cCollPos = setValue; + } + else + { + /*nothing*/ + } +} + +/* +* ɼڻ״̬ +* ˵ const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* UINT32 cycNum ں +* ֵ void +* add by wyd 20260604 +*/ +void SetSwitchRedunCurrHunXianStt(const UINT16 switchId, const UINT8 chOCIndex, const UINT8 setValue) +{ + UINT16 bufIndex = 0u; /*±*/ + bufIndex = GetSwitchConfigBufIndex(switchId); /*ȡ±*/ + + if ((SWITCH_SUM_MAX > bufIndex) && (SWITCH_REDUN_COLL_MAX > chOCIndex)) + { + SwitchDataStru[bufIndex].RedunCollData[chOCIndex].cCurrHunxianStt = setValue; + } + else + { + /*nothing*/ + } +} \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/Switch/SwitchDataManage.h b/TSCP/src/APP/ciapp/Switch/SwitchDataManage.h index 68b0d2e..ce86761 100644 --- a/TSCP/src/APP/ciapp/Switch/SwitchDataManage.h +++ b/TSCP/src/APP/ciapp/Switch/SwitchDataManage.h @@ -27,6 +27,21 @@ #ifdef __cplusplus extern "C" { #endif + +typedef struct S_SwitchRedunCollStruct +{ + UINT32 dwRedunJudgHunXianStCyc; /*10ɼжϻʼںţƶлá + ʱΪɼߣʱΪʱδɼߣɼƶ*/ + UINT32 dwRedunRealHunXianStCyc; /*10ɼʵʻʼںţ߻ָá + ʱΪɼߣʱΪδɼ*/ + UINT8 cHunXianRecovStt; /*10ɼ߻ָ״̬ + bit0=1ɼ1100bit1=1ɼ1010bi2=1ɼ0011 + bit012Ϊ1ʾδ*/ + UINT32 dwRedunFaultStCyc; /*10ɼɼϣĿʼں*/ + UINT8 cCombineStt; /*ӡã̵ɼ*/ + UINT8 cCollPos; /*ӡãɼλ*/ + UINT8 cCurrHunxianStt; /*ӡãڻ״̬*/ +}SwitchRedunCollStruct; /*ݽṹ*/ typedef struct S_SwitchOcDataStruct @@ -103,8 +118,8 @@ typedef struct S_SwitchDataStruct UINT8 PLockedAxisSecNum;/*յļidֻڱļʹ*/ UINT16 PLockedAxisSecIdArr[SWITCH_MAX_PROTECT_LOCKED_NUM];/*յļid飬ֻڱļʹ*/ - - + SwitchRedunCollStruct RedunCollData[SWITCH_REDUN_COLL_MAX]; + UINT8 cMainOcCollPos; /*ӡãת޻λ*/ } SwitchDataStruct; /*ݽṹ*/ @@ -927,6 +942,125 @@ UINT32 GetSwitchThisOcFindCmdCycNum(const UINT16 switchId, const UINT8 ocId); * add mpt by 20260402 */ void SetSwitchThisOcFindCmdCycNum(const UINT16 switchId, const UINT8 ocId, const UINT32 cycNum); + +/* +* жϻʼں +* ˵ const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* UINT32 cycNum ں +* ֵ void +* add by wyd 20260604 +*/ +void SetSwitchRedunJudgHunXianStCyc(const UINT16 switchId, const UINT8 chOCIndex, const UINT32 cycNum); + +/* +* ȡжϻʼں +* ˵const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* ֵ ں +* add by wyd 20260604 +*/ +UINT32 GetSwitchRedunJudgHunXianStCyc(const UINT16 switchId, const UINT8 chOCIndex); + +/* +* ʵʻʼں +* ˵ const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* UINT32 cycNum ں +* ֵ void +* add by wyd 20260604 +*/ +void SetSwitchRedunRealHunXianStCyc(const UINT16 switchId, const UINT8 chOCIndex, const UINT32 cycNum); + +/* +* ȡʵʻʼں +* ˵const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* ֵ ں +* add by wyd 20260604 +*/ +UINT32 GetSwitchRedunRealHunXianStCyc(const UINT16 switchId, const UINT8 chOCIndex); + +/* +* û߻ָ״̬ +* ˵ const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* const UINT8 cHunXianStt ߻ָ״̬ +* REDUN_HX_RECOV_1100REDUN_HX_RECOV_1010REDUN_HX_RECOV_0011 +* 0 +* ֵ void +* add by wyd 20260604 +*/ +void SetSwitchRedunHunXianRecovStt(const UINT16 switchId, const UINT8 chOCIndex, const UINT8 cHunXianStt); + +/* +* ȡ߻ָ״̬ +* ˵const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* ֵ ߻ָ״̬ +* add by wyd 20260604 +*/ +UINT8 GetSwitchRedunHunXianRecovStt(const UINT16 switchId, const UINT8 chOCIndex); + +/* +* òɼʼں +* ˵ const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* UINT32 cycNum ں +* ֵ void +* add by wyd 20260604 +*/ +void SetSwitchRedunFaultStCyc(const UINT16 switchId, const UINT8 chOCIndex, const UINT32 cycNum); + +/* +* ȡɼʼں +* ˵const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* ֵ ں +* add by wyd 20260604 +*/ +UINT32 GetSwitchRedunFaultStCyc(const UINT16 switchId, const UINT8 chOCIndex); + +/* +* ɼ״̬ +* ˵ const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* UINT32 cycNum ں +* ֵ void +* add by wyd 20260604 +*/ +void SetSwitchRedunCombineStt(const UINT16 switchId, const UINT8 chOCIndex, const UINT8 setValue); + +/* +* ת޻ɼλ +* ˵ const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* UINT32 cycNum ں +* ֵ void +* add by wyd 20260604 +*/ +void SetSwitchMainCollPos(const UINT16 switchId, const UINT8 setValue); + +/* +* ɼɼλ +* ˵ const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* UINT32 cycNum ں +* ֵ void +* add by wyd 20260604 +*/ +void SetSwitchRedunCollPos(const UINT16 switchId, const UINT8 chOCIndex, const UINT8 setValue); + +/* +* ɼڻ״̬ +* ˵ const UINT16 switchId, ID +* const UINT8 ocIndex OC± +* UINT32 cycNum ں +* ֵ void +* add by wyd 20260604 +*/ +void SetSwitchRedunCurrHunXianStt(const UINT16 switchId, const UINT8 chOCIndex, const UINT8 setValue); + #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/Switch/SwitchDefine.h b/TSCP/src/APP/ciapp/Switch/SwitchDefine.h index d143ac3..b604ec0 100644 --- a/TSCP/src/APP/ciapp/Switch/SwitchDefine.h +++ b/TSCP/src/APP/ciapp/Switch/SwitchDefine.h @@ -155,6 +155,7 @@ #define SWITCH_BELONG_OC_MAX 2U /*OC*/ +#define SWITCH_REDUN_COLL_MAX 2U /*ɼ*/ #define MAIN_CONTROL 0x55U /**/ #define STANDBY_CONTROL 0xAAU /**/ @@ -168,9 +169,21 @@ #define SWITCH_BOARD_FAULT ((UINT8)0xff) /*ת޻*/ #define SWITCH_BOARD_NORMAL ((UINT8)0x55) /*ת޻*/ -#define FIND_DINGWEI_CMD ((UINT8)0x1) /*Ѱ*/ -#define FIND_FANWEI_CMD ((UINT8)0x2) /*Ѱ*/ -#define INIT_FIND_CMD ((UINT8)0x3) /*ʼѰ*/ -#define NO_FIND_CMD ((UINT8)0x0) /*Ѱλָ*/ +#define FIND_DINGWEI_CMD ((UINT8)0x1) /*Ѱ*/ +#define FIND_FANWEI_CMD ((UINT8)0x2) /*Ѱ*/ +#define INIT_FIND_CMD ((UINT8)0x3) /*ʼѰ*/ +#define NO_FIND_CMD ((UINT8)0x0) /*Ѱλָ*/ + +#define REDUN_COLL_YES ((UINT8)0xAAu) /*߱ɼ*/ +#define REDUN_COLL_NO ((UINT8)0x55u) /*߱ɼ*/ + +#define REDUN_HX_RECOV_1100 ((UINT8)0x01u) /*߻ָɼ1100*/ +#define REDUN_HX_RECOV_1010 ((UINT8)0x02u) /*߻ָɼ1010*/ +#define REDUN_HX_RECOV_0011 ((UINT8)0x04u) /*߻ָɼ0011*/ +#define REDUN_HX_RECOV_ALL ((UINT8)0x07u) /*ȫ߻ָɼ*/ + +#define REDUN_ALARM_HUNXIAN ((UINT8)0x55u) /*ɼ߱*/ +#define REDUN_ALARM_FAULT ((UINT8)0xAAu) /*ɼϱ*/ + #endif diff --git a/TSCP/src/APP/ciapp/System/SystemConfigDefine.h b/TSCP/src/APP/ciapp/System/SystemConfigDefine.h index d1c1b07..e3da949 100644 --- a/TSCP/src/APP/ciapp/System/SystemConfigDefine.h +++ b/TSCP/src/APP/ciapp/System/SystemConfigDefine.h @@ -62,7 +62,7 @@ #define VER_MAIN_SUBCI_CI_CID ((UINT8)27) /*ϵͳ汾*/ #define VER_SUB_SUBCI_CI_CID ((UINT8)0) /*ϵͳӰ汾*/ #define VER_BRUNCH_CI_CID ((UINT8)0) /*֧汾..........0....֧1 2 */ -#define VER_RETURN_SUBCI_CI_CID ((UINT8)0) /*ϵͳع汾*/ +#define VER_RETURN_SUBCI_CI_CID ((UINT8)1) /*ϵͳع汾*/ #ifdef SCADE_MODE /*SCADE汾*/ @@ -76,13 +76,13 @@ #define VER_SOFT_PRODUCT ((UINT8)40) /*Ʒ*/ #define VER_SOFT_MODUAL_APP ((UINT8)1) /*ģ*/ #define VER_SOFT_MIANVERSION ((UINT8)27) /*汾*/ -#define VER_SOFT_SUBVERSION ((UINT8)1) /*Ӱ汾*/ +#define VER_SOFT_SUBVERSION ((UINT8)2) /*Ӱ汾*/ #endif /*ɼݵĹݽṹ汾*/ #define VER_1_PUBLIC_FS_1 ((UINT8)31) -#define VER_1_PUBLIC_FS_2 ((UINT8)7) +#define VER_1_PUBLIC_FS_2 ((UINT8)8) #define VER_1_PUBLIC_FS_3 ((UINT8)0) #define VER_1_PUBLIC_FS_4 ((UINT8)0) @@ -98,7 +98,7 @@ /*ɼݵ˽ݽṹ汾*/ -#define VER_1_PRIVATE_FS_1 ((UINT8)52) +#define VER_1_PRIVATE_FS_1 ((UINT8)53) #define VER_1_PRIVATE_FS_2 ((UINT8)0) #define VER_2_PRIVATE_FS_1 ((UINT8)0xFF) @@ -108,7 +108,7 @@ #define VER_3_PRIVATE_FS_2 ((UINT8)0xFF) /*ɼOCݽṹ汾*/ -#define VER_1_OCDATA_FS_1 ((UINT8)37) /*oc 3.0 ݰ汾*/ +#define VER_1_OCDATA_FS_1 ((UINT8)38) /*oc 3.0 ݰ汾*/ #define VER_1_OCDATA_FS_2 ((UINT8)0) #define VER_2_OCDATA_FS_1 ((UINT8)0xFF) diff --git a/TSCP/src/APP/ciapp/System/SystemParameterManage.c b/TSCP/src/APP/ciapp/System/SystemParameterManage.c index 32b74fb..7d27700 100644 --- a/TSCP/src/APP/ciapp/System/SystemParameterManage.c +++ b/TSCP/src/APP/ciapp/System/SystemParameterManage.c @@ -125,9 +125,10 @@ static UINT16 g_TiocFsVersion[TIOCFS_VERSION_LENGTH] = { 0u };/* TIOC UINT32 gSystemUpdateMainUseCycNum = 0U; /*ϵͳʼں*/ -static UINT32 wSwitchMachineCutInterval = 0U; /*RC/CIϵͳת޻лʱ(λS)*/ -static UINT32 wSwitchMachineDrvingCutInterval = 0U; /*RC/CIϵͳת޻лʱ(λS)*/ -static UINT32 wSwitchLastDrvValidTime = 0U; /*RC/CIϵͳһЧʱ*/ +static UINT32 wSwitchMachineCutInterval = 0U; /*RC/CIϵͳת޻лʱ(λS)*/ +static UINT32 wSwitchMachineDrvingCutInterval = 0U; /*RC/CIϵͳת޻лʱ(λS)*/ +static UINT32 wSwitchLastDrvValidTime = 0U; /*RC/CIϵͳһЧʱ*/ +static UINT32 dwSwitchRedunCollTolTime = 0U; /*ɼʱ*/ /* * ϵͳʱת * ˵ void @@ -361,6 +362,9 @@ void SystemParaTimeToCycleCount(void) paraVal = GetSystemParaValue(SWITCH_LAST_DRV_TIME); wSwitchLastDrvValidTime = TimeToCycleCount((UINT32)paraVal * 1000U, appCycleTime); /*RC/CIϵͳһЧʱ*/ + + paraVal = GetSystemParaValue(SWITCH_REDUN_COLL_ALARM_TIME); + dwSwitchRedunCollTolTime = TimeToCycleCount((UINT32)paraVal, appCycleTime); /*ɼʱ*/ } /* @@ -3429,16 +3433,30 @@ UINT8 GetLocalSerialCommFlag(void) * @return CI_SUCCESS óɹ CI_ERROR ʧ * @note by cgh 20260507 */ -UINT8 SetLocalSerialCommData(UINT8 chGroupIndex,UINT8 chPortIndex,UINT16 wSerialCommCiId,UINT8 chSerialCommPort) +UINT8 SetLocalSerialCommData(UINT8 chGroupIndex, UINT8 chPortIndex, UINT16 wSerialCommCiId, UINT8 chSerialCommPort) { UINT8 chReval = CI_ERROR; + UINT8 chDevType = 0U; /*豸*/ + UINT8 chDevId = 0U; /*豸ID*/ + UINT8 chLocalRcWorkMode = 0u; /*RCģʽ*/ - if ((SERIAL_GROUP_SUM_MAX > chGroupIndex) && (CI_SUM_MAX > wSerialCommCiId) && (SERIAL_PORT_SUM_MAX > chPortIndex)) + if ((SERIAL_GROUP_SUM_MAX > chGroupIndex) && (SERIAL_PORT_SUM_MAX > chPortIndex)) { - gSzSerialCommData[chGroupIndex].wSerialCommOtherCiId = wSerialCommCiId; - gSzSerialCommData[chGroupIndex].chSerialCommPort[chPortIndex] = chSerialCommPort; + chLocalRcWorkMode = GetLocalRcWorkMode(); + chDevType = (UINT8)((wSerialCommCiId & 0xFF00U) >> 8U); + chDevId = (UINT8)(wSerialCommCiId & 0x00FFU); - chReval = CI_SUCCESS; + if ((0u ==wSerialCommCiId) || ((chLocalRcWorkMode == chDevType) && (CI_SUM_MAX > chDevId))) + { + gSzSerialCommData[chGroupIndex].wSerialCommOtherCiId = wSerialCommCiId; + gSzSerialCommData[chGroupIndex].chSerialCommPort[chPortIndex] = chSerialCommPort; + + chReval = CI_SUCCESS; + } + else + { + ; /*ʼʧ*/ + } } else { @@ -3514,4 +3532,15 @@ UINT8 IsSerialDevice(UINT16 DeviceName, UINT8* pSerialGroup) } return chReval; +} + +/** +* @brief ȡɼϱʱ䣨ms +* @param[in] void +* @return ɼϱʱ䣨ms +* @note by wyd 20260605 +*/ +UINT32 GetSwitchRedunCollHunXianCycCfg(void) +{ + return dwSwitchRedunCollTolTime; } \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/System/SystemParameterManage.h b/TSCP/src/APP/ciapp/System/SystemParameterManage.h index 654d97b..534f5cd 100644 --- a/TSCP/src/APP/ciapp/System/SystemParameterManage.h +++ b/TSCP/src/APP/ciapp/System/SystemParameterManage.h @@ -109,6 +109,7 @@ extern "C" { #define FUNC_OVERLAP_UT_UNLOCK_MODE ((UINT8)74) /*UTгռѹͣʱνʽ*/ #define FUNC_PSD_EXCEPT_CANCLE_TYPE ((UINT8)75) /*쳣򿪺쳣ʽ0xAA ATS 0xBA0x55δ쳣Զ*/ #define FUNC_PSD_KEEP_CLOSE_TYPE ((UINT8)76) /*ϵͳ/رվ̨ԭ*/ +#define FUNC_GATEWAY_INTERFACE_IDENTIFIER ((UINT8)77) /*ؽӿڱʶ01GALͷ 02GALͷ*/ #define CiSum_ID ((UINT16)1)/*ʵվ */ @@ -191,6 +192,7 @@ extern "C" { #define SWITCH_MACHINE_CUT_INTERVAL (77U) /*RC/CIϵͳת޻лʱ(λS)*/ #define SWITCH_MACHINE_CUT_DRV_INTERVAL (78U) /*RC/CIϵͳת޻лʱ(λS)*/ #define SWITCH_LAST_DRV_TIME (79U) /*RC/CIϵͳһЧʱ*/ +#define SWITCH_REDUN_COLL_ALARM_TIME (80U) /*ɼʱ䣨ms*/ #define FUNC_SWITCH_ON ((UINT8)0xAA) /*ÿش*/ #define FUNC_SWITCH_OFF ((UINT8)0x55) /*ÿعر*/ @@ -1636,6 +1638,14 @@ SerialCommData* GetLocalSerialCommData(void); */ UINT8 IsSerialDevice(UINT16 DeviceName, UINT8* pSerialGroup); +/** +* @brief ȡɼϱʱ䣨ms +* @param[in] void +* @return ɼϱʱ䣨ms +* @note by wyd 20260605 +*/ +UINT32 GetSwitchRedunCollHunXianCycCfg(void); + #ifdef __cplusplus } #endif diff --git a/TSCP/src/APP/ciapp/Train/TrainDataManage.c b/TSCP/src/APP/ciapp/Train/TrainDataManage.c index 222b597..d83cd1e 100644 --- a/TSCP/src/APP/ciapp/Train/TrainDataManage.c +++ b/TSCP/src/APP/ciapp/Train/TrainDataManage.c @@ -185,12 +185,6 @@ static void SetTrainAtsScreenProc(void); */ static UINT32 GetTrainTransBadCyc(const UINT16 wTrainId); -/* -* ȡָгͨ(IVOC)жں -* ˵ const UINT16 wTrainId, гID -* ֵ гͨжں -*/ -static UINT32 GetTrainIvocTransBadCyc(const UINT16 wTrainId); /* * ָгܷתΪUCT * ˵ const UINT16 wTrainId, гID @@ -366,7 +360,8 @@ UINT8 TrainDataModuleInit(void) gstTrainInfo[chCycle].chTrainPostionMode = 0U; /*гλģʽ*/ - + gstTrainInfo[chCycle].chPbtacsTransState = TRAIN_COMM_STATE_UNKNOWN; /*ʼPBTACSδͨ*/ + gstTrainInfo[chCycle].dwPbtacsTransBadCyc = 0U; gszTrainId[gTrainSum] = gstTrainInfo[chCycle].wTrainId; gTrainSum++; @@ -415,7 +410,6 @@ UINT8 TrainDataModuleInit(void) gTrainInfoTemp[chCycle].chIvocSpeedDir = 0u; /*Ivocٶȷ*/ gTrainInfoTemp[chCycle].wIvocTrainSpeed = 0u; /*Ivocгٶ*/ gTrainInfoTemp[chCycle].dwIvocDelayTime = 0u; /*IvocϢӳʱ*/ - } @@ -542,33 +536,6 @@ UINT8 GetTrainTransitmitStat(const UINT16 wTrainId) return chRetVal; } - -/* -* ȡָг(IVOC)ͨ״̬ -* ˵ const UINT16 wTrainId, гID -* ֵ 0: ȡʧ -* 0x55: ͨ״̬ -* 0xAA: ʧͨ -* 0xFF: ͨ״̬δ֪ -* : qw.liu 2022-02-24 -*/ -UINT8 GetTrainIvocTransitmitStat(const UINT16 wTrainId) -{ - UINT8 chRetVal = CI_ERROR; - UINT16 wBufIndex = 0U; - - wBufIndex = GetTrainBufIndex(wTrainId); - if (TRAIN_SUM_MAX > wBufIndex) - { - chRetVal = gstTrainInfo[wBufIndex].chIvocTransmitStat; - } - else - { - chRetVal = CI_ERROR; - } - - return chRetVal; -} /* * ȡָгȼ * ˵ const UINT16 wTrainId, гID @@ -1119,47 +1086,6 @@ UINT8 SetTrainTransmitStat(const UINT16 wTrainId,const UINT8 chTrainmitStat) return chRetVal; } - -/* -* ָг(IVOC)ͨ״̬ -* ˵ const UINT16 wTrainId, гID -* const UINT8 chTrainmitStat ͨ״̬ -* ֵ CI_ERROR: ʧ -CI_SUCCESS:ݳɹ -* 0x55 : ͨ״̬ -* 0xAA : ʧͨ -* 0xFF : ͨ״̬δ֪ -* : qw.liu 2025 - 05 - 08 -*/ -UINT8 SetTrainIvocTransmitStat(const UINT16 wTrainId, const UINT8 chTrainmitStat) -{ - UINT8 chRetVal = CI_ERROR; - UINT16 wBufIndex = 0U; - - wBufIndex = GetTrainBufIndex(wTrainId); - if (TRAIN_SUM_MAX > wBufIndex) - { - if ((TRAIN_COMM_STATE_GOOD == chTrainmitStat) - || (TRAIN_COMM_STATE_BAD == chTrainmitStat) - || (TRAIN_COMM_STATE_UNKNOWN == chTrainmitStat)) - { - gstTrainInfo[wBufIndex].chIvocTransmitStat = chTrainmitStat; - - gstTrainInfo[wBufIndex].dwIvocTransBadCyc = Get2oo2CurCycleNum(); - chRetVal = CI_SUCCESS; - } - else - { - chRetVal = CI_ERROR; - } - } - else - { - chRetVal = CI_ERROR; - } - - return chRetVal; -} /* * ָгеȼ * ˵ const UINT16 wTrainId, гID @@ -3091,6 +3017,9 @@ void ClearTrainInfo(UINT16 wTrainId) gstTrainInfo[wBufIndex].strJumpBackData.chJumpBackApplyState = TRAIN_JUMP_BACK_STATE_INVALID;/*ʼδ*/ gstTrainInfo[wBufIndex].strJumpBackData.chJumpBackReplyState = TRAIN_JUMP_BACK_STATE_NONE;/*ʼĬֵ*/ gstTrainInfo[wBufIndex].strJumpBackData.dwJumpBackApplySn = 0U;/*ʼĬк*/ + + gstTrainInfo[wBufIndex].chPbtacsTransState = TRAIN_COMM_STATE_UNKNOWN; /*PBTACSδͨ*/ + gstTrainInfo[wBufIndex].dwPbtacsTransBadCyc = 0U; } else { @@ -4396,7 +4325,6 @@ void NeighborOutTrainProc(UINT8 chTiocId) { SetTrainMsgFromTiocId(wTrainId, 0u); (void)SetTrainTransmitStat(wTrainId, TRAIN_COMM_STATE_BAD); - (void)SetTrainIvocTransmitStat(wTrainId, TRAIN_COMM_STATE_BAD); } else { @@ -4453,7 +4381,6 @@ void NeighborGoodTrainProc(UINT8 chTiocId) { SetTrainMsgFromTiocId(wTrainId, 0u); (void)SetTrainTransmitStat(wTrainId, TRAIN_COMM_STATE_BAD); - (void)SetTrainIvocTransmitStat(wTrainId, TRAIN_COMM_STATE_BAD); } else { @@ -6531,28 +6458,6 @@ static UINT32 GetTrainTransBadCyc(const UINT16 wTrainId) return dwRetVal; } -/* -* ȡָгͨ(IVOC)жں -* ˵ const UINT16 wTrainId, гID -* ֵ гͨжں -*/ -static UINT32 GetTrainIvocTransBadCyc(const UINT16 wTrainId) -{ - UINT32 dwRetVal = 0u; - UINT16 wBufIndex = 0U; - - wBufIndex = GetTrainBufIndex(wTrainId); - if (TRAIN_SUM_MAX > wBufIndex) - { - dwRetVal = gstTrainInfo[wBufIndex].dwIvocTransBadCyc; - } - else - { - ; - } - - return dwRetVal; -} /* * ȡָгɢ * ˵ const UINT16 wTrainId, гID @@ -7814,23 +7719,21 @@ UINT8 GetTrainResRecycleOTStat(const UINT16 wTrainId) UINT16 wBufIndex = 0U; UINT32 overtimeCycleCount = 0U; - - overtimeCycleCount = GetSystemParaTrainReCycleCount(); + overtimeCycleCount = GetSystemParaTrainReCycleCount(); /*ȡԴճʱ*/ wBufIndex = GetTrainBufIndex(wTrainId); if (TRAIN_SUM_MAX > wBufIndex) { - trainTransimitStat = GetTrainIvocTransitmitStat(wTrainId); - trainLoseCommCyc = GetTrainIvocTransBadCyc(wTrainId); + trainTransimitStat = GetPbtacsTrainTransState(wTrainId); /*ȡPBTACSͨ״̬*/ + trainLoseCommCyc = GetPbtacsTrainTransBadCyc(wTrainId); /*гͨŲ*/ if (TRAIN_COMM_STATE_BAD == trainTransimitStat) { - overtimeStat = SystemOverTimeCheck(trainLoseCommCyc, overtimeCycleCount); if (CI_TIME_OUT == overtimeStat) { - /*ʱ*/ + /*ʱ*/ chRetVal = CI_SUCCESS; } else @@ -13000,7 +12903,6 @@ void InputMainTrainInformation(UINT16 wTrainId) if (TRAIN_COMM_STATE_GOOD == chTransmitStat) { (void)SetTrainTransmitStat(wTrainId, TRAIN_COMM_STATE_BAD); - (void)SetTrainIvocTransmitStat(wTrainId, TRAIN_COMM_STATE_BAD); SetTrainLevel(wTrainId, TRAIN_LEVEL_UR); } else @@ -13863,7 +13765,6 @@ static void DoubleTrianComStateJuge(const UINT16 wTrainId, const UINT8 chComBadF if (0u == trainMsgFromTiocId) { (void)SetTrainTransmitStat(wTrainId, TRAIN_COMM_STATE_BAD); - (void)SetTrainIvocTransmitStat(wTrainId, TRAIN_COMM_STATE_BAD); } else {/*ʲôҲִ*/ @@ -13875,19 +13776,6 @@ static void DoubleTrianComStateJuge(const UINT16 wTrainId, const UINT8 chComBadF if (0U == chComBadFlag) {/*ǰûͨж*/ (void)SetTrainTransmitStat(wTrainId, TRAIN_COMM_STATE_GOOD); - if (CI_SUCCESS == chIvocCtxValid) - { - (void)SetTrainIvocTransmitStat(wTrainId, TRAIN_COMM_STATE_GOOD); - } - } - - if (CI_ERROR == chIvocCtxValid) - { - chTransmitStat = GetTrainIvocTransitmitStat(wTrainId); - if (TRAIN_COMM_STATE_GOOD == chTransmitStat) - { - (void)SetTrainIvocTransmitStat(wTrainId, TRAIN_COMM_STATE_BAD); - } } } @@ -14060,3 +13948,96 @@ UINT16* GetBlocLinkLogSecBuf(const UINT16 wTrainId) } return pLogSecBuf; } + +/* +* ָPBTACSгͨ״̬ +* ˵const UINT16 wTrainId, гID +* const UINT8 chTrainmitStat ͨ״̬ +* ֵ +* Created By LQ 2026.06.09 +*/ +void SetPbtacsTrainTransState(const UINT16 wTrainId, const UINT8 chTrainmitStat) +{ + UINT16 wBufIndex = 0U; + UINT32 dwCurCycNum = 0U; + + wBufIndex = GetTrainBufIndex(wTrainId); + if ((TRAIN_SUM_MAX > wBufIndex) + && ((TRAIN_COMM_STATE_GOOD == chTrainmitStat) || (TRAIN_COMM_STATE_BAD == chTrainmitStat) || (TRAIN_COMM_STATE_UNKNOWN == chTrainmitStat))) + { + gstTrainInfo[wBufIndex].chPbtacsTransState = chTrainmitStat; + + if (TRAIN_COMM_STATE_BAD == chTrainmitStat) + { + if (0U == gstTrainInfo[wBufIndex].dwPbtacsTransBadCyc) + { + dwCurCycNum = Get2oo2CurCycleNum(); + gstTrainInfo[wBufIndex].dwPbtacsTransBadCyc = dwCurCycNum; /*ͨжʱ*/ + } + else + { + /*ͨжʱ䣬ظˢ*/ + } + } + else + { + gstTrainInfo[wBufIndex].dwPbtacsTransBadCyc = 0U; + } + } + else + { + /*쳣֧*/ + } + +} + +/* +* ȡָPBTACSгͨ״̬ +* ˵const UINT16 wTrainId гID +* ֵ0 ȡʧ +* 0x55 ͨ״̬ +* 0xAA ʧͨ +* 0xFF ͨ״̬δ֪ +* Created By LQ 2026.06.09 +*/ +UINT8 GetPbtacsTrainTransState(const UINT16 wTrainId) +{ + UINT8 chRetVal = CI_ERROR; + UINT16 wBufIndex = 0U; + + wBufIndex = GetTrainBufIndex(wTrainId); + if (TRAIN_SUM_MAX > wBufIndex) + { + chRetVal = gstTrainInfo[wBufIndex].chPbtacsTransState; + } + else + { + chRetVal = CI_ERROR; + } + + return chRetVal; +} + +/* +* ȡָPBTACSгͨжں +* ˵const UINT16 wTrainId гID +* ֵгͨжں +* Created By LQ 2026.06.09 +*/ +UINT32 GetPbtacsTrainTransBadCyc(const UINT16 wTrainId) +{ + UINT32 dwRetVal = 0U; + UINT16 wBufIndex = 0U; + + wBufIndex = GetTrainBufIndex(wTrainId); + if (TRAIN_SUM_MAX > wBufIndex) + { + dwRetVal = gstTrainInfo[wBufIndex].dwPbtacsTransBadCyc; + } + else + { + ; + } + + return dwRetVal; +} \ No newline at end of file diff --git a/TSCP/src/APP/ciapp/Train/TrainDataManage.h b/TSCP/src/APP/ciapp/Train/TrainDataManage.h index b77f917..09a55d2 100644 --- a/TSCP/src/APP/ciapp/Train/TrainDataManage.h +++ b/TSCP/src/APP/ciapp/Train/TrainDataManage.h @@ -227,7 +227,6 @@ typedef struct S_TrainInfoStru UINT16 wTrainSpeed; /*ٶ*/ UINT8 chTrainZeroState; /*г״̬*/ UINT8 chTransmitStat; /*г״̬*/ - UINT8 chIvocTransmitStat; /*IVOCг״̬*/ UINT8 chHeadScreenStat; /*гǰɸ־*/ UINT8 chTailScreenStat; /*гɸ־*/ TrainSafeLocStru strSafeLoc; /*гȫλ*/ @@ -253,7 +252,6 @@ typedef struct S_TrainInfoStru UINT8 chStopSteadyState; /*гͣ׼ͣ״̬*/ UINT8 chSleepCancleFlag; /*߳־*/ UINT32 dwTransBadCyc; /*ͨж*/ - UINT32 dwIvocTransBadCyc; /*ͨж*/ UINT8 chEaNum; /*ͨгظɢ*/ TrainEaStru strTrainEaInfo[EA_MAX_NUM]; /*гָɢϢ*/ UINT8 chEaCmd; /*ɢ*/ @@ -297,6 +295,8 @@ typedef struct S_TrainInfoStru UINT8 chTrainPostionMode; /*гλģʽ0x10 ʹIVOCλã0x14ʹVOBCλ*/ BlocLinkInfoStru strBlocLinkData; /*ʽϢ*/ + UINT8 chPbtacsTransState; /*RCPBTACSгͨ״̬ñԴչܣ0x55-ͨ0xAA-ͨжϣ0xFF-δ֪*/ + UINT32 dwPbtacsTransBadCyc; /*RCPBTACSгͨжڣñԴչܣ*/ }TrainInfoStru; @@ -438,16 +438,6 @@ UINT16 GetTrainBufIndex(const UINT16 wTrainId); */ UINT8 GetTrainTransitmitStat(const UINT16 wTrainId); -/* -* ȡָг(IVOC)ͨ״̬ -* ˵ const UINT16 wTrainId, гID -* ֵ 0: ȡʧ -* 0x55: ͨ״̬ -* 0xAA: ʧͨ -* 0xFF: ͨ״̬δ֪ -* : qw.liu 2022-02-24 -*/ -UINT8 GetTrainIvocTransitmitStat(const UINT16 wTrainId); /* * ȡָгСȫǰƫ * ˵ const UINT16 wTrainId, гID @@ -607,19 +597,6 @@ CI_SUCCESS: */ UINT8 SetTrainTransmitStat(const UINT16 wTrainId, const UINT8 chTrainmitStat); - -/* -* ָг(IVOC)ͨ״̬ -* ˵ const UINT16 wTrainId, гID -* const UINT8 chTrainmitStat ͨ״̬ -* ֵ CI_ERROR: ʧ -CI_SUCCESS:ݳɹ -* 0x55 : ͨ״̬ -* 0xAA : ʧͨ -* 0xFF : ͨ״̬δ֪ -* : qw.liu 2025 - 05 - 08 -*/ -UINT8 SetTrainIvocTransmitStat(const UINT16 wTrainId, const UINT8 chTrainmitStat); /* * ָгеȼ * ˵ const UINT16 wTrainId, гID @@ -3128,6 +3105,34 @@ UINT8 GetBlocLinkLogSecNum(const UINT16 wTrainId); */ UINT16* GetBlocLinkLogSecBuf(const UINT16 wTrainId); +/* +* ָPBTACSгͨ״̬ +* ˵const UINT16 wTrainId, гID +* const UINT8 chTrainmitStat ͨ״̬ +* ֵ +* Created By LQ 2026.06.09 +*/ +void SetPbtacsTrainTransState(const UINT16 wTrainId, const UINT8 chTrainmitStat); + +/* +* ȡָPBTACSгͨ״̬ +* ˵const UINT16 wTrainId гID +* ֵ0 ȡʧ +* 0x55 ͨ״̬ +* 0xAA ʧͨ +* 0xFF ͨ״̬δ֪ +* Created By LQ 2026.06.09 +*/ +UINT8 GetPbtacsTrainTransState(const UINT16 wTrainId); + +/* +* ȡָPBTACSгͨжں +* ˵const UINT16 wTrainId гID +* ֵгͨжں +* Created By LQ 2026.06.09 +*/ +UINT32 GetPbtacsTrainTransBadCyc(const UINT16 wTrainId); + #ifdef __cplusplus } #endif diff --git a/TSCP/src/dqu_common/dqu_emap_common/dquStructInit.c b/TSCP/src/dqu_common/dqu_emap_common/dquStructInit.c index b580655..174718d 100644 --- a/TSCP/src/dqu_common/dqu_emap_common/dquStructInit.c +++ b/TSCP/src/dqu_common/dqu_emap_common/dquStructInit.c @@ -1760,7 +1760,7 @@ static UINT8 ROUTE_STRU_init_FAO(UINT8 * pDataAdd, DSU_ROUTE_STRU * pRouteStru) } /*·*/ - pRouteStru->wRouteType = ShortFromChar(pData); + pRouteStru->dwRouteType = ShortFromChar(pData); pData += 2; /*ʼźŻ*/ @@ -1902,7 +1902,7 @@ static UINT8 ROUTE_STRU_init_HLT(UINT8 * pDataAdd, DSU_ROUTE_STRU * pRouteStru) } /*·*/ - pRouteStru->wRouteType = ShortFromChar(pData); + pRouteStru->dwRouteType = ShortFromChar(pData); pData += 2U; /*ʼźŻ*/ @@ -2148,7 +2148,7 @@ static UINT8 ROUTE_STRU_init_CPK(UINT8 * pDataAdd, DSU_ROUTE_STRU * pRouteStru) } /*·*/ - pRouteStru->wRouteType = ShortFromChar(pData); + pRouteStru->dwRouteType = ShortFromChar(pData); pData += 2; /*ʼźŻ*/ @@ -2273,6 +2273,9 @@ static UINT8 ROUTE_STRU_init_CC(UINT8 * pDataAdd, DSU_ROUTE_STRU * pRouteStru) static UINT16 maxCBTCAccessLinkNum = MAX_CBTC_ACCESS_LINK_NUM;/*·ʵCBTCӽ*/ static UINT16 maxBLOCAccessLinkNum = MAX_BLOC_ACCESS_LINK_NUM;/*·ʵʵʽӽ*/ UINT8 reval = 0U;/*ʼֵΪʧ*/ + UINT8 chDataType = 0U; + chDataType = GetLocalPublicDataType(); /*ַ֧*/ + /*ָ*/ if ((NULL != pDataAdd) && (NULL != pRouteStru)) { @@ -2287,8 +2290,17 @@ static UINT8 ROUTE_STRU_init_CC(UINT8 * pDataAdd, DSU_ROUTE_STRU * pRouteStru) } /*·*/ - pRouteStru->wRouteType = ShortFromChar(pData); - pData += 2U; + if (0x01 == chDataType) + { + /*ֶ*/ + pRouteStru->dwRouteType = LongFromChar(pData); + pData += 4U; + } + else + { + pRouteStru->dwRouteType = ShortFromChar(pData); + pData += 2U; + } /*ʼźŻ*/ pRouteStru->wStartSignalId = ShortFromChar(pData); diff --git a/TSCP/src/dqu_common/dqu_emap_common/dsuStruct.h b/TSCP/src/dqu_common/dqu_emap_common/dsuStruct.h index f7d048e..0d93e59 100644 --- a/TSCP/src/dqu_common/dqu_emap_common/dsuStruct.h +++ b/TSCP/src/dqu_common/dqu_emap_common/dsuStruct.h @@ -502,7 +502,7 @@ typedef struct DSU_RouteStruct { UINT16 wId; /**/ CHAR szCaption [24]; /*·*/ - UINT16 wRouteType; /*·*/ + UINT32 dwRouteType; /*·*/ UINT16 wStartSignalId; /*ʼźŻ*/ UINT16 wEndSignalId; /*ֹźŻ*/ UINT16 wOrgnLkId; /*link*/ /*---Ϲѧ*/ diff --git a/TSCP/src/protocol/fsfb/common_fsfb/FsfbRecordDelare.h b/TSCP/src/protocol/fsfb/common_fsfb/FsfbRecordDelare.h index 56ea088..c42065f 100644 --- a/TSCP/src/protocol/fsfb/common_fsfb/FsfbRecordDelare.h +++ b/TSCP/src/protocol/fsfb/common_fsfb/FsfbRecordDelare.h @@ -1,15 +1,15 @@ /******************************************************** * -* ļ FsfbRecordDelare.h -* Ȩ˵ ؿƼ޹˾ -* 汾 1.0 -* ʱ䣺 2013.09.09 -* -* FSFBЭ¼غ궨塣 -* ʹע⣺ +* �ļ��FsfbRecordDelare.hare.h +* ��Ȩ˵���� �������ؿƼ����޹�˾ +* �汾�� �� 1.0 +* ����ʱ�䣺 2013.09.09 +* ���� �� ������ +* ���������� FSFBЭ���¼��غ궨�塣 +* ʹ��ע�⣺ * -* ޸ļ¼ -* 2010.05.10 ޸ ׷FSFBڿʼʶ +* �޸ļ�¼�� +* 2010.05.10 �޸� ׷��FSFB�����ڿ�ʼ��ʶ�� * ********************************************************/ @@ -19,93 +19,93 @@ /******************************************************************************** -궨 +�궨�� ********************************************************************************/ -/* ־λ */ -#define FSFB_CYCLE_TAG (0xF4FB) /* FSFBڿʼʶ */ -#define IN_RED (0x01) /**/ -#define IN_BLUE (0x02) /**/ -#define IN_FRAME_LEN_ERR (0x03) /*֡ȴ*/ -#define IN_READ_FRAME_ERR (0x04) /*ȡ֡ȴ*/ -#define IN_READ_FRAME (0x05) /*ȡ֡*/ -#define IN_CRC_ERR (0x06) /*CRC*/ -#define IN_NO_LNK (0x07) /*·*/ -#define IN_CAT_ERR (0x08) /*֡*/ -#define IN_ADDR_ERR (0x09) /*֡*/ -#define IN_SSR_STATUS_ERR (0x0A) /*SSR״̬*/ -#define IN_SSR_SSE_TC_ERR (0x0B) /*SSRSSEŴ*/ -#define IN_ABT_STATUS (0x0C) /*ABT״̬*/ -#define IN_ABT_SVC_ERR (0x0D) /*ABTSVC*/ -#define IN_ABT_OLD_ERR (0x0E) /*ABTŴ*/ -#define IN_ABT_SSE_BTC (0x0F) /*ABTSSEBTC*/ -#define IN_BTD_LEN_ERR (0x10) /*BTDijȴ*/ -#define IN_BTD_STATUS (0x11) /*BTD״̬*/ -#define IN_BTD_LOST_ERR (0x12) /*BTDʧ*/ -#define IN_BTD_DELAY_ERR (0x13) /*BTDӳٳ*/ -#define IN_BTD_SVC_ERR (0x14) /*BTDSVC*/ -#define OUT_APP (0x15) /**/ -#define OUT_FRAME_LEN_ERR (0x16) /*Ӧ֡ݳȴ*/ -#define OUT_READ_ERR (0x17) /*Ӧݴ*/ -#define OUT_APP_FRAME (0x18) /*Ӧ֡*/ -#define OUT_FRAME_TYPE_ERR (0x19) /*֡ʹ*/ -#define OUT_ADDR_ERR (0x1A) /*ַ*/ -#define OUT_FIND_LNK_ERR (0x1B) /*ѯ·*/ -#define OUT_INSERT_NODE_ERR (0x1C) /*ڵ*/ -#define OUT_INIT_NODE_ERR (0x1D) /*ʼڵ*/ -#define OUT_DATA_TYPE (0x1E) /**/ -#define OUT_LNK (0x1F) /*·*/ -#define OUT_RP_LNK (0x20) /*RP·*/ -#define OUT_ALL_LEN_ERR (0x21) /*ܳȴ*/ +/* ������־λ */ +#define FSFB_CYCLE_TAG (0xF4FB) /* FSFB�����ڿ�ʼ��ʶ */ +#define IN_RED (0x01) /*�����������*/ +#define IN_BLUE (0x02) /*������������*/ +#define IN_FRAME_LEN_ERR (0x03) /*��������֡���ȴ���*/ +#define IN_READ_FRAME_ERR (0x04) /*��ȡ����֡���ȴ���*/ +#define IN_READ_FRAME (0x05) /*��ȡ����֡*/ +#define IN_CRC_ERR (0x06) /*CRC����*/ +#define IN_NO_LNK (0x07) /*����·*/ +#define IN_CAT_ERR (0x08) /*����֡�������*/ +#define IN_ADDR_ERR (0x09) /*����֡�������*/ +#define IN_SSR_STATUS_ERR (0x0A) /*����SSR��״̬����*/ +#define IN_SSR_SSE_TC_ERR (0x0B) /*����SSR��SSE��Ŵ���*/ +#define IN_ABT_STATUS (0x0C) /*����ABT��״̬*/ +#define IN_ABT_SVC_ERR (0x0D) /*����ABT��SVC����*/ +#define IN_ABT_OLD_ERR (0x0E) /*����ABT����Ŵ���*/ +#define IN_ABT_SSE_BTC (0x0F) /*����ABT��SSE��BTC*/ +#define IN_BTD_LEN_ERR (0x10) /*����BTD�ij��ȴ���*/ +#define IN_BTD_STATUS (0x11) /*����BTD��״̬*/ +#define IN_BTD_LOST_ERR (0x12) /*����BTD��ʧ������*/ +#define IN_BTD_DELAY_ERR (0x13) /*����BTD�ӳٳ�����*/ +#define IN_BTD_SVC_ERR (0x14) /*����BTD��SVC����*/ +#define OUT_APP (0x15) /*�������*/ +#define OUT_FRAME_LEN_ERR (0x16) /*���Ӧ��֡���ݳ��ȴ���*/ +#define OUT_READ_ERR (0x17) /*�����Ӧ�����ݴ���*/ +#define OUT_APP_FRAME (0x18) /*���Ӧ��֡����*/ +#define OUT_FRAME_TYPE_ERR (0x19) /*���֡���ʹ���*/ +#define OUT_ADDR_ERR (0x1A) /*�����ַ����*/ +#define OUT_FIND_LNK_ERR (0x1B) /*�����ѯ��·����*/ +#define OUT_INSERT_NODE_ERR (0x1C) /*�������ڵ����*/ +#define OUT_INIT_NODE_ERR (0x1D) /*�����ʼ���ڵ����*/ +#define OUT_DATA_TYPE (0x1E) /*�����������*/ +#define OUT_LNK (0x1F) /*�����·*/ +#define OUT_RP_LNK (0x20) /*���RP��·*/ +#define OUT_ALL_LEN_ERR (0x21) /*��������ܳ��ȴ���*/ -#define FSFB_RCV_TAG 0xF4 /* FSFB뵥Ԫʶ */ -#define FSFB_OUT_TAG 0xF5 /* FSFBԪʶ */ -#define FSFB_MSG_IN_TAG 0x04 /* FSFBһ֡Ϣʼʶ(B 0000 0100) */ -#define FSFB_MSG_OUT_TAG 0x08 /* FSFBһ֡Ϣʼʶ(B 0000 1000) */ -#define FSFB_NODE_OUT_TAG 0x0C /* FSFBһ֡Ϣʼʶ(B 0000 1100) */ -#define FSFB_OUT_E_TAG 0x0F /* FSFBԪʶ(B 0000 1111) */ +#define FSFB_RCV_TAG 0xF4 /* FSFB���뵥Ԫ��ʶ */ +#define FSFB_OUT_TAG 0xF5 /* FSFB�����Ԫ��ʶ */ +#define FSFB_MSG_IN_TAG 0x04 /* FSFB����һ֡��Ϣ��ʼ��ʶ(B 0000 0100) */ +#define FSFB_MSG_OUT_TAG 0x08 /* FSFB���һ֡��Ϣ��ʼ��ʶ(B 0000 1000) */ +#define FSFB_NODE_OUT_TAG 0x0C /* FSFB���һ֡��Ϣ��ʼ��ʶ(B 0000 1100) */ +#define FSFB_OUT_E_TAG 0x0F /* FSFB�����Ԫ������ʶ(B 0000 1111) */ /************************************************************************ - * ԭЭһ16bit - * D15~D12 - * D11~D10ȼ - * D9~D8ģλ - * D7~D4ģеĴģ鲻ͬʱ4λĺ岻ͬ - * ڶȵײ - * D3~D0ģǷͬ4λĺͬ + * ���������ԭ��Э�������һ��16bit + * D15~D12������ + * D11~D10������ȼ� + * D9~D8��ģ��λ�� + * D7~D4����������ģ�����еĴ�����ģ�鲻ͬʱ��4λ�����ĺ��岻ͬ + * �����ڶ��������ȵײ���� + * D3~D0��������������������ģ���Ƿ���ͬ��4λ�����ĺ�����ͬ ************************************************************************/ -/* ȼ */ +/* ����ȼ� */ #define FSFB_ERR 0x0800 #define FSFB_WARN 0x0400 -/* ģλ */ -#define FSFB_RECEIVE 0x0200 /* ģ */ -#define FSFB_OUTPUT 0x0100 /* ģ */ +/* ģ��λ�� */ +#define FSFB_RECEIVE 0x0200 /* ����ģ�� */ +#define FSFB_OUTPUT 0x0100 /* ���ģ�� */ -/* ģд */ +/* ��ģ�����д��� */ #define FSFB_ERROR_NULL 0x0000 -/* */ -#define FSFB_MSG_TYPE_ILLEGAL 0x0010 /* FSFBϢ */ -#define FSFB_MSG_OLD_ERR 0x0020 /* ± */ -#define FSFB_DEL_MSG_LNK_ERR 0x0030 /* ʱɾʧ */ -#define FSFB_MSG_NOT_NODE_ERR 0x0040 /* ϢͨŽڵϢһ */ -#define FSFB_MSG_LEN_ERR 0x0050 /* ijȲ */ -#define FSFB_MSG_FMT_ILLEGAL 0x0060 /* ĸʽ */ -#define FSFB_SSR_NOT_ILLEGAL 0x0070 /* ǶӦSSRϢ */ -#define FSFB_MSG_REPLACE_ERR 0x0080 /* ǽڵʧ */ -#define FSFB_MSG_NO_REPLACENODE 0x0090 /* ڸǽڵ */ -#define FSFB_MSG_NO_INVALID 0x00A0 /* BSDʧ */ +/* ���� */ +#define FSFB_MSG_TYPE_ILLEGAL 0x0010 /* ����FSFB��Ϣ */ +#define FSFB_MSG_OLD_ERR 0x0020 /* �����±��� */ +#define FSFB_DEL_MSG_LNK_ERR 0x0030 /* ��ʱ����ɾ��ʧ�� */ +#define FSFB_MSG_NOT_NODE_ERR 0x0040 /* ������Ϣ��ͨ�Žڵ���Ϣ��һ�� */ +#define FSFB_MSG_LEN_ERR 0x0050 /* ���ij��Ȳ��� */ +#define FSFB_MSG_FMT_ILLEGAL 0x0060 /* ���ĸ�ʽ���� */ +#define FSFB_SSR_NOT_ILLEGAL 0x0070 /* ���Ƕ�ӦSSR������Ϣ */ +#define FSFB_MSG_REPLACE_ERR 0x0080 /* ���ǽڵ�ʧ�� */ +#define FSFB_MSG_NO_REPLACENODE 0x0090 /* �����ڸ��ǽڵ� */ +#define FSFB_MSG_NO_INVALID 0x00A0 /* BSD����ʧ�� */ #define FSFB_MSG_CRC_ERR 0x00B0 -/* */ -#define FSFB_DBGET_ERR 0x0050 /* ݿѯ */ -/* ײ㴦 */ -#define FSFB_QUEUE_READ 0x0001 /* жд */ -#define FSFB_QUEUE_WRITE 0x0002 /* дд */ -#define FSFB_QUEUE_INTEGRITY 0x0003 /* ݲscanдӦø*/ -#define FSFB_LNK_PUSH 0x0004 /* ·ڵѹջ */ -#define FSFB_LNK_POP 0x0005 /* кŻڵջ */ +/* ��� */ +#define FSFB_DBGET_ERR 0x0050 /* ���ݿ��ѯ���� */ +/* ���������������ײ㴦������ */ +#define FSFB_QUEUE_READ 0x0001 /* ���ж��д� */ +#define FSFB_QUEUE_WRITE 0x0002 /* ����д�д� */ +#define FSFB_QUEUE_INTEGRITY 0x0003 /* ���������ݲ�����������scan�д���Ӧ�ø�������*/ +#define FSFB_LNK_PUSH 0x0004 /* ��·�������ڵ�ѹջ���� */ +#define FSFB_LNK_POP 0x0005 /* ���кŻ��������ڵ��ջ���� */ diff --git a/TSCP/src/protocol/sfp_record_cbtc1/common_sfp_nr_config/sfpConfig.h b/TSCP/src/protocol/sfp_record_cbtc1/common_sfp_nr_config/sfpConfig.h index e2bc929..dcc2033 100644 --- a/TSCP/src/protocol/sfp_record_cbtc1/common_sfp_nr_config/sfpConfig.h +++ b/TSCP/src/protocol/sfp_record_cbtc1/common_sfp_nr_config/sfpConfig.h @@ -21,6 +21,7 @@ #define PRTCL_RECORD_SIMPLIFY_BIN /*Ƽ¼*/ #define USE_DSU_SFP /*ʹSFPѯ*/ +#define SWAP_CRC /*CRC*/ #else #endif diff --git a/数据/标准站车车V8.2+公共V31.8+V56.0IVOC+V53.0RCI_CI+V38.0RCI_OC+V22.0ATS+V1.0TMC+V13.0AIM及AID-20260612(1).zip b/数据/标准站车车V8.2+公共V31.8+V56.0IVOC+V53.0RCI_CI+V38.0RCI_OC+V22.0ATS+V1.0TMC+V13.0AIM及AID-20260612(1).zip new file mode 100644 index 0000000..cf19332 --- /dev/null +++ b/数据/标准站车车V8.2+公共V31.8+V56.0IVOC+V53.0RCI_CI+V38.0RCI_OC+V22.0ATS+V1.0TMC+V13.0AIM及AID-20260612(1).zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1dc9a95e598cdd85b0bbf171c66ebe17a1aeb460fe964094ca2bdce987ce6d7 +size 70112826 diff --git a/数据/电子地图数据V2.3-CBTC-23.zip b/数据/电子地图数据V2.3-CBTC-23.zip deleted file mode 100644 index 6ed369c..0000000 --- a/数据/电子地图数据V2.3-CBTC-23.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:317f27bac6cf058ba0dd48be8f9b696d6d8198ae06088f663b2860b616b502ad -size 7770464 diff --git a/数据/电子地图数据V2.3-CBTC-26 -调试数据-2.rar b/数据/电子地图数据V2.3-CBTC-26 -调试数据-2.rar new file mode 100644 index 0000000..79580b9 --- /dev/null +++ b/数据/电子地图数据V2.3-CBTC-26 -调试数据-2.rar @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ef182bc4393b037277d199adce26bc5a730b6c6c18552f449a2a09204448419 +size 6703137 diff --git a/数据/电子地图数据V2.3-车车-13.zip b/数据/电子地图数据V2.3-车车-13.zip deleted file mode 100644 index 47ea567..0000000 --- a/数据/电子地图数据V2.3-车车-13.zip +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:647c2cd5e43e68537bf4a5bab8f144cb192012119d331691906292f415728027 -size 6086186 diff --git a/数据/电子地图数据V2.3-车车-16 -调试数据-2.rar b/数据/电子地图数据V2.3-车车-16 -调试数据-2.rar new file mode 100644 index 0000000..d95ddca --- /dev/null +++ b/数据/电子地图数据V2.3-车车-16 -调试数据-2.rar @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ece85f8102a1245506c3cd2bb6ef40a3fdc1ded0274715aeb1e702d8a8505b8 +size 5345627