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

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

?? system.c

?? 用于以太網開發
?? C
字號:
#include <config.h>
#include <datatypes.h>
#include <system.h>
#include <debug.h>

#ifdef WIN32
#include <stdio.h>
#endif

UINT32 base_timer;		/**< System 1.024 msec timer	*/

UINT8 sleep_mode = 0;	/**< Used to store information about power-saving state we're in (if any) */

/** \brief Transmit buffer used by all OpenTCP applications
 *
 *	This buffer is the transmit buffer used by all OpenTCP applications
 *	for sending of data. Please note the warnings below for correct usage
 *	of this buffer that ensures proper operation of the applications.
 *
 *	\warning
 *		\li <b>Transmit buffer start</b> - to avoid data copying, the TCP/IP
 *		stack will use first part of the net_buf buffer to add it's data. This
 *		means that applications using TCP and/or UDP <b>must not</b> write
 *		application-level data from the beginning of the buffer but from certain
 *		offset. This offset depends on the transport-layer protocol (it's
 *		header size that is). For TCP this value is defined by the
 *		TCP_APP_OFFSET and for the UDP it is UDP_APP_OFFSET.
 *		\li <b>Buffer sharing</b> - since all applications share this buffer among each other, 
 *		and with the TCP/IP stack as well, care must be taken not to
 *		overwrite other applications' data before it is sent. This is best
 *		achieved if all applications work in the main loop and when they
 *		wish to send data they fill in the buffer and send it immediately.
 *
 */
UINT8 net_buf[NETWORK_TX_BUFFER_SIZE];	/* Network transmit buffer	*/

/********************************************************************************
Function:		strlen

Parameters:		UINT8* str - start address of string buffer
				UINT16 len - buffer length
				
Return val:		INT16 - (-1) Not a string
						(>=0) Length of string
				
Date:			12.8.2002

Desc:			Calculates the length of given string
*********************************************************************************/


INT16 __strlen (UINT8* buf, UINT16 len)
{
	UINT16 i;
	
	for(i=0; i<len; i++) {
		if(*buf == '\0')
			return( i );
		
		buf++;
	}
	
	/* Not found	*/
	
	return(-1);


}


/********************************************************************************
Function:		bufsearch

Parameters:		UINT8* startadr - start address of given buffer
				UINT16 len - buffer length
				UINT8* str - given searchstring
				
Return val:		INT16 - (-1) Not found
						(>=0) Start of matched string from startadr
				
Date:			12.7.2002

Desc:			Seeks given string from given buffer
*********************************************************************************/

INT16 bufsearch (UINT8* startadr, UINT16 len, UINT8* str)
{
	UINT16 i;
	INT16 position;
	UINT8 matchesneeded;
	UINT8 matchesnow;
	UINT8* target;
	UINT8* key;
	
	target = startadr;
	position = -1;
	key = str;
	matchesnow = 0;
	matchesneeded = 0;
	
	/* How many matches we need?	*/
	
	while( *key++ != '\0' ) {
		/* Break possible deadlock	*/
		
		matchesneeded++;
		if(matchesneeded > 30)
			return(-1);
	}
	
	/* Search for first mark and continue searching if found	*/
	
	key = str;
	
	for(i=0; i<len; i++) {
		if( *target == *key) {
			/* We found matching character		*/
			
			matchesnow++;
			
			/* Move to next character of key	*/
			
			key++;
			target++;
			
			if(matchesnow == 1) {
				/* First character match	*/
				
				position = i;
			}
			
			if(matchesneeded == matchesnow) {
				/* Whole string matched	*/
				
				return(position);
			}
			
		} else {
		
			if( matchesnow != 0) {
				/* It wasn't a complete match...				*/
				/* Initialize counters and start again			*/
			
				matchesnow = 0;
				key = str;
			
				/* Move to next character of target after 		*/
				/* previous matching character					*/
			
				target = startadr;
				target += position;
				target += 1;
			
				i = position;
			} else {
				/* Just continue searching the first match		*/
				target++;
			}
		}
	
	}
	
	/* No matches found...	*/
	
	return(-1);
	
}


/********************************************************************************
Function:		tolower

Parameters:		UINT8 ch - ASCII character to be converted lowercase
				
Return val:		UINT8 - converted character
				
Date:			21.8.2002

Desc:			If ch is UPPERCASE letter it is converted to lowercase and 
				returned. Otherwise original character is returned
*********************************************************************************/

UINT8 __tolower (UINT8 ch)
{
	if( (ch < 91) && (ch > 64) )
		return(ch + 32);
	
	return(ch); 

}


/********************************************************************************
Function:		toupper

Parameters:		UINT8 ch - ASCII character to be converted UPPERCASE
				
Return val:		UINT8 - converted character
				
Date:			21.8.2002

Desc:			If ch is lowercase letter it is converted to UPPERCASE and 
				returned. Otherwise original character is returned
*********************************************************************************/

UINT8 __toupper (UINT8 ch)
{
	if( (ch < 123) && (ch > 96) )
		return(ch - 32);
	
	return(ch); 

}

/* Is the given ASCII code numerical	*/
/* e.g. '0','1','2' ... '9'				*/

UINT8 isnumeric (UINT8 ch)
{
	if( (ch < 58) && (ch > 47) )
		return(1);
	return(0);
}


/* HexToAscii - Take one byte and return its two ASCII  */
/* values for both nibbles								*/

UINT16 hextoascii (UINT8 c)
{
	UINT8 ch = c;
	UINT8 as1;
	UINT8 as2;

	/* take the char and turn it to ASCII */
	
	as1 = ch;
	as1 >>= 4;
	as1 &= 0x0F;
	if ( as1<10 )
		as1 += 48;
	else
		as1 += 55;
		
	as2 = ch;
	as2 &= 0x0F;
	if ( as2<10 )
		as2 += 48;
	else
		as2 += 55;
		
	return( ((UINT16)(as1)<<8) + as2 );
	
	
}


/* Convert ASCII character to numerical	*/
/* e.g. '1' -> 0x01, 'A' ->0x0A			*/

UINT8 asciitohex (UINT8 ch)
{
	if( (ch < 58) && (ch > 47) )
		return(ch - 48);
	
	if( (ch < 71 ) && (ch > 64) )
		return(ch - 55); 
}


void __ltoa (UINT32 nmbr, UINT8 *ch )
{
	/* Transforms value of long word to ASCII string */
	/* Makes it iterative						 	 */
	
	UINT16 multiple;
	UINT32 decade,comp;
	UINT8 i,found;
	
	/* Init String */	
	
	for( i=0; i<10;i++ )
		*ch++ = '0';
	
	ch -= 10;
	
	/* See if Zero */
	
	if(nmbr == 0) {
		*ch++ = '0';
		*ch = '\0';
	}
	
	
	decade = 1000000000;
	
	found = FALSE;
	
	for( i=0; i<10; i++) {
		
		if(i != 0)
			decade /= 10;
		
		for( multiple=9; multiple>0; multiple--) {	
			if( (i==0) && (multiple > 2) )
				continue;
		
			comp = decade * multiple;
			
			if(nmbr >= comp) {
				*ch = hextoascii(multiple);
				nmbr -= comp; 
				found = TRUE;
					
				break;				/* Still processing */
			}
		}
		
		if( found == TRUE)
			ch++;
	
	}	

	*ch = '\0';			/* EOL */
	
}




void __itoa (UINT16 nmbr, UINT8* ch )
{
	/* Transforms value of word to ASCII string */
	/* Makes it iterative						*/

	UINT16 decade, multiple;
	UINT32 comp;
	UINT8 i,found;

	/* Init String */
	
	
	for( i=0; i<5;i++)
		*ch++ = '0';
	
	ch -= 5;
	
	/* See if Zero */
	
	if(nmbr == 0) {
		*ch++ = '0';
		*ch = '\0';
	}
	
	decade = 10000;
	
	found = FALSE;
	
	for( i=0; i<5; i++) {
		
		
		if(i != 0)
			decade /= 10;
		
		for( multiple=9; multiple>0; multiple--) {	
			if( (i==0) && (multiple > 6) )
				continue;
		
			comp = decade * multiple;
			
			if(nmbr >= comp) {
				*ch = hextoascii(multiple);
				nmbr -= comp; 
				found = TRUE;
					
				break;				/* Still processing */
			}
		}
		
		if( found == TRUE)
			ch++;
	
	}	

	*ch = '\0';			/* EOL */
	
}


/* Convert given buffer containing ASCII numbers	*/
/* to numerical positive INT16 value (max. 32767)	*/

INT16 __atoi (UINT8 *buf, UINT8 buflen)
{
	INT16 oval = 0;
	UINT8 nval = 0;
	
	while(buflen--) {
	
		if(*buf == '\0')
			break;
		
		if( isnumeric(*buf) == 0 )
			return(-1);
	
		nval = asciitohex(*buf++);
		
		oval = oval * 10;
		oval += nval;	
		
		/* Overflow?	*/
		
		if(oval < nval)
			return(-1);
	
	}
	
	return(oval);

}


/* Debug/String output	*/

void mputs (INT8* msg)
{
#ifdef WIN32
	printf ("%s",msg);
#else
#endif
}

/* Debug/Hex output a number*/
void mputhex(UINT8 nbr)
{ 
#ifdef WIN32
    printf ("0x%02X",nbr);
#else
#endif
}

/*	Watchdog refresh	*/

void kick_WD (void) 
{
	
	/* Empty for the Win32 port */

}

/* Wait for unaccurate use	*/

void wait (INT16 i)
{
	for(;i;i--) kick_WD();
}


/* Return "Random" Number	*/

UINT32 random (void)
{
	/* TODO: Return REAL random number	*/
	return(0x345A2890);
}

/* Do nothing	*/

void dummy (void)
{
	/* That's it	*/
}

/* 	Power saving mode	*/

void enter_power_save (void)
{
	/* Are we on sleep mode already?	*/

	if (sleep_mode)
		return;
		
	sleep_mode = 1;
	

	/* Empty for the WIN32 port */

	return;
}



void exit_power_save (void)
{
	UINT8 i;

	if (sleep_mode) {
		/* Release RS transmitter chip	*/


		/* Empty for the WIN32 port */

		/* Wait for a while	*/
		
		for( i=0; i<128; i++)
			sleep_mode = 0;
		
	}
	
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕欧美日本乱码一线二线| 国产一区二区三区最好精华液| 国产欧美精品一区| 亚洲精品综合在线| 全国精品久久少妇| 成人免费视频一区二区| 91麻豆精品91久久久久同性| 国产日韩欧美精品一区| 成人app网站| 欧美成人r级一区二区三区| 一区二区三区精品| 色综合久久综合中文综合网| 精品国产91乱码一区二区三区| 一个色在线综合| 日韩一区和二区| 视频精品一区二区| 欧美吞精做爰啪啪高潮| 亚洲色图另类专区| 成人av动漫网站| 亚洲一区二区三区爽爽爽爽爽| a在线播放不卡| 日本一区二区免费在线| 日本韩国欧美在线| 亚洲另类中文字| 在线播放国产精品二区一二区四区| 亚洲少妇最新在线视频| 在线播放一区二区三区| 国产成人精品网址| 国产精品麻豆网站| 成人黄动漫网站免费app| 亚洲资源中文字幕| 久久久久久97三级| 国产精品一二一区| 久久久噜噜噜久久人人看| 91香蕉国产在线观看软件| 国产精品少妇自拍| 欧美日韩一区不卡| 日本v片在线高清不卡在线观看| 中文字幕国产一区| 日韩欧美在线一区二区三区| 99在线视频精品| 国产美女视频91| 午夜国产精品一区| 欧美一区二区三区在| 国产一区不卡视频| 天涯成人国产亚洲精品一区av| 中文字幕一区二区视频| 91视频观看免费| 国产精品一区免费在线观看| 日本欧美一区二区在线观看| 精品久久久三级丝袜| 欧美日韩视频第一区| 不卡影院免费观看| 国产精品综合网| 久久爱另类一区二区小说| 久久精品欧美一区二区三区麻豆 | 亚洲精品一区二区三区精华液| 在线亚洲欧美专区二区| 天天综合网 天天综合色| 亚洲精品欧美激情| 中文字幕在线不卡一区二区三区| 精品日韩欧美在线| 精品国产免费视频| 欧美一区二区免费视频| 91福利资源站| 色999日韩国产欧美一区二区| 成人毛片在线观看| 成人综合婷婷国产精品久久蜜臀| 国产一区二区0| 国产成人久久精品77777最新版本| 毛片av一区二区三区| 国产精品看片你懂得| 欧美色综合网站| 欧美综合天天夜夜久久| 色哟哟一区二区三区| 色视频成人在线观看免| 日本精品视频一区二区| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 亚洲国产一区二区视频| 精品国产1区二区| 欧美va亚洲va香蕉在线| 久久亚洲精品国产精品紫薇| 欧美性色黄大片| 欧美性做爰猛烈叫床潮| 欧美精选午夜久久久乱码6080| 精品视频色一区| 欧美福利电影网| 精品国产乱码久久| 久久久蜜桃精品| 国产精品家庭影院| 亚洲精品国产成人久久av盗摄| 亚洲午夜电影在线观看| 蜜臀va亚洲va欧美va天堂| 久久精品国产一区二区三| 国产精品一区二区三区网站| 成人午夜在线播放| 欧美系列日韩一区| 欧美一区二区三区日韩视频| 26uuu精品一区二区三区四区在线| 国产午夜精品久久久久久久| 亚洲另类春色校园小说| 无码av免费一区二区三区试看 | 欧美日韩大陆在线| 一本大道久久a久久精二百| 欧美在线免费播放| 日韩视频永久免费| 国产精品色一区二区三区| 综合中文字幕亚洲| 秋霞电影网一区二区| 国产精品综合一区二区三区| 在线欧美一区二区| 久久亚洲欧美国产精品乐播| 亚洲欧美日韩电影| 最新久久zyz资源站| 亚洲成人av福利| 亚洲aaa精品| 国产一区二区主播在线| 在线精品视频免费播放| 日韩女优视频免费观看| 欧美刺激午夜性久久久久久久| 欧美国产激情二区三区| 五月天激情综合网| 91在线视频官网| 日本韩国欧美国产| 26uuu另类欧美亚洲曰本| 一区二区免费在线播放| 高清不卡一区二区在线| 国产成人99久久亚洲综合精品| 欧美视频在线观看一区| 国产精品区一区二区三区| 麻豆91在线播放| 在线观看91精品国产入口| 2021国产精品久久精品| 午夜激情综合网| caoporn国产精品| 久久久久久免费毛片精品| 日精品一区二区| 在线视频一区二区三| 国产精品免费久久久久| 国产一区中文字幕| 日韩精品一区二区三区中文不卡 | 一区二区三区在线播| 国产成人在线视频网址| 欧美一区二区三区的| 亚洲国产aⅴ成人精品无吗| 国产91色综合久久免费分享| 欧美成人精品二区三区99精品| 亚洲va欧美va天堂v国产综合| av一区二区不卡| 亚洲国产精品成人综合色在线婷婷| 精品亚洲成a人| 大陆成人av片| 国产婷婷色一区二区三区在线| 美女脱光内衣内裤视频久久网站| 欧美无乱码久久久免费午夜一区| 亚洲欧美激情插| 91亚洲精品一区二区乱码| 国产精品色哟哟网站| av亚洲精华国产精华精华 | 欧美视频一区二区三区四区| 1000精品久久久久久久久| proumb性欧美在线观看| 国产精品久久久久久久岛一牛影视 | 久久久亚洲精品一区二区三区 | 在线免费观看日本一区| 亚洲欧美另类小说| 91美女在线视频| 亚洲乱码中文字幕| 色老汉av一区二区三区| 亚洲乱码精品一二三四区日韩在线| 91麻豆123| 亚洲一级片在线观看| 欧美日本高清视频在线观看| 日韩综合在线视频| 日韩一级黄色片| 韩国精品主播一区二区在线观看 | caoporm超碰国产精品| 中文字幕在线免费不卡| 91视频你懂的| 亚洲午夜久久久久久久久电影院 | 国产一区二区三区久久久| 国产喷白浆一区二区三区| 91影院在线免费观看| 伊人性伊人情综合网| 欧美老年两性高潮| 久久国产精品第一页| 中文字幕不卡在线观看| 91福利精品第一导航| 美女一区二区三区在线观看| 久久日韩粉嫩一区二区三区| www.欧美日韩| 天天综合网 天天综合色| 久久一区二区三区国产精品| 成人免费观看男女羞羞视频| 亚洲一区二区三区四区五区黄| 日韩欧美国产三级电影视频| 成人综合激情网| 五月天婷婷综合| 国产欧美日韩亚州综合 | 久久精品欧美一区二区三区不卡 |