[9.2] 9.2首版首轮代码,基线版本
This commit is contained in:
@@ -239,7 +239,7 @@ void APP_API_Data_Init()
|
||||
.M_InnetSafe_Enable = 0x55, /**< 内网安全通信功能开关 */
|
||||
.M_InnetRaw_Enable = 0xAA, /**< 内网透传通信功能开关 */
|
||||
.M_OutnetSafe_Enable = 0x55,/**< 外网安全通信功能开关 */
|
||||
.M_OutnetRaw_Enable = 0xAA, /**< 外网透传通信功能开关 */
|
||||
.M_OutnetRaw_Enable = 0x55, /**< 外网透传通信功能开关 */
|
||||
.M_CpuUsageGet_Enable = 0xAA,/**< 获取cpu使用率功能开关 */
|
||||
.M_RemoteUpdate_Enable = 0x55,/**< 远程部署内网安全通信功能开关 */
|
||||
.ID_Maintenance = DEVICE_TYPE_AIM,
|
||||
|
||||
@@ -84,7 +84,7 @@ int eeprom_read_data(int fd, uint32_t regaddr, uint8_t rx_buf[],uint32_t len,uin
|
||||
|
||||
if(ret > 0)
|
||||
{
|
||||
|
||||
perror("eeprom read i2c error ");
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
CM_CHAR FS_FILE_PATH[100];
|
||||
|
||||
/** 平台软件版本号 */
|
||||
const CM_UINT8 MSCP_SW_VERION[4] = { 93u, 1u, 1u, 51u };
|
||||
const CM_UINT8 MSCP_SW_VERION[4] = { 93u, 1u, 1u, 52u };
|
||||
/** 驱动软件版本号 */
|
||||
CM_UINT8 MSCP_DRV_VERION[4] = {0};
|
||||
/** 与维护一体机接口文档版本号(接口文档发生改变时升级版本号) */
|
||||
|
||||
@@ -570,8 +570,6 @@ void PFM_InputProc(void)
|
||||
s_RxOutnetToSFM(g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_OutnetSafe].p_rmt_mine_buf, g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_OutnetSafe].rmt_mine_len);
|
||||
PFM_CFC_Check(43);
|
||||
s_RxOutnetToSFM(g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_OutnetSafe].p_rmt_peer_buf, g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_OutnetSafe].rmt_peer_len);
|
||||
(void)CM_Memcpy(g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_OutnetRaw].p_mine_buf, g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_OutnetRaw].buf_size, g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_OutnetRaw].p_rmt_mine_buf, g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_OutnetRaw].rmt_mine_len);
|
||||
(void)CM_Memcpy(g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_OutnetRaw].p_peer_buf, g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_OutnetRaw].buf_size, g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_OutnetRaw].p_rmt_peer_buf, g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_OutnetRaw].rmt_peer_len);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -605,8 +603,7 @@ void PFM_InputProc(void)
|
||||
s_RxOutnetToSFM(g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_OutnetSafe].p_rmt_peer_buf, g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_OutnetSafe].rmt_peer_len);
|
||||
PFM_CFC_Check(43);
|
||||
s_RxOutnetToSFM(g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_OutnetSafe].p_rmt_mine_buf, g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_OutnetSafe].rmt_mine_len);
|
||||
(void)CM_Memcpy(g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_OutnetRaw].p_mine_buf, g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_OutnetRaw].buf_size, g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_OutnetRaw].p_rmt_mine_buf, g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_OutnetRaw].rmt_mine_len);
|
||||
(void)CM_Memcpy(g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_OutnetRaw].p_peer_buf, g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_OutnetRaw].buf_size, g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_OutnetRaw].p_rmt_peer_buf, g_2x2oo2_rx[g_2x2oo2_base][s_2x2oo2_OutnetRaw].rmt_peer_len);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1021,44 +1018,67 @@ CM_UINT32 PFM_OutnetRaw_AppRecv(OUT CM_UINT8* rxBuf, IN CM_UINT32 rxSize)
|
||||
CM_UINT32 msgLen = 0u; /* 消息长度 */
|
||||
CM_UINT32 rt = 0u; /* 函数返回值 */
|
||||
ENUM_CM_RETURN ret = ENUM_CM_FALSE;
|
||||
ENUM_2x2_STATE_T state_2x2 = SFM_2x2_GetLastPartner2x2State(); /*获取上周期对系热备状态*/
|
||||
g_2x2oo2_rx[s_2x2oo2_app][s_2x2oo2_OutnetRaw].app_index_log++;/*记录应用调用次数,每周期清零*/
|
||||
CM_UINT8 *p_Mine_Buf = NULL;
|
||||
CM_UINT32 Mine_len = 0u;
|
||||
CM_UINT8 *p_Peer_Buf = NULL;
|
||||
CM_UINT32 Peer_len = 0u;
|
||||
CM_MUTEX_T *p_mutex = NULL;
|
||||
/*根据主备状态分配缓冲区 */
|
||||
if(ENUM_2x2_MASTER != state_2x2)
|
||||
{
|
||||
p_Mine_Buf = g_2x2oo2_rx[s_2x2oo2_app][s_2x2oo2_OutnetRaw].p_mine_buf;
|
||||
Mine_len = g_2x2oo2_rx[s_2x2oo2_app][s_2x2oo2_OutnetRaw].mine_len;
|
||||
p_Peer_Buf = g_2x2oo2_rx[s_2x2oo2_app][s_2x2oo2_OutnetRaw].p_peer_buf;
|
||||
Peer_len = g_2x2oo2_rx[s_2x2oo2_app][s_2x2oo2_OutnetRaw].peer_len;
|
||||
p_mutex = &g_2x2oo2_rx[s_2x2oo2_app][s_2x2oo2_OutnetRaw].app_mutex;
|
||||
}
|
||||
else
|
||||
{
|
||||
p_Mine_Buf = g_2x2oo2_rx[s_2x2oo2_app][s_2x2oo2_OutnetRaw].p_rmt_mine_buf;
|
||||
Mine_len = g_2x2oo2_rx[s_2x2oo2_app][s_2x2oo2_OutnetRaw].rmt_mine_len;
|
||||
p_Peer_Buf = g_2x2oo2_rx[s_2x2oo2_app][s_2x2oo2_OutnetRaw].p_rmt_peer_buf;
|
||||
Peer_len = g_2x2oo2_rx[s_2x2oo2_app][s_2x2oo2_OutnetRaw].rmt_peer_len;
|
||||
p_mutex = &g_2x2oo2_rx[s_2x2oo2_app][s_2x2oo2_OutnetRaw].app_mutex;
|
||||
}
|
||||
/*- 入参检查 */
|
||||
CM_ASSERT(NULL != rxBuf, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_21);
|
||||
CM_ASSERT(((NULL != rxBuf) && (NULL != p_Mine_Buf) && (NULL != p_Peer_Buf) && (NULL != p_mutex)) , IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_21);
|
||||
/*- 自己是否是CPU1 */
|
||||
if (1u == g_PFM_Cfg.CPU_ID)
|
||||
{
|
||||
/*- 本机通道是否有数据未取走 */
|
||||
if ((s_OutnetRaw_Mine_AppReadIndex + 4u) <= (CM_UINT32)(g_2x2oo2_rx[s_2x2oo2_app][s_2x2oo2_OutnetRaw].mine_len))
|
||||
if ((s_OutnetRaw_Mine_AppReadIndex + 4u) <= (CM_UINT32)Mine_len)
|
||||
{
|
||||
msgLen = CM_LongFromChar(g_2x2oo2_rx[s_2x2oo2_app][s_2x2oo2_OutnetRaw].p_mine_buf + s_OutnetRaw_Mine_AppReadIndex);
|
||||
msgLen = CM_LongFromChar(p_Mine_Buf + s_OutnetRaw_Mine_AppReadIndex);
|
||||
CM_RE_ASSERT(msgLen > 0u, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_1);
|
||||
CM_RE_ASSERT((s_OutnetRaw_Mine_AppReadIndex + 4u + msgLen) <= (CM_UINT32)g_2x2oo2_rx[s_2x2oo2_app][s_2x2oo2_OutnetRaw].mine_len, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_2);
|
||||
CM_RE_ASSERT((s_OutnetRaw_Mine_AppReadIndex + 4u + msgLen) <= (CM_UINT32)Mine_len, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_2);
|
||||
CM_RE_ASSERT((msgLen) <= rxSize, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_3);
|
||||
rt = msgLen;
|
||||
/*- 锁定接收通道 */
|
||||
ret = CM_Mutex_Lock(g_2x2oo2_rx[s_2x2oo2_app][s_2x2oo2_OutnetRaw].app_mutex);
|
||||
CM_RE_ASSERT(ENUM_CM_TRUE == ret, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_4);
|
||||
(void)CM_Memcpy((void*)rxBuf, (CM_SIZE_T)rxSize, (void*)(g_2x2oo2_rx[s_2x2oo2_app][s_2x2oo2_OutnetRaw].p_mine_buf + s_OutnetRaw_Mine_AppReadIndex + 4u), (CM_SIZE_T)(msgLen));
|
||||
ret = CM_Mutex_Lock(*p_mutex);
|
||||
CM_RE_ASSERT(ENUM_CM_TRUE == ret, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_4);
|
||||
(void)CM_Memcpy((void*)rxBuf, (CM_SIZE_T)rxSize, (void*)(p_Mine_Buf + s_OutnetRaw_Mine_AppReadIndex + 4u), (CM_SIZE_T)(msgLen));
|
||||
/*- 解锁接收通道 */
|
||||
ret = CM_Mutex_Unlock(g_2x2oo2_rx[s_2x2oo2_app][s_2x2oo2_OutnetRaw].app_mutex);
|
||||
CM_RE_ASSERT(ENUM_CM_TRUE == ret, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_5);
|
||||
ret = CM_Mutex_Unlock(*p_mutex);
|
||||
CM_RE_ASSERT(ENUM_CM_TRUE == ret, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_5);
|
||||
s_OutnetRaw_Mine_AppReadIndex += (CM_UINT32)msgLen + 4u;
|
||||
}
|
||||
/*- 邻机通道是否有数据未取走 */
|
||||
else if ((s_OutnetRaw_Peer_AppReadIndex + 4u) < (CM_UINT32)g_2x2oo2_rx[s_2x2oo2_app][s_2x2oo2_OutnetRaw].peer_len)
|
||||
else if ((s_OutnetRaw_Peer_AppReadIndex + 4u) < (CM_UINT32)Peer_len)
|
||||
{
|
||||
msgLen = CM_LongFromChar(g_2x2oo2_rx[s_2x2oo2_app][s_2x2oo2_OutnetRaw].p_peer_buf + s_OutnetRaw_Peer_AppReadIndex);
|
||||
msgLen = CM_LongFromChar(p_Peer_Buf + s_OutnetRaw_Peer_AppReadIndex);
|
||||
CM_RE_ASSERT(msgLen > 0u, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_6);
|
||||
CM_RE_ASSERT((s_OutnetRaw_Peer_AppReadIndex + 4u + msgLen) <= (CM_UINT32)g_2x2oo2_rx[s_2x2oo2_app][s_2x2oo2_OutnetRaw].peer_len, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_7);
|
||||
CM_RE_ASSERT((s_OutnetRaw_Peer_AppReadIndex + 4u + msgLen) <= (CM_UINT32)Peer_len, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_7);
|
||||
CM_RE_ASSERT((msgLen) <= rxSize, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_8);
|
||||
rt = msgLen;
|
||||
/*- 锁定接收通道 */
|
||||
ret = CM_Mutex_Lock(g_2x2oo2_rx[s_2x2oo2_app][s_2x2oo2_OutnetRaw].app_mutex);
|
||||
CM_RE_ASSERT(ENUM_CM_TRUE == ret, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_9);
|
||||
(void)CM_Memcpy((void*)rxBuf, (CM_SIZE_T)rxSize, (void*)(g_2x2oo2_rx[s_2x2oo2_app][s_2x2oo2_OutnetRaw].p_peer_buf + s_OutnetRaw_Peer_AppReadIndex + 4u), (CM_SIZE_T)(msgLen));
|
||||
ret = CM_Mutex_Lock(*p_mutex);
|
||||
CM_RE_ASSERT(ENUM_CM_TRUE == ret, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_9);
|
||||
(void)CM_Memcpy((void*)rxBuf, (CM_SIZE_T)rxSize, (void*)(p_Peer_Buf + s_OutnetRaw_Peer_AppReadIndex + 4u), (CM_SIZE_T)(msgLen));
|
||||
/*- 解锁接收通道 */
|
||||
ret = CM_Mutex_Unlock(g_2x2oo2_rx[s_2x2oo2_app][s_2x2oo2_OutnetRaw].app_mutex);
|
||||
CM_RE_ASSERT(ENUM_CM_TRUE == ret, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_10);
|
||||
ret = CM_Mutex_Unlock(*p_mutex);
|
||||
CM_RE_ASSERT(ENUM_CM_TRUE == ret, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_10);
|
||||
s_OutnetRaw_Peer_AppReadIndex += (CM_UINT32)msgLen + 4u;
|
||||
}
|
||||
else
|
||||
@@ -1071,38 +1091,38 @@ CM_UINT32 PFM_OutnetRaw_AppRecv(OUT CM_UINT8* rxBuf, IN CM_UINT32 rxSize)
|
||||
{
|
||||
|
||||
/*- 邻机通道是否有数据未取走 */
|
||||
if ((s_OutnetRaw_Peer_AppReadIndex + 4u) < (CM_UINT32)g_2x2oo2_rx[s_2x2oo2_app][s_2x2oo2_OutnetRaw].peer_len)
|
||||
if ((s_OutnetRaw_Peer_AppReadIndex + 4u) < (CM_UINT32)Peer_len)
|
||||
{
|
||||
msgLen = CM_LongFromChar(g_2x2oo2_rx[s_2x2oo2_app][s_2x2oo2_OutnetRaw].p_peer_buf + s_OutnetRaw_Peer_AppReadIndex);
|
||||
msgLen = CM_LongFromChar(p_Peer_Buf + s_OutnetRaw_Peer_AppReadIndex);
|
||||
CM_RE_ASSERT(msgLen > 0u, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_11);
|
||||
CM_RE_ASSERT((s_OutnetRaw_Peer_AppReadIndex + 4u + msgLen) <= (CM_UINT32)g_2x2oo2_rx[s_2x2oo2_app][s_2x2oo2_OutnetRaw].peer_len, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_12);
|
||||
CM_RE_ASSERT((s_OutnetRaw_Peer_AppReadIndex + 4u + msgLen) <= (CM_UINT32)Peer_len, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_12);
|
||||
CM_RE_ASSERT((msgLen) <= rxSize, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_13);
|
||||
rt = msgLen;
|
||||
/*- 锁定接收通道 */
|
||||
ret = CM_Mutex_Lock(g_2x2oo2_rx[s_2x2oo2_app][s_2x2oo2_OutnetRaw].app_mutex);
|
||||
CM_RE_ASSERT(ENUM_CM_TRUE == ret, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_14);
|
||||
(void)CM_Memcpy((void*)rxBuf, (CM_SIZE_T)rxSize, (void*)(g_2x2oo2_rx[s_2x2oo2_app][s_2x2oo2_OutnetRaw].p_peer_buf + s_OutnetRaw_Peer_AppReadIndex + 4u), (CM_SIZE_T)(msgLen));
|
||||
ret = CM_Mutex_Lock(*p_mutex);
|
||||
CM_RE_ASSERT(ENUM_CM_TRUE == ret, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_14);
|
||||
(void)CM_Memcpy((void*)rxBuf, (CM_SIZE_T)rxSize, (void*)(p_Peer_Buf + s_OutnetRaw_Peer_AppReadIndex + 4u), (CM_SIZE_T)(msgLen));
|
||||
/*- 解锁接收通道 */
|
||||
ret = CM_Mutex_Unlock(g_2x2oo2_rx[s_2x2oo2_app][s_2x2oo2_OutnetRaw].app_mutex);
|
||||
CM_RE_ASSERT(ENUM_CM_TRUE == ret, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_15);
|
||||
ret = CM_Mutex_Unlock(*p_mutex);
|
||||
CM_RE_ASSERT(ENUM_CM_TRUE == ret, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_15);
|
||||
s_OutnetRaw_Peer_AppReadIndex += (CM_UINT32)msgLen + 4u;
|
||||
|
||||
}
|
||||
/*- 本机通道是否有数据未取走 */
|
||||
else if ((s_OutnetRaw_Mine_AppReadIndex + 4u) <= (CM_UINT32)(g_2x2oo2_rx[s_2x2oo2_app][s_2x2oo2_OutnetRaw].mine_len))
|
||||
else if ((s_OutnetRaw_Mine_AppReadIndex + 4u) <= (CM_UINT32)Mine_len)
|
||||
{
|
||||
msgLen = CM_LongFromChar(g_2x2oo2_rx[s_2x2oo2_app][s_2x2oo2_OutnetRaw].p_mine_buf + s_OutnetRaw_Mine_AppReadIndex);
|
||||
msgLen = CM_LongFromChar(p_Mine_Buf + s_OutnetRaw_Mine_AppReadIndex);
|
||||
CM_RE_ASSERT(msgLen > 0u, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_16);
|
||||
CM_RE_ASSERT((s_OutnetRaw_Mine_AppReadIndex + 4u + msgLen) <= (CM_UINT32)g_2x2oo2_rx[s_2x2oo2_app][s_2x2oo2_OutnetRaw].mine_len, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_17);
|
||||
CM_RE_ASSERT((s_OutnetRaw_Mine_AppReadIndex + 4u + msgLen) <= (CM_UINT32)Mine_len, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_17);
|
||||
CM_RE_ASSERT((msgLen) <= rxSize, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_18);
|
||||
rt = msgLen;
|
||||
/*- 锁定接收通道 */
|
||||
ret = CM_Mutex_Lock(g_2x2oo2_rx[s_2x2oo2_app][s_2x2oo2_OutnetRaw].app_mutex);
|
||||
CM_RE_ASSERT(ENUM_CM_TRUE == ret, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_19);
|
||||
(void)CM_Memcpy((void*)rxBuf, (CM_SIZE_T)rxSize, (void*)(g_2x2oo2_rx[s_2x2oo2_app][s_2x2oo2_OutnetRaw].p_mine_buf + s_OutnetRaw_Mine_AppReadIndex + 4u), (CM_SIZE_T)(msgLen));
|
||||
ret = CM_Mutex_Lock(*p_mutex);
|
||||
CM_RE_ASSERT(ENUM_CM_TRUE == ret, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_19);
|
||||
(void)CM_Memcpy((void*)rxBuf, (CM_SIZE_T)rxSize, (void*)(p_Mine_Buf + s_OutnetRaw_Mine_AppReadIndex + 4u), (CM_SIZE_T)(msgLen));
|
||||
/*- 解锁接收通道 */
|
||||
ret = CM_Mutex_Unlock(g_2x2oo2_rx[s_2x2oo2_app][s_2x2oo2_OutnetRaw].app_mutex);
|
||||
CM_RE_ASSERT(ENUM_CM_TRUE == ret, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_20);
|
||||
ret = CM_Mutex_Unlock(*p_mutex);
|
||||
CM_RE_ASSERT(ENUM_CM_TRUE == ret, IN_OUT_MODE, DARK_FAULT_CODE_FUN_ORDER_8, TSCP_DARK_ASSERT_20);
|
||||
s_OutnetRaw_Mine_AppReadIndex += (CM_UINT32)msgLen + 4u;
|
||||
|
||||
}
|
||||
@@ -1110,7 +1130,6 @@ CM_UINT32 PFM_OutnetRaw_AppRecv(OUT CM_UINT8* rxBuf, IN CM_UINT32 rxSize)
|
||||
{
|
||||
/*- 双网都取完了,返回true */
|
||||
}
|
||||
|
||||
}
|
||||
/*- 返回接收结果 */
|
||||
/* MSCP_LOG_MSG("PFM_OutnetRaw_AppRecv msgLen =%d\n",msgLen); */
|
||||
|
||||
@@ -1178,7 +1178,7 @@ ENUM_CM_RETURN PFM_DevStateSend(CM_UINT8 ifCyc)
|
||||
txLen = offset - 2u;
|
||||
CM_ShortToChar(txLen, &txBuf[0]);
|
||||
ret = Prtcl_InnetSafe_RmSend(dstName, txBuf, offset);
|
||||
MSCP_LOG_MSG("offset = %d\n",offset);
|
||||
MSCP_LOG_MSG("offset = %d send ret =%d\n",offset, ret);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1192,7 +1192,7 @@ ENUM_CM_RETURN PFM_DevStateSend(CM_UINT8 ifCyc)
|
||||
rxLen = offset - 2u;
|
||||
CM_ShortToChar(rxLen, &rxBuf[0]);
|
||||
ret = Prtcl_InnetSafe_RmSend(dstName, rxBuf, offset);
|
||||
MSCP_LOG_MSG("offset = %d\n",offset);
|
||||
MSCP_LOG_MSG("offset = %d send ret = %d\n",offset, ret);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
+170
-85
@@ -119,6 +119,45 @@ static void SFM_2x2_Input2oo2Exchange(STRU_2X2_CTRL_T *peerCtrl);
|
||||
/* 判断2x422以及以太网的通信状况并且填写暗文日志 */
|
||||
static void SFM_2x2_Eth422StateDark(void);
|
||||
|
||||
/* 输入周期号同步函数 */
|
||||
static void SFM_2x2_InputSysCycSyn(STRU_2X2_CTRL_T *peerCtrl){
|
||||
if(s_2x2_Ctrl.RxInputSysCyc > peerCtrl->RxInputSysCyc)
|
||||
{
|
||||
/*- 更新临机输入同步周期号*/
|
||||
peerCtrl->RxInputSysCyc = s_2x2_Ctrl.RxInputSysCyc;
|
||||
}
|
||||
else if(s_2x2_Ctrl.RxInputSysCyc < peerCtrl->RxInputSysCyc)
|
||||
{
|
||||
/*- 更新本机输入同步周期号*/
|
||||
s_2x2_Ctrl.RxInputSysCyc = peerCtrl->RxInputSysCyc;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*- 周期号相同 不做修改*/;
|
||||
}
|
||||
}
|
||||
|
||||
/* 跟随数据同步*/
|
||||
static CM_INT32 SFM_2x2_BaseFollowSyn(STRU_2X2_CTRL_T *peerCtrl){
|
||||
CM_INT32 ret = 0;
|
||||
if (s_2x2_Ctrl.RxBaseFollowSysCyc > peerCtrl->RxBaseFollowSysCyc)
|
||||
{
|
||||
/*需要向邻机发送跟随数据*/
|
||||
ret = SFM_2oo2_Exchange_Currency(g_RxBaseFollow, g_RxBaseFollow_len, g_RxBaseFollow, (CM_UINT32)0, ENUM_2oo2_INPUT_EX);/*通过输入"0"防止g_RxFollow被修改*/
|
||||
}
|
||||
else if (s_2x2_Ctrl.RxBaseFollowSysCyc < peerCtrl->RxBaseFollowSysCyc)
|
||||
{
|
||||
/*需要从邻机接收跟随数据*/
|
||||
g_RxBaseFollow_len = SFM_2oo2_Exchange_Currency(g_RxBaseFollow, (CM_INT32)0, g_RxBaseFollow, (CM_UINT32)sizeof(g_RxBaseFollow), ENUM_2oo2_INPUT_EX);/*通过输入"0"实现只收不发*/
|
||||
s_2x2_Ctrl.RxBaseFollowSysCyc = peerCtrl->RxBaseFollowSysCyc;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* 无需处理 */
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 切系按钮监督
|
||||
* @return 无
|
||||
@@ -2237,41 +2276,16 @@ void SFM_2x2_InputProc(void)
|
||||
/*- @alias 系内同步Rx输入信息状态,用来过滤老的输入数据,并且将新的数据进行2oo2交换*/
|
||||
SFM_2x2_Input2oo2Exchange(&peerCtrl);
|
||||
/*- 跟新输入同步周期号*/
|
||||
if(s_2x2_Ctrl.RxInputSysCyc > peerCtrl.RxInputSysCyc)
|
||||
{
|
||||
/*- 更新临机输入同步周期号*/
|
||||
peerCtrl.RxInputSysCyc = s_2x2_Ctrl.RxInputSysCyc;
|
||||
}
|
||||
else if(s_2x2_Ctrl.RxInputSysCyc < peerCtrl.RxInputSysCyc)
|
||||
{
|
||||
/*- 更新本机输入同步周期号*/
|
||||
s_2x2_Ctrl.RxInputSysCyc = peerCtrl.RxInputSysCyc;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*- 周期号相同 不做修改*/;
|
||||
}
|
||||
SFM_2x2_InputSysCycSyn(&peerCtrl);
|
||||
|
||||
|
||||
/*- 更新控制流状态 */
|
||||
PFM_CFC_Check(37);
|
||||
/* (这个数据量很大,只在必要时同步) */
|
||||
/*- @alias 系内同步Rx跟随数据*/
|
||||
if (s_2x2_Ctrl.RxBaseFollowSysCyc > peerCtrl.RxBaseFollowSysCyc)
|
||||
{
|
||||
/*需要向邻机发送跟随数据*/
|
||||
ret = SFM_2oo2_Exchange_Currency(g_RxBaseFollow, g_RxBaseFollow_len, g_RxBaseFollow, (CM_UINT32)0, ENUM_2oo2_INPUT_EX);/*通过输入"0"防止g_RxFollow被修改*/
|
||||
CM_RE_ASSERT(0 == ret, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_7, TSCP_DARK_ASSERT_1);
|
||||
}
|
||||
else if (s_2x2_Ctrl.RxBaseFollowSysCyc < peerCtrl.RxBaseFollowSysCyc)
|
||||
{
|
||||
/*需要从邻机接收跟随数据*/
|
||||
g_RxBaseFollow_len = SFM_2oo2_Exchange_Currency(g_RxBaseFollow, (CM_INT32)0, g_RxBaseFollow, (CM_UINT32)sizeof(g_RxBaseFollow), ENUM_2oo2_INPUT_EX);/*通过输入"0"实现只收不发*/
|
||||
s_2x2_Ctrl.RxBaseFollowSysCyc = peerCtrl.RxBaseFollowSysCyc;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* 无需处理 */
|
||||
}
|
||||
ret = SFM_2x2_BaseFollowSyn(&peerCtrl);
|
||||
CM_RE_ASSERT(0 == ret, SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_7, TSCP_DARK_ASSERT_1);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2995,71 +3009,142 @@ static void SFM_2x2_Input2oo2Exchange(STRU_2X2_CTRL_T *peerCtrl)
|
||||
CM_UINT32 i = 0u;
|
||||
CM_INT32 len = 0;
|
||||
|
||||
/*- @alias 系内交换输入数据 */
|
||||
for (i = 1u; i <= g_2x2oo2_data_num; i++)
|
||||
if (g_PFM_Cfg.CPU_ID == 1u)
|
||||
{
|
||||
if(CM_TRUE == g_2x2oo2_rx[g_2x2oo2_base][i].b_2x2_Enable)
|
||||
/*- @alias 系内交换输入数据 */
|
||||
for (i = 1u; i <= g_2x2oo2_data_num; i++)
|
||||
{
|
||||
MSCP_LOG_MSG("SFM_2x2_Input2oo2Exchange-CPU1[%d]:[M0:%d,P1:%d][M1:%d,P0:%d]\r\n",i,s_2x2_Ctrl.InPutDoublePassLen[i][0],peerCtrl->InPutDoublePassLen[i][1],s_2x2_Ctrl.InPutDoublePassLen[i][1],peerCtrl->InPutDoublePassLen[i][0]);
|
||||
/*本机数据交互*/
|
||||
if(s_2x2_Ctrl.InPutDoublePassLen[i][0] < peerCtrl->InPutDoublePassLen[i][1])
|
||||
if(CM_TRUE == g_2x2oo2_rx[g_2x2oo2_base][i].b_2x2_Enable)
|
||||
{
|
||||
/*接收对方数据,自己发送长度为0*/
|
||||
g_2x2oo2_rx[g_2x2oo2_base][i].rmt_mine_len = SFM_2oo2_Exchange_Currency(
|
||||
g_2x2oo2_rx[g_2x2oo2_base][i].p_rmt_mine_buf,
|
||||
0,
|
||||
g_2x2oo2_rx[g_2x2oo2_base][i].p_rmt_mine_buf,
|
||||
g_2x2oo2_rx[g_2x2oo2_base][i].buf_size,
|
||||
ENUM_2oo2_INPUT_EX);
|
||||
}
|
||||
else if(s_2x2_Ctrl.InPutDoublePassLen[i][0] > peerCtrl->InPutDoublePassLen[i][1])
|
||||
{
|
||||
/*- 向邻机发送数据,本机不接收,传入接收长度为0*/
|
||||
len = SFM_2oo2_Exchange_Currency(
|
||||
g_2x2oo2_rx[g_2x2oo2_base][i].p_rmt_mine_buf,
|
||||
g_2x2oo2_rx[g_2x2oo2_base][i].rmt_mine_len,
|
||||
g_2x2oo2_rx[g_2x2oo2_base][i].p_rmt_mine_buf,
|
||||
0,
|
||||
ENUM_2oo2_INPUT_EX);
|
||||
CM_RE_ASSERT((0 == len), SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_14, TSCP_DARK_ASSERT_1);
|
||||
MSCP_LOG_MSG("SFM_2x2_Input2oo2Exchange-CPU1[%d]:[M0:%d,P1:%d][M1:%d,P0:%d]\r\n",i,s_2x2_Ctrl.InPutDoublePassLen[i][0],peerCtrl->InPutDoublePassLen[i][1],s_2x2_Ctrl.InPutDoublePassLen[i][1],peerCtrl->InPutDoublePassLen[i][0]);
|
||||
/*本机数据交互*/
|
||||
if(s_2x2_Ctrl.InPutDoublePassLen[i][0] < peerCtrl->InPutDoublePassLen[i][1])
|
||||
{
|
||||
/*接收对方数据,自己发送长度为0*/
|
||||
g_2x2oo2_rx[g_2x2oo2_base][i].rmt_mine_len = SFM_2oo2_Exchange_Currency(
|
||||
g_2x2oo2_rx[g_2x2oo2_base][i].p_rmt_mine_buf,
|
||||
0,
|
||||
g_2x2oo2_rx[g_2x2oo2_base][i].p_rmt_mine_buf,
|
||||
g_2x2oo2_rx[g_2x2oo2_base][i].buf_size,
|
||||
ENUM_2oo2_INPUT_EX);
|
||||
}
|
||||
else if(s_2x2_Ctrl.InPutDoublePassLen[i][0] > peerCtrl->InPutDoublePassLen[i][1])
|
||||
{
|
||||
/*- 向邻机发送数据,本机不接收,传入接收长度为0*/
|
||||
len = SFM_2oo2_Exchange_Currency(
|
||||
g_2x2oo2_rx[g_2x2oo2_base][i].p_rmt_mine_buf,
|
||||
g_2x2oo2_rx[g_2x2oo2_base][i].rmt_mine_len,
|
||||
g_2x2oo2_rx[g_2x2oo2_base][i].p_rmt_mine_buf,
|
||||
0,
|
||||
ENUM_2oo2_INPUT_EX);
|
||||
CM_RE_ASSERT((0 == len), SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_14, TSCP_DARK_ASSERT_1);
|
||||
}
|
||||
else
|
||||
{
|
||||
/*等于不交互,包括0*/
|
||||
}
|
||||
/*邻机数据交互*/
|
||||
if(s_2x2_Ctrl.InPutDoublePassLen[i][1] < peerCtrl->InPutDoublePassLen[i][0])
|
||||
{
|
||||
/*接收对方数据,自己发送长度为0*/
|
||||
g_2x2oo2_rx[g_2x2oo2_base][i].rmt_peer_len = SFM_2oo2_Exchange_Currency(
|
||||
g_2x2oo2_rx[g_2x2oo2_base][i].p_rmt_peer_buf,
|
||||
0,
|
||||
g_2x2oo2_rx[g_2x2oo2_base][i].p_rmt_peer_buf,
|
||||
g_2x2oo2_rx[g_2x2oo2_base][i].buf_size,
|
||||
ENUM_2oo2_INPUT_EX);
|
||||
}
|
||||
else if(s_2x2_Ctrl.InPutDoublePassLen[i][1] > peerCtrl->InPutDoublePassLen[i][0])
|
||||
{
|
||||
/*- 向邻机发送数据,本机不接收,传入接收长度为0*/
|
||||
len = SFM_2oo2_Exchange_Currency(
|
||||
g_2x2oo2_rx[g_2x2oo2_base][i].p_rmt_peer_buf,
|
||||
g_2x2oo2_rx[g_2x2oo2_base][i].rmt_peer_len,
|
||||
g_2x2oo2_rx[g_2x2oo2_base][i].p_rmt_peer_buf,
|
||||
0,
|
||||
ENUM_2oo2_INPUT_EX);
|
||||
CM_RE_ASSERT((0 == len), SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_14, TSCP_DARK_ASSERT_1);
|
||||
}
|
||||
else
|
||||
{
|
||||
/*等于不交互,包括0*/
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*等于不交互,包括0*/
|
||||
}
|
||||
/*邻机数据交互*/
|
||||
if(s_2x2_Ctrl.InPutDoublePassLen[i][1] < peerCtrl->InPutDoublePassLen[i][0])
|
||||
{
|
||||
/*接收对方数据,自己发送长度为0*/
|
||||
g_2x2oo2_rx[g_2x2oo2_base][i].rmt_peer_len = SFM_2oo2_Exchange_Currency(
|
||||
g_2x2oo2_rx[g_2x2oo2_base][i].p_rmt_peer_buf,
|
||||
0,
|
||||
g_2x2oo2_rx[g_2x2oo2_base][i].p_rmt_peer_buf,
|
||||
g_2x2oo2_rx[g_2x2oo2_base][i].buf_size,
|
||||
ENUM_2oo2_INPUT_EX);
|
||||
}
|
||||
else if(s_2x2_Ctrl.InPutDoublePassLen[i][1] > peerCtrl->InPutDoublePassLen[i][0])
|
||||
{
|
||||
/*- 向邻机发送数据,本机不接收,传入接收长度为0*/
|
||||
len = SFM_2oo2_Exchange_Currency(
|
||||
g_2x2oo2_rx[g_2x2oo2_base][i].p_rmt_peer_buf,
|
||||
g_2x2oo2_rx[g_2x2oo2_base][i].rmt_peer_len,
|
||||
g_2x2oo2_rx[g_2x2oo2_base][i].p_rmt_peer_buf,
|
||||
0,
|
||||
ENUM_2oo2_INPUT_EX);
|
||||
CM_RE_ASSERT((0 == len), SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_14, TSCP_DARK_ASSERT_1);
|
||||
}
|
||||
else
|
||||
{
|
||||
/*等于不交互,包括0*/
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*- @alias 系内交换输入数据 */
|
||||
for (i = 1u; i <= g_2x2oo2_data_num; i++)
|
||||
{
|
||||
if(CM_TRUE == g_2x2oo2_rx[g_2x2oo2_base][i].b_2x2_Enable)
|
||||
{
|
||||
MSCP_LOG_MSG("SFM_2x2_Input2oo2Exchange-CPU2[%d]:[M1:%d,P0:%d][M0:%d,P1:%d]\r\n",i,s_2x2_Ctrl.InPutDoublePassLen[i][1],peerCtrl->InPutDoublePassLen[i][0],s_2x2_Ctrl.InPutDoublePassLen[i][0],peerCtrl->InPutDoublePassLen[i][1]);
|
||||
/*邻机数据交互*/
|
||||
if(peerCtrl->InPutDoublePassLen[i][0] < s_2x2_Ctrl.InPutDoublePassLen[i][1])
|
||||
{
|
||||
/*- 向邻机发送数据,本机不接收,传入接收长度为0*/
|
||||
len = SFM_2oo2_Exchange_Currency(
|
||||
g_2x2oo2_rx[g_2x2oo2_base][i].p_rmt_peer_buf,
|
||||
g_2x2oo2_rx[g_2x2oo2_base][i].rmt_peer_len,
|
||||
g_2x2oo2_rx[g_2x2oo2_base][i].p_rmt_peer_buf,
|
||||
0,
|
||||
ENUM_2oo2_INPUT_EX);
|
||||
CM_RE_ASSERT((0 == len), SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_14, TSCP_DARK_ASSERT_1);
|
||||
|
||||
}
|
||||
else if(peerCtrl->InPutDoublePassLen[i][0] > s_2x2_Ctrl.InPutDoublePassLen[i][1])
|
||||
{
|
||||
/*接收对方数据,自己发送长度为0*/
|
||||
g_2x2oo2_rx[g_2x2oo2_base][i].rmt_peer_len = SFM_2oo2_Exchange_Currency(
|
||||
g_2x2oo2_rx[g_2x2oo2_base][i].p_rmt_peer_buf,
|
||||
0,
|
||||
g_2x2oo2_rx[g_2x2oo2_base][i].p_rmt_peer_buf,
|
||||
g_2x2oo2_rx[g_2x2oo2_base][i].buf_size,
|
||||
ENUM_2oo2_INPUT_EX);
|
||||
}
|
||||
else
|
||||
{
|
||||
/*等于不交互,包括0*/
|
||||
}
|
||||
/*本机数据交互*/
|
||||
if(peerCtrl->InPutDoublePassLen[i][1] < s_2x2_Ctrl.InPutDoublePassLen[i][0])
|
||||
{
|
||||
/*- 向邻机发送数据,本机不接收,传入接收长度为0*/
|
||||
len = SFM_2oo2_Exchange_Currency(
|
||||
g_2x2oo2_rx[g_2x2oo2_base][i].p_rmt_mine_buf,
|
||||
g_2x2oo2_rx[g_2x2oo2_base][i].rmt_mine_len,
|
||||
g_2x2oo2_rx[g_2x2oo2_base][i].p_rmt_mine_buf,
|
||||
0,
|
||||
ENUM_2oo2_INPUT_EX);
|
||||
CM_RE_ASSERT((0 == len), SFM_2x2_MODE, DARK_FAULT_CODE_FUN_ORDER_14, TSCP_DARK_ASSERT_1);
|
||||
}
|
||||
else if(peerCtrl->InPutDoublePassLen[i][1] > s_2x2_Ctrl.InPutDoublePassLen[i][0])
|
||||
{
|
||||
/*接收对方数据,自己发送长度为0*/
|
||||
g_2x2oo2_rx[g_2x2oo2_base][i].rmt_mine_len = SFM_2oo2_Exchange_Currency(
|
||||
g_2x2oo2_rx[g_2x2oo2_base][i].p_rmt_mine_buf,
|
||||
0,
|
||||
g_2x2oo2_rx[g_2x2oo2_base][i].p_rmt_mine_buf,
|
||||
g_2x2oo2_rx[g_2x2oo2_base][i].buf_size,
|
||||
ENUM_2oo2_INPUT_EX);
|
||||
}
|
||||
else
|
||||
{
|
||||
/*等于不交互,包括0*/
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
/*- 清空所有通道长度记录*/
|
||||
(void)CM_Memset(s_2x2_Ctrl.InPutDoublePassLen,0,sizeof(s_2x2_Ctrl.InPutDoublePassLen),sizeof(s_2x2_Ctrl.InPutDoublePassLen));
|
||||
/*记录暗文日志*/
|
||||
|
||||
@@ -1506,6 +1506,7 @@ void SFM_TxInnetSafeRm(IN CM_UINT8 Buf[], IN CM_UINT32 Len)
|
||||
CM_UINT16 msgLen = 0u; /* 外网输出帧长度 */
|
||||
CM_UINT16 dstID = 0u; /* 目的设备ID */
|
||||
STRU_PFM_INNET_CFG_T* pCom = NULL;/* 通信配置 */
|
||||
ENUM_CM_RETURN ret = ENUM_CM_FALSE;
|
||||
|
||||
if ((0x55u == g_PFM_Cfg.M_RemoteUpdate_Enable) &&(0x00u != g_Maintenance_Id))
|
||||
{
|
||||
@@ -1549,13 +1550,14 @@ void SFM_TxInnetSafeRm(IN CM_UINT8 Buf[], IN CM_UINT32 Len)
|
||||
if (1u == g_PFM_Cfg.CPU_ID)
|
||||
{
|
||||
/*- 从绿网通道发送 */
|
||||
(void)CFM_InnetRemoteUpdate_Send(&Buf[i + 7u], (CM_INT32)CM_UNSIGNED_SHORT_EXP(msgLen - 5u), pCom->IP_G, pCom->Port_Safe_G); /* parasoft-suppress MISRA2004-17_1 "指针运算提高代码执行效率" */
|
||||
ret = CFM_InnetRemoteUpdate_Send(&Buf[i + 7u], (CM_INT32)CM_UNSIGNED_SHORT_EXP(msgLen - 5u), pCom->IP_G, pCom->Port_Safe_G); /* parasoft-suppress MISRA2004-17_1 "指针运算提高代码执行效率" */
|
||||
}
|
||||
else
|
||||
{
|
||||
/*- 从紫网通道发送 */
|
||||
(void)CFM_InnetRemoteUpdate_Send(&Buf[i + 7u], (CM_INT32)CM_UNSIGNED_SHORT_EXP(msgLen - 5u), pCom->IP_P, pCom->Port_Safe_P); /* parasoft-suppress MISRA2004-17_1 "指针运算提高代码执行效率" */
|
||||
ret = CFM_InnetRemoteUpdate_Send(&Buf[i + 7u], (CM_INT32)CM_UNSIGNED_SHORT_EXP(msgLen - 5u), pCom->IP_P, pCom->Port_Safe_P); /* parasoft-suppress MISRA2004-17_1 "指针运算提高代码执行效率" */
|
||||
}
|
||||
MSCP_LOG_MSG("plafm send innetsafeRm data ret = %#x\n",ret);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1564,6 +1566,7 @@ void SFM_TxInnetSafeRm(IN CM_UINT8 Buf[], IN CM_UINT32 Len)
|
||||
}
|
||||
else
|
||||
{
|
||||
MSCP_LOG_MSG("Get dest IP and port fial!\n");
|
||||
/*- 无处理*/
|
||||
}
|
||||
i += (CM_UINT32)CM_UNSIGNED_SHORT_EXP(msgLen + 2u);
|
||||
|
||||
Reference in New Issue
Block a user