diff --git a/TSCP/src/MSCP/CFM/CFM_Net.c b/TSCP/src/MSCP/CFM/CFM_Net.c index 01df07f..3dbfa2f 100644 --- a/TSCP/src/MSCP/CFM/CFM_Net.c +++ b/TSCP/src/MSCP/CFM/CFM_Net.c @@ -1031,6 +1031,7 @@ CM_INT32 CFM_2oo2_Currency_NoSplit(STRU_2OO2_NET_NO_PACK_T *p_2oo2_Ctrl,IN const /*发送相关*/ CM_UINT8 sendBuf[1500] = {0u}; CM_UINT32 sysCyc = DFM_GetBirthCount(); /*平台周期号*/ + CM_UINT16 ARQ_Cut = 0u; /* 记录重传请求次数 */ CM_UINT64 curTick = 0u; /* 当前时刻 */ CM_UINT64 sTick = 0u; /* 起始Tick */ @@ -1118,6 +1119,7 @@ CM_INT32 CFM_2oo2_Currency_NoSplit(STRU_2OO2_NET_NO_PACK_T *p_2oo2_Ctrl,IN const { /*发送重传请求*/ (void)CFM_2oo2_SendARQ_Currency(p_2oo2_Ctrl,ENUM_2oo2_NET_ARQ); + ARQ_Cut++; /*- 重置起始时间*/ sTick = CM_GetTick(); } @@ -1126,6 +1128,10 @@ CM_INT32 CFM_2oo2_Currency_NoSplit(STRU_2OO2_NET_NO_PACK_T *p_2oo2_Ctrl,IN const /*- 无处理 */ } } + if(ENUM_BOARDSTATE_RUN == PFM_GetBoardState() && SFM_2oo2_ARQ_MAX_CNT <= ARQ_Cut) + { + CM_ASSERT(0,NET_MODE, DARK_FAULT_CODE_FUN_ORDER_53, TSCP_DARK_ASSERT_1); + } if((CM_TRUE == mineRcvFlag) && (CM_TRUE == peerRcvFlag)) { /*- 结束接收 */ diff --git a/TSCP/src/MSCP/CFM/CFM_Net.h b/TSCP/src/MSCP/CFM/CFM_Net.h index 879e7f1..8fe9056 100644 --- a/TSCP/src/MSCP/CFM/CFM_Net.h +++ b/TSCP/src/MSCP/CFM/CFM_Net.h @@ -42,6 +42,9 @@ extern "C" #define CFM_OUTNET_RAW_MSG_NUM_MAX (1000u) +#define SFM_2oo2_ARQ_MAX_CNT ((ENUM_INIT_OVER<=PFM_LOG_GET_INIT_STAGE())?5u:6000u) + + /*暗文类型宏定义*/ #define DARK_LOG_STRING (0x55u) #define DARK_LOG_HEX (0xAAu) diff --git a/TSCP/src/MSCP/SFM/SFM_2oo2.c b/TSCP/src/MSCP/SFM/SFM_2oo2.c index 86989df..62beb77 100644 --- a/TSCP/src/MSCP/SFM/SFM_2oo2.c +++ b/TSCP/src/MSCP/SFM/SFM_2oo2.c @@ -566,11 +566,11 @@ static CM_INT32 s_2oo2_ARQ_Recv(OUT CM_UINT8 *RxData, IN CM_UINT32 RxSize, OUT E } } /*本机与邻机接收成功或重传次数超过1分钟(6000次)退出重传 */ - if(((CM_TRUE == MineRcvSuccessFlag) && (CM_TRUE == PeerRcvSuccessFlag)) || (ARQ_Cut >= 6000)) + if(((CM_TRUE == MineRcvSuccessFlag) && (CM_TRUE == PeerRcvSuccessFlag)) || (ARQ_Cut >= SFM_2oo2_ARQ_MAX_CNT)) { /*- 结束接收 */ /*- 结束接收 重传超过6000次日志记录 */ - if(ARQ_Cut >= 6000) + if(ARQ_Cut >= SFM_2oo2_ARQ_MAX_CNT) { MSCP_LOG_MSG("2oo2 failed break ARQ_Cut = %d, MineRcvSuccessFlag = %d, PeerRcvSuccessFlag = %d\n", ARQ_Cut, MineRcvSuccessFlag, PeerRcvSuccessFlag); CM_ASSERT(0,SFM_2oo2_MODE, DARK_FAULT_CODE_FUN_ORDER_6, TSCP_DARK_ASSERT_2);