rewrite rtt fsm implementation, simplified logic.

This commit is contained in:
Gatsby Van
2023-12-20 20:04:14 +08:00
parent bfc1a14a50
commit 94bcdccd5b
+11 -36
View File
@@ -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);