📄 usbd_protenum.c
字号:
// return : STATUS_SUCCESS Success
// STATUS_NOT_OPENED Not opened
// STATUS_INVALID_PARAMETER Parameter error
// STATUS_NOT_IMPLEMENTED Not implemented
========================================================================*/
LONG USBD_ProtEnumGetParameter( void *pParamData, USHORT wParamType )
{
UCHAR *pbRemoteWakeupMode; //, bFIFOAreaLength,bPayloadSizeLength;
// USBD_PROTENUMFIFOAREA *psFIFOAreaMode;
// USBD_FUNC_FIFOAREA *psFuncFIFOArea;
// USBD_FUNC_PAYLOADSIZE *psFuncPayloadSize;
LONG dwAPIStatus;
/**************************/
/* Process for individual parameter type */
/**************************/
switch( wParamType ){
case USBD_PROT_ENUM_POWERSAVE_MODE:
/* Power saving mode */
dwAPIStatus = GetPowerSaveMode(pParamData);
if( dwAPIStatus != STATUS_SUCCESS ){
/* Error occurred in lower module */
return STATUS_INVALID_PARAMETER;
}
break;
case USBD_PROT_ENUM_REMOTEWAKEUP_MODE:
/* Remote Wakeup mode */
pbRemoteWakeupMode = (UCHAR *)pParamData;
if( ModuleStatus.sControlFlag.bit.wEnableAutoWakeup == 1 ){
/* Auto Remote Wakeup mode */
*pbRemoteWakeupMode = USBD_PROT_ENUM_AUTO_WAKEUP;
} else {
/* Manual Remote Wakeup mode */
*pbRemoteWakeupMode = USBD_PROT_ENUM_MANUAL_WAKEUP;
}
break;
case USBD_PROT_ENUM_HW_FEATURE_MODE:
/* H/W function mode */
dwAPIStatus = GetHWFeatureMode(pParamData);
break;
case USBD_PROT_ENUM_FIFOAREA_MODE:
return STATUS_INVALID_PARAMETER;
/* Not used */
default:
/* Parameter type which is not supported */
return STATUS_INVALID_PARAMETER;
}
return STATUS_SUCCESS;
}
/*======================================================================
// Function_Name: USBD_ProtSetParameter
//
// description : Set parameter of this module
//
// Set parameter of specified type
//
// argument : wParamType Type of parameter
// USBD_PROT_ENUM_POWERSAVE_MODE Power saving mode
// USBD_PROT_ENUM_REMOTEWAKEUP_MODE Remote Wakeup mode
// *pParamData Pointer of parameter data
//
// return : STATUS_SUCCESS Success
// STATUS_NOT_OPENED Not opened
// STATUS_INVALID_PARAMETER Parameter error
// STATUS_NOT_IMPLEMENTED Not implemented
========================================================================*/
LONG USBD_ProtEnumSetParameter( const void *pParamData, USHORT wParamType )
{
// UCHAR bFuncFIFOAreaLength,bFuncPayloadSizeLength;
// USHORT wNumEndpoint;
// USBD_PROTENUMPAYLOADSIZE *psPayloadMode;
// USBD_PROTENUMFIFOAREA *psFIFOAreaMode;
// USBD_FUNC_FIFOAREA *psFuncFIFOArea;
LONG dwAPIStatus;
// USHORT i;
/**************************/
/* Process for individual parameter type */
/**************************/
switch( wParamType ){
case USBD_PROT_ENUM_POWERSAVE_MODE:
/* Power saving mode */
return STATUS_INVALID_PARAMETER;
case USBD_PROT_ENUM_REMOTEWAKEUP_MODE:
/* Remote Wakeup mode */
if( *((UCHAR *)pParamData) == USBD_PROT_ENUM_AUTO_WAKEUP ){
/* Auto Remote Wakeup mode */
ModuleStatus.sControlFlag.bit.wEnableAutoWakeup = 1;
} else if ( *((UCHAR *)pParamData) == USBD_PROT_ENUM_MANUAL_WAKEUP ){
/* Manual Remote Wakeup mode */
ModuleStatus.sControlFlag.bit.wEnableAutoWakeup = 0;
} else {
return STATUS_INVALID_PARAMETER;
}
break;
case USBD_PROT_ENUM_HW_FEATURE_MODE:
/* H/W function mode */
dwAPIStatus = SetHWFeatureMode(pParamData);
if( dwAPIStatus != STATUS_SUCCESS ){
/* Error occurred in lower module */
return STATUS_INVALID_PARAMETER;
}
break;
case USBD_PROT_ENUM_FIFOAREA_MODE:
return STATUS_INVALID_PARAMETER;
default:
/* Parameter type which is not supported */
return STATUS_INVALID_PARAMETER;
}
return STATUS_SUCCESS;
}
/*======================================================================
// Function_Name: USBD_ProtRegisterCBREnumConnectEvent
//
// description : Register callback function of notifying event
//
// Register callback function of notifying that Attach has been done
//
// argument : pfnCallback Callback function
//
// return : STATUS_SUCCESS Success
// STATUS_NOT_OPEND Not opened
// STATUS_UNABLE_TO_REGISTER Unable to register
========================================================================*/
LONG USBD_ProtRegisterCBREnumConnectEvent( CALLBACK_PROC pfnCallback )
{
/****************************/
/* Check the registration of callback function */
/****************************/
if( ModuleStatus.pfnCallbackTable[CBR_CONNECT_EVENT] == NULL ){
/* Not registered */
ModuleStatus.pfnCallbackTable[CBR_CONNECT_EVENT] = pfnCallback;
}
return STATUS_SUCCESS;
}
/*======================================================================
// Function_Name: USBD_ProtUnregisterCBREnumConnectEvent
//
// description : Delete callback function of notifying event
//
// Delete callback function of notifying that Attach has been done
//
// argument : pfnCallback Callback function
//
// return : STATUS_SUCCESS Success
// STATUS_NOT_OPEND Not opened
// STATUS_UNREGISTERED Not registered
========================================================================*/
LONG USBD_ProtUnregisterCBREnumConnectEvent( CALLBACK_PROC pfnCallback )
{
/****************************/
/* Check the deletion of callback function */
/****************************/
if( ModuleStatus.pfnCallbackTable[CBR_CONNECT_EVENT] == pfnCallback ){
/* Registered */
ModuleStatus.pfnCallbackTable[CBR_CONNECT_EVENT] = NULL;
}
return STATUS_SUCCESS;
}
/*======================================================================
// Function_Name: USBD_ProtRegisterCBREnumDisconnectEvent
//
// description : Register callback function of notifying event
//
// Register callback function of notifying that Detach has been done
//
// argument : pfnCallback Callback function
//
// return : STATUS_SUCCESS Success
// STATUS_NOT_OPEND Not opened
// STATUS_UNABLE_TO_REGISTER Unable to register
========================================================================*/
LONG USBD_ProtRegisterCBREnumDisconnectEvent( CALLBACK_PROC pfnCallback )
{
/****************************/
/* Check the registration of callback function */
/****************************/
if( ModuleStatus.pfnCallbackTable[CBR_DISCONNECT_EVENT] == NULL ){
/* Not registered */
ModuleStatus.pfnCallbackTable[CBR_DISCONNECT_EVENT] = pfnCallback;
}
return STATUS_SUCCESS;
}
/*======================================================================
// Function_Name: USBD_ProtUnregisterCBREnumDisconnectEvent
//
// description : Delete callback function of notifying event
//
// Delete callback function of notifying that Detach has been done
//
// argument : pfnCallback Callback function
//
// return : STATUS_SUCCESS Success
// STATUS_NOT_OPEND Not opened
// STATUS_UNREGISTERED Not registered
========================================================================*/
LONG USBD_ProtUnregisterCBREnumDisconnectEvent( CALLBACK_PROC pfnCallback )
{
/****************************/
/* Check the deletion of callback function */
/****************************/
if( ModuleStatus.pfnCallbackTable[CBR_DISCONNECT_EVENT] == pfnCallback ){
/* Registered */
ModuleStatus.pfnCallbackTable[CBR_DISCONNECT_EVENT] = NULL;
}
return STATUS_SUCCESS;
}
/*======================================================================
// Function_Name: USBD_ProtRegisterCBREnumResetEvent
//
// description : Register callback function of notifying event
//
// Register callback function of notifying that Reset has been done
//
// argument : pfnCallback Callback function
//
// return : STATUS_SUCCESS Success
// STATUS_NOT_OPEND Not opened
// STATUS_UNABLE_TO_REGISTER Unable to register
========================================================================*/
LONG USBD_ProtRegisterCBREnumResetEvent( CALLBACK_PROC pfnCallback )
{
/****************************/
/* Check the registration of callback function */
/****************************/
if( ModuleStatus.pfnCallbackTable[CBR_RESET_EVENT] == NULL ){
/* Not registered */
ModuleStatus.pfnCallbackTable[CBR_RESET_EVENT] = pfnCallback;
} else {
/* Registered */
return STATUS_UNABLE_TO_REGISTER;
}
return STATUS_SUCCESS;
}
/*======================================================================
// Function_Name: USBD_ProtUnregisterCBREnumResetEvent
//
// description : Delete callback function of notifying event
//
// Delete callback function of notifying that Reset has been done
//
// argument : pfnCallback Callback function
//
// return : STATUS_SUCCESS Success
// STATUS_NOT_OPEND Not opened
// STATUS_UNREGISTERED Not registered
========================================================================*/
LONG USBD_ProtUnregisterCBREnumResetEvent( CALLBACK_PROC pfnCallback )
{
/****************************/
/* Check the deletion of callback function */
/****************************/
if( ModuleStatus.pfnCallbackTable[CBR_RESET_EVENT] == pfnCallback ){
/* Registered */
ModuleStatus.pfnCallbackTable[CBR_RESET_EVENT] = NULL;
} else{
/* Not registered */
return STATUS_UNREGISTERED;
}
return STATUS_SUCCESS;
}
/*======================================================================
// Function_Name: USBD_ProtRegisterCBREnumSuspendEvent
//
// description : Register callback function of notifying event
//
// Register callback function of notifying that Suspend has been done
//
// argument : pfnCallback Callback function
//
// return : STATUS_SUCCESS Success
// STATUS_NOT_OPEND Not opened
// STATUS_UNABLE_TO_REGISTER Unable to register
========================================================================*/
LONG USBD_ProtRegisterCBREnumSuspendEvent( CALLBACK_PROC pfnCallback )
{
/****************************/
/* Check the registration of callback function */
/****************************/
if( ModuleStatus.pfnCallbackTable[CBR_SUSPEND_EVENT] == NULL ){
/* Not registered */
ModuleStatus.pfnCallbackTable[CBR_SUSPEND_EVENT] = pfnCallback;
}
return STATUS_SUCCESS;
}
/*======================================================================
// Function_Name: USBD_ProtUnregisterCBREnumSuspendEvent
//
// description : Delete callback function of notifying event
//
// Delete callback function of notifying that Suspend has been done
//
// argument : pfnCallback Callback function
//
// return : STATUS_SUCCESS Success
// STATUS_NOT_OPEND Not opened
// STATUS_UNREGISTERED Not registered
========================================================================*/
LONG USBD_ProtUnregisterCBREnumSuspendEvent( CALLBACK_PROC pfnCallback )
{
/****************************/
/* Check the deletion of callback function */
/****************************/
if( ModuleStatus.pfnCallbackTable[CBR_SUSPEND_EVENT] == pfnCallback ){
/* Registered */
ModuleStatus.pfnCallbackTable[CBR_SUSPEND_EVENT] = NULL;
}
return STATUS_SUCCESS;
}
/*======================================================================
// Function_Name: USBD_ProtRegisterCBREnumResumeEvent
//
// description : Register callback function of notifying event
//
// Register callback function of notifying that Resume has been done
//
// argument : pfnCallback Callback function
//
// return : STATUS_SUCCESS Success
// STATUS_NOT_OPEND Not opened
// STATUS_UNABLE_TO_REGISTER Unable to register
========================================================================*/
LONG USBD_ProtRegisterCBREnumResumeEvent( CALLBACK_PROC pfnCallback )
{
/****************************/
/* Check the registration of callback function */
/****************************/
if( ModuleStatus.pfnCallbackTable[CBR_RESUME_EVENT] == NULL ){
/* Not registered */
ModuleStatus.pfnCallbackTable[CBR_RESUME_EVENT] = pfnCallback;
}
return STATUS_SUCCESS;
}
/*======================================================================
// Function_Name: USBD_ProtUnregisterCBREnumResumeEvent
//
// description : Delete callback function of notifying event
//
// Delete callback function of notifying that Resume has been done
//
// argument : pfnCallback Callback function
//
// return : STATUS_SUCCESS Success
// STATUS_NOT_OPEND Not opened
// STATUS_UNREGISTERED Not registered
========================================================================*/
LONG USBD_ProtUnregisterCBREnumResumeEvent( CALLBACK_PROC pfnCallback )
{
/****************************/
/* Check the deletion of callback function */
/****************************/
if( ModuleStatus.pfnCallbackTable[CBR_RESUME_EVENT] == pfnCallback ){
/* Registered */
ModuleStatus.pfnCallbackTable[CBR_RESUME_EVENT] = NULL;
}
return STATUS_SUCCESS;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -