diff --git a/TSCP/src/MSCP/PFM/PFM_InputOutput.c b/TSCP/src/MSCP/PFM/PFM_InputOutput.c index 19df851..ab930fa 100644 --- a/TSCP/src/MSCP/PFM/PFM_InputOutput.c +++ b/TSCP/src/MSCP/PFM/PFM_InputOutput.c @@ -718,8 +718,6 @@ void PFM_OutputProc(void) if (0x55u == g_PFM_Cfg.M_2x2_Enable) { /*- 输出阶段2x2处理 */ - ret = SFM_2oo2_Exchange_Currency(check_2x2_Buf, check_2x2_Len, &check_2x2_Buf[check_2x2_Len], sizeof(check_2x2_Buf) - check_2x2_Len, ENUM_2oo2_OUTPUT_EX); - check_2x2_Len += ret; SFM_2x2_OutputProc(check_2x2_Buf, check_2x2_Len); } else @@ -1021,6 +1019,7 @@ static CM_INT32 s_2x2OutputCheckFrame_Pack(OUT CM_UINT8 *buf, IN CM_UINT32 BufSi CM_UINT32 len = 0u; /* 输出跟随报文长度 */ CM_UINT32 crc = 0u; /* 输出跟随报文CRC */ CM_UINT32 sysCyc = SFM_2x2_GetSysCount(); /* 系统周期号 */ + CM_UINT32 peerLen = 0u; /* 邻机输出校验报文长度 */ /*- 入参检查*/ CM_ASSERT(((4 + (g_2x2oo2_data_num * 8)) <= (CM_INT32)BufSize) && (NULL != buf), IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_7, TSCP_DARK_ASSERT_1); @@ -1045,6 +1044,10 @@ static CM_INT32 s_2x2OutputCheckFrame_Pack(OUT CM_UINT8 *buf, IN CM_UINT32 BufSi /*二取标志未使能*/ } } + + peerLen = SFM_2oo2_Exchange_Currency(buf, i, &buf[i], BufSize - i, ENUM_2oo2_OUTPUT_EX); + CM_ASSERT(peerLen == i, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_16, TSCP_DARK_ASSERT_17); + i += peerLen; /*- 返回输出校验报文长度 */ return i; diff --git a/TSCP/src/MSCP/SFM/SFM_2x2.c b/TSCP/src/MSCP/SFM/SFM_2x2.c index a0f987b..d3b5fa8 100644 --- a/TSCP/src/MSCP/SFM/SFM_2x2.c +++ b/TSCP/src/MSCP/SFM/SFM_2x2.c @@ -4173,12 +4173,12 @@ static void s_2x2_BaseFollow_2oo2Check_Send(void) CM_LongToChar(crc, mine_buf + 4u); ret = SFM_2oo2_Exchange_Currency(mine_buf, 8u, peer_buf, 8u, ENUM_2oo2_INPUT_EX); /*- 计算对机跟随数据的CRC值 */ - CM_RE_ASSERT(ret == 8, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_19, TSCP_DARK_ASSERT_1); + CM_RE_ASSERT(ret == 8, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_23, TSCP_DARK_ASSERT_1); /*- 比较本机和对机跟随数据的CRC值 */ if(0 != CM_Memcmp(mine_buf, peer_buf, (CM_SIZE_T)8u)) { MSCP_LOG_DATALEN(g_TxBaseFollow, g_TxBaseFollow_len, "PFM_InputProc g_TxBaseFollow_len"); - CM_RE_ASSERT(0, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_19, TSCP_DARK_ASSERT_2); + CM_RE_ASSERT(0, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_23, TSCP_DARK_ASSERT_2); } /*- 比较成功,填入CRC后发送 */ if(g_TxBaseFollow_len <= (sizeof(g_TxBaseFollow) - 4u)) @@ -4225,7 +4225,7 @@ static void s_2x2_AppFollow_SyncCheck(void) { MSCP_LOG_MSG("APPFOLLOW CRC cmp is fail 1\n"); s_2x2_Ctrl.AppFollowCmpFlag = 1u; - CM_RE_ASSERT(0, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_21, TSCP_DARK_ASSERT_1); + CM_RE_ASSERT(0, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_24, TSCP_DARK_ASSERT_1); } } /* 主系双CPU的CRC一致 但与备系本机不一致 比较失败*/ @@ -4259,9 +4259,9 @@ static void s_2x2_Output_SyncCheck(IN const CM_UINT8 *CheckBuf, CM_INT32 CheckLe CM_UINT32 singleCheckLen = CheckLen / 2u; /* checkbuf记录了两个CPU的校验信息,长度的一半为单个CPU校验数据长度 */ static CM_UINT32 error_tolerate = 1u; /*- 入参检查 */ - CM_ASSERT(NULL != CheckBuf, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_20, TSCP_DARK_ASSERT_1); + CM_ASSERT(NULL != CheckBuf, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_25, TSCP_DARK_ASSERT_1); /* 接收的校验数据长度校验 */ - CM_RE_ASSERT(CheckLen == s_2x2_Ctrl.RxCheckLen, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_20, TSCP_DARK_ASSERT_2); + CM_RE_ASSERT(CheckLen == s_2x2_Ctrl.RxCheckLen, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_25, TSCP_DARK_ASSERT_2); /* 比较接收的主系校验帧中,主系的两个CPU的CRC,记录结果ret_p1p2 */ ret_p1p2 = CM_Memcmp((const void*)s_2x2_Ctrl.RxCheckFrame, (const void*)&s_2x2_Ctrl.RxCheckFrame[singleCheckLen], (CM_SIZE_T)singleCheckLen); /* 比较备系本机与主系某一个CPU的CRC,记录结果ret_m1p1 */ @@ -4349,7 +4349,7 @@ static void s_2x2_Output_SyncCheck(IN const CM_UINT8 *CheckBuf, CM_INT32 CheckLe } if(ENUM_2x2_SLAVE == s_2x2_Ctrl.LocalState) { - CM_RE_ASSERT(0, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_20, TSCP_DARK_ASSERT_3); + CM_RE_ASSERT(0, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_25, TSCP_DARK_ASSERT_3); } } } @@ -4381,22 +4381,22 @@ static void s_2x2_BaseFollow_Sync(void) offset = 0u; len_prtcl = CM_LongFromChar((void*)&g_RxBaseFollow[offset]); offset += 4u; - CM_RE_ASSERT(len_prtcl <= ((CM_UINT32)g_RxBaseFollow_len - 4u), SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_22, TSCP_DARK_ASSERT_1); + CM_RE_ASSERT(len_prtcl <= ((CM_UINT32)g_RxBaseFollow_len - 4u), SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_26, TSCP_DARK_ASSERT_1); SFM_SetPrtclFollowData((void*)&g_RxBaseFollow[offset]); offset += len_prtcl; /*- sfp协议数据跟随*/ len_sfprtcl = CM_LongFromChar((void*)&g_RxBaseFollow[offset]); offset += 4u; - CM_RE_ASSERT(len_prtcl + len_sfprtcl <= ((CM_UINT32)g_RxBaseFollow_len - 8u), SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_22, TSCP_DARK_ASSERT_2); + CM_RE_ASSERT(len_prtcl + len_sfprtcl <= ((CM_UINT32)g_RxBaseFollow_len - 8u), SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_26, TSCP_DARK_ASSERT_2); SFM_SetSfpPrtclFollowData(len_sfprtcl, (void*)&g_RxBaseFollow[offset]); offset += len_sfprtcl; /*- 平台数据跟随*/ len_pfm = CM_LongFromChar((void*)&g_RxBaseFollow[offset]); offset += 4u; - CM_RE_ASSERT(len_pfm == ((CM_UINT32)g_RxBaseFollow_len - len_prtcl - len_sfprtcl - 12u), SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_22, TSCP_DARK_ASSERT_3); - CM_RE_ASSERT(len_pfm == BASE_FOLLOW_DATA_LEN, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_22, TSCP_DARK_ASSERT_4); + CM_RE_ASSERT(len_pfm == ((CM_UINT32)g_RxBaseFollow_len - len_prtcl - len_sfprtcl - 12u), SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_26, TSCP_DARK_ASSERT_3); + CM_RE_ASSERT(len_pfm == BASE_FOLLOW_DATA_LEN, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_26, TSCP_DARK_ASSERT_4); } /*此处使用临时周期号接收,在周期末同步*/ offset = (CM_UINT32)g_RxBaseFollow_len - BASE_FOLLOW_ALL_LEN;