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 /**********************************************************************
20 Name: Lower layer interface - TFU
24 Desc: Structures, variables and typedefs required by
29 *********************************************************************21*/
33 @brief Structure declarations and definitions for TFU interface.
43 /***********************************************************************
44 typedefs and data structures
45 ***********************************************************************/
46 /** @enum TfuDciFormat
47 * This Enum has values for the DCI format types.
51 TFU_DCI_FORMAT_0, /*!< DCI format 0 */
52 TFU_DCI_FORMAT_1, /*!< DCI format 1 */
53 TFU_DCI_FORMAT_1A, /*!< DCI format 1A */
54 TFU_DCI_FORMAT_1B, /*!< DCI format 1B */
55 TFU_DCI_FORMAT_1C, /*!< DCI format 1C */
56 TFU_DCI_FORMAT_1D, /*!< DCI format 1D */
57 TFU_DCI_FORMAT_2, /*!< DCI format 2 */
58 TFU_DCI_FORMAT_2A, /*!< DCI format 2A */
59 TFU_DCI_FORMAT_3, /*!< DCI format 3 */
60 TFU_DCI_FORMAT_3A /*!< DCI format 3A */
62 ,TFU_DCI_FORMAT_A1, /*!< 5GTF: DCI format A1 */
63 TFU_DCI_FORMAT_A2, /*!< 5GTF: DCI format A2 */
64 TFU_DCI_FORMAT_B1, /*!< 5GTF: DCI format B1 */
65 TFU_DCI_FORMAT_B2 /*!< 5GTF: DCI format B2 */
68 ,TFU_DCI_FORMAT_6_0A, /*!< DCI format 6-0 A */
69 TFU_DCI_FORMAT_6_0B, /*!< DCI format 6-0 B */
70 TFU_DCI_FORMAT_6_1A, /*!< DCI format 6-1 A */
71 TFU_DCI_FORMAT_6_1B, /*!< DCI format 6-1 B */
72 TFU_DCI_FORMAT_6_2 /*!< DCI format 6-2 */
74 /*tfu_x_001.main_6 - Added support for SPS*/
76 ,TFU_DCI_FORMAT_INVALID /*!< Invalid DCI format value */
80 /** @enum TfuModScheme
81 * This enum contains the values for the modulation schemes possible.
92 /** @enum TfuDlCqiPucchMode
93 * This enum contains values for the CQI reporting modes.
104 * This enum contains values for Type of UEs CQI reporting.
113 #ifdef PHY_ERROR_LOGING
114 typedef struct _rgSchUlAllocCntr RgSchUlAllocCntr;
116 struct _rgSchUlAllocCntr
131 EXTERN RgSchUlAllocCntr rgSchUlAllocCntr;
136 typedef struct rgSchDlHqStats
155 typedef struct ysMsDlHqStats
159 U8 mode; /*1 = PUCCH 2= PUSCH*/
161 U8 o0; /*For PUCCH n1PUCCH*/
162 U8 o1; /*For PUCCH Invalid*/
174 #define MAX_STATS_CNT
178 /* Considers case where RIV is <= 324 for DCI format A1 */
179 typedef struct tfuRbAssignA1Val324
181 U8 hqProcId; /*!< HARQ process ID */
182 U8 mcs; /*!< 4 bits for MCS */
183 Bool ndi; /*!< 1 bit for new data indicator */
184 } TfuRbAssignA1Val324;
186 /* Considers case where RIV is <= 324 for DCI format B1 */
187 typedef struct tfuRbAssignB1Val324
189 U8 hqProcId; /*!< HARQ process ID */
190 U8 mcs; /*!< 4 bits for MCS */
191 Bool ndi; /*!< 1 bit for new data indicator */
192 U8 RV; /*!< 2 bits Redundancy version */
193 U8 bmiHqAckNack; /* BMI: Bit Mapping Index for Harq-Ack
194 Refer sec 8.5 of 213 spec */
195 } TfuRbAssignB1Val324;
197 /* Considers case where RIV is == 326 */
198 typedef struct tfuRbAssignVal326
200 U8 FreqBandIdx; /* nRACH: Frequency band index Value:0 -> 7 */
201 Bool OCCInd; /* nOCC: OCC indicator Value:0 -> 1 */
202 U8 CyclicShiftInd; /* nNcs: Cyclic shift indicator Value:0 -> 3 */
206 /* DCI format A1: UL xPDCCH */
207 typedef struct tfuDciFormatA1Info
209 Bool formatType; /* Format Descriminator 00: A1, 01:A2 */
210 U8 xPUSCHRange; /* 0 : the stopping of xPUSCH is the 12th symbol,
211 1 : the stopping of xPUSCH is the 13th symbol,
212 2 : the stopping of xPUSCH is the final (14th) symbol */
213 U8 xPUSCH_TxTiming; /* Transmission timing of xPUSCH Value: 0->7
215 U16 RBAssign; /*!< same as phy i/f RBAssign: RIV as defined in V5G.213
216 Value <= 324: this field assigns morethan zero RB.
217 Value ==325: this format assigns zero RB.
218 Value ==326: this format assigns zero RB and used
219 for Randon Access procedure initiated by xPDCCH order. */
220 U8 beamIndex; /*!< transmit beam index: Value: 0->7 */
221 U8 symbIdx; /*!< OFDM symbol index for the xPDCCH: Value: 0->1 */
222 U8 rv; /*!< HARQ redundancy version, Value: 0 -> 3 */
224 /* Based on RBAssign/RIV value*/
227 TfuRbAssignA1Val324 rbAssignA1Val324;
228 TfuRbAssignVal326 rbAssignVal326;
231 U8 CSI_BSI_BRI_Req; /* CSI / BSI / BRI request Value:0 -> 7 */
232 U8 CSIRS_BRRS_TxTiming; /* Transmission timing of CSI-RS / BRRS, Value:0 -> 3
234 #ifdef FIVEGTF_PHY_API
239 /* ToDo: following 4 fields can be made as union with an indicator type*/
240 U8 CSIRS_BRRS_SymbIdx; /* Indication of OFDM symbol index for CSI-RS / BRRS allocations
242 U8 CSI_BRRS_Indicator; /* If this DCI format allocates either of
243 CSI-RS or BRRS transmission Value:0 -> 3 */
244 U8 CSIRS_BRRS_ProcInd; /* Process indicator : Value:0 -> 3 */
245 U8 numBSI_Reports; /* Number of BSI reports Value:0 -> 3 */
247 Bool uciOnxPUSCH; /* "UCI on xPUSCH w/o xUL-SCH data" indicator. Value:0 -> 1 */
248 Bool beamSwitch; /* beam switch indication. Value:0 -> 1 */
250 U8 SRS_Config; /* Indication of SRS configurations Value:0 -> 3
251 00 : {No SRS request}, 01 : {Config. #0},
252 10 : {Config. #1}, 11 : {Config. #2} */
253 Bool SRS_Symbol; /* If SRS is requested, 0: SRS transmission on the 13th OFDM symbol
254 and 1: SRS transmission on the 14th OFDM symbol */
256 U8 REMapIdx_DMRS_PCRS_numLayers; /* RE Mapping index, Ki for DMRS/PCRS and number of layers
258 0: 1 Layer, k0 = 0, 1: 1 Layer, k0 = 1
259 2: 1 Layer, k0 = 2, 3: 1 Layer, k0 = 3
260 4: 2 Layers, k0 = 0 and k1 = 1
261 5: 2 Layers, k0 = 2 and k1 = 3
263 Bool SCID; /* nSCID is applied for both DMRS in subframe n and
264 CSI-RS in subframe n+m Value: 0 -> 1 */
265 U8 PMI; /* Precoding matrix indicator Value:0 -> 7 */
266 #ifdef FIVEGTF_PHY_API
267 U8 AntPorts_numLayers;
268 U8 TransmissionScheme;
270 Bool UL_PCRS; /* UL dual PCRS Value: 0 -> 1 */
271 U8 tpcCmd; /*!< 2 bits for TPC command for xPUSCH, Values: 0->3 */
272 } TfuDciFormatA1Info;
274 /* DCI format A2: UL xPDCCH */
275 typedef TfuDciFormatA1Info TfuDciFormatA2Info;
277 /* DCI format B1: DL xPDCCH */
278 typedef struct tfuDciFormatB1Info
280 Bool formatType; /* Format Descriminator 2: B1, 3:B2 */
281 U8 xPDSCHRange; /* MSB (starting of xPDSCH including DMRS symbol) :
282 0 is the second symbol, 1 is the third symbol.
283 LSB (stopping of xPDSCH): 0 is the 12th symbol,
284 1 is the 14th symbol */
285 U16 RBAssign; /*!< same as phy i/f RBAssign: RIV as defined in V5G.213
286 Value <= 324: this field assigns morethan zero RB.
287 Value ==325: this format assigns zero RB.
288 Value ==326: this format assigns zero RB and used
289 for Randon Access procedure initiated by xPDCCH order. */
290 U8 beamIndex; /*!< transmit beam index: Value: 0->7 */
291 U8 symbIdx; /*!< OFDM symbol index for the xPDCCH: Value: 0->1 */
292 /* Based on RBAssign/RIV value*/
295 TfuRbAssignB1Val324 rbAssignB1Val324;
296 TfuRbAssignVal326 rbAssignVal326;
299 U8 CSI_BSI_BRI_Req; /* CSI / BSI / BRI request Value:0 -> 7 */
300 U8 CSIRS_BRRS_TxTiming; /* Transmission timing of CSI-RS / BRRS, Value:0 -> 3
302 /* ToDo: following 4 fields can be made as union with an indicator type*/
303 U8 CSIRS_BRRS_SymbIdx; /* Indication of OFDM symbol index for CSI-RS / BRRS allocations
305 U8 CSI_BRRS_Indicator; /* If this DCI format allocates either of
306 CSI-RS or BRRS transmission Value:0 -> 3 */
307 U8 CSIRS_BRRS_ProcInd; /* Process indicator : Value:0 -> 3 */
308 U8 numBSI_Reports; /* Number of BSI reports Value:0 -> 3 */
310 Bool xPUCCH_TxTiming; /* field indicates transmission time offset value k.{0, 1, ., 7} */
311 U8 freqResIdx_xPUCCH; /* Frequency resource index of xPUCCH for UCI report */
312 Bool beamSwitch; /* beam switch indication. Value:0 -> 1 */
314 U8 SRS_Config; /* Indication of SRS configurations Value:0 -> 3
315 00 : {No SRS request}, 01 : {Config. #0},
316 10 : {Config. #1}, 11 : {Config. #2} */
317 Bool SRS_Symbol; /* If SRS is requested, 0: SRS transmission on the 13th OFDM symbol
318 and 1: SRS transmission on the 14th OFDM symbol */
320 U8 AntPorts_numLayers;
322 Bool SCID; /* nSCID is applied for both DMRS in subframe n and
323 CSI-RS in subframe n+m Value: 0 -> 1 */
324 U8 tpcCmd; /*!< 2 bits for TPC command for xPUCCH, Values: 0->3 */
325 Bool DL_PCRS; /* DL PCRS Value: 0 -> 3
326 00 : {No PCRS }, 01 : {PCRS on AP 60},
327 10 : {PCRS on AP 61}, 11 : {PCRS on AP 60 and 61}*/
329 } TfuDciFormatB1Info;
331 /* DCI format B2: DL xPDCCH */
332 typedef TfuDciFormatB1Info TfuDciFormatB2Info;
333 #endif /* TFU_5GTF */
335 /** @brief This structure contains the information needed to convey DCI format 0.
337 typedef struct tfuDciFormat0Info
339 Bool isSrGrant; /*!< This is to aid a counter which prints num successful SR Grants SR_RACH_STATS */
340 Bool isMsg4PdcchWithCrnti; /* This is to aid rgNumMsg4PdcchWithCrnti counter which counts
341 num of PDCCH scrambled with CRNTI for CRNTI Based contention resolution */
342 Bool hoppingEnbld; /*!< TRUE, if hopping is enabled */
343 U8 rbStart; /*!< Starting RB */
344 U8 numRb; /*!< Number of RBs */
346 U32 riv; /*!< RIV as defined in 213
347 section 7.1.6.3 - used only for
350 U8 hoppingBits; /*!< Hopping bits as mentioned in 213 section 8.4 */
351 U8 mcs; /*!< 5 bits for MCS and RV */
352 Bool ndi; /*!< 1 bit for new data indicator */
353 U8 tpcCmd; /*!< 2 bits for TPC command */
357 U8 ulIdx; /*!< UL index applicable only for TDD */
358 U8 dai; /*!< The downlink assignement index */
361 U8 nDmrs; /*!< 3 bits for DMRS cyclic shift */
362 U8 cqiReq; /*!< 1 bit for CQI non-CA while value 00, 01, 10 and 11 for CA */
363 U8 numCqiBit; /*!< Number of CsiReq Bit(s) Values : 1 or 2(CA)*/
364 U8 txAntenna; /*!< Antenna selection - 213 section 8.7 */
366 /* tfu_x_001.main_4: Adding hqProcId */
367 U8 hqProcId; /*!< HARQ process ID */
370 /** @enum TfuAllocType
371 * This enum contains the values for the allocation types.
375 TFU_ALLOC_TYPE_MAP= 1,
379 /** @brief This Structure contains either a resource allocation bit map OR a
380 * RIV Value as defined in 213 section 7.1.6.
382 typedef struct tfuAllocMapOrRiv
384 TfuAllocType type; /*!< Allocation type RIV or resAllocMap */
388 U32 riv; /*!< RIV as defined in 213 section 7.1.6.3. */
389 /*tfu_x_001.main_8 - ADD - TFU_RESMAP_CHANGE support */
390 #ifndef TFU_RESMAP_CHANGE
391 U8 resAllocMap[TFU_MAX_ALLOC_BYTES]; /*!< Resource
392 allocation bitmap. LSB aligns with the
393 LSB of the allocation bits.*/
394 #else /* TFU_RESMAP_CHANGE */
395 TfuAllocMap allocMap; /*!< Allocation Map. */
400 /** @enum TfuAllocSubType
401 * This enum contains the values for the allocation types.
411 /** @brief This Structure contains either a resource allocation bitmap for
412 * for resource allocation type 0/1.
413 * TODO: This structure can be made part of all DCI format having alloction
416 typedef struct tfuAllocMap
418 TfuAllocSubType type; /*!< Allocation type: 0/1 */
423 U32 allocMask; /*!< Allocation Mask for RBGs */
427 U8 rbgSubset; /*!< RBG Subset number: Value in set
429 U8 shift; /*!< Shift value for RBG mask: Value in
431 U32 allocMask; /*!< Allocation bitmask */
437 /** @brief This structure contains only the allocation information, that is part
439 * @details Allocation information also contains parameters necessary
440 * for Physical layer to process Downlink data. This structure accompanies the
441 * Data that is sent from MAC to PHY in the TfUiTfuDatReq primitive.
442 * @sa TfuDciFormat1Info
444 typedef struct tfuDciFormat1AllocInfo
446 Bool isAllocType0; /*!< TRUE, if allocation type is 0 */
447 U8 resAllocMap[TFU_MAX_ALLOC_BYTES]; /*!< Resource allocation bitmap.
448 LSB aligns with the LSB of the
450 U8 harqProcId; /*!< HARQ process ID */
451 Bool ndi; /*!< 1 bit for new data indicator */
452 U8 mcs; /*!< 5 bits for MCS */
453 U8 rv; /*!< Redundancy version */
454 } TfuDciFormat1AllocInfo;
456 /** @brief This structure contains the information needed to convey DCI format 1.
457 * @details Allocation information is separated from the other control
458 * information carried in this format. This separation is needed as Data must
459 * also carry some control information, essentially, allocation information
460 * along with it, in order to aid physical layer processing of the data.
462 typedef struct tfuDciFormat1Info
464 TfuDciFormat1AllocInfo allocInfo; /*!< Allocation Information to map data on PDSCH */
468 U8 dai; /*!< The downlink assignement index */
471 U8 tpcCmd; /*!< 2 bits for TPC command */
474 /** @brief This structure contains the TB level DCI signalling
475 * parameters in case of DCI formats 2 and 2A */
476 typedef struct tfuDciFormatTbInfo
478 Bool ndi; /*!< New data indicator */
479 U8 rv; /*!< Redundancy version Indicator */
480 U8 mcs; /*!< 5 bits for MCS */
483 /** @brief This structure contains only the allocation information, that is part
485 * @details Allocation information also contains parameters necessary
486 * for Physical layer to process Downlink data. This structure accompanies the
487 * Data that is sent from MAC to PHY in the TfUiTfuDatReq primitive.
488 * @sa TfuDciFormat2AInfo
490 typedef struct tfuDciFormat2AAllocInfo
492 Bool isAllocType0; /*!< TRUE, if allocation type is 0 */
493 /*tfu_x_001.main_8 - ADD - TFU_RESMAP_CHANGE support */
494 #ifndef TFU_RESMAP_CHANGE
495 U8 resAllocMap[TFU_MAX_ALLOC_BYTES]; /*!< Resource allocation bitmap.
496 LSB aligns with the LSB of the
499 TfuAllocMap allocMap; /*!< Allocation Map */
500 #endif /* TFU_RESMAP_CHANGE */
501 U8 harqProcId; /*!< HARQ process ID */
502 TfuDciFormatTbInfo tbInfo[2]; /*!< DCI Format 2/2A info per TB */
503 U8 precoding; /*!< Precoding information bit */
504 Bool transSwap; /*!< Transport block to codeword swap flag */
505 } TfuDciFormat2AAllocInfo;
508 /** @brief This structure contains the information carried by DCI format 2A.
509 * @details It carries the allocation information and other control information.
511 typedef struct tfuDciFormat2AInfo
513 TfuDciFormat2AAllocInfo allocInfo; /*!< Allocation Information to map data on PDSCH */
517 U8 dai; /*!< The downlink assignement index */
520 U8 tpcCmd; /*!< 2 bits for TPC command */
521 } TfuDciFormat2AInfo;
523 /** @brief This structure contains only the allocation information, that is part
525 * @details Allocation information also contains parameters necessary
526 * for Physical layer to process Downlink data. This structure accompanies the
527 * Data that is sent from MAC to PHY in the TfUiTfuDatReq primitive.
528 * @sa TfuDciFormat2Info
530 typedef struct tfuDciFormat2AllocInfo
532 Bool isAllocType0; /*!< TRUE, if allocation type is 0 */
533 #ifndef TFU_RESMAP_CHANGE
534 U8 resAllocMap[TFU_MAX_ALLOC_BYTES]; /*!< Resource
535 allocation bitmap. LSB aligns
536 with the LSB of the allocation
539 TfuAllocMap allocMap; /*!< Allocation Map.*/
545 U8 dai; /*!< The downlink assignement index */
548 Bool transSwap; /*!< Transport block to codeword swap
550 U8 precoding; /*!< Precoding information bit */
551 U8 harqProcId; /*!< HARQ process ID */
552 TfuDciFormatTbInfo tbInfo[2]; /*!< DCI Format 2/2A info per TB */
553 } TfuDciFormat2AllocInfo;
556 /** @brief This structure contains the information carried by DCI format 2.
557 * @details Allocation information is separated from the other control
558 * information carried in this format. This separation is needed as Data must
559 * also carry some control information, essentially, allocation information
560 * along with it, in order to aid physical layer processing of the data.
562 typedef struct tfuDciFormat2Info
564 TfuDciFormat2AllocInfo allocInfo; /*!< Allocation Information to map
566 U8 tpcCmd; /*!< 2 bits for TPC command */
571 U8 dai; /*!< The downlink assignment index */
577 /** @brief This structure contains the information carried in DCI format 3.
579 typedef struct tfuDciFormat3Info
581 U8 tpcCmd[TFU_MAX_2BIT_TPC]; /*!< 2 bits for TPC command.
582 LSB corresponds to the 1st bit of the 1st
584 U8 isPucch; /*!< 1 if the TPC meant for PUCCH, 0 if the TPC meant for PUSCH */
588 /** @brief This structure contains the information carried by DCI format 3A.
590 typedef struct tfuDciFormat3AInfo
592 U8 tpcCmd[TFU_MAX_1BIT_TPC]; /*!< 1 bit for TPC command.
593 LSB corresponds to the 1st bit of the
595 U8 isPucch; /*!< 1 if the TPC meant for PUCCH, 0 if the TPC meant for PUSCH */
596 } TfuDciFormat3AInfo;
600 /** @brief This structure contains only the allocation information that is part
602 * @details Allocation information also contains parameters necessary
603 * for Physical layer to process Downlink data. This structure accompanies the
604 * Data that is sent from MAC to PHY in the TfUiTfuDatReq primitive.
605 * @sa TfuDciFormat1dInfo
607 typedef struct tfuDciFormat1dAllocInfo
609 Bool isLocal; /*!< TRUE, if localised VRB */
610 TknU8 nGap2; /*!< 1 indicates Ngap=Ngap,1 and 2 indicates Ngap,2 */
611 TfuAllocMapOrRiv alloc; /*!< Allocation represented as a bit-map or RIV */
612 U8 mcs; /*!< 5 bits for MCS */
613 U8 rv; /*!< Redundancy version */
615 } TfuDciFormat1dAllocInfo;
617 /** @brief This structure contains the information carried by DCI format 1D.
618 * @details Allocation information is separated from the other control
619 * information carried in this format. This separation is needed as Data must
620 * also carry some control information, essentially, allocation information
621 * along with it, in order to aid physical layer processing of the data.
623 typedef struct tfuDciFormat1dInfo
625 TfuDciFormat1dAllocInfo allocInfo; /*!< Allocation information */
626 U8 harqProcId; /*!< HARQ process ID */
627 Bool ndi; /*!< 1 bit for new data indicator */
628 U8 tpcCmd; /*!< 2 bits for TPC command */
632 U8 dai; /*!< The downlink assignement index */
635 U8 dlPwrOffset; /*!< Downlink power offset */
636 } TfuDciFormat1dInfo;
639 /** @brief This structure contains only the allocation information, that is part
641 * @details Allocation information also contains parameters necessary
642 * for Physical layer to process Downlink data. This structure accompanies the
643 * Data that is sent from MAC to PHY in the TfUiTfuDatReq primitive.
644 * @sa TfuDciFormat1CInfo
646 typedef struct tfuDciFormat1cInfo
648 TknU8 nGap2; /*!< 1 indicates Ngap=Ngap,1 and 2 indicates Ngap,2 */
649 TfuAllocMapOrRiv alloc; /*!< Allocation represented as a bit-map or RIV */
650 U8 iTbs; /*!< 5 bits for I-tbs */
651 } TfuDciFormat1cInfo;
654 /** @brief This structure contains only the allocation information, that is part
656 * @details Allocation information also contains parameters necessary
657 * for Physical layer to process Downlink data. This structure accompanies the
658 * Data that is sent from MAC to PHY in the TfUiTfuDatReq primitive.
659 * @sa TfuDciFormat1BInfo
661 typedef struct tfuDciFormat1bAllocInfo
663 Bool isLocal; /*!< TRUE, if localised VRB */
664 TknU8 nGap2; /*!< 1 indicates Ngap=Ngap,1 and 2 indicates Ngap,2 */
665 TfuAllocMapOrRiv alloc; /*!< Allocation represented as a bit-map or RIV */
666 U8 mcs; /*!< 5 bits for MCS */
667 U8 rv; /*!< Redundancy version */
668 U8 harqProcId; /*!< HARQ process ID */
669 Bool ndi; /*!< 1 bit for new data indicator */
671 Bool pmiCfm; /*!< PMI confirmation bit */
672 } TfuDciFormat1bAllocInfo;
675 /** @brief This structure contains the information that is carried in DCI
676 * format 1A for a PDCCH order.
678 typedef struct tfuPdcchOrderInfo
680 U8 preambleIdx; /*!< Dedicated preamble index */
681 U8 prachMaskIdx; /*!< PRACH Mask index used to determine the
682 subframe to be used for RACH */
685 /** @brief This structure contains only the allocation information that is part
687 * @details Allocation information also contains parameters necessary
688 * for Physical layer to process Downlink data. This structure accompanies the
689 * Data that is sent from MAC to PHY in the TfUiTfuDatReq primitive.
690 * @sa TfuDciFormat1AInfo
692 typedef struct tfuDciFormat1aAllocInfo
694 Bool isLocal; /*!< TRUE, if localised VRB */
695 TknU8 nGap2; /*!< 1 indicates Ngap=Ngap,1 and 2 indicates Ngap,2 */
696 TfuAllocMapOrRiv alloc; /*!< Allocation carries RIV or a bitmap */
697 U8 mcs; /*!< 5 bits for MCS */
698 U8 rv; /*!< Redundancy version */
699 TknU8 harqProcId; /*!< HARQ process ID. Reserved
700 if RA-RNTI, P-RNTI, SI-RNTI is used */
701 Bool ndi; /*!< 1 bit for new data indicator */
702 } TfuDciFormat1aAllocInfo;
704 /** @brief This structure contains the information carried in DCI format 1A
705 * when it is NOT used for a PDCCH order.
707 typedef struct tfudciformat1aPdsch
709 TfuDciFormat1aAllocInfo allocInfo; /*!< Allocation information. */
713 TknU8 dai; /*!< The downlink assignement index. Reserved
714 if RA-RNTI, P-RNTI, SI-RNTI is used. */
717 U8 tpcCmd; /*!< 2 bits for TPC command. */
718 Bool isTBMsg4; /*!< This field is added to help counting num of Msg4 Tx failures */
719 } Tfudciformat1aPdsch;
720 /*tfu_x_001.main_6 - Added for SPS support*/
721 /** @brief This structure contains the information needed to convey DCI format 1A.
722 * @details Format can possibly carry PDSCH allocation or information needed for
723 * a PDCCH order, used to initiate a RACH procedure in cases where UE looses
724 * synchronization with eNodeB.
726 typedef struct tfuDciFormat1aInfo
728 /*tfu_x_001.main_6- Added for SPS support*/
732 TfuPdcchOrderInfo pdcchOrder; /*!< PDDCH order information */
733 Tfudciformat1aPdsch pdschInfo; /*!< PDSCH allocation information */
734 /*tfu_x_001.main_6 - Added for SPS support*/
736 } TfuDciFormat1aInfo;
738 /** @brief This structure contains the information needed to convey DCI format 1A.
739 * @details Allocation information is separated from the other control
740 * information carried in this format. This separation is needed as Data must
741 * also carry some control information, essentially, allocation information
742 * along with it, in order to aid physical layer processing of the data.
744 typedef struct tfuDciFormat1bInfo
746 TfuDciFormat1bAllocInfo allocInfo; /*!< Allocation information */
750 U8 dai; /*!< The downlink assignement index */
753 U8 tpcCmd; /*!< 2 bits for TPC command */
754 } TfuDciFormat1bInfo;
756 /** @brief This structure contains the information needed to convey DCI format 6-0A.
758 typedef struct tfuDciFormat60aInfo
760 Bool hoppingEnbld; /*!< TRUE, if hopping is enabled */
761 U32 riv; /*!<9 bits, type2 allocation, RIV as defined in 213 section 7.1.6.3. */
762 U8 mcs; /*!< 4 bits for MCS and RV */
763 U8 rep; /*!< 2 bits, repetion number */
764 U8 hqProcId; /*!< HARQ process ID */
765 Bool ndi; /*!< 1 bit for new data indicator */
766 U8 rv; /*!< 2 bits - Redundancy version */
767 U8 tpcCmd; /*!< 2 bits for TPC command */
769 /* TODO_Mavericks: Check if DAI is required for FDD also */
770 U8 ulIdx; /*!< UL index applicable only for TDD */
771 U8 dai; /*!< The downlink assignement index */
773 Bool cqiReq; /*!< 1 bit for CQI */
774 Bool isSrs; /*!< 1 bit for SRS */
775 U8 dciRep; /*!< 2 bits for DCI Subframe repetition */
776 } TfuDciFormat60aInfo;
777 /** @brief This structure contains only the allocation information, that is part
778 * of DCI format 6-1A.
779 * @details Allocation information also contains parameters necessary
780 * for Physical layer to process Downlink data. This structure accompanies the
781 * Data that is sent from MAC to PHY in the TfUiTfuDatReq primitive.
782 * @sa TfuDciFormat61AInfo
784 typedef struct tfuDciFormat61AllocInfo
786 U32 riv; /*!<9 bits, type2 allocation, RIV as defined in 213 section 7.1.6.3. */
787 /* TODO_EMTC: Add start RB, number of RB, Narrow band if required */
788 U8 harqProcId; /*!< HARQ process ID */
789 Bool ndi; /*!< 1 bit for new data indicator */
790 U8 mcs; /*!< 4 bits for MCS and RV */
791 U8 rv; /*!< 2 bits - Redundancy version */
792 U32 scramblerInitValue; /*!< Scrambler init(Cinit) value as per 36.211 */
793 } TfuDciFormat61AllocInfo;
795 /** @brief This structure contains the information carried in DCI format 6-1A
796 * when it is NOT used for a PDCCH order.
798 typedef struct tfudciformat61aPdsch
800 TfuDciFormat61AllocInfo allocInfo; /* Allocation info for 6-1A */
801 Bool hoppingEnbld; /*!< TRUE, if hopping is enabled */
802 U8 rep; /*!< 2 bits, repetion number */
803 U8 tpcCmd; /*!< 2 bits for TPC command */
805 /* TODO_Maveri: Check if DAI is required for FDD also */
806 U8 dai; /*!< The downlink assignement index */
808 U8 antPortAndScrId; /*!< 2 bits - Antenna port(s) and scrambling identity */
809 Bool isSrs; /*!< 1 bit for SRS */
810 U8 tPmi; /*!< 2 0r 4 bits: TPMI information for precoding */
811 U8 pmiCfm; /*!< 1 bit, PMI confirmation for precoding */
812 U8 harqAckOffst; /*!< 2 bits, HARQ-ACK resource offset */
813 U8 dciRep; /*!< 2 bits for DCI Subframe repetition */
814 Bool isTBMsg4; /*!< This field is added to help counting num of Msg4 Tx failures */
815 } Tfudciformat61aPdsch;
816 typedef struct tfuPdcchOrderInfoEmtc
818 U32 riv; /*!<9 bits, type2 allocation, RIV as defined in 213 section 7.1.6.3. */
819 U8 preambleIdx; /*!< Dedicated preamble index */
820 U8 prachMaskIdx; /*!< PRACH Mask index used to determine the
821 subframe to be used for RACH */
822 U8 ceLevel; /*!< 2 bits, Starting CE level */
823 } TfuPdcchOrderInfoEmtc;
825 /** @brief This structure contains the information needed to convey DCI format 6-1A.
826 * @details Format can possibly carry PDSCH allocation or information needed for
827 * a PDCCH order, used to initiate a RACH procedure in cases where UE looses
828 * synchronization with eNodeB.
830 typedef struct tfuDciFormat61aInfo
835 TfuPdcchOrderInfoEmtc pdcchOrder; /*!< PDDCH order information */
836 Tfudciformat61aPdsch pdschInfo; /*!< PDSCH allocation information */
837 /*tfu_x_001.main_6 - Added for SPS support*/
839 } TfuDciFormat61aInfo;
842 typedef struct tfuDciFormatForEmtcBcch
847 }TfuDciFormatForEmtcBcch;
849 typedef struct tfuDirectIndication
851 U8 directInd; /*!< 8 bit direct Indication Information*/
852 }TfuDirectIndication;
854 typedef struct tfuDciFormat62AllocInfo
856 U8 riv; /*!< Narrow Band Index*/
858 U32 scramblerInitValue; /*!< Scrambler init(Cinit) value as per 36.211 */
859 U8 rv; /*!<Redundancy version */
860 }TfuDciFormat62AllocInfo;
862 typedef struct tfudciformat62Pdsch
864 TfuDciFormat62AllocInfo format62AllocInfo;
865 U8 repNum; /*!< 3 bits, repetion number */
866 U8 dciSubRepNum; /*!< 2 bits for DCI Subframe repetition */
869 }Tfudciformat62Pdsch;
871 typedef struct tfuDciFormat62Info
876 TfuDirectIndication directIndication; /*!< Direct Indication information */
877 Tfudciformat62Pdsch pdschInfo; /*!< Paging information */
879 } TfuDciFormat62Info;
881 #endif /* EMTC_ENABLE */
886 /** @brief This structure contains the information needed to convey the possible DCI
887 * formats. The following are the supported formats:
888 * -# Format 0 - used for PUSCH scheduling
889 * -# Format 1 - used for PDSCH scheduling
890 * -# Format 1A - used for compact scheduling of PDSCH or RA procedure
891 * intitiated by a PDCCH order.
892 * -# Format 1B - used for compact scheduling of PDSCH with precoding
894 * -# Format 1C - used for very compact scheduling of PDSCH.
895 * -# Format 1D - used for compact scheduling for PDSCH with precoding
896 * information with power offset.
897 * -# Format 2 - used for PDSCH scheduling
898 * -# Format 2A - used for PDSCH scheduling
899 * -# Format 3 - used for power control
900 * -# Format 3A - used for power control
902 typedef struct tfuDciInfo
904 TfuDciFormat dciFormat; /*!< DCI format */
907 TfuDciFormat0Info format0Info; /*!< Format 0 information */
908 TfuDciFormat1Info format1Info; /*!< Format 1 information */
909 TfuDciFormat1aInfo format1aInfo; /*!< Format 1A information */
910 TfuDciFormat1bInfo format1bInfo; /*!< Format 1B information */
911 TfuDciFormat1cInfo format1cInfo; /*!< Format 1C information */
912 TfuDciFormat1dInfo format1dInfo; /*!< Format 1D information */
913 TfuDciFormat2Info format2Info; /*!< Format 2 information */
914 TfuDciFormat2AInfo format2AInfo; /*!< Format 2A information */
915 TfuDciFormat3Info format3Info; /*!< Format 3 information */
916 TfuDciFormat3AInfo format3AInfo; /*!< Format 3A information */
918 TfuDciFormat60aInfo format60aInfo; /*!< Format 60a Information */
919 TfuDciFormat61aInfo format61aInfo; /*!< Format 61a Information */
920 TfuDciFormat62Info format62Info; /*!< Formra 62 Information */
921 #endif /* EMTC_ENABLE */
923 TfuDciFormatA1Info formatA1Info; /*!< 5GTF: Format A1 information */
924 TfuDciFormatA2Info formatA2Info; /*!< 5GTF: Format A1 information */
925 TfuDciFormatB1Info formatB1Info; /*!< 5GTF: Format B1 information */
926 TfuDciFormatB2Info formatB2Info; /*!< 5GTF: Format B2 information */
931 /** @brief This structure contains the information needed to convey the start and size
932 * of the sub-band in the CQI report.
934 typedef struct tfuSubbandInfo
936 U8 rbStart; /*!< Starting RB */
937 U8 numRb; /*!< Number of RBs */
940 /** @brief This structure is used to convey the sub-band CQI reported.
942 typedef struct tfuSubbandDlCqiInfo
944 TfuSubbandInfo subband; /*!< Sub-band information */
945 U8 cqiIdx[TFU_MAX_TB]; /*!< Sub-band CQI index per CW */
946 } TfuSubbandDlCqiInfo;
950 /** @brief This structure is used to convey the subbannd CQI reported.
952 typedef struct tfuSubbandCqiInfo
954 TfuSubbandInfo subband; /*!< Sub-band information */
955 U8 cqiIdx; /*!< CQI index */
957 /** @brief This structure conveys the CCE information.
959 typedef struct tfuPdcchCceInfo
961 U8 cceIdx; /*!< CCE index */
962 CmLteAggrLvl aggrLvl; /*!< Aggregation level */
965 /** @brief This structure maps to the CQI mode 10. The report can either
966 * convey a Rank index or a wide-band CQI.
968 typedef struct tfuCqiPucchMode10
970 TfuRptType type; /*!< Either RI or CQI reported */
973 U8 ri; /*!< One RI assuming transmission on S sub-bands */
974 U8 cqi; /*!< Wide-band CQI assuming transmission on S sub-bands */
979 /** @brief This structure contains a wide-band CQI, PMI, and optionally a
980 * wide-band differential CQI.
982 typedef struct tfuCqiMode11Cqi
984 U8 cqi; /*!< Wide-band CQI */
986 TknU8 wideDiffCqi; /*!< Wide-band differential CQI */
989 /** @brief This structure maps to the CQI mode 11. The report can either
990 * convey a Rank index or a CQI report.
992 typedef struct tfuCqiPucchMode11
994 TfuRptType type; /*!< Either RI or CQI reported */
997 U8 ri; /*!< One RI assuming transmission on S sub-bands */
998 TfuCqiMode11Cqi cqi; /*!< CQI assuming transmission on S sub-bands */
1000 } TfuCqiPucchMode11;
1002 /** @brief This structure contains the sub-band CQI for mode 2-0.
1004 typedef struct tfuCqiMode20SubCqi
1006 U8 cqi; /*!< CQI value */
1007 U8 l; /*!< L bit sub-band label */
1008 } TfuCqiMode20SubCqi;
1010 /** @brief This structure contains Mode 20 CQI report. It can either be a
1011 * wide-band CQI or a sub-band CQI.
1013 typedef struct tfuCqiMode20Cqi
1015 Bool isWideband; /*!< TRUE, if wide-band CQI is reported */
1018 U8 wideCqi; /*!< Single Wide-band CQI */
1019 TfuCqiMode20SubCqi subCqi; /*!< Sub-band CQI */
1024 /** @brief This structure maps to CQI mode 20. The report either contains a
1025 * Rank Index or a CQI report.
1027 typedef struct tfuCqiPucchMode20
1029 TfuRptType type; /*!< Either RI or CQI reported */
1032 U8 ri; /*!< One RI assuming transmission on S sub-bands */
1033 TfuCqiMode20Cqi cqi; /*!< CQI assuming transmission on S sub-bands */
1035 } TfuCqiPucchMode20;
1037 /** @brief This structure contains the sub-band CQI report for mode 2-1.
1038 * It carries a CQI, 'L' bit sub-band label, and optionally a differential CQI.
1040 typedef struct tfuCqiMode21SubCqi
1043 U8 l; /*!< L bit sub-band label */
1044 TknU8 diffCqi; /*!< Optional Differential CQI */
1045 } TfuCqiMode21SubCqi;
1048 /** @brief This structure contains the wide-band CQI report for mode 2-1.
1049 * It carries a wide-band CQI, PMI and optionally a differential CQI.
1051 typedef struct tfuCqiMode21WideCqi
1055 TknU8 diffCqi; /*!< Optional Differential CQI */
1056 } TfuCqiMode21WideCqi;
1059 /** @brief This structure conveys CQI report for mode 2-1. The reported value
1060 * can either be wide-band or sub-band.
1062 typedef struct tfuCqiMode21Cqi
1064 Bool isWideband; /*!< TRUE, if wide-band CQI is reported. */
1067 TfuCqiMode21WideCqi wideCqi; /*!< Single Wide-band CQI */
1068 TfuCqiMode21SubCqi subCqi; /*!< Sub-band CQI. */
1073 /** @brief This structure maps to the CQI reporting mode 2-1. The report either
1074 * conveys a Rank Indicator or a CQI report.
1076 typedef struct tfuCqiPucchMode21
1078 TfuRptType type; /*!< Either RI or CQI reported */
1081 U8 ri; /*!< One RI assuming transmission on S sub-bands */
1082 TfuCqiMode21Cqi cqi; /*!< CQI assuming transmission on S sub-bands */
1084 } TfuCqiPucchMode21;
1087 /** @brief This structure conveys the Downlink CQI reported on PUCCH.
1089 typedef struct tfuDlCqiPucch
1092 TfuDlCqiPucchMode mode; /*!< PUSCH CQI mode */
1095 TfuCqiPucchMode10 mode10Info; /*!< Mode 1-0 information */
1096 TfuCqiPucchMode11 mode11Info; /*!< Mode 1-1 information */
1097 TfuCqiPucchMode20 mode20Info; /*!< Mode 2-0 information */
1098 TfuCqiPucchMode21 mode21Info; /*!< Mode 2-1 information */
1103 /** @brief This structure carries sub-band information and PMI, in the CQI
1104 * reporting format 1-2.
1106 typedef struct tfuSubbandMode12
1108 U8 pmi; /*!< PMI for this sub-band */
1109 TfuSubbandInfo subBand; /*!< Sub-band information start and length */
1112 /** @brief This structure conveys information present in CQI reporting mode 1-2 received
1115 typedef struct tfuCqiPuschMode12
1117 U8 numSubband; /*!< Number of sub-bands */
1118 U8 cqiIdx[TFU_MAX_TB]; /*!< Single Wide-band CQI per
1120 TfuSubbandMode12 subbandArr[TFU_MAX_DL_SUBBAND]; /*!< Sub-band information array */
1121 } TfuCqiPuschMode12;
1124 /** @brief This structure conveys information present in CQI reporting mode 2-0 received
1125 * over PUSCH. This mode is for UE selected sub-band feedback.
1127 typedef struct tfuCqiPuschMode20
1129 U8 cqiIdx; /*!< CQI index transmission
1131 U8 wideBandCqi; /*!< Wide-band CQI index, that is,
1132 transmission over S sub-bands */
1133 U8 numSubband; /*!< Number of sub-bands */
1134 TfuSubbandInfo subbandArr[TFU_MAX_DL_SUBBAND]; /*!< Sub-band information array */
1135 } TfuCqiPuschMode20;
1137 /** @brief This structure conveys information present in CQI reporting mode 2-2 received
1140 typedef struct tfuCqiPuschMode22
1142 U8 cqi[TFU_MAX_TB]; /*!< CQI index over M preferred
1144 U8 pmi; /*!< PMI preferred PMI over M
1146 U8 wideBandCqi[TFU_MAX_TB]; /*!< Wide-band CQI */
1147 U8 wideBandPmi; /*!< PMI */
1148 U8 numSubband; /*!< Number of sub-bands, that is, M mentioned in 213, each of size k */
1149 TfuSubbandInfo subbandArr[TFU_MAX_DL_SUBBAND]; /*!< Sub-band information array */
1150 } TfuCqiPuschMode22;
1153 /** @brief This structure holds CQI report information in mode 3-0
1155 typedef struct tfuSubbandMode30
1157 U8 cqi; /*!< CQI for this sub-band */
1158 TfuSubbandInfo subBand; /*!< Sub-band information start and length. */
1162 /** @brief This structure conveys information present in CQI reporting mode 3-0
1163 * received over PUSCH.
1165 typedef struct tfuCqiPuschMode30
1167 U8 wideBandCqi; /*!< Wide-band CQI */
1168 U8 numSubband; /*!< Number of sub-bands */
1169 TfuSubbandMode30 subbandArr[TFU_MAX_DL_SUBBAND]; /*!< Sub-band information array */
1170 } TfuCqiPuschMode30;
1172 /** @brief This structure holds CQI report information in mode 3-1
1174 typedef struct tfuSubbandMode31
1176 U8 cqi[TFU_MAX_TB]; /*!< CQI for this sub-band */
1177 TfuSubbandInfo subBand; /*!< Sub-band information start and length */
1181 /** @brief This structure conveys information present in CQI reporting mode 3-1
1182 * received over PUSCH.
1184 typedef struct tfuCqiPuschMode31
1187 U8 wideBandCqi[TFU_MAX_TB]; /*!< Wide-band CQI per CW */
1188 U8 numSubband; /*!< Number of sub-bands */
1189 TfuSubbandDlCqiInfo subbandCqiArr[TFU_MAX_DL_SUBBAND]; /*!< Array of
1190 sub-bands and CQI for
1192 } TfuCqiPuschMode31;
1194 /** @enum TfuDlCqiPuschMode
1195 * This enum contains values for the CQI reporting modes.
1199 TFU_PUSCH_CQI_MODE_12,
1200 TFU_PUSCH_CQI_MODE_20,
1201 TFU_PUSCH_CQI_MODE_22,
1202 TFU_PUSCH_CQI_MODE_30,
1203 TFU_PUSCH_CQI_MODE_31
1204 } TfuDlCqiPuschMode;
1207 /** @brief This structure conveys Downlink CQI information (mode and corresponding
1208 * CQI) received over PUSCH.
1210 typedef struct tfuDlCqiPusch
1213 TfuDlCqiPuschMode mode; /*!< PUSCH CQI mode */
1214 TknU8 ri; /*!< Rank Indicator for TM 3,4 */
1217 TfuCqiPuschMode12 mode12Info; /*!< Mode 1-2 information */
1218 TfuCqiPuschMode20 mode20Info; /*!< Mode 2-0 information */
1219 TfuCqiPuschMode22 mode22Info; /*!< Mode 2-2 information */
1220 TfuCqiPuschMode30 mode30Info; /*!< Mode 3-0 information */
1221 TfuCqiPuschMode31 mode31Info; /*!< Mode 3-1 information */
1225 /** @brief This structure conveys explicitly the PMI information in case
1226 * of PUSCH feedback usage in scheduling. Applicable for TM 4, 5, 6.
1228 typedef struct tfuDlCqiPuschInfo
1230 TfuDlCqiPuschMode mode; /*!< PUSCH CQI mode */
1233 TfuCqiPuschMode12 mode12Info; /*!< Mode 1-2 information */
1234 TfuCqiPuschMode22 mode22Info; /*!< Mode 2-2 information */
1235 TfuCqiPuschMode31 mode31Info; /*!< Mode 3-1 information */
1237 } TfuDlCqiPuschInfo;
1240 /** @enum TfuAckNackMode
1241 * This enum contains values for modes of HARQ feedback in TDD
1245 TFU_ACK_NACK_BUNDLING,
1246 TFU_ACK_NACK_MULTIPLEXING,
1247 TFU_ACK_NACK_SPECIAL_BUNDLING,
1248 TFU_ACK_NACK_CHANNEL_SELECTION =TFU_ACK_NACK_SPECIAL_BUNDLING,
1249 TFU_ACK_NACK_FORMAT_3
1252 #else /* else of TFU_TDD */
1253 /** @enum TfuAckNackMode
1254 * This enum contains values for modes of HARQ feedback in FDD
1258 TFU_UCI_FORMAT_1A_1B,
1259 TFU_UCI_FORMAT_1B_CS,
1266 /** @brief This structure conveys the Uplink SRS indication of an UE.
1267 * @details Uplink SRS from each UE is received by the physical layer and this
1268 * information is provided to the scheduler.
1270 typedef struct tfuSrsRpt
1272 CmLList lnk; /*!< Link to the list of rerports */
1273 CmLteRnti ueId; /*!< CRNTI */
1274 U16 dopEst; /*!< Doppler estimation [0-255] */
1275 U16 ta; /*!< Timing advance for the UE */
1276 U8 numRbs; /*!< Number of RBs to be reported for this UE */
1277 U8 rbStart; /*!< Starting RB to be reported */
1278 U8 snr[TFU_MAX_UL_RB]; /*!< snr for each RB */
1279 Bool wideCqiPres; /*!< Flag to indicate Wide-band CQI */
1280 U8 wideCqi; /*!< Wide-band CQI for an UL channel */
1284 /** @brief This structure conveys the Uplink SRS indication.
1285 * @details Uplink SRS is received by the physical layer and this
1286 * information is provided to the scheduler.
1287 * This data structure clubs together the UL SRS indications of all the UEs
1290 typedef struct tfuSrsIndInfo
1292 CmMemListCp memCp; /*!< Memory control point */
1293 CmLteCellId cellId; /*!< Cell ID */
1294 CmLteTimingInfo timingInfo; /*!< Timing information */
1295 CmLListCp srsRpt; /*!< List of SRS indications - TfuSrsRpt */
1298 /** @brief This structure contains the Raw CQI information, that is, the CQI report
1299 * as transmitted by the UE.
1300 * @details These bits are interpreted by MAC to derive the following:
1306 typedef struct tfuRawCqiRpt
1308 CmLList lnk; /*!< Link to the list of reports */
1309 CmLteRnti crnti; /*!< CRNTI of the UE */
1310 U8 numBits; /*!< Number of valid CQI bits */
1312 U32 uciPayload; /*!< Raw UCI bit payload */
1315 U8 cqiBits[TFU_MAX_CQI_BYTES]; /*!< An array of bits
1316 corresponding to the Raw CQI report */
1317 U8 ri[CM_LTE_MAX_CELLS]; /*!< Array of bits comprising of a Rank */
1321 /** @brief This structure contains the Raw CQI reports received for the
1322 * transmitting UEs in a single subframe.
1323 * @details Raw CQI corresponds to the actual bits transmitted by the UE, whose
1324 * interpretation is upto the MAC layer.
1326 typedef struct tfuRawCqiIndInfo
1328 CmMemListCp memCp; /*!< Memory control point */
1329 CmLteCellId cellId; /*!< Cell ID */
1330 CmLteTimingInfo timingInfo; /*!< Timing information */
1331 CmLListCp rawCqiRpt; /*!< List of HQ+CQI+RI indications - TfuRawUciRpt */
1333 /* 5GTF TODO: Change Interface Structure and API name accordingly */
1345 TFU_PUCCH_HARQ_SR_SRS,
1346 TFU_PUCCH_HARQ_SR_CQI,
1349 /*tfu_x_001.main_8 - ADD - New Pucch RR Info Combination support */
1350 /* ccpu00116923 - New Reception Request types for CQI and SRS with SR */
1351 TFU_PUCCH_HARQ_SR_CQI_SRS,
1352 TFU_PUCCH_SR_CQI_SRS
1355 /* 5GTF TODO: Order of encoding should be as per 212 5.2.3.6 */
1356 TFU_XPUCCH_UCI_INFO, /*!< HQ+CQI+RI */
1359 } TfuUePucchRecpType;
1361 /** @brief This structure is sent from scheduler to PHY in order to request the
1362 * reception of HARQ information on PUCCH.
1364 typedef struct tfuUePucchHqRecpInfo
1366 TfuAckNackMode hqFdbkMode; /*!< Feedback mode in TDD */
1367 U8 hqSz; /*!< Size of feedback in bits */
1368 U8 pucchResCnt; /*!< Number of ACK/NACK responses
1369 received in this subframe [0-4] */
1370 U16 hqRes[TFU_MAX_HQ_RES]; /*!< (n^1PUCCH(0-3))
1372 U8 a; /*!< A value to interpret Hq feedback */
1373 } TfuUePucchHqRecpInfo;
1375 /** @brief This structure is sent from scheduler to PHY in order to request the
1376 * reception of SR information on PUCCH.
1378 typedef struct tfuUePucchSrRecpInfo
1380 U16 n1PucchIdx; /*!< (n^1PUCCH) value [0-2047] */
1381 } TfuUePucchSrRecpInfo;
1383 /** @brief This structure is sent from scheduler to PHY in order to request the
1384 * reception of CQI information on PUCCH.
1386 typedef struct tfuUePucchCqiRecpInfo
1388 U16 n2PucchIdx; /*!< (n^2PUCCH) value[0-1185] */
1389 U8 cqiPmiSz; /*!< DL CQI/PMI size in bits [0-255] */
1390 } TfuUePucchCqiRecpInfo;
1392 /** Different values for UL SRS BW information */
1393 typedef enum tfuUlSrsBwInfo
1402 /** Different values for UL SRS Hoping BW information */
1403 typedef enum tfuUlSrsHoBwInfo
1405 TFU_ULSRS_HOP_BW_0 = 0,
1406 TFU_ULSRS_HOP_BW_1 = 1,
1407 TFU_ULSRS_HOP_BW_2 = 2,
1408 TFU_ULSRS_HOP_BW_3 = 3
1411 /** Different values for UL SRS Cyclic Shift information */
1412 typedef enum tfuUlSrsCycShiftInfo
1414 TFU_ULSRS_CYSHIFT_0 = 0,
1415 TFU_ULSRS_CYSHIFT_1 = 1,
1416 TFU_ULSRS_CYSHIFT_2 = 2,
1417 TFU_ULSRS_CYSHIFT_3 = 3,
1418 TFU_ULSRS_CYSHIFT_4 = 4,
1419 TFU_ULSRS_CYSHIFT_5 = 5,
1420 TFU_ULSRS_CYSHIFT_6 = 6,
1421 TFU_ULSRS_CYSHIFT_7 = 7
1422 } TfuUlSrsCycShiftInfo;
1425 /** @brief This structure is sent from scheduler to PHY in order to request the
1426 * reception of SRS information on PUCCH.
1428 typedef struct tfuUePucchSrsRecpInfo
1430 TfuUlSrsBwInfo srsBw; /*!< UE specific SRS Bandwidth (B,srs)
1431 parameter. Given by RRC[0-3] */
1432 U8 nRrc; /*!< Frequency Domain position given by
1434 TfuUlSrsHoBwInfo srsHopBw; /*!< SRS Hopping BW given by RRC per
1436 U8 transComb; /*!< Frequency location given by RRC
1437 per UE (k,TC) [0-1] */
1438 U16 srsCfgIdx; /*!< (Isrs) - defines SRS periodicity
1439 and subframe offset,given by RRC
1441 TfuUlSrsCycShiftInfo srsCyclicShft; /*!< (n^cs,srs) given by RRC [0-7] */
1442 /*Need to add U8 AntPort for Rel10 when SRS is supported */
1443 } TfuUePucchSrsRecpInfo;
1446 /** @brief This structure is sent from scheduler to PHY in order to request the
1447 * reception of BSI BRI information on PUCCH.
1449 typedef struct tfuUePucchBsiBriRecpInfo
1451 U8 puschFlag; /*!< UCI is carried in xPUSCH or not
1452 0 -> UCI is in xPUCCH,
1453 1 -> UCI is in xPUSCH */
1454 U8 pucchIndex; /*!< Frequency resource index of xPUCCH
1455 for UCI report. [0-15] */
1456 U8 SCID; /*!< SCID : 0 or 1 */
1457 U8 bsiRpt; /*!< total num of BSI report[0,1,2,4] */
1458 U8 briRpt; /*!< total num of BRI report[0,1,2,4] */
1459 } TfuUePucchBsiBriRecpInfo;
1461 /** @brief This structure is sent from scheduler to PHY in order to request the
1462 * reception of UCI (CQI, HQ, RI) information on PUCCH.
1464 typedef struct tfuUePucchUciRecpInfo
1466 U8 numBits; /*!< 1-22, 1-Only HQ, 5-Only CQI/RI, 6- both HQ CQI/RI */
1467 U8 pucchIndex; /*!< 0-15, PUCCH Freq Res Idx */
1468 U8 SCID; /*!< SCID : 0 or 1 */
1469 } TfuUePucchUciRecpInfo;
1472 /** @brief This structure is sent from scheduler to PHY in order to request the
1473 * reception of UCI on PUCCH. This may contain the following:
1486 typedef struct tfuUePucchRecpReq
1488 TfuUePucchRecpType uciInfo; /*!< Bitmask for the combination of UCI
1490 TfuUePucchCqiRecpInfo cqiInfo; /*!< Info needed to receive CQI. Valid
1491 if CQI is included in uciInfo */
1492 TfuUePucchSrRecpInfo srInfo; /*!< Info needed to receive SR. Valid
1493 if SR is included in uciInfo */
1494 TfuUePucchHqRecpInfo hqInfo; /*!< Info needed to receive Harq-Valid
1495 if HQ is included in uciInfo */
1496 TfuUePucchSrsRecpInfo srsInfo; /*!< Info needed to receive SRS. Valid
1497 if SRS is included in uciInfo */
1499 TfuUePucchBsiBriRecpInfo bsiBriInfo; /*!< Info needed to receive BSI_BRI. Valid
1500 if BSI_BRI is included in uciInfo */
1501 TfuUePucchUciRecpInfo uciPduInfo; /*!< Info needed to receive HQ/CQI/RI.*/
1504 U16 format1aRepNumber;
1505 U16 format2aRepNumber;
1506 U32 catMScramblerInitVal;
1508 } TfuUePucchRecpReq;
1514 TFU_PUSCH_DATA_HARQ,
1515 TFU_PUSCH_DATA_HARQ_SRS,
1517 TFU_PUSCH_DATA_CQI_SRS,
1518 TFU_PUSCH_DATA_CQI_HARQ,
1519 TFU_PUSCH_DATA_CQI_HARQ_SRS
1521 /* Message types possible on xPUCCH and xPUSCH : UL Data, UCIs: HARQ-ACK, SR, BSI, BRI, CQI/PMI/RI etc */
1522 /* for now only TFU_PUSCH_DATA can be considered */
1524 } TfuUePuschRecpType;
1526 /** @brief This structure is sent from scheduler to PHY in order to request the
1527 * reception of UEs data on ULSCH.
1529 typedef struct tfuUeUlSchRecpInfo
1531 U16 size; /*!< Length of the Data in bytes*/
1532 /* ToDo : rbStart and numRb is kept for legacy, need to remove later */
1533 U8 rbStart; /*!< Start of Resource Block of
1535 U8 numRb; /*!< Number of RBs allocated */
1536 TfuModScheme modType; /*!< Modulation order */
1537 U8 nDmrs; /*!< 3 bits for DMRS cyclic shift */
1538 Bool hoppingEnbld; /*!< TRUE, if hopping is enabled */
1539 U8 hoppingBits; /*!< Hopping bits as mentioned in
1541 Bool isRtx; /*!< TRUE, if this is a retx */
1542 Bool ndi; /*!< New Data Indication */
1543 U8 rv; /*!< Redundancy version */
1544 U8 harqProcId; /*!< HARQ process ID */
1545 U8 txMode; /*!< UE's UL transmission mode:
1546 0 = SISO/SIMO, 1 = MIMO */
1547 U8 crntTxNb; /*!< Current Harq Tx Cntr of this TB.
1548 Valid if frequency hopping is
1550 Bool nSrs; /*!< Indicates if RBs for this TB
1551 overlap with SRS configuration.
1552 FALSE = No overlap,TRUE=overlap */
1555 U32 repetitionNumber;
1556 U32 scramblerInitValue;
1559 U8 rbgStart; /* The starting resource block group for
1560 this xPUSCH allocation.*/
1561 U8 numRbg; /* The number of resource block groups
1562 allocated to this ULSCH grant.*/
1563 U8 xPUSCHRange; /* 0 : the stopping of xPUSCH is the 12th symbol,
1564 1 : the stopping of xPUSCH is the 13th symbol
1565 2 : the stopping of xPUSCH is the final (14th) symbol */
1566 U8 nAntPortLayer;/* 0:1 Layer, port 40 1:1 Layer, port 41 2:1 Layer, port 42
1567 3:1 Layer, port 43 4:2 Layers, ports {40, 41}
1568 5:2 Layers, ports {42, 43} */
1569 U8 SCID; /*SCID : 0 or 1 */
1570 U8 PMI; /* Precoding matrix indicator, see V5G.211 section Table 5.3.3A.2-1 */
1571 Bool uciWoTBFlag; /* 0: UCI without transmit block
1572 1: with transmit block */
1573 U8 beamIndex; /* Receiving beam index Value: 0->7 */
1575 } TfuUeUlSchRecpInfo;
1577 /** @brief This structure is sent from scheduler to PHY in order to request the
1578 * reception of CQI_RI information on PUSCH.
1580 typedef struct tfuUePuschCqiRecpInfo
1582 U8 reportType; /*! Type of CSI report.
1583 0 = periodic report.
1584 1 = aperiodic report */
1585 U8 cCNum; /*! The number of CC in the aperiodic report.
1587 U8 cqiPmiSzR1[CM_LTE_MAX_CELLS]; /*!< Size of DL CQI/PMI in bits for
1588 rank 1 report[0-255] */
1589 U8 cqiPmiSzRn1[CM_LTE_MAX_CELLS]; /*!< Size of DL CQI/PMI in bits for
1590 rank > 1 report[0-255] */
1591 TknU8 riSz[CM_LTE_MAX_CELLS]; /*!< Size of RI in bits[1-2]. Value will
1592 be 0 (present flag-false) in frames
1593 with no RI Occasion*/
1594 U8 cqiBetaOff; /*!< Beta offset for CQI[0-15]. Given
1596 U8 riBetaOff; /*!< Beta offset for RI[0-15]. Given
1598 } TfuUePuschCqiRecpInfo;
1600 /** @brief This structure is sent from scheduler to PHY in order to request the
1601 * reception of HARQ information on PUSCH.
1603 typedef struct tfuUePuschHqRecpInfo
1605 U8 hqSz; /*!< Number of feedback bits:
1606 FDD- 1 or 2 TDD- 1 to 4*/
1607 U8 hqBetaOff; /*!< Beta offset for Harq[0-15]. Given
1610 TfuAckNackMode hqFdbkMode; /*!< Feedback mode in TDD */
1611 U8 nBundled; /*!< nBundled value intended for PHY */
1612 U8 ulDai; /*!< Ul Dai */
1614 } TfuUePuschHqRecpInfo;
1616 typedef TfuUePucchSrsRecpInfo TfuUePuschSrsRecpInfo;
1617 /** @brief This structure is sent from scheduler to PHY in order to request the
1618 * reception of UEs data on PUSCH. This may contain the following:
1622 * -# Data + HARQ + SRS
1624 * -# Data + CQI/RI + SRS
1625 * -# Data + CQI/RI + HARQ
1626 * -# Data + CQI/RI + HARQ + SRS
1628 typedef struct tfuUePuschRecpReq
1630 TfuUePuschRecpType rcpInfo; /*!< Bitmask for the combination of
1631 information to be received */
1632 TfuUeUlSchRecpInfo ulSchInfo; /*!< Info needed to receive data pdu
1633 on PUSCH. Valid if data is included
1635 TfuUePuschCqiRecpInfo cqiRiInfo; /*!< Info needed to receive CQI/RI on
1636 PUSCH. Valid if CQI is included
1638 TfuUePuschHqRecpInfo hqInfo; /*!< Info needed to receive Harq on
1639 PUSCH. Valid if HARQ is included
1641 TfuUePuschSrsRecpInfo srsInfo; /*!< Info needed to receive SRS. Valid
1642 if SRS is included in rcpInfo */
1643 TknU8 initialNSrs; /*!< Not present in case of only data
1644 [0/1]. 0 = last OFDM symbol is
1645 not punctured. 1 = last OFDM
1646 symbol is punctured */
1647 TknU8 initialNumRbs; /*!< Number of RBs for initial
1648 transmission of this TB. Not
1649 present in case of only data */
1650 } TfuUePuschRecpReq;
1652 /** @enum TfuRecpReqType
1653 * This enum contains values for types of Reception Request.
1662 /** @brief This structure is a Per UE reception request for either PUCCH or PUSCH
1663 * data. This contains information needed by PHY to decode the data sent by the
1666 typedef struct tfuUeRecpReqInfo
1668 CmLList lnk; /*!< Link of Linked List */
1669 CmLteRnti rnti; /*!< RNTI of the scheduled UE */
1671 U8 groupId; /*!< UE Group ID */
1673 TfuRecpReqType type; /*!< Type indicating PUCCH or PUSCH */
1676 TfuUePucchRecpReq pucchRecpReq; /*!< Reception request for PUCCH */
1677 TfuUePuschRecpReq puschRecpReq; /*!< Reception request for PUSCH */
1681 #else /* TFU_UPGRADE */
1683 /** @enum TfuUciType
1684 * This enum has values for the various types of UCI information present.
1688 TFU_UCI_SR, /*!< Only a scheduling request */
1689 TFU_UCI_HARQ, /*!< Only HARQ-ACK feedback */
1690 TFU_UCI_CQI, /*!< Only CQI (periodic) report */
1691 TFU_UCI_HARQ_CQI, /*!< HARQ and CQI together */
1692 TFU_UCI_HARQ_SR /*!< HARQ and SR together */
1695 /** @enum TfuHqRecpReqType
1696 * This enum contains values for types of HARQ Reception Request.
1700 TFU_HQ_RECP_REQ_NORMAL,
1701 TFU_HQ_RECP_REQ_N1PUCCH
1706 /** @brief This structure is sent from Scheduler to PHY in order to request the
1707 * reception of an UE's data on PUCCH. This may contain the following:
1709 * -# Scheduling Request (SR)
1710 * -# HARQ-ACK and SR
1712 * -# CQI and HARQ-ACK
1714 typedef struct tfuUePucchRecpReq
1717 TfuHqRecpReqType hqType; /*!< Type of HARQ Reception Request */
1720 /** @name TFU_TDD */
1723 U16 nCce; /*!< Number of first CCE used for transmission of
1724 the corresponding DCI assignment. Used to decode
1727 U16 nCce[TFU_MAX_M]; /*!< nCCE is an array in the case of TDD
1728 HARQ ACK multiplexing. This value is
1729 needed for the calculation of
1730 (n^1 PUCCH,i) for i = {0,1,2,3} */
1733 U16 n1Pucch; /*!< n1 PUCCH for ACK NACK repetition.
1734 This is the resource that UE must
1735 transmit the HARQ Feedback except
1738 TfuUciType type; /*!< Type of Uplink control information - value
1739 must be one of the following:
1746 /** @name TFU_TDD */
1749 U8 multCnt; /*!< Number of ACK/NACK resources present */
1750 U8 M; /*!< Number of elements in the set K - tb.
1752 U8 m[TFU_MAX_M]; /*!< Values utilized for TDD HARQ-ACK bundling
1754 U8 p[TFU_MAX_M]; /*!< "p" from 10.1 in 213 */
1757 } TfuUePucchRecpReq;
1760 /** @enum TfuRecpReqType
1761 * This enum contains values for types of Reception Request.
1771 /** @brief This structure is sent from scheduler to PHY in order to request the
1772 * reception of UEs data sent as MSG3 for Random access.
1774 typedef struct tfuUeMsg3RecpReq
1776 Bool hoppingEnbld; /*!< TRUE, if hopping is enabled */
1777 U8 rbStart; /*!< Start of Resource Block of allocation */
1778 U8 numRb; /*!< Number of RBs allocated */
1779 U8 mcs; /*!< 3 bits for MCS */
1780 Bool expCqi; /*!< TRUE, if CQI report along
1781 with PUSCH data is expected */
1782 Bool ulDelay; /*!< UL Delay bit 6.2 of 213 */
1783 /* tfu_x_001.main_2: Presently not used, it is useful when
1784 * Non-adaptive retransmission is implemented */
1785 Bool isRtx; /*!< TRUE, if this is a Msg3 retransmission */
1786 /*ccpu00128993 - ADD - fix for msg3 softcombining bug*/
1787 U8 harqProcId; /*!< HARQ process ID */
1788 Bool ndi; /*!< 1 bit for new data indicator */
1789 U8 rv; /*!< Redundancy version */
1790 U8 nDmrs; /*!< 3 bits for DMRS cyclic shift */
1791 /* tfu_x_001.main_2:107387:To include the size and ModOrder in DataRecp Request */
1792 U16 size; /*!< Length of the Data in bytes */
1793 TfuModScheme modType; /*!< Modulation order */
1796 /** @brief This structure is sent from scheduler to PHY in order to request the
1797 * reception of UEs data on PUSCH. This may contain the following:
1799 * -# Data + CQI and RI
1800 * -# Data + CQI and HARQ
1802 typedef struct tfuUePuschRecpReq
1804 Bool hoppingEnbld; /*!< TRUE, if hopping is enabled */
1805 U8 hoppingBits; /*!< Hopping bits as mentioned in 213 8.4 */
1806 U8 rbStart; /*!< Start of Resource Block of allocation */
1807 U8 numRb; /*!< Number of RBs allocated */
1808 U8 mcs; /*!< 5 bits for MCS and RV */
1809 U8 harqProcId; /*!< HARQ process ID */
1810 Bool ndi; /*!< 1 bit for new data indicator */
1811 Bool isRtx; /*!< TRUE, if this is a retransmission */
1812 U8 rv; /*!< Redundancy version */
1813 U8 nDmrs; /*!< 3 bits for DMRS cyclic shift */
1814 Bool expCqi; /*!< TRUE, if CQI report along
1815 with PUSCH data is expected */
1816 Bool expHarq; /*!< TRUE, if HARQ feedback along
1817 with PUSCH data is expected */
1818 TfuDlCqiPuschMode mode; /*!< CQI reporting mode configured. Note
1819 this value is valid, only if expCqi is
1821 /* tfu_x_001.main_2:107387:To include the size and ModOrder in DataRecp Req.*/
1822 U16 size; /*!< Length of the Data in bytes*/
1823 TfuModScheme modType; /*!< Modulation order */
1824 } TfuUePuschRecpReq;
1826 /** @brief This structure is a Per UE reception request for either PUCCH or PUSCH
1827 * data. This contains information needed by PHY to decode the data sent by the
1830 typedef struct tfuUeRecpReqInfo
1832 CmLList lnk; /*!< Link of Linked List */
1833 CmLteRnti rnti; /*!< RNTI of the scheduled UE */
1834 TfuRecpReqType type; /*!< Type indicating PUCCH or MSG3 or PUSCH */
1837 TfuUePucchRecpReq pucchRecpReq; /*!< Reception request for PUCCH Data */
1838 TfuUeMsg3RecpReq msg3RecpReq; /*!< Reception request for PUCCH Data */
1839 TfuUePuschRecpReq puschRecpReq; /*!< Reception request for PUSCH Data */
1843 #endif /* TFU_UPGRADE */
1845 /** @brief This structure contains CQI information received over PUCCH or PUSCH.
1847 typedef union tfuDlCqiInfo
1849 TfuDlCqiPucch pucchCqi; /*!< PUCCH CQI information */
1852 TfuDlCqiPusch puschCqi[CM_LTE_MAX_CELLS]; /*!< PUSCH CQI information */
1856 /** @brief This structure is sent from Scheduler to PHY. This includes parameters
1857 * needed by PHY to decode the following:
1859 * -# HARQ Feedback on PUCCH
1863 * This structure carries the reception information for all the scheduled UEs.
1865 typedef struct tfuRecpReqInfo
1867 CmMemListCp memCp; /*!< Memory control point */
1868 CmLteCellId cellId; /*!< Cell ID */
1869 CmLteTimingInfo timingInfo; /*!< Timing information */
1870 CmLListCp ueRecpReqLst; /*!< Linked List of reception requests
1873 CmLListCp emtcUeRecpReqLst; /*!< Linked List of reception requests
1876 /*tfu_x_001.main_8 - ADD - New Pucch RR Info Combination support */
1877 /*ccpu00116923 - ADD - SRS present support*/
1879 Bool srsPres; /*!< SRS present information (For Cell
1880 Specific SRS notification)
1881 0: No SRS in this subframe
1882 1: SRS present in this subframe */
1886 /** @brief This structure contains the PDCCH to be sent on PHY, that is, DCI
1887 * formats. This information is associated with an RNTI.
1889 typedef struct tfuPdcchInfo
1891 CmLList lnk; /*!< Link of Linked List */
1892 CmLteRnti rnti; /*!< RNTI of the allocation */
1894 Bool isSpsRnti; /*!< TRUE if rnti is SPS RNTI */
1895 CmLteRnti crnti; /*!< crnti in case rnti is SPS RNTI */
1897 U16 nCce; /*!< CCE index */
1898 CmLteAggrLvl aggrLvl; /*!< Aggregation level possible values are
1900 U8 dciNumOfBits; /*!< The size of DCI in bits */
1901 TfuDciInfo dci; /*!< PDCCH DCI format */
1903 U8 distributedAlloc;
1904 U8 localizedAntPortIndex;
1905 U16 dmrs_txpowerControl;
1909 U32 demodRSInitValue;
1912 U8 sectorId; /* Sector index of the 5GNB. Value: 0->2 */
1913 U8 sccIdx; /* Serving Cell index in the given sector. Value: 0->7 */
1914 U8 grpId; /* Ue group Id */
1918 /** @brief This structure contains one PHICH information. In order to locate the
1919 * resources to be used for PHICH, the following information is provided along
1920 * with the feedback:
1926 typedef struct tfuPhichInfo
1928 CmLList lnk; /*!< Link of Linked List */
1929 U8 rbStart; /*!< Starting RB */
1930 U8 nDmrs; /*!< DMRS offset index */
1931 Bool isAck; /*!< TRUE, if ACK, else NACK */
1934 U8 iPhich; /*!< Needed to Calculate PHICH
1935 location. For TDD only */
1937 /* tfu_x_001.main_8. Added changes of TFU_UPGRADE */
1939 U16 txPower; /*!< Offset to the ref. signal power */
1943 /** @brief This structure is sent from Scheduler to PHY. This includes all the
1944 * control information to be sent to the UE.
1945 * -# PDCCH Physical Downlink Control Channel
1946 * -# PHICH Physical HARQ Indicator Channel
1947 * -# PCFICH Physical Control Format Indicator Channel
1949 typedef struct tfuCntrlReqInfo
1951 CmMemListCp memCp; /*!< Memory control point */
1952 CmLteCellId cellId; /*!< Cell ID */
1953 CmLteTimingInfo ulTiming; /*!< Timing information for UL PDCCHs and PHICH */
1954 CmLteTimingInfo dlTiming; /*!< Timing information for DL PDCCHs and CFI */
1955 U8 cfi; /*!< CFI value that goes on the PCFICH control channel */
1956 U32 numDlActvUes; /*!< Active Ues reqrd for rgu dyna delta*/
1957 CmLListCp ulPdcchLst; /*!< List of Uplink PDCCHs (DCI format 0) for the TfuPdcchInfo subframe */
1958 CmLListCp dlPdcchLst; /*!< List of Downlink PDCCHs for the TfuPdcchInfo subframe */
1959 CmLListCp phichLst; /*!< List of PHICHs for the TfuPhichInfo subframe */
1960 #ifdef LTEMAC_SPS /* SPS_NEW_CHGS */
1961 Bool isSPSOcc; /*!< TRUE if this is an SPS Occasion */
1964 CmLListCp ulMpdcchLst; /*!< List of Uplink PDCCHs (DCI format 0) for the TfuPdcchInfo subframe */
1965 CmLListCp dlMpdcchLst; /*!< List of Downlink PDCCHs for the TfuPdcchInfo subframe */
1970 /** @brief This structure carries the control information that is needed
1971 * by the Physical layer to process the data to be sent on PDSCH.
1973 typedef struct tfuPdschDciInfo
1975 TfuDciFormat format; /*!< Selector for the union*/
1978 TfuDciFormat1AllocInfo format1AllocInfo; /*!< Format 1 allocation information.*/
1979 TfuDciFormat1aAllocInfo format1aAllocInfo; /*!< Format 1A allocation information.*/
1980 TfuDciFormat1bAllocInfo format1bAllocInfo; /*!< Format 1B allocation information.*/
1981 TfuDciFormat1cInfo format1cAllocInfo; /*!< Format 1C allocation information.*/
1982 TfuDciFormat1dAllocInfo format1dAllocInfo; /*!< Format 1D allocation information.*/
1983 TfuDciFormat2AllocInfo format2AllocInfo; /*!< Format 2A allocation information.*/
1984 TfuDciFormat2AAllocInfo format2AAllocInfo; /*!< Format 2AA allocation information.*/
1986 TfuDciFormat61AllocInfo format61AllocInfo; /*!< Format 6-1A allocation information.*/
1987 TfuDciFormat62AllocInfo format62AllocInfo; /*!< Formtat 6-2 allocation information */
1990 TfuDciFormatA1Info formatA1Info; /*!< 5GTF: Format A1 information */
1991 TfuDciFormatA2Info formatA2Info; /*!< 5GTF: Format A1 information */
1992 TfuDciFormatB1Info formatB1Info; /*!< 5GTF: Format B1 information */
1993 TfuDciFormatB2Info formatB2Info; /*!< 5GTF: Format B2 information */
1999 * UE Transmission Modes */
2000 typedef enum tfuTxMode
2002 TFU_UE_TM_1 = 1, /** Transmission Mode 1 */
2003 TFU_UE_TM_2, /** Transmission Mode 2 */
2004 TFU_UE_TM_3, /** Transmission Mode 3 */
2005 TFU_UE_TM_4, /** Transmission Mode 4 */
2006 TFU_UE_TM_5, /** Transmission Mode 5 */
2007 TFU_UE_TM_6, /** Transmission Mode 6 */
2008 TFU_UE_TM_7 /** Transmission Mode 7 */
2011 /* tfu_x_001.main_8. Added changes of TFU_UPGRADE */
2013 /** @brief This structure carries the Beam Forming Vector Information
2014 * needed by the Physical layer to process the data to be sent on PDSCH.
2016 typedef struct tfuBfVectorInfo
2018 U8 sbIndex; /** Subband Index */
2019 U8 numPhyAnt; /** Number of Physical Antennas */
2020 U16 bfValue[TFU_MAX_PHY_ANTENNA]; /** Beam forming vector element for
2021 physical antenna #i real 8 bits followed by imaginary 8 bits */
2027 * @brief DatReq Information of a logical channel.
2029 typedef struct tfuDatReqLchInfo
2031 Bool freeBuff; /* !< If TRUE, the buffer is to be freed by MAC */
2032 U32 numPdu; /*!< No of PDUs */
2033 Buffer *mBuf[TFU_MAX_PDU]; /*!<SIncMsgRef in MAC.
2034 Freed by CL as well*/
2037 /** @brief This structure contains a single MAC TB Headers and RLC PDU
2038 * @details It contains preallocated MAC Header,MAC CEs,logical channel info
2039 * RLC PDU and pre-allocated padding
2041 typedef struct tfuDatReqTbInfo
2045 Buffer *macHdr; /*!< Pre allocated. CL shall not free this*/
2046 Buffer *macCes; /*!< Pre-allocated. CL shall not free this */
2048 U32 numLch; /*!< No of logical channels associated to TB*/
2049 TfuDatReqLchInfo lchInfo[TFU_MAX_LC]; /*!< Array of logical channels */
2053 /** @brief This structure contains a single MAC TB.
2054 * @details Data is accompanied with control information pertaining to the
2055 * allocation and what is required by physical layer for its processing.
2057 typedef struct tfuDatReqPduInfo
2059 CmLList lnk; /*!< Link of Linked List */
2060 CmLteRnti rnti; /*!< RNTI of the UE */
2061 TfuPdschDciInfo dciInfo; /*!< Carries the control data
2062 needed for processing PDSCH data */
2063 U8 nmbOfTBs; /*!< Number of TBs, in cases where
2064 one TB is disabled */
2065 #ifdef FIVEGTF_PHY_API
2069 Buffer *mBuf[TFU_MAX_TB]; /*!< MAC PDUs buffer */
2071 TfuDatReqTbInfo tbInfo[TFU_MAX_TB]; /*!< Array of TfuDatReqTbInfo*/
2073 Bool puschRptUsd; /*!< If PUSCH Rpt used for scheduling */
2074 TfuDlCqiPuschInfo puschPmiInfo; /*!< Explicitly inform PHY of the
2075 PMI details for the entire
2077 TfuTxMode transMode; /*!< Transmission Mode of this UE */
2078 TknU32 doa; /*!< DOA indicator for this UE */
2081 /*tfu_x_001.main_8 - ADD - Detailed comments for fields */
2082 U8 numLayers; /*!< Number of Layers. Note: Field
2083 specified at Interface. Value
2084 not set from LTE MAC */
2085 U8 deltaPowOffIdx; /*!< Delta power offset. Note:
2086 Field specified at Interface. Value
2087 not set from LTE MAC */
2088 U8 numBfPrbPerSb; /*!< Number of PRBs that are
2089 treated as one Subband. Note:
2090 Field specified at interface.
2091 Value not set from LTE MAC */
2092 U8 numBfVectors; /*!< Number of Beam Forming
2093 vectors. Note: Field specified at
2094 Interface. Value not set from LTE
2096 TfuBfVectorInfo bfVector[TFU_MAX_DL_SUBBAND]; /*!< BeamForming vector
2097 information. Note: Field
2098 specified at Interface.
2099 Value not set from LTE
2101 U16 txPwrOffset; /*!< Offset to the reference
2102 signal power. Value 0->10000,
2103 representing -6 dB to 4 dB in
2105 /* LTE_ADV_FLAG_REMOVED_START */
2106 U8 pa; /*!< ratio of PDSCH EPRE to cell-specific RS
2107 EPRE among PDSCH REs */
2109 U8 isEnbSFR; /*to tell if SFR is enabled*/
2113 /** @brief This structure contains the Data PDUs.
2114 * @details This structure contains Data meant to be sent on both PBCH and
2115 * PDSCH. Control information necessary for processing of the data is sent along
2118 typedef struct tfuDatReqInfo
2120 CmMemListCp memCp; /*!< Memory control point */
2121 CmLteCellId cellId; /*!< Cell ID */
2122 CmLteTimingInfo timingInfo; /*!< Timing information */
2123 TknBuf bchDat; /*!< BCCH mapped onto BCH Buffer, if
2126 TknBuf emtcBcchDat; /*!< BCCH mapped onto BCH Buffer, if
2129 CmLListCp pdus; /*!< Linked List of TfuDatReqPduInfo PDUs */
2132 /** @brief This structure contains the Data PDU and the RNTI of the UE.
2134 typedef struct tfuDatInfo
2136 CmLList lnk; /*!< Link of Linked List */
2137 CmLteRnti rnti; /*!< RNTI of the UE */
2138 #ifdef FIVEGTF_PHY_API
2139 TfuPdcchInfo *grantInfo; /*!< UL Grant Info */
2141 Buffer *mBuf; /*!< Data PDU */
2144 /** @brief This structure contains the Data PDUs received at Physical layer.
2145 * @details All the PDUs received by Physical layer in one subframe are clubbed
2146 * together into a single data structure and sent to MAC for processing.
2148 typedef struct tfuDatIndInfo
2150 CmMemListCp memCp; /*!< Memory control point */
2151 CmLteCellId cellId; /*!< Cell ID */
2152 CmLteTimingInfo timingInfo; /*!< Timing information */
2153 CmLListCp datIndLst; /*!< List of data PDUs - TfuDatInfo */
2155 U8 sectorId; /* Sector index of the 5GNB. Value: 0->2 */
2156 U8 sccIdx; /* Serving Cell index in the given sector. Value: 0->7 */
2160 /** @brief This structure contains the SR indication for an UE, identified by
2161 * the given RNTI. The structure also contains a PUCCH Delta power, that is
2162 * calculated by the physical layer, and is used by the scheduler for Power
2163 * control of the UE.
2165 typedef struct tfuSrInfo
2167 CmLList lnk; /*!< Link of Linked List */
2168 CmLteRnti rnti; /*!< UEs RNTI */
2171 /** @brief This structure contains all the Scheduling Requests (SR) indications
2172 * received in a subframe.
2174 typedef struct tfuSrIndInfo
2176 CmMemListCp memCp; /*!< Memory control point */
2177 CmLteCellId cellId; /*!< Cell ID */
2178 CmLteTimingInfo timingInfo; /*!< Timing information */
2179 CmLListCp srLst; /*!< List of SR indications - TfuSrInfo */
2182 /* tfu_x_001.main_8. Added changes of TFU_UPGRADE */
2183 //#ifdef TFU_UPGRADE
2185 * This enum contains the possible values for the HARQ feedback.
2195 TFU_HQ_ACK_OR_NACK_OR_DTX,
2196 TFU_HQ_INVALID = 255
2200 /** @brief This structure contains the HARQ feedback for a single UE.
2201 * @details RNTI is present to identify the UE.
2202 * For FDD, a single feedback is present.
2203 * For TDD HARQ multiplexing, a list of HARQ feedbacks is present.
2205 /* tfu_x_001.main_8. Added changes of TFU_UPGRADE */
2206 typedef struct tfuHqInfo
2208 CmLList lnk; /*!< Link of Linked List */
2209 CmLteRnti rnti; /*!< RNTI of the UE */
2210 TfuAckNackMode hqFdbkMode; /*!< Feedback mode */
2211 U8 noOfTbs; /*!< Number of TBs */
2213 U8 M; /*!< Number of feedbacks multiplexed */
2214 #endif /* TFU_TDD */
2215 TfuHqFdbk isAck[TFU_MAX_HARQ_FDBKS]; /*!< Harq feedbacks */
2216 Bool isPusch; /*!< Indicates if this HARQ feedback is
2217 received on PUSCH */
2218 /* Note: isPusch is not a field
2219 * specified by Femto Forum. */
2222 /** @brief This structure contains a list of HARQ feedbacks for a number of UEs.
2223 * @details All the HARQ feedback received in the subframe are clubbed together
2224 * in this data structure and given to the scheduler for processing.
2226 typedef struct tfuHqIndInfo
2228 CmMemListCp memCp; /*!< Memory control point */
2229 CmLteCellId cellId; /*!< Cell ID */
2230 CmLteTimingInfo timingInfo; /*!< Timing information */
2231 CmLListCp hqIndLst; /*!< List of HARQ feedback - TfuHqInfo */
2235 /** @brief This structure conveys the Uplink CQI information for a single sub-band.
2237 typedef struct tfuUlCqiInfo
2239 TfuSubbandCqiInfo subbandCqi; /*!< CQI associated with a sub-band */
2242 /** @brief This structure contains the UL CQI estimated by the physical layer.
2243 * @details The report can be wide-band CQI or sub-band CQI or both.
2245 typedef struct tfuUlCqiRpt
2247 CmLList lnk; /*!< Link of Linked List */
2248 CmLteRnti rnti; /*!< RNTI */
2249 Bool isTxPort0; /*!< TRUE, if TX port is
2250 0, else TX port is 1 */
2251 U8 wideCqi; /*!< Wide-band CQI*/
2252 U8 numSubband; /*!< Number of sub-bands */
2253 TfuUlCqiInfo ulCqiInfoArr[TFU_MAX_UL_SUBBAND]; /*!< UL CQI information array */
2256 /** @brief This structure conveys the Uplink CQI information.
2257 * @details Uplink CQI is calculated by the physical layer, and this
2258 * information is provided to the scheduler.
2259 * This data structure clubs together the UL CQI estimates for all the UEs that
2260 * are scheduled in the subframe for uplink transmission.
2262 typedef struct tfuUlCqiIndInfo
2264 CmMemListCp memCp; /*!< Memory control point */
2265 CmLteCellId cellId; /*!< Cell ID */
2266 CmLteTimingInfo timingInfo; /*!< Timing information */
2267 CmLListCp ulCqiRpt; /*!< List of UL CQI reports - TfuUlCqiRpt */
2270 /** @brief This structure contains the DOA estimated by the physical layer.
2271 * @details DOA for a given UE.
2273 typedef struct tfuDoaRpt
2275 CmLList lnk; /*!< Link of Linked List */
2276 CmLteRnti rnti; /*!< RNTI */
2277 U32 doa; /*!< DOA for rnti */
2280 /** @brief This structure conveys the DOA (Direction Of Arrival) indicator.
2281 * @details DOA is calculated by the physical layer, and this
2282 * information is provided to the scheduler.
2283 * This data structure clubs together the DOAs for all the UEs
2284 * calculated by PHY in this subframe.
2286 typedef struct tfuDoaIndInfo
2288 CmMemListCp memCp; /*!< Memory control point */
2289 CmLteCellId cellId; /*!< Cell ID */
2290 CmLListCp doaRpt; /*!< List of DOA reports - TfuDoaRpt */
2293 /** @brief This structure contains the DL CQI report for a single UE.
2294 * @details The report can either be described on PUCCH or PUSCH, a flag
2295 * conveys this information.
2297 typedef struct tfuDlCqiRpt
2299 CmLList lnk; /*!< Link of Linked List */
2300 CmLteRnti rnti; /*!< RNTI */
2301 Bool isPucchInfo; /*!< Indicates whether PUCCH or PUSCH information */
2302 TfuDlCqiInfo dlCqiInfo; /*!< DL CQI information */
2305 /** @brief This structure contains a list of Downlink CQI reports transmitted by
2307 * @details This structure clubs together DL CQI reports for a number of UEs.
2309 typedef struct tfuDlCqiIndInfo
2311 CmMemListCp memCp; /*!< Memory control point */
2312 CmLteCellId cellId; /*!< Cell ID */
2313 CmLteTimingInfo timingInfo; /*!< Timing information */
2314 CmLListCp dlCqiRptsLst; /*!< List of DL CQI reports TfuDlCqiRpt */
2317 /** @brief This structure contains the CRC indication for a single
2320 typedef struct tfuCrcInfo
2322 CmLList lnk; /*!< Link of Linked List */
2323 CmLteRnti rnti; /*!< RNTI of the UE */
2324 Bool isFailure; /*!< TRUE, if CRC check fails */
2325 TknU8 rv; /*!< Redundancy version provided by PHY */
2326 Bool isDtx; /*! If SNR < 0 , set to TRUE */
2329 /** @brief This structure contains information that is passed as a part of the
2330 * CRC Indication from PHY to MAC.
2331 * @details This structure clubs together all the CRC indications for
2332 * a single subframe and conveys this information to the scheduler.
2334 typedef struct tfuCrcIndInfo
2336 CmMemListCp memCp; /*!< Memory control point */
2337 CmLteCellId cellId; /*!< Cell ID */
2338 CmLteTimingInfo timingInfo; /*!< Timing information */
2339 CmLListCp crcLst; /*!< List of CRC indications - TfuCrcInfo */
2341 U8 sectorId; /* Sector index of the 5GNB. Value: 0->2 */
2342 U8 sccIdx; /* Serving Cell index in the given sector. Value: 0->7 */
2346 /** @brief This structure contains the timing advance information for a single
2349 typedef struct tfuTimingAdvInfo
2351 CmLList lnk; /*!< Link of Linked List */
2352 CmLteRnti rnti; /*!< RNTI */
2353 U8 timingAdv; /*!< Value of the Timing advance */
2357 /** @brief This structure contains information that is passed as part of the Timing
2358 * Advance indication from PHY to MAC.
2359 * @details This structure clubs together timing advances for a number of UEs.
2362 typedef struct tfuTimingAdvIndInfo
2364 CmMemListCp memCp; /*!< Memory control point */
2365 CmLteCellId cellId; /*!< Cell ID */
2366 CmLteTimingInfo timingInfo; /*!< Timing information */
2367 CmLListCp timingAdvLst; /*!< List of timing advances - TfuTimingAdvInfo */
2368 } TfuTimingAdvIndInfo;
2370 /** @brief This structure contains information that is passed as part of the TTI
2371 * indication sent from CL to MAC and SCH.
2373 typedef struct tfuTtiCellInfo
2375 CmLteCellId cellId; /*!< Cell ID */
2376 CmLteTimingInfo timingInfo; /*!< SFN, SF for each cell */
2377 Bool isDummyTti; /*!< Flag to indicate dummy TTI */
2379 U8 schTickDelta; /*!< Dynamic Delta for SCH. Value will vary
2380 according to num of active UEs */
2381 U8 dlBlankSf; /*!< TODO */
2382 U8 ulBlankSf; /*!< TODO */
2386 /** @brief This structure contains information that is passed as part of the TTI
2387 * indication sent from CL to MAC and SCH.
2389 typedef struct tfuTtiIndInfo
2391 U8 numCells; /*!< Num of Cells */
2392 TfuTtiCellInfo cells[CM_LTE_MAX_CELLS]; /*!< Array of Cell timing info */
2396 /** @brief This structure contains the information for a single Random Access Request.
2397 * @details The information present in this structure is for a single preamble.
2398 * Associated with each preamble are fields that the physical layer calculates
2399 * based on the reception of the Random Access Request. These are the following:
2404 typedef struct tfuRaReqInfo
2406 U8 rapId; /*!< ID of the preamble choosen by the UE for Random Acess.*/
2407 U16 ta; /*!< Amount of Timing advance needed by the UE for it
2408 to be uplink synchronized, this is calculated by Physical layer. */
2409 U8 tpc; /*!< Transmit power control command that the physical
2410 layer calculates from the RA request received.*/
2411 Bool cqiPres; /*!< TRUE, if CQI present. */
2412 U8 cqiIdx; /*!< This is the Channel Quality Index of the UL channel estimated by the
2413 physical layer. This aids MAC in the scheduling of this UE. */
2417 /** @brief This structure contains RACH request information for a single RA-RNTI.
2419 typedef struct tfuRachInfo
2421 CmLteRnti raRnti; /*!< RA-RNTI */
2422 U8 numRaReqInfo; /*!< Number of RA requests */
2425 U8 nPRACHConfiguration;
2432 TfuRaReqInfo *raReqInfoArr; /*!< RA requests */
2435 /** @brief This structure contains the list of Random Access Requests received in a single TTI.
2436 * @details Random Access Request is associated with a RA-RNTI, which remains
2437 * common for all the random access requests within a subframe. This structure
2438 * thus carries the RA-RNTI and a list of Random Access Request information.
2439 * This information consists of the following:
2440 * -# preamble-id - this corresponds to the Index of the Preamble choosen by the
2442 * -# Timing Advance - this corresponds to the timing adjustment that the UE
2443 * needs to be uplink synchronized. This value is calculated by physical layer.
2444 * -# tpc - this is the power control command that the physical layer calculates
2445 * from the received RA request. This value is transmitted in the RA Response
2447 * -# CQI - this is the Channel Quality Index of the UL channel estimated by the
2448 * physical layer. This aids MAC in the scheduling of this UE.
2450 typedef struct tfuRaReqIndInfo
2452 CmMemListCp memCp; /*!< Memory control point */
2453 CmLteCellId cellId; /*!< Cell ID */
2454 CmLteTimingInfo timingInfo; /*!< Timing information */
2455 U8 nmbOfRaRnti; /*!< Number of RA-RNTIs present for FDD this
2456 must be 1 for TDD, it can be a max of 6. */
2457 TfuRachInfo *rachInfoArr; /*!< Array of
2458 RACH information per
2462 /** @brief This structure contains PUCCH Delta power for a single UE.
2464 typedef struct tfuPucchDeltaPwr
2466 CmLList lnk; /*!< Link of Linked List */
2467 CmLteRnti rnti; /*!< Memory control */
2468 S8 pucchDeltaPwr; /*!< PUCCH delta power to be sent by PHY. */
2471 /** @brief This structure contains information that is passed as part of the
2472 * PUCCH Delta power indication from PHY to SCH.
2473 * @details This structure clubs together PUCCH Delta power values for a number
2476 typedef struct tfuPucchDeltaPwrIndInfo
2478 CmMemListCp memCp; /*!< Memory control point */
2479 CmLteCellId cellId; /*!< Cell ID */
2480 CmLteTimingInfo timingInfo; /*!< Timing information */
2481 CmLListCp pucchDeltaPwrLst; /*!< List of PUCCH Delta power
2483 } TfuPucchDeltaPwrIndInfo; /* TODO renamed this from Del -> Delta. not changed tfu.c */
2485 /** @brief LAA:This structure contains the cell Id and subframe information for
2486 * which the transmission failed.
2488 typedef struct tfuErrIndInfo
2490 CmLteCellId cellId; /*!< Cell ID */
2491 CmLteTimingInfo timingInfo; /*!< Timing information */
2495 /** @brief :This structure contains the cell Id and UeId to inform CL
2496 * to delete datReq if it exists in CL but UeId got changed or similar other
2497 * scenarios.These scenarios are possible only when L2_OPTMZ flag is enabled.
2499 typedef struct tfuDelDatReqInfo
2501 CmLteCellId cellId; /*!< Cell ID */
2502 CmLteRnti ueId; /*!< CRNTI of the UE */
2506 typedef struct slotIndInfo
2512 typedef struct rachPreamInfo
2518 typedef struct rachPduInfo
2525 RachPreamInfo preamInfo[MAX_PREAM_PER_SLOT];
2528 typedef struct rachInd
2530 SlotIndInfo timingInfo;
2532 RachPduInfo rachPdu[MAX_RACH_PDU_PER_SLOT];
2535 typedef struct crcInfo
2540 uint8_t tbCrcStatus;
2542 uint8_t cbCrcStatus[MAX_CB_PER_TTI_IN_BYTES];
2544 uint16_t timingAdvance;
2548 typedef struct crcInd
2550 SlotIndInfo timingInfo;
2552 CrcInfo crcInfo[MAX_CRCS_PER_SLOT];
2562 uint16_t timingAdvance;
2569 SlotIndInfo timingInfo;
2571 RxDataIndPdu pdus[MAX_ULSCH_PDUS_PER_TTI];
2575 typedef S16 (*TfuBndReq) ARGS((
2579 typedef S16 (*TfuBndCfm) ARGS((
2583 typedef S16 (*TfuUbndReq) ARGS((
2588 typedef S16 (*TfuSchBndReq) ARGS((
2592 typedef S16 (*TfuSchBndCfm) ARGS((
2596 typedef S16 (*TfuSchUbndReq) ARGS((
2601 typedef S16 (*TfuRaReqInd) ARGS((
2604 TfuRaReqIndInfo *raReqInd));
2606 typedef S16 (*TfuRecpReq) ARGS((
2609 TfuRecpReqInfo *recpReq));
2611 typedef S16 (*TfuUlCqiInd) ARGS((
2614 TfuUlCqiIndInfo * ulCqiInd));
2616 typedef S16 (*TfuDoaInd) ARGS((
2619 TfuDoaIndInfo * doaInd));
2620 typedef S16 (*TfuHqInd) ARGS((
2623 TfuHqIndInfo * hqInd));
2625 typedef S16 (*TfuSrInd) ARGS((
2628 TfuSrIndInfo * srInd));
2630 typedef S16 (*TfuDlCqiInd) ARGS((
2633 TfuDlCqiIndInfo * dlCqiInd));
2634 /* tfu_x_001.main_8. Added changes of TFU_UPGRADE */
2636 typedef S16 (*TfuRawCqiInd) ARGS((
2639 TfuRawCqiIndInfo *rawCqiInd));
2641 typedef S16 (*TfuSrsInd) ARGS((
2644 TfuSrsIndInfo *srsInd));
2645 #endif /* TFU_UPGRADE */
2647 typedef S16 (*TfuDatInd) ARGS((
2650 TfuDatIndInfo * datInd));
2652 typedef S16 (*TfuCrcInd) ARGS((
2655 TfuCrcIndInfo * crcInd));
2657 typedef S16 (*TfuTimingAdvInd) ARGS((
2660 TfuTimingAdvIndInfo * timingAdvInd));
2662 typedef S16 (*TfuDatReq) ARGS((
2665 TfuDatReqInfo * datReq));
2668 typedef S16 (*TfuDelDatReq) ARGS((
2671 TfuDelDatReqInfo * datReq));
2674 typedef S16 (*TfuCntrlReq) ARGS((
2677 TfuCntrlReqInfo *cntrlReq));
2679 typedef S16 (*TfuTtiCell) ARGS((
2682 TfuTtiCellInfo * ttiInd));
2684 typedef S16 (*TfuTtiInd) ARGS((
2686 SlotIndInfo * slotInd));
2688 #if defined(TENB_T2K3K_SPECIFIC_CHANGES) && defined(LTE_TDD)
2689 typedef S16 (*TfuNonRtInd) ARGS((
2694 typedef S16 (*TfuSchTtiInd) ARGS((
2697 SlotIndInfo* slotInd));
2699 typedef S16 (*TfuPucchDeltaPwrInd) ARGS((
2702 TfuPucchDeltaPwrIndInfo * pucchDeltaPwr));
2704 /*LAA: Error Indication on LAA SCell*/
2705 typedef S16 (*TfuErrInd) ARGS((
2708 TfuErrIndInfo * errInd));
2710 /** @brief This API is used to send a Bind Request from MAC to PHY.
2711 * @param pst Pointer to the post structure.
2712 * @param suId SAP ID of the service user.
2713 * @param spId SAP ID of the service provider.
2714 * @return ROK/RFAILED
2716 EXTERN S16 TfUiTfuBndReq ARGS((Pst *pst, SuId suId, SpId spId));
2718 /** @brief This API is used to send a Bind Request from Scheduler to PHY.
2719 * @param pst Pointer to the post structure.
2720 * @param suId SAP ID of the service user.
2721 * @param spId SAP ID of the service provider.
2722 * @return ROK/RFAILED
2724 EXTERN S16 TfUiTfuSchBndReq ARGS((Pst *pst, SuId suId, SpId spId));
2727 /** @brief This API is used to receive a Bind Confirm from PHY to MAC.
2728 * @param pst Pointer to the post structure.
2729 * @param suId SAP ID of the service user.
2730 * @param status Status of the bind request.
2731 * @return ROK/RFAILED
2733 EXTERN S16 TfUiTfuBndCfm ARGS((Pst *pst, SuId suId, U8 status));
2735 /** @brief This API is used to receive a Bind Confirm from PHY to Scheduler.
2736 * @param pst Pointer to the post structure.
2737 * @param suId SAP ID of the service user.
2738 * @param status Status of the bind request.
2739 * @return ROK/RFAILED
2741 EXTERN S16 TfUiTfuSchBndCfm ARGS((Pst *pst, SuId suId, U8 status));
2744 /** @brief This API is used to send an Unbind Request from MAC to PHY.
2745 * @param pst Pointer to the post structure.
2746 * @param spId SAP ID of the service provider.
2747 * @param reason Reason for Unbind request.
2748 * @return ROK/RFAILED
2750 EXTERN S16 TfUiTfuUbndReq ARGS((Pst *pst, SpId spId, Reason reason));
2752 /** @brief This API is used to send an Unbind Request from Scheduler to PHY.
2753 * @param pst Pointer to the post structure.
2754 * @param spId SAP ID of the service provider.
2755 * @param reason Reason for Unbind request.
2756 * @return ROK/RFAILED
2758 EXTERN S16 TfUiTfuSchUbndReq ARGS((Pst *pst, SpId spId, Reason reason));
2761 /** @brief This API is used to indication Random Access Request reception from
2763 * @details This primitive is used by physical layer to indicate the reception
2764 * of a Random Access Request from a set of UEs. The information passed consists
2765 * of the RA-RNTI and the list of preambles received.
2766 * @param pst Pointer to the post structure.
2767 * @param suId SAP ID of the service user.
2768 * @param raReqInd Pointer to the TfuRaReqIndInfo structure.
2769 * @return ROK/RFAILED
2771 EXTERN S16 TfUiTfuRaReqInd ARGS((Pst *pst, SuId suId, TfuRaReqIndInfo
2775 /** @brief This primitive is sent from Scheduler to PHY.
2776 * @details This primitive provides PHY with all the information required by
2777 * PHY to decode transmissions from the UE on either PUCCH or PUSCH.
2778 * -# On PUCCH, UE can transmit the following:
2784 * -# On PUSCH, UE can transmit the following:
2787 * -# Data + HARQ Feedback
2788 * This primitive carries all the information for the expected subframe for all
2789 * the UEs that are scheduled to transmit.
2790 * @param pst Pointer to the post structure.
2791 * @param spId SAP ID of the service provider.
2792 * @param recpReq Pointer to the TfuRecpReqInfo structure.
2793 * @return ROK/RFAILED
2795 EXTERN S16 TfUiTfuRecpReq ARGS((Pst *pst, SpId spId, TfuRecpReqInfo *recpReq));
2797 /** @brief This primitive is sent from Scheduler to PHY. It provides PHY with
2798 * all the control information.
2799 * @details This primitive carries the information sent on the following
2807 * @param cntrlReq pointer to TfuCntrlReqInfo
2808 * @return ROK/RFAILED
2810 EXTERN S16 TfUiTfuCntrlReq ARGS((Pst *pst, SpId spId, TfuCntrlReqInfo *cntrlReq));
2812 /** @brief This primitive carries the Data PDUs from MAC to PHY for transmission.
2813 * @details The data being sent in this primitive is meant to be transmitted on
2814 * the downlink channel PDSCH and PBCH (if present). To facilitate physical
2815 * layer processing, requisite control information is also sent along with the
2817 * @sa TfUiTfuCntrlReq
2820 * @param datReq pointer to TfuDatReqInfo
2823 EXTERN S16 TfUiTfuDatReq ARGS((Pst *pst, SpId spId, TfuDatReqInfo *datReq));
2826 /** @brief This primitive carries the cellId and UeId for which datReq need to
2828 * @details This primitive is used to delete datReq PDUs present in CL for
2829 * which got changed or similar other scenarios. These scenarios are possible
2830 * only when L2_OPTMZ flag is enabled.
2831 * @sa TfUiTfuDelDatReq
2834 * @param datReq pointer to TfuDelDatReqInfo
2838 EXTERN S16 TfUiTfuDelDatReq ARGS((Pst *pst, SpId spId, TfuDelDatReqInfo *datReq));
2841 /** @brief This Primitive carries the Data PDUs from PHY to MAC.
2842 * @details The Uplink Data, that is, the data transmitted by the UEs received by the
2843 * physical layer at the eNodeB in the subframe (indicated by the timingInfo),
2844 * is relayed to MAC using this primitive.
2847 * @param datInd pointer to TfuDatIndInfo
2850 EXTERN S16 TfUiTfuDatInd ARGS((Pst *pst, SuId suId, TfuDatIndInfo *datInd));
2852 /** @brief This primitive carries the HARQ Feedback from PHY to Scheduler.
2853 * @details HARQ feedback is sent by the UE to the eNodeB, an ACK is sent if UE
2854 * can successfully recieve the data transmitted by the eNodeB, else a NACK is
2855 * sent. This feedback is utilized by MAC for further scheduling, for instance
2856 * it can schedule an adaptive retransmission of the same data.
2859 * @param hqInd pointer to TfuHqIndInfo
2862 EXTERN S16 TfUiTfuHqInd ARGS((Pst *pst, SuId suId, TfuHqIndInfo *hqInd));
2864 /** @brief This primitive carries the SR Indication from PHY to Scheduler.
2865 * @details Scheduling Request (SR) is sent by the UE to the eNodeB to request
2866 * for Uplink (UL) grant. This primitive carries a list of SRs for a number of
2867 * UEs received in the indicated subframe.
2870 * @param srInd pointer to TfuSrIndInfo
2873 EXTERN S16 TfUiTfuSrInd ARGS((Pst *pst, SuId suId, TfuSrIndInfo *srInd));
2875 /** @brief This API is used to indicate CQI reporting from PHY to Scheduler.
2876 * @details This primitive carries an estimate of the Uplink Channel Quality
2877 * Index (CQI) for a list of UEs. This is an estimate of the uplink channel
2878 * quality, that is, the transmission from UE as calculated at the Physical layer at
2880 * It carries a list of sub-band CQIs for each UE.
2881 * @param pst Pointer to the post structure.
2882 * @param suId SAP ID of the service user.
2883 * @param ulCqiInd Pointer to the TfuUlCqiIndInfo structure.
2884 * @return ROK/RFAILED
2886 EXTERN S16 TfUiTfuUlCqiInd ARGS((Pst *pst, SuId suId,
2887 TfuUlCqiIndInfo *ulCqiInd));
2889 /** @brief This API is used by the Physical layer to indicate if the CRC Check
2890 * on the PUSCH Data is successful or not.
2891 * @details This primitive carries CRC indication for a list of UEs. This
2892 * is utilized in the scenario where MAC requested the reception of Uplink data
2893 * for a particular UE. On reception of the PUSCH data, the CRC check on it
2894 * failed. This CRC failure is indicated to MAC, which utillizes this
2895 * information for further scheduling.
2896 * Physical layer indicates failure or success for each PUSCH transmission.
2897 * @param pst Pointer to the post structure.
2898 * @param suId SAP ID of the service user.
2899 * @param crcIndInfo Pointer to the TfuCrcIndInfo.
2900 * @return ROK/RFAILED
2902 EXTERN S16 TfUiTfuCrcInd ARGS((Pst *pst, SuId suId,
2903 TfuCrcIndInfo *crcIndInfo));
2905 /** @brief This API is used to indicate a Timing Advance from PHY to Scheduler.
2906 * @details This primitive carries timing advance information for a number of
2907 * UEs that may need timing advance. Timing advance information is an estimate
2908 * of the timing adjustment that an UE needs to apply in order to be
2909 * synchronized in Uplink. This estimate is to be calculated by physical layer.
2910 * @param pst Pointer to the post structure.
2911 * @param suId SAP ID of the service user.
2912 * @param timingAdvInd Pointer to the TfuTimingAdvIndInfo structure.
2913 * @return ROK/RFAILED
2915 EXTERN S16 TfUiTfuTimingAdvInd ARGS((Pst *pst, SuId suId,
2916 TfuTimingAdvIndInfo *timingAdvInd));
2919 /** @brief This API is the TTI indication from CL to MAC and SCH
2920 * @details This primitive provides the timing information (SFN and subframe)
2921 * which is currently running on the physical layer.
2922 * @param pst Pointer to the post structure.
2923 * @param suId SAP ID of the service user.
2924 * @param ttiInd Pointer to the TfuTtiCellInfo structure.
2925 * @return ROK/RFAILED
2927 EXTERN S16 TfUiTfuTtiCell ARGS((Pst *pst, SuId suId,
2928 TfuTtiCellInfo *ttiInd));
2931 /** @brief This API is the TTI indication from CL to MAC and SCH
2932 * @details This primitive provides the timing information (SFN and subframe)
2933 * which is currently running on the physical layer.
2934 * @param pst Pointer to the post structure.
2935 * @param suId SAP ID of the service user.
2936 * @param ttiInd Pointer to the TfuTtiIndInfo structure.
2937 * @return ROK/RFAILED
2939 EXTERN S16 TfUiTfuTtiInd ARGS((Pst *pst, SuId suId,
2940 TfuTtiIndInfo *ttiInd));
2942 /** @brief This API is the TTI indication from PHY to Scheduler.
2943 * @details This primitive provides the timing information (SFN and subframe)
2944 * which is currently running on the physical layer.
2945 * @param pst Pointer to the post structure.
2946 * @param suId SAP ID of the service user.
2947 * @param ttiInd Pointer to the TfuTtiIndInfo structure.
2948 * @return ROK/RFAILED
2950 EXTERN S16 TfUiTfuSchTtiInd ARGS((Pst *pst, SuId suId,
2951 TfuTtiIndInfo *ttiInd));
2954 /** @brief This API is used to indicate the reception of CQI report from PHY to
2955 * Scheduler and also carries the Rank Index information.
2956 * @details This primitive carries the CQI (Channel Quality Index) report
2957 * for the downlink channel, sent by the UE. It is also used to report RI and
2959 * @param pst Pointer to the post structure.
2960 * @param suId SAP ID of the service user.
2961 * @param dlCqiInd Pointer to the TfuDlCqiIndInfo structure.
2962 * @return ROK/RFAILED
2964 EXTERN S16 TfUiTfuDlCqiInd ARGS((Pst *pst, SuId suId,
2965 TfuDlCqiIndInfo *dlCqiInd));
2966 /** @brief This API is used to indicate the calculated DOA value report from PHY to
2968 * @details This primitive carries the DOA(Direction of arrival) report
2969 * calculated at PHYSICAL LAYER, for an UE.
2970 * @param pst Pointer to the post structure.
2971 * @param suId SAP ID of the service user.
2972 * @param doaInd Pointer to the TfuDoaIndInfo structure.
2973 * @return ROK/RFAILED
2975 EXTERN S16 TfUiTfuDoaInd ARGS((Pst *pst, SuId suId,
2976 TfuDoaIndInfo *doaInd));
2979 /** @brief This primitive is used to convey PUCCH Delta Power calculated by the
2981 * @details This primitive is used to convey PUCCH Delta Power calculated by the
2982 * Physical layer. This information is utilized by the scheduler to perform
2983 * power control for the UEs.
2984 * @param pst Pointer to the post structure.
2985 * @param suId SAP ID of the service user.
2986 * @param pucchDeltaPwr Pointer to the TfuPucchDeltaPwrIndInfo structure.
2987 * @return ROK/RFAILED
2989 EXTERN S16 TfUiTfuPucchDeltaPwrInd ARGS((Pst *pst, SuId suId,
2990 TfuPucchDeltaPwrIndInfo *pucchDeltaPwr));
2992 /** @brief LAA:This primitive carries the Error Indication from PHY to Scheduler.
2993 * This primitive is invoked when the transmission on the unlicensed Scell
2997 * @param errInd pointer to TfuErrIndInfo
3001 EXTERN S16 TfUiTfuErrInd ARGS((Pst *pst, SuId suId,
3002 TfuErrIndInfo *errInd));
3003 /* tfu_x_001.main_8. Added changes of TFU_UPGRADE */
3006 /** @brief This primitive is used to convey the information derived by the
3007 * physical layer from the SRS transmission from the UE.
3008 * @details This primitive carries information derived from the SRS transmission
3011 * @param pst Pointer to the post structure.
3012 * @param suId SAP ID of the service user.
3013 * @param srsInd Pointer to the TfuSrIndInfo structure.
3014 * @return ROK/RFAILED
3016 EXTERN S16 TfUiTfuSrsInd ARGS((Pst *pst, SuId suId,
3017 TfuSrsIndInfo *srsInd));
3020 /** @brief This primitive is used to convey the Raw CQI information
3021 * transmitted by the UE.
3022 * @details Raw CQI report is the actual bits transmitted by the UE when
3023 * reporting CQI/PMI/RI. The interpretation of these bits to CQI/sub-band CQI
3024 * and so on, are done by MAC.
3026 * @param pst Pointer to the post structure.
3027 * @param suId SAP ID of the service user.
3028 * @param cqiInd Pointer to the TfuRawCqiIndInfo structure.
3029 * @return ROK/RFAILED
3031 EXTERN S16 TfUiTfuRawCqiInd ARGS((Pst *pst, SuId suId,
3032 TfuRawCqiIndInfo *cqiInd));
3034 #endif /* TFU_UPGRADE */
3037 EXTERN S16 RgLiTfuBndReq ARGS((
3042 EXTERN S16 RgLiTfuBndCfm ARGS((
3047 EXTERN S16 RgLiTfuUbndReq ARGS((
3053 EXTERN S16 RgLiTfuSchBndReq ARGS((
3058 EXTERN S16 RgLiTfuSchBndCfm ARGS((
3063 EXTERN S16 RgLiTfuSchUbndReq ARGS((
3069 EXTERN S16 RgLiTfuRaReqInd ARGS((
3072 TfuRaReqIndInfo * raReq
3076 EXTERN S16 RgLiTfuRecpReq ARGS((
3079 TfuRecpReqInfo * recpReq
3082 EXTERN S16 RgLiTfuUlCqiInd ARGS((
3085 TfuUlCqiIndInfo * ulCqiInd
3088 EXTERN S16 RgLiTfuDoaInd ARGS((
3091 TfuDoaIndInfo * doaInd
3094 EXTERN S16 RgLiTfuHqInd ARGS((
3097 TfuHqIndInfo * hqInd
3100 EXTERN S16 RgLiTfuSrInd ARGS((
3103 TfuSrIndInfo * srInd
3106 EXTERN S16 RgLiTfuDlCqiInd ARGS((
3109 TfuDlCqiIndInfo * dlCqiInd
3112 /* tfu_x_001.main_8. Added changes of TFU_UPGRADE */
3114 EXTERN S16 RgLiTfuRawCqiInd ARGS((
3117 TfuRawCqiIndInfo *rawCqiInd
3119 EXTERN S16 RgLiTfuSrsInd ARGS((
3122 TfuSrsIndInfo *srsIndInfo
3125 EXTERN S16 RgLiTfuDatInd ARGS((
3128 TfuDatIndInfo * datInd
3131 EXTERN S16 fapiMacSlotInd
3134 SlotIndInfo *slotInd
3137 EXTERN S16 RgLiTfuCrcInd ARGS((
3140 TfuCrcIndInfo * crcInd
3143 EXTERN S16 RgLiTfuTimingAdvInd ARGS((
3146 TfuTimingAdvIndInfo * timingAdvInd
3149 EXTERN S16 RgLiTfuDatReq ARGS((
3152 TfuDatReqInfo * datReq
3155 EXTERN S16 RgLiTfuCntrlReq ARGS((
3158 TfuCntrlReqInfo * cntrlReq
3161 EXTERN S16 RgLiTfuTtiInd ARGS((
3164 TfuTtiIndInfo * ttiInd
3167 EXTERN int macSchSlotInd ARGS((
3169 SlotIndInfo * slotInd
3172 #if defined(TENB_T2K3K_SPECIFIC_CHANGES) && defined(LTE_TDD)
3173 EXTERN S16 RgLiTfuNonRtInd ARGS((
3179 EXTERN S16 RgLiTfuPucchDeltaPwrInd ARGS((
3182 TfuPucchDeltaPwrIndInfo *pucchDeltaPwr
3186 /** @brief LAA:This primitive carries the Error Indication from PHY to Scheduler.
3187 * This primitive is invoked when the transmission on the unlicensed Scell
3191 * @param errInd pointer to TfuErrIndInfo
3194 EXTERN S16 RgLiTfuErrInd ARGS((Pst *pst, SuId suId, TfuErrIndInfo *errInd));
3197 /** @brief This primitive carries the cellId and UeId for which datReq need to
3199 * @details This primitive is used to delete datReq PDUs present in CL for
3200 * which got changed or similar other scenarios. These scenarios are possible
3201 * only when L2_OPTMZ flag is enabled.
3202 * @sa TfUiTfuDelDatReq
3205 * @param datReq pointer to TfuDelDatReqInfo
3208 EXTERN S16 RgLiTfuDelDatReq ARGS((Pst *pst, SuId suId, TfuDelDatReqInfo *delDatReq));
3211 #if (defined(LCTFU))
3212 /** @brief This API is used to send a Bind Request from MAC to PHY.
3215 EXTERN S16 cmPkTfuRbAssignA1Val324 ARGS((
3216 TfuRbAssignA1Val324 *param,
3219 EXTERN S16 cmPkTfuRbAssignB1Val324 ARGS((
3220 TfuRbAssignB1Val324 *param,
3223 EXTERN S16 cmPkTfuRbAssignVal326 ARGS((
3224 TfuRbAssignVal326 *param,
3227 EXTERN S16 cmUnpkTfuRbAssignA1Val324 ARGS((
3228 TfuRbAssignA1Val324 *param,
3231 EXTERN S16 cmUnpkTfuRbAssignB1Val324 ARGS((
3232 TfuRbAssignB1Val324 *param,
3235 EXTERN S16 cmUnpkTfuRbAssignVal326 ARGS((
3236 TfuRbAssignVal326 *param,
3239 EXTERN S16 cmPkTfuDciFormatA1A2Info ARGS((
3240 TfuDciFormatA1Info *param,
3243 EXTERN S16 cmPkTfuDciFormatB1B2Info ARGS((
3244 TfuDciFormatB1Info *param,
3247 EXTERN S16 cmUnpkTfuDciFormatA1A2Info ARGS((
3248 TfuDciFormatA1Info *param,
3251 EXTERN S16 cmUnpkTfuDciFormatB1B2Info ARGS((
3252 TfuDciFormatB1Info *param,
3255 #endif /* TFU_5GTF */
3257 EXTERN S16 cmPkTfuBndReq ARGS((
3262 /** @brief This API is used to send a Bind Request from MAC to PHY.
3264 EXTERN S16 cmUnpkTfuBndReq ARGS((
3269 /** @brief This API is used to receive a Bind Confirm from PHY to MAC.
3271 EXTERN S16 cmPkTfuBndCfm ARGS((
3276 /** @brief This API is used to receive a Bind Confirm from PHY to MAC.
3278 EXTERN S16 cmUnpkTfuBndCfm ARGS((
3283 /** @brief This API is used to send an Unbind Request from MAC to PHY.
3285 EXTERN S16 cmPkTfuUbndReq ARGS((
3290 /** @brief This API is used to send an Unbind Request from MAC to PHY.
3292 EXTERN S16 cmUnpkTfuUbndReq ARGS((
3297 /** @brief This API is used to send a Bind Request from SCH to PHY.
3299 EXTERN S16 cmPkTfuSchBndReq ARGS((
3304 /** @brief This API is used to send a Bind Request from SCH to PHY.
3306 EXTERN S16 cmUnpkTfuSchBndReq ARGS((
3311 /** @brief This API is used to receive a Bind Confirm from PHY to SCH.
3313 EXTERN S16 cmPkTfuSchBndCfm ARGS((
3318 /** @brief This API is used to receive a Bind Confirm from PHY to SCH.
3320 EXTERN S16 cmUnpkTfuSchBndCfm ARGS((
3325 /** @brief This API is used to send an Unbind Request from SCH to PHY.
3327 EXTERN S16 cmPkTfuSchUbndReq ARGS((
3332 /** @brief This API is used to send an Unbind Request from SCH to PHY.
3334 EXTERN S16 cmUnpkTfuSchUbndReq ARGS((
3339 /** @brief This API is used to indication Random Access Request reception from
3342 EXTERN S16 cmPkTfuRaReqInd ARGS((
3345 TfuRaReqIndInfo * raReqInd
3347 /** @brief This API is used to indication Random Access Request reception from
3350 EXTERN S16 cmUnpkTfuRaReqInd ARGS((
3355 /** @brief This API is used to indication Random Access Request reception from
3358 EXTERN S16 cmPkTfuRecpReq ARGS((
3361 TfuRecpReqInfo * recpReq
3363 /** @brief This API is used to indication Random Access Request reception from
3366 EXTERN S16 cmUnpkTfuRecpReq ARGS((
3371 /** @brief This API is used to indicate CQI reporting from PHY to MAC.
3373 EXTERN S16 cmPkTfuUlCqiInd ARGS((
3376 TfuUlCqiIndInfo * ulCqiInd
3378 /** @brief This API is used to indicate CQI reporting from PHY to MAC.
3380 EXTERN S16 cmUnpkTfuUlCqiInd ARGS((
3386 EXTERN S16 cmPkTfuHqInd ARGS((
3389 TfuHqIndInfo * hqInd
3392 EXTERN S16 cmUnpkTfuHqInd ARGS((
3397 /** @brief This API is used to indicate a SR reception from PHY to MAC.
3399 EXTERN S16 cmPkTfuSrInd ARGS((
3402 TfuSrIndInfo * srInd
3404 /** @brief This API is used to indicate a SR reception from PHY to MAC.
3406 EXTERN S16 cmUnpkTfuSrInd ARGS((
3411 /** @brief This API is used to indicate the reception of CQI report from PHY to
3414 EXTERN S16 cmPkTfuDlCqiInd ARGS((
3417 TfuDlCqiIndInfo * dlCqiInd
3419 /** @brief This API is used to indicate the reception of CQI report from PHY to
3422 EXTERN S16 cmUnpkTfuDlCqiInd ARGS((
3428 /** @brief This API is used to indicate the Calculated DOA value report from PHY to
3430 EXTERN S16 cmUnpkTfuDoaInd ARGS((
3435 /** @brief This API is used to indicate the calculated DOA Value report from PHY to
3438 EXTERN S16 cmPkTfuDoaInd ARGS((
3441 TfuDoaIndInfo * doaInd
3444 /** @brief This API is used to indicate Data Reception from PHY to MAC.
3446 EXTERN S16 cmPkTfuDatInd ARGS((
3449 TfuDatIndInfo * datInd
3451 /** @brief This API is used to indicate Data Reception from PHY to MAC.
3453 EXTERN S16 cmUnpkTfuDatInd ARGS((
3458 /** @brief This API is used to indicate Decode failure from PHY to MAC.
3460 EXTERN S16 cmPkTfuCrcInd ARGS((
3463 TfuCrcIndInfo * crcInd
3465 /** @brief This API is used to indicate Decode failure from PHY to MAC.
3467 EXTERN S16 cmUnpkTfuCrcInd ARGS((
3473 EXTERN S16 cmPkTfuCntrlReq ARGS((
3476 TfuCntrlReqInfo * cntrlReq
3479 EXTERN S16 cmUnpkTfuCntrlReq ARGS((
3484 /** @brief This API is used to indicate a Timing Advance from PHY to MAC.
3486 EXTERN S16 cmPkTfuTimingAdvInd ARGS((
3489 TfuTimingAdvIndInfo * timingAdvInd
3491 /** @brief This API is used to indicate a Timing Advance from PHY to MAC.
3493 EXTERN S16 cmUnpkTfuTimingAdvInd ARGS((
3494 TfuTimingAdvInd func,
3498 /** @brief This API is used to send Data Request from MAC to PHY.
3500 EXTERN S16 cmPkTfuDatReq ARGS((
3503 TfuDatReqInfo * datReq
3505 /** @brief This API is used to send Data Request from MAC to PHY.
3507 EXTERN S16 cmUnpkTfuDatReq ARGS((
3513 /** @brief This API is the TTI indication from CL to MAC and SCH.
3515 EXTERN S16 cmPkTfuTtiCell ARGS((
3518 TfuTtiCellInfo * ttiInd
3520 /** @brief This API is the TTI indication from CL to MAC and SCH.
3522 EXTERN S16 cmUnpkTfuTtiCell ARGS((
3529 /** @brief This API is the TTI indication from PHY to MAC.
3531 EXTERN S16 cmPkTfuTtiInd ARGS((
3534 TfuTtiIndInfo * ttiInd
3536 /** @brief This API is the TTI indication from PHY to MAC.
3538 EXTERN S16 cmUnpackSlotInd ARGS((
3544 typedef int (*MacSchSlotIndFunc) ARGS((
3545 Pst *pst, /* Post Structure */
3546 SlotIndInfo *slotInd /* slot ind Info */
3549 #if defined(TENB_T2K3K_SPECIFIC_CHANGES) && defined(LTE_TDD)
3550 /** @brief This API is the non-rt indication from PHY to MAC.
3552 EXTERN S16 cmPkTfuNonRtInd ARGS((
3557 /** @brief This API is the non-rt indication from PHY to MAC.
3559 EXTERN S16 cmUnpkTfuNonRtInd ARGS((
3566 /** @brief This API is the TTI indication from PHY to SCH.
3568 EXTERN S16 cmPkTfuSchTtiInd ARGS((
3571 TfuTtiIndInfo * ttiInd
3573 /** @brief This API is the TTI indication from PHY to SCH.
3575 EXTERN S16 cmUnpackMacSchSlotInd ARGS((
3576 MacSchSlotIndFunc func,
3581 /** @brief This API is used to convey the PUCCH delta power from PHY to SCH.
3583 EXTERN S16 cmPkTfuPucchDeltaPwrInd ARGS((
3586 TfuPucchDeltaPwrIndInfo * pucchDeltaPwr
3588 /** @brief This API is used to indicate Decode failure from PHY to MAC.
3590 EXTERN S16 cmUnpkTfuPucchDeltaPwrInd ARGS((
3591 TfuPucchDeltaPwrInd func,
3598 /** @brief This API is used to send Group Power Control Request from MAC to PHY.
3600 EXTERN S16 cmPkTfuGrpPwrCntrlReq ARGS((
3603 TfuGrpPwrCntrlReqInfo * grpPwrCntrlReq
3605 /** @brief This API is used to send Group Power Control Request from MAC to PHY.
3607 EXTERN S16 cmUnpkTfuGrpPwrCntrlReq ARGS((
3608 TfuGrpPwrCntrlReq func,
3613 EXTERN S16 cmPkTfuDciFormat0Info ARGS((
3614 TfuDciFormat0Info *param,
3617 EXTERN S16 cmUnpkTfuDciFormat0Info ARGS((
3618 TfuDciFormat0Info *param,
3621 EXTERN S16 cmPkTfuAllocMapOrRiv ARGS((
3622 TfuAllocMapOrRiv *param,
3625 EXTERN S16 cmUnpkTfuAllocMapOrRiv ARGS((
3626 TfuAllocMapOrRiv *param,
3629 EXTERN S16 cmPkTfuDciFormat1AllocInfo ARGS((
3630 TfuDciFormat1AllocInfo *param,
3633 EXTERN S16 cmUnpkTfuDciFormat1AllocInfo ARGS((
3634 TfuDciFormat1AllocInfo *param,
3637 EXTERN S16 cmPkTfuDciFormat1Info ARGS((
3638 TfuDciFormat1Info *param,
3641 EXTERN S16 cmUnpkTfuDciFormat1Info ARGS((
3642 TfuDciFormat1Info *param,
3646 EXTERN S16 cmPkTfuDciFormatTbInfo ARGS((
3647 TfuDciFormatTbInfo *param,
3650 EXTERN S16 cmUnpkTfuDciFormatTbInfo ARGS((
3651 TfuDciFormatTbInfo *param,
3655 EXTERN S16 cmPkTfuDciFormat2AAllocInfo ARGS((
3656 TfuDciFormat2AAllocInfo *param,
3659 EXTERN S16 cmUnpkTfuDciFormat2AAllocInfo ARGS((
3660 TfuDciFormat2AAllocInfo *param,
3663 EXTERN S16 cmPkTfuDciFormat2AInfo ARGS((
3664 TfuDciFormat2AInfo *param,
3667 EXTERN S16 cmUnpkTfuDciFormat2AInfo ARGS((
3668 TfuDciFormat2AInfo *param,
3671 EXTERN S16 cmPkTfuDciFormat2AllocInfo ARGS((
3672 TfuDciFormat2AllocInfo *param,
3675 EXTERN S16 cmUnpkTfuDciFormat2AllocInfo ARGS((
3676 TfuDciFormat2AllocInfo *param,
3679 EXTERN S16 cmPkTfuDciFormat2Info ARGS((
3680 TfuDciFormat2Info *param,
3683 EXTERN S16 cmUnpkTfuDciFormat2Info ARGS((
3684 TfuDciFormat2Info *param,
3687 EXTERN S16 cmPkTfuDciFormat3Info ARGS((
3688 TfuDciFormat3Info *param,
3691 EXTERN S16 cmUnpkTfuDciFormat3Info ARGS((
3692 TfuDciFormat3Info *param,
3695 EXTERN S16 cmPkTfuDciFormat3AInfo ARGS((
3696 TfuDciFormat3AInfo *param,
3699 EXTERN S16 cmUnpkTfuDciFormat3AInfo ARGS((
3700 TfuDciFormat3AInfo *param,
3703 EXTERN S16 cmPkTfuDciFormat1dAllocInfo ARGS((
3704 TfuDciFormat1dAllocInfo *param,
3707 EXTERN S16 cmUnpkTfuDciFormat1dAllocInfo ARGS((
3708 TfuDciFormat1dAllocInfo *param,
3711 EXTERN S16 cmPkTfuDciFormat1dInfo ARGS((
3712 TfuDciFormat1dInfo *param,
3715 EXTERN S16 cmUnpkTfuDciFormat1dInfo ARGS((
3716 TfuDciFormat1dInfo *param,
3719 EXTERN S16 cmPkTfuDciFormat1cInfo ARGS((
3720 TfuDciFormat1cInfo *param,
3723 EXTERN S16 cmUnpkTfuDciFormat1cInfo ARGS((
3724 TfuDciFormat1cInfo *param,
3727 EXTERN S16 cmPkTfuDciFormat1bAllocInfo ARGS((
3728 TfuDciFormat1bAllocInfo *param,
3731 EXTERN S16 cmUnpkTfuDciFormat1bAllocInfo ARGS((
3732 TfuDciFormat1bAllocInfo *param,
3735 EXTERN S16 cmPkTfuPdcchOrderInfo ARGS((
3736 TfuPdcchOrderInfo *param,
3739 EXTERN S16 cmUnpkTfuPdcchOrderInfo ARGS((
3740 TfuPdcchOrderInfo *param,
3743 EXTERN S16 cmPkTfuDciFormat1aAllocInfo ARGS((
3744 TfuDciFormat1aAllocInfo *param,
3747 EXTERN S16 cmUnpkTfuDciFormat1aAllocInfo ARGS((
3748 TfuDciFormat1aAllocInfo *param,
3751 /*tfu_x_001.main_6 - Added for SPS support*/
3752 EXTERN S16 cmPkTfudciformat1aPdsch ARGS((
3753 Tfudciformat1aPdsch *param,
3756 EXTERN S16 cmUnpkTfudciformat1aPdsch ARGS((
3757 Tfudciformat1aPdsch *param,
3760 EXTERN S16 cmPkTfuDciFormat1aInfo ARGS((
3761 TfuDciFormat1aInfo *param,
3764 EXTERN S16 cmUnpkTfuDciFormat1aInfo ARGS((
3765 TfuDciFormat1aInfo *param,
3768 EXTERN S16 cmPkTfuDciFormat1bInfo ARGS((
3769 TfuDciFormat1bInfo *param,
3772 EXTERN S16 cmUnpkTfuDciFormat1bInfo ARGS((
3773 TfuDciFormat1bInfo *param,
3776 EXTERN S16 cmPkTfuDciInfo ARGS((
3780 EXTERN S16 cmUnpkTfuDciInfo ARGS((
3784 EXTERN S16 cmPkTfuSubbandInfo ARGS((
3785 TfuSubbandInfo *param,
3788 EXTERN S16 cmUnpkTfuSubbandInfo ARGS((
3789 TfuSubbandInfo *param,
3792 EXTERN S16 cmPkTfuSubbandDlCqiInfo ARGS((
3793 TfuSubbandDlCqiInfo *param,
3796 EXTERN S16 cmUnpkTfuSubbandDlCqiInfo ARGS((
3797 TfuSubbandDlCqiInfo *param,
3801 EXTERN S16 cmPkTfuSubbandCqiInfo ARGS((
3802 TfuSubbandCqiInfo *param,
3805 EXTERN S16 cmUnpkTfuSubbandCqiInfo ARGS((
3806 TfuSubbandCqiInfo *param,
3809 EXTERN S16 cmPkTfuPdcchCceInfo ARGS((
3810 TfuPdcchCceInfo *param,
3813 EXTERN S16 cmUnpkTfuPdcchCceInfo ARGS((
3814 TfuPdcchCceInfo *param,
3817 EXTERN S16 cmPkTfuCqiPucchMode10 ARGS((
3818 TfuCqiPucchMode10 *param,
3821 EXTERN S16 cmUnpkTfuCqiPucchMode10 ARGS((
3822 TfuCqiPucchMode10 *param,
3825 EXTERN S16 cmPkTfuCqiMode11Cqi ARGS((
3826 TfuCqiMode11Cqi *param,
3829 EXTERN S16 cmUnpkTfuCqiMode11Cqi ARGS((
3830 TfuCqiMode11Cqi *param,
3833 EXTERN S16 cmPkTfuCqiPucchMode11 ARGS((
3834 TfuCqiPucchMode11 *param,
3837 EXTERN S16 cmUnpkTfuCqiPucchMode11 ARGS((
3838 TfuCqiPucchMode11 *param,
3841 EXTERN S16 cmPkTfuCqiMode20SubCqi ARGS((
3842 TfuCqiMode20SubCqi *param,
3845 EXTERN S16 cmUnpkTfuCqiMode20SubCqi ARGS((
3846 TfuCqiMode20SubCqi *param,
3849 EXTERN S16 cmPkTfuCqiMode20Cqi ARGS((
3850 TfuCqiMode20Cqi *param,
3853 EXTERN S16 cmUnpkTfuCqiMode20Cqi ARGS((
3854 TfuCqiMode20Cqi *param,
3857 EXTERN S16 cmPkTfuCqiPucchMode20 ARGS((
3858 TfuCqiPucchMode20 *param,
3861 EXTERN S16 cmUnpkTfuCqiPucchMode20 ARGS((
3862 TfuCqiPucchMode20 *param,
3865 EXTERN S16 cmPkTfuCqiMode21SubCqi ARGS((
3866 TfuCqiMode21SubCqi *param,
3869 EXTERN S16 cmUnpkTfuCqiMode21SubCqi ARGS((
3870 TfuCqiMode21SubCqi *param,
3873 EXTERN S16 cmPkTfuCqiMode21WideCqi ARGS((
3874 TfuCqiMode21WideCqi *param,
3877 EXTERN S16 cmUnpkTfuCqiMode21WideCqi ARGS((
3878 TfuCqiMode21WideCqi *param,
3881 EXTERN S16 cmPkTfuCqiMode21Cqi ARGS((
3882 TfuCqiMode21Cqi *param,
3885 EXTERN S16 cmUnpkTfuCqiMode21Cqi ARGS((
3886 TfuCqiMode21Cqi *param,
3889 EXTERN S16 cmPkTfuCqiPucchMode21 ARGS((
3890 TfuCqiPucchMode21 *param,
3893 EXTERN S16 cmUnpkTfuCqiPucchMode21 ARGS((
3894 TfuCqiPucchMode21 *param,
3897 EXTERN S16 cmPkTfuDlCqiPucch ARGS((
3898 TfuDlCqiPucch *param,
3901 EXTERN S16 cmUnpkTfuDlCqiPucch ARGS((
3902 TfuDlCqiPucch *param,
3905 EXTERN S16 cmPkTfuSubbandMode12 ARGS((
3906 TfuSubbandMode12 *param,
3909 EXTERN S16 cmUnpkTfuSubbandMode12 ARGS((
3910 TfuSubbandMode12 *param,
3913 EXTERN S16 cmPkTfuCqiPuschMode12 ARGS((
3914 TfuCqiPuschMode12 *param,
3917 EXTERN S16 cmUnpkTfuCqiPuschMode12 ARGS((
3918 TfuCqiPuschMode12 *param,
3921 EXTERN S16 cmPkTfuCqiPuschMode20 ARGS((
3922 TfuCqiPuschMode20 *param,
3925 EXTERN S16 cmUnpkTfuCqiPuschMode20 ARGS((
3926 TfuCqiPuschMode20 *param,
3929 EXTERN S16 cmPkTfuCqiPuschMode22 ARGS((
3930 TfuCqiPuschMode22 *param,
3933 EXTERN S16 cmUnpkTfuCqiPuschMode22 ARGS((
3934 TfuCqiPuschMode22 *param,
3937 EXTERN S16 cmPkTfuSubbandMode30 ARGS((
3938 TfuSubbandMode30 *param,
3941 EXTERN S16 cmUnpkTfuSubbandMode30 ARGS((
3942 TfuSubbandMode30 *param,
3945 EXTERN S16 cmPkTfuCqiPuschMode30 ARGS((
3946 TfuCqiPuschMode30 *param,
3949 EXTERN S16 cmUnpkTfuCqiPuschMode30 ARGS((
3950 TfuCqiPuschMode30 *param,
3953 EXTERN S16 cmPkTfuSubbandMode31 ARGS((
3954 TfuSubbandMode31 *param,
3957 EXTERN S16 cmUnpkTfuSubbandMode31 ARGS((
3958 TfuSubbandMode31 *param,
3961 EXTERN S16 cmPkTfuCqiPuschMode31 ARGS((
3962 TfuCqiPuschMode31 *param,
3965 EXTERN S16 cmUnpkTfuCqiPuschMode31 ARGS((
3966 TfuCqiPuschMode31 *param,
3969 EXTERN S16 cmPkTfuDlCqiPusch ARGS((
3970 TfuDlCqiPusch *param,
3973 EXTERN S16 cmUnpkTfuDlCqiPusch ARGS((
3974 TfuDlCqiPusch *param,
3978 EXTERN S16 cmPkTfuDlCqiPuschInfo ARGS((
3979 TfuDlCqiPuschInfo *param,
3982 EXTERN S16 cmUnpkTfuDlCqiPuschInfo ARGS((
3983 TfuDlCqiPuschInfo *param,
3987 EXTERN S16 cmPkTfuDoaRpt ARGS((
3991 EXTERN S16 cmUnpkTfuDoaRpt ARGS((
3995 EXTERN S16 cmPkTfuDoaIndInfo ARGS((
3996 TfuDoaIndInfo *param,
3999 EXTERN S16 cmUnpkTfuDoaIndInfo ARGS((
4000 TfuDoaIndInfo *param,
4005 EXTERN S16 cmPkTfuDlCqiInfo ARGS((
4007 TfuDlCqiInfo *param,
4010 EXTERN S16 cmUnpkTfuDlCqiInfo ARGS((
4012 TfuDlCqiInfo *param,
4017 /* tfu_x_001.main_8. Added changes of TFU_UPGRADE */
4019 EXTERN S16 cmPkTfuUeMsg3RecpReq ARGS((
4020 TfuUeMsg3RecpReq *param,
4023 EXTERN S16 cmUnpkTfuUeMsg3RecpReq ARGS((
4024 TfuUeMsg3RecpReq *param,
4030 /*tfu_x_001.main_8 - ADD - Prototype for TfuUePuschRecpReq Pk/Unpk functions */
4031 EXTERN S16 cmPkTfuUePuschRecpReq ARGS((
4032 TfuUePuschRecpReq *param,
4035 EXTERN S16 cmUnpkTfuUePuschRecpReq ARGS((
4036 TfuUePuschRecpReq *param,
4039 EXTERN S16 cmPkTfuUePucchRecpReq ARGS((
4040 TfuUePucchRecpReq *param,
4043 EXTERN S16 cmUnpkTfuUePucchRecpReq ARGS((
4044 TfuUePucchRecpReq *param,
4048 EXTERN S16 cmPkTfuRecpReqInfo ARGS((
4049 TfuRecpReqInfo *param,
4052 EXTERN S16 cmUnpkTfuRecpReqInfo ARGS((
4053 TfuRecpReqInfo *param,
4057 EXTERN S16 cmPkTfuPdcchInfo ARGS((
4058 TfuPdcchInfo *param,
4061 EXTERN S16 cmUnpkTfuPdcchInfo ARGS((
4062 TfuPdcchInfo *param,
4065 EXTERN S16 cmPkTfuPhichInfo ARGS((
4066 TfuPhichInfo *param,
4069 EXTERN S16 cmUnpkTfuPhichInfo ARGS((
4070 TfuPhichInfo *param,
4073 EXTERN S16 cmPkTfuCntrlReqInfo ARGS((
4074 TfuCntrlReqInfo *param,
4077 EXTERN S16 cmUnpkTfuCntrlReqInfo ARGS((
4078 TfuCntrlReqInfo *param,
4082 EXTERN S16 cmPkTfuPdschDciInfo ARGS((
4083 TfuPdschDciInfo *param,
4086 EXTERN S16 cmUnpkTfuPdschDciInfo ARGS((
4087 TfuPdschDciInfo *param,
4090 EXTERN S16 cmPkTfuDatReqPduInfo ARGS((
4091 TfuDatReqPduInfo *param,
4094 EXTERN S16 cmUnpkTfuDatReqPduInfo ARGS((
4095 TfuDatReqPduInfo *param,
4098 EXTERN S16 cmPkTfuDatReqInfo ARGS((
4099 TfuDatReqInfo *param,
4102 EXTERN S16 cmUnpkTfuDatReqInfo ARGS((
4103 TfuDatReqInfo *param,
4107 EXTERN S16 cmPkTfuDatInfo ARGS((
4111 EXTERN S16 cmUnpkTfuDatInfo ARGS((
4115 EXTERN S16 cmPkTfuDatIndInfo ARGS((
4116 TfuDatIndInfo *param,
4119 EXTERN S16 cmUnpkTfuDatIndInfo ARGS((
4120 TfuDatIndInfo *param,
4124 EXTERN S16 cmPkTfuSrInfo ARGS((
4128 EXTERN S16 cmUnpkTfuSrInfo ARGS((
4132 EXTERN S16 cmPkTfuSrIndInfo ARGS((
4133 TfuSrIndInfo *param,
4136 EXTERN S16 cmUnpkTfuSrIndInfo ARGS((
4137 TfuSrIndInfo *param,
4141 EXTERN S16 cmPkTfuHqInfo ARGS((
4145 EXTERN S16 cmUnpkTfuHqInfo ARGS((
4149 EXTERN S16 cmPkTfuHqIndInfo ARGS((
4150 TfuHqIndInfo *param,
4153 EXTERN S16 cmUnpkTfuHqIndInfo ARGS((
4154 TfuHqIndInfo *param,
4158 EXTERN S16 cmPkTfuUlCqiInfo ARGS((
4159 TfuUlCqiInfo *param,
4162 EXTERN S16 cmUnpkTfuUlCqiInfo ARGS((
4163 TfuUlCqiInfo *param,
4166 EXTERN S16 cmPkTfuUlCqiRpt ARGS((
4170 EXTERN S16 cmUnpkTfuUlCqiRpt ARGS((
4174 EXTERN S16 cmPkTfuUlCqiIndInfo ARGS((
4175 TfuUlCqiIndInfo *param,
4178 EXTERN S16 cmUnpkTfuUlCqiIndInfo ARGS((
4179 TfuUlCqiIndInfo *param,
4183 EXTERN S16 cmPkTfuDlCqiRpt ARGS((
4187 EXTERN S16 cmUnpkTfuDlCqiRpt ARGS((
4191 EXTERN S16 cmPkTfuDlCqiIndInfo ARGS((
4192 TfuDlCqiIndInfo *param,
4195 EXTERN S16 cmUnpkTfuDlCqiIndInfo ARGS((
4196 TfuDlCqiIndInfo *param,
4200 EXTERN S16 cmPkTfuPucchDeltaPwr ARGS((
4203 TfuPucchDeltaPwrIndInfo * pucchDeltaPwr));
4205 EXTERN S16 cmPkTfuPucchDeltaPwrInfo ARGS((
4206 TfuPucchDeltaPwr *param,
4210 EXTERN S16 cmUnpkTfuPucchDeltaPwr ARGS((
4211 TfuPucchDeltaPwrInd func,
4215 EXTERN S16 cmUnpkTfuPucchDeltaPwrInfo ARGS((
4216 TfuPucchDeltaPwr *param,
4220 EXTERN S16 cmPkTfuCrcInfo ARGS((
4224 EXTERN S16 cmUnpkTfuCrcInfo ARGS((
4228 EXTERN S16 cmPkTfuCrcIndInfo ARGS((
4229 TfuCrcIndInfo *param,
4232 EXTERN S16 cmUnpkTfuCrcIndInfo ARGS((
4233 TfuCrcIndInfo *param,
4238 EXTERN S16 cmPkTfuPucchDeltaPwrIndInfo ARGS((
4239 TfuPucchDeltaPwrIndInfo *param,
4242 EXTERN S16 cmUnpkTfuPucchDeltaPwrIndInfo ARGS((
4243 TfuPucchDeltaPwrIndInfo *param,
4247 EXTERN S16 cmPkTfuTimingAdvInfo ARGS((
4248 TfuTimingAdvInfo *param,
4251 EXTERN S16 cmUnpkTfuTimingAdvInfo ARGS((
4252 TfuTimingAdvInfo *param,
4255 EXTERN S16 cmPkTfuTimingAdvIndInfo ARGS((
4256 TfuTimingAdvIndInfo *param,
4259 EXTERN S16 cmUnpkTfuTimingAdvIndInfo ARGS((
4260 TfuTimingAdvIndInfo *param,
4265 EXTERN S16 cmPkTfuTtiCellInfo ARGS((
4266 TfuTtiCellInfo *param,
4269 EXTERN S16 cmUnpkTfuTtiCellInfo ARGS((
4270 TfuTtiCellInfo *param,
4274 EXTERN S16 cmPkTfuTtiIndInfo ARGS((
4275 TfuTtiIndInfo *param,
4278 EXTERN S16 cmUnpackSlotIndInfo ARGS((
4282 EXTERN S16 cmPkTfuRaReqInfo ARGS((
4283 TfuRaReqInfo *param,
4286 EXTERN S16 cmUnpkTfuRaReqInfo ARGS((
4287 TfuRaReqInfo *param,
4290 EXTERN S16 cmPkTfuRachInfo ARGS((
4295 EXTERN S16 cmUnpkTfuRachInfo ARGS((
4300 EXTERN S16 cmPkTfuRaReqIndInfo ARGS((
4301 TfuRaReqIndInfo *param,
4304 EXTERN S16 cmUnpkTfuRaReqIndInfo ARGS((
4305 TfuRaReqIndInfo *param,
4308 EXTERN S16 cmPkBuffer ARGS((
4312 EXTERN S16 cmUnpkBuffer ARGS((
4317 /* tfu_x_001.main_8. Added changes of TFU_UPGRADE */
4319 EXTERN S16 cmPkTfuSrsRpt ARGS((
4323 EXTERN S16 cmUnpkTfuSrsRpt ARGS((
4327 EXTERN S16 cmPkTfuSrsIndInfo ARGS((
4328 TfuSrsIndInfo *param,
4331 EXTERN S16 cmUnpkTfuSrsIndInfo ARGS((
4332 TfuSrsIndInfo *param,
4336 EXTERN S16 cmPkTfuRawCqiRpt ARGS((
4337 TfuRawCqiRpt *param,
4340 EXTERN S16 cmUnpkTfuRawCqiRpt ARGS((
4341 TfuRawCqiRpt *param,
4344 EXTERN S16 cmPkTfuRawCqiIndInfo ARGS((
4345 TfuRawCqiIndInfo *param,
4348 EXTERN S16 cmUnpkTfuRawCqiIndInfo ARGS((
4349 TfuRawCqiIndInfo *param,
4356 EXTERN S16 cmPkTfuUePucchHqRecpInfo ARGS((
4357 TfuUePucchHqRecpInfo *param,
4360 EXTERN S16 cmUnpkTfuUePucchHqRecpInfo ARGS((
4361 TfuUePucchHqRecpInfo *param,
4367 #ifndef TFU_TDD /* else of TFU_TDD */
4369 EXTERN S16 cmPkTfuUePucchHqRecpInfo ARGS((
4370 TfuUePucchHqRecpInfo *param,
4373 EXTERN S16 cmUnpkTfuUePucchHqRecpInfo ARGS((
4374 TfuUePucchHqRecpInfo *param,
4380 EXTERN S16 cmPkTfuUePucchSrRecpInfo ARGS((
4381 TfuUePucchSrRecpInfo *param,
4384 EXTERN S16 cmUnpkTfuUePucchSrRecpInfo ARGS((
4385 TfuUePucchSrRecpInfo *param,
4388 EXTERN S16 cmPkTfuUePucchCqiRecpInfo ARGS((
4389 TfuUePucchCqiRecpInfo *param,
4392 EXTERN S16 cmUnpkTfuUePucchCqiRecpInfo ARGS((
4393 TfuUePucchCqiRecpInfo *param,
4396 EXTERN S16 cmPkTfuUePucchSrsRecpInfo ARGS((
4397 TfuUePucchSrsRecpInfo *param,
4400 EXTERN S16 cmUnpkTfuUePucchSrsRecpInfo ARGS((
4401 TfuUePucchSrsRecpInfo *param,
4404 EXTERN S16 cmPkTfuUeUlSchRecpInfo ARGS((
4405 TfuUeUlSchRecpInfo *param,
4408 EXTERN S16 cmUnpkTfuUeUlSchRecpInfo ARGS((
4409 TfuUeUlSchRecpInfo *param,
4412 EXTERN S16 cmPkTfuUePuschCqiRecpInfo ARGS((
4413 TfuUePuschCqiRecpInfo *param,
4416 EXTERN S16 cmUnpkTfuUePuschCqiRecpInfo ARGS((
4417 TfuUePuschCqiRecpInfo *param,
4420 EXTERN S16 cmPkTfuUePuschHqRecpInfo ARGS((
4421 TfuUePuschHqRecpInfo *param,
4424 EXTERN S16 cmUnpkTfuUePuschHqRecpInfo ARGS((
4425 TfuUePuschHqRecpInfo *param,
4429 EXTERN S16 cmPkTfuBfVectorInfo ARGS ((
4430 TfuBfVectorInfo *param,
4434 EXTERN S16 cmUnpkTfuBfVectorInfo ARGS ((
4435 TfuBfVectorInfo *param,
4438 #endif /* TFU_UPGRADE */
4439 /* tfu_x_001.main_8. Added changes of TFU_UPGRADE */
4440 EXTERN S16 cmPkTfuUeRecpReqInfo ARGS((
4441 TfuUeRecpReqInfo *param,
4444 EXTERN S16 cmUnpkTfuUeRecpReqInfo ARGS((
4445 TfuUeRecpReqInfo *param,
4449 /* tfu_x_001.main_8. Added changes of TFU_UPGRADE */
4451 /** @brief This primitive is used to convey the Raw CQI information
4452 * transmitted by the UE.
4453 * @details Raw CQI report is the actual bits transmitted by the UE when
4454 * reporting CQI/PMI/RI. The interpretation of these bits to CQI/sub-band CQI
4455 * and so on, are done by MAC.
4457 * @param pst Pointer to the post structure.
4458 * @param suId SAP ID of the service user.
4459 * @param cqiInd Pointer to the TfuRawCqiIndInfo structure.
4460 * @return ROK/RFAILED
4462 EXTERN S16 cmPkTfuRawCqiInd ARGS((
4465 TfuRawCqiIndInfo * rawCqiInd
4467 /** @brief This primitive is used to convey the Raw CQI information
4468 * transmitted by the UE.
4469 * @details Raw CQI report is the actual bits transmitted by the UE when
4470 * reporting CQI/PMI/RI. The interpretation of these bits to CQI/sub-band CQI
4471 * an so on, are done by MAC.
4473 * @param pst Pointer to the post structure.
4474 * @param suId SAP ID of the service user.
4475 * @param cqiInd Pointer to the TfuRawCqiIndInfo structure.
4476 * @return ROK/RFAILED
4478 EXTERN S16 cmUnpkTfuRawCqiInd ARGS((
4483 /** @brief This primitive is used to convey the information derived by the
4484 * physical layer from the SRS transmission from the UE.
4485 * @details This primitive carries information derived from the SRS transmission
4488 * @param pst Pointer to the post structure.
4489 * @param suId SAP ID of the service user.
4490 * @param srsInd Pointer to the TfuSrIndInfo structure.
4491 * @return ROK/RFAILED
4493 EXTERN S16 cmPkTfuSrsInd ARGS((
4496 TfuSrsIndInfo * srsInd
4498 /** @brief This primitive is used to convey the information derived by the
4499 * physical layer from the SRS transmission from the UE.
4500 * @details This primitive carries information derived from the SRS transmission
4503 * @param pst Pointer to the post structure.
4504 * @param suId SAP ID of the service user.
4505 * @param srsInd Pointer to the TfuSrIndInfo structure.
4506 * @return ROK/RFAILED
4508 EXTERN S16 cmUnpkTfuSrsInd ARGS((
4515 /*tfu_x_001.main_6 - Added for SPS support*/
4517 EXTERN S16 cmPkTfuAllocMap ARGS((
4521 EXTERN S16 cmUnpkTfuAllocMap ARGS((
4526 EXTERN S16 cmPkTfuDciFormat6AAllocInfo ARGS((
4527 TfuDciFormat61AllocInfo *param,
4530 EXTERN S16 cmUnpkTfuDciFormat6AAllocInfo ARGS((
4531 TfuDciFormat61AllocInfo *param,
4534 EXTERN S16 cmUnpkTfuDciFormat61aInfo ARGS((
4535 TfuDciFormat61aInfo *param,
4538 EXTERN S16 cmUnpkTfuDciFormat62Info ARGS((
4539 TfuDciFormat62Info *param,
4543 EXTERN S16 cmUnpkTfudciformat61aPdsch ARGS((
4544 Tfudciformat61aPdsch *param,
4547 EXTERN S16 cmPkTfuDciFormat61aInfo ARGS((
4548 TfuDciFormat61aInfo *param,
4556 /* LTE_UNLICENSED */
4557 EXTERN S16 cmPkTfuErrInd ARGS((
4560 TfuErrIndInfo * errInd
4563 EXTERN S16 cmUnpkTfuErrInd ARGS((
4574 #endif /* __TFUX__ */
4576 /********************************************************************30**
4579 **********************************************************************/