rewrite rtt fsm implementation, simplified logic.
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user