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

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.  *   get_version.cpp
  40.  *
  41.  * Project:
  42.  * --------
  43.  *   Maui META APP
  44.  *
  45.  * Description:
  46.  * ------------
  47.  *   Get version 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. #include <IniFiles.hpp>
  68. #pragma hdrstop
  69. #include "get_version.h"
  70. #include "man_active.h"
  71. //==============================================================================
  72. static CGETVERSION  *get_version_ptr;
  73. static bool g_bIsRunning;
  74. //---------------------------------------------------------------------------
  75. static void __stdcall CNF_GetTargetVersion(const VerInfo_Cnf  *cnf, const short token, void *usrData)
  76. {
  77.     get_version_ptr->CNF_GetTargetVersion( cnf, token, usrData );
  78. }
  79. //---------------------------------------------------------------------------
  80. static void  REQ_Finish( void )
  81. {   get_version_ptr->REQ_Finish();
  82. }
  83. //=============================================================================
  84. CGETVERSION::CGETVERSION( void )
  85. {
  86. }
  87. //----------------------------------------------------------------------------
  88. CGETVERSION::~CGETVERSION( )
  89. {
  90. }
  91. //---------------------------------------------------------------------------
  92. void  CGETVERSION::REQ_Finish( void )
  93. {
  94.     if(!g_bIsRunning)  return;
  95.     Confirm( STATE_GET_VERSION_OK );
  96.     g_bIsRunning = false;
  97. }
  98. //---------------------------------------------------------------------------
  99. void  CGETVERSION::REQ_Stop( void )
  100. {
  101.     if(!g_bIsRunning)  return;
  102.     META_Cancel_r( m_META_HANDLE_Obj.Get_MainHandle(), GETID_VERSION );
  103.     Confirm( STATE_GET_VERSION_STOP );
  104.     g_bIsRunning = false;
  105. }
  106. //------------------------------------------------------------------------------
  107. void  CGETVERSION::REQ_TimeOut( void )
  108. {
  109.     if(!g_bIsRunning)  return;
  110.     META_Cancel_r( m_META_HANDLE_Obj.Get_MainHandle(), GETID_VERSION );
  111.     Confirm( STATE_GET_VERSION_TIMEOUT );
  112.     g_bIsRunning = false;
  113. }
  114. //---------------------------------------------------------------------------
  115. void  CGETVERSION::Confirm( int confirm_state )
  116. {
  117.     if(!g_bIsRunning)  return;
  118.     if(ConfirmCallback==0)  return;
  119.     m_iConfirmState = confirm_state;
  120.     ActiveMan->SetActiveFunction( ConfirmCallback );
  121. }
  122. //==============================================================================
  123. bool CGETVERSION::GetTargetVersion(void)
  124. {
  125.     get_version_ptr = this;
  126.     g_bIsRunning = true;
  127.     MetaResult = META_GetTargetVerInfo_r(m_META_HANDLE_Obj.Get_MainHandle(), ::CNF_GetTargetVersion, &GETID_VERSION, NULL);
  128.     if(MetaResult!=META_SUCCESS)     {  Confirm( STATE_GET_VERSION_FAIL );  return false;  }
  129.     return true;
  130. }
  131. //------------------------------------------------------------------------------
  132. void CGETVERSION::CNF_GetTargetVersion(const VerInfo_Cnf  *cnf, const short token, void *usrData)
  133. {
  134.     if( ! g_bIsRunning )
  135.         return;
  136.    
  137.     VerInfo = *cnf;
  138.     ActiveMan->SetActiveFunction( ::REQ_Finish );
  139. }
  140. //---------------------------------------------------------------------------
  141. //===========================================================================
  142. bool  CGETVERSION::REQ_Read_From_File( char *filename )
  143. {
  144.     TIniFile   *ini_file;
  145.     AnsiString  as;
  146.     ini_file = new TIniFile( filename );
  147.     if( ini_file == NULL )  return false;
  148.     as = ini_file->ReadString( "Version",
  149.                                "BaseBand chip version",
  150.                                0 );
  151.     strcpy(VerInfo.BB_CHIP, as.c_str());
  152.     as = ini_file->ReadString( "Version",
  153.                                "ECO version",
  154.                                0 );
  155.     strcpy(VerInfo.ECO_VER, as.c_str());
  156.     as = ini_file->ReadString( "Version",
  157.                                "DSP firmware version",
  158.                                0 );
  159.     strcpy(VerInfo.DSP_FW, as.c_str());
  160.     as = ini_file->ReadString( "Version",
  161.                                "DSP patch version",
  162.                                0 );
  163.     strcpy(VerInfo.DSP_PATCH, as.c_str());
  164.     as = ini_file->ReadString( "Version",
  165.                                "Software version",
  166.                                0 );
  167.     strcpy(VerInfo.SW_VER, as.c_str());
  168.     as = ini_file->ReadString( "Version",
  169.                                "Hardware version",
  170.                                0 );
  171.     strcpy(VerInfo.HW_VER, as.c_str());
  172.     as = ini_file->ReadString( "Version",
  173.                                "Melody version",
  174.                                0 );
  175.     strcpy(VerInfo.MELODY_VER, as.c_str());
  176.     
  177.     delete  ini_file;
  178.     return true;
  179. }
  180. //===========================================================================
  181. bool  CGETVERSION::REQ_Write_To_File( char *filename )
  182. {
  183.     TIniFile   *ini_file;
  184.     ini_file = new TIniFile( filename );
  185.     if( ini_file == NULL )  return  false;
  186.     ini_file->WriteString( "Version",
  187.                            "BaseBand chip version",
  188.                            VerInfo.BB_CHIP );
  189.     ini_file->WriteString( "Version",
  190.                            "ECO version",
  191.                            VerInfo.ECO_VER );
  192.     ini_file->WriteString( "Version",
  193.                            "DSP firmware version",
  194.                            VerInfo.DSP_FW );
  195.     ini_file->WriteString( "Version",
  196.                            "DSP patch version",
  197.                            VerInfo.DSP_PATCH );
  198.     ini_file->WriteString( "Version",
  199.                            "Software version",
  200.                            VerInfo.SW_VER );
  201.     ini_file->WriteString( "Version",
  202.                            "Hardware version",
  203.                            VerInfo.HW_VER );
  204.     ini_file->WriteString( "Version",
  205.                            "Melody version",
  206.                            VerInfo.MELODY_VER );
  207.     delete  ini_file;
  208.     return  true;
  209. }
  210. //==========================================================================
  211. bool  CGETVERSION::Get_VerInfo( VerInfo_Cnf &verinfo )
  212. {
  213.     verinfo = VerInfo;
  214.     return true;
  215. }
  216. //--------------------------------------------------------------------------
  217. bool  CGETVERSION::Set_VerInfo( VerInfo_Cnf &verinfo )
  218. {
  219.     VerInfo = verinfo;
  220.     return true;
  221. }
  222. //===========================================================================
  223. ////////////////////////////  Global information  ///////////////////////////
  224. //===========================================================================
  225. int  CGETVERSION::Get_ConfirmState( void )
  226. {
  227.     return  m_iConfirmState;
  228. }