bb_pmic_reg.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.  *   bb_pmic_reg.cpp
  40.  *
  41.  * Project:
  42.  * --------
  43.  *   Maui META APP
  44.  *
  45.  * Description:
  46.  * ------------
  47.  *  PMIC 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  _BB_PMIC_REG_H_
  74. #include "bb_pmic_reg.h"
  75. #endif
  76. #ifndef  _MAN_ACTIVE_H_
  77. #include "man_active.h"
  78. #endif
  79. //===========================================================================
  80. static CBBPMICREG*  g_pmic_reg_ptr;
  81. static bool g_bIsRunning;
  82. //===========================================================================
  83. static void REQ_ReadRegister(void)
  84. {
  85.     g_pmic_reg_ptr->REQ_ReadRegister();
  86. }
  87. //---------------------------------------------------------------------------
  88. static void REQ_WriteRegister(void)
  89. {
  90.     g_pmic_reg_ptr->REQ_WriteRegister();
  91. }
  92. //===========================================================================
  93. CBBPMICREG::CBBPMICREG(void)
  94. {
  95.     g_bIsRunning = false;
  96.     ConfirmCallback = 0;
  97. }
  98. //---------------------------------------------------------------------------
  99. CBBPMICREG::~CBBPMICREG()
  100. {
  101.     g_bIsRunning = false;
  102.     ConfirmCallback = 0;
  103.     EraseVector();
  104.     DeAllocateVector();
  105. }
  106. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  107. void  CBBPMICREG::AllocateVector(void)
  108. {
  109.     if (NULL == m_pvPmicReg)
  110.     {
  111.         m_pvPmicReg = new vector<S_BB_PMIC_REG_T>;
  112.     }
  113. }
  114. //--------------------------------------------------------------------------
  115. void  CBBPMICREG::DeAllocateVector(void)
  116. {
  117.     if (NULL != m_pvPmicReg)
  118.     {
  119.         delete m_pvPmicReg;
  120.     }
  121. }
  122. //--------------------------------------------------------------------------
  123. void  CBBPMICREG::EraseVector(void)
  124. {
  125.     if (NULL != m_pvPmicReg)
  126.     {
  127.         if (! m_pvPmicReg->empty())
  128.         {   m_pvPmicReg->erase(m_pvPmicReg->begin(), m_pvPmicReg->end());
  129.         }
  130.     }
  131. }
  132. //---------------------------------------------------------------------------
  133. void  CBBPMICREG::REQ_Finish(void)
  134. {
  135.     if (!g_bIsRunning)  return;
  136.     Confirm(METAAPP_SUCCESS);
  137.     g_bIsRunning = false;
  138. }
  139. //---------------------------------------------------------------------------
  140. void  CBBPMICREG::REQ_Stop(void)
  141. {
  142.     if (!g_bIsRunning)  return;
  143.     META_Cancel_r(m_META_HANDLE_Obj.Get_MainHandle(), m_sBBID_REG);
  144.     Confirm(METAAPP_STOP);
  145.     g_bIsRunning = false;
  146. }
  147. //---------------------------------------------------------------------------
  148. void  CBBPMICREG::Confirm(E_METAAPP_RESULT_T confirm_state)
  149. {
  150.     if (!g_bIsRunning)  return;
  151.     if(ConfirmCallback==0)  return;
  152.     m_eConfirmState = confirm_state;
  153.     ActiveMan->SetActiveFunction(ConfirmCallback);
  154. }
  155. //===========================================================================
  156. void  CBBPMICREG::REQ_ReadRegister_Start(unsigned int addr)
  157. {
  158.     g_pmic_reg_ptr = this;
  159.     g_bIsRunning  = true;
  160.     m_uiAddress = addr;
  161.     ActiveMan->SetActiveFunction(::REQ_ReadRegister);
  162. }
  163. //-------------------------------------
  164. void CBBPMICREG::REQ_ReadRegister(void)
  165. {
  166.     if (!g_bIsRunning)
  167.     {
  168.         return;
  169.     }
  170.     RegRead_Req req;
  171.     RegRead_Cnf cnf;
  172.     req.addr  = m_uiAddress;
  173.     META_RESULT MetaResult = META_PMIC_RegRead_r(m_META_HANDLE_Obj.Get_MainHandle(), 5000, &req, &cnf);
  174.     m_usValue = cnf.value;
  175.     if ((MetaResult != META_SUCCESS) || ((unsigned char)BB_STATUS_SUCCESS != cnf.status))
  176.     {
  177.         Confirm( METAAPP_FAIL );
  178.         return;
  179.     }
  180.     Confirm(METAAPP_SUCCESS);
  181. }
  182. //===========================================================================
  183. void  CBBPMICREG::REQ_WriteRegister_Start(unsigned int addr, unsigned short value)
  184. {
  185.     g_pmic_reg_ptr = this;
  186.     g_bIsRunning  = true;
  187.     m_uiAddress = addr;
  188.     m_usValue   = value;
  189.     ActiveMan->SetActiveFunction(::REQ_WriteRegister);
  190. }
  191. //-------------------------------------
  192. void CBBPMICREG::REQ_WriteRegister(void)
  193. {
  194.     if (!g_bIsRunning)
  195.     {
  196.         return;
  197.     }
  198.     RegWrite_Req req;
  199.     RegWrite_Cnf cnf;
  200.     req.addr  = m_uiAddress;
  201.     req.value = m_usValue;
  202.     META_RESULT MetaResult = META_PMIC_RegWrite_r(m_META_HANDLE_Obj.Get_MainHandle(), 5000, &req, &cnf);
  203.     if ((MetaResult!=META_SUCCESS) || ((unsigned char)BB_STATUS_SUCCESS != cnf.status))
  204.     {
  205.         Confirm(METAAPP_FAIL);
  206.         return;
  207.     }
  208.     Confirm(METAAPP_SUCCESS);
  209. }
  210. //===========================================================================
  211. ////////////////////////////        INI file      ///////////////////////////
  212. //===========================================================================
  213. static AnsiString as_SECTION_NAME = "PMIC register";
  214. static AnsiString as_KEY_NAME_COUNT = "register count";
  215. //---------------------------------------------------------------------------
  216. bool  CBBPMICREG::PMICRegisterSectionExist(char *filename)
  217. {
  218.     TIniFile   *ini_file;
  219.     ini_file = new TIniFile( filename );
  220.     if (NULL == ini_file) return false;
  221.     if (ini_file->SectionExists(as_SECTION_NAME))
  222.     {
  223.         return true;
  224.     }
  225.     return false;
  226. }
  227. //---------------------------------------------------------------------------
  228. bool  CBBPMICREG::REQ_Read_From_File(char *filename)
  229. {
  230.     TIniFile   *ini_file;
  231.     ini_file = new TIniFile(filename);
  232.     if (NULL == ini_file)  return false;
  233.     if (NULL == m_pvPmicReg)
  234.     {
  235.         AllocateVector();
  236.     }
  237.     EraseVector();
  238.     AnsiString as;
  239.     unsigned int ui_count;
  240.     ui_count = ini_file->ReadInteger(as_SECTION_NAME, as_KEY_NAME_COUNT, 0);
  241.     for (unsigned int i=0; i<ui_count; i++)
  242.     {
  243.         S_BB_PMIC_REG_T pmic_reg;
  244.         as = "register " + IntToStr(i) + " index";
  245.         pmic_reg.us_index = ini_file->ReadInteger(as_SECTION_NAME, as, 0);
  246.         as = "register " + IntToStr(i) + " name";
  247.         pmic_reg.as_name  = ini_file->ReadString(as_SECTION_NAME, as, "");
  248.         as = "register " + IntToStr(i) + " value";
  249.         pmic_reg.uc_value = ini_file->ReadInteger(as_SECTION_NAME, as, 0);
  250.         m_pvPmicReg->push_back(pmic_reg);
  251.     }
  252.     delete  ini_file;
  253.     return  true;
  254. }
  255. //---------------------------------------------------------------------------
  256. bool  CBBPMICREG::REQ_Write_To_File(char *filename)
  257. {
  258.     return true;
  259. }
  260. //===========================================================================
  261. ////////////////////////////         Query        ///////////////////////////
  262. //===========================================================================
  263. bool CBBPMICREG::Query_PMIC_ID_Start(void)
  264. {
  265.     META_RESULT MetaResult = META_QueryPMICID_r(m_META_HANDLE_Obj.Get_MainHandle(), 300, &m_sPmicId);
  266.     if (META_SUCCESS != MetaResult)
  267.     {
  268.         return false;
  269.     }
  270.     return true;
  271. }
  272. //===========================================================================
  273. ////////////////////////////  Global information  ///////////////////////////
  274. //===========================================================================
  275. E_METAAPP_RESULT_T CBBPMICREG::Get_ConfirmState(void)
  276. {
  277.     return  m_eConfirmState;
  278. }
  279. //---------------------------------------------------------------------------
  280. unsigned short CBBPMICREG::Get_RegValue(void)
  281. {
  282.     return  m_usValue;
  283. }
  284. //---------------------------------------------------------------------------
  285. PMIC_ID* CBBPMICREG::Get_PMIC_ID(void)
  286. {
  287.     return  &m_sPmicId;
  288. }
  289. //---------------------------------------------------------------------------
  290. vector<S_BB_PMIC_REG_T>* CBBPMICREG::Get_PMICRegVector(void)
  291. {
  292.     return m_pvPmicReg;
  293. }