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 /**********************************************************************
25 Desc: Structures, variables and typedefs required by the LTE MAC-RRC
26 Control (CRG) interface.
30 **********************************************************************/
37 @brief Structure declarations and definitions for CRG interface.
44 /* Enumertaions for CRG */
46 /* Data Structures for CRG */
49 @brief Transaction ID between MAC and RRC. */
50 typedef struct crgCfgTransId
52 uint8_t trans[CRG_CFG_TRANSID_SIZE]; /*!< RRC transaction ID */
56 @brief Bandwidth configuration per cell. */
57 typedef struct crgBwCfg
59 uint8_t dlTotalBw; /*!< Total Dowlink Bandwidth */
60 uint8_t ulTotalBw; /*!< Total Uplink Bandwidth */
64 @brief RACH configuration per cell. */
65 typedef struct crgRachCfg
67 uint8_t maxMsg3Tx; /*!< Maximum number of message 3 transmissions */
71 /** @brief UE secondary cell config params to MAC*/
72 typedef struct crgUeSCellInfo
74 uint16_t sCellId; /*!< This will be secondary cellId */
75 Inst macInst; /*!< MAC instance for SCell */
76 SuId rguUlSapId; /*!< MAC-RLC UL Sap ID */
77 SuId rguDlSapId; /*!< MAC-RLC DL SAP ID */
81 /** @brief Configuration information of Secondary cells for a UE*/
82 typedef struct crgUeSecCellInfo
84 Bool isSCellCfgPres; /*!< Bool indicates whether configuration
86 uint8_t numSCells; /*!< Number of SCells
88 CrgUeSCellInfo ueSCellCfg[CRG_MAX_SCELL_PER_UE]; /*!< Secondary cell
89 configuration per UE */
95 @brief Cell configuration. */
96 typedef struct crgCellCfg
98 CmLteCellId cellId; /*!< Cell ID */
99 CrgRachCfg rachCfg; /*!< RACH Configuration */
100 CrgBwCfg bwCfg; /*!< Bandwidth Configuration */
101 #ifdef TENB_MULT_CELL_SUPPRT
102 SpId rguUlSapId; /*!< RLC UL SAP Id for common channels */
103 SpId rguDlSapId; /*!< RLC DL SAP Id for common channels */
111 @brief Uplink HARQ configuration per UE. */
112 typedef struct crgUeUlHqCfg
114 uint8_t maxUlHqTx; /*!< Maximum number of UL HARQ transmissions */
117 /* crg_x_001.main_3 - Changes for MIMO feature addition */
118 /* crg_x_001.main_4 - Changes for MIMO feature addition */
120 * @enum UE Transmission Modes */
121 typedef enum crgTxMode
123 CRG_UE_TM_1 = 1, /** Transmission Mode 1 */
124 CRG_UE_TM_2, /** Transmission Mode 2 */
125 CRG_UE_TM_3, /** Transmission Mode 3 */
126 CRG_UE_TM_4, /** Transmission Mode 4 */
127 CRG_UE_TM_5, /** Transmission Mode 5 */
128 CRG_UE_TM_6, /** Transmission Mode 6 */
129 CRG_UE_TM_7 /** Transmission Mode 7 */
133 @brief UE Transmission mode configuration */
134 typedef struct crgTxModeCfg
136 Bool pres; /*!< TRUE if Transmission mode is being CFG/RECFG ed */
137 CrgTxMode tm; /*!< Transmission mode */
140 @brief UE configuration. */
141 typedef struct crgUeCfg
143 CmLteCellId cellId; /*!< Cell ID */
144 CmLteRnti crnti; /*!< UE ID: CRNTI */
145 CrgUeUlHqCfg ueUlHqCfg; /*!< UE related UL HARQ configuration */
146 CrgTxModeCfg txMode; /*!< UE Transmission mode Cfg */
147 #ifdef TENB_MULT_CELL_SUPPRT
148 SpId rguUlSapId; /*!< RLC UL SAP Id for common channels */
149 SpId rguDlSapId; /*!< RLC DL SAP Id for common channels */
154 @brief Logical channel configuration information for downlink logical channels. */
155 typedef struct crgDlLchCfg
157 uint8_t dlTrchType; /*!< Indicates type of DL transport channel:
158 Validated only for BCCH at MAC. DL Transport
159 channel type can take following values:<br>
162 CM_LTE_TRCH_DL_SCH */
166 @brief Logical channel configuration information for uplink logical channels. */
167 typedef struct crgUlLchCfg
169 uint8_t ulTrchType; /*!< Indicates type of UL transport channel:
170 Validated only for BCCH at MAC.
171 UL Transport channel type can take following values:<br>
173 CM_LTE_TRCH_UL_SCH */
174 uint8_t lcgId; /*!< Logical channel group ID */
177 /* crg_x_001.main_2: Documentation update */
179 @brief Logical channel configuration information for common and dedicated channels. */
180 typedef struct crgLchCfg
182 CmLteCellId cellId; /*!< Cell ID */
183 CmLteRnti crnti; /*!< CRNTI for DTCH and DCCH */
184 CmLteLcId lcId; /*!< Logical channel ID */
185 CmLteLcType lcType; /*!< Identifies the Logical channel type. lcType can take the following values:<br>
192 uint8_t dir; /*!< Indicates Direction. Direction can take following
198 CrgDlLchCfg dlInfo; /*!< Downlink logical channel configuration info */
199 CrgUlLchCfg ulInfo; /*!< Uplink logical channel configuration info */
200 /* crg_x_001.main_5 - ADD - Members corresponding to LTE_L2_MEAS */
202 uint8_t qci; /*!< QCI for the logical channel.
203 Valid Range:[0-255] (Actual QCI - 1). */
205 #endif /* LTE_L2_MEAS */
209 @brief Activation time information. */
210 typedef struct crgActvTime
212 Bool pres; /*!< Indicates the presence of activation time */
213 CmLteTimingInfo actvTime; /*!< Activation time information */
218 @brief Cell reconfiguration information. */
219 typedef struct crgCellRecfg
221 CmLteCellId cellId; /*!< Cell ID */
222 CrgRachCfg rachRecfg; /*!< RACH Configuration */
226 @brief UE reconfiguration information. */
227 typedef struct crgUeRecfg
229 CmLteCellId cellId; /*!< Cell ID */
230 CmLteRnti oldCrnti; /*!< Old UE ID */
231 CmLteRnti newCrnti; /*!< New UE ID: This value must match
232 'oldCrnti',if no CRNTI change during
234 CrgUeUlHqCfg ueUlHqRecfg; /*!< UE UL HARQ information */
235 CrgTxModeCfg txMode; /*!< UE Transmission mode ReCfg */
237 CrgUeSecCellInfo crgSCellCfg; /*!< Secondary cell dedicated informaton
243 @brief Logical channel reconfiguration information for dedicated channels only. */
244 typedef struct crgLchRecfg
246 CmLteCellId cellId; /*!< Cell ID */
247 CmLteRnti crnti; /*!< CRNTI for DTCH and DCCH */
248 CmLteLcId lcId; /*!< Logical channel ID */
252 uint8_t lcgId; /*!< Logical channel group ID */
253 } ulRecfg; /*!< Uplink logical channel reconfiguration information */
258 @brief Basic reconfiguration information for MAC. */
259 typedef struct crgRecfg
261 uint8_t recfgType; /*!< Indicates reconfiguration type */
264 CrgCellRecfg cellRecfg; /*!< Cell Reconfig information */
265 CrgUeRecfg ueRecfg; /*!< UE Reconfig information */
266 CrgLchRecfg lchRecfg; /*!< Logical channel reconfiguration information */
267 } u; /*!< Union of Cell/UE/Lch reconfiguration information
272 @brief Basic Delete information for MAC. */
273 typedef struct crgDel
275 uint8_t delType; /*!< Indicates configuration item to be deleted */
280 CmLteCellId cellId; /*!< Cell ID */
281 } cellDel; /*!< Cell Delete information */
285 CmLteCellId cellId; /*!< Cell ID */
286 CmLteRnti crnti; /*!< UE ID: CRNTI */
287 } ueDel; /*!< UE Delete information */
291 CmLteCellId cellId; /*!< Cell ID */
292 CmLteRnti crnti; /*!< CRNTI for DTCH and DCCH */
293 CmLteLcId lcId; /*!< Logical channel ID */
294 uint8_t dir; /*!< Indicates Direction. Direction can take following
299 } lchDel; /*!< Logical channel delete information */
300 } u; /*!< Union of Cell/UE/Lch delete information */
304 @brief UE RESET information for MAC. */
305 typedef struct crgRst
307 CmLteCellId cellId; /*!< Cell ID */
308 CmLteRnti crnti; /*!< UE ID: CRNTI tobe RESET */
314 /** @brief Request from RRC to MAC to bind the interface SAPs. */
315 typedef S16 (*CrgBndReq) ARGS((
319 /** @brief Confirmation from MAC to RRC for the bind/unbind
320 * request for the interface SAPs. */
321 typedef S16 (*CrgBndCfm) ARGS((
325 /** @brief Request from RRC to MAC to unbind the interface SAPs. */
326 typedef S16 (*CrgUbndReq) ARGS((
330 /** @brief Configuration Confirm from MAC to RRC. */
331 typedef S16 (*CrgCfgCfm) ARGS((
334 CrgCfgTransId transId,
337 /** @brief Request from RRC to MAC to bind the interface SAPs. */
338 S16 RgUiCrgBndReq ARGS((
343 /** @brief Confirmation from MAC to RRC for the bind/unbind
344 * request for the interface SAPs. */
345 S16 RgUiCrgBndCfm ARGS((
350 /** @brief Request from RRC to MAC to Unbind the interface SAPs. */
351 S16 RgUiCrgUbndReq ARGS((
356 /** @brief Configuration Confirm from MAC to RRC. */
357 S16 RgUiCrgCfgCfm ARGS((
360 CrgCfgTransId transId,
365 /** @brief Request from RRC to MAC to bind the interface SAPs. */
366 S16 NhLiCrgBndReq ARGS((
371 /** @brief Confirmation from MAC to RRC for the bind/unbind
372 * request for the interface SAPs. */
373 S16 NhLiCrgBndCfm ARGS((
378 /** @brief Request from RRC to MAC to Unbind the interface SAPs. */
379 S16 NhLiCrgUbndReq ARGS((
384 /** @brief Configuration Confirm from MAC to RRC. */
385 S16 NhLiCrgCfgCfm ARGS((
388 CrgCfgTransId transId,
394 /** @brief Request from RRC to MAC to bind the interface SAPs. */
395 S16 cmPkCrgBndReq ARGS((
400 /** @brief Request from RRC to MAC to bind the interface SAPs. */
401 S16 cmUnpkCrgBndReq ARGS((
406 /** @brief Confirmation from MAC to RRC for the bind/unbind
407 * request for the interface SAPs. */
408 S16 cmPkCrgBndCfm ARGS((
413 /** @brief Confirmation from MAC to RRC for the bind/unbind
414 * request for the interface SAPs. */
415 S16 cmUnpkCrgBndCfm ARGS((
420 /** @brief Request from RRC to MAC to unbind the interface SAPs. */
421 S16 cmPkCrgUbndReq ARGS((
426 /** @brief Request from RRC to MAC to unbind the interface SAPs. */
427 S16 cmUnpkCrgUbndReq ARGS((
432 /** @brief Configuration Confirm from MAC to RRC. */
433 S16 cmPkCrgCfgCfm ARGS((
436 CrgCfgTransId transId,
439 /** @brief Configuration Confirm from MAC to RRC. */
440 S16 cmUnpkCrgCfgCfm ARGS((
445 S16 cmPkCrgCfgTransId ARGS((
446 CrgCfgTransId *param,
449 S16 cmUnpkCrgCfgTransId ARGS((
450 CrgCfgTransId *param,
453 S16 cmPkCrgBwCfg ARGS((
457 S16 cmUnpkCrgBwCfg ARGS((
461 S16 cmPkCrgRachCfg ARGS((
465 S16 cmUnpkCrgRachCfg ARGS((
469 S16 cmPkCrgUeUlHqCfg ARGS((
473 S16 cmUnpkCrgUeUlHqCfg ARGS((
479 S16 cmPkCrgUeSecCellInfo ARGS((
480 CrgUeSecCellInfo *param,
484 S16 cmUnpkCrgUeSecCellInfo ARGS((
485 CrgUeSecCellInfo *param,
490 S16 cmPkCrgActvTime ARGS((
494 S16 cmUnpkCrgActvTime ARGS((
501 /** @brief Request from RRC to MAC to bind the interface SAPs. */
502 S16 DmUiCrgBndReq ARGS((
507 /** @brief Confirmation from MAC to RRC for the bind/unbind
508 * request for the interface SAPs. */
509 S16 DmUiCrgBndCfm ARGS((
514 /** @brief Request from RRC to MAC to unbind the interface SAPs. */
515 S16 DmUiCrgUbndReq ARGS((
525 #endif /* __CRG_X__ */
527 /**********************************************************************
530 **********************************************************************/