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

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

?? w3100a.c

?? hew編譯環境
?? C
?? 第 1 頁 / 共 5 頁
字號:
#include <machine.h>
#include "global.h"
#include "2239s.h"
#include "w3100a.h"
#include <string.h>
#include "sci.h"
#include <stdio.h>
#include "vtul_com.h"


/*
###############################################################################
Define Part
###############################################################################
*/
//#define DEBUG                        // Add debugging code

/*
###############################################################################
Local Variable Declaration Section
###############################################################################
*/
unsigned char I_STATUS[4];              // Store Interrupt Status according to channels
unsigned int Local_Port;                // Designate Local Port
un_l2cval SEQ_NUM;               // Set initial sequence number
                                                
unsigned long SMASK[MAX_SOCK_NUM];      // Variable to store MASK of Tx in each channel, on setting dynamic memory size.
unsigned long RMASK[MAX_SOCK_NUM];      // Variable to store MASK of Rx in each channel, on setting dynamic memory size.
int SSIZE[MAX_SOCK_NUM];         // Maximun Tx memory size by each channel
int RSIZE[MAX_SOCK_NUM];         // Maximun Rx memory size by each channel
unsigned char *SBUFBASEADDRESS[MAX_SOCK_NUM];     // Maximun Tx memory base address by each channel
unsigned char *RBUFBASEADDRESS[MAX_SOCK_NUM];     // Maximun Rx memory base address by each channel

/******************************defined by brucelyang**********************/
unsigned char ethernet_status;
/*******************************end of brucelyang*************************/

/*
###############################################################################
Extern Variable Declaration Section
###############################################################################
*/
extern T_PAGE1 tt_page1;
extern T_PAGE2 tt_page2;
extern T_PAGE3 tt_page3;
extern T_PAGE4 tt_page4;
extern unsigned char enettors232_buf[ENETTORS232_BUFSIZE];  //串口發送緩存
extern unsigned char *enettors232_rdptr,*enettors232_wrptr; //串口發送緩存讀寫指針
extern unsigned short Prog_Mode;
extern short Ch_connect;

///////////////////////////////added by ggd///////////////////////////////////
unsigned char * telnet_wrptr;				//telnet 接受緩沖區寫指針
unsigned char * telnet_rdptr;				//telnet 接受緩沖區讀指針
unsigned char telnet_recv_buf[TEL_BUF];		//telnet 接受緩沖區
extern int telnet_close_flag;
extern int telnet_read_flag;
extern volatile int tx_cnt;
///////////////////////////////end of ggd/////////////////////////////////////

//add by wqf
extern unsigned long wtm_time;				//wtm設定時,斷開連接計時的時間,add by wqf 2005.5.31
extern char wtm_flag;						//wtm設定時,開始計數的標志,add by wqf 2005.5.31
extern char wait_flag;						//wait設定時,開始計數的標志,add by wqf 2005.5.30
extern char wait_connect_flag;				//wait設定時,重試標志,add by wqf 2005.05.30
extern char dtr_ready_flag;//DTR輸入有效的標志,add by wqf 2005.6.8
extern char cd_ready_flag;//CD輸入有效的標志,add by wqf 2005.6.8
extern char dtr_connect_flag;//DTR輸入有效引起的建立TCP連接的標志,add by wqf 2005.6.8
extern char cd_connect_flag;//CD輸入有效引起的建立TCP連接的標志,add by wqf 2005.6.8

extern char rj45led_flag;						//add by wqf 2005.6.14
extern unsigned long rj45led_time;				//add by wqf 2005.6.14

static char cd_cmd[10];
static char *cd_argv[2];
static char dtr_cmd[10];
static char *dtr_argv[2];
//end of add by wqf



extern char pw_connect;					//pw設定時,連接成功的標志 add by wqf 2005.05.27
//added by brucelyang
unsigned long overlay_counter;
extern unsigned char KWT_flag;
//extern unsigned char Connecting_flag;
//extern char dtm_flag;						//dct設定時,開始計數的標志,add by wqf 2005.5.27
//extern char dtm_connect_flag;				//dct設定時,重試標志,add by wqf 2005.5.27
//extern SIOCH_LINE      siochline;

//add by brucelyang 2005.8.12
extern _PRGPAGE PRGPAGE; 					//存儲PROGMODE中的狀態信息
//static char *ly_arg[32];

//for virtual COMM
extern unsigned char virtual_com;
extern T_PAGE4 page4_temp;
extern unsigned char VtulComTimerReset;		// 2005.7.26 add by brucelyang
unsigned char sendpause_flag;				//網絡暫停發送標志
unsigned char VtulComTimer_flag;			//虛擬串口控制信息發送定時開始標志
unsigned long VtulComTimer;					//虛擬串口控制信息發送定時器
unsigned char VtulComSendCon_flag;      	//虛擬串口控制信息發送標志
unsigned char VtulComRecvTimeout_flag; 		//vtulCom控制信息接收超時標志
struct _VtulComControlHeader VtulCom_PreComConfig;	//存儲前一次SCI0的配置
static void VTUL_ESTABLISHED(SOCKET s);
static void VTUL_CLOSED(SOCKET s);
static void VTUL_TIMEOUT(SOCKET s);
static void VTUL_RX(SOCKET s);
void feed_control_packet(struct _VtulComControlHeader *control_packet);
void deal_control_packet(struct _VtulComControlHeader *control_packet);

volatile unsigned int timeout_cnt_w3100;			//modified in 20060320 by ggd

/*
###############################################################################
static Function Declaration Section
###############################################################################
*/

static void sysinit(unsigned char sbufsize, unsigned char rbufsize);
static void initseqnum(SOCKET s);
static void wait_1us(int cnt);
//static void initseqnum(SOCKET s);
static void ISR_ESTABLISHED(SOCKET s);
static void ISR_CLOSED(SOCKET s);
static void ISR_TIMEOUT(SOCKET s);
static void ISR_SEND_OK(SOCKET s);
static void ISR_RECV_OK(SOCKET s);
static void ISR_RX(SOCKET s);
static int select(SOCKET s, unsigned char func);
static int send_in(SOCKET s, unsigned char *buf, int len);
static unsigned int write_data(SOCKET s, unsigned char *src, unsigned char *dst, int len);

/*
###############################################################################
Function Implementation Section
###############################################################################
*/

void irq0_init(void)
{
	INTC.ISCR.BYTE.L = 0x01;	/*IRQ0 interrupt request at level low*/
	INTC.ISR.BYTE = 0x00;		/*clear interrupt flag*/
	INTC.IER.BIT.IRQ0E = 0x01;
}


void irq0(void)
{
	unsigned char status;

	INTC.ISR.BYTE = INTC.ISR.BYTE & ~0x01;
	INTC.IER.BIT.IRQ0E = 0x00;
	status = INT_REG;

	while (status) {
		if (status & 0x01) {      // channel 0 interrupt(sysinit, sockinit, established, closed, timeout, send_ok, recv_ok)
			I_STATUS[0] = INT_STATUS(0);
			if(I_STATUS[0] & SESTABLISHED) 
			{
				if(virtual_com == 1)
				{
					VTUL_ESTABLISHED(0);
				}
				else
				{
					ISR_ESTABLISHED(0);
				}
			}
			if(I_STATUS[0] & STIMEOUT) 
			{
				if(virtual_com == 1)
				{
					VTUL_TIMEOUT(0);
				}
				else
				{
					ISR_TIMEOUT(0);
				}
			}
			if(I_STATUS[0] & SCLOSED) 
			{
				if(virtual_com == 1)
				{
					VTUL_CLOSED(0);
				}
				else
				{
					ISR_CLOSED(0);
				}
			}
			//if(I_STATUS[0] & SSEND_OK) ISR_SEND_OK(0);
			//if(I_STATUS[0] & SRECV_OK) ISR_RECV_OK(0);
			INT_REG = 0x01;
		}

		if (status & 0x02) {      // channel 1 interrupt(sysinit, sockinit, established, closed, timeout, send_ok, recv_ok)
			I_STATUS[1] = INT_STATUS(1);
			if(I_STATUS[1] & SESTABLISHED) 
			{
				if(virtual_com == 1)
				{
					VTUL_ESTABLISHED(1);
				}
				else
				{
					ISR_ESTABLISHED(1);
				}
			}
			if(I_STATUS[1] & STIMEOUT) 
			{
				if(virtual_com == 1)
				{
					VTUL_TIMEOUT(1);
				}
				else
				{
					ISR_TIMEOUT(1);
				}
			}
			if(I_STATUS[1] & SCLOSED) 
			{
				if(virtual_com == 1)
				{
					VTUL_CLOSED(1);
				}
				else
				{
					ISR_CLOSED(1);
				}
			}
			//if(I_STATUS[1] & SSEND_OK) ISR_SEND_OK(1);
			//if(I_STATUS[1] & SRECV_OK) ISR_RECV_OK(1);
			INT_REG = 0x02;
		}

		if (status & 0x04) {      // channel 2 interrupt(sysinit, sockinit, established, closed, timeout, send_ok, recv_ok)
			I_STATUS[2] = INT_STATUS(2);
			if(I_STATUS[2] & SESTABLISHED) 
			{
				if(virtual_com == 1)
				{
					VTUL_ESTABLISHED(2);
				}
				else
				{
					ISR_ESTABLISHED(2);
				}
			}
			if(I_STATUS[2] & STIMEOUT) 
			{
				if(virtual_com == 1)
				{
					VTUL_TIMEOUT(2);
				}
				else
				{
					ISR_TIMEOUT(2);
				}
			}
			if(I_STATUS[2] & SCLOSED) 
			{
				if(virtual_com == 1)
				{
					VTUL_CLOSED(2);
				}
				else
				{
					ISR_CLOSED(2);
				}
			}
			//if(I_STATUS[2] & SSEND_OK) ISR_SEND_OK(2);
			//if(I_STATUS[2] & SRECV_OK) ISR_RECV_OK(2);
			INT_REG = 0x04;
		}

		if (status & 0x08) {      // channel 3 interrupt(sysinit, sockinit, established, closed, timeout, send_ok, recv_ok)
			I_STATUS[3] = INT_STATUS(3);
			if(I_STATUS[3] & SESTABLISHED) 
			{
				if(virtual_com == 1)
				{
					VTUL_ESTABLISHED(3);
				}
				else
				{
					ISR_ESTABLISHED(3);
				}
			}
			if(I_STATUS[3] & STIMEOUT) 
			{
				if(virtual_com == 1)
				{
					VTUL_TIMEOUT(3);
				}
				else
				{
					ISR_TIMEOUT(3);
				}
			}
			if(I_STATUS[3] & SCLOSED) 
			{
				if(virtual_com == 1)
				{
					VTUL_CLOSED(3);
				}
				else
				{
					ISR_CLOSED(3);
				}
			}
			//if(I_STATUS[3] & SSEND_OK) ISR_SEND_OK(3);
			//if(I_STATUS[3] & SRECV_OK) ISR_RECV_OK(3);
			INT_REG = 0x08;
		}

		if (status & 0x10)       // channel 0 receive interrupt
		{
			if(virtual_com == 1)
			{
				VTUL_RX(0);
			}
			else
			{
				ISR_RX(0);
			}
			INT_REG = 0x10;
		}

		if (status & 0x20)       // channel 1 receive interrupt
		{
			if(virtual_com == 1)
			{
				VTUL_RX(1);
			}
			else
			{
				ISR_RX(1);
			}
			INT_REG = 0x20;
		}

		if (status & 0x40)       // channel 2 receive interrupt
		{
			if(virtual_com == 1)
			{
				VTUL_RX(2);
			}
			else
			{
				ISR_RX(2);
			}
			INT_REG = 0x40;
		}

		if (status & 0x80)       // channel 3 receive interrupt
		{
			if(virtual_com == 1)
			{
				VTUL_RX(3);
			}
			else
			{
				ISR_RX(3);
			}
			INT_REG = 0x80;
		}

		status = INT_REG;
	}

	INT_REG = 0xFF;
	/*IRQ0 enable*/
	INTC.IER.BIT.IRQ0E = 0x01;
}

void init_w3100a(void)
{
	unsigned char i;
	//added by brucelyang 
	overlay_counter = 0;

	Local_Port = 5000;
	ethernet_status = ETHERNET_DEFAULT;
	//SEQ_NUM.lVal = 0x12233445;
	SEQ_NUM.lVal = 0x00000000;
	/*software reset command*/
	COMMAND(0) = CSW_RESET;
	/*setup gateway address:192.168.0.1*/
	for(i = 0; i < 4; i++)
	{
		*(GATEWAY_PTR + i) = tt_page2.Defg[i];
	}
	/*setup subnet mask:255.255.255.0*/
	for (i = 0; i < 4; i++) 
	{
		*(SUBNET_MASK_PTR + i) = tt_page2.Netm[i];
	}
	/*setup MAC address*/	
	for (i = 0; i < 6; i++) 
	{
		*(SRC_HA_PTR + i) = tt_page2.Mac[i];
	}
	/*setup IP address:192.168.0.51*/
	for (i = 0; i < 4; i++) 
	{
		*(SRC_IP_PTR + i) = tt_page2.Myip[i];
	}
	/*open interrupt for channel 0、1、2、3 both socket and receive data*/
	INTMASK = 0xff;

	set_imask_ccr(0);
	sysinit(0x55,0x55);
}

static void sysinit(unsigned char sbufsize, unsigned char rbufsize)
{
	char i;
	int ssum,rsum;
	//add by brucelyang 2005.8.18
	unsigned long m,n;
	m = 0;
	///////////end of brucelyang//////

	ssum = 0;
	rsum = 0;
	
	TX_DMEM_SIZE = sbufsize;                 // Set Tx memory size for each channel
	RX_DMEM_SIZE = rbufsize;                 // Set Rx memory size for each channel
	
	SBUFBASEADDRESS[0] = (unsigned char *)SEND_DATA_BUF;      // Set Base Address of Tx memory for channel #0
	RBUFBASEADDRESS[0] = (unsigned char *)RECV_DATA_BUF;      // Set Base Address of Rx memory for channel #0

#ifdef DEBUG
		PutStringLn("Channel : SEND MEM SIZE : RECV MEM SIZE");
#endif

	for(i = 0 ; i < MAX_SOCK_NUM; i++)               // Set maximum memory size for Tx and Rx, mask, base address of memory by each channel
	{
		SSIZE[i] = 0;
		RSIZE[i] = 0;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一二三四区| 天天色 色综合| 久久中文娱乐网| 欧美一区二区三区啪啪| 欧美日韩情趣电影| 91麻豆精品国产无毒不卡在线观看| 91色综合久久久久婷婷| 色噜噜久久综合| 欧美大尺度电影在线| 91麻豆精品国产| 日韩亚洲欧美一区二区三区| 欧美xxx久久| 久久美女高清视频| 国产欧美精品一区二区色综合朱莉| 久久影院视频免费| 中文字幕欧美一| 一区二区三区在线视频播放| 亚洲第一久久影院| 另类专区欧美蜜桃臀第一页| 久久www免费人成看片高清| 国产一区二区不卡| 一本大道久久a久久精品综合| 欧美日韩中文国产| 国产日韩欧美不卡在线| 成人免费在线播放视频| 午夜在线电影亚洲一区| 国产在线视视频有精品| 不卡的av电影| 欧美一级黄色大片| 中文字幕的久久| 丝袜美腿亚洲一区二区图片| 国产中文一区二区三区| 一本大道久久a久久综合婷婷| 欧美一区二区三区四区久久| 久久久99精品免费观看不卡| 亚洲综合丁香婷婷六月香| 日韩激情一区二区| 成人免费视频caoporn| 欧美性xxxxx极品少妇| 久久久不卡网国产精品一区| 亚洲国产视频在线| 成人综合日日夜夜| 欧美日韩一区二区不卡| 久久综合久久鬼色中文字| 亚洲三级在线播放| 国产一区二区三区在线看麻豆| 91久久精品国产91性色tv| 2021中文字幕一区亚洲| 天天综合色天天| 成人高清视频免费观看| 欧美成人一区二区| 五月激情综合网| 91猫先生在线| 中文字幕欧美激情一区| 久久97超碰色| 6080午夜不卡| 亚洲国产精品久久久男人的天堂| 成人激情图片网| 久久免费的精品国产v∧| 日本网站在线观看一区二区三区 | 粉嫩av一区二区三区粉嫩| 欧美色国产精品| 一区二区三区.www| 91免费视频网| 成人免费小视频| 成人精品视频一区| 国产日韩精品一区| 国产白丝精品91爽爽久久| 久久女同精品一区二区| 黄页网站大全一区二区| 日韩欧美综合在线| 久久精品国内一区二区三区| 欧美一区二区三区免费视频| 日韩精品高清不卡| 日韩一区二区电影网| 日本不卡在线视频| 欧美大片拔萝卜| 黄色成人免费在线| 日本一区二区三区dvd视频在线| 久久99精品国产麻豆婷婷洗澡| 日韩久久久久久| 国产精品一级片在线观看| 久久久久久久久久久电影| 国产精品一二三| 国产精品乱人伦| 91性感美女视频| 亚洲国产另类精品专区| 777午夜精品视频在线播放| 婷婷综合五月天| 2021国产精品久久精品| 成人综合婷婷国产精品久久蜜臀 | 欧美精品高清视频| 蜜桃精品在线观看| 久久久不卡影院| 色狠狠综合天天综合综合| 婷婷激情综合网| 欧美一区二区久久| 国产精品18久久久久久久久| 国产精品乱码一区二区三区软件| 91在线国产福利| 青青草原综合久久大伊人精品优势| 日韩免费在线观看| 91视频在线看| 丝袜亚洲另类丝袜在线| 国产欧美精品一区二区三区四区| 色婷婷久久久综合中文字幕| 肉肉av福利一精品导航| 日本一区二区三区dvd视频在线| 欧美最新大片在线看| 激情亚洲综合在线| 亚洲综合一区二区| 国产拍欧美日韩视频二区| 欧美亚洲一区二区在线| 国产麻豆91精品| 亚洲福利电影网| 国产精品久久毛片| 欧美一区二区高清| 在线观看视频91| 粉嫩aⅴ一区二区三区四区五区 | 国产精品丝袜91| 91精品国产色综合久久不卡蜜臀 | 蜜臀va亚洲va欧美va天堂| 国产欧美日韩不卡| 欧美一区二区精品| 91黄视频在线观看| 99综合电影在线视频| 老司机精品视频在线| 亚洲电影视频在线| 亚洲猫色日本管| 国产日本欧洲亚洲| 欧美电影免费观看高清完整版在线| 91在线云播放| 丁香激情综合国产| 久久电影国产免费久久电影| 亚洲国产综合视频在线观看| 最近中文字幕一区二区三区| 欧美电影精品一区二区| 欧美日韩国产另类不卡| 色丁香久综合在线久综合在线观看| 国内成人自拍视频| 久久99国产精品久久99果冻传媒| 亚洲电影第三页| 亚洲高清免费在线| 亚洲一区二区免费视频| 一区二区免费在线播放| 日韩美女久久久| 亚洲色图制服诱惑| 亚洲欧洲99久久| 自拍偷拍欧美激情| 日韩久久一区二区| 一区二区三区91| 午夜影院在线观看欧美| 丝袜诱惑制服诱惑色一区在线观看| 亚洲成精国产精品女| 日韩在线观看一区二区| 日韩精品一二三| 国产资源在线一区| 成人午夜电影久久影院| 99这里都是精品| 欧美日韩一区二区三区四区| 欧美日韩国产在线观看| 538在线一区二区精品国产| 日韩一区二区在线免费观看| 欧美mv日韩mv国产| 国产精品卡一卡二| 亚洲一区二区av在线| 青青青爽久久午夜综合久久午夜| 蜜桃av一区二区在线观看| 国产盗摄女厕一区二区三区| 成人免费av网站| 欧美日韩一区二区三区四区| 日韩亚洲欧美综合| 国产精品乱人伦| 亚洲bt欧美bt精品| 国产一区不卡视频| 99久久精品免费| 欧美嫩在线观看| 国产欧美日韩综合精品一区二区| 亚洲美女屁股眼交| 老司机一区二区| 一本一道久久a久久精品| 欧美乱熟臀69xxxxxx| 国产欧美一区在线| 亚洲成人资源网| 成人性生交大片免费看视频在线 | 高清av一区二区| 在线欧美日韩国产| 欧美精品一区二区在线观看| 亚洲色图另类专区| 韩国精品久久久| 欧美三级日韩在线| 欧美国产日韩亚洲一区| 婷婷六月综合亚洲| 99vv1com这只有精品| 日韩精品综合一本久道在线视频| 国产精品免费av| 国产一区二区三区在线观看免费 | 欧美午夜免费电影| 日本一区免费视频| 看电影不卡的网站|