AIM发送重启回复与状态信息分开发送,二次请求源ID不一致返回失败原因6(重启命令错误)

This commit is contained in:
lh
2026-07-17 14:34:10 +08:00
parent 7e69b7c395
commit 3a9ff37074
3 changed files with 36 additions and 8 deletions
+1 -1
View File
@@ -40,7 +40,7 @@
CM_CHAR FS_FILE_PATH[100]; 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}; CM_UINT8 MSCP_DRV_VERION[4] = {0};
/** 与维护一体机接口文档版本号(接口文档发生改变时升级版本号) */ /** 与维护一体机接口文档版本号(接口文档发生改变时升级版本号) */
+11 -4
View File
@@ -1189,7 +1189,7 @@ ENUM_CM_RETURN PFM_DevStateSend(CM_UINT8 ifCyc)
{ {
dstName = g_Maintenance_Ids[i]; dstName = g_Maintenance_Ids[i];
ret = Prtcl_InnetSafe_RmSend(dstName, txBuf, offset); 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 else
@@ -1207,7 +1207,7 @@ ENUM_CM_RETURN PFM_DevStateSend(CM_UINT8 ifCyc)
{ {
dstName = g_Maintenance_Ids[i]; dstName = g_Maintenance_Ids[i];
ret = Prtcl_InnetSafe_RmSend(dstName, rxBuf, offset); 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)); (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; 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); ,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)); (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) 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_packHardAccredit = 0u;
s_reasonHardAuthorization = 0u; s_reasonHardAuthorization = 0u;
g_iostate = 0x1u; 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; recvType = 0x56u;
+24 -3
View File
@@ -1177,13 +1177,14 @@ CM_UINT8 Prtcl_InnetSafe_RmSend(IN CM_UINT16 dstName, IN const CM_UINT8* txBuf,
{ {
/*- 变量初始化 */ /*- 变量初始化 */
CM_UINT16 len = 0u; /* 长度 */ 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 buf[2u] = { 0u }; /* 临时变量 */
CM_UINT8 buf4[4u] = {0u}; /* 临时变量*/ CM_UINT8 buf4[4u] = {0u}; /* 临时变量*/
CM_UINT8 Buftmp[128] = { 0u }; /* 临时变量 */ CM_UINT8 Buftmp[128] = { 0u }; /* 临时变量 */
CM_UINT8 rt = 0u; /* 函数返回值 */ CM_UINT8 rt = 0u; /* 函数返回值 */
ENUM_CM_RETURN temprt = ENUM_CM_TRUE; /* 临时返回值 */ 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])) 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(2u, buf, &s_Innet_AppRmSendQ); (void)CM_QueueRead(2u, buf, &s_Innet_AppRmSendQ);
(void)CM_QueueRead(applen, Buftmp, &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 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); (void)CM_Mutex_Lock(s_Innet_RmSend_M);
/*- 填写协议输出帧头 */ /*- 填写协议输出帧头 */
len = (CM_UINT16)(txLen + 4u)+applen; len = (CM_UINT16)(txLen + 4u)+tmplen;
CM_ShortToChar(len, buf); CM_ShortToChar(len, buf);
temprt &= CM_QueueWrite(2u, buf, &s_Innet_RmSendQ);/*长度*/ temprt &= CM_QueueWrite(2u, buf, &s_Innet_RmSendQ);/*长度*/
CM_ShortToCharLE(0u, buf); 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); temprt &= CM_QueueWrite(txLen, txBuf, &s_Innet_RmSendQ);
if(ENUM_CM_TRUE == temprt) 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); temprt &= CM_QueueWrite(applen, Buftmp, &s_Innet_RmSendQ);
if(ENUM_CM_TRUE == temprt) if(ENUM_CM_TRUE == temprt)
{ {