<JIRA ID: ODUHIGH-390 : Ul throughput per SNSSAI (KPI)>
[o-du/l2.git] / src / 5gnrrlc / rlc_tmr.c
index 0e1f789..fc8ae66 100755 (executable)
@@ -85,6 +85,7 @@
 /* private function declarations */
 static Void rlcBndTmrExpiry(PTR cb);
 
+
 /**
  * @brief Handler to start timer
  *       
@@ -585,9 +586,12 @@ void rlcUeThptTmrExpiry(PTR cb)
  */
 void rlcSnssaiThptTmrExpiry(PTR cb)
 {
-   long double tpt;
    RlcThpt *rlcThptCb = (RlcThpt*)cb; 
    
+   static uint8_t snssaiCntDl = 0, snssaiCntUl = 0;
+   /*Bit map to keep record of reception of DL and UL Snssai Tput expiry*/
+   static uint8_t snssaiTputBitmap = DIR_NONE;
+
    /* If cell is not up, throughput details cannot be printed */
    if(gCellStatus != CELL_UP)
    {
@@ -595,14 +599,24 @@ void rlcSnssaiThptTmrExpiry(PTR cb)
       rlcStartTmr(RLC_GET_RLCCB(rlcThptCb->inst), (PTR)(rlcThptCb), EVENT_RLC_SNSSAI_THROUGHPUT_TMR);
       return;
    }
-
-   DU_LOG("\n==================================================================");
-   if(rlcThptCb->snssaiTputInfo.tputPerSnssaiList != NULLP)
+   
+   if(rlcThptCb->snssaiTputInfo.dlTputPerSnssaiList != NULLP)
    {
-      DU_LOG("\n===================== DL Throughput Per SNSSAI ==============================");
-  
-      rlcCalculateTputPerSnssai(rlcThptCb->snssaiTputInfo.tputPerSnssaiList);
-      DU_LOG("\n==================================================================");
+      snssaiCntDl = rlcCalculateTputPerSnssai(rlcThptCb->snssaiTputInfo.dlTputPerSnssaiList, DIR_DL);
+      snssaiTputBitmap |= DIR_DL;
+      arrTputPerSnssai[DIR_DL] = rlcThptCb->snssaiTputInfo.dlTputPerSnssaiList;
+   }
+   if(rlcThptCb->snssaiTputInfo.ulTputPerSnssaiList != NULLP)
+   {
+      snssaiCntUl = rlcCalculateTputPerSnssai(rlcThptCb->snssaiTputInfo.ulTputPerSnssaiList, DIR_UL);
+      snssaiTputBitmap |= DIR_UL;
+      arrTputPerSnssai[DIR_UL] = rlcThptCb->snssaiTputInfo.ulTputPerSnssaiList;
+   }
+   if(snssaiTputBitmap == DIR_BOTH)
+   {
+      //call the function
+      BuildSliceReportToDu(MAX(snssaiCntUl, snssaiCntDl));
+      snssaiTputBitmap = DIR_NONE;
    }
    /* Restart timer */
    rlcStartTmr(RLC_GET_RLCCB(rlcThptCb->inst), (PTR)rlcThptCb, EVENT_RLC_SNSSAI_THROUGHPUT_TMR);