+++ /dev/null
-#ifndef INTERFACES_HPP
-#define INTERFACES_HPP
-
-struct _OHCI_ENDPOINT_DESCRIPTOR;
-struct IDMAMemoryManager;
-struct IUSBQueue;
-
-//=========================================================================================
-//
-// class IUSBHardwareDevice
-//
-// Description: This class provides access to the usb hardware controller
-//
-
-
-#define DEFINE_ABSTRACT_USBOHCIHARDWARE() \
- STDMETHOD_(VOID, GetBulkHeadEndpointDescriptor)( THIS_ \
- IN struct _OHCI_ENDPOINT_DESCRIPTOR ** OutDescriptor) PURE; \
- \
- STDMETHOD_(VOID, GetControlHeadEndpointDescriptor)( THIS_ \
- IN struct _OHCI_ENDPOINT_DESCRIPTOR ** OutDescriptor) PURE; \
- \
- STDMETHOD_(VOID, GetIsochronousHeadEndpointDescriptor)( THIS_ \
- IN struct _OHCI_ENDPOINT_DESCRIPTOR ** OutDescriptor) PURE; \
- \
- STDMETHOD_(VOID, GetInterruptEndpointDescriptors)( THIS_ \
- IN struct _OHCI_ENDPOINT_DESCRIPTOR *** OutDescriptor) PURE; \
- \
- STDMETHOD_(VOID, HeadEndpointDescriptorModified)( THIS_ \
- IN ULONG Type) PURE; \
- \
- STDMETHOD_(VOID, GetCurrentFrameNumber)( THIS_ \
- IN PULONG FrameNumber) PURE;
-
-#define IMP_IUSBOHCIHARDWAREDEVICE \
- STDMETHODIMP_(VOID) GetBulkHeadEndpointDescriptor( \
- IN struct _OHCI_ENDPOINT_DESCRIPTOR ** OutDescriptor); \
- \
- STDMETHODIMP_(VOID) GetControlHeadEndpointDescriptor( \
- IN struct _OHCI_ENDPOINT_DESCRIPTOR ** OutDescriptor); \
- \
- STDMETHODIMP_(VOID) GetIsochronousHeadEndpointDescriptor( \
- IN struct _OHCI_ENDPOINT_DESCRIPTOR ** OutDescriptor); \
- \
- STDMETHODIMP_(VOID) GetInterruptEndpointDescriptors( \
- IN struct _OHCI_ENDPOINT_DESCRIPTOR *** OutDescriptor); \
- \
- STDMETHODIMP_(VOID) HeadEndpointDescriptorModified( \
- IN ULONG Type); \
- \
- STDMETHODIMP_(VOID) GetCurrentFrameNumber( \
- OUT PULONG FrameNumber);
-
-DECLARE_INTERFACE_(IOHCIHardwareDevice, IUSBHardwareDevice)
-{
- DEFINE_ABSTRACT_UNKNOWN()
- DEFINE_ABSTRACT_USBHARDWAREDEVICE()
- DEFINE_ABSTRACT_USBOHCIHARDWARE()
-};
-
-typedef IOHCIHardwareDevice *POHCIHARDWAREDEVICE;
-
-
-//=========================================================================================
-//
-// class IUSBRequest
-//
-// Description: This class is used to issue request to usb controller. The class is
-// initialized using InitializeXXX methods. You also need to call SetEndpoint to define the endpoint
-// In addition you can call SetCompletionDetails if you need to wait for the end of
-// the request or want to complete an irp. You call AddUSBRequest to add the request to the queue.
-// Once the request is completed the CompletionCallback is invoked. The CompletionCallback
-// will take care of any completion details which have been set. If the request is cancelled, the
-// CancelCallback routine is invoked.
-//
-
-
-#define DEFINE_ABSTRACT_USBOHCIREQUEST() \
- STDMETHOD_(NTSTATUS, GetEndpointDescriptor)( THIS_ \
- IN struct _OHCI_ENDPOINT_DESCRIPTOR ** OutDescriptor) PURE; \
- \
- STDMETHOD_(VOID, CompletionCallback)( THIS) PURE; \
- \
- STDMETHOD_(VOID, FreeEndpointDescriptor)( THIS_ \
- IN struct _OHCI_ENDPOINT_DESCRIPTOR * OutDescriptor) PURE; \
- \
- STDMETHOD_(UCHAR, GetInterval)( THIS) PURE;
-
-
-#define IMP_IOHCIREQUEST \
- STDMETHODIMP_(NTSTATUS) GetEndpointDescriptor( \
- IN struct _OHCI_ENDPOINT_DESCRIPTOR ** OutDescriptor); \
- \
- STDMETHODIMP_(VOID) CompletionCallback(); \
- \
- STDMETHODIMP_(VOID) FreeEndpointDescriptor( \
- IN struct _OHCI_ENDPOINT_DESCRIPTOR * OutDescriptor); \
- \
- STDMETHODIMP_(UCHAR) GetInterval();
-
-DECLARE_INTERFACE_(IOHCIRequest, IUSBRequest)
-{
- DEFINE_ABSTRACT_UNKNOWN()
- DEFINE_ABSTRACT_USBREQUEST()
- DEFINE_ABSTRACT_USBOHCIREQUEST()
-};
-
-typedef IOHCIRequest *POHCIREQUEST;
-
-//=========================================================================================
-//
-// class IUSBQueue
-//
-// Description: This class manages pending requests
-//
-
-#define DEFINE_ABSTRACT_USBOHCIQUEUE() \
- STDMETHOD_(VOID, TransferDescriptorCompletionCallback)( THIS_ \
- IN ULONG TransferDescriptorLogicalAddress) PURE;
-
-#define IMP_IUSBOHCIQUEUE \
- STDMETHODIMP_(VOID) TransferDescriptorCompletionCallback( \
- IN ULONG TransferDescriptorLogicalAddress);
-
-DECLARE_INTERFACE_(IOHCIQueue, IUSBQueue)
-{
- DEFINE_ABSTRACT_UNKNOWN()
- DEFINE_ABSTRACT_USBQUEUE()
- DEFINE_ABSTRACT_USBOHCIQUEUE()
-};
-
-typedef IOHCIQueue *POHCIQUEUE;
-
-#endif /* INTERFACES_HPP */