📄 transfer.h
字号:
/*
** WASABI-Hot! version 1.2c
**
**
** -- copyright (c) 2001-2004 by Philips Japan, Ltd. -- All rights reserved --
**
**
** ** This code has been made to check/learn **
** ** the ISP1362/ISP1363 functionalities **
** ** Release 06-Aug-2004 **
**
** OKANO, Akifumi
**
** Application Laboratory, Mobile and Connectivity
** Semiconductors Div, Philips Japan Ltd.
** akifumi.okano@philips.com
** +81-3-3740-4668
*/
#ifndef _TR_GENE_H
#define _TR_GENE_H
/****************************************************************************/
/* includes */
/****************************************************************************/
#include "_hc_core/chap9.h"
#include "_hc_core/dev_ep.h"
/****************************************************************************/
/* constants */
/****************************************************************************/
#define reqtype( x ) (x >> 8)
#define request( x ) (x & 0xFF)
#define UNLOCK False
#define LOCK True
#define NUMBER_OF_TRANSFER_TYPES 4 // 3 = control + interr + bulk (Transfer types for ATL)
#define ISOCHRONOUS_TRANSFER 0
#define INTERRUPT_TRANSFER 1
#define CONTROL_TRANSFER 2
#define BULK_TRANSFER 3
#define CTRL_BULK_TRANSFER 4
#define PROCESS_STAGE_READY 0
#define PROCESS_STAGE_PROCESS_WAIT
#define PROCESS_STAGE_PROCESS_DONE
/****************************************************************************/
/* types */
/****************************************************************************/
typedef struct req {
unsigned char bmRequestType;
unsigned char bRequest;
unsigned short wValue;
unsigned short wIndex;
unsigned short wLength;
}
USB_Device_Request;
typedef struct _transfer_instance
{
/* for general ATL transfers */
unsigned char lock;
unsigned char *data_ptr_base;
unsigned char *data_ptr_start;
unsigned char *data_ptr_end;
endpoint_info_ptr epi_ptr;
void (*callback)( endpoint_info_ptr epi_ptr );
unsigned short transferred_size;
unsigned char direction;
unsigned char completion_code;
unsigned char fatal_error;
unsigned char transfer_type;
unsigned char index;
unsigned short target_address;
unsigned short target_block_index;
unsigned short retry_count;
unsigned long timeout;
unsigned long time_of_service;
unsigned long process_stage;
/* for interrupt transfer */
unsigned char polling_rate;
/* for bulk-OUT transfer */
unsigned char nak_wait_threshold;
unsigned char nak_wait_threshold_counter;
unsigned short nak_wait_time_ms;
unsigned short nak_wait_time_ms_counter;
unsigned char test;
/* for Ping-Pong buffering */
unsigned char paired;
unsigned char ping_pong;
}
transfer_instance;
typedef transfer_instance *transfer_instance_ptr;
typedef struct _buffer_params
{
unsigned short total_buffer_size;
unsigned short base_address;
unsigned short number_of_blocks;
unsigned short payload_size;
}
buffer_params;
/****************************************************************************/
/* function prototypes */
/****************************************************************************/
unsigned short transfer_control_transfer( USB_Device_Request *dev_req, device_instance *dvi_ptr, unsigned char *data_ptr );
unsigned char transfer_control_transaction( unsigned char direction, unsigned char *data_ptr, unsigned short *size_ptr, endpoint_info_ptr epi_ptr );
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -