form_DatabaseChange.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.  *   form_DatabaseChange.cpp
  40.  *
  41.  * Project:
  42.  * --------
  43.  *   Maui META APP
  44.  *
  45.  * Description:
  46.  * ------------
  47.  *   Database change form 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. #include <vcl.h>
  67. #pragma hdrstop
  68. #include "form_DatabaseChange.h"
  69. #include "form_main.h"
  70. #include "man_fdm.h"
  71. //---------------------------------------------------------------------------
  72. #pragma package(smart_init)
  73. #pragma resource "*.dfm"
  74. TfrmDatabaseChange *frmDatabaseChange;
  75. extern  CNVRAMMan  *NVRAMMan;
  76. //---------------------------------------------------------------------------
  77. static void  CNF_NVRAM_Get_Disk_Info( void )
  78. {   frmDatabaseChange->CNF_NVRAM_Get_Disk_Info();
  79. }
  80. //---------------------------------------------------------------------------
  81. __fastcall TfrmDatabaseChange::TfrmDatabaseChange(TComponent* Owner)
  82.         : TForm(Owner)
  83. {
  84. }
  85. //---------------------------------------------------------------------------
  86. void __fastcall TfrmDatabaseChange::btnCompareDatabaseClick(
  87.       TObject *Sender)
  88. {
  89.     bool ok;
  90.     char str[512];
  91.     if( ! NVRAMMan->Get_IsInit() )
  92.     {
  93.         frmMainSel->mnuFDMDatabaseClick(Sender);
  94.     }
  95.     if( ! NVRAMMan->Get_IsInit() )
  96.     {
  97.         sbDBChange->Panels->Items[0]->Text = (AnsiString) "  NVRAM database file initialization fail";
  98.         Application->MessageBox( "Execution Failure : NVRAM database file initialization", "FAILURE", MB_OK );
  99.         return;
  100.     }
  101.     ok = OpenDialog->Execute();
  102.     if( !ok )  return;
  103.     strcpy( str, OpenDialog->FileName.c_str() );
  104.     MetaResult = DATABASE_COMPARE_Object.Req_NVRAM_SWC_Database_Compare(str, &NumOfNewAddLID, &NumOfModifiedLID, &NumOfDeletedLID);
  105.     if( MetaResult == META_SUCCESS)
  106.     {
  107.         stNumOfNewAddedLID->Caption = IntToStr(NumOfNewAddLID);
  108.         stNumOfModifiedLID->Caption = IntToStr(NumOfModifiedLID);
  109.         stNumOfDeletedLID->Caption  = IntToStr(NumOfDeletedLID);
  110.         if(NewAddLIDBuf==0)
  111.         {
  112.             NewAddLIDBuf = new  LID_Info[NumOfNewAddLID];
  113.         }
  114.         if(ModifiedLIDBuf==0)
  115.         {
  116.             ModifiedLIDBuf = new  LID_Info[NumOfModifiedLID];
  117.         }
  118.         if(DeletedLIDBuf==0)
  119.         {
  120.             DeletedLIDBuf = new  LID_Info[NumOfDeletedLID];
  121.         }
  122.         MetaResult = DATABASE_COMPARE_Object.Req_NVRAM_SWC_Get_Database_Compare_Result(NewAddLIDBuf, NumOfNewAddLID, ModifiedLIDBuf, NumOfModifiedLID, DeletedLIDBuf, NumOfDeletedLID);
  123.         if( MetaResult == META_SUCCESS)
  124.         {
  125.             int i;
  126.             lbNewAddedLID->Clear();
  127.             lbModifiedLID->Clear();
  128.             lbDeletedLID->Clear();
  129.             for (i=0; i< NumOfNewAddLID; i++)
  130.             {
  131.                 lbNewAddedLID->Items->Add( (AnsiString) NewAddLIDBuf[i].LID);
  132.             }
  133.             for (i=0; i< NumOfModifiedLID; i++)
  134.             {
  135.                 lbModifiedLID->Items->Add( (AnsiString) ModifiedLIDBuf[i].LID);
  136.             }
  137.             for (i=0; i< NumOfDeletedLID; i++)
  138.             {
  139.                 lbDeletedLID->Items->Add( (AnsiString) DeletedLIDBuf[i].LID);
  140.             }
  141.         }
  142.         delete NewAddLIDBuf;
  143.         NewAddLIDBuf = 0;
  144.         delete ModifiedLIDBuf;
  145.         ModifiedLIDBuf = 0;
  146.         delete DeletedLIDBuf;
  147.         DeletedLIDBuf = 0;
  148.         DATABASE_COMPARE_Object.ConfirmCallback = ::CNF_NVRAM_Get_Disk_Info;
  149.         DATABASE_COMPARE_Object.Req_NVRAM_SWC_Check_FAT_FreeSpace();
  150.     }
  151.     if (  MetaResult != META_SUCCESS )
  152.     {
  153.         sbDBChange->Panels->Items[0]->Text = (AnsiString) "  Get database compare result fail";
  154.         Application->MessageBox( "Execution Fail : get database compare result", "FAIL", MB_OK );
  155.     }
  156. }
  157. //---------------------------------------------------------------------------
  158. void  TfrmDatabaseChange::CNF_NVRAM_Get_Disk_Info( void )
  159. {
  160.    int   state = DATABASE_COMPARE_Object.Get_ConfirmState();
  161.    if( state == STATE_DATABASECOMPARE_OK )
  162.    {
  163.        stNVRAMSize->Caption = IntToStr(DATABASE_COMPARE_Object.CNF_NVRAM_GetDiskInfo.target_nvramsize);
  164.        stFATFreeSpace->Caption = IntToStr(DATABASE_COMPARE_Object.CNF_NVRAM_GetDiskInfo.target_freespace);
  165.        stOverhead->Caption = IntToStr(DATABASE_COMPARE_Object.CNF_NVRAM_GetDiskInfo.target_overhead);
  166.        stNewDatabaseNVRAMSize->Caption = IntToStr(DATABASE_COMPARE_Object.CNF_NVRAM_GetDiskInfo.newdb_nvramsize);
  167.    }
  168.    else  if( state == STATE_DATABASECOMPARE_FAIL )
  169.    {  if( DATABASE_COMPARE_Object.Get_MetaResult() != META_SUCCESS)
  170.       {
  171.           sbDBChange->Panels->Items[0]->Text = (AnsiString) "  Can't retrieve info from target fail";
  172.           Application->MessageBox( "Execution Fail : can't retrieve info from target", "FAIL", MB_OK );
  173.       }
  174.       else if( DATABASE_COMPARE_Object.CNF_NVRAM_GetDiskInfo.status == 1) // [ERROR] can't retrieve info from target
  175.       {
  176.          sbDBChange->Panels->Items[0]->Text = (AnsiString) "  Can't retrieve info from target error";
  177.          Application->MessageBox( "Execution Error : can't retrieve info from target", "ERROR", MB_OK );
  178.       }
  179.       else // [ERROR] freespace is not enough to upgrade to new NVRAM
  180.       {
  181.           stNVRAMSize->Caption = IntToStr(DATABASE_COMPARE_Object.CNF_NVRAM_GetDiskInfo.target_nvramsize);
  182.           stFATFreeSpace->Caption = IntToStr(DATABASE_COMPARE_Object.CNF_NVRAM_GetDiskInfo.target_freespace);
  183.           stOverhead->Caption = IntToStr(DATABASE_COMPARE_Object.CNF_NVRAM_GetDiskInfo.target_overhead);
  184.           stNewDatabaseNVRAMSize->Caption = IntToStr(DATABASE_COMPARE_Object.CNF_NVRAM_GetDiskInfo.newdb_nvramsize);
  185.           sbDBChange->Panels->Items[0]->Text = (AnsiString) "  Freespace is not enough to upgrade to new NVRAM error";
  186.           Application->MessageBox( "Execution Error : freespace is not enough to upgrade to new NVRAM", "ERROR", MB_OK );
  187.       }
  188.    }
  189.    else  if( state == STATE_DATABASECOMPARE_TIMEOUT )
  190.    {
  191.        sbDBChange->Panels->Items[0]->Text = (AnsiString) "  Database compare timeout";
  192.        Application->MessageBox( "Execution Timeout : Database compare", "TIMEOUT", MB_OK );
  193.    }
  194.    else  if( state == STATE_DATABASECOMPARE_STOP )
  195.    {
  196.         sbDBChange->Panels->Items[0]->Text = (AnsiString) "  Database compare stop";
  197.    }
  198. }
  199. //---------------------------------------------------------------------------
  200. void __fastcall TfrmDatabaseChange::btnDisableForceUpgradeClick(
  201.       TObject *Sender)
  202. {
  203.      DATABASE_COMPARE_Object.Req_NVRAM_SWC_Disable_ForceUpgrade();
  204. }
  205. //---------------------------------------------------------------------------
  206. void __fastcall TfrmDatabaseChange::btnEnableForceUpgradeClick(
  207.       TObject *Sender)
  208. {
  209.        DATABASE_COMPARE_Object.Req_NVRAM_SWC_Enable_ForceUpgrade();
  210. }
  211. //---------------------------------------------------------------------------
  212. void __fastcall TfrmDatabaseChange::btnGetFATFreeSpaceClick(
  213.       TObject *Sender)
  214. {
  215.        DATABASE_COMPARE_Object.ConfirmCallback = ::CNF_NVRAM_Get_Disk_Info;
  216.        DATABASE_COMPARE_Object.Req_NVRAM_SWC_Check_FAT_FreeSpace();
  217. }
  218. //---------------------------------------------------------------------------