⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 drv_usb_bo.h

📁 sparc硬件平台上的usb驱动
💻 H
字号:
/*************************************************
  Copyright (C), 2008, DTK Computer.
  File name:     BulkOnly.h
  Author:        lihai
  Version:       1.0
  Date:          2008.04.28
  Description:   实现USB驱动Bulk-Only批量传输协议相关函数功能
  Others:        无
  Function List:   
             Bulk_CBWHandler(void):    接收、处理输出端点(EP2)的传输命令
             
             Bulk_CSWHandler():          发送执行状态CSW
             
             Bulk_code_transmit(D_UINT8 * pRomData, D_UINT16 len):  批量发送
             
             IsCBWValid():     判断是否CBW数据包
             
             Bulk_ErrorHandler(D_UINT8 Status, D_UINT32 wByteCount):处理状态控制
             
             ChangeEndian(D_UINT8* num): 转换4字节数据字节序

  History:         初稿
*************************************************/
#ifndef __DRV_USB_BO_H__
#define __DRV_USB_BO_H__
#include "drv_usb_scsi.h"
#include "drv_usb_scsidef.h"
#include "drv_usb_main.h"

/*定义CBW命令执行状态*/
#define CSW_GOOD        0x00
#define CSW_FAIL        0x01
#define CSW_PHASE_ERROR 0x02

/* bulkStatus */
#define BULK_IDLE         0
#define BULK_DATA_TRANS   1
#define BULK_DATA_END     2
#define BULK_REQEST_TRANS 3
#define BULK_DATA_RECIEVE 4

/*倒序0x55534243 : USBC - USB Command*/
#define CBW_SIGNATURE   0x43425355
/*倒序0x55534253 : USBS - USB command Status*/
#define CSW_SIGNATURE   0x53425355

#define CBW_FLAG_IN     0x80
#define MAX_CDBLEN      0x10

#define CANCEL_BLOCK    2047

#pragma pack(push,1)

/*CBW数据结构*/
typedef struct _COMMAND_BLOCK_WRAPPER{
    D_UINT32  dCBWSignature;
    D_UINT32  dCBWTag;
    D_UINT32  dCBWDataTransferLength;
    D_UINT8  bmCBWFlags;
    D_UINT8  bCBWLUN;
    D_UINT8  bCBWCBLength; 
    CDB_RBC        CBWCB;
} CBW,*PCBW;

/*CSW数据结构*/
typedef struct _COMMAND_STATUS_WRAPPER{
    D_UINT32  dCSWSignature;
    D_UINT32  dCSWTag;
    D_UINT32  dCSWDataResidue;
    D_UINT8  bCSWStatus;
} CSW, *PCSW;

/* cbw & csw - UNION */
typedef union _BULK_STRUCT {
    CBW     cbw;
    CSW     csw;
}BULK_STRUCT,*pBULK_STRUCT;

/*Bulk传输数据控制结构*/
typedef struct _BULK_CONTROL {
  D_UINT32    LogicalBlockAddress;
  D_UINT32    Transfer_Length;
  D_UINT32    BufCount;  
}BULK_CONTROL,*pBULK_CONTROL;

#pragma pack(pop)

/*接收、处理输出端点(EP2)的传输命令*/
void Bulk_CBWHandler( void );
/*发送执行状态CSW*/
void Bulk_CSWHandler( void );
/* 判断是否CBW数据包*/
D_BOOL IsCBWValid(void);
/*批量发送*/
void Bulk_code_transmit(D_UINT8 * pRomData, D_UINT16 len);
/*处理状态控制*/
void Bulk_ErrorHandler(D_UINT8 status, D_UINT32 wByteCount);
/*转换4字节数据字节序*/
void ChangeEndian(D_UINT8* num);

extern BULK_CONTROL Bulk_Control_r;
extern BULK_CONTROL Bulk_Control_w;
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -