📄 hcd.cpp
字号:
//
// Returns: TRUE if transfer scheduled ok, otherwise FALSE
//
// Notes: This needs to be implemented for HCDI
// ******************************************************************
{
DEBUGMSG( ZONE_UHCD | ZONE_TRANSFER, (TEXT("+CHcd::IssueTransfer - address = %d, pipe = %d, dwFlags = 0x%x, lpvControlHeader = 0x%x, lpvBuffer = 0x%x, dwBufferSize = %d\n"), address, pipeIndex, dwFlags, lpvControlHeader, lpvBuffer, dwBufferSize));
BOOL fSuccess = FALSE;
Lock();
CRootHub *pRoot = m_pCRootHub;
if (pRoot != NULL) {
fSuccess = (requestOK == pRoot->IssueTransfer(
address,
pipeIndex,
lpStartAddress,
lpvNotifyParameter,
dwFlags,
lpvControlHeader,
dwStartingFrame,
dwFrames,
aLengths,
dwBufferSize,
lpvBuffer,
paBuffer,
lpvCancelId,
adwIsochErrors,
adwIsochLengths,
lpfComplete,
lpdwBytesTransfered,
lpdwError ) );
}
Unlock();
DEBUGMSG( ZONE_UHCD | ZONE_TRANSFER, (TEXT("-CHcd::IssueTransfer - returing BOOL %d\n"), fSuccess ) );
return fSuccess;
}
// ******************************************************************
BOOL CHcd::AbortTransfer( IN UINT address,
IN UINT pipeIndex,
IN LPTRANSFER_NOTIFY_ROUTINE lpCancelAddress,
IN LPVOID lpvNotifyParameter,
IN LPCVOID lpvCancelId )
//
// Purpose: Abort a previously issued transfer
//
// Parameters: address - address of device on which transfer was issued
//
// pipeIndex - index of pipe on which transfer was issued
//
// lpCancelAddress - function to callback when this transfer has aborted
//
// lpvNotifyParameter - parameter to callback lpCancelAddress
//
// lpvCancelId - used to identify the transfer to abort. This was passed
// in when IssueTransfer was called
//
// Returns: TRUE if call to m_pCRootHub succeeds, else FALSE
//
// Notes: This needs to be implemented for HCDI
// ******************************************************************
{
DEBUGMSG( ZONE_UHCD | ZONE_TRANSFER, (TEXT("+CHcd::AbortTransfer - address = %d, pipeIndex = %d, lpvCancelId = 0x%x\n"), address, pipeIndex, lpvCancelId) );
BOOL fSuccess = FALSE;
Lock();
CRootHub *pRoot = m_pCRootHub;
if (pRoot != NULL)
fSuccess = (requestOK == pRoot->AbortTransfer( address,
pipeIndex,
lpCancelAddress,
lpvNotifyParameter,
lpvCancelId ) );
Unlock();
DEBUGMSG( ZONE_UHCD | ZONE_TRANSFER, (TEXT("-CHcd::AbortTransfer - address = %d, pipeIndex = %d, returning BOOL %d\n"), address, pipeIndex, fSuccess ) );
return fSuccess;
}
// ******************************************************************
BOOL CHcd::IsPipeHalted( IN UINT address,
IN UINT pipeIndex,
OUT LPBOOL lpbHalted )
//
// Purpose: Check whether the pipe indicated by address/pipeIndex is
// halted (stalled) and return result in *lpbHalted
//
// Parameters: address - address of device to check pipe for
//
// pipeIndex - indicating index of pipe to check
//
// lpbHalted - out param, indicating TRUE if pipe is halted,
// else FALSE
//
// Returns: TRUE if correct status placed in *lpbHalted, else FALSE
//
// Notes: This needs to be implemented for HCDI
// ******************************************************************
{
DEBUGMSG(ZONE_UHCD,(TEXT("+CHcd::IsPipeHalted - address = %d, pipeIndex = %d\n"), address, pipeIndex ));
BOOL retval = FALSE;
Lock();
CRootHub *pRoot = m_pCRootHub;
if ( pRoot != NULL && lpbHalted != NULL ) {
retval = ( requestOK == pRoot->IsPipeHalted( address,
pipeIndex,
lpbHalted ) );
}
Unlock();
DEBUGMSG(ZONE_UHCD,(TEXT("-CHcd::IsPipeHalted - address = %d, pipeIndex = %d, *lpbHalted = %d, retval = %d\n"), address, pipeIndex, ((lpbHalted) ? *lpbHalted : -1), retval ));
return retval;
}
// ******************************************************************
BOOL CHcd::ResetPipe( IN UINT address,
IN UINT pipeIndex )
//
// Purpose: Reset a stalled pipe on device at address "address"
//
// Parameters: address - address of device to reset pipe for
//
// pipeIndex - indicating index of pipe to check
//
// lpbHalted - out param, indicating TRUE if pipe is halted,
// else FALSE
//
// Returns: TRUE if correct status placed in *lpbHalted, else FALSE
//
// Notes: This needs to be implemented for HCDI
// ******************************************************************
{
DEBUGMSG( ZONE_UHCD, (TEXT("+CHcd::ResetPipe - address = %d, pipeIndex = %d\n"), address, pipeIndex) );
BOOL fSuccess = FALSE;
Lock();
CRootHub *pRoot = m_pCRootHub;
if (pRoot != NULL)
fSuccess = (requestOK == pRoot->ResetPipe( address, pipeIndex ) );
Unlock();
DEBUGMSG( ZONE_UHCD, (TEXT("-CHcd::ResetPipe - address = %d, pipeIndex = %d, returning BOOL %d\n"), address, pipeIndex, fSuccess) );
return fSuccess;
}
// ******************************************************************
BOOL CHcd::DisableDevice( IN const UINT address, IN const BOOL fReset )
//
// Purpose: Disable on device at address "address"
//
// Parameters: address - address of device to disable for
//
// fReset - Reset it after disable.
//
// Returns: TRUE if Susess.
//
// Notes: This needs to be implemented for HCDI
{
DEBUGMSG( ZONE_HCD, (TEXT("+CHcd::DisableDevice - address = %d,fReset = %d\n"), address, fReset) );
BOOL fSuccess = FALSE;
Lock();
CRootHub *pRoot = m_pCRootHub;
if (pRoot != NULL)
fSuccess = (requestOK == pRoot->DisableDevice( address, fReset ) );
Unlock();
DEBUGMSG( ZONE_HCD, (TEXT("-CHcd::DisableDevice - address = %d, returning BOOL %d\n"), address, fSuccess) );
return fSuccess;
};
// ******************************************************************
BOOL CHcd::SuspendResume( IN const UINT address,IN const BOOL fSuspend )
//
// Purpose: Suspend or Resume on device at address "address"
//
// Parameters: address - address of device to disable for
//
// fSuspend - Suspend, otherwise resume..
//
//
// Returns: TRUE if Susess.
//
// Notes: This needs to be implemented for HCDI
{
DEBUGMSG( ZONE_HCD, (TEXT("+CHcd::SuspendResume - address = %d, fSuspend = %d\n"), address, fSuspend) );
BOOL fSuccess = FALSE;
Lock();
CRootHub *pRoot = m_pCRootHub;
if (pRoot != NULL)
fSuccess = (requestOK == pRoot->SuspendResume( address, fSuspend ) );
Unlock();
DEBUGMSG( ZONE_HCD, (TEXT("-CHcd::SuspendResume - address = %d,fSuspend = %d, returning BOOL %d\n"), address, fSuspend, fSuccess) );
return fSuccess;
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -