📄 usbh_usbds_api.h
字号:
/*
* description: USBH USBD APIs Definition(global)
* Maker : Toshiyuki Sakai
* Copyright : (C)2005,SEIKO EPSON Corp. All Rights Reserved.
*/
#ifndef USBH_USBDS_H
#define USBH_USBDS_H
#ifdef __cplusplus
extern "C" {
#endif /* cplusplus */
#include "usbh_hcd.h"
/*****************************************
* Define definition
*****************************************/
#ifdef TST_MODE
#define STATIC_T
#else
#define STATIC_T static
#endif
/* index */
#define USBH_USBD_DV (0)
#define USBH_USBD_IF (1)
#define USBH_USBD_EP (2)
#define ENUM_EP0 (0x00) /* EP number for recognition */
#define ENUM_EP1 (0x81) /* EP number for root hub use */
/* Device table using status */
#define USBD_ENABLE (0x01)
#define USBD_DISABLE (0x00)
/* Standard Feature Selector */
#define SFEA_ENDPOINT_HALT (0x00)
#define SFEA_DEVICE_REMOTE_WAKEUP (0x01)
#define SFEA_TEST_MODE (0x02)
/* Waiting time for power becoming steady from PORT_CONNECTION to request issuing ( over 100ms in specification ) */
/* Adjustment is needed according to action environment and connected device ( Wait by using time is also good ) */
#define MAX_CONNECT_WAIT_COUNT_BEFORE_RESET (1500) /* Counter before reset */
#define MAX_CONNECT_WAIT_COUNT_AFTER_RESET (600) /* Counter after reset */
#define USBH_USBD_SetPipeType(pipetype, epaddr, devaddr, dir) \
((ULONG)((pipetype & 0x03) << 30))|((ULONG)((epaddr & 0xff) << 15))|((ULONG)((devaddr & 0xff) << 8)) | ((ULONG)(dir & 0xff))
#define USBH_USBD_PipeToPara(pipe, pipetype, epaddr, devaddr, dir) \
pipetype = (pipe >> 30) & 0x03; \
epaddr = (pipe >> 15) & 0xff; \
devaddr = (pipe >> 8) & 0x7f; \
dir = pipe & 0xff;
/*****************************************
* Call back function definition
*****************************************/
/*****************************************
* Enumeration type definition
*****************************************/
typedef enum tagUSBH_USBD_BREQ_TYPE {
/* Standard request */
BREQ_GETSTATUS=0,
BREQ_CLEARFEATURE,
BREQ_SETFEATURE,
BREQ_SETADDRESS,
BREQ_GETDESCRIPTOR,
BREQ_RESERVE3,
BREQ_GETCONFIGURATION,
BREQ_SETCONFIGURATION,
BREQ_GETINTERFACE,
BREQ_SETINTERFACE,
BREQ_RESERVE4,
/* Below are class definition request */
BREQ_GETSTATUS_HUB,
BREQ_GETSTATUS_PORT,
BREQ_CLEARFEATURE_HUB,
BREQ_CLEARFEATURE_PORT,
BREQ_SETFEATURE_HUB,
BREQ_SETFEATURE_PORT,
BREQ_GETDESCRIPTOR_HUB,
BREQ_CLEAR_TT_BUFFER,
BREQ_RESET_TT,
BREQ_GET_TT_STATE,
BREQ_STOP_TT,
BREQ_BOMS_RESET, /* BulkOnlyMassStrage Reset */
BREQ_GMAXLUN, /* Get Max LUN */
} USBH_USBD_BREQ_TYPE;
typedef enum tagUSBH_USBD_MODE {
USBH_USBD_MODE_INIT=0,
USBH_USBD_MODE_ENUM,
USBH_USBD_MODE_DEVDES8, /* GET DEVICE DESCRIPTOR(Total Length acquisition only) */
USBH_USBD_MODE_DEVDES, /* GET DEVICE DESCRIPTOR */
USBH_USBD_MODE_DEVQDES, /* GET DEVICE QUALIFIER DESCRIPTOR */
USBH_USBD_MODE_CFGDES8, /* GET CONFIGURATION DESCRIPTOR(Total Length acquisition only) */
USBH_USBD_MODE_CFGDES, /* GET CONFIGURATION DESCRIPTOR */
USBH_USBD_MODE_SADDR, /* SET ADDRESS */
USBH_USBD_MODE_SCFG, /* SET CONFIGURATION DESCRIPTOR */
USBH_USBD_MODE_GHUBDES, /* GET HUBDESCRIPTOR */
USBH_USBD_MODE_INTRIN, /* INTERRUPT IN */
USBH_USBD_MODE_SPORTPWR, /* SET PORTFEATURE(PORT_POWER) */
USBH_USBD_MODE_GSTATUS, /* GET STATUS */
USBH_USBD_MODE_PR_GSTATUS, /* GET STATUS(PORT_RESUME) */
USBH_USBD_MODE_PR_CPORTSUS, /* CLEAR PORTFEATURE(PORT_RESUME) */
USBH_USBD_MODE_CPORTCON, /* CLEAR PORTFEATURE(C_PORT_CONNECTION) */
USBH_USBD_MODE_SPORTRES, /* SET PORTFEATURE(C_PORT_RESET) */
USBH_USBD_MODE_CPORTRES, /* CLEAR PORTFEATURE(C_PORT_RESET) */
USBH_USBD_MODE_DEV_ENUM, /* DEVICE ENUMERATION */
USBH_USBD_MODE_CPORTENA, /* CLEAR PORTFEATURE(C_PORT_ENABLE) */
USBH_USBD_MODE_GSTATUSHUB, /* GET STATUS(HUB) */
USBH_USBD_MODE_CHANGE_VBUSERRCON, /* V-BUS ERROR(occurrence) */
USBH_USBD_MODE_CHANGE_VBUSERRCCMP, /* V-BUS ERROR(completion) */
USBH_USBD_MODE_CHANGE_VBUSERRREC, /* V-BUS ERROR RESUME(occurrence) */
USBH_USBD_MODE_CHANGE_VBUSERRRCMP, /* V-BUS ERROR RESUME(completion) */
USBH_USBD_MODE_COMP
} USBH_USBD_MODE;
/*****************************************
* Structure definition
*****************************************/
typedef struct tagUSBH_USBD_DEVLIST_TBL {
UCHAR Enable;
USBH_USBD_DEVLIST_HEAD DeviceList;
} USBH_USBD_DEVLIST_TBL;
typedef struct tagUSBH_USBD_URB_TBL {
UCHAR Enable;
USBH_USBD_URB Urb_List;
} USBH_USBD_URB_TBL;
typedef struct tagUSBH_USBD_IF_CTBL {
UCHAR Enable;
USBH_USBD_IFTBL IfList;
} USBH_USBD_IF_CTBL;
typedef struct tagUSBH_USBD_EP_CTBL {
UCHAR Enable;
USBH_USBD_EPTBL EpList;
} USBH_USBD_EP_CTBL;
typedef struct tagUSBH_USBD_API_STATE {
long retValue; /* Return value of API */
USBH_USBD_CALLBACK Callback; /* API call back */
} USBH_USBD_API_STATE;
/* Set up request information */
typedef struct{
UCHAR bmRequestType;
UCHAR bRequest;
UCHAR wValueL;
UCHAR wValueH;
UCHAR wIndexL;
UCHAR wIndexH;
UCHAR wLengthL;
UCHAR wLengthH;
} SETUP_REQUEST;
/* Class driver information */
typedef struct tagUSBH_USBD_ClssDriverINFO {
USBH_USBD_CALLBACK pfnEntryClassCallback;
UCHAR ClassNo; /* Class Driver No. : device class number defined by USB */
UCHAR ClassID; /* Class Driver ID : through number commonly for all class driver from 1. 0 identify that not yet register. */
} USBH_USBD_ClssDriverINFO;
extern SETUP_REQUEST SetupReq[];
#ifdef TST_MODE
extern USBH_USBD_DEVLIST_TBL DeviceListTbl[]; /* 0: default address, 1:root hub, 2-- : common device */
extern USBH_USBD_URB_TBL UrbListTbl[];
extern USBH_USBD_IF_CTBL IfListTbl[];
extern USBH_USBD_EP_CTBL EpListTbl[];
#endif
/*****************************************
* Function prototype declaration
*****************************************/
long USBH_USBDS_Init( USBH_USBD_CALLBACK pfnCallback, UCHAR sw ) ;
long USBH_USBDS_Cleanup( void ) ;
long USBH_USBDS_SubmitURB( USBH_USBD_URB *psURB, unsigned char classid, USBH_USBD_CALLBACK pfnCallback ) ;
long USBH_USBDS_UnlinkURB( USBH_USBD_URB *psURB, UCHAR classid, USBH_USBD_CALLBACK pfnCallback );
long USBH_USBDS_SetConfiguration( UCHAR classid, UCHAR devaddr, USBH_USBD_CALLBACK pfnCallback );
long USBH_USBDS_EntryClass( unsigned char classno, unsigned char *classid, USBH_USBD_CALLBACK pfnCallback
, USBH_USBD_CALLBACK pfnEventCallback ) ;
long USBH_USBDS_Reset( unsigned char classid, unsigned char devaddr, USBH_USBD_CALLBACK pfnCallback ) ;
long USBH_USBDS_PortSuspend( unsigned char classid, unsigned char devaddr, USBH_USBD_CALLBACK pfnCallback ) ;
long USBH_USBDS_PortResume( unsigned char classid, unsigned char devaddr, USBH_USBD_CALLBACK pfnCallback ) ;
void USBH_USBDS_MkSetupPacket( SETUP_REQUEST *tmp, UCHAR kind, USHORT size, UCHAR port, UCHAR other );
long USBH_USBDS_PipeCheck(ULONG pipe);
#ifdef __cplusplus
}
#endif /* cplusplus */
#endif /* USBH_USBDS_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -