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

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

?? cal_inf_apc_1.cpp

?? 這是一個手機(jī)校準(zhǔn)程序
?? CPP
?? 第 1 頁 / 共 5 頁
字號:


// put in values for end of table (low power)
// use user-entered slopes to calculate the dac (x) values
    measured[number_of_points-2]=next_lowest_power;
    x[number_of_points-2]=next_lowest_slope*(measured[number_of_points-2]-measured[number_of_points-3])+x[number_of_points-3];
    measured[number_of_points-1]=lowest_power;
    x[number_of_points-1]=lowest_slope*(measured[number_of_points-1]-measured[number_of_points-2])+x[number_of_points-2];

// !!added just for test to build a new canonical ramp
/*    build_infineon_trial_ramp(trial_ramp,TargetTxPwr[GSM][3],
                              13,40,13,73,0,
                              number_of_points,x,measured);
*/
    
// added in version 6.28 for calculating pedestal values
// build a ramp for power level 15 (index 18)
    
// 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 = -10 usec, -5.7 dB, upper limit
    m[1].time=-10.0e-6;
    m[1].power=-5.7;
    m[1].llimit=0;
    m[1].ulimit=1;
// m2 = -18 usec, -33 dB, upper limit
    m[2].time=-18.0e-6;
//    m[2].power=-33.0;
    m[2].power=-30.0;
    m[2].llimit=0;
    m[2].ulimit=1;
// 3 points
    num_msmnt_pts=3;
	current_ramp=18;
	up_length=ramp_up_length[15];
    down_length=ramp_down_length[15];
    up_delta=ramp_up_delta[15];
    down_delta=ramp_down_delta[15];
    pedestal_slope=ramp_pedestal_slope[15];
    pedestal_power=ramp_pedestal_power[15];
    low_power_pedestal=pedestal_slope*(pedestal_power-measured[number_of_points-3])+x[number_of_points-3];
    cal_measure.GetUpperRampStatus((unsigned)TRUE,TargetTxPwr[PCS][current_ramp],num_msmnt_pts,m);
    
	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[PCS][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[PCS][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[PCS][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[PCS][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[PCS][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-PCS_STARTING_RAMP_INDEX];
			down_length=ramp_down_length[i-PCS_STARTING_RAMP_INDEX];
			up_delta=ramp_up_delta[i-PCS_STARTING_RAMP_INDEX];
			down_delta=ramp_down_delta[i-PCS_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==6 && j==8)
			{
					factor=factor-.03;
			}
			
//			if (i==8 || i==9 || i==10)
			if (i==9 || i==10 || i==11)
			{
				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>=11 && i<=14)
			{
				if(j==12)
					factor=factor-.05;
			}


			if (i==17 || i==18)
			{
//				if (j==11 || j==12)
//					factor=factor+0.01;
				if (j>=9 && j<=14)
					factor=factor+0.015;
//				if (j==13)
//					factor=factor+0.005;
			}
			
			power=TargetTxPwr[PCS][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;
	}


	if(i>=11 && i<=13)
	{
		for(j=0;j<4;j++)
		{
			ramp_table[j][2*i]=low_power_pedestal;
		}
	}

	if(i==14 || i==15 || i==16)
		for(j=0;j<6;j++)
		{
			ramp_table[j][2*i]=low_power_pedestal;
		}

// ramp down
	for(j=0;j<NUMBER_OF_RAMP_POINTS;j++)
	{
		if (i >= 0 && i <= 16)
		{
			if ((16-down_length)>0)
				offset = 1;
			else
				offset = 0;
		}
		else if (i>= 16)
				offset = 1;
		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)));
		}
		if(i>=16 && j<=8)
			factor=factor*1.3;

        power=TargetTxPwr[PCS][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==PCS

if(band==GSM850)
{
	hard_lower_limit=0x140;
	hard_upper_limit=0x3ff;

// first, find DAC value that gives highest power
	TargetTxPwr[GSM850][0]=TargetTxPwr[GSM850][1]=TargetTxPwr[GSM850][2]=
	TargetTxPwr[GSM850][3]=highest_power;   
	peak=(float)canonical_gsm850_ramp[15];
	i=GSM850_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,GSM850_TRIAL_PEDESTAL);
	cal_hs.HS_SetRamp(trial_ramp);
	Sleep(100);
	stat=cal_measure.GetTxPower(expected_power,&msrd,expected_power>15.0);
	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;  // mark all locations as being unused so far
	}
// 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,GSM850_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,expected_power>15.0);
		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))
			return POWER_ERROR;
		num_trials++;

	}
	if(num_trials==MAX_TX_TRIALS)
		return TOO_MANY_TX_TRIALS;

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

// put the high power value in
    power_table[(unsigned)(peak+0.5)]=msrd;
	hard_upper_limit=(unsigned)(peak+0.5);
// now have the highest power and its DAC value
// do binary search for other powers. The limits will be adjusted dynamically    
    
    peak=peak-50.0; // move away from highest power

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91视频在线观看| 一区二区三区加勒比av| 午夜a成v人精品| 日本高清不卡aⅴ免费网站| 国产日韩欧美精品电影三级在线| 极品少妇一区二区| 日韩免费视频线观看| 美日韩一区二区三区| 日韩亚洲欧美成人一区| 久久精品国产99国产| 日韩精品一区二区三区中文不卡 | 欧美日韩成人激情| 风间由美中文字幕在线看视频国产欧美 | 日韩免费高清电影| 免费成人美女在线观看.| 久久99热99| 欧美午夜精品久久久久久超碰| 欧美国产视频在线| 成人一二三区视频| 欧美不卡一区二区三区四区| 国产一区免费电影| 国产欧美精品一区二区色综合朱莉| 成人午夜视频在线| 欧美精品一区二区在线播放| 国产成人免费在线| 国产精品二区一区二区aⅴ污介绍| 99国产一区二区三精品乱码| 亚洲男帅同性gay1069| 97se亚洲国产综合在线| 亚洲一区二区三区四区不卡| 欧美精品丝袜中出| 国产精品一区二区久久不卡| 久久色成人在线| 91片黄在线观看| 肉色丝袜一区二区| 久久午夜老司机| 色噜噜狠狠色综合欧洲selulu| 亚洲国产人成综合网站| 欧美一区二区三区免费视频| 成人综合婷婷国产精品久久蜜臀 | 欧美三区在线观看| 日本不卡一二三| 国产欧美视频在线观看| 不卡欧美aaaaa| 五月天一区二区三区| 精品卡一卡二卡三卡四在线| 91色在线porny| 免费的成人av| 亚洲黄色尤物视频| 日韩欧美国产综合| 99re这里只有精品6| 日本人妖一区二区| 综合久久给合久久狠狠狠97色 | 91精品在线一区二区| 国产精品一区二区三区乱码| 中文字幕一区av| 日韩欧美国产电影| 91蝌蚪国产九色| 激情欧美一区二区| 亚洲午夜激情网站| 中文无字幕一区二区三区| 欧美日韩精品一区视频| 激情五月激情综合网| 亚洲一二三专区| 欧美国产综合一区二区| 91精品国产乱码久久蜜臀| 不卡一卡二卡三乱码免费网站| 日韩高清不卡在线| 夜夜嗨av一区二区三区网页| 国产三级精品三级| 日韩欧美一区在线| 成人高清视频在线| 国产做a爰片久久毛片| 亚洲一区二区三区在线看| 中文字幕的久久| 久久久蜜桃精品| 中文字幕一区二区5566日韩| 久久蜜桃av一区二区天堂| 欧美日本在线看| 在线亚洲免费视频| 99精品久久只有精品| 高清成人在线观看| 青娱乐精品视频在线| 婷婷中文字幕综合| 日日夜夜免费精品| 麻豆视频一区二区| 狠狠狠色丁香婷婷综合激情 | 国产精品精品国产色婷婷| 亚洲国产成人私人影院tom| 欧美国产日本视频| 亚洲欧美另类小说视频| 亚洲自拍与偷拍| 日本 国产 欧美色综合| 激情五月婷婷综合| 成年人网站91| 欧美日韩一区二区在线观看 | 亚洲成av人片www| 蜜桃视频第一区免费观看| 久久草av在线| 不卡大黄网站免费看| 欧美亚洲国产bt| 精品理论电影在线| 国产精品久线在线观看| 亚洲国产精品一区二区尤物区| 日本亚洲一区二区| 成人精品免费视频| 欧美日韩久久久| 国产亚洲精品免费| 亚洲国产一区二区在线播放| 狠狠色综合日日| 99国产精品国产精品毛片| 777久久久精品| 中文字幕欧美日本乱码一线二线 | 奇米一区二区三区av| 国产盗摄精品一区二区三区在线 | 成人一区二区视频| 欧美丝袜自拍制服另类| 欧美mv日韩mv国产网站app| ...xxx性欧美| 美女性感视频久久| 91视频www| 久久久久99精品国产片| 亚洲6080在线| 99免费精品视频| 精品国产成人系列| 一区二区三区91| 日韩视频免费观看高清完整版| 中文字幕av一区二区三区免费看| 日日夜夜精品视频免费| 欧美在线free| 成人激情校园春色| 666欧美在线视频| 亚洲欧美日韩一区二区| 久国产精品韩国三级视频| 欧美影院一区二区| 国产精品久久久久久亚洲伦| 久久精品国产亚洲高清剧情介绍| 91蜜桃网址入口| 久久久99精品久久| 日韩一区精品视频| 欧美综合久久久| 亚洲欧洲日韩在线| 国产伦精品一区二区三区视频青涩| 欧美日韩中字一区| 日韩美女啊v在线免费观看| 国产在线看一区| 日韩美一区二区三区| 午夜精品久久久久久久99樱桃| 97精品超碰一区二区三区| 国产欧美精品一区aⅴ影院| 黄色日韩网站视频| 欧美r级电影在线观看| 蜜桃视频免费观看一区| 欧美精品xxxxbbbb| 亚洲超碰精品一区二区| 欧日韩精品视频| 一区二区三区**美女毛片| 色综合久久久久综合体桃花网| 日本一区二区三区电影| 国产精品影视在线观看| 久久日韩精品一区二区五区| 韩国欧美国产一区| 精品久久久久久久久久久院品网| 男男gaygay亚洲| 91精品在线免费观看| 午夜精品福利一区二区三区蜜桃| 欧美色手机在线观看| 午夜精品免费在线观看| 欧美精品99久久久**| 天天色图综合网| 亚洲图片欧美色图| 欧美日韩色综合| 亚洲成人免费视| 宅男在线国产精品| 秋霞午夜av一区二区三区| 欧美成人精品1314www| 精品一区二区精品| 国产亚洲综合在线| 不卡的av网站| 亚洲自拍另类综合| 欧美顶级少妇做爰| 免费观看成人av| 国产午夜精品久久久久久久 | www国产精品av| 国产成人福利片| 亚洲丝袜另类动漫二区| 欧美在线不卡一区| 日日骚欧美日韩| 精品国产亚洲在线| 99久久国产免费看| 香蕉久久夜色精品国产使用方法 | 国产经典欧美精品| 免费成人av在线| 日韩精品在线网站| 国产91丝袜在线观看| 亚洲精品五月天| 欧美体内she精视频| 久久国产欧美日韩精品| 国产精品久久一级| 欧美日韩国产影片|