diff --git a/df_datalink_sp/src/networking/link_layer/link_layer.c b/df_datalink_sp/src/networking/link_layer/link_layer.c index 129f0fe..e6ff703 100644 --- a/df_datalink_sp/src/networking/link_layer/link_layer.c +++ b/df_datalink_sp/src/networking/link_layer/link_layer.c @@ -510,7 +510,6 @@ int32_t Linklayer_Init(L2_INST **instPtr, const L2_CONFIG *config) (*instPtr)->recvPktData = NULL; (*instPtr)->schdEventPool = NULL; (*instPtr)->nodeList = NULL; - (*instPtr)->scanFSM = NULL; (*instPtr)->serviceFSM = NULL; memcpy(&((*instPtr)->config), config, sizeof(L2_CONFIG)); @@ -582,13 +581,6 @@ int32_t Linklayer_Init(L2_INST **instPtr, const L2_CONFIG *config) return Status; } - Status = L2_Scan_Init(&((*instPtr)->scanFSM)); - if (Status != SUCCESS) - { - Linklayer_Destroy(*instPtr); - return Status; - } - Status = L2_Service_Init(&((*instPtr)->serviceFSM)); if (Status != SUCCESS) { @@ -664,7 +656,6 @@ int32_t Linklayer_Reconfig(L2_INST *instPtr, const L2_CONFIG *config) // Reset according instance L2_ClearSchedEventPool(instPtr->schdEventPool); L2_NodeList_Clear(instPtr->nodeList); - L2_Scan_Reset(instPtr->scanFSM); L2_Service_Reset(instPtr->serviceFSM); return SUCCESS; } @@ -689,7 +680,6 @@ void Linklayer_Destroy(L2_INST *instPtr) // Destroy FSMs and nodeList L2_DestroySchedEventPool(instPtr->schdEventPool); L2_NodeList_Destroy(instPtr->nodeList); - L2_Scan_Destroy(instPtr->scanFSM); L2_Service_Destroy(instPtr->serviceFSM); free(instPtr); } @@ -806,7 +796,6 @@ int32_t Linklayer_EventHandler(L2_INST *instPtr, const L2_EVENT *l2Event) break; } DBG_WARNING("Lost connection with head node [%" PRId8 "].\n", L2_GetHeadId(instPtr)); - L2_Scan_Reset(instPtr->scanFSM); L2_Service_Reset(instPtr->serviceFSM); instPtr->cxn2Net = false; UpdateMainSate(instPtr, L2_INIT_STATE); @@ -816,7 +805,6 @@ int32_t Linklayer_EventHandler(L2_INST *instPtr, const L2_EVENT *l2Event) case L2_EV_LOST_NODE: { DBG_INFO("Event L2_EV_LOST_NODE asserted....\n"); - L2_Scan_Reset(instPtr->scanFSM); L2_Service_Reset(instPtr->serviceFSM); UpdateMainSate(instPtr, L2_INIT_STATE); // Log reconnect @@ -829,7 +817,6 @@ int32_t Linklayer_EventHandler(L2_INST *instPtr, const L2_EVENT *l2Event) if (instPtr->nextState == L2_INIT_STATE) { // Reset scan net FMS for next scan process. - L2_Scan_Reset(instPtr->scanFSM); UpdateMainSate(instPtr, L2_INIT_STATE); instPtr->rtneConfig.rtneTable = initTable; instPtr->rtneConfig.rtnePrd = ARRAY_SIZE(initTable); @@ -1084,7 +1071,6 @@ int32_t Linklayer_Proc(L2_INST *instPtr) else { Phy_SetMode(phyRef, PHY_MODE_LISTEN); - Status = L2_Scan_Proc(instPtr); } } @@ -1105,7 +1091,6 @@ int32_t Linklayer_Proc(L2_INST *instPtr) instPtr->linkLog.cxnStatus = (L2_isCxn2Net(instPtr)) ? 0x11 : 0x00; instPtr->linkLog.linkStage = (instPtr->mainState == L2_INIT_STATE) ? 0x11 : 0x22; instPtr->linkLog.recxnCnt = instPtr->log.reconnectCnt; - instPtr->linkLog.antIndex = instPtr->scanFSM->antIndex; instPtr->linkLog.advTxCnt = (uint16_t)instPtr->log.advTxCnt; instPtr->linkLog.advRecvCnt = (uint16_t)instPtr->log.advRecvCnt; instPtr->linkLog.advCorrectCnt = (uint16_t)instPtr->log.advCorrectCnt; diff --git a/df_datalink_sp/src/networking/link_layer/link_layer.h b/df_datalink_sp/src/networking/link_layer/link_layer.h index c8dcd0f..8f75034 100644 --- a/df_datalink_sp/src/networking/link_layer/link_layer.h +++ b/df_datalink_sp/src/networking/link_layer/link_layer.h @@ -117,7 +117,6 @@ typedef struct L2_NODE_STATE mainState; ///< the main state of link layer state L2_NODE_STATE nextState; ///< next state of link layer state, which will be applied to mainState every second. L2_RTNE_CONFIG rtneConfig; ///< current routine table configuration and status. - L2_SCAN_FSM *scanFSM; ///< FSM of scan net (link set up) L2_SVC_FSM *serviceFSM; ///< FSM of service net (data service) uint8_t *sendPktData; ///< send data buffer uint8_t *recvPktData; ///< received data buffer @@ -175,7 +174,6 @@ int32_t L2_Scan_Init(L2_SCAN_FSM **scanFSMPtr); void L2_Scan_RefreashScanTable(L2_INST *instPtr); void L2_Scan_Reset(L2_SCAN_FSM *scanFSMPtr); void L2_Scan_Destroy(L2_SCAN_FSM *scanFSMPtr); -int32_t L2_Scan_Proc(L2_INST *instPtr); int32_t L2_Scan_PktHandler(L2_INST *instPtr, uint8_t *msg); int32_t L2_Scan_Routine(L2_INST *instPtr, const L2_RTNE_TABLE_ENTRY *schedEntry); /** @} LinkLayer_Scan*/ diff --git a/df_datalink_sp/src/networking/link_layer/link_layer_types.h b/df_datalink_sp/src/networking/link_layer/link_layer_types.h index 06de8fd..c31c261 100644 --- a/df_datalink_sp/src/networking/link_layer/link_layer_types.h +++ b/df_datalink_sp/src/networking/link_layer/link_layer_types.h @@ -215,17 +215,6 @@ typedef enum L2_SCAN_STAGE_ADV = 1 } SCAN_STAGE; -/** - * @struct L2_SCAN_FSM - * @brief Linklayer scan process FSM instance - */ -typedef struct -{ - bool isAdvRecvd; ///< indicates if advertisement frame done(antenna locked). - uint8_t advCnt; ///< adv receive try count - uint8_t antIndex; ///< target antenna index -} L2_SCAN_FSM; - /** * @struct L2_SVC_FSM * @brief Linklayer service process FSM diff --git a/df_datalink_sp/src/networking/link_layer/scan.c b/df_datalink_sp/src/networking/link_layer/scan.c index 2894642..8480e2b 100644 --- a/df_datalink_sp/src/networking/link_layer/scan.c +++ b/df_datalink_sp/src/networking/link_layer/scan.c @@ -39,66 +39,8 @@ /************************** Variable Definitions *****************************/ /************************** Function Prototypes ******************************/ -static void AdvRecvStateUpdate(L2_SCAN_FSM *scanFsmPtr, bool state); - -static int32_t Scan_AdvHandler(L2_INST *instPtr); - static int32_t ScanMsg_Packing(L2_INST *instPtr, L2_FRAME_TYPE type, uint8_t dstId); -/** - * @brief Update Base-info Advertisement state. - */ -static void AdvRecvStateUpdate(L2_SCAN_FSM *scanFsmPtr, bool state) -{ - ASSERT(scanFsmPtr != NULL); - DBG_INFO("Update AdvRecvState from [%" PRId8 "] to [%" PRId8 "].\n", - scanFsmPtr->isAdvRecvd, state); - scanFsmPtr->isAdvRecvd = state; - return; -} - -/*****************************************************************************/ -/** - * @brief Member node scan net BmAdvt stage handler. - * - * @param scanFsmPtr A pointer to scan net fsm. - * - * @return used slot (2 ms slot). - * - ******************************************************************************/ -static int32_t Scan_AdvHandler(L2_INST *instPtr) -{ - ASSERT(instPtr != NULL); - L2_SCAN_FSM *scanFsmPtr = instPtr->scanFSM; - PHY_INST *phyRef = instPtr->config.phyInstPtr; - TMC_INST *tmcRef = instPtr->config.tmcInstPtr; - DBG_INFO("** Net-Setup - Advertisement Procedure (Attempts: %" PRIu8 ") **\n", scanFsmPtr->advCnt); - - // if received a valid bm frame. - if (scanFsmPtr->isAdvRecvd == true) - { - // antenna index from listening state - scanFsmPtr->antIndex = Phy_ListenAntIndex(phyRef); - - // start a acknowledge frame reception if in the target slot - if ((TimeCtrl_GetIntCnt(tmcRef) + 1) % ACK_FRAME_SLOTS == 0) // FIXME: correct? - { - // using pull mode to transmit confirm frame - // since first time sync procedure is accomplished in ADV stage. - (void)Phy_SetAntIndex(phyRef, scanFsmPtr->antIndex); - (void)Phy_SetMode(phyRef, PHY_MODE_POLL); - (void)L2_SetupNextSlot(instPtr, L2_TOR_TX, L2_FRAME_ACK); - } - } - // no valid bm frame was received. - else - { - (void)L2_SetupNextSlot(instPtr, L2_TOR_RX, L2_FRAME_ADV); - scanFsmPtr->advCnt++; - } - return SUCCESS; -} - /*****************************************************************************/ /** * @brief Packing Scan message to a bit array. @@ -224,7 +166,6 @@ int32_t L2_Scan_PktHandler(L2_INST *instPtr, uint8_t *msg) ASSERT(instPtr != NULL); ASSERT(msg != NULL); int32_t Status; - L2_SCAN_FSM *scanFsmPtr = instPtr->scanFSM; L2_FRAME_TYPE frameType = L2_FRAME_NONE; L2_FrameGetChunk(msg, L2_MSG_TYPE, L2_MSG_TYPE_LEN, &frameType); @@ -315,8 +256,6 @@ int32_t L2_Scan_PktHandler(L2_INST *instPtr, uint8_t *msg) memcpy(instPtr->log.rxLog.data, msg, Phy_GetFrameLen(L2_L2frame2L1frame(L2_FRAME_ADV, L2_SVC_NONE))); instPtr->log.rxLog.dataId = dataId; - // trigger flag - AdvRecvStateUpdate(scanFsmPtr, true); Status = SUCCESS; break; } @@ -352,6 +291,7 @@ int32_t L2_Scan_PktHandler(L2_INST *instPtr, uint8_t *msg) node->nodeInfo.speed.x = message->srcSpeedX; node->nodeInfo.speed.y = message->srcSpeedY; node->nodeInfo.speed.z = message->srcSpeedZ; + node->nodeInfo.antIndex = Phy_ListenAntIndex(instPtr->config.phyInstPtr); // Reset node ttl node->ttlCnt = 0; @@ -395,29 +335,6 @@ int32_t L2_Scan_PktHandler(L2_INST *instPtr, uint8_t *msg) return Status; } -/*****************************************************************************/ -/** - * @brief Initialize scan FSM. - * - * @param instPtr - * - * @return - * - ******************************************************************************/ -int32_t L2_Scan_Init(L2_SCAN_FSM **scanFSMPtr) -{ - ASSERT(scanFSMPtr != NULL); - *scanFSMPtr = (L2_SCAN_FSM *)malloc(sizeof(L2_SCAN_FSM)); - if (*scanFSMPtr == NULL) - { - DBG_ERROR("Failed to allocate memory for scanFsmPtr.\n"); - return ENOMEM; - } - L2_Scan_Reset(*scanFSMPtr); - (*scanFSMPtr)->antIndex = 0; - return SUCCESS; -} - /*****************************************************************************/ /** * @brief Reset ScanNet FSM @@ -451,31 +368,6 @@ void L2_Scan_Destroy(L2_SCAN_FSM *scanFSMPtr) free(scanFSMPtr); } -/*****************************************************************************/ -/** - * @brief Execute a member node scan net procedure. - * - * @param instPtr a pointer to linklayer layer instance - * - * @return used slot (2 ms slot). - * - ******************************************************************************/ -int32_t L2_Scan_Proc(L2_INST *instPtr) -{ - L2_SCAN_FSM *scanFSM = instPtr->scanFSM; - if (L2_GetNodeType(instPtr) == L2_NODE_HEAD) - { - DBG_ERROR("Only member node needs to execute L2_Scan_Proc. \n"); - return FAILURE; - } - int32_t Status; - DBG_INFO("-------- ScanNet Process --------\n"); - - Status = Scan_AdvHandler(instPtr); - - return Status; -} - /*****************************************************************************/ /**