bt_script.h
上传用户: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) 2001
  8. *
  9. *****************************************************************************/
  10. /*****************************************************************************
  11.  *
  12.  * Filename:
  13.  * ---------
  14.  *   bt_script.h
  15.  *
  16.  * Project:
  17.  * --------
  18.  *   Maui META APP
  19.  *
  20.  * Description:
  21.  * ------------
  22.  *   BT HCI command script 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_SCRIPT_H_
  41. #define  _BT_SCRIPT_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. typedef struct
  56. {
  57.     HANDLE hPostMsgDestHandle;
  58.     AnsiString filename;
  59.     TStringList *log;
  60.     AnsiString as_script_name;
  61. }S_BT_SCT;
  62. typedef struct {
  63. unsigned short us_opcode;
  64. unsigned char uc_len;
  65. AnsiString as_cmd;
  66. } S_BT_HCI_CMD;
  67. typedef struct {
  68. unsigned char   uc_event;
  69. char          c_status;
  70. unsigned short  us_handle;
  71. unsigned char uc_len;
  72. AnsiString as_parms;
  73. } S_BT_HCI_EVENT;
  74. typedef struct
  75. {
  76.     AnsiString   as_hci_cmd;
  77.     unsigned char   uc_last_event;
  78.     unsigned int    ui_ms_timeout;
  79.     vector<AnsiString> v_hci_event;
  80. }S_BT_SCT_CMD;
  81. typedef struct
  82. {
  83.     AnsiString as_script_name;
  84.     AnsiString as_script_tag;
  85.     vector<S_BT_SCT_CMD>  v_cmd;
  86. }S_BT_SCT_SCRIPT;
  87. typedef struct
  88. {
  89.     AnsiString as_name;
  90.     unsigned char uc_value;
  91.     bool b_valid;
  92. }S_BT_B_VAR;
  93. typedef struct
  94. {
  95.     AnsiString as_name;
  96.     unsigned short us_value;
  97.     bool b_valid;
  98. }S_BT_W_VAR;
  99. typedef struct
  100. {
  101.     AnsiString as_name;
  102.     unsigned int ui_value;
  103.     bool b_valid;
  104. }S_BT_D_VAR;
  105. typedef enum
  106. {
  107.     BT_SCT_B1_TAG = 0,
  108.     BT_SCT_B2_TAG,
  109.     BT_SCT_B3_TAG,
  110.     BT_SCT_B4_TAG,
  111.     BT_SCT_B5_TAG,
  112.     BT_SCT_B6_TAG,
  113.     BT_SCT_B7_TAG,
  114.     BT_SCT_B8_TAG,
  115.     BT_SCT_B9_TAG,
  116.     BT_SCT_B10_TAG,
  117.     BT_SCT_B11_TAG,
  118.     BT_SCT_B12_TAG,
  119.     BT_SCT_B13_TAG,
  120.     BT_SCT_B14_TAG,
  121.     BT_SCT_B15_TAG,
  122.     BT_SCT_B16_TAG,
  123.     BT_SCT_B17_TAG,
  124.     BT_SCT_B18_TAG,
  125.     BT_SCT_B19_TAG,
  126.     BT_SCT_B20_TAG,
  127.     BT_SCT_B21_TAG,
  128.     BT_SCT_B22_TAG,
  129.     BT_SCT_B23_TAG,
  130.     BT_SCT_B24_TAG,
  131.     BT_SCT_B25_TAG,
  132.     BT_SCT_B26_TAG,
  133.     BT_SCT_B27_TAG,
  134.     BT_SCT_B28_TAG,
  135.     BT_SCT_B29_TAG,
  136.     BT_SCT_B30_TAG,
  137.     BT_SCT_B31_TAG,
  138.     BT_SCT_B32_TAG,
  139.     BT_SCT_B33_TAG,
  140.     BT_SCT_B34_TAG,
  141.     BT_SCT_B35_TAG,
  142.     BT_SCT_B36_TAG,
  143.     BT_SCT_B37_TAG,
  144.     BT_SCT_B38_TAG,
  145.     BT_SCT_B39_TAG,
  146.     BT_SCT_B40_TAG,
  147.     BT_SCT_B41_TAG,
  148.     BT_SCT_B42_TAG,
  149.     BT_SCT_B43_TAG,
  150.     BT_SCT_B44_TAG,
  151.     BT_SCT_B45_TAG,
  152.     BT_SCT_B46_TAG,
  153.     BT_SCT_B47_TAG,
  154.     BT_SCT_B48_TAG,
  155.     BT_SCT_B49_TAG,
  156.     BT_SCT_B_TAG,
  157.     BT_SCT_W_TAG,
  158.     BT_SCT_D_TAG,
  159.     BT_SCT_UNKNOW
  160. }E_BT_SCT_TAG;
  161. typedef struct
  162. {
  163.     E_BT_SCT_TAG e_tag;
  164.     AnsiString as_op1;
  165.     AnsiString as_op2;
  166. }S_BT_SCT_OP;
  167. /*---------------------------------------------------------------------------*/
  168. class CBTSCT
  169. {
  170. private:
  171.      // common
  172.      E_METAAPP_RESULT_T m_eConfirmState;
  173.      CMETAHANDLE m_META_HANDLE_Obj;
  174.      S_BT_SCT  m_sBTSCT;
  175.      ifstream *m_pifs;
  176.      filebuf* m_pFBuf;
  177.      E_BT_SCT_TAG m_eSCTSec;
  178.      BT_HCI_EVENT  m_sHCIEvent;
  179.      S_BT_SCT_CMD  m_sSCTCmd;
  180.      vector<S_BT_SCT_SCRIPT> *m_pvScript;
  181.      vector<S_BT_SCT_SCRIPT>:: iterator m_IterScript;
  182.      vector<S_BT_SCT_CMD>:: iterator m_IterCmd;
  183.      vector<AnsiString>:: iterator m_IterEvent;
  184.      vector<S_BT_B_VAR> *m_pvBVar;
  185.      vector<S_BT_W_VAR> *m_pvWVar;
  186.      vector<S_BT_D_VAR> *m_pvDVar;
  187. protected:
  188.    void Confirm(E_METAAPP_RESULT_T confirm_state);
  189.    AnsiString Get_ScriptTagString(E_BT_SCT_TAG eTag);
  190. public:
  191.    CBTSCT(void);
  192.    ~CBTSCT();
  193. /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
  194.  // Public member
  195.    void  (*ConfirmCallback)(void);
  196.    void  REQ_Start(S_BT_SCT &bt_sct);
  197.    void  REQ_Test_Script(void);
  198.    void  REQ_Send_HCI_Command(BT_HCI_COMMAND hci_cmd, unsigned int  ms_timeout, unsigned last_event);
  199.    void __stdcall CNF_HCIEvent(const BT_HCI_EVENT *cnf, const short token, void *usrData);
  200.    void  REQ_Stop();
  201.    // memory
  202.    void  AllocateVector(void);
  203.    void  DeAllocateVector(void);
  204.    void  EraseVector(void);
  205.    void  ResetBVarData(void);
  206.    // script file
  207.    bool  REQ_Read_Last_SCT_File_Start(S_BT_SCT &bt_sct);
  208.    void  REQ_Read_From_File_Start(S_BT_SCT &bt_sct);
  209.    void  REQ_Read_From_File(void);
  210.    bool  OpenFile(void);
  211.    void  CloseFile(void);
  212.    bool  ParseFile(void);
  213.    bool  ParseCommandLine(AnsiString as_cmd);
  214.    bool  ParseSCTHeader(AnsiString as_cmd);
  215.    bool  ParseSCTBody(AnsiString as_cmd);
  216.    bool  InterpretCommand(AnsiString as_cmd, BT_HCI_COMMAND &hci_cmd);
  217.    bool  InterpretEvent(BT_HCI_EVENT hci_event, AnsiString as_event);
  218.    unsigned short Get_OpCode(AnsiString as_cmd);
  219.    unsigned char Get_CommandParameterLen(AnsiString as_cmd);
  220.    unsigned char Get_LastEvent(AnsiString as_event);
  221.    unsigned char Get_EventParameterLen(AnsiString as_event);
  222.    int Get_VariableIndex(AnsiString as, AnsiString as_var, unsigned char len);
  223.    // log
  224.    void  AddParseLogToStringList(AnsiString as_log);
  225.    void  AddTxLogToStringList(BT_HCI_COMMAND hci_cmd);
  226.    void  AddRxLogToStringList(BT_HCI_EVENT hci_event);
  227.    // export information
  228.    E_METAAPP_RESULT_T Get_ConfirmState(void);
  229.    BT_HCI_EVENT  Get_HCIEvent(void);
  230.    vector<S_BT_SCT_SCRIPT>*  Get_ScriptVector(void);
  231. };
  232. /*---------------------------------------------------------------------------*/
  233. #endif