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

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_stop.cpp
  40.  *
  41.  * Project:
  42.  * --------
  43.  *   Maui META APP
  44.  *
  45.  * Description:
  46.  * ------------
  47.  *   RF stop 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  _BT_COMMON_H_
  68. #include "bt_common.h"
  69. #endif
  70. #ifndef  _BT_HCI_COMMON_H_
  71. #include "bt_hci_common.h"
  72. #endif
  73. #ifndef  _BT_STOP_H_
  74. #include "bt_stop.h"
  75. #endif
  76. #include "man_active.h"
  77. #include "man_fdm.h"
  78. //===========================================================================
  79. static CBTSTOP*  g_bt_stop_ptr;
  80. static bool g_bIsRunning = false;
  81. //===========================================================================
  82. void __stdcall CNF_BTStop(const BT_HCI_EVENT *cnf, const short token, void *usrData)
  83. {
  84.      g_bt_stop_ptr->CNF_BTStop( cnf, token, usrData );
  85. }
  86. //---------------------------------------------------------------------------
  87. static void __stdcall CNF_ResetHCIEvent(const BT_HCI_EVENT *cnf, const short token, void *usrData)
  88. {   g_bt_stop_ptr->CNF_ResetHCIEvent( cnf, token, usrData );
  89. }
  90. //===========================================================================
  91. CBTSTOP::CBTSTOP( void )
  92. {
  93.    g_bIsRunning = false;
  94.    ConfirmCallback = 0;
  95. }
  96. //---------------------------------------------------------------------------
  97. CBTSTOP::~CBTSTOP( void )
  98. {
  99.    ConfirmCallback = 0;
  100.    g_bIsRunning = false;
  101. }
  102. //---------------------------------------------------------------------------
  103. void CBTSTOP::REQ_Stop(void)
  104. {
  105.    if (!g_bIsRunning)
  106.    {
  107.        return;
  108.    }
  109.    META_CancelAllBlockingCall_r(m_META_HANDLE_Obj.Get_MainHandle());
  110.    Confirm(METAAPP_STOP);
  111. }
  112. //---------------------------------------------------------------------------
  113. void CBTSTOP::Confirm(E_METAAPP_RESULT_T confirm_state)
  114. {
  115.     if (!g_bIsRunning)
  116.     {
  117.         return;
  118.     }
  119.     g_bIsRunning = false;
  120.     if (NULL == ConfirmCallback)
  121.     {
  122.         return;
  123.     }
  124.     m_eConfirmState = confirm_state;
  125.     ActiveMan->SetActiveFunction(ConfirmCallback);
  126. }
  127. //===========================================================================
  128. bool  CBTSTOP::REQ_Start( bool reset )
  129. {
  130.     g_bt_stop_ptr = this;
  131.     g_bIsRunning = true;
  132.     META_CancelAllBlockingCall_r(m_META_HANDLE_Obj.Get_MainHandle());
  133.     META_RESULT  MetaResult = META_BT_CancelHCICommand_r( m_META_HANDLE_Obj.Get_MainHandle(), 5000 );
  134.     if(MetaResult!=META_SUCCESS)
  135.     {  return false;  }
  136.     if( reset )
  137.     {
  138.         BT_HCI_COMMAND hci_cmd;
  139.         Compose_Reset_HCI_Command( hci_cmd );
  140.         META_RESULT MetaResult = META_BT_SendHCICommand_r( m_META_HANDLE_Obj.Get_MainHandle(), 5000, &hci_cmd, ::CNF_ResetHCIEvent, NULL, HCE_COMMAND_COMPLETE );
  141.         if( META_SUCCESS != MetaResult )
  142.         {
  143.             return false;
  144.         }
  145.     }
  146.     return true;
  147. }
  148. //-------------------------------------
  149. void __stdcall CBTSTOP::CNF_BTStop(const BT_HCI_EVENT *cnf, const short token, void *usrData)
  150. {
  151.    if(!g_bIsRunning)  return;
  152.    if( cnf->m_status != BT_STATUS_SUCCESS )
  153.    {  Confirm( METAAPP_FAIL );  return;  }
  154. }
  155. //---------------------------------------------------------------------------
  156. void __stdcall CBTSTOP::CNF_ResetHCIEvent(const BT_HCI_EVENT *cnf, const short token, void *usrData)
  157. {
  158.     // 0E,04,01,03,0C,00
  159.     if(!g_bIsRunning)  return;
  160.     if( (cnf->m_len      != 0x04) ||
  161.         (cnf->m_parms[0] != 0x01) ||
  162.         (cnf->m_parms[1] != 0x03) ||
  163.         (cnf->m_parms[2] != 0x0C) ||
  164.         (cnf->m_parms[3] != 0x00)
  165.       )
  166.     {
  167.         Confirm( METAAPP_FAIL );
  168.         return;
  169.     }
  170. }
  171. //-------------------------------------
  172. void CBTSTOP::Compose_Reset_HCI_Command( BT_HCI_COMMAND &hci_cmd )
  173. {
  174.     hci_cmd.m_opcode = 0x0C03;
  175.     hci_cmd.m_len    = 0x00;
  176. }
  177. //===========================================================================
  178. /////////////////////////  Global information  //////////////////////////////
  179. //===========================================================================
  180. E_METAAPP_RESULT_T CBTSTOP::Get_ConfirmState( void )
  181. {
  182.     return  m_eConfirmState;
  183. }