From 58a909673a4bee76de429047d1dc422aed8502fe Mon Sep 17 00:00:00 2001 From: Josh Gao Date: Mon, 23 Jun 2025 00:22:33 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9=E8=B7=AF=E7=94=B1?= =?UTF-8?q?=E8=A1=A8,=E6=8C=87=E5=AE=9A=E6=8E=A5=E6=94=B6=E8=8A=82?= =?UTF-8?q?=E7=82=B9;=20=E4=BF=AE=E6=94=B9=E6=80=BB=E7=BA=BF=E9=83=A8?= =?UTF-8?q?=E5=88=86=E7=9A=84=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/networking/link_layer/routine_table.c | 72 +++++++++++------------ src/networking/link_layer/service.c | 19 +++--- src/systembus/systembus.c | 10 ++-- src/systembus/systembus_uart.c | 8 ++- 4 files changed, 58 insertions(+), 51 deletions(-) diff --git a/src/networking/link_layer/routine_table.c b/src/networking/link_layer/routine_table.c index baf7f18..645cec2 100644 --- a/src/networking/link_layer/routine_table.c +++ b/src/networking/link_layer/routine_table.c @@ -119,18 +119,18 @@ L2_RTNE_TABLE_ENTRY tab10Mng10Svc[L2_SLOTS_PER_FRAME] = {L2_SLOT_ACKNOWLEDGE, 0x01, 0x0A, 0x01}, {L2_SLOT_ACKNOWLEDGE, 0x02, 0x0A, 0x01}, {L2_SLOT_ACKNOWLEDGE, 0x03, 0x0A, 0x01}, - {L2_SLOT_SERVICE, 0x00, 0x01, L2_UNICAST_ID}, - {L2_SLOT_SERVICE, 0x01, 0x01, L2_UNICAST_ID}, - {L2_SLOT_SERVICE, 0x00, 0x02, L2_UNICAST_ID}, - {L2_SLOT_SERVICE, 0x01, 0x02, L2_UNICAST_ID}, - {L2_SLOT_SERVICE, 0x00, 0x01, L2_UNICAST_ID}, - {L2_SLOT_SERVICE, 0x01, 0x01, L2_UNICAST_ID}, - {L2_SLOT_SERVICE, 0x00, 0x03, L2_UNICAST_ID}, - {L2_SLOT_SERVICE, 0x01, 0x03, L2_UNICAST_ID}, - {L2_SLOT_SERVICE, 0x00, 0x01, L2_UNICAST_ID}, - {L2_SLOT_SERVICE, 0x01, 0x01, L2_UNICAST_ID}, - {L2_SLOT_SERVICE, 0x00, 0x04, L2_UNICAST_ID}, - {L2_SLOT_SERVICE, 0x01, 0x04, L2_UNICAST_ID}, + {L2_SLOT_SERVICE, 0x00, 0x01, 0x02}, + {L2_SLOT_SERVICE, 0x01, 0x01, 0x02}, + {L2_SLOT_SERVICE, 0x00, 0x02, 0x01}, + {L2_SLOT_SERVICE, 0x01, 0x02, 0x01}, + {L2_SLOT_SERVICE, 0x00, 0x01, 0x03}, + {L2_SLOT_SERVICE, 0x01, 0x01, 0x03}, + {L2_SLOT_SERVICE, 0x00, 0x03, 0x01}, + {L2_SLOT_SERVICE, 0x01, 0x03, 0x01}, + {L2_SLOT_SERVICE, 0x00, 0x01, 0x04}, + {L2_SLOT_SERVICE, 0x01, 0x01, 0x04}, + {L2_SLOT_SERVICE, 0x00, 0x04, 0x01}, + {L2_SLOT_SERVICE, 0x01, 0x04, 0x01}, {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, 0x00, 0x04, 0x01}, {L2_SLOT_RTT, 0x01, 0x04, 0x01}, - {L2_SLOT_SERVICE, 0x00, 0x01, L2_UNICAST_ID}, - {L2_SLOT_SERVICE, 0x01, 0x01, L2_UNICAST_ID}, - {L2_SLOT_SERVICE, 0x00, 0x05, L2_UNICAST_ID}, - {L2_SLOT_SERVICE, 0x01, 0x05, L2_UNICAST_ID}, - {L2_SLOT_SERVICE, 0x00, 0x01, L2_UNICAST_ID}, - {L2_SLOT_SERVICE, 0x01, 0x01, L2_UNICAST_ID}, - {L2_SLOT_SERVICE, 0x00, 0x06, L2_UNICAST_ID}, - {L2_SLOT_SERVICE, 0x01, 0x06, L2_UNICAST_ID}, + {L2_SLOT_SERVICE, 0x00, 0x01, 0x05}, + {L2_SLOT_SERVICE, 0x01, 0x01, 0x05}, + {L2_SLOT_SERVICE, 0x00, 0x05, 0x01}, + {L2_SLOT_SERVICE, 0x01, 0x05, 0x01}, + {L2_SLOT_SERVICE, 0x00, 0x01, 0x06}, + {L2_SLOT_SERVICE, 0x01, 0x01, 0x06}, + {L2_SLOT_SERVICE, 0x00, 0x06, 0x01}, + {L2_SLOT_SERVICE, 0x01, 0x06, 0x01}, // 12 slots: network management, 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, 0x00, 0x07, 0x01}, {L2_SLOT_RTT, 0x01, 0x07, 0x01}, - {L2_SLOT_SERVICE, 0x00, 0x01, L2_UNICAST_ID}, - {L2_SLOT_SERVICE, 0x01, 0x01, L2_UNICAST_ID}, - {L2_SLOT_SERVICE, 0x00, 0x07, L2_UNICAST_ID}, - {L2_SLOT_SERVICE, 0x01, 0x07, L2_UNICAST_ID}, - {L2_SLOT_SERVICE, 0x00, 0x01, L2_UNICAST_ID}, - {L2_SLOT_SERVICE, 0x01, 0x01, L2_UNICAST_ID}, - {L2_SLOT_SERVICE, 0x00, 0x08, L2_UNICAST_ID}, - {L2_SLOT_SERVICE, 0x01, 0x08, L2_UNICAST_ID}, + {L2_SLOT_SERVICE, 0x00, 0x01, 0x07}, + {L2_SLOT_SERVICE, 0x01, 0x01, 0x07}, + {L2_SLOT_SERVICE, 0x00, 0x07, 0x01}, + {L2_SLOT_SERVICE, 0x01, 0x07, 0x01}, + {L2_SLOT_SERVICE, 0x00, 0x01, 0x08}, + {L2_SLOT_SERVICE, 0x01, 0x01, 0x08}, + {L2_SLOT_SERVICE, 0x00, 0x08, 0x01}, + {L2_SLOT_SERVICE, 0x01, 0x08, 0x01}, // 12 slots: network management, 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, 0x00, 0x0A, 0x01}, {L2_SLOT_RTT, 0x01, 0x0A, 0x01}, - {L2_SLOT_SERVICE, 0x00, 0x01, L2_UNICAST_ID}, - {L2_SLOT_SERVICE, 0x01, 0x01, L2_UNICAST_ID}, - {L2_SLOT_SERVICE, 0x00, 0x09, L2_UNICAST_ID}, - {L2_SLOT_SERVICE, 0x01, 0x09, L2_UNICAST_ID}, - {L2_SLOT_SERVICE, 0x00, 0x01, L2_UNICAST_ID}, - {L2_SLOT_SERVICE, 0x01, 0x01, L2_UNICAST_ID}, - {L2_SLOT_SERVICE, 0x00, 0x0A, L2_UNICAST_ID}, - {L2_SLOT_SERVICE, 0x01, 0x0A, L2_UNICAST_ID}, + {L2_SLOT_SERVICE, 0x00, 0x01, 0x09}, + {L2_SLOT_SERVICE, 0x01, 0x01, 0x09}, + {L2_SLOT_SERVICE, 0x00, 0x09, 0x01}, + {L2_SLOT_SERVICE, 0x01, 0x09, 0x01}, + {L2_SLOT_SERVICE, 0x00, 0x01, 0x0A}, + {L2_SLOT_SERVICE, 0x01, 0x01, 0x0A}, + {L2_SLOT_SERVICE, 0x00, 0x0A, 0x01}, + {L2_SLOT_SERVICE, 0x01, 0x0A, 0x01}, }; L2_RTNE_TABLE_ENTRY tab10Mng3Svc[L2_SLOTS_PER_FRAME] = diff --git a/src/networking/link_layer/service.c b/src/networking/link_layer/service.c index 3832d1b..1423062 100644 --- a/src/networking/link_layer/service.c +++ b/src/networking/link_layer/service.c @@ -203,7 +203,7 @@ static int32_t Service_Packing128K(L2_INST *instPtr, L2_FRAME_TYPE type, uint8_t SysMonitor_GetSendPayload(&sendPayload); message->common.dst = sendPayload.nodeId; message->dataId = sendPayload.dataId; - message->dataLen = sendPayload.dataLen;; + message->dataLen = sendPayload.dataLen; memset(message->data, 0xAA, maxDataLen); 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); message->common.dst = sendPayload.nodeId; message->dataId = sendPayload.dataId; - message->dataLen = sendPayload.dataLen;; + message->dataLen = sendPayload.dataLen; memset(message->data, 0xAA, maxDataLen); 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.nodeId = message->common.src; recvPayload.dataLen = message->dataLen; - memcpy(recvPayload.data, message->data, message->dataLen); + memcpy(recvPayload.data, message->data, maxDataLen); SysMonitor_GenRecvRsp(&recvPayload); // Logging... @@ -887,10 +887,9 @@ int32_t L2_Service_Routine(L2_INST *instPtr, const L2_RTNE_TABLE_ENTRY *rtneEntr memcpy(instPtr->sendPktData, testData, msgLen); #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, L2_HEAD_ID); + commNode = L2_GetNodeById(instPtr->nodeList, rtneEntry->src); // antenna selection based on node list antIndex = commNode->nodeInfo.antIndex; // 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++; } - (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); break; default: diff --git a/src/systembus/systembus.c b/src/systembus/systembus.c index 57a86b5..649d7a0 100644 --- a/src/systembus/systembus.c +++ b/src/systembus/systembus.c @@ -71,8 +71,8 @@ // -- Request // -- -- Enable control #define WD_EN_CMD 0x02 -#define EN_CMD_ENABLE 0x66 -#define EN_CMD_SILENT 0x88 +#define EN_CMD_ENABLE 0xAA +#define EN_CMD_SILENT 0x55 // -- -- Node mode control #define WD_ID_CMD 0x03 // -- -- Service Rate control @@ -322,7 +322,7 @@ static int32_t SystemBus_SystemConfig(SYSBUS *instPtr, uint8_t *msg) .event = L2_ROUTINE_UPDATE, .msg = &newRtneConfig }; - AssertL2Event(instPtr, &l2Event); + AssertL2Event(linkInstPtr, &l2Event); break; } case 1: @@ -334,7 +334,7 @@ static int32_t SystemBus_SystemConfig(SYSBUS *instPtr, uint8_t *msg) .event = L2_ROUTINE_UPDATE, .msg = &newRtneConfig }; - AssertL2Event(instPtr, &l2Event); + AssertL2Event(linkInstPtr, &l2Event); break; } case 2: @@ -346,7 +346,7 @@ static int32_t SystemBus_SystemConfig(SYSBUS *instPtr, uint8_t *msg) .event = L2_ROUTINE_UPDATE, .msg = &newRtneConfig }; - AssertL2Event(instPtr, &l2Event); + AssertL2Event(linkInstPtr, &l2Event); break; } default: diff --git a/src/systembus/systembus_uart.c b/src/systembus/systembus_uart.c index 8739bbc..a2ed300 100644 --- a/src/systembus/systembus_uart.c +++ b/src/systembus/systembus_uart.c @@ -146,7 +146,8 @@ int SysbusUart_Send(SYSBUS_UART *instPtr, SYSBUS_UART_FRAME *frame) free(sendBuff); 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); // Start Sending 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; } - 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; checkSumCal = 0; checkSum = plBuff[dLen + FRAME_DUMMY_LEN]; @@ -263,4 +265,4 @@ bool SysbusUart_IsTxBusy(SYSBUS_UART *instPtr) /** @} SystemBus_UART*/ -/** @} SystemBus*/ \ No newline at end of file +/** @} SystemBus*/