📄 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 <includes.h>
#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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -