diff --git a/TSCP/src/MSCP/Arb/Arb.c b/TSCP/src/MSCP/Arb/Arb.c index ffa5f3f..ed1f7fd 100644 --- a/TSCP/src/MSCP/Arb/Arb.c +++ b/TSCP/src/MSCP/Arb/Arb.c @@ -121,7 +121,7 @@ void Area_With_Arb_Init(void) Area_LogMQ_Init(); AREA_BASIC_CFG_PTR->BoardID = g_PFM_Cfg.BOARD_ID;/**< 板卡ID 插箱id */ AREA_BASIC_CFG_PTR->Cpuid = g_PFM_Cfg.CPU_ID;/**< cpu id */ - AREA_BASIC_CFG_PTR->OutnetID = g_PFM_Cfg.BOARD_ID;/**< 外网ID */ + AREA_BASIC_CFG_PTR->OutnetID = g_PFM_Cfg.OUTNET_ID;/**< 外网ID */ /* 获取对系、对地板卡id*/ get_Other_BoardId(AREA_BASIC_CFG_PTR->BoardID, &(AREA_BASIC_CFG_PTR->Partner_BoardID), &(AREA_BASIC_CFG_PTR->Partner_Area_A_BoardID), &(AREA_BASIC_CFG_PTR->Partner_Area_B_BoardID)); /**获取自身所在地(A地/B地) */ @@ -133,8 +133,8 @@ void Area_With_Arb_Init(void) { AREA_BASIC_CFG_PTR->AreaID = MSCP_AREA_ID_B; } - AREA_LOG_MSG("AREA_ARB:Init config, BoardID:%d CPU:%d Area:%d Partner:%d Remote:%d-%d\n", - AREA_BASIC_CFG_PTR->BoardID, AREA_BASIC_CFG_PTR->Cpuid, AREA_BASIC_CFG_PTR->AreaID, + AREA_LOG_MSG("AREA_ARB:Init config, BoardID:%d CPU:%d OUTNET_ID:%d Area:%d Partner:%d Remote:%d-%d\n", + AREA_BASIC_CFG_PTR->BoardID, AREA_BASIC_CFG_PTR->Cpuid, AREA_BASIC_CFG_PTR->OutnetID, AREA_BASIC_CFG_PTR->AreaID, AREA_BASIC_CFG_PTR->Partner_BoardID, AREA_BASIC_CFG_PTR->Partner_Area_A_BoardID, AREA_BASIC_CFG_PTR->Partner_Area_B_BoardID); /* 网络初始化*/ @@ -477,6 +477,7 @@ static void s_Area_Arb_Send_Process(void) arb_pack.ArbSN = DFM_GetBirthCount(); arb_pack.OutNet_ID = AREA_BASIC_CFG_PTR->OutnetID; arb_pack.Board_ID = AREA_BASIC_CFG_PTR->BoardID; + arb_pack.CPU_ID = AREA_BASIC_CFG_PTR->Cpuid; arb_pack.ArbPayLoad = 0x55u; /**请求升主 */ CM_Memset(&arb_pack.Reserver[0], 0, AREA_ARB_RESERVER_LEN, AREA_ARB_RESERVER_LEN); /**计算双CRC */ @@ -564,6 +565,7 @@ static void s_Area_Arb_Recv_Process(void) CM_UINT32 local_sn = DFM_GetBirthCount(); CM_UINT16 local_outnetid = AREA_BASIC_CFG_PTR->OutnetID; CM_UINT8 local_id = AREA_BASIC_CFG_PTR->BoardID; + CM_UINT8 cpu_id = AREA_BASIC_CFG_PTR->Cpuid; CM_UINT32 tick_now = (CM_UINT32)(CM_GetTick() / CM_UNSIGNED_MILLION); CM_UINT32 tick_start = tick_now, used_time = 0u; /**清空仲裁状态 */ @@ -581,7 +583,8 @@ static void s_Area_Arb_Recv_Process(void) if(crc1 == arb_pack.CRC1 && crc2 == arb_pack.CRC2 && ((AREA_ARB_FRAME_PACK_LEN - 1u) == arb_pack.Len) && local_sn == arb_pack.ArbSN && ENUM_AREA_MSG_ARB_ACK == arb_pack.MsgType && - local_outnetid == arb_pack.OutNet_ID && local_id == arb_pack.Board_ID) + local_outnetid == arb_pack.OutNet_ID && local_id == arb_pack.Board_ID && + cpu_id == arb_pack.CPU_ID) { if(0x55 == arb_pack.ArbPayLoad) { diff --git a/TSCP/src/MSCP/Arb/Arb_Pack.c b/TSCP/src/MSCP/Arb/Arb_Pack.c index 3e7ebcb..f4b2c4a 100644 --- a/TSCP/src/MSCP/Arb/Arb_Pack.c +++ b/TSCP/src/MSCP/Arb/Arb_Pack.c @@ -23,6 +23,7 @@ CM_INT32 Area_Arb_Frame_Pack(OUT CM_UINT8* buf, IN CM_UINT32 buf_size, CM_ShortToChar(pack->OutNet_ID, &buf[index]); index += (CM_UINT32)sizeof(CM_UINT16); buf[index++] = pack->Board_ID; + buf[index++] = pack->CPU_ID; buf[index++] = pack->ArbPayLoad; /* 预留区为字节数组,直接复制到报文缓冲区。 */ (void)memcpy(&buf[index], pack->Reserver, AREA_ARB_RESERVER_LEN); @@ -57,6 +58,7 @@ void Area_Arb_Frame_UnPack(OUT STRU_AREA_WITH_ARB_PACK_T* pack, pack->OutNet_ID = CM_ShortFromChar(&buf[index]); index += (CM_UINT32)sizeof(CM_UINT16); pack->Board_ID = buf[index++]; + pack->CPU_ID = buf[index++]; pack->ArbPayLoad = buf[index++]; /* 预留区为字节数组,直接复制到输出结构体。 */ (void)memcpy(pack->Reserver, &buf[index], AREA_ARB_RESERVER_LEN); diff --git a/TSCP/src/MSCP/Arb/Arb_Pack.h b/TSCP/src/MSCP/Arb/Arb_Pack.h index 580762e..009e2ac 100644 --- a/TSCP/src/MSCP/Arb/Arb_Pack.h +++ b/TSCP/src/MSCP/Arb/Arb_Pack.h @@ -6,7 +6,7 @@ #include "Area.h" /* 各类报文在线路上的固定长度,不包含结构体对齐字节。 */ -#define AREA_ARB_FRAME_PACK_LEN (26u) +#define AREA_ARB_FRAME_PACK_LEN (27u) #define AREA_ARB_STATE_MULTI_PACK_LEN (25u) #define AREA_ARB_STATE_PACK_LEN (27u) @@ -32,6 +32,7 @@ typedef struct CM_UINT32 ArbSN; /**< 仲裁请求/应答序列号 */ CM_UINT16 OutNet_ID; /**< 外网ID */ CM_UINT8 Board_ID; /**< 板卡ID */ + CM_UINT8 CPU_ID; /**< CPUID */ CM_UINT8 ArbPayLoad; /**< 仲裁请求/回复的具体内容 */ CM_UINT8 Reserver[AREA_ARB_RESERVER_LEN]; /**< 预留8字节 */ CM_UINT32 CRC1; /**< CRC1 */