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);