1 /*******************************************************************************
2 ################################################################################
3 # Copyright (c) [2017-2019] [Radisys] #
5 # Licensed under the Apache License, Version 2.0 (the "License"); #
6 # you may not use this file except in compliance with the License. #
7 # You may obtain a copy of the License at #
9 # http://www.apache.org/licenses/LICENSE-2.0 #
11 # Unless required by applicable law or agreed to in writing, software #
12 # distributed under the License is distributed on an "AS IS" BASIS, #
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
14 # See the License for the specific language governing permissions and #
15 # limitations under the License. #
16 ################################################################################
17 *******************************************************************************/
19 /* Defines APIs exchanged between du_app and cl module of MAC */
23 #define NUM_NUMEROLOGY 5 /* Number of numerology */
24 #define MAXIMUM_TDD_PERIODICITY 5
25 #define MAX_SYMB_PER_SLOT 14
27 #define NUM_SSB 1 /* max value is 64 */
28 #define SSB_MASK_SIZE 1 /* SSB mask size is 32bit for sub6 */
29 #define SIB1_NEW_TX_PERIOD 160
30 #define SIB1_REPETITION_PERIOD 20
31 #define CORESET_0_INDEX 0
32 #define SEARCHSPACE_0_INDEX 0
37 #define EVENT_MAC_CELL_CONFIG_REQ 200
38 #define EVENT_MAC_CELL_CONFIG_CFM 201
48 MAC_GEN_FULL_PBCH_PAYLD, /* MAC generated the full PBCH Payload */
49 PHY_GEN_TIMING_PBCH_BIT, /* PHY generates the timing PBCH bits */
50 PHY_GEN_FULL_PBCH_PAYLD /* PHY generates full PBCH payload */
62 RESTRICTED_SET_TYPE_A,
108 typedef struct carrierCfg
111 U16 bw; /* DL/UL bandwidth */
112 U32 freq; /* Absolute frequency of DL/UL point A in KHz */
113 U16 k0[NUM_NUMEROLOGY]; /* K0 for DL/UL */
114 U16 gridSize[NUM_NUMEROLOGY]; /* DL/UL Grid size for each numerologies */
115 U16 numAnt; /* Number of Tx/Rx antennas */
118 typedef struct ssbCfg
120 uint32_t ssbPbchPwr; /* SSB block power */
121 BchPduOpt bchPayloadFlag; /* Options for generation of payload */
122 uint8_t scsCmn; /* subcarrier spacing for common */
123 uint16_t ssbOffsetPointA; /* SSB subcarrier offset from point A */
125 SSBPeriod ssbPeriod; /* SSB Periodicity in msec */
126 uint8_t ssbScOffset; /* Subcarrier Offset */
127 uint8_t mibPdu[3]; /* MIB payload */
128 uint32_t ssbMask[SSB_MASK_SIZE]; /* Bitmap for actually transmitted SSB. */
129 uint8_t beamId[NUM_SSB];
130 Bool multCarrBand; /* Multiple carriers in a band */
131 Bool multCellCarr; /* Multiple cells in single carrier */
134 typedef struct fdmInfo
136 U16 rootSeqIdx; /* Root sequence index */
137 U8 numRootSeq; /* Number of root sequences required for FD */
138 U16 k1; /* Frequency Offset for each FD */
139 U8 zeroCorrZoneCfg; /* Zero correlation zone cofig */
140 U8 numUnusedRootSeq; /* Number of unused root sequence */
141 U8 *unsuedRootSeq; /* Unused root sequence per FD */
144 typedef struct prachCfg
147 PrachSeqLen prachSeqLen; /* RACH Sequence length: Long/short */
148 U8 prachSubcSpacing; /* Subcarrier spacing of RACH */
149 RstSetCfg prachRstSetCfg; /* PRACH restricted set config */
150 U8 prachFdm; /* PRACH FDM (1,2,4,8) */
152 U8 ssbPerRach; /* SSB per RACH occassion */
153 Bool prachMultCarrBand; /* Multiple carriers in Band */
156 typedef struct tddCfg
159 DlUlTxPeriodicity tddPeriod; /* DL UL Transmission periodicity */
160 SlotConfig slotCfg[MAXIMUM_TDD_PERIODICITY][MAX_SYMB_PER_SLOT];
163 typedef struct sib1CellCfg
167 uint16_t sib1NewTxPeriod;
168 uint16_t sib1RepetitionPeriod;
169 uint8_t coresetZeroIndex; /* derived from 4 LSB of pdcchSib1 present in MIB */
170 uint8_t searchSpaceZeroIndex; /* derived from 4 MSB of pdcchSib1 present in MIB */
174 typedef struct macCellCfg
177 U16 cellId; /* Cell Id */
178 U8 numTlv; /* Number of configuration TLVs */
179 U8 carrierId; /* Carrired Index */
180 U16 phyCellId; /* Physical cell id */
181 DuplexMode dupType; /* Duplex type: TDD/FDD */
182 CarrierCfg dlCarrCfg; /* DL Carrier configuration */
183 CarrierCfg ulCarrCfg; /* UL Carrier configuration */
184 Bool freqShft; /* Indicates presence of 7.5kHz frequency shift */
185 SsbCfg ssbCfg; /* SSB configuration */
186 PrachCfg prachCfg; /* PRACH Configuration */
187 TDDCfg tddCfg; /* TDD periodicity and slot configuration */
188 RSSIMeasUnit rssiUnit; /* RSSI measurement unit */
192 typedef struct macCellCfgCfm
197 /* function pointers for packing macCellCfg Request */
198 typedef U16 (*packMacCellCfgReq) ARGS((
200 MacCellCfg *macCellCfg
203 typedef S16 (*packMacCellCfgConfirm) ARGS((
205 MacCellCfgCfm *macCellCfgCfm
208 typedef S16 (*DuMacCellCfgReq) ARGS((
209 Pst *pst, /* Post Structure */
210 MacCellCfg *macCellCfg /* Config Structure */
213 typedef S16 (*DuMacCellCfgCfm) ARGS((
214 MacCellCfgCfm *macCellCfgCfm /* Config Structure */
217 U16 packMacCellCfg(Pst *pst, MacCellCfg *macCellCfg);
219 EXTERN S16 MacHdlCellCfgReq
222 MacCellCfg *macCellCfg
225 void cmUnpackLwLcMacCellCfg(
226 DuMacCellCfgReq func,
230 U16 unpackMacCellCfgCfm(
231 DuMacCellCfgCfm func,
235 EXTERN S16 duHandleMacCellCfgCfm
237 MacCellCfgCfm *macCellCfgCfm
242 /**********************************************************************
244 **********************************************************************/