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

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

?? httptask.c

?? 最新版FreeRTOS, 包擴多種開發平臺的移植
?? C
字號:
/*
	FreeRTOS.org V4.1.1 - Copyright (C) 2003-2006 Richard Barry.

	This file is part of the FreeRTOS.org distribution.

	FreeRTOS.org is free software; you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation; either version 2 of the License, or
	(at your option) any later version.

	FreeRTOS.org is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with FreeRTOS.org; if not, write to the Free Software
	Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

	A special exception to the GPL can be applied should you wish to distribute
	a combined work that includes FreeRTOS.org, without being obliged to provide
	the source code for any proprietary components.  See the licensing section 
	of http://www.FreeRTOS.org for full details of how and when the exception
	can be applied.

	***************************************************************************
	See http://www.FreeRTOS.org for documentation, latest information, license 
	and contact details.  Please ensure to read the configuration and relevant 
	port sections of the online documentation.
	***************************************************************************
*/

/* 
 * Very simple task that responds with a single WEB page to http requests.
 *
 * The WEB page displays task and system status.  A semaphore is used to 
 * wake the task when there is processing to perform as determined by the 
 * interrupts generated by the Ethernet interface.
 */

/* Standard includes. */
#include <string.h>
#include <stdio.h>

/* Tern includes. */
#include "utils\system_common.h"
#include "i2chip_hw.h"
#include "socket.h"

/* FreeRTOS.org includes. */
#include <FreeRTOS.h>
#include <task.h>
#include <semphr.h>

/* The standard http port on which we are going to listen. */
#define httpPORT 80

#define httpTX_WAIT 2

/* Network address configuration. */
const unsigned portCHAR ucMacAddress[] =			{ 12, 128, 12, 34, 56, 78 };
const unsigned portCHAR ucGatewayAddress[] =		{ 192, 168, 2, 1 };
const unsigned portCHAR ucIPAddress[] =				{ 172, 25, 218, 210 };
const unsigned portCHAR ucSubnetMask[] =			{ 255, 255, 255, 0 };

/* The number of sockets this task is going to handle. */
#define httpSOCKET_NUM                       3
unsigned portCHAR ucConnection[ httpSOCKET_NUM ];

/* The maximum data buffer size we can handle. */
#define httpSOCKET_BUFFER_SIZE	2048

/* Standard HTTP response. */
#define httpOUTPUT_OK	"HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n"

/* Hard coded HTML components.  Other data is generated dynamically. */
#define HTML_OUTPUT_BEGIN "\
<HTML><head><meta http-equiv=\"Refresh\" content=\"1\;url=index.htm\"></head>\
<BODY bgcolor=\"#CCCCFF\"><font face=\"arial\"><H2>FreeRTOS.org<sup>tm</sup> + Tern E-Engine<sup>tm</sup></H2>\
<a href=\"http:\/\/www.FreeRTOS.org\">FreeRTOS.org Homepage</a><P>\
<HR>Task status table:\r\n\
<p><font face=\"courier\"><pre>Task          State  Priority  Stack	#<br>\
************************************************<br>"

#define HTML_OUTPUT_END   "\
</font></BODY></HTML>"

/*-----------------------------------------------------------*/

/*
 * Initialise the data structures used to hold the socket status.
 */
static void prvHTTPInit( void );

/*
 * Setup the Ethernet interface with the network addressing information.
 */
static void prvNetifInit( void );

/*
 * Generate the dynamic components of the served WEB page and transmit the 
 * entire page through the socket.
 */
static void prvTransmitHTTP( unsigned portCHAR socket );
/*-----------------------------------------------------------*/

/* This variable is simply incremented by the idle task hook so the number of
iterations the idle task has performed can be displayed as part of the served
page. */
unsigned portLONG ulIdleLoops = 0UL;

/* Data buffer shared by sockets. */
unsigned portCHAR ucSocketBuffer[ httpSOCKET_BUFFER_SIZE ];

/* The semaphore used by the Ethernet ISR to signal that the task should wake
and process whatever caused the interrupt. */
xSemaphoreHandle xTCPSemaphore = NULL;

/*-----------------------------------------------------------*/
void vHTTPTask( void * pvParameters )
{
portSHORT i, sLen;
unsigned portCHAR ucState;

	( void ) pvParameters;

    /* Create the semaphore used to communicate between this task and the
    WIZnet ISR. */
    vSemaphoreCreateBinary( xTCPSemaphore );

	/* Make sure everything is setup before we start. */
	prvNetifInit();
	prvHTTPInit();

	for( ;; )
	{
		/* Wait until the ISR tells us there is something to do. */
    	xSemaphoreTake( xTCPSemaphore, portMAX_DELAY );

		/* Check each socket. */
		for( i = 0; i < httpSOCKET_NUM; i++ )
		{
			ucState = select( i, SEL_CONTROL );

			switch (ucState)
			{
				case SOCK_ESTABLISHED :  /* new connection established. */

					if( ( sLen = select( i, SEL_RECV ) ) > 0 )
					{
						if( sLen > httpSOCKET_BUFFER_SIZE ) 
						{
							sLen = httpSOCKET_BUFFER_SIZE;
						}

						disable();
						
						sLen = recv( i, ucSocketBuffer, sLen );    

						if( ucConnection[ i ] == 1 )
						{	
							/* This is our first time processing a HTTP
							 request on this connection. */
							prvTransmitHTTP( i );
							ucConnection[i] = 0;
						}
						enable();
					}
					break;

				case SOCK_CLOSE_WAIT :

					close(i);
					break;

				case SOCK_CLOSED :

					ucConnection[i] = 1;
					socket( i, SOCK_STREAM, 80, 0x00 );
					NBlisten( i ); /* reinitialize socket. */
					break;
			}
		}
	}
}
/*-----------------------------------------------------------*/

static void prvHTTPInit( void )
{
unsigned portCHAR ucIndex;

	/* There are 4 total sockets available; we will claim 3 for HTTP. */
	for(ucIndex = 0; ucIndex < httpSOCKET_NUM; ucIndex++)
	{
		socket( ucIndex, SOCK_STREAM, httpPORT, 0x00 );
		NBlisten( ucIndex );
		ucConnection[ ucIndex ] = 1;
	}
}
/*-----------------------------------------------------------*/

static void prvNetifInit( void )
{
	i2chip_init();
	initW3100A();

	setMACAddr( ( unsigned portCHAR * ) ucMacAddress );
	setgateway( ( unsigned portCHAR * ) ucGatewayAddress );
	setsubmask( ( unsigned portCHAR * ) ucSubnetMask );
	setIP( ( unsigned portCHAR * ) ucIPAddress );

	/* See definition of 'sysinit' in socket.c
	 - 8 KB transmit buffer, and 8 KB receive buffer available.  These buffers
	   are shared by all 4 channels.
	 - (0x55, 0x55) configures the send and receive buffers at 
		httpSOCKET_BUFFER_SIZE bytes for each of the 4 channels. */
	sysinit( 0x55, 0x55 );
}
/*-----------------------------------------------------------*/

static void prvTransmitHTTP(unsigned portCHAR socket)
{
extern portSHORT usCheckStatus;

	/* Send the http and html headers. */
	send( socket, ( unsigned portCHAR * ) httpOUTPUT_OK, strlen( httpOUTPUT_OK ) );
	send( socket, ( unsigned portCHAR * ) HTML_OUTPUT_BEGIN, strlen( HTML_OUTPUT_BEGIN ) );

	/* Generate then send the table showing the status of each task. */
	vTaskList( ucSocketBuffer );
 	send( socket, ( unsigned portCHAR * ) ucSocketBuffer, strlen( ucSocketBuffer ) );

	/* Send the number of times the idle task has looped. */
    sprintf( ucSocketBuffer, "</pre></font><p><br>The idle task has looped 0x%08lx times<br>", ulIdleLoops );
	send( socket, ( unsigned portCHAR * ) ucSocketBuffer, strlen( ucSocketBuffer ) );

	/* Send the tick count. */
    sprintf( ucSocketBuffer, "The tick count is 0x%08lx<br>", xTaskGetTickCount() );
	send( socket, ( unsigned portCHAR * ) ucSocketBuffer, strlen( ucSocketBuffer ) );

	/* Show a message indicating whether or not the check task has discovered 
	an error in any of the standard demo tasks. */
    if( usCheckStatus == 0 )
    {
	    sprintf( ucSocketBuffer, "No errors detected." );
		send( socket, ( unsigned portCHAR * ) ucSocketBuffer, strlen( ucSocketBuffer ) );
    }
    else
    {
	    sprintf( ucSocketBuffer, "<font color=\"red\">An error has been detected in at least one task %x.</font><p>", usCheckStatus );
		send( socket, ( unsigned portCHAR * ) ucSocketBuffer, strlen( ucSocketBuffer ) );
    }

	/* Finish the page off. */
	send( socket, (unsigned portCHAR*)HTML_OUTPUT_END, strlen(HTML_OUTPUT_END));

	/* Must make sure the data is gone before closing the socket. */
	while( !tx_empty( socket ) )
    {
    	vTaskDelay( httpTX_WAIT );
    }
	close(socket);
}
/*-----------------------------------------------------------*/

void vApplicationIdleHook( void )
{
	ulIdleLoops++;
}




















?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久成人黄色影片| 五月天中文字幕一区二区| 亚洲精品一区二区三区四区高清 | 97aⅴ精品视频一二三区| 国产毛片精品视频| 国产一区在线看| 国产成人免费在线观看不卡| 国产麻豆精品久久一二三| 韩国视频一区二区| 国产精品自拍三区| 成人激情动漫在线观看| 成人福利视频在线| 91性感美女视频| 在线中文字幕一区| 欧美色图第一页| 欧美精品精品一区| 精品国产三级电影在线观看| 精品久久人人做人人爽| 国产欧美日韩久久| 亚洲免费观看高清| 亚洲高清不卡在线| 久久不见久久见中文字幕免费| 久久99热国产| 粉嫩嫩av羞羞动漫久久久| 99riav久久精品riav| 色欧美乱欧美15图片| 欧美日韩精品福利| 久久天堂av综合合色蜜桃网| 欧美国产精品专区| 一区二区三区日本| 日本在线观看不卡视频| 狠狠色综合色综合网络| 成人久久18免费网站麻豆| 91精品1区2区| 日韩美女在线视频| 成人欧美一区二区三区视频网页| 亚洲综合一二三区| 国内精品写真在线观看| 成人app在线观看| 欧美精品久久久久久久多人混战 | 色综合中文字幕国产 | 亚洲成av人影院| 奇米色777欧美一区二区| 福利视频网站一区二区三区| 色偷偷88欧美精品久久久| 欧美日韩成人综合天天影院| 精品国产一区二区三区忘忧草 | 国产清纯白嫩初高生在线观看91| 亚洲精品伦理在线| 久久99久久久欧美国产| 97久久精品人人做人人爽| 717成人午夜免费福利电影| 国产亚洲va综合人人澡精品| 亚洲狠狠丁香婷婷综合久久久| 日韩国产欧美在线播放| 成人性生交大合| 欧美精品丝袜中出| 中文天堂在线一区| 日本va欧美va精品| 色综合中文综合网| 日本亚洲三级在线| 成人18视频在线播放| 亚洲第一综合色| 欧美日韩免费一区二区三区 | 精品国产不卡一区二区三区| 国产精品毛片久久久久久久| 久久66热re国产| 日韩欧美电影在线| 成人黄色小视频| 粉嫩欧美一区二区三区高清影视| 欧美三级电影在线看| 久久久久国产精品厨房| 婷婷丁香久久五月婷婷| 99精品欧美一区二区三区小说| 精品女同一区二区| 日本成人在线网站| 欧美视频一二三区| 欧美国产激情二区三区| 蜜臀91精品一区二区三区| 91日韩一区二区三区| 国产性做久久久久久| 久久成人免费日本黄色| 欧美日韩国产一区| 一区二区三区在线看| 成人久久久精品乱码一区二区三区| 精品久久久久久久久久久久久久久| 性做久久久久久免费观看欧美| 一本久道久久综合中文字幕 | 欧美大黄免费观看| 亚洲va欧美va人人爽| 在线这里只有精品| 亚洲美女屁股眼交3| 成人免费黄色大片| 国产片一区二区| 国产一区美女在线| 日韩三级免费观看| 全国精品久久少妇| 91精品国产色综合久久不卡电影| 亚洲自拍偷拍麻豆| 欧美区一区二区三区| 亚洲国产日韩av| 欧美日韩国产123区| 亚洲一二三四在线观看| 在线观看日韩毛片| 亚洲国产精品麻豆| 欧美日韩aaa| 日韩专区一卡二卡| 欧美一区二区三区男人的天堂| 日韩av电影一区| 日韩一区二区影院| 狠狠色丁香九九婷婷综合五月| 精品毛片乱码1区2区3区| 久久av资源网| 国产精品青草综合久久久久99| 成人激情文学综合网| 中文字幕在线不卡视频| 欧美精品v国产精品v日韩精品| 亚洲午夜视频在线观看| 欧美精品第1页| 亚洲成av人影院| 91精品国模一区二区三区| 日韩电影在线免费观看| 91精品国产综合久久久久久| 理论片日本一区| 久久噜噜亚洲综合| 99精品黄色片免费大全| 亚洲激情自拍视频| 欧美日韩成人在线| 激情深爱一区二区| 国产精品久久久久天堂| 欧美三级电影精品| 久久99精品久久久久久| 国产视频一区不卡| 91成人免费电影| 日本va欧美va精品发布| 国产蜜臀97一区二区三区| 色综合激情久久| 美国一区二区三区在线播放| 久久久久久久性| 欧美综合视频在线观看| 欧美aaa在线| 国产精品黄色在线观看| 6080日韩午夜伦伦午夜伦| 国产精品自拍av| 亚洲一区二区在线观看视频| 精品噜噜噜噜久久久久久久久试看| 国产成人一区在线| 夜夜嗨av一区二区三区网页| 日韩欧美国产综合| 99久久久国产精品| 日本伊人色综合网| 亚洲免费在线观看| 欧美xxxxxxxxx| 色欧美88888久久久久久影院| 极品销魂美女一区二区三区| 亚洲欧美偷拍三级| 亚洲精品一区二区三区在线观看 | 在线看日本不卡| 极品少妇xxxx精品少妇偷拍| 亚洲免费av在线| 精品成人在线观看| 在线精品视频免费观看| 国产成人午夜视频| 美女尤物国产一区| 亚洲影院在线观看| 国产精品美女久久久久久| 日韩免费性生活视频播放| 91成人在线观看喷潮| 国产成人高清视频| 奇米影视在线99精品| 亚洲猫色日本管| 久久精品在线观看| 日韩一级高清毛片| 欧美色大人视频| 91在线云播放| 成人免费不卡视频| 国产在线一区二区综合免费视频| 亚洲国产综合色| 亚洲精品伦理在线| 国产精品久久久久桃色tv| 精品福利av导航| 欧美人xxxx| 欧美日韩成人综合在线一区二区| 99久久国产综合精品色伊| 国产成人无遮挡在线视频| 免费在线观看不卡| 日韩电影在线一区二区| 亚洲国产欧美另类丝袜| 中文字幕亚洲不卡| 亚洲国产精品成人综合色在线婷婷 | 欧美日韩高清一区二区| 99久久婷婷国产综合精品电影| 激情综合色播激情啊| 日本成人超碰在线观看| 亚洲成人免费视| 夜夜精品浪潮av一区二区三区| 自拍偷拍欧美精品| 亚洲视频中文字幕| 成人免费一区二区三区视频 | 国产精品理论片|