forked from gatsby/datalink_repo
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;
|
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) {
|
switch (rtneEntry->slotType) {
|
||||||
case SLOT_INTER_MGMT:
|
case SLOT_INTER_MGMT:
|
||||||
// TODO:
|
// TODO:
|
||||||
@@ -920,51 +928,18 @@ int32_t MgmtNet_Routine(L2_INST* instPtr, const L2_RTNE_TABLE_ENTRY* rtneEntry){
|
|||||||
break;
|
break;
|
||||||
case SLOT_INTRA_TSYNC:
|
case SLOT_INTRA_TSYNC:
|
||||||
if (torState == L2_TOR_TX) {
|
if (torState == L2_TOR_TX) {
|
||||||
// TODO:
|
memset(instPtr->sendPktData, 0xAA, INTRA_RTT_FRAME_LENGTH_MAX);
|
||||||
memset(instPtr->sendPktData, 0x00, INTRA_RTT_FRAME_LENGTH_MAX); // FIXME
|
if(L2_GetNodeType(instPtr) == HEAD_NODE){
|
||||||
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;
|
|
||||||
}
|
|
||||||
if(MgmtPkt_Packing(instPtr, MGMTPKT_INTRA_RTTREQ) != SUCCESS) {
|
if(MgmtPkt_Packing(instPtr, MGMTPKT_INTRA_RTTREQ) != SUCCESS) {
|
||||||
Status = FAILURE;
|
Status = FAILURE;
|
||||||
goto routine_err;
|
goto routine_err;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(rttStage == RTT_RSP1 || rttStage == RTT_RSP2){
|
else {
|
||||||
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.
|
|
||||||
if(MgmtPkt_Packing(instPtr, MGMTPKT_INTRA_RTTRSP) != SUCCESS) {
|
if(MgmtPkt_Packing(instPtr, MGMTPKT_INTRA_RTTRSP) != SUCCESS) {
|
||||||
Status = FAILURE;
|
Status = FAILURE;
|
||||||
goto routine_err;
|
goto routine_err;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
DBG_ERROR("Unexpected RTT Stage: %d.\n", rttStage);
|
|
||||||
torState = L2_TOR_SUSPEND;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
L2_SetupNextSlot(instPtr, torState, L2_INTRA_TSYNC_FRAME);
|
L2_SetupNextSlot(instPtr, torState, L2_INTRA_TSYNC_FRAME);
|
||||||
|
|||||||
Reference in New Issue
Block a user