<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://alteeve.com/w/index.php?action=history&amp;feed=atom&amp;title=NAOS_temp</id>
	<title>NAOS temp - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://alteeve.com/w/index.php?action=history&amp;feed=atom&amp;title=NAOS_temp"/>
	<link rel="alternate" type="text/html" href="https://alteeve.com/w/index.php?title=NAOS_temp&amp;action=history"/>
	<updated>2026-06-24T21:02:13Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>https://alteeve.com/w/index.php?title=NAOS_temp&amp;diff=3221&amp;oldid=prev</id>
		<title>Digimer: /* Code */</title>
		<link rel="alternate" type="text/html" href="https://alteeve.com/w/index.php?title=NAOS_temp&amp;diff=3221&amp;oldid=prev"/>
		<updated>2011-04-26T04:23:05Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Code&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;a href=&quot;https://alteeve.com/w/index.php?title=NAOS_temp&amp;amp;diff=3221&amp;amp;oldid=3220&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Digimer</name></author>
	</entry>
	<entry>
		<id>https://alteeve.com/w/index.php?title=NAOS_temp&amp;diff=3220&amp;oldid=prev</id>
		<title>Digimer: /* Code */</title>
		<link rel="alternate" type="text/html" href="https://alteeve.com/w/index.php?title=NAOS_temp&amp;diff=3220&amp;oldid=prev"/>
		<updated>2011-04-26T03:57:04Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Code&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en-GB&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 03:57, 26 April 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l209&quot;&gt;Line 209:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 209:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	int  index = 0;		// An index to increment and reset in loops.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	int  index = 0;		// An index to increment and reset in loops.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	char macString[6];	// MAC address.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	char macString[6];	// MAC address.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;	int connections = 0;	// Used to prevents multiple simultaneous&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;				// connections.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	// Start the network library.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	// Start the network library.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l214&quot;&gt;Line 214:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 216:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	if (client)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	if (client)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	{&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	{&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		if (connections &amp;gt; 0)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		{&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;			printMessage(&quot;ERROR: Existing connection, please connect later.\n&quot;);&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;			printMessage(&quot;EOM\n&quot;);&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;			return;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		connections++;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		Serial.print(&quot;Client connected.\n&quot;);&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		// process the input in a line-based manner, allowing for 1&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		// process the input in a line-based manner, allowing for 1&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		// command per line&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		// command per line&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l738&quot;&gt;Line 738:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 749:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			printMessage(&amp;quot;EOM\n&amp;quot;);  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			printMessage(&amp;quot;EOM\n&amp;quot;);  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		connections--;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		Serial.print(&quot;Client disconnected.\n&quot;);&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key an_wiki-mediawiki-:diff:1.41:old-3219:rev-3220:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Digimer</name></author>
	</entry>
	<entry>
		<id>https://alteeve.com/w/index.php?title=NAOS_temp&amp;diff=3219&amp;oldid=prev</id>
		<title>Digimer: /* Code */</title>
		<link rel="alternate" type="text/html" href="https://alteeve.com/w/index.php?title=NAOS_temp&amp;diff=3219&amp;oldid=prev"/>
		<updated>2011-04-26T03:50:56Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Code&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en-GB&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 03:50, 26 April 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l8&quot;&gt;Line 8:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 8:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;#include &amp;lt;SPI.h&amp;gt;	// Needed with newer arduino IDEs (ie: 0022+)&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#include &amp;lt;Ethernet.h&amp;gt;	// Arduino&amp;#039;s ethernet library.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#include &amp;lt;Ethernet.h&amp;gt;	// Arduino&amp;#039;s ethernet library.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#include &amp;lt;ctype.h&amp;gt;	// Library for testing and character manipulation.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;#include &amp;lt;ctype.h&amp;gt;	// Library for testing and character manipulation.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l217&quot;&gt;Line 217:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 216:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		// process the input in a line-based manner, allowing for 1&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		// process the input in a line-based manner, allowing for 1&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		// command per line&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		// command per line&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		&lt;/del&gt;int8_t ret;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;/*		&lt;/ins&gt;int8_t ret;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;// &lt;/del&gt;		while ((-1 != (&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;command[index] &lt;/del&gt;= client.read()) ) &amp;amp;&amp;amp; (5 &amp;gt; index))&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		while ((-1 != (&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ret &lt;/ins&gt;= client.read()) ) &amp;amp;&amp;amp; (5 &amp;gt; index))&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;*/&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		while ((-1 != (&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ret &lt;/del&gt;= client.read()) ) &amp;amp;&amp;amp; (5 &amp;gt; index))&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		while ((-1 != (&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;command[index] &lt;/ins&gt;= client.read()) ) &amp;amp;&amp;amp; (5 &amp;gt; index))&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		{&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		{&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			// exit at the end of line&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			// exit at the end of line&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l249&quot;&gt;Line 249:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 248:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		if (5 == index)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		if (5 == index)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		{&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		{&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			int8_t ch;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;// &lt;/ins&gt;			int8_t ch;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;// &lt;/del&gt;			char ch;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			char ch;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			printMessage(&amp;quot;ERROR: Message too long.\n&amp;quot;);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			printMessage(&amp;quot;ERROR: Message too long.\n&amp;quot;);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			printMessage(&amp;quot;EOM\n&amp;quot;);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			printMessage(&amp;quot;EOM\n&amp;quot;);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key an_wiki-mediawiki-:diff:1.41:old-3218:rev-3219:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Digimer</name></author>
	</entry>
	<entry>
		<id>https://alteeve.com/w/index.php?title=NAOS_temp&amp;diff=3218&amp;oldid=prev</id>
		<title>Digimer: /* Code */</title>
		<link rel="alternate" type="text/html" href="https://alteeve.com/w/index.php?title=NAOS_temp&amp;diff=3218&amp;oldid=prev"/>
		<updated>2011-04-26T03:47:10Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Code&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en-GB&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 03:47, 26 April 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l217&quot;&gt;Line 217:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 217:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		// process the input in a line-based manner, allowing for 1&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		// process the input in a line-based manner, allowing for 1&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		// command per line&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		// command per line&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		while ((-1 != (command[index] = client.read()) ) &amp;amp;&amp;amp; (5 &amp;gt; index))&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		int8_t ret;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;// &lt;/ins&gt;		while ((-1 != (command[index] &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;= client.read()) ) &amp;amp;&amp;amp; (5 &amp;gt; index))&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		while ((-1 != (ret &lt;/ins&gt;= client.read()) ) &amp;amp;&amp;amp; (5 &amp;gt; index))&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		{&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		{&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			// exit at the end of line&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			// exit at the end of line&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Digimer</name></author>
	</entry>
	<entry>
		<id>https://alteeve.com/w/index.php?title=NAOS_temp&amp;diff=3216&amp;oldid=prev</id>
		<title>Digimer at 03:33, 26 April 2011</title>
		<link rel="alternate" type="text/html" href="https://alteeve.com/w/index.php?title=NAOS_temp&amp;diff=3216&amp;oldid=prev"/>
		<updated>2011-04-26T03:33:26Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en-GB&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 03:33, 26 April 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{header}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{header}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;= Screenshot =&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Image:crashed_gibberish_naos_temp.png|center|thumb|800px|The &#039;uck?]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Code =&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Code =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Digimer</name></author>
	</entry>
	<entry>
		<id>https://alteeve.com/w/index.php?title=NAOS_temp&amp;diff=3215&amp;oldid=prev</id>
		<title>Digimer at 03:19, 26 April 2011</title>
		<link rel="alternate" type="text/html" href="https://alteeve.com/w/index.php?title=NAOS_temp&amp;diff=3215&amp;oldid=prev"/>
		<updated>2011-04-26T03:19:07Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en-GB&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 03:19, 26 April 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{header}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{header}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;= Screenshot =&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Image:crashed_gibberish_naos_temp.png|center|thumb|800px|The &#039;uck?]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Code =&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Code =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l210&quot;&gt;Line 210:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 206:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	int  index = 0;		// An index to increment and reset in loops.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	int  index = 0;		// An index to increment and reset in loops.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	char macString[6];	// MAC address.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	char macString[6];	// MAC address.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;	int connections = 0;	// Used to prevents multiple simultaneous&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;				// connections.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	// Start the network library.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	// Start the network library.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l217&quot;&gt;Line 217:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 211:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	if (client)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	if (client)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	{&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	{&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		if (connections &amp;gt; 0)&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		{&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;			printMessage(&quot;ERROR: Existing connection, please connect later.\n&quot;);&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;			printMessage(&quot;EOM\n&quot;);&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;			return;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		}&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		connections++;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		Serial.print(&quot;Client connected.\n&quot;);&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;		&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		// process the input in a line-based manner, allowing for 1&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		// process the input in a line-based manner, allowing for 1&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		// command per line&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		// command per line&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l258&quot;&gt;Line 258:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 243:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		if (5 == index)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		if (5 == index)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		{&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		{&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			char ch;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;			int8_t ch;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;// &lt;/ins&gt;			char ch;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			printMessage(&amp;quot;ERROR: Message too long.\n&amp;quot;);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			printMessage(&amp;quot;ERROR: Message too long.\n&amp;quot;);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			printMessage(&amp;quot;EOM\n&amp;quot;);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			printMessage(&amp;quot;EOM\n&amp;quot;);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l747&quot;&gt;Line 747:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 733:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			printMessage(&amp;quot;EOM\n&amp;quot;);  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			printMessage(&amp;quot;EOM\n&amp;quot;);  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        	connections--;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;    	        Serial.print(&quot;Client disconnected.\n&quot;);&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;	}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Digimer</name></author>
	</entry>
	<entry>
		<id>https://alteeve.com/w/index.php?title=NAOS_temp&amp;diff=3214&amp;oldid=prev</id>
		<title>Digimer at 02:56, 26 April 2011</title>
		<link rel="alternate" type="text/html" href="https://alteeve.com/w/index.php?title=NAOS_temp&amp;diff=3214&amp;oldid=prev"/>
		<updated>2011-04-26T02:56:38Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en-GB&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 02:56, 26 April 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{header}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{header}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;= Screenshot =&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Image:crashed_gibberish_naos_temp.png|center|thumb|800px|The &#039;uck?]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;= Code =&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Digimer</name></author>
	</entry>
	<entry>
		<id>https://alteeve.com/w/index.php?title=NAOS_temp&amp;diff=3212&amp;oldid=prev</id>
		<title>Digimer: Created page with &#039;{{header}}  &lt;source lang=&quot;c&quot;&gt; #include &lt;SPI.h&gt;	// Needed with newer arduino IDEs (ie: 0022+) #include &lt;Ethernet.h&gt;	// Arduino&#039;s ethernet library. #include &lt;ctype.h&gt;	// Library fo…&#039;</title>
		<link rel="alternate" type="text/html" href="https://alteeve.com/w/index.php?title=NAOS_temp&amp;diff=3212&amp;oldid=prev"/>
		<updated>2011-04-26T02:54:40Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;#039;{{header}}  &amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt; #include &amp;lt;SPI.h&amp;gt;	// Needed with newer arduino IDEs (ie: 0022+) #include &amp;lt;Ethernet.h&amp;gt;	// Arduino&amp;#039;s ethernet library. #include &amp;lt;ctype.h&amp;gt;	// Library fo…&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Páàjì titun&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{header}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;SPI.h&amp;gt;	// Needed with newer arduino IDEs (ie: 0022+)&lt;br /&gt;
#include &amp;lt;Ethernet.h&amp;gt;	// Arduino&amp;#039;s ethernet library.&lt;br /&gt;
#include &amp;lt;ctype.h&amp;gt;	// Library for testing and character manipulation.&lt;br /&gt;
#include &amp;lt;stdint.h&amp;gt;	// Library for standard integer types (guarantees the size of an int).&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;	// Library for things like &amp;#039;sizeof()&amp;#039; and &amp;#039;itoa()&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
// IMPORTANT NOTE!&lt;br /&gt;
//   Be sure to update the IP Address, Subnet Mask, Default Gateway, MAC&lt;br /&gt;
//   address and serial number before loading this software into your Node&lt;br /&gt;
//   Assassin!&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
Author:&lt;br /&gt;
 - Digimer&lt;br /&gt;
 &lt;br /&gt;
Version: 1.1.4.4&lt;br /&gt;
 - Release: Apr. 13, 2010&lt;br /&gt;
&lt;br /&gt;
License:&lt;br /&gt;
 - The GNU GPL v2.0&lt;br /&gt;
&lt;br /&gt;
Thanks:&lt;br /&gt;
 - Hacklab.TO:       The idea for this device was born there.&lt;br /&gt;
 - Christopher Olah; Came up with the name &amp;quot;Node Assassin&amp;quot;.&lt;br /&gt;
 - Mark Loit:        Taught me enough C to write version 1.0 of NAOS!&lt;br /&gt;
&lt;br /&gt;
Bugs:&lt;br /&gt;
 - None known at this time.&lt;br /&gt;
&lt;br /&gt;
Protocol:&lt;br /&gt;
 - Telnet (or similar) to the IP and Port set below.&lt;br /&gt;
  - To query the state of the nodes, send:&lt;br /&gt;
    - 00:0&lt;br /&gt;
  - To query the Node Assassin&amp;#039;s details, send:&lt;br /&gt;
    - 00:1&lt;br /&gt;
  - The integer after the &amp;#039;00:&amp;#039; is reserved for future queries.&lt;br /&gt;
 - To set the state of a node, send:&lt;br /&gt;
  - XX:Y&lt;br /&gt;
  - XX is the zero-padded node ID number; 01, 02, 03 or 04&lt;br /&gt;
  - Y  is the state to set&lt;br /&gt;
    - 0 releases the fence and lets the node boot.&lt;br /&gt;
    - 1 fences the requested node.&lt;br /&gt;
    - 2 Fence for one second. Useful for rebooting a node or for when a port&lt;br /&gt;
        is connected to a node&amp;#039;s power button to boot or gracefully power down&lt;br /&gt;
        a node (via ACPI).&lt;br /&gt;
    - 3 Fence for five seconds. Only useful when connected to a power button.&lt;br /&gt;
        This allows the Node Assassin to force a frozen server to power off.&lt;br /&gt;
 - Example:&lt;br /&gt;
   - To fence Node 01, send:&lt;br /&gt;
     - 01:1&lt;br /&gt;
   - To release the fence and thus let the node boot, send:&lt;br /&gt;
     - 01:0&lt;br /&gt;
 - Sending any other non-standard command will generate an error message and no&lt;br /&gt;
   action will be taken.&lt;br /&gt;
  &lt;br /&gt;
Note:&lt;br /&gt;
 - This device implements NO security. You MUST install in on a private, secure&lt;br /&gt;
   intranet or similar back channel. Installing it on the same LAN as the&lt;br /&gt;
   storage devices is advised. &lt;br /&gt;
 - Changing this file will have no effect until the program is recompiled and&lt;br /&gt;
   uploaded to the Node Assassin.&lt;br /&gt;
   &lt;br /&gt;
To Do:&lt;br /&gt;
 - Make naming the device and setting it&amp;#039;s network settings configurable.&lt;br /&gt;
&lt;br /&gt;
Changes:&lt;br /&gt;
 - v1.1.4.4&lt;br /&gt;
   - Fixed a bug where the node being worked on was displaying as one higher.&lt;br /&gt;
 - v1.1.4.3&lt;br /&gt;
   - Increased the &amp;#039;osVersion[]&amp;#039; array to length ten to properly store and show&lt;br /&gt;
     longer version numbers.&lt;br /&gt;
 - v1.1.4.2&lt;br /&gt;
   - Updated/Cleaned up the comments in the code.&lt;br /&gt;
   - Changed the prefix for bad commands from &amp;#039;ERR&amp;#039; to &amp;#039;ERROR&amp;#039;.&lt;br /&gt;
 - v1.1.4.1&lt;br /&gt;
   - Fixed the numbering of Nodes in &amp;#039;00:0&amp;#039; status requests.&lt;br /&gt;
 - v1.1.4&lt;br /&gt;
   - Changed the version number to correspond to the matching supported Node&lt;br /&gt;
     Assassin hardware version.&lt;br /&gt;
   - Added the concept of &amp;quot;nodes&amp;quot; which are groups of two digital outputs plus&lt;br /&gt;
     one analog input treated as a digital input.&lt;br /&gt;
   - Changed the states. Most critically, 0 now releases the fence and 1 fences&lt;br /&gt;
     the node. Further, &amp;quot;fencing&amp;quot; is no longer simply closing the switch. A&lt;br /&gt;
     fence triggers a sequence of switch open and closing to accomplish the&lt;br /&gt;
     fence.&lt;br /&gt;
   - Added support for node feed detection and added errors and warnings to&lt;br /&gt;
     state calls that are based on the feed values.&lt;br /&gt;
&lt;br /&gt;
 - v1.0.4&lt;br /&gt;
   - Set all output to send a final &amp;#039;EOM&amp;#039; (End Of Message) on a new line after&lt;br /&gt;
     all output for the fence agent to know when data has finished returning.&lt;br /&gt;
   - Prefixed all error messages with &amp;#039;ERR: &amp;#039;.&lt;br /&gt;
   &lt;br /&gt;
 - v1.0.3&lt;br /&gt;
   - Added the &amp;#039;00:1&amp;#039; query message which returns the Node Assassin&amp;#039;s details&lt;br /&gt;
     and identification.&lt;br /&gt;
   - Added the &amp;#039;##:2&amp;#039; and &amp;#039;##:3&amp;#039; options.&lt;br /&gt;
   &lt;br /&gt;
 - v1.0.2&lt;br /&gt;
   - First release.&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
// MAC Address; Array of six bytes.&lt;br /&gt;
// If you&amp;#039;ve been assigned a MAC address by AN!, or if you have your own block&lt;br /&gt;
// of MAC addresses, enter it here.&lt;br /&gt;
// NOTE! If you do not have a MAC address, choose one that starts with 0x02.&lt;br /&gt;
//       This will mark it as a locally administered MAC address. For example,&lt;br /&gt;
//       use &amp;quot;{ 0x02, 0x00, 0x00, 0xFF, 0xF0, 0xAA }&amp;quot;.&lt;br /&gt;
byte mac[] = { 0x00, 0x09, 0x30, 0xFF, 0xF0, 0x8A };&lt;br /&gt;
&lt;br /&gt;
// Arduino IP, netmask and gateway.&lt;br /&gt;
byte ip[] = { 192, 168, 1, 62 };&lt;br /&gt;
&lt;br /&gt;
// Netmask defaults to 255.255.255.0.&lt;br /&gt;
byte nm[] = { 255, 255, 255, 0 };&lt;br /&gt;
&lt;br /&gt;
// Default gateway defaults to IP with the last octal set to 1.&lt;br /&gt;
byte dg[] = { 192, 168, 1, 254 };&lt;br /&gt;
&lt;br /&gt;
// The user-set name of the node, up to sixteen characters long.&lt;br /&gt;
char nodeName[16]=&amp;quot;Motoko&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// The serial number.&lt;br /&gt;
// NOTE! Only set a serial number starting with &amp;#039;NA####&amp;#039; if you were assigned&lt;br /&gt;
//       one by AN!. Otherwise, use &amp;#039;PR####&amp;#039; where the digit section is your&lt;br /&gt;
//       internal tracking number.&lt;br /&gt;
char serialNumber[7]=&amp;quot;NA0002&amp;quot;;&lt;br /&gt;
char osVersion[10]=&amp;quot;v1.1.4.4&amp;quot;;&lt;br /&gt;
// The buildDate variable represents the date that the Node Assassin you are&lt;br /&gt;
// using was built.&lt;br /&gt;
char buildDate[11]=&amp;quot;2010-04-03&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// This is the port that I will listen on.&lt;br /&gt;
#define PORT 238&lt;br /&gt;
&lt;br /&gt;
// Setup the server.&lt;br /&gt;
Server server = Server(PORT);&lt;br /&gt;
&lt;br /&gt;
// Setup my digital out pins.&lt;br /&gt;
// CONSTRAINT: Input and Output pins must be assigned sequentially&lt;br /&gt;
#define NODECOUNT      4&lt;br /&gt;
// The digital pins are output&lt;br /&gt;
#define FIRSTOUTPIN    2&lt;br /&gt;
// The analog pins are treated as digital inputs, so I count them from 14 - 19.&lt;br /&gt;
#define FIRSTINPIN     14&lt;br /&gt;
&lt;br /&gt;
// My function prototypes.&lt;br /&gt;
void printError(const char *message);&lt;br /&gt;
void printMessage(const char *message);&lt;br /&gt;
&lt;br /&gt;
// Setup the Arduino on boot.&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
	// Setup the IP info.&lt;br /&gt;
	Ethernet.begin(mac, ip, dg, nm);&lt;br /&gt;
	&lt;br /&gt;
	// Print the serial port welcome message.&lt;br /&gt;
	Serial.begin(9600);&lt;br /&gt;
	Serial.print(&amp;quot;Node Assassin: [&amp;quot;); Serial.print(nodeName); Serial.println(&amp;quot;] starting.&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	// Iterator to setup the digital pins to output and to set them&lt;br /&gt;
	// initially to LOW.&lt;br /&gt;
	for (int pin = FIRSTOUTPIN; pin &amp;lt; (FIRSTOUTPIN+(NODECOUNT*2)); pin++)&lt;br /&gt;
	{&lt;br /&gt;
		Serial.print(&amp;quot;Set - pin: [&amp;quot;); Serial.print(pin); Serial.println(&amp;quot;] to OUTPUT/LOW.&amp;quot;);&lt;br /&gt;
		pinMode(pin, OUTPUT);&lt;br /&gt;
		digitalWrite(pin, LOW);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	// Iterator to setup the analog pins as digital inputs.&lt;br /&gt;
	for (int pin = FIRSTINPIN; pin &amp;lt; (FIRSTINPIN+NODECOUNT); pin++)&lt;br /&gt;
	{&lt;br /&gt;
		Serial.print(&amp;quot;Set - pin: [&amp;quot;); Serial.print(pin); Serial.println(&amp;quot;] to INPUT.&amp;quot;);&lt;br /&gt;
		pinMode(pin, INPUT);&lt;br /&gt;
	}&lt;br /&gt;
	Serial.println(&amp;quot;Ready!&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	// Start the server listening for connections.&lt;br /&gt;
	server.begin();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// And GO!&lt;br /&gt;
void loop()&lt;br /&gt;
{	&lt;br /&gt;
	// Variables&lt;br /&gt;
	uint8_t node=0;		// Node to work on, if applicable.&lt;br /&gt;
	uint8_t state=0;	// The state to set the node(s) to.&lt;br /&gt;
	int node_power_pin=0;	// This will contain the actual pin mapped to&lt;br /&gt;
				// the requested node&amp;#039;s power pin (digital pin).&lt;br /&gt;
	uint8_t np_state;	// This will contain the power state.&lt;br /&gt;
	int node_reset_pin=0;	// This will contain the actual pin mapped to&lt;br /&gt;
				// the requested node&amp;#039;s reset pin (digital pin).&lt;br /&gt;
	uint8_t nr_state;	// This will contain the reset state.&lt;br /&gt;
	int node_feed_pin=0;	// This will contain the actual pin mapped to&lt;br /&gt;
				// the requested node&amp;#039;s feed pin (analog pin).&lt;br /&gt;
	uint8_t nf_state;	// This will contain the feed state.&lt;br /&gt;
	char nodeASCII[3];	// ASCII representation of node number. This is&lt;br /&gt;
				// &amp;#039;3&amp;#039; because of &amp;#039;first char&amp;#039; + &amp;#039;second char&amp;#039;&lt;br /&gt;
				// + terminating &amp;lt;NUL&amp;gt;&lt;br /&gt;
	char command[5];	// 5 chars &amp;quot;XX:Y&amp;quot; + &amp;lt;NUL&amp;gt;&lt;br /&gt;
	int  index = 0;		// An index to increment and reset in loops.&lt;br /&gt;
	char macString[6];	// MAC address.&lt;br /&gt;
	int connections = 0;	// Used to prevents multiple simultaneous&lt;br /&gt;
				// connections.&lt;br /&gt;
	&lt;br /&gt;
	// Start the network library.&lt;br /&gt;
	Client client=server.available();&lt;br /&gt;
	if (client)&lt;br /&gt;
	{&lt;br /&gt;
		if (connections &amp;gt; 0)&lt;br /&gt;
		{&lt;br /&gt;
			printMessage(&amp;quot;ERROR: Existing connection, please connect later.\n&amp;quot;);&lt;br /&gt;
			printMessage(&amp;quot;EOM\n&amp;quot;);&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		connections++;&lt;br /&gt;
		Serial.print(&amp;quot;Client connected.\n&amp;quot;);&lt;br /&gt;
		&lt;br /&gt;
		// process the input in a line-based manner, allowing for 1&lt;br /&gt;
		// command per line&lt;br /&gt;
		while ((-1 != (command[index] = client.read()) ) &amp;amp;&amp;amp; (5 &amp;gt; index))&lt;br /&gt;
		{&lt;br /&gt;
			// exit at the end of line&lt;br /&gt;
			if ((&amp;#039;\n&amp;#039; == command[index]) || (&amp;#039;\r&amp;#039; == command[index]) )&lt;br /&gt;
			{&lt;br /&gt;
				break; // EOL found, break out of the loop.&lt;br /&gt;
			}&lt;br /&gt;
			index++; // advance the index.&lt;br /&gt;
		}&lt;br /&gt;
		// on a valid line the above loop will exit with index == 4&lt;br /&gt;
		&lt;br /&gt;
		// If there is no message, nothing to do but exit. &lt;br /&gt;
		// Coding note: By putting 0 first, I can never accidentally&lt;br /&gt;
		// set the variable to &amp;#039;0&amp;#039; with an accidental single-equal.&lt;br /&gt;
		if (0 == index)&lt;br /&gt;
		{&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		// sanity check on length&lt;br /&gt;
		if (4 &amp;gt; index)&lt;br /&gt;
		{&lt;br /&gt;
			printMessage(&amp;quot;ERROR: Message too short.\n&amp;quot;);&lt;br /&gt;
			printMessage(&amp;quot;EOM\n&amp;quot;);&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		// Spool off whatever is left in the buffer/line in case it was a string longer than 4.&lt;br /&gt;
		if (5 == index)&lt;br /&gt;
		{&lt;br /&gt;
			char ch;&lt;br /&gt;
			printMessage(&amp;quot;ERROR: Message too long.\n&amp;quot;);&lt;br /&gt;
			printMessage(&amp;quot;EOM\n&amp;quot;);&lt;br /&gt;
			while (-1 != (ch = client.read()) )&lt;br /&gt;
			{&lt;br /&gt;
				// exit at the end of line&lt;br /&gt;
				if( (&amp;#039;\n&amp;#039; == ch) || (&amp;#039;\r&amp;#039; == ch) )&lt;br /&gt;
				{&lt;br /&gt;
					break; // break out of the loop.&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		// &amp;lt;NUL&amp;gt; terminate the string&lt;br /&gt;
		command[index] = 0;&lt;br /&gt;
		&lt;br /&gt;
		// Parse the string; Error if anything isn&amp;#039;t right.&lt;br /&gt;
		// Make sure we have a colon in the right location&lt;br /&gt;
		if (&amp;#039;:&amp;#039; != command[2])&lt;br /&gt;
		{&lt;br /&gt;
			// Error&lt;br /&gt;
			printError(command);&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		// Make sure the other characters are digits&lt;br /&gt;
		if (!isdigit(command[0]) || !isdigit(command[1]) || !isdigit(command[3]))&lt;br /&gt;
		{&lt;br /&gt;
			// Error&lt;br /&gt;
			printError(command);&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		// No need to check for the terminator or newline at the end,&lt;br /&gt;
		// that was taken care of in the read loop.&lt;br /&gt;
		// Do the math to turn the ASCII node number into a binary&lt;br /&gt;
		// value.&lt;br /&gt;
		node=command[0]-&amp;#039;0&amp;#039;;	// First digit convertion (ie: &amp;#039;1&amp;#039;&lt;br /&gt;
					// (0x31)-&amp;#039;0&amp;#039; (0x30) = 0x01 = &lt;br /&gt;
					// &amp;quot;0000 0001 (dec. 1)&amp;quot;).&lt;br /&gt;
		node*=10;		// Shift to the first base-10 position.&lt;br /&gt;
		node+=command[1]-&amp;#039;0&amp;#039;;	// Now &amp;#039;node&amp;#039; contains the binary&lt;br /&gt;
					// version of the ASCII two-digit value&lt;br /&gt;
					// read off of telnet.&lt;br /&gt;
		&lt;br /&gt;
		// Convert the &amp;quot;node&amp;quot; value to the actual power and reset pins.&lt;br /&gt;
		// Because each node consumes two digital output pins, I need&lt;br /&gt;
		// to double the &amp;#039;node&amp;#039; value and then add the digital out&lt;br /&gt;
		// offset. This will give me the reset pin directly, and then&lt;br /&gt;
		// subtract by one to get the power button pin. The Feed pin is&lt;br /&gt;
		// simple the node&amp;#039;s value plus the input offset less one.&lt;br /&gt;
		node_power_pin=(((node*2)-1)+(FIRSTOUTPIN-1));&lt;br /&gt;
		node_reset_pin=((node*2)+(FIRSTOUTPIN-1));&lt;br /&gt;
		node_feed_pin=(node+(FIRSTINPIN-1));&lt;br /&gt;
		&lt;br /&gt;
		// Do the math to turn the state number into a binary value.&lt;br /&gt;
		state=command[3]-&amp;#039;0&amp;#039;;	// Now &amp;#039;state&amp;#039; contains the binary&lt;br /&gt;
					// version.&lt;br /&gt;
		&lt;br /&gt;
		// copy the ASCII node name for the response messages so that&lt;br /&gt;
		// we don&amp;#039;t have to convert it back later.&lt;br /&gt;
		nodeASCII[0] = command[0];&lt;br /&gt;
		nodeASCII[1] = command[1];&lt;br /&gt;
		nodeASCII[2] = 0; // &amp;lt;NUL&amp;gt; terminate it&lt;br /&gt;
		&lt;br /&gt;
		// Make sure the requested node is actually available on this&lt;br /&gt;
		// Node Assassin.&lt;br /&gt;
		if (node &amp;gt; NODECOUNT)&lt;br /&gt;
		{&lt;br /&gt;
			// Too high a value!&lt;br /&gt;
			// Make my NODECOUNT an ASCII value so that I can print&lt;br /&gt;
			// it by reversing the convertion to binary done&lt;br /&gt;
			// earlier. The following two lines will be converted&lt;br /&gt;
			// by the compiler, so there is no run-time penalty for&lt;br /&gt;
			// the math here&lt;br /&gt;
			// &lt;br /&gt;
			// Move from the &amp;#039;tens&amp;#039; posiition into the &amp;#039;1&amp;#039; position&lt;br /&gt;
			// and add &amp;#039;0&amp;#039; to get the ASCII value.&lt;br /&gt;
			nodeASCII[0]=(NODECOUNT/10)+&amp;#039;0&amp;#039;;&lt;br /&gt;
			// The modulous returns my real &amp;quot;one&amp;quot; position.&lt;br /&gt;
			nodeASCII[1]=(NODECOUNT%10)+&amp;#039;0&amp;#039;;&lt;br /&gt;
			// nodeASCII was &amp;lt;NUL&amp;gt; terminated earlier at 3, so no&lt;br /&gt;
			// need to do it again here&lt;br /&gt;
			&lt;br /&gt;
			printMessage(&amp;quot;ERROR: Max node value: [&amp;quot;); printMessage(nodeASCII); printMessage(&amp;quot;]\n&amp;quot;);&lt;br /&gt;
			printMessage(&amp;quot;EOM\n&amp;quot;);&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		// Check that the requested state is sane.&lt;br /&gt;
		if (state &amp;gt; 3)&lt;br /&gt;
		{&lt;br /&gt;
			// Node state can&amp;#039;t be higher than &amp;#039;3&amp;#039; on this model.&lt;br /&gt;
			printMessage(&amp;quot;ERROR: Invalid state.\n&amp;quot;);&lt;br /&gt;
			printMessage(&amp;quot;EOM\n&amp;quot;);&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		// Check if this is an info request.&lt;br /&gt;
		if (0 == node)&lt;br /&gt;
		{&lt;br /&gt;
			// If the message request is &amp;#039;0&amp;#039;, return states.&lt;br /&gt;
			// If the message request is &amp;#039;1&amp;#039;, return NA info.&lt;br /&gt;
			if (0 == state)&lt;br /&gt;
			{&lt;br /&gt;
				// Send states&lt;br /&gt;
				printMessage(&amp;quot;Node states: \n&amp;quot;);&lt;br /&gt;
				&lt;br /&gt;
				// Make my NODECOUNT an ASCII value so that I&lt;br /&gt;
				// can print it by reversing the convertion to&lt;br /&gt;
				// binary done earlier.&lt;br /&gt;
				nodeASCII[0]=(NODECOUNT/10)+&amp;#039;0&amp;#039;;&lt;br /&gt;
				nodeASCII[1]=(NODECOUNT%10)+&amp;#039;0&amp;#039;;&lt;br /&gt;
				&lt;br /&gt;
				printMessage(&amp;quot;- Node Count: &amp;quot;); printMessage(nodeASCII); printMessage(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				&lt;br /&gt;
				/*&lt;br /&gt;
				NOTE: - Future optimization:&lt;br /&gt;
				The division and modulus in the loop can be&lt;br /&gt;
				expensive processing wise, as the compiler&lt;br /&gt;
				cannot do the calculation at compile time. As&lt;br /&gt;
				we are simply itteratively looping and&lt;br /&gt;
				incrementing, we can increment the ASCII value&lt;br /&gt;
				directly, removing the need for any division or&lt;br /&gt;
				modulus operations.&lt;br /&gt;
				*/&lt;br /&gt;
				&lt;br /&gt;
				// Loop through the supported number of nodes&lt;br /&gt;
				// and return their fence and feed states.&lt;br /&gt;
				for (int node=1; node&amp;lt;=NODECOUNT; node++)&lt;br /&gt;
				{&lt;br /&gt;
					// &amp;#039;node&amp;#039; is the current, one-based&lt;br /&gt;
					// node number.&lt;br /&gt;
					nodeASCII[0]=(node/10)+&amp;#039;0&amp;#039;;&lt;br /&gt;
					// The modulous returns my real one&lt;br /&gt;
					// position.&lt;br /&gt;
					nodeASCII[1]=(node%10)+&amp;#039;0&amp;#039;;&lt;br /&gt;
					&lt;br /&gt;
					// Make this a bit more readable.&lt;br /&gt;
					node_power_pin=(((node*2)-1)+(FIRSTOUTPIN-1));&lt;br /&gt;
					node_reset_pin=((node*2)+(FIRSTOUTPIN-1));&lt;br /&gt;
					node_feed_pin=(node+(FIRSTINPIN-1));&lt;br /&gt;
					&lt;br /&gt;
					// Read in the current states.&lt;br /&gt;
					np_state = digitalRead(node_power_pin);&lt;br /&gt;
					nr_state = digitalRead(node_reset_pin);&lt;br /&gt;
					nf_state = digitalRead(node_feed_pin);&lt;br /&gt;
					&lt;br /&gt;
					// And finally report the states.&lt;br /&gt;
					printMessage(&amp;quot;- Node &amp;quot;); printMessage(nodeASCII); printMessage(&amp;quot;: &amp;quot;);&lt;br /&gt;
					printMessage(&amp;quot;P&amp;quot;); printMessage((LOW == np_state) ? &amp;quot;0, &amp;quot; : &amp;quot;1, &amp;quot;);&lt;br /&gt;
					printMessage(&amp;quot;R&amp;quot;); printMessage((LOW == nr_state) ? &amp;quot;0, &amp;quot; : &amp;quot;1, &amp;quot;);&lt;br /&gt;
					printMessage(&amp;quot;F&amp;quot;); printMessage((LOW == nf_state) ? &amp;quot;0\n&amp;quot; : &amp;quot;1\n&amp;quot;);&lt;br /&gt;
					&lt;br /&gt;
					// This is extra debug info for the&lt;br /&gt;
					// serial console.&lt;br /&gt;
					Serial.print(&amp;quot; P.Pin: &amp;quot;); Serial.println(node_power_pin);&lt;br /&gt;
					Serial.print(&amp;quot; R.Pin: &amp;quot;); Serial.println(node_reset_pin);&lt;br /&gt;
					Serial.print(&amp;quot; F.Pin: &amp;quot;); Serial.println(node_feed_pin);&lt;br /&gt;
				}&lt;br /&gt;
				printMessage(&amp;quot;EOM\n&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			else if (1 == state)&lt;br /&gt;
			{&lt;br /&gt;
				/* Setup some strings. */&lt;br /&gt;
				// MAC address.&lt;br /&gt;
				printMessage(&amp;quot;Node info: \n&amp;quot;);&lt;br /&gt;
				char macASCII[18]; // Enough room for 6 bytes&lt;br /&gt;
						   // of hex [12 digits], colon&lt;br /&gt;
						   // seperators (:) and the&lt;br /&gt;
						   // NULL terminator&lt;br /&gt;
				// IP Address, netmask and default gateway in&lt;br /&gt;
				// dotted decimal formats.&lt;br /&gt;
				char ipASCII[16];&lt;br /&gt;
				char nmASCII[16];&lt;br /&gt;
				char dgASCII[16];&lt;br /&gt;
				int j=0;&lt;br /&gt;
				&lt;br /&gt;
				// Generate the MAC address ASCII string.&lt;br /&gt;
				for(int i=0; i &amp;lt; (sizeof(mac) / sizeof(mac[0])); i++)&lt;br /&gt;
				{&lt;br /&gt;
					// If I have a value, that is, is &amp;#039;1&amp;#039;&lt;br /&gt;
					// or higher, start by inserting a &lt;br /&gt;
					// colon (:) to seperate the octets.&lt;br /&gt;
					// This method avoids a preceeding &amp;#039;:&amp;#039;.&lt;br /&gt;
					if (i)&lt;br /&gt;
					{&lt;br /&gt;
						macASCII[j++] = &amp;#039;:&amp;#039;;&lt;br /&gt;
					}&lt;br /&gt;
					// We&amp;#039;re zero-padding single hex&lt;br /&gt;
					// values, so if this value is less&lt;br /&gt;
					// than 16 (0000 1111), add a leading&lt;br /&gt;
					// &amp;#039;0&amp;#039;.&lt;br /&gt;
					if (mac[i]&amp;lt;16)&lt;br /&gt;
					{&lt;br /&gt;
						macASCII[j] = &amp;#039;0&amp;#039;;&lt;br /&gt;
						itoa(mac[i], &amp;amp;macASCII[(j)+1], 16);&lt;br /&gt;
					}&lt;br /&gt;
					else&lt;br /&gt;
					{&lt;br /&gt;
						itoa(mac[i], &amp;amp;macASCII[j], 16);&lt;br /&gt;
					}&lt;br /&gt;
					j+=2;&lt;br /&gt;
				}&lt;br /&gt;
				&lt;br /&gt;
				// Now we will generate the IP address, netmask&lt;br /&gt;
				// and default gateway ASCII strings.&lt;br /&gt;
				j=0;&lt;br /&gt;
				for (int i=0; i &amp;lt; (sizeof(ip) / sizeof(ip[0])); i++)&lt;br /&gt;
				{&lt;br /&gt;
					// If I have a value, that is, is &amp;#039;1&amp;#039;&lt;br /&gt;
					// or higher, start by inserting a &lt;br /&gt;
					// period (.) to seperate the octets.&lt;br /&gt;
					if (i)&lt;br /&gt;
					{&lt;br /&gt;
						ipASCII[j++] = &amp;#039;.&amp;#039;;&lt;br /&gt;
					}&lt;br /&gt;
					&lt;br /&gt;
					// Convert the integer to an ASCII.&lt;br /&gt;
					itoa(ip[i], &amp;amp;ipASCII[j++], 10);&lt;br /&gt;
					&lt;br /&gt;
					// Increment &amp;#039;j&amp;#039; one or two places,&lt;br /&gt;
					// depending on the value of &amp;#039;j&amp;#039;.&lt;br /&gt;
					if(ip[i]&amp;gt;9) j++;&lt;br /&gt;
					if(ip[i]&amp;gt;99) j++;&lt;br /&gt;
				}&lt;br /&gt;
				j=0;&lt;br /&gt;
				for (int i=0; i &amp;lt; (sizeof(nm) / sizeof(nm[0])); i++)&lt;br /&gt;
				{&lt;br /&gt;
					if (i)&lt;br /&gt;
					{&lt;br /&gt;
						nmASCII[j++] = &amp;#039;.&amp;#039;;&lt;br /&gt;
					}&lt;br /&gt;
					itoa(nm[i], &amp;amp;nmASCII[j++], 10);&lt;br /&gt;
					if(nm[i]&amp;gt;9) j++;&lt;br /&gt;
					if(nm[i]&amp;gt;99) j++;&lt;br /&gt;
				}&lt;br /&gt;
				j=0;&lt;br /&gt;
				for (int i=0; i &amp;lt; (sizeof(ip) / sizeof(ip[0])); i++)&lt;br /&gt;
				{&lt;br /&gt;
					if (i)&lt;br /&gt;
					{&lt;br /&gt;
						dgASCII[j++] = &amp;#039;.&amp;#039;;&lt;br /&gt;
					}&lt;br /&gt;
					itoa(dg[i], &amp;amp;dgASCII[j++], 10);&lt;br /&gt;
					if(dg[i]&amp;gt;9) j++;&lt;br /&gt;
					if(dg[i]&amp;gt;99) j++;&lt;br /&gt;
				}&lt;br /&gt;
				&lt;br /&gt;
				// Make my NODECOUNT an ASCII value so that I&lt;br /&gt;
				// can print it by reversing the convertion to&lt;br /&gt;
				// binary done earlier.&lt;br /&gt;
				nodeASCII[0]=(NODECOUNT/10)+&amp;#039;0&amp;#039;;&lt;br /&gt;
				nodeASCII[1]=(NODECOUNT%10)+&amp;#039;0&amp;#039;;&lt;br /&gt;
				&lt;br /&gt;
				// Print the info.&lt;br /&gt;
				printMessage(&amp;quot;- Node Name: ..... &amp;quot;); printMessage(nodeName); printMessage(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				printMessage(&amp;quot;- Port Count: .... &amp;quot;); printMessage(nodeASCII); printMessage(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				printMessage(&amp;quot;- NAOS Version: .. &amp;quot;); printMessage(osVersion); printMessage(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				printMessage(&amp;quot;- Serial Number: . &amp;quot;); printMessage(serialNumber); printMessage(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				printMessage(&amp;quot;- Build Date: .... &amp;quot;); printMessage(buildDate); printMessage(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				printMessage(&amp;quot;- MAC address: ... &amp;quot;); printMessage(macASCII); printMessage(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				printMessage(&amp;quot;- IP address: .... &amp;quot;); printMessage(ipASCII); printMessage(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				printMessage(&amp;quot;- Subnet Mask: ... &amp;quot;); printMessage(nmASCII); printMessage(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				printMessage(&amp;quot;- Default Gateway: &amp;quot;); printMessage(dgASCII); printMessage(&amp;quot;\n&amp;quot;);&lt;br /&gt;
				printMessage(&amp;quot;EOM\n&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			else&lt;br /&gt;
			{&lt;br /&gt;
				// Unrecognized message request.&lt;br /&gt;
				printMessage(&amp;quot;ERROR: Unknown message request.\n&amp;quot;);&lt;br /&gt;
				printMessage(&amp;quot;EOM\n&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		// If I am still alive, I am going to set a node to a given&lt;br /&gt;
		// state.&lt;br /&gt;
		&lt;br /&gt;
		// Subtract 1 from node to make it zero-based.&lt;br /&gt;
		node--;&lt;br /&gt;
		&lt;br /&gt;
		// Make the node number printable.&lt;br /&gt;
		nodeASCII[0]=((node+1)/10)+&amp;#039;0&amp;#039;;&lt;br /&gt;
		nodeASCII[1]=((node+1)%10)+&amp;#039;0&amp;#039;;&lt;br /&gt;
		&lt;br /&gt;
		// Which state I received will determine what I actually do to&lt;br /&gt;
		// the power and reset output pins.&lt;br /&gt;
		if (0 == state)&lt;br /&gt;
		{&lt;br /&gt;
			// Tell the user what is going to happen.&lt;br /&gt;
			printMessage(&amp;quot;Releasing &amp;quot;); printMessage(nodeASCII); printMessage(&amp;quot;\n&amp;quot;);&lt;br /&gt;
			&lt;br /&gt;
			// Get prior states to make my return string a little&lt;br /&gt;
			// more useful.&lt;br /&gt;
			np_state = digitalRead(node_power_pin);&lt;br /&gt;
			nr_state = digitalRead(node_reset_pin);&lt;br /&gt;
			&lt;br /&gt;
			// Release power.&lt;br /&gt;
			digitalWrite(node_power_pin, LOW);&lt;br /&gt;
			printMessage(&amp;quot; - Power &amp;quot;); printMessage((LOW == np_state) ? &amp;quot;wasn&amp;#039;t fenced.\n&amp;quot; : &amp;quot;released.\n&amp;quot;);&lt;br /&gt;
			&lt;br /&gt;
			// Release reset.&lt;br /&gt;
			digitalWrite(node_reset_pin, LOW);&lt;br /&gt;
			printMessage(&amp;quot; - Reset &amp;quot;); printMessage((LOW == nr_state) ? &amp;quot;wasn&amp;#039;t fenced.\n&amp;quot; : &amp;quot;released.\n&amp;quot;);&lt;br /&gt;
			&lt;br /&gt;
			// Wait one second and then check that the pin states&lt;br /&gt;
			// are actually LOW. I could probably get away with a&lt;br /&gt;
			// smaller delay, but this works.&lt;br /&gt;
			delay(1000);&lt;br /&gt;
			&lt;br /&gt;
			// Check the current/new states&lt;br /&gt;
			np_state = digitalRead(node_power_pin);&lt;br /&gt;
			nr_state = digitalRead(node_reset_pin);&lt;br /&gt;
			&lt;br /&gt;
			// Report an error if either are still high. Not sure&lt;br /&gt;
			// how this might happen, but hey, let&amp;#039;s be thorough.&lt;br /&gt;
			printMessage(&amp;quot; - Status: &amp;quot;); printMessage(((HIGH == np_state) || (HIGH == nr_state)) ? &amp;quot;ERROR! Fence failed to release.\n&amp;quot; : &amp;quot;SUCCESS!\n&amp;quot;);&lt;br /&gt;
			printMessage(&amp;quot;EOM\n&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		else if (1 == state)&lt;br /&gt;
		{&lt;br /&gt;
			// Fence the node! This is perhaps the most critical&lt;br /&gt;
			// operation to get right. Start by telling the user&lt;br /&gt;
			// what we&amp;#039;re going to do.&lt;br /&gt;
			printMessage(&amp;quot;Fencing node &amp;quot;); printMessage(nodeASCII); printMessage(&amp;quot;:\n&amp;quot;);&lt;br /&gt;
			&lt;br /&gt;
			// Get prior states.&lt;br /&gt;
			np_state = digitalRead(node_power_pin);&lt;br /&gt;
			nr_state = digitalRead(node_reset_pin);&lt;br /&gt;
			&lt;br /&gt;
			// If either power or reset where HIGH already, release&lt;br /&gt;
			// them and wait one second. This will allow us to&lt;br /&gt;
			// re-run the fence attempt were an earlier one may&lt;br /&gt;
			// have failed.&lt;br /&gt;
			if (HIGH == np_state)&lt;br /&gt;
			{&lt;br /&gt;
				printMessage(&amp;quot; - Power was fenced, releasing.&amp;quot;);&lt;br /&gt;
				digitalWrite(node_power_pin, LOW);&lt;br /&gt;
			}&lt;br /&gt;
			if (HIGH == nr_state)&lt;br /&gt;
			{&lt;br /&gt;
				printMessage(&amp;quot; - Reset was fenced, releasing.&amp;quot;);&lt;br /&gt;
				digitalWrite(node_reset_pin, LOW);&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			// If either were HIGH, sleep for one second.&lt;br /&gt;
			if ((HIGH == np_state) || (HIGH == nr_state))&lt;br /&gt;
			{&lt;br /&gt;
				delay(1000);&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			// Fence the reset for one second to immediately&lt;br /&gt;
			// disable the node.&lt;br /&gt;
			digitalWrite(node_reset_pin, HIGH);&lt;br /&gt;
			printMessage(&amp;quot; - Reset fenced.\n&amp;quot;);&lt;br /&gt;
			delay(1000);&lt;br /&gt;
			&lt;br /&gt;
			// Release reset so that we can hit the power next.&lt;br /&gt;
			// This is required because some machines will not&lt;br /&gt;
			// power down if the reset switch is closed.&lt;br /&gt;
			digitalWrite(node_reset_pin, LOW);&lt;br /&gt;
			printMessage(&amp;quot; - Reset released.\n&amp;quot;);&lt;br /&gt;
			delay(1000);&lt;br /&gt;
			&lt;br /&gt;
			// Now fence the power button to begin the forced power&lt;br /&gt;
			// down. Then wait five seconds and check the power&lt;br /&gt;
			// feed state. &lt;br /&gt;
			digitalWrite(node_power_pin, HIGH);&lt;br /&gt;
			printMessage(&amp;quot; - Power fenced.\n&amp;quot;);&lt;br /&gt;
			delay(5000);&lt;br /&gt;
			int fence_ok=1;&lt;br /&gt;
			nf_state = digitalRead(node_feed_pin);&lt;br /&gt;
			&lt;br /&gt;
			// If the feed is still HIGH, wait another 25 seconds&lt;br /&gt;
			// and check a second time.&lt;br /&gt;
			if (HIGH == nf_state)&lt;br /&gt;
			{&lt;br /&gt;
				printMessage(&amp;quot; - WARNING: Node still on, waiting.\n&amp;quot;);&lt;br /&gt;
				delay(25000);&lt;br /&gt;
				nf_state = digitalRead(node_feed_pin);&lt;br /&gt;
				&lt;br /&gt;
				// If it is still HIGH, error out.&lt;br /&gt;
				if (HIGH == nf_state)&lt;br /&gt;
				{&lt;br /&gt;
					printMessage(&amp;quot; - ERROR! Node still on. FENCE FAILED!\n&amp;quot;);&lt;br /&gt;
					fence_ok=0;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			// Proceed if fence succeeded.&lt;br /&gt;
			if (1 == fence_ok)&lt;br /&gt;
			{&lt;br /&gt;
				printMessage(&amp;quot; - SUCCESS!\n&amp;quot;);&lt;br /&gt;
				&lt;br /&gt;
				// Re-fence the reset switch to disable the&lt;br /&gt;
				// node&amp;#039;s front-panel switches.&lt;br /&gt;
				digitalWrite(node_reset_pin, HIGH);&lt;br /&gt;
				printMessage(&amp;quot; - Node&amp;#039;s front-panel switches locked.\n&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			printMessage(&amp;quot;EOM\n&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		else if (2 == state)&lt;br /&gt;
		{&lt;br /&gt;
			// Hit the power switch for one second.&lt;br /&gt;
			// First check the current state so that I can properly&lt;br /&gt;
			// report what is happening.&lt;br /&gt;
			nf_state = digitalRead(node_feed_pin);&lt;br /&gt;
			if (HIGH == nf_state)&lt;br /&gt;
			{&lt;br /&gt;
				// The node is on, so report that we are&lt;br /&gt;
				// shutting down.&lt;br /&gt;
				printMessage(&amp;quot;Initiating ACPI power down\n&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			else&lt;br /&gt;
			{&lt;br /&gt;
				// The node was off, so report that we are&lt;br /&gt;
				// booting.&lt;br /&gt;
				printMessage(&amp;quot;Booting node\n&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
			// Get prior states. If either are HIGH, Error out and&lt;br /&gt;
			// do nothing. The node needs to be released from the&lt;br /&gt;
			// fence before state 2 can be applied to it.&lt;br /&gt;
			np_state = digitalRead(node_power_pin);&lt;br /&gt;
			nr_state = digitalRead(node_reset_pin);&lt;br /&gt;
			if ((HIGH == np_state) || (HIGH == nr_state))&lt;br /&gt;
			{&lt;br /&gt;
				printMessage(&amp;quot; - ERROR! Node is fenced. Release and try again.\n&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			else&lt;br /&gt;
			{&lt;br /&gt;
				// We&amp;#039;re good to proceed.&lt;br /&gt;
				digitalWrite(node_power_pin, HIGH);&lt;br /&gt;
				printMessage(&amp;quot; - Power button closed.\n&amp;quot;);&lt;br /&gt;
				delay(1000);&lt;br /&gt;
				digitalWrite(node_power_pin, LOW);&lt;br /&gt;
				printMessage(&amp;quot; - Power button opened.\n&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			printMessage(&amp;quot;EOM\n&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		else if (3 == state)&lt;br /&gt;
		{&lt;br /&gt;
			// Hit the power switch for five seconds. Make sure the&lt;br /&gt;
			// power feed is low, and if not, wait another 25&lt;br /&gt;
			// seconds and check again.&lt;br /&gt;
			printMessage(&amp;quot;Forcing power down of node &amp;quot;); printMessage(nodeASCII); printMessage(&amp;quot;:\n&amp;quot;);&lt;br /&gt;
			&lt;br /&gt;
			// If the node is off, then there is nothing to do.&lt;br /&gt;
			nf_state = digitalRead(node_feed_pin);&lt;br /&gt;
			if (LOW == nf_state)&lt;br /&gt;
			{&lt;br /&gt;
				// Node is off, so no need to proceed.&lt;br /&gt;
				printMessage(&amp;quot; - WARNING! Node is already off.\n&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			else&lt;br /&gt;
			{&lt;br /&gt;
				// Fence power&lt;br /&gt;
				digitalWrite(node_power_pin, HIGH);&lt;br /&gt;
				printMessage(&amp;quot; - Forcing node off.\n&amp;quot;);&lt;br /&gt;
				delay(5000);&lt;br /&gt;
				&lt;br /&gt;
				// Check that the power is off and wait another&lt;br /&gt;
				// 25 seconds if it isn&amp;#039;t.&lt;br /&gt;
				int fence_ok=1;&lt;br /&gt;
				nf_state = digitalRead(node_feed_pin);&lt;br /&gt;
				if (HIGH == nf_state)&lt;br /&gt;
				{&lt;br /&gt;
					printMessage(&amp;quot; - WARNING! Node still on, waiting.\n&amp;quot;);&lt;br /&gt;
					delay(25000);&lt;br /&gt;
					nf_state = digitalRead(node_feed_pin);&lt;br /&gt;
					if (HIGH == nf_state)&lt;br /&gt;
					{&lt;br /&gt;
						printMessage(&amp;quot; - ERROR! Node still on. FORCED SHUTDOWN FAILED!\n&amp;quot;);&lt;br /&gt;
						fence_ok=0;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				&lt;br /&gt;
				// Proceed if fence succeeded.&lt;br /&gt;
				if (1 == fence_ok)&lt;br /&gt;
				{&lt;br /&gt;
					printMessage(&amp;quot; - SUCCESS!\n&amp;quot;);&lt;br /&gt;
					digitalWrite(node_power_pin, LOW);&lt;br /&gt;
					printMessage(&amp;quot; - Fence released.\n&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			printMessage(&amp;quot;EOM\n&amp;quot;); &lt;br /&gt;
		}&lt;br /&gt;
        	connections--;&lt;br /&gt;
    	        Serial.print(&amp;quot;Client disconnected.\n&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// The error handling function.&lt;br /&gt;
void printError(const char *message)&lt;br /&gt;
{&lt;br /&gt;
	// Print the message to the serial bus and the client. I know this is&lt;br /&gt;
	// dirty but it represents the one line string.&lt;br /&gt;
	printMessage(&amp;quot;ERROR: Bad command: [&amp;quot; ); printMessage(message); printMessage(&amp;quot;]\n&amp;quot; );&lt;br /&gt;
	printMessage(&amp;quot;EOM\n&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void printMessage(const char *message)&lt;br /&gt;
{&lt;br /&gt;
	// Print the message to the serial bus and the client.&lt;br /&gt;
	Serial.print(message);&lt;br /&gt;
	server.write(message);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{footer}}&lt;/div&gt;</summary>
		<author><name>Digimer</name></author>
	</entry>
</feed>