亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? cal_inf_apc_1.cpp

?? 這是一個手機(jī)校準(zhǔn)程序
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
	count=0;
    pedestal_done=FALSE;
    too_low=too_high=0;
    pedestal_step=COARSE_PEDESTAL_STEP;
	while(!pedestal_done)
	{
		if(too_low && too_high)
        {
			pedestal_step=FINE_PEDESTAL_STEP;
        }
		build_infineon_trial_ramp(trial_ramp,TargetTxPwr[DCS][current_ramp],
									up_length,up_delta,down_length,down_delta,low_power_pedestal,
									number_of_points,x,measured);
		cal_hs.HS_SetRamp(trial_ramp);
		cal_measure.GetUpperRampStatus((unsigned)FALSE,TargetTxPwr[DCS][current_ramp],num_msmnt_pts,m);
		count++;
		if(m[0].passed && m[1].passed && m[2].passed)
	        pedestal_done=TRUE;
		if(count>MAX_INFINEON_PEDESTAL_TRIALS)
        {
			pedestal_done=FALSE;
			break;
        }
		if(!m[0].passed && !m[1].passed && !m[2].passed)  // failed either low and the high limit
	        break;
		else if(!m[2].passed || !m[1].passed)	//upper limit check
        {
			low_power_pedestal-=pedestal_step;
			too_high=1;
//			if(count>20)
//			{
//			    ramp_up_delta[15]++;
//				up_delta++;
//			}
//			if(count>20 && !m[1].passed)
//			{
//				ramp_up_length[15]++;
//				up_length++;
//			}
        }
		else if(!m[0].passed)	//lower limit check
        {
			low_power_pedestal+=pedestal_step;
			too_low=1;
//			if(count>20)
//			{
//				ramp_up_length[15]--;
//				up_length--;
//			}
        }
	}
    if(!pedestal_done)
	{
		return INFINEON_PEDESTAL_ERROR;
	}

// added in version 6.44 for calculating pedestal values
// build a ramp for power level 5 (index 8) )changed to level 5, index 8 on 3/30/01
    
// initialize pedestal ramp limits
// m0 = -1 usec, -0.55 dB, lower limit
    m[0].time=-1.0e-6;
    m[0].power=-0.55;
    m[0].llimit=1;
    m[0].ulimit=0;
// m1 = -18 usec, -41 dB, lower limit
    m[1].time=-18.0e-6;
    m[1].power=-42.0;
    m[1].llimit=1;
    m[1].ulimit=0;
// m2 = -18 usec, -36 dB, upper limit
    m[2].time=-18.0e-6;
    m[2].power=-33.0;
    m[2].llimit=0;
    m[2].ulimit=1;
// 3 points
	num_msmnt_pts=3;
	up_length=ramp_up_length[5];
    down_length=ramp_down_length[5];
    up_delta=ramp_up_delta[5];
    down_delta=ramp_down_delta[5];
    pedestal_slope=ramp_pedestal_slope[5];
    pedestal_power=ramp_pedestal_power[5];
    high_power_pedestal=low_power_pedestal;
    cal_measure.GetUpperRampStatus((unsigned)TRUE,TargetTxPwr[DCS][8],num_msmnt_pts,m);
    
	initial_up_length=up_length;

	count=0;
    pedestal_done=FALSE;
    too_low=too_high=0;
    pedestal_step=COARSE_PEDESTAL_STEP;
    while(!pedestal_done)
	{
		if(too_low && too_high)
		{
			pedestal_step=FINE_PEDESTAL_STEP;
        }
		build_infineon_trial_ramp(trial_ramp,TargetTxPwr[DCS][8],
									up_length,up_delta,down_length,down_delta,high_power_pedestal,
									number_of_points,x,measured);
		cal_hs.HS_SetRamp(trial_ramp);
		cal_measure.GetUpperRampStatus((unsigned)FALSE,TargetTxPwr[DCS][8],num_msmnt_pts,m);
		count++;
		if(m[0].passed && m[1].passed && m[2].passed)
        {
			pedestal_done=TRUE;
        }
		if(count>MAX_INFINEON_PEDESTAL_TRIALS)
        {
			pedestal_done=FALSE;
			break;
        }
		if(!m[0].passed && !m[1].passed && !m[2].passed)  // failed either low and the high limit
        {
			break;
        }
		else if(!m[2].passed)
        {
			high_power_pedestal-=pedestal_step;
			too_high=1;
//			if(count>20)
//			{
//			    ramp_up_delta[15]++;
//				up_delta++;
//			}
        }
		else if(!m[0].passed || !m[1].passed)
        {
			high_power_pedestal+=pedestal_step;
			too_low=1;
//			if(count>20)
//			{
//				ramp_up_length[15]--;
//				up_length--;
//			}
        }
	}
    if(!pedestal_done)
	{
		return INFINEON_PEDESTAL_ERROR;
	}

	for(i=0;i<RAMP_TABLE_SIZE;i++)
	{
		if(i<3)
        {
			up_length=ramp_up_length[0];
			down_length=ramp_down_length[0];
			up_delta=ramp_up_delta[0];
			down_delta=ramp_down_delta[0];
        }
		else
        {
			up_length=ramp_up_length[i-DCS_STARTING_RAMP_INDEX];
			down_length=ramp_down_length[i-DCS_STARTING_RAMP_INDEX];
			up_delta=ramp_up_delta[i-DCS_STARTING_RAMP_INDEX];
			down_delta=ramp_down_delta[i-DCS_STARTING_RAMP_INDEX];
        }
		for(j=0;j<NUMBER_OF_RAMP_POINTS;j++)
        {
			if(j>up_length-1)
			{
				factor=1.0;
			}
			else
			{
				factor=1-cos((PI*j)/(2*up_length-2))*cos((PI*j)/(2*up_length-2));
			}


			if(i<=5)
			{
				if (j==7)
					factor=factor-.03;
				if (j==8)
					factor=factor-.125;
			}

			
			if (i==8 || i==9 || i==10)
			{
				if (j==5 && j==6)
					factor=factor+.2;
				if (j==7)
					factor=factor+.05;
				if (j==9)
					factor=factor-.1;
				if (j==10)
					factor=factor-.12;
			}

			if (i>=13 && i<=17)
			{
				if (j==10 || j==12)
					factor=old_factor;
				old_factor=factor;
				if (i==13 && (j>=9 & j<=12))
						factor=factor-.05;
			}
			
			power=TargetTxPwr[DCS][i]-up_delta+factor*up_delta;
			dac_code=interpolate(power,x,measured,number_of_points,&error);
			if(error==INTERPOLATION_FAILURE)
			{
				dac_code=extrapolate(power,x,measured,number_of_points,&error);
				if(error==EXTRAPOLATION_FAILURE)
			    {
					return error;
				}
			}
			if(dac_code>0x3ff && power>0)
			{
				return APC_DAC_CODE_TOO_LARGE;
			}
			if(dac_code>0x3ff && power<0)
			{
				dac_code=0;
			}
			if (i<=6)
			{
				if(dac_code<high_power_pedestal)
				{
					dac_code=high_power_pedestal+40;
				}
			}
			else if(i<=10 && i>6) // reduce pedestal for power levels <= 7 (index <= 10)
			{
				if(dac_code<high_power_pedestal)
			    {
					dac_code=high_power_pedestal;
				}
			}
// v 6.58 uses larger of high and low pedestal for low power ramps
			else // i>10 - low power ramps
			{
				if(dac_code<low_power_pedestal)
				{
					dac_code=low_power_pedestal;
			  }
			}
			ramp_table[j][2*i]=dac_code;      // ramp up
		} // for all ramp up points within a power level

	if(i<=6)
	{
		ramp_table[0][2*i]=high_power_pedestal+40;
	}
	else if(i<=10 && i>6)
	{
		ramp_table[0][2*i]=high_power_pedestal;
	}
	else
	{
		ramp_table[0][2*i]=low_power_pedestal;
	}

// ramp down
	for(j=0;j<NUMBER_OF_RAMP_POINTS;j++)
	{
		if (i >= 0 && i < 18)
		{
			if ((16-down_length)>0)
				offset = 1;
			else
				offset = 0;
		}
		else
			offset = 0;

		if(j<=16-down_length-offset)
		{
			factor=0.0;
		}
		else
		{
			if(j<int(down_length-6))
				factor=1-cos((PI*(j+1-(16-down_length-offset)))/(2.1*down_length));
			else
				factor=(1-cos((PI*(j+1-(16-down_length-offset)))/(2*down_length))*cos((PI*(j+1-(16-down_length-offset)))/(2*down_length)));
		}

        power=TargetTxPwr[DCS][i]-factor*down_delta;
        dac_code=interpolate(power,x,measured,number_of_points,&error);
        if(error==INTERPOLATION_FAILURE)
          {
          dac_code=extrapolate(power,x,measured,number_of_points,&error);
          if(error==EXTRAPOLATION_FAILURE)
            {
            return error;
            }
          }
        if(dac_code>0x3ff && power>0)
          {
          return APC_DAC_CODE_TOO_LARGE;
          }
        if(dac_code>0x3ff && power<0)
          {
          dac_code=0;
          }
        ramp_table[j][2*i+1]=dac_code;      // ramp down
        } // for all ramp up points within a power level
      } // for all power levels
    } // end if band==DCS

//------------- PCS
else if (band==PCS)
{
	hard_lower_limit=0x1a0;
	hard_upper_limit=0x3ff;

	TargetTxPwr[PCS][0]=TargetTxPwr[PCS][1]=TargetTxPwr[PCS][2]=
	TargetTxPwr[PCS][3]=highest_power;   

// first, find DAC value that gives highest power
	peak=(float)canonical_pcs_ramp[15];
	i=PCS_STARTING_RAMP_INDEX;
	error_scale=gain[i];

	cal_hs.HS_SetTxLev(i);
// Handset needs a while to monitor current received signal power value
	Sleep(300);
	expected_power=TargetTxPwr[band][i] + coarse_tx_delta;
// get measured values
    build_trial_ramp(trial_ramp,peak,band,PCS_TRIAL_PEDESTAL);
    cal_hs.HS_SetRamp(trial_ramp);
    Sleep(100);
    stat=cal_measure.GetTxPower(expected_power,&msrd);
    if(stat==FALSE)
	{
		return POWER_ERROR;
	}
	num_trials=0;
// initialize the power table
	for(z=0;z<NUMBER_OF_DAC_CODES;z++)
	{
		power_table[z]=UNUSED_DAC;  // mark all locations as being unused so far
		ref_table[z]=UNUSED_DAC;
	}
// adjust peak DAC value to get correct power
	while(fabs(msrd-TargetTxPwr[band][i])>0.5 && num_trials<MAX_TX_TRIALS)
	{
		peak+=error_scale*(TargetTxPwr[band][i]-msrd);
		if(peak>0x3ff || peak<0)
		{ 
		 	return APC_DAC_CODE_TOO_LARGE;
		}
		build_trial_ramp(trial_ramp,peak,band,PCS_TRIAL_PEDESTAL);
		cal_hs.HS_SetRamp(trial_ramp);
		cal_hs.HS_SetStop();
		cal_hs.HS_SetStart();
	    Sleep(200);
		stat=cal_measure.GetTxPower(expected_power,&msrd);
		ref_table[(unsigned)(peak+0.5)]=msrd;
		if(stat==FALSE)
        {
			return POWER_ERROR;
        }
		num_trials++;
	}
	if(num_trials==MAX_TX_TRIALS)
	{
		return TOO_MANY_TX_TRIALS;
	}

    measured[i-DCS_STARTING_RAMP_INDEX]=msrd;
    x[i-DCS_STARTING_RAMP_INDEX]=(unsigned)(peak+0.5);

// put the high power value in
	power_table[(unsigned)(peak+0.5)]=msrd;

// now have the highest power and its DAC value
// do binary search for other powers. The limits will be adjusted dynamically    
    
	for(i=PCS_STARTING_RAMP_INDEX+1;i<=PCS_ENDING_RAMP_INDEX;i++)
	{
		expected_power=TargetTxPwr[band][i] + coarse_tx_delta;
		upper_limit=(unsigned)(peak+0.5); // start from old upper limit
		lower_limit=hard_lower_limit;
		num_trials=0;
		search=0;
		build_trial_ramp(trial_ramp,peak,band,PCS_TRIAL_PEDESTAL);
		cal_hs.HS_SetRamp(trial_ramp);
		cal_hs.HS_SetStop();
	    cal_hs.HS_SetStart();
	    Sleep(100);
		stat=cal_measure.GetTxPower(expected_power,&msrd);

		for(z=hard_upper_limit;z>hard_lower_limit;z--)
		{
			if(fabs(ref_table[z]-(TargetTxPwr[band][i] + coarse_tx_delta))<0.5)
			{
				msrd=ref_table[z];
				peak=z;
				power_table[(unsigned)(peak+0.5)]=msrd;
				search=1;
				break;
			}
		}
		while(fabs(msrd-TargetTxPwr[band][i])>0.5 && num_trials<MAX_TX_TRIALS && upper_limit>lower_limit+1 && search==0)
        {
			if(msrd>TargetTxPwr[band][i])
			{
				upper_limit=(unsigned)(peak+0.5);           // know that correct value of peak is lower than current
				peak=(peak+lower_limit)/2;  // search halfway between current value and minimum
			}
			else
			{
				lower_limit=(unsigned)(peak+0.5);           // know that correct value of peak is higher than current
				peak=(peak+upper_limit)/2;  // search halfway between current value and maximum
			}

			num_trials++;

			build_trial_ramp(trial_ramp,peak,band,PCS_TRIAL_PEDESTAL);
			cal_hs.HS_SetRamp(trial_ramp);
			cal_hs.HS_SetStop();
		    cal_hs.HS_SetStart();
		    Sleep(200);
			expected_power=get_expected_power(power_table,(unsigned)(peak+0.5));
			stat=cal_measure.GetTxPowerDown(expected_power,&msrd);
			ref_table[(unsigned)(peak+0.5)]=msrd;
			if(stat!=FALSE)
			{
				power_table[(unsigned)(peak+0.5)]=msrd;
			}
			if(stat==FALSE || msrd<(TargetTxPwr[band][18]-2.0))
			{
				hard_lower_limit=(unsigned)(peak-0.5);  // don't go below this - can't measure the power
				msrd=-3.0;             // set this artificially low to indicate low power
			}
		}
		
		if(num_trials==MAX_TX_TRIALS)  // let the first index be less than target power
        {
			return TOO_MANY_TX_TRIALS;
        }
		measured[i-PCS_STARTING_RAMP_INDEX]=msrd;
		x[i-PCS_STARTING_RAMP_INDEX]=(unsigned)(peak+0.5);
	} // end for all GSM power levels
    
	number_of_points=PCS_ENDING_RAMP_INDEX-PCS_STARTING_RAMP_INDEX+3;

    // check min power to see if it's less than 5 dB above expected value
	if(measured[number_of_points-3]-TargetTxPwr[band][PCS_ENDING_RAMP_INDEX]>5.00)
	{
		min_power_too_large=TRUE;
	}
	else
	{
		min_power_too_large=FALSE;
	}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
播五月开心婷婷综合| 美女视频一区在线观看| 波多野结衣的一区二区三区| 国产日韩影视精品| 99久久国产免费看| 亚洲综合一区二区| 欧美日本一区二区| 国产一区二区美女| 成人免费在线视频观看| 在线视频观看一区| 日本不卡一二三| 久久久久久久久97黄色工厂| 成人久久久精品乱码一区二区三区 | 国产精品网站在线观看| 91老师片黄在线观看| 五月婷婷综合激情| 久久综合中文字幕| 91啪在线观看| 久久国内精品视频| 亚洲欧洲精品一区二区三区不卡| 色琪琪一区二区三区亚洲区| 日韩vs国产vs欧美| 久久精品一区八戒影视| 一本大道av一区二区在线播放| 日韩高清一区二区| 中文字幕av一区二区三区高| 欧美日韩精品一区二区三区四区| 麻豆成人久久精品二区三区小说| 中文字幕在线一区免费| 欧美精品亚洲二区| 成人理论电影网| 男男视频亚洲欧美| 亚洲四区在线观看| 精品国产欧美一区二区| 色狠狠综合天天综合综合| 狂野欧美性猛交blacked| 亚洲欧美综合另类在线卡通| 欧美第一区第二区| 欧美三级午夜理伦三级中视频| 国产九色精品成人porny | 亚洲成人一区二区在线观看| 2022国产精品视频| 欧美视频一区二区三区四区 | 一本色道亚洲精品aⅴ| 美女一区二区视频| 亚洲精品中文字幕乱码三区| 久久久精品2019中文字幕之3| 在线视频欧美精品| 99在线视频精品| 韩国精品在线观看| 奇米影视7777精品一区二区| 综合欧美一区二区三区| 久久久久久久久久久久久久久99| 欧美高清视频www夜色资源网| 99久久精品免费| 国产成人免费视频一区| 免费在线看成人av| 亚洲电影欧美电影有声小说| 中文字幕亚洲视频| 国产精品污污网站在线观看| 久久精品亚洲国产奇米99| 日韩欧美国产成人一区二区| 欧美夫妻性生活| 欧美在线综合视频| 99re成人精品视频| 99精品视频免费在线观看| 福利一区在线观看| 国产精品亚洲一区二区三区在线| 麻豆精品国产传媒mv男同| 五月综合激情日本mⅴ| 午夜伊人狠狠久久| 天堂在线一区二区| 无码av中文一区二区三区桃花岛| 一区二区三区日韩欧美精品| 中文字幕一区二区三区在线不卡 | 一二三区精品视频| 亚洲精品老司机| 亚洲精品v日韩精品| 亚洲欧美一区二区不卡| 中文字幕综合网| 亚洲精品国产一区二区精华液| 一区二区三区**美女毛片| 亚洲成人av资源| 亚洲地区一二三色| 欧美a级理论片| 国产一区二区三区免费在线观看| 激情深爱一区二区| 成人妖精视频yjsp地址| 99国内精品久久| 欧美三级在线看| 日韩一区二区电影网| 精品国产免费人成电影在线观看四季 | 一区二区三区影院| 亚洲国产成人高清精品| 天天色 色综合| 久久99精品一区二区三区| 九九**精品视频免费播放| 高清不卡在线观看av| 91福利视频网站| 精品久久一区二区三区| 中文字幕一区二区在线播放| 洋洋av久久久久久久一区| 青青草97国产精品免费观看无弹窗版| 精彩视频一区二区三区| 成人精品一区二区三区中文字幕| 91豆麻精品91久久久久久| 日韩女同互慰一区二区| 欧美国产乱子伦| 亚洲成人动漫一区| 国产成人精品三级麻豆| 欧美三级午夜理伦三级中视频| 欧美精品一区二区精品网| 中文字幕一区二区三区在线播放| 亚洲电影第三页| 国产精品一区二区免费不卡 | 视频在线观看国产精品| 国产伦精品一区二区三区在线观看| 国产精品一二三四区| 欧亚一区二区三区| 久久综合色综合88| 亚洲二区在线视频| 国产福利一区二区三区| 欧美优质美女网站| 中文字幕av一区 二区| 爽好久久久欧美精品| 成人app软件下载大全免费| 91精品午夜视频| 亚洲素人一区二区| 国产精品中文字幕日韩精品| 337p亚洲精品色噜噜噜| 中文字幕在线不卡一区二区三区| 久久99久久99| 91精品国产综合久久国产大片| 中国色在线观看另类| 美女诱惑一区二区| 欧美在线视频不卡| 日韩毛片精品高清免费| 国产成人精品三级麻豆| 欧美v国产在线一区二区三区| 亚洲自拍另类综合| av成人免费在线| 国产女人aaa级久久久级| 狠狠v欧美v日韩v亚洲ⅴ| 欧美剧在线免费观看网站| 亚洲丝袜美腿综合| 成人精品电影在线观看| 精品sm捆绑视频| 久久er99热精品一区二区| 欧美猛男男办公室激情| 亚洲综合色噜噜狠狠| 97久久超碰国产精品电影| 国产午夜精品久久久久久久| 国产一区在线观看麻豆| 日韩欧美一级二级三级久久久| 亚洲18女电影在线观看| 色悠久久久久综合欧美99| 国产精品美女视频| 成人激情av网| 综合中文字幕亚洲| 99视频在线观看一区三区| 中文字幕国产一区| 国产成人高清在线| 欧美韩国日本一区| 成人高清视频免费观看| 亚洲国产精品99久久久久久久久| 国产成人精品免费在线| 国产精品女人毛片| av电影一区二区| 一区二区三区精品在线| 欧美在线视频不卡| 婷婷综合在线观看| 欧美一级精品大片| 久久er99热精品一区二区| 精品国产网站在线观看| 国产成人激情av| 亚洲视频综合在线| 欧美日韩在线免费视频| 日韩黄色片在线观看| 日韩一区二区三免费高清| 久久99精品久久久| 欧美国产日本视频| 色婷婷综合久久| 亚洲高清免费一级二级三级| 91精品国产91综合久久蜜臀| 国内精品伊人久久久久av一坑 | 国产精品久久久久久久裸模| 9l国产精品久久久久麻豆| 亚洲综合丁香婷婷六月香| 欧美一区二区三区日韩| 激情亚洲综合在线| 亚洲天堂网中文字| 69堂成人精品免费视频| 国产资源在线一区| 综合av第一页| 欧美一区二区大片| 成人性视频免费网站| 亚洲6080在线| 日本一区免费视频| 欧美三级欧美一级| 国产精品一色哟哟哟|