3 Commits

7 changed files with 61 additions and 5 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)); debug_infor_printf("app proc end at %llu us,used %d us\n", endCycTick, (CM_INT32)((endCycTick - startCycTick) / 1000));
//gFollowDataLen = GetCiAppData(gFollowData); //gFollowDataLen = GetCiAppData(gFollowData);
memset(gFollowData,0x02,1024*500); memset(gFollowData,0x00,1024*1500);
MSCP_SetFollowData(gFollowData, 1024*500); MSCP_SetFollowData(gFollowData, 1024*1500 - 1);
return retVal; return retVal;
} }
+42
View File
@@ -304,6 +304,7 @@ static void s_NetInit_2oo2(void)
/*- 变量初始化 */ /*- 变量初始化 */
ENUM_CM_RETURN rt = ENUM_CM_FALSE; /* 临时变量 */ ENUM_CM_RETURN rt = ENUM_CM_FALSE; /* 临时变量 */
CM_INT32 val = 0; /* 临时变量 */ CM_INT32 val = 0; /* 临时变量 */
unsigned int optLen = 0u; /* socket选项值长度 */
CM_BOOL rtCheck = CM_FALSE; /* 临时变量 */ CM_BOOL rtCheck = CM_FALSE; /* 临时变量 */
/*- 创建平台数据2取socket */ /*- 创建平台数据2取socket */
@@ -334,6 +335,47 @@ 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, 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_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)); (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");
}
/*- 初始化控制信息 */ /*- 初始化控制信息 */
/*- 配置接收线程 */ /*- 配置接收线程 */
+1 -1
View File
@@ -35,7 +35,7 @@ extern "C"
#define NET_UDP_MAINTENANCE_BUF_SIZE ((1024*5)-(1)) /*2OO2UDP协议栈缓冲区大小(维护模式下用于接收代码)*/ #define NET_UDP_MAINTENANCE_BUF_SIZE ((1024*5)-(1)) /*2OO2UDP协议栈缓冲区大小(维护模式下用于接收代码)*/
#define NET_UDP_2X2_BUF_SIZE ((1024*64)-(1)) /*2X2UDP协议栈缓冲区大小(用于接收代码)*/ #define NET_UDP_2X2_BUF_SIZE ((1024*64)-(1)) /*2X2UDP协议栈缓冲区大小(用于接收代码)*/
#define NET_UDP_BUF_SIZE ((1024*64)-(1)) /*UDPsocket消息队列缓冲区(用于接收代码)*/ #define NET_UDP_BUF_SIZE ((1024*64)-(1)) /*UDPsocket消息队列缓冲区(用于接收代码)*/
#define NET_UDP_BUF_DOUBLESIZE ((1024*256) - (1)) /*UDP协议栈缓冲区大小(用于接收代码)*/ #define NET_UDP_BUF_DOUBLESIZE ((2*1024*1024) - (1)) /*UDP协议栈缓冲区大小(用于接收代码)*/
#define NET_50K_SIZE (50000u) /*实际允许使用的应用帧大小(用于发送代码)*/ #define NET_50K_SIZE (50000u) /*实际允许使用的应用帧大小(用于发送代码)*/
#define NET_20K_SIZE (20000u) /*实际允许使用的应用帧大小(用于发送代码)*/ #define NET_20K_SIZE (20000u) /*实际允许使用的应用帧大小(用于发送代码)*/
+3
View File
@@ -180,6 +180,7 @@ ENUM_CM_RETURN CM_UDP_Socket_Create(OUT CM_SOCKET* pSock, IN CM_BOOL isNonBlockM
ENUM_CM_RETURN retError = ENUM_CM_FALSE; /* 临时返回值 */ ENUM_CM_RETURN retError = ENUM_CM_FALSE; /* 临时返回值 */
struct ip_mreq multiCast; /* 组播配置 */ struct ip_mreq multiCast; /* 组播配置 */
CM_INT32 bCast = 1; CM_INT32 bCast = 1;
u_char loop; /* 0 = disable, 1 = enable (default) */
/*- 是否UDP服务未初始化或输入非法 */ /*- 是否UDP服务未初始化或输入非法 */
if ((CM_TRUE != s_UDP_Initialized) || (NULL == pSock)) if ((CM_TRUE != s_UDP_Initialized) || (NULL == pSock))
{ {
@@ -209,6 +210,8 @@ ENUM_CM_RETURN CM_UDP_Socket_Create(OUT CM_SOCKET* pSock, IN CM_BOOL isNonBlockM
/*组播发送*/ /*组播发送*/
addrHost.sin_addr.s_addr = addrIP; addrHost.sin_addr.s_addr = addrIP;
(void)setsockopt(*pSock, IPPROTO_IP, IP_MULTICAST_IF, &addrHost.sin_addr, sizeof(addrHost.sin_addr)); (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; break;
case ENUM_MULTICAST_RCV: case ENUM_MULTICAST_RCV:
/*组播接收*/ /*组播接收*/
+1 -1
View File
@@ -630,7 +630,7 @@ static void SelfCheckInit(void)
{ {
#ifdef QNX #ifdef QNX
/*- 文件自检初始化 */ /*- 文件自检初始化 */
PFM_FileInit(); //PFM_FileInit();
/*- 内存自检初始化*/ /*- 内存自检初始化*/
PFM_MemCheck_Init(); PFM_MemCheck_Init();
/*- CPU自检初始化*/ /*- CPU自检初始化*/
+2
View File
@@ -461,6 +461,8 @@ void PFM_InputProc(void)
/*- 外网安全数据接收 */ /*- 外网安全数据接收 */
PFM_CFC_Check(26); 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 = (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); 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) if((CM_UINT32)0x55u == g_PFM_Cfg.M_OutnetRaw_Enable)
+10 -1
View File
@@ -133,6 +133,7 @@ static void SFM_2x2_Eth422StateDark(void);
// 主要实现函数 // 主要实现函数
void save_to_file(const char *format, ...) void save_to_file(const char *format, ...)
{ {
return;
FILE *fp = NULL; FILE *fp = NULL;
va_list args; va_list args;
int result = 0; int result = 0;
@@ -1865,7 +1866,7 @@ static void s_2x2_Recv(void)
ENUM_CM_RETURN ret = ENUM_CM_FALSE; /* 临时变量 */ ENUM_CM_RETURN ret = ENUM_CM_FALSE; /* 临时变量 */
PFM_LOG_SET_STOPTIMER(TSCP_DARK_2x2); PFM_LOG_SET_STOPTIMER(TSCP_DARK_2x2);
/*- 以太网循环接收2x2数据 */ /*- 以太网循环接收2x2数据 */
if(CM_TRUE == s_2x2_Ctrl.TimeSyncFlag) if(CM_TRUE == CFM_GetTimeSyncFlag())
{ {
do do
{ {
@@ -2635,6 +2636,7 @@ void SFM_2x2_EndProc(void)
CM_UINT8 type = 0u; /*接收到的跟随数据类型 1 CRC 2 全数据*/ CM_UINT8 type = 0u; /*接收到的跟随数据类型 1 CRC 2 全数据*/
static CM_UINT8 debounce = 0u; /*防抖计数*/ static CM_UINT8 debounce = 0u; /*防抖计数*/
CM_UINT8 SendFollowDataType = 0u; CM_UINT8 SendFollowDataType = 0u;
CM_UINT32 i = 0u;
if(ENUM_4x2_MASTER == stat) if(ENUM_4x2_MASTER == stat)
@@ -2643,6 +2645,7 @@ void SFM_2x2_EndProc(void)
curTickTest[0] = CM_GetTick(); curTickTest[0] = CM_GetTick();
/* 条件 本地对系是备或者宕机 && 对地A是备或者宕机 && 对地B是备或者宕机*/ /* 条件 本地对系是备或者宕机 && 对地A是备或者宕机 && 对地B是备或者宕机*/
SendFollowDataType = SFM_GetAppFollowType(); SendFollowDataType = SFM_GetAppFollowType();
SendFollowDataType = 0;
if(1u == SendFollowDataType) if(1u == SendFollowDataType)
{ {
/*- 发送跟随数据 */ /*- 发送跟随数据 */
@@ -2696,14 +2699,20 @@ void SFM_2x2_EndProc(void)
{ {
/*- 是否收到了最新的应用跟随数据 */ /*- 是否收到了最新的应用跟随数据 */
/*- 调用应用API覆盖应用关键数据 */ /*- 调用应用API覆盖应用关键数据 */
//retFollowUp = APP_API_FollowUp(g_RxAppFollow, (CM_UINT32)g_RxAppFollow_len); //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); //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;
}
s_2x2_Ctrl.AppFollowCmpFailFlag = 0u; s_2x2_Ctrl.AppFollowCmpFailFlag = 0u;
} }
else else
{ {
MSCP_LOG_MSG("no follow data\n"); MSCP_LOG_MSG("no follow data\n");
} }
curTickTest[1] = CM_GetTick();
} }
else else
{ {