fix: 修改路由表,指定接收节点; 修改总线部分的错误

This commit is contained in:
2025-06-23 00:22:33 +08:00
parent 5a91eaad72
commit 58a909673a
4 changed files with 58 additions and 51 deletions
+36 -36
View File
@@ -119,18 +119,18 @@ L2_RTNE_TABLE_ENTRY tab10Mng10Svc[L2_SLOTS_PER_FRAME] =
{L2_SLOT_ACKNOWLEDGE, 0x01, 0x0A, 0x01}, {L2_SLOT_ACKNOWLEDGE, 0x01, 0x0A, 0x01},
{L2_SLOT_ACKNOWLEDGE, 0x02, 0x0A, 0x01}, {L2_SLOT_ACKNOWLEDGE, 0x02, 0x0A, 0x01},
{L2_SLOT_ACKNOWLEDGE, 0x03, 0x0A, 0x01}, {L2_SLOT_ACKNOWLEDGE, 0x03, 0x0A, 0x01},
{L2_SLOT_SERVICE, 0x00, 0x01, L2_UNICAST_ID}, {L2_SLOT_SERVICE, 0x00, 0x01, 0x02},
{L2_SLOT_SERVICE, 0x01, 0x01, L2_UNICAST_ID}, {L2_SLOT_SERVICE, 0x01, 0x01, 0x02},
{L2_SLOT_SERVICE, 0x00, 0x02, L2_UNICAST_ID}, {L2_SLOT_SERVICE, 0x00, 0x02, 0x01},
{L2_SLOT_SERVICE, 0x01, 0x02, L2_UNICAST_ID}, {L2_SLOT_SERVICE, 0x01, 0x02, 0x01},
{L2_SLOT_SERVICE, 0x00, 0x01, L2_UNICAST_ID}, {L2_SLOT_SERVICE, 0x00, 0x01, 0x03},
{L2_SLOT_SERVICE, 0x01, 0x01, L2_UNICAST_ID}, {L2_SLOT_SERVICE, 0x01, 0x01, 0x03},
{L2_SLOT_SERVICE, 0x00, 0x03, L2_UNICAST_ID}, {L2_SLOT_SERVICE, 0x00, 0x03, 0x01},
{L2_SLOT_SERVICE, 0x01, 0x03, L2_UNICAST_ID}, {L2_SLOT_SERVICE, 0x01, 0x03, 0x01},
{L2_SLOT_SERVICE, 0x00, 0x01, L2_UNICAST_ID}, {L2_SLOT_SERVICE, 0x00, 0x01, 0x04},
{L2_SLOT_SERVICE, 0x01, 0x01, L2_UNICAST_ID}, {L2_SLOT_SERVICE, 0x01, 0x01, 0x04},
{L2_SLOT_SERVICE, 0x00, 0x04, L2_UNICAST_ID}, {L2_SLOT_SERVICE, 0x00, 0x04, 0x01},
{L2_SLOT_SERVICE, 0x01, 0x04, L2_UNICAST_ID}, {L2_SLOT_SERVICE, 0x01, 0x04, 0x01},
{L2_SLOT_IDLE, 0x00, 0x00, 0x00}, {L2_SLOT_IDLE, 0x00, 0x00, 0x00},
{L2_SLOT_IDLE, 0x00, 0x00, 0x00}, {L2_SLOT_IDLE, 0x00, 0x00, 0x00},
@@ -180,14 +180,14 @@ L2_RTNE_TABLE_ENTRY tab10Mng10Svc[L2_SLOTS_PER_FRAME] =
{L2_SLOT_RTT, 0x01, 0x01, 0x04}, {L2_SLOT_RTT, 0x01, 0x01, 0x04},
{L2_SLOT_RTT, 0x00, 0x04, 0x01}, {L2_SLOT_RTT, 0x00, 0x04, 0x01},
{L2_SLOT_RTT, 0x01, 0x04, 0x01}, {L2_SLOT_RTT, 0x01, 0x04, 0x01},
{L2_SLOT_SERVICE, 0x00, 0x01, L2_UNICAST_ID}, {L2_SLOT_SERVICE, 0x00, 0x01, 0x05},
{L2_SLOT_SERVICE, 0x01, 0x01, L2_UNICAST_ID}, {L2_SLOT_SERVICE, 0x01, 0x01, 0x05},
{L2_SLOT_SERVICE, 0x00, 0x05, L2_UNICAST_ID}, {L2_SLOT_SERVICE, 0x00, 0x05, 0x01},
{L2_SLOT_SERVICE, 0x01, 0x05, L2_UNICAST_ID}, {L2_SLOT_SERVICE, 0x01, 0x05, 0x01},
{L2_SLOT_SERVICE, 0x00, 0x01, L2_UNICAST_ID}, {L2_SLOT_SERVICE, 0x00, 0x01, 0x06},
{L2_SLOT_SERVICE, 0x01, 0x01, L2_UNICAST_ID}, {L2_SLOT_SERVICE, 0x01, 0x01, 0x06},
{L2_SLOT_SERVICE, 0x00, 0x06, L2_UNICAST_ID}, {L2_SLOT_SERVICE, 0x00, 0x06, 0x01},
{L2_SLOT_SERVICE, 0x01, 0x06, L2_UNICAST_ID}, {L2_SLOT_SERVICE, 0x01, 0x06, 0x01},
// 12 slots: network management, head <--> node // 12 slots: network management, head <--> node
// 18 slots: message distribution, head ---> node // 18 slots: message distribution, head ---> node
@@ -235,14 +235,14 @@ L2_RTNE_TABLE_ENTRY tab10Mng10Svc[L2_SLOTS_PER_FRAME] =
{L2_SLOT_RTT, 0x01, 0x01, 0x07}, {L2_SLOT_RTT, 0x01, 0x01, 0x07},
{L2_SLOT_RTT, 0x00, 0x07, 0x01}, {L2_SLOT_RTT, 0x00, 0x07, 0x01},
{L2_SLOT_RTT, 0x01, 0x07, 0x01}, {L2_SLOT_RTT, 0x01, 0x07, 0x01},
{L2_SLOT_SERVICE, 0x00, 0x01, L2_UNICAST_ID}, {L2_SLOT_SERVICE, 0x00, 0x01, 0x07},
{L2_SLOT_SERVICE, 0x01, 0x01, L2_UNICAST_ID}, {L2_SLOT_SERVICE, 0x01, 0x01, 0x07},
{L2_SLOT_SERVICE, 0x00, 0x07, L2_UNICAST_ID}, {L2_SLOT_SERVICE, 0x00, 0x07, 0x01},
{L2_SLOT_SERVICE, 0x01, 0x07, L2_UNICAST_ID}, {L2_SLOT_SERVICE, 0x01, 0x07, 0x01},
{L2_SLOT_SERVICE, 0x00, 0x01, L2_UNICAST_ID}, {L2_SLOT_SERVICE, 0x00, 0x01, 0x08},
{L2_SLOT_SERVICE, 0x01, 0x01, L2_UNICAST_ID}, {L2_SLOT_SERVICE, 0x01, 0x01, 0x08},
{L2_SLOT_SERVICE, 0x00, 0x08, L2_UNICAST_ID}, {L2_SLOT_SERVICE, 0x00, 0x08, 0x01},
{L2_SLOT_SERVICE, 0x01, 0x08, L2_UNICAST_ID}, {L2_SLOT_SERVICE, 0x01, 0x08, 0x01},
// 12 slots: network management, head <--> node // 12 slots: network management, head <--> node
// 18 slots: message distribution, head ---> node // 18 slots: message distribution, head ---> node
@@ -290,14 +290,14 @@ L2_RTNE_TABLE_ENTRY tab10Mng10Svc[L2_SLOTS_PER_FRAME] =
{L2_SLOT_RTT, 0x01, 0x01, 0x0A}, {L2_SLOT_RTT, 0x01, 0x01, 0x0A},
{L2_SLOT_RTT, 0x00, 0x0A, 0x01}, {L2_SLOT_RTT, 0x00, 0x0A, 0x01},
{L2_SLOT_RTT, 0x01, 0x0A, 0x01}, {L2_SLOT_RTT, 0x01, 0x0A, 0x01},
{L2_SLOT_SERVICE, 0x00, 0x01, L2_UNICAST_ID}, {L2_SLOT_SERVICE, 0x00, 0x01, 0x09},
{L2_SLOT_SERVICE, 0x01, 0x01, L2_UNICAST_ID}, {L2_SLOT_SERVICE, 0x01, 0x01, 0x09},
{L2_SLOT_SERVICE, 0x00, 0x09, L2_UNICAST_ID}, {L2_SLOT_SERVICE, 0x00, 0x09, 0x01},
{L2_SLOT_SERVICE, 0x01, 0x09, L2_UNICAST_ID}, {L2_SLOT_SERVICE, 0x01, 0x09, 0x01},
{L2_SLOT_SERVICE, 0x00, 0x01, L2_UNICAST_ID}, {L2_SLOT_SERVICE, 0x00, 0x01, 0x0A},
{L2_SLOT_SERVICE, 0x01, 0x01, L2_UNICAST_ID}, {L2_SLOT_SERVICE, 0x01, 0x01, 0x0A},
{L2_SLOT_SERVICE, 0x00, 0x0A, L2_UNICAST_ID}, {L2_SLOT_SERVICE, 0x00, 0x0A, 0x01},
{L2_SLOT_SERVICE, 0x01, 0x0A, L2_UNICAST_ID}, {L2_SLOT_SERVICE, 0x01, 0x0A, 0x01},
}; };
L2_RTNE_TABLE_ENTRY tab10Mng3Svc[L2_SLOTS_PER_FRAME] = L2_RTNE_TABLE_ENTRY tab10Mng3Svc[L2_SLOTS_PER_FRAME] =
+12 -7
View File
@@ -203,7 +203,7 @@ static int32_t Service_Packing128K(L2_INST *instPtr, L2_FRAME_TYPE type, uint8_t
SysMonitor_GetSendPayload(&sendPayload); SysMonitor_GetSendPayload(&sendPayload);
message->common.dst = sendPayload.nodeId; message->common.dst = sendPayload.nodeId;
message->dataId = sendPayload.dataId; message->dataId = sendPayload.dataId;
message->dataLen = sendPayload.dataLen;; message->dataLen = sendPayload.dataLen;
memset(message->data, 0xAA, maxDataLen); memset(message->data, 0xAA, maxDataLen);
memcpy(message->data, sendPayload.data, sendPayload.dataLen); memcpy(message->data, sendPayload.data, sendPayload.dataLen);
} }
@@ -327,7 +327,7 @@ static int32_t Service_Packing2M(L2_INST *instPtr, L2_FRAME_TYPE type, uint8_t d
SysMonitor_GetSendPayload(&sendPayload); SysMonitor_GetSendPayload(&sendPayload);
message->common.dst = sendPayload.nodeId; message->common.dst = sendPayload.nodeId;
message->dataId = sendPayload.dataId; message->dataId = sendPayload.dataId;
message->dataLen = sendPayload.dataLen;; message->dataLen = sendPayload.dataLen;
memset(message->data, 0xAA, maxDataLen); memset(message->data, 0xAA, maxDataLen);
memcpy(message->data, sendPayload.data, sendPayload.dataLen); memcpy(message->data, sendPayload.data, sendPayload.dataLen);
@@ -655,7 +655,7 @@ static int32_t Service_PktHandler2M(L2_INST *instPtr, uint8_t *msg)
recvPayload.dataId = message->dataId; recvPayload.dataId = message->dataId;
recvPayload.nodeId = message->common.src; recvPayload.nodeId = message->common.src;
recvPayload.dataLen = message->dataLen; recvPayload.dataLen = message->dataLen;
memcpy(recvPayload.data, message->data, message->dataLen); memcpy(recvPayload.data, message->data, maxDataLen);
SysMonitor_GenRecvRsp(&recvPayload); SysMonitor_GenRecvRsp(&recvPayload);
// Logging... // Logging...
@@ -887,10 +887,9 @@ int32_t L2_Service_Routine(L2_INST *instPtr, const L2_RTNE_TABLE_ENTRY *rtneEntr
memcpy(instPtr->sendPktData, testData, msgLen); memcpy(instPtr->sendPktData, testData, msgLen);
#endif #endif
} }
else else if (rtneEntry->dst == L2_GetNodeId(instPtr))
{ {
// In services slots, rx mode is always enabled when other nodes are transmitting commNode = L2_GetNodeById(instPtr->nodeList, rtneEntry->src);
commNode = L2_GetNodeById(instPtr->nodeList, L2_HEAD_ID);
// antenna selection based on node list // antenna selection based on node list
antIndex = commNode->nodeInfo.antIndex; antIndex = commNode->nodeInfo.antIndex;
// member node receives message in advertise slot // member node receives message in advertise slot
@@ -898,7 +897,13 @@ int32_t L2_Service_Routine(L2_INST *instPtr, const L2_RTNE_TABLE_ENTRY *rtneEntr
svcFSMPtr->rxCnt++; svcFSMPtr->rxCnt++;
} }
(void)Phy_SetAntIndex(phyRef, antIndex); else
{
// otherwise suspend
antIndex = PHY_ANT_INDEX_NONE;
torState = L2_TOR_SUSPEND;
}
(void)Phy_SetAntIndex(instPtr->config.phyInstPtr, antIndex);
(void)L2_SetupNextSlot(instPtr, torState, L2_FRAME_SVC); (void)L2_SetupNextSlot(instPtr, torState, L2_FRAME_SVC);
break; break;
default: default:
+5 -5
View File
@@ -71,8 +71,8 @@
// -- Request // -- Request
// -- -- Enable control // -- -- Enable control
#define WD_EN_CMD 0x02 #define WD_EN_CMD 0x02
#define EN_CMD_ENABLE 0x66 #define EN_CMD_ENABLE 0xAA
#define EN_CMD_SILENT 0x88 #define EN_CMD_SILENT 0x55
// -- -- Node mode control // -- -- Node mode control
#define WD_ID_CMD 0x03 #define WD_ID_CMD 0x03
// -- -- Service Rate control // -- -- Service Rate control
@@ -322,7 +322,7 @@ static int32_t SystemBus_SystemConfig(SYSBUS *instPtr, uint8_t *msg)
.event = L2_ROUTINE_UPDATE, .event = L2_ROUTINE_UPDATE,
.msg = &newRtneConfig .msg = &newRtneConfig
}; };
AssertL2Event(instPtr, &l2Event); AssertL2Event(linkInstPtr, &l2Event);
break; break;
} }
case 1: case 1:
@@ -334,7 +334,7 @@ static int32_t SystemBus_SystemConfig(SYSBUS *instPtr, uint8_t *msg)
.event = L2_ROUTINE_UPDATE, .event = L2_ROUTINE_UPDATE,
.msg = &newRtneConfig .msg = &newRtneConfig
}; };
AssertL2Event(instPtr, &l2Event); AssertL2Event(linkInstPtr, &l2Event);
break; break;
} }
case 2: case 2:
@@ -346,7 +346,7 @@ static int32_t SystemBus_SystemConfig(SYSBUS *instPtr, uint8_t *msg)
.event = L2_ROUTINE_UPDATE, .event = L2_ROUTINE_UPDATE,
.msg = &newRtneConfig .msg = &newRtneConfig
}; };
AssertL2Event(instPtr, &l2Event); AssertL2Event(linkInstPtr, &l2Event);
break; break;
} }
default: default:
+4 -2
View File
@@ -146,7 +146,8 @@ int SysbusUart_Send(SYSBUS_UART *instPtr, SYSBUS_UART_FRAME *frame)
free(sendBuff); free(sendBuff);
return FAILURE; return FAILURE;
} }
memcpy((void *)(instPtr->config.baseAddr + UART_TXBUFF_OFFSET), sendBuff, (sendLen + sizeof(uint32_t) - 1) / sizeof(uint32_t) * sizeof(uint32_t)); memcpy((void *)(instPtr->config.baseAddr + UART_TXBUFF_OFFSET), sendBuff,
NORMALIZE_SIZE((sendLen + sizeof(uint32_t) - 1) / sizeof(uint32_t) * sizeof(uint32_t)));
free(sendBuff); free(sendBuff);
// Start Sending // Start Sending
SYSTEMBUS_UART_mWriteReg(instPtr->config.baseAddr, UART_SEND_CMD, sendLen); SYSTEMBUS_UART_mWriteReg(instPtr->config.baseAddr, UART_SEND_CMD, sendLen);
@@ -183,7 +184,8 @@ int SysbusUart_Recv(SYSBUS_UART *instPtr, SYSBUS_UART_FRAME *frame)
{ {
return ENOMEM; return ENOMEM;
} }
memcpy(dBuff, (void *)(instPtr->config.baseAddr + UART_RXBUFF_OFFSET), sizeof(uint32_t) * dWLen); memcpy(dBuff, (void *)(instPtr->config.baseAddr + UART_RXBUFF_OFFSET),
NORMALIZE_SIZE(sizeof(uint32_t) * dWLen));
plBuff = dBuff + FRAME_HEAD_LEN; plBuff = dBuff + FRAME_HEAD_LEN;
checkSumCal = 0; checkSumCal = 0;
checkSum = plBuff[dLen + FRAME_DUMMY_LEN]; checkSum = plBuff[dLen + FRAME_DUMMY_LEN];