?? transfer.h
字號:
#ifndef _TR_GENE_H
#define _TR_GENE_H
/****************************************************************************/
/* includes */
/****************************************************************************/
#include "config.h"
/****************************************************************************/
/* constants */
/****************************************************************************/
#define reqtype( x ) (x >> 8)
#define request( x ) (x & 0xF)
#define UNLOCK 0x00
#define LOCK 0x80//底7位表示索引號
#define DELETE 0xff
#define CONTROL_TRANSFER 1
#define BULK_TRANSFER 2
#define INTERRUPT_TRANSFER 0
#define ISO_TRANSFER 3
#define TRANSFER_STATE_IDLE 0
#define TRANSFER_STATE_ACTIVE 1
#define BULK_TRANSFER_NAK_WAIT_THRESHOLD 5
#define BULK_TRANSFER_NAK_WAIT_TIME_ms 20
#define DEFAULT_TRANSFER_TIMEOUT_ms 5000
#define TRANSFER_TIMEOUT_LIMIT 10000
#define CONTROL_TRANSFER_TIMEOUT_LIMIT 50 // 50ms : control transfer timeout, no response from device
#define INTERRUPT_TRANSFER_TIMEOUT_LIMIT 1000
#define BULK_TRANSFER_TIMEOUT_LIMIT 1000
#define TR_HANDLE_ERR (unsigned char)-1
#define TR_INSTANCE_ERR (unsigned char)-2
#define TR_ENDPORT_ERR (unsigned char)-3
#define TR_INSTANCE_BE_DEL (unsigned char)-4
#define TR_OS_EVENT_ERR (unsigned char)-5
#define TR_ENDPONT_ID_ERR (unsigned char)-6
#define TR_TIMEOUT (unsigned char)-7
#define TR_NO_ERR (unsigned char)0
#define OS_EVENT_DELETE 0xff
/****************************************************************************/
/* types */
/****************************************************************************/
typedef struct req {
unsigned char bmRequestType;
unsigned char bRequest;
unsigned short wValue;
unsigned short wIndex;
unsigned short wLength;
}
USB_Device_Request;
typedef struct _LIST_ENTRY{
struct transfr *Flink;
struct transfr *Blink;
}LIST_ENTRY,*PLIST_ENTRY;
typedef struct transfr{
/* for general ATL transfers */
unsigned char lock;
unsigned char *data_ptr_base;
unsigned char *data_ptr_start;
unsigned char *data_ptr_end;
unsigned char *readout_position;
endpoint_info_ptr epi_ptr;
void (*callback)( struct transfr *ptr );
unsigned int need_transfer_total_size;
unsigned short transferred_size;
unsigned char direction;
unsigned char completion_code;
unsigned char fatal_error;
unsigned long endpoint_create_id;
LIST_ENTRY tr_list_for_tr;
LIST_ENTRY tr_list_for_ep;
/* for interrupt transfer */
/* 中斷傳輸 */
unsigned char schedule_rate;
unsigned long poll_timing_timer;
/* for uC/OS-II */
OS_EVENT *os_event_ptr; //uC/OS-II 事件指針
}transfer_instance;
typedef transfer_instance *transfer_instance_ptr;
/****************************************************************************/
/* function prototypes */
/****************************************************************************/
unsigned short control_transfer( USB_Device_Request *dev_req, device_instance *dvi_ptr, unsigned char *data_ptr );
unsigned char control_transaction( unsigned char direction, unsigned char *data_ptr, unsigned short *size_ptr, endpoint_info_ptr epi_ptr );
unsigned char bulk_transaction( unsigned char direction, unsigned char *data_ptr, unsigned short *size_ptr, transfer_instance *hTrInstance );
unsigned char interrupt_transaction( unsigned char direction, unsigned char *data_ptr, unsigned short *size_ptr, transfer_instance *hTrInstance );
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -