X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2F5gnrmac%2Fmac.h;h=800b49dc2ddefdc9b4db0b17abc799bba6c6dd56;hb=29b5f01d779caab32dbc5b3686a5d917e4c818ec;hp=b5dd42570622705af76753f85b66a7d4d404573c;hpb=8340c342ebcfc82193c3f66e7f15047c1e37399b;p=o-du%2Fl2.git diff --git a/src/5gnrmac/mac.h b/src/5gnrmac/mac.h index b5dd42570..800b49dc2 100644 --- a/src/5gnrmac/mac.h +++ b/src/5gnrmac/mac.h @@ -31,7 +31,8 @@ #include "cm_hash.h" /* Common Hash List Defines */ #include "cm_lte.h" /* Common LTE Defines */ #include "cm_mblk.h" /* Common LTE Defines */ -#include "tfu.h" /* RGU Interface defines */ +#include "rgu.h" /* RGU interface includes*/ +#include "tfu.h" /* TFU Interface defines */ #include "lrg.h" #include "du_app_mac_inf.h" #include "mac_sch_interface.h" @@ -45,6 +46,7 @@ #include "cm_hash.x" /* Common Hash List Definitions */ #include "cm_lte.x" /* Common LTE Defines */ #include "cm_mblk.x" /* Common LTE Defines */ +#include "rgu.x" #include "tfu.x" /* RGU Interface includes */ #include "lrg.x" @@ -52,24 +54,82 @@ #define MAX_ZERO_CORR_CFG_IDX 16 /* max zero correlation config index */ #define SI_RNTI 0xFFFF #define P_RNTI 0xFFFE +#define MAX_MAC_CE 6 +#define MAX_UE 1 +#define MAX_CRI_SIZE 6 +#define MAX_MAC_DL_PDU 10 + +#define MAC_LCID_CCCH 0 +#define MAC_DEDLC_MIN_LCID 1 +#define MAC_DEDLC_MAX_LCID 32 +#define MAC_LCID_RESERVED_MIN 33 +#define MAC_LCID_RESERVED_MAX 51 +#define MAC_LCID_CCCH_48BIT 52 +#define MAC_LCID_BIT_RATE_QUERY 53 +#define MAC_LCID_MULT_PHR_FOUR_OCT 54 +#define MAC_LCID_CFG_GRANT_CFM 55 +#define MAC_LCID_MULT_PHR_ONE_OCT 56 +#define MAC_LCID_SINGLE_PHR 57 +#define MAC_LCID_CRNTI 58 +#define MAC_LCID_SHORT_TRUNC_BSR 59 +#define MAC_LCID_LONG_TRUNC_BSR 60 +#define MAC_LCID_SHORT_BSR 61 +#define MAC_LCID_LONG_BSR 62 +#define MAC_LCID_CRI 62 +#define MAC_LCID_PADDING 63 typedef struct macDlSlot { - DlAlloc dlInfo; - + DlSchedInfo dlInfo; }MacDlSlot; typedef struct macUlSlot { - UlSchInfo ulCellInfo; + UlSchedInfo ulInfo; }MacUlSlot; +typedef struct macCbInfo +{ + uint16_t cellId; + uint16_t crnti; + uint8_t msg3Pdu[6]; /* used as CRI value during muxing */ + uint8_t *msg4Pdu; /* storing DL-CCCH Ind Pdu */ + uint16_t msg4PduLen; /* storing DL-CCCH Ind Pdu Len */ + uint8_t *msg4TxPdu; /* muxed Pdu used for re-transmission */ + uint16_t msg4TbSize; /* size required for msg4TxPdu */ +}MacRaCbInfo; + +typedef struct macCe +{ + uint16_t macCeLcid; + uint8_t macCeValue[6]; +}MacCe; + +typedef struct macCeInfo +{ + uint16_t numCes; + MacCe macCe[MAX_MAC_CE]; +}MacCeInfo; + +typedef struct macDlInfo +{ + uint16_t lcId; + uint16_t pduLen; + uint8_t *dlPdu; +}MacDlInfo; + +typedef struct macDlData +{ + uint16_t numPdu; + MacDlInfo pduInfo[MAX_MAC_DL_PDU]; +}MacDlData; + typedef struct macCellCb { - uint16_t cellId; - RachIndInfo raCb; - MacDlSlot dlSlot[MAX_SLOT_SUPPORTED]; - MacUlSlot ulSlot[MAX_SLOT_SUPPORTED]; + uint16_t cellId; + MacRaCbInfo macRaCb[MAX_UE]; + MacDlSlot dlSlot[MAX_SLOT_SUPPORTED]; + MacUlSlot ulSlot[MAX_SLOT_SUPPORTED]; }MacCellCb; typedef struct macCb @@ -79,8 +139,17 @@ typedef struct macCb }MacCb; /* global variable */ -EXTERN MacCb macCb; +MacCb macCb; void fillMacToSchPst(Pst *pst); +void fillRarPdu(RarInfo *rarInfo); +void createMacRaCb(uint16_t cellId, uint16_t crnti); +void fillMsg4DlData(MacDlData *dlData, uint8_t *msg4Pdu); +void fillMacCe(MacCeInfo *macCeData, uint8_t *msg3Pdu); +void macMuxPdu(MacDlData *dlData, MacCeInfo *macCeData, uint8_t *msg4TxPdu, uint16_t tbSize); +int unpackRxData(RxDataIndPdu *rxDataIndPdu); +uint16_t macSendUlCcchInd(uint8_t *rrcContainer, uint16_t cellId, uint16_t crnti); +void fillMg4Pdu(Msg4Alloc *msg4Alloc); +void buildAndSendMuxPdu(SlotIndInfo currTimingInfo); #endif /**********************************************************************