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

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.  *   Database_Compare.cpp
  40.  *
  41.  * Project:
  42.  * --------
  43.  *   Maui META APP
  44.  *
  45.  * Description:
  46.  * ------------
  47.  *  Database compare 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. //---------------------------------------------------------------------------
  66. #pragma hdrstop
  67. #include "Database_Compare.h"
  68. //---------------------------------------------------------------------------
  69. static CDATABASECOMPARE*  database_compare_ptr;
  70. static bool     g_bIsRunning;
  71. //---------------------------------------------------------------------------
  72. static void __stdcall CNF_NvramGetDiskInfo(const NVRAM_GetDiskInfo_Cnf *cnf, const short token, void *usrData)
  73. {
  74.   database_compare_ptr->CNF_NvramGetDiskInfo( cnf, token, usrData);
  75. }
  76. static void  REQ_Finish()
  77. {
  78.   database_compare_ptr->REQ_Finish();
  79. }
  80. //===========================================================================
  81. CDATABASECOMPARE::CDATABASECOMPARE( void )
  82. {
  83.    g_bIsRunning = false;
  84.    ConfirmCallback = 0;
  85.    database_compare_ptr = this;
  86. }
  87. //---------------------------------------------------------------------------
  88. CDATABASECOMPARE::~CDATABASECOMPARE( )
  89. {
  90. }
  91. //---------------------------------------------------------------------------
  92. void  CDATABASECOMPARE::Confirm( int confirm_state )
  93. {
  94.    if(!g_bIsRunning)  return;
  95.    if(ConfirmCallback==0)  return;
  96.    m_iConfirmState = confirm_state;
  97.    ActiveMan->SetActiveFunction( ConfirmCallback );
  98. }
  99. //---------------------------------------------------------------------------
  100. void  CDATABASECOMPARE::REQ_Finish(void)
  101. {
  102.    if(!g_bIsRunning)  return;
  103.    Confirm( STATE_DATABASECOMPARE_OK );
  104.    g_bIsRunning = false;
  105. }
  106. //---------------------------------------------------------------------------
  107. void __stdcall CDATABASECOMPARE::CNF_NvramGetDiskInfo(const NVRAM_GetDiskInfo_Cnf *cnf, const short token, void *usrData)
  108. {
  109.    if(!g_bIsRunning)  return;
  110.    
  111.    CNF_NVRAM_GetDiskInfo.status =  cnf->status;
  112.    CNF_NVRAM_GetDiskInfo.target_nvramsize =  cnf->target_nvramsize;
  113.    CNF_NVRAM_GetDiskInfo.target_freespace =  cnf->target_freespace;
  114.    CNF_NVRAM_GetDiskInfo.target_overhead  =  cnf->target_overhead;
  115.    CNF_NVRAM_GetDiskInfo.newdb_nvramsize  =  cnf->newdb_nvramsize;
  116.    if( cnf->status == 0 )
  117.    {
  118.       ActiveMan->SetActiveFunction( ::REQ_Finish );
  119.    }
  120.    else if (  cnf->status == 1 ) // [ERROR] can't retrieve info from target
  121.    {
  122.        Confirm( STATE_DATABASECOMPARE_FAIL );
  123.         g_bIsRunning = false;
  124.    }
  125.    else  // [ERROR] freespace is not enough to upgrade to new NVRAM
  126.    {
  127.        Confirm( STATE_DATABASECOMPARE_FAIL );
  128.        g_bIsRunning = false; 
  129.    }
  130. }
  131. //---------------------------------------------------------------------------
  132. META_RESULT  __stdcall CDATABASECOMPARE::Req_NVRAM_SWC_RetrieveChangeList(void)
  133. {
  134.     g_bIsRunning = true;
  135.     m_eMetaResult = META_NVRAM_SWC_RetrieveChangeList_r( m_META_HANDLE_Obj.Get_MainHandle() );
  136.     g_bIsRunning = false;
  137.     return m_eMetaResult;
  138. }
  139. //---------------------------------------------------------------------------
  140. META_RESULT  __stdcall CDATABASECOMPARE::Req_NVRAM_SWC_UpdateChangeList(void)
  141. {
  142.    g_bIsRunning = true;
  143.    m_eMetaResult = META_NVRAM_SWC_UpdateChangeList_r( m_META_HANDLE_Obj.Get_MainHandle() );
  144.    g_bIsRunning = false;
  145.    return m_eMetaResult;
  146. }
  147. //---------------------------------------------------------------------------
  148. META_RESULT  __stdcall CDATABASECOMPARE::Req_NVRAM_SWC_GetAllChangedLIDCount(int *NofLID)
  149. {
  150.    g_bIsRunning = true;
  151.    m_eMetaResult = META_NVRAM_SWC_GetAllChangedLIDCount_r(m_META_HANDLE_Obj.Get_MainHandle(), NofLID);
  152.    g_bIsRunning = false;
  153.     return m_eMetaResult;
  154. }
  155. //---------------------------------------------------------------------------
  156. META_RESULT  __stdcall CDATABASECOMPARE::Req_NVRAM_SWC_GetAllChangedLIDName(LID_Info *p_ArrayOfLID, const int NofLID)
  157. {
  158.    g_bIsRunning = true;
  159.    m_eMetaResult = META_NVRAM_SWC_GetAllChangedLIDName_r(m_META_HANDLE_Obj.Get_MainHandle(), p_ArrayOfLID, NofLID);
  160.    g_bIsRunning = false;
  161.    return m_eMetaResult;
  162. }
  163. //---------------------------------------------------------------------------
  164. META_RESULT  __stdcall CDATABASECOMPARE::Req_NVRAM_SWC_QueryIfLIDChanged(const char *LID, LID_STATUS  *result)
  165. {
  166.    g_bIsRunning = true;
  167.    m_eMetaResult = META_NVRAM_SWC_QueryIfLIDChanged_r(m_META_HANDLE_Obj.Get_MainHandle(), LID, result);
  168.    g_bIsRunning = false;
  169.     return m_eMetaResult;
  170. }
  171. //---------------------------------------------------------------------------
  172. META_RESULT  __stdcall CDATABASECOMPARE::Req_NVRAM_SWC_ImportData(LID_Info *p_import_multiple_lid, int num_of_import_multiple_lid, int import_1st_sys_record_size )
  173. {
  174.    g_bIsRunning = true;
  175.    m_eMetaResult = META_NVRAM_SWC_ImportData_r(m_META_HANDLE_Obj.Get_MainHandle(), p_import_multiple_lid, num_of_import_multiple_lid, import_1st_sys_record_size );
  176.    g_bIsRunning = false;
  177.    return m_eMetaResult;
  178. }
  179. //---------------------------------------------------------------------------
  180. META_RESULT  __stdcall CDATABASECOMPARE::Req_NVRAM_SWC_Database_Compare(const char *PathName, int *p_NumOfNewAddLID, int *p_NumOfModifiedLID, int *p_NumOfDeletedLID)
  181. {
  182.    g_bIsRunning = true;
  183.    m_eMetaResult = META_NVRAM_SWC_Database_Compare_r(m_META_HANDLE_Obj.Get_MainHandle(), PathName, p_NumOfNewAddLID, p_NumOfModifiedLID, p_NumOfDeletedLID);
  184.    g_bIsRunning = false;
  185.    return m_eMetaResult;
  186. }
  187. //---------------------------------------------------------------------------
  188. META_RESULT  __stdcall CDATABASECOMPARE::Req_NVRAM_SWC_Get_Database_Compare_Result(LID_Info *p_ArrayOfNewAddLID, const int NumOfNewAddLID, LID_Info *p_ArrayOfModifiedLID, const int NumOfModifiedLID, LID_Info *p_ArrayOfDeletedLID, const int NumOfDeletedLID)
  189. {
  190.    g_bIsRunning = true;
  191.    m_eMetaResult = META_NVRAM_SWC_Get_Database_Compare_Result_r(m_META_HANDLE_Obj.Get_MainHandle(), p_ArrayOfNewAddLID, NumOfNewAddLID, p_ArrayOfModifiedLID, NumOfModifiedLID, p_ArrayOfDeletedLID, NumOfDeletedLID);
  192.    g_bIsRunning = false;
  193.     return m_eMetaResult;
  194. }
  195. //---------------------------------------------------------------------------
  196. META_RESULT  __stdcall CDATABASECOMPARE::Req_NVRAM_SWC_Check_FAT_FreeSpace( void )
  197. {
  198.    g_bIsRunning = true;
  199.    m_eMetaResult = META_NVRAM_SWC_Check_FAT_FreeSpace_r(m_META_HANDLE_Obj.Get_MainHandle(), ::CNF_NvramGetDiskInfo, &DATABASE_COMPARE_TOKEN, NULL);
  200.    if(m_eMetaResult!=META_SUCCESS)
  201.    {
  202.       Confirm( STATE_DATABASECOMPARE_FAIL );
  203.    }
  204.    return m_eMetaResult;
  205. }
  206. //---------------------------------------------------------------------------
  207. META_RESULT  __stdcall CDATABASECOMPARE::Req_NVRAM_SWC_Enable_ForceUpgrade( void )
  208. {
  209.     g_bIsRunning = true;
  210.     m_eMetaResult = META_NVRAM_SWC_Enable_ForceUpgrade_r( m_META_HANDLE_Obj.Get_MainHandle() );
  211.     g_bIsRunning = false;
  212.     return m_eMetaResult;
  213. }
  214. //---------------------------------------------------------------------------
  215. META_RESULT  __stdcall CDATABASECOMPARE::Req_NVRAM_SWC_Disable_ForceUpgrade( void )
  216. {
  217.     g_bIsRunning = true;
  218.     m_eMetaResult = META_NVRAM_SWC_Disable_ForceUpgrade_r( m_META_HANDLE_Obj.Get_MainHandle() );
  219.     g_bIsRunning = false;
  220.     return m_eMetaResult;
  221. }
  222. //===========================================================================
  223. ////////////////////////////  Global information  ///////////////////////////
  224. //===========================================================================
  225. int  CDATABASECOMPARE::Get_ConfirmState( void )
  226. {
  227.     return  m_iConfirmState;
  228. }
  229. //---------------------------------------------------------------------------
  230. META_RESULT  CDATABASECOMPARE::Get_MetaResult( void )
  231. {
  232.     return  m_eMetaResult;
  233. }