X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fcm%2Fmac_sch_interface.h;h=db34fd73280c945c1f6c8ce670de473aa4ca6e54;hb=b4e352a998576ab71aa74eb8b970f0ba39b471af;hp=13cbf5d15cedb95ee20161a70ed9e5a0deaeeffb;hpb=c98e69a3cfa10b1b47dafe94062dc68817cae6a1;p=o-du%2Fl2.git diff --git a/src/cm/mac_sch_interface.h b/src/cm/mac_sch_interface.h index 13cbf5d15..db34fd732 100644 --- a/src/cm/mac_sch_interface.h +++ b/src/cm/mac_sch_interface.h @@ -453,6 +453,8 @@ typedef struct resAllocType1 uint16_t numPrb; }ResAllocType1; +typedef struct resAllocType1 FreqDomainRsrc; + typedef struct { uint32_t ssbPbchPwr; /* SSB block power */ @@ -467,11 +469,12 @@ typedef struct uint8_t totNumSsb; /*S = Total Number of Actual SSB transmitted*/ }SchSsbCfg; +/* Reference -> O-RAN.WG8.AAD.0-v07.00, Table 9-32 BWP Information */ typedef struct bwpCfg { uint8_t subcarrierSpacing; uint8_t cyclicPrefix; - ResAllocType1 freqAlloc; + FreqDomainRsrc freqAlloc; }BwpCfg; typedef struct prg @@ -517,14 +520,17 @@ typedef struct pdschFreqAlloc { uint8_t resourceAllocType; /* since we are using type-1, rbBitmap excluded */ - ResAllocType1 freqAlloc; + uint8_t rbBitmap[36]; + uint16_t startPrb; + uint16_t numPrb; uint8_t vrbPrbMapping; -} PdschFreqAlloc; +}PdschFreqAlloc; typedef struct pdschTimeAlloc { - uint8_t rowIndex; - TimeDomainAlloc timeAlloc; + uint8_t rowIndex; + uint16_t startSymb; + uint16_t numSymb; } PdschTimeAlloc; typedef struct txPowerPdschInfo @@ -533,6 +539,7 @@ typedef struct txPowerPdschInfo uint8_t powerControlOffsetSS; } TxPowerPdschInfo; +/* Reference -> O-RAN.WG8.AAD.0-v07.00, Table 9-43 PDSCH Configuration */ typedef struct pdschCfg { uint16_t pduBitmap; @@ -554,6 +561,7 @@ typedef struct pdschCfg /* SIB1 interface structure */ +/* Reference -> O-RAN.WG8.AAD.0-v07.00, Table 9-35 CORESET Configuration */ typedef struct coresetCfg { uint8_t coreSetSize; @@ -563,8 +571,9 @@ typedef struct coresetCfg uint8_t cceRegMappingType; uint8_t regBundleSize; uint8_t interleaverSize; - uint8_t coreSetType; uint16_t shiftIndex; + uint8_t coreSetType; + uint8_t coresetPoolIndex; uint8_t precoderGranularity; uint8_t cceIndex; uint8_t aggregationLevel; @@ -572,10 +581,11 @@ typedef struct coresetCfg typedef struct txPowerPdcchInfo { - uint8_t powerValue; + uint8_t beta_pdcch_1_0; uint8_t powerControlOffsetSS; -} TxPowerPdcchInfo; +}TxPowerPdcchInfo; +/* Reference -> O-RAN.WG8.AAD.0-v07.00, Table 9-42 DL-DCI Configuration */ typedef struct dlDCI { uint16_t rnti; @@ -586,15 +596,14 @@ typedef struct dlDCI BeamformingInfo beamPdcchInfo; TxPowerPdcchInfo txPdcchPower; PdschCfg *pdschCfg; -} DlDCI; +}DlDCI; typedef struct pdcchCfg { /* coreset-0 configuration */ CoresetCfg coresetCfg; - - uint16_t numDlDci; - DlDCI dci; /* as of now its only one DCI, later it will be numDlCi */ + uint16_t numDlDci; + DlDCI dci; /* as of now its only one DCI, later it will be numDlCi */ } PdcchCfg; /* end of SIB1 PDCCH structures */ @@ -618,7 +627,6 @@ typedef struct uint8_t n0; BwpCfg bwp; PdcchCfg sib1PdcchCfg; - PdschCfg sib1PdschCfg; PageCfg pageCfg; /*Config of Paging*/ }SchSib1Cfg; @@ -644,7 +652,7 @@ typedef struct schRachCfg typedef struct schBwpParams { - ResAllocType1 freqAlloc; + FreqDomainRsrc freqAlloc; uint8_t scs; uint8_t cyclicPrefix; }SchBwpParams; @@ -848,16 +856,15 @@ typedef struct schCellCfgCfm typedef struct ssbInfo { uint8_t ssbIdx; /* SSB Index */ - TimeDomainAlloc tdAlloc; /* Time domain allocation */ - ResAllocType1 fdAlloc; /* Freq domain allocation */ + TimeDomainAlloc tdAlloc; /* Time domain allocation */ + FreqDomainRsrc fdAlloc; /* Freq domain allocation */ }SsbInfo; typedef struct sib1AllocInfo { BwpCfg bwp; PdcchCfg sib1PdcchCfg; - PdschCfg sib1PdschCfg; -} Sib1AllocInfo; +}Sib1AllocInfo; typedef struct prachSchInfo { @@ -870,18 +877,21 @@ typedef struct prachSchInfo /* Interface structure signifying DL broadcast allocation for SSB, SIB1 */ typedef struct dlBrdcstAlloc { + uint16_t crnti; /* SI-RNTI */ /* Ssb transmission is determined as follows: * 0 : No tranamission * 1 : SSB Transmission * 2 : SSB Repetition */ - uint8_t ssbTrans; + uint8_t ssbTransmissionMode; uint8_t ssbIdxSupported; SsbInfo ssbInfo[MAX_SSB_IDX]; + bool systemInfoIndicator; + uint8_t *siContent; /* Sib1 transmission is determined as follows: * 0 : No tranamission * 1 : SIB1 Transmission * 2 : SIB1 Repetition */ - uint8_t sib1Trans; + uint8_t sib1TransmissionMode; Sib1AllocInfo sib1Alloc; }DlBrdcstAlloc; @@ -889,7 +899,7 @@ typedef struct msg3UlGrant { uint8_t freqHopFlag; uint16_t bwpSize; - ResAllocType1 msg3FreqAlloc; + FreqDomainRsrc msg3FreqAlloc; uint8_t k2Index; uint8_t mcs; uint8_t tpc; @@ -967,62 +977,87 @@ typedef struct schSlotValue SlotTimingInfo ulDciTime; }SchSlotValue; +typedef struct freqDomainAlloc +{ + uint8_t resAllocType; /* Resource allocation type */ + union + { + ResAllocType0 type0; + ResAllocType1 type1; + }resAlloc; +}FreqDomainAlloc; + +/* Reference -> O-RAN.WG8.AAD.0-v07.00, Table 9-36 DCI Format0_0 Configuration */ typedef struct format0_0 { uint8_t resourceAllocType; - /* since we are using type-1, hence rbBitmap excluded */ - ResAllocType1 freqAlloc; + FreqDomainAlloc freqAlloc; TimeDomainAlloc timeAlloc; uint16_t rowIndex; uint8_t mcs; - uint8_t harqProcId; /* HARQ Process ID */ - bool puschHopFlag; + uint8_t harqProcId; bool freqHopFlag; - uint8_t ndi; /* NDI */ - uint8_t rv; /* Redundancy Version */ + uint8_t ndi; + uint8_t rvIndex; uint8_t tpcCmd; - bool sUlCfgd; + bool sulIndicator; }Format0_0; +/* Reference -> O-RAN.WG8.AAD.0-v07.00, Table 9-40 DCI Format 0_1 Configuration */ typedef struct format0_1 { -/* TBD */ - + uint8_t carrierIndicator; + bool sulIndicator; + uint8_t bwpIndicator; + uint8_t resourceAlloc; + FreqDomainRsrc freqAlloc; + TimeDomainAlloc timeAlloc; + uint16_t rowIndex; + uint8_t mcs; + uint8_t harqProcId; + bool freqHopFlag; + uint8_t ndi; + uint8_t rvIndex; + uint8_t firstDownlinkAssignmentIndex; + uint8_t secondDownlinkAssignmentIndex; + uint8_t tpcCommand; + uint8_t srsResourceSetIndicator; + uint8_t srsResourceIndicator; + uint8_t tpmi; + uint8_t antennaPorts; + uint8_t srsRequest; + uint8_t csiRequest; + uint8_t cbgTransmissionInfo; + uint8_t ptrsDmrs; + uint8_t betaOffsetIndicator; + bool dmrsSequenceInitialization; + bool ulschIndicatior; }Format0_1; -typedef struct format1_0 +typedef struct dciFormat { -/* TBD */ - -}Format1_0; - -typedef struct format1_1 -{ -/* TBD */ -}Format1_1; - -typedef struct dciInfo -{ - uint16_t cellId; - uint16_t crnti; /* CRNI */ - SlotTimingInfo slotIndInfo; /* Slot Info: sfn, slot number */ - BwpCfg bwpCfg; /* BWP Cfg */ - CoresetCfg coresetCfg; /* Coreset1 Cfg */ - FormatType formatType; /* DCI Format */ + FormatType formatType; /* DCI Format */ union { Format0_0 format0_0; /* Format 0_0 */ Format0_1 format0_1; /* Format 0_1 */ - Format1_0 format1_0; /* Format 1_0 */ - Format1_1 format1_1; /* Format 1_1 */ }format; - DlDCI dciInfo; +}DciFormat; + +typedef struct dciInfo +{ + uint16_t crnti; /* CRNTI */ + BwpCfg bwpCfg; /* BWP Cfg */ + CoresetCfg coresetCfg; /* Coreset1 Cfg */ + DciFormat dciFormatInfo; /* Dci Format */ + DlDCI dciInfo; /* DlDCI */ }DciInfo; +/* Reference -> O-RAN.WG8.AAD.0-v07.00, Section 11.2.4.3.8 DL Scheduling Information */ typedef struct dlSchedInfo { - uint16_t cellId; /* Cell Id */ + uint16_t cellId; /* Cell Id */ SchSlotValue schSlotValue; /* Allocation for broadcast messages */ @@ -1064,16 +1099,6 @@ typedef struct tbInfo SchMcsTable mcsTable; /* MCS Table */ }TbInfo; -typedef struct freqDomainAlloc -{ - uint8_t resAllocType; /* Resource allocation type */ - union - { - ResAllocType0 type0; - ResAllocType1 type1; - }resAlloc; -}FreqDomainAlloc; - typedef struct schPuschInfo { uint8_t harqProcId; /* HARQ Process ID */ @@ -1927,196 +1952,11 @@ typedef struct schRlsHqInfo SchUeHqInfo *ueHqInfo; }SchRlsHqInfo; -/* function pointers */ -typedef uint8_t (*SchCellCfgCfmFunc) ARGS(( - Pst *pst, /* Post Structure */ - SchCellCfgCfm *schCellCfgCfm /* Cell Cfg Cfm */ - )); - -typedef uint8_t (*SchCellCfgFunc) ARGS(( - Pst *pst, /* Post Structure */ - SchCellCfg *schCellCfg /* Cell Cfg */ - )); - -typedef uint8_t (*SchMacDlAllocFunc) ARGS(( - Pst *pst, /* Post Structure */ - DlSchedInfo *dlSchedInfo /* dl allocation Info */ - )); - -typedef uint8_t (*SchMacDlPageAllocFunc) ARGS(( - Pst *pst, /* Post Structure */ - DlPageAlloc *dlPageAlloc /* dl Page allocation Info */ - )); - -typedef uint8_t (*SchMacUlSchInfoFunc) ARGS(( - Pst *pst, /* Post Structure */ - UlSchedInfo *ulSchedInfo /* UL Alloc Sch Info */ - )); - -typedef uint8_t (*MacSchRachIndFunc) ARGS(( - Pst *pst, /* Post structure */ - RachIndInfo *rachInd)); /* Rach Indication Info */ - -typedef uint8_t (*MacSchCrcIndFunc) ARGS(( - Pst *pst, /* Post structure */ - CrcIndInfo *crcInd)); /* CRC Info */ - -typedef uint8_t (*MacSchDlRlcBoInfoFunc) ARGS(( - Pst *pst, /* Post structure */ - DlRlcBoInfo *dlBoInfo)); /* DL BO Info */ - -typedef uint8_t (*MacSchAddUeConfigReqFunc) ARGS(( - Pst *pst, /* Post structure */ - SchUeCfgReq *ueCfgToSch)); /* Scheduler UE Cfg */ - -typedef uint8_t (*SchUeCfgRspFunc) ARGS(( - Pst *pst, /* Post structure */ - SchUeCfgRsp *cfgRsp)); /* Scheduler UE Cfg response */ - -typedef uint8_t (*MacSchSlotIndFunc) ARGS(( - Pst *pst, /* Post structure */ - SlotTimingInfo *slotInd)); /* Slot Info */ - -typedef uint8_t (*MacSchBsrFunc) ARGS(( - Pst *pst, - UlBufferStatusRptInd *bsrInd -)); - -typedef uint8_t (*MacSchDlHarqIndFunc) ARGS(( - Pst *pst, /* Post structure */ - DlHarqInd *dlHarqInd)); /* Dl HARQ IND Info */ - -typedef uint8_t (*MacSchSrUciIndFunc) ARGS(( - Pst *pst, /* Post structure */ - SrUciIndInfo *uciInd)); /* UCI IND Info */ - -typedef uint8_t (*MacSchModUeConfigReqFunc) ARGS(( - Pst *pst, /* Post structure */ - SchUeRecfgReq *ueRecfgToSch)); /* Scheduler UE Recfg */ - -typedef uint8_t (*SchUeRecfgRspFunc) ARGS(( - Pst *pst, /* Post structure */ - SchUeRecfgRsp *recfgRsp)); /* Scheduler UE Cfg response */ - -typedef uint8_t (*MacSchRachRsrcReqFunc) ARGS(( - Pst *pst, /* Post structure */ - SchRachRsrcReq *schRachRsrcReq)); /* RACH resource request to SCH */ - -typedef uint8_t (*SchRachRsrcRspFunc) ARGS(( - Pst *pst, /* Post structure */ - SchRachRsrcRsp *schRachRsrcRsp)); /* RACH resource request to MAC */ - -typedef uint8_t (*MacSchRachRsrcRelFunc) ARGS(( - Pst *pst, /* Post structure */ - SchRachRsrcRel *schRachRsrcRel)); /* RACH resource release to SCH */ - -typedef uint8_t (*MacSchUeDeleteReqFunc) ARGS(( - Pst *pst, /* Post structure */ - SchUeDelete *schUeDel)); /*Scheduler UE Del*/ - -typedef uint8_t (*SchUeDeleteRspFunc) ARGS(( - Pst *pst, /* Post structure */ - SchUeDeleteRsp *delRsp)); /* Scheduler UE delete response */ - -typedef uint8_t (*MacSchCellDeleteReqFunc) ARGS(( - Pst *pst, /* Post structure */ - SchCellDeleteReq *schCellDelete)); /*Scheduler UE Del*/ - -typedef uint8_t (*SchCellDeleteRspFunc) ARGS(( - Pst *pst, /* Post structure */ - SchCellDeleteRsp *schCellDeleteRsp)); /* Scheduler UE delete response */ - -typedef uint8_t (*MacSchSliceCfgReqFunc) ARGS(( - Pst *pst, /* Post structure */ - SchSliceCfgReq *schSliceCfgReq)); /* Scheduler Slice Cfg Req */ - -typedef uint8_t (*SchSliceCfgRspFunc) ARGS(( - Pst *pst, /* Post Structure */ - SchSliceCfgRsp *schSliceCfgRsp /* Cell Cfg Cfm */ - )); - -typedef uint8_t (*MacSchSliceRecfgReqFunc) ARGS(( - Pst *pst, /* Post structure */ - SchSliceRecfgReq *schSliceRecfgReq)); /* Scheduler Slice Recfg Req */ - -typedef uint8_t (*SchSliceRecfgRspFunc) ARGS(( - Pst *pst, /* Post Structure */ - SchSliceRecfgRsp *schSliceRecfgRsp /* Cell Recfg Cfm */ - )); - -typedef uint8_t (*MacSchPagingIndFunc) ARGS(( - Pst *pst, /* Post structure */ - SchPageInd *schPagingInd)); /* Paging Indication */ - -typedef uint8_t (*SchMacDlReleaseHarqFunc) ARGS(( - Pst *pst, /* Post structure */ - SchRlsHqInfo *rlsHqInfo)); /* Release Harq proc */ - /* function declarations */ -uint8_t packMacSchSlotInd(Pst *pst, SlotTimingInfo *slotInd); -uint8_t packSchMacDlAlloc(Pst *pst, DlSchedInfo *dlSchedInfo); -uint8_t packSchMacUlSchInfo(Pst *pst, UlSchedInfo *ulSchedInfo); -uint8_t packSchCellCfg(Pst *pst, SchCellCfg *schCellCfg); -uint8_t packSchCellCfgCfm(Pst *pst, SchCellCfgCfm *schCellCfgCfm); -uint8_t MacProcDlAlloc(Pst *pst, DlSchedInfo *dlSchedInfo); -uint8_t MacProcSchCellCfg(Pst *pst, SchCellCfg *schCellCfg); -uint8_t MacProcSchCellCfgCfm(Pst *pst, SchCellCfgCfm *schCellCfgCfm); -uint8_t SchHdlCellCfgReq(Pst *pst, SchCellCfg *schCellCfg); uint8_t schActvInit(Ent entity, Inst instId, Region region, Reason reason); -uint8_t MacProcUlSchInfo(Pst *pst, UlSchedInfo *ulSchedInfo); -uint8_t packMacSchRachInd(Pst *pst, RachIndInfo *rachInd); -uint8_t MacSchRachInd(Pst *pst, RachIndInfo *rachInd); -uint8_t packMacSchCrcInd(Pst *pst, CrcIndInfo *crcInd); -uint8_t MacSchCrcInd(Pst *pst, CrcIndInfo *crcInd); -uint8_t packMacSchDlRlcBoInfo(Pst *pst, DlRlcBoInfo *dlBoInfo); -uint8_t MacSchDlRlcBoInfo(Pst *pst, DlRlcBoInfo *dlBoInfo); -uint8_t packMacSchAddUeConfigReq(Pst *pst, SchUeCfgReq *ueCfgToSch); -uint8_t MacSchAddUeConfigReq(Pst *pst, SchUeCfgReq *ueCfgToSch); -uint8_t packSchUeCfgRsp(Pst *pst, SchUeCfgRsp *cfgRsp); -uint8_t MacProcSchUeCfgRsp(Pst *pst, SchUeCfgRsp *cfgRsp); -uint8_t packSchUeRecfgRsp(Pst *pst, SchUeRecfgRsp *cfgRsp); -uint8_t MacProcSchUeRecfgRsp(Pst *pst, SchUeRecfgRsp *reCfgRsp); -uint8_t MacSchSlotInd ARGS((Pst * pst, SlotTimingInfo * slotInd)); -uint8_t packMacSchSlotInd(Pst * pst, SlotTimingInfo * slotInd); -uint8_t unpackMacSchSlotInd(MacSchSlotIndFunc func, Pst *pst, Buffer *mBuf); -uint8_t packMacSchBsr(Pst *pst, UlBufferStatusRptInd *bsrInd); -uint8_t MacSchBsr(Pst *pst, UlBufferStatusRptInd *bsrInd); -uint8_t packMacSchSrUciInd(Pst *pst, SrUciIndInfo *uciInd); -uint8_t packMacSchDlHarqInd(Pst *pst, DlHarqInd *dlHarqInd); -uint8_t MacSchDlHarqInd(Pst *pst, DlHarqInd *dlHarqInd); -uint8_t MacSchSrUciInd(Pst *pst, SrUciIndInfo *uciInd); -uint8_t packMacSchModUeConfigReq(Pst *pst, SchUeRecfgReq *ueRecfgToSch); -uint8_t MacSchModUeConfigReq(Pst *pst, SchUeRecfgReq *ueRecfgToSch); -uint8_t packSchUeReconfigRsp(Pst *pst, SchUeRecfgRsp *recfgRsp); -uint8_t MacProcSchUeReconfigRsp(Pst *pst, SchUeRecfgRsp *recfgRsp); -uint8_t packMacSchRachRsrcReq(Pst *pst, SchRachRsrcReq *schRachRsrcReq); -uint8_t MacSchRachRsrcReq(Pst *pst, SchRachRsrcReq *schRachRsrcReq); -uint8_t packSchRachRsrcRsp(Pst *pst, SchRachRsrcRsp *schRachRsrcRsp); -uint8_t MacProcSchRachRsrcRsp(Pst *pst, SchRachRsrcRsp *schRachRsrcRsp); -uint8_t packMacSchRachRsrcRel(Pst *pst, SchRachRsrcRel *schRachRsrcRel); -uint8_t MacSchRachRsrcRel(Pst *pst, SchRachRsrcRel *schRachRsrcRel); -uint8_t packMacSchUeDeleteReq(Pst *pst, SchUeDelete *schUeDel); -uint8_t MacSchUeDeleteReq(Pst *pst, SchUeDelete *ueDelete); -uint8_t packSchUeDeleteRsp(Pst *pst, SchUeDeleteRsp *delRsp); -uint8_t MacProcSchUeDeleteRsp(Pst *pst, SchUeDeleteRsp *schUeDelRsp); -uint8_t packMacSchCellDeleteReq(Pst *pst, SchCellDeleteReq *schCellDelete); -uint8_t MacSchCellDeleteReq(Pst *pst, SchCellDeleteReq *schCellDelete); -uint8_t packSchCellDeleteRsp(Pst *pst, SchCellDeleteRsp *schCellDeleteRsp); -uint8_t MacProcSchCellDeleteRsp(Pst *pst, SchCellDeleteRsp *schCellDeleteRsp); -uint8_t packMacSchSliceCfgReq(Pst *pst, SchSliceCfgReq *cfgReq); -uint8_t MacSchSliceCfgReq(Pst *pst, SchSliceCfgReq *schSliceCfgReq); -uint8_t packSchSliceCfgRsp(Pst *pst, SchSliceCfgRsp *cfgRsp); -uint8_t MacProcSchSliceCfgRsp(Pst *pst, SchSliceCfgRsp *cfgRsp); -uint8_t packMacSchSliceRecfgReq(Pst *pst, SchSliceRecfgReq *recfgReq); -uint8_t MacSchSliceRecfgReq(Pst *pst, SchSliceRecfgReq *schSliceRecfgReq); -uint8_t packSchSliceRecfgRsp(Pst *pst, SchSliceRecfgRsp *schSliceRecfgRsp); -uint8_t MacProcSchSliceRecfgRsp(Pst *pst, SchSliceRecfgRsp *sliceRecfgrsp); -uint8_t packMacSchPagingInd(Pst *pst, SchPageInd *pageInd); -uint8_t MacSchPagingInd(Pst *pst, SchPageInd *pageInd); -uint8_t packSchMacDlPageAlloc(Pst *pst, DlPageAlloc *dlPageAlloc); -uint8_t MacProcDlPageAlloc(Pst *pst, DlPageAlloc *dlPageAlloc); -uint8_t packSchMacDlReleaseHarq(Pst *pst, SchRlsHqInfo *rlsHqInfo); -uint8_t MacSchReleaseDlHarqProc(Pst *pst, SchRlsHqInfo *rlsHqInfo); +uint8_t MacMessageRouter(Pst *pst, void *msg); +uint8_t SchMessageRouter(Pst *pst, void *msg); + /********************************************************************** End of file **********************************************************************/