# macro for output file name and makefile name
#
-PLTFRM_FLAGS= -UMSPD -DODU -DINTEL_FAPI -UODU_MEMORY_DEBUG_LOG -DDEBUG_ASN_PRINT -DDEBUG_PRINT -DERROR_PRINT #-DNR_DRX -DCALL_FLOW_DEBUG_LOG -DODU_SLOT_IND_DEBUG_LOG
+PLTFRM_FLAGS= -UMSPD -DODU -DINTEL_FAPI -UODU_MEMORY_DEBUG_LOG -DDEBUG_ASN_PRINT -DDEBUG_PRINT -DERROR_PRINT -USTART_DL_UL_DATA -UNR_DRX -UCALL_FLOW_DEBUG_LOG -UODU_SLOT_IND_DEBUG_LOG
ifeq ($(MODE),TDD)
PLTFRM_FLAGS += -DNR_TDD
#include "mac.h"
#include "mac_utils.h"
#include "mac_harq_dl.h"
+#include "mac_ue_mgr.h"
/**
* @brief Add HARQ process to UE's DL HARQ Entity
{
uint8_t tbIdx;
MacRaCbInfo *raCb = ueCb->raCb;
- DlHarqProcCb *hqProcCb;
if(raCb && (raCb->crnti == ueCb->crnti))
{
- hqProcCb = &raCb->msg4HqInfo;
MAC_FREE(raCb->msg4Pdu, raCb->msg4PduLen);
for(tbIdx = 0; tbIdx < raCb->msg4HqInfo.numTb; tbIdx++)
{
--- /dev/null
+/*******************************************************************************
+################################################################################
+# Copyright (c) [2017-2019] [Radisys] #
+# #
+# Licensed under the Apache License, Version 2.0 (the "License"); #
+# you may not use this file except in compliance with the License. #
+# You may obtain a copy of the License at #
+# #
+# http://www.apache.org/licenses/LICENSE-2.0 #
+# #
+# Unless required by applicable law or agreed to in writing, software #
+# distributed under the License is distributed on an "AS IS" BASIS, #
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
+# See the License for the specific language governing permissions and #
+# limitations under the License. #
+################################################################################
+ *******************************************************************************/
+
+void deleteMacRaCb(uint16_t cellIdx, MacUeCb *ueCb);
+/**********************************************************************
+ End of file
+ **********************************************************************/
}
ret1 = cmUnpkUdxStruct(mBuf,0,(uint8_t *)cfgCfmInfo, sizeof(RlcCfgCfmInfo));
-#if(ERRCLASS & ERRCLS_DEBUG)
if(ret1 != ROK)
{
+#if(ERRCLASS & ERRCLS_DEBUG)
ODU_PUT_MSG_BUF(mBuf);
SLogError(pst->dstEnt, pst->dstInst, pst->dstProcId,
__FILE__, __LINE__, (ErrCls)ERRCLS_DEBUG,
(ErrVal)EUDXXXX, (ErrVal)ret1, "Unpacking failure");
return ( ret1 );
- }
#endif /* ERRCLASS & ERRCLS_DEBUG */
+ }
break;
}
case UDX_SEL_LWLC:
}
}
+#ifdef START_DL_UL_DATA
+ startDlData();
+#endif
+
return ROK;
}
/*******************************************************************
*
- * @brief Handles Console input
+ * @brief start Dl data
*
* @details
*
- * Function : cuConsoleHandler
+ * Function : startDlData
*
- * Functionality: Handles Console input
+ * Functionality: start the downlink data
*
* @params[in]
* @return ROK - success
* RFAILED - failure
*
* ****************************************************************/
-void *cuConsoleHandler(void *args)
+
+uint8_t startDlData()
{
- char ch;
uint32_t teId = 0;
uint32_t duId;
uint8_t ret = ROK;
uint8_t cnt = 0;
+ int32_t totalNumOfTestFlow = 20;
EgtpTeIdCb *teidCb = NULLP;
+
+ while(totalNumOfTestFlow)
+ {
+ for(duId = 1; duId<=MAX_DU_SUPPORTED; duId++)
+ {
+ for(teId = 1; teId <= NUM_TUNNEL_TO_PUMP_DATA; teId++)
+ {
+ teidCb = NULLP;
+ cmHashListFind(&(egtpCb.dstCb[duId-1].teIdLst), (uint8_t *)&(teId), sizeof(uint32_t), 0, (PTR *)&teidCb);
+ if(teidCb)
+ {
+ cnt =0;
+ DU_LOG("\nDEBUG --> EGTP: Sending DL User Data(duId %d, teId:%d)\n", duId, teId);
+ while(cnt < NUM_DL_PACKETS)
+ {
+ ret = cuEgtpDatReq(duId, teId);
+ if(ret != ROK)
+ {
+ DU_LOG("\nERROR --> EGTP: Issue with teid=%d\n",teId);
+ break;
+ }
+ /* TODO : sleep(1) will be removed later once we will be able to
+ * support the continuous data pack transfer */
+ sleep(1);
+ cnt++;
+ }
+ }
+ else
+ {
+ DU_LOG("\nDEBUG --> EGTP: TunnelId Not Found for (duId %d, teId:%d)\n", duId, teId);
+ }
+ }
+ }
+ totalNumOfTestFlow--;
+ }
+
+ return ROK;
+}
+
+/*******************************************************************
+ *
+ * @brief Handles Console input
+ *
+ * @details
+ *
+ * Function : cuConsoleHandler
+ *
+ * Functionality: Handles Console input
+ *
+ * @params[in]
+ * @return ROK - success
+ * RFAILED - failure
+ *
+ * ****************************************************************/
+void *cuConsoleHandler(void *args)
+{
+ char ch;
while(true)
{
* NUM_TUNNEL_TO_PUMP_DATA = 9, NUM_DL_PACKETS = 1.
* totalDataPacket = totalNumOfTestFlow * NUM_TUNNEL_TO_PUMP_DATA * NUM_DL_PACKETS
* totalDataPacket = [500*9*1] */
- int32_t totalNumOfTestFlow = 2;
-
- while(totalNumOfTestFlow)
- {
- for(duId = 1; duId<=MAX_DU_SUPPORTED; duId++)
- {
- for(teId = 1; teId <= NUM_TUNNEL_TO_PUMP_DATA; teId++)
- {
- teidCb = NULLP;
- cmHashListFind(&(egtpCb.dstCb[duId-1].teIdLst), (uint8_t *)&(teId), sizeof(uint32_t), 0, (PTR *)&teidCb);
- if(teidCb)
- {
- cnt =0;
- DU_LOG("\nDEBUG --> EGTP: Sending DL User Data(duId %d, teId:%d)\n", duId, teId);
- while(cnt < NUM_DL_PACKETS)
- {
- ret = cuEgtpDatReq(duId, teId);
- if(ret != ROK)
- {
- DU_LOG("\nERROR --> EGTP: Issue with teid=%d\n",teId);
- break;
- }
- /* TODO : sleep(1) will be removed later once we will be able to
- * support the continuous data pack transfer */
- sleep(1);
- cnt++;
- }
- }
- else
- {
- DU_LOG("\nDEBUG --> EGTP: TunnelId Not Found for (duId %d, teId:%d)\n", duId, teId);
- }
- }
- }
- totalNumOfTestFlow--;
- }
+
+ startDlData();
#endif
continue;
}
uint8_t procF1UeContextSetupReq(F1AP_PDU_t *f1apMsg)
{
int8_t ueIdx = -1;
- uint8_t ret=0, ieIdx=0, ieExtIdx = 0, servCellIdx = 0;
+ uint8_t ret=0, ieIdx=0, ieExtIdx = 0;
+ //uint8_t servCellIdx = 0;
bool ueCbFound = false, hoInProgress = false;
uint16_t cellIdx=0;
uint64_t nrCellId = 0;
case ProtocolIE_ID_id_ServCellIndex:
{
- servCellIdx = ueSetReq->protocolIEs.list.array[ieIdx]->value.choice.ServCellIndex;
+ //servCellIdx = ueSetReq->protocolIEs.list.array[ieIdx]->value.choice.ServCellIndex;
break;
}
#include "phy_stub_utils.h"
#include "lwr_mac_phy_stub_inf.h"
+/*******************************************************************
+ *
+ * @brief start the uplink data
+ *
+ * @details
+ *
+ * Function : startUlData
+ *
+ * Functionality: start the uplink data
+ *
+ * @params[in]
+ *
+ * @return void
+ *
+ * ****************************************************************/
+
+void startUlData()
+{
+ uint8_t ueIdx=0, drbIdx=0;
+
+ /* Start Pumping data from PHY stub to DU */
+ for(ueIdx=0; ueIdx < phyDb.ueDb.numActvUe; ueIdx++)
+ {
+ for(drbIdx = 0; drbIdx < NUM_DRB_TO_PUMP_DATA; drbIdx++) //Number of DRB times the loop will run
+ {
+ DU_LOG("\nDEBUG --> PHY STUB: Sending UL User Data[DrbId:%d] for UEIdx %d\n",drbIdx,ueIdx);
+ l1SendUlUserData(drbIdx,ueIdx);
+ }
+ }
+}
+
/*******************************************************************
*
* @brief Builds and sends param response to MAC CL
if(pduInfo->pdu_length)
MAC_FREE(pduInfo->pduData, pduInfo->pdu_length);
MAC_FREE(rxDataInd, sizeof(fapi_rx_data_indication_t));
+
+#ifdef START_DL_UL_DATA
+ if(phyDb.ueDb.ueCb[ueId-1].msgRrcReconfigComp == true)
+ {
+ startUlData();
+ }
+#endif
return ROK;
}
#endif
return ROK;
}
+
/*******************************************************************
*
* @brief Builds and Send the Slot Indication message to MAC
}
CMCHKPK(oduPackPointer, (PTR)slotIndMsg, mBuf);
ODU_POST_TASK(&pst, mBuf);
+
}
#endif
return ROK;