/** @file sch_slot_ind.c
@brief This module processes slot indications
*/
-#include "stdbool.h"
-#include "envopt.h" /* environment options */
-#include "envdep.h" /* environment dependent */
-#include "envind.h" /* environment independent */
-#include "gen.h" /* general layer */
-#include "ssi.h" /* system service interface */
-#include "cm_tkns.h" /* Common Token Defines */
-#include "cm_llist.h" /* Common Link List Defines */
-#include "cm_hash.h" /* Common Hash List Defines */
-#include "cm_mblk.h" /* common memory link list library */
-#include "cm_lte.h" /* Common LTE Defines */
+#include "common_def.h"
#include "tfu.h"
#include "lrg.h"
-
-#include "gen.x" /* general layer typedefs */
-#include "ssi.x" /* system services typedefs */
-#include "cm5.x" /* system services */
-#include "cm_tkns.x" /* Common Token Definitions */
-#include "cm_llist.x" /* Common Link List Definitions */
-#include "cm_lib.x" /* Common Library Definitions */
-#include "cm_hash.x" /* Common Hash List Definitions */
-#include "cm_mblk.x" /* common memory link list library */
-#include "cm_lte.x" /* Common LTE Defines */
#include "tfu.x"
#include "lrg.x"
#include "du_log.h"
#include "mac_sch_interface.h"
#include "sch.h"
#include "sch_utils.h"
-#include "common_def.h"
SchMacDlAllocFunc schMacDlAllocOpts[] =
{
{
int ret = ROK;
uint8_t ssb_rep;
- uint16_t sfnSlot = 0;
+ uint16_t slot, sfnSlot = 0;
DlSchedInfo dlSchedInfo;
memset(&dlSchedInfo,0,sizeof(DlSchedInfo));
DlBrdcstAlloc *dlBrdcstAlloc = &dlSchedInfo.brdcstAlloc;
sfnSlot = ((dlSchedInfo.schSlotValue.broadcastTime.sfn * 10) +
dlSchedInfo.schSlotValue.broadcastTime.slot);
+ slot = dlSchedInfo.schSlotValue.currentTime.slot;
+
dlSchedInfo.cellId = cell->cellId;
/* Identify SSB ocassion*/
if(dlBrdcstAlloc->ssbTrans || dlBrdcstAlloc->sib1Trans)
{
dlSchedInfo.isBroadcastPres = true;
- ret = schBroadcastAlloc(cell,dlBrdcstAlloc,dlSchedInfo.schSlotValue.broadcastTime.slot);
+ slot = dlSchedInfo.schSlotValue.broadcastTime.slot;
+ ret = schBroadcastAlloc(cell,dlBrdcstAlloc,slot);
if(ret != ROK)
{
DU_LOG("\nschBroadcastAlloc failed");
/* check for RAR */
if(cell->schDlSlotInfo[dlSchedInfo.schSlotValue.rarTime.slot]->rarInfo != NULLP)
{
+ slot = dlSchedInfo.schSlotValue.rarTime.slot;
SCH_ALLOC(rarAlloc, sizeof(RarAlloc));
if(!rarAlloc)
{
dlSchedInfo.rarAlloc = rarAlloc;
/* RAR info is copied, this was earlier filled in schProcessRachInd */
- memcpy(&rarAlloc->rarInfo,cell->schDlSlotInfo[dlSchedInfo.schSlotValue.rarTime.slot]->rarInfo, \
- sizeof(RarInfo));
+ memcpy(&rarAlloc->rarInfo,cell->schDlSlotInfo[slot]->rarInfo, sizeof(RarInfo));
/* pdcch and pdsch data is filled */
schFillRar(rarAlloc,
- cell->schDlSlotInfo[dlSchedInfo.schSlotValue.rarTime.slot]->rarInfo->raRnti,
+ cell->schDlSlotInfo[slot]->rarInfo->raRnti,
cell->cellCfg.phyCellId,
cell->cellCfg.ssbSchCfg.ssbOffsetPointA);
- SCH_FREE(cell->schDlSlotInfo[dlSchedInfo.schSlotValue.rarTime.slot]->rarInfo,sizeof(RarAlloc));
- cell->schDlSlotInfo[dlSchedInfo.schSlotValue.rarTime.slot]->rarInfo = NULLP;
+ SCH_FREE(cell->schDlSlotInfo[slot]->rarInfo,sizeof(RarAlloc));
+ cell->schDlSlotInfo[slot]->rarInfo = NULLP;
}
/* check for MSG4 */
if(cell->schDlSlotInfo[dlSchedInfo.schSlotValue.msg4Time.slot]->msg4Info != NULLP)
{
+ slot = dlSchedInfo.schSlotValue.msg4Time.slot;
SCH_ALLOC(msg4Alloc, sizeof(Msg4Alloc));
if(!msg4Alloc)
{
dlSchedInfo.msg4Alloc = msg4Alloc;
/* Msg4 info is copied, this was earlier filled in macSchDlRlcBoInfo */
- memcpy(&msg4Alloc->msg4Info, cell->schDlSlotInfo[dlSchedInfo.schSlotValue.msg4Time.slot]->msg4Info, \
+ memcpy(&msg4Alloc->msg4Info, cell->schDlSlotInfo[slot]->msg4Info, \
sizeof(Msg4Info));
/* pdcch and pdsch data is filled */
schDlRsrcAllocMsg4(msg4Alloc, cell, dlSchedInfo.schSlotValue.msg4Time.slot);
+
+ /* PUCCH resource */
+ schAllocPucchResource(cell, msg4Alloc->msg4Info.crnti, dlSchedInfo.schSlotValue.msg4Time.slot);
+
SCH_FREE(cell->schDlSlotInfo[dlSchedInfo.schSlotValue.msg4Time.slot]->msg4Info, sizeof(Msg4Info));
cell->schDlSlotInfo[dlSchedInfo.schSlotValue.msg4Time.slot]->msg4Info = NULL;
}
schUlResAlloc(cell, schInst);
+ memset(cell->schDlSlotInfo[slot], 0, sizeof(SchDlSlotInfo));
+
return ret;
}