亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? usb.c

?? 44b0x的U盤源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
		  	usb_flags.flags.setup_packet_out=1;return;
		  }
     	}
     	else
	 {
	   	select_endpoint(0);
		clear_buffer();
	  }
}

void endp0_in(void)                                        //終端點0輸入處理
{
	 read_last_status(1);
	 if(usb_flags.flags.setup_packet_in||usb_flags.flags.not_end)
	  {
	   if((Control_Data.DeviceRequest.bmRequestType==0xA1)&&(Control_Data.DeviceRequest.bRequest==0xFE))
	    get_max_LUN();
	   switch(Control_Data.DeviceRequest.bmRequestType&0x7B)
	    {
		 case 0:
		   switch (Control_Data.DeviceRequest.bRequest)
		    {
		     case 0: get_status(0);break;
		     case 6: get_descriptor();break;
		     case 8: get_configuration();break;
			 default:break;
		    }
		 case 1:
		   switch (Control_Data.DeviceRequest.bRequest)
		    {
	         case  0: get_status(1);break;
		     case 10: get_interface();break;
	         default: break;
			}
		 case 2:
		  {
	       if(Control_Data.DeviceRequest.bRequest==0)get_status(2);  
		  }
		 default: break;
	    }
	  return;
	  }
	 if(usb_flags.flags.setup_packet_out) 
	  {
	   if((Control_Data.DeviceRequest.bmRequestType==0x21)&&(Control_Data.DeviceRequest.bRequest==0xFF))
	    mass_storage_reset();

	   switch(Control_Data.DeviceRequest.bmRequestType&0x03)
	    {
		 case 0:
	     switch (Control_Data.DeviceRequest.bRequest)
	      {
		   case     CLEAR_FEATURE: clear_feature(0);break;
		   case       SET_FEATURE: set_feature(0);break;
		   case       SET_ADDRESS: set_usb_address();break;                  //set_address	           
		   case    SET_DESCRIPTOR: set_descriptor();break;                //set_descriptor
		   case SET_CONFIGURATION: set_configuration(); break;         //set_configurat               	          
	  	   default: break;
		  }break;
		 case 1:
	      switch (Control_Data.DeviceRequest.bRequest)
		   {
		    case CLEAR_FEATURE:  clear_feature(1);break;
		    case   SET_FEATURE:  set_feature(1); break;
	        case SET_INTERFACE: set_interface();break;
		    default: break;
	        }break;
		 case 2:
		  switch (Control_Data.DeviceRequest.bRequest)
		   {
		    case CLEAR_FEATURE: clear_feature(2);break;
		    case   SET_FEATURE: set_feature(2);break;
	        default: break;      
		   }break;
		 default: break;
	    }
	  }
}

/*void endp1_out(void)
{
 printc(0xcc);
}*/


/*void endp1_in(void)
{
 printc(0xcc);
}*/

void Return_CSW(unsigned int DataResidue,unsigned char status)          //返回CSW數據包
{
  
	  csw.dCSWTag=cbw.dCBWTag;
	  csw.dCSWDataResidue=DataResidue;
	  csw.bCSWStatus=status;
	  while(select_endpoint(5)&0x01);
	  write_endpoint_buff(5,sizeof(CSW),(unsigned char *)(&csw));
	  usb_flags.flags.usb_endp2_in=0;
	  usb_flags.flags.usb_endp2_out=0;
	  SCSI.SCSI_Status.Command=1;
	  SCSI.SCSI_Status.Data=0;
}

void write_10(void)                                                         //SCSI寫操作
{
	 unsigned int LBA,Byte_Count;
	 unsigned char i;
	  if(SCSI.SCSI_Status.Data)
	  {
	   for(i=0;i<4;i++)
	   {
	    LBA<<=8;
	    LBA+=cbw.CBWCB[2+i];
	   }
	//   pData=get_physical_addr(LBA);
	   Byte_Count=0;
	   Byte_Count+=cbw.CBWCB[7];
	   Byte_Count<<=8;
	   Byte_Count+=cbw.CBWCB[8];
	   Byte_Count<<=9;
	 while(usb_flags.flags.usb_endp2_out)
	  {
	   while(!(select_endpoint(4)&0x01));
		if(Byte_Count>64)
		 {
		  read_endpoint_buff(4,64,buffer);
		  Byte_Count-=64;
		 }
		else 
		 {
	      read_endpoint_buff(4,Byte_Count,buffer);
	      Return_CSW(0x00,SUCCESS);
		 }
	   }
	 }
}

void endp2_out(void)                                                     //主端點輸出處理
{
	// printc(0xcc);
	 if(SCSI.SCSI_Status.Command)
	  {
	   if(read_endpoint_buff(4,sizeof(CBW),(unsigned char *)(&cbw))!=sizeof(CBW)){error(2);return;}
	   if(cbw.dCBWSignature!=0x55534243){error(3);return;}
	   SCSI.SCSI_Status.Command=0;
	   SCSI.SCSI_Status.Data=1;
	   if(cbw.bmCBWFlags&0x80)
	    {
		 usb_flags.flags.usb_endp2_in=1;
		 usb_flags.flags.usb_endp2_out=0;
		}
	   else
	    {
		 usb_flags.flags.usb_endp2_in=0;
		 usb_flags.flags.usb_endp2_out=1;
	     switch(cbw.CBWCB[0])
	      {
	       case        Write_10: write_10();break;
	       case Test_Unit_Ready: Return_CSW(0x00,SUCCESS);break; 
	       case          Verify: Return_CSW(0x00,SUCCESS);break;
		   default             : Return_CSW(cbw.dCBWDataTransgerLength,FAIL);break;
		  }
		}
	  }
	 else
	  {
	   read_last_status(4);
	   select_endpoint(4);
	   clear_buffer();
	  }
}

unsigned char const *get_physical_addr(unsigned int LBA)                        //從LBA獲取物理地址
{
	 if(LBA==0)return DBR;
	 if(LBA==2)return FAT;
	 if(LBA==0x40)return ZERO;
	 if(LBA==0X0A)return FAT;
}


void read_10(void)                                                              //SCSI讀處理
{
	 unsigned int LBA=0,Byte_Count;
	 unsigned int count=0;
	 unsigned char i;
	 if(SCSI.SCSI_Status.Data)
	  {
	   for(i=0;i<4;i++)
	   {
	    LBA<<=8;
	    LBA+=cbw.CBWCB[2+i];
	   }
	   pData=get_physical_addr(LBA);
	   Byte_Count=0;
	   Byte_Count+=cbw.CBWCB[7];
	   Byte_Count<<=8;
	   Byte_Count+=cbw.CBWCB[8];
	   Byte_Count<<=9;
	   i=0;
	  while(usb_flags.flags.usb_endp2_in)
	   {
	    if(LBA==0)
	       if(count<512)pData=DBR+count;
		   else 
		    if(count==512)pData=FAT;
			else pData=ZERO;
		if(LBA==2)
	//	   if(count<64)pData=FAT;
	//	   else
	 //	    if(count==512*7)pData=FAT;
	 //      else
			 pData=ZERO;
	 	if(LBA==8)
	 //	    if(count<512)pData=ZERO;
	 //		else 
	 //		 if(count==512)pData=FAT;
	 //		 else 
			  pData=ZERO;
	     if(LBA==0x10)
		    if(count==512)pData=FAT;
		   	 else pData=ZERO;
		if(LBA==0x21)
		 if(count==0)
	//	  else
	       pData=ROOT_DIR;
		   else pData=ZERO;

		if(LBA==0x40)
		  if(count<240)pData=FILE_DATA+count;
		  else 
		    pData=ZERO;

	   while(select_endpoint(5)&0x01);
	   if(Byte_Count>MAX_BULK_DATA_SIZE)
	   {
	    write_endpoint_buff(5,MAX_BULK_DATA_SIZE,pData);
	//    pData+=MAX_BULK_DATA_SIZE;
	    Byte_Count-=MAX_BULK_DATA_SIZE;
	//    SCSI.Status.Data=1;
	   }
	  else
	   {
	    write_endpoint_buff(5,Byte_Count,pData);
	    Return_CSW(0x00,SUCCESS);
	   }
	  count+=64;
	  }
	 }
	 else error(2);return;
}

void endp2_in(void)                                      //主端點輸入處理
{
    	switch(cbw.CBWCB[0])
    	{
     		case                    Read_10: read_10();break;
	     	case                      Inquiry: write_endpoint_buff(5,0x24,DISK_INF);Return_CSW(0x00,SUCCESS); break;
	     	case           Read_Capacity: write_endpoint_buff(5,0x08,DISK_CAPACITY);Return_CSW(0x00,SUCCESS);break;
	     	case Read_Format_capacity: write_endpoint_buff(5,0x00,0x00);Return_CSW(cbw.dCBWDataTransgerLength,FAIL);break;
	     	case           Request_Sense: write_endpoint_buff(5,0x12,SENSE);Return_CSW(0x00,SUCCESS);break;
		case        Medium_Removal: Return_CSW(0x00,SUCCESS);break;
		case                         0x1a: write_endpoint_buff(5,0x00,0x00);Return_CSW(cbw.dCBWDataTransgerLength,FAIL);break;
	     	default                            : write_endpoint_buff(5,0x00,0x00);Return_CSW(cbw.dCBWDataTransgerLength,FAIL);break;
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久久久精| 在线播放日韩导航| 欧美成人r级一区二区三区| 国产精品电影一区二区| 久久av中文字幕片| 欧美日韩在线免费视频| 中文字幕+乱码+中文字幕一区| 日精品一区二区| 91视频观看免费| 久久久久国产精品麻豆| 奇米影视在线99精品| 91香蕉视频mp4| 国产日韩精品一区二区浪潮av| 人人狠狠综合久久亚洲| 欧美亚洲国产一区二区三区| 国产精品福利一区| 国产成人亚洲精品狼色在线| 精品欧美一区二区在线观看| 日韩国产欧美三级| 精品1区2区3区| 亚洲精品福利视频网站| 99久久久久久99| 国产欧美一区二区三区在线老狼| 久久国产精品免费| 日韩欧美www| 日本中文一区二区三区| 69久久夜色精品国产69蝌蚪网| 一区二区三区不卡在线观看| 91女神在线视频| 国产精品第四页| 成人动漫一区二区| 国产精品乱码妇女bbbb| 国产成人自拍在线| 国产欧美一区二区精品性 | 日韩精品一区在线观看| 亚洲va欧美va天堂v国产综合| 日本韩国一区二区三区| 亚洲精品欧美综合四区| 91九色最新地址| 亚洲精品视频免费看| 在线亚洲一区观看| 香蕉加勒比综合久久| 91.com在线观看| 日韩精品成人一区二区三区| 91麻豆精品国产综合久久久久久| 丝袜亚洲另类欧美| 欧美一三区三区四区免费在线看| 日本sm残虐另类| 精品国产乱码久久久久久久| 国产又黄又大久久| 日本一区二区三区dvd视频在线| 国产不卡一区视频| 综合久久给合久久狠狠狠97色 | 捆绑调教一区二区三区| 精品国产免费久久| 国产成人免费视频精品含羞草妖精| 国产色一区二区| 99精品一区二区| 一区二区三区**美女毛片| 欧美日韩免费一区二区三区| 日本色综合中文字幕| 精品国产成人在线影院| 国产高清精品网站| 国产精品天干天干在线综合| 99国产精品久久久久久久久久 | 国产精品伦一区| 在线免费观看日本欧美| 日日欢夜夜爽一区| 久久综合九色综合97婷婷女人| 国产精品羞羞答答xxdd| 亚洲欧美日韩中文字幕一区二区三区| 欧美羞羞免费网站| 麻豆视频观看网址久久| 国产午夜三级一区二区三| 91欧美一区二区| 免费在线欧美视频| 国产欧美一区二区三区在线看蜜臀| 色综合久久综合中文综合网| 日韩高清欧美激情| 国产三级精品在线| 色欧美日韩亚洲| 美女一区二区三区在线观看| 国产精品视频九色porn| 欧美午夜在线观看| 国内外精品视频| 亚洲美女一区二区三区| 91精品国产综合久久福利 | 性感美女极品91精品| 26uuu欧美| 91福利国产精品| 国产做a爰片久久毛片| 一区二区三区中文免费| 日韩欧美亚洲另类制服综合在线| 不卡一卡二卡三乱码免费网站| 日日欢夜夜爽一区| 国产精品理论片| 欧美一级电影网站| 99精品久久免费看蜜臀剧情介绍| 日韩精品色哟哟| 国产精品福利影院| 欧美电视剧在线看免费| 色94色欧美sute亚洲线路一ni | 国产在线一区二区| 亚洲一区在线观看网站| 国产色综合一区| 91精品国产手机| 色综合久久综合| 国产一区二区视频在线播放| 亚洲成人激情自拍| 日本一区二区三区免费乱视频| 欧美精品日韩一区| 91在线免费看| 国产精品99久久久久久有的能看| 午夜电影网一区| 综合色中文字幕| 久久久久国色av免费看影院| 91精品一区二区三区在线观看| 成人理论电影网| 国内精品久久久久影院色| 亚洲mv大片欧洲mv大片精品| 亚洲人成精品久久久久| 国产亚洲一区二区三区在线观看| 欧美精品视频www在线观看| 91麻豆免费在线观看| 紧缚捆绑精品一区二区| 天堂一区二区在线| 亚洲精品国久久99热| 国产精品美女久久久久aⅴ国产馆| 日韩午夜精品电影| 欧美日韩日日骚| 一本大道久久a久久综合| 成人综合婷婷国产精品久久免费| 美女精品一区二区| 日韩成人一级大片| 亚洲成人精品在线观看| 亚洲精品亚洲人成人网在线播放| 中文字幕一区二区三区精华液| 欧美国产精品一区二区| 久久精品一区二区三区四区| 欧美成人一区二区| 日韩欧美一级片| 91精品国产欧美一区二区18| 8x8x8国产精品| 7777精品伊人久久久大香线蕉经典版下载 | 国产欧美日韩亚州综合| 久久久久久亚洲综合影院红桃| 日韩一区二区三区电影| 91麻豆精品国产91久久久使用方法| 91激情五月电影| 91福利精品视频| 日本韩国精品在线| 在线观看日韩国产| 欧洲另类一二三四区| 91传媒视频在线播放| 欧美性做爰猛烈叫床潮| 欧美三区在线观看| 欧美吻胸吃奶大尺度电影 | 国产·精品毛片| 成人午夜免费视频| 99综合影院在线| 91亚洲精华国产精华精华液| 91浏览器入口在线观看| 日本精品免费观看高清观看| 91国产免费观看| 欧美日韩一区二区三区在线| 欧美日韩午夜精品| 91精品国产综合久久福利软件 | 一本一道综合狠狠老| 欧美亚洲尤物久久| 欧美精品日韩综合在线| 日韩一区二区免费电影| 久久综合九色综合97婷婷| 欧美国产日韩在线观看| 亚洲乱码日产精品bd| 亚洲午夜久久久久久久久电影院| 五月天激情小说综合| 久久精品免费观看| 国产精品中文字幕日韩精品| 99精品久久免费看蜜臀剧情介绍| 欧美中文字幕一二三区视频| 欧美欧美午夜aⅴ在线观看| 日韩欧美国产三级| 国产日产精品一区| 日韩毛片高清在线播放| 五月婷婷综合网| 国产综合久久久久久久久久久久 | 日韩中文字幕区一区有砖一区| 麻豆国产精品视频| 成人综合激情网| 欧美午夜在线一二页| 精品久久国产97色综合| 国产精品美女久久久久久2018 | 一区精品在线播放| 亚洲123区在线观看| 国内偷窥港台综合视频在线播放| 成人激情小说乱人伦| 欧美日韩久久久| 26uuu亚洲婷婷狠狠天堂| 亚洲精品欧美专区| 激情五月婷婷综合|