📄 dac_search.cpp
字号:
// dac_search.cpp
//
// search for dac value that gives designated peak power
//
// Sept. 25, 2000
//
#include <math.h>
#include "error.h"
#include "caltypes.h"
#include "HS.h"
#include "measure.h"
#include "cal_class.h"
#define RAMP_LENGTH 32 // entries in 1 ramp
#define MAX_TX_TRIALS 32
void cal::search_for_apc_dac(float target,unsigned *peak,float *msrd,
unsigned *upper_limit,unsigned *lower_limit,unsigned *hard_lower_limit,
UserDefParm_t parms,
Error_t *stat)
{
unsigned num_trials;
unsigned trial_ramp[RAMP_LENGTH];
unsigned measure_stat;
num_trials=0;
build_pedestal_ramp(0x180,0x180,*peak,trial_ramp,(float)0.1,parms);
cal_hs.HS_SetRamp(trial_ramp);
Sleep(100);
measure_stat=cal_measure.GetTxPower(target,msrd,target>15.0);
if(measure_stat==FALSE)
{
*hard_lower_limit=*peak; // don't go below this - can't measure the power
*msrd=-20.0; // set this artificially low to indicate low power
}
while(fabs(*msrd-target)>0.5 && num_trials<MAX_TX_TRIALS)
{
if(*msrd>target)
{
*upper_limit=*peak;
*peak=(*peak+*lower_limit)/2;
}
else
{
*lower_limit=*peak;
*peak=(*peak+*upper_limit)/2;
}
num_trials++;
build_pedestal_ramp(0x180,0x180,*peak,trial_ramp,(float)0.1,parms);
cal_hs.HS_SetRamp(trial_ramp);
Sleep(100);
measure_stat=cal_measure.GetTxPower(target,msrd,target>15.0);
if(measure_stat==FALSE)
{
*hard_lower_limit=*peak; // don't go below this - can't measure the power
*msrd=-20.0; // set this artificially low to indicate low power
}
}
if(num_trials==MAX_TX_TRIALS)
{
*stat=TOO_MANY_TX_TRIALS;
}
else
{
*stat=SUCCESS;
}
} // end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -