⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hostcontrolinterface.h

📁 蓝牙芯片ZV4301的调试工具源码.做蓝牙产品时很有参考价值内部有串口的编程序源码,对有串口编成需求的同志有参考价值.
💻 H
字号:
#ifndef _HOSTCONTROLINTERFACE_H_
#define _HOSTCONTROLINTERFACE_H_

/* HCI */
#define UART_TL_HEAD_HCI_CMD      0x01
//Link Control Command
#define OGF_LINK_CONTROL_COMMAND 0x01
//Host Controller and Baseband Command
#define OGF_HOST_CONTROLLER_BASEBAND_COMMAND 0x03
#define OCF_RESET                 0x03
#define OCF_CHANGE_LOCAL_NAME     0x13
#define OCF_READ_LOCAL_NAME       0x14
//Information Parameters
#define OGF_INFOMATION_PARAMETERS 0x04
#define OCF_READ_LOCAL_VERSION    0x01
#define OCF_READ_SUPPORT_FEATURES 0x03
#define OCF_READ_BUFFER_SZIE      0x05
#define OCF_READ_COUNTRY_CODE     0x07
#define OCF_READ_BD_ADDR          0x09

//Zeevo Command
#define OGF_ZEEVO_SPECIFIC_COMMAND    0x3F
#define OCF_WRITE_BD_ADDR             0x01
#define OCF_HARDWARE_REGISTERS_CONFIG 0x03
#define OCF_CONSOLE_COMMAND           0x06


class Topcode{
  public:
    Topcode(unsigned __int8 OCF, unsigned __int8 OGF);
    Topcode(unsigned __int16 OPCODE);
    Topcode(void);
    virtual ~Topcode();
    __property unsigned __int8 ocf = {read=_ocf, write=SetOCF};
    __property unsigned __int8 ogf = {read=_ogf, write=SetOGF};
    __property unsigned __int16 opcode = {read = _opcode, write = SetOPCODE};

  private:
    unsigned __int8 _ocf;
    unsigned __int8 _ogf;
    unsigned __int16 _opcode;
    void __fastcall SetOPCODE(unsigned __int16 OPCODE);
    void __fastcall SetOCF(unsigned __int8 OCF);
    void __fastcall SetOGF(unsigned __int8 OGF);
  protected:

};

struct Thci_param{
    unsigned __int8 _len;
    unsigned __int8 _data[256]; // max = 255, reserve one bytes
};

enum TCommInterface{TL_H4 = 0};

class Thci_command{
  public:
    //Constructor
    Thci_command(unsigned __int8 OCF, unsigned __int8 OGF, Thci_param *PARAM);
    Thci_command(unsigned __int16 OPCODE, Thci_param *PARAM);
    Thci_command(void);
    virtual ~Thci_command();

    Topcode opcode;
    Thci_param param;

    //Utilities
    int MakeCommand(TCommInterface transport, unsigned char *buff, int real_buff_size);
  private:
};

/******************************************************************************
*   HCI EVENT
*******************************************************************************/
// GENERAL EVENT
#define HCI_EVENT_INQ_COMPLETE     0x01
#define HCI_EVENT_INQ_RESULT       0x02
#define HCI_EVENT_CONN_COMPLETE    0x03
#define HCI_EVENT_CONN_REQUEST     0x04
#define HCI_EVENT_DISCONN_COMPLETE 0x05
#define HCI_EVENT_AUTH_COMPLETE    0x06
#define HCI_EVENT_REMOTENAMEREQ_COMPLETE    0x07

#define HCI_EVENT_CMD_COMPLETE     0x0E
#define HCI_EVENT_ZEEVO_EVENT      0xEF

#define MAX_HCI_EVENT_DATA         259
struct Thci_event_data{
    unsigned __int8 _tl;
    unsigned __int8 _event;
    unsigned __int8 _paramlen;
    unsigned __int8 _param[256];
};

/***********************************
*  Command Complete Event
***********************************/
struct Thci_evt_cmd_complete{
  unsigned __int8 packet_number;
  Topcode opcode;
};

struct Thci_evt_cmd_complete_reset{
  unsigned __int8 status;
};

struct Thci_evt_cmd_complete_readlocalname{
  unsigned __int8 status;
  char localname[256];
};

struct Thci_evt_cmd_complete_readlocalver{
  unsigned __int8 status;
  unsigned __int8 hci_ver;
  unsigned __int16 hci_rev;
  unsigned __int8 lmp_ver;
  unsigned __int16 manufacturer_name;
  unsigned __int16 lmp_subver;
};

/***********************************
*  Zeevo Event
***********************************/
#define ZEEVI_EVENT_PRINT 0x00
struct Thci_evt_zeevo_event{
  unsigned __int8 code;
};

struct Thci_evt_zeevo_event_print{
  char value[1024];
};

typedef void (*_HCI_EVT_ZEEVO_PRINT)(Thci_evt_zeevo_event_print *);
enum _EVT_RESULT{EVT_OK =0, EVT_NEEDMOREDATA, EVT_MOREDATA, EVT_INVALID};

#define MAX_EVENT_BUFF 10240
class Thci_event{
  private:
    Thci_event_data _data;
    char _bin[MAX_EVENT_BUFF]; //Event data will not exceed 259 bytes
    unsigned __int16 _binbytes;
    // Local Function
    void __fastcall HANDLE_CMD_COMPLETE(void);
    void __fastcall HANDLE_ZEEVO_EVENT(void);
  public:
    Thci_event(void);
    bool __fastcall Input(unsigned __int8 *pData, unsigned __int16 len);
    void __fastcall Clear(void);
    void __fastcall ClearInValid(void);
    _EVT_RESULT __fastcall ParseEvent(void);
    _EVT_RESULT __fastcall ParseEvent(unsigned __int8 *pData, unsigned __int16 len);

    __property Thci_event_data EVENT = {read = _data};
    _HCI_EVT_ZEEVO_PRINT ON_HCI_EVT_ZEEVO_PRINT;
};

#endif/*_HOSTCONTROLINTERFACE_H_*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -