rf_reg.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.  *   rf_reg.cpp
  40.  *
  41.  * Project:
  42.  * --------
  43.  *   Maui META APP
  44.  *
  45.  * Description:
  46.  * ------------
  47.  *  RF transceiver register read/write 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. #include <IniFiles.hpp>
  66. #pragma hdrstop
  67. #ifndef META_DLL_H
  68. #include "meta.h"
  69. #endif
  70. #ifndef  _BB_COMMON_H_
  71. #include "bb_common.h"
  72. #endif
  73. #ifndef  _RF_REG_H_
  74. #include "rf_reg.h"
  75. #endif
  76. #ifndef  _MAN_ACTIVE_H_
  77. #include "man_active.h"
  78. #endif
  79. //===========================================================================
  80. static CRFREG* g_rf_reg_ptr;
  81. static bool g_bIsRunning;
  82. //===========================================================================
  83. static void  REQ_ReadRegister(void)
  84. {
  85.     g_rf_reg_ptr->REQ_ReadRegister();
  86. }
  87. //---------------------------------------------------------------------------
  88. static void  REQ_WriteRegister(void)
  89. {
  90.     g_rf_reg_ptr->REQ_WriteRegister();
  91. }
  92. //===========================================================================
  93. CRFREG::CRFREG(void)
  94. {
  95.     g_bIsRunning = false;
  96.     ConfirmCallback = 0;
  97. }
  98. //---------------------------------------------------------------------------
  99. CRFREG::~CRFREG()
  100. {
  101.     g_bIsRunning = false;
  102.     ConfirmCallback = 0;
  103.     EraseVector();
  104.     DeAllocateVector();
  105. }
  106. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  107. void CRFREG::AllocateVector(void)
  108. {
  109.     if (NULL == m_pvRfReg)
  110.     {
  111.         m_pvRfReg = new vector<S_RF_REG_T>;
  112.     }
  113. }
  114. //--------------------------------------------------------------------------
  115. void  CRFREG::DeAllocateVector(void)
  116. {
  117.     if (NULL != m_pvRfReg)
  118.     {
  119.         delete m_pvRfReg;
  120.     }
  121. }
  122. //--------------------------------------------------------------------------
  123. void  CRFREG::EraseVector(void)
  124. {
  125.     if (NULL != m_pvRfReg)
  126.     {
  127.         if (! m_pvRfReg->empty())
  128.         {   m_pvRfReg->erase(m_pvRfReg->begin(), m_pvRfReg->end());
  129.         }
  130.     }
  131. }
  132. //---------------------------------------------------------------------------
  133. void  CRFREG::REQ_Stop(void)
  134. {
  135.     if (!g_bIsRunning)
  136.     {
  137.         return;
  138.     }
  139.     Confirm(METAAPP_STOP);
  140.     g_bIsRunning = false;
  141. }
  142. //---------------------------------------------------------------------------
  143. void  CRFREG::Confirm(E_METAAPP_RESULT_T confirm_state)
  144. {
  145.     if (!g_bIsRunning)
  146.     {
  147.         return;
  148.     }
  149.     if (NULL == ConfirmCallback)
  150.     {
  151.         return;
  152.     }    
  153.     m_eConfirmState = confirm_state;
  154.     ActiveMan->SetActiveFunction(ConfirmCallback);
  155. }
  156. //===========================================================================
  157. void  CRFREG::REQ_ReadRegister_Start(unsigned int bsi_addr)
  158. {
  159.     g_rf_reg_ptr = this;
  160.     g_bIsRunning = true;
  161.     m_uiBsiAddr  = bsi_addr;
  162.     ActiveMan->SetActiveFunction(::REQ_ReadRegister);
  163. }
  164. //-------------------------------------
  165. void CRFREG::REQ_ReadRegister(void)
  166. {
  167.     if (!g_bIsRunning)
  168.     {
  169.         return;
  170.     }
  171.     unsigned int bsi_data;
  172.     META_RESULT MetaResult = META_Rf_GetRFImmediateBSI_r(m_META_HANDLE_Obj.Get_MainHandle(), 500, m_uiBsiAddr, &bsi_data);
  173.     if (MetaResult != META_SUCCESS)
  174.     {
  175.         Confirm(METAAPP_FAIL);
  176.         return;
  177.     }
  178.     m_uiBsiData = bsi_data;
  179.     Confirm(METAAPP_SUCCESS);
  180. }
  181. //===========================================================================
  182. void CRFREG::REQ_WriteRegister_Start(unsigned int bsi_data)
  183. {
  184.     g_rf_reg_ptr = this;
  185.     g_bIsRunning = true;
  186.     m_uiBsiData  = bsi_data;
  187.     ActiveMan->SetActiveFunction(::REQ_WriteRegister);
  188. }
  189. //-------------------------------------
  190. void CRFREG::REQ_WriteRegister(void)
  191. {
  192.     if (!g_bIsRunning)
  193.     {
  194.         return;
  195.     }
  196.     META_RESULT MetaResult;
  197.     MetaResult = META_Rf_SetRFImmediateBSI_r(m_META_HANDLE_Obj.Get_MainHandle(), 500, m_uiBsiData);
  198.     if (MetaResult!=META_SUCCESS)
  199.     {
  200.         Confirm(METAAPP_FAIL);
  201.         return;
  202.     }
  203.     Confirm(METAAPP_SUCCESS);
  204. }
  205. //===========================================================================
  206. ////////////////////////////        INI file      ///////////////////////////
  207. //===========================================================================
  208. static AnsiString as_SECTION_NAME = "RF transceiver register";
  209. static AnsiString as_KEY_NAME_COUNT = "register count";
  210. //---------------------------------------------------------------------------
  211. bool  CRFREG::RfRegSectionExist(char *filename)
  212. {
  213.     TIniFile   *ini_file;
  214.     ini_file = new TIniFile( filename );
  215.     if (NULL == ini_file) return false;
  216.     if (ini_file->SectionExists(as_SECTION_NAME))
  217.     {
  218.         return true;
  219.     }
  220.     return false;
  221. }
  222. //---------------------------------------------------------------------------
  223. bool  CRFREG::REQ_Read_From_File(char *filename)
  224. {
  225.     TIniFile   *ini_file;
  226.     ini_file = new TIniFile(filename);
  227.     if (NULL == ini_file)  return false;
  228.     if (NULL == m_pvRfReg)
  229.     {
  230.         AllocateVector();
  231.     }
  232.     EraseVector();
  233.     AnsiString as;
  234.     unsigned int ui_count;
  235.     ui_count = ini_file->ReadInteger(as_SECTION_NAME, as_KEY_NAME_COUNT, 0);
  236.     for (unsigned int i=0; i<ui_count; i++)
  237.     {
  238.         S_RF_REG_T rf_reg;
  239.         as = "register " + IntToStr(i) + " name";
  240.         rf_reg.as_name  = ini_file->ReadString(as_SECTION_NAME, as, "");
  241.         as = "register " + IntToStr(i) + " address";
  242.         rf_reg.ui_addr  = ini_file->ReadInteger(as_SECTION_NAME, as, 0);
  243.         as = "register " + IntToStr(i) + " read bsi data";
  244.         rf_reg.ui_read_bsi_data = ini_file->ReadInteger(as_SECTION_NAME, as, 0);
  245.         as = "register " + IntToStr(i) + " write bsi data";
  246.         rf_reg.ui_write_bsi_data = ini_file->ReadInteger(as_SECTION_NAME, as, 0);
  247.         m_pvRfReg->push_back(rf_reg);
  248.     }
  249.     delete  ini_file;
  250.     return  true;
  251. }
  252. //---------------------------------------------------------------------------
  253. bool  CRFREG::REQ_Write_To_File(char *filename)
  254. {
  255.     return true;
  256. }
  257. //===========================================================================
  258. ////////////////////////////  Export information  ///////////////////////////
  259. //===========================================================================
  260. E_METAAPP_RESULT_T CRFREG::Get_ConfirmState(void)
  261. {
  262.     return m_eConfirmState;
  263. }
  264. //---------------------------------------------------------------------------
  265. unsigned int CRFREG::Get_BsiData(void)
  266. {
  267.     return m_uiBsiData;
  268. }
  269. //---------------------------------------------------------------------------
  270. vector<S_RF_REG_T>* CRFREG::Get_RfRegVector(void)
  271. {
  272.     return m_pvRfReg;
  273. }