修改暗文码,2x输出校验帧拼接双CPU的CRC的2取操作修改从函数PFM_OutputProc修改到s_2x2OutputCheckFrame_Pack
This commit is contained in:
@@ -718,8 +718,6 @@ void PFM_OutputProc(void)
|
|||||||
if (0x55u == g_PFM_Cfg.M_2x2_Enable)
|
if (0x55u == g_PFM_Cfg.M_2x2_Enable)
|
||||||
{
|
{
|
||||||
/*- 输出阶段2x2处理 */
|
/*- 输出阶段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);
|
SFM_2x2_OutputProc(check_2x2_Buf, check_2x2_Len);
|
||||||
}
|
}
|
||||||
else
|
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 len = 0u; /* 输出跟随报文长度 */
|
||||||
CM_UINT32 crc = 0u; /* 输出跟随报文CRC */
|
CM_UINT32 crc = 0u; /* 输出跟随报文CRC */
|
||||||
CM_UINT32 sysCyc = SFM_2x2_GetSysCount(); /* 系统周期号 */
|
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);
|
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;
|
return i;
|
||||||
|
|||||||
+10
-10
@@ -4173,12 +4173,12 @@ static void s_2x2_BaseFollow_2oo2Check_Send(void)
|
|||||||
CM_LongToChar(crc, mine_buf + 4u);
|
CM_LongToChar(crc, mine_buf + 4u);
|
||||||
ret = SFM_2oo2_Exchange_Currency(mine_buf, 8u, peer_buf, 8u, ENUM_2oo2_INPUT_EX);
|
ret = SFM_2oo2_Exchange_Currency(mine_buf, 8u, peer_buf, 8u, ENUM_2oo2_INPUT_EX);
|
||||||
/*- 计算对机跟随数据的CRC值 */
|
/*- 计算对机跟随数据的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值 */
|
/*- 比较本机和对机跟随数据的CRC值 */
|
||||||
if(0 != CM_Memcmp(mine_buf, peer_buf, (CM_SIZE_T)8u))
|
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");
|
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后发送 */
|
/*- 比较成功,填入CRC后发送 */
|
||||||
if(g_TxBaseFollow_len <= (sizeof(g_TxBaseFollow) - 4u))
|
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");
|
MSCP_LOG_MSG("APPFOLLOW CRC cmp is fail 1\n");
|
||||||
s_2x2_Ctrl.AppFollowCmpFlag = 1u;
|
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一致 但与备系本机不一致 比较失败*/
|
/* 主系双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校验数据长度 */
|
CM_UINT32 singleCheckLen = CheckLen / 2u; /* checkbuf记录了两个CPU的校验信息,长度的一半为单个CPU校验数据长度 */
|
||||||
static CM_UINT32 error_tolerate = 1u;
|
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 */
|
/* 比较接收的主系校验帧中,主系的两个CPU的CRC,记录结果ret_p1p2 */
|
||||||
ret_p1p2 = CM_Memcmp((const void*)s_2x2_Ctrl.RxCheckFrame, (const void*)&s_2x2_Ctrl.RxCheckFrame[singleCheckLen], (CM_SIZE_T)singleCheckLen);
|
ret_p1p2 = CM_Memcmp((const void*)s_2x2_Ctrl.RxCheckFrame, (const void*)&s_2x2_Ctrl.RxCheckFrame[singleCheckLen], (CM_SIZE_T)singleCheckLen);
|
||||||
/* 比较备系本机与主系某一个CPU的CRC,记录结果ret_m1p1 */
|
/* 比较备系本机与主系某一个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)
|
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;
|
offset = 0u;
|
||||||
len_prtcl = CM_LongFromChar((void*)&g_RxBaseFollow[offset]);
|
len_prtcl = CM_LongFromChar((void*)&g_RxBaseFollow[offset]);
|
||||||
offset += 4u;
|
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]);
|
SFM_SetPrtclFollowData((void*)&g_RxBaseFollow[offset]);
|
||||||
offset += len_prtcl;
|
offset += len_prtcl;
|
||||||
|
|
||||||
/*- sfp协议数据跟随*/
|
/*- sfp协议数据跟随*/
|
||||||
len_sfprtcl = CM_LongFromChar((void*)&g_RxBaseFollow[offset]);
|
len_sfprtcl = CM_LongFromChar((void*)&g_RxBaseFollow[offset]);
|
||||||
offset += 4u;
|
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]);
|
SFM_SetSfpPrtclFollowData(len_sfprtcl, (void*)&g_RxBaseFollow[offset]);
|
||||||
offset += len_sfprtcl;
|
offset += len_sfprtcl;
|
||||||
|
|
||||||
/*- 平台数据跟随*/
|
/*- 平台数据跟随*/
|
||||||
len_pfm = CM_LongFromChar((void*)&g_RxBaseFollow[offset]);
|
len_pfm = CM_LongFromChar((void*)&g_RxBaseFollow[offset]);
|
||||||
offset += 4u;
|
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 == ((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_22, TSCP_DARK_ASSERT_4);
|
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;
|
offset = (CM_UINT32)g_RxBaseFollow_len - BASE_FOLLOW_ALL_LEN;
|
||||||
|
|||||||
Reference in New Issue
Block a user