ReactOS 0.4.15-dev-7918-g2a2556c
fbthci.h
Go to the documentation of this file.
1#ifndef _HCI_H_
2#define _HCI_H_
3
4#include <windows.h>
5
6#include "fbthw.h"
7#include "fbtHciDefs.h"
8
9// Number of overlapped requests to have pending in the driver
10#define HCI_NUMBER_OF_OVERLAPPED_LISTENS MAXIMUM_WAIT_OBJECTS-1
11
12// HCI Abstraction layer
13class CHci;
14typedef struct
15{
19
21
22class CHci : public CBTHW
23{
24public:
25 CHci(void);
26 virtual ~CHci(void);
27
29 virtual DWORD StopEventListener(void);
31
35
36 virtual DWORD OnCommandComplete(BYTE NumHCICommandPackets, USHORT CommandOpcode, BYTE *Parameters, DWORD ParameterLength);
37 virtual DWORD OnCommandStatus(BYTE Status, BYTE NumHCICommandPackets, USHORT CommandOpcode);
38
42
43 virtual DWORD OnInquiryComplete(BYTE Status, BYTE NumResponses);
45
47
49
51
54
56
58
60
61 virtual DWORD SendReset(void);
62
63 virtual DWORD SendInquiry(ULONG LAP, BYTE InquiryLength, BYTE NumResponses);
64 virtual DWORD SendInquiryCancel(void);
65
66 virtual DWORD SendReadBDADDR(void);
67
68 virtual DWORD SendWriteScanEnable(BYTE ScanEnable);
69
71
72 virtual DWORD SendSetEventFilter(BYTE FilterType,
73 BYTE FilterConditionType,
75 BYTE ConditionBytes);
76
78
80
82 USHORT PacketType,
83 BYTE PageScanRepetitionMode,
84 BYTE PageScanMode,
85 USHORT ClockOffset,
86 BYTE AllowRoleSwitch);
87
89
91
93
94 virtual DWORD SendWritePageTimeout(USHORT PageTimeout);
95
96 virtual DWORD SendRemoteNameRequest(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE], BYTE PageScanRepetitionMode, BYTE PageScanMode, USHORT ClockOffset);
97
98 virtual DWORD SendReadLocalName(void);
99
101
103
106
109
111
113
114protected:
115 friend static DWORD CALLBACK Listener(LPVOID pContext);
117
118 virtual DWORD SendHciCommand(PFBT_HCI_CMD_HEADER lpCommand, DWORD dwBufferSize);
119
120 DWORD SendListenForEvent(OVERLAPPED *pOverlapped, BYTE *pEventBuffer);
121
125
127
130
131};
132
133
134#endif // _HCI_H_
Definition: fbthw.h:8
Definition: fbthci.h:23
virtual DWORD SendReadBDADDR(void)
virtual DWORD SendChangeLocalName(BYTE Name[FBT_HCI_NAME_SIZE])
virtual DWORD SendInquiry(ULONG LAP, BYTE InquiryLength, BYTE NumResponses)
virtual DWORD OnReadLocalNameComplete(BYTE Status, BYTE Name[FBT_HCI_NAME_SIZE])
virtual DWORD StopEventListener(void)
virtual DWORD SendWritePageTimeout(USHORT PageTimeout)
virtual DWORD SendCreateConnection(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE], USHORT PacketType, BYTE PageScanRepetitionMode, BYTE PageScanMode, USHORT ClockOffset, BYTE AllowRoleSwitch)
virtual DWORD OnConnectionComplete(BYTE Status, USHORT ConnectionHandle, BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE], BYTE LinkType, BYTE EncryptionMode)
static friend DWORD CALLBACK Listener(LPVOID pContext)
virtual DWORD SendRemoteNameRequest(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE], BYTE PageScanRepetitionMode, BYTE PageScanMode, USHORT ClockOffset)
virtual DWORD SendLinkKeyRequestReply(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE], BYTE LinkKey[FBT_HCI_LINK_KEY_SIZE])
virtual DWORD OnCommandStatus(BYTE Status, BYTE NumHCICommandPackets, USHORT CommandOpcode)
CHci(void)
virtual DWORD SendAcceptConnectionRequest(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE], BYTE RoleSwitch)
virtual DWORD OnLinkKeyRequest(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE])
virtual DWORD SendReset(void)
virtual DWORD OnPINCodeRequest(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE])
virtual DWORD SendDisconnect(USHORT ConnectionHandle, BYTE Reason)
DWORD m_dwListenerThreadId
Definition: fbthci.h:126
BYTE m_pEventBuffers[HCI_NUMBER_OF_OVERLAPPED_LISTENS][FBT_HCI_EVENT_MAX_SIZE]
Definition: fbthci.h:129
virtual DWORD OnUnknown(PFBT_HCI_EVENT_HEADER pEvent, DWORD Length)
DWORD CompareBDADDRs(BYTE BD_ADDR1[FBT_HCI_BDADDR_SIZE], BYTE BD_ADDR2[FBT_HCI_BDADDR_SIZE])
static LPCTSTR GetStatusText(BYTE Status)
virtual DWORD SendInquiryCancel(void)
virtual DWORD OnEvent(PFBT_HCI_EVENT_HEADER pEvent, DWORD Length)
virtual DWORD SendPINCodeRequestNegativeReply(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE])
OVERLAPPED m_Overlappeds[HCI_NUMBER_OF_OVERLAPPED_LISTENS]
Definition: fbthci.h:128
virtual DWORD OnAuthenticationComplete(BYTE Status, USHORT ConnectionHandle)
virtual DWORD SendWriteScanEnable(BYTE ScanEnable)
virtual DWORD SendLinkKeyRequestNegativeReply(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE])
virtual DWORD SendWriteClassOfDevice(BYTE ClassOfDevice[FBT_HCI_DEVICE_CLASS_SIZE])
virtual DWORD SendReadLocalVersionInformation(void)
virtual DWORD SendSetEventFilter(BYTE FilterType, BYTE FilterConditionType, BYTE Condition[FBT_HCI_MAX_CONDITION_SIZE], BYTE ConditionBytes)
virtual DWORD OnCommandComplete(BYTE NumHCICommandPackets, USHORT CommandOpcode, BYTE *Parameters, DWORD ParameterLength)
HANDLE m_hStopListeningEvent
Definition: fbthci.h:122
static LPCTSTR GetEventText(BYTE Event)
DWORD SendListenForEvent(OVERLAPPED *pOverlapped, BYTE *pEventBuffer)
virtual DWORD OnLinkKeyNotification(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE], BYTE LinkKey[FBT_HCI_LINK_KEY_SIZE])
virtual DWORD SendWriteAuthenticationEnable(BYTE ScanEnable)
HANDLE m_hListenerReadyEvent
Definition: fbthci.h:123
virtual DWORD OnRemoteNameRequestComplete(BYTE Status, BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE], BYTE RemoteName[FBT_HCI_NAME_SIZE])
virtual DWORD SendPINCodeRequestReply(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE], BYTE PINCodeLength, BYTE PINCode[FBT_HCI_PIN_CODE_SIZE])
virtual DWORD OnRoleChange(BYTE Status, BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE], BYTE Role)
virtual DWORD OnInquiryResult(BYTE NumResponses, BYTE BD_ADDR[FBT_HCI_VARIABLE_SIZE][FBT_HCI_BDADDR_SIZE], BYTE PageScanRepetitionMode[FBT_HCI_VARIABLE_SIZE], BYTE PageScanPeriodMode[FBT_HCI_VARIABLE_SIZE], BYTE PageScanMode[FBT_HCI_VARIABLE_SIZE], BYTE ClassOfDevice[FBT_HCI_VARIABLE_SIZE][FBT_HCI_DEVICE_CLASS_SIZE], USHORT ClockOffset[FBT_HCI_VARIABLE_SIZE])
virtual DWORD SendHciCommand(PFBT_HCI_CMD_HEADER lpCommand, DWORD dwBufferSize)
static friend DWORD EventHandler(PFBT_HCI_EVENT_HEADER pEvent, DWORD Length)
virtual DWORD OnDisconnectionComplete(BYTE Status, USHORT ConnectionHandle, BYTE Reason)
HANDLE m_hListenerThread
Definition: fbthci.h:124
static LPCTSTR GetManufacturerName(USHORT Company)
virtual ~CHci(void)
virtual DWORD OnConnectionRequest(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE], ULONG ClassOfDevice[FBT_HCI_DEVICE_CLASS_SIZE], BYTE LinkType)
virtual DWORD SendWriteLinkSupervisionTimeout(USHORT ConnectionHandle, USHORT LinkSupervisionTimeout)
virtual DWORD OnInquiryComplete(BYTE Status, BYTE NumResponses)
virtual DWORD SendReadClassOfDevice(void)
virtual DWORD SendSwitchRole(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE], BYTE Role)
virtual DWORD SendReadLocalName(void)
virtual DWORD StartEventListener(void)
#define LAP
Definition: dither_impl.h:15
#define CALLBACK
Definition: compat.h:35
#define FBT_HCI_BDADDR_SIZE
Definition: fbtHciSizes.h:13
#define FBT_HCI_EVENT_MAX_SIZE
Definition: fbtHciSizes.h:8
#define FBT_HCI_DEVICE_CLASS_SIZE
Definition: fbtHciSizes.h:16
#define FBT_HCI_MAX_CONDITION_SIZE
Definition: fbtHciSizes.h:19
#define FBT_HCI_LINK_KEY_SIZE
Definition: fbtHciSizes.h:21
#define FBT_HCI_NAME_SIZE
Definition: fbtHciSizes.h:14
#define FBT_HCI_VARIABLE_SIZE
Definition: fbtHciSizes.h:24
#define FBT_HCI_PIN_CODE_SIZE
Definition: fbtHciSizes.h:22
#define HCI_NUMBER_OF_OVERLAPPED_LISTENS
Definition: fbthci.h:10
struct HCI_EVENT * PHCI_EVENT
unsigned long DWORD
Definition: ntddk_ex.h:95
Status
Definition: gdiplustypes.h:25
_In_ PKSPIN_CONNECT _In_ ACCESS_MASK _Out_ PHANDLE ConnectionHandle
Definition: ks.h:4538
PVOID PVOID PWCHAR PVOID USHORT PULONG Reason
Definition: env.c:47
IN ULONG IN UCHAR Condition
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:102
unsigned short USHORT
Definition: pedump.c:61
CHci * pThis
Definition: fbthci.h:18
PFBT_HCI_EVENT_HEADER pEvent
Definition: fbthci.h:16
DWORD dwLength
Definition: fbthci.h:17
uint32_t ULONG
Definition: typedefs.h:59
_In_ ULONG ParameterLength
Definition: usbdlib.h:206
_Must_inspect_result_ _In_ WDFQUEUE _In_opt_ WDFREQUEST _In_opt_ WDFFILEOBJECT _Inout_opt_ PWDF_REQUEST_PARAMETERS Parameters
Definition: wdfio.h:869
const CHAR * LPCTSTR
Definition: xmlstorage.h:193
unsigned char BYTE
Definition: xxhash.c:193