1.4线模式和仲裁模式的通用接口封装
2.离线系拉低主地/备地为离线地 3.修复仲裁IP配置错误
This commit is contained in:
+15
-1
@@ -524,7 +524,7 @@ static void s_Area_Arb_Send_Process(void)
|
|||||||
tolerate_arb++;
|
tolerate_arb++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(ENUM_AREA_UNKNOW == local_area_state && CM_FALSE == flag_comm_all_down)
|
else if(ENUM_AREA_UNKNOW == local_area_state && CM_FALSE == flag_comm_all_up)
|
||||||
{
|
{
|
||||||
/**未知地主系,与另一地通信持续中断10周期,发送仲裁请求 */
|
/**未知地主系,与另一地通信持续中断10周期,发送仲裁请求 */
|
||||||
if(tolerate_arb >= 10u)
|
if(tolerate_arb >= 10u)
|
||||||
@@ -1093,3 +1093,17 @@ static void s_Area_DoubleCRC_Get(IN const CM_UINT8* buf, IN CM_UINT32 len,
|
|||||||
*crc1 = local_crc[0];
|
*crc1 = local_crc[0];
|
||||||
*crc2 = local_crc[1];
|
*crc2 = local_crc[1];
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* @brief 获取另一地A系的ID
|
||||||
|
*/
|
||||||
|
CM_UINT8 AreaArb_GetArea_A_ID(void)
|
||||||
|
{
|
||||||
|
return AREA_BASIC_CFG_PTR->Partner_Area_A_BoardID;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @brief 获取另一地B系的ID
|
||||||
|
*/
|
||||||
|
CM_UINT8 AreaArb_GetArea_B_ID(void)
|
||||||
|
{
|
||||||
|
return AREA_BASIC_CFG_PTR->Partner_Area_B_BoardID;
|
||||||
|
}
|
||||||
@@ -131,5 +131,12 @@ void AreaArb_SetCommStatus_byID(CM_UINT8 ID, CM_UINT32 sn, CM_BOOL rcv_flag);
|
|||||||
* @brief 根据ID获取接收状态
|
* @brief 根据ID获取接收状态
|
||||||
*/
|
*/
|
||||||
void AreaArb_GetCommStatus_byID(CM_UINT8 ID, CM_UINT32* SN, CM_BOOL* rcv_flag);
|
void AreaArb_GetCommStatus_byID(CM_UINT8 ID, CM_UINT32* SN, CM_BOOL* rcv_flag);
|
||||||
|
/**
|
||||||
|
* @brief 获取另一地A系的ID
|
||||||
|
*/
|
||||||
|
CM_UINT8 AreaArb_GetArea_A_ID(void);
|
||||||
|
/**
|
||||||
|
* @brief 获取另一地B系的ID
|
||||||
|
*/
|
||||||
|
CM_UINT8 AreaArb_GetArea_B_ID(void);
|
||||||
#endif
|
#endif
|
||||||
@@ -509,7 +509,7 @@ static void s_Area_Arb_IP_Init(void)
|
|||||||
g_PFM_Cfg.Partner_Area_A_Cfg.IP_4x2, g_PFM_Cfg.Partner_Area_B_Cfg.IP_4x2);
|
g_PFM_Cfg.Partner_Area_A_Cfg.IP_4x2, g_PFM_Cfg.Partner_Area_B_Cfg.IP_4x2);
|
||||||
|
|
||||||
/*获取仲裁网络配置*/
|
/*获取仲裁网络配置*/
|
||||||
rt = CM_Memcpy(ARB_COMM_CFG_PTR->IP_Local, 32, g_PFM_Cfg.Local_Cfg.IP_4x2,32);/**< 对地通信IP */
|
rt = CM_Memcpy(ARB_COMM_CFG_PTR->IP_Local, 32, g_PFM_Cfg.Local_Cfg.IP_Area,32);/**< 对地通信IP */
|
||||||
CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_1);
|
CM_ASSERT(ENUM_CM_TRUE == rt, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_1);
|
||||||
|
|
||||||
rt = CM_Memcpy(ARB_COMM_CFG_PTR->IP_Arb, 32, g_PFM_Cfg.Arb_CFG.IP_Arb,32);/**< 对地通信IP */
|
rt = CM_Memcpy(ARB_COMM_CFG_PTR->IP_Arb, 32, g_PFM_Cfg.Arb_CFG.IP_Arb,32);/**< 对地通信IP */
|
||||||
|
|||||||
@@ -169,3 +169,20 @@ void AreaArb_Get_All_State(STR_Area_State *p_all_State)
|
|||||||
p_all_State->Partner_Area_B_state = AREA_STATE_CTRL_PTR->StateArea.Partner_Area_B_state;
|
p_all_State->Partner_Area_B_state = AREA_STATE_CTRL_PTR->StateArea.Partner_Area_B_state;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* @brief 判断是否存在备地
|
||||||
|
*/
|
||||||
|
CM_BOOL AreaArb_Slave_Is_Exist()
|
||||||
|
{
|
||||||
|
CM_BOOL rt = CM_FALSE;
|
||||||
|
if((ENUM_AREA_SLAVE == AREA_STATE_CTRL_PTR->StateArea.Local_state) || (ENUM_AREA_SLAVE == AREA_STATE_CTRL_PTR->StateArea.Partner_state)
|
||||||
|
|| (ENUM_AREA_SLAVE == AREA_STATE_CTRL_PTR->StateArea.Partner_Area_A_state) || (ENUM_AREA_SLAVE == AREA_STATE_CTRL_PTR->StateArea.Partner_Area_B_state))
|
||||||
|
{
|
||||||
|
rt = CM_TRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
return rt;
|
||||||
|
}
|
||||||
@@ -33,5 +33,9 @@ CM_UINT8 AreaArb_GetID_byState(ENUM_AREA_STATE state_area, ENUM_2x2_STATE_T stat
|
|||||||
* @brief 仲裁模式下使用,获取所有区域状态
|
* @brief 仲裁模式下使用,获取所有区域状态
|
||||||
*/
|
*/
|
||||||
void AreaArb_Get_All_State(STR_Area_State *p_all_State);
|
void AreaArb_Get_All_State(STR_Area_State *p_all_State);
|
||||||
|
/**
|
||||||
|
* @brief 判断是否存在备地
|
||||||
|
*/
|
||||||
|
CM_BOOL AreaArb_Slave_Is_Exist();
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -182,6 +182,8 @@ void s_Offline_vote(void)
|
|||||||
*/
|
*/
|
||||||
void s_Master_vote(void)
|
void s_Master_vote(void)
|
||||||
{
|
{
|
||||||
|
ENUM_2x2_STATE_T state2x = AREA_STATE_CTRL_PTR->State2x.LocalState;
|
||||||
|
|
||||||
if(ENUM_AREA_MASTER == VOTE_STATE_CTRL->Partner_Area_A_state || ENUM_AREA_MASTER == VOTE_STATE_CTRL->Partner_Area_B_state)
|
if(ENUM_AREA_MASTER == VOTE_STATE_CTRL->Partner_Area_A_state || ENUM_AREA_MASTER == VOTE_STATE_CTRL->Partner_Area_B_state)
|
||||||
{
|
{
|
||||||
/**双主宕机 */
|
/**双主宕机 */
|
||||||
@@ -189,6 +191,16 @@ void s_Master_vote(void)
|
|||||||
VOTE_STATE_CTRL->Partner_Area_A_state, VOTE_STATE_CTRL->Partner_Area_B_state);
|
VOTE_STATE_CTRL->Partner_Area_A_state, VOTE_STATE_CTRL->Partner_Area_B_state);
|
||||||
CM_ASSERT(0, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_1);
|
CM_ASSERT(0, NET_MODE, DARK_FAULT_CODE_FUN_ORDER_2, TSCP_DARK_ASSERT_1);
|
||||||
}
|
}
|
||||||
|
else if(ENUM_2x2_OFFLINE == state2x)
|
||||||
|
{
|
||||||
|
/**与主地主同步失败 */
|
||||||
|
VOTE_STATE_CTRL->Local_state = ENUM_AREA_OFFLINE;
|
||||||
|
AREA_LOG_MSG("AREA_STATE_VOTE:Master>>>>>Offline, Sync failed\n");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* @brief 备地状态转换
|
* @brief 备地状态转换
|
||||||
@@ -196,38 +208,23 @@ void s_Master_vote(void)
|
|||||||
void s_Slave_vote(void)
|
void s_Slave_vote(void)
|
||||||
{
|
{
|
||||||
CM_BOOL flag_comm_mm_status = CM_FALSE; /**与主地主的通信状态 */
|
CM_BOOL flag_comm_mm_status = CM_FALSE; /**与主地主的通信状态 */
|
||||||
static CM_UINT32 s_slave_cnt = 0u; /**备系降离线容忍计数 */
|
|
||||||
CM_UINT8 id_mm = AreaArb_GetID_byState(ENUM_AREA_MASTER, ENUM_2x2_MASTER); /**主地主的ID */
|
CM_UINT8 id_mm = AreaArb_GetID_byState(ENUM_AREA_MASTER, ENUM_2x2_MASTER); /**主地主的ID */
|
||||||
AreaArb_GetCommStatus_byID(id_mm, NULL, &flag_comm_mm_status);
|
AreaArb_GetCommStatus_byID(id_mm, NULL, &flag_comm_mm_status);
|
||||||
|
|
||||||
CM_BOOL Sync_Fail_Flag = AREA_FLAGS_CTRL_PTR->Sync_Fail_Flag; /**同步失败标志 */
|
ENUM_2x2_STATE_T state2x = AREA_STATE_CTRL_PTR->State2x.LocalState;
|
||||||
|
|
||||||
if(0x55u == AREA_ARB_CTRL_PTR->Arb_Ack)
|
if(0x55u == AREA_ARB_CTRL_PTR->Arb_Ack)
|
||||||
{
|
{
|
||||||
/**收到仲裁升主回复 */
|
/**收到仲裁升主回复 */
|
||||||
VOTE_STATE_CTRL->Local_state = ENUM_AREA_MASTER;
|
VOTE_STATE_CTRL->Local_state = ENUM_AREA_MASTER;
|
||||||
AREA_LOG_MSG("AREA_STATE_VOTE:Slave>>>>>Master, Arbitration ACK received\n");
|
AREA_LOG_MSG("AREA_STATE_VOTE:Slave>>>>>Master, Arbitration ACK received\n");
|
||||||
}
|
}
|
||||||
else if(CM_FALSE == Sync_Fail_Flag)
|
else if(ENUM_2x2_OFFLINE == state2x)
|
||||||
{
|
{
|
||||||
/**同步失败 */
|
/**同步失败 */
|
||||||
if(CM_TRUE == flag_comm_mm_status)
|
VOTE_STATE_CTRL->Local_state = ENUM_AREA_OFFLINE;
|
||||||
{
|
AREA_LOG_MSG("AREA_STATE_VOTE:Slave>>>>>Offline, Sync failed and Master ID:%d exists\n",
|
||||||
/**主地主存活,降离线 */
|
id_mm);
|
||||||
VOTE_STATE_CTRL->Local_state = ENUM_AREA_OFFLINE;
|
|
||||||
AREA_LOG_MSG("AREA_STATE_VOTE:Slave>>>>>Offline, Sync failed and Master ID:%d exists\n",
|
|
||||||
id_mm);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/**与主地主通信中断,认为主地主宕机,容忍一周期降离线 */
|
|
||||||
s_slave_cnt++;
|
|
||||||
if(s_slave_cnt > MSCP_AREA_SLAVE_TOLERATE_COUNT)
|
|
||||||
{
|
|
||||||
s_slave_cnt = 0u;
|
|
||||||
VOTE_STATE_CTRL->Local_state = ENUM_AREA_OFFLINE;
|
|
||||||
AREA_LOG_MSG("AREA_STATE_VOTE:Slave>>>>>Offline, Sync failed and Master is lost\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if(ENUM_AREA_MASTER == VOTE_STATE_CTRL->Partner_state)
|
else if(ENUM_AREA_MASTER == VOTE_STATE_CTRL->Partner_state)
|
||||||
{
|
{
|
||||||
@@ -239,9 +236,4 @@ void s_Slave_vote(void)
|
|||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
/**离开备地,清空计数 */
|
|
||||||
if(ENUM_AREA_SLAVE != VOTE_STATE_CTRL->Local_state)
|
|
||||||
{
|
|
||||||
s_slave_cnt = 0u;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,78 @@
|
|||||||
|
#include "Area_Arb_Common.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 执行初始化,4线与仲裁模式根据配置区分
|
||||||
|
*/
|
||||||
|
void Area_Arb_Common_Init(void)
|
||||||
|
{
|
||||||
|
if(0x55u == g_PFM_Cfg.M_Arb_Enable)
|
||||||
|
{
|
||||||
|
Area_With_Arb_Init();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Area_init();//区域初始化
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @brief 获取所有板卡区域状态,4线与仲裁模式根据配置开关从不同结构体获取
|
||||||
|
*/
|
||||||
|
void Area_Arb_Common_Get_All_State(STR_Area_State *p_all_State)
|
||||||
|
{
|
||||||
|
if(0x55u == g_PFM_Cfg.M_Arb_Enable)
|
||||||
|
{
|
||||||
|
AreaArb_Get_All_State(p_all_State);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Area_Get_All_State(p_all_State);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @brief 获取另一地A系的ID
|
||||||
|
*/
|
||||||
|
CM_UINT32 Area_Arb_Common_GetArea_A_ID(void)
|
||||||
|
{
|
||||||
|
CM_UINT32 id = 0u;
|
||||||
|
if(0x55u == g_PFM_Cfg.M_Arb_Enable)
|
||||||
|
{
|
||||||
|
id = (CM_UINT32)AreaArb_GetArea_A_ID();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
id = Area_GetArea_A_ID();
|
||||||
|
}
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @brief 获取另一地B系的ID
|
||||||
|
*/
|
||||||
|
CM_UINT32 Area_Arb_Common_GetArea_B_ID(void)
|
||||||
|
{
|
||||||
|
CM_UINT32 id = 0u;
|
||||||
|
if(0x55u == g_PFM_Cfg.M_Arb_Enable)
|
||||||
|
{
|
||||||
|
id = (CM_UINT32)AreaArb_GetArea_B_ID();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
id = Area_GetArea_B_ID();
|
||||||
|
}
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @brief 判断是否存在备地
|
||||||
|
*/
|
||||||
|
CM_BOOL Area_Arb_Common_Slave_Is_Exist(void)
|
||||||
|
{
|
||||||
|
CM_BOOL rt = ENUM_CM_FALSE;
|
||||||
|
if(0x55u == g_PFM_Cfg.M_Arb_Enable)
|
||||||
|
{
|
||||||
|
rt = Area_Slave_Is_Exist();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rt = AreaArb_Slave_Is_Exist();
|
||||||
|
}
|
||||||
|
return rt;
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
#ifndef AREA_ARB_H_
|
||||||
|
#define AREA_ARB_H_
|
||||||
|
#include "Area.h"
|
||||||
|
#include "Arb.h"
|
||||||
|
#include "Arb_State.h"
|
||||||
|
/**
|
||||||
|
* 该文件为4线模式和仲裁模式的共用头文件,用于对其他模块的通用接口
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 执行初始化,4线与仲裁模式根据配置区分
|
||||||
|
*/
|
||||||
|
void Area_Arb_Common_Init(void);
|
||||||
|
/**
|
||||||
|
* @brief 获取所有板卡区域状态,4线与仲裁模式根据配置开关从不同结构体获取
|
||||||
|
*/
|
||||||
|
void Area_Arb_Common_Get_All_State(STR_Area_State *p_all_State);
|
||||||
|
/**
|
||||||
|
* @brief 获取另一地A系的ID,执行初始化,4线与仲裁模式根据配置区分
|
||||||
|
*/
|
||||||
|
CM_UINT32 Area_Arb_Common_GetArea_A_ID(void);
|
||||||
|
/**
|
||||||
|
* @brief 获取另一地B系的ID,执行初始化,4线与仲裁模式根据配置区分
|
||||||
|
*/
|
||||||
|
CM_UINT32 Area_Arb_Common_GetArea_B_ID(void);
|
||||||
|
/**
|
||||||
|
* @brief 判断是否存在备地
|
||||||
|
*/
|
||||||
|
CM_BOOL Area_Arb_Common_Slave_Is_Exist(void);
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -26,7 +26,6 @@
|
|||||||
#define MSCP_AREA_B_BOARD_ID_B 0x04
|
#define MSCP_AREA_B_BOARD_ID_B 0x04
|
||||||
|
|
||||||
#define MSCP_AREA_UNKNOW_COUNT_MAX 0x0au
|
#define MSCP_AREA_UNKNOW_COUNT_MAX 0x0au
|
||||||
#define MSCP_AREA_SLAVE_TOLERATE_COUNT (1u) /**< 备地降离线容忍次数 */
|
|
||||||
|
|
||||||
#define MSCP_MSG_BUF_MAX 1024u /**< 区域通信消息最大缓冲区大小 */
|
#define MSCP_MSG_BUF_MAX 1024u /**< 区域通信消息最大缓冲区大小 */
|
||||||
|
|
||||||
|
|||||||
@@ -41,6 +41,7 @@
|
|||||||
#include "PFM_RemoteUpdate.h"
|
#include "PFM_RemoteUpdate.h"
|
||||||
#include "CFM_Sync.h"
|
#include "CFM_Sync.h"
|
||||||
#include "Arb.h"
|
#include "Arb.h"
|
||||||
|
#include "Area_Arb_Common.h"
|
||||||
#if QNX
|
#if QNX
|
||||||
#include <sys/neutrino.h>
|
#include <sys/neutrino.h>
|
||||||
#include <sys/trace.h>
|
#include <sys/trace.h>
|
||||||
@@ -243,15 +244,8 @@ static void MSCP_Init(void)
|
|||||||
PFM_LOG_SET_INIT_STAGE(ENUM_INIT_APP_CTRL);
|
PFM_LOG_SET_INIT_STAGE(ENUM_INIT_APP_CTRL);
|
||||||
PFM_LOG_SET_INIT_STAGE(ENUM_INIT_2X2USART);
|
PFM_LOG_SET_INIT_STAGE(ENUM_INIT_2X2USART);
|
||||||
CFM_TimeSync_Init(2);//时间同步初始化
|
CFM_TimeSync_Init(2);//时间同步初始化
|
||||||
if(0x55u == g_PFM_Cfg.M_Arb_Enable)
|
/* 区域初始化*/
|
||||||
{
|
Area_Arb_Common_Init();
|
||||||
Area_With_Arb_Init();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Area_init();//区域初始化
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*- 是否开启2oo2功能 */
|
/*- 是否开启2oo2功能 */
|
||||||
if (0x55u == g_PFM_Cfg.M_2oo2_Enable)
|
if (0x55u == g_PFM_Cfg.M_2oo2_Enable)
|
||||||
|
|||||||
@@ -35,6 +35,7 @@
|
|||||||
#include "Area_state.h"
|
#include "Area_state.h"
|
||||||
#include "Arb_State.h"
|
#include "Arb_State.h"
|
||||||
#include "Arb.h"
|
#include "Arb.h"
|
||||||
|
#include "Area_Arb_Common.h"
|
||||||
|
|
||||||
/*通信中断时间和同步超时时间可以相同,此时优先执行通信中断切系*/
|
/*通信中断时间和同步超时时间可以相同,此时优先执行通信中断切系*/
|
||||||
|
|
||||||
@@ -1183,14 +1184,7 @@ void SFM_4x2_ChangeState(void)
|
|||||||
s_2x2_Ctrl.MineExtendState = MSCP_Get_2X_VagueCom_State(&s_2x2_state_Ctrl.MineExtendOKCount[0]); /**< 本机串口通信状态,2oo2交换 */
|
s_2x2_Ctrl.MineExtendState = MSCP_Get_2X_VagueCom_State(&s_2x2_state_Ctrl.MineExtendOKCount[0]); /**< 本机串口通信状态,2oo2交换 */
|
||||||
s_2x2_Ctrl.PeerExtendState = MSCP_Get_2X_VagueCom_State(&s_2x2_state_Ctrl.PeerExtendOKCount[0]); /**< 邻机串口通信状态,2oo2交换 */
|
s_2x2_Ctrl.PeerExtendState = MSCP_Get_2X_VagueCom_State(&s_2x2_state_Ctrl.PeerExtendOKCount[0]); /**< 邻机串口通信状态,2oo2交换 */
|
||||||
/**获取区域状态 */
|
/**获取区域状态 */
|
||||||
if(0x55u == g_PFM_Cfg.M_Arb_Enable)
|
Area_Arb_Common_Get_All_State(&Area_State);
|
||||||
{
|
|
||||||
AreaArb_Get_All_State(&Area_State);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Area_Get_All_State(&Area_State);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*- 切系完成*/
|
/*- 切系完成*/
|
||||||
if(ENUM_2x2_AIDSWITCH_OVER == s_2x2_state_Ctrl.LocalAIDSwitchState)
|
if(ENUM_2x2_AIDSWITCH_OVER == s_2x2_state_Ctrl.LocalAIDSwitchState)
|
||||||
@@ -1276,7 +1270,7 @@ void SFM_4x2_ChangeState(void)
|
|||||||
MSCP_LOG_MSG("s_2x2_state_Ctrl.LocalAreaState = %d 2x2 = %d\n",Area_State.Local_state, s_2x2_state_Ctrl.LocalState);
|
MSCP_LOG_MSG("s_2x2_state_Ctrl.LocalAreaState = %d 2x2 = %d\n",Area_State.Local_state, s_2x2_state_Ctrl.LocalState);
|
||||||
printf("AreaState = %d 2x2 = %d\n",Area_State.Local_state, s_2x2_state_Ctrl.LocalState);
|
printf("AreaState = %d 2x2 = %d\n",Area_State.Local_state, s_2x2_state_Ctrl.LocalState);
|
||||||
/**<是否存在区域备地*/
|
/**<是否存在区域备地*/
|
||||||
s_2x2_state_Ctrl.Area_Slave_Is_Exist = Area_Slave_Is_Exist();
|
s_2x2_state_Ctrl.Area_Slave_Is_Exist = Area_Arb_Common_Slave_Is_Exist();
|
||||||
/*- 2x线程->更新主线程热备状态*/
|
/*- 2x线程->更新主线程热备状态*/
|
||||||
s_2x2_Ctrl.LocalState = SFM_2x2_StateDecision(s_2x2_state_Ctrl.LocalAreaState,s_2x2_state_Ctrl.LocalState);
|
s_2x2_Ctrl.LocalState = SFM_2x2_StateDecision(s_2x2_state_Ctrl.LocalAreaState,s_2x2_state_Ctrl.LocalState);
|
||||||
/* 判断3乘是离线则将地状态设置为离线,
|
/* 判断3乘是离线则将地状态设置为离线,
|
||||||
@@ -1417,12 +1411,12 @@ ENUM_4x2_STATE_T SFM_2x2_AreaDecision(ENUM_AREA_STATE PartnerAreaState,CM_BOOL i
|
|||||||
if (isA == CM_TRUE)
|
if (isA == CM_TRUE)
|
||||||
{
|
{
|
||||||
// A系主备配对:0x01<->0x03
|
// A系主备配对:0x01<->0x03
|
||||||
rtn_state = (masterHighByte == Area_GetArea_A_ID())? ENUM_4x2_MASTER : ENUM_4x2_SLAVE;
|
rtn_state = (masterHighByte == Area_Arb_Common_GetArea_A_ID())? ENUM_4x2_MASTER : ENUM_4x2_SLAVE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// B系主备配对:0x02<->0x04
|
// B系主备配对:0x02<->0x04
|
||||||
rtn_state = (masterHighByte == Area_GetArea_B_ID())? ENUM_4x2_MASTER : ENUM_4x2_SLAVE;
|
rtn_state = (masterHighByte == Area_Arb_Common_GetArea_B_ID())? ENUM_4x2_MASTER : ENUM_4x2_SLAVE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|||||||
Reference in New Issue
Block a user