www.pudn.com > LPC2148_IAR_LPC2148.zip > usb_9.h
/************************************************************************* * * Used with ICCARM and AARM. * * (c) Copyright IAR Systems 2005 * * File name : usb_9.h * Description : Define usb chapter 9 (device framework) module * * History : * 1. Data : August 5, 2005 * Author : Stanimir Bonev * Description : Create * 2. Data : December 19, 2005 * Author : Stanimir Bonev * Description : Modify * Add separate functions for In and Out Data transfer by EP0 * Change prameter transfered to function form packet type to * pointer to UsbEp0Ctrl structure * * $Revision: 1.1.2.1 $ **************************************************************************/ #include#ifndef __USB_9_H #define __USB_9_H typedef enum { UsbPass = 0, UsbFault, UsbNotSupport, } UsbCommStatus_t; typedef enum { UsbDevStatusUnknow = 0, UsbDevStatusAttached, UsbDevStatusPowered, UsbDevStatusDefault, UsbDevStatusAddress, UsbDevStatusConfigured } _UsbDevState_t; typedef enum { UsbSetupPacket = 0,UsbDataOutPacket,UsbDataInPacket, UsbDmaPacket, UsbEpStall,UsbEpUnstall,UsbEpPause, UsbEpSetupDataOut, UsbEpClassDataOut, UsbEpVendorDataOut, UsbEpSetupDataIn,UsbEpSetupLastIn, UsbEpWaitStatusOut,UsbEpStatusOut, UsbEpWaitStatusIn,UsbEpStatusIn,UsbEpStatusInSetAdd, } _UsbEpStaus_t; typedef enum { UsbTypeStandart = 0,UsbTypeClass,UsbTypeVendor,UsbTypeReserved } UsbSetupType_t; typedef enum { GET_STATUS = 0,CLEAR_FEATURE, Reserved0, SET_FEATURE, Reserved1, SET_ADDRESS, GET_DESCRIPTOR, SET_DESCRIPTOR, GET_CONFIGURATION, SET_CONFIGURATION, GET_INTERFACE, SET_INTERFACE, SYNCH_FRAME } UsbSetupStandatRecuest_t; typedef enum { UsbRecipientDevice = 0,UsbRecipientInterface,UsbRecipientEndpoint, UsbRecipientOther,UsbRecipientReserved } UsbSetupRecipient_t; typedef enum { UsbEpHaltSelector= 0, UsbDeviceRemoteWakeupSelector, UsbTestModeSelector } UsbFeatureSelector_t; typedef enum { UsbUserClass,UsbUserVendor,UsbUserGetDescriptor,UsbClassEp0OutPacket,UsbVendorEp0OutPacket, UsbUserConfigure,UsbUserReset,UsbUserConnect,UsbUserSuspend, UsbUserLastInd, } UsbCoreUserFuncInd_t; typedef enum { UsbCoreReqDevState = 0, UsbCoreReqDevSusState, UsbCoreReqConfiquration, UsbCoreReqInterface, UsbCoreReqAlternateSetting, UsbCoreReqDevOwnAddress, UsbCoreReqWakeUpEnableStatus, UsbCoreReqSelfPoweredStatus, } UsbCoreReqType_t; typedef enum { UsbUserNone = 0, UsbUserSendPacket, UsbUserReceivePacket, UsbUserSendAckn, UsbUserStallCtrlEp, } UsbUserFuncResponse_t; #define UsbDevStatusNoSuspend 0 #define UsbDevStatusSuspend 1 typedef struct { Int8U DS : 3; Int8U : 4; Int8U Suspend : 1; } UsbDevState_t; typedef union { Int8U mRequestTypeData; struct { Int8U Recipient : 5; Int8U Type : 2; Int8U Dir : 1; }; }UsbRequestType_t; typedef union { Int16U Word; struct { Int8U Lo; Int8U Hi; }; }TwoBytes_t; typedef struct { UsbRequestType_t mRequestType; Int8U bRequest; TwoBytes_t wValue; TwoBytes_t wIndex; TwoBytes_t wLength; } UsbSetupPacket_t; typedef union { Int8U Data; struct { Int8U SelfPowered :1; Int8U RemoteWakeupEnable :1; Int8U :6; }; } UsbDefFeature_t; typedef struct { UsbDevState_t State; Int32U Configuration; Int32U Interface; Int32U AlternateSetting; Int32U DevAdd; UsbDefFeature_t Feature; } UsbDevCtrl_t; typedef struct { _UsbEpStaus_t Status; Boolean NoZeroLength; } UsbEpSataus_t; typedef struct { Int8U *pData; Int32U Counter; UsbEpSataus_t EpStatus; }UsbEpCtrl_t; /************************************************************************* * Function Name: UsbCoreInit * Parameters: CommUserFpnt_t UserCoreConfigure * * Return: none * * Description: USB init core * *************************************************************************/ void UsbCoreInit (CommUserFpnt_t UserCoreConfigure); /************************************************************************* * Function Name: UsbCoreUserFuncRegistered * Parameters: CommUserFpnt_t UserFunc, UsbCoreUserFuncInd_t UserFuncInd * * Return: CommUserFpnt_t * * Description: Registed User core callback function * *************************************************************************/ CommUserFpnt_t UsbCoreUserFuncRegistered (CommUserFpnt_t UserCoreFunc, UsbCoreUserFuncInd_t UserFuncInd); /************************************************************************* * Function Name: UsbCoreReq * Parameters: UsbCoreReqType_t Type * * Return: Int32U * * Description: Return different device states * *************************************************************************/ Int32U UsbCoreReq (UsbCoreReqType_t Type); /************************************************************************* * Function Name: UsbWakeUp * Parameters: none * * Return: none * * Description: WakeUp device from suspend mode * *************************************************************************/ void UsbWakeUp (void); /************************************************************************* * Function Name: UsbSetDevState * Parameters: _UsbDevState_t DevState * * Return: none * * Description: Set device state * *************************************************************************/ void UsbSetDevState (_UsbDevState_t DevState); /************************************************************************* * Function Name: UsbGetDevState * Parameters: none * * Return: UsbDevState_t * * Description: Get device state * *************************************************************************/ UsbDevState_t UsbGetDevState (void); /************************************************************************* * Function Name: UsbSetDevSuspend * Parameters: none * * Return: UsbDevState_t * * Description: Set device suspend mode * *************************************************************************/ void UsbSetDevSuspend (Boolean Suspend); /************************************************************************* * Function Name: UsbFindInterface * Parameters: UsbStandardConfigurationDescriptor_t * pConfiguration * Int32U Interface,Int32U AlternativeSetting * * Return: UsbCommStatus_t * * Description: Set Interface and Alternative setting state * *************************************************************************/ UsbCommStatus_t UsbFindInterface (UsbStandardConfigurationDescriptor_t * pConfiguration, UsbDevCtrl_t * UsbDev); /************************************************************************* * Function Name: UsbFindConfiguration * Parameters: Int32U * * Return: UsbStandardConfigurationDescriptor_t * * * Description: Return pointer to current configuration * *************************************************************************/ UsbStandardConfigurationDescriptor_t * UsbFindConfiguration(Int32U Configuration); /************************************************************************* * Function Name: UsbDevConnectCallback * Parameters: void * pArg * * Return: none * * Description: USB connect callback * *************************************************************************/ void UsbDevConnectCallback (void * pArg); /************************************************************************* * Function Name: UsbDevSuspendCallback * Parameters: void * pArg * * Return: none * * Description: USB suspend callback * *************************************************************************/ void UsbDevSuspendCallback (void * pArg); /************************************************************************* * Function Name: UsbDevResetCallback * Parameters: void * pArg * * Return: none * * Description: USB reset callback * *************************************************************************/ void UsbDevResetCallback (void * pArg); /************************************************************************* * Function Name: UsbEp0SetupWrite * Parameters: none * * Return: none * * Description: USB EP Write implement (IN) * *************************************************************************/ void UsbEp0SetupWrite (void); /************************************************************************* * Function Name: UsbSetConfigurtonState * Parameters: Int32U * * Return: UsbCommStatus_t * * Description: Set configuration state * *************************************************************************/ inline UsbCommStatus_t UsbSetConfigurtonState (Int32U Configuration); /************************************************************************* * Function Name: UsbDevStatus * Parameters: Int8U * pData, Int16U Index * * Return: UsbCommStatus_t * * Description: Usb Return device status into pData * *************************************************************************/ inline UsbCommStatus_t UsbDevStatus(Int8U * pData, Int16U Index); /************************************************************************* * Function Name: UsbInterfaceStatus * Parameters: Int8U * pData, Int16U Index * * Return: UsbCommStatus_t * * Description: Usb Return interface status into pData * *************************************************************************/ inline UsbCommStatus_t UsbInterfaceStatus(Int8U * pData, Int16U Index); /************************************************************************* * Function Name: UsbEpStatus * Parameters: Int8U * pData, Int16U Index * * Return: UsbCommStatus_t * * Description: Usb Return Ep status into pData * *************************************************************************/ inline UsbCommStatus_t UsbEpStatus(Int8U * pData, Int16U Index); /************************************************************************* * Function Name: UsbGetStatus * Parameters: none * * Return: none * * Description: Usb Get status implement * *************************************************************************/ inline void UsbGetStatus (void); /************************************************************************* * Function Name: UsbClearFeature * Parameters: Int16U Feature,Int16U Index * * Return: UsbCommStatus_t * * Description: USB Clear Device feature implement * *************************************************************************/ inline UsbCommStatus_t UsbClearDevFeature(Int16U Feature,Int16U Index); /************************************************************************* * Function Name: UsbClearInterfaceFeature * Parameters: Int16U Feature,Int16U Index * * Return: UsbCommStatus_t * * Description: USB Clear Interface feature implement * *************************************************************************/ inline UsbCommStatus_t UsbClearInterfaceFeature(Int16U Feature,Int16U Index); /************************************************************************* * Function Name: UsbClearEpFeature * Parameters: Int16U Feature,Int16U Index * * Return: UsbCommStatus_t * * Description: USB Clear Ep feature implement * *************************************************************************/ inline UsbCommStatus_t UsbClearEpFeature(Int16U Feature,Int16U Index); /************************************************************************* * Function Name: UsbClearFeature * Parameters: none * * Return: none * * Description: USB Clear feature implement * *************************************************************************/ inline void UsbClearFeature (void); /************************************************************************* * Function Name: UsbSetFeature * Parameters: Int16U Feature,Int16U Index * * Return: UsbCommStatus_t * * Description: USB Set Device feature implement * *************************************************************************/ inline UsbCommStatus_t UsbSetDevFeature(Int16U Feature,Int16U Index); /************************************************************************* * Function Name: UsbSetInterfaceFeature * Parameters: Int16U Feature,Int16U Index * * Return: UsbCommStatus_t * * Description: USB Set Interface feature implement * *************************************************************************/ inline UsbCommStatus_t UsbSetInterfaceFeature(Int16U Feature,Int16U Index); /************************************************************************* * Function Name: UsbSetEpFeature * Parameters: Int16U Feature,Int16U Index * * Return: UsbCommStatus_t * * Description: USB Set Ep feature implement * *************************************************************************/ inline UsbCommStatus_t UsbSetEpFeature(Int16U Feature,Int16U Index); /************************************************************************* * Function Name: UsbSetFeature * Parameters: none * * Return: none * * Description: USB Set feature implement * *************************************************************************/ inline void UsbSetFeature (void); /************************************************************************* * Function Name: UsbSetAddress * Parameters: none * * Return: none * * Description: USB Set address request implement * *************************************************************************/ inline void UsbSetAddress (void); /************************************************************************* * Function Name: UsbGetDescriptorDevice * Parameters: Int8U Index - must be 0 * * Return: UsbCommStatus_t * * Description: USB get device's descriptor request implement * *************************************************************************/ inline UsbCommStatus_t UsbGetDescriptorDevice(Int8U Index); /************************************************************************* * Function Name: UsbGetDescriptorConfiguration * Parameters: Int8U Index * * Return: UsbCommStatus_t * * Description: USB get configuration's descriptor request implement * *************************************************************************/ inline UsbCommStatus_t UsbGetDescriptorConfiguration(Int8U Index); /************************************************************************* * Function Name: UsbGetDescriptorString * Parameters: Int8U Index * * Return: UsbCommStatus_t * * Description: USB get string's descriptor request implement * *************************************************************************/ inline UsbCommStatus_t UsbGetDescriptorString(Int8U Index); /************************************************************************* * Function Name: UsbGetDescriptor * Parameters: none * * Return: none * * Description: USB get descriptor request implement * *************************************************************************/ inline void UsbGetDescriptor (void); /************************************************************************* * Function Name: UsbSetDescriptor * Parameters: none * * Return: none * * Description: USB Set descriptor * *************************************************************************/ inline void UsbSetDescriptor(void); /************************************************************************* * Function Name: UsbGetConfiguration * Parameters: none * * Return: none * * Description: USB Get configuration implement * *************************************************************************/ inline void UsbGetConfiguration(void); /************************************************************************* * Function Name: UsbSetConfiguration * Parameters: none * * Return: none * * Description: USB Set configuration implement * *************************************************************************/ inline void UsbSetConfiguration(void); /************************************************************************* * Function Name: UsbGetInterface * Parameters: none * * Return: none * * Description: Implement get interface request * *************************************************************************/ inline void UsbGetInterface (void); /************************************************************************* * Function Name: UsbSetInterface * Parameters: none * * Return: none * * Description: Implement set interface request * *************************************************************************/ inline void UsbSetInterface (void); /************************************************************************* * Function Name: UsbSynchFrame * Parameters: none * * Return: none * * Description: Implement synch frame request * *************************************************************************/ inline void UsbSynchFrame (void); /************************************************************************* * Function Name: UsbCtrlEpCallback * Parameters: void * pArg * * Return: none * * Description: USB Ctrl EP Callback * *************************************************************************/ void UsbCtrlEpCallback (void * pArg); #endif //__USB_9_H