man_fdm.cpp
上传用户:gelin96
上传日期:2017-01-08
资源大小:20993k
文件大小:27k
源码类别:

MTK

开发平台:

C++ Builder

  1. /*****************************************************************************
  2. *  Copyright Statement:
  3. *  --------------------
  4. *  This software is protected by Copyright and the information contained
  5. *  herein is confidential. The software may not be copied and the information
  6. *  contained herein may not be used or disclosed except with the written
  7. *  permission of MediaTek Inc. (C) 2005
  8. *
  9. *  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
  10. *  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
  11. *  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
  12. *  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
  13. *  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
  14. *  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
  15. *  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
  16. *  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
  17. *  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
  18. *  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
  19. *  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
  20. *  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
  21. *
  22. *  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
  23. *  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
  24. *  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
  25. *  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
  26. *  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
  27. *
  28. *  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
  29. *  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
  30. *  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
  31. *  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
  32. *  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
  33. *
  34. *****************************************************************************/
  35. /*****************************************************************************
  36.  *
  37.  * Filename:
  38.  * ---------
  39.  *   man_fdm.cpp
  40.  *
  41.  * Project:
  42.  * --------
  43.  *   Maui META APP
  44.  *
  45.  * Description:
  46.  * ------------
  47.  *   NVRAM access handling source
  48.  *
  49.  * Author:
  50.  * -------
  51.  *  Andy Ueng (mtk00490)
  52.  *
  53.  *============================================================================
  54.  *             HISTORY
  55.  * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
  56.  *------------------------------------------------------------------------------
  57.  * $Revision$
  58.  * $Modtime$
  59.  * $Log$
  60.  * 
  61.  *------------------------------------------------------------------------------
  62.  * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
  63.  *============================================================================
  64. ****************************************************************************/
  65. #pragma hdrstop
  66. #ifndef  _MAN_FDM_H_
  67. #include "man_fdm.h"
  68. #endif
  69. #ifndef  _MAN_ACTIVE_H_
  70. #include "man_active.h"
  71. #endif
  72. #ifndef _META_LAB_MSG_H_
  73. #include "meta_lab_msg.h"
  74. #endif
  75. //===========================================================================
  76. CNVRAMMan  *NVRAMMan = NULL;
  77. static bool g_bIsRunning = false;
  78. static CNVRAMMan* g_nvram_ptr;
  79. //===========================================================================
  80. static void REQ_Init_NVRAM_DB(void)
  81. {
  82.     g_nvram_ptr->REQ_Init_NVRAM_DB();
  83. }
  84. //---------------------------------------------------------------------------
  85. static void REQ_ReadNVRAM(void)
  86. {
  87.     g_nvram_ptr->REQ_ReadNVRAM();
  88. }
  89. //---------------------------------------------------------------------------
  90. static void  __stdcall CNF_ReadNVRAM( const FT_NVRAM_READ_CNF *cnf, const short token, void *usrData)
  91. {
  92.     g_nvram_ptr->CNF_ReadNVRAM( cnf, token, usrData);
  93. }
  94. //---------------------------------------------------------------------------
  95. static void  REQ_WriteNVRAM(void)
  96. {
  97.     g_nvram_ptr->REQ_WriteNVRAM();
  98. }
  99. //---------------------------------------------------------------------------
  100. static void  __stdcall CNF_WriteNVRAM(const FT_NVRAM_WRITE_CNF *cnf, const short token, void *usrData)
  101. {
  102.     g_nvram_ptr->CNF_WriteNVRAM(cnf, token, usrData);
  103. }
  104. //---------------------------------------------------------------------------
  105. static void REQ_ResetNVRAMData(void)
  106. {
  107.     g_nvram_ptr->REQ_ResetNVRAMData();
  108. }
  109. //---------------------------------------------------------------------------
  110. static void  __stdcall CNF_ResetNVRAMData( const FT_NVRAM_RESET_CNF *cnf, const short token, void *usrData)
  111. {
  112.     g_nvram_ptr->CNF_ResetNVRAMData(cnf, token, usrData);
  113. }
  114. //---------------------------------------------------------------------------
  115. static void  __stdcall CNF_ResetNVRAM(const FT_NVRAM_RESET_CNF *cnf, const short token, void *usrData)
  116. {
  117.     g_nvram_ptr->CNF_ResetNVRAM(cnf, token, usrData);
  118. }
  119. //---------------------------------------------------------------------------
  120. static void REQ_Finish(void)
  121. {
  122.     g_nvram_ptr->REQ_Finish();
  123. }
  124. //---------------------------------------------------------------------------
  125. static void REQ_TimeOut(void)
  126. {
  127.     g_nvram_ptr->REQ_TimeOut();
  128. }
  129. //===========================================================================
  130. CNVRAMMan::CNVRAMMan(void)
  131. {
  132.     m_bIsInit = false;
  133.     g_bIsRunning = false;
  134.     ConfirmCallback = 0;
  135.     m_iResetStatus = true;
  136.     m_psNVRAM_ReadReq  = NULL;
  137.     m_psNVRAM_WriteReq = NULL;
  138.     m_psNVRAM_ResetDataReq = NULL;
  139.     m_psNVRAM_ResetReq = NULL;
  140. }
  141. //---------------------------------------------------------------------------
  142. CNVRAMMan::~CNVRAMMan(void)
  143. {
  144.    g_bIsRunning = false;
  145.    ConfirmCallback = NULL;
  146.     if (m_psNVRAM_ReadReq)
  147.     {
  148.         delete m_psNVRAM_ReadReq;
  149.         m_psNVRAM_ReadReq = NULL;
  150.     }
  151.     if (m_psNVRAM_WriteReq)
  152.     {
  153.         delete m_psNVRAM_WriteReq;
  154.         m_psNVRAM_WriteReq = NULL;
  155.     }
  156.     if (m_psNVRAM_ResetReq)
  157.     {
  158.         delete m_psNVRAM_ResetReq;
  159.         m_psNVRAM_ResetReq = NULL;
  160.     }
  161. }
  162. //---------------------------------------------------------------------------
  163. void CNVRAMMan::REQ_Finish(void)
  164. {
  165.     if (!g_bIsRunning)
  166.     {
  167.         return;
  168.     }
  169.     Confirm(METAAPP_SUCCESS);
  170. }
  171. //---------------------------------------------------------------------------
  172. void  CNVRAMMan::REQ_Stop(void)
  173. {
  174.     if (!g_bIsRunning)
  175.     {
  176.         return;
  177.     }
  178.     META_Cancel_r(m_META_HANDLE_Obj.Get_MainHandle(), m_sNVRAM_OPID);
  179.     Confirm(METAAPP_STOP);
  180. }
  181. //---------------------------------------------------------------------------
  182. void  CNVRAMMan::REQ_TimeOut( void )
  183. {
  184.     if (!g_bIsRunning)
  185.     {
  186.         return;
  187.     }
  188.     META_Cancel_r(m_META_HANDLE_Obj.Get_MainHandle(), m_sNVRAM_OPID);
  189.     Confirm( METAAPP_TIMEOUT );
  190. }
  191. //---------------------------------------------------------------------------
  192. void  CNVRAMMan::Confirm(E_METAAPP_RESULT_T confirm_state)
  193. {
  194.     if (!g_bIsRunning)
  195.     {
  196.         return;
  197.     }
  198.     g_bIsRunning = false;
  199.     if (NULL == ConfirmCallback)
  200.     {
  201.         return;
  202.     }
  203.     m_eConfirmState = confirm_state;
  204.     ActiveMan->SetActiveFunction(ConfirmCallback);
  205. }
  206. //===========================================================================
  207. void CNVRAMMan::REQ_Init(AnsiString as_file)
  208. {
  209.     g_nvram_ptr = this;
  210.     g_bIsRunning = true;
  211.     m_asNVRAM_DB_File = as_file;
  212.     ActiveMan->SetActiveFunction(::REQ_Init_NVRAM_DB);
  213. }
  214. //---------------------------------------------------------------------------
  215. void CNVRAMMan::Init(char* fdm_database_file)
  216. {
  217.     g_nvram_ptr = this;
  218.     m_bIsInit = false;
  219.     META_RESULT MetaResult = META_NVRAM_Init_r( m_META_HANDLE_Obj.Get_MainHandle(), fdm_database_file, &m_ulNvramIdb );
  220.     if ((META_SUCCESS == MetaResult)              ||
  221.         (META_MAUI_DB_INCONSISTENT == MetaResult)
  222.        )
  223.     {
  224.         if (META_MAUI_DB_INCONSISTENT == MetaResult)
  225.         {
  226.             m_eConfirmState = METAAPP_NVRAM_DB_INCONSISTENT;
  227.         }
  228.         else
  229.         {
  230.             m_eConfirmState = METAAPP_SUCCESS;
  231.         }
  232.         m_bIsInit = true;
  233.         m_asNVRAM_DB_File = fdm_database_file;
  234.         META_NVRAM_SWC_RetrieveChangeList_r(m_META_HANDLE_Obj.Get_MainHandle());
  235.         m_vNVRAM_db_variant = TVariant((long) m_ulNvramIdb);
  236.         GetSupportInfoFromNVRAMDB();
  237.     }
  238.     else
  239.     {
  240.         m_bIsInit = false;
  241.         m_eConfirmState = METAAPP_NVRAM_INIT_FAIL;
  242.     }
  243. }
  244. //----------------------------------------------------------------------------
  245. void CNVRAMMan::REQ_Init_NVRAM_DB(void)
  246. {
  247.     if (!g_bIsRunning)
  248.     {
  249.         return;
  250.     }
  251.     META_RESULT MetaResult = META_NVRAM_Init_r(m_META_HANDLE_Obj.Get_MainHandle(), m_asNVRAM_DB_File.c_str(), &m_ulNvramIdb);
  252.     if ((META_SUCCESS == MetaResult)              ||
  253.         (META_MAUI_DB_INCONSISTENT == MetaResult)
  254.        )
  255.     {
  256.         if (META_MAUI_DB_INCONSISTENT == MetaResult)
  257.         {
  258.             m_eConfirmState = METAAPP_NVRAM_DB_INCONSISTENT;
  259.         }
  260.         else
  261.         {
  262.             m_eConfirmState = METAAPP_SUCCESS;
  263.         }
  264.         m_bIsInit = true;
  265.         
  266.         META_NVRAM_SWC_RetrieveChangeList_r(m_META_HANDLE_Obj.Get_MainHandle());
  267.         m_vNVRAM_db_variant = TVariant((long) m_ulNvramIdb);
  268.         GetSupportInfoFromNVRAMDB();
  269.     }
  270.     else
  271.     {
  272.         m_bIsInit = false;
  273.         m_eConfirmState = METAAPP_NVRAM_INIT_FAIL;
  274.     }
  275.     Confirm(m_eConfirmState);
  276. }
  277. //---------------------------------------------------------------------------
  278. void CNVRAMMan::GetSupportInfoFromNVRAMDB(void)
  279. {
  280.     // APC
  281.     META_RESULT MetaResult = META_NVRAM_CheckFieldNameExist("NVRAM_EF_L1_RFSPECIALCOEF_LID", "RFSpecialCoef.tx.mt6140tx.data.low_band_pa_vbias[0].pcl_index", &m_bVbiasSupport);
  282.     if (MetaResult != META_SUCCESS)
  283.     {
  284.         m_bVbiasSupport = false;
  285.     }
  286.     // BB TX cfg
  287.     Get_BbTxCfgVer_FromNVDB();
  288.     // Audio
  289.     bool bTimeConst;
  290.     bool bSpeech_input_FIR_coeffs;
  291.     bool bMelody_FIR_45_Tap;
  292.     bool bMelody_FIR_25_Tap;
  293.     bool bAudio_Compensation;
  294.     bool bSpeech_volume;
  295.     MetaResult = META_NVRAM_CheckFieldNameExist("NVRAM_EF_AUDIO_PARAM_LID", "ES_TimeConst", &bTimeConst);
  296.     if (META_SUCCESS != MetaResult)
  297.     {
  298.         bTimeConst = false;
  299.     }
  300.     MetaResult = META_NVRAM_CheckFieldNameExist("NVRAM_EF_AUDIO_PARAM_LID", "speech_input_FIR_coeffs[0][0]", &bSpeech_input_FIR_coeffs);
  301.     if (META_SUCCESS != MetaResult)
  302.     {
  303.         bSpeech_input_FIR_coeffs = false;
  304.     }
  305.     MetaResult = META_NVRAM_CheckFieldNameExist("NVRAM_EF_AUDIO_PARAM_LID", "Melody_FIR_Output_Coeff_32k_Tbl1[44]", &bMelody_FIR_45_Tap);
  306.     if (META_SUCCESS != MetaResult)
  307.     {
  308.         bMelody_FIR_45_Tap = false;
  309.     }
  310.     MetaResult = META_NVRAM_CheckFieldNameExist("NVRAM_EF_AUDIO_PARAM_LID", "Melody_FIR_Coeff_Tbl[24]", &bMelody_FIR_25_Tap);
  311.     if (META_SUCCESS != MetaResult)
  312.     {
  313.         bMelody_FIR_25_Tap = false;
  314.     }
  315.     MetaResult = META_NVRAM_CheckFieldNameExist("NVRAM_EF_AUDIO_PARAM_LID", "audio_compensation_coeff[0][0]", &bAudio_Compensation);
  316.     if (META_SUCCESS != MetaResult)
  317.     {
  318.         bMelody_FIR_25_Tap = false;
  319.     }
  320.     MetaResult = META_NVRAM_CheckFieldNameExist("NVRAM_EF_AUDIO_PARAM_LID", "speech_volume_para[0][0][0]", &bSpeech_volume);
  321.     if (META_SUCCESS != MetaResult)
  322.     {
  323.         bSpeech_volume = false;
  324.     }
  325.     if (bSpeech_volume)
  326.     {
  327.         m_eFirVer = AUDIO_FIR_VER_W0809;
  328.     }
  329.     else if (bAudio_Compensation)
  330.     {
  331.         m_eFirVer = AUDIO_FIR_VER_W0740;
  332.     }
  333.     else if (bMelody_FIR_25_Tap && (!bMelody_FIR_45_Tap))
  334.     {
  335.         m_eFirVer = AUDIO_FIR_VER_W0712;
  336.     }
  337.     else if ((!bTimeConst) && (!bSpeech_input_FIR_coeffs) )
  338.     {
  339.         m_eFirVer = AUDIO_FIR_VER_W0547;
  340.     }
  341.     else if (bTimeConst)
  342.     {
  343.         m_eFirVer = AUDIO_FIR_VER_ORG;
  344.     }
  345.     else
  346.     {
  347.         m_eFirVer = AUDIO_FIR_VER_W0547_45_TAP;
  348.     }
  349. #ifndef  SERVICE_CENTER
  350.     PostMessage(m_sHandle.handle[MSEL_AUDIO],
  351.                 WM_ML_AUDIO_FIR_VER_CNF,
  352.                 (WPARAM)m_eFirVer,
  353.                 0
  354.                 );
  355. #endif
  356.     // audio custom 16 level
  357.     MetaResult = META_NVRAM_CheckFieldNameExist("NVRAM_EF_CUST_ACOUSTIC_DATA_LID", "max_melody_volume_gain[0]", &m_bCustVolExSupport);
  358.     if (META_SUCCESS != MetaResult)
  359.     {
  360.         m_bCustVolExSupport = false;
  361.     }
  362. #ifndef  SERVICE_CENTER
  363.     PostMessage(m_sHandle.handle[MSEL_AUDIO],
  364.                 WM_ML_AUDIO_VOL_VER_CNF,
  365.                 (WPARAM)m_bCustVolExSupport,
  366.                 0
  367.                 );
  368. #endif
  369. }
  370. //---------------------------------------------------------------------------
  371. void CNVRAMMan::Get_BbTxCfgVer_FromNVDB(void)
  372. {
  373.     bool b_dccoarse_support;
  374.     bool b_phaselsel_support;
  375.     bool b_TxCalbias_support;
  376.     META_RESULT MetaResult = META_NVRAM_CheckFieldNameExist("NVRAM_EF_L1_TXIQ_LID", "BBTXParameters.bbtx_dccoarseI", &b_dccoarse_support);
  377.     if (MetaResult != META_SUCCESS)
  378.     {
  379.         b_dccoarse_support = false;
  380.     }
  381.     MetaResult = META_NVRAM_CheckFieldNameExist("NVRAM_EF_L1_TXIQ_LID", "BBTXParameters.bbtx_phsel", &b_phaselsel_support);
  382.     if (MetaResult != META_SUCCESS)
  383.     {
  384.         b_phaselsel_support = false;
  385.     }
  386.     MetaResult = META_NVRAM_CheckFieldNameExist("NVRAM_EF_L1_TXIQ_LID", "BBTXParameters.bbtx_calrcsel", &b_phaselsel_support);
  387.     if (MetaResult != META_SUCCESS)
  388.     {
  389.         b_phaselsel_support = false;
  390.     }
  391.     if (b_dccoarse_support)
  392.     {
  393.         m_eNvBbTxCfgVer = NVRAM_BBTXCFG_VER4;
  394.     }
  395.     else if ((!b_dccoarse_support) && b_phaselsel_support)
  396.     {
  397.         m_eNvBbTxCfgVer = NVRAM_BBTXCFG_VER3;
  398.     }
  399.     else if ((!b_dccoarse_support) && (!b_phaselsel_support) && b_TxCalbias_support)
  400.     {
  401.         m_eNvBbTxCfgVer = NVRAM_BBTXCFG_VER2;
  402.     }
  403.     else
  404.     {
  405.         m_eNvBbTxCfgVer = NVRAM_BBTXCFG_VER1;
  406.     }
  407. }
  408. //===========================================================================
  409. void  CNVRAMMan::REQ_ReadNVRAM_Start(const char *LID_para, unsigned short RID_para, int size, char *buf)
  410. {
  411.     g_nvram_ptr = this;
  412.     g_bIsRunning = true;
  413.     if( m_psNVRAM_ReadReq == NULL)
  414.     {
  415.         m_psNVRAM_ReadReq = new FT_NVRAM_READ_REQ;
  416.     }
  417.     m_iBufSize = size; // set to m_sNVRAM_ReadCnf.len in function CNVRAMMan::REQ_ReadNVRAM()
  418.     m_cBuf     = buf;
  419.     m_psNVRAM_ReadReq->LID = LID_para;
  420.     m_psNVRAM_ReadReq->RID = RID_para; // temp set to 0
  421.     ActiveMan->SetActiveFunction( ::REQ_ReadNVRAM );
  422. }
  423. //-----------------------------------------------
  424. void CNVRAMMan::REQ_ReadNVRAM(void)
  425. {
  426.     if (!g_bIsRunning)
  427.     {
  428.         return;
  429.     }
  430.     DWORD wait_result;
  431.     m_ReadFromNVRAMEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
  432.     ResetEvent(m_ReadFromNVRAMEvent);
  433.     m_sNVRAM_ReadCnf.len = m_iBufSize;
  434.     m_sNVRAM_ReadCnf.buf = m_cBuf;
  435.     META_RESULT MetaResult = META_NVRAM_Read_r(m_META_HANDLE_Obj.Get_MainHandle(),
  436.                                         m_psNVRAM_ReadReq,
  437.                                                &m_sNVRAM_ReadCnf,
  438.                                                ::CNF_ReadNVRAM,
  439.                                                &m_sNVRAM_OPID,
  440.                                                NULL);
  441.     wait_result = WaitForSingleObject(m_ReadFromNVRAMEvent, 5000);
  442.     if (WAIT_TIMEOUT == wait_result)
  443.     {
  444.         Confirm(METAAPP_TIMEOUT);
  445.         return;
  446.     }
  447.     if (MetaResult != META_SUCCESS)
  448.     {
  449.         Confirm(METAAPP_FAIL);
  450.         return;
  451.     }
  452.     ActiveMan->SetActiveFunction(::REQ_Finish);
  453. }
  454. //-----------------------------------------------
  455. void __stdcall CNVRAMMan::CNF_ReadNVRAM(const FT_NVRAM_READ_CNF *cnf, const short token, void *usrData)
  456. {
  457.     if (!g_bIsRunning)
  458.     {
  459.         return;
  460.     }
  461.     m_sNVRAM_ReadCnf = *cnf;
  462.     if (cnf->status != NVRAM_STATUS_SUCCESS)
  463.     {
  464.         Confirm(METAAPP_FAIL);
  465.         return;
  466.     }
  467.     SetEvent(m_ReadFromNVRAMEvent);
  468. }
  469. //===========================================================================
  470. void  CNVRAMMan::REQ_WriteNVRAM_Start( const char *LID_para, unsigned short RID_para, int size, char *buf )
  471. {
  472.     g_nvram_ptr = this;
  473.     g_bIsRunning = true;
  474.     if(m_psNVRAM_WriteReq == NULL)
  475.     {
  476.         m_psNVRAM_WriteReq = new FT_NVRAM_WRITE_REQ;
  477.     }
  478.     m_psNVRAM_WriteReq->LID = LID_para;
  479.     m_psNVRAM_WriteReq->RID = RID_para;
  480.     m_psNVRAM_WriteReq->len = size;
  481.     m_psNVRAM_WriteReq->buf = buf;
  482.     ActiveMan->SetActiveFunction(::REQ_WriteNVRAM);
  483. }
  484. //-----------------------------------------------
  485. void CNVRAMMan::REQ_WriteNVRAM(void)
  486. {
  487.     if (!g_bIsRunning)
  488.     {
  489.         return;
  490.     }
  491.     DWORD wait_result;
  492.     m_WriteToNVRAMEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
  493.     ResetEvent(m_WriteToNVRAMEvent);
  494.     META_RESULT MetaResult = META_NVRAM_Write_r(m_META_HANDLE_Obj.Get_MainHandle(),
  495.                                                 m_psNVRAM_WriteReq,
  496.                                                 ::CNF_WriteNVRAM,
  497.                                                 &m_sNVRAM_OPID,
  498.                                                 NULL);
  499.     wait_result = WaitForSingleObject(m_WriteToNVRAMEvent, 5000);
  500.     if (WAIT_TIMEOUT == wait_result)
  501.     {
  502.         Confirm(METAAPP_TIMEOUT);
  503.         return;
  504.     }
  505.     if (MetaResult != META_SUCCESS)
  506.     {
  507.         Confirm(METAAPP_FAIL);
  508.         return;
  509.     }
  510.     ActiveMan->SetActiveFunction(::REQ_Finish);
  511. }
  512. //-----------------------------------------------
  513. void __stdcall CNVRAMMan::CNF_WriteNVRAM( const FT_NVRAM_WRITE_CNF *cnf, const short token, void *usrData)
  514. {
  515.     if(!g_bIsRunning)  return;
  516.     m_psNVRAM_WriteCnf = cnf;
  517.     
  518.     if(cnf->status != NVRAM_STATUS_SUCCESS)
  519.     {  Confirm(METAAPP_FAIL);  return;  }
  520.     SetEvent( m_WriteToNVRAMEvent );
  521. }
  522. //===========================================================================
  523. void  CNVRAMMan::REQ_ResetNVRAMData_Start( const char *LID_para )
  524. {
  525.     g_nvram_ptr = this;
  526.     g_bIsRunning = true;
  527.     if(m_psNVRAM_ResetDataReq == NULL)
  528.     {
  529.         m_psNVRAM_ResetDataReq = new FT_NVRAM_RESET_REQ;
  530.     }
  531.     m_psNVRAM_ResetDataReq->category = NVRAM_RESET_CERTAIN;
  532.     m_psNVRAM_ResetDataReq->LID      = LID_para;
  533. //    TimerMan->CounterStart( 5000, ::REQ_TimeOut );
  534.     ActiveMan->SetActiveFunction( ::REQ_ResetNVRAMData );
  535. }
  536. //-----------------------------------------------
  537. void  CNVRAMMan::REQ_ResetNVRAMData( void )
  538. {
  539.     if(!g_bIsRunning)  return;
  540.     META_RESULT MetaResult = META_NVRAM_Reset_r( m_META_HANDLE_Obj.Get_MainHandle(),
  541.                                    m_psNVRAM_ResetDataReq,
  542.                                   ::CNF_ResetNVRAMData,
  543.                                   &m_sNVRAM_OPID,
  544.                                   NULL );
  545.     if (MetaResult != META_SUCCESS)
  546.     {
  547.         Confirm(METAAPP_NVRAM_RESET_FAIL);
  548.         return;
  549.     }
  550. }
  551. //-----------------------------------------------
  552. void  __stdcall CNVRAMMan::CNF_ResetNVRAMData( const FT_NVRAM_RESET_CNF *cnf, const short token, void *usrData)
  553. {
  554.    if(!g_bIsRunning)  return;
  555.    m_psNVRAM_ResetCnf = cnf;
  556.    if(cnf->status != NVRAM_STATUS_SUCCESS)
  557.    {   Confirm(METAAPP_NVRAM_RESET_FAIL);  return;  }
  558.    ActiveMan->SetActiveFunction( ::REQ_Finish );
  559. }
  560. //-----------------------------------------------
  561. void  __stdcall CNVRAMMan::CNF_ResetNVRAM( const FT_NVRAM_RESET_CNF *cnf, const short token, void *usrData)
  562. {
  563.    if(!g_bIsRunning)  return;
  564.    m_psNVRAM_ResetCnf = cnf;
  565.    if(cnf->status != NVRAM_STATUS_SUCCESS)
  566.    {   Confirm(METAAPP_NVRAM_RESET_FAIL);  return;  }
  567.    else
  568.    {
  569.        m_iResetStatus = true;
  570.        *m_iResetCountPtr = *m_iResetCountPtr + 1;
  571.    }
  572.    ActiveMan->SetActiveFunction( ::REQ_Finish );
  573. }
  574. //===========================================================================
  575. int  CNVRAMMan::REQ_ResetLayer1( int *ResetCountPtrPara )
  576. {
  577.    //   if(m_bIsInit==false)
  578.    //   {  Confirm( STATE_FDM_INIT_FAIL );  return;  }
  579.    m_iResetCountPtr =  ResetCountPtrPara;
  580.    //  fdm_ptr = this;
  581.    g_nvram_ptr = this;
  582.    g_bIsRunning = true;
  583.    META_RESULT  MetaResult;
  584.    if(m_bIsInit == true && m_iResetStatus == true)
  585.    {
  586.      if(m_psNVRAM_ResetReq == NULL)
  587.      {
  588.         m_psNVRAM_ResetReq = new FT_NVRAM_RESET_REQ;
  589.      }
  590.    switch(*m_iResetCountPtr)
  591.    {
  592.      //------------- agc path loss --------------------
  593.      case 0:
  594.      m_psNVRAM_ResetReq->category = NVRAM_RESET_CERTAIN;
  595.      m_psNVRAM_ResetReq->LID = "NVRAM_EF_L1_AGCPATHLOSS_LID";
  596.                 MetaResult = META_NVRAM_Reset_r( m_META_HANDLE_Obj.Get_MainHandle(),
  597.                                     m_psNVRAM_ResetReq,
  598.                                    ::CNF_ResetNVRAM,
  599.                                    &m_sNVRAM_OPID,
  600.                                    NULL         );
  601.      if(MetaResult!=META_SUCCESS)
  602.   //    {  Confirm( STATE_FDM_FAIL );  return;  }
  603.      {  Confirm( METAAPP_FAIL );  return false;  }
  604.      break;
  605.      //------------- ramp table (gsm) --------------------
  606.      case 1:
  607.      m_psNVRAM_ResetReq->category = NVRAM_RESET_CERTAIN;
  608.      m_psNVRAM_ResetReq->LID = "NVRAM_EF_L1_RAMPTABLE_GSM900_LID";
  609.                 MetaResult = META_NVRAM_Reset_r( m_META_HANDLE_Obj.Get_MainHandle(),
  610.                                       m_psNVRAM_ResetReq,
  611.                                     ::CNF_ResetNVRAM,
  612.                                     &m_sNVRAM_OPID,
  613.                                     NULL         );
  614.       if(MetaResult!=META_SUCCESS)
  615.    //   {  Confirm( STATE_FDM_FAIL );  return;  }
  616.      {  Confirm( METAAPP_FAIL );  return false;  }
  617.       break;
  618.      //------------- ramp table (dcs) --------------------
  619.      case 2:
  620.         m_psNVRAM_ResetReq->category = NVRAM_RESET_CERTAIN;
  621.         m_psNVRAM_ResetReq->LID = "NVRAM_EF_L1_RAMPTABLE_DCS1800_LID";
  622.                 MetaResult = META_NVRAM_Reset_r( m_META_HANDLE_Obj.Get_MainHandle(),
  623.                                        m_psNVRAM_ResetReq,
  624.                                        ::CNF_ResetNVRAM,
  625.                                        &m_sNVRAM_OPID,
  626.                                        NULL         );
  627.          if(MetaResult!=META_SUCCESS)
  628.       //   {  Confirm( STATE_FDM_FAIL );  return;  }
  629.        {  Confirm( METAAPP_FAIL );  return false;  }
  630.       break;
  631.    //------------- ramp table (pcs) --------------------
  632.       case 3:
  633.          m_psNVRAM_ResetReq->category = NVRAM_RESET_CERTAIN;
  634.          m_psNVRAM_ResetReq->LID = "NVRAM_EF_L1_RAMPTABLE_PCS1900_LID";
  635.                 MetaResult = META_NVRAM_Reset_r( m_META_HANDLE_Obj.Get_MainHandle(),
  636.                                           m_psNVRAM_ResetReq,
  637.                                           ::CNF_ResetNVRAM,
  638.                                           &m_sNVRAM_OPID,
  639.                                           NULL         );
  640.             if(MetaResult!=META_SUCCESS)
  641.          //   {  Confirm( STATE_FDM_FAIL );  return;  }
  642.         {  Confirm( METAAPP_FAIL );  return false;  }
  643.       break;
  644.    //------------- afc data -----------------------------
  645.       case 4:
  646.             m_psNVRAM_ResetReq->category = NVRAM_RESET_CERTAIN;
  647.             m_psNVRAM_ResetReq->LID = "NVRAM_EF_L1_AFCDATA_LID";
  648.                 MetaResult = META_NVRAM_Reset_r(  m_META_HANDLE_Obj.Get_MainHandle(),
  649.                                               m_psNVRAM_ResetReq,
  650.                                              ::CNF_ResetNVRAM,
  651.                                              &m_sNVRAM_OPID,
  652.                                              NULL         );
  653.                if(MetaResult!=META_SUCCESS)
  654.             //   {  Confirm( STATE_FDM_FAIL );  return;  }
  655.             {  Confirm( METAAPP_FAIL );  return false;  }
  656.       break;
  657.     //------------- L1Sp data -----------------------------
  658.       case 5:
  659.                m_psNVRAM_ResetReq->category = NVRAM_RESET_CERTAIN;
  660.                m_psNVRAM_ResetReq->LID = "NVRAM_EF_L1_L1SPFC_LID";
  661.                 MetaResult = META_NVRAM_Reset_r(m_META_HANDLE_Obj.Get_MainHandle(),
  662.                                               m_psNVRAM_ResetReq,
  663.                                                 ::CNF_ResetNVRAM,
  664.                                                 &m_sNVRAM_OPID,
  665.                                                 NULL         );
  666.                   if(MetaResult!=META_SUCCESS)
  667.                //   {  Confirm( STATE_FDM_FAIL );  return;  }
  668.                {  Confirm( METAAPP_FAIL );  return false;  }
  669.        break;
  670.    //------------- L1TXIQ data -----------------------------
  671.        case 6:
  672.                   m_psNVRAM_ResetReq->category = NVRAM_RESET_CERTAIN;
  673.                   m_psNVRAM_ResetReq->LID = "NVRAM_EF_L1_TXIQ_LID";
  674.                 MetaResult = META_NVRAM_Reset_r(m_META_HANDLE_Obj.Get_MainHandle(),
  675.                                                    m_psNVRAM_ResetReq,
  676.                                                    ::CNF_ResetNVRAM,
  677.                                                    &m_sNVRAM_OPID,
  678.                                                    NULL         );
  679.                      if(MetaResult!=META_SUCCESS)
  680.                   //   {  Confirm( STATE_FDM_FAIL );  return;  }
  681.                   {  Confirm( METAAPP_FAIL );  return false;  }
  682.         break;
  683.     } // switch
  684.     m_iResetStatus = false;
  685.     return true; // continure to reset L1 calibarion parameter
  686.   }//if
  687.   else if(m_bIsInit == false)
  688.   {
  689.       Application->MessageBox( " Please initialize NVRAM database first" , "Warning", MB_OK );
  690.       return false; // stop to reset L1 calibarion parameter
  691.   }
  692.   else
  693.   {
  694.       return false;// stop to reset L1 calibarion parameter
  695.   }
  696. }
  697. //===========================================================================
  698. ////////////////////////////  Global information  ///////////////////////////
  699. //===========================================================================
  700. E_METAAPP_RESULT_T  CNVRAMMan::Get_ConfirmState(void)
  701. {
  702.     return  m_eConfirmState;
  703. }
  704. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  705. bool CNVRAMMan::Get_IsInit(void)
  706. {   return m_bIsInit;
  707. }
  708. //---------------------------------------------------------------------------
  709. void CNVRAMMan::Set_IsInit(bool is_init)
  710. {   m_bIsInit = is_init;
  711. }
  712. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  713. AnsiString CNVRAMMan::Get_NVRAM_DB_File(void)
  714. {
  715.     return  m_asNVRAM_DB_File;
  716. }
  717. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  718. Variant CNVRAMMan::Get_NvramDbVariant(void)
  719. {   return m_vNVRAM_db_variant;
  720. }
  721. //---------------------------------------------------------------------------
  722. void CNVRAMMan::Set_NvramDbVariant(Variant variant)
  723. {   m_vNVRAM_db_variant = variant;
  724. }
  725. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  726. bool CNVRAMMan::Get_VbiasSupport(void)
  727. {
  728.     return m_bVbiasSupport;
  729. }
  730. //----------------------------------------------------------------------------
  731. E_NVRAM_BBTXCFG_VER_T CNVRAMMan::Get_NvBbTxCfgVer(void)
  732. {
  733.     return m_eNvBbTxCfgVer;
  734. }
  735. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  736. E_AUDIO_FIR_VER_T CNVRAMMan::Get_FirVersion(void)
  737. {
  738.     return m_eFirVer;
  739. }
  740. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  741. bool CNVRAMMan::Get_CustVolExSupport(void)
  742. {
  743.     return m_bCustVolExSupport;
  744. }
  745. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  746. void CNVRAMMan::Set_FormHandle(S_FORM_HANDLE_T handle)
  747. {
  748.     m_sHandle = handle;
  749. }