diff --git a/TSCP/src/MSCP/PFM/PFM_Cfg.c b/TSCP/src/MSCP/PFM/PFM_Cfg.c index 22c14c6..7d7ef72 100644 --- a/TSCP/src/MSCP/PFM/PFM_Cfg.c +++ b/TSCP/src/MSCP/PFM/PFM_Cfg.c @@ -40,7 +40,7 @@ CM_CHAR FS_FILE_PATH[100]; /** 平台软件版本号 */ -const CM_UINT8 MSCP_SW_VERION[4] = { 93u, 1u, 1u, 63u }; +const CM_UINT8 MSCP_SW_VERION[4] = { 93u, 1u, 1u, 64u }; /** 驱动软件版本号 */ CM_UINT8 MSCP_DRV_VERION[4] = {0}; /** 与维护一体机接口文档版本号(接口文档发生改变时升级版本号) */ diff --git a/TSCP/src/MSCP/PFM/PFM_RemoteUpdate.c b/TSCP/src/MSCP/PFM/PFM_RemoteUpdate.c index 163c553..b4c64ec 100644 --- a/TSCP/src/MSCP/PFM/PFM_RemoteUpdate.c +++ b/TSCP/src/MSCP/PFM/PFM_RemoteUpdate.c @@ -1189,7 +1189,7 @@ ENUM_CM_RETURN PFM_DevStateSend(CM_UINT8 ifCyc) { dstName = g_Maintenance_Ids[i]; ret = Prtcl_InnetSafe_RmSend(dstName, txBuf, offset); - MSCP_LOG_MSG("INNET RM dst id %x offset = %d send ret =%d\n",offset, ret); + MSCP_LOG_MSG("INNET RM dst id %04x offset = %d send ret =%d\n",dstName, offset, ret); } } else @@ -1207,7 +1207,7 @@ ENUM_CM_RETURN PFM_DevStateSend(CM_UINT8 ifCyc) { dstName = g_Maintenance_Ids[i]; ret = Prtcl_InnetSafe_RmSend(dstName, rxBuf, offset); - MSCP_LOG_MSG("INNET RM dst id %x offset = %d send ret =%d\n",offset, ret); + MSCP_LOG_MSG("INNET RM dst id %04x offset = %d send ret =%d\n",dstName, offset, ret); } } } @@ -2054,7 +2054,7 @@ static void PFM_Data_HardWareReastart(CM_UINT16 srcName,CM_UINT8* mData,CM_UINT3 (void)CFM_DarkLog_Storage(DARK_LOG_HEX, TSCP_DARK_WARNING, 4U, DARK_FAULT_CODE_MERGE(REMOTE_UPDATE, DARK_FAULT_CODE_FUN_ORDER_13, TSCP_DARK_ASSERT_4)); } /*- 是否正在执行其它命令 */ - else if((0x55 == s_switch2xFlag) || (0x55 == s_switchRmFlag) || (1 == g_iostate) || (s_srcid != srcName)) + else if((0x55 == s_switch2xFlag) || (0x55 == s_switchRmFlag) || (1 == g_iostate)) { /*- 正在执行其它命令 */ s_boottype = 0u; @@ -2066,6 +2066,13 @@ static void PFM_Data_HardWareReastart(CM_UINT16 srcName,CM_UINT8* mData,CM_UINT3 ,s_switch2xFlag,s_switchRmFlag,g_iostate,s_srcid,srcName); (void)CFM_DarkLog_Storage(DARK_LOG_HEX, TSCP_DARK_WARNING, 4U, DARK_FAULT_CODE_MERGE(REMOTE_UPDATE, DARK_FAULT_CODE_FUN_ORDER_13, TSCP_DARK_ASSERT_5)); } + else if(s_srcid != srcName) + { + s_packHardAccredit = 1u; + s_reasonHardAuthorization = 6u; + MSCP_LOG_MSG("error pack 0xa6 s_srcid = %04x srcName = %04x\n", s_srcid, srcName); + (void)CFM_DarkLog_Storage(DARK_LOG_HEX, TSCP_DARK_WARNING, 4U, DARK_FAULT_CODE_MERGE(REMOTE_UPDATE, DARK_FAULT_CODE_FUN_ORDER_13, TSCP_DARK_ASSERT_8)); + } /*- 切系命令一次回复到二次请求接收时间是否小于两分钟 */ else if(((g_MSCP_SysCount - s_packFirstRecvTimer)*g_RMUP_Cfg.CYC_TIME) >= 120000u) { @@ -2096,7 +2103,7 @@ static void PFM_Data_HardWareReastart(CM_UINT16 srcName,CM_UINT8* mData,CM_UINT3 s_packHardAccredit = 0u; s_reasonHardAuthorization = 0u; g_iostate = 0x1u; - MSCP_LOG_MSG("0xa6 boottype = %d, s_boottype = %d, s_srcid = %d\n",boottype, s_boottype, s_srcid); + MSCP_LOG_MSG("0xa6 boottype = %d, s_boottype = %d, s_srcid = %04x\n",boottype, s_boottype, s_srcid); } /*再次应答*/ recvType = 0x56u; diff --git a/TSCP/src/MSCP/SFM/SFM_Prtcl.c b/TSCP/src/MSCP/SFM/SFM_Prtcl.c index 3fd5a5f..1f4c2ab 100644 --- a/TSCP/src/MSCP/SFM/SFM_Prtcl.c +++ b/TSCP/src/MSCP/SFM/SFM_Prtcl.c @@ -1177,13 +1177,14 @@ CM_UINT8 Prtcl_InnetSafe_RmSend(IN CM_UINT16 dstName, IN const CM_UINT8* txBuf, { /*- 变量初始化 */ CM_UINT16 len = 0u; /* 长度 */ - CM_UINT16 applen = 0u; /* 长度 */ + CM_UINT16 applen = 0u, tmplen = 0u; /* 长度 */ + CM_BOOL flag_split = CM_FALSE; /*是否将平台帧和应用帧分开发送*/ CM_UINT8 buf[2u] = { 0u }; /* 临时变量 */ CM_UINT8 buf4[4u] = {0u}; /* 临时变量*/ CM_UINT8 Buftmp[128] = { 0u }; /* 临时变量 */ CM_UINT8 rt = 0u; /* 函数返回值 */ ENUM_CM_RETURN temprt = ENUM_CM_TRUE; /* 临时返回值 */ - CM_UINT16 appDstID = 0x00u; + CM_UINT16 appDstID = 0xffffu; /*- 输入长度检查 */ if ((0x55u == g_RMUP_Cfg.M_RemoteUpdate_Enable) &&(0u < g_Maintenance_Ids[0])) @@ -1210,6 +1211,16 @@ CM_UINT8 Prtcl_InnetSafe_RmSend(IN CM_UINT16 dstName, IN const CM_UINT8* txBuf, (void)CM_QueueRead(2u, buf, &s_Innet_AppRmSendQ); (void)CM_QueueRead(2u, buf, &s_Innet_AppRmSendQ); (void)CM_QueueRead(applen, Buftmp, &s_Innet_AppRmSendQ);/*长度*/ + if(appDstID == g_Maintenance_Ids[1]) + { + tmplen = applen; + flag_split = CM_FALSE; + } + else + { + flag_split = CM_TRUE; + tmplen = 0u; + } } else { @@ -1226,7 +1237,7 @@ CM_UINT8 Prtcl_InnetSafe_RmSend(IN CM_UINT16 dstName, IN const CM_UINT8* txBuf, (void)CM_Mutex_Lock(s_Innet_RmSend_M); /*- 填写协议输出帧头 */ - len = (CM_UINT16)(txLen + 4u)+applen; + len = (CM_UINT16)(txLen + 4u)+tmplen; CM_ShortToChar(len, buf); temprt &= CM_QueueWrite(2u, buf, &s_Innet_RmSendQ);/*长度*/ CM_ShortToCharLE(0u, buf); @@ -1237,6 +1248,16 @@ CM_UINT8 Prtcl_InnetSafe_RmSend(IN CM_UINT16 dstName, IN const CM_UINT8* txBuf, temprt &= CM_QueueWrite(txLen, txBuf, &s_Innet_RmSendQ); if(ENUM_CM_TRUE == temprt) { + if(CM_TRUE == flag_split) + { + len = applen + 4u; + CM_ShortToChar(len, buf); + temprt &= CM_QueueWrite(2u, buf, &s_Innet_RmSendQ);/*长度*/ + CM_ShortToCharLE(0u, buf); + temprt &= CM_QueueWrite(2u, buf, &s_Innet_RmSendQ);/*2字节预留*/ + CM_ShortToCharLE(dstName, buf); + temprt &= CM_QueueWrite(2u, buf, &s_Innet_RmSendQ);/*目的ID*/ + } temprt &= CM_QueueWrite(applen, Buftmp, &s_Innet_RmSendQ); if(ENUM_CM_TRUE == temprt) {