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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? w3100a.c

?? hew編譯環(huán)境
?? C
?? 第 1 頁 / 共 5 頁
字號:
{
	INTC.ISR.BIT.IRQ1F=0; //清空標志位
	INTC.IER.BIT.IRQ1E = 0x00;  // disable Interrupt IRQ1	

	if(virtual_com == 1)
	{
	
		if(P1.PORT.BIT.B6 == 0)
		{
			
			VtulCom_PreComConfig.THIRDBYTE.BIT.CTS = 0x01;  //CTS有效
		}
		else
		{
			VtulCom_PreComConfig.THIRDBYTE.BIT.CTS = 0x00;  //CTS無效
		}

		tcp_write(VTL_TCP_CONTROL_CHANNEL,(unsigned char *)&VtulCom_PreComConfig,5);
		INTC.IER.BIT.IRQ1E = 0x01;	// Eable Interrupt IRQ1	
		//set_imask_ccr(0);
		return;

	}

	INTC.IER.BIT.IRQ1E = 0x01;  // Eable Interrupt IRQ1	
	return;

}


//先讀一下CD狀態(tài),以判斷上、下跳變?
void irq7_DCD(void)
{
	INTC.ISR.BYTE = INTC.ISR.BYTE & ~0x80;
	INTC.IER.BIT.IRQ7E = 0x00;
	//if cd==mm,and the mm is connect,then cut the connect
	//sci0_print("irq7,DCD and CTS interrupt\r\n");
	///////////////////for virtual comm//////////////////////////
	///////////////////add by brucelyang 2005.7.12///////////////
	if(virtual_com == 1)
	{
		//DCD和CTS狀態(tài)線變化
		if(PG.PORT.BIT.B1 == 0)
		{
			VtulCom_PreComConfig.THIRDBYTE.BIT.CD = 0x01;  //CD有效
			//VtulCom_PreComConfig.THIRDBYTE.BIT.CTS = 0x01;  //CTS有效
		}
		else
		{
			VtulCom_PreComConfig.THIRDBYTE.BIT.CD = 0x00;	//CD無效
			//VtulCom_PreComConfig.THIRDBYTE.BIT.CTS = 0x00;  //CTS無效
		}
		tcp_write(VTL_TCP_CONTROL_CHANNEL,(unsigned char *)&VtulCom_PreComConfig,5);
		INTC.IER.BIT.IRQ7E = 0x01;
		//set_imask_ccr(0);
		return;
	}

	if(((tt_page1.Tcd > 0) && (tt_page1.Tcd < 11))&&(PG.PORT.BIT.B1 == 1)&&(ethernet_status & TCP_CLIENT_CHANNEL_ON))
	{
		//sci0_print("CD=nn and CD is busy,close TCP\r\n");
		close(TCP_CLIENT_CHANNEL);
		ethernet_status &=  ~TCP_CLIENT_CHANNEL_ON;
		Ch_connect =ETH_OFF;

		//add by wqf 2005.6.8
		Sel_prtmsg(0,"TIME WAIT\r\n");
		//下一次允許連接計時開始 add by wqf 2005.05.30
		wait_flag = 1;
		wait_connect_flag = 1;
		//清除wtm的計時標志以及計數(shù)器 add by wqf 2005.05.31
		wtm_flag =0;
		wtm_time = 0;
		//end of add by wqf

		//熄滅LED,add by wqf 2005.06.03
		PF.DR.BIT.B0 = 0x01;
		PF.DR.BIT.B1 = 0x01;
	}
	//CD輸入為有效時,與指定的IP建立TCP連接,add by wqf 2005.6.7
	if((tt_page1.Tcd > 0) && (tt_page1.Tcd < 11)&&(PG.PORT.BIT.B1 == 0)&& (Ch_connect == ETH_OFF) &&(Prog_Mode == 0))
	{
		//sci0_print("CD is ready,TCP handle\r\n");
		if(cd_ready_flag == 0)
		{
			//sci0_print("1st time CD is ready\r\n");
			cd_ready_flag = 1;
			//return;
		}
		else
		{
			//sci0_print("in else CD\r\n");
			cd_connect_flag = 1;	
		}
	}
	INTC.IER.BIT.IRQ7E = 0x01;
}

/*
********************************************************************************
*               Copies the system buffer data to the transmit buffer of the W3100A.
*
* Description : Copies the system buffer data to the transmit buffer of the W3100A.
*               It is called from the send_in()or sendto_in() function.
* Arguments   : s   - channel number
*               src - system buffer pointer
*               dst - send buffer pointer of W3100A
*               len - data size to copy
* Returns     : copied data size
* Note        : Internal Function
********************************************************************************
*/
static unsigned int write_data(SOCKET s, unsigned char *src, unsigned char *dst, int len)
{
	unsigned int i, size, size1;

	if (len == 0) return 0;

	if ( (((unsigned int)dst & SMASK[s]) + len) > SSIZE[s] ) 
	{
		size = SSIZE[s] - ((unsigned int)dst & SMASK[s]);

		for (i = 0; i < size; i++) *dst++ = *src++;
		size1 = len - size;
		dst = (SBUFBASEADDRESS[s]);
		for (i = 0; i < size1; i++) *dst++ = *src++;
	} 
	else
		for (i = 0; i < len; i++) *dst++ = *src++;

	return len;
}

void often_tsk(void)
{

	if(SOCK_STATUS(TCP_SERVER_CHANNEL) == SOCK_CLOSED)
	{
		socket(TCP_SERVER_CHANNEL,SOCK_STREAM,tt_page2.Tsport,0);
		NBlisten(TCP_SERVER_CHANNEL);		
	}
	//sci0_reg_print((unsigned long )SOCK_STATUS(TELNET_SERVER_CHANNEL));
	if ((telnet_close_flag == 0) && (SOCK_STATUS(TELNET_SERVER_CHANNEL) == SOCK_CLOSED))
	{
		//sci0_print("telnet socket task ofter\r\n");
		socket(TELNET_SERVER_CHANNEL, SOCK_STREAM,23,0);
		//sci0_print("telnet listen task ofter\r\n");
		NBlisten(TELNET_SERVER_CHANNEL);		
	}
	if ((telnet_close_flag == 1) && (SOCK_STATUS(TELNET_SERVER_CHANNEL) != SOCK_CLOSED))
	{
				//sci0_print("closing telnet channel\r\n");
				close(TELNET_SERVER_CHANNEL);

	}
	else if ((telnet_close_flag == 1) && (SOCK_STATUS(TELNET_SERVER_CHANNEL) == SOCK_CLOSED))
	{
		telnet_close_flag = 0;
		
			//DTR有效時,與指定IP建立TCP連接 add by wqf 2005.6.8
			if(dtr_connect_flag == 1)
			{
				sprintf(dtr_cmd,"OPEN%d",tt_page1.Tdtr);
				dtr_argv[0]= dtr_cmd;
				opencmd(1,dtr_argv,0);
				dtr_connect_flag = 0;
				//sci0_print("I'm return dtr\r\n");
			}
			//CD有效時,與指定IP建立TCP連接 add by wqf 2005.6.8
			if(cd_connect_flag == 1)
			{
				//sci0_print("in cd_connect_flag=1\r\n");
				sprintf(cd_cmd,"OPEN%d",tt_page1.Tcd);
				cd_argv[0]= cd_cmd;
				//sci0_print("before opencmd\r\n");
				opencmd(1,cd_argv,0);
				cd_connect_flag = 0;
				//sci0_print("I'm return cd\r\n");
			}
	if(KWT_flag == 1)
	{
		//sci0_print("I'll quit\r\n");
		quitcmd(1,"QUIT",0);
		KWT_flag = 0;
	}
	//add for flow control --- add by brucelyang 2005.8.3
	if(sendpause_flag == 2)
	{
		if(Ch_connect == ETH_TCP_ON)		//just for tcp --- add by brucelyang 2005.8.3
		{
			if(ethernet_status & TCP_SERVER_CHANNEL_ON)
			{
				INTC.IER.BIT.IRQ0E = 0x00;
				ISR_RX(0);
				INTC.IER.BIT.IRQ0E = 0x01;
			}
			else
			{
				INTC.IER.BIT.IRQ0E = 0x00;
				ISR_RX(1);
				INTC.IER.BIT.IRQ0E = 0x01;
			}
		}
		sendpause_flag = 0;
	}
}

/*
********************************************************************************
*               Connection establishing function to designated peer.
*
* Description : This function establish a connection to the peer by designated channel,
*     and wait until the connection is established successfully. (TCP client mode)
* Arguments   : s    - channel number
*               addr - destination IP Address
*               port - destination Port Number
* Returns     : when succeeded : 1, failed : -1
* Note        : API Function
********************************************************************************
*/
char connect(SOCKET s, unsigned char * addr, unsigned short port)
{
	if (port != 0) 
	{                                                           // designate destination port
		*DST_PORT_PTR(s) = (unsigned char)((port & 0xff00) >> 8);
		*(DST_PORT_PTR(s) + 1) = (unsigned char)(port & 0x00ff);
	}
	else    return (-1);
			
	*DST_IP_PTR(s) = addr[0];                                   // designate destination IP address
	*(DST_IP_PTR(s) + 1) = addr[1];
	*(DST_IP_PTR(s) + 2) = addr[2];        
	*(DST_IP_PTR(s) + 3) = addr[3];
	
	I_STATUS[s] = 0;

	COMMAND(s) = CCONNECT;                                      // CONNECT
	
//	Connecting_flag = 1;
	while (I_STATUS[s] == 0)
	{                                   // Wait until connection is established successfully
		if (select(s, SEL_CONTROL) == SOCK_CLOSED) 
		{
			return -1;
		}
		sci0_read();
		WATCH_DOG;
		if (telnet_read_flag == 1)
		{
			telnet_read();
		}
		often_tsk();
		//設定pw時,如果已經(jīng)建立的連接斷開時,重試連接的處理
		if(pw_connect==2)
		{
			disconnect_retry();	
		}
	} // When failed, appropriate channel will be closed and return an error
//	Connecting_flag = 0; 
	//if (!(I_STATUS[s] & SESTABLISHED)) return (-1);             // Error
    //return	(1);
	if(I_STATUS[s] & SESTABLISHED) return 1;
	else if(I_STATUS[s] & STIMEOUT) return (-1);
	else return (-2);
}


////////////////////////////////////////for Virtual Comm///////////////

///////////////////////////////////////////////////////////////////////

static void VTUL_ESTABLISHED(SOCKET s)
{
	unsigned char dest_ip[4];
	unsigned char flag;
	int i;
	struct _VtulComControlHeader VtulCom_control;

//	sci0_print("I'm in VTUL_ESTABLISHED,socket is ");
//	sci0_reg_print((unsigned long)s);
//	sci0_print("\r\n");

	flag = 0;
	switch(s)
	{
	case VTL_TCP_DATA_CHANNEL:
		Ch_connect = ETH_TCP_ON;
		ethernet_status = ethernet_status | TCP_SERVER_CHANNEL_ON;
		//LED為綠色,add by brucelyang 2005.07.14
		PF.DR.BIT.B0 = 0x01;
		PF.DR.BIT.B1 = 0x00;
		break;
	case VTL_TCP_CONTROL_CHANNEL:

		flag = 1;
		if(flag == 1)
		{
			//return control_packet and start timer for it
			feed_control_packet(&VtulCom_control);
			//the initial value of VtulCom_PreComConfig
			memcpy(&VtulCom_PreComConfig,&VtulCom_control,sizeof(struct _VtulComControlHeader));
			tcp_write(VTL_TCP_CONTROL_CHANNEL,(unsigned char *)&VtulCom_control,5);
			VtulComTimer_flag = 1;
		}
		else
		{
			sci0_print("close 1531\r\n");
			close(VTL_TCP_CONTROL_CHANNEL);
			VtulComTimer_flag = 0;
			VtulComTimer = 0;
			VtulComTimerReset = 0;
			VtulComSendCon_flag = 0;
			VtulComRecvTimeout_flag = 0;
		}
		break;
	case VTL_TCP_CONFIG_CHANNEL:
		if(Ch_connect == ETH_TCP_ON)
		{
			sci0_print("Ch_connect is ETH_TCP_ON,so close it\r\n");
			close(VTL_TCP_CONFIG_CHANNEL);	//在通信狀態(tài)下不接受管理工具配置 by brucelyang 2005.7.15
		}
		break;
	case VTL_UDP_BROADCAST_CHANNEL:
		break;
	}
	return;
}


static void VTUL_CLOSED(SOCKET s)
{
	switch(s)
	{
	case VTL_TCP_DATA_CHANNEL:
		//passive close
		if(SOCK_STATUS(VTL_TCP_DATA_CHANNEL) == SOCK_CLOSE_WAIT)
		{
			sci0_print("passive close\r\n");
			close(VTL_TCP_DATA_CHANNEL);
		}
		Ch_connect = ETH_OFF;
		ethernet_status = ethernet_status & ~TCP_SERVER_CHANNEL_ON;
		//LED熄滅,add by brucelyang 2005.07.14
		PF.DR.BIT.B0 = 0x01;
		PF.DR.BIT.B1 = 0x01;
		break;
	case VTL_TCP_CONTROL_CHANNEL:
		//passive close
		if(SOCK_STATUS(VTL_TCP_CONTROL_CHANNEL) == SOCK_CLOSE_WAIT)
		{
			sci0_print("passive close\r\n");
			close(VTL_TCP_CONTROL_CHANNEL);
		}
		VtulComTimer_flag = 0;
		VtulComTimer = 0;
		VtulComTimerReset = 0;
		VtulComSendCon_flag = 0;
		VtulComRecvTimeout_flag = 0;
		break;
	case VTL_TCP_CONFIG_CHANNEL:
		//passive close
		if(SOCK_STATUS(VTL_TCP_CONFIG_CHANNEL) == SOCK_CLOSE_WAIT)
		{
			sci0_print("passive close\r\n");
			close(VTL_TCP_CONFIG_CHANNEL);
		}
		break;
	case VTL_UDP_BROADCAST_CHANNEL:
		break;
	}
	return;
}

static void VTUL_TIMEOUT(SOCKET s)
{
//	sci0_print("I'm in VTUL_TIMEOUT,socket is ");
//	sci0_reg_print((unsigned long)s);
//	sci0_print("\r\n");
	switch(s)
	{
	case VTL_TCP_DATA_CHANNEL:
		break;
	case VTL_TCP_CONTROL_CHANNEL:
		break;
	case VTL_TCP_CONFIG_CHANNEL:
		break;
	case VTL_UDP_BROADCAST_CHANNEL:
		break;
	}
	return;
}
extern unsigned long debug_cnt1;
static void VTUL_RX(SOCKET s)
{
	struct _UDPHeader UDPHeader;
	struct _VtulComControlHeader VtlConHeader;
	unsigned char ip_addr[4];
	unsigned short port;
	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 string_flag;
	unsigned char ConfigTools_packet[20];
	unsigned char answer_configstr[51];
	const unsigned char configstr1[18] = {0,'E','N','E','T','V','T','L',0,0,0,0,0,0,0,0,0,0};
	const unsigned char configstr2[10] = {0,0,0,0,0,0,0,0,0,0};
	
#if 0
	unsigned short ly_counter;
#endif
//	sci0_print("I'm in VTUL_RX,socket is ");
//	sci0_reg_print((unsigned long)s);
//	sci0_print("\r\n");
	string_flag = 0;
	switch(s)
	{
	case VTL_TCP_DATA_CHANNEL:
		set_imask_ccr(1);
#if 0
	/*get the counter*/
	TPU.TSTR.BYTE &= ~0x01;
	ly_counter = TPU0.TCNT;
	sci0_write('s');
	sci0_reg_print((unsigned long)ly_counter);
	TPU.TSTR.BYTE |= 0x01;/*start count*/
#endif
		k = *SHADOW_RXWR_PTR(s);   	// Must read the shadow register for reading 4byte pointer registers
#if 0
	/*get the counter*/
	TPU.TSTR.BYTE &= ~0x01;
	ly_counter = TPU0.TCNT;
	sci0_write('e');
	sci0_reg_print((unsigned long)ly_counter);
	TPU.TSTR.BYTE |= 0x01;/*start count*/
#endif
		wait_1us(1);                    // wait for reading 4byte pointer registers safely
#if 0
	/*get the counter

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
丝袜美腿亚洲色图| 成人精品视频.| 国产91精品精华液一区二区三区| 成人性生交大片免费看中文网站| 91麻豆精品久久久久蜜臀| 国产精品乱码一区二三区小蝌蚪| 亚洲va欧美va人人爽午夜| 成人一区二区三区在线观看| 日韩精品一区二区三区四区| 夜夜精品视频一区二区| 丰满白嫩尤物一区二区| 日韩欧美国产三级电影视频| 亚洲夂夂婷婷色拍ww47 | av爱爱亚洲一区| 欧美videos大乳护士334| 亚洲国产一区二区a毛片| 成人一区二区三区视频| 久久噜噜亚洲综合| 黄色日韩三级电影| 欧美精品精品一区| 婷婷夜色潮精品综合在线| 在线观看91视频| 亚洲精品中文字幕在线观看| 9久草视频在线视频精品| 国产无人区一区二区三区| 精品一区二区免费在线观看| 欧美精品1区2区3区| 午夜精品福利在线| 欧美人伦禁忌dvd放荡欲情| 亚洲午夜在线视频| 欧美中文字幕一区二区三区| 亚洲一区二区中文在线| 91福利在线免费观看| 亚洲老妇xxxxxx| 91日韩精品一区| 亚洲精品久久久蜜桃| 91在线高清观看| 亚洲精品成人在线| 91成人免费在线视频| 亚洲va欧美va天堂v国产综合| 欧美性一二三区| 亚洲成av人片一区二区梦乃| 欧美军同video69gay| 蜜桃av一区二区| 久久久久高清精品| 91久久线看在观草草青青 | 精品国产一区二区三区久久影院 | 亚洲国产精品精华液网站| 在线观看不卡视频| 日日摸夜夜添夜夜添亚洲女人| 日韩一级片网站| 国产成人精品亚洲日本在线桃色| 欧美激情中文不卡| 在线欧美日韩国产| 日本人妖一区二区| 日本一区二区动态图| 91麻豆精品秘密| 美女视频网站黄色亚洲| 日本一区二区综合亚洲| 色婷婷精品大视频在线蜜桃视频| 婷婷综合五月天| 中国av一区二区三区| 欧美伊人久久大香线蕉综合69 | 亚洲一级二级在线| 欧美电影免费提供在线观看| 国产成人精品亚洲777人妖| 亚洲一区在线视频观看| 亚洲精品在线免费播放| 91视频一区二区三区| 蜜桃视频在线一区| 18欧美亚洲精品| 欧美成人一级视频| 一本一本大道香蕉久在线精品| 男男视频亚洲欧美| 一区在线中文字幕| 欧美va亚洲va香蕉在线| 91农村精品一区二区在线| 免费成人小视频| 亚洲精品日韩专区silk | 欧美精品日韩精品| 99在线精品视频| 免费黄网站欧美| 亚洲乱码精品一二三四区日韩在线| 欧美高清视频在线高清观看mv色露露十八| 国产高清不卡一区| 毛片不卡一区二区| 亚洲一区二区综合| 1000精品久久久久久久久| 日韩欧美成人激情| 欧美日韩国产一区| 色嗨嗨av一区二区三区| 国产馆精品极品| 久久99这里只有精品| 午夜视频在线观看一区二区| 国产精品久久久久久久久搜平片| 欧美一区二区三区四区在线观看| 色悠久久久久综合欧美99| 国产成人精品一区二区三区四区| 久久国内精品自在自线400部| 亚洲午夜一区二区三区| 一区二区中文视频| 国产精品视频一二三区| 精品精品国产高清一毛片一天堂| 欧美另类久久久品| 欧美性一二三区| 欧美午夜视频网站| 欧美怡红院视频| 欧美中文字幕一区| 在线观看91视频| 欧美撒尿777hd撒尿| 在线免费观看不卡av| 色综合久久天天| 99久精品国产| 色综合久久久久综合体| 色婷婷精品大视频在线蜜桃视频| 国产91在线观看丝袜| 在线亚洲一区二区| 精品免费日韩av| 亚洲黄色av一区| 国产精品欧美极品| 欧美国产日韩a欧美在线观看 | 69久久夜色精品国产69蝌蚪网| 在线观看www91| 欧美欧美欧美欧美| 欧美一区二区日韩| 精品国产亚洲一区二区三区在线观看| 日韩三级.com| 久久精品在线免费观看| 中文字幕国产一区二区| 成人欧美一区二区三区小说| 亚洲人被黑人高潮完整版| 尤物av一区二区| 午夜久久久久久电影| 蜜桃av一区二区| 成人涩涩免费视频| 色婷婷综合久久久中文一区二区| 久久毛片高清国产| 日韩欧美高清dvd碟片| 麻豆传媒一区二区三区| 国产高清久久久| 欧美一区午夜视频在线观看| 亚洲免费在线视频| 国产综合色视频| 欧美一级高清片在线观看| 日韩亚洲欧美成人一区| 2020国产精品自拍| 亚洲欧美成人一区二区三区| 日韩精品免费专区| 粉嫩高潮美女一区二区三区| 在线观看亚洲精品视频| 欧美一卡二卡三卡四卡| 国产精品理论在线观看| 亚洲成人先锋电影| 粉嫩av一区二区三区| 欧美综合欧美视频| 精品久久久久久久久久久久久久久久久 | 2021国产精品久久精品| 亚洲欧美激情插| 国内欧美视频一区二区| 日本韩国精品在线| 久久亚洲二区三区| 亚洲国产人成综合网站| 国产精品亚洲第一区在线暖暖韩国| 在线精品视频免费播放| 欧美国产综合一区二区| 亚洲成年人影院| 99久久综合99久久综合网站| 日韩一级片在线观看| 亚洲福利视频一区| 91亚洲精华国产精华精华液| 久久你懂得1024| 免费成人在线网站| 精品视频1区2区| 日韩美女精品在线| 韩国午夜理伦三级不卡影院| 欧美日韩另类一区| 亚洲精品写真福利| www.日韩在线| 国产亚洲婷婷免费| 九九**精品视频免费播放| 欧美日韩国产色站一区二区三区| 亚洲天堂a在线| 岛国精品一区二区| 久久免费看少妇高潮| 另类专区欧美蜜桃臀第一页| 欧美日韩三级在线| 尤物av一区二区| 在线观看日韩一区| 亚洲人成电影网站色mp4| 成a人片国产精品| 国产精品久久久久婷婷| 成人午夜视频在线观看| 国产午夜精品理论片a级大结局| 精品一区二区在线播放| 日韩精品一区二区三区四区视频| 欧美bbbbb| 久久人人97超碰com| 韩国欧美一区二区| 久久久夜色精品亚洲| 国产成人在线电影|