form_wifialc2400m.cpp
来自「MTK 手机软件开发 META 源代码,开发环境: C++ Builder」· C++ 代码 · 共 1,012 行 · 第 1/3 页
CPP
1,012 行
{
for (int j=0; j<WIFI_ALC_2400M_CH_NUM; j++)
{
m_sWiFiAlcPower2400M.txAlcOFDM[i][j] = m_sWiFiAlcPower2400M.txAlcOFDM[m_pnlOFDMTxRate->Tag][j] + m_cOFDMTxAlcOffset[i];
m_sWiFiAlcPower2400M.txOutputPowerDBOFDM[i][j] = m_sWiFiAlcPower2400M.txOutputPowerDBOFDM[m_pnlOFDMTxRate->Tag][j] + m_cOFDMTxOutputPowerOffset[i];
}
}
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmWiFiALC2400M::edtOFDMTxAlcOffsetCheck(TObject *Sender)
{
char c_data;
AnsiString text;
TEdit *edit = (TEdit*)Sender;
char hint[] = " value shall be -128~127 ";
text = edit->Text;
if (!IsValidWiFiAlcOffset(text, c_data))
{
ShowHintLabel(edit, hint);
edit->SetFocus();
return;
}
m_cOFDMTxAlcOffset[edit->Tag] = c_data;
}
//---------------------------------------------------------------------------
void __fastcall TfrmWiFiALC2400M::edtOFDMTxOutputPowerOffsetCheck(
TObject *Sender)
{
char c_data;
AnsiString text;
TEdit *edit = (TEdit*)Sender;
char hint[] = " value shall be -128~127 ";
text = edit->Text;
if (!IsValidWiFiAlcOffset(text, c_data))
{
ShowHintLabel(edit, hint);
edit->SetFocus();
return;
}
m_cOFDMTxOutputPowerOffset[edit->Tag] = c_data;
}
//---------------------------------------------------------------------------
void __fastcall TfrmWiFiALC2400M::m_edtALCSlopDividerCheck(TObject *Sender)
{
unsigned char uc_data;
AnsiString text;
TEdit *edit = (TEdit*)Sender;
char hint[] = " value shall be 1~100 ";
text = edit->Text;
if (!IsValidWiFiAlcSlopeDivider(text, uc_data))
{
ShowHintLabel(edit, hint);
edit->SetFocus();
return;
}
if (0 == edit->Tag)
{
m_sWiFiAlcSlope2400M.alcSlop1Divider = uc_data;
}
else
{
m_sWiFiAlcSlope2400M.alcSlop2Divider = uc_data;
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmWiFiALC2400M::m_edtALCSlopDividendCheck(
TObject *Sender)
{
unsigned char uc_data;
AnsiString text;
TEdit *edit = (TEdit*)Sender;
char hint[] = " value shall be 1~100 ";
text = edit->Text;
if (!IsValidWiFiAlcSlopeDividend(text, uc_data))
{
ShowHintLabel(edit, hint);
edit->SetFocus();
return;
}
if (0 == edit->Tag)
{
m_sWiFiAlcSlope2400M.alcSlop1Dividend = uc_data;
}
else
{
m_sWiFiAlcSlope2400M.alcSlop2Dividend = uc_data;
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmWiFiALC2400M::btnChangeDBClick(TObject *Sender)
{
frmMainSel->mnuFDMDatabaseClick(Sender);
if (!NVRAMMan->Get_IsInit())
{
m_sbALC->Panels->Items[0]->Text = (AnsiString) " NVRAM database file initialization fail";
Application->MessageBox("Execution Failure : NVRAM database file initialization fail", "FAILURE", MB_OK);
return;
}
m_sbALC->Panels->Items[0]->Text = (AnsiString) " Change NVRAM database file successfully";
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void TfrmWiFiALC2400M::Compose_EEPROM_Parameter(E_WIFI_EE_ALC_TYPE_T type)
{
switch (type)
{
case WIFI_EE_ALC_TYPE_2_4_G_CCK:
{
m_sEE.count = 14;
for (unsigned int i=0; i<m_sEE.count; i++)
{
m_sEE.eeprom[i].index = ADDR_MT5911_EEPROM_2_4G_CCK_ALC + i;
}
}
break;
case WIFI_EE_ALC_TYPE_2_4_G_OFDM:
{
m_sEE.count = 14;
for (unsigned int i=0; i<m_sEE.count; i++)
{
m_sEE.eeprom[i].index = ADDR_MT5911_EEPROM_2_4G_OFDM_ALC + i;
}
}
break;
case WIFI_EE_ALC_TYPE_SLOPE:
{
m_sEE.count = 2;
for (unsigned int i=0; i<m_sEE.count; i++)
{
m_sEE.eeprom[i].index = ADDR_MT5911_EEPROM_ALC_SLOPE + i;
}
}
break;
}
}
//---------------------------------------------------------------------------
void TfrmWiFiALC2400M::WiFiAlcEEToNVRAMFormat(E_WIFI_EE_ALC_TYPE_T type)
{
switch (type)
{
case WIFI_EE_ALC_TYPE_2_4_G_CCK:
{
for (int i=0; i<WIFI_ALC_2400M_CH_NUM; i++)
{
m_sWiFiAlcPower2400M.txAlcCCK[i] = m_sEE.eeprom[i].eeprom_data16 & 0x00FF;
m_sWiFiAlcPower2400M.txOutputPowerDBCCK[i] = (m_sEE.eeprom[i].eeprom_data16 & 0xFF00) >> 8;
}
}
break;
case WIFI_EE_ALC_TYPE_2_4_G_OFDM:
{
for (int i=0; i<WIFI_ALC_2400M_TX_RATE_NUM; i++)
{
for (int j=0; j<WIFI_ALC_2400M_CH_NUM; j++)
{
m_sWiFiAlcPower2400M.txAlcOFDM[i][j] = m_sEE.eeprom[i].eeprom_data16 & 0x00FF;
m_sWiFiAlcPower2400M.txOutputPowerDBOFDM[i][j] = (m_sEE.eeprom[i].eeprom_data16 & 0xFF00) >> 8;
}
}
}
break;
case WIFI_EE_ALC_TYPE_SLOPE:
{
m_sWiFiAlcSlope2400M.alcSlop1Divider = m_sEE.eeprom[0].eeprom_data16 & 0x00FF;
m_sWiFiAlcSlope2400M.alcSlop1Dividend = (m_sEE.eeprom[0].eeprom_data16 & 0xFF00) >> 8;
m_sWiFiAlcSlope2400M.alcSlop2Divider = m_sEE.eeprom[1].eeprom_data16 & 0x00FF;
m_sWiFiAlcSlope2400M.alcSlop2Dividend = (m_sEE.eeprom[1].eeprom_data16 & 0xFF00) >> 8;
}
break;
}
}
//===========================================================================
void __fastcall TfrmWiFiALC2400M::m_btnLoadFromEEPROMClick(TObject *Sender)
{
CurrentPageLock();
Compose_EEPROM_Parameter(WIFI_EE_ALC_TYPE_2_4_G_CCK);
m_WIFI_EE_Obj.ConfirmCallback = ::CNF_ReadAlcCCKFromEE;
m_WIFI_EE_Obj.REQ_Read_From_EE_Start(m_sEE);
m_sbALC->Panels->Items[0]->Text = (AnsiString)" Load WiFi ALC setting from EEPROM progressing";
}
//-------------------------------------------
void TfrmWiFiALC2400M::CNF_ReadAlcCCKFromEE(void)
{
E_METAAPP_RESULT_T state = m_WIFI_EE_Obj.Get_ConfirmState();
switch (state)
{
case METAAPP_SUCCESS:
{
m_sEE = m_WIFI_EE_Obj.Get_EE();
WiFiAlcEEToNVRAMFormat(WIFI_EE_ALC_TYPE_2_4_G_CCK);
Compose_EEPROM_Parameter(WIFI_EE_ALC_TYPE_2_4_G_OFDM);
m_WIFI_EE_Obj.ConfirmCallback = ::CNF_ReadAlcOFDMFromEE;
m_WIFI_EE_Obj.REQ_Read_From_EE_Start(m_sEE);
}
break;
case METAAPP_FAIL:
{
m_sbALC->Panels->Items[0]->Text = (AnsiString)" Load WiFi ALC setting from EEPROM fail";
Application->MessageBox("Execution Timeout : Load WiFi ALC setting from EEPROM", "FAIL", MB_OK);
CurrentPageReset();
}
break;
case METAAPP_TIMEOUT:
{
m_sbALC->Panels->Items[0]->Text = (AnsiString)" Load WiFi ALC setting from EEPROM timeout";
Application->MessageBox( "Execution Timeout : Load WiFi ALC setting from EEPROM", "TIMEOUT", MB_OK );
CurrentPageReset();
}
break;
case METAAPP_STOP:
{
m_sbALC->Panels->Items[0]->Text = (AnsiString)" Load WiFi ALC setting from EEPROM stop";
CurrentPageReset();
}
break;
}
}
//----------------------------------------
void TfrmWiFiALC2400M::CNF_ReadAlcOFDMFromEE(void)
{
E_METAAPP_RESULT_T state = m_WIFI_EE_Obj.Get_ConfirmState();
switch (state)
{
case METAAPP_SUCCESS:
{
m_sEE = m_WIFI_EE_Obj.Get_EE();
WiFiAlcEEToNVRAMFormat(WIFI_EE_ALC_TYPE_2_4_G_OFDM);
Compose_EEPROM_Parameter(WIFI_EE_ALC_TYPE_SLOPE);
m_WIFI_EE_Obj.ConfirmCallback = ::CNF_ReadAlcSlopeFromEE;
m_WIFI_EE_Obj.REQ_Read_From_EE_Start(m_sEE);
}
break;
case METAAPP_FAIL:
{
m_sbALC->Panels->Items[0]->Text = (AnsiString)" Load WiFi ALC setting power from EEPROM fail";
Application->MessageBox("Execution Timeout : Load WiFi ALC setting from EEPROM", "FAIL", MB_OK);
CurrentPageReset();
}
break;
case METAAPP_TIMEOUT:
{
m_sbALC->Panels->Items[0]->Text = (AnsiString)" Load WiFi ALC setting from EEPROM timeout";
Application->MessageBox("Execution Timeout : Load WiFi ALC setting from EEPROM", "TIMEOUT", MB_OK);
CurrentPageReset();
}
break;
case METAAPP_STOP:
{
m_sbALC->Panels->Items[0]->Text = (AnsiString)" Load WiFi ALC setting from EEPROM stop";
CurrentPageReset();
}
break;
}
}
//----------------------------------------
void TfrmWiFiALC2400M::CNF_ReadAlcSlopeFromEE(void)
{
E_METAAPP_RESULT_T state = m_WIFI_EE_Obj.Get_ConfirmState();
switch (state)
{
case METAAPP_SUCCESS:
{
m_sEE = m_WIFI_EE_Obj.Get_EE();
WiFiAlcEEToNVRAMFormat(WIFI_EE_ALC_TYPE_SLOPE);
ReDrawFields(DRAW_MASK_WIFI_ALC2400M_CCK_ALC |
DRAW_MASK_WIFI_ALC2400M_CCK_POWER |
DRAW_MASK_WIFI_ALC2400M_OFDM_ALC |
DRAW_MASK_WIFI_ALC2400M_OFDM_POWER |
DRAW_MASK_WIFI_ALC2400M_SLOPE);
m_sbALC->Panels->Items[0]->Text = (AnsiString)" Load WiFi ALC setting from EEPROM successfully";
}
break;
case METAAPP_FAIL:
{
m_sbALC->Panels->Items[0]->Text = (AnsiString)" Load WiFi ALC setting from EEPROM fail";
Application->MessageBox( "Execution Timeout : Load WiFi ALC setting from EEPROM", "FAIL", MB_OK );
}
break;
case METAAPP_TIMEOUT:
{
m_sbALC->Panels->Items[0]->Text = (AnsiString)" Load WiFi ALC setting from EEPROM timeout";
Application->MessageBox( "Execution Timeout : Load WiFi ALC setting from EEPROM", "TIMEOUT", MB_OK );
}
break;
case METAAPP_STOP:
{
m_sbALC->Panels->Items[0]->Text = (AnsiString)" Load WiFi ALC setting from EEPROM stop";
}
break;
}
CurrentPageReset();
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?