|
|
/*++
Copyright (c) 2000 Microsoft Corporation
Module Name:
usb2lib.h
Abstract:
interface to the usb2 library Environment:
Kernel & user mode
Revision History:
10-31-00 : created
--*/
#ifndef __USB2LIB_H__
#define __USB2LIB_H__
#define PUSB2LIB_HC_CONTEXT PVOID
#define PUSB2LIB_ENDPOINT_CONTEXT PVOID
#define PUSB2LIB_TT_CONTEXT PVOID
#define Budget_Iso 0
#define Budget_Interrupt 1
#define Budget_In 0
#define Budget_Out 1
#define Budget_LowSpeed 0
#define Budget_FullSpeed 1
#define Budget_HighSpeed 2
#define SIG_LIB_HC 'chbl' //lbhc
#define SIG_LIB_TT 'ttbl' //lbtt
#define SIG_LIB_EP 'pebl' //lbep
typedef struct _REBALANCE_LIST {
PVOID RebalanceContext[0];
} REBALANCE_LIST, *PREBALANCE_LIST;
typedef struct _USB2LIB_BUDGET_PARAMETERS {
/* input */
UCHAR TransferType; // Budget_Iso
UCHAR Speed; // Budget_Interrupt
UCHAR Direction; // Budget_FullSpeed, Budget_HighSpeed, Budget_LowSpeed
UCHAR Pad1; // Round out to dword
ULONG MaxPacket; // MaxPacketSize
/* input, output */ // period is specified in frames for FS, LS
// or microframes for HS, period is set to
// the actual period assigned (may be less
// than requested)
ULONG Period;
} USB2LIB_BUDGET_PARAMETERS, *PUSB2LIB_BUDGET_PARAMETERS;
#define USBP2LIBFN __stdcall
/*
client entry points */
/*
VOID USB2LIB_DbgPrint( PCH Format, PVOID Arg0, PVOID Arg1, PVOID Arg2, PVOID Arg3, PVOID Arg4, PVOID Arg5 );
*/
typedef VOID (USBP2LIBFN *PUSB2LIB_DBGPRINT) ( PCHAR, int, int, int, int, int, int );
/*
VOID USB2LIB_DbgBreak( );
*/
typedef VOID (USBP2LIBFN *PUSB2LIB_DBGBREAK) ( );
/* LIB interface functions */
VOID USB2LIB_InitializeLib( PULONG HcContextSize, PULONG EndpointContextSize, PULONG TtContextSize, PUSB2LIB_DBGPRINT Usb2LibDbgPrint, PUSB2LIB_DBGBREAK Usb2LibDbgBreak );
VOID USB2LIB_InitController( PUSB2LIB_HC_CONTEXT HcContext );
VOID USB2LIB_InitTt( PUSB2LIB_HC_CONTEXT HcContext, PUSB2LIB_TT_CONTEXT TtContext );
BOOLEAN USB2LIB_AllocUsb2BusTime( PUSB2LIB_HC_CONTEXT HcContext, // Host Controller Context
PUSB2LIB_TT_CONTEXT TtContext, // Transaction Translater Context
PUSB2LIB_ENDPOINT_CONTEXT EndpointContext, // Endpoint Context
PUSB2LIB_BUDGET_PARAMETERS BudgetParameters, // Budget Parameters
PVOID RebalanceContext, // Driver Endpoint Context
PVOID RebalanceList, // List of endpoints to be rebalanced
PULONG RebalanceListEntries // Number of endpoints to be rebalanced
);
VOID USB2LIB_FreeUsb2BusTime( PUSB2LIB_HC_CONTEXT HcContext, PUSB2LIB_TT_CONTEXT TtContext, PUSB2LIB_ENDPOINT_CONTEXT EndpointContext, PVOID RebalanceList, PULONG RebalanceListEntries );
UCHAR USB2LIB_GetSMASK(PUSB2LIB_ENDPOINT_CONTEXT Context);
UCHAR USB2LIB_GetCMASK(PUSB2LIB_ENDPOINT_CONTEXT Context);
UCHAR USB2LIB_GetStartMicroFrame(PUSB2LIB_ENDPOINT_CONTEXT Context);
UCHAR USB2LIB_GetStartFrame(PUSB2LIB_ENDPOINT_CONTEXT Context);
UCHAR USB2LIB_GetPromotedThisTime(PUSB2LIB_ENDPOINT_CONTEXT EndpointContext);
UCHAR USB2LIB_GetNewPeriod(PUSB2LIB_ENDPOINT_CONTEXT EndpointContext);
ULONG USB2LIB_GetScheduleOffset(PUSB2LIB_ENDPOINT_CONTEXT EndpointContext);
ULONG USB2LIB_GetAllocedBusTime(PUSB2LIB_ENDPOINT_CONTEXT EndpointContext);
PVOID USB2LIB_GetNextEndpoint(PUSB2LIB_ENDPOINT_CONTEXT EndpointContext);
// Debug only
PVOID USB2LIB_GetEndpoint(PUSB2LIB_ENDPOINT_CONTEXT EndpointContext);
#undef PUSB2LIB_HC_CONTEXT
#undef PUSB2LIB_ENDPOINT_CONTEXT
#undef PUSB2LIB_TT_CONTEXT
#endif /* __USB2LIB_H__ */
|