From 9e4a652cad07fa73dcd929a1fb77e1e30f3dbea0 Mon Sep 17 00:00:00 2001 From: Gatsby Van Date: Wed, 24 Jan 2024 11:28:04 +0800 Subject: [PATCH] bugfix: new handling logic for L2_CFM_FRAME. --- .../src/networking/link_layer/scan.c | 31 +++++++++++++------ 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/df_datalink_sp/src/networking/link_layer/scan.c b/df_datalink_sp/src/networking/link_layer/scan.c index 13f1515..e9ceee6 100644 --- a/df_datalink_sp/src/networking/link_layer/scan.c +++ b/df_datalink_sp/src/networking/link_layer/scan.c @@ -456,20 +456,17 @@ int32_t L2_Scan_PktHandler(L2_INST *instPtr, uint8_t *msg) L2_FrameGetChunk(msg, L2_MSG_CFM_SRC_SPEEDZ, L2_MSG_CFM_SRC_SPEEDZ_LEN, &nodeSpeed); node->nodeInfo.speed.z = (double) nodePos; - // Net setup finished. - if (L2_GetMainState(instPtr) == L2_INIT_STATE) - { - // Assert Net-Setup Done. - L2_EVENT l2Event; - l2Event.event = L2_EV_NET_SETUP_DONE; - l2Event.msg = NULL; - AssertL2Event(instPtr, &l2Event); - } if (L2_GetNodeType(instPtr) != L2_NODE_HEAD) { // check if net setup finished. if (L2_isCxn2Net(instPtr) == false) { + // Assert Net-Setup Done. + L2_EVENT l2Event; + l2Event.event = L2_EV_NET_SETUP_DONE; + l2Event.msg = NULL; + AssertL2Event(instPtr, &l2Event); + // Assert update routine event... L2_RTNE_CONFIG newRtneConfig = {0}; L2_EVENT rtneUpEvent = @@ -481,7 +478,23 @@ int32_t L2_Scan_PktHandler(L2_INST *instPtr, uint8_t *msg) newRtneConfig.rtnePrd = ARRAY_SIZE(initTable); AssertL2Event(instPtr, &rtneUpEvent); } + PendCfmAck(instPtr->scanFSM); } + else + { + if (L2_GetMainState(instPtr) == L2_INIT_STATE + && L2_GetNodeListLen(instPtr->nodeList) >= instPtr->config.netScale - 1) + { + // Assert Net-Setup Done. + L2_EVENT l2Event; + L2_NODE_STATE newState = L2_NORMAL_STATE; + l2Event.event = L2_EV_MAIN_STATE_UPDATE; + l2Event.msg = &newState; + AssertL2Event(instPtr, &l2Event); + } + } + Status = SUCCESS; + break; } default: DBG_ERROR("Unsupported frame type: %d.\n", frameType);