ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

fbthci.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.