From b3451b6c0a118878426a68487a2d9438c9ac58df Mon Sep 17 00:00:00 2001 From: Gatsby Van Date: Tue, 26 Dec 2023 11:03:57 +0800 Subject: [PATCH] adapted to new time sync api. --- datalink814_ge/src/linklayer/net_mgmt.c | 4 +-- datalink814_ge/src/linklayer/net_scan.c | 42 +++++++++++++++---------- 2 files changed, 27 insertions(+), 19 deletions(-) diff --git a/datalink814_ge/src/linklayer/net_mgmt.c b/datalink814_ge/src/linklayer/net_mgmt.c index 99d9303..059e0c9 100644 --- a/datalink814_ge/src/linklayer/net_mgmt.c +++ b/datalink814_ge/src/linklayer/net_mgmt.c @@ -738,7 +738,7 @@ int32_t MgmtNet_PktHandler(L2_INST* instPtr) { L2_RstNodeTTL(instPtr->nodeList, mgmtMsgLog->srcNodeId); // TODO: Check if(mgmtMsgLog->srcNodeId == L2_GetHeadId(instPtr)){ - L2_TimeAlign(instPtr, L2_GetCurrentFrameNum(instPtr), L2_GetCurrentSlotNum(instPtr)); + L2_TimeAlign(instPtr, L2_GetLastFrameNum(instPtr), L2_GetLastSlotNum(instPtr), true); } break; } @@ -853,7 +853,7 @@ int32_t MgmtNet_PktHandler(L2_INST* instPtr) { L2_RstNodeTTL(instPtr->nodeList, rttMsgRspLog->srcAddr & 0x001F); // TODO: Check if((rttMsgRspLog->srcAddr&0x001F) == L2_GetHeadId(instPtr)){ - L2_TimeAlign(instPtr, L2_GetCurrentFrameNum(instPtr), L2_GetCurrentSlotNum(instPtr)); + L2_TimeAlign(instPtr, L2_GetLastFrameNum(instPtr), L2_GetLastSlotNum(instPtr), true); } break; } diff --git a/datalink814_ge/src/linklayer/net_scan.c b/datalink814_ge/src/linklayer/net_scan.c index b974e6c..2a5e7d8 100644 --- a/datalink814_ge/src/linklayer/net_scan.c +++ b/datalink814_ge/src/linklayer/net_scan.c @@ -647,7 +647,7 @@ int32_t ScanNet_PktHandler(L2_INST* instPtr) { if ( L2_isCxn2Net(instPtr) == false ) { // TODO: Check - L2_TimeAlign(instPtr, scanFsmPtr->BMrcvLog.frameNum, scanFsmPtr->BMrcvLog.slotNum); + L2_TimeAlign(instPtr, scanFsmPtr->BMrcvLog.frameNum, scanFsmPtr->BMrcvLog.slotNum, false); } // trigger flag BmrecvStateUpdate(scanFsmPtr, true); @@ -738,19 +738,22 @@ int32_t ScanNet_PktHandler(L2_INST* instPtr) { // TODO: Update node information. } - if(L2_GetNodeType(instPtr) != L2_NODE_HEAD && scanFsmPtr->W2ACQrcvLog.NetStage != L2_NONE_STATE){ - // Update net start time - instPtr->netStartTime = scanFsmPtr->W2ACQrcvLog.NetScanTime; - // sync state with head node - L2_NODE_STATE newState = scanFsmPtr->W2ACQrcvLog.NetStage; - L2_EVENT stateUpEvent = { - .event = L2_EV_MAIN_STATE_UPDATE, - .msg = &newState - }; - AssertL2Event(instPtr, &stateUpEvent); - + if(L2_GetNodeType(instPtr) != L2_NODE_HEAD){ // check if net setup finished. if(L2_GetMainState(instPtr) == L2_INIT_STATE && L2_isCxn2Net(instPtr) == false){ + + // Assert net setup done event... + uint32_t netStartTime = scanFsmPtr->W2ACQrcvLog.NetScanTime; + L2_EVENT netSetupDoneEvent = { + .event = L2_EV_NET_SETUP_DONE, + .msg = &netStartTime + }; + AssertL2Event(instPtr, &netSetupDoneEvent); + + // Update time sync since netStartTime updated. + L2_TimeAlign(instPtr, L2_GetLastFrameNum(instPtr), L2_GetLastSlotNum(instPtr), true); + + // Assert update routine event... L2_RTNE_CONFIG newRtneConfig = {0}; L2_EVENT rtneUpEvent = { .event = L2_ROUTINE_UPDATE, @@ -766,12 +769,17 @@ int32_t ScanNet_PktHandler(L2_INST* instPtr) { newRtneConfig.rtnePrd = ARRAY_SIZE(intraSeekTable); AssertL2Event(instPtr, &rtneUpEvent); } - L2_EVENT netSetupDoneEvent = { - .event = L2_EV_NET_SETUP_DONE, - .msg = NULL - }; - AssertL2Event(instPtr, &netSetupDoneEvent); } + + // sync state with head node + L2_NODE_STATE newState = scanFsmPtr->W2ACQrcvLog.NetStage; + L2_EVENT stateUpEvent = { + .event = L2_EV_MAIN_STATE_UPDATE, + .msg = &newState + }; + AssertL2Event(instPtr, &stateUpEvent); + + } break; }