(以下代码基于1428 版本修改)
1.GSM 测试只check max power
METACalibrationLibrary_GSM_NSFT文件中
修改TxCheck()API
bool CGsmNsftClass::TxCheck(int eFreqBand, int channel) throw (E_METACalibrationLibrary_STATUS_CODE)
{
MCL_LOG(metaHandle, "CGsmNsftClass::TxCheck()");
bool bCheckFail = false;
bool bLocalCheckFail = false;
bool CheckFailMod[MOD_TEST_POINT_NUM];
bool CheckFailModAbs[MOD_TEST_POINT_NUM];
char temp[128];
char Buff[512];
int i;
int Index_to_PCL;
int pcl;
const int PCL_Number = (eFreqBand == FrequencyBand850 || eFreqBand == FrequencyBand900) ?
TOTAL_GSM_PCL_NUM : TOTAL_DCS_PCL_NUM;
int RxLevelMin, RxLevelMax;
if(calibrationHandle->m_rCommonCfg.ggeNsftItems.b_gge_nsft_gmsk == 1)
{
for(pcl = 0; pcl < PCL_Number; pcl++)
{
if(m_sTCH_ARFCN_PCL[eFreqBand][channel][pcl] == -1 )
{
break;
}
//Power
if(eFreqBand == FrequencyBand850 || eFreqBand == FrequencyBand900)
{
Index_to_PCL = PCL_Number - m_sTCH_ARFCN_PCL[eFreqBand][channel][pcl] + 4;
}
else
{
Index_to_PCL = PCL_Number - m_sTCH_ARFCN_PCL[eFreqBand][channel][pcl] - 1;
}
MCL_LOG(metaHandle, "");
MCL_LOG(metaHandle, "PCL : %d", m_sTCH_ARFCN_PCL[eFreqBand][channel][pcl]);
//output report
calibrationHandle->AddFormattedReport(ReportSection, "BCH Arfcn, %d, TCH Arfcn, %d, PCL, %d",
m_sTCH_ARFCN[eFreqBand][channel], m_sTCH_ARFCN[eFreqBand][channel],
m_sTCH_ARFCN_PCL[eFreqBand][channel][pcl]);
bLocalCheckFail = false;
if( !(m_dTxPowMinGMSK[eFreqBand][Index_to_PCL] <
m_sGmskResult[eFreqBand][channel][pcl].txp_result.tx_power &&
m_sGmskResult[eFreqBand][channel][pcl].txp_result.tx_power < m_dTxPowMaxGMSK[eFreqBand][Index_to_PCL]) )
{
bCheckFail = true;
bLocalCheckFail = true;
}
MCL_LOG(metaHandle, "Power : %f Wanted Power = %f Min Power = %f Max Power = %f %s",
m_sGmskResult[eFreqBand][channel][pcl].txp_result.tx_power
, m_dWANTED_P[eFreqBand][Index_to_PCL]
, m_dTxPowMinGMSK[eFreqBand][Index_to_PCL]
, m_dTxPowMaxGMSK[eFreqBand][Index_to_PCL]
, (bLocalCheckFail ? "FAIL" : "PASS")
);
calibrationHandle->AddFormattedReport(ReportSection, "Power, %f, Wanted Power, %f, Min Power, %f, Max
Power, %f, %s",
m_sGmskResult[eFreqBand][channel][pcl].txp_result.tx_power
, m_dWANTED_P[eFreqBand][Index_to_PCL]
, m_dTxPowMinGMSK[eFreqBand][Index_to_PCL]
, m_dTxPowMaxGMSK[eFreqBand][Index_to_PCL]
, (bLocalCheckFail ? "FAIL" : "PASS")
);
}
}
return bCheckFail;
}
2. WCDMA 测试只check max power
修改METACalibrationLibrary_WCDMA_NSFT.cpp StartTxCheck() 以及StartMaxPowerCheck() API
修改如下
(1) 将StartTxCheck() 改为
bool CWcdmaNsftClass::StartTxCheck(int index)
{
MCL_LOG(metaHandle, "----StartTxCheck_%d----", index + 1);
bool CheckFail = false;
if(StartMaxPowerCheck(index))
{
MCL_LOG(metaHandle, ">>FAIL: StartMaxPowerCheck_%d", index);
CheckFail = true;
}
/*
if(StartMinPowerCheck(index))
{
MCL_LOG(metaHandle, ">>FAIL: StartMinPowerCheck_%d", index);
CheckFail = true;
}
if(m_asWCDMA_NSFT_ILPC_SEQ[index].length() > 0)
{
if(StartIlpcCheck(index))
{
MCL_LOG(metaHandle, ">>FAIL:StartIlpcCheck_%d", index);
CheckFail = true;
} }
*/
return CheckFail;
}
(2) 将StartMaxPowerCheck() 改为
/**
* Descriptions: WDMA NSFT Check procedure (Max power)
* @return check failed: true/check pass: false
*/
bool CWcdmaNsftClass::StartMaxPowerCheck(int index)
{
bool CheckFail = false;
calibrationHandle->AddFormattedReport(ReportSection, "Max Power (dBm), %f, Lower Limit (dBm), %f, Upper
Limit (dBm), %f, %s",
r99TestResult[index].maxPower.m_dUEPower,
m_dWCDMA_NSFT_MAX_PWR_AVG_LOW[index],
m_dWCDMA_NSFT_MAX_PWR_AVG_HIGH[index],
(!(m_dWCDMA_NSFT_MAX_PWR_AVG_HIGH[index] < r99TestResult[index].maxPower.m_dUEPower ||
m_dWCDMA_NSFT_MAX_PWR_AVG_LOW[index] > r99TestResult[index].maxPower.m_dUEPower)) ? "PASS" : "FAIL"
);
if(m_dWCDMA_NSFT_MAX_PWR_AVG_HIGH[index] < r99TestResult[index].maxPower.m_dUEPower ||
m_dWCDMA_NSFT_MAX_PWR_AVG_LOW[index] > r99TestResult[index].maxPower.m_dUEPower)
{
CheckFail = true;
}
return CheckFail;
}
3. TDSCDMA 测试只check maxpower
修改METACalibrationLibrary_TDSCDMA_AST_NSFT.cpp 的FetchTxTest() 和Internal_TD_NSFT_TPC_Organize_Result()
API
(1)修改FetchTxTest()
将
tpc_check_items.bTCP = true;
tpc_check_items.bTOBW = true; // not check this items
tpc_check_items.bTACL = true;
tpc_check_items.bCLP = true;
tpc_check_items.bOOP = true;
tpc_check_items.bTSEM = true;
tpc_check_items.bTWQ = true;
改为
tpc_check_items.bTCP = true;
tpc_check_items.bTOBW = false; // not check this items
tpc_check_items.bTACL = false;
tpc_check_items.bCLP = false;
tpc_check_items.bOOP = false;
tpc_check_items.bTSEM = false;
tpc_check_items.bTWQ = false;
(2)修改Internal_TD_NSFT_TPC_Organize_Result()
将以下代码去掉
if(p_result->d_min_avg_pwr < p_rTdaNsftCfg->m_dTDA_NSFT_MIN_PWR_AVG_HIGH[index])
{
bPass =true ;
}
else
{
bPass = false;
bAllPass = false;
}
sprintf_s(log_msg_buf, sizeof(log_msg_buf), " Min Avg. Power (dBm): %-6.3f (< %-6.3f), ", p_result-
>d_min_avg_pwr,
p_rTdaNsftCfg->m_dTDA_NSFT_MIN_PWR_AVG_HIGH[index]);
as_log = log_msg_buf + Internal_TDSCDMA_NSFT_PassOrFail(bPass);
p_td_nsft_report_file->AddMesg(as_log);
// output report file
g_MCLHA[meta_handle].AddFormattedReport(ReportSection, "Min Avg. Power (dBm), %-6.3f, Limit, %-6.3f,
%s",
p_result->d_min_avg_pwr, p_rTdaNsftCfg->m_dTDA_NSFT_MIN_PWR_AVG_HIGH[index],
(bPass?"PASS":"FAIL") );
4,lte项目
LTE可以直接在CFG文件中取消。如下
####################################################
;[LTE NSFT Test Case_1]
TRX Power Measurement peration = 0
MCS Mode = 4
BAND Indicator = BAND1
; RX test
Downlink Frequency(100Khz) = 21400
Downlink Power (dBm) = -70,;这里设置下行测试时的功率最多设置5个点
BER Test Bit Map = 1,1,1,1,1,;这里与上面设置的下行功率对于,为1,表示check,为0,表示取消
RSRP Test Bit Map = 1,1,1,1,1,;同上
RSRQ Test Bit Map = 1,1,1,1,1,;同上
RSSI Test Bit Map = 1,1,1,1,1,;同上
; TX test
Uplink Frequency(100Khz) = 19500
Uplink Power (dBm) = 18,20,22;这里设置上行测试时的功率最多设置8个点
RB ffset = 0,0,0,0,0,0,0,0
RB Length = 25,25,25,25,25,25,25,25
MTK平台
Tx Power Test Bit Map = 1,1,1,1,1,1,1,1;这里与上面设置的上行功率对于,为1,表示check,为0,表示取消
EVM Test Bit Map = 1,1,1,1,1,1,1,1;同上
ACLR Test Bit Map = 1,1,1,1,1,1,1,1;同上
SEM Test Bit Map = 1,1,1,1,1,1,1,1;同上
Flatness Test Bit Map = 1,1,1,1,1,1,1,1;同上
Gain Error Test Bit Map = 1,1,1,1,1,1,1,1;同上
Phase Error Test Bit Map = 1,1,1,1,1,1,1,1;同上