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 56b8382..6286a9a 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 @@ -207,10 +207,9 @@ typedef struct */ typedef struct { - PAYLOAD rxLog; - PAYLOAD txLog; - uint32_t pktRecv; - uint32_t pktCorrect; + uint32_t txCnt; + uint32_t rxCnt; + uint32_t rxdCnt; #ifdef DATALINK_ENABLE_BERTEST uint32_t bitTotal; uint32_t bitError; diff --git a/df_datalink_sp/src/networking/link_layer/service.c b/df_datalink_sp/src/networking/link_layer/service.c index 94d603c..c890866 100644 --- a/df_datalink_sp/src/networking/link_layer/service.c +++ b/df_datalink_sp/src/networking/link_layer/service.c @@ -402,6 +402,7 @@ int32_t L2_Service_Routine(L2_INST *instPtr, const L2_RTNE_TABLE_ENTRY *rtneEntr case L2_SLOT_SERVICE: if (torState == L2_TOR_TX) { + svcFSMPtr->txCnt++; #ifndef DATALINK_ENABLE_BERTEST // Packing service data Service_Packing(instPtr, L2_SVC_FRAME, rtneEntry->dst); @@ -409,6 +410,10 @@ int32_t L2_Service_Routine(L2_INST *instPtr, const L2_RTNE_TABLE_ENTRY *rtneEntr memcpy(instPtr->sendPktData, testData, L2_SVC_PACK_LEN); #endif } + else + { + svcFSMPtr->rxCnt++; + } L2_SetupNextSlot(instPtr, torState, L2_SVC_FRAME); break; default: @@ -417,11 +422,11 @@ int32_t L2_Service_Routine(L2_INST *instPtr, const L2_RTNE_TABLE_ENTRY *rtneEntr } #ifdef DATALINK_ENABLE_BERTEST uint32_t pktLoss; - pktLoss = instPtr->log.svcRecvCnt - instPtr->log.svcCorrectCnt; - instPtr->serviceFSM->lossRate = (instPtr->log.svcRecvCnt == 0) ? 0 : (double)pktLoss / (double)instPtr->serviceFSM->pktRecv; - instPtr->serviceFSM->errorRate = (instPtr->serviceFSM->bitTotal == 0) ? 0 : (double)instPtr->serviceFSM->bitError / (double)instPtr->serviceFSM->bitTotal; - DBG_PRINT("Packet Loss Rate -- Total: %lu, Loss: %lu.\n", instPtr->serviceFSM->pktRecv, pktLoss); - DBG_PRINT("Bit Error Rate -- Total:%lu, Error:%lu.\n", instPtr->serviceFSM->bitTotal, instPtr->serviceFSM->bitError); + pktLoss = svcFSMPtr->rxCnt - svcFSMPtr->rxdCnt; + svcFSMPtr->lossRate = (svcFSMPtr->rxCnt == 0) ? 0 : (double)pktLoss / (double)svcFSMPtr->rxCnt; + svcFSMPtr->errorRate = (svcFSMPtr->bitTotal == 0) ? 0 : (double)svcFSMPtr->bitError / (double)svcFSMPtr->bitTotal; + DBG_PRINT("Packet Loss Rate -- Total: %lu, Loss: %lu.\n", instPtr->log.svcRxCnt, pktLoss); + DBG_PRINT("Bit Error Rate -- Total:%lu, Error:%lu.\n", svcFSMPtr->bitTotal, svcFSMPtr->bitError); #endif return SUCCESS; }