规范相关修改,数组使用下标取地址方式,而不是直接加长度;输出校验仅在备系失败是打印通道数据
This commit is contained in:
@@ -1925,6 +1925,7 @@ static void s_output_2oo2check(IN CM_UINT8* check_2oo2_Buf, IN CM_UINT32 check_2
|
||||
{
|
||||
CM_INT32 ret = 0, i = 0;
|
||||
CM_UINT8 buf_peer[500] = {0u};
|
||||
CM_UINT32 offset = 0u; /* 用于日志打印时,判断通道*/
|
||||
/*- 2oo2交换输出校验帧 */
|
||||
CM_ASSERT(NULL != check_2oo2_Buf, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_15, TSCP_DARK_ASSERT_1);
|
||||
ret = SFM_2oo2_Exchange_Currency(check_2oo2_Buf, check_2oo2_Len, buf_peer, (CM_UINT32)check_2oo2_Len, ENUM_2oo2_OUTPUT_CHECK);
|
||||
@@ -1940,7 +1941,8 @@ static void s_output_2oo2check(IN CM_UINT8* check_2oo2_Buf, IN CM_UINT32 check_2
|
||||
{
|
||||
if ((CM_UINT32)CM_TRUE == g_2x2oo2_tx[g_2x2oo2_base][i].b_2oo2_Enable)
|
||||
{
|
||||
ret = CM_Memcmp(check_2oo2_Buf + 4 + (i - 1) * 8, buf_peer + 4 + (i - 1) * 8, 8);
|
||||
offset = (CM_UINT32)(i - 1) * 8 + 4u;
|
||||
ret = CM_Memcmp(&check_2oo2_Buf[offset], &buf_peer[offset], 8);
|
||||
if(ret != 0)
|
||||
{
|
||||
MSCP_LOG_MSG("2oo2 output compare err, INDEX = %d, len = %d\n", i, (CM_SIZE_T)g_2x2oo2_tx[g_2x2oo2_base][i].buf_len);
|
||||
|
||||
+13
-11
@@ -4169,8 +4169,8 @@ static void s_2x2_BaseFollow_2oo2Check_Send(void)
|
||||
CM_INT32 ret = 0;
|
||||
/*- 计算本机跟随数据中协议部分的CRC值 */
|
||||
crc = CM_Crc32(g_TxBaseFollow, g_TxBaseFollow_len - BASE_FOLLOW_ALL_LEN);
|
||||
CM_LongToChar(g_TxBaseFollow_len, mine_buf);
|
||||
CM_LongToChar(crc, mine_buf + 4u);
|
||||
CM_LongToChar(g_TxBaseFollow_len, &mine_buf[0]);
|
||||
CM_LongToChar(crc, &mine_buf[4]);
|
||||
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_23, TSCP_DARK_ASSERT_1);
|
||||
@@ -4183,7 +4183,7 @@ static void s_2x2_BaseFollow_2oo2Check_Send(void)
|
||||
/*- 比较成功,填入CRC后发送 */
|
||||
if(g_TxBaseFollow_len <= (sizeof(g_TxBaseFollow) - 4u))
|
||||
{
|
||||
(void)CM_Memcpy(g_TxBaseFollow + g_TxBaseFollow_len, sizeof(g_TxBaseFollow) - g_TxBaseFollow_len - 4u, mine_buf + 4, 4u);
|
||||
(void)CM_Memcpy(&g_TxBaseFollow[g_TxBaseFollow_len], sizeof(g_TxBaseFollow) - g_TxBaseFollow_len - 4u, &mine_buf[4], 4u);
|
||||
g_TxBaseFollow_len += 4u;
|
||||
if(s_2x2_Ctrl.LocalState == ENUM_2x2_MASTER)
|
||||
{
|
||||
@@ -4199,9 +4199,9 @@ static void s_2x2_AppFollow_SyncCheck(void)
|
||||
{
|
||||
CM_UINT32 mine_crc = 0u, partner_crc1 = 0u, partner_crc2 = 0u;
|
||||
static CM_UINT32 error_tolerate = 1u;
|
||||
mine_crc = CM_LongFromChar(g_TxAppFollow);
|
||||
partner_crc1 = CM_LongFromChar(g_RxAppFollowCrc);
|
||||
partner_crc2 = CM_LongFromChar(g_RxAppFollowCrc + 4u);
|
||||
mine_crc = CM_LongFromChar(&g_TxAppFollow[0]);
|
||||
partner_crc1 = CM_LongFromChar(&g_RxAppFollowCrc[0]);
|
||||
partner_crc2 = CM_LongFromChar(&g_RxAppFollowCrc[4]);
|
||||
|
||||
/* 主系双CPU的CRC不一致 */
|
||||
if(partner_crc1 != partner_crc2)
|
||||
@@ -4246,7 +4246,7 @@ static void s_2x2_AppFollow_SyncCheck(void)
|
||||
{
|
||||
/* 比较失败则设置容忍次数大于0(可能本周期备系校验错误降为离线,但下周期主系失效,导致备系进入容忍分支,认为校验成功又升备) */
|
||||
error_tolerate = ((error_tolerate >= 1u) ? error_tolerate : 1u);
|
||||
MSCP_LOG_DATALEN(g_TxAppFollow + 8, g_TxAppFollow_len, "PFM_AppFollow_SyncCheck g_TxAppFollow");
|
||||
MSCP_LOG_DATALEN(&g_TxAppFollow[8], g_TxAppFollow_len, "PFM_AppFollow_SyncCheck g_TxAppFollow");
|
||||
}
|
||||
}
|
||||
/**
|
||||
@@ -4258,12 +4258,13 @@ static void s_2x2_Output_SyncCheck(IN const CM_UINT8 *CheckBuf, CM_INT32 CheckLe
|
||||
CM_INT32 ret = -1, ret_p1p2 = -1, ret_m1p1 = -1, ret_m1p2 = -1; /* 记录对系双CRC比较、本机和对系cpu1、本机和对系cpu2比较结果 */
|
||||
CM_UINT32 singleCheckLen = CheckLen / 2u; /* checkbuf记录了两个CPU的校验信息,长度的一半为单个CPU校验数据长度 */
|
||||
static CM_UINT32 error_tolerate = 1u;
|
||||
CM_UINT32 offset = 0u; /* 用于日志打印时,判断通道*/
|
||||
/*- 入参检查 */
|
||||
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_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);
|
||||
ret_p1p2 = CM_Memcmp((const void*)&s_2x2_Ctrl.RxCheckFrame[0], (const void*)&s_2x2_Ctrl.RxCheckFrame[singleCheckLen], (CM_SIZE_T)singleCheckLen);
|
||||
/* 比较备系本机与主系某一个CPU的CRC,记录结果ret_m1p1 */
|
||||
ret_m1p1 = CM_Memcmp((const void*)CheckBuf, (const void*)&s_2x2_Ctrl.RxCheckFrame[0], (CM_SIZE_T)singleCheckLen);
|
||||
/* 比较备系本机与主系另一个CPU的CRC,记录结果ret_m1p2 */
|
||||
@@ -4330,12 +4331,15 @@ static void s_2x2_Output_SyncCheck(IN const CM_UINT8 *CheckBuf, CM_INT32 CheckLe
|
||||
{
|
||||
/* 比较失败则设置容忍次数大于0(可能本周期备系校验错误降为离线,但下周期主系失效,导致备系进入容忍分支,认为校验成功又升备) */
|
||||
error_tolerate = ((error_tolerate >= 1u) ? error_tolerate : 1u);
|
||||
if(ENUM_2x2_SLAVE == s_2x2_Ctrl.LocalState)
|
||||
{
|
||||
/* 打印比较不一致的通道数据 */
|
||||
for (i = 1; i <= g_2x2oo2_data_num; i++)
|
||||
{
|
||||
if ((CM_UINT32)CM_TRUE == g_2x2oo2_tx[g_2x2oo2_base][i].b_2x2_Enable)
|
||||
{
|
||||
ret = CM_Memcmp(CheckBuf + 4 + (i - 1) * 8, s_2x2_Ctrl.RxCheckFrame + 4 + (i - 1) * 8, 8);
|
||||
offset = (CM_UINT32)(i - 1) * 8 + 4u;
|
||||
ret = CM_Memcmp(CheckBuf + offset, &s_2x2_Ctrl.RxCheckFrame[offset], 8);
|
||||
if(ret != 0)
|
||||
{
|
||||
MSCP_LOG_MSG("2x2 output compare err, INDEX = %d, len = %d\n", i, (CM_SIZE_T)g_2x2oo2_tx[g_2x2oo2_base][i].buf_len);
|
||||
@@ -4347,8 +4351,6 @@ 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_25, TSCP_DARK_ASSERT_3);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user