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 + -
显示快捷键?