⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 csl_tcp2.c

📁 Dm6455 driver,magbe useful to you!
💻 C
📖 第 1 页 / 共 5 页
字号:
			    tail2 = TCP2_makeTailArgs(tailData [5], tailData [3], 
                                                            tailData [1]);
			    tail3 = 0;
			    tail4 = TCP2_makeTailArgs(tailData [10], tailData [8], 
                                                            tailData [6]);
			    tail5 = TCP2_makeTailArgs(tailData [11], tailData [9], 
                                                            tailData [7]);
			    tail6 = 0;
				break;
            }
			case TCP2_RATE_1_4:
			case TCP2_RATE_1_5: {
                /* tail1 = x10(2), x10(1), x10(0) */
			    /* tail2 = p10(2), p10(1), p10(0) */
			    /* tail3 = p11(2), p11(1), p11(0) */
			    /* tail4 = x20(2), x20(1), x20(0) */
			    /* tail5 = p20(2), p20(1), p20(0) */
			    /* tail6 = p21(2), p21(1), p21(0) */

			    tail1 = TCP2_makeTailArgs(tailData [6], tailData [3], 
                                                                tailData [0]);
			    tail2 = TCP2_makeTailArgs(tailData [7], tailData [4], 
                                                                tailData [1]);
			    tail3 = TCP2_makeTailArgs(tailData [8], tailData [5], 
                                                                tailData [2]);
			    tail4 = TCP2_makeTailArgs(tailData [15], tailData [12], 
                                                                tailData [9]);
			    tail5 = TCP2_makeTailArgs(tailData [16], tailData [13], 
                                                                tailData [10]);
			    tail6 = TCP2_makeTailArgs(tailData [17], tailData [14], 
                                                                tailData [11]);
				break;
            }
			default:
				break;
		} /* end of switch */
	} /* end of if (TCP2_MODE_SA == mode) */

	if (TCP2_LAST_SF == mode) { /* set the tail bits for SP last sub frame */
		switch (rate) {
			case TCP2_RATE_1_2:
			case TCP2_RATE_1_3:
			case TCP2_RATE_3_4: {
                /* SP MAP1 - non interleaved tail bits */
				/* tail1 = x10(2), x10(1), x10(0) */
			    /* tail2 = p10(2), p10(1), p10(0) */
			    /* tail3 =   0,   0,   0 */
				/* SP MAP2 - interleaved tail bits */
			    /* tail1 = x20(2), x20(1), x20(0) */
			    /* tail2 = p20(2), p20(1), p20(0) */
			    /* tail3 =   0,   0,   0 */
				if (TCP2_MAP_MAP1 == map) {
				    tail1 = TCP2_makeTailArgs(tailData [4], tailData [2], 
				    										tailData [0]);
				    tail2 = TCP2_makeTailArgs(tailData [5], tailData [3], 
				    										tailData [1]);
				    tail3 = 0;
				} 
				else {
			    	tail1 = TCP2_makeTailArgs(tailData [10], tailData [8], 
			    											tailData [6]);
			    	tail2 = TCP2_makeTailArgs(tailData [11], tailData [9],
			    											tailData [7]);
			    	tail3 = 0;
				}

			    tail4 = 0;
			    tail5 = 0;
			    tail6 = 0;
				break;
            }
			case TCP2_RATE_1_4:
			case TCP2_RATE_1_5: {
                /* SP MAP1 - non interleaved tail bits */
				/* tail1 = x10(2), x10(1), x10(0) */
			    /* tail2 = p10(2), p10(1), p10(0) */
			    /* tail3 = p11(2), p11(1), p11(0) */
				/* SP MAP2 - interleaved tail bits */
			    /* tail1 = x20(2), x20(1), x20(0) */
			    /* tail2 = p20(2), p20(1), p20(0) */
			    /* tail3 = p21(2), p21(1), p21(0) */

				if (TCP2_MAP_MAP1 == map) {
				    tail1 = TCP2_makeTailArgs(tailData [6], tailData [3], 
                                                                tailData [0]);
				    tail2 = TCP2_makeTailArgs(tailData [7], tailData [4], 
                                                                tailData [1]);
				    tail3 = TCP2_makeTailArgs(tailData [8], tailData [5], 
                                                                tailData [2]);
				}
				else {
				    tail1 = TCP2_makeTailArgs(tailData [15], tailData [12], 
                                                                tailData [9]);
				    tail2 = TCP2_makeTailArgs(tailData [16], tailData [13], 
                                                                tailData [10]);
				    tail3 = TCP2_makeTailArgs(tailData [17], tailData [14], 
                                                                tailData [11]);
				}
			    tail4 = 0;
			    tail5 = 0;
			    tail6 = 0;
				break;
            }
			default:
				break;
		} /* end of switch */
	} /* end of if (TCP2_LAST_SF == mode) */

	gie =  _disable_interrupts ();
    
    /* Assign the tail data values */
    configIc->ic6  = tail1;
    configIc->ic7  = tail2;
    configIc->ic8  = tail3;
    configIc->ic9  = tail4;
    configIc->ic10 = tail5;
    configIc->ic11 = tail6;
    
	_restore_interrupts (gie); 

    return;

} /* end TCP2_tailConfig3GPP */

/** ============================================================================
 *   @n@b TCP2_tailConfigIs2000 
 *
 *   @b Description
 *   @n This function generates the input control values IC6-IC11 for IS2000
 *		channels. These values consist of the tail data following the 
 * 		systematics and parities data. This function is called from the generic 
 *		TCP2_tailConfig function.
 *
 *   @b Arguments
     @verbatim
			mode		TCP processing mode (SA or SP)

            map         TCP shared processing MAP 

			rate 		TCP data code rate

			tailData 	Pointer to the tail data

			configIc 	Pointer to the IC values structure

     @endverbatim
 *
 *   <b> Return Value </b>  
 *   @n  None 
 *
 *   <b> Pre Condition </b>
 *   @n  None
 *
 *   <b> Post Condition </b>
 *   @n  The configIc structure is assigned the tail configuration values 
 *		 based on the taildata. 
 *
 *   @b Modifies
 *   @n The configIc argument passed.   
 *
 *   @b Example
 *   @verbatim
		extern TCP2_Params *configParms;
		TCP2_ConfigIc *configIc;
		TCP2_UserData *xabData = &userData[frameLen];		
		
		...
		TCP2_tailConfigIs2000 (configParms->mode, configParms->map,
					configParms->rate,
					userData, configIc);

     @endverbatim
 * ===========================================================================
 */
void TCP2_tailConfigIs2000 (
		TCP2_Mode		mode,
		TCP2_Map 		map,
        TCP2_Rate        rate,
        TCP2_TailData    *restrict tailData,
        TCP2_ConfigIc    *restrict configIc
) 
{
	Uint32 tail1 = 0, tail2 = 0, tail3 = 0, tail4 = 0, tail5 = 0, tail6 = 0;

	Uint32 gie;

	if (TCP2_MODE_SA == mode) { /* set the tail bits for SA mode */
		switch (rate) {
			case TCP2_RATE_1_2: {
                /* tail1 = x10(2), x10(1), x10(0) */
			    /* tail2 = p10 (2), p10 (1), p10 (0) */
			    /* tail3 =   0,   0,   0 */
			    /* tail4 = x20 (2), x20 (1), x20 (0) */
			    /* tail5 = p20 (2), p20 (1), p20 (0) */
			    /* tail6 =   0,   0,   0 */

			    tail1 = TCP2_makeTailArgs(tailData [4], tailData [2], 
                                                            tailData [0]);
			    tail2 = TCP2_makeTailArgs(tailData [5], tailData [3], 
                                                            tailData [1]);
			    tail3 = 0;
			    tail4 = TCP2_makeTailArgs(tailData [10], tailData [8], 
                                                            tailData [6]);
			    tail5 = TCP2_makeTailArgs(tailData [11], tailData [9], 
                                                            tailData [7]);
			    tail6 = 0;
				break;
            }
			case TCP2_RATE_3_4: {
            	/* tail1 = x10 (2), x10 (1), x10 (0) */
			    /* tail2 =   0,   0, p10 (0) */
			    /* tail3 =   0,   0,   0 */
			    /* tail4 = x20 (2), x20 (1), x20 (0) */
			    /* tail5 =   0,   0, p20 (0) */
			    /* tail6 =   0,   0,   0 */

			    tail1 = TCP2_makeTailArgs(tailData [4], tailData [2], 
                                                            tailData [0]);
			    tail2 = TCP2_makeTailArgs(  0,   0, tailData [1]);
			    tail3 = 0;
			    tail4 = TCP2_makeTailArgs(tailData [10], tailData [8], 
                                                            tailData [6]);
			    tail5 = TCP2_makeTailArgs(  0,   0, tailData [7]);
			    tail6 = 0;
				break;
            }
			case TCP2_RATE_1_3: {
                /* tail1 = (x10 + x10)/2, (x10 + x10)/2, (x10 + x10)/2 */
			    /* tail2 = p10, p10, p10 */
			    /* tail3 =   0,   0,   0 */
			    /* tail4 = (x20 + x20)/2, (x20 + x20)/2, (x20 + x20)/2 */
			    /* tail5 = p20, p20, p20 */
			    /* tail6 =   0,   0,   0 */

			    tail1 = TCP2_makeTailArgs((tailData [7] + tailData [6]) / 2, 
			    	(tailData [4] + tailData [3]) / 2, 
			    	(tailData [1] + tailData [0]) / 2);
			    tail2 = TCP2_makeTailArgs(tailData [8], tailData [5], 
                                                            tailData [2]);
			    tail3 = 0;
			    tail4 = TCP2_makeTailArgs((tailData [15] + tailData [16]) / 2, 
			    	(tailData [12] + tailData [13]) / 2, 
			    	(tailData [9] + tailData [10]) / 2);
			    tail5 = TCP2_makeTailArgs(tailData [17], tailData [14], 
                                                            tailData [11]);
			    tail6 = 0;
				break;
            }
			case TCP2_RATE_1_4: {
                /* tail1 = (x10 + x10)/2, (x10 + x10)/2, (x10 + x10)/2 */
			    /* tail2 = p10, p10, p10 */
			    /* tail3 = p11, p11, p11 */
			    /* tail4 = (x20 + x20)/2, (x20 + x20)/2, (x20 + x20)/2 */
			    /* tail5 = p20, p20, p20 */
			    /* tail6 = p21, p21, p21 */

			    tail1 = TCP2_makeTailArgs((tailData [8] + tailData [9]) / 2, 
			    						(tailData [4] + tailData [5]) / 2, 
			    						(tailData [0] + tailData [1]) / 2);
			    tail2 = TCP2_makeTailArgs(tailData [10], tailData [6], 
                                                                tailData [2]);
			    tail3 = TCP2_makeTailArgs(tailData [11], tailData [7], 
                                                                tailData [3]);
			    tail4 = TCP2_makeTailArgs((tailData [20] + tailData [21]) / 2, 
			    						(tailData [17] + tailData [16]) / 2, 
			    						(tailData [12] + tailData [13]) / 2);
			    tail5 = TCP2_makeTailArgs(tailData [22], tailData [18], 
                                                                tailData [14]);
			    tail6 = TCP2_makeTailArgs(tailData [23], tailData [19], 
                                                                tailData [15]);
				break;
            }
			case TCP2_RATE_1_5: {
                /* tail1 = (x10 + x10 + x10)/3, (x10 + x10 + x10)/3, 
                                                    (x10 + x10 + x10)/3 */
			    /* tail2 = p10, p10, p10 */
			    /* tail3 = p11, p11, p11 */
			    /* tail4 = (x20 + x20 + x20)/3, (x20 + x20 + x20)/3, 
                                                    (x20 + x20 + x20)/3 */
			    /* tail5 = p20, p20, p20 */
			    /* tail6 = p21, p21, p21 */

			    tail1 = TCP2_makeTailArgs(
                            (tailData [10] + tailData [11] + tailData [12]) / 3, 
			    			(tailData [5] + tailData [6] + tailData [7]) / 3, 
		    				(tailData [0] + tailData [1] + tailData [2]) / 3
                            );
			    tail2 = TCP2_makeTailArgs(tailData [13], tailData [8], 
                                                                tailData [3]);
			    tail3 = TCP2_makeTailArgs(tailData [14], tailData [9], 
                                                                tailData [4]);
			    tail4 = TCP2_makeTailArgs(
                        (tailData [25] + tailData [26] + tailData [27]) / 3, 
    					(tailData [20] + tailData [21] + tailData [22]) / 3, 
    					(tailData [15] + tailData [16] + tailData [17]) / 3
                        );
			    tail5 = TCP2_makeTailArgs(tailData [28], tailData [23], 
                                                                tailData [18]);
			    tail6 = TCP2_makeTailArgs(tailData [29], tailData [24], 
                                                                tailData [19]);
				break;
            }
			default:
				break;
		}
	} /* end of if (TCP2_MODE_SA == mode) */
    
	if (TCP2_LAST_SF == mode) { /* set the tail bits for SP last sub frame */
		switch (rate) {
			case TCP2_RATE_1_2: {
            	/* SP MAP1 non interleaved data */
				/* tail1 = x10(2), x10(1), x10(0) */
			    /* tail2 = p10 (2), p10 (1), p10 (0) */
			    /* tail3 =   0,   0,   0 */
				/* SP MAP2 interleaved data */
				/* tail1 = x20 (2), x20 (1), x20 (0) */
			    /* tail2 = p20 (2), p20 (1), p20 (0) */
			    /* tail3 =   0,   0,   0 */

				if (TCP2_MAP_MAP1 == map) {
				    tail1 = TCP2_makeTailArgs(tailData [4], tailData [2], 
                                                                tailData [0]);
				    tail2 = TCP2_makeTailArgs(tailData [5], tailData [3], 
                                                                tailData [1]);
				    tail3 = 0;
				}
				else {
				    tail1 = TCP2_makeTailArgs(tailData [10], tailData [8], 
                                                                tailData [6]);
				    tail2 = TCP2_makeTailArgs(tailData [11], tailData [9], 
                                                                tailData [7]);
				    tail3 = 0;
				}

				tail4 = 0;
				tail5 = 0;
				tail6 = 0;
				break;
            }
			case TCP2_RATE_3_4: {
            	/* SP MAP1 non interleaved data */
				/* tail1 = x10 (2), x10 (1), x10 (0) */
			    /* tail2 =   0,   0, p10 (0) */
			    /* tail3 =   0,   0,   0 */
				/* SP MAP2 interleaved data */
			    /* tail1 = x20 (2), x20 (1), x20 (0) */
			    /* tail2 =   0,   0, p20 (0) */
			    /* tail3 =   0,   0,   0 */

				if (TCP2_MAP_MAP1 == map) {
				    tail1 = TCP2_makeTailArgs(tailData [4], tailData [2], 
                                                                tailData [0]);
				    tail2 = TCP2_makeTailArgs(  0,   0, tailData [1]);
				    tail3 = 0;
				}
				else {
				    tail1 = TCP2_makeTailArgs(tailData [10], tailData [8], 
                                                                tailData [6]);
				    tail2 = TCP2_makeTailArgs(  0,   0, tailData [7]);
				    tail3 = 0;
				}
				tail4 = 0;
				tail5 = 0;
				tail6 = 0;
				break;
            }
			case TCP2_RATE_1_3: {
                /* SP MAP1 non interleaved data */
				/* tail1 = (x10 + x10)/2, (x10 + x10)/2, (x10 + x10)/2 */
			    /* tail2 = p10, p10, p10 */
			    /* tail3 =   0,   0,   0 */
				/* SP MAP2 interleaved data */
			    /* tail1 = (x20 + x20)/2, (x20 + x20)/2, (x20 + x20)/2 */
			    /* tail2 = p20, p20, p20 */
			    /* tail3 =   0,   0,   0 */

				if (TCP2_MAP_MAP1 == map) {
				    tail1 = TCP2_makeTailArgs((tailData [7] + tailData [6]) / 2, 
				    	(tailData [4] + tailData [3]) / 2, 
				    	(tailData [1] + tailData [0]) / 2);
				    tail2 = TCP2_makeTailArgs(tailData [8], tailData [5], 
                                                                tailData [2]);
				    tail3 = 0;
				}
				else {
				    tail1 = TCP2_makeTailArgs(
                        (tailData [15] + tailData [16]) / 2, 
				    	(tailData [12] + tailData [13]) / 2, 
				    	(tailData [9] + tailData [10]) / 2
                        );
				    tail2 = TCP2_makeTailArgs(tailData [17], tailData [14], 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -