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

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_BarcodeDownload.cpp
  40.  *
  41.  * Project:
  42.  * --------
  43.  *   Maui META APP
  44.  *
  45.  * Description:
  46.  * ------------
  47.  *   Barcode upload/download 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_BarcodeDownload.h"
  69. #include "form_main.h"
  70. #include "man_fdm.h"
  71. #ifndef  _MISC_BARCODE_H_
  72. #include "misc_barcode.h"
  73. #endif
  74. //---------------------------------------------------------------------------
  75. #pragma package(smart_init)
  76. #pragma resource "*.dfm"
  77. TfrmBarcodeDownload *frmBarcodeDownload;
  78. //===========================================================================
  79. ////////////////////////  static function ///////////////////////////////////
  80. //===========================================================================
  81. //---------------------------------------------------------------------------
  82. static void CNF_ReadFromNVRAM( void )
  83. {   frmBarcodeDownload->UploadFromFlashDone();
  84. }
  85. //---------------------------------------------------------------------------
  86. static void  CNF_WriteToNVRAM( void )
  87. {   frmBarcodeDownload->DownloadToFlashDone();
  88. }
  89. //---------------------------------------------------------------------------
  90. void  DisplayNVRAMDatabaseFile( void )
  91. {
  92.     frmBarcodeDownload->DisplayNVRAMDatabaseFile();
  93. }
  94. //===========================================================================
  95. ////////////////////////  method ////////////////////////////////////////////
  96. //===========================================================================
  97. //---------------------------------------------------------------------------
  98. __fastcall TfrmBarcodeDownload::TfrmBarcodeDownload(TComponent* Owner)
  99.         : TForm(Owner)
  100. {
  101. }
  102. //---------------------------------------------------------------------------
  103. void __fastcall TfrmBarcodeDownload::btnLoadFromFlashClick(TObject *Sender)
  104. {
  105.     if( ! NVRAMMan->Get_IsInit() )
  106.     {   frmMainSel->mnuFDMDatabaseClick(Sender);
  107.     }
  108.     if( ! NVRAMMan->Get_IsInit() )
  109.     {
  110.         sbBarcode->Panels->Items[0]->Text = (AnsiString) "  NVRAM database file initialization fail";
  111.         Application->MessageBox( "Execution Failure : NVRAM database file initialization fail", "FAILURE", MB_OK );
  112.         return;
  113.     }
  114.     BARCODE_Object.ConfirmCallback = ::CNF_ReadFromNVRAM;
  115.     BARCODE_Object.REQ_Read_From_NVRAM();
  116.     btnLoadFromFlash->Enabled = false;
  117.     btnSaveToFlash->Enabled = false;
  118.     sbBarcode->Panels->Items[0]->Text = (AnsiString) "  Upload barcode from flash progressing";
  119. }
  120. //---------------------------------------------------------------------------
  121. void   TfrmBarcodeDownload::UploadFromFlashDone( void )
  122. {
  123.     int state = BARCODE_Object.Get_ConfirmState();
  124.     int i;
  125.     btnLoadFromFlash->Enabled = true;
  126.     btnSaveToFlash->Enabled = true;
  127.     switch( state )
  128.     {
  129.         case METAAPP_SUCCESS:
  130.         {
  131.             // strcpy(Barcode, BARCODE_Object.Barcode);
  132.             m_sBarcode = BARCODE_Object.Get_Barcode();
  133.             edtBarcode->Text = (AnsiString) m_sBarcode.c_Barcode;
  134.             sbBarcode->Panels->Items[0]->Text = (AnsiString) "  Upload barcode from flash successfully";
  135.         }
  136.         break;
  137.         case METAAPP_FAIL:
  138.         {
  139.             sbBarcode->Panels->Items[0]->Text = (AnsiString) "  Upload barcode from flash fail, please check the version of load and NVRAM database are same.";
  140.             Application->MessageBox( "Execution Failure : Upload barcode form flash, please check the version of load and NVRAM database are same.", "FAILURE", MB_OK );
  141.         }
  142.         break;
  143.         case METAAPP_TIMEOUT:
  144.         {
  145.             sbBarcode->Panels->Items[0]->Text = (AnsiString) "  Upload barcode from flash timeout";
  146.             Application->MessageBox( "Execution Timeout : Upload barcode form flash", "TIMEOUT", MB_OK );
  147.         }
  148.         break;
  149.         case METAAPP_STOP:
  150.         {
  151.             sbBarcode->Panels->Items[0]->Text = (AnsiString) "  Upload barcode from flash stop";
  152.         }
  153.         break;
  154.     }
  155. }
  156. //==============================================================================
  157. void __fastcall TfrmBarcodeDownload::btnSaveToFlashClick(TObject *Sender)
  158. {
  159.     if( ! NVRAMMan->Get_IsInit() )
  160.     {   frmMainSel->mnuFDMDatabaseClick(Sender);
  161.     }
  162.     if( ! NVRAMMan->Get_IsInit() )
  163.     {
  164.         sbBarcode->Panels->Items[0]->Text = (AnsiString) "  NVRAM database file initialization fail";
  165.         Application->MessageBox( "Execution Failure : NVRAM database file initialize fail", "FAILURE", MB_OK );
  166.         return;
  167.     }
  168.     
  169.     S_BARCODE barcode;
  170.     strcpy(barcode.c_Barcode, edtBarcode->Text.c_str());
  171.     BARCODE_Object.Set_Barcode( barcode );
  172.     BARCODE_Object.ConfirmCallback = ::CNF_WriteToNVRAM;
  173.     BARCODE_Object.REQ_Write_To_NVRAM();
  174.     btnLoadFromFlash->Enabled = false;
  175.     btnSaveToFlash->Enabled = false;
  176.     sbBarcode->Panels->Items[0]->Text = (AnsiString) "  Download barcode to flash progressing";
  177. }
  178. //---------------------------------------------------------------------------
  179. void   TfrmBarcodeDownload::DownloadToFlashDone( void )
  180. {
  181.     int state = BARCODE_Object.Get_ConfirmState();
  182.     btnLoadFromFlash->Enabled = true;
  183.     btnSaveToFlash->Enabled = true;
  184.     switch (state)
  185.     {
  186.         case METAAPP_SUCCESS:
  187.         {
  188.             AnsiString temp_as_Barcode;
  189.             temp_as_Barcode = AnsiStringAdd( edtBarcode->Text , cbBarcodeIncreasement->ItemIndex );
  190.             edtBarcode->Text = temp_as_Barcode;
  191.             sbBarcode->Panels->Items[0]->Text = (AnsiString) "  Download barcode to flash successfully";
  192.         }
  193.         break;
  194.         case METAAPP_FAIL:
  195.         {
  196.             sbBarcode->Panels->Items[0]->Text = (AnsiString) "  Download barcode to flash fail, please check the version of load and NVRAM database are same.";
  197.             Application->MessageBox( "Execution Failure : Download barcode to flash, please check the version of load and NVRAM database are same.", "FAILURE", MB_OK );
  198.         }
  199.         break;
  200.         case METAAPP_TIMEOUT:
  201.         {
  202.             sbBarcode->Panels->Items[0]->Text = (AnsiString) "  Download barcode to flash timeout";
  203.             Application->MessageBox( "Execution Timeout : Download barcode to flash", "TIMEOUT", MB_OK );
  204.         }
  205.         break;
  206.         case METAAPP_STOP:
  207.         {
  208.             sbBarcode->Panels->Items[0]->Text = (AnsiString) "  Download barcode to flash stop";
  209.         }
  210.         break;
  211.         case METAAPP_NVRAM_LID_VER_NOT_SUPPORT:
  212.         {
  213.             sbBarcode->Panels->Items[0]->Text = (AnsiString) "  NVRAM_EF_BARCODE_NUM_LID version is not support, please update META to latest version";
  214.             Application->MessageBox("Execution Warning : NVRAM_EF_BARCODE_NUM_LID version is not support, please update META to latest version", "WARNING", MB_OK);
  215.         }
  216.         break;
  217.         default:
  218.         {
  219.         }
  220.         break;
  221.     }
  222. }
  223. //==============================================================================
  224. void __fastcall TfrmBarcodeDownload::btnLoadFromFileClick(TObject *Sender)
  225. {
  226.     char str[512];
  227.     bool ok;
  228.     int i;
  229.     ok = OpenDialog->Execute();
  230.     if( !ok )
  231.     {
  232.         sbBarcode->Panels->Items[0]->Text = (AnsiString) "  Load barcode from file fail";
  233.         Application->MessageBox( "Execution Failure : Load barcode from file", "FAILURE", MB_OK );
  234.         return;
  235.     }
  236.     strcpy( str, OpenDialog->FileName.c_str() );
  237.     ok = BARCODE_Object.REQ_Read_From_File( str );
  238.     if( ok )
  239.     {
  240.         m_sBarcode = BARCODE_Object.Get_Barcode();
  241.         edtBarcode->Text = m_sBarcode.c_Barcode;
  242.         sbBarcode->Panels->Items[0]->Text = (AnsiString) "  Load barcode from file successfully";
  243.     }
  244.     else
  245.     {
  246.         sbBarcode->Panels->Items[0]->Text = (AnsiString) "  Load barcode from file fail";
  247.         Application->MessageBox( "Execution Failure : Load barcode from file", "FAILURE", MB_OK );
  248.     }
  249. }
  250. //---------------------------------------------------------------------------
  251. void __fastcall TfrmBarcodeDownload::btnSaveToFileClick(TObject *Sender)
  252. {
  253.     char str[512];
  254.     bool ok;
  255.     int i;
  256.     ok = SaveDialog->Execute();
  257.     if( !ok )
  258.     {
  259.         sbBarcode->Panels->Items[0]->Text = (AnsiString) "  Save barcode to file fail";
  260.         Application->MessageBox( "Execution Failure : Save barcode to file", "FAILURE", MB_OK );
  261.         return;
  262.     }
  263.     S_BARCODE barcode;
  264.     strcpy(barcode.c_Barcode, edtBarcode->Text.c_str());
  265.     BARCODE_Object.Set_Barcode( barcode );
  266.     strcpy( str, SaveDialog->FileName.c_str() );
  267.     ok =  BARCODE_Object.REQ_Write_To_File( str );
  268.     if( !ok )
  269.     {
  270.         sbBarcode->Panels->Items[0]->Text = (AnsiString) "  Save barcode to file fail";
  271.         Application->MessageBox( "Execution Failure : Save barcode to file", "FAILURE", MB_OK );
  272.     }
  273. }
  274. //==============================================================================
  275. void __fastcall TfrmBarcodeDownload::BarcodeCheck(TObject *Sender)
  276. {
  277.     int  i;
  278.     int  data;
  279.     AnsiString  text;
  280.     TEdit *edit = (TEdit*)Sender;
  281.     char  hint[] = " Barcode length shall be less or equal 63 ";
  282.     text = edit->Text;
  283.     if( !IsValidBarcode( text) )
  284.     {
  285.         ShowHintLabel( edit, hint );
  286.         edit->SetFocus();
  287.         return;
  288.     }
  289. }
  290. //---------------------------------------------------------------------------
  291. void  TfrmBarcodeDownload::ShowHintLabel( TControl *sender, char* hint )
  292. {
  293.     TPoint pt0 = this->ClientOrigin;
  294.     TPoint pt1 = sender->ClientOrigin;
  295.     lblHint->Left = (pt1.x-pt0.x);
  296.     lblHint->Top  = (pt1.y-pt0.y)+sender->Height+3;
  297.     lblHint->Caption = hint;
  298.     lblHint->Visible = true;
  299.     HintTimer->Enabled = true;
  300. }
  301. //-----------------------------------------------------------------------------
  302. void __fastcall TfrmBarcodeDownload::HintTimerTimer(TObject *Sender)
  303. {
  304.     HintTimer->Enabled = false;
  305.     lblHint->Visible = false;
  306. }
  307. //---------------------------------------------------------------------------
  308. void __fastcall TfrmBarcodeDownload::btnChangeNVRAMDatabaseFileClick(TObject *Sender)
  309. {
  310.     frmMainSel->mnuFDMDatabaseClick(Sender);
  311.     if( ! NVRAMMan->Get_IsInit() )
  312.     {
  313.         sbBarcode->Panels->Items[0]->Text = (AnsiString) "  NVRAM database file init fail, please change NVRAM database file";
  314.         Application->MessageBox( "NVRAM database file init fail", "FAILURE", MB_OK );
  315.     }
  316.     else
  317.     {
  318.         sbBarcode->Panels->Items[0]->Text = (AnsiString) "  NVRAM database file init success";
  319.         stNVRAMDatabaseFile->Caption = frmMainSel->as_NVRAM_database_file_name;
  320.     }
  321. }
  322. //---------------------------------------------------------------------------
  323. void __fastcall TfrmBarcodeDownload::FormShow(TObject *Sender)
  324. {
  325.     static bool firstBarcodeDownloadFromShow = true;
  326.     if ( firstBarcodeDownloadFromShow == true )
  327.     {
  328.         
  329.         ActiveMan->SetActiveFunction( ::DisplayNVRAMDatabaseFile );
  330.         firstBarcodeDownloadFromShow = false;
  331.     }
  332. }
  333. //---------------------------------------------------------------------------
  334. void TfrmBarcodeDownload::DisplayNVRAMDatabaseFile( void )
  335. {
  336.     unsigned long nvram_idb;
  337.     META_RESULT meta_result;
  338.     as_NVRAM_DATABASE_FILE = read_NVRAM_DATABASE_FILE("MF_setup.txt", Application->ExeName);
  339.     stNVRAMDatabaseFile->Caption = as_NVRAM_DATABASE_FILE;
  340.     meta_result = META_NVRAM_Init_r( m_META_HANDLE_Obj.Get_MainHandle(), as_NVRAM_DATABASE_FILE.c_str(), &nvram_idb);
  341.     if( meta_result !=META_SUCCESS )
  342.     {
  343.         NVRAMMan->Set_IsInit( false );
  344.         if( META_MAUI_DB_INCONSISTENT == meta_result )
  345.         {
  346.             sbBarcode->Panels->Items[0]->Text = (AnsiString) "  NVRAM database file and target load is inconsistent";
  347.             Application->MessageBox( "NVRAM database file and target load is inconsistent ", "WARNING", MB_OK );
  348.         }
  349.         else
  350.         {
  351.             sbBarcode->Panels->Items[0]->Text = (AnsiString) "  NVRAM database file initialization fail, please change NVRAM database file";
  352.             Application->MessageBox( "NVRAM database file init fail", "FAILURE", MB_OK );
  353.         }
  354.     }
  355.     else
  356.     {
  357.         NVRAMMan->Set_IsInit( true );
  358.         sbBarcode->Panels->Items[0]->Text = (AnsiString) "  NVRAM database file initialization successful";
  359.     }
  360. }
  361. //---------------------------------------------------------------------------
  362. void __fastcall TfrmBarcodeDownload::FormClose(TObject *Sender,
  363.       TCloseAction &Action)
  364. {
  365.     SaveNVRAMDatabaseFile();
  366. }
  367. //---------------------------------------------------------------------------
  368. void TfrmBarcodeDownload::SaveNVRAMDatabaseFile( void )
  369. {
  370.     write_NVRAM_DATABASE_FILE( "MF_setup.txt", Application->ExeName, stNVRAMDatabaseFile->Caption );
  371. }