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

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

?? w3100a.c

?? hew編譯環境
?? C
?? 第 1 頁 / 共 5 頁
字號:
		if(ssum < 8192)
		{
			switch((sbufsize >> i*2) & 0x03) // Set maximum Tx memory size
			{
			case 0:
				SSIZE[i] = 1024;
				SMASK[i] = 0x000003FF;
				break;
			case 1:
				SSIZE[i] = 2048;
				SMASK[i] = 0x000007FF;
				break;
			case 2:
				SSIZE[i] = 4096;
				SMASK[i] = 0x00000FFF;
				break;
			case 3:
				SSIZE[i] = 8192;
				SMASK[i] = 0x00001FFF;
				break;
			}
		}
		if( rsum < 8192)
		{
			switch((rbufsize>> i*2) & 0x03)  // Set maximum Rx memory size
			{
			case 0:
				RSIZE[i] = 1024;
				RMASK[i] = 0x000003FF;
				break;
			case 1:
				RSIZE[i] = 2048;
				RMASK[i] = 0x000007FF;
				break;
			case 2:
				RSIZE[i] = 4096;
				RMASK[i] = 0x00000FFF;
				break;
			case 3:
				RSIZE[i] = 8192;
				RMASK[i] = 0x00001FFF;
				break;
			}
		}
		ssum += SSIZE[i];
		rsum += RSIZE[i];

		if(i != 0)                               // Set base address of Tx and Rx memory for channel #1,#2,#3
		{
			SBUFBASEADDRESS[i] = SBUFBASEADDRESS[i-1] + SSIZE[i-1];
			RBUFBASEADDRESS[i] = RBUFBASEADDRESS[i-1] + RSIZE[i-1];
		}
#ifdef DEBUG
		PutHTOA(i); PutString("      :    0x");PutITOA(SSIZE[i]); PutString("     :    0x");PutITOA(RSIZE[i]);PutStringLn("");
#endif
	}
	I_STATUS[0] = 0;
	PF.DR.BIT.B0 = 0x00;		//Red LED on;       add by brucelyang 2005.8.30
	COMMAND(0) = CSYS_INIT;
	//while(!(I_STATUS[0] & SSYS_INIT_OK));
	//add by brucelyang 2005.8.18
	while(!(I_STATUS[0] & SSYS_INIT_OK))
	{
//		m ++;
		WATCH_DOG;
	}
	PF.DR.BIT.B0 = 0x01;		//Red LED off;       add by brucelyang 2005.8.30
	///////////end of brucelyang//////
}

/*
********************************************************************************
*               Initialization function to appropriate channel
*
* Description : Initialize designated channel and wait until W3100 has done.
* Arguments   : s - channel number
*               protocol - designate protocol for channel
*                          SOCK_STREAM(0x01) -> TCP.
*                          SOCK_DGRAM(0x02)  -> UDP.
*                          SOCK_IPL_RAW(0x03) -> IP LAYER RAW.
*                          SOCK_MACL_RAW(0x04) -> MAC LAYER RAW.
*               port     - designate source port for appropriate channel
*               flag     - designate option to be used in appropriate.
*                          SOCKOPT_BROADCAST(0x80) -> Send/receive broadcast message in UDP
*                          SOCKOPT_NDTIMEOUT(0x40) -> Use register value which designated TIMEOUT value
*                          SOCKOPT_NDACK(0x20)     -> When not using no delayed ack
*                          SOCKOPT_SWS(0x10)       -> When not using silly window syndrome
* Returns     : When succeeded : Channel number, failed :1
* Note        : API Function
********************************************************************************
*/
char socket(SOCKET s, unsigned char protocol, unsigned int port, unsigned char flag)
{
	unsigned char k;

	OPT_PROTOCOL(s) = protocol | flag;                // Designate socket protocol and option

	if (port != 0)                                    // setup designated port number
	 {
		k = (unsigned char)((port & 0xff00) >> 8);
		*(SRC_PORT_PTR(s)) = k;
		k = (unsigned char)(port & 0x00ff);
		*(SRC_PORT_PTR(s) + 1) = k;
	} 
	else                                              // Designate random port number which is managed by local when you didn't designate source port
	{
		Local_Port++;					
		*SRC_PORT_PTR(s) = (unsigned char)((Local_Port & 0xff00) >> 8);
		*(SRC_PORT_PTR(s) + 1) = (unsigned char)(Local_Port & 0x00ff);
	}

	I_STATUS[s] = 0;
	COMMAND(s) = CSOCK_INIT;                          // SOCK_INIT
	while (I_STATUS[s] == 0);                         // Waiting Interrupt to CSOCK_INIT

	if (!(I_STATUS[s] & SSOCK_INIT_OK)) return (-1);  // Error
	
	initseqnum(s);                                    // Use initial seq# with random number

	return	(s);
}

/*
********************************************************************************
*              Waits for connection request from a peer (Non-blocking Mode)
*
* Description : Wait for connection request from a peer through designated channel (TCP Server mode)
* Arguments   : s - channel number
* Returns     : None
* Note        : API Function
********************************************************************************
*/
void NBlisten(SOCKET s)
{
	I_STATUS[s] = 0;
	COMMAND(s) = CLISTEN;         // LISTEN
}

/*
********************************************************************************
*               Create random value for initial Seq# when establishing TCP connection
*
* Description : In this function, you can add some source codes to create random number for initial Seq#
*     In real, TCP initial SEQ# should be random value. 
*               (Currently, we're using static value in EVB/DK.)
* Arguments   : s - channel number
* Returns     : None
* Note        : API Function
********************************************************************************
*/
static void initseqnum(SOCKET s)
{
	int i;

	i = s;

	SEQ_NUM.lVal++;     // Designate initial seq#
                            // If you have random number generation function, assign random number instead of SEQ_NUM.lVal++.

	*TX_WR_PTR(s)	    = SEQ_NUM.cVal[0];
	*(TX_WR_PTR(s) + 1) = SEQ_NUM.cVal[1];
	*(TX_WR_PTR(s) + 2) = SEQ_NUM.cVal[2];
	*(TX_WR_PTR(s) + 3) = SEQ_NUM.cVal[3];
	wait_1us(2);	    // Wait until TX_WR_PRT has been written safely. ( Must have delay(1.6us) if next action is to write 4byte-pointer register )

	*TX_RD_PTR(s)	    = SEQ_NUM.cVal[0];
	*(TX_RD_PTR(s) + 1) = SEQ_NUM.cVal[1];
	*(TX_RD_PTR(s) + 2) = SEQ_NUM.cVal[2];
	*(TX_RD_PTR(s) + 3) = SEQ_NUM.cVal[3];
	wait_1us(2);	    // Wait until TX_RD_PRT has been written safely.

	*TX_ACK_PTR(s)	     = SEQ_NUM.cVal[0];
	*(TX_ACK_PTR(s) + 1) = SEQ_NUM.cVal[1];
	*(TX_ACK_PTR(s) + 2) = SEQ_NUM.cVal[2];
	*(TX_ACK_PTR(s) + 3) = SEQ_NUM.cVal[3];
}

static void wait_1us(int cnt)
{
	int i;
	
	for(i=0;i<cnt;i++)
	{
	}
}

static void ISR_ESTABLISHED(SOCKET s)
{
	unsigned char dest_ip[4];
	int i;
	unsigned char flag;
	char tmp[100];
	unsigned short dst_port;

	
	flag = 0;
	//sci0_print("I'm in ISR_ESTABLISHED,socket is ");
	//sci0_reg_print((unsigned long)s);
	//sci0_print("\r\n");
	switch(s)
	{
	case TCP_SERVER_CHANNEL:
		//(tt_page1.Tdtr == 'H') and DSR BUSY
		if((wait_connect_flag == 1) || (Prog_Mode == 1)||(ethernet_status & UDP_CHANNEL_ON)
			||(ethernet_status & TCP_CLIENT_CHANNEL_ON)
			||(((tt_page1.Tdtr == 'H') || (tt_page1.Tdtr == 'h'))&&(PG.PORT.BIT.B0 == 1)))
		{
			//sci0_print("DTR=H and DSR=BUSY,close TCP\r\n");
			close(TCP_SERVER_CHANNEL);
			return;
		}
			Ch_connect = ETH_TCP_ON;
			ethernet_status = ethernet_status | TCP_SERVER_CHANNEL_ON;
			//點亮綠燈 ,add by wqf 2005.06.03
			PF.DR.BIT.B0 = 0x01;
			PF.DR.BIT.B1 = 0x00;

			//add by wqf 2005.5.25,當有網絡連接時,輸出DTR有效通知終終端
			if((tt_page1.Tdtr == 'S') ||(tt_page1.Tdtr == 's'))
			{
				P7.DR.BIT.B6 = 0;
			}
			if((tt_page1.Rmsg == 'E') || (tt_page1.Rmsg == 'e') )
			{
				//取得對方IP地址并顯示,add by wqf 2005.6.6
				dest_ip[0] = *DST_IP_PTR(s);
				dest_ip[1] = *(DST_IP_PTR(s)+1);
				dest_ip[2] = *(DST_IP_PTR(s)+2);
				dest_ip[3] = *(DST_IP_PTR(s)+3);
				dst_port = ((*(DST_PORT_PTR(s)+1))&0xFF) | (*DST_PORT_PTR(s) <<8);
				for(i=0;i<MAX_DST_TBL;i++)
				{
					if((memcmp(tt_page3.Youip[i],dest_ip,4) != 0) || (tt_page3.Youport[i] != dst_port))
					{
						continue;
					}
					else 
					{
						break;
					}
				}
				if(i < MAX_DST_TBL)
				{
					sprintf(tmp,"ESTABLISHED%02d\r\n",i+1);
					Sel_prtmsg(0,tmp);
				}
				if(i == MAX_DST_TBL)
				{
					sprintf(tmp,"ESTABLISHED %d.%d.%d.%d:%d\r\n",dest_ip[0],dest_ip[1],dest_ip[2],dest_ip[3],dst_port);
			        Sel_prtmsg(0,tmp);
				}
			}
			//開始計算沒有通信的空閑時間 add by wqf 2005.05.31
			if(tt_page2.Keeptim !=0)
			{
				wtm_flag = 1;
			}
		//}
		//else
		//{
		//	close(TCP_SERVER_CHANNEL);
		//	Ch_connect = ETH_OFF;
		//	return;
		//}
		break;
	case TCP_CLIENT_CHANNEL:
		//sci0_print("in ISR_ES,TCP_CLIENT_CHANNEL\r\n");
		break;
	case UDP_CHANNEL:
		break;
	case TELNET_SERVER_CHANNEL:
		//if(prog_mode == 1) close(TELNET_SERVER_CHANNEL);
		//else progcmd(99); ---->telnet_ch==99
		telnet_init();
		break;
	default:
		break;
	}
}

static void ISR_CLOSED(SOCKET s)
{
	unsigned int val;
	//sci0_print("I'm in ISR_CLOSED,socket is ");
	sci0_print("I'm in ISR_CLOSED\r\n");
	val = SOCK_STATUS(s);
	sci0_reg_print((unsigned long)val);
	sci0_print("\r\n");

	switch(s)
	{
	case TCP_SERVER_CHANNEL:
		//sci0_print("Server\r\n");
		//passive close
		if(SOCK_STATUS(TCP_SERVER_CHANNEL) == SOCK_CLOSE_WAIT)
		{
			//sci0_print("passive close\r\n");
			close(TCP_SERVER_CHANNEL);

		}
		//如果是從通信狀態斷開的TCP server(還有從listen態斷開的)
		if((Ch_connect == ETH_TCP_ON) && (ethernet_status & TCP_SERVER_CHANNEL_ON))
		{
			ethernet_status = ethernet_status & ~TCP_SERVER_CHANNEL_ON;
			Ch_connect = ETH_OFF;
			//熄滅LED,add by wqf 2005.06.03
			PF.DR.BIT.B0 = 0x01;
			PF.DR.BIT.B1 = 0x01;
			//打印提示信息,add by wqf 2005.6.7
			Sel_prtmsg(0,"CLOSE COMPLETED\r\n");
			//if((PRGPAGE.progmode != 4) ||(PRGPAGE.progmode != 3))Sel_prtmsg(0,"CLOSE COMPLETED\r\n");
			//清除wtm的計時標志以及計數器 add by wqf 2005.05.31
			wtm_flag =0;
			wtm_time = 0;

			//add by wqf 2005.5.25,當網絡連接斷開時,輸出DTR無效通知終終端
			if((tt_page1.Tdtr == 'S') ||(tt_page1.Tdtr == 's'))
			{
				P7.DR.BIT.B6 = 1;
			}
		}
		break;
 	case TCP_CLIENT_CHANNEL:
		//sci0_print("Client\r\n");
		//2005.4.29 add by wqf
		//passive close
		if(SOCK_STATUS(TCP_CLIENT_CHANNEL) == SOCK_CLOSE_WAIT)
		{
			close(TCP_CLIENT_CHANNEL);
		}
		//如果是從通信狀態斷開的TCP server(還有從listen態斷開的)
		if((Ch_connect == ETH_TCP_ON) && (ethernet_status & TCP_CLIENT_CHANNEL_ON))
		{
			ethernet_status = ethernet_status & ~TCP_CLIENT_CHANNEL_ON;
			Ch_connect = ETH_OFF;
			//打印提示信息,add by wqf 2005.6.6
			Sel_prtmsg(0,"CLOSE COMPLETED\r\n");
			//if((PRGPAGE.progmode != 4) ||(PRGPAGE.progmode != 3))Sel_prtmsg(0,"CLOSE COMPLETED\r\n");
			//清除wtm的計時標志以及計數器 add by wqf 2005.05.31
			wtm_flag =0;
			wtm_time = 0;

			//熄滅LED,add by wqf 2005.06.03
			PF.DR.BIT.B0 = 0x01;
			PF.DR.BIT.B1 = 0x01;
			//add by wqf 2005.5.25,當網絡連接斷開時,輸出DTR無效通知終終端
			if((tt_page1.Tdtr == 'S') ||(tt_page1.Tdtr == 's'))
			{
				P7.DR.BIT.B6 = 1;
			}
		}
		//pw設定時,如果已建立的連接斷開時,重新連接的處理 add by wqf 2005.05.27
		if((pw_connect ==1 )&& (tt_page2.Dcct !=0))
		{
			pw_connect =2;
		}
		break;
	case UDP_CHANNEL:
		break;
	case TELNET_SERVER_CHANNEL:
		if(SOCK_STATUS(TELNET_SERVER_CHANNEL) == SOCK_CLOSE_WAIT)
		{
			telnet_close();
		}
		break;
	default:
		break;
	}
	return;
}

static void ISR_TIMEOUT(SOCKET s)
{
	unsigned int val;
	sci0_print("I'm in ISR_TIMEOUT\r\n");
	val = SOCK_STATUS(s);
	//sci0_print("I'm in ISR_TIMEOUT,socket is ");
	sci0_reg_print((unsigned long)val);
	sci0_print("\r\n");
}

static void ISR_SEND_OK(SOCKET s)
{
	//sci0_print("I'm in ISR_SEND_OK,socket is ");
	//sci0_reg_print((unsigned long)s);
	//sci0_print("\r\n");
}

static void ISR_RECV_OK(SOCKET s)
{
	//sci0_print("I'm in ISR_RECV_OK,socket is ");
	//sci0_reg_print((unsigned long)s);
	//sci0_print("\r\n");
}

static void ISR_RX(SOCKET s)
{
	struct _UDPHeader UDPHeader;
	un_l2cval wr_ptr, rd_ptr;
	unsigned char k;
	unsigned long size,receive_size;
	unsigned int i,size1,size2;	
	unsigned char * dst,*dst1,*recv_ptr;
	unsigned char ip_addr[4];
	unsigned short udp_port;
	char tmp[100];
	char *data_tmp;

	//sci0_print("~");
	//sci0_print("I'm in ISR_RX,socket is ");
	//sci0_reg_print((unsigned long)s);
	//sci0_print("\r\n");
	switch(s)
	{
	case TCP_SERVER_CHANNEL:	
	case TCP_CLIENT_CHANNEL:
		
		//sci0_reg_print((unsigned long)SOCK_STATUS(s));
		//add the flow control --- add by brucelyang 2005.8.2
		if(sendpause_flag == 1) return;

		set_imask_ccr(1);
		k = *SHADOW_RXWR_PTR(s);   	// Must read the shadow register for reading 4byte pointer registers
		wait_1us(2);                    // wait for reading 4byte pointer registers safely
		wr_ptr.cVal[0] = *RX_WR_PTR(s);
		wr_ptr.cVal[1] = *(RX_WR_PTR(s) + 1);
		wr_ptr.cVal[2] = *(RX_WR_PTR(s) + 2);
		wr_ptr.cVal[3] = *(RX_WR_PTR(s) + 3);

		k = *SHADOW_RXRD_PTR(s);        // Must read the shadow register for reading 4byte pointer registers
		wait_1us(2);                    // wait for reading 4byte pointer registers safely
		rd_ptr.cVal[0] = *RX_RD_PTR(s);
		rd_ptr.cVal[1] = *(RX_RD_PTR(s) + 1);
		rd_ptr.cVal[2] = *(RX_RD_PTR(s) + 2);
		rd_ptr.cVal[3] = *(RX_RD_PTR(s) + 3);
		set_imask_ccr(0);

		// calculate received data size
		if (wr_ptr.lVal >= rd_ptr.lVal) size = wr_ptr.lVal - rd_ptr.lVal;
		else size = 0 - rd_ptr.lVal + wr_ptr.lVal;
		

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av色综合久久天堂av综合| 亚洲成av人影院| 精品国产一二三区| 91精品欧美久久久久久动漫 | 国产成人精品三级| 麻豆国产精品官网| 蜜桃视频免费观看一区| 久久疯狂做爰流白浆xx| 精品一区中文字幕| 国产成人福利片| 99久久免费国产| 欧美系列在线观看| 欧美日韩激情一区二区三区| 91精品国产综合久久久久久久| 日韩一区二区免费高清| 久久久91精品国产一区二区精品| 久久综合给合久久狠狠狠97色69| 国产亚洲成aⅴ人片在线观看| 国产精品久久久久久一区二区三区 | 国产一区日韩二区欧美三区| 国产乱码一区二区三区| 成人黄色国产精品网站大全在线免费观看 | 欧美一区二区免费观在线| 欧美成人猛片aaaaaaa| 中文字幕久久午夜不卡| 亚洲综合色噜噜狠狠| 久久精品国产网站| 99久久久精品| 欧美videofree性高清杂交| 国产精品区一区二区三| 午夜视频一区在线观看| 国产精品香蕉一区二区三区| 91国模大尺度私拍在线视频| 日韩三级免费观看| 亚洲手机成人高清视频| 人人狠狠综合久久亚洲| 成人av免费在线| 7777精品伊人久久久大香线蕉超级流畅 | 国产精品99精品久久免费| 91福利国产成人精品照片| 精品少妇一区二区三区| 一区二区视频免费在线观看| 精品一区二区三区久久| 欧美性生交片4| 久久久久久久久久久久久女国产乱| 亚洲激情自拍视频| 国产精品综合久久| 欧美精品一卡二卡| ...xxx性欧美| 国产精品18久久久| 日韩欧美国产一区二区在线播放| 中文字幕一区二区三区四区 | 色婷婷精品大在线视频| 精品久久久影院| 偷窥国产亚洲免费视频| av在线不卡网| 国产欧美视频在线观看| 青草国产精品久久久久久| 日本丶国产丶欧美色综合| 中文无字幕一区二区三区 | 亚洲电影在线播放| 国产69精品久久777的优势| 日韩欧美中文字幕公布| 亚洲成年人网站在线观看| 99精品黄色片免费大全| 久久综合久久99| 久久er99精品| 日韩丝袜美女视频| 亚洲综合一区在线| 不卡一区二区中文字幕| 久久久久久99精品| 热久久一区二区| 欧美日韩在线电影| 亚洲另类中文字| 97成人超碰视| 久久亚洲综合色| 久久99精品国产.久久久久久| 欧美精品乱人伦久久久久久| 亚洲男人的天堂av| 99国产精品视频免费观看| 亚洲国产精品高清| 精品在线免费视频| 日韩欧美123| 日韩激情视频网站| 欧美伦理影视网| 日日夜夜一区二区| 欧美精品18+| 亚洲国产美国国产综合一区二区| 色老综合老女人久久久| 国产人久久人人人人爽| 国产精品99久久久久久有的能看| 久久免费国产精品| 国产精品综合久久| 国产网红主播福利一区二区| 国产精品66部| 久久一区二区视频| 国产精品一色哟哟哟| 中文一区二区完整视频在线观看| 成人国产电影网| 亚洲丝袜精品丝袜在线| 日本高清不卡aⅴ免费网站| 亚洲欧美乱综合| 欧美三级乱人伦电影| 亚洲一区av在线| 91精品国产福利在线观看 | eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 91精品视频网| 国产不卡视频在线观看| 国产精品久久久久久久久免费丝袜 | 《视频一区视频二区| 欧美色涩在线第一页| 亚洲一区二区偷拍精品| 精品免费国产二区三区 | 91超碰这里只有精品国产| 国产曰批免费观看久久久| 亚洲日本韩国一区| 欧美伦理影视网| 丁香婷婷综合激情五月色| 香蕉久久夜色精品国产使用方法| 精品对白一区国产伦| 91美女视频网站| 久久99国产精品久久| 亚洲欧美偷拍三级| 精品久久人人做人人爽| 欧美色综合影院| 国产成人高清在线| 蜜臀久久久久久久| 亚洲女厕所小便bbb| 精品国产自在久精品国产| 色综合天天综合色综合av| 久久成人综合网| 亚洲第一综合色| 国产精品福利在线播放| 日韩免费观看高清完整版| 在线精品亚洲一区二区不卡| 国产精品一区二区免费不卡| 午夜精品久久久久久久久久| 综合色天天鬼久久鬼色| 久久久久97国产精华液好用吗| 欧美天堂亚洲电影院在线播放| 国产成人免费av在线| 国产一区在线观看视频| 日韩国产欧美三级| 亚洲永久精品大片| 亚洲精品久久嫩草网站秘色| 欧美激情一区二区三区全黄 | 一区二区三区四区视频精品免费| 国产拍揄自揄精品视频麻豆| 精品福利av导航| 精品国产一区a| 日韩欧美一区在线观看| 欧美日韩在线三区| 欧美这里有精品| 色婷婷综合久久久久中文| 99精品欧美一区二区三区小说 | av激情综合网| 99久久国产综合精品女不卡| 岛国精品一区二区| eeuss鲁片一区二区三区 | 日韩欧美国产综合| 日韩亚洲欧美综合| 欧美不卡视频一区| 精品久久久久久无| 精品久久久久久久一区二区蜜臀| 欧美一区二区啪啪| 亚洲精品一区二区三区蜜桃下载| 337p粉嫩大胆色噜噜噜噜亚洲| 欧美精品一区二区高清在线观看| 精品成人佐山爱一区二区| 精品国产伦一区二区三区观看方式| 欧美变态tickle挠乳网站| 久久久噜噜噜久噜久久综合| 欧美激情一区不卡| **网站欧美大片在线观看| 一区二区三区日韩欧美精品| 日欧美一区二区| 激情五月播播久久久精品| 国产精品一级在线| 成人免费视频国产在线观看| 99国产精品国产精品毛片| 色8久久人人97超碰香蕉987| 欧美久久久久久蜜桃| 久久亚洲欧美国产精品乐播 | 日本一区二区电影| 一区二区三区免费看视频| 日韩成人伦理电影在线观看| 国模娜娜一区二区三区| av电影在线观看一区| 欧美女孩性生活视频| 精品国产免费一区二区三区香蕉| 国产精品久久久久一区二区三区共 | 日韩视频一区二区在线观看| 久久亚区不卡日本| 伊人色综合久久天天| 久久精品国产99国产| 99国内精品久久| 日韩一级精品视频在线观看| 国产精品护士白丝一区av| 日日夜夜精品视频免费| 成人av网址在线|