1 Commits

Author SHA1 Message Date
lh 6f48be84e9 9.3.1首版首轮基线版本 2026-08-13 18:58:25 +08:00
9 changed files with 16 additions and 147 deletions
+2 -2
View File
@@ -588,8 +588,8 @@ ENUM_CM_RETURN APP_API_MainFunc(void)
debug_infor_printf("app proc end at %llu us,used %d us\n", endCycTick, (CM_INT32)((endCycTick - startCycTick) / 1000));
//gFollowDataLen = GetCiAppData(gFollowData);
memset(gFollowData,0x00,1024*1500);
MSCP_SetFollowData(gFollowData, 1024*1500 - 1);
memset(gFollowData,0x02,1024*500);
MSCP_SetFollowData(gFollowData, 1024*500);
return retVal;
}
+5 -1
View File
@@ -118,7 +118,7 @@ void Offline_Vote(STR_Area_State_Ctl *p_Area_Status_Ctl, CM_UINT32 Local_BoardId
AREA_LOG_MSG("01 ENUM_AREA_OFFLINE >>>> ENUM_AREA_MASTER \r\n");
g_Area_4x_Ctl.Local_state = ENUM_AREA_MASTER;
}
/** 本系上电,判断存在备地。*/
/** 本系上电,同步完成 判断存在备地。*/
else if((( ENUM_AREA_MASTER == g_Area_4x_Ctl.Partner_Area_A_state) || ( ENUM_AREA_MASTER == g_Area_4x_Ctl.Partner_Area_B_state) )
&& (1 == g_Area_4x_Ctl.sync_finish_flag) /*&& (MSCP_AREA_NET_HEALTH_LOW < p_Area_Status_Ctl->Net_Health)*/)
{
@@ -131,6 +131,10 @@ void Offline_Vote(STR_Area_State_Ctl *p_Area_Status_Ctl, CM_UINT32 Local_BoardId
AREA_LOG_MSG("03 ENUM_AREA_OFFLINE >>>> ENUM_AREA_OFFLINE \r\n");
g_Area_4x_Ctl.Local_state = ENUM_AREA_OFFLINE;
}
else
{
;
}
}
}
-43
View File
@@ -304,7 +304,6 @@ static void s_NetInit_2oo2(void)
/*- 变量初始化 */
ENUM_CM_RETURN rt = ENUM_CM_FALSE; /* 临时变量 */
CM_INT32 val = 0; /* 临时变量 */
unsigned int optLen = 0u; /* socket选项值长度 */
CM_BOOL rtCheck = CM_FALSE; /* 临时变量 */
/*- 创建平台数据2取socket */
@@ -335,47 +334,6 @@ static void s_NetInit_2oo2(void)
(void)setsockopt(s_CFM_Sock.Sock_2oo2_Data, SOL_SOCKET, SO_SNDBUF, (void*)(&val), (unsigned int)sizeof(val));
(void)setsockopt(s_CFM_Sock.Sock_2oo2_Data_App, SOL_SOCKET, SO_RCVBUF, (void*)(&val), (unsigned int)sizeof(val));
(void)setsockopt(s_CFM_Sock.Sock_2oo2_Data_App, SOL_SOCKET, SO_SNDBUF, (void*)(&val), (unsigned int)sizeof(val));
/*- 读取并打印socket实际生效的接收、发送缓冲区大小 */
optLen = (unsigned int)sizeof(val);
if (0 == getsockopt(s_CFM_Sock.Sock_2oo2_Data, SOL_SOCKET, SO_RCVBUF, (void*)(&val), &optLen))
{
(void)printf("Sock_2oo2_Data SO_RCVBUF = %d bytes\n", val);
}
else
{
(void)printf("Sock_2oo2_Data SO_RCVBUF getsockopt failed\n");
}
optLen = (unsigned int)sizeof(val);
if (0 == getsockopt(s_CFM_Sock.Sock_2oo2_Data, SOL_SOCKET, SO_SNDBUF, (void*)(&val), &optLen))
{
(void)printf("Sock_2oo2_Data SO_SNDBUF = %d bytes\n", val);
}
else
{
(void)printf("Sock_2oo2_Data SO_SNDBUF getsockopt failed\n");
}
optLen = (unsigned int)sizeof(val);
if (0 == getsockopt(s_CFM_Sock.Sock_2oo2_Data_App, SOL_SOCKET, SO_RCVBUF, (void*)(&val), &optLen))
{
(void)printf("Sock_2oo2_Data_App SO_RCVBUF = %d bytes\n", val);
}
else
{
(void)printf("Sock_2oo2_Data_App SO_RCVBUF getsockopt failed\n");
}
optLen = (unsigned int)sizeof(val);
if (0 == getsockopt(s_CFM_Sock.Sock_2oo2_Data_App, SOL_SOCKET, SO_SNDBUF, (void*)(&val), &optLen))
{
(void)printf("Sock_2oo2_Data_App SO_SNDBUF = %d bytes\n", val);
}
else
{
(void)printf("Sock_2oo2_Data_App SO_SNDBUF getsockopt failed\n");
}
/*- 初始化控制信息 */
/*- 配置接收线程 */
@@ -1502,7 +1460,6 @@ static void s_NetInit_Innet(void)
{
bCast = 1;/*默认单播组播模式*/
}
printf("InnetRaw_%d_%s %d\n",i,g_PFM_Cfg.Local_Cfg.Innet_Raw_Parameter[i].IP_InnetRaw_maddr, bCast);
rt = CM_UDP_Socket_Create(&s_CFM_Sock.Sock_InnetRaw[i],
CM_FALSE,
(CM_UINT32)inet_addr(p_tmpIPCom),
+1 -1
View File
@@ -35,7 +35,7 @@ extern "C"
#define NET_UDP_MAINTENANCE_BUF_SIZE ((1024*5)-(1)) /*2OO2UDP协议栈缓冲区大小(维护模式下用于接收代码)*/
#define NET_UDP_2X2_BUF_SIZE ((1024*64)-(1)) /*2X2UDP协议栈缓冲区大小(用于接收代码)*/
#define NET_UDP_BUF_SIZE ((1024*64)-(1)) /*UDPsocket消息队列缓冲区(用于接收代码)*/
#define NET_UDP_BUF_DOUBLESIZE ((2*1024*1024) - (1)) /*UDP协议栈缓冲区大小(用于接收代码)*/
#define NET_UDP_BUF_DOUBLESIZE ((1024*256) - (1)) /*UDP协议栈缓冲区大小(用于接收代码)*/
#define NET_50K_SIZE (50000u) /*实际允许使用的应用帧大小(用于发送代码)*/
#define NET_20K_SIZE (20000u) /*实际允许使用的应用帧大小(用于发送代码)*/
-3
View File
@@ -180,7 +180,6 @@ ENUM_CM_RETURN CM_UDP_Socket_Create(OUT CM_SOCKET* pSock, IN CM_BOOL isNonBlockM
ENUM_CM_RETURN retError = ENUM_CM_FALSE; /* 临时返回值 */
struct ip_mreq multiCast; /* 组播配置 */
CM_INT32 bCast = 1;
u_char loop; /* 0 = disable, 1 = enable (default) */
/*- 是否UDP服务未初始化或输入非法 */
if ((CM_TRUE != s_UDP_Initialized) || (NULL == pSock))
{
@@ -210,8 +209,6 @@ ENUM_CM_RETURN CM_UDP_Socket_Create(OUT CM_SOCKET* pSock, IN CM_BOOL isNonBlockM
/*组播发送*/
addrHost.sin_addr.s_addr = addrIP;
(void)setsockopt(*pSock, IPPROTO_IP, IP_MULTICAST_IF, &addrHost.sin_addr, sizeof(addrHost.sin_addr));
loop = 0;
(void)setsockopt(*pSock, IPPROTO_IP, IP_MULTICAST_LOOP, &loop, sizeof(loop));
break;
case ENUM_MULTICAST_RCV:
/*组播接收*/
+1 -2
View File
@@ -196,7 +196,6 @@ static void MSCP_Init(void)
PFM_LOG_SET_INIT_STAGE(ENUM_INIT_API_DATA);
/*- 平台配置文件管理初始化 */
PFM_CFG_Init();
save_to_file("A new startup ******************************\r\n");
PFM_LOG_SET_INIT_STAGE(ENUM_INIT_CFG);
/*- 网卡初始化 */
CFM_NetworkCard_Init();
@@ -630,7 +629,7 @@ static void SelfCheckInit(void)
{
#ifdef QNX
/*- 文件自检初始化 */
//PFM_FileInit();
PFM_FileInit();
/*- 内存自检初始化*/
PFM_MemCheck_Init();
/*- CPU自检初始化*/
-2
View File
@@ -461,8 +461,6 @@ void PFM_InputProc(void)
/*- 外网安全数据接收 */
PFM_CFC_Check(26);
g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_OutnetSafe].mine_len = (CM_UINT32)SFM_RxOutnetSafe(g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_OutnetSafe].p_mine_buf, (CM_UINT32)g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_OutnetSafe].buf_size);
g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_OutnetSafe].mine_len = g_PFM_Cfg.OutnetSafePack_Len;
CM_Memset(g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_OutnetSafe].p_mine_buf, 0x00u, g_PFM_Cfg.OutnetSafePack_Len, g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_OutnetSafe].buf_size);
MSCP_LOG_MSG("g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_OutnetSafe].mine_len = %d\n",g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_OutnetSafe].mine_len);
/*判断外网透传使能开关*/
if((CM_UINT32)0x55u == g_PFM_Cfg.M_OutnetRaw_Enable)
+7 -92
View File
@@ -129,52 +129,6 @@ static void SFM_2x2_Input2oo2Exchange(STRU_2X2_CTRL_T *peerCtrl);
static void SFM_2x2_Eth422StateDark(void);
// 主要实现函数
void save_to_file(const char *format, ...)
{
return;
FILE *fp = NULL;
va_list args;
int result = 0;
// 检查参数有效性
if (format == NULL) {
fprintf(stderr, "Error: Invalid parameters\n");
}
// 以追加模式打开文件,如果文件不存在则创建
fp = fopen("2xStateChange", "a");
if (fp == NULL) {
fprintf(stderr, "Error: Cannot open file \n");
}
// 获取可变参数
va_start(args, format);
// 将格式化的字符串写入文件
result = vfprintf(fp, format, args);
// 添加时间戳(可选)
// if (result >= 0) {
// time_t now;
// struct tm *timeinfo;
// char timestamp[64];
//
// time(&now);
// timeinfo = localtime(&now);
// strftime(timestamp, sizeof(timestamp), "\n[%Y-%m-%d %H:%M:%S]\n", timeinfo);
// fputs(timestamp, fp);
// }
// 清理可变参数列表
va_end(args);
// 关闭文件
fclose(fp);
}
/* 输入周期号同步函数 */
static void SFM_2x2_InputSysCycSyn(STRU_2X2_CTRL_T *peerCtrl){
if(s_2x2_Ctrl.RxInputSysCyc > peerCtrl->RxInputSysCyc)
@@ -748,14 +702,12 @@ static void s_State_Transition(void)
/*- 健康度正常切换为预升主 */
s_2x2_state_Ctrl.LocalState = ENUM_2x2_PRE_MASTER;
SFM_LOG_MSG_2X("Transition:2x2:INIT>>>>>>>PRE_MASTER\n");
save_to_file("Transition:2x2:INIT>>>>>>>PRE_MASTER\n");
}
else
{
/*保持初始化状态*/
SFM_LOG_MSG_2X("Transition:2x2:INIT>>>>>>>INIT(LocalCC_Health = %d)\n",s_2x2_state_Ctrl.LocalCC_Health);
save_to_file("Transition:2x2:INIT>>>>>>>INIT(LocalCC_Health = %d)\n",s_2x2_state_Ctrl.LocalCC_Health);
}
break;
case ENUM_2x2_OFFLINE: /*-< 离线 */
@@ -768,13 +720,11 @@ static void s_State_Transition(void)
{
s_2x2_state_Ctrl.LocalState = ENUM_2x2_SLAVE;
SFM_LOG_MSG_2X("Transition:2x2:OFFLINE>>>>>>>SLAVE(PartnerState is MASTER)\n");
save_to_file("Transition:2x2:OFFLINE>>>>>>>SLAVE(PartnerState is MASTER)\n");
}
else
{
s_2x2_state_Ctrl.LocalState = ENUM_2x2_PRE_MASTER;
SFM_LOG_MSG_2X("Transition:2x2:OFFLINE>>>>>>>PRE_MASTER(PartnerState != MASTER)\n");
save_to_file("Transition:2x2:OFFLINE>>>>>>>PRE_MASTER(PartnerState != MASTER)\n");
}
}
else
@@ -792,7 +742,6 @@ static void s_State_Transition(void)
/*- 本系转离线 */
s_2x2_state_Ctrl.LocalState = ENUM_2x2_OFFLINE;
SFM_LOG_MSG_2X("Transition:2x2:PRE_MASTER>>>>>>>OFFLINE(Other Master)\n");
save_to_file("Transition:2x2:PRE_MASTER>>>>>>>OFFLINE(Other Master)\n");
}
/*- 是否是本系为B系且对系预升主 */
else if ((ENUM_2x2_PRE_MASTER == s_2x2_state_Ctrl.PartnerState) && ((MSCP_MAIN_B == boardID) || (MSCP_MAIN_D == boardID)))
@@ -801,7 +750,6 @@ static void s_State_Transition(void)
/*- 本系转离线 */
s_2x2_state_Ctrl.LocalState = ENUM_2x2_OFFLINE;
SFM_LOG_MSG_2X("Transition:2x2:PRE_MASTER>>>>>>>OFFLINE(Other A will Master)\n");
save_to_file("Transition:2x2:PRE_MASTER>>>>>>>OFFLINE(Other A will Master)\n");
}
/*- 预升主计时是否达到了预升主等待时间 */
else if (s_2x2_state_Ctrl.preMasterCounter >= (MSCP_2x2_PREMASTER_WAIT * (s_2x2_thread_Ctrl.number_Cyc - 1u)))
@@ -810,13 +758,11 @@ static void s_State_Transition(void)
/*- 本系升主 */
s_2x2_state_Ctrl.LocalState = ENUM_2x2_MASTER;
SFM_LOG_MSG_2X("Transition:2x2:PRE_MASTER>>>>>>>MASTER!!!(Will Master Success)\n");
save_to_file("Transition:2x2:PRE_MASTER>>>>>>>MASTER!!!(Will Master Success)\n");
}
else
{
/*- 保持预升主 */
SFM_LOG_MSG_2X("Transition:2x2:PRE_MASTER>>>>>>>PRE_MASTER(keep count = %d)\n",s_2x2_state_Ctrl.preMasterCounter);
save_to_file("Transition:2x2:PRE_MASTER>>>>>>>PRE_MASTER(keep count = %d)\n",s_2x2_state_Ctrl.preMasterCounter);
}
/*- @alias 更新预升主计时器 */
@@ -848,8 +794,6 @@ static void s_State_Transition(void)
s_2x2_state_Ctrl.LocalState = ENUM_2x2_OFFLINE;
SFM_LOG_MSG_2X("Transition:2x2:MASTER>>>>>>>OFFLINE!!!(Old Data PartnerState = %d Rx:MyMicroCyc %d %d Rx:MyCyc %d %d)\n",s_2x2_state_Ctrl.PartnerState, s_2x2_state_Ctrl.RxStateMicroCyc, \
s_2x2_state_Ctrl.MicroCyc, s_2x2_state_Ctrl.RxStateSysCyc, s_2x2_state_Ctrl.SysCyc );
save_to_file("Transition:2x2:MASTER>>>>>>>OFFLINE!!!(Old Data PartnerState = %d Rx:MyMicroCyc %d %d Rx:MyCyc %d %d)\n",s_2x2_state_Ctrl.PartnerState, s_2x2_state_Ctrl.RxStateMicroCyc, \
s_2x2_state_Ctrl.MicroCyc, s_2x2_state_Ctrl.RxStateSysCyc, s_2x2_state_Ctrl.SysCyc );
/* CM_RE_ASSERT(0, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_1, TSCP_DARK_ASSERT_4); */
}
else if(ENUM_2x2_MASTER == s_2x2_state_Ctrl.PartnerState)
@@ -860,14 +804,12 @@ static void s_State_Transition(void)
/*- 检测到对系是主系,本系宕机*/
s_2x2_state_Ctrl.LocalState = ENUM_2x2_SHUTDOWN;
SFM_LOG_MSG_2X("Transition:2x2:MASTER>>>>>>>Double MASTER!!!(Shut Down)\n");
save_to_file("Transition:2x2:MASTER>>>>>>>Double MASTER!!!(Shut Down)\n");
CM_RE_ASSERT(0, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_1, TSCP_DARK_ASSERT_3);
}
else
{
/*恢复上周期状态*/
SFM_LOG_MSG_2X("Transition:2x2:Double MASTER Recovery!!!(Last State)\n");
save_to_file("Transition:2x2:Double MASTER Recovery!!!(Last State)\n");
s_2x2_state_Ctrl.LocalState = s_2x2_state_Ctrl.LastLocalState;
TempState = s_2x2_state_Ctrl.LastPartnerState;
s_2x2_state_Ctrl.LastPartnerState = s_2x2_state_Ctrl.PartnerState;
@@ -884,7 +826,6 @@ static void s_State_Transition(void)
/*- 检测到对系是备系,且同步成功,主系同步失败降为跟随*/
s_2x2_state_Ctrl.LocalState = ENUM_2x2_OFFLINE;
SFM_LOG_MSG_2X("Transition:2x2:MASTER>>>>>>>OFFLINE(Health not enough)\n");
save_to_file("Transition:2x2:MASTER>>>>>>>OFFLINE(Health not enough)\n");
}
/*健康度切系2:本机通控通信异常*/
@@ -892,14 +833,12 @@ static void s_State_Transition(void)
{
s_2x2_state_Ctrl.LocalState = ENUM_2x2_OFFLINE;
SFM_LOG_MSG_2X("Transition:2x2:MASTER>>>>>>>OFFLINE(Local CC_Health not enough)\n");
save_to_file("Transition:2x2:MASTER>>>>>>>OFFLINE(Local CC_Health not enough)\n");
}
/*健康度切系3:本机通控通信异常,区域健康度切系,存在备地即降跟随*/
else if((0 == s_2x2_state_Ctrl.LocalCC_Health) && (CM_TRUE == s_2x2_state_Ctrl.Area_Slave_Is_Exist))
{
s_2x2_state_Ctrl.LocalState = ENUM_2x2_OFFLINE;
SFM_LOG_MSG_2X("Transition:2x2:MASTER>>>>>>>OFFLINE(Area CC_Health not enough)\n");
save_to_file("Transition:2x2:MASTER>>>>>>>OFFLINE(Area CC_Health not enough)\n");
}
/*手动切系*/
else if((ENUM_2x2_SLAVE == s_2x2_state_Ctrl.PartnerState) && ((1u == s_2x2_state_Ctrl.ctrSwitchFlag) || (1u == s_2x2_state_Ctrl.aidSwitchFlag)))
@@ -911,16 +850,12 @@ static void s_State_Transition(void)
/*- 检测到对系是备系,且允许切系,主系降为备系*/
s_2x2_state_Ctrl.LocalState = ENUM_2x2_SLAVE;
SFM_LOG_MSG_2X("Transition:2x2:MASTER>>>>>>>SLAVE(SWITCH:0x%x,AID:0x%x)\n",s_2x2_state_Ctrl.ctrSwitchFlag,s_2x2_state_Ctrl.aidSwitchFlag);
save_to_file("Transition:2x2:MASTER>>>>>>>SLAVE(SWITCH:0x%x,AID:0x%x)\n",s_2x2_state_Ctrl.ctrSwitchFlag,s_2x2_state_Ctrl.aidSwitchFlag);
}
else
{
SFM_LOG_MSG_2X("Transition:2x2:MASTER>>>>>>>Do Not Change(SWITCH:0x%x,AID:0x%x,COM:0x%x,LSH:%d,PSH:%d,LCCH:%d,PCCH:%d)\n",s_2x2_state_Ctrl.ctrSwitchFlag,s_2x2_state_Ctrl.aidSwitchFlag,
s_State_Get_CommunicationState(ENUM_2x2_COM_SWITCH_CONDITION),s_2x2_state_Ctrl.LocalSync_Health,s_2x2_state_Ctrl.PartnerSync_Health,
s_2x2_state_Ctrl.LocalCC_Health,s_2x2_state_Ctrl.PartnerCC_Health);
save_to_file("Transition:2x2:MASTER>>>>>>>Do Not Change(SWITCH:0x%x,AID:0x%x,COM:0x%x,LSH:%d,PSH:%d,LCCH:%d,PCCH:%d)\n",s_2x2_state_Ctrl.ctrSwitchFlag,s_2x2_state_Ctrl.aidSwitchFlag,
s_State_Get_CommunicationState(ENUM_2x2_COM_SWITCH_CONDITION),s_2x2_state_Ctrl.LocalSync_Health,s_2x2_state_Ctrl.PartnerSync_Health,
s_2x2_state_Ctrl.LocalCC_Health,s_2x2_state_Ctrl.PartnerCC_Health);
}
s_State_SwitchState_Init();
}
@@ -953,15 +888,13 @@ static void s_State_Transition(void)
/*通信SN号清空-防止对系重新上电后不接收新的SN号*/
s_2x2_state_Ctrl.RxSN = 0u;
s_2x2_state_Ctrl.RxStateSysCyc = 0u;
SFM_LOG_MSG_2X("Transition:2x2:SLAVE>>>>>>>MASTER!!!(ALL interrupt)\n");
save_to_file("Transition:2x2:SLAVE>>>>>>>MASTER!!!(ALL interrupt) PartnerSync_Health = %d\n",s_2x2_state_Ctrl.PartnerSync_Health);
SFM_LOG_MSG_2X("Transition:2x2:SLAVE>>>>>>>MASTER!!!(ALL interrupt) PartnerSync_Health = %d\n",s_2x2_state_Ctrl.PartnerSync_Health);
}
else
{
/*- 存在断线-宕机 */
s_2x2_state_Ctrl.LocalState = ENUM_2x2_SHUTDOWN;
SFM_LOG_MSG_2X("Transition:2x2:SLAVE>>>>>>>SHUTDOWN ALL interrupt\n");
save_to_file("Transition:2x2:SLAVE>>>>>>>SHUTDOWN ALL interrupt PartnerSync_Health = %d\n", s_2x2_state_Ctrl.PartnerSync_Health);
SFM_LOG_MSG_2X("Transition:2x2:SLAVE>>>>>>>SHUTDOWN ALL interrupt PartnerSync_Health = %d\n", s_2x2_state_Ctrl.PartnerSync_Health);
CM_ASSERT(0, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_1, TSCP_DARK_ASSERT_5);
}
}
@@ -972,14 +905,12 @@ static void s_State_Transition(void)
s_2x2_state_Ctrl.LocalState = ENUM_2x2_MASTER;
s_State_SwitchState_Init();
SFM_LOG_MSG_2X("Transition:2x2:SLAVE>>>>>>>MASTER(ROLLBACK PartnerState = %d LastLocalState = %d)\n",s_2x2_state_Ctrl.PartnerState,s_2x2_state_Ctrl.LastLocalState);
save_to_file("Transition:2x2:SLAVE>>>>>>>MASTER(ROLLBACK PartnerState = %d LastLocalState = %d)\n",s_2x2_state_Ctrl.PartnerState,s_2x2_state_Ctrl.LastLocalState);
}
/*- 与主系输出不一致 或应用跟随数据不一致*/
else if(CM_FALSE == s_2x2_state_Ctrl.LocalSyncFailFlag)
{
s_2x2_state_Ctrl.LocalState = ENUM_2x2_OFFLINE;
SFM_LOG_MSG_2X("Transition:2x2:SLAVE>>>>>>>OFFLINE(OutPut failed or appflow failed)\n");
save_to_file("Transition:2x2:SLAVE>>>>>>>OFFLINE(OutPut failed or appflow failed)\n");
s_State_SwitchState_Init();
}
else if((ENUM_2x2_MASTER == s_2x2_state_Ctrl.PartnerState) &&
@@ -993,7 +924,6 @@ static void s_State_Transition(void)
{
s_2x2_state_Ctrl.LocalState = ENUM_2x2_MASTER;
SFM_LOG_MSG_2X("Transition:2x2:SLAVE>>>>>>>MASTER((SWITCH:0x%x,AID:0x%x)\n",s_2x2_state_Ctrl.ctrSwitchFlag,s_2x2_state_Ctrl.aidSwitchFlag);
save_to_file("Transition:2x2:SLAVE>>>>>>>MASTER((SWITCH:0x%x,AID:0x%x)\n",s_2x2_state_Ctrl.ctrSwitchFlag,s_2x2_state_Ctrl.aidSwitchFlag);
}
else
{
@@ -1001,9 +931,6 @@ static void s_State_Transition(void)
SFM_LOG_MSG_2X("Transition:2x2:SLAVE>>>>>>>Do Not Change(SWITCH:0x%x,AID:0x%x,COM:0x%x,LSH:%d,PSH:%d,LCCH:%d,PCCH:%d)\n",s_2x2_state_Ctrl.ctrSwitchFlag,s_2x2_state_Ctrl.aidSwitchFlag,
s_State_Get_CommunicationState(ENUM_2x2_COM_SWITCH_CONDITION),s_2x2_state_Ctrl.LocalSync_Health,s_2x2_state_Ctrl.PartnerSync_Health,
s_2x2_state_Ctrl.LocalCC_Health,s_2x2_state_Ctrl.PartnerCC_Health);
save_to_file("Transition:2x2:SLAVE>>>>>>>Do Not Change(SWITCH:0x%x,AID:0x%x,COM:0x%x,LSH:%d,PSH:%d,LCCH:%d,PCCH:%d)\n",s_2x2_state_Ctrl.ctrSwitchFlag,s_2x2_state_Ctrl.aidSwitchFlag,
s_State_Get_CommunicationState(ENUM_2x2_COM_SWITCH_CONDITION),s_2x2_state_Ctrl.LocalSync_Health,s_2x2_state_Ctrl.PartnerSync_Health,
s_2x2_state_Ctrl.LocalCC_Health,s_2x2_state_Ctrl.PartnerCC_Health);
}
s_State_SwitchState_Init();
}
@@ -1017,7 +944,6 @@ static void s_State_Transition(void)
/*- 本系离线 */
s_2x2_state_Ctrl.LocalState = ENUM_2x2_OFFLINE;
SFM_LOG_MSG_2X("Transition:2x2:SLAVE>>>>>>>OFFLINE(Lose Sync)\n");
save_to_file("Transition:2x2:SLAVE>>>>>>>OFFLINE(Lose Sync)\n");
}
else
{
@@ -1102,14 +1028,12 @@ static CM_THREAD_FUNC_T SFM_2x2_StateChange_Thread(void)
/*- 检测到对系是主系,本系宕机*/
s_2x2_state_Ctrl.LocalState = ENUM_2x2_SHUTDOWN;
SFM_LOG_MSG_2X("Transition:2x2:MASTER>>>>>>>Double MASTER!!!(Shut Down)\n");
save_to_file("Transition:2x2:MASTER>>>>>>>Double MASTER!!!(Shut Down)\n");
CM_RE_ASSERT(0, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_4, TSCP_DARK_ASSERT_1);
}
else
{
/*恢复上周期状态*/
SFM_LOG_MSG_2X("Transition:2x2:Double MASTER Recovery!!!(Last State)\n");
save_to_file("Transition:2x2:Double MASTER Recovery!!!(Last State)\n");
s_2x2_state_Ctrl.LocalState = s_2x2_state_Ctrl.LastLocalState;
TempState = s_2x2_state_Ctrl.LastPartnerState;
s_2x2_state_Ctrl.LastPartnerState = s_2x2_state_Ctrl.PartnerState;
@@ -1866,7 +1790,7 @@ static void s_2x2_Recv(void)
ENUM_CM_RETURN ret = ENUM_CM_FALSE; /* 临时变量 */
PFM_LOG_SET_STOPTIMER(TSCP_DARK_2x2);
/*- 以太网循环接收2x2数据 */
if(CM_TRUE == CFM_GetTimeSyncFlag())
if(CM_TRUE == s_2x2_Ctrl.TimeSyncFlag)
{
do
{
@@ -2464,7 +2388,6 @@ void SFM_2x2_OutputProc(IN const CM_UINT8 *CheckBuf, CM_INT32 CheckLen)
{
/*- 进行输出比较 */
ret = CM_Memcmp((const void*)CheckBuf, (void*)s_2x2_Ctrl.RxCheckFrame, (CM_SIZE_T)CheckLen);
ret = 0;//qap
/*- 输出比较是否一致 */
if (0 == ret)
{
@@ -2597,7 +2520,7 @@ static CM_UINT8 SFM_2x2_RecvAppFollowData(CM_UINT32 sysCyc)
else if(s_2x2_Ctrl.RxAppFollowSysCrcCyc < peerCtrl.RxAppFollowSysCrcCyc)
{
MSCP_LOG_MSG("B-A:g_RxAppFollowCrc_len:%lld\n",g_RxAppFollowCrc_len);
g_RxAppFollow_len = SFM_2oo2_Exchange_Currency(g_RxAppFollowCrc, 0, g_RxAppFollowCrc, sizeof(g_RxAppFollowCrc), ENUM_2oo2_END_EX);
g_RxAppFollowCrc_len = SFM_2oo2_Exchange_Currency(g_RxAppFollowCrc, 0, g_RxAppFollowCrc, sizeof(g_RxAppFollowCrc), ENUM_2oo2_END_EX);
s_2x2_Ctrl.RxAppFollowSysCrcCyc = peerCtrl.RxAppFollowSysCrcCyc;
/**用于记录综合主系ID */
SFM_2x2_SetMasterID(peerCtrl.MasterID);
@@ -2636,7 +2559,6 @@ void SFM_2x2_EndProc(void)
CM_UINT8 type = 0u; /*接收到的跟随数据类型 1 CRC 2 全数据*/
static CM_UINT8 debounce = 0u; /*防抖计数*/
CM_UINT8 SendFollowDataType = 0u;
CM_UINT32 i = 0u;
if(ENUM_4x2_MASTER == stat)
@@ -2645,7 +2567,6 @@ void SFM_2x2_EndProc(void)
curTickTest[0] = CM_GetTick();
/* 条件 本地对系是备或者宕机 && 对地A是备或者宕机 && 对地B是备或者宕机*/
SendFollowDataType = SFM_GetAppFollowType();
SendFollowDataType = 0;
if(1u == SendFollowDataType)
{
/*- 发送跟随数据 */
@@ -2655,7 +2576,7 @@ void SFM_2x2_EndProc(void)
SFM_2x2_Send(g_TxAppFollow, (CM_UINT32)8, ENUM_2x2_MSG_APP_FOLLOW_CRC);
MSCP_LOG_MSG("Iam master partner is slave send appfollowcrc\n");
debounce = 3u;
//MSCP_LOG_BIN(g_TxAppFollow + 8, g_TxAppFollow_len - 4);//qap
//MSCP_LOG_BIN(g_TxAppFollow + 8, g_TxAppFollow_len - 4);
}
else
{
@@ -2699,20 +2620,14 @@ void SFM_2x2_EndProc(void)
{
/*- 是否收到了最新的应用跟随数据 */
/*- 调用应用API覆盖应用关键数据 */
//retFollowUp = APP_API_FollowUp(g_RxAppFollow, (CM_UINT32)g_RxAppFollow_len);
//CM_RE_ASSERT(ENUM_CM_TRUE == retFollowUp, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_9, TSCP_DARK_ASSERT_2);
for(i = 0u; i < g_RxAppFollow_len; i++)
{
g_RxAppFollow[i] = 0;
}
retFollowUp = APP_API_FollowUp(g_RxAppFollow, (CM_UINT32)g_RxAppFollow_len);
CM_RE_ASSERT(ENUM_CM_TRUE == retFollowUp, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_9, TSCP_DARK_ASSERT_2);
s_2x2_Ctrl.AppFollowCmpFailFlag = 0u;
}
else
{
MSCP_LOG_MSG("no follow data\n");
}
curTickTest[1] = CM_GetTick();
}
else
{
-1
View File
@@ -561,7 +561,6 @@ extern CM_UINT32 g_MSCP_SysCount;
/*获取通控健康度 >0 为健康*/
CM_UINT8 SFM_GetLocalCCHealth(void);
void save_to_file(const char *format, ...);//qap test
#ifdef __cplusplus
}