<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ethernet TCP/IP Source Code Driver Project</title>
	<atom:link href="http://www.ethernet-tcp-ip-source-code-driver.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ethernet-tcp-ip-source-code-driver.com</link>
	<description>Ethernet TCP/IP Source Code Driver Project</description>
	<lastBuildDate>Wed, 05 Oct 2011 08:31:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Links to useful sites</title>
		<link>http://www.ethernet-tcp-ip-source-code-driver.com/links/links-to-useful-sites</link>
		<comments>http://www.ethernet-tcp-ip-source-code-driver.com/links/links-to-useful-sites#comments</comments>
		<pubDate>Wed, 20 Jul 2011 08:08:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Links]]></category>

		<guid isPermaLink="false">http://www.ethernet-tcp-ip-source-code-driver.com/?p=153</guid>
		<description><![CDATA[Embedded Developer All Embedded EG3 Arm Atmel Microchip Embedded Programmer Electronic Consultant Electronic Engineer]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.embeddeddeveloper.com/" target="_blank">Embedded Developer</a></p>
<p><a href="http://www.allembedded.com/" target="_blank">All Embedded</a></p>
<p><a href="http://www.eg3.com/" target="_blank">EG3</a></p>
<p><a href="http://www.arm.com" target="_blank">Arm</a></p>
<p><a href="http://www.atmel.com/" target="_blank">Atmel</a></p>
<p><a href="http://www.microchip.com/" target="_blank">Microchip</a></p>
<p><a href="http://www.embedded-programmer.com/index.php" target="_blank">Embedded Programmer</a></p>
<p><a href="http://www.electronic-consultant.co.uk/index.php" target="_blank">Electronic Consultant</a></p>
<p><a href="http://www.electronic-engineer.co.uk/index.php" target="_blank">Electronic Engineer</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ethernet-tcp-ip-source-code-driver.com/links/links-to-useful-sites/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>f) Using HTTP Client</title>
		<link>http://www.ethernet-tcp-ip-source-code-driver.com/using-the-driver-in-your-project/f-using-http-client</link>
		<comments>http://www.ethernet-tcp-ip-source-code-driver.com/using-the-driver-in-your-project/f-using-http-client#comments</comments>
		<pubDate>Tue, 10 May 2011 19:40:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[04. Using The Driver In Your Project]]></category>

		<guid isPermaLink="false">http://www.ethernet-tcp-ip-source-code-driver.com/?p=140</guid>
		<description><![CDATA[The driver includes a really useful HTTP client fucntion.  This allows the driver to connect to a remote HTTP server (a typical web server) and download individual files.  This is a great way of allowing embedded devices to access up to date information via the internet which may be uploaded and updated using standard web [...]]]></description>
			<content:encoded><![CDATA[<p>The driver includes a really useful HTTP client fucntion.  This allows the driver to connect to a remote HTTP server (a typical web server) and download individual files.  This is a great way of allowing embedded devices to access up to date information via the internet which may be uploaded and updated using standard web publishing tools or web services.  The files downaloded can be any type of file, not just html files, allowing your device to periodically updated it&#8217;s own media files for instance.</p>
<h4>Requesting A File From A HTTP Server</h4>
<p>Call the start_http_client_request function:</p>
<pre><code>
CONSTANT BYTE REMOTE_HTTP_SERVER_STRING[] = {"www.somedomain.com"};
CONSTANT BYTE REMOTE_HTTP_FILENAME_STRING[] = {"devices/file01.html"};

	if (start_http_client_request(REMOTE_HTTP_SERVER_STRING, REMOTE_HTTP_FILENAME_STRING))
	{
		//The request was started.
		//The HTTP_CLIENT_REQUEST_RECEIVE_FUNCTION function will deal with receiving the response if sucessful
	}
</code></pre>
<h4>Processing Received HTTP Files</h4>
<p>&nbsp;</p>
<p>Define this with your applications function that will receive the files from the http server:</p>
<p style="padding-left: 30px;">HTTP_CLIENT_REQUEST_RECEIVE_FUNCTION</p>
<p>Your function definition needs to be:</p>
<pre><code>
void my_function_name (BYTE op_code, DWORD content_length, BYTE *requested_host_url, BYTE *requested_filename)
</code></pre>
<p>op_code</p>
<p style="padding-left: 30px;">0 = error &#8211; http client failed.</p>
<p style="padding-left: 30px;">1 = OK.  First section of TCP file data ready to be read.  Function should use the tcp_read_next_rx_byte or tcp_read_rx_array functions to read all of the data from this TCP packet before returning.</p>
<p style="padding-left: 30px;">2 = Next section of TCP file data ready to be read.  Function should use the tcp_read_next_rx_byte or tcp_read_rx_array functions to read all of the data from this TCP packet before returning.</p>
<p style="padding-left: 30px;">0xff = The remote server has closed the connection (this will mark the end of the file if content-length was not provided by the server.</p>
<p>content_length</p>
<p style="padding-left: 30px;">The file length specified by the server at the start of the response.  Note that the server is not requried to specify this (and many don&#8217;t) and in this instance the value will be 0xffffffff;</p>
<p>requested_host_url</p>
<p style="padding-left: 30px;">Pointer to a null terminated string containing the host url that was originally requested</p>
<p>requested_filename</p>
<p style="padding-left: 30px;">Pointer to a null terminated string containing the filename that was originally requested</p>
<p>Read each data byte in the packet using:</p>
<pre><code>
    while (tcp_read_next_rx_byte(&amp;my_byte_variable))
    {
</code></pre>
<p>This function is always called after a request, either to either indicate the request failed, or with 1 or more packets of file data.  If the request was sucessful the file data packets will be received in the correct order and the tcp data may simply be stored as it is read.  The HTTP Client get request headers specify that no encoding may be used by the remote server so the file will be received exactly as it is stored on the server.</p>
<p>An example function</p>
<pre><code>
//*************************************************
//*************************************************
//********** PROCESS HTTP CLIENT REQUEST **********
//*************************************************
//*************************************************
void process_http_client_request (BYTE op_code, DWORD content_length, BYTE *requested_host_url, BYTE *requested_filename)
{
	static DWORD byte_id;
	BYTE data;

	if (op_code == 0)
	{
		//--------------------------
		//----- REQUEST FAILED -----
		//--------------------------

		return;
	}
	else if (op_code == 0xff)
	{
		//-----------------------------------------------
		//----- REMOTE SERVER HAS CLOSED CONNECTION -----
		//-----------------------------------------------
		//(This will mark the end of the file if content-length was not provided by the server)

		return;
	}
	else if (op_code == 1)
	{
		//-------------------------------------
		//----- FIRST PACKET OF FILE DATA -----
		//-------------------------------------
		byte_id = 0;		

	}

	//-------------------------
	//----- READ THE DATA -----
	//-------------------------
	while (tcp_read_next_rx_byte(&amp;data))
	{
		//----- GOT NEXT BYTE -----
		//data has the next byte

		byte_id++;
		if (byte_id &gt;= content_length)
		{
			//----- WE HAVE READ ALL OF THE FILE DATA -----

		}
	}
}
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.ethernet-tcp-ip-source-code-driver.com/using-the-driver-in-your-project/f-using-http-client/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sample Projects</title>
		<link>http://www.ethernet-tcp-ip-source-code-driver.com/example-circuits/sample-projects</link>
		<comments>http://www.ethernet-tcp-ip-source-code-driver.com/example-circuits/sample-projects#comments</comments>
		<pubDate>Mon, 03 May 2010 13:43:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[05. Example Circuits]]></category>

		<guid isPermaLink="false">http://www.ethernet-tcp-ip-source-code-driver.com/?p=114</guid>
		<description><![CDATA[Download the sample project circuit diagrams here.]]></description>
			<content:encoded><![CDATA[<p>Download the sample project circuit diagrams <a href="http://www.embedded-code.com/download/tcp_ip_driver_schematics.pdf" target="_blank">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ethernet-tcp-ip-source-code-driver.com/example-circuits/sample-projects/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>c) Special Note Regarding NIC Interfacing</title>
		<link>http://www.ethernet-tcp-ip-source-code-driver.com/11-revision-history/special-note-regarding-nic-interfacing</link>
		<comments>http://www.ethernet-tcp-ip-source-code-driver.com/11-revision-history/special-note-regarding-nic-interfacing#comments</comments>
		<pubDate>Mon, 03 May 2010 13:39:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[11. Revision History]]></category>

		<guid isPermaLink="false">http://www.ethernet-tcp-ip-source-code-driver.com/?p=109</guid>
		<description><![CDATA[Please see the: ‘Signal Noise Issues With MMC &#38; SD Memory Cards (&#38; Clocked Devices In General)&#8217; page in the resources area of our web site for details of a common signal noise problem experienced when using clocked devices such as network interface controllers. Many of the PIC microcontrollers have silicon bug issues that are [...]]]></description>
			<content:encoded><![CDATA[<p>Please see the:</p>
<p style="padding-left: 30px;"><a href="http://www.embedded-code.com/source-code/resources/signal-noise-issues-with-mmc-sd-memory-cards-clocked-devices-in-general" target="_blank"> ‘Signal Noise Issues With MMC &amp; SD Memory Cards (&amp; Clocked Devices In General)&#8217;</a></p>
<p>page in the resources area of our web site for details of a common signal noise problem experienced when using clocked devices such as network interface controllers.</p>
<p>Many of the PIC microcontrollers have silicon bug issues that are detailed in the Microchip errata sheets.  If you are experiencing problems with a PIC microcontroller and its nic access check the errata sheet for the device you are using.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ethernet-tcp-ip-source-code-driver.com/11-revision-history/special-note-regarding-nic-interfacing/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>b) Changes To The Sample Project Files</title>
		<link>http://www.ethernet-tcp-ip-source-code-driver.com/11-revision-history/changes-to-the-sample-project-files</link>
		<comments>http://www.ethernet-tcp-ip-source-code-driver.com/11-revision-history/changes-to-the-sample-project-files#comments</comments>
		<pubDate>Mon, 03 May 2010 13:38:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[11. Revision History]]></category>

		<guid isPermaLink="false">http://www.ethernet-tcp-ip-source-code-driver.com/?p=107</guid>
		<description><![CDATA[V1.00 First released version. V1.01 CrossWorks ARM compiler with NXP LPC2000 series 32bit ARM microcontroller support added. V1.02 No changes V1.03 No changes]]></description>
			<content:encoded><![CDATA[<h4>V1.00</h4>
<p>First released version.</p>
<h4>V1.01</h4>
<p>CrossWorks ARM compiler with NXP LPC2000 series 32bit ARM microcontroller support added.</p>
<h4>V1.02</h4>
<p>No changes</p>
<h4>V1.03</h4>
<p>No changes</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ethernet-tcp-ip-source-code-driver.com/11-revision-history/changes-to-the-sample-project-files/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>a) Changes To The TCP/IP Driver Files</title>
		<link>http://www.ethernet-tcp-ip-source-code-driver.com/11-revision-history/changes-to-the-tcpip-driver-files</link>
		<comments>http://www.ethernet-tcp-ip-source-code-driver.com/11-revision-history/changes-to-the-tcpip-driver-files#comments</comments>
		<pubDate>Mon, 03 May 2010 13:38:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[11. Revision History]]></category>

		<guid isPermaLink="false">http://www.ethernet-tcp-ip-source-code-driver.com/?p=105</guid>
		<description><![CDATA[V1.00 First released version. V1.01 ARP handling minor error fix In eth-arp.c file, arp_process_rx function All of the initial if(! checks should return ‘1’. Previously 2 off returned ‘0’. In eth-main.c, tcp_ip_process_stack function. Locate case SM_ETH_STACK_ARP: And add this before the break; statement: nic_rx_dump_packet(); //Ensure packet has been dumped NetBIOS handling bad initialisation fix In [...]]]></description>
			<content:encoded><![CDATA[<h4>V1.00</h4>
<p>First released version.</p>
<h4>V1.01</h4>
<p>ARP handling minor error fix</p>
<p>In eth-arp.c file, arp_process_rx function</p>
<p style="padding-left: 30px;">All of the initial  if(!  checks should return ‘1’.  Previously 2 off returned ‘0’.</p>
<p>In eth-main.c, tcp_ip_process_stack function.</p>
<p style="padding-left: 30px;">Locate case SM_ETH_STACK_ARP:</p>
<p style="padding-left: 30px;">And add this before the break; statement:</p>
<p style="padding-left: 60px;">nic_rx_dump_packet();		//Ensure packet has been dumped</p>
<p>NetBIOS handling bad initialisation fix</p>
<p style="padding-left: 30px;">In eth-netbios.c, process_netbios_nameservice function</p>
<p style="padding-left: 30px;">Change the following line:</p>
<p style="padding-left: 60px;">static BYTE our_udp_socket;</p>
<p style="padding-left: 30px;">to this:</p>
<p style="padding-left: 60px;">static BYTE our_udp_socket = UDP_INVALID_SOCKET;</p>
<p>All sizeof() references to struct definitions changed to use a defined length constant.  All array read and writes from and to struct’s changed to individual read and writes to the struct members.  This is to deal with 32bit compilers which may add pad bytes within a struct (for instance sizeof(MAC_ADDR_LENGTH) will often be 8 not 6 due to the addition of pad bytes).</p>
<p>DHCP timeouts (DHCP_DISCOVER_TIMEOUT	and DHCP_REQUEST_TIMEOUT) changed from 4 seconds to 10 seconds to deal with routers / DHCP servers that may be too busy to respond immediately.</p>
<p>CrossWorks ARM compiler with NXP LPC2000 series 32bit ARM microcontroller support added.</p>
<h4>V1.02</h4>
<p>Added HTTP client functionality.</p>
<p>Added PIC32 built in Ethernet peripheral support.</p>
<p>At the end of the six email_return_smtp_ functions in eth-smtp.c and three email_return_pop3_ functions in eth-pop3.c changed the end of the do loop from:</p>
<pre><code>    while (p_source_string++ != 0x00);</code></pre>
<p>to</p>
<pre><code>    while (*p_source_string++ != 0x00);</code></pre>
<p>Correction for NXP LPC2000 nic.c driver file.  The interrupt line from the KSZ8001 phy used in the sample project would not be cleared.  Corrected in nic_check_for_rx() by replacing the following line:</p>
<pre><code>    nic_write_phy_register(NIC_PHY_IRQ_CTRL_STATUS_REG, (NIC_PHY_IRQ_CTRL_STATUS_VALUE | 0x00ff));</code></pre>
<p>with</p>
<pre><code>    data = nic_read_phy_register (NIC_PHY_IRQ_CTRL_STATUS_REG);</code></pre>
<p>In process_http() added check for a client disconnecting a socket part way through downloading a file (sometimes a browser may close a socket to stop downloading any further data).</p>
<p>Change this:</p>
<pre><code>		//----- PROCESS EACH SOCKET -----
		switch (http_socket[socket_number].sm_http_state)</code></pre>
<p>To this:</p>
<pre><code>		//----- PROCESS EACH SOCKET -----
		if(!tcp_is_socket_connected(http_socket[socket_number].tcp_socket_id))			//If a socket has disconnected during a transfer reset its state
			http_socket[socket_number].sm_http_state = HTTP_WAITING_FOR_CONNECTION;

		switch (http_socket[socket_number].sm_http_state)</code></pre>
<p>Minor improvements to the DNS functions.</p>
<p>Fixed TCP issue whereby if server sends FIN ACK with data the TCP stack was not dealing with the FIN.  It now closes the connection as it should.</p>
<p>Added check for LPC2000 driver KSZ8001 PHY link is down when link status changes to avoid long delay before checks timeout when cable is disconnected.</p>
<p><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves /> <w:TrackFormatting /> <w:PunctuationKerning /> <w:ValidateAgainstSchemas /> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF /> <w:LidThemeOther>EN-GB</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables /> <w:SnapToGridInCell /> <w:WrapTextWithPunct /> <w:UseAsianBreakRules /> <w:DontGrowAutofit /> <w:SplitPgBreakAndParaMark /> <w:DontVertAlignCellWithSp /> <w:DontBreakConstrainedForcedTables /> <w:DontVertAlignInTxbx /> <w:Word11KerningPairs /> <w:CachedColBalance /> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> <m:mathPr> <m:mathFont m:val="Cambria Math" /> <m:brkBin m:val="before" /> <m:brkBinSub m:val="&#45;-" /> <m:smallFrac m:val="off" /> <m:dispDef /> <m:lMargin m:val="0" /> <m:rMargin m:val="0" /> <m:defJc m:val="centerGroup" /> <m:wrapIndent m:val="1440" /> <m:intLim m:val="subSup" /> <m:naryLim m:val="undOvr" /> </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"   DefSemiHidden="true" DefQFormat="false" DefPriority="99"   LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Normal" /> <w:LsdException Locked="false" Priority="9" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="heading 1" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9" /> <w:LsdException Locked="false" Priority="39" Name="toc 1" /> <w:LsdException Locked="false" Priority="39" Name="toc 2" /> <w:LsdException Locked="false" Priority="39" Name="toc 3" /> <w:LsdException Locked="false" Priority="39" Name="toc 4" /> <w:LsdException Locked="false" Priority="39" Name="toc 5" /> <w:LsdException Locked="false" Priority="39" Name="toc 6" /> <w:LsdException Locked="false" Priority="39" Name="toc 7" /> <w:LsdException Locked="false" Priority="39" Name="toc 8" /> <w:LsdException Locked="false" Priority="39" Name="toc 9" /> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption" /> <w:LsdException Locked="false" Priority="10" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Title" /> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font" /> <w:LsdException Locked="false" Priority="11" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtitle" /> <w:LsdException Locked="false" Priority="22" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Strong" /> <w:LsdException Locked="false" Priority="20" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Emphasis" /> <w:LsdException Locked="false" Priority="59" SemiHidden="false"    UnhideWhenUsed="false" Name="Table Grid" /> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text" /> <w:LsdException Locked="false" Priority="1" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="No Spacing" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 1" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 1" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 1" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 1" /> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision" /> <w:LsdException Locked="false" Priority="34" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="List Paragraph" /> <w:LsdException Locked="false" Priority="29" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Quote" /> <w:LsdException Locked="false" Priority="30" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Quote" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 1" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 1" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 1" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 1" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 1" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 2" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 2" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 2" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 2" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 2" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 2" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 2" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 2" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 2" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 3" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 3" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 3" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 3" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 3" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 3" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 3" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 3" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 3" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 4" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 4" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 4" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 4" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 4" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 4" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 4" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 4" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 4" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 5" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 5" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 5" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 5" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 5" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 5" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 5" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 5" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 5" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 6" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 6" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 6" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 6" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 6" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 6" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 6" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 6" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 6" /> <w:LsdException Locked="false" Priority="19" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis" /> <w:LsdException Locked="false" Priority="21" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis" /> <w:LsdException Locked="false" Priority="31" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference" /> <w:LsdException Locked="false" Priority="32" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Reference" /> <w:LsdException Locked="false" Priority="33" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Book Title" /> <w:LsdException Locked="false" Priority="37" Name="Bibliography" /> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading" /> </w:LatentStyles> </xml><![endif]--><!--[if gte mso 10]><br />
<mce:style><!   /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Table Normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-priority:99; 	mso-style-qformat:yes; 	mso-style-parent:""; 	mso-padding-alt:0mm 5.4pt 0mm 5.4pt; 	mso-para-margin:0mm; 	mso-para-margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} --></p>
<p><!--[endif] --></p>
<p class="MsoNormal">Changed all .val to .Val to provide easier compatibility with Microchip C32 compiler which now clashes with .val</p>
<p class="MsoNormal">http_transmit_next_response_packet() function updated with new file_offfset variable to fix bug when using HTTP_USING_BINARY_FILES or HTTP_USING_FILING_SYSTEM defines.</p>
<h4>V1.03</h4>
<p>Minor correction of &#8220;.val&#8221; usage to &#8220;.Val&#8221;</p>
<h4>V1.04</h4>
<p>In eth-http.c corrected issue where http_setup_response would be called twice by modifying this:</p>
<pre><code>
		if (http_post_content_bytes_remaining)
		{
			//------------------------------------------------------------------------------------------------
			//----- THERE IS MORE CONTENT TO BE RECEIVED FOR THIS POST REQUEST IN SUBSEQUENT TCP PACKETS -----
			//------------------------------------------------------------------------------------------------
			//Exit now and flag new socket state as still receiving a post request (this will also block other post requests until its complete)
			http_socket[socket_number].sm_http_state = HTTP_PROCESSING_POST;
			tcp_dump_rx_packet();
			return;
		}			

	}
#endif
</code></pre>
<p>to this:</p>
<pre><code>
		if (http_post_content_bytes_remaining)
		{
			//------------------------------------------------------------------------------------------------
			//----- THERE IS MORE CONTENT TO BE RECEIVED FOR THIS POST REQUEST IN SUBSEQUENT TCP PACKETS -----
			//------------------------------------------------------------------------------------------------
			//Exit now and flag new socket state as still receiving a post request (this will also block other post requests until its complete)
			http_socket[socket_number].sm_http_state = HTTP_PROCESSING_POST;
			tcp_dump_rx_packet();
		}
		return;
	}
#endif
</code></pre>
<p>Fixed tcp client issue in eth-http-client.c</p>
<p>Customer provided driver for the Stellaris LM3S6965 NIC added.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ethernet-tcp-ip-source-code-driver.com/11-revision-history/changes-to-the-tcpip-driver-files/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>b) Support</title>
		<link>http://www.ethernet-tcp-ip-source-code-driver.com/troubleshooting/support</link>
		<comments>http://www.ethernet-tcp-ip-source-code-driver.com/troubleshooting/support#comments</comments>
		<pubDate>Mon, 03 May 2010 13:26:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[10. Troubleshooting]]></category>

		<guid isPermaLink="false">http://www.ethernet-tcp-ip-source-code-driver.com/?p=103</guid>
		<description><![CDATA[Please visit the support section of the embedded-code.com web site if you have any queries regarding this driver. Please note that our support covers the use of this driver with the reference designs in this manual. Where possible we will try to help solve any problems if the code is used with other devices or [...]]]></description>
			<content:encoded><![CDATA[<p>Please visit the support section of the embedded-code.com web site if you have any queries regarding this driver.  Please note that our support covers the use of this driver with the reference designs in this manual.  Where possible we will try to help solve any problems if the code is used with other devices or compilers, but given the huge number of devices and compilers available we are unable to guarantee &#8216;out of the box&#8217; compatibility. If you plan to use the source code with a different processor, microcontroller and/or compiler you should ensure that you have sufficient programming expertise to carry out any modifications that may be required to the source code.</p>
<p>If you do encounter issues using the driver with other compilers or devices and are able to give us details of the issue you encountered we will try and include changes or notes across our range of drivers to help other programmers avoid similar issues in the future.  Please use the contact us page of our web site to report any such issues discovered.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ethernet-tcp-ip-source-code-driver.com/troubleshooting/support/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>a) General Troubleshooting Tips</title>
		<link>http://www.ethernet-tcp-ip-source-code-driver.com/troubleshooting/general-troubleshooting-tips</link>
		<comments>http://www.ethernet-tcp-ip-source-code-driver.com/troubleshooting/general-troubleshooting-tips#comments</comments>
		<pubDate>Mon, 03 May 2010 13:26:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[10. Troubleshooting]]></category>

		<guid isPermaLink="false">http://www.ethernet-tcp-ip-source-code-driver.com/?p=101</guid>
		<description><![CDATA[Some common troubleshooting tips: Double check the IO pin definitions in the drivers nic.h header file are correct Verify with a scope that all of the control and data pins to the nic are working correctly. Check that no other device on a serial or parallel data bus to the network interface controller IC is [...]]]></description>
			<content:encoded><![CDATA[<p>Some common troubleshooting tips:</p>
<p style="padding-left: 30px;">Double check the IO pin definitions in the drivers nic.h header file are correct</p>
<p style="padding-left: 30px;">Verify with a scope that all of the control and data pins to the nic are working correctly.</p>
<p style="padding-left: 30px;">Check that no other device on a serial or parallel data bus to the network interface controller IC is outputting while the driver is trying to communicate with the nic.</p>
<p style="padding-left: 30px;">Check that your microcontroller is not resetting due to a watchdog timer timeout.</p>
<p style="padding-left: 30px;">See the:</p>
<p style="padding-left: 60px;"><a href="http://www.embedded-code.com/source-code/resources/signal-noise-issues-with-mmc-sd-memory-cards-clocked-devices-in-general" target="_blank">‘Signal Noise Issues With MMC &amp; SD Memory Cards (&amp; Clocked Devices In General)&#8217;</a></p>
<p style="padding-left: 30px;">page in the resources area of our web site for details of a common signal noise problem experienced when using clocked devices such as network interface controllers.</p>
<p style="padding-left: 30px;">If you are using a 32bit device ensure that for the driver files WORD = 16 bits and DWORD = 32 bits.</p>
<p style="padding-left: 30px;">If you suddenly find that you don’t get a response from a remote server or router, for instance when trying to log onto a POP3 or SMTP server or requesting a DNS response from your networks router, bear in mind that you may deliberately not be getting a response.  While debugging you can easily upset servers by, for instance, break pointing code and not letting a TCP connection be properly closed at the end of an operation.  Alternatively your router may have built in protection mechanisms enabled to protect against denial of service (DOS) attacks which cause it to start ignoring repeated requests for the same thing.  Typically waiting a little while will solve the problem as these types of protection mechanisms are automatically reset by a timer.  Alternatively you could try hard resetting your router or temporarily using an alternative POP3 or SMTP server.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ethernet-tcp-ip-source-code-driver.com/troubleshooting/general-troubleshooting-tips/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>m) How The SNTP Driver Works</title>
		<link>http://www.ethernet-tcp-ip-source-code-driver.com/how-the-driver-works/how-the-sntp-driver-works</link>
		<comments>http://www.ethernet-tcp-ip-source-code-driver.com/how-the-driver-works/how-the-sntp-driver-works#comments</comments>
		<pubDate>Mon, 03 May 2010 13:24:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[09. How The Driver Works]]></category>

		<guid isPermaLink="false">http://www.ethernet-tcp-ip-source-code-driver.com/?p=98</guid>
		<description><![CDATA[SNTP (which is specified in RFC 4330) is a simple protocol which allows devices to request the current time from a public NTP server. It is a less complex form of NTP and does not require the storing of information about previous communications so is ideal for embedded devices in applications where high resolution / [...]]]></description>
			<content:encoded><![CDATA[<p>SNTP (which is specified in RFC 4330) is a simple protocol which allows devices to request the current time from a public NTP server.  It is a less complex form of NTP and does not require the storing of information about previous communications so is ideal for embedded devices in applications where high resolution / accuracy timing is not required.</p>
<p>The response from a SNTP / NTP server is a 32 bit value which is the number of seconds since 00:00:00 on 1 January 1900.  This value can then be used by the application and a typical example of usage is given in the ‘Adding SNTP Functionality’ section earlier in this manual.</p>
<p>To send a SNTP request the user application simply needs to call the sntp_get_time() function.  The SNTP driver will then automatically use DNS to lookup the IP address of the SNTP server.  If you are using a NTP service such as pool.ntp.org DNS will often retrieve a different IP address on successive calls, as these public NTP services typically distribute requests around a pool of NTP servers.  Once the IP address is retrieved the driver will send an ARP request to obtain the MAC address for the server, which will typically return the MAC address of the local network gateway device that will forward the communications on to the actual SNTP server.</p>
<p>The driver then opens a UDP socket and transmits a SNTP request packet, followed by an immediate call of the user application function defined by SNTP_USER_AP_FUNCTION in eth-sntp.h.  This marks the exact moment the request is sent to the SNTP server and allows the user application to start a timeout timer if desired so that should the response not be received quickly enough, due to internet delays, it can determine this.  The driver then waits for the response and as soon as it is received it again calls the SNTP_USER_AP_FUNCTION function with the received time value.</p>
<p>The SNTP driver incorporates timeout timers for each of the steps of the SNTP process and the user application function is notified if a timeout should occur and the SNTP driver has given up.</p>
<p>If higher accuracy timing is required then it is a good idea to select a SNTP / NTP server to send the request to based on geographical location, so that less time is taken for the request and response to travel across the internet.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ethernet-tcp-ip-source-code-driver.com/how-the-driver-works/how-the-sntp-driver-works/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>l) How The ICMP Driver Works</title>
		<link>http://www.ethernet-tcp-ip-source-code-driver.com/how-the-driver-works/how-the-icmp-driver-works</link>
		<comments>http://www.ethernet-tcp-ip-source-code-driver.com/how-the-driver-works/how-the-icmp-driver-works#comments</comments>
		<pubDate>Mon, 03 May 2010 13:24:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[09. How The Driver Works]]></category>

		<guid isPermaLink="false">http://www.ethernet-tcp-ip-source-code-driver.com/?p=96</guid>
		<description><![CDATA[ICMP (which is specified in RFC 792) is a core protocol of the Internet Protocol Suite. Whilst the protocol provides such functions as error reporting, for an embedded device the only functionality that is typically required is responding to ping ICMP Echo requests. ICMP packets are marked with their own IP protocol value and when [...]]]></description>
			<content:encoded><![CDATA[<p>ICMP (which is specified in RFC 792) is a core protocol of the Internet Protocol Suite.  Whilst the protocol provides such functions as error reporting, for an embedded device the only functionality that is typically required is responding to ping ICMP Echo requests.  ICMP packets are marked with their own IP protocol value and when one is received the driver checks to see if it is an Echo request sent to its IP address.  If it is the driver automatically responds with an ICMP reply, returning the same block of data received.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ethernet-tcp-ip-source-code-driver.com/how-the-driver-works/how-the-icmp-driver-works/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

