📄 t_wifi_txpcl.cpp
字号:
max_ch_num = NUM_TX_POWER_2400M_CH;
d_max_p = m_dCCK_MAX_P;
d_min_p = m_dCCK_MIN_P;
mod = WIFI_MOD_CCK;
if (IQVIEW == m_pWft->device_type)
{
d_CL = m_pWft->iqv.d_2_4g_cl;
m_pWft->iqv.p_handle->rx.ampl = m_dCCK_WANTED_P + 2;
m_pWft->iqv.p_handle->adc.sampling_time = 0.005;
}
else
{
d_CL = m_pWft->s_age_n4010a.d_2_4g_cl;
d_n4010a_power_range = m_dCCK_WANTED_P + 5;
}
wifi_cpt.tx_rate = m_eCCK_CHECK_RATE;
}
break;
case WIFI_802_11G_IDX:
{
if (!IsWiFiSupported(m_asWiFi_Support, e_802_11_idx))
{
e_802_11_idx++;
continue;
}
as_check_channel = m_as802_11G_CHECK_CHANNEL;
max_ch_num = NUM_TX_POWER_2400M_CH;
d_max_p = m_dOFDM_MAX_P;
d_min_p = m_dOFDM_MIN_P;
mod = WIFI_MOD_OFDM;
if (IQVIEW == m_pWft->device_type)
{
d_CL = m_pWft->iqv.d_2_4g_cl;
m_pWft->iqv.p_handle->rx.ampl = m_dOFDM_WANTED_P + 10;
m_pWft->iqv.p_handle->adc.sampling_time = 0.001;
}
else
{
d_CL = m_pWft->s_age_n4010a.d_2_4g_cl;
d_n4010a_power_range = m_dOFDM_WANTED_P + 5;
}
wifi_cpt.tx_rate = m_eOFDM_CHECK_RATE;
}
break;
default:
assert(false);
break;
} // switch
log->Add( "\n" + DateToStr(Date()) + " " + CurrentTimeStr() +
" ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
);
if( ! m_wft_ctrl.WFT_SetTriggerStyle( m_pWft ) )
{
PostMessage(
ctrl.hPostMsgDestHandle,
WM_MF_WIFI_SET_TRIGGER_STYLE_FAIL,
0,
0
);
log->Add( DateToStr(Date()) + " " + CurrentTimeStr() +
" WiFi tester sets trigger style fail "
);
return false;
}
if (!m_wft_ctrl.WFT_SetPowerRange(m_pWft, d_n4010a_power_range))
{
PostMessage(ctrl.hPostMsgDestHandle,
WM_MF_WIFI_SET_POWER_RANGE_FAIL,
0,
0
);
log->Add( DateToStr(Date()) + " " + CurrentTimeStr() +
" WiFi tester < power range = " + Double_To_AnsiString(d_n4010a_power_range) + " dBm fail"
);
return false;
}
s_check_ch_freq_mhz.ch_num = String_To_Array_UnsignedInteger(as_check_channel.c_str(), s_check_ch_freq_mhz.ch_freq_MHz, max_ch_num);
for (int check_ch_idx=0; check_ch_idx<s_check_ch_freq_mhz.ch_num; check_ch_idx++)
{
unsigned int freq_khz = s_check_ch_freq_mhz.ch_freq_MHz[check_ch_idx] * 1000;
// m_pWft->iqv.p_handle->rx.freq = 1000*freq_khz;
if (!m_wft_ctrl.WFT_SetCentralFreq(m_pWft, (double) s_check_ch_freq_mhz.ch_freq_MHz[check_ch_idx]))
{
PostMessage(
ctrl.hPostMsgDestHandle,
WM_MF_WIFI_SET_CENTRAL_FREQ_FAIL,
0,
0
);
log->Add( DateToStr(Date()) + " " + CurrentTimeStr() +
" WiFi tester < RX channel frequency = " + Double_To_AnsiString(s_check_ch_freq_mhz.ch_freq_MHz[check_ch_idx]) + " MHz fail"
);
return false;
}
log->Add(DateToStr(Date()) + " " + CurrentTimeStr() +
" WiFi tester < RX channel frequency = " + Double_To_AnsiString(s_check_ch_freq_mhz.ch_freq_MHz[check_ch_idx]) + " MHz"
);
if (!m_wft_ctrl.WFT_ApplyChange(m_pWft))
{
PostMessage(
ctrl.hPostMsgDestHandle,
WM_MF_WIFI_APPLY_CHANGE_FAIL,
0,
0
);
log->Add( DateToStr(Date()) + " " + CurrentTimeStr() +
" WiFi tester applies change value fail "
);
return false;
}
wifi_cpt.channel_freq = freq_khz;
nvram_ch_idx = GetWiFiNVRAMChannelIndex(e_802_11_idx, s_check_ch_freq_mhz.ch_freq_MHz[check_ch_idx]);
wifi_cpt.tx_pwr_dac = m_pCal->s_cal_obj.pc_WIFI_APC_Obj->Get_TxPowerDac(e_802_11_idx, mod, nvram_ch_idx);
pkt_tx_ex.ch_freq = wifi_cpt.channel_freq;
pkt_tx_ex.tx_rate = wifi_cpt.tx_rate;
pkt_tx_ex.tx_gain_dac = wifi_cpt.tx_pwr_dac;
pkt_tx_ex.txAnt = 0;
pkt_tx_ex.txFlags = 0;
pkt_tx_ex.targetAlc = 0;
log->Add(DateToStr(Date()) + " " + CurrentTimeStr() +
" Dac[" + IntToStr(nvram_ch_idx) + "] = " + IntToStr(wifi_cpt.tx_pwr_dac)
);
// stop continuous packet TX
META_RESULT MetaResult = META_WiFi_Stop_r(m_pCal->i_MainMETAHandle, 500);
if (META_SUCCESS != MetaResult)
{
CalErrorHandler(WM_MF_WIFI_CPT_FAIL);
log->Add(DateToStr(Date()) + " " + CurrentTimeStr() +
" FAIL: Target > WiFi stop fail."
);
return false;
}
Sleep(50);
// start continuos packet TX
MetaResult = META_WiFi_SetRegDomain_r(m_pCal->i_MainMETAHandle, 500, &wifi_cpt.reg_domain );
if (META_SUCCESS != MetaResult)
{
CalErrorHandler(WM_MF_WIFI_CPT_FAIL);
log->Add(DateToStr(Date()) + " " + CurrentTimeStr() +
" FAIL: Target > WiFi set reg domain fail."
);
return false;
}
WiFi_TestPktTx_S pkt_tx;
m_cWIFI_CPT_Obj.Compose_MacHeader(wifi_cpt.s_mac_header, pkt_tx_ex.mac_header);
if (m_pCal->b_WiFiAlcSupport)
{
MetaResult = META_WiFi_ContPktTx_Ex_r(m_pCal->i_MainMETAHandle, 500, &pkt_tx_ex);
}
else
{
pkt_tx.ch_freq = pkt_tx_ex.ch_freq;
pkt_tx.tx_rate = pkt_tx_ex.tx_rate;
pkt_tx.tx_gain_dac = pkt_tx_ex.tx_gain_dac;
pkt_tx.pktCount = pkt_tx_ex.pktCount;
pkt_tx.pktInterval = pkt_tx_ex.pktInterval;
pkt_tx.pktLength = pkt_tx_ex.pktLength;
pkt_tx.pattern = pkt_tx_ex.pattern;
pkt_tx.txAnt = pkt_tx_ex.txAnt;
pkt_tx.is_short_preamble = pkt_tx_ex.is_short_preamble;
for (int i=0; i<24; i++)
{
pkt_tx.mac_header[i] = pkt_tx_ex.mac_header[i];
}
MetaResult = META_WiFi_ContPktTx_r(m_pCal->i_MainMETAHandle, 500, &pkt_tx);
}
if (META_SUCCESS != MetaResult)
{
CalErrorHandler(WM_MF_WIFI_CPT_FAIL);
log->Add(DateToStr(Date()) + " " + CurrentTimeStr() +
" FAIL: Target > WiFi continuous packet TX fail."
);
return false;
}
Sleep(100);
if (! m_wft_ctrl.WFT_DataCapture(m_pWft))
{
PostMessage(
ctrl.hPostMsgDestHandle,
WM_MF_WIFI_APPLY_CHANGE_FAIL,
0,
0
);
log->Add(DateToStr(Date()) + " " + CurrentTimeStr() +
" WiFi tester applies change value fail "
);
return false;
}
if (!m_wft_ctrl.WFT_PowerAnalyze(m_pWft))
{
PostMessage(
ctrl.hPostMsgDestHandle,
WM_MF_WIFI_ANALYZE_POWER_FAIL,
0,
0
);
log->Add(DateToStr(Date()) + " " + CurrentTimeStr() +
" WiFi tester analyzes TX power fail "
);
return false;
}
if (!m_wft_ctrl.WFT_ReadPower(m_pWft, virTX))
{
PostMessage(
ctrl.hPostMsgDestHandle,
WM_MF_WIFI_READ_POWER_FAIL,
0,
0
);
log->Add(DateToStr(Date()) + " " + CurrentTimeStr() +
" WiFi tester reads TX power fail "
);
return false;
}
virTX = virTX - d_CL;
if (virTX > d_max_p || virTX < d_min_p)
{
log->Add(DateToStr(Date()) + " " + CurrentTimeStr() +
" WiFi tester > read TX power = "+ Double_To_AnsiString( virTX ) +
" ( Out of Range ), min TX power = " + Double_To_AnsiString( d_min_p ) + ", max TX power = " + Double_To_AnsiString( d_max_p )
);
out_of_range_flag = true;
}
else
{
log->Add(DateToStr(Date()) + " " + CurrentTimeStr() +
" WiFi tester > read TX power = "+ Double_To_AnsiString( virTX ) +
" ( Pass ), min TX power = " + Double_To_AnsiString( d_min_p ) + ", max TX power = " + Double_To_AnsiString( d_max_p )
);
}
} // for(ch_idx)
e_802_11_idx++;
} // while
META_RESULT MetaResult = META_WiFi_Stop_r( m_pCal->i_MainMETAHandle, 500 );
if (META_SUCCESS != MetaResult)
{
CalErrorHandler(WM_MF_WIFI_CPT_FAIL);
log->Add(DateToStr(Date()) + " " + CurrentTimeStr() +
" FAIL: Target > WiFi stop fail."
);
return false;
}
if (out_of_range_flag)
{
CalErrorHandler(WM_MF_RF_TX_LEVEL_CHECK_FAIL );
log->Add(DateToStr(Date()) + " " + CurrentTimeStr() +
" FAIL : WiFi TX power check " + "\n"
);
return false;
}
if (m_pCal->b_WiFiAlcSupport)
{
WriteWiFiALCCalResultToFile(as_ID+".cal",Application->ExeName, m_pCal->b_CalResultPath);
}
frmFatcory->DisableAllCalTimer();
PostMessage(ctrl.hPostMsgDestHandle,
WM_MF_WIFI_TX_POWER_CALIBRATION_DONE,
0,
0
);
log->Add(DateToStr(Date()) + " " + CurrentTimeStr() +
" ====================== WiFi TX power check end ===================== "
);
return true;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -