[Epic-ID: ODUHIGH-488][Task-ID: ODUHIGH-501] WG8 Alignment | Added Skeleton for UL...
[o-du/l2.git] / src / cm / mac_sch_interface.h
index 2c7d5ce..fd9554b 100644 (file)
@@ -48,6 +48,9 @@
 #define EVENT_DL_PAGING_ALLOC        29
 #define EVENT_DL_REL_HQ_PROC         30 
 #define EVENT_DL_HARQ_IND_TO_SCH     31
+#define EVENT_DL_CQI_TO_SCH          32
+#define EVENT_UL_CQI_TO_SCH          33
+#define EVENT_PHR_IND_TO_SCH         34
 /*macros*/
 #define MAX_SSB_IDX 1 /* forcing it as 1 for now. Right value is 64 */
 #define SCH_SSB_MASK_SIZE   1
 #define MAX_PLMN 2
 #define DL_DMRS_SYMBOL_POS 4 /* Bitmap value 00000000000100 i.e. using 3rd symbol for PDSCH DMRS */
 
+#define MAX_PHR_REPORT 1 /*TODO: Range of PHR reports in multiple PHR.*/
+#define MAX_FAILURE_DET_RESOURCES 10 /*Spec 38.331 'maxNrofFailureDetectionResources'*/
+
 #define ADD_DELTA_TO_TIME(crntTime, toFill, incr, numOfSlot)          \
 {                                                          \
    if ((crntTime.slot + incr) > (numOfSlot - 1))           \
@@ -135,8 +141,10 @@ typedef enum
 
 typedef enum
 {
-   SLICE_FOUND,
-   SLICE_NOT_FOUND
+   SLICE_NOT_FOUND,
+   SLICE_CONFIGURED,
+   SLICE_RECONFIGURED,
+   RESOURCE_NOT_AVAILABLE 
 }RspCause;
 
 typedef enum
@@ -408,6 +416,18 @@ typedef enum
    LONG_TRUNCATED_BSR
 }BsrType;
 
+typedef enum
+{
+   SINGLE_ENTRY_PHR,
+   MULTIPLE_ENTRY_PHR
+}PhrType;
+
+typedef enum
+{
+  PH_TYPE_1,
+  PH_TYPE_2
+}PhType;
+
 typedef enum
 {
    FORMAT0_0,
@@ -438,6 +458,19 @@ typedef enum
    RESTART_DATA_TRANSMISSION
 }SchDataTransmission;
 
+typedef enum
+{
+   SchBeamFailure,
+   SchRlf,
+   SchBoth
+}SchPurposeOfFailureDet;
+
+typedef enum
+{
+   CQI_PUCCH = 1,
+   CQI_PUSCH
+}CqiUlReportType;
+
 /*structures*/
 typedef struct timeDomainAlloc
 {
@@ -584,7 +617,7 @@ typedef struct dlDCI
    uint8_t aggregLevel;
    BeamformingInfo beamPdcchInfo;
    TxPowerPdcchInfo txPdcchPower;
-   PdschCfg     *pdschCfg;
+   PdschCfg     pdschCfg;
 }DlDCI;
 
 typedef struct pdcchCfg
@@ -864,7 +897,7 @@ typedef struct schUlCfgCommon
    uint16_t          schTimeAlignTimer;
 }SchUlCfgCommon;
 
-/*Ref: ORAN_WG8.V7.0.0 Sec 11.2.3.2.1*/
+/*Ref: ORAN_WG8.V7.0.0 Sec 11.2.4.2.1 Cell Conf Request*/
 typedef struct schCellCfg
 {
    uint16_t        cellId;                 /* Cell Id */
@@ -896,6 +929,7 @@ typedef struct schCellCfg
    uint16_t            sib1PduLen;
 }SchCellCfg;
 
+/*Ref: ORAN_WG8.V7.0.0 Sec 11.2.4.3.1 Cell Config Response*/
 typedef struct schCellCfgCfm
 {
    uint16_t         cellId;     /* Cell Id */
@@ -903,6 +937,52 @@ typedef struct schCellCfgCfm
    SchFailureCause  cause;
 }SchCellCfgCfm;
 
+/*Ref: ORAN_WG8.V7.0.0 Sec 11.2.4.2.2 Cell Del Req*/
+typedef struct schCellDeleteReq 
+{
+   uint16_t   cellId;
+}SchCellDeleteReq;
+
+/*Ref: ORAN_WG8.V7.0.0 Sec 11.2.4.3.2 Cell Del Response*/
+typedef struct schCellDeleteRsp
+{
+   uint16_t        cellId;
+   SchMacRsp       rsp;
+   SchFailureCause cause;
+}SchCellDeleteRsp;
+
+/*Ref: ORAN_WG8.V7.0.0 Sec 11.2.4.2.3*/
+typedef struct schRrmPolicyRatio
+{
+   uint8_t maxRatio;
+   uint8_t minRatio;
+   uint8_t dedicatedRatio;
+}SchRrmPolicyRatio;
+
+typedef struct schRrmPolicyOfSlice
+{
+   Snssai  snssai;
+   SchRrmPolicyRatio rrmPolicyRatioInfo;
+}SchRrmPolicyOfSlice;
+
+typedef struct schSliceCfgReq
+{
+   uint8_t  numOfConfiguredSlice;
+   SchRrmPolicyOfSlice **listOfSlices;
+}SchSliceCfgReq;
+
+/*Ref: ORAN_WG8.V7.0.0 Sec 11.2.4.3.3 Slice Cfg Response*/
+typedef struct schSliceCfgRsp
+{
+   Snssai     snssai;
+   SchMacRsp  rsp;
+   RspCause   cause;
+}SchSliceCfgRsp;
+
+/*As per ORAN-WG8 V7.0.0 Sec 11.2.4.3.4 , Slice Cfg and Recfg are same structures*/
+typedef struct schSliceCfgReq SchSliceRecfgReq;
+typedef struct schSliceCfgRsp SchSliceRecfgRsp;
+
 typedef struct ssbInfo
 {
    uint8_t         ssbIdx;          /* SSB Index */
@@ -913,7 +993,7 @@ typedef struct ssbInfo
 typedef struct sib1AllocInfo
 {
    BwpCfg bwp;
-   PdcchCfg sib1PdcchCfg;
+   PdcchCfg *sib1PdcchCfg;
 }Sib1AllocInfo;
 
 typedef struct prachSchInfo
@@ -958,7 +1038,6 @@ typedef struct msg3UlGrant
 
 typedef struct rarInfo
 {
-   uint16_t        raRnti;
    uint8_t         RAPID;
    uint16_t        ta;
    Msg3UlGrant     ulGrant;
@@ -969,54 +1048,67 @@ typedef struct rarInfo
 
 typedef struct rarAlloc
 {
-   DlPduType  pduPres;
-   uint8_t    pdschSlot;
-   RarInfo rarInfo;
-   BwpCfg  bwp;
-   PdcchCfg rarPdcchCfg;
-   PdschCfg rarPdschCfg;
+   uint16_t   raRnti;
+   RarInfo    rarInfo;
+   BwpCfg     bwp;
+   PdcchCfg   *rarPdcchCfg;
+   PdschCfg   *rarPdschCfg;
 }RarAlloc;
 
-typedef struct dlMsgInfo
-{
-   uint16_t crnti;
-   uint8_t  ndi;
-   uint8_t  harqProcNum;
-   uint8_t  dlAssignIdx;
-   uint8_t  pucchTpc;
-   uint8_t  pucchResInd;
-   uint8_t  harqFeedbackInd;
-   uint8_t  dciFormatId;
-   bool     isMsg4Pdu;
-   uint16_t  dlMsgPduLen;
-   uint8_t  *dlMsgPdu;
-}DlMsgInfo;
-
 typedef struct lcSchInfo
 {
    uint8_t   lcId;
-   uint32_t  schBytes; /* Number of scheduled bytes */
+   uint32_t  schBytes; 
 }LcSchInfo;
 
-typedef struct dlMsgSchedInfo
+typedef struct ceSchInfo
 {
-   bool       isRetx;
+   uint8_t   ceLcId;
+   uint8_t   *ceContent; 
+}CeSchInfo;
+
+typedef struct freqDomainAlloc
+{
+   uint8_t          resAllocType; /* Resource allocation type */
+   union
+   {
+      ResAllocType0    type0;
+      ResAllocType1    type1;
+   }resAlloc;
+}FreqDomainAlloc;
+
+typedef struct transportBlock
+{
+   uint8_t    mcs;       
+   bool       ndi;       
+   uint8_t    rv;        
+   uint16_t   tbSize;    
+   uint8_t    numCe;
+   CeSchInfo  ceSchInfo[MAX_NUM_LC]; 
    uint8_t    numLc;
-   LcSchInfo  lcSchInfo[MAX_NUM_LC]; /* Scheduled LC info */
-   BwpCfg     bwp;
-   PdcchCfg   dlMsgPdcchCfg;
-   PdschCfg   dlMsgPdschCfg;
-   DlPduType  pduPres;
-   uint8_t    pdschSlot;
-   DlMsgInfo  dlMsgInfo;
-}DlMsgSchInfo;
+   LcSchInfo  lcSchInfo[MAX_NUM_LC]; 
+}TransportBlock;
 
-typedef struct dlMsgAlloc
+typedef struct dlMsgSchedInfo
 {
-   uint16_t     crnti;
-   uint8_t      numSchedInfo;
-   DlMsgSchInfo dlMsgSchedInfo[2];
-}DlMsgAlloc;
+   uint16_t        crnti;
+   uint8_t         dciFormatId;
+   uint8_t         harqProcNum;
+   bool            vrbPrbMapping;
+   uint8_t         dlAssignIdx;
+   uint8_t         pucchTpc;
+   uint8_t         pucchResInd;
+   uint8_t         harqFeedbackInd;
+   uint16_t        dlMsgPduLen;
+   uint8_t         *dlMsgPdu;
+   FreqDomainAlloc freqAlloc;
+   TimeDomainAlloc timeAlloc;
+   uint8_t         numOfTbs;
+   TransportBlock  transportBlock[2];
+   BwpCfg          bwp;
+   PdcchCfg        *dlMsgPdcchCfg;
+   PdschCfg        *dlMsgPdschCfg;
+}DlMsgSchInfo;
 
 typedef struct schSlotValue
 {
@@ -1027,15 +1119,6 @@ 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
@@ -1121,11 +1204,11 @@ typedef struct dlSchedInfo
    DciInfo    *ulGrant;
 
    /* Allocation from dedicated DL msg */
-   DlMsgAlloc *dlMsgAlloc[MAX_NUM_UE];
+   DlMsgSchInfo *dlMsgAlloc[MAX_NUM_UE];
 
 }DlSchedInfo;
 
-/*Reference: O-RAN.WG8.AAD.v7.0.0, Sec 11.2.3.3.13 Downlink Paging Allocation*/
+/*Reference: O-RAN.WG8.AAD.v7.0.0, Sec 11.2.4.3.13 Downlink Paging Allocation*/
 typedef struct interleaved_t
 {
    uint8_t regBundleSize;
@@ -1231,15 +1314,15 @@ typedef struct csiInfo
    uint8_t  betaOffsetCsi;
 }CsiInfo;
 
-typedef struct harqAckInfo
+typedef struct harqFdbkInfo
 {
    uint16_t    harqBitLength;
 }HarqFdbkInfo;
 
-typedef struct csiPartInfo
+typedef struct csiFdbkInfo
 {
    uint16_t csiBits;
-}csiFdbkInfo;
+}CsiFdbkInfo;
 
 typedef struct schPucchFormatCfg
 {
@@ -1253,11 +1336,11 @@ typedef struct schPucchFormatCfg
 
 typedef struct schPucchInfo
 {
-   FreqDomainAlloc  fdAlloc;      
+   FreqDomainRsrc   fdAlloc;      
    TimeDomainAlloc  tdAlloc;      
    uint8_t          srFlag;
    HarqFdbkInfo     harqInfo;
-   csiFdbkInfo      csiInfo;
+   CsiFdbkInfo      csiInfo;
    BeamformingInfo  beamPucchInfo;
    uint8_t          pucchFormat;
    uint8_t          intraFreqHop;
@@ -1280,6 +1363,7 @@ typedef struct schPuschUci
    CsiInfo          csiInfo;    /* Csi information*/
 }SchPuschUci;
 
+/* Reference -> O-RAN.WG8.AAD.0-v07.00, Section 11.2.4.3.9 UL Scheduling Information */
 typedef struct ulSchedInfo
 {
    uint16_t         cellId;         /* Cell Id */
@@ -1292,42 +1376,6 @@ typedef struct ulSchedInfo
    SchPucchInfo     schPucchInfo;   /* Pucch and Uci scheduling info */
 }UlSchedInfo;
 
-typedef struct rachIndInfo
-{
-   uint16_t    cellId;
-   uint16_t    crnti;
-   SlotTimingInfo timingInfo;
-   uint8_t     slotIdx;
-   uint8_t     symbolIdx;
-   uint8_t     freqIdx;
-   uint8_t     preambleIdx;
-   uint16_t    timingAdv;
-}RachIndInfo;
-
-
-typedef struct crcIndInfo
-{
-   uint16_t    cellId;
-   uint16_t    crnti;
-   SlotTimingInfo timingInfo;
-   uint16_t    numCrcInd;
-   uint8_t     crcInd[MAX_NUMBER_OF_CRC_IND_BITS];
-}CrcIndInfo;
-
-typedef struct boInfo
-{
-   uint8_t   lcId;
-   uint32_t  dataVolume;
-}BOInfo;
-
-typedef struct dlRlcBOInfo
-{
-   uint16_t    cellId;
-   uint16_t    crnti;
-   uint8_t     lcId;
-   uint32_t    dataVolume;
-}DlRlcBoInfo;
-
 /* Info of Scheduling Request to Add/Modify */
 typedef struct schSchedReqInfo
 {
@@ -1481,19 +1529,54 @@ typedef struct schInitalDlBwp
    SchPdcchConfig   pdcchCfg;
    bool             pdschCfgPres;
    SchPdschConfig   pdschCfg;
-   bool             k0K1TblPrsnt;
-   SchK0K1TimingInfoTbl k0K1InfoTbl;
 }SchInitalDlBwp;
 
-/* BWP Downlink common */
-typedef struct schBwpDlCommon
+/*Spec 38.331 'RadioLinkMonitoringConfig'*/
+typedef uint8_t SchRadioLinkMonitoringRsId;
+
+typedef struct schRadioLinkMonRS
 {
-}SchBwpDlCommon;
+   SchRadioLinkMonitoringRsId  radioLinkMonitoringRsId;
+   SchPurposeOfFailureDet      purpose; 
+   union
+   {
+      uint8_t ssbIndx;
+      uint8_t nzpCsiRsResId;
+   }SchDetectionRes;
+}SchRadioLinkMonRS;
 
-/* Downlink BWP information */
+typedef struct schRadioLinkConfig
+{
+   SchRadioLinkMonRS           failurDetResAddModList[MAX_FAILURE_DET_RESOURCES];
+   SchRadioLinkMonitoringRsId  failurDetResRelList[MAX_FAILURE_DET_RESOURCES];
+   uint8_t                     beamFailureInstanceMaxCount;
+   uint8_t                     beamFailureDetectionTimer;
+}SchRadioLinkConfig;
+
+/*Spec 38.331 "SPS-Config'*/
+typedef struct schSpsConfig
+{
+   uint16_t     periodicity;
+   uint8_t      numOfHqProcess;
+   uint8_t      n1PucchAN;
+   SchMcsTable  mcsTable;
+}SchSpsConfig;
+
+/* Spec 38.331, 'BWP-DownlinkDedicated'*/
+typedef struct schBwpDlCfgDed
+{
+  SchPdcchConfig     pdcchCfgDed;
+  SchPdschConfig     pdschCfgDed;
+  SchSpsConfig       spsCfgDed;
+  SchRadioLinkConfig radioLnkMonCfgDed;
+}SchBwpDlCfgDed;
+
+/* Spec 38.331, 'BWP-Downlink' Downlink BWP information */
 typedef struct schDlBwpInfo
 {
    uint8_t          bwpId;
+   SchBwpDlCfg      bwpCommon;
+   SchBwpDlCfgDed   bwpDedicated;
 }SchDlBwpInfo;
 
 /* PDCCH Serving Cell configuration */
@@ -1506,6 +1589,46 @@ typedef struct schPdschServCellCfg
    SchPdschXOverhead        *xOverhead;
 }SchPdschServCellCfg;
 
+typedef struct schRaPrioritization
+{
+   uint8_t powerRampingStepHighPriority;
+   uint8_t scalingFactorBI;
+}SchRaPrioritization;
+
+typedef struct schBfrCsiRsRes
+{
+   uint8_t csrRsIndex;
+   uint8_t raOccList;
+   uint8_t raPreambleIndex;
+}SchBfrCsiRsRes;
+
+typedef struct schBfrSsbRes
+{
+   uint16_t ssbIndex;
+   uint8_t raPreambleIndex;
+}SchBfrSsbRes;
+
+typedef struct schPrachResDedBfr
+{
+   SchBfrSsbRes    ssb;
+   SchBfrCsiRsRes  csiRs;
+}SchPrachResDedBfr;
+
+/*Spec 38.331 'BeamFailureRecoveryConfig' */
+typedef struct schBeamFailRecoveryCfg
+{
+   uint8_t             rootSeqIndexBfr;
+   SchRachCfgGeneric   rachCfgBfr;
+   uint8_t             rsrpThreshSsbBfr;     /* RSRP Threshold SSB */
+   SchPrachResDedBfr   candidateBeamRSList;
+   uint8_t             ssbPerRachBfr;        /* SSB per RACH occassion */
+   uint8_t             raSsbOccMaskIndex;
+   uint8_t             recoverySearchSpaceId;
+   SchRaPrioritization raPrioBfr;
+   uint16_t            bfrTimer;
+   uint8_t             msg1SubcSpacing;  /* Subcarrier spacing of RACH */
+}SchBeamFailRecoveryCfg;
+
 /* PUCCH Configuration */
 typedef struct schPucchResrcSetInfo
 {
@@ -1694,50 +1817,65 @@ typedef struct schInitialUlBwp
    SchPucchCfg   pucchCfg;
    bool          puschCfgPres;
    SchPuschCfg   puschCfg;
-   bool          k2TblPrsnt;
-   SchK2TimingInfoTbl k2InfoTbl;
 }SchInitialUlBwp;
 
+typedef struct schBwpCfgDedicated
+{
+   SchPucchCfg   pucchCfg;
+   SchPuschCfg   puschCfg;
+}SchBwpCfgDedicated;
+
 /* Uplink BWP information */
 typedef struct schUlBwpInfo
 {
-   uint8_t        bwpId;
+   uint8_t             bwpId;
+   SchBwpUlCfg         bwpCommon;
+   SchBwpCfgDedicated  bwpDed;
 }SchUlBwpInfo;
 
+typedef struct schBwpRelInfo
+{
+   uint8_t bwpId;
+}SchBwpRelInfo;
+
 /* Serving cell configuration */
 typedef struct schServCellRecfgInfo
 {
-   SchInitalDlBwp        initDlBwp;
-   uint8_t               numDlBwpToAddOrMod;
-   SchDlBwpInfo          dlBwpToAddOrModList[MAX_NUM_BWP];
-   uint8_t               numDlBwpToRel;
-   SchDlBwpInfo          dlBwpToRelList[MAX_NUM_BWP];
-   uint8_t               firstActvDlBwpId;
-   uint8_t               defaultDlBwpId;
-   uint8_t               *bwpInactivityTmr;
-   SchPdschServCellCfg   pdschServCellCfg;
-   SchInitialUlBwp       initUlBwp;
-   uint8_t               numUlBwpToAddOrMod;
-   SchUlBwpInfo          ulBwpToAddOrModList[MAX_NUM_BWP];
-   uint8_t               numUlBwpToRel;
-   SchUlBwpInfo          ulBwpToRelList[MAX_NUM_BWP];
-   uint8_t               firstActvUlBwpId;
+   SchInitalDlBwp          initDlBwp;
+   SchRadioLinkConfig      radioLinkMonConfig;
+   uint8_t                 numDlBwpToAddOrMod;
+   SchDlBwpInfo            dlBwpToAddOrModList[MAX_NUM_BWP];
+   uint8_t                 numDlBwpToRel;
+   SchBwpRelInfo           dlBwpToRelList[MAX_NUM_BWP];
+   uint8_t                 firstActvDlBwpId;
+   uint8_t                 defaultDlBwpId;
+   uint8_t                 *bwpInactivityTmr;
+   SchPdschServCellCfg     pdschServCellCfg;
+   SchInitialUlBwp         initUlBwp;
+   SchBeamFailRecoveryCfg  beamFailureRecoveryCfg;
+   uint8_t                 numUlBwpToAddOrMod;
+   SchUlBwpInfo            ulBwpToAddOrModList[MAX_NUM_BWP];
+   uint8_t                 numUlBwpToRel;
+   SchBwpRelInfo           ulBwpToRelList[MAX_NUM_BWP];
+   uint8_t                 firstActvUlBwpId;
 }SchServCellRecfgInfo;
 
 /* Serving cell configuration */
 typedef struct schServCellCfgInfo
 {
    SchInitalDlBwp        initDlBwp;
+   SchRadioLinkConfig    radioLinkMonConfig;
    uint8_t               numDlBwpToAdd;
    SchDlBwpInfo          dlBwpToAddList[MAX_NUM_BWP];
    uint8_t               firstActvDlBwpId;
    uint8_t               defaultDlBwpId;
    uint8_t               *bwpInactivityTmr;
-   SchPdschServCellCfg   pdschServCellCfg;
-   SchInitialUlBwp       initUlBwp;
-   uint8_t               numUlBwpToAdd;
-   SchUlBwpInfo          ulBwpToAddList[MAX_NUM_BWP];
-   uint8_t               firstActvUlBwpId;
+   SchPdschServCellCfg     pdschServCellCfg;
+   SchInitialUlBwp         initUlBwp;
+   SchBeamFailRecoveryCfg  beamFailureRecoveryCfg;
+   uint8_t                 numUlBwpToAdd;
+   SchUlBwpInfo            ulBwpToAddList[MAX_NUM_BWP];
+   uint8_t                 firstActvUlBwpId;
 }SchServCellCfgInfo;
 
 typedef struct schNonDynFiveQi
@@ -1843,18 +1981,18 @@ typedef struct schModulationInfo
    SchMcsTable  mcsTable;
 }SchModulationInfo;
 
-/* UE configuration */
+/*Spec O-RAN, WG8, V7.0.0, '11.2.4.2.5' UE Configuration Request*/
 typedef struct schUeCfgReq
 {
-   uint16_t        cellId;
-   uint8_t         ueId;
-   uint8_t         beamIdx; 
-   uint16_t        crnti;
-   bool macCellGrpCfgPres;
+   uint16_t           cellId;
+   uint8_t            ueId;
+   uint8_t            beamIdx; 
+   uint16_t           crnti;
+   bool               macCellGrpCfgPres;
    SchMacCellGrpCfg   macCellGrpCfg;
-   bool phyCellGrpCfgPres;
+   bool               phyCellGrpCfgPres;
    SchPhyCellGrpCfg   phyCellGrpCfg;
-   bool spCellCfgPres;
+   bool               spCellCfgPres;
    SchSpCellCfg       spCellCfg;
    SchAmbrCfg         *ambrCfg;
    SchModulationInfo  dlModInfo;
@@ -1863,7 +2001,7 @@ typedef struct schUeCfgReq
    SchLcCfg           schLcCfg[MAX_NUM_LC];
 }SchUeCfgReq;
 
-/* UE Re-configuration */
+/*Spec O-RAN, WG8, V7.0.0, '11.2.4.2.6' UE Reconfiguration Request*/
 typedef struct schUeRecfgReq
 {
    uint16_t         cellId;
@@ -1891,6 +2029,7 @@ typedef struct schUeRecfgReq
 #endif
 }SchUeRecfgReq;
 
+/*Ref: ORAN_WG8.V7.0.0 Sec 11.2.4.3.5 UE Confg Response*/
 typedef struct schUeCfgRsp
 {
    uint16_t   cellId;
@@ -1901,9 +2040,105 @@ typedef struct schUeCfgRsp
    SchFailureCause cause;
 }SchUeCfgRsp;
 
-/*As per WG8, UE ReCFG and UECFG have same structure definition*/
+/*As per WG8 V7.0.0 Sec 11.2.4.3.6, UE ReCFG and UECFG have same structure definition*/
 typedef struct schUeCfgRsp SchUeRecfgRsp;
 
+/*Spec O-RAN, WG8, V7.0.0, '11.2.4.2.7' Delete UE Request*/
+typedef struct schUeDelete
+{
+   uint16_t   cellId;
+   uint16_t   crnti;
+}SchUeDelete;
+
+/*Ref: ORAN_WG8.V7.0.0 Sec 11.2.4.3.7*/
+typedef struct schUeDeleteRsp
+{
+   uint16_t   cellId;
+   uint16_t   crnti;
+   SchMacRsp  rsp;
+   ErrorCause cause;
+}SchUeDeleteRsp;
+
+/*Spec O-RAN, WG8, V7.0.0, '11.2.4.2.8' DL HARQ Indication*/
+typedef struct dlHarqInd
+{
+   uint16_t       cellId;
+   uint16_t       crnti;
+   SlotTimingInfo slotInd;
+   uint8_t        numHarq;
+   uint8_t        harqPayload[MAX_HARQ_BITS_IN_BYTES];
+}DlHarqInd;
+
+/*Spec O-RAN, WG8, V7.0.0, '11.2.4.2.9' UL HARQ (CRC) Indication*/
+typedef struct crcIndInfo
+{
+   uint16_t       cellId;
+   uint16_t       crnti;
+   SlotTimingInfo timingInfo;
+   uint16_t       numCrcInd;
+   uint8_t        crcInd[MAX_NUMBER_OF_CRC_IND_BITS];
+}CrcIndInfo;
+
+/*Spec O-RAN, WG8, V7.0.0, '11.2.4.2.10' UL Channel Quality Indication*/
+typedef struct ulCqiReport
+{
+   CqiUlReportType  reportType;
+   uint16_t ulCqi;
+   uint8_t  timingAdv;
+}UlCqiReport;
+
+typedef struct schUlCqiInd
+{
+   uint16_t       cellId;
+   uint16_t       crnti;
+   SlotTimingInfo timingInfo;
+   uint8_t        numUlCqiReported;
+   UlCqiReport    ulCqiRpt;
+}SchUlCqiInd;
+
+/*Spec O-RAN, WG8, V7.0.0, '11.2.4.2.11' DL Channel Quality Indication*/
+typedef struct dlCqiReport
+{
+   uint8_t  reportType; /*Bitmap for CQI, PMI, RI, CRI report*/
+   uint16_t cqi;
+   uint16_t pmi;
+   uint16_t cri;
+   uint16_t ri;
+}DlCqiReport;
+
+typedef struct schDlCqiInd
+{
+   uint16_t       cellId;
+   uint16_t       crnti;
+   SlotTimingInfo timingInfo;
+   uint8_t        numDlCqiReported;
+   DlCqiReport    dlCqiRpt;
+}SchDlCqiInd;
+
+/*Spec O-RAN WG8 v7.0.0, '11.2.4.2.12' Rach Ind contents*/
+typedef struct rachIndInfo
+{
+   uint16_t    cellId;
+   uint16_t    crnti;
+   SlotTimingInfo timingInfo;
+   uint8_t     slotIdx;
+   uint8_t     symbolIdx;
+   uint8_t     freqIdx;
+   uint8_t     preambleIdx;
+   uint16_t    timingAdv;
+}RachIndInfo;
+
+/*Spec O-RAN WG8 v7.0.0, '11.2.4.2.13' Paging Ind contents*/
+typedef struct schPageInd
+{
+   uint16_t  cellId;
+   uint16_t  pf;
+   uint8_t   i_s;
+   uint16_t  pduLen;
+   uint8_t  *pagePdu;
+}SchPageInd;
+
+/*ORAN WG8 v7.0.0, Sec 11.2.4.2.14 Rach Res Request*/
 typedef struct schRachRsrcReq
 {
    SlotTimingInfo slotInd;
@@ -1933,6 +2168,7 @@ typedef struct schRachRsrcRsp
    SchCfraResource  cfraResource;
 }SchRachRsrcRsp;
 
+/*ORAN WG8 v7.0.0, Sec 11.2.4.2.15 Rach Res Release*/
 typedef struct schRachRsrcRel
 {
    SlotTimingInfo slotInd;
@@ -1941,33 +2177,26 @@ typedef struct schRachRsrcRel
    SchCfraResource  cfraResource;
 }SchRachRsrcRel;
 
-typedef struct schUeDelete
-{
-   uint16_t   cellId;
-   uint16_t   crnti;
-}SchUeDelete;
-
-typedef struct schUeDeleteRsp
-{
-   uint16_t   cellId;
-   uint16_t   crnti;
-   SchMacRsp  rsp;
-   ErrorCause cause;
-}SchUeDeleteRsp;
-
-typedef struct schCellDeleteReq 
+/*O-RAN WG* v7.0.0 Sec 11.2.4.2.16 DL RLC Buffer Status Information*/
+typedef struct dlRlcBOInfo
 {
-   uint16_t   cellId;
-}SchCellDeleteReq;
-
+   uint16_t    cellId;
+   uint16_t    crnti;
+   uint8_t     lcId;
+   uint32_t    dataVolume;
+}DlRlcBoInfo;
 
-typedef struct schCellDeleteRsp
+/*O-RAN WG8 v7.0.0 Sec 11.2.4.2.17 Scheduling Request Indication*/
+typedef struct srUciIndInfo
 {
-   uint16_t        cellId;
-   SchMacRsp       rsp;
-   SchFailureCause cause;
-}SchCellDeleteRsp;
+   uint16_t    cellId;
+   uint16_t    crnti;
+   SlotTimingInfo slotInd;
+   uint8_t     numSrBits;
+   uint8_t     srPayload[MAX_SR_BITS_IN_BYTES];
+}SrUciIndInfo;
 
+/*O-RAN WG* v7.0.0 Sec 11.2.4.2.18 UL RLC Buffer Status Information*/
 typedef struct dataVolInfo
 {
    uint8_t  lcgId;
@@ -1983,68 +2212,41 @@ typedef struct ulBufferStatusRptInd
    DataVolInfo dataVolInfo[MAX_NUM_LOGICAL_CHANNEL_GROUPS];
 }UlBufferStatusRptInd;
 
-typedef struct srUciIndInfo
-{
-   uint16_t    cellId;
-   uint16_t    crnti;
-   SlotTimingInfo slotInd;
-   uint8_t     numSrBits;
-   uint8_t     srPayload[MAX_SR_BITS_IN_BYTES];
-}SrUciIndInfo;
-
-typedef struct dlHarqInd
-{
-   uint16_t    cellId;
-   uint16_t    crnti;
-   SlotTimingInfo slotInd;
-   uint8_t     numHarq;
-   uint8_t     harqPayload[MAX_HARQ_BITS_IN_BYTES];
-}DlHarqInd;
-
-typedef struct schRrmPolicyRatio
+/**O-RAN WG* v7.0.0 Sec 11.2.4.2.19 Power Headroom Indication*/
+typedef struct phrData /*Spec 38.321 Sec 6.1.3.8*/
 {
-   uint8_t maxRatio;
-   uint8_t minRatio;
-   uint8_t dedicatedRatio;
-}SchRrmPolicyRatio;
+   uint8_t phr;
+   uint8_t pcmax_f_c;
+}PhrData;
 
-typedef struct schRrmPolicyOfSlice
+typedef struct singlePhrInfo
 {
-   Snssai  snssai;
-   SchRrmPolicyRatio rrmPolicyRatioInfo;
-}SchRrmPolicyOfSlice;
+   PhrData  phrData;
+}SinglePhrInfo;
 
-typedef struct schSliceCfgReq
+typedef struct multiPhr
 {
-   uint8_t  numOfConfiguredSlice;
-   SchRrmPolicyOfSlice **listOfSlices;
-}SchSliceCfgReq;
+   PhType   phType;
+   PhrData  phrData;
+}MultiPhr;
 
-typedef struct sliceRsp
+typedef struct multiplePhrInfo /*Spec 38.321 Sec 6.1.3.9*/
 {
-   Snssai     snssai;
-   SchMacRsp  rsp;
-   RspCause   cause;
-}SliceRsp;
+   uint8_t  numPhrReported;
+   MultiPhr multiPhrStat[MAX_PHR_REPORT];
+}MultiplePhrInfo;
 
-typedef struct schSliceCfgRsp
+typedef struct schPwrHeadroomInd
 {
-   uint8_t    numSliceCfgRsp;
-   SliceRsp   **listOfSliceCfgRsp;
-}SchSliceCfgRsp;
-
-/*As per ORAN-WG8, Slice Cfg and Recfg are same structures*/
-typedef struct schSliceCfgReq SchSliceRecfgReq;
-typedef struct schSliceCfgRsp SchSliceRecfgRsp;
-
-typedef struct schPageInd
-{
-   uint16_t  cellId;
-   uint16_t  pf;
-   uint8_t   i_s;
-   uint16_t  pduLen;
-   uint8_t  *pagePdu;
-}SchPageInd;
+   uint16_t    cellId;
+   uint16_t    crnti;
+   PhrType     phrType;
+   union
+   {
+      SinglePhrInfo   singlePhr;
+      MultiplePhrInfo multiPhr;
+   }phrInfo;
+}SchPwrHeadroomInd;
 
 typedef struct schUeHqInfo
 {