⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form_wifieeprom.cpp

📁 MTK 手机软件开发 META 源代码,开发环境: C++ Builder
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//---------------------------------------------------------------------------

#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 + -