From 94bcdccd5b544199d4fc11b659c34438a9c5beb6 Mon Sep 17 00:00:00 2001 From: Gatsby Van Date: Wed, 20 Dec 2023 20:04:14 +0800 Subject: [PATCH] rewrite rtt fsm implementation, simplified logic. --- datalink814_ge/src/linklayer/net_mgmt.c | 47 ++++++------------------- 1 file changed, 11 insertions(+), 36 deletions(-) diff --git a/datalink814_ge/src/linklayer/net_mgmt.c b/datalink814_ge/src/linklayer/net_mgmt.c index 2d18802..2083ff8 100644 --- a/datalink814_ge/src/linklayer/net_mgmt.c +++ b/datalink814_ge/src/linklayer/net_mgmt.c @@ -899,6 +899,14 @@ int32_t MgmtNet_Routine(L2_INST* instPtr, const L2_RTNE_TABLE_ENTRY* rtneEntry){ torState = L2_TOR_SUSPEND; } + // Update RTT FSM if needed. + if (L2_GetLastFrameType(instPtr) == L2_INTRA_TSYNC_FRAME && L2_GetLastTor(instPtr) == L2_TOR_RX) { + RTT_FsmUpdate(instPtr, L2_TOR_RX); + } + if (rtneEntry->slotType == SLOT_INTRA_TSYNC && torState == L2_TOR_TX) { + RTT_FsmUpdate(instPtr, L2_TOR_TX); + } + switch (rtneEntry->slotType) { case SLOT_INTER_MGMT: // TODO: @@ -920,51 +928,18 @@ int32_t MgmtNet_Routine(L2_INST* instPtr, const L2_RTNE_TABLE_ENTRY* rtneEntry){ break; case SLOT_INTRA_TSYNC: if (torState == L2_TOR_TX) { - // TODO: - memset(instPtr->sendPktData, 0x00, INTRA_RTT_FRAME_LENGTH_MAX); // FIXME - L2_RTT_FSM* rttFsmPtr = L2_GetRttDesc(instPtr); - L2_RTT_SATGE rttStage = RTT_GetCurrentStage(rttFsmPtr); - if(rttStage == RTT_REQ1 || rttStage == RTT_REQ2){ - if(rttStage == RTT_REQ1){ - DBG_INFO("MGMT Sending RTT REQ-1\n"); - rttData->rttTime.timeH = rttRecord->Tt1.timeH; - rttData->rttTime.timeL = rttRecord->Tt1.timeL; - rttData->rttDoppler = RTT_DOPPLER_NONE; - } - else{ //RTT_REQ2 - DBG_INFO("MGMT Sending RTT REQ-2\n"); - rttData->rttTime.timeH = (rttFsmPtr->isR2Valid)? rttRecord->TroundA.timeH : RTT_TIME_NONE; - rttData->rttTime.timeL = (rttFsmPtr->isR2Valid)? rttRecord->TroundA.timeL : RTT_TIME_NONE; - rttData->rttDoppler = (rttFsmPtr->isR2Valid)? rttRecord->dopplerR2:RTT_DOPPLER_NONE; - } + memset(instPtr->sendPktData, 0xAA, INTRA_RTT_FRAME_LENGTH_MAX); + if(L2_GetNodeType(instPtr) == HEAD_NODE){ if(MgmtPkt_Packing(instPtr, MGMTPKT_INTRA_RTTREQ) != SUCCESS) { Status = FAILURE; goto routine_err; } } - else if(rttStage == RTT_RSP1 || rttStage == RTT_RSP2){ - if(rttStage == RTT_RSP1){ - DBG_INFO("MGMT Sending RTT RSP-1\n"); - rttData->rttTime.timeH = (rttFsmPtr->isR1Valid) ? rttRecord->TreplyB.timeH : RTT_TIME_NONE; - rttData->rttTime.timeL = (rttFsmPtr->isR1Valid) ? rttRecord->TreplyB.timeL : RTT_TIME_NONE; - rttData->rttDoppler = (rttFsmPtr->isR1Valid) ? rttRecord->dopplerR1 : RTT_DOPPLER_NONE; - } - else{ //RTT_RSP2 - DBG_INFO("MGMT Sending RTT RSP-2\n"); - rttData->rttTime.timeH = (rttFsmPtr->isR3Valid) ? rttRecord->TreplyB.timeH : RTT_TIME_NONE; - rttData->rttTime.timeL = (rttFsmPtr->isR3Valid) ? rttRecord->TreplyB.timeL : RTT_TIME_NONE; - rttData->rttDoppler = (rttFsmPtr->isR3Valid) ? rttRecord->dopplerR3 : RTT_DOPPLER_NONE; - } - // Packing message. + else { if(MgmtPkt_Packing(instPtr, MGMTPKT_INTRA_RTTRSP) != SUCCESS) { Status = FAILURE; goto routine_err; } - - } - else{ - DBG_ERROR("Unexpected RTT Stage: %d.\n", rttStage); - torState = L2_TOR_SUSPEND; } } L2_SetupNextSlot(instPtr, torState, L2_INTRA_TSYNC_FRAME);