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

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) 2001
  8. *
  9. *****************************************************************************/
  10. /*****************************************************************************
  11.  *
  12.  * Filename:
  13.  * ---------
  14.  *   bt_con.h
  15.  *
  16.  * Project:
  17.  * --------
  18.  *   Maui META APP
  19.  *
  20.  * Description:
  21.  * ------------
  22.  *   BT connection test header
  23.  *
  24.  * Author:
  25.  * -------
  26.  *  Andy Ueng (mtk00490)
  27.  *
  28.  *============================================================================
  29.  *             HISTORY
  30.  * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
  31.  *------------------------------------------------------------------------------
  32.  * $Revision$
  33.  * $Modtime$
  34.  * $Log$
  35.  *
  36.  *------------------------------------------------------------------------------
  37.  * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
  38.  *============================================================================
  39.  ****************************************************************************/
  40. #ifndef  _BT_CON_H_
  41. #define  _BT_CON_H_
  42. #include <vcl.h>
  43. #include <vector.h>
  44. #ifndef META_DLL_H
  45. #include "meta.h"
  46. #endif
  47. #ifndef  _MAN_HANDLE_H_
  48. #include "man_handle.h"
  49. #endif
  50. #ifndef  _METAAPP_COMMON_H_
  51. #include "metaapp_common.h"
  52. #endif
  53. // BT
  54. #ifndef  _BT_COMMON_H_
  55. #include "bt_common.h"
  56. #endif
  57. /*---------------------------------------------------------------------------*/
  58. #define  STATUS_BT_CT_OK         1
  59. #define  STATUS_BT_CT_FAIL       0
  60. #define  STR_BT_CT_SCO_SUCCESS         ((AnsiString)       "Success")
  61. #define  STR_BT_CT_SCO_FAIL            ((AnsiString)       "Fail")
  62. /*---------------------------------------------------------------------------*/
  63. typedef struct
  64. {
  65.     HANDLE hPostMsgDestHandle;
  66.     TStringList *log;
  67.     TStrings    *list;
  68. }S_BT_CT;
  69. // inquiry/connect
  70. //typedef enum
  71. //{
  72. //    CT_STATUS_CONNECT = 0,
  73. //    CT_STATUS_DISCONNECT,
  74. //}E_CT_STATUS;
  75. typedef enum
  76. {
  77.     ACL_PKT_MASK_DM1 = 0x0008,
  78.     ACL_PKT_MASK_DH1 = 0x0010,
  79.     ACL_PKT_MASK_DM3 = 0x0400,
  80.     ACL_PKT_MASK_DH3 = 0x0800,
  81.     ACL_PKT_MASK_DM5 = 0x4000,
  82.     ACL_PKT_MASK_DH5 = 0x8000,
  83.     // BT 2.0
  84.     ACL_PKT_MASK_2DH1 = 0x0002,
  85.     ACL_PKT_MASK_3DH1 = 0x0004,
  86.     ACL_PKT_MASK_2DH3 = 0x0100,
  87.     ACL_PKT_MASK_3DH3 = 0x0200,
  88.     ACL_PKT_MASK_2DH5 = 0x1000,
  89.     ACL_PKT_MASK_3DH5 = 0x2000,
  90. }E_ACL_PKT_MASK;
  91. typedef enum
  92. {
  93.     SCO_PKT_IDX_HV1 = 0,
  94.     SCO_PKT_IDX_HV2,
  95.     SCO_PKT_IDX_HV3,
  96.     SCO_PKT_IDX_EV3,
  97.     SCO_PKT_IDX_EV4,
  98.     SCO_PKT_IDX_EV5,
  99.     SCO_PKT_NONEDR_IDX_COUNT,
  100.     SCO_PKT_IDX_2EV3 = SCO_PKT_NONEDR_IDX_COUNT,
  101.     SCO_PKT_IDX_3EV3,
  102.     SCO_PKT_IDX_2EV5,
  103.     SCO_PKT_IDX_3EV5,
  104.     SCO_PKT_IDX_COUNT
  105. }E_SCO_PKT_IDX;
  106. typedef enum
  107. {
  108.     SCO_PKT_MASK_HV1  = 0x0001,
  109.     SCO_PKT_MASK_HV2  = 0x0002,
  110.     SCO_PKT_MASK_HV3  = 0x0004,
  111.     SCO_PKT_MASK_EV3  = 0x0008,
  112.     SCO_PKT_MASK_EV4  = 0x0010,
  113.     SCO_PKT_MASK_EV5  = 0x0020,
  114.     // BT 2.0
  115.     SCO_PKT_MASK_2EV3 = 0x0380,
  116.     SCO_PKT_MASK_3EV3 = 0x0340,
  117.     SCO_PKT_MASK_2EV5 = 0x02C0,
  118.     SCO_PKT_MASK_3EV5 = 0x01C0,
  119. }E_SCO_PKT_MASK;
  120. typedef struct
  121. {
  122.     S_BD_ADDR s_bd_addr;
  123.     E_SCO_PKT_MASK e_pkt_type;
  124. }S_BT_CT_CONNECT_SCO;
  125. typedef struct
  126. {
  127.     S_BD_ADDR s_bd_addr;
  128. }S_BT_CT_DISCONNECT_SCO;
  129. typedef enum
  130. {
  131.     BT_CT_SCO_STATUS_SUCCESS=0x00,
  132.     BT_CT_SCO_STATUS_FAIL=0xFE,
  133.     BT_CT_SCO_STATUS_NONE=0xFF,
  134. }E_BT_CT_SCO_STATUS;
  135. typedef struct
  136. {
  137.     S_BD_ADDR s_bd_addr;
  138.     S_BT_PIN  s_bt_pin;
  139. }S_BT_ENTER_PIN;
  140. typedef struct
  141. {
  142.     E_BT_ACL_STATUS e_acl_status;
  143.     E_BT_CT_SCO_STATUS e_sco_status;
  144.     unsigned char uc_h1_acl;
  145.     unsigned char uc_h2_acl;
  146.     unsigned char uc_h1_sco;
  147.     unsigned char uc_h2_sco;
  148.     S_BD_ADDR s_bd_addr;
  149. }S_BT_CT_RES;
  150. /*---------------------------------------------------------------------------*/
  151. class CBTCT
  152. {
  153. private:
  154.      E_METAAPP_RESULT_T m_eConfirmState;
  155.      bool  m_bEventOk;
  156.      bool  m_bEvent2Ok;
  157.      CMETAHANDLE m_META_HANDLE_Obj;
  158.      S_BT_CT  m_sBTCT;
  159.      S_BD_ADDRS m_sLocalBdAddr;
  160.      unsigned int m_uiInquiryTimeout;
  161.      unsigned int m_uiEventCount;
  162.      S_BT_SCAN m_sScan;
  163.      S_BT_CONNECT_ACL m_sConnectACL;
  164.      S_BT_DISCONNECT_ACL m_sDisconnectACL;
  165.      S_BT_ENTER_PIN   m_sEnterPIN;
  166.      S_BT_CT_CONNECT_SCO m_sConnectSCO;
  167.      S_BT_CT_DISCONNECT_SCO m_sDisconnectSCO;
  168.      vector<S_BT_CT_RES> *m_pvCTRes;
  169. protected:
  170.    void  Confirm(E_METAAPP_RESULT_T confirm_state);
  171. public:
  172.    CBTCT(void);
  173.    ~CBTCT();
  174.     // memory
  175.    void  AllocateVector(void);
  176.    void  DeAllocateVector(void);
  177.    void  EraseVector(void);
  178.    void  REQ_Stop_Start(void);
  179.    void  REQ_Stop(void);
  180.    void  (*ConfirmCallback)(void);
  181.    // reset
  182.    void  REQ_Reset_Start(S_BT_CT bt_ct);
  183.    void  REQ_SendResetHCICommand(void);
  184.    void __stdcall CNF_ResetHCIEvent(const BT_HCI_EVENT *cnf, const short token, void *usrData);
  185.     void  Compose_Reset_HCI_Command(BT_HCI_COMMAND &hci_cmd);
  186.    // read local BD address
  187.    void  REQ_ReadLocalBDAddress_Start(S_BT_CT bt_ct);
  188.    void  REQ_Send_Read_Local_BDAdrress_HCI_command(void);
  189.    void  Compose_Read_Local_BD_Addr_HCI_Command(BT_HCI_COMMAND &hci_cmd);
  190.    bool  DeCompose_Read_Local_BD_Addr_HCI_Event(BT_HCI_EVENT hci_event, S_BD_ADDRS &bd_addr);
  191.    void __stdcall CNF_ReadLocalBDAddressHCIEvent(const BT_HCI_EVENT *cnf, const short token, void *usrData);
  192.    // write local BD address
  193.    void  REQ_WriteLocalBDAddress_Start(S_BT_CT bt_ct);
  194.    void  REQ_Send_Write_Local_BDAdrress_HCI_command(void);
  195.    void  __stdcall CNF_WriteLocalBDAddressHCIEvent(const BT_HCI_EVENT *cnf, const short token, void *usrData);
  196.    void  Compose_Write_Local_BD_Addr_HCI_Command(BT_HCI_COMMAND &hci_cmd, S_BD_ADDRS s_bd_addrs);
  197.    bool  DeCompose_Write_Local_BD_Addr_HCI_Event(BT_HCI_EVENT hci_event);
  198.    // auto accept
  199.    void  REQ_Auto_Accept_Start( S_BT_CT bt_ct );
  200.    void  REQ_Send_Auto_Accept_HCI_command( void );
  201.    void __stdcall CNF_AutoAcceptHCIEvent(const BT_HCI_EVENT *cnf, const short token, void *usrData);
  202.    void  Compose_Auto_Accept_HCI_Command( BT_HCI_COMMAND &hci_cmd );
  203.    bool  DeCompose_Auto_Accept_HCI_Event( BT_HCI_EVENT hci_event );
  204.    // scan
  205.    void  REQ_Scan_Start( S_BT_CT bt_ct );
  206.    void  REQ_Send_Scan_HCI_command( void );
  207.    void __stdcall CNF_ScanHCIEvent(const BT_HCI_EVENT *cnf, const short token, void *usrData);
  208.    void  Compose_Inquiry_Scan_Type_HCI_Command( BT_HCI_COMMAND &hci_cmd, S_BT_SCAN scan );
  209.    void  Compose_Page_Scan_Type_HCI_Command( BT_HCI_COMMAND &hci_cmd, S_BT_SCAN scan );
  210.     void Compose_Scan_Enable_HCI_Command(BT_HCI_COMMAND &hci_cmd, S_BT_SCAN scan);
  211.     bool DeCompose_Scan_HCI_Event(BT_HCI_EVENT hci_event);
  212.     void REQ_Set_Inquiry_Scan_Interval_Start(S_BT_CT bt_ct);
  213.     void REQ_Send_Inquiry_Scan_Interval_HCI_command(void);
  214.     void __stdcall CNF_InquiryScanIntervalHCIEvent(const BT_HCI_EVENT *cnf, const short token, void *usrData);
  215.     void Compose_Inquiry_Scan_Interval_HCI_Command(BT_HCI_COMMAND &hci_cmd);
  216.     bool DeCompose_Inquiry_Scan_Interval_HCI_Event(BT_HCI_EVENT hci_event);
  217.     void REQ_Set_Page_Scan_Interval_Start(S_BT_CT bt_ct);
  218.     void REQ_Send_Page_Scan_Interval_HCI_command(void);
  219.     void __stdcall CNF_PageScanIntervalHCIEvent(const BT_HCI_EVENT *cnf, const short token, void *usrData);
  220.     void Compose_Page_Scan_Interval_HCI_Command(BT_HCI_COMMAND &hci_cmd);
  221.     bool DeCompose_Page_Scan_Interval_HCI_Event(BT_HCI_EVENT hci_event);
  222.    // inquiry
  223.    void  REQ_Inquiry_Start( S_BT_CT bt_ct );
  224.    void  REQ_Send_Inquiry_HCI_command( void );
  225.    void   __stdcall CNF_InquiryHCIEvent(const BT_HCI_EVENT *cnf, const short token, void *usrData);
  226.    void  Compose_Inquiry_HCI_Command( BT_HCI_COMMAND &hci_cmd );
  227.    bool  DeCompose_Inquiry_HCI_Event( BT_HCI_EVENT hci_event );
  228.    void  AddBDAddressToDiscovedList( AnsiString as_bd_addr );
  229.    // inquiry cancel
  230.    void  REQ_Inquiry_Cancel_Start( S_BT_CT bt_ct );
  231.    void  REQ_Send_Inquiry_Cancel_HCI_command( void );
  232.    void   __stdcall CNF_InquiryCancelHCIEvent(const BT_HCI_EVENT *cnf, const short token, void *usrData);
  233.    void  Compose_Inquiry_Cancel_HCI_Command( BT_HCI_COMMAND &hci_cmd );
  234.    bool  DeCompose_Inquiry_Cancel_HCI_Event( BT_HCI_EVENT hci_event );
  235.    // connect
  236.    void  REQ_ConnectACL_Start( S_BT_CT bt_ct );
  237.    void  REQ_Send_ConnectACL_HCI_command( void );
  238.    void __stdcall CNF_ConnectACLHCIEvent(const BT_HCI_EVENT *cnf, const short token, void *usrData);
  239.    void __stdcall CNF_DisconnectACLAutoHCIEvent(const BT_HCI_EVENT *cnf, const short token, void *usrData);
  240.    void  Compose_ConnectACL_HCI_Command( BT_HCI_COMMAND &hci_cmd, S_BT_CONNECT_ACL connect );
  241.    bool  DeCompose_ConnectACL_HCI_Event( BT_HCI_EVENT hci_event );
  242.    void  Compose_Link_Key_Negative_Reply_HCI_Command( BT_HCI_COMMAND &hci_cmd, S_BT_CONNECT_ACL connect );
  243.    bool  DeCompose_Link_Key_Negative_Reply_HCI_Event( BT_HCI_EVENT hci_event, S_BT_CONNECT_ACL connect );
  244.    // change ACL packet type
  245.    void  REQ_Change_ACL_Packet_Type_Start( S_BT_CT bt_ct );
  246.    void  REQ_Send_Change_ACL_Packet_Type_HCI_command( void );
  247.    void __stdcall CNF_ChangeACLPacketTypeHCIEvent(const BT_HCI_EVENT *cnf, const short token, void *usrData);
  248.    void  Compose_Change_ACL_Packet_Type_HCI_Command( BT_HCI_COMMAND &hci_cmd, S_BT_CONNECT_ACL connect );
  249.    bool  DeCompose_Change_ACL_Packet_Type_HCI_Event( BT_HCI_EVENT hci_event );
  250.    void __stdcall CNF_LinkKeyNegReplyHCIEvent(const BT_HCI_EVENT *cnf, const short token, void *usrData);
  251.    // enter PIN
  252.    bool  REQ_EnterPIN_Start( S_BT_CT bt_ct );
  253.    bool  REQ_Send_EnterPIN_HCI_command( void );
  254.    void __stdcall CNF_EnterPINHCIEvent(const BT_HCI_EVENT *cnf, const short token, void *usrData);
  255.    void  Compose_EnterPIN_HCI_Command( BT_HCI_COMMAND &hci_cmd, S_BT_ENTER_PIN enter_pin );
  256.    bool  DeCompose_EnterPIN_HCI_Event( BT_HCI_EVENT hci_event );
  257.    // disconnect ACL
  258.    void  REQ_DisconnectACL_Start( S_BT_CT bt_ct );
  259.    void  REQ_Send_DisconnectACL_HCI_command( void );
  260.    void __stdcall CNF_DisconnectACLHCIEvent(const BT_HCI_EVENT *cnf, const short token, void *usrData);
  261.    void  Compose_DisconnectACL_HCI_Command( BT_HCI_COMMAND &hci_cmd, S_BT_DISCONNECT_ACL disconnect );
  262.    bool  DeCompose_DisconnectACL_HCI_Event( BT_HCI_EVENT hci_event, S_BT_DISCONNECT_ACL disconnect );
  263.    // connect SCO
  264.    void  REQ_ConnectSCO_Start( S_BT_CT bt_ct );
  265.    void  REQ_Send_ConnectSCO_HCI_command( void );
  266.    void __stdcall CNF_ConnectSCOHCIEvent(const BT_HCI_EVENT *cnf, const short token, void *usrData);
  267.    void  Compose_ConnectSCO_HCI_Command( BT_HCI_COMMAND &hci_cmd, S_BT_CT_CONNECT_SCO connect );
  268.    bool  DeCompose_ConnectSCO_HCI_Event( BT_HCI_EVENT hci_event, S_BT_CT_CONNECT_SCO connect );
  269.    // disconnect SCO
  270.    void  REQ_DisconnectSCO_Start(S_BT_CT bt_ct);
  271.    void  REQ_Send_DisconnectSCO_HCI_command(void);
  272.    void __stdcall CNF_DisconnectSCOHCIEvent(const BT_HCI_EVENT *cnf, const short token, void *usrData);
  273.    void  Compose_DisconnectSCO_HCI_Command(BT_HCI_COMMAND &hci_cmd, S_BT_CT_DISCONNECT_SCO disconnect);
  274.    bool  DeCompose_DisconnectSCO_HCI_Event(BT_HCI_EVENT hci_event, S_BT_CT_DISCONNECT_SCO disconnect);
  275.    // compose
  276.    void  Reset_HCI_Command(BT_HCI_COMMAND &hci_cmd);
  277.    // log
  278.    void  AddTxLogToStringList(BT_HCI_COMMAND hci_cmd);
  279.    void  AddRxLogToStringList(BT_HCI_EVENT hci_event);
  280.    // global information
  281.    E_METAAPP_RESULT_T Get_ConfirmState(void);
  282.    S_BD_ADDRS Get_LocalBdAddr(void);
  283.    void Set_LocalBdAddr(S_BD_ADDRS bd_addr);
  284.    void Set_InquiryTimeout(unsigned int timout);
  285.    void Set_ScanParameter(S_BT_SCAN scan);
  286.    void Set_EnterPINParameter(S_BT_ENTER_PIN enter_pin);
  287.    void Set_ConnectACLParameter(S_BT_CONNECT_ACL connect);
  288.    void Set_DisconnectACLParameter(S_BT_DISCONNECT_ACL disconnect);
  289.    void Set_ConnectSCOParameter(S_BT_CT_CONNECT_SCO connect);
  290.    void Set_DisconnectSCOParameter(S_BT_CT_DISCONNECT_SCO disconnect);
  291.    vector<S_BT_CT_RES>*  Get_CtResVector(void);
  292. };
  293. /*---------------------------------------------------------------------------*/
  294. #endif