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

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

?? udp.c

?? udp,tcp/ip在智能家居芯片上的代碼實現(xiàn).包括芯片NE64的網(wǎng)絡(luò)驅(qū)動源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/**************************************************************************                      
 *
 *       Copyright (C) 2003 Freescale Semiconductor, Inc. 
 *           and 2000-2002 Viola Systems Ltd.
 *       All Rights Reserved
 *
 * File Name      : udp.c
 * Project Name   : Connector_App.mcp
 * Description    : OpenTCP UDP implementation. All functions necessary for 
 *                    UDP packet processing are present here. Note that 
 *                    only a small subset of these functions must be used 
 *                    for "normal" applications that are using the UDP for 
 *                    communciation. For function declarations and lots of 
 *                    other usefull stuff see tcp_ip.h in the OpenTCP folder.
 *
 *	For examples on how to use UDP and write applications that communicate
 *	using UDP see the demo folder.
 *
 * Version : 1.0
 * Date    : 15.7.2002
 *
 ***************************************************************************/

/*
 *Redistribution and use in source and binary forms, with or without 
 *modification, are permitted provided that the following conditions 
 *are met:
 *
 *1. Redistributions of source code must retain the above copyright 
 *notice, this list of conditions and the following disclaimer.
 *
 *2. Redistributions in binary form must reproduce the above copyright 
 *notice, this list of conditions and the following disclaimer in the 
 *documentation and/or other materials provided with the distribution.
 *
 *3. The end-user documentation included with the redistribution, if 
 *any, must include the following acknowledgment:
 *	"This product includes software developed by Viola 
 *	Systems (http://www.violasystems.com/)."
 *
 *Alternately, this acknowledgment may appear in the software itself, 
 *if and wherever such third-party acknowledgments normally appear.
 *
 *4. The names "OpenTCP" and "Viola Systems" must not be used to 
 *endorse or promote products derived from this software without prior 
 *written permission. For written permission, please contact 
 *opentcp@opentcp.org.
 *
 *5. Products derived from this software may not be called "OpenTCP", 
 *nor may "OpenTCP" appear in their name, without prior written 
 *permission of the Viola Systems Ltd.
 *
 *THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED 
 *WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
 *MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
 *IN NO EVENT SHALL VIOLA SYSTEMS LTD. OR ITS CONTRIBUTORS BE LIABLE 
 *FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
 *CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
 *SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 
 *BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
 *WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 
 *OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 
 *EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *====================================================================
 *
 *OpenTCP is the unified open source TCP/IP stack available on a series 
 *of 8/16-bit microcontrollers, please see <http://www.opentcp.org>.
 *
 *For more information on how to network-enable your devices, or how to 
 *obtain commercial technical support for OpenTCP, please see 
 *<http://www.violasystems.com/>.
 */

#include <debug.h>
#include <datatypes.h>
#include <ethernet.h>
#if defined(IPv6)
	#include <ipv6.h>
#else
	#include <ip.h>
#endif
#include <tcp_ip.h>
#include <system.h>

/** \brief UDP table holding socket parameters for every UDP socket 
 *
 *	UDP table is an array of ucb structures holding all of the 
 *  necessary information about the state, listener, port numbers
 *	and other info about the UDP sockets opened. Number of UDP sockets
 *	that can be opened at any given time is defined by the NO_OF_UDPSOCKETS
 *	and may be changed in order to change the amount of used RAM memory.
 *	See ucb definition for more information about the structure itself.
 *
 */
struct ucb udp_socket[NO_OF_UDPSOCKETS];

/**	\brief Used for storing field information about the received UDP packet
 *	
 *	Various fields from the received UDP packet are stored in this variable.
 *	See udp_frame definition for struct information.
 */
struct udp_frame received_udp_packet;

/** \brief Initialize UDP socket pool
 *	\ingroup core_initializer
 * 	\author 
 *		\li Jari Lahti (jari.lahti@violasystems.com)
 *	\date 26.07.2002
 *	\return 
 *		\li -1 - Error
 *		\li >0 - Number of UDP sockets initialized
 *	\warning 
 *		\li This function <b>must</b> be invoked before any other
 *			UDP-related function is called
 *
 *	This function initializes UDP socket pool to get everything into
 *	a known state at startup.
 */
INT8 udp_init (void)
{
	UINT8 i;
	struct ucb* soc;
	
	if( NO_OF_UDPSOCKETS < 0 )
		return(-1);
	
	if( NO_OF_UDPSOCKETS == 0 )
		return(0);
	
	UDP_DEBUGOUT("Initializing UDP");
	
	for(i=0; i < NO_OF_UDPSOCKETS; i++) {
		soc = &udp_socket[i];			/* Get Socket	*/
		
		soc->state = UDP_STATE_FREE;
		soc->tos = 0;
		soc->locport = 0;
		soc->opts = UDP_OPT_SEND_CS | UDP_OPT_CHECK_CS;	 
		soc->event_listener = 0;
		
		UDP_DEBUGOUT(".");
		
	}
	
	UDP_DEBUGOUT("\n\rUDP Initialized\n\r");
	
	/* Return number of sockets initialized	*/
	
	return(i+1);

}

/** \brief Allocate a free socket in UDP socket pool
 *  \ingroup udp_app_api
 * 	\author 
 *		\li Jari Lahti (jari.lahti@violasystems.com)
 *	\date 26.07.2002
 *	\param tos type of service for socket. For now nothing implemented so 0.
 *	\param listener pointer to callback function that will be invoked by
 *		the TCP/IP stack to inform socket application of #UDP_DATA_ARRIVAL
 *		event (for now only this, in future maybe others!)
 *	\param opts Options for checksum generation & inspection. Can be one
 *		of the following:
 *		\li #UDP_OPT_NONE
 *		\li #UDP_OPT_SEND_CS
 *		\li #UDP_OPT_CHECK_CS
 *		\li #UDP_OPT_SEND_CS | #UDP_OPT_CHECK_CS
 *	\return 
 *		\li -1 - Error
 *		\li >=0 - Handle to reserved socket
 *
 *	Invoke this function to try to obtain a free socket from UDP socket pool.
 *	Function returns a handle to the free socket that is later used for 
 *	accessing the allocated socket.
 */
INT8 udp_getsocket (UINT8 tos, INT32 (*listener)(INT8, UINT8, UINT32, UINT16, UINT16, UINT16), UINT8 opts )
{
	INT8 i;
	struct ucb* soc;
	
	if( NO_OF_UDPSOCKETS < 0 )
		return(-1);
	
	if( NO_OF_UDPSOCKETS == 0 )
		return(-1);
	
	
	if(listener == 0) {
		UDP_DEBUGOUT("ERROR:Event listener function for UDP not specified\r\n");
		return(-1);
	}
	
	UDP_DEBUGOUT("Searching for free UDP socket...\r\n");
	
	for(i=0; i < NO_OF_UDPSOCKETS; i++) {
		soc = &udp_socket[i];			/* Get Socket	*/
	
		if(soc->state == UDP_STATE_FREE) {
			/* We found it	*/
			
			UDP_DEBUGOUT("Free socket found\r\n");
			
			soc->state = UDP_STATE_CLOSED;
			soc->tos = tos;
			soc->locport = 0;
			
			soc->opts = 0;
			
			if(opts & UDP_OPT_SEND_CS)
				soc->opts |= UDP_OPT_SEND_CS;
			if(opts & UDP_OPT_CHECK_CS)
				soc->opts |= UDP_OPT_CHECK_CS;
			
			soc->event_listener = listener;

			/* Return handle	*/
			
			return(i);
		}
	
	}
	
	/* We are there so no socket found	*/
	
	UDP_DEBUGOUT("No UDP socket found\r\n");
	return(-1);

}


/** \brief Release a given socket
 *	\ingroup udp_app_api
 * 	\author 
 *		\li Jari Lahti (jari.lahti@violasystems.com)
 *	\date 26.07.2002
 *	\param sochandle handle of UDP socket to be released
 *	\return 
 *		\li -1 - error
 *		\li >=0 - OK (returns handle to release socket)
 *
 *	This function releases UDP socket. This means that the socket entry is
 *	marked as free and all of the ucb fields are initialized to default
 *	values.
 */
INT8 udp_releasesocket (INT8 sochandle)
{
	struct ucb* soc;
	
	if( NO_OF_UDPSOCKETS < 0 )
		return(-1);
	
	if( NO_OF_UDPSOCKETS == 0 )
		return(-1);
	
	if( sochandle > NO_OF_UDPSOCKETS ) {
		UDP_DEBUGOUT("Socket handle non-valid\r\n");
		return(-1);
	}
	
	if( sochandle < 0 ) {
		UDP_DEBUGOUT("Socket handle non-valid\r\n");
		return(-1);
	}
	
	soc = &udp_socket[sochandle];		/* Get referense	*/
	
	soc->state = UDP_STATE_FREE;
	soc->tos = 0;
	soc->locport = 0;
	soc->opts = UDP_OPT_SEND_CS | UDP_OPT_CHECK_CS;	
	soc->event_listener = 0;

	return(sochandle);

}


/** \brief Open a given UDP socket for communication
 *  \ingroup udp_app_api
 * 	\author 
 *		\li Jari Lahti (jari.lahti@violasystems.com)
 *	\date 26.07.2002
 *	\param sochandle handle to socket to be opened
 *	\param locport local port number
 *	\return
 *		\li -1 - Error
 *		\li >=0 - Handle to opened socket
 *
 *	This function binds local port to given UDP socket and opens
 *	the socket (virtually) in order to enable communication.
 */
INT8 udp_open (INT8 sochandle, UINT16 locport)
{
	struct ucb* soc;
	
	if( NO_OF_UDPSOCKETS < 0 )
		return(-1);
	
	if( NO_OF_UDPSOCKETS == 0 )
		return(-1);
	
	if( sochandle > NO_OF_UDPSOCKETS ) {
		UDP_DEBUGOUT("Socket handle non-valid\r\n");
		return(-1);
	}
	
	if( sochandle < 0 ) {
		UDP_DEBUGOUT("Socket handle non-valid\r\n");
		return(-1);
	}
	
	if(locport == 0) {
		locport=udp_getfreeport();
		return(-1);
	}
	
	soc = &udp_socket[sochandle];		/* Get referense	*/

	soc->state = UDP_STATE_OPENED;
	soc->locport = locport;
	
	return(sochandle);

}



/** \brief Close given socket for communication
 *  \ingroup udp_app_api
 * 	\author 
 *		\li Jari Lahti (jari.lahti@violasystems.com)
 *	\date 26.07.2002
 *	\param sochandle handle to socket to be closed
 *	\return 
 *		\li -1 - Error
 *		\li >=0 - handle to closed socket
 *
 *	Closes a given socket in order to disable further communication
 *	over it.
 */
INT8 udp_close (INT8 sochandle)
{
	struct ucb* soc;
	
	if( NO_OF_UDPSOCKETS < 0 )
		return(-1);
	
	if( NO_OF_UDPSOCKETS == 0 )
		return(-1);
	
	if( sochandle > NO_OF_UDPSOCKETS ) {
		UDP_DEBUGOUT("Socket handle non-valid\r\n");
		return(-1);
	}
	
	if( sochandle < 0 ) {
		UDP_DEBUGOUT("Socket handle non-valid\r\n");
		return(-1);
	}
	
	soc = &udp_socket[sochandle];		/* Get referense	*/

	soc->state = UDP_STATE_CLOSED;
	
	return(sochandle);

}


/** \brief Send data to remote host using given UDP socket

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品视频网| 欧美在线短视频| 美腿丝袜亚洲三区| 麻豆久久一区二区| 日av在线不卡| 麻豆91在线播放免费| 久久 天天综合| 激情成人午夜视频| 国产精品一区二区在线看| 久久精品免费看| 国产精品一线二线三线精华| 国产成人午夜99999| 成人激情综合网站| 91麻豆文化传媒在线观看| 91成人网在线| 欧美一级日韩一级| 国产网站一区二区| 亚洲欧美在线另类| 丝袜美腿亚洲一区二区图片| 老汉av免费一区二区三区 | 色系网站成人免费| 在线欧美日韩国产| 日韩午夜电影在线观看| 国产人妖乱国产精品人妖| 亚洲欧洲精品成人久久奇米网| 亚洲精品五月天| 五月激情综合婷婷| 国产乱码一区二区三区| 成人性视频网站| 欧美日韩一级大片网址| 精品欧美久久久| 亚洲精品中文在线| 裸体一区二区三区| 成人免费毛片a| 欧美日韩一区二区三区不卡| 久久免费精品国产久精品久久久久 | 中文字幕不卡在线| 亚洲愉拍自拍另类高清精品| 九九九精品视频| 欧洲精品视频在线观看| 精品少妇一区二区三区视频免付费 | 美女久久久精品| 91视频在线观看免费| 精品国免费一区二区三区| 亚洲码国产岛国毛片在线| 久久精品国产一区二区| 色婷婷激情一区二区三区| 久久你懂得1024| 亚洲成人av一区二区| 成人午夜私人影院| 日韩视频免费直播| 亚洲成人www| 色综合亚洲欧洲| 国产欧美精品区一区二区三区 | 久久99热99| 欧美理论片在线| 亚洲天堂av一区| 国产成人精品一区二区三区四区| 欧美一区二区视频观看视频| 一区二区三区欧美| 99精品欧美一区二区三区小说| 欧美精品一区在线观看| 奇米影视一区二区三区| 欧美蜜桃一区二区三区| 亚洲综合色在线| 色婷婷亚洲精品| 亚洲日本在线a| 91网站黄www| 国产精品美女久久久久高潮| 国产一区二区调教| 精品成人免费观看| 精品一区二区三区在线播放视频 | 国产精品色在线观看| 国内精品伊人久久久久av影院| 欧美一区二区美女| 青青草伊人久久| 精品福利av导航| 国产91综合网| 国产精品视频在线看| 日韩你懂的在线播放| 亚洲色欲色欲www在线观看| 波多野结衣亚洲| 一区二区在线观看免费| 欧美主播一区二区三区| 亚洲免费av网站| 欧美性欧美巨大黑白大战| 亚洲国产精品久久久男人的天堂| 欧美网站一区二区| 麻豆国产精品一区二区三区| 2020日本不卡一区二区视频| 懂色av噜噜一区二区三区av| 亚洲一区二区三区自拍| 欧美日韩一区高清| 人人狠狠综合久久亚洲| 精品国产亚洲一区二区三区在线观看| 美女诱惑一区二区| 久久久99精品免费观看| 91在线porny国产在线看| 亚洲综合色视频| 精品久久久久香蕉网| 丁香啪啪综合成人亚洲小说| 亚洲激情自拍视频| 欧美一区二区播放| www.欧美日韩国产在线| 亚洲国产精品一区二区久久 | 一本大道久久精品懂色aⅴ| 亚洲成a人片在线不卡一二三区| 在线电影国产精品| 成人精品电影在线观看| 亚洲综合久久久久| www国产精品av| 91福利在线观看| 黄色资源网久久资源365| 亚洲人成网站在线| 精品第一国产综合精品aⅴ| 91老师片黄在线观看| 免费成人小视频| 亚洲天堂av一区| 欧美成人一区二区三区| 99视频国产精品| 蜜桃久久av一区| 一区二区三区在线观看动漫| 欧美电影免费观看完整版| 波多野结衣精品在线| 老鸭窝一区二区久久精品| 亚洲综合免费观看高清完整版在线| 欧美一区二区三区婷婷月色| 99精品视频在线观看| 韩国中文字幕2020精品| 丝袜美腿亚洲综合| 亚洲综合色视频| 中文字幕中文字幕在线一区 | 樱花草国产18久久久久| 久久尤物电影视频在线观看| 欧美欧美欧美欧美首页| 91久久久免费一区二区| 97久久精品人人做人人爽50路| 韩国av一区二区三区| 奇米精品一区二区三区四区| 亚洲成人免费视频| 一区二区三区精品视频在线| 中文字幕日韩精品一区| 久久久亚洲精品一区二区三区| 这里只有精品视频在线观看| 欧洲av在线精品| 欧美色倩网站大全免费| 色8久久精品久久久久久蜜| 99在线精品观看| 91免费看`日韩一区二区| 91丨porny丨国产入口| 97久久精品人人爽人人爽蜜臀| 国产精品综合二区| 国产成人鲁色资源国产91色综| 美女久久久精品| 精品在线播放免费| 国产九色精品成人porny| 国产福利精品导航| 成人动漫中文字幕| 一本色道久久综合精品竹菊| 一本在线高清不卡dvd| 一本色道久久综合狠狠躁的推荐| 99久久久久久| 欧美日韩一区二区三区视频| 91精品在线观看入口| 91精品综合久久久久久| 日韩欧美国产wwwww| 精品va天堂亚洲国产| 中文字幕欧美区| 亚洲人成在线播放网站岛国| 亚洲成人av电影在线| 奇米一区二区三区av| 国产精一品亚洲二区在线视频| 国产盗摄精品一区二区三区在线| 成人久久久精品乱码一区二区三区| 91免费观看视频在线| 欧美日韩三级一区| 亚洲精品一区二区三区四区高清| 国产精品―色哟哟| 香蕉乱码成人久久天堂爱免费| 精品一区二区久久| 99精品热视频| 欧美日韩成人在线| 久久综合精品国产一区二区三区| 国产精品久久久久久户外露出 | 久久国产尿小便嘘嘘| 高清在线不卡av| 欧美日韩亚洲不卡| 久久久噜噜噜久久中文字幕色伊伊| 国产精品久久久久影院色老大| 一级特黄大欧美久久久| 国产在线播放一区三区四| 91小视频在线观看| 久久毛片高清国产| 一区二区三区四区不卡在线| 精品一区二区三区的国产在线播放| 成人一级片网址| 国产三级一区二区三区| 五月婷婷久久综合| www.成人网.com| 久久网这里都是精品|