📄 hostcontrolinterface.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 + -