# See the License for the specific language governing permissions and #
# limitations under the License. #
################################################################################
-*******************************************************************************/
+ *******************************************************************************/
/* Defines APIs exchanged between du_app and cl module of MAC */
#ifndef __MACINT_H__
#define __MACINT_H__
-#include <stdbool.h>
-
#define NUM_NUMEROLOGY 5 /* Number of numerology */
-#define MAXIMUM_TDD_PERIODICITY 5
+#define MAXIMUM_TDD_PERIODICITY 10
#define MAX_SYMB_PER_SLOT 14
#define NUM_SSB 1 /* max value is 64 */
#define SS_MONITORING_SYMBOL 0x2000; /* symbol-0, set 14th bit */
#define SIB1_MCS 4
-#define SRB_ID_0 0
-#define SRB_ID_1 1
-
/* Macro for Ue Context */
-#define MAX_NUM_LOGICAL_CHANNELS 11
#define MAX_NUM_SR_CFG_PER_CELL_GRP 8 /* Max number of scheduling request config per cell group */
#define MAC_NUM_TAGS 4 /* Max number of timing advance groups */
#define MAX_NUM_BWP 4 /* Max number of BWP per serving cell */
#define MAX_NUM_CRSET 3 /* Max number of control resource set in add/modify/release list */
#define MAX_NUM_SEARCH_SPC 10 /* Max number of search space in add/modify/release list */
-#define FREQ_DOM_RSRC_SIZE 6 /* i.e. 6 bytes because Size of frequency domain resource is 45 bits */
#define MONITORING_SYMB_WITHIN_SLOT_SIZE 2 /* i.e. 2 bytes because size of monitoring symbols within slot is 14 bits */
#define MAX_NUM_DL_ALLOC 16 /* Max number of pdsch time domain downlink allocation */
#define MAX_NUM_UL_ALLOC 16 /* Max number of pusch time domain uplink allocation */
#define SD_SIZE 3 /* Max size of Slice Differentiator in S-NSSAI */
-#define PDSCH_START_SYMBOL_LEN 53
-#define PUSCH_START_SYMBOL_LEN 41
+
+#define MAX_NUM_SRB 8
+#define MAX_NUM_DRB 64
+#define MAX_NUM_SCELL 32
+
+/* PUCCH Configuration Macro */
+#define MAX_NUM_PUCCH_RESRC 128
+#define MAX_NUM_PUCCH_RESRC_SET 4
+#define MAX_NUM_PUCCH_PER_RESRC_SET 32
+#define MAX_NUM_SPATIAL_RELATIONS 8
+#define MAX_NUM_PUCCH_P0_PER_SET 8
+#define MAX_NUM_PATH_LOSS_REF_RS 4
+#define MAX_NUM_DL_DATA_TO_UL_ACK 15
/* 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
+#define EVENT_MAC_CELL_START 202
+#define EVENT_MAC_CELL_STOP 203
+#define EVENT_MAC_CELL_UP_IND 204
#define EVENT_MAC_STOP_IND 205
#define EVENT_MAC_UL_CCCH_IND 206
#define EVENT_MAC_DL_CCCH_IND 207
#define EVENT_MAC_UE_CREATE_REQ 208
+#define EVENT_MAC_UE_CREATE_RSP 209
+#define EVENT_MAC_UE_RECONFIG_REQ 210
+#define EVENT_MAC_UE_RECONFIG_RSP 211
+
+#define BSR_PERIODIC_TIMER_SF_10 10
+#define BSR_RETX_TIMER_SF_320 320
+#define BSR_SR_DELAY_TMR_2560 2560
+
+typedef enum
+{
+ MAC_DU_APP_RSP_NOK,
+ MAC_DU_APP_RSP_OK
+}MacRsp;
typedef enum
{
typedef enum
{
PDSCH_X_OVERHEAD_6,
- PDSCH_X_OVERHEAD_12,
- PDSCH_X_OVERHEAD_18
+ PDSCH_X_OVERHEAD_12,
+ PDSCH_X_OVERHEAD_18
}PdschXOverhead;
typedef enum
typedef enum
{
- CCE_REG_MAPPINGTYPE_PR_INTERLEAVED,
+ CCE_REG_MAPPINGTYPE_PR_INTERLEAVED = 1,
CCE_REG_MAPPINGTYPE_PR_NONINTERLEAVED
}REGMappingType;
typedef enum
{
- SLOTPERIODICITYANDOFFSET_PR_SL1,
+ SLOTPERIODICITYANDOFFSET_PR_SL1 = 1,
SLOTPERIODICITYANDOFFSET_PR_SL2,
SLOTPERIODICITYANDOFFSET_PR_SL4,
SLOTPERIODICITYANDOFFSET_PR_SL5,
typedef enum
{
- SAMEASREG_BUNDLE,
- ALL_CONTIGUOUS_RBS
+ SAMEASREG_BUNDLE,
+ ALL_CONTIGUOUS_RBS
}PrecoderGranul;
typedef enum
{
- SEARCHSPACETYPE_PR_COMMON,
+ SEARCHSPACETYPE_PR_COMMON = 1,
SEARCHSPACETYPE_PR_UE_SPECIFIC
}SearchSpaceType;
+typedef enum
+{
+ QOS_NON_DYNAMIC = 1,
+ QOS_DYNAMIC
+}QosType;
+
typedef enum
{
AGGREGATIONLEVEL_N0 = 0,
typedef enum
{
- TYPE_STATIC_BUNDLING,
+ TYPE_STATIC_BUNDLING = 1,
TYPE_DYNAMIC_BUNDLING
}BundlingType;
typedef enum
{
- LC_PRIORITY_1 = 1,
- LC_PRIORITY_2,
- LC_PRIORITY_3
+ SET2_SIZE_N4,
+ SET2_SIZE_WIDEBAND
+}BundlingSizeSet2;
+
+typedef enum
+{
+ SET1_SIZE_N4,
+ SET1_SIZE_WIDEBAND,
+ SET1_SIZE_N2_WIDEBAND,
+ SET1_SIZE_N4_WIDEBAND
+}BundlingSizeSet1;
+
+typedef enum
+{
+ LC_PRIORITY_1 = 1,
+ LC_PRIORITY_2,
+ LC_PRIORITY_3
}LcPriority;
+typedef enum
+{
+ PBR_KBPS_0,
+ PBR_KBPS_8,
+ PBR_KBPS_16,
+ PBR_KBPS_32,
+ PBR_KBPS_64,
+ PBR_KBPS_128,
+ PBR_KBPS_256,
+ PBR_KBPS_512,
+ PBR_KBPS_1024,
+ PBR_KBPS_2048,
+ PBR_KBPS_4096,
+ PBR_KBPS_8192,
+ PBR_KBPS_16384,
+ PBR_KBPS_32768,
+ PBR_KBPS_65536,
+ PBR_KBPS_INFINITY
+}PBitRate;
+
+typedef enum
+{
+ BSD_MS_5,
+ BSD_MS_10,
+ BSD_MS_20,
+ BSD_MS_50,
+ BSD_MS_100,
+ BSD_MS_150,
+ BSD_MS_300,
+ BSD_MS_500,
+ BSD_MS_1000,
+ BSD_SPARE_7,
+ BSD_SPARE_6,
+ BSD_SPARE_5,
+ BSD_SPARE_4,
+ BSD_SPARE_3,
+ BSD_SPARE_2,
+ BSD_SPARE_1
+
+}BucketSizeDur;
+
+typedef enum
+{
+ RADIO_NW_LAYER_FAIL,
+ TRANSPORT_LAYER_FAIL,
+ PROTOCOL_FAIL,
+ MISCELLANEOUS
+}CauseGrp;
+
+typedef enum
+{
+ UNSPECIFIED_RADIO_NW_CAUSE,
+ RL_FAIL_RLC,
+ UNKNOWN_GNB_CU_UE_F1AP_ID,
+ ALREADY_ALLOCATED_GNB_CU_UE_F1AP_ID,
+ UNKNOWN_GNB_DU_UE_F1AP_ID,
+ ALREADY_ALLOCATED_GNB_DU_UE_F1AP_ID,
+ UNKNOWN_UE_F1AP_ID_PAIR,
+ INCONSISTENT_UE_F1AP_ID_PAIR,
+ INTERACTION_WITH_OTHER_PROCEDURE,
+ UNSUPPORTED_QCI,
+ ACTION_REQUIRED_FOR_RADIO_REASONS,
+ RADIO_RESOURCES_UNAVAILABLE,
+ CANCELLED_PROCEDURE,
+ RELEASE_NORMAL,
+ CELL_UNAVAILABLE,
+ OTHER_RL_FAILURE,
+ UE_REJECTION,
+ RESOURCES_UNAVAILABLE_FOR_SLICE
+}RadioNwLyrCause;
+
+typedef enum
+{
+ UNSPECIFIED_TRANSPORT_LAYER_CAUSE,
+ TRANSPORT_RESOURCE_UNAVAILABLE
+}TransLyrCause;
+
+typedef enum
+{
+ TRANSFER_SYNTAX_ERROR,
+ ABSTRACT_SYNTAX_ERROR_REJECT,
+ ABSTRACT_SYNTAX_ERROR_IGNORE_AND_REJECT,
+ INCOMPATIBLE_MESSAGE_FOR_RECEIVER_STATE,
+ SEMANTIC_ERR,
+ ABSTRAXCT_SYNTAX_ERROR_FALSELY_CONSTRUCTED_MSG,
+ UNSPECIFIED_PROTOCOL_CAUSE
+}ProtCause;
+
+typedef enum
+{
+ CONTROL_PROCESSING_OVERLOAD,
+ NOT_ENOUGH_USER,
+ PLANE_PROCESSING_RESOURCES,
+ HARDWARE_FAIL,
+ INTERVENTION_BY_O_AND_M,
+ UNSPECIFIED_MISC_CAUSE
+}MiscFailCause;
+
+typedef enum
+{
+ MCS_TABLE_QAM64,
+ MCS_TABLE_QAM256,
+ MCS_TABLE_QAM64_LOW_SE
+}McsTable;
+
+typedef struct failureCause
+{
+ CauseGrp type;
+ union
+ {
+ RadioNwLyrCause radioNwCause;
+ TransLyrCause transportCause;
+ ProtCause protcolCause;
+ MiscFailCause miscCause;
+ }u;
+}FailureCause;
+
typedef struct carrierCfg
{
- Bool pres;
- U16 bw; /* DL/UL bandwidth */
- U32 freq; /* Absolute frequency of DL/UL point A in KHz */
- U16 k0[NUM_NUMEROLOGY]; /* K0 for DL/UL */
- U16 gridSize[NUM_NUMEROLOGY]; /* DL/UL Grid size for each numerologies */
- U16 numAnt; /* Number of Tx/Rx antennas */
+ bool pres;
+ uint32_t bw; /* DL/UL bandwidth */
+ uint32_t freq; /* Absolute frequency of DL/UL point A in KHz */
+ uint16_t k0[NUM_NUMEROLOGY]; /* K0 for DL/UL */
+ uint16_t gridSize[NUM_NUMEROLOGY]; /* DL/UL Grid size for each numerologies */
+ uint16_t numAnt; /* Number of Tx/Rx antennas */
}CarrierCfg;
typedef struct ssbCfg
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 */
+ bool multCarrBand; /* Multiple carriers in a band */
+ bool multCellCarr; /* Multiple cells in single carrier */
}SsbCfg;
typedef struct fdmInfo
{
- U16 rootSeqIdx; /* Root sequence index */
- U8 numRootSeq; /* Number of root sequences required for FD */
- U16 k1; /* Frequency Offset for each FD */
- U8 zeroCorrZoneCfg; /* Zero correlation zone cofig */
- U8 numUnusedRootSeq; /* Number of unused root sequence */
- U8 *unsuedRootSeq; /* Unused root sequence per FD */
+ uint16_t rootSeqIdx; /* Root sequence index */
+ uint8_t numRootSeq; /* Number of root sequences required for FD */
+ uint16_t k1; /* Frequency Offset for each FD */
+ uint8_t zeroCorrZoneCfg; /* Zero correlation zone cofig */
+ uint8_t numUnusedRootSeq; /* Number of unused root sequence */
+ uint8_t *unsuedRootSeq; /* Unused root sequence per FD */
}PrachFdmInfo;
typedef struct prachCfg
{
- Bool pres;
- uint8_t prachCfgIdx; /* PRACH Cfg Index */
+ bool pres;
+ uint8_t prachCfgIdx; /* PRACH Cfg Index */
PrachSeqLen prachSeqLen; /* RACH Sequence length: Long/short */
uint8_t prachSubcSpacing; /* Subcarrier spacing of RACH */
RstSetCfg prachRstSetCfg; /* PRACH restricted set config */
- uint16_t msg1FreqStart; /* Msg1-FrequencyStart */
+ uint16_t msg1FreqStart; /* Msg1-FrequencyStart */
uint8_t msg1Fdm; /* PRACH FDM (1,2,4,8) */
- uint8_t rootSeqLen; /* Root sequence length */
+ uint8_t rootSeqLen; /* Root sequence length */
PrachFdmInfo fdm[8]; /* FDM info */
uint8_t ssbPerRach; /* SSB per RACH occassion */
- Bool prachMultCarrBand; /* Multiple carriers in Band */
+ 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 raContResTmr; /* RA Contention Resoultion Timer */
+ uint8_t rsrpThreshSsb; /* RSRP Threshold SSB */
uint8_t raRspWindow; /* RA Response Window */
}PrachCfg;
typedef struct tddCfg
{
- Bool pres;
+ bool pres;
DlUlTxPeriodicity tddPeriod; /* DL UL Transmission periodicity */
SlotConfig slotCfg[MAXIMUM_TDD_PERIODICITY][MAX_SYMB_PER_SLOT];
}TDDCfg;
{
uint16_t firstPrb;
uint16_t numPrb;
- uint8_t scs;
- uint8_t cyclicPrefix;
+ uint8_t scs;
+ uint8_t cyclicPrefix;
}BwpParams;
typedef struct candidatesInfo
typedef struct searchSpaceCfg
{
uint8_t searchSpaceId;
- uint8_t coresetId;
- uint16_t monitoringSlot;
- uint16_t duration;
- uint16_t monitoringSymbol;
- CandidatesInfo candidate;
+ uint8_t coresetId;
+ uint16_t monitoringSlot;
+ uint16_t duration;
+ uint16_t monitoringSymbol;
+ CandidatesInfo candidate;
}SearchSpaceCfg;
typedef struct pdcchConfigCommon
typedef struct pdschConfigCommon
{
uint8_t k0;
- uint8_t mappingType;
- uint8_t startSymbol;
- uint8_t lengthSymbol;
+ uint8_t mappingType;
+ uint8_t startSymbol;
+ uint8_t lengthSymbol;
}PdschConfigCommon;
typedef struct pucchConfigCommon
{
uint8_t pucchResourceCommon;
- uint8_t pucchGroupHopping;
+ uint8_t pucchGroupHopping;
}PucchConfigCommon;
typedef struct puschConfigCommon
{
/* PUSCH-TimeDomainResourceAllocation info */
uint8_t k2;
- uint8_t mappingType;
- uint8_t startSymbol;
- uint8_t lengthSymbol;
+ uint8_t mappingType;
+ uint8_t startSymbol;
+ uint8_t lengthSymbol;
}PuschConfigCommon;
typedef struct bwpDlConfig
{
BwpParams bwp;
- PdcchConfigCommon pdcchCommon;
- PdschConfigCommon pdschCommon;
+ PdcchConfigCommon pdcchCommon;
+ PdschConfigCommon pdschCommon;
}BwpDlConfig;
typedef struct bwpUlConfig
{
BwpParams bwp;
- // rach config common sent in PrachCfg
- PucchConfigCommon pucchCommon;
- PuschConfigCommon puschCommon;
+ // rach config common sent in PrachCfg
+ PucchConfigCommon pucchCommon;
+ PuschConfigCommon puschCommon;
}BwpUlConfig;
typedef struct macCellCfg
{
- 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 */
+ uint16_t cellId; /* Cell Id */
+ uint8_t carrierId; /* Carrired Index */
+ uint16_t phyCellId; /* Physical cell id */
+ uint8_t numerology; /* Supported numerology */
+ 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 */
+ BwpDlConfig initialDlBwp; /* Initial DL BWP */
+ BwpUlConfig initialUlBwp; /* Initial UL BWP */
+ uint8_t dmrsTypeAPos; /* DMRS Type A position */
}MacCellCfg;
typedef struct macCellCfgCfm
{
- uint8_t rsp;
- U16 transId;
+ uint16_t cellId;
+ uint8_t rsp;
}MacCellCfgCfm;
-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;
-
typedef struct ulCcchInd
{
uint16_t cellId;
uint16_t crnti;
+ uint16_t ulCcchMsgLen;
uint8_t *ulCcchMsg;
}UlCcchIndInfo;
uint8_t *dlCcchMsg;
}DlCcchIndInfo;
-typedef struct bsrCfg
+typedef struct bsrTmrCfg
{
- uint8_t periodicTimer;
- uint8_t retxTimer;
- uint8_t srDelayTimer;
-}BsrCfg;
+ uint16_t periodicTimer;
+ uint16_t retxTimer;
+ uint16_t srDelayTimer;
+}BsrTmrCfg;
/* Info of Scheduling Request to Add/Modify */
typedef struct macCellGrpCfg
{
SchedReqCfg schReqCfg;
- TagCfg tagCfg;
- //BsrCfg bsrCfg;
- bool phrCfgSetupPres; /* true/false: phrCfgSetup/phrCfgRelease */
- PhrCfg phrCfg;
+ TagCfg tagCfg;
+ BsrTmrCfg bsrTmrCfg;
+ bool phrCfgSetupPres; /* true/false: phrCfgSetup/phrCfgRelease */
+ PhrCfg phrCfg;
}MacCellGrpCfg;
typedef struct phyCellGrpCfg
typedef struct pdschTimeDomRsrcAlloc
{
CommonMappingType mappingType;
+ uint8_t startSymbol;
+ uint8_t symbolLength;
uint8_t startSymbolAndLength;
}PdschTimeDomRsrcAlloc;
+
+typedef struct pdschBundling
+{
+ struct staticBundling
+ {
+ BundlingSizeSet2 size;
+ }StaticBundling;
+ struct dynamicBundling
+ {
+ BundlingSizeSet1 sizeSet1;
+ BundlingSizeSet2 sizeSet2;
+ }DynamicBundling;
+}PdschBundling;
+
/* DMRS downlink configuration */
typedef struct dmrsDlCfg
{
RBGSize rbgSize;
CodeWordsSchedDci numCodeWordsSchByDci; /* Number of code words scheduled by DCI */
BundlingType bundlingType;
+ PdschBundling bundlingInfo;
}PdschConfig;
/* Initial Downlink BWP */
}PdschServCellCfg;
/* PUCCH Configuration */
+
+typedef struct pucchResrcSetInfo
+{
+ uint8_t resrcSetId;
+ uint8_t resrcListCount;
+ uint8_t resrcList[MAX_NUM_PUCCH_PER_RESRC_SET];
+ uint8_t maxPayLoadSize;
+}PucchResrcSetInfo;
+
+typedef struct pucchResrcSetCfg
+{
+ uint8_t resrcSetToAddModListCount;
+ PucchResrcSetInfo resrcSetToAddModList[MAX_NUM_PUCCH_RESRC_SET];
+ uint8_t resrcSetToRelListCount;
+ uint8_t resrcSetToRelList[MAX_NUM_PUCCH_RESRC];
+}PucchResrcSetCfg;
+
+typedef struct pucchFormat0
+{
+ uint8_t initialCyclicShift;
+ uint8_t numSymbols;
+ uint8_t startSymbolIdx;
+}PucchFormat0;
+
+typedef struct pucchFormat1
+{
+ uint8_t initialCyclicShift;
+ uint8_t numSymbols;
+ uint8_t startSymbolIdx;
+ uint8_t timeDomOCC;
+}PucchFormat1;
+
+typedef struct pucchFormat2_3
+{
+ uint8_t numPrbs;
+ uint8_t numSymbols;
+ uint8_t startSymbolIdx;
+}PucchFormat2_3;
+
+typedef struct pucchFormat4
+{
+ uint8_t numSymbols;
+ uint8_t occLen;
+ uint8_t occIdx;
+ uint8_t startSymbolIdx;
+}PucchFormat4;
+
+typedef struct pucchResrcInfo
+{
+ uint8_t resrcId;
+ uint16_t startPrb;
+ uint8_t intraFreqHop;
+ uint16_t secondPrbHop;
+ uint8_t pucchFormat;
+ union
+ {
+ PucchFormat0 *format0;
+ PucchFormat1 *format1;
+ PucchFormat2_3 *format2;
+ PucchFormat2_3 *format3;
+ PucchFormat4 *format4;
+ }PucchFormat;
+}PucchResrcInfo;
+
+typedef struct pucchResrcCfg
+{
+ uint8_t resrcToAddModListCount;
+ PucchResrcInfo resrcToAddModList[MAX_NUM_PUCCH_RESRC];
+ uint8_t resrcToRelListCount;
+ uint8_t resrcToRelList[MAX_NUM_PUCCH_RESRC];
+}PucchResrcCfg;
+
+typedef struct pucchFormatCfg
+{
+ uint8_t interSlotFreqHop;
+ uint8_t addDmrs;
+ uint8_t maxCodeRate;
+ uint8_t numSlots;
+ bool pi2BPSK;
+ bool harqAckCSI;
+}PucchFormatCfg;
+
+typedef struct schedReqResrcInfo
+{
+ uint8_t resrcId;
+ uint8_t requestId;
+ uint8_t periodicity;
+ uint16_t offset;
+ uint8_t resrc;
+}SchedReqResrcInfo;
+
+typedef struct pucchSchedReqCfg
+{
+ uint8_t schedAddModListCount;
+ SchedReqResrcInfo schedAddModList[MAX_NUM_SR_CFG_PER_CELL_GRP];
+ uint8_t schedRelListCount;
+ uint8_t schedRelList[MAX_NUM_SR_CFG_PER_CELL_GRP];
+}PucchSchedReqCfg;
+
+typedef struct spatialRelationInfo
+{
+ uint8_t spatialRelationId;
+ uint8_t servCellIdx;
+ uint8_t pathLossRefRSId;
+ uint8_t p0PucchId;
+ uint8_t closeLoopIdx;
+}SpatialRelationInfo;
+
+typedef struct pucchSpatialCfg
+{
+ uint8_t spatialAddModListCount;
+ SpatialRelationInfo spatialAddModList[MAX_NUM_SPATIAL_RELATIONS];
+ uint8_t spatialRelListCount;
+ uint8_t spatialRelList[MAX_NUM_SPATIAL_RELATIONS];
+}PucchSpatialCfg;
+
+typedef struct p0PucchCfg
+{
+ uint8_t p0PucchId;
+ int p0PucchVal;
+}P0PucchCfg;
+
+typedef struct pathLossRefRSCfg
+{
+ uint8_t pathLossRefRSId;
+}PathLossRefRSCfg;
+
+typedef struct pucchMultiCsiCfg
+{
+ uint8_t multiCsiResrcListCount;
+ uint8_t multiCsiResrcList[MAX_NUM_PUCCH_RESRC-1];
+}PucchMultiCsiCfg;
+
+typedef struct pucchDlDataToUlAck
+{
+ uint8_t dlDataToUlAckListCount;
+ uint8_t dlDataToUlAckList[MAX_NUM_DL_DATA_TO_UL_ACK];
+}PucchDlDataToUlAck;
+
+typedef struct pucchPowerControl
+{
+ int deltaF_Format0;
+ int deltaF_Format1;
+ int deltaF_Format2;
+ int deltaF_Format3;
+ int deltaF_Format4;
+ uint8_t p0SetCount;
+ P0PucchCfg p0Set[MAX_NUM_PUCCH_P0_PER_SET];
+ uint8_t pathLossRefRSListCount;
+ PathLossRefRSCfg pathLossRefRSList[MAX_NUM_PATH_LOSS_REF_RS];
+}PucchPowerControl;
+
typedef struct pucchCfg
{
- /* TODO : Not used currently */
+ PucchResrcSetCfg *resrcSet;
+ PucchResrcCfg *resrc;
+ PucchFormatCfg *format1;
+ PucchFormatCfg *format2;
+ PucchFormatCfg *format3;
+ PucchFormatCfg *format4;
+ PucchSchedReqCfg *schedReq;
+ PucchMultiCsiCfg *multiCsiCfg;
+ PucchSpatialCfg *spatialInfo;
+ PucchDlDataToUlAck *dlDataToUlAck;
+ PucchPowerControl *powerControl;
}PucchCfg;
/* Transform precoding disabled */
{
uint8_t k2;
CommonMappingType mappingType;
+ uint8_t startSymbol;
+ uint8_t symbolLength;
uint8_t startSymbolAndLength;
}PuschTimeDomRsrcAlloc;
/* PUSCH Configuration */
typedef struct puschCfg
{
+ uint8_t dataScramblingId;
DmrsUlCfg dmrsUlCfgForPuschMapTypeA;
ResAllocType resourceAllocType;
uint8_t numTimeDomRsrcAlloc;
ServCellCfgInfo servCellCfg;
}SpCellCfg;
-typedef struct maxAggrBitRate
+typedef struct ambrCfg
{
- uint32_t ulBits;
- uint32_t dlBits;
-}MaxAggrBitRate;
+ uint32_t ulBr; /* UL Bit rate */
+ uint32_t dlBr; /* DL Bit rate */
+}AmbrCfg;
/* Single Network Slice Selection assistance Info */
typedef struct snssai
typedef struct ngRanAllocAndRetPri
{
- uint8_t priorityLevel;
- uint8_t preEmptionCap;
- uint8_t preEmptionVul;
+ uint8_t priorityLevel;
+ uint8_t preEmptionCap;
+ uint8_t preEmptionVul;
}NgRanAllocAndRetPri;
typedef struct grbQosInfo
{
- uint32_t maxFlowBitRateDl;
- uint32_t maxFlowBitRateUl;
- uint32_t guarFlowBitRateDl;
- uint32_t guarFlowBitRateUl;
+ uint32_t maxFlowBitRateDl;
+ uint32_t maxFlowBitRateUl;
+ uint32_t guarFlowBitRateDl;
+ uint32_t guarFlowBitRateUl;
}GrbQosInfo;
typedef struct drbQos
{
- uint8_t fiveQiType; /* Dynamic or non-dynamic */
+ QosType fiveQiType; /* Dynamic or non-dynamic */
union
{
NonDynFiveQi nonDyn5Qi;
uint8_t priority;
uint8_t lcGroup;
uint8_t schReqId;
- uint8_t pbr; // prioritisedBitRate
- uint8_t bsd; // bucketSizeDuration
+ PBitRate pbr; // prioritisedBitRate
+ BucketSizeDur bsd; // bucketSizeDuration
}UlLcCfg;
typedef struct duLcCfg
typedef struct lcCfg
{
+ ConfigType configType;
uint8_t lcId;
DrbQosInfo *drbQos;
Snssai *snssai;
- UlLcCfg *ulLcCfg;
+ bool ulLcCfgPres;
+ UlLcCfg ulLcCfg;
DlLcCfg dlLcCfg;
-
}LcCfg;
+typedef struct modulationInfo
+{
+ uint8_t modOrder; /* Modulation order */
+ uint8_t mcsIndex; /* MCS Index */
+ McsTable mcsTable; /* MCS table */
+}ModulationInfo;
+
typedef struct macUeCfg
{
- uint16_t cellIdx;
+ uint16_t cellId;
uint8_t ueIdx;
uint16_t crnti;
MacCellGrpCfg macCellGrpCfg;
PhyCellGrpCfg phyCellGrpCfg;
SpCellCfg spCellCfg;
- MaxAggrBitRate *maxAggrBitRate;
+ AmbrCfg *ambrCfg;
+ ModulationInfo dlModInfo; /* DL modulation info */
+ ModulationInfo ulModInfo; /* UL modulation info */
uint8_t numLcs;
- LcCfg lcCfgList[MAX_NUM_LOGICAL_CHANNELS];
+ LcCfg lcCfgList[MAX_NUM_LC];
+ UeCfgState macUeCfgState; /* InActive / Completed */
}MacUeCfg;
+typedef struct nrcgi
+{
+ Plmn plmn;
+ uint16_t cellId;
+}Nrcgi;
+
+typedef struct srbFailInfo
+{
+ uint8_t srbId;
+ FailureCause cause;
+}SRBFailInfo;
+
+typedef struct drbFailInfo
+{
+ uint8_t drbId;
+ FailureCause cause;
+}DRBFailInfo;
+
+typedef struct sCellFailInfo
+{
+ Nrcgi nrcgi;
+ FailureCause cause;
+}SCellFailInfo;
+
+typedef struct ueCfgRsp
+{
+ uint16_t cellId;
+ uint16_t ueIdx;
+ MacRsp result;
+ uint8_t numSRBFailed; /* valid values : 0 to MAX_NUM_SRB */
+ SRBFailInfo *failedSRBlisti;
+ uint8_t numDRBFailed; /* valid values : 0 to MAX_NUM_DRB */
+ DRBFailInfo *failedDRBlist;
+ uint8_t numSCellFailed; /* valid values : 0 to MAX_NUM_SCELL */
+ SCellFailInfo *failedSCellList;
+}MacUeCfgRsp;
+
/* Functions for slot Ind from MAC to DU APP*/
-typedef uint16_t (*DuMacSlotInd) ARGS((
- Pst *pst,
- SlotInfo *slotInfo ));
+typedef uint8_t (*DuMacCellUpInd) ARGS((
+ Pst *pst,
+ OduCellId *cellId ));
/* Functions for stop Ind from MAC to DU APP*/
-typedef uint16_t (*DuMacStopInd) ARGS((
- Pst *pst,
- MacCellStopInfo *cellId ));
+typedef uint8_t (*DuMacStopInd) ARGS((
+ Pst *pst,
+ OduCellId *cellId ));
/* Functions for mac cell start req */
-typedef uint16_t (*DuMacCellStartReq) ARGS((
- Pst *pst,
- MacCellStartInfo *cellStartInfo ));
+typedef uint8_t (*DuMacCellStart) ARGS((
+ Pst *pst,
+ OduCellId *cellId));
/* Functions for mac cell stop request */
-typedef uint16_t (*DuMacCellStopReq) ARGS((
- Pst *pst,
- MacCellStopInfo *cellStopInfo ));
-
+typedef uint8_t (*DuMacCellStop) ARGS((
+ Pst *pst,
+ OduCellId *cellId ));
+
/* Function pointers for packing macCellCfg Request and Confirm */
-typedef int (*packMacCellCfgReq) ARGS((
- Pst *pst,
- MacCellCfg *macCellCfg ));
+typedef uint8_t (*packMacCellCfgReq) ARGS((
+ Pst *pst,
+ MacCellCfg *macCellCfg ));
-typedef int (*packMacCellCfgConfirm) ARGS((
- Pst *pst,
- MacCellCfgCfm *macCellCfgCfm ));
+typedef uint8_t (*packMacCellCfgConfirm) ARGS((
+ Pst *pst,
+ MacCellCfgCfm *macCellCfgCfm ));
-typedef int (*DuMacCellCfgReq) ARGS((
- Pst *pst,
- MacCellCfg *macCellCfg));
+typedef uint8_t (*DuMacCellCfgReq) ARGS((
+ Pst *pst,
+ MacCellCfg *macCellCfg));
-typedef int (*DuMacCellCfgCfm) ARGS((
- Pst *pst,
- MacCellCfgCfm *macCellCfgCfm ));
+typedef uint8_t (*DuMacCellCfgCfm) ARGS((
+ Pst *pst,
+ MacCellCfgCfm *macCellCfgCfm ));
/* Functions for UL CCCH Ind from MAC to DU APP*/
-typedef uint16_t (*DuMacUlCcchInd) ARGS((
- Pst *pst,
- UlCcchIndInfo *ulCcchIndInfo ));
+typedef uint8_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 ));
+typedef uint8_t (*DuMacDlCcchInd) ARGS((
+ Pst *pst,
+ DlCcchIndInfo *dlCcchIndInfo ));
/* UE create Request from DU APP to MAC*/
typedef uint8_t (*DuMacUeCreateReq) ARGS((
- Pst *pst,
- MacUeCfg *ueCfg ));
-
-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 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);
-extern uint8_t packDuMacUeCreateReq(Pst *pst, MacUeCfg *ueCfg);
-extern uint8_t unpackMacUeCreateReq(DuMacUeCreateReq func, Pst *pst, Buffer *mBuf);
-extern uint8_t MacHdlUeCreateReq(Pst *pst, MacUeCfg *ueCfg);
-uint8_t sendStopIndMacToDuApp();
+ Pst *pst,
+ MacUeCfg *ueCfg ));
+
+/* UE create Response from MAC to DU APP */
+typedef uint8_t (*MacDuUeCfgRspFunc) ARGS((
+ Pst *pst,
+ MacUeCfgRsp *cfgRsp));
+
+/* UE Reconfig Request from DU APP to MAC*/
+typedef uint8_t (*DuMacUeReconfigReq) ARGS((
+ Pst *pst,
+ MacUeCfg *ueCfg ));
+
+uint8_t packMacCellUpInd(Pst *pst, OduCellId *cellId);
+uint8_t unpackMacCellUpInd(DuMacCellUpInd func, Pst *pst, Buffer *mBuf);
+uint8_t duHandleCellUpInd(Pst *pst, OduCellId *cellId);
+uint8_t packMacCellStart(Pst *pst, OduCellId *cellId);
+uint8_t unpackMacCellStart(DuMacCellStart func, Pst *pst, Buffer *mBuf);
+uint8_t MacProcCellStart(Pst *pst, OduCellId *cellId);
+uint8_t packMacCellStop(Pst *pst, OduCellId *cellId);
+uint8_t unpackMacCellStop(DuMacCellStop func, Pst *pst, Buffer *mBuf);
+uint8_t MacProcCellStop(Pst *pst, OduCellId *cellId);
+uint8_t packMacCellCfg(Pst *pst, MacCellCfg *macCellCfg);
+uint8_t unpackDuMacCellCfg(DuMacCellCfgReq func, Pst *pst, Buffer *mBuf);
+uint8_t MacProcCellCfgReq(Pst *pst, MacCellCfg *macCellCfg);
+uint8_t packMacCellCfgCfm(Pst *pst, MacCellCfgCfm *macCellCfgCfm);
+uint8_t unpackMacCellCfgCfm(DuMacCellCfgCfm func, Pst *pst, Buffer *mBuf);
+uint8_t duHandleMacCellCfgCfm(Pst *pst, MacCellCfgCfm *macCellCfgCfm);
+uint8_t packMacStopInd(Pst *pst, OduCellId *cellId);
+uint8_t unpackMacStopInd(DuMacStopInd func, Pst *pst, Buffer *mBuf);
+uint8_t duHandleStopInd(Pst *pst, OduCellId *cellId);
+uint8_t packMacUlCcchInd(Pst *pst, UlCcchIndInfo *ulCcchIndInfo);
+uint8_t unpackMacUlCcchInd(DuMacUlCcchInd func, Pst *pst, Buffer *mBuf);
+uint8_t duHandleUlCcchInd(Pst *pst, UlCcchIndInfo *ulCcchIndInfo);
+uint8_t packMacDlCcchInd(Pst *pst, DlCcchIndInfo *dlCcchIndInfo);
+uint8_t unpackMacDlCcchInd(DuMacDlCcchInd func, Pst *pst, Buffer *mBuf);
+uint8_t MacProcDlCcchInd(Pst *pst, DlCcchIndInfo *dlCcchIndInfo);
+uint8_t packDuMacUeCreateReq(Pst *pst, MacUeCfg *ueCfg);
+uint8_t unpackMacUeCreateReq(DuMacUeCreateReq func, Pst *pst, Buffer *mBuf);
+uint8_t MacProcUeCreateReq(Pst *pst, MacUeCfg *ueCfg);
+uint8_t sendStopIndMacToDuApp(uint16_t cellId);
+uint8_t packDuMacUeCfgRsp(Pst *pst, MacUeCfgRsp *cfgRsp);
+uint8_t unpackDuMacUeCfgRsp(MacDuUeCfgRspFunc func, Pst *pst, Buffer *mBuf);
+uint8_t DuProcMacUeCfgRsp(Pst *pst, MacUeCfgRsp *cfgRsp);
+uint8_t packDuMacUeReconfigReq(Pst *pst, MacUeCfg *ueCfg);
+uint8_t unpackMacUeReconfigReq(DuMacUeReconfigReq func, Pst *pst, Buffer *mBuf);
+uint8_t MacProcUeReconfigReq(Pst *pst, MacUeCfg *ueCfg);
+
#endif
/**********************************************************************
- End of file
-**********************************************************************/
+ End of file
+ **********************************************************************/