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

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_hci.h
  15.  *
  16.  * Project:
  17.  * --------
  18.  *   Maui META APP
  19.  *
  20.  * Description:
  21.  * ------------
  22.  *   BT HCI command 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_HCI_H_
  41. #define  _BT_HCI_H_
  42. #include <fstream.h>
  43. #include <vcl.h>
  44. #include <vector.h>
  45. #ifndef META_DLL_H
  46. #include "meta.h"
  47. #endif
  48. #ifndef  _METAAPP_COMMON_H_
  49. #include "metaapp_common.h"
  50. #endif
  51. #ifndef  _MAN_HANDLE_H_
  52. #include "man_handle.h"
  53. #endif
  54. /*---------------------------------------------------------------------------*/
  55. #define  BT_HCI_VALUE_SIZE    20
  56. #define  HCI_DEFAULT_TIMEOUT_MS  1000
  57. //----------------------------------------------------------------------------
  58. typedef struct
  59. {
  60.     HANDLE hPostMsgDestHandle;
  61.     AnsiString filename;
  62.     TStringList *log;
  63.     BT_HCI_COMMAND s_hci_cmd;
  64.     unsigned char  uc_last_event;
  65.     unsigned int   ui_ms_timeout;
  66. }S_BT_HCI;
  67. typedef struct
  68. {
  69.    unsigned char uc_value[BT_HCI_VALUE_SIZE];
  70.    unsigned char  uc_nz_byte;
  71. } S_BT_HCI_VALUE;
  72. typedef struct
  73. {
  74.     AnsiString as_name;
  75.     unsigned int ui_bytes; // bytes
  76.     S_BT_HCI_VALUE s_value;
  77.     bool b_rangecheck;
  78.     bool b_show;
  79.     S_BT_HCI_VALUE s_max_value;
  80.     S_BT_HCI_VALUE s_min_value;
  81. }S_BT_HCI_PARAMETER;
  82. typedef struct
  83. {
  84.     //AnsiString as_group_tag;
  85.     AnsiString as_cmd_name;
  86.     AnsiString as_cmd_tag;
  87.     unsigned short us_opcode;
  88.     unsigned char  uc_last_event;
  89.     unsigned int ui_send_num; // send parameter number
  90.     vector<S_BT_HCI_PARAMETER>  v_send_par;
  91.     unsigned int ui_receive_num; // receive parameter number
  92.     vector<S_BT_HCI_PARAMETER>  v_receive_par;
  93.     unsigned int   ui_ms_timeout;
  94. }S_BT_HCI_COMMAND;
  95. typedef struct
  96. {
  97.     AnsiString as_group_name;
  98.     AnsiString as_group_tag;
  99.     vector<S_BT_HCI_COMMAND>  v_cmd;
  100. }S_BT_HCI_GROUP;
  101. typedef struct
  102. {
  103.     AnsiString as_category_name;
  104.     AnsiString as_category_tag;
  105.     vector<S_BT_HCI_COMMAND>  v_cmd;
  106. }S_BT_HCI_CATEGORY;
  107. typedef enum
  108. {
  109.     BT_HCI_GROUP_TAG = 0,
  110.     BT_HCI_COMMAND_TAG,
  111.     BT_HCI_DEFINE_TAG,
  112.     BT_HCI_CATEGORY_TAG,
  113.     BT_HCI_UNKNOW
  114. }E_BT_HCI_TAG;
  115. typedef struct
  116. {
  117.     unsigned short  us_opcode;
  118.     unsigned char   uc_total_par_size;
  119.     unsigned char   ui_par_num; // send, recieve parameter number
  120.     vector<S_BT_HCI_PARAMETER>  v_par;
  121. } S_HCI_TX_CMD;
  122. typedef struct
  123. {
  124.     unsigned char uc_cmd[256];
  125. } S_HCI_TX_CMD_FORMAT;
  126. typedef struct
  127. {
  128.     //unsigned char   uc_event_code;
  129.     unsigned char   uc_cmd_num;
  130.     unsigned short  us_opcode;
  131.    // unsigned char   uc_packet_num;
  132.     unsigned char   uc_total_par_size;
  133.    // unsigned char   uc_par_num; // recieve parameter number
  134.     vector<S_BT_HCI_PARAMETER>  v_par;
  135. } S_HCI_RX_EVENT;
  136. typedef struct
  137. {
  138.     unsigned char uc_event[256];
  139. } S_HCI_RX_EVENT_FORMAT;
  140. /*---------------------------------------------------------------------------*/
  141. class  CBTHCI
  142. {
  143. private:
  144.      // common
  145.      E_METAAPP_RESULT_T m_eConfirmState;
  146.      bool m_bIsRunning;
  147.      CMETAHANDLE m_META_HANDLE_Obj;
  148.     // AnsiString m_asFileName;
  149.      S_BT_HCI  m_sBTHCI;
  150.     // ifstream *m_pifs;
  151.     // filebuf* m_pFBuf;
  152.      FILE *m_fp;
  153.      E_BT_HCI_TAG m_eHCISec;
  154.      int m_iHCICategory;
  155.      vector<S_BT_HCI_GROUP> *m_pvHCIGroup;
  156.      vector<S_BT_HCI_CATEGORY> *m_pvHCICategory;
  157.      vector<S_BT_HCI_CATEGORY>:: iterator m_vLastCateogryIter;
  158.      bool m_bFirstCategoryBody;
  159.      BT_HCI_EVENT  m_sHCIEvent;
  160.     // S_HCI_TX_CMD  m_sTxCmd;
  161.     // S_HCI_RX_EVENT  m_sRxEvent;
  162.     // S_HCI_TX_CMD_FORMAT m_sTxCmdFmt;
  163.     // S_HCI_RX_EVENT_FORMAT m_sRxEventFmt;
  164.     // vector<S_BT_HCI_COMMAND> *m_pvHCICmd;
  165.      
  166. protected:
  167.    void  Confirm(E_METAAPP_RESULT_T confirm_state);
  168. public:
  169.    CBTHCI(void);
  170.    ~CBTHCI();
  171. /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
  172.  // Public member
  173.    void  (*ConfirmCallback)(void);
  174.    void  REQ_Start(S_BT_HCI &bt_hci);
  175.    void  REQ_Send_HCI_Command(void);
  176.    void __stdcall CNF_HCIEvent(const BT_HCI_EVENT *cnf, const short token, void *usrData);
  177.    void  REQ_Stop(  );
  178.    // memory
  179.    void  AllocateVector( void );
  180.    void  DeAllocateVector( void );
  181.    void  EraseVector( void );
  182.    // script file
  183.    bool  REQ_Read_Last_HCI_File_Start( S_BT_HCI  &bt_hci );
  184.    void  REQ_Read_From_File_Start( S_BT_HCI &bt_hci );
  185.    void  REQ_Read_From_File( void );
  186.    bool  OpenFile( void );
  187.    void  CloseFile( void );
  188.    bool  ParseFile( void );
  189.    bool  ParseCommandLine( AnsiString as_cmd );
  190.    bool  ParseHCIGroup( AnsiString as_cmd );
  191.    bool  ParseHCICategory( AnsiString as_cmd );
  192.    bool  ParseHCICommand( AnsiString as_cmd );
  193.    bool  ParseHCICmdDefine( AnsiString as_cmd );
  194.    // compose/decompose HCI command
  195.    //void  Compose_HCI_TX_Command( BT_HCI_COMMAND &hci_cmd );
  196.    //void  DeCompose_HCI_RX_Event( void );
  197.    // log
  198.    void  AddParseLogToStringList(AnsiString as_log);
  199.    void  AddTxLogToStringList(BT_HCI_COMMAND hci_cmd);
  200.    void  AddRxLogToStringList(BT_HCI_EVENT hci_event);
  201.    // export information
  202.    E_METAAPP_RESULT_T Get_ConfirmState( void );
  203.    vector<S_BT_HCI_CATEGORY>*  Get_HciCategoryVector( void );
  204.    vector<S_BT_HCI_GROUP>*  Get_HciGroupVector( void );
  205.    BT_HCI_EVENT  Get_HCIEvent( void );
  206. };
  207. /*---------------------------------------------------------------------------*/
  208. #endif