Added missing triggers and state params for cell up
[o-du/l2.git] / src / cm / du_app_mac_inf.h
index 335c182..40f2ab4 100644 (file)
 
 #define NUM_SSB                1       /* max value is 64 */
 #define SSB_MASK_SIZE  1       /* SSB mask size is 32bit for sub6 */
+#define SIB1_NEW_TX_PERIOD      160
+#define SIB1_REPETITION_PERIOD   20
+#define CORESET_0_INDEX      0
+#define SEARCHSPACE_0_INDEX   0
+#define SIB1_MCS  4
 
+/* Macros for coupling */
+#define DU_MAC_LC  0
+#define DU_MAC_TC  1
+#define DU_MAC_LWLC  2
 
 /* Event IDs */
 #define EVENT_MAC_CELL_CONFIG_REQ    200
 #define EVENT_MAC_CELL_CONFIG_CFM    201
+#define EVENT_MAC_CELL_START_REQ     202
+#define EVENT_MAC_CELL_STOP_REQ      203
+#define EVENT_MAC_SLOT_IND           204
 
 typedef enum
 {
@@ -112,16 +124,16 @@ typedef struct carrierCfg
 
 typedef struct ssbCfg
 {
-   U32         ssbPbchPwr;       /* SSB block power */
-   BchPduOpt   bchPayloadOption;       /* Options for generation of payload */
-   U8          scsCmn;           /* subcarrier spacing for common */
-   U16         ssbPrbOffset;     /* SSB PRB offset from point A */
+   uint32_t    ssbPbchPwr;       /* SSB block power */
+   BchPduOpt   bchPayloadFlag;   /* Options for generation of payload */
+   uint8_t     scsCmn;           /* subcarrier spacing for common */
+   uint16_t    ssbOffsetPointA;  /* SSB subcarrier offset from point A */
    BetaPss     betaPss;
    SSBPeriod   ssbPeriod;        /* SSB Periodicity in msec */
-   U8          ssbSubcOffset;    /* Subcarrier Offset */
-   U32         mibPdu;           /* MIB payload */
-   U32         nSSBMask[SSB_MASK_SIZE];      /* Bitmap for actually transmitted SSB. */
-   U8          beamId[NUM_SSB];
+   uint8_t     ssbScOffset;       /* Subcarrier Offset */
+   uint8_t     mibPdu[3];           /* MIB payload */
+   uint32_t    ssbMask[SSB_MASK_SIZE];      /* Bitmap for actually transmitted SSB. */
+   uint8_t     beamId[NUM_SSB];
    Bool        multCarrBand;     /* Multiple carriers in a band */
    Bool        multCellCarr;     /* Multiple cells in single carrier */
 }SsbCfg;
@@ -134,18 +146,24 @@ typedef struct fdmInfo
    U8    zeroCorrZoneCfg;   /* Zero correlation zone cofig */
    U8    numUnusedRootSeq;  /* Number of unused root sequence */
    U8    *unsuedRootSeq;     /* Unused root sequence per FD */
-}FdmInfo;
+}PrachFdmInfo;
 
 typedef struct prachCfg
 {
    Bool          pres;
+       uint8_t       prachCfgIdx;         /* PRACH Cfg Index */
    PrachSeqLen   prachSeqLen;         /* RACH Sequence length: Long/short */
-   U8            prachSubcSpacing;    /* Subcarrier spacing of RACH */
+   uint8_t       prachSubcSpacing;    /* Subcarrier spacing of RACH */
    RstSetCfg     prachRstSetCfg;      /* PRACH restricted set config */
-   U8            prachFdm;            /* PRACH FDM (1,2,4,8) */
-   FdmInfo       fdm[8];
-   U8            ssbPerRach;          /* SSB per RACH occassion */
-   Bool          prachMultCarrBand;    /* Multiple carriers in Band */
+       uint16_t      msg1FreqStart;       /* Msg1-FrequencyStart */
+   uint8_t       msg1Fdm;             /* PRACH FDM (1,2,4,8) */
+   PrachFdmInfo  fdm[8];              /* FDM info */
+   uint8_t       ssbPerRach;          /* SSB per RACH occassion */
+   Bool          prachMultCarrBand;   /* Multiple carriers in Band */
+   uint8_t       prachRestrictedSet; /* Support for PRACH restricted set */
+       uint8_t       raContResTmr;        /* RA Contention Resoultion Timer */
+       uint8_t       rsrpThreshSsb;       /* RSRP Threshold SSB */
+   uint8_t       raRspWindow;         /* RA Response Window */
 }PrachCfg;
 
 typedef struct tddCfg
@@ -155,6 +173,17 @@ typedef struct tddCfg
    SlotConfig         slotCfg[MAXIMUM_TDD_PERIODICITY][MAX_SYMB_PER_SLOT]; 
 }TDDCfg;
 
+typedef struct sib1CellCfg
+{
+   uint8_t  *sib1Pdu;
+   uint16_t sib1PduLen;
+   uint16_t sib1NewTxPeriod;
+   uint16_t sib1RepetitionPeriod;
+   uint8_t coresetZeroIndex;     /* derived from 4 LSB of pdcchSib1 present in MIB */
+   uint8_t searchSpaceZeroIndex; /* derived from 4 MSB of pdcchSib1 present in MIB */
+   uint16_t sib1Mcs;
+} Sib1CellCfg; 
+
 typedef struct macCellCfg
 {
    U16            transId;
@@ -170,55 +199,80 @@ typedef struct macCellCfg
    PrachCfg       prachCfg;   /* PRACH Configuration */
    TDDCfg         tddCfg;     /* TDD periodicity and slot configuration */
    RSSIMeasUnit   rssiUnit;   /* RSSI measurement unit */
+   Sib1CellCfg    sib1Cfg;
 }MacCellCfg;
 
 typedef struct macCellCfgCfm
 {
+       uint8_t        rsp; 
    U16            transId;
 }MacCellCfgCfm;
 
-/* function pointers for packing macCellCfg Request */
-typedef S16 (*packMacCellCfgReq) ARGS((
+typedef struct slotInfo
+{
+   uint16_t cellId;
+   uint16_t sfn;
+   uint16_t slot;
+}SlotInfo;
+
+typedef struct macCellStartInfo
+{
+   uint16_t cellId;
+}MacCellStartInfo;
+
+typedef struct macCellStopInfo
+{
+   uint16_t cellId;
+}MacCellStopInfo;
+
+/* 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 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((
    Pst           *pst,
-   MacCellCfg    *macCellCfg
-));
+   MacCellCfg    *macCellCfg ));
 
-typedef S16 (*packMacCellCfgCfm) ARGS((
+typedef uint16_t (*packMacCellCfgConfirm) ARGS((
    Pst              *pst,
-   MacCellCfgCfm    *macCellCfgCfm
-));
-
-typedef S16 (*DuMacCellCfgReq)     ARGS((
-        Pst        *pst,               /* Post Structure */
-        MacCellCfg *macCellCfg         /* Config Structure */
-     ));
-
-typedef S16 (*DuMacCellCfgCfm)     ARGS((
-        MacCellCfgCfm *macCellCfgCfm         /* Config Structure */
-     ));
-
-S16 packMacCellCfg(Pst *pst, MacCellCfg *macCellCfg);
-
-EXTERN S16 MacHdlCellCfgReq
-(
- Pst           *pst,
- MacCellCfg    *macCellCfg
-);
-
-void cmUnpackLwLcMacCellCfg(
-   DuMacCellCfgReq func,
-   Pst *pst,
-   Buffer *mBuf);
-
-S16 unpackMacCellCfgCfm(
-   DuMacCellCfgCfm func,
-   Pst *pst,
-   Buffer *mBuf);
-
-EXTERN S16 duHandleMacCellCfgCfm
-(
- MacCellCfgCfm    *macCellCfgCfm
-);
+   MacCellCfgCfm    *macCellCfgCfm ));
+
+typedef uint16_t (*DuMacCellCfgReq) ARGS((
+   Pst        *pst,        
+   MacCellCfg *macCellCfg));
+
+typedef uint16_t (*DuMacCellCfgCfm) ARGS((
+   MacCellCfgCfm *macCellCfgCfm ));
+
+extern uint16_t 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);
 
 #endif