form_wifieeprom.cpp
来自「MTK 手机软件开发 META 源代码,开发环境: C++ Builder」· C++ 代码 · 共 825 行 · 第 1/2 页
CPP
825 行
}
//---------------------------------------------------------------------------
void __fastcall TfrmWiFiEEPROM::edtSNCheck(TObject *Sender)
{
AnsiString text;
unsigned int uidata;
TEdit *edit = (TEdit*)Sender;
char hint[] = " value shall be 0~0xFFFFFFFF ";
text = edit->Text;
if( 0 == btnWGI->Tag ) // Dec
{
if( !IsValidDecWiFiSN( text, uidata ) )
{
ShowHintLabel( edit, hint );
edit->SetFocus();
return;
}
}
else
{
if( !IsValidHexWiFiSN( text, uidata ) )
{
ShowHintLabel( edit, hint );
edit->SetFocus();
return;
}
}
m_sEEGeneral.uiSN = uidata;
}
//---------------------------------------------------------------------------
void __fastcall TfrmWiFiEEPROM::edtMACAddrCheck(TObject *Sender)
{
AnsiString text;
unsigned char mac_addr_char;
TEdit *edit = (TEdit*)Sender;
char hint[] = " value shall be 0x00~0xFF ";
text = edit->Text;
if( 0 == btnWGI->Tag ) // Dec
{
if( !IsValidDecWiFiMACAddress( text, mac_addr_char ) )
{
ShowHintLabel( edit, hint );
edit->SetFocus();
return;
}
}
else
{
if( !IsValidHexWiFiMACAddress( text, mac_addr_char ) )
{
ShowHintLabel( edit, hint );
edit->SetFocus();
return;
}
}
m_sEEGeneral.sMACAddr.mac_addr[edit->Tag] = mac_addr_char;
}
//---------------------------------------------------------------------------
void __fastcall TfrmWiFiEEPROM::btnUploadFromEEPROMClick(TObject *Sender)
{
m_sEE.count = WIFI_EE_LEN_BB_CHIP_ID +
WIFI_EE_LEN_RF_CHIP_ID +
WIFI_EE_LEN_SN +
WIFI_EE_LEN_MAC_ADDR +
WIFI_EE_LEN_RESERVED0 +
WIFI_EE_LEN_TX_IQ +
WIFI_EE_LEN_RESERVED1 +
WIFI_EE_LEN_RESERVED2 +
WIFI_EE_LEN_CHECKSUM +
WIFI_EE_LEN_TXP_2_4_G;
for (unsigned int i=0; i<m_sEE.count; i++ )
{
m_sEE.eeprom[i].index = 2*i;
}
m_WIFI_EE_Obj.ConfirmCallback = ::ConfirmCallback_ReadEE;
m_WIFI_EE_Obj.REQ_Read_From_EE_Start( m_sEE );
sbWiFiEEPROM->Panels->Items[0]->Text = (AnsiString)" Read EEPROM progressing";
}
//---------------------------------------------------------------------------
void TfrmWiFiEEPROM::ConfirmCallback_ReadEE( 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();
ReDrawFields( PNLIDX_WGI | PNLIDX_TXDC | PNLIDX_2400MTXP );
sbWiFiEEPROM->Panels->Items[0]->Text = (AnsiString)" Read EEPROM successfully";
}
break;
case METAAPP_FAIL:
{
sbWiFiEEPROM->Panels->Items[0]->Text = (AnsiString)" Read EEPROM fail";
Application->MessageBox( "Execution Fail : Read EEPROM", "FAIL", MB_OK );
}
break;
case METAAPP_TIMEOUT:
{
sbWiFiEEPROM->Panels->Items[0]->Text = (AnsiString)" Read EEPROM timeout";
Application->MessageBox( "Execution Timeout : Read EEPROM", "TIMEOUT", MB_OK );
}
break;
case METAAPP_STOP:
{
sbWiFiEEPROM->Panels->Items[0]->Text = (AnsiString)" Read EEPROM stop";
}
break;
}
CurrentPageReset();
}
//---------------------------------------------------------------------------
void __fastcall TfrmWiFiEEPROM::btnDownloadToEEPROMClick(TObject *Sender)
{
// m_sEE.eeprom_index = WIFI_EE_ADDR_BB_CHIP_ID;
m_sEE.count = WIFI_EE_LEN_BB_CHIP_ID +
WIFI_EE_LEN_RF_CHIP_ID +
WIFI_EE_LEN_SN +
WIFI_EE_LEN_MAC_ADDR +
WIFI_EE_LEN_RESERVED0 +
WIFI_EE_LEN_TX_IQ +
WIFI_EE_LEN_RESERVED1 +
WIFI_EE_LEN_RESERVED2 +
WIFI_EE_LEN_CHECKSUM +
WIFI_EE_LEN_TXP_2_4_G;
for (unsigned int i=0; i<m_sEE.count; i++)
{
m_sEE.eeprom[i].index = 2*i;
}
m_sEEGeneral.ucChecksum = m_WIFI_EE_Obj.Calculate_Checksum( m_sEEGeneral );
Compose_EEPROM_Data();
m_WIFI_EE_Obj.ConfirmCallback = ::ConfirmCallback_WriteEE;
m_WIFI_EE_Obj.REQ_Write_To_EE_Start( m_sEE );
sbWiFiEEPROM->Panels->Items[0]->Text = (AnsiString)" Write EEPROM progressing";
}
//---------------------------------------------------------------------------
void TfrmWiFiEEPROM::ConfirmCallback_WriteEE( void )
{
E_METAAPP_RESULT_T state = m_WIFI_EE_Obj.Get_ConfirmState();
switch( state )
{
case METAAPP_SUCCESS:
{
sbWiFiEEPROM->Panels->Items[0]->Text = (AnsiString)" Write EEPROM successfully";
}
break;
case METAAPP_FAIL:
{
sbWiFiEEPROM->Panels->Items[0]->Text = (AnsiString)" Write EEPROM fail";
Application->MessageBox( "Execution Timeout : Write EEPROM", "FAIL", MB_OK );
}
break;
case METAAPP_TIMEOUT:
{
sbWiFiEEPROM->Panels->Items[0]->Text = (AnsiString)" Write EEPROM timeout";
Application->MessageBox( "Execution Timeout : Write EEPROM", "TIMEOUT", MB_OK );
}
break;
case METAAPP_STOP:
{
sbWiFiEEPROM->Panels->Items[0]->Text = (AnsiString)" Write EEPROM stop";
}
break;
}
CurrentPageReset();
}
//---------------------------------------------------------------------------
void __fastcall TfrmWiFiEEPROM::btnLoadFromFileClick(TObject *Sender)
{
char str[512];
bool ok;
float fdata;
ok = OpenDialog->Execute();
if( !ok )
{
sbWiFiEEPROM->Panels->Items[0]->Text = (AnsiString) " Load WiFi EEPROM setting from file fail";
return;
}
strcpy( str, OpenDialog->FileName.c_str() );
// General information
//if( cbWGIHeader->Checked )
{
ok = m_WIFI_EE_Obj.REQ_Read_General_Info_From_File( str );
if( !ok )
{
sbWiFiEEPROM->Panels->Items[0]->Text = (AnsiString) " Load WiFi EEPROM setting from file fail";
Application->MessageBox( "Execution Failure : Load WiFi EEPROM setting from file", "FAILURE", MB_OK );
return;
}
m_sEEGeneral = m_WIFI_EE_Obj.Get_EEGeneral();
}
ReDrawFields( PNLIDX_WGI | PNLIDX_TXDC | PNLIDX_2400MTXP );
sbWiFiEEPROM->Panels->Items[0]->Text = (AnsiString) " Load WiFi TX setting from file successfully";
}
//---------------------------------------------------------------------------
void __fastcall TfrmWiFiEEPROM::btnSaveToFileClick(TObject *Sender)
{
char str[512];
bool ok;
ok = SaveDialog->Execute();
if( !ok )
{
sbWiFiEEPROM->Panels->Items[0]->Text = (AnsiString) " Save WiFi EEPROM setting to file fail";
return;
}
if( ! CheckFields() )
{
sbWiFiEEPROM->Panels->Items[0]->Text = (AnsiString) " Save WiFi EEPROM setting to file fail";
return;
}
strcpy( str, SaveDialog->FileName.c_str() );
/// General information
// if( cbWGIHeader->Checked )
{
m_WIFI_EE_Obj.Set_EEGeneral( m_sEEGeneral );
ok = m_WIFI_EE_Obj.REQ_Write_General_Info_To_File( str );
if( !ok )
{
sbWiFiEEPROM->Panels->Items[0]->Text = (AnsiString) " Save WiFi EEPROM setting to file fail";
Application->MessageBox( "Execution Failure : Save WiFi EEPROM setting to file", "FAILURE", MB_OK );
return;
}
}
// TX DC offset
// if( cbTXDCHeader->Checked )
{
m_WIFI_EE_Obj.Set_TxDcOffset( m_sEEGeneral.sTxDcOffset );
ok = m_WIFI_EE_Obj.REQ_Write_TX_DC_Offset_To_File( str );
if( !ok )
{
sbWiFiEEPROM->Panels->Items[0]->Text = (AnsiString) " Save WiFi EEPROM setting to file fail";
Application->MessageBox( "Execution Failure : Save WiFi EEPROM setting to file", "FAILURE", MB_OK );
return;
}
}
// 2.4G TX power table
// if( cb2400MTXPHeader->Checked )
{
if( m_sWiFiCap.support_802_11g || m_sWiFiCap.support_802_11b )
{
m_WIFI_EE_Obj.Set_TxChannelDac2400M( m_sTxPwr2400M );
ok = m_WIFI_EE_Obj.REQ_Write_TxPower2400M_To_File( str );
if( !ok )
{
sbWiFiEEPROM->Panels->Items[0]->Text = (AnsiString) " Save WiFi EEPROM setting to file fail";
Application->MessageBox( "Execution Failure : Save WiFi EEPROM setting to file", "FAILURE", MB_OK );
return;
}
}
}
sbWiFiEEPROM->Panels->Items[0]->Text = (AnsiString) " Save WiFi EEPROM setting to file successfully";
}
//---------------------------------------------------------------------------
void __fastcall TfrmWiFiEEPROM::HintTimerTimer(TObject *Sender)
{
HintTimer->Enabled = false;
lblHint->Visible = false;
}
//---------------------------------------------------------------------------
void TfrmWiFiEEPROM::Compose_EEPROM_Data( void )
{
// BB chip ID
m_sEE.eeprom[WIFI_EE_ADDR_BB_CHIP_ID].eeprom_data16 = m_sEEGeneral.usBBChipID;
// RF chip ID
m_sEE.eeprom[WIFI_EE_ADDR_RF_CHIP_ID].eeprom_data16 = m_sEEGeneral.usRFChipID;
// SN
m_sEE.eeprom[WIFI_EE_ADDR_SN].eeprom_data16 = m_sEEGeneral.uiSN & 0x0000FFFF;
m_sEE.eeprom[WIFI_EE_ADDR_SN+1].eeprom_data16 = m_sEEGeneral.uiSN & 0xFFFF0000 >> 16;
// MAC address
for( int i=0; i< sizeof(m_sEEGeneral.sMACAddr.mac_addr)/sizeof(m_sEEGeneral.sMACAddr.mac_addr[0]); i=i+2 )
{
m_sEE.eeprom[WIFI_EE_ADDR_MAC_ADDR+i/2].eeprom_data16 = m_sEEGeneral.sMACAddr.mac_addr[i] | (m_sEEGeneral.sMACAddr.mac_addr[i+1]<<8);
}
// reserved 0
m_sEE.eeprom[WIFI_EE_ADDR_RESERVED0].eeprom_data16 = m_sEEGeneral.usReserved0;
// TX DC offset
m_sEE.eeprom[WIFI_EE_ADDR_TX_IQ].eeprom_data16 = m_sEEGeneral.sTxDcOffset.q_ch_offset;
m_sEE.eeprom[WIFI_EE_ADDR_TX_IQ].eeprom_data16 = (m_sEE.eeprom[WIFI_EE_ADDR_TX_IQ].eeprom_data16 << 8) |
m_sEEGeneral.sTxDcOffset.i_ch_offset;
// reserved 1
m_sEE.eeprom[WIFI_EE_ADDR_RESERVED1].eeprom_data16 = m_sEEGeneral.usReserved1;
// checksum
m_sEE.eeprom[WIFI_EE_ADDR_CHECKSUM].eeprom_data16 = m_sEEGeneral.ucChecksum;
m_sEE.eeprom[WIFI_EE_ADDR_CHECKSUM].eeprom_data16 = (m_sEE.eeprom[WIFI_EE_ADDR_CHECKSUM].eeprom_data16 << 8) |
m_sEEGeneral.ucReserved2;
// reserved 3
m_sEE.eeprom[WIFI_EE_ADDR_RESERVED3].eeprom_data16 = m_usReserved3;
}
//---------------------------------------------------------------------------
void TfrmWiFiEEPROM::DeCompose_EEPROM_Data( void )
{
int i, j;
// WiFi general information
// BB chip ID
m_sEEGeneral.usBBChipID = m_sEE.eeprom[WIFI_EE_ADDR_BB_CHIP_ID].eeprom_data16;
// RF chip ID
m_sEEGeneral.usRFChipID = m_sEE.eeprom[WIFI_EE_ADDR_RF_CHIP_ID].eeprom_data16;
// SN
m_sEEGeneral.uiSN = (m_sEE.eeprom[WIFI_EE_ADDR_SN+1].eeprom_data16<<16) |
m_sEE.eeprom[WIFI_EE_ADDR_SN].eeprom_data16;
// MAC address
for( i=0; i< sizeof(m_sEEGeneral.sMACAddr.mac_addr)/sizeof(m_sEEGeneral.sMACAddr.mac_addr[0]); i++ )
{
if( 0 == i % 2 )
{
m_sEEGeneral.sMACAddr.mac_addr[i] = m_sEE.eeprom[WIFI_EE_ADDR_MAC_ADDR+i/2].eeprom_data16 & 0x00FF;
}
else
{ m_sEEGeneral.sMACAddr.mac_addr[i] = (m_sEE.eeprom[WIFI_EE_ADDR_MAC_ADDR+i/2].eeprom_data16 & 0xFF00) >> 8;
}
}
// reserve 0
m_sEEGeneral.usReserved0 = m_sEE.eeprom[WIFI_EE_ADDR_RESERVED0].eeprom_data16;
// TX IQ offset
m_sEEGeneral.sTxDcOffset.q_ch_offset = (m_sEE.eeprom[WIFI_EE_ADDR_TX_IQ].eeprom_data16&0xFF00)>>8;
m_sEEGeneral.sTxDcOffset.i_ch_offset = m_sEE.eeprom[WIFI_EE_ADDR_TX_IQ].eeprom_data16&0x00FF;
// reserved 1
m_sEEGeneral.usReserved1 = m_sEE.eeprom[WIFI_EE_ADDR_RESERVED1].eeprom_data16;
// reserved 2
m_sEEGeneral.ucReserved2 = m_sEE.eeprom[WIFI_EE_ADDR_CHECKSUM].eeprom_data16 & 0xFF00;
// checksum
m_sEEGeneral.ucChecksum = (m_sEE.eeprom[WIFI_EE_ADDR_CHECKSUM].eeprom_data16>>8) & 0x00FF;
// reserved 3
m_usReserved3 = m_sEE.eeprom[WIFI_EE_ADDR_RESERVED3].eeprom_data16;
// 2.4G TX power table
for( i=0; i<NUM_TX_POWER_2400M_CH; i++ )
{
m_sTxPwr2400M.CCKTxPWR[i] = m_sEE.eeprom[i].eeprom_data16;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?