PUCCH CHANGES AT SCH AND LOWER MAC
[o-du/l2.git] / src / cm / du_app_mac_inf.h
index 40f2ab4..c9855a2 100644 (file)
 #define SIB1_NEW_TX_PERIOD      160
 #define SIB1_REPETITION_PERIOD   20
 #define CORESET_0_INDEX      0
+#define CORESET_1_INDEX      1
+#define CORESET_2_INDEX      2
+#define CORESET_3_INDEX      3
+#define CORESET_4_INDEX      4
 #define SEARCHSPACE_0_INDEX   0
+#define SEARCHSPACE_1_INDEX   1
+#define SEARCHSPACE_2_INDEX   2
+#define SEARCHSPACE_3_INDEX   3
+#define SEARCHSPACE_4_INDEX   4
+#define SS_MONITORING_SLOT_SL1   0 /* all slots */
+#define SS_MONITORING_SYMBOL     0x2000; /* symbol-0, set 14th bit */
 #define SIB1_MCS  4
 
+#define SRB_ID_0 0
+#define SRB_ID_1 1
 /* Macros for coupling */
 #define DU_MAC_LC  0
 #define DU_MAC_TC  1
@@ -43,6 +55,9 @@
 #define EVENT_MAC_CELL_START_REQ     202
 #define EVENT_MAC_CELL_STOP_REQ      203
 #define EVENT_MAC_SLOT_IND           204
+#define EVENT_MAC_STOP_IND           205
+#define EVENT_MAC_UL_CCCH_IND        206
+#define EVENT_MAC_DL_CCCH_IND        207
 
 typedef enum
 {
@@ -112,6 +127,12 @@ typedef enum
    SSB_PRDCTY_MS_160
 }SSBPeriod;
 
+typedef enum
+{
+   RRC_REJECT,
+   RRC_SETUP
+}DlCcchMsgType;
+
 typedef struct carrierCfg
 {
    Bool  pres;
@@ -157,6 +178,7 @@ typedef struct prachCfg
    RstSetCfg     prachRstSetCfg;      /* PRACH restricted set config */
        uint16_t      msg1FreqStart;       /* Msg1-FrequencyStart */
    uint8_t       msg1Fdm;             /* PRACH FDM (1,2,4,8) */
+       uint8_t       rootSeqLen;          /* Root sequence length */
    PrachFdmInfo  fdm[8];              /* FDM info */
    uint8_t       ssbPerRach;          /* SSB per RACH occassion */
    Bool          prachMultCarrBand;   /* Multiple carriers in Band */
@@ -184,22 +206,97 @@ typedef struct sib1CellCfg
    uint16_t sib1Mcs;
 } Sib1CellCfg; 
 
+typedef struct bwpParams
+{
+   uint16_t firstPrb;
+   uint16_t numPrb;
+       uint8_t  scs;
+       uint8_t  cyclicPrefix;
+}BwpParams;
+
+typedef struct candidatesInfo
+{
+   uint8_t aggLevel1;
+   uint8_t aggLevel2;
+   uint8_t aggLevel4;
+   uint8_t aggLevel8;
+   uint8_t aggLevel16;
+}CandidatesInfo;
+
+typedef struct searchSpaceCfg
+{
+   uint8_t searchSpaceId;
+       uint8_t coresetId;
+       uint16_t monitoringSlot;
+       uint16_t duration;
+       uint16_t monitoringSymbol;
+       CandidatesInfo candidate;
+}SearchSpaceCfg;
+
+typedef struct pdcchConfigCommon
+{
+   /* only one search space is configured during SIB1 */
+   SearchSpaceCfg commonSearchSpace;
+   uint8_t raSearchSpaceId;
+}PdcchConfigCommon;
+
+typedef struct pdschConfigCommon
+{
+   uint8_t k0;
+       uint8_t mappingType;
+       uint8_t startSymbol;
+       uint8_t lengthSymbol;
+}PdschConfigCommon;
+
+typedef struct pucchConfigCommon
+{
+   uint8_t pucchResourceCommon;
+       uint8_t pucchGroupHopping;
+}PucchConfigCommon;
+
+typedef struct puschConfigCommon
+{
+   /* PUSCH-TimeDomainResourceAllocation info */
+   uint8_t k2;
+       uint8_t mappingType;
+       uint8_t startSymbol;
+       uint8_t lengthSymbol;
+}PuschConfigCommon;
+
+typedef struct bwpDlConfig
+{
+   BwpParams      bwp;
+       PdcchConfigCommon pdcchCommon;
+       PdschConfigCommon pdschCommon;
+}BwpDlConfig;
+
+typedef struct bwpUlConfig
+{
+   BwpParams      bwp;
+       // rach config common sent in PrachCfg
+       PucchConfigCommon pucchCommon;
+       PuschConfigCommon puschCommon;
+}BwpUlConfig;
+
 typedef struct macCellCfg
 {
-   U16            transId;
-   U16            cellId;     /* Cell Id */
-   U8             numTlv;     /* Number of configuration TLVs */
-   U8             carrierId;  /* Carrired Index */
-   U16            phyCellId;  /* Physical cell id */
-   DuplexMode     dupType;    /* Duplex type: TDD/FDD */
-   CarrierCfg     dlCarrCfg;  /* DL Carrier configuration */
-   CarrierCfg     ulCarrCfg;  /* UL Carrier configuration */
-   Bool           freqShft;   /* Indicates presence of 7.5kHz frequency shift */
-   SsbCfg         ssbCfg;     /* SSB configuration */          
-   PrachCfg       prachCfg;   /* PRACH Configuration */
-   TDDCfg         tddCfg;     /* TDD periodicity and slot configuration */
-   RSSIMeasUnit   rssiUnit;   /* RSSI measurement unit */
-   Sib1CellCfg    sib1Cfg;
+       U16            transId;          /* Trans Id */
+       U16            cellId;           /* Cell Id */
+       U8             numTlv;           /* Number of configuration TLVs */
+       U8             carrierId;        /* Carrired Index */
+       U16            phyCellId;        /* Physical cell id */
+       DuplexMode     dupType;          /* Duplex type: TDD/FDD */
+       CarrierCfg     dlCarrCfg;        /* DL Carrier configuration */
+       CarrierCfg     ulCarrCfg;        /* UL Carrier configuration */
+       Bool           freqShft;         /* Indicates presence of 7.5kHz frequency shift */
+   SsbCfg         ssbCfg;           /* SSB configuration */          
+   PrachCfg       prachCfg;         /* PRACH Configuration */
+   TDDCfg         tddCfg;           /* TDD periodicity and slot configuration */
+   RSSIMeasUnit   rssiUnit;         /* RSSI measurement unit */
+   Sib1CellCfg    sib1Cfg;          /* SIB1 config */
+       BwpDlConfig    initialDlBwp;     /* Initial DL BWP */
+       BwpUlConfig    initialUlBwp;     /* Initial UL BWP */
+       uint8_t        dmrsTypeAPos;     /* DMRS Type A position */
 }MacCellCfg;
 
 typedef struct macCellCfgCfm
@@ -225,55 +322,94 @@ typedef struct macCellStopInfo
    uint16_t cellId;
 }MacCellStopInfo;
 
+typedef struct ulCcchInd
+{
+   uint16_t cellId;
+   uint16_t crnti;
+   uint8_t  *ulCcchMsg;
+}UlCcchIndInfo;
+
+typedef struct dlCcchInd
+{
+   uint16_t      cellId;
+   uint16_t      crnti;
+   DlCcchMsgType msgType;
+   uint16_t      dlCcchMsgLen;
+   uint8_t       *dlCcchMsg;
+}DlCcchIndInfo;
+
+
 /* Functions for slot Ind from MAC to DU APP*/
 typedef uint16_t (*DuMacSlotInd) ARGS((
    Pst       *pst,
    SlotInfo  *slotInfo ));
 
-extern uint16_t packMacSlotInd(Pst *pst, SlotInfo *slotInfo );
-extern uint16_t unpackMacSlotInd(DuMacSlotInd func, Pst *pst, Buffer *mBuf);
-extern uint16_t duHandleSlotInd(Pst *pst, SlotInfo *slotInfo);
+/* Functions for stop Ind from MAC to DU APP*/
+typedef uint16_t (*DuMacStopInd) ARGS((
+   Pst       *pst,
+   MacCellStopInfo  *cellId ));
 
 /* Functions for mac cell start req */
 typedef uint16_t (*DuMacCellStartReq) ARGS((
    Pst               *pst, 
    MacCellStartInfo  *cellStartInfo ));
 
-extern uint16_t packMacCellStartReq(Pst *pst, MacCellStartInfo  *cellStartInfo);
-extern uint16_t unpackMacCellStartReq(DuMacCellStartReq func, Pst *pst, Buffer *mBuf);
-extern uint16_t MacHdlCellStartReq(Pst *pst, MacCellStartInfo  *cellStartInfo);
-
 /* Functions for mac cell stop request */
 typedef uint16_t (*DuMacCellStopReq) ARGS((
    Pst               *pst,
    MacCellStopInfo  *cellStopInfo ));
  
-extern uint16_t packMacCellStopReq(Pst *pst, MacCellStopInfo  *cellStopInfo);
-extern uint16_t unpackMacCellStopReq(DuMacCellStopReq func, Pst *pst, Buffer *mBuf);
-extern uint16_t MacHdlCellStopReq(Pst *pst, MacCellStopInfo  *cellStopInfo);
-
 /* Function pointers for packing macCellCfg Request and Confirm */
-typedef uint16_t (*packMacCellCfgReq) ARGS((
+typedef int (*packMacCellCfgReq) ARGS((
    Pst           *pst,
    MacCellCfg    *macCellCfg ));
 
-typedef uint16_t (*packMacCellCfgConfirm) ARGS((
+typedef int (*packMacCellCfgConfirm) ARGS((
    Pst              *pst,
    MacCellCfgCfm    *macCellCfgCfm ));
 
-typedef uint16_t (*DuMacCellCfgReq) ARGS((
+typedef int (*DuMacCellCfgReq) ARGS((
    Pst        *pst,        
    MacCellCfg *macCellCfg));
 
-typedef uint16_t (*DuMacCellCfgCfm) ARGS((
+typedef int (*DuMacCellCfgCfm) ARGS((
+   Pst        *pst,        
    MacCellCfgCfm *macCellCfgCfm ));
 
-extern uint16_t packMacCellCfg(Pst *pst, MacCellCfg *macCellCfg);
+/* Functions for UL CCCH Ind from MAC to DU APP*/
+typedef uint16_t (*DuMacUlCcchInd) ARGS((
+   Pst           *pst,
+   UlCcchIndInfo *ulCcchIndInfo ));
+
+/* Functions for DL CCCH Ind from DU APP to MAC*/
+typedef uint16_t (*DuMacDlCcchInd) ARGS((
+   Pst           *pst,
+   DlCcchIndInfo *dlCcchIndInfo ));
+
+extern uint16_t packMacSlotInd(Pst *pst, SlotInfo *slotInfo );
+extern uint16_t unpackMacSlotInd(DuMacSlotInd func, Pst *pst, Buffer *mBuf);
+extern uint16_t duHandleSlotInd(Pst *pst, SlotInfo *slotInfo);
+extern uint16_t packMacCellStartReq(Pst *pst, MacCellStartInfo *cellStartInfo);
+extern uint16_t unpackMacCellStartReq(DuMacCellStartReq func, Pst *pst, Buffer *mBuf);
+extern uint16_t MacHdlCellStartReq(Pst *pst, MacCellStartInfo  *cellStartInfo);
+extern uint16_t packMacCellStopReq(Pst *pst, MacCellStopInfo  *cellStopInfo);
+extern uint16_t unpackMacCellStopReq(DuMacCellStopReq func, Pst *pst, Buffer *mBuf);
+extern uint16_t MacHdlCellStopReq(Pst *pst, MacCellStopInfo  *cellStopInfo);
+extern int  packMacCellCfg(Pst *pst, MacCellCfg *macCellCfg);
 extern int MacHdlCellCfgReq(Pst *pst, MacCellCfg *macCellCfg);
 extern void cmUnpackLwLcMacCellCfg(DuMacCellCfgReq func, Pst *pst, Buffer *mBuf);
-extern uint16_t unpackMacCellCfgCfm(DuMacCellCfgCfm func, Pst *pst, Buffer *mBuf);
-extern uint16_t duHandleMacCellCfgCfm(MacCellCfgCfm *macCellCfgCfm);
-
+extern int unpackMacCellCfgCfm(DuMacCellCfgCfm func, Pst *pst, Buffer *mBuf);
+extern int duHandleMacCellCfgCfm(Pst *pst, MacCellCfgCfm *macCellCfgCfm);
+extern uint16_t packMacStopInd(Pst *pst, MacCellStopInfo *cellId);
+extern uint16_t unpackMacStopInd(DuMacStopInd func, Pst *pst, Buffer *mBuf);
+extern uint16_t duHandleStopInd(Pst *pst, MacCellStopInfo *cellId);
+extern uint16_t packMacUlCcchInd(Pst *pst, UlCcchIndInfo *ulCcchIndInfo);
+extern uint16_t unpackMacUlCcchInd(DuMacUlCcchInd func, Pst *pst, Buffer *mBuf);
+extern uint16_t duHandleUlCcchInd(Pst *pst, UlCcchIndInfo *ulCcchIndInfo);
+extern uint16_t packMacDlCcchInd(Pst *pst, DlCcchIndInfo *dlCcchIndInfo);
+extern uint16_t unpackMacDlCcchInd(DuMacDlCcchInd func, Pst *pst, Buffer *mBuf);
+extern uint16_t MacHdlDlCcchInd(Pst *pst, DlCcchIndInfo *dlCcchIndInfo);
+uint8_t sendStopIndMacToDuApp();
 #endif
 
 /**********************************************************************