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

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

?? wlan_phoenix.c

?? 利用PIC單片機來驅動WLAN卡
?? C
?? 第 1 頁 / 共 5 頁
字號:
void buffer_alloc_event_handler(void)
{
	unsigned int FID;
	char i,j;

	FID = rd_cf_io16(AllocFID_Register);
	j = 1;
	for(i=0;i<3;++i)
	{
	 if(TxFID_buffers[i] == FID)
      bitset(free_TxFIDs, i);
	  j = 0;		
	  //printf("\r\nReclaimed Buffer %04X", FID);
    }
	if(j)
	 {
	  if(!(free_TxFIDs & 0x01))
	  {
       TxFID_buffers[0] = FID;
       bitset(free_TxFIDs, 0);
	  }
	  else if(!(free_TxFIDs & 0x02)) 
	  {
       TxFID_buffers[1] = FID;
       bitset(free_TxFIDs, 1);
	  }
	  else if(!(free_TxFIDs & 0x04)) 
	  {
       TxFID_buffers[2] = FID;
       bitset(free_TxFIDs, 2);
	  }
	 }
}

//*******************************************************************************************************
//* Perform Housekeeping on Events
//*******************************************************************************************************
void do_event_housekeeping(void)
{
	unsigned int evstat_data,FID;

	evstat_data = rd_cf_io16(EvStat_Register);
	
	if(evstat_data & EvStat_Tx_Bit_Mask)
	{
	 //printf("\r\nTransmit Event Occurred");
	 wr_cf_io16(EvStat_Tx_Bit_Mask,EvAck_Register);
	}

	if(evstat_data & EvStat_TxExc_Bit_Mask)
	{
	 //printf("\r\nTransmit Event Exception Occurred");
	 wr_cf_io16(EvStat_TxExc_Bit_Mask,EvAck_Register);
	}

	if(evstat_data & EvStat_Alloc_Bit_Mask)
	{
	 //printf("\r\nBuffer Allocation Event Occurred");
	 buffer_alloc_event_handler();
	 wr_cf_io16(EvStat_Tx_Bit_Mask,EvAck_Register);
	}

	if(evstat_data & EvStat_Cmd_Bit_Mask)
	{
	 //printf("\r\nCommand Completed Event Occurred");
	 wr_cf_io16(EvStat_Cmd_Bit_Mask,EvAck_Register);
	}

	if(evstat_data & EvStat_Info_Bit_Mask)
	{
	 //printf("\r\nInformation Frame Received Event Occurred");
	 FID = rd_cf_io16(InfoFID_Register);
	 //printf("\r\nInformation FID: %04X", FID);
	 wr_cf_io16(EvStat_Info_Bit_Mask,EvAck_Register);
	}

	if(evstat_data & EvStat_InfDrop_Bit_Mask)
	{
	 //printf("\r\nUnsolicited Information Frame Dropped Event Occurred");
	 wr_cf_io16(EvStat_InfDrop_Bit_Mask,EvAck_Register);
	}

	if(evstat_data & EvStat_WTErr_Bit_Mask)
	{
	 //printf("\r\nWait Error Event Occurred");
	 wr_cf_io16(EvStat_WTErr_Bit_Mask,EvAck_Register);
	}
}
//******************************************************************
//*	IP Protocol Types
//******************************************************************
#define	PROT_ICMP			   0x01
#define	PROT_TCP			   0x06
#define	PROT_UDP			   0x11
//******************************************************************
//*	Ethernet Header Layout
//******************************************************************
unsigned int packet[761]; //761
#define enetpacketLen11		   0x00	
#define enetpacketDest		   0x01
#define	enetpacketDest01	   0x01  //destination mac address
#define	enetpacketDest23	   0x02
#define	enetpacketDest45	   0x03
#define enetpacketSrc	       0x04
#define	enetpacketSrc01		   0x04  //source mac address
#define	enetpacketSrc23		   0x05
#define	enetpacketSrc45		   0x06
#define enetpacketLen03		   0x07
#define enetpacketSnap		   0x08
#define enetpacketCntrl		   0x09
//							   0x0A
#define	enetpacketType		   0x0B  //type/length field
#define enetpacketData         0x0C  //IP data area begins here
//******************************************************************
//*	ARP Layout
//******************************************************************
#define	arp_hwtype			   0x0C
#define	arp_prtype			   0x0D
#define	arp_hwprlen			   0x0E
#define	arp_op		   		   0x0F
#define	arp_shaddr			   0x10   //arp source mac address
//							   0x11
//							   0x12	
#define	arp_sipaddr			   0x13   //arp source ip address
//							   0x14
#define	arp_thaddr			   0x15   //arp target mac address
//							   0x16
//							   0x17	
#define	arp_tipaddr			   0x18   //arp target ip address
//                             0x19
//******************************************************************
//*	IP Header Layout
//******************************************************************
#define	ip_vers_len			   0x0C	//IP version and header length
//#define	ip_tos			   		//IP type of service
#define	ip_pktlen			   0x0D //packet length
#define	ip_id				   0x0E	//datagram id
#define	ip_frag_offset		   0x0F	//fragment offset
#define	ip_ttlproto			   0x10	//time to live
//#define	ip_proto			    //protocol (ICMP=1, TCP=6, UDP=11)
#define	ip_hdr_cksum		   0x11	//header checksum
#define	ip_srcaddr			   0x12	//IP address of source
//							   0X13				
#define	ip_destaddr			   0x14	//IP addess of destination
//                             0X15
#define	ip_data				   0x16	//IP data area
//******************************************************************
//*	TCP Header Layout
//******************************************************************
#define	TCP_srcport			   0x16	//TCP source port
#define	TCP_destport   	  	   0x17	//TCP destination port
#define	TCP_seqnum  	       0x18	//sequence number
//							   0x19		
#define	TCP_acknum	           0x1A	//acknowledgement number
//							   0x1B
#define	TCP_hdrflags		   0x1C	//4-bit header len and flags
#define	TCP_window			   0x1D	//window size
#define	TCP_cksum		       0x1E	//TCP checksum
#define	TCP_urgentptr   	   0x1F	//urgent pointer
#define TCP_data               0x20 //option/data
//******************************************************************
//*	TCP Flags
//*   IN flags represent incoming bits
//*   OUT flags represent outgoing bits
//******************************************************************
#define  FIN_IN               (packet[TCP_hdrflags] & 0x0100)
#define  SYN_IN               (packet[TCP_hdrflags] & 0x0200)
#define  RST_IN               (packet[TCP_hdrflags] & 0x0400)
#define  PSH_IN               (packet[TCP_hdrflags] & 0x0800)
#define  ACK_IN               (packet[TCP_hdrflags] & 0x1000)
#define  URG_IN               (packet[TCP_hdrflags] & 0x2000)
#define  FIN_OUT              packet[TCP_hdrflags] |= 0x0100 //0000 0001 0000 0000
#define  SYN_OUT              packet[TCP_hdrflags] |= 0x0200 //0000 0010 0000 0000
#define  RST_OUT              packet[TCP_hdrflags] |= 0x0400 //0000 0100 0000 0000
#define  PSH_OUT              packet[TCP_hdrflags] |= 0x0800 //0000 1000 0000 0000
#define  ACK_OUT              packet[TCP_hdrflags] |= 0x1000 //0001 0000 0000 0000
#define  URG_OUT              packet[TCP_hdrflags] |= 0x2000 //0010 0000 0000 0000
//******************************************************************
//*	ICMP Header
//******************************************************************
#define	ICMP_typecode		   ip_data
//#define	ICMP_code		   ICMP_type+1
#define	ICMP_cksum			   ICMP_typecode+1
#define	ICMP_id				   ICMP_cksum+1
#define	ICMP_seqnum			   ICMP_id+1
#define  ICMP_data             ICMP_seqnum+1
//******************************************************************
//*	UDP Header
//******************************************************************
#define	UDP_srcport			   ip_data
#define	UDP_destport		   UDP_srcport+1
#define	UDP_len				   UDP_destport+1
#define	UDP_cksum			   UDP_len+1
#define	UDP_data			   UDP_cksum+1
//******************************************************************
//*	UDP Packet Layout
//******************************************************************
//******************************************************************
//*	Ethernet Header Layout
//******************************************************************
unsigned int udp_packet[33];                 
#define enetpacketLen11		   0x00	
#define enetpacketDest		   0x01
#define	enetpacketDest01	   0x01  //destination mac address
#define	enetpacketest23	   	   0x02
#define	enetpacketDest45	   0x03
#define enetpacketSrc	       0x04
#define	enetpacketSrc01		   0x04  //source mac address
#define	enetpacketSrc23		   0x05
#define	enetpacketSrc45		   0x06
#define enetpacketLen03		   0x07
#define enetpacketSnap		   0x08
#define enetpacketCntrl		   0x09
//							   0x0A
#define	enetpacketType		   0x0B  //type/length field
#define enetpacketData         0x0C  //IP data area begins here
//******************************************************************
//*	IP Header Layout
//******************************************************************
#define	ip_vers_len			   0x0C	//IP version and header length
//#define	ip_tos			   		//IP type of service
#define	ip_pktlen			   0x0D //packet length
#define	ip_id				   0x0E	//datagram id
#define	ip_frag_offset		   0x0F	//fragment offset
#define	ip_ttlproto			   0x10	//time to live
//#define	ip_proto			    //protocol (ICMP=1, TCP=6, UDP=11)
#define	ip_hdr_cksum		   0x11	//header checksum
#define	ip_srcaddr			   0x12	//IP address of source
//							   0X13				
#define	ip_destaddr			   0x14	//IP addess of destination
//                             0X15
#define	ip_data				   0x16	//IP data area
//******************************************************************
//*	UDP Header
//******************************************************************
#define	UDP_srcport			   ip_data
#define	UDP_destport		   UDP_srcport+1
#define	UDP_len				   UDP_destport+1
#define	UDP_cksum			   UDP_len+1
#define	UDP_data			   UDP_cksum+1
//******************************************************************
//*	Get A Frame From the CF Receive Buffer
//*   This routine removes an Ethernet frame from the receive buffer.
//******************************************************************
void get_frame()
{
	unsigned int temp,i;
	char rc,bapnum;

	rc = 0;
	RxFID = rd_cf_io16(RxFID_Register);	// Get the FID of the allocated buffer
	bapnum = get_free_bap();
	switch(bapnum)
	{
	 case 0:
	  wr_cf_io16(RxFID,Select0_Register);
	  wr_cf_io16(rxdatalength_offset,Offset0_Register);
	  do{
		 temp = rd_cf_io16(Offset0_Register);
	    }while(temp & BAP0Busy_Bit_Mask);
	  //READ 802.11B PACKET DATA LENGTH
      packet[enetpacketLen11] = rd_cf_io16(Data0_Register);
	  //CHECK FOR PACKET DATA LENGTH > 1500 BYTES	
      if(packet[enetpacketLen11] > 0x05DC)
       packet[enetpacketLen11] = 0x05DC;
	  //GET DESTINATION MAC ADDRESS
	  for(i=0;i<3;++i)
	   packet[enetpacketDest+i] = rd_cf_io16(Data0_Register);
	  //GET SOURCE MAC ADDRESS
	  for(i=0;i<3;++i)
	   packet[enetpacketSrc+i] = rd_cf_io16(Data0_Register);
	  //GET PACKET DATA	
	  for(i=0;i<packet[enetpacketLen11];++i)
	   packet[enetpacketLen03+i] = rd_cf_io16(Data0_Register);
	  //ACKNOWLEDGE THAT WE NOW OWN THE FID	
      wr_cf_io16(EvStat_Rx_Bit_Mask,EvAck_Register );	
	  break;
	     
	 case 1:  
      wr_cf_io16(RxFID,Select1_Register);
	  wr_cf_io16(rxdatalength_offset,Offset1_Register);
	  do{
		 temp = rd_cf_io16(Offset1_Register);
		}while(temp & BAP0Busy_Bit_Mask);
      packet[enetpacketLen11] = rd_cf_io16(Data1_Register);	//get data length
      if(packet[enetpacketLen11] > 0x05DC)
       packet[enetpacketLen11] = 0x05DC;
	  for(i=0;i<3;++i)
       packet[enetpacketDest+i] = rd_cf_io16(Data1_Register);
	  for(i=0;i<3;++i)
	   packet[enetpacketSrc+i] = rd_cf_io16(Data1_Register);
	  for(i=0;i<packet[enetpacketLen11];++i)  //removed +1
	   packet[enetpacketLen03+i] = rd_cf_io16(Data1_Register);
      wr_cf_io16(EvStat_Rx_Bit_Mask,EvAck_Register );	// Acknowledge we own the FID
	  break;
     default:	 
	   rc = 1;	  
	   break;
	}   
   if(!rc)
   {			 
   //process an ARP packet
   if(packet[enetpacketType] == 0x0608)
   {
      if(packet[arp_hwtype] == 0x0100 && 
	   packet[arp_prtype] == 0x0008 && 
	   packet[arp_hwprlen] == 0x0406 && 
	   packet[arp_op] == 0x0100 && 
       ipaddri[0] == packet[arp_tipaddr] &&
       ipaddri[1] == packet[arp_tipaddr+1])
       arp();
      if(packet[arp_hwtype] == 0x0100 && 
	   packet[arp_prtype] == 0x0008 && 
	   packet[arp_hwprlen] == 0x0406 && 
	   packet[arp_op] == 0x0200 && 
       ipaddri[0] == packet[arp_tipaddr] &&
       ipaddri[1] == packet[arp_tipaddr+1])
	   {
       	for(i=0;i<6;i++)
    	{
			if(i%2)
				remotemacaddrc[i] = packet[arp_shaddr+i/2]>>8;
			else
				remotemacaddrc[i] = packet[arp_shaddr+i/2] & 0xFF;
    	}
		remotemacaddri[0] = make16(remotemacaddrc[1],remotemacaddrc[0]);
		remotemacaddri[1] = make16(remotemacaddrc[3],remotemacaddrc[2]);
		remotemacaddri[2] = make16(remotemacaddrc[5],remotemacaddrc[4]);
		flags.arpflag = 1;
       }
	}
   //process an IP packet
   else if(packet[enetpacketType] == 0x0008 
		  && packet[ip_destaddr] == ipaddri[0]   
          && packet[ip_destaddr+1] == ipaddri[1])  

   {
      if(HIGH_BYTE(packet[ip_ttlproto]) == PROT_ICMP)
         icmp();
      else if(HIGH_BYTE(packet[ip_ttlproto]) == PROT_UDP)
         udp();
      else if(HIGH_BYTE(packet[ip_ttlproto]) == PROT_TCP)
         tcp();
   }
  }
   else
   do_event_housekeeping();
}
//******************************************************************
//*	Perform ARP Response
//*   This routine supplies a requesting computer with the
//*   Ethernet modules's MAC (hardware) address.
//******************************************************************
char arp(void)
{
	unsigned int TxFID,i;
	char rc;

	rc = 0;
	TxFID = get_free_TxFID();
	if(TxFID == 0)
	 rc = 1;
	else
	{ 
	 for(i=0;i<2;++i)
     { 
	  packet[arp_tipaddr+i] = packet[arp_sipaddr+i];
	  packet[arp_sipaddr+i] = ipaddri[i];
	 } 
	 for(i=0;i<3;++i)
     {
	  packet[enetpacketDest+i] = packet[enetpacketSrc+i];
	  packet[arp_thaddr+i] = packet[enetpacketSrc+i];
	  packet[enetpacketSrc+i] = macaddri[i];
	  packet[arp_shaddr+i] = macaddri[i];
	 }
	 packet[arp_op] = 0x0200;	//arp reply
     rc = bap_write(TxFID,rxdatalength_offset,(char*)packet, packet[enetpacketLen11]+16);
	 rc=send_command(TransmitReclaim_Cmd,TxFID);
	 
     do_event_housekeeping();
    } 
   return(rc);
 }
//******************************************************************
//*	Perform ARP Request
//*   This routine uses a known remote IP address to get a remote
//*   Ethernet modules's MAC (hardware) address.
//******************************************************************
char arp_request(void)
{
	unsigned int TxFID,i,bytecount;
	char rc;

	flags.arpflag = 0;
	bytecount = 0x0000;
	rc = 0;
	TxFID = get_free_TxFID();
	if(TxFID == 0)
	 rc = 1;
	else
	{ 
	packet[enetpacketSnap] = 0xAAAA;	//SAP
	packet[enetpacketCntrl] = 0x0003;	//unnumbered frame:UI
	packet[enetpacketCntrl+1] = 0x0000;	//OUI
	packet[enetpacketType] = 0x0608;	//ARP packet type
	packet[arp_hwtype] = 0x0100;		//hardware type = 10Mb Ethernet
	packet[arp_prtype] = 0x0008;		//IP protocol
    packet[arp_hwprlen] = 0x0406; 	 	//hardware addr len (06)/protocol addr len(04)
	packet[arp_op] = 0x0100;			//ARP request
	bytecount += 16;
	for(i=0;i<3;++i)
    {
      packet[enetpacketDest+i] = 0xFFFF;		//target MAC addr
	  packet[enetpacketSrc+i] = macaddri[i];	//sender's MAC addr
	  packet[arp_shaddr+i] = macaddri[i];		//sender's MAC addr
	  packet[arp_thaddr+i] = 0x0000;			//target MAC addr
	 }
	bytecount += 24;
	 for(i=0;i<2;++i)
     { 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕的久久| 春色校园综合激情亚洲| 国产成人精品一区二区三区四区 | 日韩中文字幕亚洲一区二区va在线 | 亚洲在线观看免费视频| 久久99在线观看| 欧美揉bbbbb揉bbbbb| 国产精品另类一区| 精品综合久久久久久8888| 色系网站成人免费| 国产精品久久久久久久久快鸭 | 久久亚洲综合av| 五月天一区二区| 色婷婷亚洲婷婷| 国产精品美女www爽爽爽| 国产一区二区三区免费观看| 日韩午夜电影av| 日韩国产欧美视频| 欧美日韩国产成人在线免费| 亚洲精品免费看| 欧美最新大片在线看| 亚洲精品亚洲人成人网| 99国产精品久久久久久久久久| 久久久电影一区二区三区| 另类成人小视频在线| 欧美一级xxx| 美女久久久精品| 欧美一区二区成人6969| 日本中文字幕一区二区视频 | 91久久国产综合久久| 成人欧美一区二区三区白人| 风间由美一区二区三区在线观看 | 欧美韩日一区二区三区四区| 国产精品18久久久久久久久久久久 | 国产一区二区伦理| 26uuu亚洲综合色| 国产一区二区三区精品视频| 国产欧美中文在线| 成人午夜私人影院| 国产精品家庭影院| 色综合天天综合在线视频| 亚洲精品日日夜夜| 欧美午夜片在线观看| 亚洲午夜一区二区三区| 制服丝袜成人动漫| 精品一区二区三区在线观看国产| 亚洲精品在线三区| 成人高清伦理免费影院在线观看| 综合欧美一区二区三区| 欧美日韩一区二区欧美激情| 青青草伊人久久| 久久综合九色综合欧美亚洲| 成人国产视频在线观看| 一区二区三区在线观看国产| 欧美日韩高清一区二区不卡| 看电影不卡的网站| 亚洲国产电影在线观看| 精品视频一区三区九区| 美女一区二区在线观看| 国产欧美日韩精品在线| 欧洲精品一区二区三区在线观看| 日韩成人午夜精品| 久久久国产精品不卡| 日本韩国精品一区二区在线观看| 午夜激情一区二区| 国产欧美一区二区精品久导航| 91老司机福利 在线| 日本欧美一区二区在线观看| 国产日产欧产精品推荐色| 欧美日韩综合一区| 成人手机在线视频| 日韩国产精品91| 亚洲欧美综合色| 91精品国产入口| 色综合一区二区| 国产精品乡下勾搭老头1| 亚洲bdsm女犯bdsm网站| 国产精品麻豆一区二区| 日韩欧美一级精品久久| 99视频超级精品| 国产乱码精品一区二区三| 一区二区三区国产豹纹内裤在线| 久久久午夜电影| 欧美精品欧美精品系列| 一本大道av伊人久久综合| 九九**精品视频免费播放| 亚洲在线免费播放| 国产精品理伦片| 久久精品一区二区三区不卡牛牛| 欧美日韩在线播放一区| 99视频在线观看一区三区| 国产精品综合在线视频| 日本视频一区二区三区| 亚洲高清视频在线| 亚洲理论在线观看| 亚洲在线观看免费| 久久网站热最新地址| 91精品国产综合久久香蕉麻豆 | 成人午夜视频在线| 国产精品综合在线视频| 久久激情五月激情| 日韩精品一区第一页| 亚洲香肠在线观看| 亚洲女同一区二区| 最新中文字幕一区二区三区| 日本一区二区成人| 亚洲国产精品高清| 久久人人97超碰com| 欧美精品一区二区三| 欧美一级片免费看| 欧美一级xxx| 日韩欧美色电影| 日韩欧美一级片| 欧美精品一区在线观看| 久久伊人蜜桃av一区二区| 欧美电影精品一区二区| 精品国产免费人成在线观看| 欧美一卡二卡三卡| 欧美大片在线观看一区二区| 日韩欧美激情四射| 日韩欧美一区二区免费| 久久综合久久久久88| 欧美国产禁国产网站cc| 中文成人综合网| 亚洲欧美韩国综合色| 亚洲超碰精品一区二区| 天堂一区二区在线| 久久精品国产一区二区| 国产成人在线视频免费播放| 成人的网站免费观看| 色偷偷成人一区二区三区91| 欧美日韩国产免费一区二区| 日韩精品自拍偷拍| 久久久91精品国产一区二区三区| 国产日韩精品一区二区三区| 亚洲图片另类小说| 亚洲国产人成综合网站| 日本不卡视频在线观看| 韩国视频一区二区| av一区二区三区| 欧美自拍丝袜亚洲| 日韩精品一区二区三区在线| 国产精品伦一区| 天天av天天翘天天综合网| 韩日精品视频一区| 91网站在线播放| 制服丝袜亚洲色图| 国产精品高潮呻吟| 日韩电影一区二区三区| 成人污视频在线观看| 欧美日韩一区国产| 国产亚洲精品超碰| 亚洲电影第三页| 成人自拍视频在线| 欧美卡1卡2卡| 国产精品国产三级国产aⅴ无密码| 一区av在线播放| 国产精品99久久久久久宅男| 色婷婷综合久久| 久久久精品黄色| 日韩精品电影一区亚洲| av一区二区三区在线| 日韩欧美精品在线| 亚洲一线二线三线久久久| 国产精品原创巨作av| 欧美日韩一二三区| 国产精品二三区| 久久91精品久久久久久秒播| 日本韩国欧美一区二区三区| 日本一区二区三区四区在线视频 | 一区二区三区在线观看国产| 国产一区二区三区在线观看精品| 欧美三区在线观看| 亚洲欧美在线aaa| 国产一区在线看| 日韩一级片在线观看| 亚洲精品老司机| 成人av影视在线观看| 精品美女在线观看| 日本欧美在线观看| 欧美日韩国产综合久久| 欧美日韩综合在线免费观看| 亚洲夂夂婷婷色拍ww47| 亚洲三级小视频| 99re热这里只有精品免费视频| 欧美视频一区在线| 欧美日韩精品一二三区| 久久国产尿小便嘘嘘尿| av激情亚洲男人天堂| 欧美国产日韩一二三区| 国产精品一级片| 久久综合给合久久狠狠狠97色69| 日韩精品乱码av一区二区| 欧美日韩国产首页| 亚洲第一综合色| 在线播放中文一区| 日日摸夜夜添夜夜添亚洲女人| 欧美日韩精品免费观看视频| 午夜在线电影亚洲一区| 欧美喷潮久久久xxxxx|