[Epic-ID: ODUHIGH-406] [Task-ID: ODUHIGH-439] Building Paging RRC PDU
[o-du/l2.git] / src / du_app / du_mgr.h
index 7dad91b..d5a2dda 100644 (file)
@@ -57,6 +57,9 @@
 #define DU_SET_ZERO(_buf, _size)   \
    memset((_buf), 0, _size);
 
+/*Refer Spec 38.331 Annexure A: maxNrofPageRec : 32 [Maximum number of page records]*/
+#define MAX_PAGING_UE_RECORDS 32
+
 typedef enum
 {
    SLICE_INFO_NOT_AVAILABLE,
@@ -178,6 +181,42 @@ typedef struct  slotInfo
    uint16_t slot;
 }SlotInfo;
 
+typedef struct pagingMsg
+{
+   /*Note: Paging UEID is extracted from 5gSTMSI as per Spec 38.304, Sec 7.1.
+    *This is not same as DU-UE_F1AP_ID or CU_UE_F1AP_ID*/
+   uint16_t  pagUeId;              /* UE Identifier from CU*/
+
+   /*TODO: When RAN Inititated Paging will be supported then I-RNTI will be
+    * added as a choice for UE Identity along with S-TMSI*/
+   uint64_t  sTmsi;             /* UE Paging Identity: S-TMSI */
+   bool      pagingDrxPres;     /* flag to indicate paging drx present or not */
+   uint16_t  pagingDrx;         /* UE specific paging drx */
+   uint8_t   pagPriority;       /* Paging priority */
+   uint16_t  pagingFrame;       /* paging frame */
+   uint16_t  pagingFrameOffset; /* paging offset */
+   uint8_t   i_s;               /* Index points to PO from the sub-frame pattern */
+   uint16_t  T;                 /* T is DRX cycle of the UE */
+}DuPagingMsg;
+
+typedef struct duPagUeRecord
+{
+   uint16_t  pagUeId;           /*UEID calculated from 5gsTMSI as per Spec 38.304*/
+   uint64_t  sTmsi;             /* UE Paging Identity: S-TMSI */
+}DuPagUeRecord;
+
+typedef struct duPagInfo
+{
+   uint8_t      i_s;          /*Index of PO*/
+   CmLListCp    pagUeList;    /*List of UEs to be paged in this Paging Frame/Paging Occ*/
+}DuPagUeList;
+
+typedef struct duPagInfoMap
+{
+   uint16_t    pf;             /* Paging Frame*/
+   CmLListCp   pagInfoList;    /* Master List of Paging Identified by PF and i_s*/
+}DuPagInfoList;
+
 typedef struct duCellCb
 {
    uint16_t       cellId;                 /* Internal cell Id */
@@ -188,6 +227,8 @@ typedef struct duCellCb
    uint32_t       numActvUes;             /* Total Active UEs */
    DuUeCb         ueCb[MAX_NUM_UE];       /* Stores UE context */
    SlotInfo       currSlotInfo;
+   DuPagingMsg    tmpPagingInfoOfUe;      /* UE paging information */
+   CmHashListCp   pagingInfoMap;          /*Paging Map between PF and PagingInfoList*/
 }DuCellCb;
 
 typedef struct duLSapCb
@@ -293,6 +334,7 @@ uint8_t duSendEgtpDatInd(Buffer *mBuf);
 uint8_t duHdlSchCfgComplete(Pst *pst, RgMngmt *cfm);
 uint8_t duBuildAndSendMacCellStart();
 uint8_t duBuildAndSendMacCellStop(uint16_t cellId);
+
 #endif
 
 /**********************************************************************