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

📄 bulkonly.c

📁 采用Atmeag162单片机来制作的U盘程序源码
💻 C
字号:
#include <iom162v.h>
#include <macros.h>

#include "BulkOnly.H"
#include "D12CI.H"
#include "MAIN.H" 


extern CONTROL_XFER ControlData;
extern EPPFLAGS bEPPflags;
BULK_STRUCT  Bulk_Block;

extern BULK_CONTROL  Bulk_Control_r;
extern BULK_CONTROL  Bulk_Control_w;
extern unsigned char PageBuf[512];

#define Bulk_CBW  Bulk_Block.cbw
#define Bulk_CSW  Bulk_Block.csw
#define CBW_bCBWCBLength Bulk_Block.cbw.dCBWDataTransferLength
#define CSW_dCSWDataResidue Bulk_Block.csw.dCSWDataResidue

void Bulk_CBWHandler( void )
{   
    if(sizeof(CBW)==D12_ReadEndpoint(4,EP2_PACKET_SIZE,(unsigned char*)&Bulk_CBW))
    {
	    if(IsCBWValid())
	    {		      
		    RBC_Hander();
			return;
	    }
	}
	Bulk_ErrorHandler(CSW_PHASE_ERROR,0);
	Bulk_CSWHandler();		
}
void Bulk_CSWHandler( void )
{
   D12_WriteEndpoint(5,sizeof(CSW),(unsigned char *)&Bulk_CSW);  
   bEPPflags.bits.bulk_state=BULK_IDLE;  
}
void Bulk_code_transmit(const unsigned char * pRomData,unsigned short len)
{
  ControlData.wCount=0; 
  ControlData.pCData=pRomData;
  ControlData.wLength=len;
  if(ControlData.wLength>=CBW_bCBWCBLength)
        ControlData.wLength=CBW_bCBWCBLength; 
  Bulk_ErrorHandler(CSW_GOOD,ControlData.wLength);		  
  if(ControlData.wLength>=EP2_PACKET_SIZE)
  {
     D12_CWriteEndpoint(5,EP2_PACKET_SIZE,ControlData.pCData);
     ControlData.wCount+=EP2_PACKET_SIZE;
     bEPPflags.bits.bulk_state=BULK_REQEST_TRANS;    
  }
  else
  {     
     D12_CWriteEndpoint(5,ControlData.wLength,pRomData);
     ControlData.wCount+=ControlData.wLength;
     bEPPflags.bits.bulk_state=BULK_DATA_END;
  }
}
BOOLEAN IsCBWValid(void)
{
  if((Bulk_CBW.dCBWSignature==CBW_SIGNATURE)&&
                       (Bulk_CBW.bCBWLUN<=1)&&
   	     (Bulk_CBW.bCBWCBLength<=MAX_CDBLEN))
		return TRUE;
	else
		return FALSE;
}
void Bulk_ErrorHandler(unsigned char CSWStatus,unsigned int wByteCount)
{
  Bulk_CSW.dCSWDataResidue=Bulk_CBW.dCBWDataTransferLength-wByteCount;
  Bulk_CSW.dCSWSignature=CSW_SIGNATURE;
  Bulk_CSW.bCSWStatus=CSWStatus;	
}

⌨️ 快捷键说明

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