Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenfbthci.h
Go to the documentation of this file.
00001 #ifndef _HCI_H_ 00002 #define _HCI_H_ 00003 00004 #include <windows.h> 00005 00006 #include "fbthw.h" 00007 #include "fbtHciDefs.h" 00008 00009 // Number of overlapped requests to have pending in the driver 00010 #define HCI_NUMBER_OF_OVERLAPPED_LISTENS MAXIMUM_WAIT_OBJECTS-1 00011 00012 // HCI Abstraction layer 00013 class CHci; 00014 typedef struct 00015 { 00016 PFBT_HCI_EVENT_HEADER pEvent; 00017 DWORD dwLength; 00018 CHci *pThis; 00019 00020 } HCI_EVENT, *PHCI_EVENT; 00021 00022 class CHci : public CBTHW 00023 { 00024 public: 00025 CHci(void); 00026 virtual ~CHci(void); 00027 00028 virtual DWORD StartEventListener(void); 00029 virtual DWORD StopEventListener(void); 00030 virtual DWORD OnEvent(PFBT_HCI_EVENT_HEADER pEvent, DWORD Length); 00031 00032 static LPCTSTR GetEventText(BYTE Event); 00033 static LPCTSTR GetStatusText(BYTE Status); 00034 static LPCTSTR GetManufacturerName(USHORT Company); 00035 00036 virtual DWORD OnCommandComplete(BYTE NumHCICommandPackets, USHORT CommandOpcode, BYTE *Parameters, DWORD ParameterLength); 00037 virtual DWORD OnCommandStatus(BYTE Status, BYTE NumHCICommandPackets, USHORT CommandOpcode); 00038 00039 virtual DWORD OnConnectionRequest(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE], ULONG ClassOfDevice[FBT_HCI_DEVICE_CLASS_SIZE], BYTE LinkType); 00040 virtual DWORD OnConnectionComplete(BYTE Status, USHORT ConnectionHandle, BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE], BYTE LinkType, BYTE EncryptionMode); 00041 virtual DWORD OnDisconnectionComplete(BYTE Status, USHORT ConnectionHandle, BYTE Reason); 00042 00043 virtual DWORD OnInquiryComplete(BYTE Status, BYTE NumResponses); 00044 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]); 00045 00046 virtual DWORD OnRemoteNameRequestComplete(BYTE Status, BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE], BYTE RemoteName[FBT_HCI_NAME_SIZE]); 00047 00048 virtual DWORD OnRoleChange(BYTE Status, BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE], BYTE Role); 00049 00050 virtual DWORD OnPINCodeRequest(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE]); 00051 00052 virtual DWORD OnLinkKeyNotification(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE], BYTE LinkKey[FBT_HCI_LINK_KEY_SIZE]); 00053 virtual DWORD OnLinkKeyRequest(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE]); 00054 00055 virtual DWORD OnAuthenticationComplete(BYTE Status, USHORT ConnectionHandle); 00056 00057 virtual DWORD OnReadLocalNameComplete(BYTE Status, BYTE Name[FBT_HCI_NAME_SIZE]); 00058 00059 virtual DWORD OnUnknown(PFBT_HCI_EVENT_HEADER pEvent, DWORD Length); 00060 00061 virtual DWORD SendReset(void); 00062 00063 virtual DWORD SendInquiry(ULONG LAP, BYTE InquiryLength, BYTE NumResponses); 00064 virtual DWORD SendInquiryCancel(void); 00065 00066 virtual DWORD SendReadBDADDR(void); 00067 00068 virtual DWORD SendWriteScanEnable(BYTE ScanEnable); 00069 00070 virtual DWORD SendWriteAuthenticationEnable(BYTE ScanEnable); 00071 00072 virtual DWORD SendSetEventFilter(BYTE FilterType, 00073 BYTE FilterConditionType, 00074 BYTE Condition[FBT_HCI_MAX_CONDITION_SIZE], 00075 BYTE ConditionBytes); 00076 00077 virtual DWORD SendReadClassOfDevice(void); 00078 00079 virtual DWORD SendWriteClassOfDevice(BYTE ClassOfDevice[FBT_HCI_DEVICE_CLASS_SIZE]); 00080 00081 virtual DWORD SendCreateConnection(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE], 00082 USHORT PacketType, 00083 BYTE PageScanRepetitionMode, 00084 BYTE PageScanMode, 00085 USHORT ClockOffset, 00086 BYTE AllowRoleSwitch); 00087 00088 virtual DWORD SendAcceptConnectionRequest(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE], BYTE RoleSwitch); 00089 00090 virtual DWORD SendDisconnect(USHORT ConnectionHandle, BYTE Reason); 00091 00092 virtual DWORD SendWriteLinkSupervisionTimeout(USHORT ConnectionHandle, USHORT LinkSupervisionTimeout); 00093 00094 virtual DWORD SendWritePageTimeout(USHORT PageTimeout); 00095 00096 virtual DWORD SendRemoteNameRequest(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE], BYTE PageScanRepetitionMode, BYTE PageScanMode, USHORT ClockOffset); 00097 00098 virtual DWORD SendReadLocalName(void); 00099 00100 virtual DWORD SendChangeLocalName(BYTE Name[FBT_HCI_NAME_SIZE]); 00101 00102 virtual DWORD SendSwitchRole(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE], BYTE Role); 00103 00104 virtual DWORD SendPINCodeRequestReply(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE], BYTE PINCodeLength, BYTE PINCode[FBT_HCI_PIN_CODE_SIZE]); 00105 virtual DWORD SendPINCodeRequestNegativeReply(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE]); 00106 00107 virtual DWORD SendLinkKeyRequestReply(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE], BYTE LinkKey[FBT_HCI_LINK_KEY_SIZE]); 00108 virtual DWORD SendLinkKeyRequestNegativeReply(BYTE BD_ADDR[FBT_HCI_BDADDR_SIZE]); 00109 00110 virtual DWORD SendReadLocalVersionInformation(void); 00111 00112 DWORD CompareBDADDRs(BYTE BD_ADDR1[FBT_HCI_BDADDR_SIZE], BYTE BD_ADDR2[FBT_HCI_BDADDR_SIZE]); 00113 00114 protected: 00115 friend static DWORD CALLBACK Listener(LPVOID pContext); 00116 friend static DWORD EventHandler(PFBT_HCI_EVENT_HEADER pEvent, DWORD Length); 00117 00118 virtual DWORD SendHciCommand(PFBT_HCI_CMD_HEADER lpCommand, DWORD dwBufferSize); 00119 00120 DWORD SendListenForEvent(OVERLAPPED *pOverlapped, BYTE *pEventBuffer); 00121 00122 HANDLE m_hStopListeningEvent; 00123 HANDLE m_hListenerReadyEvent; 00124 HANDLE m_hListenerThread; 00125 00126 DWORD m_dwListenerThreadId; 00127 00128 OVERLAPPED m_Overlappeds[HCI_NUMBER_OF_OVERLAPPED_LISTENS]; 00129 BYTE m_pEventBuffers[HCI_NUMBER_OF_OVERLAPPED_LISTENS][FBT_HCI_EVENT_MAX_SIZE]; 00130 00131 }; 00132 00133 00134 #endif // _HCI_H_ Generated on Sat May 26 2012 04:25:44 for ReactOS by
1.7.6.1
|