📄 form_wifieeprom.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#include <stdio.h>
#pragma hdrstop
// form
#ifndef _FORM_WIFIEEPROM_H_
#include "form_WiFiEEPROM.h"
#endif
#ifndef _FORM_MAIN_H_
#include "form_main.h"
#endif
// misc
#ifndef _MISC_WIFI_H_
#include "misc_wifi.h"
#endif
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TfrmWiFiEEPROM *frmWiFiEEPROM;
#define PNLIDX_WGI 0x01
#define PNLIDX_TXDC 0x02
#define PNLIDX_2400MTXP 0x04
//---------------------------------------------------------------------------
void ConfirmCallback_ReadEE( void )
{ frmWiFiEEPROM->ConfirmCallback_ReadEE();
}
//---------------------------------------------------------------------------
void ConfirmCallback_WriteEE( void )
{ frmWiFiEEPROM->ConfirmCallback_WriteEE();
}
//---------------------------------------------------------------------------
__fastcall TfrmWiFiEEPROM::TfrmWiFiEEPROM(TComponent* Owner)
: TForm(Owner)
{
edtCCKCHDAC[ 0] = edtCCKCHDAC00;
edtCCKCHDAC[ 1] = edtCCKCHDAC01;
edtCCKCHDAC[ 2] = edtCCKCHDAC02;
edtCCKCHDAC[ 3] = edtCCKCHDAC03;
edtCCKCHDAC[ 4] = edtCCKCHDAC04;
edtCCKCHDAC[ 5] = edtCCKCHDAC05;
edtCCKCHDAC[ 6] = edtCCKCHDAC06;
edtCCKCHDAC[ 7] = edtCCKCHDAC07;
edtCCKCHDAC[ 8] = edtCCKCHDAC08;
edtCCKCHDAC[ 9] = edtCCKCHDAC09;
edtCCKCHDAC[10] = edtCCKCHDAC0A;
edtCCKCHDAC[11] = edtCCKCHDAC0B;
edtCCKCHDAC[12] = edtCCKCHDAC0C;
edtCCKCHDAC[13] = edtCCKCHDAC0D;
edtOFDMCHDAC[ 0] = edtOFDMCHDAC00;
edtOFDMCHDAC[ 1] = edtOFDMCHDAC01;
edtOFDMCHDAC[ 2] = edtOFDMCHDAC02;
edtOFDMCHDAC[ 3] = edtOFDMCHDAC03;
edtOFDMCHDAC[ 4] = edtOFDMCHDAC04;
edtOFDMCHDAC[ 5] = edtOFDMCHDAC05;
edtOFDMCHDAC[ 6] = edtOFDMCHDAC06;
edtOFDMCHDAC[ 7] = edtOFDMCHDAC07;
edtOFDMCHDAC[ 8] = edtOFDMCHDAC08;
edtOFDMCHDAC[ 9] = edtOFDMCHDAC09;
edtOFDMCHDAC[10] = edtOFDMCHDAC0A;
edtOFDMCHDAC[11] = edtOFDMCHDAC0B;
edtOFDMCHDAC[12] = edtOFDMCHDAC0C;
edtOFDMCHDAC[13] = edtOFDMCHDAC0D;
Init();
}
//---------------------------------------------------------------------------
void TfrmWiFiEEPROM::Init( void )
{
m_bInit = true;
m_sEEGeneral.usReserved0 = 0x0000;
m_sEEGeneral.usReserved1 = 0x0000;
m_sEEGeneral.ucReserved2 = 0x00;
m_usReserved3 = 0x0000;
}
//---------------------------------------------------------------------------
void __fastcall TfrmWiFiEEPROM::FormShow(TObject *Sender)
{
if( m_bInit )
{
m_bInit = false;
m_sWiFiCap = frmMainSel->Get_FinalWiFiCap();
}
}
//---------------------------------------------------------------------------
//------------------------------------------------------------------------------
void TfrmWiFiEEPROM::ReDrawFields( int idx )
{
int i;
char str[256];
if( idx & PNLIDX_WGI )
{
if( 0 == btnWGI->Tag ) // Dec
{
btnWGI->Caption = "Dec";
lblBBChipID0x->Visible = false;
lblRFChipID0x->Visible = false;
lblSN0x->Visible = false;
lblMACAddr0x->Visible = false;
lblChecksum0x->Visible = false;
edtBBChipID->Text = IntToStr( m_sEEGeneral.usBBChipID );
edtRFChipID->Text = IntToStr( m_sEEGeneral.usRFChipID );
edtSN->Text = IntToStr( m_sEEGeneral.uiSN );
for( i=0; i<sizeof(m_sEEGeneral.sMACAddr.mac_addr)/sizeof(m_sEEGeneral.sMACAddr.mac_addr[0]); i++ )
{
edtMACAddr[i]->Text = IntToStr( m_sEEGeneral.sMACAddr.mac_addr[i] );
}
edtChecksum->Text = IntToStr( m_sEEGeneral.ucChecksum );
}
else
{
btnWGI->Caption = "Hex";
lblBBChipID0x->Visible = true;
lblRFChipID0x->Visible = true;
lblSN0x->Visible = true;
lblMACAddr0x->Visible = true;
lblChecksum0x->Visible = true;
sprintf( str, "%X", m_sEEGeneral.usBBChipID );
edtBBChipID->Text = str;
sprintf( str, "%X", m_sEEGeneral.usRFChipID );
edtRFChipID->Text = str;
sprintf( str, "%X", m_sEEGeneral.uiSN );
edtSN->Text = str;
for( i=0; i<sizeof(m_sEEGeneral.sMACAddr.mac_addr)/sizeof(m_sEEGeneral.sMACAddr.mac_addr[0]); i++ )
{
sprintf( str, "%X", m_sEEGeneral.sMACAddr.mac_addr[i] );
edtMACAddr[i]->Text = str;
}
sprintf( str, "%X", m_sEEGeneral.ucChecksum );
edtChecksum->Text = str;
}
}
if( idx & PNLIDX_TXDC )
{
if( 0 == btnTXDC->Tag ) // Dec
{
btnTXDC->Caption = "Dec";
lblTXIDC0x->Visible = false;
lblTXQDC0x->Visible = false;
edtTXIDC->Text = IntToStr( m_sEEGeneral.sTxDcOffset.i_ch_offset );
edtTXQDC->Text = IntToStr( m_sEEGeneral.sTxDcOffset.q_ch_offset );
}
else // Hex
{
btnTXDC->Caption = "Hex";
lblTXIDC0x->Visible = true;
lblTXQDC0x->Visible = true;
sprintf( str, "%X", m_sEEGeneral.sTxDcOffset.i_ch_offset );
edtTXIDC->Text = str;
sprintf( str, "%X", m_sEEGeneral.sTxDcOffset.q_ch_offset );
edtTXQDC->Text = str;
}
}
if( idx & PNLIDX_2400MTXP )
{
if( 0 == btn2400MTXP->Tag ) // Dec
{
btn2400MTXP->Caption = "Dec";
for(i=0; i<NUM_TX_POWER_2400M_CH; i++)
{
edtCCKCHDAC[i]->Text = IntToStr( m_sTxPwr2400M.CCKTxPWR[i] );
edtOFDMCHDAC[i]->Text = IntToStr( m_sTxPwr2400M.OFDMTxPWR[i] );
}
}
else
{
btn2400MTXP->Caption = "Hex";
for(i=0; i<NUM_TX_POWER_2400M_CH; i++)
{
sprintf( str, "%X", m_sTxPwr2400M.CCKTxPWR[i] );
edtCCKCHDAC[i]->Text = str;
sprintf( str, "%X", m_sTxPwr2400M.OFDMTxPWR[i] );
edtOFDMCHDAC[i]->Text = str;
}
}
}
}
//---------------------------------------------------------------------------
bool TfrmWiFiEEPROM::CheckFields( void )
{
AnsiString text;
unsigned char ucdata;
unsigned short usdata;
unsigned int uidata;
int i;
if( 0 == btnWGI->Tag ) // Dec
{
// General information
text = edtBBChipID->Text; if( !IsValidDecWiFiBBChipID( text, usdata ) ) { edtBBChipIDCheck(edtBBChipID); return false; }
m_sEEGeneral.usBBChipID = usdata;
text = edtRFChipID->Text; if( !IsValidDecWiFiRFChipID( text, usdata ) ) { edtRFChipIDCheck(edtRFChipID); return false; }
m_sEEGeneral.usRFChipID = usdata;
text = edtSN->Text; if( !IsValidDecWiFiSN( text, uidata ) ) { edtSNCheck(edtSN); return false; }
m_sEEGeneral.uiSN = uidata;
for( i=0; i<sizeof(m_sEEGeneral.sMACAddr.mac_addr)/sizeof(m_sEEGeneral.sMACAddr.mac_addr[0]); i++ )
{
text = edtMACAddr[i]->Text; if( !IsValidDecWiFiMACAddress( text, ucdata ) ) { edtMACAddrCheck(edtMACAddr[i]); return false; }
m_sEEGeneral.sMACAddr.mac_addr[i] = ucdata;
}
}
else // Hex
{
// General information
text = edtBBChipID->Text; if( !IsValidHexWiFiBBChipID( text, usdata ) ) { edtBBChipIDCheck(edtBBChipID); return false; }
m_sEEGeneral.usBBChipID = usdata;
text = edtRFChipID->Text; if( !IsValidHexWiFiRFChipID( text, usdata ) ) { edtRFChipIDCheck(edtRFChipID); return false; }
m_sEEGeneral.usRFChipID = usdata;
text = edtSN->Text; if( !IsValidHexWiFiSN( text, uidata ) ) { edtSNCheck(edtSN); return false; }
m_sEEGeneral.uiSN = uidata;
for( i=0; i<sizeof(m_sEEGeneral.sMACAddr.mac_addr)/sizeof(m_sEEGeneral.sMACAddr.mac_addr[0]); i++ )
{
text = edtMACAddr[i]->Text; if( !IsValidHexWiFiMACAddress( text, ucdata ) ) { edtMACAddrCheck(edtMACAddr[i]); return false; }
m_sEEGeneral.sMACAddr.mac_addr[i] = ucdata;
}
}
return true;
}
//---------------------------------------------------------------------------
void TfrmWiFiEEPROM::CurrentPageReset( void )
{
// WiFi general information
btnWGI->Enabled = true;
edtBBChipID->Enabled = true;
edtRFChipID->Enabled = true;
edtSN->Enabled = true;
for(int i=0; i<sizeof(m_sEEGeneral.sMACAddr.mac_addr)/sizeof(m_sEEGeneral.sMACAddr.mac_addr[0]); i++ )
{
edtMACAddr[i]->Enabled = true;
}
// TX DC offset
btnTXDC->Enabled = true;
// 2.4G TX power table
btn2400MTXP->Enabled = true;
btnUploadFromEEPROM->Enabled = true;
btnDownloadToEEPROM->Enabled = true;
btnLoadFromFile->Enabled = true;
btnSaveToFile->Enabled = true;
}
//---------------------------------------------------------------------------
void TfrmWiFiEEPROM::CurrentPageLock( void )
{
// WiFi general information
btnWGI->Enabled = false;
edtBBChipID->Enabled = false;
edtRFChipID->Enabled = false;
edtSN->Enabled = false;
for(int i=0; i<sizeof(m_sEEGeneral.sMACAddr.mac_addr)/sizeof(m_sEEGeneral.sMACAddr.mac_addr[0]); i++ )
{
edtMACAddr[i]->Enabled = false;
}
// TX DC offset
btnTXDC->Enabled = false;
// 2.4G TX power table
btn2400MTXP->Enabled = false;
btnUploadFromEEPROM->Enabled = false;
btnDownloadToEEPROM->Enabled = false;
btnLoadFromFile->Enabled = false;
btnSaveToFile->Enabled = false;
}
//--------------------------------------------------------------------------
void TfrmWiFiEEPROM::ShowHintLabel( TControl *sender, char* hint )
{
TPoint pt0 = this->ClientOrigin;
TPoint pt1 = sender->ClientOrigin;
lblHint->Left = (pt1.x-pt0.x);
lblHint->Top = (pt1.y-pt0.y)+sender->Height+3;
lblHint->Caption = hint;
lblHint->Visible = true;
HintTimer->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmWiFiEEPROM::btnWGIClick(TObject *Sender)
{
if( 0 == btnWGI->Tag ) // Dec-->Hex
{ btnWGI->Tag = 1;
}
else //Hex-->Dec
{ btnWGI->Tag = 0;
}
ReDrawFields( PNLIDX_WGI );
}
//---------------------------------------------------------------------------
void __fastcall TfrmWiFiEEPROM::btnTXDCClick(TObject *Sender)
{
if( 0 == btnTXDC->Tag ) // Dec-->Hex
{ btnTXDC->Tag = 1;
}
else //Hex-->Dec
{ btnTXDC->Tag = 0;
}
ReDrawFields( PNLIDX_TXDC );
}
//---------------------------------------------------------------------------
void __fastcall TfrmWiFiEEPROM::btn2400MTXPClick(TObject *Sender)
{
if( 0 == btn2400MTXP->Tag ) // Dec-->Hex
{ btn2400MTXP->Tag = 1;
}
else //Hex-->Dec
{ btn2400MTXP->Tag = 0;
}
ReDrawFields( PNLIDX_2400MTXP );
}
//---------------------------------------------------------------------------
void __fastcall TfrmWiFiEEPROM::edtBBChipIDCheck(TObject *Sender)
{
AnsiString text;
unsigned short usdata;
TEdit *edit = (TEdit*)Sender;
char hint[] = " value shall be 0~65535 ";
text = edit->Text;
if( 0 == btnWGI->Tag ) // Dec
{
if( !IsValidDecWiFiBBChipID( text, usdata ) )
{
ShowHintLabel( edit, hint );
edit->SetFocus();
return;
}
}
else
{
if( !IsValidHexWiFiBBChipID( text, usdata ) )
{
ShowHintLabel( edit, hint );
edit->SetFocus();
return;
}
}
m_sEEGeneral.usBBChipID = usdata;
}
//---------------------------------------------------------------------------
void __fastcall TfrmWiFiEEPROM::edtRFChipIDCheck(TObject *Sender)
{
AnsiString text;
unsigned short usdata;
TEdit *edit = (TEdit*)Sender;
char hint[] = " value shall be 0~65535 ";
text = edit->Text;
if( 0 == btnWGI->Tag ) // Dec
{
if( !IsValidDecWiFiRFChipID( text, usdata ) )
{
ShowHintLabel( edit, hint );
edit->SetFocus();
return;
}
}
else
{
if( !IsValidHexWiFiRFChipID( text, usdata ) )
{
ShowHintLabel( edit, hint );
edit->SetFocus();
return;
}
}
m_sEEGeneral.usRFChipID = usdata;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -